调试使用说明书shr-8s51系列_第1页
调试使用说明书shr-8s51系列_第2页
调试使用说明书shr-8s51系列_第3页
调试使用说明书shr-8s51系列_第4页
调试使用说明书shr-8s51系列_第5页
已阅读5页,还剩47页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录一、SHR-8S 人形机器人机体介绍3关于加藤一郎结构体3全身机械结构原理4制造工艺5二、机器人电路板硬件基础6STC12C5A60S2 控制板实物图6STC12C5A60S2 控制板原理图7三、SHR-8S 人形机器人机体参数8四、机器人控制端口定义10机器人坐标平面的划分10机器人各坐标平面舵机的划分12机器人各舵机与控制口的定义13机器人各舵机控制分布14五、舵机12信号介绍15信号的定义15信号控制精度制定16六、单舵机拖动及调速算法171舵机为随构17SH14-M 舵机的位置控制方法17SH14-M 舵机的运动协议18目标规划系统的特征19舵机的追随特性19舵机值测定19舵机值计

2、算20(4)采摆试验验证20DWA 的定义20DWT 的定义20单舵机调速算法21七、8 舵机联动单周期指令算法23控制要求23注意事项2338 路信号发生算法. 24424 路单周期子程序26八、SHR-8S 左腿机械结构29左腿部侧面轴关节介绍29舵机转动正方向制定30左腿半周期运动程序分析31九、双腿蹲起动作. 32双腿蹲起动作程序特点32积分首末位置与过程33十、机器人行走步伐函数341舵机方向制定34机器人前进步伐特点35动作条件35动作时序分析353机器人前进程序. 36行走主程序36左腿半步子程序37右腿半步子程序37向左侧身子程序38向右侧身子程序39左侧身+落左腿子程序40右

3、侧身+落右腿子程序41左侧身+抬右腿子程序42右侧身+抬左腿子程序43右前左后前进子程序44左前右后前进子程序45十一、开发介绍461.KEIL C46(1).在 KEIL C 下建立工程(project)47(2).选择开发类型47(3).添加程序文件到工程48(4).设置工程属性482.STC_ISP_V4.8050十二、注意事项51调试注意事项51其它注意事项51十三、遇到的问题及解决方法52问:如何判断单片机已经坏了?52问:想知道串口和串口线的好坏,应该如何做?52一、SHR-8S 人形机器人机体介绍1关于加藤一郎结构体早在 1966 年,早稻田大学的加藤一郎教授,即国际人形机器人之

4、父就把人形机器人给定型了。头、躯干、四肢的防人结构和被学术界简化并赋予一定数学方程式的数学模型已经注定的现阶段的人形机器人的基本结构。这样做的好处是国际“加藤一郎结构体”。如下图分析:与各国之间的技术接轨。的称其为森汉公司人形机器人 SHR-8S右脚左脚左腿右腿胯骨左右头躯干2全身机械结构原理人类在结构之前花费了大量的时间去昆虫,哺乳动物的腿部移动,甚至登山运动员在爬山时的腿部运动方式。这些帮助更好的了解在行走过发生的一切,特别是关节处的运动。比如,在行走的时候会移动的重心,并且前后摆动双手来平衡的身体。这些了人形机器人行走的基础方式。人形机器人和人类一样,有髋关节,膝关节和足关节。机器人中的

5、关节一般用“度”来表示。一个度表示一个运动可以或者向上,或者向下,或者向右,或者向左。分散在身体的不同部位,所以骨骼结构因此而生。一般的,人形机器人身上装有两个传感器能辅助它水平行走,它们是度传感器和陀螺传感器。它们主要用来让机器人知道身体目前前进的速度以及和地面所成的角度,并依次计算出平衡身体所需要调节量。这两个传感器起的作用和人类内耳相同。要进行平衡的调节,机器人还必须要有相应的关节传感器和 6 轴的力传感器,来感知肢体角度和受力情况。机器人的行走中最重要的部分就是它的调节能力。所以需要检测在行走中产生的惯性力。当机器人行走时,它将受到由地球引力,以及或行进所引起的惯性力的影响。这些力的总

6、和被称之为总惯性力。当机器人的脚接触地面时,它将受到来自地面反作用力的影响,这个力称之为地面反作用力。所有这些力都必须要被平衡掉,而机器人的控制目标就是要找到一个能够平衡掉所有的力。这称做zero moment po (ZMP)。当机器人保持最佳平衡状态的情况下行走时,轴向目标总惯性力与实际地面反作用力相等。相应地,目标 ZMP 与地面反作用力的中心点也重合。当机器人行走在不平坦的地面时,轴向目标总惯性力与实际的地面反作用力将会错位,因而会失去平衡,产生造成跌倒的力。跌倒力的大小与目标 ZMP 和地面反作用力中心点的错位程度相对应。简而言之,目标 ZMP 和地面反作用力中心点的错位是造成失去平

