ros_bridge实现ROS1,ROS2双向通信
核心思想是ros1_bridge本身同时链接 ROS1 和 ROS2 的消息库把 ROS1 的 TCPROS 消息转换为 ROS2 DDS 消息反方向也一样。注意ros_bridge需要同时加载ROS1和ROS2一般我们使用docker创建个有ROS12的容器在容器中编译ros_bridge。但是如果你的宿主机本身就有一个ROS环境可以直接在宿主机源码编译另一版本ROS让ros_bridge跑在宿主机这样能够减少构建双ROS环境的时间(ROS1) │ TCPROS ▼ ros1_bridge │ DDS ▼ (ROS2)一、从零构建的复用流程以下流程适用于当前环境Ubuntu 22.04ROS2 HumbleROS1 NoeticNoetic 通过源码安装因为 Ubuntu 22.04 没有标准 Noetic 二进制安装环境1. 编译ROS1 Neotic详情参照 Ubuntu22.04 编译 ROS1 Noetic-CSDN博客2. 获取ROS2 Humble 兼容的 ros1_bridge当前源码位于~/ros1_bridge_ws/bridge/src/ros1_bridge一般获取方式cd ~/ros1_bridge_ws/bridge/src git clone https://github.com/ros2/ros1_bridge.git对于稳定复用建议固定到已经验证过的 commit而不是以后一直跟随最新master。当前使用的 commit 是611755fd917285316051cbea80507e8b2f6b7ec1固定版本cd ~/ros1_bridge_ws/bridge/src/ros1_bridge git checkout 611755fd917285316051cbea80507e8b2f6b7ec13. 按正确顺序 source 环境这是最重要的一步source ~/ros1_bridge_ws/ros1_noetic/install_isolated/setup.bash source /opt/ros/humble/setup.bash顺序是ROS1 Noetic → ROS2 Humble → 编译 ros1_bridge终端可能出现ROS_DISTRO was set to noetic before这是因为 bridge 必须同时加载两个 ROS 环境。只要路径正确这个提示本身不是错误。编译前建议检查python3 -c import rosmsg which ros2 echo $CMAKE_PREFIX_PATH echo $PYTHONPATH4. 编译 ros1_bridgecd ~/ros1_bridge_ws/bridge colcon build \ --packages-select ros1_bridge \ --cmake-args \ -DCMAKE_BUILD_TYPERelease \ -DBUILD_TESTINGOFF如果之前配置环境错误建议重新配置colcon build \ --packages-select ros1_bridge \ --cmake-force-configure \ --cmake-args \ -DCMAKE_BUILD_TYPERelease \ -DBUILD_TESTINGOFF编译完成后验证test -x install/ros1_bridge/lib/ros1_bridge/dynamic_bridge5. 检查消息映射source ~/ros1_bridge_ws/ros1_noetic/install_isolated/setup.bash source /opt/ros/humble/setup.bash source ~/ros1_bridge_ws/bridge/install/setup.bash ros2 run ros1_bridge dynamic_bridge --print-pairs \ | grep -E Odometry|PointCloud2|TFMessage应该看到nav_msgs/msg/Odometry nav_msgs/Odometry sensor_msgs/msg/PointCloud2 sensor_msgs/PointCloud2 tf2_msgs/msg/TFMessage tf2_msgs/TFMessage三、跨电脑通信配置假设Elevator-LIO 电脑192.168.1.10 SCAN/bridge 电脑192.168.1.20ROS1 电脑export ROS_MASTER_URIhttp://192.168.1.10:11311 export ROS_IP192.168.1.10bridge 电脑export ROS_MASTER_URIhttp://192.168.1.10:11311 export ROS_IP192.168.1.20 export ROS_DOMAIN_ID0ROS2电脑export ROS_DOMAIN_ID0注意两台机器必须能互相ping。ROS1 不仅使用 11311还会动态使用其他 TCP 端口。ROS2 DDS 依赖 UDP、组播和动态端口。防火墙可能需要关闭或正确放行。所有 ROS2 机器的ROS_DOMAIN_ID必须一致。不要把ROS_HOSTNAME127.0.0.1用在跨机器场景。四、自定义消息的限制标准消息现在都能桥接但ros1_bridge不是运行时凭空理解自定义消息。例如 Elevator-LIO 的lio/ElevatorState lio/CustomMsg如果 ROS2 侧没有对应消息包它们不会出现在--print-pairs中。自定义消息的流程是ROS1 工作区编译 ROS1 消息包。ROS2 工作区创建字段一致的 ROS2 消息包。source ROS1 消息工作区。source ROS2 消息工作区。重新编译ros1_bridge。这里只讲下需要特别注意的映射文件1. 编写消息映射规则创建/workspaces/ros2_msgs_ws/src/lio_msgs/mapping_rules.yaml内容- ros1_package_name: lio ros2_package_name: lio_msgs - ros1_package_name: lio ros1_message_name: wheel_info ros2_package_name: lio_msgs ros2_message_name: WheelInfo第一条是包级映射ros1_package_name: lio ros2_package_name: lio_msgs它会尝试自动匹配同名消息lio/ElevatorState ↔ lio_msgs/msg/ElevatorState lio/CustomPoint ↔ lio_msgs/msg/CustomPoint lio/CustomMsg ↔ lio_msgs/msg/CustomMsg第二条处理名称不同的消息wheel_info ↔ WheelInfo字段名称不一致时假设 ROS1 是float64 velocityROS2 改成float64 linear_velocity则必须写字段映射- ros1_package_name: lio ros1_message_name: ElevatorState ros2_package_name: lio_msgs ros2_message_name: ElevatorState fields_1_to_2: header: header in_elevator: in_elevator displacement: displacement velocity: linear_velocity acceleration: acceleration一旦使用fields_1_to_2所有需要转换的字段都应明确列出未列出的同名字段不会自动补充。这是官方映射规则中特别强调的行为。ros1_bridge 映射文档因此如果没有必要最好保持字段名称完全一致减少 YAML 映射。五、常见故障判断ROS2 看不到话题检查ros2 topic list然后看 bridge 是否输出created 1to2 bridge可以加ros2 run ros1_bridge dynamic_bridge --bridge-all-1to2-topicsbridge 报无法连接 masterFailed to contact master Connection refused检查echo $ROS_MASTER_URI rosparam list确认roscore或 Elevator-LIO 的 ROS master 正在运行。libroscpp.so not found说明 ROS1 环境没有 sourcesource ~/ros1_bridge_ws/ros1_noetic/install_isolated/setup.bashlibros1_bridge.so not found说明 bridge 安装环境没有 sourcesource ~/ros1_bridge_ws/bridge/install/setup.bashNo module named rosmsgsource ~/ros1_bridge_ws/ros1_noetic/install_isolated/setup.bash python3 -c import rosmsg如果仍失败说明 ROS1rosmsg没有编译安装或者PYTHONPATH不正确。有话题但没有消息分别检查# ROS1 rostopic hz /LIO/odom_vehicle # ROS2 ros2 topic hz /LIO/odom_vehicle还要检查 ROS2 QoSros2 topic info /LIO/clouds_lidar --verbose点云常使用 Best Effort QoS如果订阅端 QoS 不兼容也可能出现“有话题但收不到数据”。

