# ql-control-infantry **Repository Path**: wizard-lhx/ql-control-infantry ## Basic Information - **Project Name**: ql-control-infantry - **Description**: 齐鲁战队步兵电控程序 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-11-07 - **Last Updated**: 2023-12-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 更新日志 ## 9.18 新建了工程,底层配置的工程在 DriverMCU 文件夹下,应用工程在 ProjectMDK 文件夹下。 ## 9.19 配置了遥控器串口 + DMA 接收数据,移植了遥控器的数据解析,还没验证。 ## 9.20 配置了can通信,移植了发送函数和中断接收函数,还没验证。 ## 9.21 添加了底盘任务,还没验证。 ## 9.26 完成了遥控器信号接收解析。 ### 遇到问题 1. 时钟源选择错误,首先是陶瓷晶振选成了自己的 Bypass 晶振。然后晶振的频率选择不对 12M 选成了 8M,这两个原因都导致时钟树初始化时进入了错误中断(Error_Handle)中。 2. 接收到的内容不对,花了好一段时间才发现是波特率设置问题,应该是 10k 的波特率。(设成了 115200)。 ## 10.3 完成了底盘运动。CHASSIS_SLOW 是遥控器控制底盘运动模式,FOLLOW 是底盘跟随云台运动模式,旋转角得控制量是 YAW 电机得编码值与中心编码值的差。 ## 10.4 配置了 spi 和 i2c 通信,使用外部中断获取 imu 数据,建立惯导任务计算姿态。(还没验证) ## 10.5 添加了云台任务。(还没验证) ## 10.6 完成姿态解算任务 ### 遇到问题 天真的以为姿态解算就直接把 imu 得到的加速度,陀螺仪数据扔给姿态解算函数就完成了。忽略了加速度计融合陀螺仪数据时,陀螺仪积分的角度与时间间隔有关,应该是更新一次陀螺仪数据跟着进行一次姿态解算。 ## 10.7 完成云台相对控制,绝对控制(底盘跟随云台)还没调好,怀疑是陀螺仪飘的问题,导致yaw角一直增加。 ### 遇到问题 电机电压输出方向与预想方向不一致,导致云台卡死在一端,电机严重发热。修改输出符号即可。 ## 10.8 添加了射击任务(验证未成功) ### 遇到问题 1. 摩擦轮单独控制转速没有问题,两个一起控制左轮就忽快忽慢的转,怀疑是线互相干扰的问题。 2. 拨弹电机和yaw轴电机使用同一帧ID控制,一开始两个控制函数都只写了自己的数据,这样两个同时控制时就会冲突。使用静态变量解决。 3. 拨盘控制逻辑还有问题,待改善。 ## 10.12 完成摩擦轮启停,使用拨轮控制底盘旋转。 ### 遇到问题 之前摩擦轮两个同时接出现问题,发现是接收 can 信息时 switch case 语句没加 break 导致一个摩擦轮的反馈数据扰乱另一个。 ## 10.29 添加“学以致用”无线通信串口解析并完成收发。 ### 遇到问题 把信息发送函数放在默认的线程下,结果只发一段时间就不发,后面排查到是任务优先级比别的低,就无法执行到它。 ## 10.31 添加单发拨弹电机旋转,参数未调好 ## 11.2 完成拨弹电机控制,未加弹丸时效果较好。 ### 遇到问题 1. 拨弹电机两个控制环,先调速度环,当速度环较好拟合时,可以是推它之后会立刻停下。再调角度环。 2. 使用 ozone 调试看波形时发现用 ozone 只能加入到单片机执行中,不能复位,然后从头开始,会进入 HardFlaut 中断中(未解决)。 ## 11.7 修改拨弹,射击为步兵的 M2006 和 snail 电机。 ### 遇到问题 snail 电机的电调 pwm 输入有频率脉宽限制像舵机一样。