wifi说明动作调用与组合_第1页
wifi说明动作调用与组合_第2页
wifi说明动作调用与组合_第3页
wifi说明动作调用与组合_第4页
wifi说明动作调用与组合_第5页
免费预览已结束,剩余9页可下载查看

付费下载

下载本文档

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

文档简介

1、二次开发例程解析二次开发例程解析 0、欢迎使用优宝特智能机器人感谢您购买山东优宝特智能机器人有限公司出品的智能机器人e-Dog!e-Dog是一款可以进行二次开发的智能机器狗,昵称Billy。它具有卓越的运动性能,丰富的传感认知系统,生动的智能应用。最主要的,您可以使用它进行非常方便的二次开发。因为它具有开放的底层控制端口、步态运动代码例程和通信协议,且它具有开放的板载安卓系统,您可以从底层到顶层,自由编程,灵活操控。单个动作的调用在入门必备这个文档中,我们详细介绍了如何配置并连接控制四足机器人的方法,并测试了向四足机器人发送坐下命令的例程,接下来我们一起来研究如何调用四足机器人的其他动作。1.

2、1 能够完成的动作介绍四足机器人内部集成了多种步态算法,能够完成多种仿生步态运动,具备的全部动作包含在表一当中,您可以通过查表找到您需要的动作。表一 四足机器人具备的动作列表动作名称源代码名称说明原地踏步-Mark四足机器人在原地对角两足同步进行原地踏步运动暂停模式-Stop四足机器人从任意状态恢复到暂时停止运动模式,保持初始站立姿态Trot步行前进-ForwardTrot四足机器人以对角两足同时运动步态向前运动Trot步行后退-BackwardTrot四足机器人以对角两足同时运动步态向后运动步行向左横行-WalkLeftside四足机器人以对角两足同时运动步态向左横行步行向右横行-WalkR

3、ightside四足机器人以对角两足同时运动步态向右横行步行向左自转-Leftturn四足机器人以本体为中心进行左转自传步行向右自转-Rightturn四足机器人以本体为中心进行右转自传向左方向旋转-CircleLeftturn四足机器人以本体外某点为中心进行向左的圆周运动向右方向旋转-CircleRightturn四足机器人以本体外某点为中心进行向右的圆周运动中高速跑-FlyingTrotMidspd四足机器人使用flyingtrot步态向前奔跑,时速0.5m/sFlyingTrot奔跑-FlyingTrotMaxspd四足机器人使用flyingtrot步态向前奔跑,时速0.9m/s姿态调整

4、展示-AttitudeAdaption四足机器人向左右及俯仰方向调整角度,展示躯干能够向四个方向调整到的最大角度斜坡适应展示-SteephillAdaption把四足机器人放到斜坡上,机器人自动调整自身姿态,保持躯干属于水平状态站立姿态抗冲击-AntiShockStand机器人属于站立姿态,可以承受来自侧面的冲击,并自动调整姿态,从而在受到冲击的情况下能够保持站立不倒前进姿态抗冲击-AntiShockForward机器人属于前进步态,可以承受来自侧面的冲击,并自动调整姿态,从而在受到冲击的情况下能够保持不倒,在外力冲击结束以后继续前进调用花样动作-FlashAction四足机器人将会运行自身存

5、储的花样动作,花样动作可以使用我们提供的上位机编程软件进行设计和下载坐下-Sitdown四足机器人执行坐下动作迷宫行走-MazeWalk四足机器人以trot步态前进,同时打开眼睛处传感器,前进过程遇到障碍物自动绕过,继续行走关闭迷宫行走-CloseMazeWalk四足机器人恢复停止姿态,关闭眼睛处传感器运动过程避障-ObstacleAvoid四足机器人打开眼睛处传感器,不停检测前方是否有障碍物,如果有,则停止当前动作,后退几步停下。关闭运动过程避障-CloseObstacleAvoid四足机器人关闭眼睛处传感器,关闭检测障碍物功能关节休眠-Sleep四足机器人关闭关节舵机的输出,属于休眠状态开

6、机运行-FlashActionPOn开机自动运行一次内部存储的花样动作关闭开机运行-FlashActionPOff关闭开机自动运行一次内部存储的花样动作功能1.2 协议解读表一列出了四足机器人能够完成的所有动作,这些动作的调用需要通过发送符合协议的命令格式,通信协议的详细说明在随机光盘中的“接口文档.docx”中。如何理解协议呢?举个例子,假如想调用“坐下”,首先打开“接口文档”,找到对应的协议定义,如下图:完整的命令为:8F 00 01 28 29 FF。表的第一行说明了这些数据都是十六进制数,数制的定义与转换您可以查阅相关资料。当需要四足机器人执行“站立抗冲击”动作时,您需要把这一串命令完

