feat: init sim_smart_car_bridge — ROS2 bridge relay for Origincar HTTP API
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>
This commit is contained in:
95
README.md
Normal file
95
README.md
Normal file
@@ -0,0 +1,95 @@
|
||||
# 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 <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 启动(推荐)
|
||||
|
||||
```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 # 桥接节点主程序
|
||||
```
|
||||
Reference in New Issue
Block a user