APP下载

移动机器小车的控制

2017-08-09孙昱放

中国科技纵横 2017年13期
关键词:控制

孙昱放

摘 要:伴随科学技术的发展和人民生活水平的提高,移动机器小车在现实生产和生活中,得到了极为广泛的应用。本文在系统介绍了移动机器小车的基础知识基础上,重点阐述了移动机器小车设计与被动避障、主动避障的控制,以及追踪控制的工作原理和应用。

关键词:移动机器小车;控制;制作与设计

中图分类号:TP24 文献标识码:A 文章编号:1671-2064(2017)13-0054-03

机器人逐渐进入到人们的生活当中,如现在家用的扫地机器人、饭店使用的洗碗机等等。机器人方便了人们的生活,优化了人们的生活方式。机器人在未来一定可以对人类的生活起到更大的作用。移动机器人在生活中的应用逐渐普遍,也引起了我对它的兴趣,我从简单的移动机器小车入手,开始学习与研究移动机器小车的控制,从而对机器人有更深的理解。

1 移动机器小车的基础知识

移动机器小车即使用伺服电机根据软件编程的设定,发出脉冲控制机器小车完成运动、避障、跟随等任务的机器。

1.1 软件介绍

BASIC Stamp是由美国Parallax公司自1992年起所提创的一种微控制器,此种微控制器与其他微控制器不同的地方在于:微控制器中的ROM内存内建了一套小型、特有的BASIC编程语言直译器,称为:PBASIC。

1.2 硬件介绍

伺服电机:伺服系统是使物体的位置、方位、状态等输出被控量能够跟随输入目标(或给定值)的任意变化的自动控制系统。

面包板:面包板是由于板子上有很多小插孔,专为电子电路的无焊接实验设计制造的。电子元器件可根据需要随意插入或拔出。

1.3 指令和循环语句

伺服电机在收到某一特定的信号时,处于静止状态。本次使用的伺服电机在收到脉冲宽度为1.5ms的脉冲信号时,处于静止状态。在计算机上,将使用一个PULSOUT指令。PAUSE是低电平,PULSOUT输出的是高电平。

PULSOUT指令:PULSOUT Pin,Time。Time是用来计算脉冲宽度的时间单位数,时间单位是2/μs,则零点脉冲宽度为Time=0.0015s/0.000002s=750。

要控制脉冲之间的间隔则需要使用PAUSE指令。

PAUSE指令:PAUSE T。T是PAUSE的值,它表示微控制器在执行下一条指令之前要等待多久。T的单位是1ms。如要等待0.5秒,则给T赋值为500:PAUSE 500。

要持续产生脉冲信号,则还需要用到DO…LOOP循环语句当中。

DO…LOOP语句:

DO

PULSOUT 1,750

PAUSE 500

LOOP

如此则可以循环运行指令。

还有一种FOR…NEXT的语句适用于有限次数的循环:

C VAR Word

FOR C=1 TO 200

C=C+1

PULSOUT 1,850

PULSOUT 2,650

PAUSE 20

NEXT

根据计算,循环一次的时间大概为23ms,循环200次,则为4.6秒。

1.4 匀速运动和匀变速运动的原理以及执行方法

匀速运动:当Time参数的值大于750时,会使伺服电机逆时针旋转,而当Time的值为850时,则会全速逆时针旋转。顺时针反之亦然。当要匀速运动时,可以使用PULSOUT指令使两个伺服电机同时旋转。由于两个电机对应方向相反,则一个电机顺时针输出,一个电机逆时针输出可以完成匀速运动。表1。

DO

PULSOUT 1,850

PULSOUT 2,650

PAUSE 20

LOOP

如果测量出不同脉冲宽度下行走的距离,可以计算出小车的行驶速度。

匀变速运动:当Time输出的参数逐渐变化时,速度也会由此变化,则依据此可以进行匀变速运动代码的编写:

C VAR Word

For C=1 To 100

Pulse out 1,750+1

Pulse out 2,750-1

PAUSE 20

NEXT

在100次循环后,速度逐渐增加到最大值,完成了一次匀变速运动。根据加减的数值大小算出加速度的大小。

2 被动避障

被动避障是机器小车进行的被动行为。当机器小车被障碍阻碍从而被动接受到障碍的信号时,做出转动和避让。

2.1 被动避障的原理

可以通过一个感受障碍的装置,将障碍信号转化为电信号。本次使用了一個类似胡须的装置来完成这个任务。

胡须是类似一个触角的金属丝,弯曲形成一个环形,在前面感测障碍,胡须如同一个开关,控制着机器小车。胡须开关的状态值1或0储存在IN7的变量中。当没有被按下时存储值为1,胡须被按下时存储值为0。机器小车在行走中,一旦胡须被按下,就代表有障碍物,根据胡须的不同情况使机器小车进行不同的动作,从而完成被动避障。

2.2 被动避障使用的代码以及程序的设计

为了使机器小车进行判断,需要使用IF…THEN语句:

IF(cundition)THEN…{ELSEIF(CONDITION)}…{ELSE}…ENDIF

可以提前编制一些动作的代码,在程序中使用GOSUB来进行子函数,这样在写程序中就简洁许多。(IN5为左胡须的存储器,IN7为右胡须的存储器)

3 主动避障

主动避障是机器小车进行的主动行为。当机器小车在还未接触到障碍时主动接收到障碍的信号时,做出转动和避让。

3.1 主动避障的原理

