博舍

雅马哈机器人控制器用户手册 机器人控制流程图解说明书

雅马哈机器人控制器用户手册

本产品为工业机器人,可进行各种高级编程,在工作时具有极大的自由度。为了正确安全使用YAMAHA机器人及控制器,请务必遵照本书中所述安全相关指示及注意事项。如果疏忽了安全对策或使用错误,不仅会导致机器人及控制器的故障或损伤,还有可能会导致使用者(安装者、作业者或调节、检查者等)受伤或死亡等重大事故。也请严格遵守各章节的注意事项。

六足仿生机器人的控制与实现

目录摘要IAbstractII1文献综述11.1国外六足仿生机器人的发展情况11.2国内六足仿生机器人的发展情况21.3六足仿生机器人研究中存在的问题21.4六足仿生机器人的发展趋势31.5论文的主要内容31.6小结42六足仿生机器人的结构分析与步态规划52.1昆虫运动原理分析52.2六足仿生机器人六边形模型和长方形模型之间的比较62.3使用Inventor软件对六足仿生机器人实体造型82.4六足仿生机器人的结构分析92.5六足仿生机器人的步态规划112.5.1机器人坐标系的定义112.5.2六足仿生机器人腿的运动分析122.5.3牛顿―辛普森求解方法在运动求解中的应用142.5.4六足仿生机器人的直线行走步态162.5.5六足仿生机器人的转弯步态182.5.6六足仿生机器人的横向行走步态192.5.7六足仿生机器人的越障步态202.6小结223六足仿生机器人控制系统的硬件设计233.1舵机的原理与控制233.2控制系统的方案设计和选择243.3控制系统分析253.3.1主控芯片介绍253.3.2控制模块设计273.3.3电源模块设计273.3.4串口通信模块设计283.3.5无线通信模块293.4小结304六足仿生机器人控制系统的软件设计314.1控制系统的主程序314.2六足仿生机器人的单腿控制程序设计324.3六足仿生机器人的直线行走程序设计334.4六足仿生机器人的转弯程序设计354.5六足仿生机器人的越障程序设计364.6小结375结论与展望38参考文献40致谢421.5论文的主要内容以六足仿生机器人为研究对象,研究了六足仿生机器人的控制系统。(1)基于昆虫的身体结构和运动机理,给出了六足仿生机器人的简化结构模型。研究了六足仿生机器人的三足步态,详细分析了直线行走步态和转弯步态。(2)对六足仿生机器人的矩形模型和六边形模型进行了分析比较。(3)采用一片式解决方案,设计并制作了六足仿生机器人的硬件控制系统。系统具有良好的稳定性和可扩展性。(4)采用KeiluVision3编写了六足仿生机器人控制系统的程序。通过编译、仿真、调试,实现了对六足仿生机器人的控制。(5)对六足仿生机器人进行建模,使用Matlab进行系统仿真。并对程序进行移植,实现了六足仿生机器人的高实时性和高适应性的步态控制。3六足仿生机器人控制系统的硬件设计六足仿生机器人有6条腿,而每条腿有3个转动关节,共计18个关节。每个关节由一个舵机驱动,因此需要18路PWM来控制这18个舵机。因此控制系统设计的关键是如何协调控制这18个舵机来实现直线行走和转弯等步态。此外,我们要设计的是能够自己计算生成步态所需数据并且能够根据需要实时调节步态的控制系统,所以主控芯片需要具有足够快的执行速度和良好的数学计算能力。3.1舵机的原理与控制舵机又名伺服电机,是一种位置伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。舵机可以在自动控制和航模中作为基本的输出执行机构,其简单的控制和输出使得单片机系统非常容易与之接口。舵机的工作原理:控制信号由接收机的通道进入信号调制芯片,获得直流偏置电压。它内部有一个基准电路,产生周期为20ms,脉冲宽度为1.5ms的基准信号,将获得的直流偏置电压与电位器的电压比较,获得电压差输出。最后,电压差的正负输出到电机驱动芯片决定电机的正反转。当电机转速一定时,通过级联减速齿轮带动电位器旋转,使得电压差为0,电机停止转动。舵机的控制需要一个周期20ms左右的脉冲,脉冲的高电平部分一般为0.5~2.5ms。如图3.1所示。图3.1舵机控制信号

输入信号的脉冲宽度和舵机输出转角之间呈线性对应关系,如图3.2所示。图3.2控制信号脉宽和舵机转角之间的关系

在我们的六足仿生机器人上使用的是MG995舵机,其参数如下:1.尺寸:40.7×19.7×42.9mm2.重量:55g3.反应转速:无负载速度0.17s/60°(4.8V);0.13s/60°(6.0V)4.工作死区:4us5.工作电压:3.0~7.2V6.工作扭矩:13kg·cm7.使用温度:-30~+60℃

