Ubuntu18下ROS2自定义消息文件的一些心得

本文档详细介绍了在ROS2中创建和编译自定义消息的步骤,包括工作空间设置、功能包创建、依赖库配置、CMakeList.txt和package.xml文件的修改。同时提到了msg定义的注意事项,如Header依赖、命名规范和消息内容格式。此外,还指出了查看msg接口的不同命令,并提供了一位博主的教程作为参考。
摘要由CSDN通过智能技术生成

一、首先是创建工作空间,使用之前创建的也可以。

二、然后创建功能包,创建功能包时可以指定好依赖的库,否则后面需要自己手动配置(在CMakeList.txt和package.xml文件中加入依赖的库)。

e.g.:ros2 pkg create ros2_interfaces --build-type ament_cmake --dependencies std_msgs

创建了一个名为ros2_interfaces的功能包,依赖的库是std_msgs

 msg的创建可以参考:ROS2 编写自定义消息_持之以恒2016的博客-CSDN博客_ros2 自定义消息

过程很详细,按照步骤走不会出错且能编译通过(srv部分可以不用走,只参考msg即可)。我这里就不赘述了,只记录自己的心得 。

===================================================================

1.colcon build编译通过后记得source一遍环境变量,否则无法查找到自定义的msg。

. install/setup.bash

2.CMakeList.txt文件中如果没有使用到其他特殊的库(比如传感器的库geometry_msgs、sensor_msgs等),在自定义消息时,加入这三个库即可,其他的都可以不用:

find_package(std_msgs REQUIRED)

find_package(rclcpp REQUIRED)

find_package(rosidl_default_generators REQUIRED)

并加入消息的名称

rosidl_generate_interfaces(${PROJECT_NAME}

"msg/yourmsgname.msg"

DEPENDENCIES std_msgs

)

3.package.xml文件中加入以下依赖即可

<build_depend>rosidl_default_generators</build_depend>

<exec_depend>rosidl_default_runtime</exec_depend>

<member_of_group>rosidl_interface_packages</member_of_group>

如果定义功能包时没有指定依赖库,则还需要加入

<depend>rclcpp</depend>

<depend>std_msgs</depend>

4.ROS2中msg的定义与ROS的有些许不同,

(1)ROS2中的Header定义需要加入依赖的库,否则会报错,例如:

std_msgs/Header header

(2)msg文件名需以大写字母开头,且要注意定义的名称不可太长,最好不要超过2个大写字母的命名,否则编译会报没有那个文件或目录

(3)消息内容的定义需用小写字母,定义消息内容赋值时用大写字母,如FALSE,TRUE等,消息格式不满足要求也会报错

 

5.ROS2中没有interface命令,无法使用ros2 interface list,虽然msg、srv、action通称为interface,但是需要查看时,应执行:

列举所有的interfaces名称:如

ros2 msg list

ros2 srv list

ros2 action list

查看某个msg的内容,如:

ros2 msg show 功能包/msg/yourmsgname

6.可以在上面博主的例程中修改为自己想要的msg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值