ROS程序包编写
此处我们以一个实例阐述ROS程序包的编写
目标
-
创建一个消息发布器,向话题“Brake”发布“control_node_msgs/BrakeCmd”类型的自定义消息,自定义消息格式为:
Header header float32 brake_cmd
-
创建一个消息订阅器,订阅话题“Brake”的消息,并输出到屏幕。
-
消息发布器和消息订阅器均使用C++实现,并使用
roslaunch
启动
演示环境:
- Ubuntu 16.04.6 LTS (Xenial) amd64
- ROS Kinetic
- catkin
操作步骤
1.创建程序包
-
在当前用户的HOME目录下创建catkin工作目录
$ mkdir ~/catkin_ws
-
进入catkin工作目录,创建并进入
src
源码文件夹$ cd ~/catkin_ws $ mkdir src $ cd src
-
现在使用catkin_create_pkg命令来创建一个名为’control_node_msgs’的新程序包(根据我们的目标进行命名),这个程序包依赖于std_msgs、roscpp和rospy:
$ catkin_create_pkg control_node_msgs std_msgs rospy roscpp
这将会在
~/catkin_ws/src
目录下创建一个名为control_node_msgs
的文件夹,这个文件夹里面包含一个package.xml
文件和一个CMakeLists.txt
文件,这两个文件都已经自动包含了部分你在执行catkin_create_pkg
命令时提供的信息。
2.创建自定义消息
-
创建并进入
msg
文件夹$ mkdir ~/catkin_ws/src/control_node_msgs/msg $ cd ~/catkin_ws/src/control_node_msgs/msg
-
创建
.msg
的自定义消息文件$ touch BrakeCmd.msg
-
在
BrakeCmd.msg
文件中根据目标写入如下信息Header header float32 brake_cmd
-
①
Header
类型详细参考
std_msgs/Header Message
此处简略说明,即Header包含3个成员- uint32 seq
- time stamp
- string frame_id
其中
stamp
包含stamp.sec
和stamp.nsec
,这二者均为integer,前者为秒,后者为毫秒- ②
float32
类型即为
-