mROS 2 项目使用教程
1. 项目介绍
mROS 2(mros2)是一个针对嵌入式设备的轻量级、无代理的通信库,兼容ROS 2的rclcpp。它旨在为嵌入式设备提供一个与ROS 2兼容的运行时环境,使得嵌入式节点能够直接与ROS 2节点进行通信。mROS 2由基本的发布/订阅通信API、RTPS协议、UDP/IP栈和实时内核组成。
主要特点
- 无代理:mROS 2节点可以自主发现主机上的通信节点,无需代理或桥接器。
- 轻量级:所有软件栈均使用C/C++实现,适用于嵌入式设备。
- 实时性:使用实时内核(如TOPPERS内核、Mbed OS)作为运行时平台,以增强实时性能。
功能与限制
- 支持通过Topic进行发布/订阅通信。
- 不支持内置类型
wstring
和数组类型。 - 支持一些自定义消息类型(如Twist、Pose)。
- 不支持服务、动作和参数。
2. 项目快速启动
环境准备
确保你的开发环境已经安装了以下工具:
- Git
- Python 3
- CMake
克隆项目
git clone https://github.com/mROS-base/mros2.git
cd mros2
生成自定义消息头文件
假设你已经定义了一个自定义消息类型Twist
,并将其放置在mros2_msgs/geometry_msgs/msg/
目录下。
cd mros2_msgs
python3 mros2_header_generator/header_generator.py geometry_msgs/msg/Twist.msg
编译项目
mkdir build
cd build
cmake ..
make
运行示例
编译完成后,可以运行示例程序来验证安装是否成功。
./example_node
3. 应用案例和最佳实践
案例1:在STM32 NUCLEO-F767ZI上使用mROS 2
mROS 2支持在STM32 NUCLEO-F767ZI开发板上运行。以下是快速启动步骤:
- 克隆
mros2-asp3-f767zi
仓库。 - 按照仓库中的README文件进行配置和编译。
- 将生成的固件烧录到STM32 NUCLEO-F767ZI开发板上。
案例2:在Mbed OS上使用mROS 2
mROS 2也支持在Mbed OS上运行。以下是快速启动步骤:
- 克隆
mros2-mbed
仓库。 - 使用Mbed CLI工具进行配置和编译。
- 将生成的固件烧录到支持Mbed OS的开发板上。
4. 典型生态项目
mros2-asp3-f767zi
这是一个在STM32 NUCLEO-F767ZI开发板上实现mROS 2的参考项目。它使用TOPPERS/ASP3内核,支持实时通信。
mros2-mbed
这是一个在Mbed OS上实现mROS 2的参考项目。它支持多种Mbed OS兼容的开发板,易于尝试和使用。
mros2-esp32
这是一个在ESP32开发板上实现mROS 2的参考项目。它使用ESP-IDF和FreeRTOS,支持2.4 GHz Wi-Fi通信。
通过这些生态项目,开发者可以快速在不同的嵌入式平台上实现mROS 2,并进行开发和测试。