#include"spider.h"#include"stm32f10x_init.h"voidSPDRStructInit(SPIDER*spdr){spdr->Spdr_State=SPDR_STAT_NONE;spdr->Spdr_Height=30.0;spdr->Right_Front_Leg.Height=spdr->Spdr_Height;spdr->Right_Front_Leg.Length=140.0;spdr->Right_Front_Leg.anglenear=90.0;spdr->Right_Front_Leg.Joint_Far=540;spdr->Right_Front_Leg.Joint_Mid=540;spdr->Right_Front_Leg.Joint_Near=540;spdr->Right_Middle_Leg.Height=spdr->Spdr_Height;spdr->Right_Middle_Leg.Length=140.0;spdr->Right_Middle_Leg.anglenear=90.0;spdr->Right_Middle_Leg.Joint_Far=540;spdr->Right_Middle_Leg.Joint_Mid=540;spdr->Right_Middle_Leg.Joint_Near=540;spdr->Right_Back_Leg.Height=spdr->Spdr_Height;spdr->Right_Back_Leg.Length=120.0;spdr->Right_Back_Leg.anglenear=90.0;spdr->Right_Back_Leg.Joint_Far=540;spdr->Right_Back_Leg.Joint_Mid=540;spdr->Right_Back_Leg.Joint_Near=540;spdr->Left_Front_Leg.Height=spdr->Spdr_Height;spdr->Left_Front_Leg.Length=140.0;spdr->Left_Front_Leg.anglenear=90.0;spdr->Left_Front_Leg.Joint_Far=540;spdr->Left_Front_Leg.Joint_Mid=540;spdr->Left_Front_Leg.Joint_Near=540;spdr->Left_Middle_Leg.Height=spdr->Spdr_Height;spdr->Left_Middle_Leg.Length=140.0;spdr->Left_Middle_Leg.anglenear=90.0;spdr->Left_Middle_Leg.Joint_Far=540;spdr->Left_Middle_Leg.Joint_Mid=540;spdr->Left_Middle_Leg.Joint_Near=540;spdr->Left_Back_Leg.Height=spdr->Spdr_Height;spdr->Left_Back_Leg.Length=120.0;spdr->Left_Back_Leg.anglenear=90.0;spdr->Left_Back_Leg.Joint_Far=540;spdr->Left_Back_Leg.Joint_Mid=540;spdr->Left_Back_Leg.Joint_Near=540;}voidSPDRChangeHeight(SPIDER*spdr,doublenewheight){spdr->Spdr_Height=newheight;spdr->Right_Front_Leg.Height=newheight;spdr->Right_Middle_Leg.Height=newheight;spdr->Right_Back_Leg.Height=newheight;spdr->Left_Front_Leg.Height=newheight;spdr->Left_Middle_Leg.Height=newheight;spdr->Left_Back_Leg.Height=newheight;}voidSPDRRenovateAllData_H(SPIDER*spdr){TIM_RFLJfarRenovate(spdr->Right_Front_Leg.Joint_Far);TIM_RFLJmidRenovate(spdr->Right_Front_Leg.Joint_Mid);TIM_RFLJnearRenovate(spdr->Right_Front_Leg.Joint_Near);TIM_RMLJfarRenovate(spdr->Right_Middle_Leg.Joint_Far);TIM_RMLJmidRenovate(spdr->Right_Middle_Leg.Joint_Mid);TIM_RMLJnearRenovate(spdr->Right_Middle_Leg.Joint_Near);TIM_RBLJfarRenovate(spdr->Right_Back_Leg.Joint_Far);TIM_RBLJmidRenovate(spdr->Right_Back_Leg.Joint_Mid);TIM_RBLJnearRenovate(spdr->Right_Back_Leg.Joint_Near);TIM_LFLJfarRenovate(spdr->Left_Front_Leg.Joint_Far);TIM_LFLJmidRenovate(spdr->Left_Front_Leg.Joint_Mid);TIM_LFLJnearRenovate(spdr->Left_Front_Leg.Joint_Near);TIM_LMLJfarRenovate(spdr->Left_Middle_Leg.Joint_Far);TIM_LMLJmidRenovate(spdr->Left_Middle_Leg.Joint_Mid);TIM_LMLJnearRenovate(spdr->Left_Middle_Leg.Joint_Near);TIM_LBLJfarRenovate(spdr->Left_Back_Leg.Joint_Far);TIM_LBLJmidRenovate(spdr->Left_Back_Leg.Joint_Mid);TIM_LBLJnearRenovate(spdr->Left_Back_Leg.Joint_Near);}voidSPDRRenovateAllData_S(SPIDER*spdr,u16*array){spdr->Right_Front_Leg.Joint_Far=array[0];spdr->Right_Front_Leg.Joint_Mid=array[1];spdr->Right_Front_Leg.Joint_Near=array[2];spdr->Right_Middle_Leg.Joint_Far=array[3];spdr->Right_Middle_Leg.Joint_Mid=array[4];spdr->Right_Middle_Leg.Joint_Near=array[5];spdr->Right_Back_Leg.Joint_Far=array[6];spdr->Right_Back_Leg.Joint_Mid=array[7];spdr->Right_Back_Leg.Joint_Near=array[8];spdr->Left_Front_Leg.Joint_Far=array[9];spdr->Left_Front_Leg.Joint_Mid=array[10];spdr->Left_Front_Leg.Joint_Near=array[11];spdr->Left_Middle_Leg.Joint_Far=array[12];spdr->Left_Middle_Leg.Joint_Mid=array[13];spdr->Left_Middle_Leg.Joint_Near=array[14];spdr->Left_Back_Leg.Joint_Far=array[15];spdr->Left_Back_Leg.Joint_Mid=array[16];spdr->Left_Back_Leg.Joint_Near=array[17];}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

上一篇

下一篇