load_allmotor

news/2024/11/8 15:38:11/文章来源:https://www.cnblogs.com/flyingsir/p/18535203

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 pi@192.168.1.2

其中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. 编写代码
pythonprint("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 pi@192.168.1.2

其中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. 编写代码
pythonprint("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'

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/828841.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

央国企“严选”!天翼云夺得IaaS+PaaS市场桂冠!

10月17日,赛迪顾问发布的《2024中国央国企云市场研究报告》显示,2023年,在中国央国企云“IaaS+PaaS”市场中,中国电信天翼云凭借行业云和全栈服务能力、渠道优势位居第一。10月17日,赛迪顾问发布的《2024中国央国企云市场研究报告》显示,2023年,在中国央国企云“IaaS+Pa…

舞台已就位!坐等AI玩家集结!

舞台已就位!坐等AI玩家集结!舞台已就位!坐等AI玩家集结!

Nuxt.js 应用中的 prepare:types 事件钩子详解

title: Nuxt.js 应用中的 prepare:types 事件钩子详解 date: 2024/11/8 updated: 2024/11/8 author: cmdragon excerpt: prepare:types 钩子为 Nuxt.js 开发者提供了灵活定制 TypeScript 配置和声明的能力。通过使用此钩子,开发者能够确保 TypeScript 配置和类型声明能够满…

线段树的好朋友,平衡复杂度的好帮手——多叉堆

多叉堆,和 另外一个 是好兄弟,在某些 dijkstra 中用于阳间地平衡复杂度。 本质上是控制堆的高度,用一个 \(V^{\frac 1 k}\) 叉树来维护堆,当元素的值减小时只需要 \(O(k)\),弹出最小值也只需要 \(O(k + V^{\frac{1}{k}})\),当 \(k\) 取 \(\ge 2\) 的常数(根据题目来)就…

BERT 微调实战

带着问题来学习BERT 的预训练过程是如何完成的,在预训练过程中,采用了哪两种任务?本次实战是用 SQuAD 数据集微调 BERT, 来完成我们的问答任务,你能否用 IMDB 影评数据集来微调 BERT,改进 BERT 的结果准确率?文章最后会公布问题的参考答案~一、BERT 简介 BERT 全称 Bidi…

视频智能分析网关视频分析网关区域人数统计检测算法探析

随着城市化进程的加快和公共安全管理需求的提升,对公共场所、工业区域等人流量密集场所的监控和管理变得尤为重要。传统的视频监控系统已经无法满足现代智能化管理的需求,市场迫切需要一种能够实现实时监控、智能分析和自动报警的高效解决方案。基于此,区域人数统计视频分析…

SDN实验报告

SDN上机实验 实验目的能够使用Mininet的实现网络拓扑构建;熟悉Open vSwitch交换机的基本配置;熟悉OpenFlow协议的通信原理掌握pox控制器的基本使用方法;掌握Ryu控制期的基本使用方法;掌握北向应用的基本开发方法实验环境 基础环境选择ubuntu-20.04.6-desktop-amd64 实验内容…

双11买ToDesk远程控制&云电脑,看这一篇就够了!

今年双十一各大商家实在是太卷了,预售定金满减凑单一堆花活。但小编发现ToDesk远程控制&云电脑的双十一活动不一般。 囊括了远程控制各种会员版本的年包优惠,云电脑的计时机包时机活动,充值还送钱,优惠力度大,而且直接减钱,不费脑子就拿下超值价格。小编给大家简单整理了…

Java 面试用什么项目?全是商场秒杀 RPC,我吐了

看了几百份简历,真的超过 90% 的小伙伴的项目是商城、RPC、秒杀、论坛、外卖、点评等等烂大街的项目,人人都知道这些项目烂大街了,但大部分同学还是得硬着头皮做,没办法,网络上能找到的、教程比较完善的就这些项目了,做的话好歹有个项目,不做那就真能写学校做的垃圾学生…

极狐GitLab 签约某清洁能源高科技企业,助力零碳技术开创更加美好的零碳世界

客户背景 该客户是一家全球领先的清洁能源高科技公司,总部位于江苏省。公司自成立之初就致力于为全球客户提供清洁、高效、安全的能源解决方案,希望能用高科技技术让新能源发挥更大价值,让世界变得更加美好。当前,该客户在多个能源领域都有领先的产品和成熟的解决方案,也一…

DAC8568IAPWR 数据手册 具有 2.5V、2ppm/C 内部基准电压的 DAC7568、DAC8168、DAC8568 12/14/16 位、8 通道、超低毛刺、电压输出数模转换器芯片

DAC7568、DAC8168 和 DAC8568 分别为 12 位、14位和 16 位低功耗、电压输出、八通道数模转换器(DAC)。这些器件包括一个 2.5V、2ppm/C 内部基准电压(默认禁用),可提供 2.5V 或 5V 的满量程输出电压范围。内部基准电压初始精度为 0.004%,而且可在 VREFIN/VREFOUT 引脚上提供…

ue4资产序列化从入门到精通: 第一章 初识序列化

一、写作目的:(全文字数4926,阅读大约需25min) 首先,我有一个相关的需求要做,然后在拜读了网络上各大UE4序列化解析的文章后,发现大都讲的很模糊,对新入序列化大门的小白非常不友好。有的直接贴上一大段代码(好似直接糊脸上的不解释连招),也有的讲着讲着嘎然而止,也有的…