当前位置: 首页 > ai >正文

Apollo Auto:Cyber RT 与 ROS 通信

1.背景

完成dreamView的启动后,我们需要定制化的录制和debug我们自己的车辆,此时需要修改他们之间的通信,Apollo Auto新版本cyber对框架进行了改造,支持了cyber与ros的通信。具有以下功能亮点:

实现常用消息的转换功能,低成本即开即用:

新版本的cyber打通了部分常用传感器的消息通信,实现了相应消息转换功能,包括点云、IMU等消息格式,关心这部分消息通信的用户只需在配置中对齐两端的channel,启动即可使用

插件化的消息转换框架,提升开发效率:

如果用户还想实现除上述消息以外的消息通信,新版本cyber还提供了基于插件化的消息转换框架,用户无需关心cyber和ros的通信接口,只需实现消息转换函数,配置好对应的channel,就能在Apollo各模块中接收由ros发送出来的消息,进一步提升开发效率

在新的 cyberRT 版本中,打平了通信中间件的版本,开发了 ros-bridge 适配了 ros 2 的通信接口,实现了 消息从 cyber 到 ros_bridge 到 ros 的通路,以及从 ros 到 ros_bridge 到 cyber 的通路:
在这里插入图片描述

除了依赖打平和接口适配以外,由于 Apollo 的消息与 ros 消息定义的不同,用户使用 ros bridge 的时候是逃不开相互之间的消息转换逻辑的。而这部分消息转换代码与 cyber 的通信接口、ros 的 rclcpp 接口强耦合,学习成本高,易用性低,并且难以维护。因此,我们基于 Apollo 9.0 中的 cyber 插件机制,解耦消息转换逻辑与 ros_bridge 内部运行逻辑:
在这里插入图片描述

下面我们先把ros bridge部署起来

2.ros bridge部署

首先要求我们能够正常的将Apollo Auto10.0安装好,未安装的请移步至:《Apollo Auto10.0安装教程》

安装cyber源码

buildtool install cyber

配置ros环境

buildtool rosenv -t # -t 指的是使用清华源

如果没有安装清华源的可以使用以下指令:

sudo sh -c 'echo "deb https://mirrors.tuna.tsinghua.edu.cn/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2.list'

执行source ros的脚本,这一步你会遇到第一个坑

source /opt/ros/iron/setup.sh    # 如果您的ubuntu是22.04
source /opt/ros/galactic/setup.sh # 如果您的ubuntu是20.04

具体是执行source /opt/ros/iron/setup.sh 还是source /opt/ros/humble/setup.sh
需要先通过指令:

ls /opt/ros

在这里插入图片描述

注意:如果你这里像我一样有两个不同的版本,推荐卸载掉humble,因为我已经通过iron执行成功,humble我还未尝试

卸载方法:

sudo apt remove --purge ros-humble-*
sudo rm -rf /opt/ros/humble
sudo apt autoremove
source /opt/ros/iron/setup.sh

在这里插入图片描述

在这里插入图片描述

如果不卸载的话,其源码里(/apollo_workspace/application-core/tools/ros/ros_configure.bzl)会强制失败
在这里插入图片描述

执行编译:

sudo buildtool build -p cyber

如果出现:[WARNNING] missing dynamic library in ld, try refreash ld cache
在这里插入图片描述

那是因为环境变量不对,可以执行:

echo "/opt/ros/$ROS_DISTRO/lib" | sudo tee /etc/ld.so.conf.d/ros-iron.conf

然后把之前编译的资源清掉

sudo buildtool clean 
sudo rm -rf ~/.cache/bazel/ 

再次编译:

sudo buildtool build -p cyber

在这里插入图片描述

3.分场景使用 cyber 中的 ros_bridge 程

这块我还没去跟着走一遍,所以后面再回来更新,如果有跟着做完的大佬们,可以在评论区教我一下,感谢

http://www.xdnf.cn/news/12226.html

相关文章:

  • 攻防世界RE-happyctf
  • 对话式AI文本转语音合成软件CSM整合包,Sesame AI Labs多人文字转语音工具
  • CUDA安装与多版本管理
  • 算法训练第九天
  • 无法下载CUDA,下载界面链接打开异常
  • 永磁同步电机无感观测器与在线参数识别分别是什么,区别与联系是什么
  • [科研理论]机器人路径规划算法总结及fast_planner经典算法解读
  • Python6.5打卡(day37)
  • HSL颜色控制及使用示例(Hue-Saturation-Lightness)
  • 整合swagger,以及Knife4j优化界面
  • 【机械视觉】Halcon—【七、blob阈值分割】
  • nginx 同时支持ipv4与ipv6 配置
  • SLG游戏分析
  • Seata 分布式事务 AT 模式
  • IP如何挑?2025年海外专线IP如何购买?
  • python打卡day45@浙大疏锦行
  • Vehicle HAL(5)--vhal 实现设置属性的流程
  • Silicon EFR32xG22 错误问题和解决办法汇总
  • Linux目录结构
  • ROS2里面与话题 /move_base_simple/goal 和 /move_base/status 相对应的话题名字及其含义
  • 整理几个概念:DCU DTK HIP hipcc ROCm LLVM Triton MIGraphX 怎么增加GStreamer插件
  • 可穿戴设备:健康监测的未来之眼
  • 2025年阿里最新软件测试面试题:Web 测试+接口测试+App 测试
  • DAY 22 复习日
  • 获取第三方图片接口文件流并保存服务器
  • 8天Python从入门到精通【itheima】-71~72(数据容器“序列”+案例练习)
  • 串:BF算法(朴素的魔术匹配算法)
  • 【深度学习-Day 23】框架实战:模型训练与评估核心环节详解 (MNIST实战)
  • MQTTX连接移动云的例子
  • JMeter 实现 MQTT 协议压力测试 !