Python库文件

文章目录
  1. 1. XGOLIB 库文档
    1. 1.1. 文档目的
    2. 1.2. 修订记录
    3. 1.3. XGO类
    4. 1.4. 移动相关方法
      1. 1.4.1. 1.前后左右平移
      2. 1.4.2. 2.旋转
      3. 1.4.3. 3.原地踏步
      4. 1.4.4. 4.改变迈步频率
      5. 1.4.5. 5.停止移动
    5. 1.5. 位姿相关方法
      1. 1.5.1. 1.机身位置平移
      2. 1.5.2. 2.机身姿态调整
      3. 1.5.3. 3.机身周期平移
      4. 1.5.4. 4.机身周期旋转
    6. 1.6. 其余方法
      1. 1.6.1. 恢复初始状态
      2. 1.6.2. 设置自稳状态
      3. 1.6.3. 单腿控制
      4. 1.6.4. 舵机控制
      5. 1.6.5. 单腿舵机卸载
      6. 1.6.6. 所有舵机卸载
      7. 1.6.7. 单腿舵机加载
      8. 1.6.8. 所有舵机加载
      9. 1.6.9. 设置舵机转动速度
      10. 1.6.10. 修改蓝牙名称
      11. 1.6.11. 执行预设动作
      12. 1.6.12. 标定舵机位置
    7. 1.7. 读取相关方法
      1. 1.7.1. 读取舵机角度
      2. 1.7.2. 读取电池电量
      3. 1.7.3. 读取姿态角度

XGOLIB 库文档

文档目的

本文档旨在对XGO的API接口进行详细说明,用于上位机python开发。

修订记录

2022.3.10 创建文档

XGO类

所有的功能都是通过XGO所拥有的方法来实现的,在实例化一个XGO类对象时需要传入三个参数,第一个是上位机与机器狗进行串口通讯的物理接口,需要根据实际情况进行修改,第二个参数为波特率为115200,第三个参数为'xgomini'或'xgolite'根据机型进行选择。假设串口通讯接口为COM4,则实例化代码如下。

1
2
dog = XGO('COM4',115200,'xgomini')
dog = XGO('COM4',115200,'xgolite')
下文将借用dog这个对象进行类方法的功能描述。涉及到位姿调整和单腿控制相关的方法,可查看串口通讯协议文档,了解机器人坐标系定义。

移动相关方法

1.前后左右平移

move(direction, step)

参数名 格式 输入范围 说明
direction 字符 'x'、'X'、'y'、'Y' 'x'或'X'使机器狗前进或后退,'y'或'Y'使机器狗左移或者右移
step 数字 x:[-25,25],y:[-18,18] 该参数代表平移步长,根据方向,正值代表前进或左移,负值代表后退或右移。输入值超过范围时,按照极限值移动。

2.旋转

turn(step)

参数名 格式 输入范围 说明
step 数字 [-150,150] 该参数代表旋转速度,单位为°/s,正值为左转,负值为右转。

3.原地踏步

mark_time(data)

参数名 格式 输入范围 说明
data 数字 [10,35] 该参数代表原地踏步抬腿高度,单位为mm,输入为0时停止原地踏步

4.改变迈步频率

pace(mode) 速度 = 步频 x 步幅

参数名 格式 输入范围 说明
mode 字符串 ['normal','slow','high'] 该参数代表迈步频率,normal为默认步频,low为慢速步频,high为高速步频

5.停止移动

stop()

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
示例
#机器狗以18mm步长前进
dog.move('x',18)

#机器狗以5mm步长右移
dog.move('y',-5)

#下句代码可以正常执行,会以18mm左移
dog.move('Y',30)

#机器狗以60°/s的速度左转
dog.turn(60)

#机器狗以高速步频进行运动
dog.pace('high')

#机器狗以25mm的抬腿高度进行原地踏步
dog.mark_time(25)

#机器狗停止原地踏步
dog.mark_time(0)

#机器狗停止移动
dog.stop()
库中基于这些方法封装了一系列方法以便于使用。

方法名 说明
move_x(step) 前后移动,相当于move('x', step)
move_y(step) 左右移动,相当于move('y', step)
forward(step) 前进,相当于move('x', abs(step))
back(step) 后退,相当于move('x', -abs(step))
left(step) 左移,相当于move('y', abs(step))
right(step) 右移,相当于move('y', -abs(step))
turnleft(step) 左转,相当于turn(abs(step))
turnright(step) 右转,相当于turn(-abs(step))


位姿相关方法

调节位姿时,机器狗四条腿足端位置不发生改变,机身的位置或角度发生变化。

1.机身位置平移

translation(direction, data)

参数名 格式 输入范围 说明
direction 单字符或字符列表 'x'、'y'、'z'或包含以上值的列表 'x'代表前后平移,'y'代表左右平移,'z'代表身高
data 数字 x:[-35,35],y:[-18,18],z:[75,115] 该参数代表机身位置平移距离,单位为mm

2.机身姿态调整

attitude(direction, data)

参数名 格式 输入范围 说明
direction 单字符或字符列表 'r'、'p'、'y'或包含以上值的列表 'r'代表滚转角,'p'代表俯仰角,'y'代表偏航角
data 数字 r:[-20,20],p:[-15,15],y:[11,11] 该参数代表机身姿态调节幅度,单位为°

3.机身周期平移

periodic_tran(direction, period)
机器狗机身将以指定周期和方向进行往复平移,幅度为位置平移极限值的一半,可以同时进行多个方向的周期运动。机身周期运动和整机运动不可同时进行。

