MOVE_AI/README.md
2026-03-01 02:43:03 +08:00

138 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# MOVE_AI
适用于 RoboMaster 机器人的视觉自瞄系统,参考同济大学 Superpower 战队 25 年开源设计,适配 MOVE。
## 项目结构
```
├── calibration/ # 标定工具
├── configs/ # 配置文件yaml
├── src/
│ ├── component/ # 通用组件EKF、弹道、日志、绘图等
│ ├── device/ # 设备驱动相机、串口、CAN、IMU
│ ├── module/
│ │ ├── auto_aim/ # 自瞄模块(检测、解算、跟踪、瞄准、规划)
│ │ ├── auto_buff/ # 打符模块
│ │ └── omniperception/ # 全向感知模块(哨兵用)
│ └── task/
│ ├── *.cpp # 各兵种主程序
│ └── test/ # 测试用例
```
## 环境要求
- Ubuntu 22.04
- 运算平台Intel NUCi7-1260P / i7-1165G7
- 相机:海康 MV-CS016-10UC + 6mm 镜头
- 下位机RoboMaster C 型开发板STM32F407/ 达妙 MC02STM32H7
## 依赖安装
1. SDK
- [HikRobot MVS SDK](https://www.hikrobotics.com/cn2/source/support/software/MVS_STD_GML_V2.1.2_231116.zip)
- [MindVision SDK](https://mindvision.com.cn/category/software/sdk-installation-package/)(可选)
- [OpenVINO 2024](https://docs.openvino.ai/2024/get-started/install-openvino/install-openvino-archive-linux.html)
- [Ceres Solver](http://ceres-solver.org/installation.html)
2. 系统依赖:
```bash
sudo apt install -y \
git g++ cmake can-utils \
libopencv-dev libfmt-dev libeigen3-dev \
libspdlog-dev libyaml-cpp-dev libusb-1.0-0-dev \
nlohmann-json3-dev openssh-server screen
```
## 编译与运行
```bash
cmake -B build
make -C build/ -j$(nproc)
./build/auto_aim_test # 运行测试
```
## 可执行目标
### 主程序task
| 目标 | 说明 | 配置文件 |
|------|------|----------|
| `standard` | 步兵自瞄 | `configs/standard3.yaml` |
| `standard_mpc` | 步兵自瞄MPC 规划) | 需指定 |
| `uav` | 无人机自瞄 + 打符 | `configs/uav.yaml` |
| `uav_debug` | 无人机调试(含可视化) | `configs/uav.yaml` |
| `mt_standard` | 多线程步兵 | 需指定 |
| `sentry` | 哨兵 | `configs/sentry.yaml` |
| `sentry_multithread` | 哨兵多线程 | `configs/sentry.yaml` |
| `sentry_debug` | 哨兵调试 | `configs/sentry.yaml` |
| `sentry_bp` | 哨兵(带弹道预测) | `configs/sentry.yaml` |
| `auto_aim_debug_mpc` | 自瞄 MPC 调试 | 需指定 |
| `auto_buff_debug` | 打符调试 | 需指定 |
| `auto_buff_debug_mpc` | 打符 MPC 调试 | 需指定 |
| `mt_auto_aim_debug` | 多线程自瞄调试 | 需指定 |
### 标定工具calibration
| 目标 | 说明 |
|------|------|
| `capture` | 采集标定图像 |
| `calibrate_camera` | 相机内参标定 |
| `calibrate_handeye` | 手眼标定 |
| `calibrate_robotworld_handeye` | 机器人-世界手眼标定 |
| `split_video` | 视频拆帧 |
### 测试用例test
| 目标 | 说明 |
|------|------|
| `auto_aim_test` | 自瞄全流程测试 |
| `auto_buff_test` | 打符全流程测试 |
| `camera_test` | 相机基础测试 |
| `camera_detect_test` | 相机 + 检测测试 |
| `camera_thread_test` | 相机多线程测试 |
| `cboard_test` | C 板通信测试 |
| `gimbal_test` | 云台通信测试 |
| `gimbal_response_test` | 云台响应测试 |
| `fire_test` | 发射测试 |
| `dm_test` | 达妙 IMU 测试 |
| `handeye_test` | 手眼标定测试 |
| `detector_video_test` | 离线视频检测测试 |
| `planner_test` | MPC 规划器测试 |
| `planner_test_offline` | MPC 规划器离线测试 |
| `usbcamera_test` | USB 相机测试 |
| `usbcamera_detect_test` | USB 相机 + 检测测试 |
| `multi_usbcamera_test` | 多 USB 相机测试 |
| `minimum_vision_system` | 最小视觉系统 |
## 串口设置
1. 授予权限:
```bash
sudo usermod -a -G dialout $USER
```
2. 获取端口 IDserial, idVendor, idProduct
```bash
udevadm info -a -n /dev/ttyACM0 | grep -E '({serial}|{idVendor}|{idProduct})'
```
3. 创建 udev 规则:
```bash
sudo touch /etc/udev/rules.d/99-usb-serial.rules
```
写入(用实际 ID 替换):
```
SUBSYSTEM=="tty", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="1234", ATTRS{serial}=="A1234567", SYMLINK+="gimbal"
```
4. 重新加载规则:
```bash
sudo udevadm control --reload-rules
sudo udevadm trigger
```
5. 验证:
```bash
ls -l /dev/gimbal
```