《仿人机器人原理与实战》一1.3 反射弧实验入门

1.3 反射弧实验入门

现在到了你卷起衣袖运用理论的时间了,我们从一个简单的反射弧模拟器开始。该模拟器可以模仿之前详述的简单反射,但是两者之间有一些区别:在脊髓中的突触被隐藏了,而纺锤体纤维中的牵引传感器首先由瞬时接触开关代替,再由力传感器代替。事实上,你们会发现将模拟装置简单化的设计方法可以应用在任何一个仿人机器人的设计上。

1.3.1 器材清单

为了构建在本章的第一部分提到的一系列简单反射弧,我们需要以下器材:

  • 模拟量舵机(2个)
  • 瞬时接触开关(2个)
  • 10kΩ电位器(2个)
  • Arduino Uno微控制器
  • 5V直流电源
  • 10kΩ,1/4W电阻
  • 力敏电阻(1个)
  • 跳线或电线

现成的扩展板(可选)
这些产品的外形和品牌无关紧要,任何开关、舵机、电位器和Arduino兼容的微控制器都可以。例如,我们可以用一个微型按钮作为瞬时接触开关,也可以用两根裸电线、簧片开关和触发磁铁,或者光敏晶体管和发光二极管(LED)触发器进行替换。对于电位器,你可以用音量调节电位器代替,因为它更类似于关节在肌肉收缩下的运动。但与舵机连接使用时,音量调节电位器的反应太过灵敏,所以我们一般选用线性电位器。
如果你发现缺少一些零件,可以参考我们实验装置中的零件进行订购,如图1-5所示。在接线端我们安装了一对模拟量舵机、一对瞬时接触开关、一对10kΩ分压器和一个安装在端子上的力敏电阻(稍后详述)。Arduino Uno微控制器隐藏在Grove底座扩展板下。

我们通常对于不需要焊接的现成扩展板情有独钟,因为安装和拆卸都轻而易举。但正如图1-5所示,Grove扩展板有一个缺点:它没有面包板区,没有为附加组件留下足够的安装空间。另一个选择是利用Sparkfun和Maker Shed生产的螺纹扩展板,它为每一个Arduino接口留出螺丝端子接头和中央成型区,但是又缺少外部零件的插口。如果你不使用扩展板,那么至少要选择两边插头的跨接线,这样才能把舵机和微控制器连在一起。而Sparkfun 和Maker Shed也生产大量色彩鲜艳、容易辨别的跨接线,包括两边插头、一边插头一边内孔、两边内孔三种配置。
虽然我们已经看到过一些用Arduino上的5V电源驱动舵机的例子,但这不是好主意。我们要么为舵机配备独立的5V电源,要么为整个系统提供外部的5V电源。如果不为舵机配备独立电源,那么你可能会烧坏Arduino上的5V稳压器。考虑到Arduino Uno的每一引脚额定电流约40mA,而以HiTec HS-422为例,在无负荷的状态下,驱动一个模拟量舵机需要140mA。如果舵机处于重载状态,电流就会更大。
此外,我们标准的实验装置是安装在刨花板上的一对Arduino和公用电源。其中一个Arduino用于工作,另外一个用来测试代码和硬件。只有这样,我们才能把一个Arduino维持在最新版本,用于跟进项目,而另一个用于解决突发问题。配备两个微控制器不是必须选择,但我们发现这样做确实能节约很多时间。

1.3.2 电路

电路图如图1-6所示,模拟了一个简单的反射弧。其中,一套模拟量舵机充当肌肉,瞬时接触开关模拟肌肉纺锤体纤维,而电位器可以设置“肌肉”位置。Arduino Uno用于模拟纺锤体纤维或伸缩感受器的信号,以及肌肉的运动信号。

10kΩ线性电位器P1起分压作用,现将触头用导线连接至输入端A0。当开关接通时,瞬时接触开关S1将数字输入引脚D7与地接通。舵机1从引脚P9上接收脉宽调制信号。注意,5V直流电源直接与模拟量舵机相连,同时也与板上的5V稳压器接通。

1.3.3 构造

构建这个模型十分简单。你可以把舵机放在塑料或铝制支架上,或者简单地摆在桌面上。如果你配备了支架,那么可以选择把开关安装到模拟量舵机的臂上。还有一些零件我们没有用到,别担心,在接下来的实验中将一一用到。

1.3.4 编程

编写一个简单反射弧模拟器的Arduino程序需要调用舵机库,如清单1-1所示。舵机库隐藏了生成PWM信号的复杂过程, PWM信号不仅可以控制模拟舵机的位置,而且可以操控其运动速度。

