基于Arduino的机器人控制系统
基于Arduino Mega 2560并结合全球定位系统与障碍物检测系统的移动机器人控制系统
摘要
本研究展示了为机器人车辆实现的遥控系统的软件和硬件解决方案。本文部分解决了机器人车辆运动算法的快速原型制作和调试问题。文中还给出了该系统所使用的主要组件的组成及简要特性。本研究还描述了开发该车辆软件所使用的编程语言等方法。本文还给出了该车辆进一步现代化的主要成果和基本目标。主要结论也在本文中进行了阐述。
1. 引言
根据俄罗斯道路的统计数据,每年有超过2.5万人死于交通事故[1]。造成80%致死事故的原因是人为因素,而技术因素仅占所有致死事故的2%。自动化车辆完全有能力消除人为因素,从而每年挽救超过2万名公民的生命。
主要目标:
- 开发最简单的机器人车辆遥控系统,
- 开发最简单的机器人车辆导航系统。
2. 相关性
机器人车辆能够显著简化生产中的工作流程。带有自动驾驶仪的电动车无需驾驶员,这可以大幅节约成本。机器人小车能够在没有驾驶员的情况下将货物从A点运送到B点。一名调度员即可控制多辆小车的运行[2]。此外,在货物运输过程中完全避免了各种伤害的发生。在有害生产环境中,机器人小车更是不可或缺[1, 3,4]。通常,此类系统需要针对每项任务进行单独调整,这是一个漫长且耗时的过程[5, 6]。谷歌[7],宝马、苹果、双龙、卡马斯等大型企业正积极投身于车辆运动自动化相关的研发工作[8]。另一推动此类研发的原因是经济因素。事实上,从事货物运输的公司无需再支付卡车司机的薪酬[9]。
迄今为止,尚未展示出一辆能够无需驾驶员自由行驶的汽车。本文所呈现的研究极大地简化了自动化车辆运动算法的调试过程,这可以显著加快机器人汽车的开发进程。
机器人车辆的遥控系统由两个独立的模块组成:遥控和机器人车辆(RV)。
3. 硬件解决方案
控制面板是一个便携式Raspberry Pi计算机(图1),通过USB端口连接了蓝牙USB适配器。该Raspberry Pi 计算机配备了Raspbian操作系统[10]。
机器人车辆包括以下设备:支撑平台、两个牵引减速电机、24V电池、24V / 220V半导体逆变器、220V / 5V电源、微处理器模块(图2)、两个微处理器模块的过流保护模块、继电器模块、蓝牙模块 [11],连接导线、编码器 [12]。
使用编码器可以实现机器人高精度的移动。编码器通过专用离合器连接到车轮上(图3)。
继电器模块用于控制电磁制动器的电路[2]。
使用本文中的用于快速原型设计的计算平台Arduino2560和两个驱动器(图4),可以编译自动推车运行的各种算法,编写这些程序算法,并通过USB直接从个人电脑[13]将这些程序写入,而无需拆卸主板。
4. 软件解决方案
为遥控车的遥控系统开发了两个程序。控制面板的第一个程序使用Processing编写,这是一种基于Java [14]的开源编程语言。
第二段用于遥控车的程序是在基于Processing及其他开源软件产品[15]的免费软件环境Arduino软件中编写的。该环境用于编译并编程遥控车的微处理器控制板。图5展示了控制系统的运行算法。
4.1. GPS系统基本原理
该系统运行的原理在于利用围绕地球轨道持续运行的卫星,这些卫星发射锚定信号。此类卫星不少于24颗。GPS接收器(图6)的位置是通过测量来自多颗卫星的无线电信号传播延迟,并基于这些测量值计算地理坐标和海拔高度来确定的。每颗卫星的信号包含伪随机数码( PRN码)、星历和历书。PRN码用于识别信号来源的卫星[4]。
星历 ‐ 近地空间中该卫星的坐标。它们由控制中心传输给卫星。
历书包含有关卫星当前应处位置及其状态(工作或非工作)的数据。
这组数据由卫星以高频率传输。为了确定其位置,GPS接收器电子设备会计算信号从卫星发出的时间与在地球接收时间之间的差值。根据这一时间差,可计算出到特定卫星的距离。确定GPS接收器坐标的原理是计算其到多个已知位置卫星的距离(这些数据包含在从卫星接收到的星历表中)。显然,仅靠一颗卫星的信号不足以确定位置——只能确定位于一个计算半径的球面表面上的某个位置。对于两颗卫星,位置则被定义为两个球面的交线——通常是一个圆。
理论上,三颗卫星已足够——计算将得出两个可能的点,其中一个点位于远高于海平面的位置,因此会被排除。但实际上,距离的计算存在一定误差,且当接收器指向各卫星方向之间的夹角越小,该误差的影响就越大。通过计算其他卫星的信号来校正坐标确定中的误差。接收器利用的卫星越多,其位置确定就越精确。图7显示了智能机器人车辆的位置(绿点)。右上角显示了车辆的坐标。窗口左侧为地图比例尺、鼠标光标位置以及地图提供商信息。该程序使用 Java编写 [16]。
4.2. 障碍物检测系统
障碍物检测系统的基础在系统超声波传感器(图8)上。在基本工作模式下,来自传感器的信号将连续不断地输入微控制器,微控制器将其转换为特定的数值。在无障碍物的平稳运动过程中,信号变化很小,这是因为它在前方水平旋转0到180度,并探测其前方1.5米范围内的所有物体。这意味着,如果我们在相对平坦的表面上移动,测距仪的信号将会检测到一个不移动的“静态物体”。
如果出现诸如“break”之类的障碍物,传感器的信号值将发生显著变化,表明距离急剧增加,此时应采取停止或绕行障碍物的措施。
超声波传感器将识别常见的接近表面和物体,以避免与我们的设备发生碰撞。这是通过常规设置实现的:通过实验确定不会发生碰撞的最小允许距离(约1.5米),在记录传感器数据时,确定对应于此距离的特定数值,当微控制器将来检测到该数值时,将立即停止小车。
传感器配有4根引线,用于连接测量电路。其中两根用于连接电源。Trig输入由触发脉冲触发,并从回声输出端输出信号,该信号的持续时间与测得的距离成正比[17]。
用于与图9所示传感器配合工作的算法。
要开始测量,需在Trig输入端施加一个10微秒的触发脉冲。
- 传感器检测到触发脉冲后,会以40kHz频率发射8个脉冲串。
- 通过检测反射信号,HC-SR04会在回声输出端设置高电平。该状态的持续时间(以微秒为单位)与测得的距离(以米为单位)成正比。
- 建议每50毫秒生成一次触发脉冲。
控制微控制器所需做的只是生成一个触发脉冲并测量回波的值。实际上,使用一个以1兆赫(1微秒)频率递增的定时器就足够了。如果检测到回波,应启动定时器并通过下降沿读取计数器的值。鉴于这些数值的要求,需要使用一个16位定时器。
为了获得以可接受单位表示的精确距离,必须进行额外的计算。必须考虑到测量值包含信号的正向和反向传播路径。因此,为了计算距离,时间应除以2。还应考虑空气中超声波的速度。结果,通用公式如下:
$$
L = \frac{t \cdot V}{2}
$$
其中L为以米为单位的距离;t为回波脉冲时间(μs);V = 340 m/s为空气中超声波的速度。为了简化计算,使用以下形式的公式更为方便:
$$
l = \frac{tuS}{58}
$$
其中l为以厘米为单位的距离,tuS为微秒。
在研究过程中,编写了一个程序,用于实时跟踪障碍物的距离。通过伺服驱动器,传感器对空间进行扫描。当出现障碍物时,程序会向机器人发出信号。图10显示了无障碍物时的程序界面,图11显示了前方有障碍物时的界面。
5. 结论
As a result of the completed work, 开发了一个用于机器人车辆的遥控、GPS系统和障碍物检测系统的简单系统。使用Arduino Mega 2560平台实现了机器人车辆运动算法的快速原型制作和调试。
已经开发出机器人车辆最简单的运动模式。基于这些模式,将构建决策算法,以进一步开发自动化系统。未来计划为机器人配备激光扫描雷达,以更精确地构建空间地图。
更多推荐
所有评论(0)