好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

六脚机器人总说明文档.docx

97页
  • 卖家[上传人]:j****9
  • 文档编号:45191777
  • 上传时间:2018-06-15
  • 文档格式:DOCX
  • 文档大小:5.62MB
  • / 97 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 说明文档一、机械部分:参考目前市面上的六脚仿真机器人,本课题选用 5052 铝合金作为机器人身架的主要 材料,这样机器人既能满足强度要求,也能满足轻便性要求同时,对外表进行烤漆处理, 显得厚实而稳重,富有质感如图为机械结构的总三维图:机器人整体上采用对称式结构,由六只脚和底架(身体)组成每只脚有三个关节, 每个关节处采用舵机连接,所用舵机型号为:HS-645MG,可在固定平面内旋转 180° 其中舵机 1 控制机器人脚前后摆动;舵机 2 控制机器人上下摆动;舵机 3 控制机器人 内外伸缩三个舵机配合即可实现机器人腿部在三位平面内的摆动机器人身体、腿部均布满各种镂空图案,主要有三点作用:一、减轻机器人重量;二、 增加机器人的美观度;三、作为安装和定位孔 机器人采用对称式结构,其主要尺寸大致为:机器人全长:500.0mm;底架(身体宽):228.0mm;舵机 1(Leg1)距底架最前方距离:60.0mm;Leg1 与 Leg2 距离:195.0mm;Leg1 与 Leg3 距离:390.0mm; 每只脚上舵机 2 与舵机 3 距离:120.0mm;舵机 3 与脚底距离:150.0mm 机械人详细尺寸,三维图和工程图详见打包文件 “三维图及二维尺寸图” ,用户首先应该安装 solidworks(2009 及以上版本)三维制图软件。

      二、舵机及其驱动控制:2.1 舵机原理介绍 舵机是一个通过输出轴的转动来控制物体转动的装置它在特定编码的驱使下可以转 动到工作范围内的任意给定位置因为它的轻便,位置控制简易且精确,在机器人中使用 尤多多舵机的协调工作可满足机器人的多自由度要求 舵机可以实现 0~180°的旋转,当轴处于正确位置时,舵机将停止运动;当所在位置 不对时,电路则驱动电机运转到需求位置 舵机是采用比例调节方式控制速度当舵机转动的距离大时,则加载在舵机上的能量 就大,反之亦然 而舵机的转动角度控制是由加载在控制线上的脉冲周期完成的,即所谓的脉冲编码调 制舵机设定为每隔 20ms 接受一个脉冲,这样的话,实际脉冲长度就可用来控制舵机转 动的角度如图 3.1,例如 1.5ms 的脉冲可使舵机转动 90°2.2 舵机控制 由上述机械结构介绍可知,本六脚机器人是通过控制 18 个舵机来实现机器人的运动的但如何协调好各舵机的动作,让其满足功能需求?这就需要用到舵机控制板 舵机控制板按控制舵机数目(接口数)的多少,可分为 8 路舵机控制器,16 路舵机 控制器,32 路舵机控制器等等考虑到成本以及控制舵机的数量,本课题采用两块 16 路 舵机控制器串联的方式来控制舵机。

      选用型号为 PARALLAX 公司提供的 Propeller Servo Controller USB(#28830,简称 PSCU)如图 3.2 所示:图 3.2 舵机控制板PSCU 具有下述多项特点: ①可串联两块控制板实现 32 路舵机控制; ② 独立的螺旋式接线柱为控制板供电,舵机则可通过开关控制关停; ③ 其所用固件开放源代码; ④ 可通过 USB 接口或者串行通信接口编程; ⑤ 舵机速度可控PSCU 规格及性能: ① 电源要求:逻辑电平 5VDC@~60mA,4.8~7.5VDC 控制舵机; ② 通信:异步串行通信@2400bps 或者 38.4kbps(TTL 或 USB) ; ③ 工作温度:32~158°F(0~70°C) ; ④ 尺寸:2.26x1.80x0.65in(57.3x45.7x16.5mm); 2.3 如何使用舵机控制板 在使用控制板前,需通过螺旋式接线柱给控制板提供 4.8~7.5V 的直流电,同时为使舵 机运动,还需给舵机提供 5V 的直流电此项可通过 USB 接口(如图 3.3)或者通过舵机控制板左上方的 Serial In 处的杜邦针供电(TTL 电平,如图 3.4) 。

      图 3.3 PSCU-USB 供电电路连接图图 3.4 PSCU-主控制板供电电路连接图 USB 调试: ①安装FTDI VCP驱动(下载地址: ; ②安装PSCI软件(访问网址,并搜索28823) 双击软件图标,即可获 得图3.5所示,连接好USB线,在界面上选择COM口,获取PSC版本,即可使用图 3.5 PSCI 控制界面 图中每个channel的进度条,可发现对应舵机会向相应方向发生一定度数的旋转这可 用来进行舵机控制调试,从而获取舵机位置值,来书写步态注意:图中数据在编入ARM 程序中时,应先除以2倍,才是实际数据,即图中的中心处1500对应实际的750 更多功能可参照PARALLAX公司提供的Propeller Servo Controller USB说明文档 当使用双块板时,其连接方式为:首先将主板的Serial In(两排,选上排)引出按高低 电平信号线要求插在主控制板(STM32板)上,其中红色线接5V电源,黑色线接地,白色 线接信号线,即PA9然后将副板的Serial In(上排)引出插在主板的Serial In处(下排) 最后通上电源即可 了解了PSCI的基本功能,并按要求连接好电路后,首要做的就是将舵机位置的初始值 找出。

      通过拖动进度条,并观察机器人各腿的位置,从而确定舵机初值笔者提供的舵机 初始值均为六脚与身体垂直时的值,且2、3关节夹角近似为90°对于要求的机器人的每 一个动作值都可以事先用这个界面调试,观察机器人的位置并记下相应的舵机脉冲值以备 编程时使用另外,可以通过算法运算来标定各个舵机的角度值,详细请参考附录 2.4 控制板程序编写控制板程序编写 ㈠基本工作准备与注意事项: 前述工作准备停当,即可开始程序的编写PARALLAX 公司提供的说明文档中提供了 BS2 程序,需要通过 C 语言转译,才可供 ARM 板识别 首先注意的是 PSCU 板的默认波特率为 2400bps,所以在编写串行通信程序时,应将 串行通信的波特率设置为 2400bps(具体见 4.4 节关于 USART 设置的介绍) 当然本控制板 亦可通过程序设置,将波特率改为 38.4kbps,具体内容下面会介绍到此外,控制板接收 的异步通信数据格式要求还有,正相,8 个数据位,无奇偶校验位,1 个或 2 个停止位 其次控制板分为主副板,则对应的舵机控制通道号即为 0~31;即副板的通道号再原 号基础上加 16 即可如果按序连接舵机,可使编程变得较为简单,通过简单的数学关系进 行数据处理,但线路凌乱,看起来不是很美观;本课题采用的是对称连线,即选用通道号0~8,23~31;当然,这样编程相对就复杂一些。

      最后关于主副板的界定还需提醒一句,由于硬件可能出现 bug,实际上控制板可能通 道号等没有按照说明书的来,在调试过程中,可多试几次,按照实际结果编程本课题在 调试过程中即出现了问题,实际的主副板是颠倒的,且必须将副板与主控制板(STM32) 连接才可使用 ㈡㈡通信协议规则:通信协议规则: PSCU 为用户提供了多种控制功能,但每种控制字符串均是以!SC 开始,以 0x0D 结束, 中间有间隔 4 个主控制字符,下面将一一介绍: ①①位置命令位置命令————设置舵机的位置设置舵机的位置 控制字符串为:“!SC” 其中 channel 为通道号,即前述的 0~31;ramp speed 为一字节值,用于舵机转速控制, 其变化范围为 0~63,且数值越大,转速越小;lowbyte 为舵机位置的低字节,highbyte 为 舵机位置的高字节通过改变 lowbyte 与 highbyte 值即可改变舵机位置,其值变化范围为 250~1250 位置命令控制板最基本的命令,往往也是唯一用到的功能通过此命令,可以实现舵 机按要求的转动,从而满足行走等多功能要求②②SBR————设置波特率设置波特率 控制字符串为:“!SCSBR” 其中 mode 是用来设置波特率的,0 代表 2400bps,1 代表 38.4kbps。

      控制板的默认波特率为 2400bps,无需设置,但如果需要使用 38.4bps 的波特率进行 通信时,可使用该程序对波特率进行更改③③RSP————返回位置值返回位置值 控制字符串为:“!SCRSP” 其中 channel 为通道号 与 VER?一样,需要进行输入输出的设置,方能返回位置值,这对编程很有用处,可 以通过读取位置值,判断其是否到位来实现延迟,精确性较高本课题未使用读者可拓 展功能④④PSS————设置软件口设置软件口 控制字符串为: “!SCPSS” 其中 mode 为 0 代表 0~15;1 代表 16~31 可能由于板子的问题,实际过程中并未起作用,当控制板没问题时,可以根据个人喜 好设置控制板的端口号,为编程提供便利⑤⑤PSD————使端口无效使端口无效 控制字符串为: “!SCPSD” 其中 channel 为通道号 此功能与 PSE 功能配合使用,在适当时候可能才生意想不到的效果⑥⑥PSE————使端口恢复有效使端口恢复有效 控制字符串为: “!SCPSE” 其中 channel 为通道号 此功能用于 PSD 后,用来恢复端口的正常使用 其余的功能控制命令此处便不再赘述,因为一般情况下无法用到。

      ㈢㈢C 语言程序编写简介:语言程序编写简介: 由于说明书中只提供了 BS2 程序,较难普及,需使用应用较广的 C 语言编写 从控制命令的格式可以看出,无论哪种方式,都是 8 字节的字符串,于是,可定义一个联合体(结构体亦可) ,来储存这一串字节: typedef union _SERVO_PACKET { char stream[8];struct {char CR : 8;char B3 : 8;char B2 : 8;char B1 : 8;char B0 : 8;unsigned SC : 24;} packet; } SERVO_PACKET; SERVO_PACKET pac;并将三字节的 SC 初始化为 0x215343 或”!SC”,将 CR 初始化为 0x0D这样在编写各种控 制命令函数时,只要改变 B0~B3 的值即可例,位置命令函数: void SendPacket(char RS, char Channel, int Position) { int i = 0;pac.packet.B0 = Channel;pac.packet.B1 = RS; pac.packet.B2 = LOWBYTE(Position); pac.packet.B3 = HIGHBYTE(Position); for(i = 7 ; i >= 0 ; i--) { ser_putbyte(pac.stream[i]);} //该函数 4.4 节介绍,作用为发送单个字 节}其中 LOWBYTE()、HIGHBYTE()函数的定义为: #define LOWBYTE(v) ((unsigned char) (v)) #define HIGHBYTE(v) ((unsigned char) (((unsigned int) (v)) >> 8))其功能为获取数值(位置值)的低八位与高八位。

      这即可为编程提供很大方便以此类推,其它命令的函数可以根据需要只要参考上述的 位置命令函数编写即可在此基础上以及之前用 PSCI 软件调试出的舵机初始值,即可编写 舵机初始化程序了 void Initservo(void) { int i=0;for(i=0;iCRL=(GPIOD->CRLreturn (data);}函数二:int SendChar (int ch) { USART_SendData(USART1, (unsigned char) ch); while。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.