7、衡的主要原因。假若机器人失去平衡有可能跌倒时,下述三个控制系统将起作用,以防止跌倒,并保持继续行走状态。地面反作用力控制:脚底要能够适应地面的不平整,同时还要能稳定的站住。目标 ZMP 控制:当由于种种原因造成机器人无法站立,并开始倾倒的时候,需要控制他的上肢反方向运动来控制即将产生的摔跤,同时还要加快步速来平衡身体。落脚点控制:当目标 ZMP 控制被激活的时候,机器人需要调节每步的间距来满足当时身体的位置,速度和步长之间的关系。3制造工艺由于目前的生产模式趋于完善,大多厂商的条搭建结构,再加上中国目前处于一个世界超级的外贸加工出口型国家,所以森汉科技生产的小型人形机器人与生产的小型人形机器人

8、工艺水平十分接近。有的品牌的小型人形机器人也生产,并且与森汉科技公司的生产线挨得很近。甚至有的零件采用同一条生产线制造,所以共通性较强。这样的一个大环境下,致使森汉科技生产的小型人形机器人与品牌的小型人形机器人制造工艺十分相似。实际生产过,由模具制造先进行,然后再生产全部的零件。其中包括金属零件和器人全身共需 19 付模具完成零件生产。零件。SHR-8S 人形机二、机器人电路板硬件基础除了机器人机体本身以外,还有很重要的一个部分就是机器人的控制器系统。森汉科技生产的控制板具有很好的操作性。目前市面上使用最广泛的是 51 系列单片机,的控制板采用STC12C5A60S2 单片机,大部分元器件采用

9、全表贴工艺。此控制板设计合理,扩展了 STC12C5A60S2系列单片机的所有外接端口。1STC12C5A60S2 控制板实物图STC12C5A60S2 控制板电路板上面的主要元件:CPU:EEPROM:STC12C5A60S2, 48pinLQFP 封装,60KBFlash,内置 2KBEEPROM两片电可擦除充至 190KB。AT24C512,空间共 128KB,使机器人程序器空间扩欠压保护:带欠压保护电路,系统供电低于 6V 时,系统将的复位,且保护电压可调。RS232 接口:4pinRS232 接口,带“CTS”判断位,可同时输出 RS232 电平和 TTL 电平。红外:接收的红外信号

10、,与用户进行信息交互;此接口同时可以做外部中断接收使用。蜂 鸣 器: 发出响声,与用户进行信息交互;IO 口:此电路板共扩展 35 个 IO 口,其中:24 个专业舵机控制口(7.4V),11 个万能口;注:万能接口可以选择 7.4V 或 5V 电压供电,上拉电阻或下拉电阻可选。可用于各种传感器和扩展舵机。编程接口:采用STC 标准的串口 ISP 编程方式;2STC12C5A60S2 控制板原理图此控制板设计合理,功能强大,操作简单。为用户开发了底层程序,并做成子程序。经过简单了解之后,就可以编制自己的程序。这里需要强调几个注意:(1)7.4V 电源的正负问题,一般情况下,红色线是正极,黑色线

11、是负极,控制板上正负极已经用 “+”“ ”号标明。(2)舵机接线遵守标准:在控制板上靠内侧即靠近单片机的一端是控制信号线,中间是电源(一般是 7.4V 正端),最外面的是地(GND)。如下图所示:控制信号线电源线(红)地 线(黑)三、SHR-8S 人形机器人机体参数SHR-8S 人形机器人是 17度小型人形机器人。全身包括 17 个伺服电机(舵机)。每个舵机扭矩为 14kg.cm,全部采用金属齿轮传动。正视图背视图身高:360mm;肩宽:165mm;胸厚:115mm;质量:1.5kg;顶视图侧视图底视图四、机器人控制端口定义由于机器人的机械体与计算机系统相接,所以肯定需要定端口协议。实际上,按

12、照加藤一郎的结构划分,人形机器人分为 3 个坐标平面。1.机器人坐标平面的划分平面定义X 平面(侧平面)舵机ZXYY 平面(面平面)舵机ZYX平面(顶平面)舵机YZX2.机器人各坐标平面舵机的划分Z1Y7X8X7Y5Y8Y6Y3Y1X4X1X5X2X6X3Y4Y23.机器人各舵机与控制口的定义程序中命名ition0 ition1 ition2 ition3 ition4 ition5 ition6ition7定义接口 P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6P0.7平面命名 x1 舵机 x2 舵机 x3 舵机 x4 舵机 x5 舵机 x6 舵机 x7 舵机x8 舵机

13、电路板接口J0 J1 J2 J3 J4 J5 J6J7x 轴ition8 ition9 ition10 ition11 ition12 ition13 ition14ition15P2.0 P2.1 P2.2 P2.3 P2.4 P2.5 P2.6P2.7y1 舵机 y2 舵机 y3 舵机 y4 舵机 y5 舵机 y6 舵机 y7 舵机y8 舵机J16 J17 J18 J19 J20 J21 J22J23y 轴ition16 ition17 ition18 ition19 ition20 ition21 ition22ition23P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P

