ros消息常用指令+如何发布一个话题

ros消息常用指令

ros中节点(node)、话题(ropic)、消息(message)、服务(service)等概念是ros的基础,学会查看相关信息对调试代码十分重要。

通过rosnode、rostopic、rosmsg、rosservice指令查看能够使用的命令,每个命令后面会有相应的information,通过information可以初步理解命令的用途。

只输入相关指令,可以输出该指令下的解释,用途。

rosnode list:该命令可以查看当前活跃的节点。

rosnode info:该命令用来查看节点的发布订阅状态。

 rostopic list:查看当前活跃的话题列表:

 rostopic type (+具体的话题名):通过该命令可以查看话题下的消息类型。

如:

wxh@wxh-upc:~/workspace/catkin_ws$ rostopic type /scan
sensor_msgs/LaserScan

rostopic info:该命令可以查看指定话题的发布订阅状况。

rostopic echo:通过该命令可以查看话题中消息的实时数据.

对于rostopic 后面的内容,都需要加上具体的话题名称,才可以显示该话题的具体信息。

如,

rostopic info /scan

rostopic echo /scan

rostopic type /scan

rosmsg list:同样该命令可以查看当前活跃的消息列表.

rosmsg info:通过该指令查看消息内部的具体格式,

rosservice list:通过该命令可以查看当前活跃的服务列表,

ROS下基础的C++编程套路 如何发布一个消息

以增加小乌龟发布速度消息为例,需要注意以下四个部分:

一、头文件部分

  头文件需要包含你所要发的消息类型。在小乌龟例程中,发布速度的话题是/turtle1/vel_cmd。这需要包含相关头文件信息,就是rostopic type /turtle1/vel_cmd的类型,即包含#include <geometry_msgs/Twist.h>头文件。

二、公告,获取句柄部分(消息的发布)

  发布消息前需要公告并且获取相应的句柄。在小乌龟例程中,我们就可以写:

ros::publisher vel_tar_pub = nh.advertise<geometry_msgs::Twist(“/turtle1/vel_cmd”, 10);

一般需要修改的有三部分:

 1.vel_tar_pub:就是一个名称(自己取);

 2.geometry_msgs::Twist:消息类型(通过输入rostopic type 话题名 得到的消息类型);

 3./turtle1/vel_cmd:需要发布的话题名;

三、实例化发布的消息

 geometry_msgs::Twist vel_cmd;
 vel_cmd.linear.x = 2;
 vel_cmd.angular.x = 1;

四、发布消息

vel_tar_pub.publish(vel_cmd);

综上所述,ROS下一个发布速度消息的C++程序是这样的:

#include <ros/ros.h>
#include <……>
#include <……>
#include <geometry_msgs/Twist.h>//包含需要发布的消息类型
int main(int argc, char **argv)
{
  ros::init(argc, argv, “offb_node”);
  ros::NodeHandle nh;
  ros::ServiceClient arming_client =  nh.serviceClient<mavros_msgs::CommandBool>
(“mavros/cmd/arming”);
 …
 …
 …
 ros::publisher vel_tar_pub = nh.advertise<geometry_msgs::Twist>
(“/turtle1/vel_cmd”, 10);//
  ros::Rate rate(20.0);
 geometry_msgs::Twist vel_cmd;
 vel_cmd.linear.x = 2;
 vel_cmd.angular.x = 1;
 while(ros::ok()){
  vel_tar_pub.publish(vel_cmd);
  ros::spinOnce();
  rate.sleep();
 }
}

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值