7、整的发送给四足机器人,它才会执行。我们在“入门必备”介绍过,坐下命令的发送是通过源代码里面的函数sitdown()来发送,在这个函数里面,我们可以找到协议定义的坐下命令,如下图所示:图中,0 x8F 的意思是十六进制的8F。在我们提供的例程里面,您需要找到对应的名为“-Sitdown”的例程,通过软件打开工程,编译运行,或者执行对应的.exe文件,四足机器人就会执行这个动作。1.3 调用例程包由于不同的动作调用大同小异,因此我们不再一一介绍每一个动作的例程,而是将例程统一存储在“简单动作调用例程”文件夹下面,如下图所示:里面的每一个动作的例程都经过编译运行测试,您可以根据需要来调用。1.4 修

8、改命令动作的第二种调用方法是根据协议修改。假如说您打开了一个编译好的工程,举个例子,打开了“-Sitdown”工程,但是您不想使用“坐下”这个动作,而是想使用“前进”这个动作,并且您不想重新打开对应的“-Forward”那个工程,那么您也可以直接在已有的工程里面修改。步骤如下:打开“接口文档.docx”,找到“前进”对应的命令,如下图:第二步是找到源代码里面对应的函数,也就是刚才所说的sitdown()函数,把里面的命令修改成“前进”的命令,如下图所示:保存并编译,运行,就会看到四足机器人不再执行坐下命令,而是修改成了前进。1.5 调用函数动作的调用还有第三种办法,修改函数。为了用户使用方便,

9、我们提供了第三种动作调用方法。假如说您打开了“-Sitdown”,已经编译运行通过,现在需要调用“左转”的命令,而您又不想修改“坐下”的函数,因为有可能程序别的地方会用到。那么您可以打开我们提供的“ActionFunction.c”文件(路径:WIFI连接使用例程函数汇总),里面包含了所有动作的函数。如下图所示:您需要找到“左转”对应的函数Leftturn(),如下图所示:选中左转函数的代码,包括函数说明都复制下来。打开源代码里面的“WIFISitdown.cpp”文件,在坐下函数后面,把刚才复制的代码粘贴过来,如下图所示:找到main()函数,在需要调用动作的地方添加左转函数的调用,如下图:

10、编译,运行,四足机器人会执行左转动作。1.6 库调用动作调用的第四种办法就是通过库来调用函数。为了方便您的使用,我们把所有的单个动作命令封装成了一个函数库,并提供了一个使用例程,例程存储路径:例程库WIFI-Sitdown-Lib。当您需要通过库来调用函数时,只需要根据以下步骤来设置,就可以随意调用了。复制文件夹“例程库lib”下面的两个文件到您的工程文件中,文件如下图所示:在工程的源文件中添加包含库的语句,如下图所示:打开头文件ActionFuncLib.h,找到需要调用的函数,函数列表如下图所示(列表比较长,截图只列出了一部分):在适当的地方添加函数调用:动作组合示例考虑到您有可能需要在一

11、个工程中调用多个动作,因此我们提供了一个动作组合的例程,存放目录:WIFI连接使用例程WIFI-ActionUnion。完成的功能是定时调用多个动作,展示四足机器人的运动能力。2.1 定时组合动作流程组合动作例程的程序流程图如下图所示:2.2 组合源程序解读程序的结构和单个动作调用一样,不同之处在于增加了2个动作,主循环的程序相对复杂些。程序在建立连接以后,进入主循环,主循环主要功能在于等待回执,定时等待然后调用动作。从这个例程可以看出,我们的机器人控制起来非常简单,只要在需要的地方调用对应的动作函数即可。2.3 组合结果展示程序编译成功以后,点击运行,或者直接运行WIFIActionUnio

12、n.exe,机器人会执行原地踏步动作,5s以后转为左转弯动作,5s以后转为姿态调整动作,5s以后又开始原地踏步动作,重复进行,直到关机或者接收到其他的命令。头部控制示例3.1 头部控制方式Billy的头部具有水平方向的自由度,运动范围为60度,以头部朝向正前方为零位方向,可以左右运动各30度,定义向左移动的角度为正角度,向右移动的角度为负角度,同样的,向左运动速度为正速度值,向右运动速度为负速度值。头部的运动和躯干运动相互独立,互不影响。控制方法有两种,分别是位置闭环和速度闭环。3.2 位置闭环方式头部运动控制第一种方法为位置闭环,也就是控制头部舵机的最终运动位置,速度不需要设置,Billy在