14、1.6P1.7z1 舵机J8z 轴4.机器人各舵机控制分布注:上图中的 Pn,对应程序中的itionn。P16P14P7P6P12P15P13P10P8P3P0P4P1P5P2P11P9五、舵机信号介绍1信号的定义信号为脉宽调制信号,其特点在于他的上升沿与下降沿之间的时间宽度。具体的时间宽窄协议参考下列讲述。目前使用的舵机主要依赖于模型行业的标准协议,随着机器人行业的渐渐独立,有些厂商已经推出全新的舵机协议,这些舵机只能应用于机器人行业,已经不能够应用于传统的模型上面了。目前,森汉的 SH14-M 舵机采用传统的协议,优缺点一目了然。优点是已经,成本低,旋转角度大(目前所生产的都可达到 185

15、 度);缺点是控制比较复杂。但是它是一款数字型的舵机,其对信号的要求较低:(1)(2)不用随时接收指令,减少 CPU 的疲劳程度;可以位置自锁、位置,这方面了普通的步进电机;其(1)(2)格式注意的几个要点:上升沿最少为 0.5mS,为 0.5mS-2.5mS 之间;SH14-M 数字舵机下降沿时间没要求,目前采用 0.5Ms 就行;也就是说波形可以是一个周期 1mS 的标准;(3)SH0680 为齿轮模拟舵机,其要求连续供给信号;它也可以输入一个周期为 1mS的标准,这时表现出来的跟随性能很好、很紧密。2信号控制精度制定1 DWT = 8uS ; 250DWT=2mS时基寄存器内的数值为:(

16、#01H)01 (#0FAH)250。共 185 度,分为 250 个位置,每个位置叫 1DWT。则:185250 = 0.74 度 / DWT上升沿函数: 0.5mS + NDWT0uS NDWT 2mS0.5mS 0.5Ms+NDWT 2.5mS采 用 的 是 8位STC12C5A60S2CPU,其数据分辨率为 256,那么经过舵机极限参数实验,得到应该将其划分为 250 份。那么 0.5mS-2.5Ms 的宽度为 2mS = 2000uS。2000uS250=8uS则:的控制精度为 8us可以以 8uS 为递增控制舵机转动与定位。舵机可以转动 185 度,那么185 度250=0.74

17、度,则:舵机的控制精度为 0.74 度六、单舵机拖动及调速算法1舵机为随构当其未转到目标位置时,将全速向目标位置转动。当其到达目标位置时,将自动保持该位置。所以对于数字舵机而言,信号提供的是目标位置,运动要靠舵机本身。(3)像 SH-0680 这样的模拟舵机需要时刻供给信号,舵机自己不能锁定目标位置。所以的控制系统是一个目标规划系统。(1)SH14-M 舵机的位置控制方法舵机的转角达到 185 度,由于采用 8 为 CPU 控制,所以控制精度最大为 256 份。目前经过实际测试和规划,分了 250 份。具体划分参见“将 0185 分为 250 份,每份 0.74 度。信号控制精度制定”。控制所

18、需的2ms250=8us;宽度为 0.5ms2.5ms,宽度 2ms。所以得出:信号持续的时间 =度数/8s + 500s;0.5ms-2.5ms0.5ms-30ms舵机角度= 0.74N角度04590135185N0621251872500.5ms1ms1.5ms2ms2.5ms=0.5+N DWT ;(2)SH14-M 舵机的运动协议舵机的转动方向为:逆时针为正转对应 N 值N=0, =0 度N=250,=185 度1 N 250运动时可以外接较大的转动负载,舵机输出扭矩较大,而且抗抖动性很好,电位器的线性度较高,达到极限位置时也不会偏离目标。2目标规划系统的特征(1)舵机的追随特性角度B

19、A时间T舵机稳定在 A 点不动;CPU 发出B 点位置坐标的 舵机全速由 A 点转向 B 点;信号;CPU 发出B 点信号后,应该等待一段时间,利用此时间舵机才能转动至 B 点。那么,具体的保持(等待)时间如何来计算,如下讲解:令:保持时间为 T当TT 时,舵机能够到达目标,并有剩余时间;当 TT 时,舵机不能到达目标;理论上:当T=T 时,系统最连贯,而且舵机运动的最快。实际过由于 2 个: 1 个机器人身上有多个舵机,负载个不相同,所以不同; 某个舵机在不同时刻的外界环境负载也不同,所以不同;则连贯运动时的极限T 难以计算出来。目前采取的方法是经验选取值。(2)舵机值测定舵机的值随时变化,

20、所以只能测定一个平均值,或称出现概率最高的点。依据: 厂商的经验值; 采用SH14-M 具体进试;测试实验: 将 CPU 开通,并开始延时 T; 当延时 T到达后,观察舵机是否到达目标;测定时采用一段双摆程序,伴随示波器用肉眼观察 T与T 的关系。T = = B - A舵机的转速为(3)舵机值计算一般舵机定为 0.16-0.22 秒/60 度;取 0.2 秒/60 度 1.2 秒/360 度 0.617 秒/185 度则为 360 度/1.2 秒,2/1.2 秒=300 度/秒那么 185 度转动的时间为 185 度360 度*1.2 秒= 0.617 秒。(4)采摆试验验证3DWA 的定义将

21、 185 度的转角分为 250 个平均小份。则:每小份为 0.74 度。定义如下:DWA = 0.74 度由于: = 0.2 秒/60 度则:运行 1 DWA 所需时间为:0.74 度*0.2 秒/60 度= 2.467 mS;4DWT 的定义舵机电路支持的信号为 0.5mS2.5mS,总间隔为 2mS。若分为 250 小份,则 2mS250 = 0.008 mS = 8uS定义如下:DWT = 8uS最终:=0.2 秒/60 度实验过,设定舵机运转的目标角度查为 185 度。发现:当 T定在 0.617 秒时,利用示波器观察到舵机能够运动至 2 个目标点。则:T=T= 0.617 秒观察实验

22、过的 T与T 的关系5单舵机调速算法0.5ms-30ms测试内容:将后部下降沿的时间拉至 30ms 没有问题,舵机照样工作。将后部下降沿的时间拉至 10ms 没有问题,舵机照样工作。将后部下降沿的时间拉至 2.6ms 没有问题,舵机照样工作。将后部下降沿的时间拉至 500us 没有问题,舵机照样工作。实践检验出:下降沿时间参数可以做的很小。目前实验降至 500uS,依然工作正常。原因是:(1)舵机电路自动检测上升沿,遇上升沿就触发,以此监测(2)舵机电路自动检测下降沿,遇下降沿就触发,以此监测脉宽“头”。脉宽“尾”。(1)舵机转动时的极限下降沿脉宽20msTT:舵机运转 1DWA(0.74 度

23、)所需要的最小时间,目前计算出的数值为 2.467mS;T 前面的 20 mS 等待时间可以省略,舵机依然工作;而且得出舵机跟随的最快驱动方式。T极限转动方式跟随算法实验得出 1.1ms T 50ms;具体实验数据参照下表舵机 T数据实验表格令疑的地方为 1.1ms 时的表现,得出的T T;也就是说 1.1ms = 2.467ms,显然存在问题。经过考虑重波形图发现,电机真正的启动点如下图:B 点的启动点A启动点BT极限转动方式实际上由 A 到 B 的运动时间为:T = T +(B 点的)T值舵机运转特性T与T 关系该程序可行度备注500us不能跟随T T不可行800us不能跟随T T不可行1

24、ms不能跟随T T可行最快、平滑1.6ms跟随T T可行最快、平滑2ms跟随T T可行最快、平滑2.6ms跟随T T可行最快、平滑10ms跟随T T可行较慢、平滑20ms跟随T T可行较慢、平滑30ms跟随T T可行较慢、平滑40ms跟随T T可以较慢、微抖50ms跟随T T可以很慢、微抖70ms跟随T T不可以很慢、较抖100ms跟随T T不可以很慢、较抖七、8 舵机联动单周期指令算法1控制要求要求同时发给 8 个舵机位置目标值,该指令的执行周期尽量短,目的有 2 个:其一,是为了将来扩充至 24 舵机;其二,目标越快,舵机的转动速度越快;以 8 路为 1 组或称 1 个,连续发出目标位置,

25、形成连续的目标规划曲线,电机在跟随过自然形成了位置与速度的双指标曲线,实现 8 路舵机联动。2注意事项从 24 个端口,P0、P1 到 P2,单 DWT 循环的最小时间只有 8us,所以串行运算是不行的,那么就采用并行运算。目前采用的并行算法是 P0.0P0.7 为一个基本实际案例:P0 口的 8 个位置各不相同;例如:,8 位一并。T 为一个周期,分为 2 部分时间 T1宽2 延时等待Tw端口N 寄存器目标位置(度)N 数值(整数)宽度(ms)P0.0ition0000.500P0.1ition10.7410.508P0.2ition27.4100.58P0.3ition337500.900

26、P0.4ition4741001.300P0.5ition51111501.700P0.6ition61482002.100P0.7ition71852502.50038 路信号发生算法定义数组:arr8; pick_up8;例如:arr8内为 P0 口的 8 路 N 数值,这些数值是根据舵机状态定的,没有规律。pick_up8内为固定的一组逻辑参数。将数组 arr 内的数据由大到小排列,pick_up 内的数据也数之变化,变成:将 N 值做减法,求得:arr0=arr0-arr1=81arr1=arr1-arr2=18arr2=arr2-arr3=13arr3=arr3-arr4=29arr

27、4=arr4-arr5=24arr5=arr5-arr6=16arr6=arr6-arr7=8 arr7=arr7=12每 8 路输出的时间限制在一个 2.5ms 的中断内,开启中断。,并延时 500ms 作为目标位置为 0 的基础。将全部的 8 路输出置为循环 8 次,每次延时 arr 内的值个 8us,再将 P0 口“与” 相应的逻辑参数,例如:N 差值延时时间(N 差值*8us)对应“与”的值相应输出 0 的位相继变成低电平的顺序arr71296us0 xEF(0B11101111)第四位置“0”4arr6864us0XF7(0B11110111)第三位置“0”3arr516128us0

28、 xBF(0B10111111)第六位置“0”6arr424192us0 xFD(0B11111101)第一位置“0”1arr329232us0 xFB(0B11111011)第二位置“0”2arr213104us0 x7F(0B01111111)第七位置“0”7arr118144us0 xFE(0B11111110)第零位置“0”0arr081648us0 xDF(0B11011111)第五位置“0”5arr01234567备注2011201028960362012pick_up765432100 xDF0 xFE0 x7F0 xFB0 xFD0 xBF0 xF70 xEFarr012345

29、67备注1206089201220136102pick_up012345670 xFE0 xFD0 xFB0 xF70 xEF0 xDF0 xBF0 x7F最终输出顺序如下图所示:2.5msTw424 路单周期子程序/#/函数名称:low_level_t0(uchar TH,uchar TL)函数说明:同周期定时器 0 设置及启动程序,使每变化一个变化量的周期相同参数:THTL 定时器初值。出口参数:无/#void low_level_t0(uTH0=THTL8; TL0=THTL;t0bit=0; TR0=1;THTL)/22.1184MHz,2.5Ms 定时 0 xdc00/#/ 函数名称

30、:void T0_errupt(void)errupt 1/ 函数说明:信号低电平时间子程序,控制舵机信号的低电平时间决定舵机转动的速度/参数:低电平时间,500u 为基础/ 出口参数:无/#void T0_errupt(void)errupt 1 TH0=0 xdc; TL0=0 x00;t0bit=1;/22.1184MHz,2.5Ms 定时 0 xdc00/#函数名称:void array( )函数说明:排序子程序,将各个口的 8 位根据时间的长短排序参数:无出口参数:无/#void array()uchar i=0,j=0,x=0; pick_up0=0 xFE; pick_up1=0

31、 xFD; pick_up2=0 xFB; pick_up3=0 xF7; pick_up4=0 xEF;pick_up5=0 xDF;pick_up6=0 xBF; pick_up7=0 x7F;/排序for(i=0;i=6;i+)for(j=i+1;j=7;j+)if(arriarrj)x=arrj;arrj=arri; arri=x;x=pick_upj; pick_upj=pick_upi;pick_upi=x;for(i=0;i=6;i+)arri= arri- arri+1;/#/函数名称:void_24( )函数说明:24 路舵机输出子程序,实现 24 路舵机的参数:无出口参数:

32、无信号在最短的时间内输出/#void_24()uchar i=0,j;for(i=0;i=7;i+)arri=itioni;array( ); low_level_t0(0 xdc00);/取 P0 口舵机对应的值/排序计算/定时器赋初始值,22.1184MHz,2.5Ms 定时 0 xdc00/使口 P0 全部拉高/调用延时 500us 函数P0=0 xff;delay500us(1);/P0 口 8 路同时输出for(i=0;i8;i+)for(j=0;jarr7-i;j+) delay8us(1);P0=P0&pick_up7-i;while(t0bit=0);/for(i=0;i8;i

33、+) arri=itioni+8;array( ); low_level_t0(0 xdc00);/给排序数组赋值/调用排序子程序/定时器赋初始值,22.1184MHz,2.5Ms 定时 0 xdc00P2=0 xff;delay500us(1);/使口P2 全部拉高/调用延时 500us 函数/P2 口 8 路同时输出for(i=0;i8;i+)for(j=0;jarr7-i;j+) delay8us(1); P2=P2&pick_up7-i;while(t0bit=0);/for(i=0;i8;i+)arri=array( ); P1=0 xff;/给排序数组赋值itioni+16;/调用

