一、针对ROS2开发的Python通讯外部工具整理,涵盖串口、网络、Web及多功能协议支持工具,均提供官方下载链接及适用场景说明:
⚙️1、串口通信工具
-
ROS2 Serial Library
-
简介:专为ROS2 Humble优化的串口库,支持异步读写和自定义协议解析。
-
下载链接:
-
GitHub源码:ZhaoXiangBox/serial
-
预编译包(优快云):ROS2-Humble串口库
-
-
-
FishProtocol
-
简介:C++/Python双语言支持的多协议库(含串口),提供ROS2节点集成示例,支持零配置切换协议。
-
安装命令:
bash
-
sudo apt install libboost-dev git clone https://github.com/fishros/fish_protocol
-
ROS2示例:支持回调式数据接收与发送(代码示例)。
🌐 2、网络通信工具
-
FishProtocol(UDP/TCP)
功能:同一库支持UDP Server/Client、TCP通信,适用设备间远程数据交互。
配置示例:
cpp
proto_config.protocol_type_ = PROTOCOL_TYPE::UDP_SERVER;
proto_config.udp_server_ip_ = "0.0.0.0";
proto_config.udp_server_port_ = 3474;
-
ROS2-TCP Bridge
-
简介:实现ROS2与Simulink的TCP数据互通,含Python发布/订阅模板。
-
下载链接:py_pubsub通讯代码
-
🖥️ 3、Web通信工具
-
rosbridge_suite + roslibjs
-
功能:通过WebSocket连接ROS2与浏览器,支持Topic/Service调用。
-
安装步骤:
bash
-
-
-
sudo apt install ros-<distro>-rosbridge-suite # distro如humble git clone https://github.com/RobotWebTools/roslibjs
-
HTML示例:实时发布
/cmd_vel话题(代码参考)。
-
🔧 4、多功能协议支持
| 工具名称 | 协议支持 | 语言 | 下载链接 | 适用场景 |
|---|---|---|---|---|
| FishProtocol | 串口/UDP/TCP | C++/Python | GitHub | 多协议统一管理、硬件兼容性强 |
| ros2cli | DDS原生通信 | Python | GitHub | 命令行调试与管理 |
| Micro-ROS | 微控制器通信 | C | 官方文档 | 嵌入式设备接入ROS2网络 |
💎 5、使用建议
-
优先选型:
-
硬件交互 → FishProtocol(跨协议支持)
-
Web控制 → rosbridge_suite(生态成熟)
-
嵌入式场景 → Micro-ROS(资源占用低)
-
-
调试工具:
-
命令行操作使用 ros2cli(如
ros2 topic pub/ros2 service call)。
-
以上工具均经过ROS2 Humble/Foxy验证。遇到依赖问题可参考各项目GitHub Issues或ROS社区论坛
二、ROS2核心通信接口详解
2.1 定时器与同步机制
2.1.1 基础定时器
python
class TimerExample(Node):
def __init__(self):
super().__init__('timer_demo')
# 创建1Hz定时器
self.timer1 = self.create_timer(
1.0, # 秒
self.timer1_callback
)
# 创建500ms定时器
self.timer2 = self.create_timer(
0.5,
self.timer2_callback
)
def timer1_callback(self):
self.get_logger().info("1Hz定时器触发")
def timer2_callback(self):
self.get_logger().info("500ms定时器触发", throttle_duration_sec=2) # 节流输出
2.1.2 定时器同步技术
python
import rclpy
from rclpy.clock import Clock
from rclpy.time import Duration
class SyncTimers(Node):
def __init__(self):
super().__init__('sync_timers')
self.clock = Clock()
self.start_time = self.clock.now()
# 创建多个定时器
self.timer_slow = self.create_timer(2.0, self.slow_callback)

最低0.47元/天 解锁文章
8499

被折叠的 条评论
为什么被折叠?