参数名 格式 输入范围 说明
direction 单字符或字符列表 'x'、'y'、'z'或包含以上值的列表 'x'代表前后平移,'y'代表左右平移,'z'代表身高
period 数字 [1.5,8] 该参数代表运动周期,单位为s;输入0时代表停止运动

4.机身周期旋转

periodic_rot(direction, period)

参数名 格式 输入范围 说明
direction 单字符或字符列表 'r'、'p'、'y'或包含以上值的列表 'r'代表滚转角,'p'代表俯仰角,'y'代表偏航角
period 数字 [1.5,8] 该参数代表运动周期,单位为s;输入0时代表停止运动
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
示例
#机身向前平移18mm
dog.translation('x',18)

#机身向右平移10mm,身高设置为100mm
#既可以输入单个值,也可以输入列表以控制多个方向的移动
dog.translation(['y','z'],[-10,100])

#机身俯仰角设置为10°,偏航角设置为-4°,滚转角设置为8°
dog.attitude(['p','y','r'],[10,-4,8])

#机身以3s的周期,进行前后往复平移
dog.periodic_tran('x',3)

#机身以3s的周期进行滚转角往复转动,以7.4s周期进行偏航角往复转动
dog.periodic_rot(['r','y'],[3,7.4])

#停止偏航角的往复转动
dog.periodic_rot('y',0)

其余方法

恢复初始状态

reset()
停止所有运动,所有状态全部恢复到初始状态

设置自稳状态

imu(mode)
自稳状态下,机器狗将自动调节姿态角以保持背部处于水平位置,不可在开启时手动设定姿态角。

参数名 格式 输入范围 说明
mode 整数 0、1 0代表关闭、1代表开启

perform(mode)
表演模式,机器狗将循环执行预设的动作。

参数名 格式 输入范围 说明
mode 整数 0、1 0代表关闭、1代表开启


单腿控制

leg(leg_id, data)
控制指定腿的足端位置

参数名 格式 输入范围 说明
leg_id 整数 1、2、3、4 分别代表左前腿、右前腿、右后腿、左后腿
data 长度为3的数字列表 x:[-35,35],y:[-18,18],z:[75,115] 该参数代表足端位置,单位为mm
1
2
3
示例
#设置右前腿足端坐标为(10mm,-12mm,90mm)
dog.leg(2,[10,-12,90])


舵机控制

motor(motor_id, data)
控制舵机旋转角度

参数名 格式 输入范围 说明
motor_id 整数或整数列表 [11,12,13,21,22,23,31,32,33,41,42,43] 第一位数字代表舵机所在的腿,第二位数字代表在该腿上的位置,从下到上依次是1,2,3
data 数字或数字列表 下:[-65, 73],中:[-66, 93],上:[-31, 31] 该参数代表足端位置,单位为°
1
2
3
4
5
6
示例
#设置右前腿中舵机转动角度为30°
dog.motor(22,30)

#设置右前腿上舵机转动角度为10°,左后腿下舵机转动角度为-20°
dog.motor([23,41],[10,-20])


单腿舵机卸载

unload_motor(leg_id)
使一条腿上的三个舵机卸载,不输出力矩,之后可以随意用手转动,一般用于编写动作

参数名 格式 输入范围 说明
leg_id 整数 1,2,3,4 分别代表左前腿、右前腿、右后腿、左后腿

所有舵机卸载

unload_allmotor()
使所有舵机卸载,不输出力矩,可以随意用手转动

单腿舵机加载

load_motor(leg_id)
使一条腿上的三个舵机保持当前位置加载,输出力矩,之后不可以用手转动,一般用于编写动作

参数名 格式 输入范围 说明
leg_id 整数 1,2,3,4 分别代表左前腿、右前腿、右后腿、左后腿

所有舵机加载

load_allmotor()
使所有舵机保持当前位置加载,输出力矩,之后不可以用手转动

设置舵机转动速度

motor_speed(speed)
调节舵机转动速度,适用于单独控制舵机的情况

参数名 格式 输入范围 说明
speed 整数 [0,255] 0为最低速,255为最高速

修改蓝牙名称

bt_rename(name)
重新修改蓝牙名称,调用该函数后蓝牙会断开链接

参数名 格式 输入范围 说明
name 字符串 长度不大于10 机器狗的蓝牙名称格式为XGO_xxx,xxx为可修改部分,仅支持ascii码中的字符。

执行预设动作

action(action_id)

参数名 格式 输入范围 说明
action_id 整数 [1,255] ID与动作对应关系见下表
ID 动作 ID 动作 ID 动作
1 趴下 2 站起 3 匍匐前进
4 转圈 5 原地踏步 6 蹲起
7 转动Roll 8 转动Pitch 9 转动Yaw
10 三轴转动 11 撒尿 12 坐下
13 招手 14 伸懒腰 15 波浪
16 左右摇摆 17 求食 18 找食物
19 握手 20 拜年

标定舵机位置

calibration(state)
如果开机后,某些关节出现了明显的位置偏差,可以调用该功能进行标定。其他情况请谨慎使用

参数名 格式 输入范围 说明
state 整数 [0,1] 1 进入标定状态,此时舵机卸力,然后将机器狗摆至标定状态,小腿与地面平行,大腿与躯干呈90°,躯干与地面平行;0 完成标定

读取相关方法

读取舵机角度

read_motor()
读取12个舵机的角度, 读取成功则返回长度为12的列表,对应编号[11,12,13,21,22,23,31,32,33,41,42,43]的舵机角度, 读取失败则返回空列表

读取电池电量

read_battery()
读取当前电池电量, 读取成功则返回1-100的整数,代表电池剩余电量百分比, 读取失败则返回0。

读取姿态角度

read_roll()
read_pitch()
read_yaw()
读取当前姿态角度,读取成功则浮点数,读取失败则返回0