如何才能让机器人在预先定义的路径上精确移动

描述

该项目旨在让机器人在预先定义的路径上精确移动,无需使用GPS或WiFi或蓝牙进行定位,甚至无需地图或建筑布局规划。并实时绘制其实际路径(按比例)。蓝牙可以代替有线,用于传输实时位置信息。

Arduino

背景

我们一直在为基于Arduino的机器人的室内导航寻找强大的解决方案。在为此应用选择正确的运动传感解决方案时,我们考虑了Oblu(一种开源IMU)。它的低成本和开源性质使其成为可能的候选者。这里棘手的部分是oblu的开源程序适用于脚踏式室内行人航位推算(PDR)或行人导航,简而言之。Oblu作为一款脚装式IMU在室内的PDR性能令人印象深刻。一个很大的优点是免费的Android应用程序(Xblu)的实时位置跟踪。但是,我们不确定如何利用其现有的基于人类步行模型的行人导航算法。

Oblu的内部计算基于人类行走。Oblu给出两个连续步骤之间的位移和航向变化。当脚与地面接触时,鞋底的速度为零,即鞋底处于静止状态。这样,Oblu可以检测“步骤”并纠正一些内部错误。这种频繁的错误纠正会带来出色的跟踪性能。所以我们的机器人也以同样的方式行走——移动、停止、移动、停止。

我们选择了Oblu,很快我们就可以组装我们的机器人和跟踪系统。

它是如何工作的:

机器人以预先编程的路径移动,并将其实际移动信息(通过蓝牙)传输到手机以进行实时跟踪。

Arduino预编程了路径,oblu用于感知机器人的运动。oblu定期向Arduino传输运动信息。在此基础上,Arduino控制轮子的运动,让机器人遵循预定义的路径。

Arduino

机器人的路径被编程为一组直线段。每个线段由其长度和相对于前一个线段的方向定义。机器人的运动保持谨慎,即它以直线运动,但在较小的部分(为简单起见,我们称之为“步幅”)。在每一步结束时,oblu将步长和偏离程度(方向变化)从直线传输到Arduino。如果Arduino发现与预定义的直线有偏差,则Arduino在收到此类信息的每一步都会纠正机器人的对齐方式。

根据程序,机器人总是应该直线移动。但是,由于表面不平整、机器人装配质量不平衡、直流电机的结构或电气不平衡或前自由运转轮的随机方向等非理想情况,它可能会偏离直线,并可能以一定的角度或倾斜的路径行走。

迈出一步→纠正你的前进方向→前进

如果机器人的行程超过该特定线段的编程长度,它也会向后移动。

下一个步长取决于该特定直线段要覆盖的剩余距离。当要行进的距离较大时,机器人会大步走,而在接近目的地(即每个直线段的末端)时,机器人会小步走。

IMUOblu同时将数据传输到Arduino和手机(通过蓝牙)。Xblu(Android应用程序)根据从机器人接收到的运动信息执行一些简单的计算来构建路径,用于在手机上进行实时跟踪。使用Xblu构建路径如下所示:

Arduino

总而言之,Obl可以感知运动并定期将运动信息传达给Arduino和手机。根据编程路径和运动信息(由oblu发送),Arduino控制车轮的运动。除启动/停止命令外,机器人的运动不受远程控制。

路径建模:

如果机器人只在直线段上行走,它可能会最容易控制。因此,必须首先将路径建模为一组直线段。下面的图片包含几个示例路径及其在位移和方向方面的表示。这就是在Arduino中对路径进行编程的方式。

Arduino

同样,任何作为一组直线段的路径都可以在Arduino中定义和编程。

通讯协议:

第1步:Xoblu向oblu发送START命令

第2步:oblu通过向Xblu发送适当的ACK来确认接收命令

第3步:oblu在每一步向Xoblu发送包含每个步幅的位移和方向信息的DATA包。(步骤=每当检测到零运动或检测到静止时)。

第4步:Xblu通过向oblu发送适当的ACK来确认接收到最后一个DATA数据包。(重复第3步和第4步的循环,直到Xblu发送STOP。收到STOP命令后,oblu执行第5步)

第5步:停止-(i)在oblu中停止处理(ii)在oblu中停止所有输出

连接示意图:

Arduino

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分