术语表 & 快速参考
核心术语
自瞄相关
| 术语 |
英文 |
含义 |
对应代码 |
| 灯条 |
Light bar |
装甲板两侧的 LED 发光条,是检测的主要特征 |
Light struct |
| 装甲板 |
Armor plate |
机器人上的目标区域,由灯条和面板组成 |
Armor struct |
| 小装甲 |
Small armor |
宽 135mm,普通机器人的前后面板 |
ArmorType::SMALL |
| 大装甲 |
Large armor |
宽 225mm,机器人侧面板(或3/4/5号板) |
ArmorType::LARGE |
| PnP |
Perspective-n-Point |
从 N 个 2D-3D 点对应关系求解相机位姿 |
pnp_solver.cpp |
| EKF |
Extended Kalman Filter |
扩展卡尔曼滤波器,用于状态估计 |
extended_kalman_filter.cpp |
| 状态机 |
State machine |
跟踪器的 LOST/DETECTING/TRACKING/TEMP_LOST 流程 |
tracker.cpp |
| 装甲板跳变 |
Armor jump |
旋转机器人上面向相机的装甲板从一个切到另一个 |
handleArmorJump() |
| 来角/去角 |
Coming/leaving angle |
小陀螺时判断装甲板运动方向的策略 |
aimer.cpp |
| 小陀螺 |
Spinning |
敌方机器人原地快速旋转的防御策略 |
ω > 2 rad/s |
| 弹道补偿 |
Ballistic compensation |
补偿子弹受重力和空气阻力的下落 |
trajectory.cpp |
| 前馈 |
Feedforward |
除了位置指令,还发送速度/加速度给电控 |
MPC 方案 |
ROS2 相关
| 术语 |
英文 |
含义 |
| 节点 |
Node |
ROS2 中最基本的计算单元 |
| 话题 |
Topic |
发布/订阅通信机制 |
| 服务 |
Service |
请求/响应通信机制 |
| 消息 |
Message |
节点间传递的数据结构(.msg 文件) |
| Launch |
Launch |
启动多个节点的配置文件 |
| Component |
Composable Node |
在同一进程内运行的节点,支持零拷贝 |
| TF2 |
Transform 2 |
坐标系变换库 |
| QoS |
Quality of Service |
通信可靠性策略 |
| SensorDataQoS |
— |
适合传感器数据的 QoS 策略(丢帧不重传) |
数学/算法相关
| 术语 |
英文 |
含义 |
| 卡尔曼滤波 |
Kalman Filter |
线性系统的最优状态估计器 |
| 扩展卡尔曼滤波 |
Extended KF |
非线性系统的卡尔曼滤波(线性化近似) |
| 雅可比矩阵 |
Jacobian Matrix |
非线性函数的一阶偏导数矩阵 |
| 状态转移 |
State Transition |
从上一时刻状态预测当前状态的函数 |
| 观测模型 |
Observation Model |
从状态空间到观测空间的映射函数 |
| 新息 |
Innovation |
观测值与预测观测值之差 z - h(x) |
| NIS |
Normalized Innovation Squared |
新息的归一化平方和,用于一致性检验 |
| NEES |
Normalized Estimation Error Squared |
估计误差的归一化平方和 |
| 球坐标 |
Spherical Coordinates |
用 (yaw, pitch, distance) 表示方向 |
| SOLVEPNP_IPPE |
— |
适用于共面点的 PnP 求解算法 |
| NMS |
Non-Maximum Suppression |
非极大值抑制,去除重叠检测框 |
| OTSU |
— |
自动选择二值化阈值的大津法 |
| Letterbox |
— |
YOLO 输入图像的等比例缩放填充方式 |
硬件相关
| 术语 |
英文 |
含义 |
| 工控机 |
Industrial PC |
机器人上运行视觉算法的计算平台(如 NUC) |
| 电控 |
Embedded control |
STM32 等下位机,控制云台和发射 |
| 云台 |
Gimbal |
机器人上控制枪口方向的两轴伺服机构 |
| IMU |
Inertial Measurement Unit |
惯性测量单元,提供姿态(四元数/欧拉角) |
| 串口 |
Serial port |
与电控通信的接口(UART/USB虚拟串口) |
| CAN 总线 |
Controller Area Network |
工业通信总线 |
| OpenVINO |
— |
Intel 的神经网络推理加速引擎 |
常用命令速查
ROS2 命令
# 查看节点
ros2 node list
ros2 node info /armor_detector
# 查看话题
ros2 topic list
ros2 topic echo /detector/armors
ros2 topic hz /image_raw # 查看发布频率
ros2 topic info /detector/armors # 查看消息类型和订阅者
# 发布测试消息
ros2 topic pub /tracker/reset std_srvs/srv/Trigger
# 查看参数
ros2 param list /armor_detector
ros2 param get /armor_detector binary_thres
ros2 param set /armor_detector detect_color 1 # 切换识别蓝色
# TF2
ros2 run tf2_tools view_frames # 生成坐标系 PDF
ros2 topic echo /tf # 查看实时 TF 变换
# Launch
ros2 launch rm_vision_bringup vision_bringup.launch.py
ros2 launch rm_vision_bringup no_hardware.launch.py # 无硬件调试
# 录制/回放
ros2 bag record /detector/armors /tracker/target -o test_bag
ros2 bag play test_bag/
Git 命令
# 克隆代码
git clone https://github.com/UIC-RoboMaster/rm_vision.git
git clone -b sentry https://github.com/Navigator-Vision-Algorithm-Team/RM_Vision_2027.git
# 常用操作
git status # 查看状态
git diff # 查看修改
git add . # 暂存所有
git commit -m "msg" # 提交
git push # 推送
git pull # 拉取
git log --oneline # 查看提交历史
git branch -a # 查看所有分支
git checkout -b new_branch # 创建并切换分支
Linux 命令
# 文件操作
ls -la # 列出文件详情
cd /dev/ # 进入设备目录
cat file.txt # 查看文件内容
grep -rn "keyword" . # 搜索关键词
find . -name "*.cpp" # 查找文件
chmod 666 /dev/ttyACM0 # 修改串口权限
# 进程管理
ps aux | grep ros # 查看 ROS 进程
kill -9 PID # 强制终止进程
screen -S vision # 创建 screen 会话
screen -r vision # 恢复 screen 会话
# 系统信息
lsusb # 列出 USB 设备
dmesg | tail # 查看内核日志(串口连接时)
cat /dev/ttyACM0 # 读取串口数据
stty -F /dev/ttyACM0 921600 # 设置串口波特率
CMake 构建
# 标准构建
cmake -B build
cmake --build build/ -j$(nproc)
# ROS2 colcon 构建
colcon build --packages-select armor_detector
colcon build --symlink-install # 符号链接加速迭代
source install/setup.bash
# 清理
rm -rf build/
rm -rf install/ log/
常见错误排查
| 症状 |
可能原因 |
解决方法 |
Permission denied: /dev/ttyACM0 |
串口权限不足 |
sudo chmod 666 /dev/ttyACM0 或加入 dialout 组 |
No camera found |
相机未连接或 SDK 未安装 |
lsusb 检查设备,确认 SDK 路径 |
| 检测不到灯条 |
曝光/增益不合适 |
调整相机参数,检查 binary_thres |
| EKF 发散 |
初始化错误或噪声参数不对 |
检查 sigma2_q_* 和 r_* 参数 |
| TF 变换查找失败 |
时间戳不同步 |
检查 timestamp_offset,确认 TF 广播 |
| 跟踪器不进入 TRACKING |
tracking_thres 太大 |
减小阈值(默认5)或检查检测率 |
| 弹道补偿不准 |
标定误差或弹道参数错误 |
重新手眼标定,检查子弹速度参数 |
colcon build 失败 |
依赖缺失 |
rosdep install --from-paths src -iry |
| 装甲板 ID 判断错误 |
MLP 模型或阈值问题 |
检查 classifier_threshold,重新训练模型 |
| 云台抖动 |
EKF 噪声参数不对或延迟补偿不足 |
调整 Q/R 矩阵,检查 timestamp_offset |
C++ / 数学库
| 术语 |
英文 |
含义 |
| Eigen |
Eigen |
C++ 线性代数库,提供矩阵/向量运算。Eigen::Matrix<double,11,11> = 11×11 双精度矩阵 |
| cv_bridge |
cv_bridge |
ROS2 包,将 sensor_msgs/Image 转换为 cv::Mat |
| RotatedRect |
RotatedRect |
OpenCV 旋转矩形结构体(center, size, angle) |
| Rodrigues |
Rodrigues |
旋转向量 ↔ 旋转矩阵转换函数 cv::Rodrigues() |
EKF / 状态估计
| 术语 |
英文 |
含义 |
| 过程噪声 |
Process noise (Q) |
EKF 预测步骤中模型不确定性的量化 |
| 观测噪声 |
Measurement noise (R) |
EKF 更新步骤中传感器测量不确定性的量化 |
| 协方差 |
Covariance (P) |
状态估计不确定性的矩阵表示 |
| 新息 |
Innovation |
观测值与预测观测值之差 z - h(x) |
| 卡方检验 |
Chi-squared test |
用于检测 EKF 发散的统计检验方法 |
| softmax |
Softmax |
将神经网络输出转换为概率分布的激活函数 |
| sigmoid |
Sigmoid |
将数值映射到 (0,1) 的激活函数 |
OpenCV 相关
| 术语 |
英文 |
含义 |
| findContours |
findContours |
查找二值图像中的轮廓 |
| minAreaRect |
minAreaRect |
计算轮廓的最小外接旋转矩形 |
| warpPerspective |
warpPerspective |
透视变换,将倾斜图像校正为正视图 |
| threshold |
threshold |
阈值处理,将灰度图转为二值图 |
| OTSU |
OTSU |
自动计算最优阈值的大津法 |