首页 > 其他分享 >load_allmotor

load_allmotor

时间:2024-11-08 15:31:17浏览次数:1  
标签:load allmotor XGO dog 参数 格式 输入 255

XGO使用树莓派做为机器狗的大脑,推荐使用VScode对XGO进行编程,可以通过一下步骤进行开发:

准备工作

  1. 安装 VScode: 确保你已经在你的电脑上安装了 VScode。你可以从VScode官网下载并安装。
  2. 连接网络:根据快速入门让XGO连上网络,操作机器狗按键让机器狗显示IP地址如下图所示

在 VScode 中设置远程连接

  1. 安装 Remote Development 插件
    • 打开 VScode,点击左侧扩展(Extensions)图标。
    • 搜索并安装Remote - SSH扩展。
  1. 配置 SSH 连接
    • 在VScode中按 Ctrl+Shift+P 打开命令面板,输入Remote-SSH: Connect to Host...,然后选择Add New SSH Host...
    • 输入连接字符串,例如:
sh
复制代码
ssh [email protected]

其中pi是默认用户名,192.168.1.2是树莓派的IP地址。

    • 接下来会提示输入SSH密码,输入你设置的密码,默认密码为pi
  1. 连接到树莓派
    • 在VScode中再次按 Ctrl+Shift+P,选择Remote-SSH: Connect to Host...,然后选择刚刚添加的主机。
    • 成功连接后,VScode会重新启动并连接到树莓派的远程环境。

在树莓派上编写和调试代码

  1. 打开文件夹
    • 在VScode中,通过文件菜单选择Open Folder...,选择你想在树莓派上操作的目录。
  1. 安装必要的扩展
    • 根据你要编写的代码语言(例如Python、C++等),在VScode中安装相应的扩展(如Python、C++等)。
  1. 编写代码
    • 你现在可以像在本地一样,在VScode中编写代码,并通过终端运行和调试。
  1. 使用终端
    • VScode的终端会直接连接到树莓派的终端。你可以在VScode中打开终端(使用Ctrl+View -> Terminal),并在其中执行树莓派上的命令。

示例:在树莓派上运行 Python 代码

  1. 创建 Python 文件
    • 在VScode中,创建一个新的Python文件,例如xgo.py
  1. 编写代码
python

print("Hello, Raspberry Pi!")
  1. 运行代码
    • 在终端中运行以下命令:
python3 xgo.py

通过这些步骤,你就可以使用VScode对树莓派进行编程了。这种方法使你可以在舒适的桌面环境中编写代码,同时利用树莓派的硬件进行实际运行和测试。

Python库详解

XGO2内置了运动控制库文件xgolib.py,教育库xgoedu.py,开发者可以直接调用相关接口函数来控制机器狗。

通过命令安装xgo的python库

sudo pip install --upgrade xgo-pythonlib
pip install --upgrade xgo-pythonlib

使用前确保\home\pi\model文件夹中包含所有的模型文件

全部模型文件可在https://github.com/Xgorobot/XGO-PythonLib的model文件夹中获取。

初始化

以下为初始化代码:

#导入xgolib
from xgolib import XGO  
#实例化dog
dog = XGO("xgolite")

判断狗的类型

由于xgolite与xgomni在运动性能和参数上有差异,为了准确控制狗的运动,可通过dog.read_firmware()函数检测机器狗的类型,示例代码:

from xgolib import XGO
dog = XGO("xgolite") 
version=dog.read_firmware()
if version[0]=='M':
    print('XGO-MINI')
    dog = XGO("xgomini")
    dog_type='M'
else:
    print('XGO-LITE')
    dog_type='L'

通过此段代码可以判断狗的类型,若变量dog_type为'M'则狗的类型为XGOMINI,若为'L'则类型为XGOLITE。

运动控制库介绍

移动相关方法

前后左右平移

move(direction, step)

参数名

格式

输入范围

说明

direction

字符

'x'、'X'、'y'、'Y'

'x'或'X'使机器狗前进或后退,'y'或'Y'使机器狗左移或者右移

step

数字

x:[-25,25],y:[-18,18]

该参数代表平移步长,根据方向,正值代表前进或左移,负值代表后退或右移。输入值超过范围时,按照极限值移动。

旋转

turn(step)

参数名

格式

输入范围

说明

step

数字

[-150,150]

该参数代表旋转速度,单位为°/s,正值为左转,负值为右转。

原地踏步,只适用于mini

mark_time(data)

参数名

格式

输入范围

说明

data

数字

[10,35]

该参数代表原地踏步抬腿高度,单位为mm,输入为0时停止原地踏步

改变迈步频率

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

参数名

 

格式

输入范围

说明

mode

 

字符串

['normal','slow','high']

该参数代表迈步频率,normal为默认步频,low为慢速步频,high为高速步频

停止移动

stop()

移动相关方法示例

#机器狗以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))


位姿相关方法

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

机身位置平移

translation(direction, data)

参数名

格式

输入范围

说明

direction

单字符或字符列表

'x'、'y'、'z'或包含以上值的列表

'x'代表前后平移,'y'代表左右平移,'z'代表身高

data

数字

x:[-35,35],y:[-18,18],z:[75,115]

该参数代表机身位置平移距离,单位为mm

机身姿态调整

attitude(direction, data)

参数名

格式

输入范围

说明

direction

单字符或字符列表

'r'、'p'、'y'或包含以上值的列表

'r'代表滚转角,'p'代表俯仰角,'y'代表偏航角

data

数字

r:[-20,20],p:[-15,15],y:[11,11]

该参数代表机身姿态调节幅度,单位为°

机身周期平移

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

参数名

格式

输入范围

说明

direction

单字符或字符列表

'x'、'y'、'z'或包含以上值的列表

'x'代表前后平移,'y'代表左右平移,'z'代表高低移动

period

数字

[1.5,8]

该参数代表运动周期,单位为s;输入0时代表停止运动

机身周期旋转

periodic_rot(direction, period)

参数名

格式

输入范围

说明

direction

单字符或字符列表

'r'、'p'、'y'或包含以上值的列表

'r'代表滚转角,'p'代表俯仰角,'y'代表偏航角

period

数字

[1.5,8]

该参数代表运动周期,单位为s;输入0时代表停止运动

位姿相关方法示例

#机身向前平移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)

机械臂相关方法

设置机械臂末端位置

arm( arm_x, arm_z)

参数名

格式

输入范围

说明

