示例与 TestApi.cpp(RobotDriver)
main.cpp为简单的读取版本信息使用案例,examples文件夹含各个接口使用案例、老化案例等;
本文档说明工程 examples/TestApi.cpp 的编写意图与各段代码对应的 RobotArm 用法,适用于 MyCobotPro450、Linux 下 TCP 联调。环境搭建与编译见 6.4.1、6.4.2;接口释义见 6.4.7 API。
重要提示(请先阅读)
TestApi.cpp是联调演示脚本,按块依次调用大量接口,不等于生产环境可直接运行的安全程序。- 请勿在不理解含义的情况下整文件编译执行:可能触发大幅度运动、长时间 JOG、拖动示教录制等;务必在净空、急停可达、已理解每段作用后再试。
- 建议做法:按业务需要复制其中若干段到自有
main,删掉无关测试;参数(IP、端口、角度、坐标、速度)按现场修改。 - 编译注意:当前根目录
CMakeLists.txt中examples/TestApi.cpp默认被注释,未编入RobotDriver可执行文件。若要以该文件为入口,需在CMakeLists.txt的SRC_SOURCES中取消注释并视情况注释其它示例源,或单独为TestApi.cpp增加add_executable,避免多个main冲突。
源码中 RobotArm robot(1, params) 的 1 即 TCP_COMM(与 include/Protocol.hpp 一致)。
文档约定以下各节与 TestApi.cpp 内 // ========== N. 注释块一一对应。每节给出 作用、主要涉及接口、使用注意,便于按需借鉴。
1. 系统配置、版本信息
- 作用:上电前读取主控/机型/末端/库版本,确认通信与固件信息。
- 主要涉及接口:
getSystemVersion、getModifyVersion、getRobotType、getAtomVersion、getToolModifyVersion、getLibVersion。 - 使用注意:无运动风险;版本字符串格式以固件为准。
2. 上电与状态查询
- 作用:上电,并查询上电状态、刷新模式、自由移动模式、零位校准首项等。
- 主要涉及接口:
powerOn、isPowerOn、getFreshMode、setFreeMoveMode、getFreeMoveMode、isInitCalibration。 - 使用注意:
powerOff()、切换setFreshMode等在源码中注释掉——下电约耗时数秒;切换刷新模式后固件侧可能有较长内部延时(源码注释示例为约 6 s),慎用。
3. 运动控制模式
- 作用:读取当前为位置模式还是力矩模式。
- 主要涉及接口:
getControlMode;(可选)setControlMode。 - 使用注意:切换模式前确认机械臂状态与安全空间。
4. 关节角度控制
- 作用:读取单关节/全关节角;演示开环(
setWaitArrival(false)+发指令 +usleep手动等待)与闭环(setWaitArrival(true),sendAngles侧等待到位)的差异。 - 主要涉及接口:
getAngle、getAngles、setFreeMoveMode、setWaitArrival、getWaitArrival、sendAngle、sendAngles。 - 使用注意:
- 发位置指令前通常需 关闭自由移动模式(示例中
setFreeMoveMode(0)),否则固件可能不执行位置指令。 - 目标角与速度须符合 关节控制 中的 MyCobotPro450 范围。
- 发位置指令前通常需 关闭自由移动模式(示例中
5. 坐标控制
- 作用:读取当前
getCoords;单轴sendCoord开环示例;stop打断。 - 主要涉及接口:
getCoords、sendCoord、stop。 - 使用注意:
- 源码注释指出:
SendCoords({0,0,0,0,0,0})一类无效位姿可能导致固件异常刷POS_ARRIVED,演示中已禁用,请勿盲目套用全零坐标。 - 坐标与速度范围见 坐标控制。
- 源码注释指出:
6. 运动状态控制
- 作用:查询是否运动中;
pause/isPaused/resume/stop;isInPosition角度模式示例。 - 主要涉及接口:
isMoving、pause、isPaused、resume、stop、isInPosition。 - 使用注意:
isInPosition第二参数为false表示按角度比较;示例中目标为全零,实际使用请改为真实目标且注意限位。
7. 软件关节限位
- 作用:循环打印各关节软件最小/最大角。
- 主要涉及接口:
getJointMinAngle、getJointMaxAngle。 - 使用注意:只读,无运动。
8. 速度 / 加速度参数
- 作用:读取并示例性写入角度/坐标最大速度、最大加速度。
- 主要涉及接口:
getMaxSpeed、setMaxSpeed、getMaxAcc、setMaxAcc。 - 使用注意:
mode0 为关节角相关,1 为坐标相关;数值有效范围见 6.4.7。不当设置可能影响运动平滑度与安全。
9. 编码器
- 作用:读取六路伺服编码器整数。
- 主要涉及接口:
getServoEncoders。 - 使用注意:解析与单位以下位机为准。
10. JOG 模式
- 作用:关节
jogAngle与坐标jogCoord各运行一段时间后用stop结束。 - 主要涉及接口:
jogAngle、jogCoord、stop。 - 使用注意:JOG 为持续运动,必须预留
stop或限位保护;方向 0/1、速度 1~100。
11. 拖动示教
- 作用:
stop停稳 → 开自由移动 →dragTeachSave录制 →dragTeachPause→ 关自由移动 →dragTeachExecute回放 →dragTeachClean清除。 - 主要涉及接口:
stop、setFreeMoveMode、dragTeachSave、dragTeachPause、dragTeachExecute、dragTeachClean。 - 使用注意:录制时长建议 ≤ 120 s;需在安全环境下人工拖动;若无需示教功能,整段可删除,勿照搬执行。
12. 异常信息(源码注释为13)
- 作用:读取运动报错、
clearErrorInfomation;打印getRobotStatusDetail中碰撞、运动、限位、关节状态、通信状态等字段。 - 主要涉及接口:
getErrorInformation、clearErrorInfomation、getRobotStatusDetail。 - 使用注意:
clearErrorInfomation拼写与头文件一致;错误码含义见 6.4.7。源码中getMotorsRunErr保留为注释,需要时可自行打开。
小结
| 客户目标 | 建议借鉴 TestApi 中的块 |
|---|---|
| 只读状态/版本 | 块 1 |
| 上电与模式 | 块 2、3 |
| 关节点到点 | 块 4(按需选开环或闭环) |
| 坐标点到点 | 块 5(勿用无效坐标) |
| 暂停/继续/停止 | 块 6 |
| 限位与动力学参数 | 块 7、8 |
| 编码器 | 块 9 |
| 点动 | 块 10 |
| 示教 | 块 11(可跳过) |
| 故障排查 | 块 12 |
再次强调:按块裁剪使用,修改 IP/端口与运动参数,并在安全环境下验证。