当前位置:首页 期刊杂志

基于Arduino和Qt的低成本开源实验机器人平台设计

时间:2024-05-09

孙作雷, 张波, 曾连荪

(1.上海海事大学 信息工程学院,上海 201306; 2.中国科学院 上海高等研究院,上海 201210)

0 引 言

随着工业、军事及民用领域对自动化和人工智能技术需求的日益增长,与移动机器人相关的理论及应用已成为研究热点[1-3].无论导航算法还是智能辨识技术的应用研究都需利用移动机器人平台进行成果验证,这已成为移动机器人研究领域的惯例.目前,市场上已有一些广泛应用于科研的移动机器人平台,它们是理论算法验证的重要载体,并在越来越多的论著中被提及.例如,Segway公司的Segway RMP平台[4],ActivMedia公司的Pioneer[5]等.

但是,结合国内研究现状,这些移动机器人平台用于科研时具有如下弊端:(1)底层软硬件设计细节不开放,软件代码不开源,不利于后期的维护和升级,也不利于二次开发;(2)售价较高,且多为国外产品,小型科研组难以承担较为高昂的硬件设备预算.因此,设计并实现小型的低成本实验机器人平台是开展移动机器人相关研究的起点.本文阐述一个低成本实验机器人平台的搭建,其整体构建基于市场上现有的开源硬件Arduino板卡[6]和跨平台开源图形软件包Qt[7].该平台具有如下特点:(1)可扩展性强,可在通信规约中灵活添加功能;(2)所使用的软硬件均开源,可免费用于科研.

1 系统硬件设计

从功能独立和系统模块化的角度考虑,系统整体的设计分为上位机和下位机两部分.上位机和下位机直接通过通信规约相联系.为本平台所设计的通信规约在本文第2.1节中有详细介绍.系统的硬件设计框架见图1.

图1 开源实验机器人平台的硬件设计框架

下位机由机器人机械框架、车轮、驱动电机、电机编码器、电机驱动板、传感器接口板、嵌入式控制板和锂电池组成.其中,机械框架采用两层设计:底层舱内存放4路电机和4路16线2相编码器(见图2),根据编码器测量的机器人轮子的转数,可间接计算机器人的相对位移和转角;上层舱存放板卡和电池(见图3).下位机的主要作用是将上位机发来的动作指令翻译为驱动电机的控制信号,发送给电机驱动板,以控制相应车轮的转速从而实现机器人不同形式的运动;同时,利用Arduino微控制板结合传感器接口板读取编码器数据,为机器人相对运动估计提供基准,并将相对运动信息传回上位机,时刻响应上位机下发的其他指令.

图2 下位机底层舱 图3 下位机上层舱

下位机的Arduino Mega 2560控制板集成有串口转USB的芯片,这使上位机与下位机之间基于RS 232通信.此外,如图3所示,Arduino控制板与传感器扩展板插叠使用,可有效确保板卡之间连接的可靠性和下位机舱内的空间紧凑度.

上位机负责响应用户对机器人下发的各种动作指令,并回显机器人实时相对位置及健康状态信息.上位机使用通用的笔记本电脑搭建,对笔记本硬件没有特别要求.平台上搭载的传感器,如视觉传感器,直接与机载的笔记本电脑相连,进行数据读取和保存.

2 系统软件设计

平台的软件设计是本文所开发平台的设计重点,其主要思路是基于上位机和下位机间的通信规约,操作串口实现对通信包的捕获、解析和发送,并重构用于指令反馈的握手数据包.

2.1 通信规约设计

本文所设计的通信规约是连接机器人下位机和上位机的语法基础.为提高通信的可靠性和可维护性,在规约的设计中突出3点细节:(1)具有自校验能力.实际通信中的错误可能来自于误码或控制逻辑错误;即使上位机下发的指令没有误码,机器人也有可能无法完成指令.(2)可以满足多种控制需求.不但能实现对机器人的精确PID控制,而且还能实现简单的操控类指令.(3)具有灵活的可扩展性.在实际的科研过程中,随着算法的调整或不同实验场景的设定,可能需要对机器人功能进行调整、增加或删除.与同类设计大多以ASCII码传输指令不同,本文的上位机与下位机的通信包为二进制流.每个规约通信包至少包含8个字段.字段具体定义见表1.

表1 上位机与控制板通信规约字段概览

通信规约中的参数段主要用于描述移动机器人的相对运动状态,相对移动具体定义参见文献[8].概括地说,参数段可包含3类:笛卡尔坐标,单位为cm,x和y坐标分别用2 byte有符号数表示;极坐标,半径单位为cm,用2 byte有符号数表示,偏角单位为0.1°,用2 byte有符号数表示;相对运动,位移单位为cm,转角单位为0.1°.上述数据均以原始的16进制发送,且先发高字节,后发低字节.

2.2 下位机软件设计

下位机的软件设计使用Arduino语言,基于模块化思想,可分为指令解析与反馈模块、电机驱动模块和编码器读取与相对运动解算模块.下位机软件设计的核心思想是利用串口接收到两帧数据指令包之间的时间间隔作为协议解析的触发.通常可将该时间间隔取为串口传输单一字节所用时间的5~10倍.该时间与波特率相关.目前平台下位机使用的Arduino控制板串口波特率配置为115~200 bit/s,则接收1 byte持续的时间为(8+1+1)/115 200≈0.087 ms(除8 bit数据位之外,还包括1 bit起始位和1 bit停止位).这里数据帧之间的时间间隔取为1 byte传输时间的7倍,约0.6 ms.即,如果在0.6 ms的时间内没有数据进入,则判定一帧数据已传输完毕.