34、排序子程序/使口 P1 全部拉高/定时器赋初始值,22.1184MHz,2.5Ms 定时 0 xdc00low_level_t0(0 xdc00);delay500us(1);/调用延时 500us 函数for(i=0;i8;i+)/P1 口 8 路同时输出for(j=0;jarr7-i;j+) delay8us(1);P1=P1&pick_up7-i;while(t0bit=0); TR0=0;八、SHR-8S 左腿机械结构1左腿部侧面轴关节介绍双足机器人行走和它的机械结构有的联系。自从 1986 年以来,一直延用的加藤一郎结构,其腿部侧面就如右图所示:它有 3 个度,每个自由度采用 1 个

35、舵机个舵机。图中用 1、2、3 表示这 3其中包含几个重要的几何关系:一般的机器人,腿上半部与下半部长短相近,在机器人步伐的时候可以令其为相等长度。这是 1 个十分关键的地方。在国内,之所以大多的机器人不能行走,其中的一个原因就是将腿上半部与下半部加工成不同长度。导致 CPU 的计算量剧增。原地踏步动作时:L12=L23=+=2(如此简单的函数关系,可以骤减 CPU 的计算量)今后在做一般性时,可以将 L12 和 L23 做成任意长度。如此描述一个简单的积分函数(原地踏步函数):d=dd= d+d(一般 CPU 就用此式进行积分运算)取为 1DWA,则=1DWA,=2DWA即:舵机 1 的|N

