在ros2下使用ros1_bridge与ros1自定义消息桥接

在ros2下使用ros1_bridge与ros1自定义消息桥接

示例环境

操作系统:ubuntu 20.04 amd64

ros版本:noetic

ros2版本:foxy

ros1示例代码

  1. 创建ros1的工作空间catkin_ws,功能包custom_msgs,并创建一个msg文件TestNoetic.msg

    TestNoetic.msg文件内容如下:

    string test_str1
    int32 test_int1
    

    编译功能包,由于大家对ros1很熟悉了,所以此处不在介绍ros1编译的细节;

  2. 创建ros2的工作空间colcon_ws,功能包custom_msgs,并创建一个msg文件TestFoxy.msg

    ros2创建包指令:

    ros2 pkg create --build-type ament_cmake custom_msgs
    

    TestFoxy.msg文件内容如下:

    string test_str2
    int32 test_int2
    

    注意事项:ros2的msg文件命名有正则表达式的规定,要以大写字母开头,文件内容中的每个变量不可以存在大写字母,更详细的规则请参考官方文档

  3. 由于示例中要桥接的消息的文件名和内部变量名不一样,所以需要定义映射文件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
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值