在ros2下使用ros1_bridge与ros1自定义消息桥接
示例环境
操作系统:ubuntu 20.04 amd64
ros版本:noetic
ros2版本:foxy
ros1示例代码
-
创建ros1的工作空间catkin_ws,功能包custom_msgs,并创建一个msg文件TestNoetic.msg
TestNoetic.msg文件内容如下:
string test_str1 int32 test_int1编译功能包,由于大家对ros1很熟悉了,所以此处不在介绍ros1编译的细节;
-
创建ros2的工作空间colcon_ws,功能包custom_msgs,并创建一个msg文件TestFoxy.msg
ros2创建包指令:
ros2 pkg create --build-type ament_cmake custom_msgsTestFoxy.msg文件内容如下:
string test_str2 int32 test_int2注意事项:ros2的msg文件命名有正则表达式的规定,要以大写字母开头,文件内容中的每个变量不可以存在大写字母,更详细的规则请参考官方文档
-
由于示例中要桥接的消息的文件名和内部变量名不一样,所以需要定义映射文件mapping_rules.yaml
- ros1_package_name: 'custom_msgs' ros1_message_name: 'TestNoetic' ros2_package_name: 'custom_msgs' ros2_message_name: 'TestFoxy' fields_1_to_2: test_str1: 'test_str2' test_int1: 'test_int2'此映射文件放在package.xml同级目录下即可,此文件中只需要在两个包名或msg名或者变量名不相同时给出,如果名称都相同可以省略,如果存在此文件,则CMakeLists.txt如下:
cmake_minimum_required(VERSION 3.5) project(custom_msgs) # Default to C++14 if(NOT CMAKE_CXX_STANDARD) set(CMAKE_CXX_STANDARD 14) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -W


1602

被折叠的 条评论
为什么被折叠?



