MyPalletizer 260
[toc]
Python API使用说明
API(Application Programming Interface)又称应用程序编程接口函数,是预先定义好的函数,使用以下函数接口时,请在一开始就导入我们的API库,输入如下代码,否则无法运行成功:
# 示例
from pymycobot import MyPalletizer260
# M5版本
mc = MyPalletizer260('COM3', 115200)
# PI版本
# mc = MyPalletizer260('/dev/ttyAMA0', 1000000)
# 获取所有关节当前的角度
angles = mc.get_angles()
print(angles)
# 将 1关节移动到 40,速度设置为 20
mc.send_angle(1, 40, 20)
1. 系统状态
1.1 get_system_version()
- 功能: 获取机器主控版本(atom固件版本)
- 返回值: 固件版本号
1.2 get_basic_version()
- 功能: 获取 M5 版本的basic固件版本
- 返回值:
float
固件版本
2. 机器人整体运行状态
2.1 power_on()
- 功能: atom 打开通信(默认打开)
2.2 power_off()
- 功能: 机械臂掉电
2.3 is_power_on()
功能: 判断机械臂是否上电
返回值:
1
: 上电0
: 掉电-1
: 错误
2.4 release_all_servos(data=None)
- 功能: 放松所有机械臂关节
- 参数:
data
(可选):关节放松方式,默认为阻尼模式,若提供data
参数可指定为非阻尼模式(1-Undamping)。
2.5 focus_servo(servo_id)
功能: 单个舵机上电
参数:
servo_id:
int, 1-6
2.6 is_controller_connected()
功能: Atom通信是否连接
返回值:
1
: 连接0
: 未连接-1
: 错误数据
2.7 set_free_mode()
功能: 设置自由移动模式
参数:
1
: 打开自由移动模式0
: 关闭自由移动模式
2.8 is_free_mode()
功能: 检测是否为自由移动模式
返回值:
1
: 自由移动模式0
: 非自由移动模式
3. MDI运行与操作
3.1 get_angles()
- 功能: 获取所有关节的度数
- 返回值:
list
所有度数的浮点列表
3.2 send_angle(id, degree, speed)
- 功能: 向机械臂发送一个关节度数
- 参数:
id
:关节 id,范围 int 1-4degree
:度数值(float
)speed
:机械臂运动速度及范围 1~100
关节 Id | 范围 |
---|---|
1 | -162 ~ 162 |
2 | -2 ~ 90 |
3 | -92 ~ 60 |
4 | -180 ~ 180 |
3.3 send_angles(angles, speed)
- 功能: 将所有角度发送到机械臂的所有关节
- 参数:
angles
:度数列表(List[float]
),长度 4speed
:(int
)1 ~ 100
3.4 get_coords()
- 功能: 从基于基准的坐标系获取机械臂坐标
- 返回值: 坐标浮点列表:[x, y, z, rx]
3.5 send_coord(id, coord, speed)
- 功能: 向机械臂发送一个坐标
- 参数:
id
:向机械臂发送一个坐标,1-6 对应 [x, y, z, rx]coord
:坐标值(float
)speed
:(int
)1-100
坐标 Id | 范围 |
---|---|
x | -260 ~ 260 |
y | -260 ~ 260 |
z | -15 ~ 357.58 |
rx | -180 ~ 180 |
3.6 send_coords(coords, speed)
- 功能::发送整体坐标和姿态,将机械臂头部从原点移动到您指定的点
- 参数:
coords
: 坐标列表,值[x,y,z,rx]
,长度4speed
(int
):1 ~ 100
3.7 pause()
- 功能: 控制指令暂停核心并停止所有运动指令
- 返回值:
1
- 已停止0
- 没有停止-1
- 错误
3.8 sync_send_angles(angles, speed, timeout=15)
- 功能: 同步状态下发送角度,到达目标点后返回
- 参数:
angles
:角度值列表(List[float]
),长度 4speed
:(int
)1 ~ 100timeout
: 默认15秒
3.9 sync_send_coords(coords, speed, timeout=15)
- 功能: 同步状态下发送坐标,到达目标点后返回
- 参数:
coords
:坐标值列表(List[float]
),长度4speed
:(int
)1~100timeout
: 默认15秒
3.10 get_angles_coords()
功能:获取关节角度和坐标
返回值:一个长度为8的列表,前4位为角度信息,后4位为坐标信息。
3.11 is_paused()
- 功能: 检查程序是否暂停移动命令
- 返回值:
1
- 已暂停0
- 没有暂停-1
- 错误
3.12 resume()
- 功能: 恢复机器人运动并完成上一个命令
3.13 stop()
- 功能: 停止机器人运动
- 返回值:
1
- 已停止0
- 没有停止-1
- 错误
3.14 is_in_position(data, flag)
- 功能 : 判断是否在某个位置。
- 参数:
data
:提供一组数据,可以是角度,也可以是坐标值,如果输入角度长度范围是6,如果输入坐标值长度范围是6flag
(值范围0或1)0
: 角度1
: 坐标
- 返回值:
1
- 到达0
- 未到达-1
- 错误
3.15 is_moving()
- 功能: 判断机器人是否运动
- 返回值:
1
运动中0
未运动-1
错误
4. JOG运行与操作
4.1 jog_angle(joint_id, direction, speed)
- 功能: 点动控制角度
- 参数:
joint_id
:表示机械臂的关节,用关节ID表示,范围是1~4direction(int)
:控制机械臂运动的方向,输入0
为负值运动,输入1
为正值运动speed
:1~100
4.2 jog_coord(coord_id, direction, speed)
- 功能: 点动控制坐标
- 参数:
coord_id
: (int
) 机械臂坐标范围:1~4direction
: (int
) 控制机臂运动方向,0
- 负值运动,1
- 正值运动speed
: 1 ~ 100
4.3 jog_absolute(joint_id, angle, speed)
- 函数: 关节绝对控制角度
- 参数:
joint_id
:(int
)1-4angle
:-180 ~ 180speed
:(int
)1 ~ 100
4.4 jog_increment(joint_id, increment, speed)
- 功能:单关节角度增量控制
- 参数:
joint_id
:1-4increment
:基于当前位置角度的增量移动speed
:1~100
4.5 set_encoder(joint_id,coder,speed)
功能:设置单关节旋转为指定的潜在值
参数
joint_id
:(int
) 1-4encoder
:0~4096speed
:1~100
4.6 get_encoder(joint_id)
功能: 将单关节旋转设置为指定的电位值
参数
joint_id
: (int
) 1-4
返回值: (
int
) 关节电位值
4.7 set_encoders(encoders, speed)
功能: 设置机械手六个关节同步执行到指定位置。
参数
joint_id
: (int
) 1-4encoder
: 0 ~ 4096speed
: 1 ~ 100
4.8 get_encoders()
功能:获取机械臂的六个关节电位值。
返回值:(
list
)电位值列表
5. 运行状态及设置
5.1 get_speed()
功能: 获取机器人的运动速度
返回值:
int
机器人当前所设定的运行速度,范围在1-100
5.2 set_speed(speed)
- 功能: 设置机器人的运动速度
- 参数:
speed
: (int) 1-100
- 返回值:
float
角度值
5.3 get_joint_min_angle(joint_id)
- 功能: 获取指定关节的最小运动角度
- 参数:
joint_id
: 输入关节ID(范围0-3)
- 返回值:
float
角度值
5.4 get_joint_max_angle(joint_id)
- 功能: 获取指定关节的最大运动角度
- 参数:
joint_id
: 输入关节ID(范围0-3)
- 返回值:
float
角度值
5.5 set_joint_min(id, angle)
- 功能: 设置最小关节角度限制
- 参数:
id
: 输入关节ID(范围0-3)angle
: 参考 send_angle() 接口中对应关节的限制信息,不得小于最小值
5.6 set_joint_max(id, angle)
- 功能: 设置最大关节角度限制
- 参数:
id
:输入关节ID(范围0-3)angle
:参考 send_angle() 接口中对应关节的限制信息,不得大于最大值
6. 关节电机控制
6.1 is_servo_enable(servo_id)
- 功能: 检测关节连接状态
- 参数:
servo id
1-4 - 返回值:
1
: 连接成功0
: 未连接-1
: 错误
6.2 is_all_servo_enable()
- 功能: 检测所有关节连接状态
- 返回值:
1
: 连接成功0
: 未连接-1
: 错误
6.3 set_servo_calibration(servo_id)
- 功能: 校准指定关节,设置当前位置为角度零点,对应电位值为2048
- 参数:
servo_id
: 1 - 4
6.4 release_servo(servo_id)
- 功能: 放松指定的单个舵机
- 参数:
servo_id
: 1 ~ 4
- 返回值:
1
: 放松成功0
: 放松失败-1
: 错误
6.5 focus_servo(servo_id)
- 功能:上电指定舵机
- 参数:
servo_id
: 1 ~ 6 - 返回值:
1
: 上电成功0
: 上电失败-1
: 错误
6.6 set_servo_data(servo_id, data_id, value, mode=None)
- 功能: 设置舵机指定地址的数据参数
- 参数:
servo_id
: (int
) 关节 id 1 - 4data_id
: (int
) 数据地址value
: (int
) 0 - 4096mode
: 0 - 表示值为一个字节(默认),1 - 1 表示值为两个字节。
6.7 get_servo_data(servo_id, data_id, mode=None)
- 功能: 读取舵机指定地址的数据参数。
- 参数:
servo_id
: (int
) 关节id 1 - 4data_id
: (int
) 数据地址mode
: 0 - 表示值为一个字节(默认),1 - 1 表示值为两个字节。
- 返回值: 0 ~ 4096
6.8 joint_brake(joint_id)
- 功能: 使关节在运动时停止,缓冲距离与现有速度正相关
- 参数:
joint_id
: (int
) 关节id 1 - 4
7. 机械臂末端IO控制
7.1 set_color(r, g, b)
- 功能: 设置机械臂末端灯光颜色
参数:
r (int)
: 0 ~ 255g (int)
: 0 ~ 255b (int)
: 0 ~ 255
7.2 set_digital_output(pin_no, pin_signal)
- 功能: 设置IO状态
- 参数
pin_no
(int): 引脚号pin_signal
(int): 0 / 1, 输入0表示设置为运行状态,输入1表示停止状态
7.3 get_digital_input(pin_no)
- 功能: 获取IO状态
- 参数:
pin_no
(int) - 返回值: 当返回的值为0表示在工作状态运行,1表示停止状态
7.4 set_pin_mode(pin_no, pin_mode)
- 功能: 设置原子中指定引脚的状态模式。
- 参数
pin_no
(int): 引脚号pin_mode
(int): 0 - 运行状态, 1 - 停止状态, 2 - 上拉模式
8. 机械臂末端夹爪控制
8.1 set_gripper_state(flag, speed, _type_1=None)
功能: 让夹爪以指定的速度进入到指定的状态
参数:
flag (int)
: 0 - 打开 1 - 关闭, 254 - 释放speed (int)
: 1 ~ 100_type_1 (int)
:1
: 自适应夹爪 (默认是自适应夹爪)2
: 五指灵巧手3
: 平行夹爪4
: 柔性夹爪
8.2 set_gripper_value(gripper_value, speed, gripper_type=None)
功能: 让夹爪以指定的速度转动到指定的位置
参数:
gripper_value (int)
: 0 ~ 100speed (int)
: 1 ~ 100gripper_type (int)
:1
: 自适应夹爪 (默认是自适应夹爪)2
: 五指灵巧手3
: 平行夹爪4
: 柔性夹爪
8.3 set_gripper_calibration()
- 功能: 将夹爪的当前位置设置为零位
8.4 is_gripper_moving()
- 功能: 判断夹爪是否正在运行
- 返回值:
0
: 没有运行1
: 正在运行-1
: 错误
8.5 get_gripper_value()
- 功能: 获取夹爪的当前位置数据信息
- 参数:
gripper_type
: (int) 默认 1- 1: 自适应夹爪
- 3: 平行夹爪
- 4: 柔性夹爪
- 返回值:夹爪的数据信息 (int)
9. 设置底部IO输入/输出状态
9.1 set_basic_output(pin_no, pin_signal)
- 功能:设置底部引脚号的工作状态。
- 参数:
pin_no
(int
) 设备底部标注的编号仅取数字部分pin_signal
(int
): 0 - 低电平,设置为运行状态. 1 - 高电平,停止状态。
9.2 get_basic_input(pin_no)
- 功能: 获取底部引脚号的工作状态
- 参数:
pin_no
(int
) 表示机器人底部的具体引脚号。
- 返回值: 0 - 低电平,运行状态. 1 - 高电平,停止状态
10. WLAN 设置
10.1 set_ssid_pwd(account, password)
- 功能: 更改连接的wifi. (适用于M5)
- 参数:
account
: (str
) 新的 wifi 账户password
: (str
) 新的 wifi 密码
10.2 get_ssid_pwd()
- 功能: 获取连接的wifi账号和密码. (适用于M5)
- 返回值: 当前连接的wifi账号和密码
10.3 set_server_port(port)
- 功能: 更改服务器的连接端口
- 参数:
port
: (int
) 服务器的新连接端口
11. TOF
11.1 get_tof_distance()
- 功能: 获取检测到的距离(需要外部距离检测器)
- 返回值: 检测到的距离值,单位为mm。
12. 树莓派 -- GPIO
12.1 gpio_init()
- 功能: 初始化 GPIO 模块,设置 BCM 模式
12.2 gpio_output(pin, v)
功能: 设置GPIO输出值
参数
pin
(int
) 引脚编号v
(int
):0 -设置为低电平 1 -设置为高电平
13. utils(模块)
该模块支持一些帮助方法,使用之前在文件开头输入代码导入模块:
from pymycobot import utils
13.1 utils.get_port_list()
功能: 获取当前所有串口号列表
返回值: 串口列表(
list
)
13.2 utils.detect_port_of_basic()
功能: 返回第一个检测到的 M5 Basic 的串口号。(只会返回一个串口号)
返回值: 返回检测到的端口号,如果没有监测到串口号则返回:None
MyPalletizer 260 Socket
注意: raspberryPi版本 仅支持python3 使用此类前提的机械臂有服务器,并且已经开启服务。
使用TCP/IP控制机械臂
1. 客户端
# 示例
from pymycobot import MyPalletizerSocket
# 默认使用端口 9000
mc = MyPalletizerSocket("192.168.10.10",9000)
res = mc.get_angles()
print(res)
mc.send_angles([0,0,0,0],20)
...
2. 服务端
服务端文件在demo文件夹
中,具体请检查demo文件夹中的Server_260.py文件
3. socket 控制
注意: 大部分方法与 MyPalletizer260 类相同,这里只列出新方法。
3.1 set_gpio_mode(mode)
功能: 设置树莓派GPIO针脚模式
参数
mode
(str
) "BCM" 或者 "BOARD" 进入相应模式
3.2 set_gpio_out(pin_no, mode)
功能: 设置引脚作为输入或者输出
参数
pin_no
(int
) 引脚编号.mode
(str
)in
- 输入 ;out
- 输出
3.3 set_gpio_output(pin_no, state)
功能: 将引脚设置为高,低电平
参数
pin_no
(int
) 引脚编号.state
(int
) 0-设置为低电平 1-设置为高电平
3.4 get_gpio_in(pin_no)
功能: 获取引脚电平状态
参数
pin_no
(int
) 引脚编号
- 返回值: 0 为低电平 1 为高电平