arm_x

float

[-80, 155]

单位为mm

arm_z

float

[-95, 155]

单位为mm

此处的x和z是相对于机械臂的基座的坐标,单位为毫米。

设定超过机械臂工作空间的值时,机械臂会保持最后一个有效值对应的姿态,比如(155,0)对应的姿态是向前伸到最大,(0,155)对应向上伸到最大,(155,155)是斜向上最大,但是机械臂达不到这个位置,就会保持上一次发送的有效位置。

#机械臂末端位于基座正上方100mm处
dog.arm(0,100)

#机械臂大臂垂直于身体,小臂水平于身体
dog.arm(90,90)

#机械臂末端在摄像头正前方
dog.arm(100,0)

#机械臂末端下探抓取
dog.arm(100,-60)

设置机械臂夹爪开合

claw(pos)

参数名

格式

输入范围

说明

pos

uint_8

0-255

0对应完全张开,255对应完全闭合

设置机械臂是否开启稳定模式

arm_mode(mode)

参数名

格式

输入范围

说明

mode

int

0\1

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

其余方法示例

#设置右前腿足端坐标为(10mm,-12mm,90mm)
dog.leg(2,[10,-12,90])

四条腿以各自肩部中间点为原点,前为X轴正方向,左为Y轴正方向,下为Z轴的方向


舵机控制

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

参数名

格式

输入范围

说明

motor_id

整数或整数列表

[11,12,13,21,22,23,31,32,33,41,42,43,51,52,53]

第一位数字代表舵机所在的腿,第二位数字代表在该腿上的位置,从下到上依次是1,2,3

51、52、53分别是夹爪、小臂、大臂舵机

51推荐使用claw命令来控制比较直观

data

数字或数字列表

Mini

下:[-73, 57],

中:[-66, 93],

上:[-31, 31]

51:[-65, 65]

52:[-85, 50]

53:[-75, 90]

---------------

Lite

下:[-70, 50],

中:[-66, 93],

上:[-31, 31]

51:[-65, 65]

52:[-115, 70]

53:[-85, 100]

该参数代表舵机角度位置,单位为°

舵机示例

#设置右前腿中舵机转动角度为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

动作

持续时间/s

ID

动作

持续时间/s

ID

动作

持续时间/s

1

趴下

3

2

站起

3

3

匍匐前进

5

4

转圈

5

5

mini为踏步

4

6

蹲起

4

7

转动Roll

4

8

转动Pitch

4

9

转动Yaw

4

10

三轴转动

7

11

撒尿

7

12

坐下

5

13

招手

7

14

伸懒腰

10

15

波浪

6

16

摇摆

6

17

乞讨

6

18

找食物

6

19

握手

10

20

鸡头

9

21

俯卧撑

8

22

张望

8

23

跳舞

6

24

调皮

7

128

上抓

10

129

中抓

10

130

下抓

10

144

上楼梯

12

           

 

备注:单机模式循环执行以上所有动作组,群控模式去除匍匐前进,转圈,踏步,乞讨,找食物。

备注:microblocks中去掉踏步

 

标定舵机位置

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

参数名

格式

输入范围

说明

state

整数

[0,1]

1 进入标定状态,此时舵机卸力,然后将机器狗摆至标定状态,小腿与地面平行,大腿与躯干呈90°,躯干与地面平行;0 完成标定


读取相关方法

读取舵机角度

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

读取电池电量

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

读取姿态角度

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

 

XGO双轮足产品系列

初始化

以下为初始化代码:

#导入xgolib
from xgolib import XGO  
#实例化dog
rider = XGO("xgorider")

运动控制库介绍

移动相关方法

前后左右平移

rider_move_x(speed, runtime=0)

参数名

格式

输入范围

说明

speed

float

[-1.5,1.5]

单位为0.5m/s,正值为前进,负值为后退

runtime

float

≥0

单位为0.5m/s,如果runtime为0,则轮足会一直以该速度运行。

如果runtime不为0,则运行指定时间后会停止。

旋转

rider_turn(speed, runtime=0)

参数名

格式

输入范围

说明

speed

float

[-360,360]

单位为°/s,正值为逆时针,负值为顺时针

runtime

float

≥0

单位为s,如果runtime为0,则轮足会一直以该速度运行。

如果runtime不为0,则运行指定时间后会停止。

位姿相关方法

调节身高

rider_height(data)

参数名

格式

输入范围

说明

data

float

z:[75,115]

该参数代表机身位置平移距离,单位为mm

机身姿态调整

rider_roll(data)

参数名

格式

输入范围

说明

data

float

r:[-17,17]

该参数代表机身姿态调节幅度,单位为°

机身周期蹲起

rider_periodic_z(period)

参数名

格式

输入范围

说明

period

数字

[2,4]

该参数代表运动周期,单位为s;输入0时代表停止运动

机身周期左右晃动

rider_periodic_roll(period)

参数名

格式

输入范围

说明

period

数字

[2,4]

该参数代表运动周期,单位为s;输入0时代表停止运动

平衡模式

rider_balance_roll(mode)
自稳状态下,轮足将自动调节Roll以保持背部处于水平位置,不可在开启时手动设定姿态角,用于单边桥等左右两边高度不同的地形

参数名

格式

输入范围

说明

mode

整数

0、1

0代表关闭、1代表开启

读取相关方法

恢复初始状态

rider_reset()
停止所有运动,所有状态全部恢复到初始状态,如果是倒地状态,调用该方法后会站起。

读取版本号

rider_read_firmware()

读取下位机固件的版本号,返回长度最大为10的字符串,如"R-1.2.3"

电池电量

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

读取姿态角度

rider_read_roll()
rider_read_pitch()
rider_read_yaw()
读取当前姿态角度,读取成功则浮点数,读取失败则返回0

rider_read_imu_int16(direction)

读取姿态角度参数范围为["roll","pitch","yaw"],读取成功则int16类型整数角度,读取失败则返回0

 

其他方法

执行预设动作

rider_action(action_id,wait=False)

参数名

格式

输入范围

说明

action_id

整数

[1,255]

ID与动作对应关系见下表

wait

布尔值

TRUE/FALSE

是否延时等待动作做完

ID

动作

持续时间/s

ID

动作

持续时间/s

ID

动作

持续时间/s

1

左右摇摆

 

2

高低起伏

 

3

前进后退

 

4

四方蛇形

 

5

升降旋转

 

6

圆周晃动

 

