138 lines
4.4 KiB
Markdown
138 lines
4.4 KiB
Markdown
# 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 NUC(i7-1260P / i7-1165G7)
|
||
- 相机:海康 MV-CS016-10UC + 6mm 镜头
|
||
- 下位机:RoboMaster C 型开发板(STM32F407)/ 达妙 MC02(STM32H7)
|
||
|
||
## 依赖安装
|
||
|
||
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. 获取端口 ID(serial, 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
|
||
```
|