XGOLIB 库文档
文档目的
本文档旨在对XGO的API接口进行详细说明,用于上位机python开发。
修订记录
2022.3.10 创建文档
XGO类
所有的功能都是通过XGO所拥有的方法来实现的,在实例化一个XGO类对象时需要传入三个参数,第一个是上位机与机器狗进行串口通讯的物理接口,需要根据实际情况进行修改,第二个参数为波特率为115200,第三个参数为'xgomini'或'xgolite'根据机型进行选择。假设串口通讯接口为COM4,则实例化代码如下。 1
2dog = XGO('COM4',115200,'xgomini')
dog = XGO('COM4',115200,'xgolite')
移动相关方法
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 | 示例 |
其余方法
恢复初始状态
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 | 示例 |
舵机控制
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 | 示例 |
单腿舵机卸载
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