英文命名:

1.Rocking 2.Shfiting 3.Altitude vary 4.Zigzag 5.Lift&rotate 6.Trembling

 

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

参数名

格式

输入范围

说明

mode

整数

0、1

0代表关闭、1代表开启

标定舵机位置

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

参数名

格式

输入范围

说明

state

整数

[0,1]

1 进入标定状态,此时舵机卸力,将轮足扶正,将腿降低至最低,然后向后倚靠在地面上,然后发送0完成标定

 

修改蓝牙名称

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

参数名

格式

输入范围

说明

name

字符串

长度不大于10

蓝牙名称格式为XGORider_xxx,xxx为可修改部分,仅支持ascii码中的字符。

 

设定静止时背部LED灯色彩

rider_led(index, color)
双轮足

参数名

格式

输入范围

说明

index

uint8

1-4

左上,左下,右下,右上分别为1、2、3、4号LED

color

[uint8, uint8, uint8]

0-255

写入三个字节数据,数值范围为0-255,代表RGB的亮度,[0,0,0]代表灭,[255,255,255]代表最亮的白光

 

 

 

 

 

 

 

 

 

 

教育库介绍

XGO的教育库主要是给出了集成在AI模组中的摄像头,屏幕,按键,麦克风和喇叭等硬件的Python接口。以及部分AI模型调用等功能。

 

初始化

以下为初始化代码:

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()

屏幕绘图

需要先杀掉自启动main.py进程,否则会屏幕刷新冲突

sudo ps -ef | grep main.py

画直线

lcd_line(x1,y1,x2,y2,color=(r,g,b),width=width)

参数名

格式

输入范围

说明

x1,y1,x2,y2

数字

x1 x2:[0,320]

y1 y2:[0,240]

x1,y1为初始点标

x2,y2为终止点坐标

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为线颜色

width(可缺省)

默认为2

数字

 

width为线宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_line(80,80,150,150,color=(255,0,0),width=2)

 

画圆形

lcd_round(center_x, center_y, radius, color=(255, 255, 255), width=2)

参数名

格式

输入范围

说明

center_x

center_y

数字

center_x:[0,320]

center_x:[0,240]

center_x,center_y为圆心坐标

raduius

数字

 

raduius为半径

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为圆弧颜色

width(可缺省)

默认为2

数字

 

width为圆弧宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_round(30,30,10,color=(255,0,0),width=2)

画圆弧

lcd_arc(x1,y1,x2,y2,angle0,angle1,color=(255,255,255),width=2)

参数名

格式

输入范围

说明

x1,y1,x2,y2

数字

x1 x2:[0,320]

y1 y2:[0,240]

x1,y1,x2,y2为定义边界框的两个点

angle0,angle1

数字

angle0 angle1:[0,360]

angle0为初始角度,三点钟方向为起始点,顺时针增加。

angle1为终止角度

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为圆弧颜色

width(可缺省)

默认为2

数字

 

width为圆弧宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_arc(30,30,150,150,50,100,color=(255,0,0),width=2)

画矩形

lcd_rectangle(x1,y1,x2,y2,fill=None,outline=(255,255,255),width=2)

参数名

格式

输入范围

说明

x1,y1,x2,y2

数字

x1 x2:[0,320]

y1 y2:[0,240]

x1,y1为初始点标

x2,y2为终止点坐标

fill(可缺省)

默认为None

rgb元组

r g b:[0,255]

fill为填充颜色

None则为不填充

outline(可缺省)

默认为白色

rgb元组

r g b:[0,255]

outline为线颜色

width(可缺省)

默认为2

数字

 

width为线宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_rectangle(20,20,100,100,fill=None,outline=(255,0,0),width=2)

显示文字

可显示中文与英文使用微软雅黑字体,字体大小可调节

lcd_text(x,y,content,color=(255,255,255),fontsize=15)

参数名

格式

输入范围

说明

x,y

数字

x y:[0,320]

x,y为初始点标

content

字符串

 

content为显示内容

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为文字颜色

fontsize(可缺省)

默认为15

数字

 

fontsize为字体大小

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_text(50,50,'hello',color=(255,0,0),fontsize=50)

显示图片

lcd_picture(filename)

参数名

格式

说明

filename

字符串

图片文件名需要加jpg扩展名

图片文件显示路径为/home/pi/xgoPictures,图片大小为320*240

清除屏幕

lcd_clear()

按键检测

xgoButton(button)

参数名

格式

输入范围

返回值

button

指定字符串

["a","b"]

False未按下 True按下

音视频功能

播放音频

xgoSpeaker(filename)

参数名

格式

输入范围

说明

filename

字符串

 

音频文件扩展名wav,路径为/home/pi/xgoMusic

播放视频

xgoVideo(filename)

参数名

格式

输入范围

说明

filename

字符串

 

视频文件扩展名mp4

路径为/home/pi/xgoVideos

录制音频

xgoAudioRecord(filename="record",seconds=5)

参数名

格式

输入范围

说明

filename(可缺省)

默认"record"

字符串

 

录制音频的文件名

会自动添加扩展名wav,录制的文件路径为/home/pi/xgoMusic

seconds(可缺省)

默认为5

数字

 

录制文件的长度(秒)

摄像头功能

摄像头

xgoCamera(status)

参数名

格式

输入范围

说明

status

布尔值

True,False

打开和关闭摄像头,屏幕会实时显示视频流

录制视频

xgoVideoRecord(filename="record",seconds=5)

参数名

格式

输入范围

说明

filename(可缺省)

默认"record"

字符串

 

录制视频的文件名

会自动添加扩展名mp4,录制的文件路径为/home/pi/xgoVideos

seconds(可缺省)

默认为5

数字

 

录制文件的长度(秒)

拍摄照片

xgoTakePhoto(filename="photo")

参数名

格式

输入范围

说明

filename(可缺省)

默认"photo."

字符串

 

拍摄照片的文件名

会自动添加扩展名jpg,图片保存路径为/home/pi/xgoPictures

注意:使用此函数会自动运行xgoCamera(True),如不需要实时显示摄像头画面,请在此函数后面加上xgoCamera(False)

AI功能

此系列的api核心功能是调取一帧图像进行分析并返回结果,可在参数传入图片的路径,实现对单张图片的检测。如需实时分析摄像头画面,请配合while使用,下面为示例代码:

手势识别单张图片:

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()