清单1-1是对一个舵机例程的改写,这个例程包含在Arduino 1.0编程环境中。关键不同之处在于,当按下S1按钮时,保存舵机的当前位置,然后反射流程开始运行。反射完成之后,舵机回到对应电位器P1值的位置。
我们从头开始看一下这段代码,首先要调用舵机库,然后定义Arduino中使用的常数和引脚。本例中,系统输入端A0能读取电位器旋钮P1的位置,而通过数字引脚D7连接开关接口S1。D9连接舵机引脚servo1pin,PWM信号输出接驱动舵机。
servoDelay和servoReflexDelay变量定义了舵机的响应。为了使模拟舵机产生适当的响应,你可以调整延迟变量的值。实验显示,表中提供的值适用于初级的HiTec和TowerPro舵机。如果舵机在不工作的状态下抖动,你可以将延迟变量增加几毫秒。事实上,舵机反射延迟时间servoReflexDelay比舵机延迟时间servoDelay短,否则,相对正常的舵机速度来说,反射的运动速度较慢。
在安装过程中,首先按照舵机库的要求,把舵机和伺服对象连接在一起。其次,把牵引按钮引脚当作一个输入端,该端口内部自带上拉启动。或者,你也可以将10kΩ、0.125W电阻与5V电源连接起来实现输入,但这仅仅降低了编程的难度,对于外部硬件来说没有什么好处。
主循环函数首先从电位器的触头上读出一个0~5V的电压值。然后,map函数将A0输入端的值转化成0~1023个刻度,用来对应模拟量舵机的转角范围,一般为180°。当按下按钮S1时,通常为高电平的D7端口接地,同时反射被触发。
在模拟肌肉真实活动时,反射的幅度取决于舵机的初始位置。当舵机处于一个极限位置时—相当于肌肉完全收缩,反射仅刚好可以察觉。在另一极限位置时—相当于肌肉完全伸展,反射活动就会包含舵机的180°转角的大部分区域。
在调试系统时,直接在编程部分修改无法直观地看到舵机位置的微小变化。而Serial.println函数可以直接观察到任何变量的瞬时变化,所以,利用这一函数我们可以尽量减少调试时间。例如:

输出变量FSRValue的值。注意,需要打开串行监视窗口并将Serial.begin函数加入启动程序,如

define DEBUG声明应该出现在程序的开头,你可以很方便地找到它,并且在调试完成后将其注释掉而不需要编译。同样,如果在本例中你调用该函数的波特率为默认值9600,那么串口监控器的波特率也应设置为9600。

1.3.5 操作

这样的模拟器或机电能近似模拟之前所描述的牵张反射触发时所发生的现象。模拟装置运转时,旋转电位器P1可以调整、校正舵机摇臂的转动位置,当按下开关S1时,反射立即触发。此时,反射的作用是通过旋转摇臂,躲避或阻挡物体的撞击,这取决于开关的安装位置。在反射发生后的1~2秒内,由于电位器P1的控制,舵机回到初始位置。更进一步,上载程序软件,确认在电位器P1的不同阻值下,摇臂能在180°范围内控制自如。接着,旋转电位器旋钮P1使得舵机摇臂处于中间位置,接着按下按钮S1。如果进展顺利,舵机将快速旋转至终点,紧接着回到中间位置。
接下来,你需要解决系统中存在的问题。如果你的舵机抖动,则尝试改变servoDelay变量的值。如果你闻到什么东西烧焦了,大概是Arduino的稳压器烧坏了。这是一个很好的机会,你们可以尝试不同型号的舵机和电位器。

时间: 2024-08-03 21:29:33

《仿人机器人原理与实战》一1.3 反射弧实验入门的相关文章

《仿人机器人原理与实战》一导读

前 言 本书以人体为讨论对象,采用一种独特而有趣的视角来学习嵌入式系统.机器人学和电子学.诚然,爬行机器人和地毯清洁机器人是非常酷的实验平台,但是它们多半是冷冰冰的.毫无生气的机器.反之,人类拥有复杂的神经反射,包括根据压力调节心跳频率和根据环境光线强度调节瞳孔大小等.如果你想迈出制造更接近人类的机器人的第一步,那么本书是你的不二选择. 首先,本书的灵感一部分来源于科幻作家所描绘的影像,一部分来源于我们开发救生用人工智能系统的经验.如果你已经看过<银翼杀手><太空堡垒卡拉狄加>&l

《仿人机器人原理与实战》一1.4 反射弧实验进阶

1.4 反射弧实验进阶 在仿人机器人的设计中,这种简单的反射弧模拟装置不仅功能齐全而且十分有用.同人类的反射一样,直至反射被触发,舵机才正常运转.不过,你可以将程序稍作改进,以便提供更多有实用价值的功能.按照如下顺序,我们将这些功能添加到模拟器的硬件和代码库中. 1.4.1 反射方向 第一个改进是以编程方式定义反射方向.如果把开关S1安装在舵机摇臂上,那么反射可以使按钮的运动方向朝向或躲避撞击物体.如果反射方向不能满足设计要求,那么你可以移动开关,或者减小位置变量的值至0.以下是需要替换的递增代

《仿人机器人原理与实战》一1.1 反射弧生物学基础

