.vscode | ||
Core | ||
Drivers | ||
MDK-ARM | ||
Middlewares | ||
USB_DEVICE | ||
User | ||
.mxproject | ||
AUTO_CHASSIS.ioc | ||
readme.md |
25/R1底盘
4.11修改了navi循迹函数,增加了20,100双重码盘距离判断
4.12码盘低速正常高速串口丢失原因:码盘主板和编码器的接线外皮裸露互相短路
4.13测试了与nuc的通信,能发送能接收
4.15更改了舵轮运动学逆解算,现在能一边小陀螺一边走直线
4.16加上了sick接收
4.17更改了导航代码,能在目标点附近调整角度
4.24优化了代码,把所有的extern换成了消息队列,使代码更加规范,更改了代码栏,使得页面更加清晰
发现了一个很有意思的现象,我的calc_task和chassis_task里都从消息队列接收cmd的数据,但是两个如果同时接的话chassis会把calc里的接收给卡死掉。恶补了一下消息队列,发现发送的一个消息只能被一个接收者接收,
单次消费:默认情况下,当一个任务从消息队列获取(osMessageQueueGet
)一条消息后,这条消息会从队列中移除,其他任务无法再获取同一条消息。
先进先出(FIFO):消息按照发送顺序排队,最先发送的消息会被最先接收。
这也解释了为什么can_task中会发这么多条同样的can的消息队列,而不合并成一个can消息队列发送出去
4.28增加了sick的微分代码,但还出现sick数据跳变时微分数据更新不及时以及噪声问题
4.30改进了sick的微分代码,通过降低采样频率得以实现
5.1测试sick纠正底盘成功
5.5遥控器一键切换成功,更改了remote_control和cmd的代码使之更加规范
目前存在的问题:
1,配合相机纠正yaw
2,改进遥控器控制时6020会小幅度动的问题
3,锁死时5065能动,改进一下让5065锁死
4,加快跑点速度(如果要跑点的话)
5,加一个防翻虚拟云台(目前车的重心较低,这点可忽略)
经证实,后轮压力不平衡导致后轮6020锁死时转不到目标角度导致电流过大引起6020发烫,因为双环pid的out在动的瞬间已经达到最大值25000,但6020转不动,电控已经无能为力了。也不能通过检测6020电流是否过大来让6020停止转动,这种方法丧失了其功能性,目前发射要锁死时还是先抬一下后轮防止6020憋死,后期只能看重量分配能不能改善这一点。
目标效果:
1,最理想的情况,视觉相机测量距离以及偏角,距离发送给上层进行速度拟合,偏角发给底盘进行码盘纠正yaw,使得发射朝向篮筐,这样底盘只需要nuc和码盘,不需要sick,并且可以不拘泥于跑点
2,更理想的情况,相机不发送偏角而发送像素点,像素点作为vw进行对准,这样码盘和sick都不需要
3,跑点,码盘跑到目标点后sick微调位置并且纠正码盘数据(码盘的yaw还是准的,x,y随时间会有误差)(码盘的pos_x,pos_y加个offest,初始为0,矫正之后给个offest随时校准位置)(最好有一个按键能随时切换码盘校准和sick校准,目标位置为当前位置,角度为0这样)