ROS2学习(七) Foxy版本ros2替换中间件。

      在ros2使用的过程中,一开始选用的foxy版本,后来发现,foxy版本的ros2有很多问题。一个是foxy版本已经停止维护了。另一个问题是这个版本有很多bug, 后续的版本在功能实现上做了很大的改动,甚至说进行了重写。修复的一些问题,foxy版本上的问题也没有修复。
      最近遇到的问题是,service有时候没有应答,根据输出的log看是中间件出的问题,错误的的日志如下

E0229 15:04:57.981310  2354 main.cpp:43] [me] rclcpp::exception::RCLError caught! failed to send response: client will not receive response, at /tmp/binarydeb/ros-foxy-rmw-fastrtps-shared-cpp-1.3.2/src/rmw_response.cpp:127, at /tmp/binarydeb/ros-foxy-rcl-1.1.14/src/rcl/service.c:356

后面查看源码发现如下的内容,看到这个if条件是Maybe就很崩溃了。
在这里插入图片描述

      遇到节点启动时,负载很高,通过perf工具查看,是启动的时候共享内存一直创建失败。抛出异常,
然后进入某种死循环,一直在创建共享内存。一直在find_segment()函数中转。
在这里插入图片描述
目前没有从网上找到很好的处理方法,其实也无法确定是ros2的问题导致的,还是中间件导致的。
所以采取的方式是换中间件。

ros2 中间件

       foxy版本的中间件使用的是fast-rtps, 这个版本默认是使用共享内存的。也就是遇到了上面的问题。通过查一些资料,用的比较多的是cyclone-dds. 所以决定先替换中间件。
替换方法比较简单。
直接apt安装,再加声明环境变量RMW_IMPLEMENTATION就可以。
安装方法:

sudo 
<think>好的,我现在需要处理用户关于ROS 2 Foxy版本的询问。首先,用户要求了解版本介绍、安装方法和使用教程。根据用户提供的引用内容,里面提到了两种安装方法和镜像源的问题,尤其是清华镜像源的使用。我需要确保这些信息准确无误,并且结构清晰。 首先,我应该从版本介绍开始。ROS 2 Foxy Fitzroy是2020年发布的,支持到2023年,适用于Ubuntu 20.04。需要确认这些信息的正确性,可能需要查阅官方文档或可靠来源来验证。比如,ROS官方维基或者发布说明。 接下来是安装方法。用户提到了一键安装脚本和手动安装两种方式。一键安装使用了fishros的脚本,这可能需要检查该脚本的可靠性,确保它来自可信源。手动安装部分涉及设置语言环境、添加GPG密钥、添加软件源、安装ROS等步骤。这些步骤需要按照官方指南来,避免遗漏任何步骤,比如更新apt缓存或安装开发工具。 关于镜像源的问题,用户提到如果安装失败可能需要更换为清华镜像源。我需要确认清华镜像源是否确实提供ROS 2 Foxy的包,以及如何正确修改sources.list文件。可能需要引用清华大学的镜像站帮助文档来支持这一点。 使用教程部分,用户可能需要初始化工作空间、安装依赖、编译和运行示例节点。这些步骤需要参考ROS 2的入门教程,确保命令正确,比如使用colcon进行构建,配置环境变量等。 在生成相关问题的时候,需要考虑用户可能的后续疑问,比如安装失败的处理、与其他版本的比较、应用场景和开发工具的选择。这些问题应该覆盖常见的使用场景和潜在问题。 需要检查所有命令是否正确,比如sudo apt update和安装命令中的包名称是否正确。例如,ros-foxy-desktop是否是正确的包名,可能需要核对官方安装指南。 另外,引用标识需要正确对应到用户提供的引用内容,即引用[^1]对应到用户给出的安装方法部分。要确保每个引用都是必要的,并且正确标注在相关段落末尾。 最后,整个回答需要符合用户要求的格式:使用中文,数学公式正确(虽然这里可能用不上,但要注意是否有涉及),结构清晰,分步骤说明,相关问题部分有四个问题,符合示例中的结构。 可能需要注意的地方:用户提供的引用中提到了修改镜像源的方法,但步骤可能需要更详细,比如如何编辑sources.list文件,使用sudo权限,替换URL等。需要确保这些步骤准确,避免用户操作时出错。 总结下来,我需要组织信息,分版本介绍、安装方法、使用教程三个部分,每个部分详细但简洁,确保命令准确,引用正确,并生成相关问题帮助用户进一步探索。</think>### ROS 2 Foxy Fitzroy 版本详解 #### 一、版本介绍 ROS 2 Foxy Fitzroy 是 2020 年 6 月发布的长期支持(LTS)版本,支持周期至 2023 年 5 月。其核心特性包括: 1. **DDS 中间件默认使用 Cyclone DDS**,提升了实时通信性能; 2. **增强的 QoS 策略**,支持更精细化的通信控制; 3. **Python 3.8 兼容性**,适配现代 Python 生态系统; 4. **改进的 ROS 1/ROS 2 桥接工具**,便于混合系统开发[^1]。 #### 二、安装教程 ##### 方法 1:一键安装(推荐新手) ```bash wget http://fishros.com/install -O fishros && . fishros ``` - 选择 `1` 进入安装菜单 - 选择 `ROS` -> `ROS2` -> `Foxy` - **镜像源选择提示**:若出现网络问题,需切换至清华镜像源(后附修改方法) ##### 方法 2:手动安装(Ubuntu 20.04) ```bash # 设置语言环境 sudo apt update && sudo apt install locales sudo locale-gen en_US en_US.UTF-8 sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 # 添加ROS仓库 sudo apt install software-properties-common sudo add-apt-repository universe sudo apt update && sudo apt install curl gnupg2 lsb-release curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key | sudo apt-key add - sudo sh -c 'echo "deb [arch=$(dpkg --print-architecture)] http://packages.ros.org/ros2/ubuntu $(lsb_release -cs) main" > /etc/apt/sources.list.d/ros2.list' # 安装核心组件 sudo apt update sudo apt install ros-foxy-desktop ``` **镜像源异常处理**: 若 `sudo apt update` 报错,需修改 `/etc/apt/sources.list` 使用清华镜像源: ```bash sudo sed -i 's/archive.ubuntu.com/mirrors.tuna.tsinghua.edu.cn/g' /etc/apt/sources.list ``` 参考镜像配置指南:[清华镜像源帮助文档](https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu-ports/) #### 三、基础使用 1. **环境配置** ```bash source /opt/ros/foxy/setup.bash echo "source /opt/ros/foxy/setup.bash" >> ~/.bashrc ``` 2. **创建工作空间** ```bash mkdir -p ~/ros2_ws/src cd ~/ros2_ws colcon build ``` 3. **运行示例节点** ```bash ros2 run demo_nodes_cpp talker # 发布节点 ros2 run demo_nodes_py listener # 订阅节点 ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值