网站建设中html页面,贵州省和城乡建设厅官方网站,国外企业网站怎么做,wordpress淘点金插件ROS2替换中间件为Cyclone_DDS 1.一些介绍#xff1a;#xff09;2.不同DDS的RMW实现3.默认的FastDDS替换为Cyclone DDSi.安装依赖ii.编译 cyclone-dds 4.配置网络 1.一些介绍#xff1a;#xff09;
上一篇我们探讨了ros1和ros2编写launch的区别 【ROS2】launch启动文件编… ROS2替换中间件为Cyclone_DDS 1.一些介绍2.不同DDS的RMW实现3.默认的FastDDS替换为Cyclone DDSi.安装依赖ii.编译 cyclone-dds 4.配置网络 1.一些介绍
上一篇我们探讨了ros1和ros2编写launch的区别 【ROS2】launch启动文件编写 ros1和ros2还有一个很重要的区别就是底层通信框架ros1采用的是xmlRPC ros2采用的是DDS。 DDS 是一种端到端中间件提供与 ROS 系统相关的功能例如分布式发现不像 ROS 1 中那样集中式和对传输的不同“服务质量”选项的控制。也就是去中心化ros2使用DDS后不再依赖roscore。DDS的实现又有很多种例如 RTI 的Connext DDS、eProsima 的Fast DDS、Eclipse 的Cyclone DDS或 GurumNetworks 的GurumDDS。ubuntu20.04 Foxy 默认的是FastDDS无需额外安装即可使用。
2.不同DDS的RMW实现
为了将 DDS/RTPS 实现与 ROS 2 结合使用需要一个桥梁又称接口或rmw简称rmw包该包使用 DDS 或 RTPS 实现的 API 和工具来实现抽象的 ROS 中间件接口。
名称许可证RMW实现维护状态eProsima Fast DDSApache 2rmw_fastrtps_cppFull support. Default RMW. Packaged with binary releases.Eclipse Cyclone DDSEclipse Public License v2.0rmw_cyclonedds_cppFull support. Packaged with binary releases.RTI Connextcommercial,researchrmw_connext_cppFull support. Support included in binaries, but Connext installed separately.GurumNetworks GurumDDScommercialrmw_gurumdds_cppCommunity support. Support included in binaries, but GurumDDS installed separately.
大多情况下使用不同 RMW 实现的节点能够进行通信但这并非在所有情况下都是如此。 Fast DDS – Connext WString 使用Fast DDS 发布后无法被 macOS 上的 Connext 正确接收
Connext – Cyclone DDS 不支持发布/订阅通信WString
Connext Dynamic – Connext Dynamic 不支持 C 服务
3.默认的FastDDS替换为Cyclone DDS
i.安装依赖
sudo apt install ros-foxy-rmw-cyclonedds-cpp
sudo apt install ros-foxy-rosidl-generator-dds-idlii.编译 cyclone-dds
编译 cyclonedds 前请确保在启动终端时没有 source ros2 相关的环境变量否则会导致 cyclonedds 编译报错。如果安装 ROS2 时在~/.bashrc中添加了 source /opt/ros/foxy/setup.bash 需要修改 ~/.bashrc 文件将其删除
sudo vi ~/.bashrc
# source /opt/ros/foxy/setup.bash 开始编译cyclone-dds
cd ~/ros2_workspace/cyclonedds_ws/src
#克隆cyclonedds仓库
git clone https://github.com/ros2/rmw_cyclonedds -b foxy
git clone https://github.com/eclipse-cyclonedds/cyclonedds -b releases/0.10.x
cd ..
colcon build --packages-select cyclonedds #编译cyclonedds编译完成后重新打开ros2的环境变量并执行source
4.配置网络
使用 ifconfig 查看网络信息确认ros组网的以太网网卡。例如如图中的enp0s31f6以实际为准
打开~/.bashrc编辑
#!/bin/bash
echo setup ros2 environment
source /opt/ros/foxy/setup.bash
source $HOME/ros2_workspace/cyclonedds_ws/install/setup.bash
export RMW_IMPLEMENTATIONrmw_cyclonedds_cpp
export CYCLONEDDS_URICycloneDDSDomainGeneralInterfacesNetworkInterface nameenp0s31f6 prioritydefault multicastdefault //Interfaces/General/Domain/CycloneDDS保存后 source ~/.bashrc测试连接效果
ros2 topic list如果出现了你发布的那些话题那么恭喜你成功咯 当然了如果你没发现目标topic也可能是domain ID 的问题默认是0俩边通信这个值需要一致我们后面再着重探讨下domain ID的配置。
作者费码程序猿 欢迎技术交流QQ255895056 转载请注明出处如有不当欢迎指正