如果使用通常的嵌入式微处理器实现上述过程,应同时使用串口接收中断和定时器中断.但是,本文所使用的Arduino控制板屏蔽了AVR单片机的定时器中断,仅提供读取系统时钟的接口.因此,使用Arduino实现上述解析过程时,需首先开辟足够大的用户缓存区Buf用以存储串口接收到的数据,并在串口接收中断事件中读取系统时钟赋给全局时间标志.具体地,当有连续数据进入时,在串口接收中断事件中完成数据读取并给全局时间重新赋值.这里对“连续数据”的定义是基于相邻字节之间的时间间隔小于0.6 ms.在主程序中比较全局时间与当前系统时钟的时间差,如果大于0.6 ms,则认定完整的数据包已被接收,转向数据包解析.具体的下位机规约通信包解析流程见图4.

2.3 上位机软件设计

为确保本文所提平台的跨平台特性,上位机的软件编写整体依托跨平台的图形软件包Qt的开源版本[7],串口通信由Qt下的开源跨平台串口处理组件Qextserialport[9]实现.这可确保上位机软件在Windows和各种Linux发行版本和Mac OX下运行.这种软件设计有两点益处:(1)使用通用操作系统为基于本机器人平台的算法设计及验证提供便利,可以更方便、高效地继承领域内的开源软件资源;(2)可回避使用嵌入式CPU板卡实现导航算法的开发难度,缩短开发周期.

上位机的规约通信包解析过程与下位机有较大差别,因PC操作系统(无论Linux还是Windows),都不是实时操作系统(Real Time Operation System, RTOS),系统并发很多进程,这使事件跳转无法做到实时.例如Qt中的定时器QTimer,虽然定时精度达到毫秒级,但跳转到串口事件耗时远远大于毫秒.因此,靠时间间隔来自然分包的方式在PC编程中不可行.据此,上位机端的规约通信包解析需要逐字节进行.在缓冲区存入最小长度的串口接收数据,且确认初始字节为协议包头后触发协议包的解析.边接收数据边解析.同时,针对PC端内存充足的特点,开辟环状缓冲区以存储串口接收的数据.

图4 下位机规约通信包解析流程

目前的上位机软件仅运行一个用户线程.在同一个线程中,串口有数据进入后,会跳入串口事件.如果在处理串口事件的过程中有新数据进入,串口事件的处理并不会被打断,而是待串口事件处理完后再一次跳入,中途进入串口的数据已由开源的第三方串口组件Qextserialport缓存,可从串口缓冲区内读取.这一操作对用户来说是完全透明的.此外,在上位机软件开发中,基于Qt中QByteArray类的各种成员函数可简化对规约通信包中各字段的判断和提取流程.

3 平台性能

图5 实验机器人平台

本文所提出的平台整机见图5.使用12 V锂电池供电,电机转速可达到251 r/min,减速比为1∶131,整机输出功率为60 W,电机标称输入电压为12 V.本平台配置的电机驱动板可以为电机提供最大12 A的电流,并且能在几秒钟内获得15 A的峰值电流,并具有过量电流和热量保护.这使本平台具有较好的载重和机动性能.可载重6 kg,满足搭载一台通用笔记本电脑、视觉传感器及其支架的需求,负重状态下可攀越坡度小于35°的路面.平坦地面的最大行驶速度为0.8 m/s,能满足室外数据采集的需求.

4 结论与展望

提出一种低成本的实验机器人平台设计方案,阐述其软件和硬件的设计和实现细节.该平台基于开源软硬件测试环境开发,具有低成本、跨平台、功能扩展灵活的特点.本方案可方便机器人研究团队快速搭建实验机器人平台,验证理论算法.未来本平台将集成微软的景深视觉传感器Kinect.景深视觉观测数据的读取和缓存与本文已经完成的上位机和下位机软件相融合是下一阶段的主要工作.

参考文献:

[1] 杨蕊蕊, 朱大奇. 基于生物启发模型的自治水下机器人平面轨迹跟踪控制[J]. 上海海事大学学报, 2011, 32(3): 58-63.

[2] 张颖, 张有志, 方敏. 基于CAN总线多主节点结构的自治水下机器人通信系统[J]. 上海海事大学学报, 2010, 31(1): 39-42.

[3] 李欣, 朱大奇. 基于人工势场法的自治水下机器人路径规划[J]. 上海海事大学学报, 2010, 31(2): 35-39.

[4] BROOKS A, KAUPP T, MAKARENKO A. Randomised MPC-based motion-planning for mobile robot obstacle avoidance[C]// IEEE Int Conf Robotics and Automation, 2009: 3962-3967.

[5] CHEN Z, BIRCHFIELD S T. Qualitative vision-based path following[J]. IEEE Trans Robotics, 2009, 25(3): 749-754.

[6] Arduino. An open-source electronics prototyping platform[EB/OL]. [2012-12-18] http://www.arduino.cc/.

[7] Digia Plc. Qt open-source project[EB/OL]. [2013-01-18] http://qt-project.org/.

[8] SMITH R, SELF M, CHEESEMAN P. Estimating uncertain spatial relationships in robotics[J]. Autonomous Robot Vehicles, 1990: 167-193.

[9] Qextserialport. Open-source serial port library for Qt[EB/OL]. [2012-12-31] https://code.google.com/p/qextserialport/.

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!