ROS系列——ROS话题
话题通信是ROS最常用以及最基础的通信方法
1. Ros话题通信机制:
话题通信是一种支持一对多的异步通信机制,一般来说话题通信有一个发布者和一个订阅者,发布者将信息发布到话题上,订阅者从话题订阅信息,一对多的意思是一个话题可以有多个话题订阅者。异步通信机制的意思是:发布者只管发布话题而不在意有多少个订阅者,也不在意订阅者有没有成功订阅到信息,同时订阅者只管订阅话题,不管话题是谁发布的
2.topic命令行指令:
rostopic echo :打印话题信息到当前终端
rostopic hz :查看当前话题发布频率
rostopic info :在终端打印话题订阅者和发布者以及话题数据类型
rostopic list :列举当前所有话题
rostopic pub :在命令行端往话题输入信息,默认只发送一次
rostopic pub -r 10:循环发布,10hz
rostopic bw :查看话题带宽
rostopic find :根据消息数据类型来寻找话题
rostopic type :查看话题的数据类型
3.发布话题:
①创建一个发布者
②创建消息数据
③消息赋值
④将消息发布出去
ros::Publisher pub = nh.advertise<std_msgs::String>("topic_name", queue size);
std_msgs::String str;
str.data = "hello world";
pub.publish(str);
4.订阅话题:
①创建一个订阅者 Subscriber
②创建一个回调函
void callback(const std_msgs::StringConstPtr& str)
{
...
}
...
ros::Subscriber sub = nh.subscribe("my_topic",queue size, callback)
5.自定义消息数据类型
rosmsg list 列出系统当前左右的消息数据类型
rosmsg show 查看消息数据类型里面的具体内容
rostopic type /topic_name | rosmsg show 很具话题查看消息数据类型的具体结构
①自定义msg文件
②添加编译规则
③添加描述规则
msg show 很具话题查看消息数据类型的具体结构
①自定义msg文件
②添加编译规则
③添加描述规则