36、|=1舵机 2 的|N|=2舵机 3 的|N|=1CPU 一边进行积分运算,一边将数据发送给舵机,令其执行。d=(d+ d)=d+dK+=(K+)+(K+)K、K、K为积分原始初始值,在机器人中表现为初始位置坐标。注意:1-2 和 2-3 的长短要一致会骤减 CPU 的计算量!1232舵机转动正方向制定123(1)由直立状态到下蹲状态过,称为上半周,舵化为;(2)由下蹲状态到直立状态过,舵化为;下半周: 舵机 1 的 N = +舵机 2 的 N = -舵机 3 的 N = -上半周:舵机 1 的 N = -舵机 2 的 N = +舵机 3 的 N = +由于舵机规定的正方向为逆时针方向,则:

37、1方向 1 与舵机反向方向 2 与舵机同向方向 3 与舵机同向腿部运动时,按照从初始位置(即最高站立姿式)起向最低站立姿势过渡时的舵机转动方向为正方向。那么图中标出了 3 个舵的正方向。初始位置 = 121= 91= 112(注意:这些值根据 实际情况 而定,并非一定)3左腿半周期运动程序分析依照上面所讲述的 2 个几何特点, L12=L23; 1、3 点始终垂直共线; 舵机 1 的|N|=1舵机 2 的|N|=2舵机 3 的|N|=1CPU 一边进行积分运算,一边将数据发送给舵机。以上介绍的是积分上半周的左腿动作,起立动作与之相反。右腿的下蹲和起立原理与左腿相同,只是方向与左腿的下蹲和起立方

