➤ 01整体控制框架说明
▲ 整体控制框架说明
➤ 02硬件接口
2.1综合通信接口
- 串行通信232逻辑电平
- 波特率: 115200bps
- 数据位:8
- 停止位:1
- 奇偶校验:无
➤ 03通信协议
-
设备地址
上层设备发送时,设备地址位表示为指令目标地址(默认为0xff)
底层设备发送时,设备地址位表示为指令来源地址(默认为0xff) -
指令确认(cmdcfm)
底层设备接收到指令并处理后,赋值该字节用于反馈指令执行情况。参考"types.h"中E_RtnTydef定义。自定义机械臂错误取值范围为0x30~0x3F; -
校验(Check)方式:和校验
Check = cmd + cmdcfm + Len_1+Len_2 +data ;
➤ 04指令定义
4.1根据机械臂控制需求,设计底层指令如下:
4.2 指令说明
4.2.1 底层控制指令
(1) 获取当前位置 PS_PR_LOW_GET_CURRENT_POSITION
返回参数1:uint16_t heightValue; //高度值
返回参数2:uint16_t armAngleValue; //大臂角度
返回参数3: uint16_t foreArmAngle; //小臂角度
返回参数4: uint16_t clawWidth; //抓手值
说明:
即时返回当前四个自由度的绝对值。
(2) 高度控制 PS_PR_LOW_SET_HEIGHT
参数1:uint16_t heightValue; //高度值
参数2:uint8_t heightRunSpeed; //运行速度
说明:
设置即运行。
(3) 大臂角度控制 PS_PR_LOW_SET_HEIGHT
参数1:uint16_t armAngleValue; //大臂角度
参数2:uint8_t armAngleRunSpeed; //运行速度
说明:
设置即运行。
(4) 小臂角度控制PS_PR_LOW_SET_HEIGHT
参数1: uint16_t foreArmAngle; //小臂角度
参数2: uint8_t foreArmAngletRunSpeed; //运行速度
说明:
设置即运行。
(5) 抓手宽度控制PS_PR_LOW_SET_HEIGHT
参数1: uint16_t clawWidth; // 抓手值
参数2: uint8_t clawWidthRunDir; // 抓手运行方向 1 :松开 2:抓取
参数3: uint8_t clawWidthRunSpeed; //运行速度
说明:
设置即运行。
(6) 设定综合位置 PS_PR_SET_LOW_LEVEL_PARAMS
参数1: robot_arm_low_ArmAngle_t robot_arm_low_ArmAngle; // 大臂参数
参数2: robot_arm_low_foreArmAngle_t robot_arm_low_foreArmAngle; // 小臂参数
说明:
设定大臂+小臂的综合运行参数, 要求大臂小臂同时运行,达到目标参数。设置即运行。
(7) 获取综合位置 PS_PR_GET_LOW_LEVEL_PARAMS
参数1: robot_arm_low_ArmAngle_t robot_arm_low_ArmAngle; // 大臂参数
参数2: robot_arm_low_foreArmAngle_t robot_arm_low_foreArmAngle; // 小臂参数
说明:
获取当前已设定的大臂+小臂的综合运行参数。
4.2.2 底层指令序列管理指令
(1) 获取当前序列状态 PS_PR_GET_LOW_ORDER_LISTS_STATUS
参数1: uint8_t RunStatus:2; //机械臂运行状态 0 :停止 1:运行 2:暂停 3:序列运行完成
参数2: uint8_t OrderTransStatus:2; //子指令传输状态 0 :初始化 1:正在传输 2:导入完成
参数3: uint16_t orderTotalNum; //当前子指令总数
参数4: uint16_t currentOrderNum; //当前执行子指令序号
说明:
获取当前机械臂序列状态。该状态参数描述机械臂任意时刻的运动状态,可持续补充。
(2) 开始序列传输 PS_PR_SET_LOW_ORDER_LISTS_START
参数1:uint16_t orderTotalNum; //子指令总数
说明:
开启子指令的导入过程,发送将要传输的子指令总数。此指令后,机械臂进入指令序列导入状态,标记OrderTransStatus为1,持续接收子指令,并存储。
(3) 终止序列传输 PS_PR_SET_LOW_ORDER_LISTS_END
无参数
说明:
关闭子指令的导入过程,标记OrderTransStatus为2,表示导入完成。要求返回机械臂序列状态。
(4) 设定子动作 PS_PR_SET_LOW_ORDER_LIST
参数1: uint16_t orderNum; //子指令编号(1~65535)
参数2: uint8_t orderCmd; //子指令 0x81~0x85 (PS_PR_LOW_SET_HEIGHT ~ PS_PR_SET_LOW_LEVEL_PARAMS)
参数3: uint8_t orderParamsLength; //指令参数长度. 说明:
说明:
设定子动作指令,多个子动作构成指令序列。
(5) 根据指令编号获取子动作 PS_PR_GET_LOW_ORDER_LIST
参数1:robot_arm_low_order_list_t.orderNum(2B)说明:
获取指定指令编号的子指令。
(6) 指令序列开始执行 PS_PR_RUN_LOW_ORDER_LISTS
无参数
说明:
开始执行当前指令序列执行。设置RunStatus为1。
执行完成后标记RunStatus为3,表示当前序列执行完成。
(7) 指令序列停止 PS_PR_STOP_LOW_ORDER_LISTS
无参数
说明:
停止执行当前指令序列执行。设置RunStatus为0。
(8) 指令序列暂停 PS_PR_PAUSE_LOW_ORDER_LISTS
无参数
说明:
暂停执行当前指令序列。设置RunStatus为2。
(9) 指令序列恢复执行 PS_PR_RESUME_LOW_ORDER_LISTS
无参数
说明:
恢复执行当前指令序列。设置RunStatus为1。
➤ 05指令示例
5.1 直接设定底层四自由度参数
0)获取当前四个自由度绝对位置(具体数值范围可后续约定)
5A FF 80 00 00 00 80
返回示例:
返回当前绝对位置 高度值1000, 大臂角度2000,小臂角度500 抓手值为200
5A FF 80 00 08 00 E8 03 D0 07 F4 01 C8 00 07
1)设置 高度为2000,速度为50(具体数值范围可后续约定)
5A FF 81 00 03 00 D0 07 32 8D
返回示例:
收到指令并执行
5A FF 81 01 03 00 D0 07 32 8E
执行完成
5A FF 81 02 03 00 D0 07 32 8F
执行错误
5A FF 81 03 03 00 D0 07 32 90
2)设置 综合位置 大臂角度2000,速度为200 小臂角度500 速度20(具体数值范围可后续约定)
5A FF 85 00 06 00 D0 07 C8 F4 01 14 33
返回示例:
收到指令并执行
5A FF 85 01 06 00 D0 07 C8 F4 01 14 34
执行完成
5A FF 85 02 06 00 D0 07 C8 F4 01 14 35
执行错误
5A FF 85 03 06 00 D0 07 C8 F4 01 14 36
5.2 设定底层指令序列
1)获取当前序列状态
5A FF 91 00 00 00 91
返回示例:
机械臂正在运行、子指令未传输、当前指令总数为20、当前执行指令为15。
5A FF 91 00 05 00 01 14 00 0F 00 BA
2)开始序列传输 子动作个数为20
5A FF 92 00 02 00 14 00 A8
返回示例:
收到指令并执行
5A FF 92 00 00 00 92
3)设置子动作指令 动作序号为15 ,综合位置 大臂角度2000,速度为200 小臂角度500 速度20
5A FF 94 00 0A 00 0F 00 85 06 D0 07 C8 F4 01 14 E0
返回示例:
收到指令并执行
5A FF 94 00 00 00 94
4)设置开始执行指令序列
5A FF A1 00 00 00 A1
返回示例:
收到指令并执行
5A FF A1 00 00 00 A1
➤ 06控制流程说明
6.1 指令分层控制逻辑
6.2 指令序列控制流程