Bridge image (GET /image → sensor_msgs/Image), IMU (GET /imu → sensor_msgs/Imu), and cmd_vel (Twist → POST /cmd) between Origincar simulation and ROS2. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
sim_smart_car_bridge
ROS2 桥接中转节点:将 Origincar 仿真的 HTTP API 与 ROS2 话题双向桥接。
数据流
仿真机 HTTP API ←———HTTP———→ origincar_bridge ←———ROS2———→ 你的其他节点
GET /image ──→ cv_bridge 解码 ──→ sensor_msgs/Image /image
GET /imu ──→ 填充字段 ──→ sensor_msgs/Imu /imu
POST /cmd ←── speed/steer ←── geometry_msgs/Twist /cmd_vel
依赖
| 依赖 | 用途 |
|---|---|
rclpy |
ROS2 Python 客户端 |
sensor_msgs |
Image / Imu 消息 |
geometry_msgs |
Twist 消息 (cmd_vel) |
cv_bridge |
OpenCV ↔ ROS Image 转换 |
opencv-python |
图像解码 |
numpy |
图像数组处理 |
requests |
HTTP 请求 |
安装
cd <your_workspace>
git clone http://106.14.170.56:57575/cyy/sim_smart_car_bridge.git src/origincar_bridge
colcon build --packages-select origincar_bridge --symlink-install
source install/setup.bash
使用
launch 启动(推荐)
ros2 launch origincar_bridge bridge.launch.py http_host:=192.168.11.159
直接运行
ros2 run origincar_bridge bridge_node --ros-args -p http_host:=192.168.11.159
运行时调参
ros2 param set /origincar_bridge image_rate 15.0
ros2 param set /origincar_bridge timeout 2.0
可配置参数
| 参数 | 默认值 | 说明 |
|---|---|---|
http_host |
192.168.11.159 |
仿真机 IP 地址 |
http_port |
8765 |
HTTP API 端口 |
image_topic |
/image |
图像发布话题 |
imu_topic |
/imu |
IMU 发布话题 |
cmd_vel_topic |
/cmd_vel |
控制指令订阅话题 |
image_rate |
30.0 |
图像拉取频率 (Hz) |
imu_rate |
30.0 |
IMU 拉取频率 (Hz) |
timeout |
1.0 |
HTTP 请求超时 (秒) |
上游 API
本节点对接 Origincar Simulation 的 HTTP API(端口 8765):
| 端点 | 方法 | 说明 |
|---|---|---|
/image |
GET | 前置摄像头 JPEG 图像 |
/imu |
GET | IMU 数据 (MPU6050) JSON |
/state |
GET | 小车状态 JSON |
/cmd |
POST | 发送控制指令 {"speed": 1.0, "steer": 0.3} |
项目结构
origincar_bridge/
├── package.xml # ROS2 包清单
├── setup.py # ament_python 构建入口
├── setup.cfg
├── resource/
│ └── origincar_bridge # 包标记
├── launch/
│ └── bridge.launch.py # 启动文件
└── origincar_bridge/
├── __init__.py
└── bridge_node.py # 桥接节点主程序
Description
Languages
Python
100%