ROS实战篇(二)如何创建自定义的msg文件以及自己编写launch文件? 您所在的位置:网站首页 ros是怎么产生的 ROS实战篇(二)如何创建自定义的msg文件以及自己编写launch文件?

ROS实战篇(二)如何创建自定义的msg文件以及自己编写launch文件?

2023-11-20 16:29| 来源: 网络整理| 查看: 265

一、如何创建自定义的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/src

2、创建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 percent

4、修改package(即launch_test_pkg)中的文件

修改package.xml:将下图红框中的两行取消注释

在这里插入图片描述 修改CMakeLists.txt文件:

添加红框中的字符串,以新增配置项: 在这里插入图片描述 取消如下框内的注释,箭头所指的地方是自定义msg文件的名称:

在这里插入图片描述

取消如下红框内的注释

在这里插入图片描述 5、编写cpp文件

这里仍然以博主的 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.launch

launch文件内容如下:

2、编译并配置环境

cd ~/launch_ws catkin_make source devel/setup.bash

3、运行launch文件

roslaunch launch_test_pkg start_test.launch

4、结果如下图所示:

在这里插入图片描述 本文参考大佬的教程:https://www.bilibili.com/video/BV1mC4y1t7Ue



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有