关节机器人SDK开发流程和环境搭建
概述
关节机器人(以下简称“机器人”)目前广泛应用于工业领域,具有一定的自动性,可依靠自身的动力能源和控制能力实现各种工业加工制造功能,比如应用于码垛、焊接、装配、检测、打磨、喷涂等行业。
关节机器人SDK 是海康机器人自主研发的为第三方应用提供的软件开发包,是与机器人进行交互的一种方式,通过SDK接口可以对机器人进行控制和信息获取,让机器人完成用户想要完成的业务。
本手册主要介绍一个基于 C/C++开发的六轴关节机器人 SDK,接口调用流程和开发环境搭建,旨在让开发者切换到业务开发流程中
运行环境
- 操作系统:Windows x64, 支持Win7、Win10、Win11主流windows平台
- 内存:推荐8GB及以上
- CPU:推荐主频在2.4G及以上,推荐酷睿I5系列及以上
接口调用流程
一、设备连接接口流程
关节机器人SDK按照功能实现不同,分成八个模块,分别为:控制器模块、用户模块、文件传输模块、系统模块、程序模块、运动模块、调试模块、参数设置模块。第三方应用可以通过SDK提供的接口从关节机器人控制器中获得对应的服务。
调用功能接口前,需先连接控制器,并切换至具有操作权限的用户角色。具体流程如下图所示:

详细步骤
- 调用MP_CreateHandle 接口创建句柄。
- 调用MP_ConnectRobotWithIP 连接控制器。
- 连接上控制器后,默认以操作员(Operator)权限登录,进行具体操作需要调用MP_SwitchUser 接口,切换到示教员(Programmer)或以上权限。
- 根据需要完成的功能调用各个模块的接口,最终完成功能调用。断开控制器、销毁句柄。
二、同步接口调用流程
关节机器人SDK提供很多的协议指令接口,同步指令协议接口调用流程如下:

指令协议接口说明如下:
- 创建句柄接口:MP_CreateHandle ,成功返回句柄值,失败返回NULL。
- 连接控制器接口:MP_ConnectRobotWithIP ,控制器的IP和端口格式为:"192.168.2.64:9000"。
- 获取控制权接口:用户获取可操作控制器的权限,默认不具备操作权限。
- 切换用户接口:MP_SwitchUser ,切换其他的用户进行操作,默认用户一些权限不具备。
- 协议指令接口:支持一些涉及机器人操作的相关指令。
- 协议指令接口返回响应操作的结果,失败可以查询具体错误码
- 断开控制器接口:MP_DisconnectRobot ,断开与控制器的连接。
- 销毁句柄接口:MP_DestroyHandle ,销毁MP_CreateHandle 创建的句柄。
三、异步接口调用流程
关节机器人SDK提供很多的协议指令接口,异步指令协议接口调用流程如下:

指令协议接口说明如下:
- 创建句柄接口:MP_CreateHandle ,成功返回句柄值,失败返回NULL。
- 连接控制器接口:MP_ConnectRobotWithIP ,控制器的IP和端口格式为:"192.168.2.64:9000"。
- 获取控制权接口:用户获取可操作控制器的权限,默认不具备操作权限。
- 切换用户接口:MP_SwitchUser ,切换其他的用户进行操作,默认用户一些权限不具备。
- 协议指令接口:支持一些涉及机器人操作的相关指令。
- 协议指令接口返回响应操作的结果,失败可以查询具体错误码
- 断开控制器接口:MP_DisconnectRobot ,断开与控制器的连接。
- 销毁句柄接口:MP_DestroyHandle ,销毁MP_CreateHandle 创建的句柄。
四、文件传输调用流程
关节机器人SDK提供多种不同类型的文件上传接口,文件上传接口调用流程如下:

异步文件上传调用接口说明如下:
- 创建句柄接口:MP_CreateHandle ,成功返回句柄值,失败返回NULL。
- 设置上传文件回调函数:MP_SetUserCallback ,回调函数类型为MP_CALLBACK_FUN_UPLOAD
- 连接控制器接口:MP_ConnectRobotWithIP ,控制器的IP和端口格式为:"192.168.2.64:9000"。
- 获取控制权接口:用户获取可操作控制器的权限,默认不具备操作权限。
- 切换用户接口:MP_SwitchUser ,切换到示教员及以上的用户。
- 异步上传文件接口:调用MP_UploadFile 接口异步上传文件。
- 等待上传文件回调函数推送上传结果。
- 断开控制器接口:MP_DisconnectRobot ,断开与控制器的连接。
- 销毁句柄接口:MP_DestroyHandle ,销毁MP_CreateHandle 创建的句柄。
五、回调设置调用流程
关节机器人SDK提供不同类型回调接口,数据回调、状态回调等,回调接口调用流程如下:

状态回调调用接口如下:
- 创建句柄接口:MP_CreateHandle ,成功返回句柄值,失败返回NULL。
- 连接控制器接口:MP_ConnectRobotWithIP ,控制器的IP和端口格式为:"192.168.2.64:9000"。
- 获取控制权接口:用户获取可操作控制器的权限,默认不具备操作权限。
- 切换用户接口:MP_SwitchUser ,切换到示教员及以上的用户。
- 设置状态回调接口:MP_SetUserCallback 先设置回调函数
通用回调函数支持的类型: - MP_CALLBACK_FUN_ALARM // 告警回调
- MP_CALLBACK_FUN_OUTPUT // 调试输出回调
- MP_CALLBACK_FUN_PROGRAM_STATUS // 程序信息回调
- MP_CALLBACK_FUN_ROBOT_STATUS // 机器人状态回调
- MP_CALLBACK_FUN_CONNECT_STATUS // 连接状态回调
- MP_CALLBACK_FUN_MOTION_STATE // 运动SDK回调
- MP_CALLBACK_FUN_PARAM_UPDATE // 参数更新回调
- MP_CALLBACK_FUN_LOAD_IDENTIFIY // 负载辨识回调函数
- MP_CALLBACK_FUN_DOWNLOAD // 文件下载回调函数
- MP_CALLBACK_FUN_UPLOAD // 文件上传回调函数
- MP_CALLBACK_FUN_TIME // 时间回调函数
- 用户设置的状态函数获取状态信息。
- 断开控制器接口:MP_DisconnectRobot ,断开与控制器的连接
- 销毁句柄接口:MP_DestroyHandle ,销毁MP_CreateHandle 创建的句柄。
开发环境搭建与调试
一、开发环境搭建
编程接口库使用C++编写,Visual Studio 2017 编译,64位,接口库文件夹包含以下文件夹:
- Demo:存放示例代码
- Docs:存放文档、手册
- Include:存放库头文件
- Libs:存放库文件
- License:存放许可证文件
- Res:存放其他文件
头文件:
- MP_Public_API.h :关节机器人SDK公共开发接口
- MP_Public_Struct.h :关节机器人SDK公共数据定义
- MP_Public_Defines.h :关节机器人SDK公共数据定义
- MP_Public_Error.h :关节机器人SDK公共错误码
- MP_Motion_API.h :关节机器人运动SDK开发接口
- MP_Motion_Struct.h :关节机器人运动SDK数据定义
- MP_HAR_API.h :HAR关节机器人开发接口
- MP_HAR_Struct.h :HAR关节机器人数据定义
- MP_IO_API.h :关节机器人IO开发接口
- MP_IO_Struct.h :关节机器人IO数据定义
库文件:
- MPSDK_PUBLIC_COMPAT.dll:机器人PC二次开发兼容性动态库
- MPSDK_PUBLIC_COMPAT.lib:机器人PC二次开发兼容性链接文件
- MPSDK_ADAPTER.dll:机器人PC二次开发动态适配库
- MPSDKV212.dll:机器人PC二次开发2.1.2基线版本库文件
- MPSDKV220.dll:机器人PC二次开发2.2.0基线版本库文件
- MPSDK_LOG.dll:机器人PC二次开发日志库
请安装Visual Studio 2017,并同时选择安装所有C++类库。
二、开发配置
创建C++工程后,将Include文件夹下的头文件复制到任意目录下,建议复制到工程目录下,在项目-属性-配置属性-C/C++-常规-“附加包含目录”中添加头文件所在目录,如下图所示:

将Libs文件夹下的MPSDK_PUBLIC_COMPAT.lib文件添加到工程中,分两步进行:
1、在项目-属性-配置属性-链接器-常规-“附加库目录”中添加此文件所在的路径,如下图所示:

2、在项目-属性-配置属性-链接器-常规-“附加依赖项”中添加此文件,如下图所示:

至此,开发环境已经搭建好,可以正常编译;将MPSDK_ADAPTER.dll、MPSDKV212.dll、MPSDKV220.dll、MPSDK_LOG.dll等文件拷贝到工程生成的可执行文件夹中,即可运行。
三、调试运行
控制器给外部应用的网络IP是”192.168.2.64”,所以调试运行的PC机也需要将IP地址设置”192.168.2.xx”网段,且需要用网线连接机器人的网口,如果未在示教器上修改外部应用的网口,则控制器的IP保持不变,外部应用软件通过API提供的接口,登录到控制器即可参照示例代码操作机器人。