38、向相反。至积分末,发现先出现极限值 45,那么积分步数为:121-45=76 步。 76DWA=760.74 度=56.24 度=56.24 度=112.48 度=56.24 度积分末:=45=243=188积分始:=121=91=112CPU 进行上半周积分时,腿部逐渐下蹲;CPU 进行下半周积分时,腿部逐渐上抬;下半周:舵机 1 的 N = +1舵机 2 的 N = -2舵机 3 的 N = -1上半周:舵机 1 的 N = -1舵机 2 的 N = +2舵机 3 的 N = +1初始时刻 = 121= 91= 112(注意:这些值根据实际情况而定,并非一定)九、双腿蹲起动作1双腿蹲起动作

39、程序特点X相对其他程序,蹲起程序较为简单,但恰恰是最基础的程序,所以在所有程序中处于中流砥柱的位置。在机器人蹲起过有以下 4 个特点:双腿着地;同起同落;脚、肩保持平行;胸平面轴不动;根据这 4 个特点,采用积分程序将双腿的运动过的各个关节位置计算出来,并实时输送给舵机。共控制 6 个运动轴,分别为左腿的 1、2、3 和右腿的 4、5、6。其中:=1=4=2=5=3=6=2规定起为动作的下半周期规定蹲为动作的上半周期蹲起X4X15X2X6X32积分首末位置与过程积分过程分为上下 2 个半周期,则每条腿有 3 个初始位置。即: A 积分至 B B 积分至 A上半周:下半周:最多可以积分 76 步

40、左右,关节 1、4 会到达极限值。起始位置公式结束位置公式:1= 45 +N4= 156- N2= 243- 2N5=49 + 2N3=188 - N6=52 + N:1= 121 - N4= 80+ N2= 91+ 2N5=201 - 2N3=112 + N6=128 - N积分结束位置可以改变(条件 1、2、3;4、5、6 遵守肩、脚平行)积分起始位置可以改变(条件 1、2、3;4、5、6 遵守肩、脚平行)X4 80156X5 20149X6 12852X1 12145X2 91243X3 112188X4 80156X5 20149X6 12852X1 12145X2 91#243X3

41、112188十、机器人行走步伐函数面的章节里,已经了机器人的基本下蹲动作。下面机器人行走的步伐函数。1舵机方向制定同样,该位置参数来自 1 台 SHR-8S 实验机,其他机器人参数根据各自舵机初始位置而定。参与运动的舵机有 10 个之多,其中 X 平面 6 个,Y 平面 4 个。注意!在实际的前进实验过发现,为了便于更好的行走直立的与人类有些不同。双腿微向外劈叉 5 度-10 度的幅度;目前另外,Y 平面上还有 4 个舵机,均属于的机器人前进程序中主动采用此类方法。部分,现在把对象看成 2 部分。它包括上身与下身;规定上身为质量整体,而不参与计算,在后面的章节中会将最终的完整的动平衡方程。的惯

