layout: post
title: " 物流车软件"
excerpt:
date: 2023-3-28
categories: [嵌入式]
tags: [嵌入式,控制算法,视觉]
author: Nirvana
index_img:
banner_img:
说明:本文档主要描述了本次物流车的软件代码说明,文件夹中主要有主控32程序,k210巡线程序和k210识别二维码及颜色程序。(如果看不懂欢迎学妹联系 高山蔚 qq:549379020)
主要任务在qfsm_user中,大概处理流程为MID是中间状态,基本每个状态都会回到该状态进行统一调度。调度通过在map.c中的枚举类型作为下一个任务。使用时请修改枚举类型和MID调度
个人感觉命名规则还是通俗易懂的,知不道了结合map中的过程进行推导,需要注意的一点,maps中进行任务调度是有优先级的。优先级为turn>set_head>set_left。turn为执行特殊任务的指令,里面包含左右旋转,抓取物料,颜色识别等任务。set_head为直行,set_left为向左走(可正可负)。
机械臂所有指令在my_servo中,Servo_Pwm函数写的比较明白,各个自由度的位置也标记清晰。
调试时首先将#define debug_mode 0
置1,然后按照UART5的相关协议进行调试使用无线逐飞的透传调试。(其实一般我调试时是使用另外的文件,所以调试模式写的不是很好,有些bug。交给后人优化了)
控制算法主要分为脉冲解算,运动姿态解算,以及视觉闭环三个主要方面。
主要参考了网上的频率控制,具体计算在这里参考资料。但控制时仍然需要有注意的点。首先一开始频率给太高步进电机会转不起来,步进电机不像直流电机,他开始转时的力矩较大,所需要的频率必须小。因此需要梯形加速或s型加速。本次只写了梯型加速。(写在了运动解算函数里Speed_Calculation()
)但进行时一定会带来系统整体时延,因此建议后续优化。
本次使用了二维对光电管计算运动时xy的偏移值,到达固定位置使用摄像头对固定位置进行闭环。对光电管使用串口通信,上面自带32,可以直接给你发回来偏差值,但在没有黑线和全部都是高电平时会误传,因此做了部分优化。但仍需注意由于上桥时,可能会悬空,所有对于固定位置仍需优化。
陀螺仪使用了维特智能,直接上网看他的协议即可。注意一点,当他比较漂时需要连接上位机进行校准,并且不要再让她恢复出厂设置!!
视觉测距使用了霍夫巡线+线性回归(好不容易想出来的)。主要思路先找线,再对该roi区域进行线性回归(解决了霍夫巡线的漂)再进行滑动滤波,测试下来很稳定。只不过对于某些干扰点,线性回归还是有些无法处理,需要你对这些位置重新打些roi补丁。最后返回了垂直,水平线的距离以及垂直角度。 PS:有些摄像头是个翻的,要不物理调整,要不翻转,要不吧你的PID的征服反馈设置对了。(K210巡线代码有个小逻辑bug,前后把垂直和水平的名称换了一下,不影响使用所有懒得改了) PSS:对于视觉,个人感觉以后很必要,国赛啥的肯定不会让你这么舒服的用对光电管循迹,也不是很难就调库就完了。 并且,对于陀螺仪,再途中可以用视觉进行校准清零,很方便且稳定。.
特别鸣谢:王铁成老师,智能车实验室,王铁成老师的红牛,以及隔壁组。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。