# BUNKER MINI 2.0 / ROS 2 Humble 接入进度

2026-11-10：实验室师哥确认车型为 **BUNKER MINI 2.0**，系统使用 **ROS 2 Humble**。AgileX [产品资料页](https://agilexsupport.yuque.com/staff-hso6mo/ttpor0/eu2yvudweyx9nguk?singleDoc)的“二次开发”部分给出 [bunker_ros2](https://github.com/agilexrobotics/bunker_ros2) 与 [ugv_sdk](https://github.com/agilexrobotics/ugv_sdk)。

## 已从厂家资料确认

- 厂家 ROS 2 驱动的 `bunker_base` 订阅 `/cmd_vel`，消息类型是 `geometry_msgs/msg/Twist`，使用 `linear.x` 和 `angular.z`；发布 `/odom`、`/bunker_status`、`/bunker_rc_state`。`bunker_base.launch.py` 有 `is_bunker_mini` 参数，默认值为 `false`，启动 Bunker Mini 时应设为 `true`。
- 厂家用户手册列出最高线速度 1.0 m/s，但没有为本项目提供可直接采用的试验角速度上限、自动导航参数或车载传感器配置。手册明确说裸底盘**不自带自动避障传感器**，实验室加装情况须现场核对。
- 厂家驱动通过 CAN/USB 与底盘通信，仓库 README 给出工作空间编译、CAN 接口准备与底盘节点启动步骤。实验室如果已有整合过的驱动工作空间，优先核对现成启动文件和话题映射。

## 本项目新增的代码

- `configs/bunker_mini2_humble.mock.json`：CogRun 实验桥配置。动作约定为归一化 `[前进速度, 转向角速度]`，每项在 `[-1,1]`；这一归一化是**本项目的工程选择**。
- `cogrun/bunker_mini2_adapter.py`：读取 `/cogrun/bunker_mini2/decision`，检查序号、动作范围和来源；从 `/bunker_status` 读取车体状态、控制模式和故障码；仅在状态正常、控制模式为 CAN 指令模式、决策与状态未超时的情况下，按配置上限转换为 `/cmd_vel` 的 `Twist`。其余情况周期性发送零速度。
- `configs/bunker_mini2_adapter.json`：底盘消息话题与超时配置。实际线速度、角速度上限目前为 `null`，`limits_reviewed=false`。完成现场核对之前，启动实车命令会被拒绝。

在 Windows 上可检查消息契约，不需要 ROS 2：

```bash
python -m cogrun.ros2_bridge --config configs/bunker_mini2_humble.mock.json --dry-run
python -m cogrun.bunker_mini2_adapter --config configs/bunker_mini2_adapter.json --dry-run
python -m unittest discover -s tests -q
```

在已经装好 Humble 和厂家驱动的机器人控制机上，只有核实实际话题、填写并复核速度上限、准备好传感器输入和理性导航动作后，才可分终端启动底盘节点、CogRun 桥和动作适配器。例如厂家底盘节点命令为：

```bash
source /opt/ros/humble/setup.bash
source ~/ros2_ws/install/setup.bash
ros2 launch bunker_base bunker_base.launch.py is_bunker_mini:=true
```

CogRun 桥的决策输入仍需另一个程序提供 `state`、`observation`、`rational_action`；执行后还需提供 `feedback`。这两个现场程序尚未编写，不能把当前代码包说成已经能自主驱动车辆完成实验。待配置、检查和受控验证完成后，适配器的启动形式为：

```bash
python -m cogrun.bunker_mini2_adapter --config configs/bunker_mini2_adapter.json --enable-motion
```

## 还需向师哥获取的代码信息

1. 机器人控制电脑上现用的 ROS 2 工作空间或仓库地址，以及**实际启动命令**。是否直接用 AgileX 的 `bunker_ros2`，有没有话题重映射或其他控制节点？
2. 实验室在底盘上加装了哪些传感器？请给出雷达、相机、IMU、里程计的**实际话题名和消息类型**，或一份 `ros2 topic list -t` 输出。手册只有裸底盘信息，不能推出观测输入。
3. 有没有现成的导航或避障程序？请给代码仓库、启动文件及其输出动作话题。CogRun 的 `rational_action` 需要这个来源。
4. 若已有整套机器人的 URDF/Gazebo 模型、标定和参数文件，请给路径或仓库。产品页的机械结构 RAR 不等于可运行的机器人仿真模型。

上述信息是为**补齐代码接口**。厂家文档和本机测试不能保证实验室设备与公开仓库完全一致。当前环境未安装 ROS 2/Gazebo，也未连接机器人；本项目还没有完成实车运动验证。