13、运动到设定位置以后停止运动。头部运动的详细协议见“接口文档.doc”2.3.1小节,头部控制指令。例程存储位置:WIFI连接使用例程复杂命令例程WIFIHeadLocation。打开例程,程序结构和其他例程都一样,不同之处在与头部控制命令函数比较复杂,在程序中添加了很多备注,我们来解读一下。首先看一下函数说明,如下图:需要注意的地方是此函数有个参数说明,调用的时候注意单位和正负号,程序中调用的例子为:HeadLocate(30.0f);需要注意的地方是:必须写成30.0,表示数据为浮点型。括号中的f表示30.0为float类型。看一下具体的函数,如下图:函数完成的功能首先是读取设定的位置值,转

14、换成串口发送符合的数据格式,也就是浮点数转换成字符串,转换依据是浮点数的小端数据方式,您可以从网络搜索相关说明,程序中的做法就是以下程序段:程序接下来的处理是根据协议定义赋值命令数组,也就是程序中对数组send_temp的赋值操作。在赋值的过程中增加了校验位计算,最后把符合协议格式的数组发送到串口。例程运行的结果是Billy向左扭头30度,然后停住不动。3.3 速度模式头部运动的第二种控制方法为速度模式,也就是设置头部运动的速度,Billy将以设定的速度值运动头部,直到运动到极限位置,或者收到其他命令。速度模式下的详细协议见“接口文档.doc”2.3.1小节,头部控制指令。例程存储位置:WIF

15、I连接使用例程复杂命令例程WIFIHeadSpeed。打开例程,程序结构和位置闭环例程一样,唯一不同之处在头部控制命令函数的参数从位置数据修改成速度数据,我们来详细说明一下。首先看形参的说明,如下图:从图中可以看出,形参为速度值,正负号和运动方向有关,一般来说,比较常用的速度值为0.2。调用的时候注意参数的写法,和位置闭环对应的,调用例子如下:HeadMove(-0.1f);括号中的f表示-0.1为float类型。具体的函数结构和位置闭环方式下一样,我们不再一一解析,只说明一下不同之处,也就是命令字的赋值,在“接口文档.doc”中,位置闭环的命令字为0 x16,对应程序中位置为:send_te

16、mp1 = 0 x16; /命令字而速度模式的命令字为0 x15,对应程序中位置为:send_temp1 = 0 x15; /命令字相应的,在计算校验位时需要注意命令字的不同。程序编译运行,Billy的头部会根据设定的速度和方向开始运动,直到运动到极限位置,或者收到其他的运动命令。运动参数的设置和调用4.1 运动参数设置命令解读为了适应不同的需求,我们在下位机运动控制系统中集成了多种步态算法,您可以通过我们的运动参数命令调用这些算法。运动参数命令的具体定义可以参考文档“接口文档.doc”,为了方便说明,我们将指令的定义复制过来,如下表所示:Byte08F25LengthGaitForward_

17、speed1Forward_speed2Forward_speed3Forward_speed4Side_speed1Side_speed2Side_speed3Side_speed4Circle_speed1Circle_speed2Circle_speed3Circle_speed4Stand_heightPitch_angle1Pitch_angle2Pitch_angle3Pitch_angle4Roll_angle1Roll_angle2Roll_angle3Roll_angle4SumFF其中,每一个字节的详细定义和使用方法如下。25:这个是命令字,例程中赋值方法为直接给数组赋值;

18、Length:数据长度,目前根据指令定义的参数个数为22(整数),对应十六进制的0 x16;Gait:步态选择,系统一共集成了以下几种步态,分别对应数字列举如下:0,Stand;1,Crawl;2,Trot;3,Pace;5,Jump;6,Flying Trot;例程当中赋值为0 x01,选择了Crawl(爬行)步态。Forward_speed:前向速度,浮点数,采用小端方式存储,单位m/s,向前行走为正,例程当中选择了前向速度=0.03m/s,对应十六进制为0 x3CF5C28F。Side_speed:侧向速度,浮点数,单位m/s,向左行走为正,例程当中为0。Circle_speed:自转速度,浮点数,单位m/s,从上方往下看,逆时针自转为正,例程当中为0。Stand_height:站立高度,也就是重心到地面的距离,单位mm,整数,无符号整形,占一个字节,例程当中为0 x9a,对应十进制为154mm。Pitch_angle:躯干俯仰角:浮

温馨提示

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

评论

0/150

提交评论