#对同级目录下的camera.jpg进行手势识别
result=XGO_edu.gestureRecognition("camera.jpg")
#打印识别结果
print(result)

实时通过摄像头进行手势识别:

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()

#循环进行摄像头识别,按c键退出
while True:

XGO使用树莓派做为机器狗的大脑,推荐使用VScode对XGO进行编程,可以通过一下步骤进行开发:

准备工作

  1. 安装 VScode: 确保你已经在你的电脑上安装了 VScode。你可以从VScode官网下载并安装。
  2. 连接网络:根据快速入门让XGO连上网络,操作机器狗按键让机器狗显示IP地址如下图所示

在 VScode 中设置远程连接

  1. 安装 Remote Development 插件
    • 打开 VScode,点击左侧扩展(Extensions)图标。
    • 搜索并安装Remote - SSH扩展。
  1. 配置 SSH 连接
    • 在VScode中按 Ctrl+Shift+P 打开命令面板,输入Remote-SSH: Connect to Host...,然后选择Add New SSH Host...
    • 输入连接字符串,例如:
sh
复制代码
ssh [email protected]

其中pi是默认用户名,192.168.1.2是树莓派的IP地址。

    • 接下来会提示输入SSH密码,输入你设置的密码,默认密码为pi
  1. 连接到树莓派
    • 在VScode中再次按 Ctrl+Shift+P,选择Remote-SSH: Connect to Host...,然后选择刚刚添加的主机。
    • 成功连接后,VScode会重新启动并连接到树莓派的远程环境。

在树莓派上编写和调试代码

  1. 打开文件夹
    • 在VScode中,通过文件菜单选择Open Folder...,选择你想在树莓派上操作的目录。
  1. 安装必要的扩展
    • 根据你要编写的代码语言(例如Python、C++等),在VScode中安装相应的扩展(如Python、C++等)。
  1. 编写代码
    • 你现在可以像在本地一样,在VScode中编写代码,并通过终端运行和调试。
  1. 使用终端
    • VScode的终端会直接连接到树莓派的终端。你可以在VScode中打开终端(使用Ctrl+View -> Terminal),并在其中执行树莓派上的命令。

示例:在树莓派上运行 Python 代码

  1. 创建 Python 文件
    • 在VScode中,创建一个新的Python文件,例如xgo.py
  1. 编写代码
python

print("Hello, Raspberry Pi!")
  1. 运行代码
    • 在终端中运行以下命令:
python3 xgo.py

通过这些步骤,你就可以使用VScode对树莓派进行编程了。这种方法使你可以在舒适的桌面环境中编写代码,同时利用树莓派的硬件进行实际运行和测试。

Python库详解

XGO2内置了运动控制库文件xgolib.py,教育库xgoedu.py,开发者可以直接调用相关接口函数来控制机器狗。

通过命令安装xgo的python库

sudo pip install --upgrade xgo-pythonlib
pip install --upgrade xgo-pythonlib

使用前确保\home\pi\model文件夹中包含所有的模型文件

全部模型文件可在https://github.com/Xgorobot/XGO-PythonLib的model文件夹中获取。

初始化

以下为初始化代码:

#导入xgolib
from xgolib import XGO  
#实例化dog
dog = XGO("xgolite")

判断狗的类型

由于xgolite与xgomni在运动性能和参数上有差异,为了准确控制狗的运动,可通过dog.read_firmware()函数检测机器狗的类型,示例代码:

from xgolib import XGO
dog = XGO("xgolite") 
version=dog.read_firmware()
if version[0]=='M':
    print('XGO-MINI')
    dog = XGO("xgomini")
    dog_type='M'
else:
    print('XGO-LITE')
    dog_type='L'

通过此段代码可以判断狗的类型,若变量dog_type为'M'则狗的类型为XGOMINI,若为'L'则类型为XGOLITE。

运动控制库介绍

移动相关方法

前后左右平移

move(direction, step)

参数名

格式

输入范围

说明

direction

字符

'x'、'X'、'y'、'Y'

'x'或'X'使机器狗前进或后退,'y'或'Y'使机器狗左移或者右移

step

数字

x:[-25,25],y:[-18,18]

该参数代表平移步长,根据方向,正值代表前进或左移,负值代表后退或右移。输入值超过范围时,按照极限值移动。

旋转

turn(step)

参数名

格式

输入范围

说明

step

数字

[-150,150]

该参数代表旋转速度,单位为°/s,正值为左转,负值为右转。

原地踏步,只适用于mini

mark_time(data)

参数名

格式

输入范围

说明

data

数字

[10,35]

该参数代表原地踏步抬腿高度,单位为mm,输入为0时停止原地踏步

改变迈步频率

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

参数名

 

格式

输入范围

说明

mode

 

字符串

['normal','slow','high']

该参数代表迈步频率,normal为默认步频,low为慢速步频,high为高速步频

停止移动

stop()

移动相关方法示例

#机器狗以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))


位姿相关方法

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

机身位置平移

translation(direction, data)

参数名

格式

输入范围

说明

direction

单字符或字符列表

'x'、'y'、'z'或包含以上值的列表

'x'代表前后平移,'y'代表左右平移,'z'代表身高

data

数字

x:[-35,35],y:[-18,18],z:[75,115]

该参数代表机身位置平移距离,单位为mm

机身姿态调整

attitude(direction, data)

参数名

格式

输入范围

说明

direction

单字符或字符列表

'r'、'p'、'y'或包含以上值的列表

'r'代表滚转角,'p'代表俯仰角,'y'代表偏航角

data

数字

r:[-20,20],p:[-15,15],y:[11,11]

该参数代表机身姿态调节幅度,单位为°

机身周期平移

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

参数名

格式

输入范围

说明

direction

单字符或字符列表

'x'、'y'、'z'或包含以上值的列表

'x'代表前后平移,'y'代表左右平移,'z'代表高低移动

period

数字

[1.5,8]

该参数代表运动周期,单位为s;输入0时代表停止运动

机身周期旋转

periodic_rot(direction, period)

参数名

格式

输入范围

说明

direction

单字符或字符列表

'r'、'p'、'y'或包含以上值的列表

'r'代表滚转角,'p'代表俯仰角,'y'代表偏航角

period

数字

[1.5,8]

该参数代表运动周期,单位为s;输入0时代表停止运动

位姿相关方法示例

#机身向前平移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)

机械臂相关方法

设置机械臂末端位置

arm( arm_x, arm_z)

参数名

格式

输入范围

说明

