当前位置:网站首页>ROS播包可视化
ROS播包可视化
2022-08-04 21:25:00 【moneymyone】
ROS播包可视化
1. 循环播放rosbag
一个终端启动roscore
roscore
另一个终端播放rosbag
rosbag play 2022-01-24.bag -l
rosbag play 2022-01-24.bag -l
[ INFO] [1656915294.661470192]: Opening 2022-01-24.bag
Waiting 0.2 seconds after advertising topics... done.
Hit space to toggle paused, or 's' to step.
[RUNNING] Bag Time: 1517156370.912962 Duration: 2.746406 / 2.873530
2.rviz打开
点击Add->添加topic

会显示fixed frame不正确,来看看该rosbag包中frame_id是什么,并且定义是什么?
查看rosbag对应topic的fixed frame
[email protected]:~$ rostopic echo /front/M1/rslidar_points | grep frame_id
frame_id: "/rslidar"
frame_id: "/rslidar"
frame_id: "/rslidar"
frame_id: "/rslidar"
frame_id: "/rslidar"
Fixed Frame
The Fixed Frame/固定参考系
The more-important of the two frames is the fixed frame. The fixed frame is the reference frame used to denote the “world” frame. This is usually the “map”, or “world”, or something similar, but can also be, for example, your odometry frame.
If the fixed frame is erroneously set to, say, the base of the robot, then all the objects the robot has ever seen will appear in front of the robot, at the position relative to the robot at which they were detected.
For correct results, the fixed frame should not be moving relative to the world.
If you change the fixed frame, all data currently being shown is cleared rather than re-transformed.
The Target Frame
The target frame is the reference frame for the camera view. For example, if your target frame is the map, you’ll see the robot driving around the map. If your target frame is the base of the robot, the robot will stay in the same place while everything else moves relative to it.
消息的头std_msgs/Header header中通常会有该信息。
标准头信息主要包括:
seq是消息的顺序标识,不需要手动设置,发布节点在发布消息时,会自动累加。timestamp是消息中与数据相关联的时间戳,例如激光数据中,时间戳对应激光数据的采集时间点。frame_id是消息中与数据相关联的参考系id,例如在在激光数据中,frame_id对应激光数据采集的参考系。
例如LaserScan消息结构:
std_msgs/Header header # 标准头信息
uint32 seq
time stamp
string frame_id # in frame frame_id, angles are measured around the positive Z axis (counterclockwise, if Z is up) with zero angle being forward along the x axis
float32 angle_min # start angle of the scan [rad]
float32 angle_max # end angle of the scan [rad]
float32 angle_increment # angular distance between measurements [rad]
float32 time_increment # time between measurements [seconds] - if your scanner
# is moving, this will be used in interpolating position of 3d points
float32 scan_time # time between scans [seconds
float32 range_min # minimum range value [m]
float32 range_max # maximum range value [m]
float32[] ranges # range data [m] (Note: values < range_min or > range_max should be discarded)
float32[] intensities # intensity data [device-specific units]. If your device does not provide intensities, please leave the array empty.
修改为正确的frame_id, 然后就能正确显示啦:

代码播报
#include "ros/ros.h"
#include"std_msgs/Int32.h"
#include <iostream>
int main(int argc, char **argv)
{
ros::init(argc, argv, "demo_topic_publisher");
ros::NodeHandle node_obj;
ros::Publisher number_publisher = node_obj.advertise<std_msgs::Int32>("/numbers",10); // topic
ros::Rate loop_rate(10);
int number_count = 0;
while(ros::ok()) {
std_msgs::Int32 msg;
msg.data = number_count;
ROS_INFO("%d",msg.data);
number_publisher.publish(msg);
ros::spinOnce();
loop_rate.sleep();
++number_count;
}
return 0;
}
ros会一直播数字
[ INFO] [1657537136.415226386]: 977
[ INFO] [1657537136.515237562]: 978
[ INFO] [1657537136.615177688]: 979
[ INFO] [1657537136.715232163]: 980
[ INFO] [1657537136.815237120]: 981
[ INFO] [1657537136.915179913]: 982
[ INFO] [1657537137.015181264]: 983
[ INFO] [1657537137.115259284]: 984
查看topic及信息
$ rostopic list
/clock
/numbers
/points_raw
/pose
/rosout
/rosout_agg
$ rostopic echo /numbers
data: 388
---
data: 389
---
data: 390
---
data: 391
---
data: 392
---
data: 393
---
Reference
- http://wiki.ros.org/rviz/UserGuide#Coordinate_Frames
- The frame_id in a message specifies the point of reference for data contained in that message: https://blog.csdn.net/xu_fengyu/article/details/86562827
边栏推荐
- 【手把手教你使用STM32HAL库的串口空闲中断】
- How to understand the crawler's Scrapy framework in the simplest and most popular way?
- Common methods of js's new Function()
- Data warehouse (1) What is data warehouse and what are the characteristics of data warehouse
- OD-Model【6】:YOLOv2
- win10 uwp 使用 WinDbg 调试
- 1、File对象学习
- 知识分享|如何设计有效的帮助中心,不妨来看看以下几点
- AXI interface application of Zynq Fpga image processing - the use of axi_lite interface
- 开发deepstram的自定义插件,使用gst-dseaxmple插件进行扩充,实现deepstream图像输出前的预处理,实现图像自定义绘制图(精四)
猜你喜欢

js数据类型、节流/防抖、点击事件委派优化、过渡动画

mdk5.14无法烧录

数电快速入门(三)(卡诺图化简法的介绍)

PRIMAL: Pathfinding via Reinforcement and Imitation Multi-Agent Learning 代码解析

Spss-系统聚类软件实操

C语言之实现扫雷小游戏

DSPE-PEG-Aldehyde,DSPE-PEG-CHO,磷脂-聚乙二醇-醛基一种疏水18碳磷脂

【2022杭电多校5 1003 Slipper】多个超级源点+最短路

Win11如何开启Telnet客户端?

Re24:读论文 IOT-Match Explainable Legal Case Matching via Inverse Optimal Transport-based Rationale Ext
随机推荐
LeetCode: 406. 根据身高重建队列
多个平台显示IP属地,必须大力推行互联网实名制
Arduino 电机测速
基于 Milvus 和 ResNet50 的图像搜索(部署及应用)
unity2D横版游戏教程9-对话框dialog
adb控制常用命令
In action: 10 ways to implement delayed tasks, with code!
传奇服务器需要什么配置?传奇服务器租用价格表
【手把手教你使用STM32HAL库的串口空闲中断】
零基础都能拿捏的七夕浪漫代码,快去表白或去制造惊喜吧
deepstream多相机显示布局
PowerCLi batch configuration of NTP
88.(cesium之家)cesium聚合图
使用堡塔应用管理器配置laravel队列方法
Re24:读论文 IOT-Match Explainable Legal Case Matching via Inverse Optimal Transport-based Rationale Ext
proe和creo的区别有哪些
知识分享|如何设计有效的帮助中心,不妨来看看以下几点
数字重塑客观世界,全空间GIS发展正当其时
mdk5.14无法烧录
boostrap多选PID查找端口 window