项目介绍
粤港机器人学院是由计算机、自动化、信息工程,机械制造及其自动化,应用数学、工业设计六个专业联合创办的特色学院。在这个学期里,我们做出了四个机器人,分别是四足机器人、爬行机器人、四轮抛兽骨机器人和羽毛球机器人。
我参与的是羽毛球机器人项目,并担任了本项目的项目负责人。我们团队一共七个人,分设机械组,视觉组,硬件电路组和软件电控组。经过一个学期的工作与配合, 最后期末考核的时候我们的机器人达到了击球10中9的命中率,获得了100分的评分,很高兴最后我们团队做出来的机器人成功地完成各项指标。
以下是我们团队和机器人的合影展示:
机器人学院合影
羽毛球机器人3D立体效果图
调试与演示视频
定位
挥拍
运动
击球
遇到的问题
羽毛球拍角度定位问题:
问题描述:
由于用于挥拍的RM3508电机通过can通讯中断反馈回来的角度值(0-8191)只是减速之前的转子机械位置,但是这个电机具有约19:1的减速比,也就是说,电机要转19.2圈球拍才转一圈。问题是如何根据仅有的一个转子反馈角度值,来判断球拍实时的位置呢?
解决方案:
方案一:在球拍的转轴切面加一个绝对式编码器,可以做到反馈实时位置。
方案二:在can中断函数里对反馈回来的角度值进行判断处理,算出减速之后的角度。
(我们采用方案二,能用算法解决的事情就不用机械和硬件解决,哈哈)
具体做法:
① 开机前手动将球拍转至固定角度,以单片机上电瞬间球拍所在的转面的角度值为0。
② 设置电调的角度反馈的CAN中断函数触发周期为1ms(实际场景需要这么快实时性才好)。
③ 对比前后两次的角度反馈值,即可知道两次角度的增减量是多少了。(基于一个事实:一个can中断收发函数的周期内(1ms左右),以rm3508转子的最大瞬时转速8000转/分钟算,一个can收发周期电机转子角度值变化范围应是在-2/158192至2/158192里)
④ 采用增量式的算法,累加累加上上次的角度值和这次的角度值的变化,就可以做到实时记录球拍的位置了。
优缺点评估:
这个挥拍的定位方法算法比较麻烦,需要在can中断中不断执行较多的逻辑运算,比较浪费软件资源,另外在初始化的时候需要人手去辅助定位,比较麻烦。但是所用硬件资源少,成本低,并且能达到预期的定位效果。
总结
- 在这个项目中,我主要负责嵌入式软件电控部分工作,包括程序的系统框架、羽毛球机器人的定位、运动、还有通讯等各个模块的功能实现。主要涉及到的内容如下:
① 基于STM32F407旗舰开发板+FreeRTOS实时操作系统驱动控制各模块。
② 用ESP8266 wifi模块与上位机通讯,实现实时收发双目视觉算得的羽毛球落点时间坐标数据。
③ 基于六轴加速度传感器和正交编码器的全场定位模块,实现机器人精确定位。
④ 用CAN总线与电机电调通讯,采用双闭环PID控制算法使电机快速达到预想速度。
⑤ 构建三轮底盘的运动学数学模型,优化坐标系算法,使机器人精确运动至击球点。
- 整个项目下来我的收获还是很大的。除了知识能力的提升,我还学习到了如何与团队成员沟通合作、如何更加有效率地去执行安排的任务,我觉得这是一段非常宝贵的经验。