arm_x

float

[-80, 155]

单位为mm

arm_z

float

[-95, 155]

单位为mm

此处的x和z是相对于机械臂的基座的坐标,单位为毫米。

设定超过机械臂工作空间的值时,机械臂会保持最后一个有效值对应的姿态,比如(155,0)对应的姿态是向前伸到最大,(0,155)对应向上伸到最大,(155,155)是斜向上最大,但是机械臂达不到这个位置,就会保持上一次发送的有效位置。

#机械臂末端位于基座正上方100mm处
dog.arm(0,100)

#机械臂大臂垂直于身体,小臂水平于身体
dog.arm(90,90)

#机械臂末端在摄像头正前方
dog.arm(100,0)

#机械臂末端下探抓取
dog.arm(100,-60)

设置机械臂夹爪开合

claw(pos)

参数名

格式

输入范围

说明

pos

uint_8

0-255

0对应完全张开,255对应完全闭合

设置机械臂是否开启稳定模式

arm_mode(mode)

参数名

格式

输入范围

说明

mode

int

0\1

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

其余方法示例

#设置右前腿足端坐标为(10mm,-12mm,90mm)
dog.leg(2,[10,-12,90])

四条腿以各自肩部中间点为原点,前为X轴正方向,左为Y轴正方向,下为Z轴的方向


舵机控制

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

参数名

格式

输入范围

说明

motor_id

整数或整数列表

[11,12,13,21,22,23,31,32,33,41,42,43,51,52,53]

第一位数字代表舵机所在的腿,第二位数字代表在该腿上的位置,从下到上依次是1,2,3

51、52、53分别是夹爪、小臂、大臂舵机

51推荐使用claw命令来控制比较直观

data

数字或数字列表

Mini

下:[-73, 57],

中:[-66, 93],

上:[-31, 31]

51:[-65, 65]

52:[-85, 50]

53:[-75, 90]

---------------

Lite

下:[-70, 50],

中:[-66, 93],

上:[-31, 31]

51:[-65, 65]

52:[-115, 70]

53:[-85, 100]

该参数代表舵机角度位置,单位为°

舵机示例

#设置右前腿中舵机转动角度为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

动作

持续时间/s

ID

动作

持续时间/s

ID

动作

持续时间/s

1

趴下

3

2

站起

3

3

匍匐前进

5

4

转圈

5

5

mini为踏步

4

6

蹲起

4

7

转动Roll

4

8

转动Pitch

4

9

转动Yaw

4

10

三轴转动

7

11

撒尿

7

12

坐下

5

13

招手

7

14

伸懒腰

10

15

波浪

6

16

摇摆

6

17

乞讨

6

18

找食物

6

19

握手

10

20

鸡头

9

21

俯卧撑

8

22

张望

8

23

跳舞

6

24

调皮

7

128

上抓

10

129

中抓

10

130

下抓

10

144

上楼梯

12

           

 

备注:单机模式循环执行以上所有动作组,群控模式去除匍匐前进,转圈,踏步,乞讨,找食物。

备注:microblocks中去掉踏步

 

标定舵机位置

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

参数名

格式

输入范围

说明

state

整数

[0,1]

1 进入标定状态,此时舵机卸力,然后将机器狗摆至标定状态,小腿与地面平行,大腿与躯干呈90°,躯干与地面平行;0 完成标定


读取相关方法

读取舵机角度

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

读取电池电量

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

读取姿态角度

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

 

XGO双轮足产品系列

初始化

以下为初始化代码:

#导入xgolib
from xgolib import XGO  
#实例化dog
rider = XGO("xgorider")

运动控制库介绍

移动相关方法

前后左右平移

rider_move_x(speed, runtime=0)

参数名

格式

输入范围

说明

speed

float

[-1.5,1.5]

单位为0.5m/s,正值为前进,负值为后退

runtime

float

≥0

单位为0.5m/s,如果runtime为0,则轮足会一直以该速度运行。

如果runtime不为0,则运行指定时间后会停止。

旋转

rider_turn(speed, runtime=0)

参数名

格式

输入范围

说明

speed

float

[-360,360]

单位为°/s,正值为逆时针,负值为顺时针

runtime

float

≥0

单位为s,如果runtime为0,则轮足会一直以该速度运行。

如果runtime不为0,则运行指定时间后会停止。

位姿相关方法

调节身高

rider_height(data)

参数名

格式

输入范围

说明

data

float

z:[75,115]

该参数代表机身位置平移距离,单位为mm

机身姿态调整

rider_roll(data)

参数名

格式

输入范围

说明

data

float

r:[-17,17]

该参数代表机身姿态调节幅度,单位为°

机身周期蹲起

rider_periodic_z(period)

参数名

格式

输入范围

说明

period

数字

[2,4]

该参数代表运动周期,单位为s;输入0时代表停止运动

机身周期左右晃动

rider_periodic_roll(period)

参数名

格式

输入范围

说明

period

数字

[2,4]

该参数代表运动周期,单位为s;输入0时代表停止运动

平衡模式

rider_balance_roll(mode)
自稳状态下,轮足将自动调节Roll以保持背部处于水平位置,不可在开启时手动设定姿态角,用于单边桥等左右两边高度不同的地形

参数名

格式

输入范围

说明

mode

整数

0、1

0代表关闭、1代表开启

读取相关方法

恢复初始状态

rider_reset()
停止所有运动,所有状态全部恢复到初始状态,如果是倒地状态,调用该方法后会站起。

读取版本号

rider_read_firmware()

读取下位机固件的版本号,返回长度最大为10的字符串,如"R-1.2.3"

电池电量

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

读取姿态角度

rider_read_roll()
rider_read_pitch()
rider_read_yaw()
读取当前姿态角度,读取成功则浮点数,读取失败则返回0

rider_read_imu_int16(direction)

读取姿态角度参数范围为["roll","pitch","yaw"],读取成功则int16类型整数角度,读取失败则返回0

 

其他方法

执行预设动作

rider_action(action_id,wait=False)

参数名

格式

输入范围

说明

action_id

整数

[1,255]

ID与动作对应关系见下表

wait

布尔值

TRUE/FALSE

是否延时等待动作做完

ID

动作

持续时间/s

ID

动作

持续时间/s

ID

动作

持续时间/s

1

左右摇摆

 

2

高低起伏

 

3

前进后退

 

4

四方蛇形

 

5

升降旋转

 

6

圆周晃动

 