42、性系数引入,才是Z 平面初始位置: X1=169 X4=80 X2=91 X5=158 X3=112X6=128特别注意,形成周期运动,且保持肩、脚平行,身体不倾斜,那么: Y1、Y2、Y3、Y4 全为平行关系;即:Y1=Y2=Y3=Y4其中如果保持肩、脚平行,身体不倾斜,那么:左腿的 Y1、Y2 为平行关系;右腿的 Y3、Y4 为平行关系;Y3Y1Y2Y4Y 平面初始位置:Y1=104 Y2=104 Y3=146 Y4=146前进动作中,参与的 Y 平面舵机有4 个,分别为:左腿的 Y1、Y2;右腿的 Y3、Y4。2机器人前进步伐特点(1)动作条件机器人前进步伐采用交互式行走步伐。所谓的交互

43、动作,即 Y 平面运动与X 平面运动同时进行;(2)动作时序分析初始位置:双脚直立各 90 度站立或设定一个向外的劈叉值。目前,设定向外劈叉 5 度。动作流程:下蹲左半步左侧身 左侧身+抬右腿抬右腿前进右侧身+落右腿 右侧身循环(N 步)左侧身 左侧身+落左腿抬左腿前进右侧身+抬左腿 右侧身起立右半步动作流程:1.2.下蹲:机器人在下蹲状态下行走,重心下移,有利于稳定。左半步:下蹲结束后,机器人的双脚处于平行状态,如果直接执行左脚一步,右脚一步的行走程序,连续行走时就会形成一脚迈一步,另一脚跟一步,就像个“跛脚”的人一样,而机器人又不像人类一样自己调整步伐的大小,所以就想出了先迈半步的方法,行

44、走开始前左腿迈半步,就是左半步的前进过程与左腿前进一步是相同的,只是步伐是前进一步的一半。右腿前进一步:左侧身,左侧身+抬右腿,抬右腿前进,右侧身+落右腿,右侧身是右腿前进一步的全过程,步伐的大小取决于抬腿的积分步数。左腿前进一步:右侧身,右侧身+抬左腿,抬左腿前进,左侧身+落左腿,左侧身是左腿前进一步的全过程,步伐的大小取决于抬腿的积分步数。右半部:机器人走完设定的步数后,因为开始有了左半步,所以此时两脚比不是平行的,右腿需要跟进半步,右半步的行走过程与右腿前进一步相同,只是步伐是前进一步的一半。3.4.5.首先执行一段下蹲动作,使身体重心下移,注意下蹲的角度,不宜过大,否则会影响后面的抬腿

45、前进动作的幅度。一般的行走前下蹲幅度为 1-48 左右。3机器人前进程序(1)行走主程序/#/函数名称:void walking(uchar foot)功能:行走子程序参数:foot, 表示行走步数出口参数:无/#void walk(char foot)uchar i;sit_down(35);rc_lu_bb(15);/下蹲 35/调用右侧身抬左腿半步子程序,积分步数为 10,/一般为右前左后前进子程序的积分步数的一半for (i=0;ifoot;i+)l_cs_zu(10); lc_ru(10); rf_lb(30); rc_rd(10);r_cs_zu(10);/调用向左侧身子程序/调用

46、左侧身抬右腿子程序/调用右前左后前进子程序/调用右侧身+落右腿子程序/调用向右侧身子程序r_cs_zu(10); rc_lu(10); lf_rb(30); lc_ld(10);l_cs_zu(10);/调用向右侧身子程序/调用右侧身+抬左腿子程序/调用左前右后前进子程序/调用左侧身+落左腿子程序/调用向左侧身子程序lc_ru_bb(15);/调用半步子程序,积分步数与前一个半步相同stand_up(35);/起立initial_ition();(2)左腿半步子程序/#/函数名称:void rc_lu_bb(uchar foot)功能:右侧身+抬左腿子程序+右侧身+落右腿子程序 (半步)参数:

47、foot, 表示积分步数。出口参数:无/#void rc_lu_bb(r_cs_zu(10); rc_lu(10); lf_rb(foot); lc_ld(10); l_cs_zu(10);foot)/调用向右侧身子程序/调用右侧身+抬左腿子程序/调用左前右后前进子程序/调用左侧身+落左腿子程序/调用向左侧身子程序(3)右腿半步子程序/#/函数名称:void lc_ru_bb (uchar foot)功能:左侧身+抬右腿+左侧身+落左腿子程序 (半步)参数:foot, 表示积分步数。出口参数:无/#void lc_ru_bb(foot)uchar i; l_cs_zu(10); lc_ru(1

48、0); rf_lb(foot); rc_rd(10);r_cs_zu(10);/调用向左侧身第 2 族子程序/调用左侧身抬右腿子程序/调用右前左后前进子程序/调用右侧身+落右腿子程序/调用向右侧身第 1 族子程序for(i=0;i30;i+)/的最后复位补偿ition6+=1; ition7-=1;_24();low_level_500u(15);(4)向左侧身子程序/#/函数名称:void l_cs_zu1(uchar foot)功能:向左侧身子程序参数:foot, 表示积分步数。出口参数:无/#void l_cs_zu(foot)uchar i;for(i=0;ifoot;i+)ition

