浑浑噩噩的起床,睡眼惺忪,调整心情,今天得抓紧了,揍起来,揍起来!
恰逢图书馆开门,贫道特地借了几本书,用于之后的学习和参考(小秀优越一把)。很晚才回到实验室,工作马上开展,程序写的比较快,马上试了试,但是,缺点特别多。坑爹!更让我无语的是,黄导后来干脆把机械臂的小臂给卸了……我的天!!就感觉自己整着这一小段胳膊有点小坑爹的赶脚……
虽然这么说,我还是很快发现了问题!这个问题绝对够恶心!试想,一个人的胳膊,不可能是转360度的,简单的说,我们在自然下垂到向前抬手再到极限大概是200度不到,从自然下垂到向后抬手大概是40度左右,但是中间是不能翻过去的。这就是个很大的问题了!我用了两个接近开关来限位,我的方法是把接近开关分别装在一个胳膊那个矩形的相邻的两边。但是,这个一开始的复位算法就纠结住我了!我必须保证这只胳膊是不能转动360度的!也就是说,如果一开始,胳膊是在前侧,我得向后转下来,如果胳膊在后侧,我得向前转下来。而且,经验告诉我,我在复位这段程序里头,绝对是不能引用光电编码器中用于计数的这个参数的!结果就是各种错!想不到,少了庆屌身上这么大的屌丝光环,问题各种多啊。真心难!不好求!整整一个下午,我都在想这个算法应该是如何写。难道,我要挂在这么一条阴沟里头?!
若不是豪锅提醒我,我可以参考绝对光电编码器,我是很难解决这个问题的,豪锅提议,让我把这两个光电编码器叠加起来,然后我再在胳膊四个边的挡板设置成4个情况!因为两个光电编码器叠加起来之后,同时检测的情况就是2的2次方,也就是4种情况!(11,10,01,00)。问题一下子变得简单了很多!我只要一开始设定往一个方向运动,然后在挡板跟接近开关靠近的时候检测一下就行了,然后,该继续的继续,该转向的转向。OH,YES!
程序的编写也不是特别快,但是,最后成功之时,真心觉得碉堡了!(我瞬间有种想检查裤裆的冲动!)这个算法绝对成功!学以致用!
然后关于控制电机运动的指定的位置的算法也是同样的问题,我不可能一直让它运动一圈,但是,这个还真心是好解决,在站起来,小走了几步路之后,也还是比较轻松的搞定的哈~
写完程序,真心是有吐的想法了……
晚上,机械组慢慢的把那只拿走的胳膊上的电机给换掉了(两个不合适的电机进行组装!!碉堡了!!),最后好不容易交到我手上之后,我们还一起测试一下,把不合理的地方进行了改进!(机械和电子一起合作还真心是方便和快捷啊!)
另外,我也没有时间等他们加工了,在没有调试好,我就先把剩下的两个关节的程序全部写好,顺便,设计好整只胳膊的程序,再进行编写和检查!(其中IO口的选择和中断的写法纠结了我一段时间。)
问题还有很多:接近开关无法正常使用了,机械结构没有设计的很好,整只胳膊的程序包括数据和角度的换算,坐标之间的数据的换算,我还要通过大量的实验来验证(实践是检验真理的唯一标准)……
(庆屌查找了一下之前出现的错误出现的原因,发现了STM32上的很多IO口是3.3V兼容5V的,但是我们进行了检查之后发现,我们设置的那一系列装置中,之后非兼容的IO口是能用的,而且比较坑爹的是,哪怕用一个兼容性的IO口也是不行的。诡异!当然了,脱离我们设置的那套设备,自然也是不行的。庆屌这么帮我搜索自然也能帮我更好的确定剩下的两个光电编码器的IO口的选择了!)
(豪哥后来也跟我说,他之前和那个老板小聊天了一把,问这个光电编码器是电压输出的,不是那种方便的推挽输出,也不是说接个上拉电阻就能搞定的集电极输出,后来查一下资料,也不是很好确定电压输出到底是啥玩意儿,但是听老板说,不用怎么接什么的,我勒个去,我顿时就觉得这是家黑店啊!但起码,我对光电编码器已经是更加的熟悉了!)
(另外,我还要感谢宽锅!为了让我能够顺利的回家过年,他亲自出马,花了两天的时间帮我写好了关于路径规划的程序,这个算法不好写,虽然有很多关于机器人路径规划的书,而且很详细的介绍了坐标变化的方法,但是没有那本书是提供实例的!我们需要的仅仅是实例而已!好吧,一切只能靠自己,幸好是宽锅帮我编写这个程序,让我能够减少更多的时间去编写。非常感谢!我只能请他吃一包泡面了……)
(有人坐塌了图书馆的椅子?!逆天?!)
1.23
庆屌因为24号就要回家了,所以,今天他也不能帮我太多了,早上,我跟他一起制作了挡片环(好吧,我承认,看到这个挡片环就像看到他的屌丝光环一样。)一开始制作的挡板,怎么样也不符合要求,因为我们没有沟通好。后来我们又重做了一块,但是,我们很快就发现了缺点。当两个光电编码器叠加在一起的时候,虽然挡片的大小一样,挡片也在同一个半径上,但是两个挡片距离圆心的距离不一样,所以,接近开关检测到挡片的有效时间也是不一样的。总体的来说,下边的接近开关检测到挡片的时间更长,上边的要短一些,这样的话在就算两个挡片都能把接近开关挡住,但是,在挡住之前就会出现(01)这样的情况。虽然很烦人,但是仔细一想,我可以发现,我原来的程序当中就已经可以排除这样的情况!真心偶买噶啊!NICE!接着来,我把下边的挡片换成更大了点……
硬件部分做完之后就是痛苦的调试。刚开始调试我就发现了问题,我发现我写的复位的程序很吃力!无论我怎么改,它总是先朝一个方向运动90度,然后,自动的往回运动!这样很不科学!我试了很多方法,但是,都不能把它解决,但是,我很快就联想到检测按键的时候消抖程序,以及重复检测。我很快就修改了程序,我让其重复检测,问题很快迎刃而解,so easy!但是,这仅仅只是开始!!我又发现,光电编码器的计数很不稳定!我又在检查程序无误的基础上,在前面的关键的地方加上了10ms的延时。确实稳定了很多。
其实,这些问题,如果换在以前的话,我肯定是无法解决的,但是,现在,我在不断的进步之后,我能够无谓一些困难,认真的分析,结合自己以前学过的知识,好好的思考,发现有些问题是完全可以由自己解决的。这就是我这段时间来最大的进步。之后的工作很单调,我一直在输数,校验,再输数,在校验。虽然最后有点问题吧,但是还是能够实现定位的。还行,还不错。
晚上,一起努力安装了小臂,又开始第三关节的检测(我发现我软件,硬件,机械全包啊……)。我貌似发现了一个比较严重的问题,自己做的杜邦头帽不是很妥当,经常断。我干脆就把合适的杜邦线,一份为二,把它再接上去。这样要好很多(建议,以后做杜邦线,用的线一定要细!)。最后调的差不多了,但是,在校验的时候我又发现,电机内的齿是有角度的,所以小臂是可以小翻几度的。这样会造成什么样后果呢?结果就是,当你要停在某个位置的时候,如果这个时候小臂是下垂的,可能还能下降一定的距离,这样的话,在自动下降的过程中,光电编码器的读数是发生改变的,从而电机会不断的抖动!简单的说就是,整个小臂在进行抽搐……好吧,明天接着整吧,真心是一波未平一波又起啊!
(非常非常感谢庆屌,在制作挡板的过程当中,他不小心用笔刀划伤了自己的手,真的很抱歉,虽然伤口不是特别大,但是,我真的深感抱歉,本来他就要走了,还硬要拉他过来一起帮忙干这个事情。好吧,下次一定多给他几包泡面!)
(庆屌划伤了手,抱歉了,庆屌)
|