英文命名:

1.Rocking 2.Shfiting 3.Altitude vary 4.Zigzag 5.Lift&rotate 6.Trembling

 

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

参数名

格式

输入范围

说明

mode

整数

0、1

0代表关闭、1代表开启

标定舵机位置

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

参数名

格式

输入范围

说明

state

整数

[0,1]

1 进入标定状态,此时舵机卸力,将轮足扶正,将腿降低至最低,然后向后倚靠在地面上,然后发送0完成标定

 

修改蓝牙名称

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

参数名

格式

输入范围

说明

name

字符串

长度不大于10

蓝牙名称格式为XGORider_xxx,xxx为可修改部分,仅支持ascii码中的字符。

 

设定静止时背部LED灯色彩

rider_led(index, color)
双轮足

参数名

格式

输入范围

说明

index

uint8

1-4

左上,左下,右下,右上分别为1、2、3、4号LED

color

[uint8, uint8, uint8]

0-255

写入三个字节数据,数值范围为0-255,代表RGB的亮度,[0,0,0]代表灭,[255,255,255]代表最亮的白光

 

 

 

 

 

 

 

 

 

 

教育库介绍

XGO的教育库主要是给出了集成在AI模组中的摄像头,屏幕,按键,麦克风和喇叭等硬件的Python接口。以及部分AI模型调用等功能。

 

初始化

以下为初始化代码:

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()

屏幕绘图

需要先杀掉自启动main.py进程,否则会屏幕刷新冲突

sudo ps -ef | grep main.py

画直线

lcd_line(x1,y1,x2,y2,color=(r,g,b),width=width)

参数名

格式

输入范围

说明

x1,y1,x2,y2

数字

x1 x2:[0,320]

y1 y2:[0,240]

x1,y1为初始点标

x2,y2为终止点坐标

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为线颜色

width(可缺省)

默认为2

数字

 

width为线宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_line(80,80,150,150,color=(255,0,0),width=2)

 

画圆形

lcd_round(center_x, center_y, radius, color=(255, 255, 255), width=2)

参数名

格式

输入范围

说明

center_x

center_y

数字

center_x:[0,320]

center_x:[0,240]

center_x,center_y为圆心坐标

raduius

数字

 

raduius为半径

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为圆弧颜色

width(可缺省)

默认为2

数字

 

width为圆弧宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_round(30,30,10,color=(255,0,0),width=2)

画圆弧

lcd_arc(x1,y1,x2,y2,angle0,angle1,color=(255,255,255),width=2)

参数名

格式

输入范围

说明

x1,y1,x2,y2

数字

x1 x2:[0,320]

y1 y2:[0,240]

x1,y1,x2,y2为定义边界框的两个点

angle0,angle1

数字

angle0 angle1:[0,360]

angle0为初始角度,三点钟方向为起始点,顺时针增加。

angle1为终止角度

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为圆弧颜色

width(可缺省)

默认为2

数字

 

width为圆弧宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_arc(30,30,150,150,50,100,color=(255,0,0),width=2)

画矩形

lcd_rectangle(x1,y1,x2,y2,fill=None,outline=(255,255,255),width=2)

参数名

格式

输入范围

说明

x1,y1,x2,y2

数字

x1 x2:[0,320]

y1 y2:[0,240]

x1,y1为初始点标

x2,y2为终止点坐标

fill(可缺省)

默认为None

rgb元组

r g b:[0,255]

fill为填充颜色

None则为不填充

outline(可缺省)

默认为白色

rgb元组

r g b:[0,255]

outline为线颜色

width(可缺省)

默认为2

数字

 

width为线宽

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_rectangle(20,20,100,100,fill=None,outline=(255,0,0),width=2)

显示文字

可显示中文与英文使用微软雅黑字体,字体大小可调节

lcd_text(x,y,content,color=(255,255,255),fontsize=15)

参数名

格式

输入范围

说明

x,y

数字

x y:[0,320]

x,y为初始点标

content

字符串

 

content为显示内容

color(可缺省)

默认为白色

rgb元组

r g b:[0,255]

color为文字颜色

fontsize(可缺省)

默认为15

数字

 

fontsize为字体大小

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()  
XGO_edu.lcd_text(50,50,'hello',color=(255,0,0),fontsize=50)

显示图片

lcd_picture(filename)

参数名

格式

说明

filename

字符串

图片文件名需要加jpg扩展名

图片文件显示路径为/home/pi/xgoPictures,图片大小为320*240

清除屏幕

lcd_clear()

按键检测

xgoButton(button)

参数名

格式

输入范围

返回值

button

指定字符串

["a","b"]

False未按下 True按下

音视频功能

播放音频

xgoSpeaker(filename)

参数名

格式

输入范围

说明

filename

字符串

 

音频文件扩展名wav,路径为/home/pi/xgoMusic

播放视频

xgoVideo(filename)

参数名

格式

输入范围

说明

filename

字符串

 

视频文件扩展名mp4

路径为/home/pi/xgoVideos

录制音频

xgoAudioRecord(filename="record",seconds=5)

参数名

格式

输入范围

说明

filename(可缺省)

默认"record"

字符串

 

录制音频的文件名

会自动添加扩展名wav,录制的文件路径为/home/pi/xgoMusic

seconds(可缺省)

默认为5

数字

 

录制文件的长度(秒)

摄像头功能

摄像头

xgoCamera(status)

参数名

格式

输入范围

说明

status

布尔值

True,False

打开和关闭摄像头,屏幕会实时显示视频流

录制视频

xgoVideoRecord(filename="record",seconds=5)

参数名

格式

输入范围

说明

filename(可缺省)

默认"record"

字符串

 

录制视频的文件名

会自动添加扩展名mp4,录制的文件路径为/home/pi/xgoVideos

seconds(可缺省)

默认为5

数字

 

录制文件的长度(秒)

拍摄照片

xgoTakePhoto(filename="photo")

参数名

格式

输入范围

说明

filename(可缺省)

默认"photo."

字符串

 

拍摄照片的文件名

会自动添加扩展名jpg,图片保存路径为/home/pi/xgoPictures

注意:使用此函数会自动运行xgoCamera(True),如不需要实时显示摄像头画面,请在此函数后面加上xgoCamera(False)

AI功能

此系列的api核心功能是调取一帧图像进行分析并返回结果,可在参数传入图片的路径,实现对单张图片的检测。如需实时分析摄像头画面,请配合while使用,下面为示例代码:

手势识别单张图片:

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()

#对同级目录下的camera.jpg进行手势识别
result=XGO_edu.gestureRecognition("camera.jpg")
#打印识别结果
print(result)

实时通过摄像头进行手势识别:

#导入xgoedu
from xgoedu import XGOEDU 
#实例化edu
XGO_edu = XGOEDU()

#循环进行摄像头识别,按c键退出
while True:
    result=XGO_edu.gestureRecognition()  #缺省参数,默认使用摄像头识别
    print(result)
    if XGO_edu.xgoButton("c"):   #c键按下退出循环
        break

获取手势识别结果的具体内容:

from xgoedu import XGOEDU 
XGO_edu = XGOEDU()
result=XGO_edu.gestureRecognition("camera.jpg")
#手势识别结果格式(ges,(x,y))
if result!=None:    #先加结果是否为空的判断,否则会提示下标错误
    gesture=result[0]    #获取手势识别结果(字符串)
    x=result[1][0]   #获取x坐标(数值)
    y=result[1][1]   #获取y坐标(数值)

骨骼识别

posenetRecognition(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

[angle1,angle2,angle3,angle4]

angle1、angle2 俩大臂和小臂之间的夹角

angle3、angle4 俩大臂和身体之间的夹角

 

手势识别手势识别

gestureRecognition(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(ges,(x,y))

ges为手势识别结果

目前包括的手势有:

["1","2","3","4","5","Good","Ok","Rock","Stone"]

坐标值xy

YOLO识别

yoloFast(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(object,(x,y))

object为YOLO识别结果

目前包括的物体有:

['person','bicycle','car','motorbike','aeroplane','bus','train','truck','boat','trafficlight','firehydrant','stopsign','parkingmeter','bench','bird','cat','dog','horse','sheep','cow','elephant','bear','zebra','giraffe','backpack','umbrella','handbag','tie','suitcase','frisbee','skis','snowboard','sportsball','kite','baseballbat','baseballglove','skateboard','surfboard','tennisracket','bottle','wineglass','cup','fork','knife','spoon','bowl','banana','apple','sandwich','orange','broccoli','carrot','hotdog','pizza','donut','cake','chair','sofa','pottedplant','bed','diningtable','toilet','tvmonitor','laptop','mouse','remote','keyboard','cell phone','microwave','oven','toaster','sink','refrigerator','book','clock','vase','scissors','teddy bear','hair drier','toothbrush']

坐标值xy

人脸检测

face_detect(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

[x,y,w,h] 人脸识别框的

x坐标,y坐标,宽度,高度

情绪识别

emotion(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(emotion,(x,y))

emotion包括:

['Angry','Happy','Neutral','Sad','Surprise']

坐标值xy

年龄性别识别

agesex(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(gender,age,(x,y))

gender包括['Male', 'Female']

age包括['(0-2)', '(4-6)', '(8-12)', '(15-20)', '(25-32)', '(38-43)', '(48-53)', '(60-100)']

坐标值xy

语音识别(需要联网,离线不可用)

SpeechRecognition(seconds=3)

参数名

格式

说明

返回值

seconds(可缺省)

默认为3

数字

录制文件的长度(秒)

语句执行后,稍作停顿再讲话

识别结果字符串

语音合成(需要联网,离线不可用)

SpeechSynthesis(texts)

参数名

格式

说明

返回值

texts

字符串

支持中文、英语及混用

无 会自动播放合成后的语音

二维码识别

QRRecognition(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

二维码识别结果 result

可以识别多个结果,返回值为列表

小球识别

BallRecognition(color_mask,target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

color为预设颜色

字符串

target为图像文件的路径

小球识别结果 ((x,y))

返回圆心坐标

color_mask

获取颜色遮罩

 

需要函数cap_color_mask()获得

hsv颜色范围

实时获取特定颜色的小球轮廓:

from xgoedu import XGOEDU 
XGO_edu = XGOEDU()
color=XGO_edu.cap_color_mask()
#通过api手动获取需要识别小球的颜色
while True:
    result=XGO_edu.BallRecognition(color)  #填入获取的颜色
    print(result)
    if XGO_edu.xgoButton("c"):   #c键按下退出循环
        break

颜色识别

ColorRecognition(target="camera",mode='R')

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

颜色识别结果((x,y),r)

可以识别多个结果,返回值为列表

mode为预设颜色

固定值(字符串)

RGBY对应红绿蓝黄

如选黄色则填入mode='Y'

result=XGO_edu.gestureRecognition() #缺省参数,默认使用摄像头识别 print(result) if XGO_edu.xgoButton("c"): #c键按下退出循环 break

获取手势识别结果的具体内容:

from xgoedu import XGOEDU 
XGO_edu = XGOEDU()
result=XGO_edu.gestureRecognition("camera.jpg")
#手势识别结果格式(ges,(x,y))
if result!=None:    #先加结果是否为空的判断,否则会提示下标错误
    gesture=result[0]    #获取手势识别结果(字符串)
    x=result[1][0]   #获取x坐标(数值)
    y=result[1][1]   #获取y坐标(数值)

骨骼识别

posenetRecognition(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

[angle1,angle2,angle3,angle4]

angle1、angle2 俩大臂和小臂之间的夹角

angle3、angle4 俩大臂和身体之间的夹角

 

手势识别手势识别

gestureRecognition(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(ges,(x,y))

ges为手势识别结果

目前包括的手势有:

["1","2","3","4","5","Good","Ok","Rock","Stone"]

坐标值xy

YOLO识别

yoloFast(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(object,(x,y))

object为YOLO识别结果

目前包括的物体有:

['person','bicycle','car','motorbike','aeroplane','bus','train','truck','boat','trafficlight','firehydrant','stopsign','parkingmeter','bench','bird','cat','dog','horse','sheep','cow','elephant','bear','zebra','giraffe','backpack','umbrella','handbag','tie','suitcase','frisbee','skis','snowboard','sportsball','kite','baseballbat','baseballglove','skateboard','surfboard','tennisracket','bottle','wineglass','cup','fork','knife','spoon','bowl','banana','apple','sandwich','orange','broccoli','carrot','hotdog','pizza','donut','cake','chair','sofa','pottedplant','bed','diningtable','toilet','tvmonitor','laptop','mouse','remote','keyboard','cell phone','microwave','oven','toaster','sink','refrigerator','book','clock','vase','scissors','teddy bear','hair drier','toothbrush']

坐标值xy

人脸检测

face_detect(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

[x,y,w,h] 人脸识别框的

x坐标,y坐标,宽度,高度

情绪识别

emotion(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(emotion,(x,y))

emotion包括:

['Angry','Happy','Neutral','Sad','Surprise']

坐标值xy

年龄性别识别

agesex(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

(gender,age,(x,y))

gender包括['Male', 'Female']

age包括['(0-2)', '(4-6)', '(8-12)', '(15-20)', '(25-32)', '(38-43)', '(48-53)', '(60-100)']

坐标值xy

语音识别(需要联网,离线不可用)

SpeechRecognition(seconds=3)

参数名

格式

说明

返回值

seconds(可缺省)

默认为3

数字

录制文件的长度(秒)

语句执行后,稍作停顿再讲话

识别结果字符串

语音合成(需要联网,离线不可用)

SpeechSynthesis(texts)

参数名

格式

说明

返回值

texts

字符串

支持中文、英语及混用

无 会自动播放合成后的语音

二维码识别

QRRecognition(target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

二维码识别结果 result

可以识别多个结果,返回值为列表

小球识别

BallRecognition(color_mask,target="camera")

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

color为预设颜色

字符串

target为图像文件的路径

小球识别结果 ((x,y))

返回圆心坐标

color_mask

获取颜色遮罩

 

需要函数cap_color_mask()获得

hsv颜色范围

实时获取特定颜色的小球轮廓:

from xgoedu import XGOEDU 
XGO_edu = XGOEDU()
color=XGO_edu.cap_color_mask()
#通过api手动获取需要识别小球的颜色
while True:
    result=XGO_edu.BallRecognition(color)  #填入获取的颜色
    print(result)
    if XGO_edu.xgoButton("c"):   #c键按下退出循环
        break

颜色识别

ColorRecognition(target="camera",mode='R')

参数名

格式

说明

返回值

target(可缺省)

默认"camera"

即使用摄像头捕捉图像

字符串

target为图像文件的路径

颜色识别结果((x,y),r)

可以识别多个结果,返回值为列表

mode为预设颜色

固定值(字符串)

RGBY对应红绿蓝黄

如选黄色则填入mode='Y'

标签:load,allmotor,XGO,dog,参数,格式,输入,255
From: https://www.cnblogs.com/flyingsir/p/18535203

相关文章

  • upload-labs
    upload-labs1-13upload-labs1-13upload-labs1-13pass-01pass-02pass-03pass-04pass-05pass-06pass-07pass-08pass-09pass-10pass-11pass-12pass-13pass-01首先我们新建文件a.php并用一句话木马<?php@eval($_POST['cmd']);?>然后我们上传1.php发现弹窗给出了白名......
  • Failed to load local image resource(在小程序中,`src` 属性需要使用双花括号 `{{ }}`
    文章目录修改WXML文件确保图像文件路径正确检查逻辑层代码总结[渲染层网络层错误]Failedtoloadlocalimageresource/components/antiFakeQuery/imageSrctheserverrespondedwithastatusof500(HTTP/1.1500InternalServerError)(env:Windows......
  • 【漏洞复现】灵当CRM multipleUpload.php 任意文件上传漏洞
    免责声明:        本文旨在提供有关特定漏洞的信息,以帮助用户了解潜在风险。发布此信息旨在促进网络安全意识和技术进步,并非出于恶意。读者应理解,利用本文提到的漏洞或进行相关测试可能违反法律或服务协议。未经授权访问系统、网络或应用程序可能导致法律责任或严......
  • Windows Server 中的 NLB(Network Load Balancing,网络负载均衡)功能是一个用于将客户端
    WindowsServer中的NLB(NetworkLoadBalancing,网络负载均衡)功能是一个用于将客户端请求分配到多个服务器的技术,目的是提供高可用性和扩展性。NLB通过在多个服务器之间分配网络流量,确保应用程序或服务的高可用性,避免单点故障,并提高系统的处理能力。NLB通常用于需要高可用性和......
  • Loadrunner监控Windows系统资源图报错
    问题描述无法连接计算机无法访问主机HKEY_PERFORMANCE_DATA密钥拒绝访问虚拟机部署了一个系统,本机使用LR进行压测系统并监控Windows资源,无法连接,总提示百度解决这种问题,描述的还很少,发现了好几种解决办法,最后也确实解决了。。。但是系统搞得贼乱,权限不足等等情况,项目都......
  • [ACTF2020 新生赛]Upload
    题目链接:https://buuoj.cn/challenges#[ACTF2020新生赛]Upload打开环境后如下所示。指向灯泡,可以发现存在一个上传功能。尝试先上传".php"后缀文件,响应包如下。题目提示"nonono~Badfile!",此处笔者直接修改后缀为".phtml"后,发现可以成功上传,并且网页告知了上传的文件......
  • [极客大挑战 2019]Upload
    题目链接:https://buuoj.cn/challenges#[极客大挑战2019]Upload。打开环境,如下所示。通过页面源代码可以发现,该网站系PHP架构,因此尝试直接上传一句话木马。发现提示"NOT!php!",因此尝试fuzzing一下后缀名。发现网站可以通过了"phtml"的后缀名,但是提示文件内容存在字符......
  • Unity——删除一个DontDestroyOnLoad的物体
    文章目录前言一、示例前言在Unity中,如果你想要删除一个被标记为DontDestroyOnLoad的GameObject,你可以通过调用Destroy方法来实现。但是由于DontDestroyOnLoad会在场景切换时保持对象不被销毁,你需要先取消这个标记,然后再销毁它。一、示例usingUnityEngine;publ......
  • HDK Fileheader Download(2.0)
    HDKFileheaderLibraryDownload2.0Download1.13|1.13.1|1.13.2|1.13.3|1.13.4Download1.12|1.12.1|1.12.2Download1.11Download1.10|1.10.1Download1.9Download1.8|ForLinuxDownload1.7|1.7.1|1.7.2Download1.6Download1.5Downloa......
  • 面对addownload.dll无法打开,如何快速找到解决办法?
    在使用Windows操作系统时,我们可能会遇到各种DLL文件无法打开或加载的问题,其中addownload.dll就是一个例子。这个DLL文件可能与特定的应用程序或服务相关联,当它无法被正确加载或打开时,可能会导致应用程序崩溃、系统错误或性能下降。本文将为您提供一系列快速找到并解决addownloa......