04第4章 电机和舵机的控制Word格式文档下载.docx
《04第4章 电机和舵机的控制Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《04第4章 电机和舵机的控制Word格式文档下载.docx(28页珍藏版)》请在冰豆网上搜索。
底板的上面开了许多孔,用以方便安装其它部件。
底板的一面是光滑的,另一面是不光滑的,安装部件时应尽可能装在光滑的一面上。
底板图片
舵机结构件:
是专用的舵机安装构件,用来安装舵机并把舵机固定到底板或其它构件上。
舵机结构件图片
连接件:
步骤1:
安装底盘和舵机架
用连接件连接底板和舵机结构件,如图。
3.4CDS5500数字舵机
机器人之所以有“人”字,是因为人们希望这种新的人造物能够像人一样,除了有聪慧的大脑、敏感的知觉外、还要有灵活的活动能力,从而能够代替人完成人们所不期望亲力亲为的事情。
机器人常用的运动驱动部件有直流有刷电机、直流无刷电机、步进电机、舵机等。
下面我们将重点讨论创意之星配置的机器人专用舵机——CDS5500数字舵机(电机)。
ProMOTIONCDS系列机器人舵机属于一种集成电机、伺服驱动、总线式通讯接口为一体的集成伺服单元,既可以当作电机作用,也可以当作舵机使用。
当用作电机时它可以360度不停的旋转,控制它的参数为速度和时间,当用途舵机时,它只能旋转300度,控制它的参数为速度和角度,主要用与微型机器人的关节、轮子、履带驱动,也可以用于其它简单位置控制场合。
图2.35CDS5500机器人舵机
CDS5500的特点如下:
◆大扭矩:
10Kgf
cm的持续转动输出扭矩,大于20Kgf
cm位置保持扭矩
◆位置伺服控制模式下转动范围0-300°
◆高转速:
最高0.16s/60°
输出转速
◆在速度控制模式下可连续旋转,调速
◆DC6.5V~8.4V宽电压范围供电
◆总线连接,理论可串联254个单元
◆0.32°
位置分辨率
◆高达1M通讯波特率
◆双端输出轴,适合安装在机器人关节
◆0.25KHz的伺服更新率
◆高精度全金属齿轮组,双滚珠轴承
◆兼容RobotisDynamixel通讯协议
◆连接处O型环密封,防尘防溅水
◆具备位置、温度、电压、速度反馈
步骤2:
安装舵机
先按照图所示,将舵机架装到底板上(安装时注意舵机架不能装反,原因是舵机架的两端长度不统一)。
再将舵机装入舵机架中用螺丝钉固定(注意:
舵机不能装反,安装两侧舵机要对称)。
3.5轮子
在我们现实生活中,我们能够看到各种各样的轮式车辆,他们是我们设计轮式机器人的参考。
实际上,轮式机器人底盘就是把现实的轮式车辆进行缩微和简化而已。
除了摩托车、自行车,各种轮式车辆一般至少有3个轮子同时着地,这样能够让车辆在任何时候都能保持平衡。
同样,在这里我们也不应该选择两轮的构型,控制两轮机器人保持平衡是很困难的,您在第八章能体会得到。
表4.1常见轮子底盘结构对照表
序号
结构类型
说明
1、
后面两个独立驱动的轮子,前面一个转弯用无驱动轮子。
2、
后面两个无动力轮子,前面一个有动力的转向轮。
3、
前面两轮驱动,后面两轮从动,前后都带差速器。
4
前后都是驱动轮,带差速器。
越野车的驱动方式。
5
四轮独立驱动,模型四驱车的驱动方式。
6
中间两个独立驱动的轮子,前后各有一个万向轮。
7
前面一个万向轮,后面两个独立驱动的轮子。
注:
有动力的驱动轮,
无动力的随动轮,
万向轮。
上表我们列出了7种常见的,轮式机器人底盘上经常用到的结构类型。
由于“创意之星”标准版没有万向轮和差速器,我们排除3、4、6、7构型。
1、2构型需要有比较大的转弯半径,5构型的四个轮子可以单独驱动控制,具有很强的机动能力,并且动力比较强劲,所以我们采用构型5。
我们控制四个电机,让机器人能够灵活运动,四个电机转动输出和机器人平台的方向对应关系如表4.2所示。
之后我们需要根据机器人前方的障碍物情况,控制机器人的方向。
表4.2电机与底盘的运动关系对照表
状态
驱动方式
前进和后退
给左右两边的轮子同样向前或向后的电机转速,底盘就会前进或者后退。
有转弯半径的转向
左边的轮子给较高的转速,右边的轮子给较低的转速,底盘就会向右前方转向。
无转弯半径的转向
左右两个给一样的速度,但不同方向的电机转动,底盘就会原地转向。
至此,我们已经清楚我们需要什么样子的轮式小车来完成本次实验。
创意之星里的轮子及连接件主要有
橡胶轮LG和LTLZ4
可以选择其中的一种作为机器人的轮子。
步骤3:
安装橡胶轮
用连接组件橡胶轮连接起来,并用螺丝钉固定。
再将控制板等上层组件与上层底板连接,最后将上下两个底板连接到一块。
组建成完整的小车。
3.6舵机ID
1总线通讯的特点
CDS5500采用半双工串行异步总线通讯,控制器可以通过一个UART接口,控制多达255个的CDS5500。
这是什么意思呢?
我们借用现实中的一个例子来解释。
某学校接到上级要来视察工作的通知,校长为了给领导留个好印象,决定举行一个隆重的欢迎仪式。
他让宣传部编排了一些欢迎动作,这些欢迎动作需要10个方阵的学生共同表演,并且需要步骤协调,每个方阵由一个老师带领,所有的方阵由宣传部长指挥。
带队老师和部长都发一个对讲机,校长要求:
1、部长的对讲机调在讲话模式,带队老师的对讲机调在接听模式。
2、部长统一发布方阵的动作指令,比如A方阵下蹲、B方阵摇手、C方阵站立等。
每个带队老师都能听到这些命令,A方阵带队老师只关心与A方阵有关的命令,不理会和B方阵有关的命令,否则动作就乱套了。
同样,其它方阵的老师也只关心自己方阵的命令,除了要求所有方阵都执行的指令之外。
3、命令只能由部长发布,任何带队老师不能给其他带队老师发布动作命令。
4、带队老师不能随便将对讲机调为讲话模式,向部长咨询事情,否则大家都调为讲话模式,就唧唧咋咋的成了一锅粥了。
只有在部长要求回答的时候才能回答,回答完毕后立刻将对讲机调回接听模式。
某个风和日丽的日子,领导终于来了。
部长按照剧本对方阵老师下命令:
所有方阵听指令,我先发布各个方阵的动作,各个方阵记住自己的动作之后先不执行,等我说执行,所有方阵一起执行。
现在开始,A方阵向前走5步,B方阵摇手,C方阵放气球……,现在所有方阵执行动作。
欢迎仪式动作整齐,配合默契,步骤协调,获得了领导的大加赞赏。
总线是指能为多个功能部件服务的一组信息传输线,它是计算机中系统与系统之间、或者各部件之间进行信息传送的公共通路。
它由一定的物理线路和接口、数据协议规范所构成。
1、部长和各个带队老师的对讲机就是这样的物理线路,它让指挥者和执行者之间的通信成了可能。
校长发布的几个规定就是总线协议,这个协议让总线不会出现冲突、紊乱,让通信能够正常完成。
CDS5500的半双工串行异步总线的物理线路是舵机线、UART接口等,CDS5500也有一套总线协议,您可以在《CDS5500数据手册》里看到具体描述。
2、部长发布命令,其他带队老师只能接受命令,不能发布命令,因此我们可以称部长为主机,其它的带队老师是从机,这个总线上只能有一个主机,否则多人发布命令会导致带队老师(从机)不知道听谁的命令好。
从机可以有很多,现在有10个方阵,如果欢迎仪式的剧本复杂点,可能需要255个方阵也不一定。
在CDS5500这个总线上,“创意之星”控制器就是主机,发布CDS5500需要执行的命令,比如ID为1的舵机转50°
,其它舵机不动。
CDS5500就是从机,这个总线可以串联很多CDS5500,如图2.35所示。
3、这个总线是半双工总线,部长在说的时候,带队老师只能听,带队老师要说话必须将接收机调为讲话模式,部长需要调成收听模式,带队老师说完之后需要立刻切换为收听模式,否则会影响部长发布命令。
“创意之星”控制器作为主机,发布CDS5500的动作指令,舵机在控制器要求应答时才发送应答数据,发送完成后立刻将自己的接口状态调整为接收状态。
4、每个方阵都有自己的代号,这就是从机的ID(地址),主机发布的命令所有从机都可以接收到,但某从机只响应和自己ID匹配的命令。
CDS5500都有自己的ID号,出厂默认都是1,您可以使用RobotServoTerminal软件进行修改,具体操作请查阅《RobotServoTerminal使用说明》。
5、部长可以让带队老师逐个执行动作,比如让A方阵先转向,再让B方阵蹲下,也可以让所有的方阵记住他们要执行的动作,然后同时执行,这样效果会比较整齐。
“创意之星”控制器也可以让CDS5500工作在上述两种模式,这是由总线协议规定的,您可以给1号CDS5500下达转50°
的命令,2号舵机转30°
的命令,然后下达一个命令让所有总线上的CDS5500同时开始执行刚才发布的命令,详细协议可以查阅《CDS5500数据手册》。
通过上述的例子您应该已经了解了CDS5500的半双工异步串行总线的意思及其特点。
那么总线式的机器人舵机和R/C舵机相比有什么优点呢?
我们再用上述例子来说明。
R/C舵机不是总线式的,只能直接接到控制器上,并且占用一个专有端口。
这就要求部长必须长10张嘴,拿着10个对讲机才能给10个方阵下命令。
我们如果要控制20个R/C舵机,则您设计的控制器必须具备20个R/C舵机接口。
“创意之星”控制器有8个R/C舵机接口,能够同时控制8个R/C舵机。
但总线式舵机不一样,只有一个CDS5500接口,理论上就能控制255个CDS5500。
为什么说是理论上呢?
CDS5500是需要消耗电能的,在工作的时候最高可能有2000mA的电流需求,如果在这个总线上接入255个舵机的话,同时工作起来,总线上的电流将达到400A的可怕程度。
实际上,我们也不可能搭建一个具有255个舵机的构型。
2CDS5500的使用
CDS5500采用半双工串行异步总线进行控制,每个舵机都有自己单独的ID号,您在机器人构型搭建时需要对ID号进行配置,以免机器人的某些关节的ID号重叠。
博创出厂的CDS5500默认ID为1,在“创意之星”包装盒里有CDS5500ID编号的不干胶,您设好ID后请将不干胶粘贴到舵机后盖上,避免遗忘。
CDS5500有专用的调试环境RobotServoTerminal,在这个环境下,您可以设置舵机ID、波特率、工作模式、速度限制、角度限制、电压限制等等。
CDS5500采用总线式通讯,您可以串联使用。
使用R/C舵机时我们一直很苦恼,如果我们设计的构型有20个舵机,我们需要接20根线都接到控制器,整个机器人会被长短不一、颜色各异的线所包围缠绕。
CDS5500让我们摆脱了这种窘境,我们可以将6足爬虫每条腿上的3个CDS5500串联在一起,再连到控制器上。
我们可以将机械手的六个关节串联成一串,最后一根线接到控制器上,整个走线非常简单、清晰,可靠性也高很多。
需要注意的是:
每个CDS5500需要使用不同ID;
每串CDS5500的数量不能太多,最好是6个以下。
正常工作下单个CDS5500的电流可能达到500mA~1A,堵转电流可达到2.5A,单组6个CDS5500的工作电流可能达到3-8A。
这样的电流会让舵机线发热,并产生比较大的电压降,最后一个CDS5500可能因为沿途舵机线的分压而导致工作电压过低,CDS5500在电压过低时会出现复位、数据通讯不正常等等状况。
图2.36CDS5500机器人舵机的串联使用
3CDS5500的自我保护
CDS5500还有其它的功能,诸如角度限制、扭矩限制等。
在您搭建机器人过程中,这些功能很是重要,某些时候您需要根据构型进行重新配置。
在使用传统R/C舵机时,我们经常遇见舵机长时间卡死,导致过热烧毁的现象,这是舵机自我保护功能不完善的一种表现。
在实际使用过程中,每一个舵机的使用条件都是不一样的,有些舵机的使用环境非常良好,有些则是工作条件恶劣。
比如机械手根部关节(图2.36的
、
关节),负载远远高于机械手爪(图2.36的
关节)。
CDS5500会实时检测工作电流、负载、温度,借此判断各种工作状态。
当出现过载、过热、过压、指令错误等就会发出报警信息,甚至直接卸载以保护舵机。
如下表所示,CDS5500定义了7种错误、危险的工作状态,您可定义CDS5500对这7中工作状态的应对措施,比如报警、指示灯闪亮、卸载等。
注意:
上文提到的“卸载”这个概念,您可以将其理解为“切断扭矩输出”。
CDS5500卸载进入保护模式,意思是CDS5500由于出现错误工作状态,进入保护模式,切断舵机的扭矩输出,舵机处于没有力量的状态。
卸载这个概念在接下去的章节里还会重复出现。
表2.6CDS5500保护状态说明
名称
详细说明
---
指令错误
如果收到一个未定义的指令或收到ACTION前未收到REGWRITE指令
过载
位置模式运行时负载大于最大输出扭矩
校验和错
指令校验和错误
指令超范围
指令超过指定范围
过热
温度超过指定范围
角度超范围
角度超过设定范围
过压欠压
电压超过指定范围
您可以对以上的保护措施进行参数调节,以达到适合使用条件又能保护CDS5500的目的。
主要有以下四个方面:
●角度限制
CDS5500在舵机模式下,有效角度控制范围是0-300°
,对应控制量为0-1023。
在某些运用场合,您可能需要限制舵机的转角,比如舵机转过200°
之后可能出现卡死,您需要将角度限制设置为0-682(控制量682对应角度200°
),当您的控制指令在0-682之间,舵机能够按照您的指令运动;
您的指令如果超过682,舵机将保持到682位置,不会往更高角度运转。
●电压限制
您可以设置CDS5500的工作电压范围,由于硬件设计的限制,CDS5500的工作电压是6.5V-10.5V,低于6.5VCDS5500将不能正常工作,高于10.5V会烧毁CDS5500。
您设定好电压限制之后,当CDS5500上的加载电压高于或低于此范围舵机将会置位错误标志位,软件的“电压超范围”指示灯会点亮。
●温度限制
CDS5500能够检测自身工作温度,温度过高可能会烧毁舵机。
您可以设置正常工作温度范围,当CDS5500检测到温度过高后,舵机将会强制卸载停止工作。
●转矩限制
“转矩限制”限制了CDS5500的最大工作电流,起到限制CDS5500的最大输出扭矩的作用。
在机器人手掌关节或需要长时间堵转的场合常常用到这个功能,默认为最大值1023,即为最大扭矩输出。
通过限制扭矩大小,您可以让机械手爪能够抓起草莓,而又不会将草莓捏碎。
4CDS5500的调试设置软件
CDS5500的基础参数设置、保护参数调节、性能测试等都可以通过RobotSevoTerminal软件来实现。
图2.37RobotSevoTerminal
步骤4:
ID号的查询/修改及电机模式设置
取出多功能调试器,电源,安装好。
查询串口号
填入串口号
查询ID
修改ID
修改电机舵机模式
舵机/多功能调试器/电源接线图
将四个轮子的ID设置为左前1,右前2,左后3,右后4
3.7机械手
机械手组件是创意之星专为安装机械手设计的,
它主要包括如下六件:
它与舵机一起使用组成一个完整的机械手。
其与舵机安装好后的效果图
它可以张开到mm,可以夹持直径mm,重量g的物品
步骤5:
机械手安装
将机械手的三个舵机ID设置为机械手端5,第一个关节6,第二个关节7
把安装好的机械手装在另外一个底板上。
三自由度机械手图片
步骤6:
安装其它零部件
安装声强传感器,控制器,和LED灯到上底板上,如图所示。
最后把上下两个底板安装到一起。
最终完成的搬运车图片
步骤7:
接线
红外
声强
LED灯
电机
舵机
多功能调试器
电源
3.8舵机的两种模式
我们刚才在搭建机器人的时候,轮子用的是舵机,机械手用的也是舵机,那它们之间有什么区别,应该如何使用?
其实,我们所使用的舵机有两种模式,即电机模式和舵机模式,也就是说一个舵机即可以当电机使用,进行连续旋转,也可以当舵机使用,在300度的范围内转动。
想如何使用舵机,就得在“工程设置”时的“舵机设置”中进行模式设置。
如图。
这个窗口会在新建文档时出现,也可在建完文档后点击设置/工程设置来进行。
步骤8:
新建工程及参数设置
新建工程,进入舵机设置界面,在“当前构型的舵机个数”中填入7。
在“当前构型的舵机列表”中,将前四个“mode”设置为“电机模式”。
单击下一步进入AD设置,这一步不作设置,单击下一步进入IO设置界面。
IO设置
单击完成进入主界面。
步骤9:
增加while循环控件
拖入一个while控件,放在start和end之间,组成一个死循环,这样可以使程序永远处于控制之中。
3.9条件判断if语句和break语句
If语句位于程序模块中,它总是与ENDIF语句成对出现,如图
在if语句图标上有两个向下的前头,也就是说有个走向,左边黄色箭头表示判断为真时的分支,右边蓝色前头表示判断为假时程序的走向。
步骤10:
增加启动开关
拖入一个while控件,两个数字输入控件,一个if控件,一个break控件,一个variable控件,组成一个开关。
该开关与声强传感器相对应,可以实现拍手启动机器人。
最后连线的效果图如图所示
各图标的属性设置如下:
Variable:
变量,int,io11.
Digitalinput:
通道11,io11.
While:
1
If():
io11==0
生成的开关程序代码如下:
#include"
background.h"
intmain(intargc,char*argv[])
{
intio11=0;
//定义函数
MFInit();
MFSetPortDirect(0x000007FF);
io11=MFGetDigiInput(11);
//读取io11口的值
while
(1)
{
if(io11==0)//判断是否有声音
break;
//有声音跳出循环,执行后面的程序,相当于一个开关
}
//没有声音,继续读取io11口的值
//跳出开关之后的程序
}
3.10舵机控件—servo(N)
1电机模式
功能模块中的第一个控件就是舵机控件,把它拖入主界面后双击它可以对其进行属性设置,其意义与其它控件相似。
1注释框的使用方法与其它控件相同。
2属性框中,其四个标签的意义如下:
意义
取值范围
舵机模式
电机模式
ServoID
0-30
Angle
0-1023
不可用
Speed
-1023-1023
Mode
电机模式/舵机模式
属性框中还有
设置全部:
属于一种快捷设置方式。
当我们需要把所有的舵机或电机数值设置为同一个值时,可以更改位置或速度的值,然后点击设置全部,可以把所有ID的舵机或电机相应的值同时设置为同一个值,默认值为512.。
执行动作:
调试时使用,目前是灰色的不可用。
3选定舵机操作
在属性框中,我们可以对舵机的角度值和速度值直接进行修改。
也可以通过本框单独进行操作。
当我们在属性框中选中某个舵机时,其ID号会出现在标签上,角度和速度的拖拉条同时也显示目前的值,我们可以拖动拖拉条来设置其值。
当在电机模式角度拖拉条不可用。
中位:
角度拖拉条后面有中位按钮,其作用是让舵机直接复中位,512.
停止:
直接让舵机的速度为0.
调试和卸载在调试状态下可用。
4舵机位置,在舵机模式时使用。
2小车的运动
安装好硬件后,我们就得让小车运动,那么如何让小车前进和转弯呢?
首先我们得了解电机的转向问题。
把舵机拿在手上,输出轴面向我们,如图,当我们给电机一个正值时,其转向是逆时针的。
当为0时,停止转动,当值为负值时,转向为顺时针,并且值其绝对值越大,其转速越快。
其取值范围是-1023—1023.当取值为1023时,其每分钟的转速约为转/分钟。
舵机转向图片
步骤11:
小车前进
从上面的分析可知,左边的轮子为正值时向前转,右边的轮子为负值时,向前转。
拖入一个舵机控件,设置属性如下,1,3轮为左前和左后,设置其值为512,2,4右前和右后,设置其值为-512.
拖入一个delay控件,延时设置为5000.
步骤12:
小车左转和前进
步骤13:
小车停止
3舵机模式
步骤14:
增加开关,等待夹持物的到来
步骤15:
张开机械手
3.11舵机调试
3.12再谈delay
步骤16:
后退5秒
步骤17:
左转,前进,回到原处
松开机械手恢复原状
步骤18:
编译/下载
3.13编辑代码
使用流程图进行编辑是northstar软件的优点,如果有人习惯于使用手写编辑代码,不习惯于使用流程图,或者觉得流程图不灵活,那么就可以在在流程图编辑过程中,或生成代码后,从Tools菜单或者工具栏点击EditCode,软件就会切换到代码编辑模式,如图2.65所示。
此时可在前面生成流程图生成的代码基础上进行编辑,或手动输入新代码,然后编译,下载,即可运行程序。
可以通过File菜单下的SaveCode将代码窗口的代码保存成.c或者.cpp文件,或者通过LoadCode来加载代码文件到代码窗口。
但要注意,如果切换到代码窗口进行了修改,就不要再切换回流程图窗口了,因为如果再切换回去,代码窗口的内容就会被流程图所生成的代码重新覆盖!
步骤19:
编辑代码
点击代码命令,进入代码窗口,
3.14程序调试
调试
把机器人放