关节控制
对于串行多关节机器人来说,关节控制就是控制机器人手臂各关节的变量,使各关节以一定的速度到达目标位置。
1 单关节控制
1.1 发送单个关节的角度
WriteAngle(Joint joint, double value, int speed = DefaultSpeed)example
功能:发送单关节角度
返回值:无
参数说明:参数 1:关节号(1-6) 参数 2:角度(-170°- 170°) 参数 3:速度(0-100),默认为30
example:
mycobot::MyCobot::I().WriteAngle(mycobot::Joint::J1, 10, 30);
1.2 获得单关节的最小角度
GetJointMin(Joint joint) example
功能:读取关节最小角度
返回值:double 类型,最小角度(关节最小能运行到的角度)
参数说明:关节号(1-6)
example:
mycobot::MyCobot::I().GetJointMin(mycobot::Joint::J1);
1.3 获取单个关节的最大角度
GetJointMax(Joint joint)example
功能:读取关节最大角度
返回值:double 类型,最大角度(关节最大能运行到的角度)
参数说明:关节号(1-6)
example:
mycobot::MyCobot::I().GetJointMax(mycobot::Joint::J1);
1.4 在指定关节上执行 Jog
JogAngle(Joint joint, int direction, int speed = DefaultSpeed)example
功能:使某个关节运动直至 Jogstop 或是到达限位
返回值:无
参数说明:参数 1:关节号(1-6),参数 2:方向(1--正方向,0--反方向),参数 3:速度(默认 30,范围:0-100)
注意:此 API 会让机械臂关节一直朝正反方向运动,到达限位后或者中途调用 JogStop 才会停止运动
example:
mycobot::MyCobot::I().JogAngle(mycobot::Joint::J1, 1, 30);
1.5 在指定关节上进行位置递增的点动运动
JogAngleIncrement(Joint joint, double increment, int speed = DefaultSpeed)example
功能:使某个关节运动设定的角度增量
返回值:无
参数说明:参数 1:关节号(1-6),参数 2:关节增量值,速度(默认 30,范围:0-100)
注意:机械臂进行步进运动:比如当前关节 1 坐标为-100,增量值为 50,运动完后,关节 1 将为 50
example:
mycobot::MyCobot::I().JogAngleIncrement(mycobot::Joint::J1, 10, 30);
2 多关节控制
2.1 获取所有关节的角度
GetAngles()example
功能:获取全部关节角度
返回值:Angles 类型
参数说明:无
example:
mycobot::Angles angles= mycobot::MyCobot::I().GetAngles();
2.2 发送所有关节的角度
WriteAngles(const Angles& angles, int speed = DefaultSpeed)example
功能:发送全部关节角度
返回值:无
参数说明:参数 1:全部角度(std::array
mycobot::Angles goal_angles = { 5, 5, 5, 5, 5, 5 };
mycobot::MyCobot::I().WriteAngles(goal_angles, 30);
mycobot::Angles goal_angles = { 5, 5, 5, 5, 5, 5 };
mycobot::MyCobot::I().WriteAngles(goal_angles, 30);
协调控制
坐标控制是使机械臂以指定的姿势移动到指定的点,分为 x、y、z、rx、ry、rz。X、Y、Z 表示机械臂头部在空间中的位置(坐标系为直角坐标系);[rx,ry,rz] 表示机械臂头部在该点的姿态(坐标系为欧拉坐标系)。
1 单参数控制
1.1 发送单一参数坐标
WriteCoord(Axis axis, double value, int speed = DefaultSpeed) example
功能:发送单参数坐标
返回值:无
参数说明:参数 1:坐标号(Axis 枚举类型,int:1-6(X-RZ)),参数 2:坐标(X、Y、Z取值范围 -300-300.00 单位 mm RX、RY、RZ,取值范围-180-180),参数 3:速度(0-100),默认为30
example:
mycobot::MyCobot::I().WriteCoord(mycobot::Axis::X, 10, 30);
1.2 在指定轴上点动
JogCoord(Axis axis, int direction, int speed = DefaultSpeed) example
功能:使机械臂朝坐标轴方向运动
返回值:无
参数说明:参数 1:坐标号(1-6,x y z rx ry rz),参数 2:方向(1--正方向,0--反方向),参数 3:速度(默认为 30,范围:0-100)
注意:此 API 会让机械臂一直朝坐标轴正反方向运动,到达限位后或者中途调用 JogStop 才会停止运动
example:
mycobot::MyCobot::I().JogCoord(mycobot::Axis::X, 1, 30);
1.3 在指定轴上以增量位置点动
JogCoordIncrement(Axis axis, double increment, int speed = DefaultSpeed)example
功能:使某个坐标运动设定的坐标增量
返回值:无
参数说明:参数 1:坐标号(1-6, x y z rx ry rz),参数 2:坐标增量值,参数 3:速度(默认 30,范围:0-100)
注意:机械臂进行步进运动:比如当前 x 轴坐标为 100,增量值为 50,运动完后,x 轴坐标将为 150
example:
mycobot::MyCobot::I().JogCoordIncrement(mycobot::Axis::X, 1, 30);
2 多参数控制
2.1 获取所有坐标
GetCoords() example
功能:获取全部坐标
返回值:Coords 类型
参数说明:无
2.2 发送所有坐标
WriteCoords(const Coords& coords, int speed = DefaultSpeed)example
功能:发送全部坐标
返回值:无
参数说明:参数 1:坐标(X、Y、Z取值范围 -300-300.00单位 mm RX、RY、RZ,取值范围-180-180),参数 2:速度(0-100),默认为 30
example:
mycobot::Coords goal_coords = {5, 5, 5, 5, 5, 5 };
mycobot::MyCobot::I().WriteCoords(goal_coords, 30);
mycobot::Coords goal_coords = {5, 5, 5, 5, 5, 5 };
mycobot::MyCobot::I().WriteCoords(goal_coords, 30);
IO 控制
M5Stack-basic 机器人手臂底部和 Atom 机器人手臂末端都有插针。吸附泵和其他工具可通过 io 控制设置引脚的高电平和低电平来控制。有关每种机械臂的输入和输出引脚数量,请参阅下表。
M5Stack-basic 输入和输出引脚说明表
Robot arm model | Input pin number | Output pin number |
---|---|---|
myCobot 280-M5 | 35、36 | 2、5、26 |
myCobot 320-M5 | 35、36 | 5、15 |
Atom 输入和输出引脚说明表
Robot arm model | Input pin number | Output pin number |
---|---|---|
myCobot 280-M5 | 19、22 | 23、33 |
myCobot 320-M5 | 无 | 无 |
1 M5Stack--基本 io 控制 (m5)
1.1 设置输出 io 的高电平和低电平
SetBasicOut(int pin_number, int pin_signal)example
功能:设置输出 io 高低电平
返回值:无
参数说明:参数 1:引脚号(basic 输出引脚号),参数 2:状态(0--低电平,1--高电平)
example:
mycobot::MyCobot::I().SetBasicOut(2, 1);
1.2 获取输入 io 的状态
GetBasicIn(int pin_number)example
功能:获取输入 io 状态
返回值:引脚状态(0--低电平,1--高电平)
参数说明:引脚号(basic 输入引脚号)
Case:
example:
mycobot::MyCobot::I().GetBasicIn(35);
2 Atom IO 控制
注:320m5 没有 atom io,因此不使用模块 API。
2.1 设置输出 io 的高电平和低电平
SetDigitalOut(int pin_number, int pin_signal) example
功能:设置输出 io 高低电平
返回值:无
参数说明:参数 1:引脚号(atom 输出引脚号),参数 2:状态(0--低电平,1--高电平)
Case:
example:
mycobot::MyCobot::I().SetDigitalOut(23, 1);
2.2 获取输入 io 的状态
GetDigitalIn(int pin_number)example
功能:获取输入 io 状态
返回值:引脚状态(0--低电平,1--高电平)
参数说明:引脚号(atom 输入引脚号)
Case:
mycobot::MyCobot::I().GetDigitalIn(19);
其他应用程序接口介绍
1 实例化 MyCobot
I()
功能:实例化 MyCobot
返回值:MyCobot 类型,myCobot 对象的单例实例
参数说明:无
注意:在调用下面的 API 时,不需要在单独实例化,调用此 API 即可
2 机器人整体运行状态 Overall Status
2.1 PowerOn()
功能:机械臂上电
返回值:无
参数说明:无
注意:机械臂上电后,无法手动移动机械臂
2.2 PowerOff()
功能:机械臂掉电
返回值:无
参数说明:无
注意:机械臂上电后,如果想要手动移动机械臂,可以调用此 API
2.3 SetFreeMoveMode(bool free_move = true)
功能:设置自由移动模式
返回值:无
参数说明:开启还是关闭自由移动,true--开启自由移动,false--关闭自由自动
注意:自由自动开启后,可以手动移动机械臂,同时 atom 上面的灯会变成黄色,关闭会变成绿色
2.4 IsFreeMoveMode()
功能:检测当前是否为自由移动模式
返回值:bool 类型,true-开启了自由移动,false-自由移动未开启
参数说明:无
2.5 IsControllerConnected()
功能:检测系统是否正常
返回值:无
参数说明:bool 类型,返回false 将无法控制机械臂
3 输入程序控制模式
3.1 IsInPosition(const Coords& coords, bool is_linear = true)
功能:检查机械臂是否到达指定的点位(角度或者坐标)
返回值:bool 类型,返回 false--未到达指定点位,返回 true--到达指定点位
参数说明:参数 1:所有角度或者坐标 参数 2:0 或者 1(坐标为 1(true),角度为 0(false))
3.2 IsMoving()
功能:检测机械臂是否正在运动
返回值:bool 类型,true--正在运动,false--未运动
参数说明:无
3.3 StopRobot()
功能:机械臂停止运动
当机械臂运动时,可以调用此 API,让机械臂停止运动
返回值:无
参数说明:无
4 运行辅助信息
4.1 GetSpeed()
功能:获取机械臂运动的速度
返回值:int 类型,机械臂运动速度(0-100)
参数说明:无
4.2 SetSpeed(int percentage)
功能:设置机械臂运动的速度
返回值:无
参数说明:机械臂移动速度(0-100)
4.3 GetJointMin(Joint joint)
功能:读取关节最小角度
返回值:double 类型,最小角度(关节最小能运行到的角度)
参数说明:关节号(1-6)
4.4 GetJointMax(Joint joint)
功能:读取关节最大角度
返回值:double 类型,最大角度(关节最大能运行到的角度)
参数说明:关节号(1-6)
4.5 SleepSecond(unsigned time)
功能:等待
返回值:无
参数说明:时间单位为秒