# infantry2022视觉测试 **Repository Path**: XMUT-PFA/infantry2022 ## Basic Information - **Project Name**: infantry2022视觉测试 - **Description**: 串级自瞄,内环速度换,外环视觉坐标 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-12-28 - **Last Updated**: 2022-05-26 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 步兵机器人视觉测试-2022-1-1 自瞄总结: //------------ 关于这份代码:------------------------------------------------ 1.单环速度环控制电机 外环为视觉返回的坐标点进行pid计算作为位置环,和内环形成简单的串级控制 2.这份代码主要内容在rc.c的RC_control_X函数中和it.c里面的串口6中断 3.这份代码后期还需要完善,因为速度环无法小陀螺,自瞄还得在串级云台的基础上调, 也就是后面会有3级pid需要调(哨兵就速度环加视觉2级就够) //------------ 存在的问题:--------------------------------------------------- A版无法和jasonnano进行串口dma通信,表现的现象为:(这个问题未找到原因) 1.接收到9位的乱码 2.或者接收到1位的乱码,其他8位没有数据 尝试过的解决方法: 1.A版接收串口调试助手发来的消息(串口发来的消息都能接收到,而且能解算出Taget_X和Y) 2.A版接收另外一块32单片机的串口消息(也能收到消息效果和1一样) 3.将A版的2个解决方法用在jasonnano上,同样都能通信成功 最终解决方法: 1.将视觉信号发送给f4最小系统版(后面可以换成c8t6),f4板子再将信号发送给A版 2.A版和f4板子的代码在同一个仓库下,前者为master分支后者为Branch_F4分支 3.f4板子用的串口1,pa9:TX,pa10:RX //------------ 注意事项:--------------------------------------------------- 俯仰角自瞄时候,需要注意克服重力的因素,抬头时候p给大一点 卡尔曼滤波需要在视觉那边处理,目前看来与电控关系不大,电控需要做的是把pid参数调好 调自瞄包括调各种PID一定一定要记得注意底层运行时间!!!!!!!(可以用debug断点测,也能用下面方法) 1.视觉那边处理速度是40帧每秒,也就是大概25ms发一次数据给电控 2.经过测试,main函数里的内环速度环跑两次,串口中断触发一次, 也就是内外环权重比一开始是2:1,关于测试的方法,简单提一下:设置两个全局变量,在 内环速度环运算一次的时候让他自增1,在串口中断中接收一次数据也自增1,后面计算发现 相同时间下,运算次数比例为2:1 3.关于权重比: 内环权重一般更大,但是要大多少要看情况,一般是3:1,像视觉如果发现外环数据不稳定,内环权重可以更大一点 5:1都行,内环p一定要调到有明显的阻力感但是又不会发生震动,外环权重越小,外环的p可以稍微给大一点弥补 4.因为外环视觉数据不太稳定,我把外环pid扩大了1000倍,这样导致的后果就是反应速度会慢点,但是不会震荡 5.main函数里面的延时0毫秒不能去掉,否则电机震荡 //------------ 视觉在赛场上注意事项:--------------------------------------------------- 根据往年别的高校在赛场上视觉的表现,需要考虑到赛场光线强的因素,平时测试的时候要可以去加点干扰因素比如 强光去测试。 如果打小陀螺我觉得这份的效果够用,如果打能量机关,只能从算法上再优化,理论上是可以吧pid调的很稳的,还是 要多调,多记录现象,有算法加算法 自瞄应该是辅助作用,只要还要靠操作手瞄准,所以UI界面非常关键,UI界面必须要做。 //------------ 关于步兵的问题:-------------------------------------------------------------- 在电控上: 1.配合超级电容把功率闭环做完整,上一年问题出在直通后级这个地方,今年在算法上要留一手,起码在ui界面上要 让操作手知道目前超级电容的状态,然后再软件去处理,比如直通后级的时候,电流输出要控制一下,给电容充电的时间 2.底盘跟随会晃动完全是因为底盘的原因,还有一个原因就是云台相应不够快,串级的外环用的陀螺仪想办法加快传输速度,甚至 对精准度要求没传输速度大,必要时候要牺牲陀螺仪精度,串口比iic慢 3.发射需要闭环,15m/s和18m/s都要保证不扣血 4.注意比赛场地上有30度的斜坡,一定要知道车子在斜坡上需要克服自身重力,所以就算在坡上不跑也是会有功率损耗的,如果 在直通后级的时候爬坡会被功率瞬间烧死 5.补弹的时候不太好补,操作手需要训练 机械: 1.注意云台配重问题,要达到平衡不能前面太重或者后面太重 2.注意所有重量尽量往旋转中心的那个轴靠紧,这个很好理解,角动量的原因,例如:同样的力气下,一个人旋转起来的速度 跟他的姿势有关,如果把手往前伸,速度会变慢,把手收回胸前,旋转的快,同理如果步兵俯仰角电机放的太靠外,将会 更难控制,yaw角电机将花费跟大的电流去控制他旋转起来。串级pid反应速度将很慢,自瞄也会非常慢,跟不上,因为需要 带动一个很重的东西旋转本来就费劲 3.发射机构一出来就要进行测试。连发单发,速度测试 4.底盘布线云台布线要有预留