ROS2之间互相通信以及在Ubuntu24.04下载ESP-idf
摘要:本文介绍了在Ubuntu 24.04系统下配置ROS2通信环境的过程。重点讲解了ROS2通过RMW层对接DDS实现的通信原理,比较了FastDDS和CycloneDDS的特点,并选择CycloneDDS作为默认实现。详细说明了安装步骤和环境变量配置方法,通过运行demo测试通信功能。同时分享了为ESP32-S3开发准备ESP-IDF环境的完整流程,包括依赖安装、源码获取和工具链配置。文章提供
之前写了制作一台ROS导航小车如何在ubuntu下载和使用STM32CubeMX,感兴趣的可以去查看
链接如下:
ROS2之间互相通信
我的树莓派5用的是Ubuntu24.04的镜像,所以我的主机也一起使用,并且下载ROS2的 jazzy 版本,现在来完成测试ros之间的通信。
ROS 2 通信底层原理:ROS 2 本身并不实现 DDS,而是通过RMW(ROS Middleware)层对接不同的 DDS 商业 / 开源实现,这些实现都遵循 DDS 标准(由 OMG 组织制定),但在性能、许可证、功能上各有差异。
1. Fast DDS核心特点:
- ROS 2 Foxy 及之后版本的默认 DDS 实现,对 ROS 2 的适配最深度;
- 轻量级、低延迟,适合嵌入式和实时系统;
- 支持 DDS Security(安全认证)、DDS Discovery Server(中心化发现)等高级特性;
- 完全开源,社区活跃,问题修复快
2. Cyclone DDS核心特点:
- 以高性能、低资源占用著称,尤其适合实时性要求高的场景;
- 对网络配置的适配性强,支持小型嵌入式设备;
- ROS 2 Humble/Iron 等版本中可便捷切换为默认 DDS。
还有一些DDS我就不介绍了,这里我就使用Cyclone DDS
下载Cyclone DDS:
sudo apt update && sudo apt install ros-jazzy-rmw-cyclonedds-cpp
永久生效写入bashrc文件:
echo "export RMW_IMPLEMENTATION=rmw_cyclonedds_cpp" >> ~/.bashrc
source ~/.bashrc
主机和从机分别在bashrc文件末尾追加ROS_DOMAIN_ID,只有在同一个局域网以及ID下才可以通信,ID数字可以自己随便起
echo "export ROS_DOMAIN_ID=88" >> ~/.bashrc
主机和从机分别运行代码进行测试:
ros2 run demo_nodes_cpp talker
ros2 run demo_nodes_py listener
在Ubuntu24.04下载ESP-idf
因为我之后的平衡车想要用到小智ai,用到esp32-S3,所以下个esp-idf。
看了好几个方法,有个博客写的非常详细,跟着那个步骤走又快又好👇
esp-idf下载方法 我这里就把他的简化和关键步骤抄过来
下载依赖
sudo apt-get install git wget flex bison gperf python3 python3-pip python3-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
获取ESP-idf
打开终端,输入以下命令:
mkdir -p ~/esp && cd ~/esp
git clone https://gitee.com/EspressifSystems/esp-gitee-tools.git
cd esp-gitee-tools && ./jihu-mirror.sh set
cd .. && git clone --recursive https://github.com/espressif/esp-idf.git
在esp-idf目录执行安装编译工具:
cd ~/esp/esp-idf && export IDF_GITHUB_ASSETS="dl.espressif.cn/github_assets"
./install.sh
如果终端没啥报错的信息说明下载完成
环境配置
打开 .profile 追加命令:
vim ~/.profile
source esp32/esp-idf/export.sh更多推荐
所有评论(0)