向梦想出发 - 全向轮移动底盘搭建

看了下上一篇博客的日期是8月6号,这都过了快两个月了,再不写就怕慢慢就不写了。其实也不是不写,只是没进度,一直卡在那。

自从语音交互告一段落之后,就开始搞移动底盘了,其实那个底盘是5、6月份买的,组装好之后就一直放在那没再管了。我做的是一个三轮全向轮移动底盘,电机型号是JGA25-371,用的L298N电机驱动,mega2560做3个电机的主控板,树莓派做上位机。树莓派上搭载有ros系统,通过ROS_ARDUINO_BRIDGE这个包和druino板子进行串口通信。上位机接收到移动指令后,通过运动学方程解算出每个轮子的转动速度,发送指令给下位机,下位机运行pid算法具体控制3个轮子转动,基本上我的底盘的移动控制就是这么实现的。在这里还要感放corvin大牛,我是跟着他的视频教程来做的,他的教程做的很详细非常好,在优酷搜索《ros小课堂》就可以看到,还可以关注《ros小课堂》公众号。

软件部分基本没什么太难的,必竟自己是做软件的,ros_arduino_bridge这个包看一遍基本就懂了,虽然是python语言写的,不过之前学过一点语法,所以代码看起来也不是太费劲,arduino单片机编程,之前也一直在学习,所以软件部分没什么太多问题,问题就出在硬件上。一个移动底盘,愣是让我给折腾了快两个月还没搞好,硬件上的坑也不比软件上的坑少。

因为电机编码器有A、B两相输出,编码器是需要中断服务去计数的,3个轮子就需要6个中断,uno板只有两个中断,所以只能买mega2560。一开始在淘宝买了个山寨板的(因为正板要200多,山寨板只要50),其实功能都一样,没什么太大差别。买回来刚开始用的时候,只是偶尔IDE连不上板子,勉强还能上传程序测试下,后来不知道什么原因,一直连不上板子了。然后就各种百度各种谷歌,还在群里请教各路神仙,连搞了几天,各种方法都用尽了还是连不上,最后只能是接受它变砖的事实。有了这个教训,就不敢再买山寨板了,花了250多大洋买了正板的mega2560,收到货后,连上电脑没几下电脑直接挂掉了,再怎么也开不了机了,一点反应都没有,简直和我当时的心情一模一样。没办法只能去修啊,庆幸的是,拿到电脑维修那里,竟然又能开机了,真是又惊又喜。回到家,虽说是能开机了,可一插上板子,板子上的芯片就发烫的历害,连试了几下都是一样,这肯定是有问题的,只能联系客服给换货,这快递在路上来来回回又得4、5天。等新板子拿到手,这回总算是没问题了,电脑不挂了,板子也不烫了,程序也能正常运行了。可是做pid参数调整时,怎么也调不好,最开始买小车底盘的时候也不懂,没有去看那些参数,现在才知道里面有那么多名堂,像减速比、转速、力矩、编码器类型、编码器精度等等这些。一测试才发现,我的三个电机的减速比都不一样,控制起来就比较麻烦了,其间还有一个编码器的A相突然没有脉冲输出了,不知是坏了还是怎么回事。更大的问题是,给编码器不同的电压值时,测出的电机的每圈脉冲数是不一样的,正常情况下应该一样才对,又是各种百度各种谷歌,还捐助了30块加入corvin建的微信群里。最后他提醒我,可能是由于中断数太多,mega2560的中断响应不过来引起的,我才恍然大悟。我的是光电编码器,商家说75减速比,360cpr,那一个轮子一圈单相就有27000个脉冲,电机转速是每秒2转,就是每秒每个轮子单相产生54000个脉冲,mega2560就是响应中断54000次,3个轮子就是162000次中断响应每秒,按mega2560的处理速度有可能就会处理不过来,造成脉冲丢失,那pid控制就会有问题了。刚开始以为光电的精度高才买的光电编码器,反而现在列麻烦了。问题找到了,现在有两种解决方法,一种是用最快速度的单片机,一种是用低精度的霍尔编码器。最终选择了第二种,然后又在买底盘的那家店买了同种型号的带霍尔编码器的电机,又是几天的等待,可收到电机后,有一个竟然是坏的,装上轮子手动转不动,上电后也没反应,另外两个是好的。当时,我就要炸了,快把我给气死了,买个电机有这么难吗。最后,全部给他们退货了,以后打死也不去他们家买东西了。上周又在别的家选购了3个同型的电机,昨天收到货,奇葩的是同样的事情再次发生了,一个轮子也是手动转不动,不过上电后是能转的,但是比别的轮子也慢好多。今天刚联系了客服,晚上回去退货给他们,我不想再浪费时间了,就又买了一个电机,发让他们发货。这整天啥事也不用干了,就等着收快递发快递了。我搞个底盘咱这么难呢,过了一难又一难,赶上西天取经了,我都已经无力吐槽了

写个博客真累,吭哧吭哧一个小时打了这么几个字,希望一切都能好起来……

向梦想出发 - 全向轮移动底盘搭建_第1张图片

向梦想出发 - 全向轮移动底盘搭建_第2张图片

你可能感兴趣的:(机器人,ros,3轮全向移动底盘)