# 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 请求 | ## 安装 ```bash cd 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 启动(推荐) ```bash ros2 launch origincar_bridge bridge.launch.py http_host:=192.168.11.159 ``` ### 直接运行 ```bash ros2 run origincar_bridge bridge_node --ros-args -p http_host:=192.168.11.159 ``` ### 运行时调参 ```bash 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](https://github.com/mxxxdev/motrixsim) 的 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 # 桥接节点主程序 ```