104 lines
3.0 KiB
Markdown
104 lines
3.0 KiB
Markdown
# MindVision相机驱动的装甲板检测系统
|
||
|
||
本项目是基于MindVision相机SDK的装甲板检测系统,工业相机替代原有的OpenCV相机接口。
|
||
|
||
## 项目结构
|
||
|
||
- `MindVisionCamera.h/cpp` - MindVision相机驱动实现
|
||
- `main.cpp` - 主程序入口(已修改为使用MindVision相机)
|
||
- 其他 `.cpp/.h` 文件 - 原有的图像处理、装甲板检测、卡尔曼滤波等功能模块
|
||
|
||
## 环境准备
|
||
|
||
此项目需要在WSL Ubuntu环境中编译和运行,因为MindVision SDK位于WSL系统中。
|
||
|
||
### 1. 确保MindVision SDK已安装
|
||
|
||
在WSL Ubuntu中确认SDK路径:
|
||
```bash
|
||
ls -la /home/lld/mdv/include/CameraApi.h
|
||
ls -la /home/lld/mdv/lib/x86/
|
||
```
|
||
|
||
### 2. 安装必要的依赖
|
||
|
||
```bash
|
||
sudo apt update
|
||
sudo apt install build-essential cmake libopencv-dev
|
||
```
|
||
|
||
## 编译项目
|
||
|
||
### 方法1:使用构建脚本
|
||
```bash
|
||
cd /home/lld/code/mdvs
|
||
chmod +x build.sh
|
||
./build.sh
|
||
```
|
||
|
||
### 方法2:手动编译
|
||
```bash
|
||
cd /home/lld/code/mdvs
|
||
mkdir build
|
||
cd build
|
||
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||
make -j$(nproc)
|
||
```
|
||
|
||
## 运行程序
|
||
|
||
```bash
|
||
./build/armor_detector_mdv
|
||
```
|
||
|
||
## 配置说明
|
||
|
||
- 相机ID可在main函数中修改 `cam_id` 变量
|
||
- 默认分辨率:640x480,帧率:30fps
|
||
- 支持颜色切换(红色/蓝色)
|
||
- 支持TTL通信(默认关闭)
|
||
|
||
## 注意事项
|
||
|
||
1. 此项目使用MindVision相机SDK直接驱动相机,可以获得更好的性能和相机控制能力
|
||
2. 曝光、白平衡等参数可在`MindVisionCamera.cpp`中的`set_camera_parameters()`函数中调整
|
||
3. 如果遇到编译错误,请检查MindVision SDK的库文件名是否正确(可能是`libMVSDK.so`或`libMVSDK.a`)
|
||
|
||
## 键盘控制
|
||
|
||
- 按 'q' 键退出程序
|
||
- 按其他键继续运行
|
||
|
||
## 故障排除
|
||
|
||
如果相机无法打开:
|
||
1. 检查相机是否正确连接
|
||
2. 确认MindVision相机驱动是否正确安装
|
||
3. 验证相机ID是否正确
|
||
4. 检查权限(可能需要将用户添加到video组)
|
||
|
||
## MindVision-SDK
|
||
`Linux`: >**wget https://www.mindvision.com.cn/wp-content/uploads/2023/08/linuxSDK_V2.1.0.37.tar.gz**
|
||
|
||
## PID设置原理及其方式
|
||
|
||
- **PID初始真实值 = g_pitch(/yaw)_kp(`位于23行`) * 相关系数(`位于410行`)**
|
||
- **PID调节滑块含义** :`46行`轨迹条回调函数为上下限。例如 pos / 100 ,如果pos范围为0~1000`(位于400行)`则滑块调节范围为 0~10。
|
||
|
||
### Kp(比例系数)的作用
|
||
- 响应速度:Kp值越大,系统对误差的响应越快
|
||
- 控制力度:直接根据当前误差大小产生控制输出
|
||
|
||
### Ki(积分系数)的作用
|
||
- 消除稳态误差:累积历史误差,清除长期存在的小偏差
|
||
- 系统偏移补偿:补偿机械系统的小偏差和静态误差
|
||
|
||
### Kd(微分系数)的作用
|
||
- 预测变化趋势:根据误差的变化率进行调节
|
||
- 抑制振荡:在系统接近目标时减缓调节速度
|
||
|
||
**参数调整建议 **
|
||
- Kp先调:首先调整Kp获得基本响应特性
|
||
- Kd次调:增加Kd减少振荡
|
||
- Ki后调:最后调节Ki消除稳态误差
|