ROS实战篇(二)如何创建自定义的msg文件以及自己编写launch文件? | 您所在的位置:网站首页 › ros是怎么产生的 › ROS实战篇(二)如何创建自定义的msg文件以及自己编写launch文件? |
一、如何创建自定义的msg文件?
msg文件介绍: 1、msg文件是用来描述ROS中自定义的消息类型的,可以被不同语言调用。 2、msg文件以 .msg 结尾,必须存放在软件包的msg文件夹下。 3、msg文件可以传递的数据类型很多: int8 int16 int32 int64 float32 float64 string time duration 其他msg文件 长度不固定数组array[] 和长度固定数组array[C] 4、编写规则: 每一行内容为: 标准数据类型 数据变量名称 实操步骤: 1、建立工作空间并进入src文件夹: mkdir -p launch_ws/src cd ~/launch_ws/src2、创建package并进入 catkin_create_pkg launch_test_pkg std_msgs roscpp cd launch_test_pkg/3、创建msg文件夹并在其下创建 .msg 文件 mkdir msg cd msg vim myMsg.msg文件中内容如下: string name int32 device_id float32 percent4、修改package(即launch_test_pkg)中的文件 修改package.xml:将下图红框中的两行取消注释
添加红框中的字符串,以新增配置项: 取消如下红框内的注释
这里仍然以博主的 ROS实战篇(一) 中的例子----节点间实现数据通信为例,分别编写 topic_publisher.cpp 和 topic_subscriber.cpp 两个文件: topic_publisher.cpp 内容如下: #include "ros/ros.h" #include "stdio.h" #include "launch_test_pkg/myMsg.h" int main(int argc, char **argv) { ros::init(argc, argv, "topic_publisher"); ros::NodeHandle node_handle; ros::Publisher pub_number = node_handle.advertise("/count",10); ros::Rate rate(1); int number_count = 0; while(ros::ok()) { launch_test_pkg::myMsg msg; msg.name = "robot"; msg.device_id = number_count%5; msg.percent = rand()/double(RAND_MAX); pub_number.publish(msg); ros::spinOnce(); rate.sleep(); number_count++; } return 0; }topic_subscriber.cpp 中的内容如下: #include #include void num_callback(const launch_test_pkg::myMsg::ConstPtr& msg) { ROS_INFO("Msg.name: [%s], Msg.device_id: [%d], Msg.percent: [%f]", msg->name.c_str(),msg->device_id, msg->percent); } int main(int argc, char **argv) { ros::init(argc, argv, "topic_subscriber"); ros::NodeHandle node_handle; ros::Subscriber number_subscriber = node_handle.subscribe("/count", 10, num_callback); ros::spin(); return 0; }这一步完成后,需要修改CMakeLists.txt,即将cpp文件设置为可执行的节点,再完成与库的链接,这一过程和博主的 ROS实战篇(一) 一样,不再赘述。 二、如何编写launch文件?launch文件介绍 可视作启动文件,方便启动多个节点。 因为ROS的一个重要思想就是低耦合,每个节点只完成一个功能,使用launch文件可以在大型工程中方便地管理多个节点。 实操步骤(接上文) 1、创建launch文件: cd ~/launch_ws/src/launch_test_pkg mkdir launch cd launch/ vim start_test.launchlaunch文件内容如下: 2、编译并配置环境 cd ~/launch_ws catkin_make source devel/setup.bash3、运行launch文件 roslaunch launch_test_pkg start_test.launch4、结果如下图所示:
|
CopyRight 2018-2019 实验室设备网 版权所有 |