Files
amadeus_26/README.md
2026-03-22 19:42:38 +08:00

3.1 KiB
Raw Blame History

Amadeus 26

本项目为 Simba Robotics 为 2026 年机甲大师高校联盟赛编写的哨兵机器人机载计算机识别、导航、决策算法。

依赖

硬件

每一条后括号内为与主机的连接方式。

  • MV-SUA133GC-T 工业相机 (USB)
  • NUC10i7 微型计算机 (主机)
  • FDI Systems DETA10 IMU 模块 (USB - CP210x 串口芯片 - UART) /dev/ttyUSB0
  • 达妙 USB2CAN-DUAL USB 转 CAN 模块 (USB - 模块 - CAN*2) /dev/ttyACM0

软件

  • ROS2 Humble
  • OpenCV 4.13 with Contrib
  • Eigen 3
  • MVSDK (工业相机 SDK)
  • dm_device (USB 转 CAN 模块 SDK)
  • 待补充...

目标

感谢同济 SuperPower 战队!自瞄算法参考同济的 sp_vision_26 。项目目标为使 2026 年采用的

软件架构

ROS2 基本架构为节点。以每个节点的发布、解析、接收数据为例说明。 一共有几项:

  • 功能:描述该节点有什么功能
  • 连接:描述该节点需要使用的物理连接硬件的软件接口和参数
  • 接收:描述该节点从直连硬件中接收的数据
  • 订阅:描述该节点从其他节点获取的数据
  • 发布:描述该节点使用 ROS 发布的数据
  • 发送:描述该节点使用直连硬件发送的数据

收发节点

  • 功能:主机对外通信的封装节点。物理上读取收发模块
  • 连接USB2CAN协商 CAN 通信速率 1000kbps/dev/ttyACM0 IMU_CP210x协商 UART 通信速率 921600/dev/ttyUSB0
  • 接收USB2CAN -> 裁判系统数据
  • 订阅:中央节点 -> 控制指令
  • 发送USB2CAN.CAN2 -> 控制指令
  • 发布IMU 数据(地磁角、六轴角加速度、加速度、陀螺仪) 裁判系统数据(血量、比赛当前状态) USB2CAN 、IMU 连接 OK 标志

中央节点

  • 功能:综合各类信息判断状态与转移,是控制指令发送的唯一来源
  • 订阅:自瞄节点 -> 是否有装甲板、自瞄移动指令、开火指令 收发节点 -> 裁判系统.血量, 裁判系统.比赛的进程USB2CAN 连接
  • 发布:当前状态,敌方装甲板颜色(蓝/红),控制指令

中央节点负责状态转移的判断。整车的决策被设计为一个有限状态机,分为四个状态:索敌、击打、进点、回家。

stateDiagram-v2
    [*] --> 等待: 开始
    等待 --> 进点: 通信 OK 且 比赛开始 且 血量 = 100%
    进点 --> 索敌: 到达点内
    索敌 --> 攻击: 搜寻到装甲板
    攻击 --> 索敌: 无装甲板
    索敌 --> 回家: 血量 < 50%
    攻击 --> 回家: 血量 < 50%
    回家 --> 等待: 到达基地

自瞄节点

  • 功能:在视野内搜寻装甲板,自动瞄准并计算何时发射
  • 连接MV 工业相机
  • 接收:工业相机句柄与帧数据
  • 发布: 自瞄运动指令,视野内是否有装甲板

导航节点

  • 功能:根据 IMU 数据计算出当前位置,根据状态决定目标位置并发出移动到该位置所需的指令
  • 接收:收发节点 -> IMU.地磁角, IMU.速度, IMU.加速度, IMU.六轴陀螺仪 中央节点 -> 状态
  • 发布:导航运动指令