1.1 反射弧生物学基础 当内部或外界事件发生时,体会反射过程似乎是一件困难的事,因为在某些事件发生之前,有些反射是没有被激活的.我们不妨援用下面的故事来解释这一过程. 1.1.1 猴子突袭 设想身处旧金山普雷西迪奥的你正漫步在桉树林中,此时,一只75磅的硕壮的猴子突然跳到你的背上.如果你姿势不错,那么你还能保持直立,然后把它从脖子上抓下来,在它戳你眼睛.咬你耳朵之前把它扔到地上.反之,如果此时你膝部弯曲,那么你会毫无悬念地摔倒在地,而猴子又将跳到你的胸口,没准儿你会因此呼吸困难,事情不太可能完

《仿人机器人原理与实战》一1.5 反射弧“小魔怪”

1.5 反射弧"小魔怪" 如上所述,这里给出的是最简单的机器人电路.你也许注意到例子里并没有用中断或者复杂的算法.毫无疑问,将大量代码减少到几行是有可能的,且能够实现位翻转操作,希望你能做到.但是,对我们的目的来说,用简单的整数运算就能达到目的了.然而在实践中,即使简单的机器人也会被贴上"多学科综合"和"问题重生"的标签.因此,机器人偶尔也会有小故障.假设一个舵机在不规律地运行,有时会产生流畅的反射,有时只是跳动几秒钟.代码可能是完美的,布线也是

《仿人机器人原理与实战》一3.5 附加项目:电加热板的PID控制

3.5 附加项目:电加热板的PID控制 好了,我们假定你对混合水和电不感兴趣.不过你仍然可以将之前的理论和代码应用到全电加热系统中,而且只需要修改少量代码.如果你的目标只是为仿人机器人提供热量,而不需要将其产生的热量转移,那么最简单的方法是把清单3-3中的PID控制代码和仿人机器人皮肤下的加热元件联合起来.3.5.1 器材清单完成这个附加项目,你需要以下器材: Arduino Uno或者等效微控制器 5Vdc的聚酰亚胺薄膜加热板 给加热板供电的9-12Vdc电源 电机驱动扩展板或者额定电流2A的

《仿人机器人原理与实战》一1.2 反射弧与仿人机器人设计

1.2 反射弧与仿人机器人设计 鉴于人类反射机制的各种优势,显然仿人机器人可以从类似的功能中获益.例如,将传感器和末端执行器的处理从主控制器转移到外设微处理器中,不仅为更复杂的工作腾出运算资源,也降低了灾难式单点故障发生的可能性.但是在设计仿人机器人时,还需要仔细考虑如何将这些优势与你的设计相匹配.在设计仿人机器人的反射功能时,主要问题是带自主反射仿人机器人与其所处环境的隔离程度.为给这个话题添加一个有实际意义的上下文,想象搜索和救援仿人机器人在一个部分坍塌的矿井中搜索失踪人员的情景.现在,我们

《仿人机器人原理与实战》一第3章

第3章 动 态 平 衡动态平衡即恒定内部状态的维持,是生理上需要实现的目标.更进一步,生理学使我们能够快速地从座位上站起来而不会飞出去.这与使用PID(比例–积分–微分)控制器有直接关系,PID控制器能够让机器人无人机在有风的情况下维持飞行高度.站起和飞行两者都依赖于负反馈控制系统.本章以温度控制为焦点来探索动态平衡和基本控制理论.我们选择温度为控制对象,而不是关节速度.功率或压力,这是因为温度传感器是现成的,第一手经验更加丰富,也许更重要的是,本实验将水和电有目的地混合在一起,这种机会非常宝贵

《仿人机器人原理与实战》一2.3 行为链实验入门

2.3 行为链实验入门 有了第1章描述的反射弧,再加上机械臂.温度和压力传感器以及一点想象力,我们将探讨一个关于图2-1中所示的理论上的行为链框架的实际例子.作为一个四肢健全的仿人机器人的组成部分之一,机械臂是一个很好的实验平台,因为它足够复杂以至于能够演示许多种肢体上的行为链.我们的另一个选择是应用仿真.然而,电脑仿真或许能够体现出应当发生的事情,然而在现实中移动具体的事物更具有魔力.如图2-3所示,我们通过按钮S1来启动夹持器夹紧的动作.如果夹持器上的传感器测量出被夹物体的温度过高,则夹持器

《仿人机器人原理与实战》一第2章

第2章 行 为 链在通常情况下及绝大部分时间里,大多数人的创造力和智慧是被高估且未被充分利用的.人类是依赖于习惯的生物,而习惯是一种人们每天都在重复的行为链.你身后一位驾驶18轮大货车的司机可能事实上正在创作奏鸣曲或者正在纠结于希格斯玻色子的意义,但是从他的行为来看,他也可能正在仔细考虑中午吃什么.对于司机的雇主来说,重要的是司机要把货物完好.准时地送到,雇主只需要确定司机知道油门和刹车的区别就够了,关于司机的其他方面都是没有意义的.仿人机器人也一样,只要能够完成工作任务,它在想什么并不重要.如