| 文件名 | 简述 |
|---|---|
| code/DOG_cv.c(h) | 机器视觉:图像处理 |
| code/DOG_filter.c(h) | 滤波器(卡尔曼、低通) |
| code/DOG_menu.c(h) | 菜单 |
| code/DOG_motor.c(h) | 电机 |
| code/DOG_path.c(h) | 循线(八邻域、最长白列、中线) |
| code/DOG_pid.c(h) | PID控制器 |
| code/DOG_sensor.c(h) | 传感器 |
| code/DOG_solve.c(h) | 解算(欧拉角、运动学正/逆解算) |
| code/DOG_timer.c(h) | 计时器 |
| code/DOG_vofa.c(h) | VOFA协议 |
| code/DOG_data.h | DOG库变量类型 |
| 文件名 | 简述 |
|---|---|
| code/ai.c(h) | AI摄像头 |
| code/control.c(h) | 控制(角度环、方向环、速度环、箱子定位) |
| code/fsm.c(h) | 状态机 |
| code/menu.c(h) | 菜单 |
| 状态名 | 简述 | 切换关系 |
|---|---|---|
| common_path(普通赛道) | 普通赛道状态,直道/弯道循迹 | 无 |
| L_circle_in(左圆环入环)/ | 左圆环入环状态,向左入环 | 满足入环条件,common_path->L_circle_in,完成入环后切换至L_circle |
| L_circle(左圆环内) | 左圆环内状态 | 无 |
| L_circle_out(左圆环出环) | 左圆环出环状态,向左出环 | 满足出环条件,L_circle->L_circle_out,完成出环后切换至common_path |
| R_circle_in(左圆环入环) | 右圆环入环状态,向右入环 | 满足入环条件,common_path->R_circle_in,完成入环后切换至R_circle |
| R_circle(左圆环内) | 右圆环内状态 | 无 |
| R_circle_out(左圆环出环) | 右圆环出环状态,向右出环 | 满足出环条件,R_circle->R_circle_out,完成出环后切换至common_path |
| zebra_path(斑马线赛道) | 斑马线赛道状态 | 识别到斑马线后,common_path->zebra_path,记录当前位置相对于出发点路程,若实时路程与斑马线路程的差值超过阈值则停车 |
| box_first_track(箱子一次定位) | 箱子一次定位状态,第一次看到箱子后贴近箱子 | 识别到箱子后,若满足范围条件,common_path->box_first_track或L/R_circle->box_first_track并记录切换前的状态,否则返回切换前的状态 |
| box_calibration(箱子矫正) | 箱子矫正状态 | box_first_track定位完成后,box_first_track->box_calibration进行对称法矫正,对称度超过阈值则切换至box_second_track,若不满足则切换至box_inv_calibration |
| box_inv_calibration(箱子逆矫正) | 箱子逆矫正状态,反转 | 反转回box_calibration状态时记录的对称度最大处,转动完成后,切换至box_second_track |
| box_second_track(箱子二次定位) | 箱子二次定位状态,对正箱子 | 对正箱子,对正完成后切换至box_fxxk |
| box_fxxk(推箱子) | 推箱子状态,将箱子推出界 | 推离箱子,推离完成后,记录相对于出发点的路程,切换至path_back |
| path_back(返回赛道) | 返回赛道状态,向后倒车,旋转90度 | 倒车,当前位置相对于出发点路程-box_fxxk记录的路程超过阈值,停车,旋转90度正对赛道,切换至box_first_track中记录的切换前的状态 |
| 日期 | 工作内容 |
|---|---|
| 2025.7.9 | 1.完成除菜单外所有功能开发 2.添加箱子定位时的旋转 |
| 2025.7.10 | 1.删除箱子定位时的旋转 2.重构完毕,菜单移植 |
| 2025.7.11 | 1.添加缓变速 2.将圆环入环出环从原来的给定旋转速度更改位设置了圆环出入环的输出限幅的角度环PID 3.删除zebra_path_stop状态 |
| 2025.7.12 | 1.添加模糊规则表 2.将圆环出入环计时器更改路程 3.添加单双OPENART预定义,可通过更改宏定义实现单双OPENART切换 4.添加Y缓变速 5.添加Y速度阈值,当大于该阈值才使用X方向速度 6.添加方案选择 |
| 2025.7.13 | 1.将矫正阶段的旋转速度赋值改为由真实X速度×比例,而非目标速度×比例 2.修改AI CAMERA0菜单,添加矫正X速度和比例选项 3.箱子定位判断条件,将较上次箱子路程大于一定阈值改为当前坐标与上次箱子坐标距离大于一定阈值 |
| 2025.7.14 | 1.将矫正阶段的旋转速度赋值换回目标速度×比例 2.添加模糊速度环 3.修改推箱子时的角度闭环为角速度Kd抑制 4.融合编码器和陀螺仪,提高运动学解算的准确度(实测赛道循线一圈,航向角偏移1.0°以内) 5.将完成箱子得各个步骤后停车加回来,不加也可以,只不过要保证标志位不会被改变 6.修复角度环旋转模糊pid,将输入err参数改为err而非角度 7.加入RWR音效 8.优化识别结果显示菜单逻辑 9.我讨厌试错😭 |
| 2025.7.15 | 1.添加矫正阶段的X速度缓变速,并将旋转速度修改为当前X目标速度*比例 2.修改缓变速函数,可以传入缓变速率,并删除缓变速计时器和缓变速功能对时间的依赖 |
| 2025.7.18 | 1.添加回赛道缓变速 2.添加角速度驱动的动态前瞻 3.修改定位箱子PID 4.添加推箱子时的X PID 5.将动态前瞻的参数加入菜单循线页面 6.添加普通摄像头页面,可以调整曝光时间 7.修复箱子逆矫正有时候一直旋转的BUG |
| 2025.8.12 | 1.添加flash存储数据 2.添加低速短前瞻,防止十字弯处有箱子导致推箱子后的抄近道重复看到箱子 |
| 2025.8.13 | 1.添加长按按键存储程序内的参数修改值 2.更换循迹参数,在同样速度下确保循迹稳定性 |
| 2025.8.15 | 1.添加缓加速前瞻,不使用之前的圆环前瞻作为缓加速前瞻,防止改变圆环的时候缓加速出问题 |
| 2025.8.23 | 1.添加补光灯(0:常关;1:循迹开,识别关;2:循迹关,识别开;3:常开) |