相关新闻

终极指南:如何用KMS_VL_ALL_AIO开源工具一键激活Windows和Office

终极指南:如何用KMS_VL_ALL_AIO开源工具一键激活Windows和Office

终极指南:如何用KMS_VL_ALL_AIO开源工具一键激活Windows和Office 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows和Office的激活问题而烦恼吗?KMS_VL_ALL_A…

2026/10/15 12:43:50 阅读更多 →
MCA Selector:如何通过专业区块管理工具解决Minecraft存档臃肿难题

MCA Selector:如何通过专业区块管理工具解决Minecraft存档臃肿难题

MCA Selector:如何通过专业区块管理工具解决Minecraft存档臃肿难题 【免费下载链接】mcaselector A tool to select chunks from Minecraft worlds for deletion or export. 项目地址: https://gitcode.com/gh_mirrors/mc/mcaselector 面对Minecraft世界文件…

2026/10/17 7:38:43 阅读更多 →
在 Angular 项目中实现国际化(i18n)和翻译 使用ngx-translate

在 Angular 项目中实现国际化(i18n)和翻译 使用ngx-translate

安装核心依赖 首先,在项目的根目录下通过 npm 安装 ngx-translate 的核心库以及用于通过 HTTP 请求加载翻译文件的加载器: npm install ngx-translate/core --save npm install ngx-translate/http-loader --save配置根模块(AppModule&#x…

2026/10/17 17:43:57 阅读更多 →

最新新闻

栈实现综合计算器:双栈分工与优先级处理详解

栈实现综合计算器:双栈分工与优先级处理详解

栈这个结构,很多人学的时候觉得简单,不就是后进先出嘛,拿个数组或者链表模拟一下,push、pop 一写就完事了。但真到了要拿它解决一个稍微像样点的问题,比如做一个能算加减乘除、带括号、还能处理多位数的计算器&#xf…

2026/10/18 5:39:42 阅读更多 →
2026年硅基流动实测报告:开源模型性价比之选,闭源旗舰如何补位

2026年硅基流动实测报告:开源模型性价比之选,闭源旗舰如何补位

硅基流动(SiliconFlow)是国产 MaaS 第一梯队的代表选手,综合实力如何、适合什么人用,本文用一次完整实测给出答案。先看背景:公司 2023 年由前 OneFlow 创始人袁进辉创立,总部位于北京;定位第三…

2026/10/18 5:39:42 阅读更多 →
基于Spring Boot的私人云网盘实现:分片上传、断点续传与安全部署实战

基于Spring Boot的私人云网盘实现:分片上传、断点续传与安全部署实战

先交代下背景:我手头有一台不关机的小主机,平时要存的东西越来越多——手机照片、工作文档、影视资源,散落在电脑、移动硬盘和各个网盘里。公有网盘要么限速要么担心隐私,折腾一圈下来,还是决定自己搭一个私人云网盘。…

2026/10/18 5:39:42 阅读更多 →
VLA模型显存压缩实战:QVLA量化方案解析与部署指南

VLA模型显存压缩实战:QVLA量化方案解析与部署指南

先交代一下背景:我在做具身智能和机器人操作方向,VLA(视觉-语言-动作)模型这两年是真的火,但也是真的难落地。动不动就是十几B甚至几十B的参数,一张H100都差点塞不下,推理时显存占用直接把人劝退…

2026/10/18 5:39:42 阅读更多 →
从源码收集到工程复用:打造个人可检索可运行的代码资源库

从源码收集到工程复用:打造个人可检索可运行的代码资源库

经常有朋友问我:你整理的那个源码系列,规模都按万套算了,真的看得完吗?说实话,这种量级的资源,谁都看不完,我前两年也是这样。但这个系列做到第三期,我的答案慢慢变了——上万套源码…

2026/10/18 5:39:42 阅读更多 →
汇编期末填空题复习指南:高频考点与提分技巧

汇编期末填空题复习指南:高频考点与提分技巧

1. 从"更新完毕"四个字里读出的复习信号看到"汇编期末考试复习【填空题】更新完毕"这个标题,我第一反应不是"哦,又一份资料",而是"终于有人把填空题单独拎出来整理了"。考过汇编的人都知道&#xff…

2026/10/18 5:38:42 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 0:55:02 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 14:23:36 阅读更多 →