□文/全权、王帅
机器人技术正在走向全民化教育。机器人的研究、发明和应用技术进入教育范围是对其领域的拓展。机器人技术所涉及到的知识和技术的广泛性和综合性,都使得机器人与教育的发展具有了更大的价值。随着智能机器人技术的迅猛发展和广泛普及应用,将机器人的基础知识和技能纳入中、小学的信息技术或综合实践等课程显得尤其重要。
从目前的比赛和考试看,机器分类方法很多。简单地按所处空间,大体可以分为:空中机器人、攀爬机器人、地面机器人、地下(管道)机器人、水面机器人,以及水下机器人等。它们有不同的特点,比如,空中机器人比赛通常考察控制稳定性和感知能力,相比其他种类机器人,控制调试最有挑战性,也最为吸引人;攀爬机器人、地面机器人和地下(管道)机器人比赛主要考察机械结构的设计;水面机器人和水下机器人比赛通常考察机械结构设计和控制,也考察感知能力。虽然侧重不同,但有大量相关知识是相通的。根据机器人等级考试与比赛的要求以及一些实用的技能,我们总结收集以下有关机器人相关知识,包括机器人机械结构、机器人动力驱动装置、机器人传感器、机器人通讯单元、机器人计算硬件平台、机器人计算软件平台和机器人控制决策算法等七部分。它们的关系见图1。
(1)轴承。轴承一般分为滑动轴承和滚动轴承。滑动轴承是在滑动摩擦下工作的轴承。滚动轴承是将运转的轴与轴座之间的滑动摩擦变为滚动摩擦,从而减少摩擦损失的一种精密的机械元件。
(2)联轴器和离合器。联轴器和离合器是机械传动中常用的部件,主要用来连接轴与轴(或连接轴与其他回转零件),以传递运动与转矩,有时也可用作安全装置。不同之处在于,联轴器用来把两轴连接起来,机器运转时两轴不能分离,而离合器在机器运转过程中随时结合或分离。因此,离合器可用来操纵机器传动系统的断续,以便进行变速和换向。
(3)螺纹连接。螺纹连接是一种广泛使用的可拆卸的固定连接,具有结构简单、连接可靠、装拆方便等优点。
图1:机器人系统整体框图
(4)键连接。键连接是通过键实现轴和轴上零件间的周向固定以传递运动和转矩。
(1)AutoCAD。AutoCAD(Autodesk Computer Aided Design)可用于二维绘图、详细绘制、设计文档和基本三维设计,现已经成为国际上广为流行的绘图工具。
(2)Pro/E。Pro/E是个全方位的3D产品开发软件,它集成了零件设计、曲面设计、工程图制作、产品装配、模具开发、NC加工、管路设计、电路设计、钣金设计、铸造件设计、造型设计、逆向工程、同步工程、自动测量、应力分析、机构仿真、有限元分析和产品数据管理于一体。
(3)SolidWorks。SolidWorks主要有草图绘制、零件设计、装配模块、工程图模块、钣金设计、模具设计、运动仿真等功能。
(1)3D打印机。3D打印机又称三维打印机(3DP),是一种累积制造、快速成形技术。它以数字模型文件为基础,运用特殊蜡材、粉末状金属或塑料等可粘合材料,通过打印一层层的粘合材料来制造三维的物体。
(2)激光雕刻机。激光雕刻机是利用激光对需要雕刻的材料进行雕刻的一种先进设备。激光雕刻机的使用范围广泛,雕刻精度高,雕刻速度快捷。相对于传统的手工雕刻方式,激光雕刻也可以将雕刻效果做到很细腻。
(3)数控机床。数控机床是指可以通过事先编辑的精确指令进行自动加工的机床。通过输入数控系统的程序指令,计算机编译计算后,通过位移控制系统,将信息传至驱动器以驱动马达来加工所设计的零件。
驱动器是给机器人提供动力源,主要包括电磁式、气动式和液压式。大多数竞赛中使用的是电磁式和气动式,而液压式往往用于大型工业机器人。因此,下面主要简要介绍下电磁式和气动式驱动器,以及传动件和基本的控制算法等。
(1)电磁式。电磁式电动机能将电能转换成机械能,竞赛中一般用的是直流电动机。一般通过编程驱动匹配的电子电路,最终驱动直流电动机。1)直流电动机。根据是否配置有电刷-换向器可以将直流电动机分为两类,包括有刷直流电动机和无刷直流电动机。2)步进电机。步进电机是将电脉冲信号转变为角位移或线位移的开环控制电机。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响。3)伺服电动机。伺服电机是高品质的直流电机和步进电机,它在直流电机和步进电机的基础上配置了控制电子设备,可以采用闭环实现准确的位置控制,只要提供相应的电信号就可使其旋转相应的角度。
(2)气动式。气压传动以压缩空气来实现能量的传递,传递动力的系统将压缩气体经由管道和控制阀输送给气动执行元件,把压缩气体的压力能转换为机械能而做功。比赛中常见的气压传动装置所用的高压气瓶一般用塑料瓶自制,使用气体压缩机从充气口充气后,由稳压阀维持气压的稳定,并由单片机控制方向的电磁阀改变气流进出气动装置的方向,达到控制气动装置运动方向的目的。
(1)连杆传动。连杆传动机构是用铰链、滑道方式,将构件相互联接成的机构,用以实现运动变换和动力传递。
(2)齿轮传动。齿轮传动是指由齿轮副传递运动和动力的装置,它的传动比较准确,效率高,结构紧凑,工作可靠,寿命长。
(3)蜗杆传动。蜗杆传动是在空间交错的两轴间传递运动和动力的一种传动机构,两轴线交错的夹角可为任意值,常用的为90°。蜗杆传动具有传动比大、结构紧凑、传动平稳、噪声低的特点,通常用作减速装置。
(4)带传动。带传动是利用带轮和传动带间的摩擦或啮合作用,将运动和动力传递出去的装置。带传动具有结构简单、传动平稳、价格低廉和缓冲吸振等特点。
(5)链传动。链传动通过链轮轮齿与链条链节的啮合来传递运动和动力。链传动具有平均传动比准确、传动效率高的特点,且能在高温和潮湿的环境中工作。
(6)凸轮传动。凸轮传动由凸轮机构实现,凸轮机构一般是由具有曲线轮廓或凹槽的凸轮,从动件和机架三个构件组成。只需设计适当的凸轮轮廓,便可从动件得到任意的预期运动。
感知单元提供环境和机器人系统的状态信息,作为控制、决策以及与环境其他单元进行交互的基础。
(1)超声波。超声波测距原理是超声波发射器向某一方向发射超声波,在发射时刻的同时开始计时,超声波在空气中传播,途中碰到障碍物就立即返回来,超声波接收器收到反射波就立即停止计时。通过超声波在空气中的传播速度,根据计时器记录的时间,就可以计算出发射点距障碍物的距离。
(2)激光测距仪。激光测距仪是利用调制激光的某个参数实现对目标的距离测量的仪器,分为相位法测距仪和脉冲法测距仪。进一步,二维激光扫描仪是通过旋转的光学部件发射形成二维的扫描面,以实现区域扫描及轮廓测量功能。二维激光扫描测距系统可以实现360°范围内的激光测距扫描,产生所在空间的平面点云地图信息用于地图测绘、机器人定位导航、物体/环境建模等应用。二维激光扫描仪在目前的扫地机器人上广泛使用。
(3)红外测距传感器。红外传感器的测距原理与激光相似,只是红外传感器是利用红外线。
(4)毫米波雷达传感器。与红外、激光、电视等光学导引头相比,毫米波导引头穿透雾、烟、灰尘的能力强,具有全天候(大雨天除外)全天时的特点。一般用于室外。
(5)气压计。这主要是测量高度。大气压随高度的增加而减小,气压计正是通过测量大气压来估计高度。压电式气压计将这种变化变成高度。
姿态角是机器人坐标系相对于固定坐标系的角度,包括俯仰角、滚转角和偏航角。
(1)加速度计。加速度计能够测量物体的比力,即去掉重力后的整体加速度。比如,当加速度计保持静止时,加速度计测量值为重力加速度,而整体加速度为零;在自由落体运动中,整体加速度为重力加速度,但是加速度测量值为零。通过这个原理,可以测量机器人的俯仰角和滚转角等。
(2)倾角仪。它是加速度计的高级形式,根据工作原理的不同可分为“液体摆”式、“固体摆”式和“气体摆”式三种,可以测量机器人的俯仰角和滚转角等。
(3)磁力计。磁力计可用于测试磁场强度和方向,确定设备的方位。磁力计一般利用各向异性磁致电阻或者霍尔效应来检测空间中的磁场强度。此外,基于洛伦兹力的磁力计也在发展。基于洛伦兹力原理,切割不同方向的磁场,产生不同大小的力,从而改变电容大小,被电子电路测量得到。该传感器主要用来测量机器人的偏航角。
(4)陀螺仪。微机电系统(MEMS)陀螺仪利用科里奥利力——旋转物体在有径向运动时所受到的切向力。因为科里奥利力正比于角速度,所以由电容的变化可以计算出角速度。陀螺仪不能用于测量角度,但可以与以上传感器融合得到更加准确的姿态角。
一个圆盘光栅固联到旋转轴上,它在不同旋转过程中会产生明暗变化。光电旋转编码器将这种变化记录下来,得到相应的旋转角和角速度。这一般可用于测量轮式机器人的轮子的速度和前进的距离。
(1)红外传感器。物体的红外辐射能量的大小及其按波长的分布与它的表面温度有着十分密切的关系。光学系统汇集其视场内的目标红外辐射能量,并转变为相应的电信号。这比较适合非接触式的测量。
(2)热敏电阻。热敏电阻器的典型特点是对温度敏感,不同的温度下表现出不同的电阻值,这比较适合接触式测量。
(1)压电式传感器。当晶体受到某固定方向外力的作用时,内部就产生电极化现象,同时在某两个表面上产生符号相反的电荷;当外力撤去后,晶体又恢复到不带电的状态。
(2)应变片。将应变片贴在被测定物上,使其随着被测定物的应变一起伸缩,相应电阻会随之变化。
光敏电阻不受光照时的电阻成为暗电阻,此时流过的电流成为暗电流。在受到光照时的电阻成为亮电阻,此时电流称为亮电流。暗电阻越大越好,亮电阻越小越好。实际应用时,暗电阻大约在兆欧级,亮电阻大约在几千欧以下。光敏传感器是利用光敏元件将光信号转换为电信号的传感器。它的敏感波长在可见光波长附近,包括红外线波长和紫外线波长。利用光敏传感器,可以进一步设计出巡线传感器和避障传感器。基本原理是通过主动打光和光敏传感器接收反光,判别周围情况。
(1)GPS。全球定位系统GPS是一种全球导航卫星系统,利用卫星来定位授时。GPS接收机能接收多组卫星数据,并通过求解方程得到其准确位置。GPS的绝对精度一般是米级。差分GPS和RTK GPS的精度可以达厘米级。这些传感器一般用于室外,但有时受到遮挡稳定性会不太好。
(2)室内光学定位系统。光学定位系统由多个相机、红外LED灯、路由器、电脑、和反射标记点组成。工作原理:多个相机组成的捕捉空间,相机上的近红外LED照射目标物上的反射标记点,相机对标记点进行红外成像,提取标记点的二维信息,通过多个相机对同一标记点反馈的空间数据,计算出反射标记点的三维位置信息,最终能将机器人的位置和姿态计算出来。静态定位精度可以达毫米级,姿态计算精度也很高,满足大部分的室内需求。
(3)UWB定位。UWB,即超宽带技术,定位原理和卫星导航定位原理很相似。静态定位精度可以达分米级,比较适合室内外精度不高的局部定位。
人类获取的信息70%-80%来自视觉,因此视觉传感器作用非常大,它的潜力需要不断开发。
(1)2D相机
目前越来越多的机器人采用2D相机作为传感器,它通过成像透镜将三维场景投影到摄像机二维像平面上。针对相对定位,可以利用类似于二维码的Tag实现相对定位,如:AprilTag是一个由密歇根州立大学的April实验室开发的、免费开源的视觉定位系统,被广泛应用于机器人、无人机定位导引等。除此之外,可以利用如OpenCV的开发包等或自行开发用于识别或定位。
(2)3D相机
目前,3D相机可以恢复局部区域的3D景象。成像原理一般分为ToF(Time of Flight)测量方法和结构光扫描法两类。ToF成像原理是让装置发出脉冲光,并在发射处接受目标物的发射光,通过计算往返的时间差测量与目标物的距离。结构光扫描法的原理是首先将结构光投射到物体表面,再用摄像机接受该物体表面反射的结构光图案,通过图案在图像上的位置和形变程度来计算物体表面的空间信息。目前常见的传感器包括:微软的Kinect和英特尔的Realsense。
以上介绍的传感器总结如表1所示。
除以上介绍的传感器之外,还有不少类型传感器就不一一介绍了,比如声音传感器等。不同传感器在精度、测量范围、适用范围、重量、价格都有差异,因此需要进一步根据任务进行选择。另外,可以通过组合传感器,开发算法搭建新的传感器。比如:多用几个超声波测距模块可以设计新的避障传感器。
表1:机器人传感器类型
(1)串口。串口按位(bit)发送和接收字节。通信使用3根线完成,分别是地线、发送、接收。由于串口通信是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。
(2)I2C。I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。
(3)SPI。SPI 是由摩托罗拉(Motorola)公司开发的全双工同步串行总线,是微处理控制单元(MCU)和外围设备之间进行通信的同步串行端口。SPI 总线可直接与各个厂家生产的多种标准外围器件直接连接,一般使用4 条线:串行时钟线SCK、主机输入/从机输出数据线MISO、主机输出/从机输人数据线MOSI 和低电平有效的从机选择线SS。
(4)CAN。CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。
(5)I2S。I2S(Inter—IC Sound)总线 , 又称集成电路内置音频总线,是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专门用于音频设备之间的数据传输,广泛应用于各种多媒体系统。
(6)网络通信。网络通信模型常使用TCP/IP协议。TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。
(1)蓝牙。蓝牙是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换(使用2.4—2.485GHz的ISM波段的UHF无线电波)。
(2)WiFi。WiFi是一种允许电子设备连接到一个无线局域网(WLAN)的技术,通常使用2.4G UHF或5G SHF ISM射频频段。连接到无线局域网通常是有密码保护的;但也可是开放的,这样就允许任何在WLAN范围内的设备可以连接上。
(3)ZigBee。ZigBee是 基 于IEEE802.15.4标准的低功耗局域网协议。根据国际标准规定,ZigBee技术是一种短距离、低功耗的无线通信技术。其特点是近距离、低复杂度、自组织、低功耗、低数据速率,主要适合用于自动控制和远程控制领域,可以嵌入各种设备。
(4)红外。红外通讯就是通过红外线传输数据。为了使各种红外设备能够互联互通,1993年,由二十多个大厂商发起成立了红外数据协会(IrDA),统一了红外通讯的标准,这就是目前被广泛使用的IrDA红外数据通讯协议及规范。
(5)3G。第三代移动通信技术,简称3G,是指支持高速数据传输的蜂窝网络移动电话技术。3G服务能够同时发送声音(通话)及信息(电子邮件、即时通信等)。3G的代表特征是提供高速数据业务,速率一般在几百kbps以上。第四(五)代移动通信技术(4G,5G),是3G之后的延伸,意味着通信终端能做更多的事情,例如除语音通信之外的多媒体通信、远端控制等。
(1)51单片机。51单片机是对所有兼容Intel 8031指令系统的单片机的统称,是应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列。具有如下特点:8位CPU;拥有4kbytes程序存储器(ROM) ,外部程序存储器寻址空间为64Kb;128bytes的数据存储器(RAM) ,外部数据存储器寻址空间为64kB;2个可编程定时/计数器;5个中断源;2个优先级。
(2)Arduino单片机。Arduino常见的型号有UNO、MEGA等。以ATMega2560为例,它是配置最高的8位Arduino控制器,有15个PWM引脚,16MHz时钟频率,256Kb Flash。
(3)STM32单片机。STM32系列单片机基于ARM Cortex-M内核。以比赛中经常使用的STM32F103系列为例,它有如下特点:32位CPU;最高72MHz工作频率;从16K到512K字节的闪存程序存储器;2个12位模数转换器;2个DMA控制器,共12个DMA通道;支持定时器、ADC、SPI、USB、IIC、UART、CAN等外设;串行单线调试(SWD)和JTAG接口;8个定时器;2个看门狗定时器(独立的和窗口型);一个24位自减型系统时间定时器。
(4)树莓派。树莓派是一款基于Linux的单片机电脑,由英国的树莓派基金会所开发。树莓派面积只有一张信用卡大小,体积大概是一个火柴盒大小,可以运行进行1080p视频的播放。操作系统采用开源的Linux系统:Debian、ArchLinux,自带 Iceweasel、KOffice等软件,能够满足基本的网络浏览、文字处理以及电脑学习的需要。树莓派基金会于2016年2月发布的树莓派3中首次加入了WiFi无线网络及蓝牙功能。
(5)FPGA。现场可编程逻辑门阵列(Field Programmable Gate Array,缩写为FPGA),它是在PAL、GAL、CPLD等可编程逻辑器件的基础上进一步发展的产物。它是作为专用集成电路领域中的一种半定制电路而出现的,既解决了全定制电路的不足,又克服了原有可编程逻辑器件门电路数有限的缺点。
这里举例介绍一种。Altium Designer是原Protel软件开发商Altium公司推出的一体化的电子产品开发系统。这套软件通过把原理图设计、电路仿真、PCB绘制编辑、拓扑逻辑自动布线、信号完整性分析和设计输出等技术的完美融合,为设计者提供了全新的设计解决方案,使设计者可以轻松进行设计,熟练使用这一软件必将使电路设计的质量和效率大大提高。
(1)FreeRTOS。FreeRTOS是一个迷你的实时操作系统内核。作为一个轻量级的操作系统,功能包括:任务管理、时间管理、信号量、消息队列、内存管理、记录功能、软件定时器、协程等,可基本满足较小系统的需要。RTOS需占用一定的系统资源(尤其是RAM资源),FreeRTOS是少数能在小RAM上运行的操作系统,相对μC/OS-II、embOS等商业操作系统,FreeRTOS操作系统是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点,可以方便地移植到单片机上运行。
(2)uC/OS-III。uC/OS-III(Micro C OS Three 微型的C 语言编写的操作系统第3版)是一个可升级的,可固化的,基于优先级的实时内核。它对任务的个数无限制。uC/OS-III 是一个第3 代的系统内核,支持现代的实时内核所期待的大部分功能。例如资源管理、同步、任务间的通信等等。
(3)嵌入式Linux。嵌入式Linux 是将日益流行的Linux操作系统进行裁剪修改,使之能在嵌入式计算机系统上运行的一种操作系统。嵌入式Linux既继承了Internet上无限的开放源代码资源,又具有嵌入式操作系统的特性。典型的嵌入式Linux安装大概需要2百万字节(2M Byte)的系统内存。
(4)NuttX。NuttX 是一个实时操作系统(RTOS),强调标准兼容和小型封装,具有从8位到32位微控制器环境的高度可扩展性。关键特征:标准兼容,核心任务管理,图形化配置工具,支持优先级继承,类POSIX/ANSI 的任务控制,类似VxWorks的任务管理和看门狗定时器,BSD 套接字接口,优先级管理的扩展,可选的具有地址环境的任务(进程),可继承的“控制终端”和 I/O重定向,可以构建为开放的、平面的嵌入式RTOS,或单独构建为具有系统调用接口的微内核,内建每线程 CPU 负载测量。开源飞控PX4中使用了NuttX实时操作系统。
(5)Windows Embedded Compact。Windows Embedded Compact( 曾 被 称 为Microsoft Windows CE)是微软研发的嵌入式操作系统,可以应用在各种嵌入式系统,或是硬件规格较低的电脑系统(例如很少的内存、较慢的中央处理器等)。Windows Embedded Compact允许使用组件化的实时操作系统开发占用空间小的设备。Windows Embedded Compact 中的组件化功能已针对以下设备进行了优化:内存和处理资源有限的小设备、需要电源管理功能的移动设备、需要丰富的联网和通信标准的下一代设备或需要对中断做出确定性响应的实时设备。便携式导航设备和通信设备都属于基于 Windows Embedded Compact 的设备。
(6)ROS机器人操作系统。ROS机器人操作系统是一个机器人软件平台,它能为异质计算机集群提供类似操作系统的功能。ROS提供一些标准操作系统服务,例如硬件抽象、底层设备控制、常用功能实现、进程间消息以及数据包管理。ROS是基于一种图状架构,从而不同节点的进程能接受、发布、聚合各种信息(例如传感、控制、状态、规划等)。目前ROS主要支持Ubuntu操作系统。
ROS可以分成两层,低层是上面描述的操作系统层,高层则是广大用户群贡献的实现不同功能的各种软件包,例如定位绘图、行动规划、感知、模拟等。
(1) Scratch。Scratch是一款由麻省理工学院(MIT) 设计开发的少儿编程工具。其特点是:使用者可以不认识英文单词,也可以不会使用键盘。构成程序的命令和参数通过积木形状的模块来实现。用鼠标拖动模块到程序编辑栏就可以了。
(2)LabVIEW。LabVIEW是一种程序开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASI C开发环境,但是LabVIE W与其他计算机语言的显著区别是:其他计算机语言都是采用基于文本的语言产生代码,而LabVIE W使用的是图形化编辑语言G编写程序,产生的程序是框图的形式。
(3)米思齐(Mixly)。Mixly是北师大教育学部创客教育实验室提供的免费工具 ,是一款图形编程工具,并且可以生成相应的代码。
(4)Keil。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μV ision)将这些部分组合在一起。Keil C51版本可用于开发51系列单片机,Keil ARM版本可用于开发ARM7、ARM9、Corte x-M内核单片机。
(5)IAR。IAR Embedded Workbench是瑞典IAR System s公司为微处理器开发的一个集成开发环境,支持ARM、AVR、MSP430等芯片内核平台。
(6)Eclipse。Eclipse是著名的跨平台的自由集成开发环境(I DE)。最初主要用来Java语言开发,通过安装不同的插件Eclipse可以支持不同的计算机语言,比如C++和Python等开发工具。著名的PX4飞控和Ardupilot飞控就可以使用Eclipse来开发。
(7)MATLAB。商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
(1)C语言。C语言具有高效、灵活、功能丰富、表达力强和较高的可移植性等特点。通过指针,C语言可以容易地对内存进行低级控制。
(2)C++。C++是一种广泛使用的计算机程序设计语言。它是一种通用程序设计语言,静态数据类型检查,支持多重编程范式,例如过程化程序设计、数据抽象化、面向对象程序设计、泛型程序设计、基于原则设计等。
(3)Arduino语言。Arduino使用C/C++编写程序。早期的Arduino核心库使用C语言编写,后来引进了面向对象的思想,目前最新的Arduino核心库采用C与C++混合编写而成。通常所说的Arduino语言,是指Arduino核心库文件提供的各种应用程序编程接口(Application Programming Interface,简称API)的集合。这些API是对更底层的单片机支持库进行二次封装所形成的。
(4)Python。Python是一种广泛使用的高级编程语言。作为一种解释型语言,Python 的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于 C++或 Java,Python 让开发者能够用更少的代码表达想法。
(5)MATLAB。MATLAB可 以 利 用MATLAB编译器和C/C++数学库、图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。
一些传感器的信息需要做些处理,否则噪声很大甚至不少野值。常用的方法可以加入低通滤波器或者做中值滤波等等。有不少传感器测量的信息会出现冗余。比如,超声波测距模块和气压计都能测量高度,加速度计也能提供高度方向上的加速度信息,这就需要设计的融合滤波。常用的滤波算法包括互补滤波和卡尔曼滤波等。另外,还需要根据备份的冗余传感器信息来判断一些传感器的健康程度,及时屏蔽坏的传感器。
驱动器连接传动装置形成的驱动系统需要完成一定的控制任务,因此离不开控制算法。控制一般分为开环控制和闭环控制。开环控制中开环系统中输出既不被测量也不被反馈,必须建立准确的数学模型并且仔细校准控制系统才能达到很好的控制效果,在机器人身上极少被采用。在闭环系统中,输出不断地检测,并且反馈回来。根据误差,被操纵变量不断地被调整,以达到期望目标。闭环系统的主要思想是基于反馈的控制。大多数闭环控制器都是基于误差的,使用最广泛的闭环控制器是PID控制器。这个控制器包含了比例、积分和微分控制器。使用数学表达式表达施加到对象控制器上的输出为:
(1)比例控制反映“现在”的反馈作用。比例系数如果太小,同样的误差会让整个系统感觉调节的力度不够,使系统输出量变化缓慢,调节所需的总时间过长。比例系数如果过大,调节力度太强,将造成调节过头,超调量增大,振荡次数增加,调节时间加长,动态性能变坏,比例系数太大甚至会使闭环系统不稳定。
(2)积分控制反映“过去”的反馈作用。它不允许稳态误差,否则稳态误差会一直积累,因此最终稳态误差为零时,积分控制才罢休。积分系数如果太小,积累误差消除缓慢。积分系数如果过大,将造成对过去的积分影响过于依赖,整个系统显得迟缓。比如,即使现在误差已经消除,但积分误差不为零,系统仍然会震荡。
(3)微分控制反映“将来”的反馈作用。这是因为通过微分,可以预测“将来”的变化。因此,通过微分控制可以改善输出响应。然而,微分值基本包含着较大的噪声。微分系数过大也会放大这些噪声。
网上流传一个PID调参口诀“参数整定找最佳,从小到大顺序查,先是比例后积分,最后再把微分加,曲线振荡很频繁,比例度盘要放大,曲线漂浮绕大湾,比例度盘往小扳,曲线偏离回复慢,积分时间往下降,曲线波动周期长,积分时间再加长,曲线振荡频率快,先把微分降下来,动差大来波动慢,微分时间应加长,理想曲线两个波,前高后低4比1”。
决策算法跟比赛任务息息相关。通常需要一些数据结构的知识和优化的知识。比如走迷宫问题,通常需要用“堆栈”的数据结构进行处理,优化方面可以参考一些搜索算法,比如深度优先或者图论中的最短路径算法等等。这里就不一一赘述。更高级的形式是人工智能算法方面,一般更偏实用的场景。
比赛和等级考试是机器教育成果的表现形式,它们有着共通的机器人基础知识。
以2017 第七届中国教育机器人大赛暨首届国际教育机器人邀请赛中搬运码垛项目为例,我们来看该比赛包括哪些以上介绍的机器人基础知识。
(1)比赛规则简介。在指定地图中三个固定点放置三个码垛,码垛是从五种不同颜色物料中随机选取的三种颜色不同的物料,并且每种颜色的物料个数都是3个。比赛要求机器人以最短的时间将三种颜色的物料放到地图中相应的颜色区域中,放置的位置越精确得分越高。
(2)机器人知识。1)机械结构及驱动器:比赛使用的双轮差分驱动的机器人,每个轮子都带有独立的伺服电机,另外还有一个可旋转从动轮,用于保持机器人的稳定。机器人配有机器手,机器手有四个自由度,由五个伺服电机控制。机器人整体结构比较简单,动力传输基本由齿轮传动完成。2)传感器:①QTI(Quick Track Infrared)传感器是一种红外传感器,它利用光电接收管探测其所面对的表面反射光强度。比赛中使用QTI传感器巡线,当传感器探测到黑色物体时输出高电平(+5V ),探测到白色物体时输出低电平(0V)。②颜色传感器:通过检测某个颜色中三原色的比例来识别该颜色,用来识别物料的颜色,辅助决策。③超声波传感器:测量机器人与物料的距离,辅助机器人准确抓取物料。3)计算硬件平台和开发工具:硬件平台为Arduino和STM32。其中Arduino硬件平台官方推荐的开发平台是Eclipse,STM32可以使用Keil集成开发环境。4)决策:比赛中物料放置点可能会被堆放的物料挡住,所以需要设计合理的算法决定抓取物料的顺序,物料是否可以直接放到放置点,以及合理选择放置点的位置。
等级考试需要一级一级考取,符合知识循环渐进的过程。等级考试中涉及的知识面非常广,同时注重理论和实践。以全国青少年机器人技术等级考试为例,其涉及机器人基本结构、驱动器、电子电路基础、传感器使用、有线和无线通信、操作系统、编程语言(着重C++)、计算单元等知识。