可以通过一个红外感应装置,将障碍信号转化为电信号。我使用了红外线探测器完成这项任务。机器小车上使用了红外线二极管LED作为发射源,如果有障碍物,则会对红外线进行阻碍和反射,如此则机器小车上的红外线探测器便可以测得反射回来的红外线。为了排除普通光源的干扰,红外线探测器内部的光滤波器只允许980nm波长的红外线通过,并且红外线探测器的电子滤波器只允许38500Hz的电信号通过,即只寻找每秒闪烁38500次的红外线。

3.2 主动避障使用的代码以及程序的设计

为了让红外线二极管LED发出所需的和声信号,需使用FREQOUT指令。如:

FREQOUT 8,1,38500

这句代码的指令就是连接到8号引脚的红外线二极管LED电路发送1ms频率为38500Hz的和声信号。

当红外线探测器接收到红外信号时会产生存储值,没发现物体显示1,发现物体显示0。IRDL和IRDR是左右两个红外线探测器的存储值。使用下面代码即可将存储值储存到存储器当中。

IRD VARL Bit

IRD=IN9

则主动避障的程序代码为

(定义变量)

IRDL VAR Bit

IRDR VAR Bit

C VAR Byte

(主程序)

DO

FREQOUT8,8,1,38500

IRDL=IN9

FREQOUT8,2,1,38500

IRDL=IN0

IF(IN9=0)AND(IN0=0) THEN 表示前方有障碍

GOSUB BACK

GOSUB LEFT

GOSUB LEFT

ELSEIF(IN9=0) THEN 表示左边有障碍

GOSUB BACK

GOSUB RIGHT

ELSEIF(IN0=0) THEN 表示右边有障碍

GOSUB BACK

GOSUB LEFT

ELSE GOSUB GO 无障碍则持续前进

ENDIF

LOOP

(子函数)

GO: 表示前进的子函数

PULSOUT 1,850

PULSOUT 2,650

PAUSE 20

RETURN

LEFT: 表示左转的子函数

FOR C=0 TO 20

PULSOUT 1,650

PULSOUT 2,650

PAUSE 20

NEXT

RETURN

RIGHT:表示右转的子函数

FOR C=0 TO 20

PULSOUT 1,850

PULSOUT 2,850

PAUSE 20

NEXT

RETURN

BACK: 表示后退的子函数

FOR C=0 TO 40

PULSOUT 1,650

PULSOUT 2,850

PAUSE 20

NEXT

RETURN

3.3 主动避障和被动避障的区别与优缺点

主动避障没有直接接触到障碍,是提前预知障碍进行避让;被动避障是直接接触到障碍,从而进行避让。两种避障方式的原理不同,但它们的目的相同。可根据不同的需要和要求进行两种避障方式之间的选择。主动避障避免的直接的撞击导致的经济损失,但是缺点是通过无线传感器接收到的干扰因素较多,成本高。

4 移动机器小车的距离探测和追踪

不同频率的和声信号探测的距离远近也不同,可以发射多种频率的和声信号,根据返回的红外线频率探测物体的位置,并使用负反馈控制系统进行追踪。

4.1 用频率扫描进行编程做距离探测

频率特性使得红外线传感器在不同的频率下有不同的灵敏度,导致红外线探测的距离不同。如图1,物体反射了39500Hz、38250Hz和37500Hz的红外线,根据接收情况,可以得知物体在区域2。划分区域越多则精度越高,定位也更加准确,但会增大计算量,带来不必要的麻烦。由于本次研究目的在于追踪,不需要过高的精度,所以以1000hz为最小分度值,划分为6个区域。

当信号反馈时,有一种频率的信号反馈则储存的数字是0,无信号反馈则为1。如在图1中物体在区域2时,接收到了3种信号的反馈,而另外两种信号的反馈则接受不到,即为3个0,2个1,求和的出数字2,而数字2对应的便是区域2。

为了对红外线频率进行扫描,要用FREQOUT指令发送6种不同频率的红外线信号,使用LOOKUP命令可以简便的写出。LOOKUP命令的用法定义如下:

LOOKUP Index,[Value0,Value1,…ValueN],Variable

则代码可为

IRF VAR Nib

IRD VAR Bit

FOR IRF=1 TO 4

LOOKUP IRF,[37500,38250,39500,40500,41500],IRF

FREQOUT8,1,IRF

IRD=IN9

NEXT

4.2 移动机器小车的追踪控制

这个任务是要让机器小车跟随一个移动的物体。根据闭环控制系统的控制,在落后较远时,机器小车能进行加速;当距离太近的时候,它也能察觉并减速。如果距离合适,那么它会等待直到测量距离变远或者变进。

如图2,我们需要机器小车保持2个区域的距离,相差4区域的距离接下来对机器小车进行编程。

由此得出右边伺服电机的输出方程为:

Right servo output=(Right distance set point-Measured right distance)*Kp+Center pulse width

pulseLeft=(SetPoint-distanceLeft)*Kpl+CenterPulse

pulseRight=(SetPoint-distanceRight)*Kpl+CenterPulse

將右边距离设置为2,测量距离由变量distanceRight存储,Kp为35(比例常数是根据伺服电机特性得出来的常数),脉冲宽度为750。

pulseLeft=(2-distanceRight)*35+750

5 结论

在移动机器小车的制作与探究中,我学到了被动避障和主动避障的原理与设计,体会研究追踪移动机器小车的原理,学会了使用BASIC stamp 软件,了解了红外线二极管LED和红外线探测器。我相信在未来,移动机器小车的使用会更加的广泛,涉及到更多的领域,也将会有更多的功能。我也要紧跟时代脚步,在机器小车的领域中继续探索。

参考文献

[1]秦志强,侯肖霞,王文斌.基础机器小车制作与编程[M].第二版.北京:电子工业出版社.

猜你喜欢

控制
控制权归属及同一控制下企业合并认定条件辨析
船舶轮机振动噪声控制研究