49、8-=1; ition9+=1;ition10-=1;ition11+=1;_24();low_level_500u(10);(5)向右侧身子程序/#/函数名称:void r_cs_zu(uchar foot)功能:向右侧身子程序参数: foot, 表示积分步数。出口参数: 无/#void r_cs_zu(foot)uchar i;for(i=0;ifoot;i+)ition8+=1; ition9-=1;ition10+=1;ition11-=1;_24();low_level_500u(10);(6)左侧身+落左腿子程序/#/函数名称:void lc_ld(uchar foot)功能:左侧

50、身+落左腿子程序参数:foot, 表示积分步数。出口参数:无/#void lc_ld(foot)uchar i;for(i=0;ifoot;i+)ition0+=2; ition1-=4;ition2-=2;ition8-=1; ition9+=1; ition10-=1; ition11+=1;_24();low_level_500u(20);(7)右侧身+落右腿子程序/#/函数名称:void rc_rd(uchar foot)功能:右侧身+落右腿子程序参数:foot, 表示积分步数。出口参数:无/#void rc_rd(foot)uchar i;for(i=0;ifoot;i+)ition

51、3-=2; ition4+=4; ition5+=2;ition8+=1; ition9-=1; ition10+=1;ition11-=1;_24();low_level_500u(20);(8)左侧身+抬右腿子程序/#/函数名称:void lc_ru(uchar foot)功能:左侧身+抬右腿子程序参数:foot, 表示积分步数。出口参数:无/#void lc_ru(foot)uchar i;for(i=0;ifoot;i+)ition3+=2; ition4-=4;ition5-=2;ition8-=1; ition9+=1; ition10-=1; ition11+=1;_24();l

52、ow_level_500u(10);(9)右侧身+抬左腿子程序/#/函数名称:void rc_lu(uchar foot)功能:右侧身+抬左腿子程序参数:foot, 表示积分步数。出口参数:无/#void rc_lu(foot)uchar i;for(i=0;ifoot;i+)ition0-=1;ition1+=2; ition2+=1;ition8+=1; ition9-=1; ition10+=1; ition11-=1;_24();low_level_500u(10);(10)右前左后前进子程序/#/函数名称:void rf_lb(char foot,end)功功能:右前左后前进子程序能

53、:参数:foot, 表示积分步数。出口参数:无/#voidrf_lb(foot)uchar i;for(i=0;ifoot;i+)ition0+=1; ition2+=1; ition3+=1;ition5+=1;if(ition7!=ition_initial7)ition6-=3;ition7-=3;elseition6-=3;_24();low_level_500u(10);(11)左前右后前进子程序/#/函数名称:void lf_rb(char foot)功能:左前右后前进子程序 参数:foot, 表示积分步数。出口参数:无/#voidlf_rb(ucharfoot)i;for(i=0

54、;ifoot;i+)ition0-=1;ition2-=1;ition3-=1;ition5-=1;if(ition6=ition7+=3;elseition6+=3; ition7+=3;_24();ition_initial6)low_level_500u(10);十一、开发介绍1.KEIL C使用的单片机是 STC12C5A60S2,是 51 的内核。指令周期都大幅度的缩减,运行速度自然提高。由于使用的是 51 内核,所以可以使用支持 C51 的开发。帮助编辑程序和编译程序。KEIL C 就是这样一款KEIL C 的界面如下:功能菜单项目文件列表编辑区系统信息区在项目中可以建立自己的工程

55、,根据工程添加编辑程序文件。最终使用“完全编译”功能完成编译。在烧录单片机之前还应该生成对应的“.HEX”EL 二进制文件。有了这个文件,才能使用 STC 提供的进行烧写单片机的操作。(1).在 KEIL C 下建立工程(project)在“project”菜单下选择“New project”,这时会有框询问你将工程保存在什么目录下,并询问工程名称,这个名称将使系统相关的文件都已这个名字为开头,包括要用到 HEX 文件。:(2).选择开发类型在设置好文件名和目录以后,系统会询问你所使用的类型。这里只使用标准的el8052AH 即可。下图是的选择。点击“确定”完成工程向导。(3).添加程序文件到工程将制作好的 C 程序加入到新的工并左键点击对应选项添加文件。去。可以在下图中的对应位置,点击右键(4).设置工程属性每个工程的要求不一样,在 KEIL置好工程属性以方便开发。C 中为这些属性做了一个属性选项。可以设首先在“project”菜单下选择“options for Filexx”。如下图所示:之后就会弹出工程属性框,在第三页“Output”选项卡下,将生成的选项打上对勾,如下图所示:HEX文件点击确定完成工程属性的调整,这样在之后生成的过就会生

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论