遨博协作机器人高级编程 - 遨博机器人SDK用户自定义算法接口介绍与使用

这篇具有很好参考价值的文章主要介绍了遨博协作机器人高级编程 - 遨博机器人SDK用户自定义算法接口介绍与使用。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、简介

二、环境版本

三、开发环境部署

1.二次开发资料下载

2. AUBO PE编程仿真环境配置

四、linux C++ SDK示例

1. 编程环境

2. 加载C++ SDK工程

3. linux C++ SDK 文件构成

4.运行SDK示例

五、构建用户自定义算法SDK示例工程

1.Linux C++ SDK透传接口

2.  创建新项目

3.导入遨博机器人SDK linux_C++依赖库

4.编写程序

5.编译运行

六、小结


一、简介

大家好,欢迎关注遨博学院带来的系列技术分享文章(协作机器人高级编程),为方便离线编程与扩展机器人的应用领域,遨博协作机器人开发时增加了脚本编程和SDK开发环境等可供用户进行二次开发的开放性接口。用户可以通过二次开发接口实现获取机器人运行状态和运动控制等功能。脚本编程方面支持Lua与Python两种解释性编程语言,SDK支持C、C++、C#和Python四种编程语言。

本篇文章主要针对SDK开发方面进行讲解,掌握SDK开发示例功能包的获取与使用,掌握基于C++ SDK的用户自定义算法接口的开发流程。

二、环境版本

  1. 主机系统版本:Windwos10 64位
  2. 处理器型号:Intel-i7
  3. 虚拟机版本:VMware Workstation 16 Pro
  4. 示教器版本:AUBOPE V4.5.44
  5. SDK版本:C++ V1.3.2

三、开发环境部署

1.二次开发资料下载

(1)注册并登录遨博官网(https://www.aubo-robotics.cn/)。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

  1. 点击【服务支持】-【资料下载】,将“AUBO PE虚拟机”和“SDK应用开发包”文件下载到本地电脑(D:\遨博机器人SDK开发)并解压。

说明:若使用AUBO PE教育版虚拟机镜像,可关注“遨博教育生态”微信公众号留言获取。

“SDK应用开发包”文件说明:

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

“AUBO PE虚拟机镜像”使用方法可参考“AUBO虚拟机使用说明.pdf”文档。

2. AUBO PE编程仿真环境配置

在没有真实机械臂环境的情况下,可以通过AUBO PE虚拟机环境进行机械臂仿真与SDK开发。由于SDK提供了多种系统版本的开发包,首先要做的就是配置VMware虚拟机网络,确保不同系统环境下SDK开发能够正常与AUBO PE仿真环境进行通讯。

  1. Vmware环境加载AUBO PE系统

用户需提前自行安装VMware WorkStation软件,之后鼠标双击“AUBOPE-V4”目录下的“aubo.vmx”文件。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

(2)虚拟机网络配置

在VMware界面左侧点击【编辑虚拟机设置】,虚拟机设置界面点击【网络适配器】,将网络连接选择为【NAT模式】。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

(3)进入AUBO PE系统

本课程使用AUBO PE教育版环境,系统启动如图所示。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

双击桌面“AUBOPE”图标启动,自动加载进入“机器人初始化”界面。交互信息窗口点击【Yes】进入仿真模式,之后依次点击提示弹窗中的确认按钮。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

进入主界面如图所示。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

点击【关于】按钮,查看当前示教器版本信息,如图。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 (4)获取AUBO PE系统网络IP地址aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

依次点击【设置】-【系统】-【网络】,在网络调试窗口下点击【ifconfig】按钮,下方终端打印网卡详细信息,如上图所示,获取的IP地址为:192.168.136.131。

(5)Windows系统与AUBO PE系统互相进行ping通讯测试。

Windows系统下依次点击【设置】-【网络和Internet】-【更改适配器选项】,双击【以太网】,点击【详细信息】可查看当前电脑IP地址为172.15.253.168,如图。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 在各自环境下通过ping命令测试网络通讯是否正常。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

四、linux C++ SDK示例

1. 编程环境

基于 AUBOPE 虚拟机自带的 Qt Creator。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

2. 加载C++ SDK工程

(1)打开AUBO PE系统文件管理器,在用户目录下新建名称为sdk的文件夹。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

  1. 将Windows系统下下载的C++ SDK压缩包拖拽拷贝至上述sdk文件夹下并解压。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 (3)点击AUBO PE系统任务栏左侧QT图标,启动Qt Creator,之后点击欢迎界面右侧的【Open Project】,浏览定位到上述解压文件夹下,打开 AuboInterfaceExample.pro工程文件。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 在项目窗口默认使用qt5.5.1版本,之后点击【Configure Project】按钮。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 等待项目构建完成,在编程界面,依次点开项目目录,文件结构如图所示。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

3. linux C++ SDK 文件构成

  1. 《dependents》:AUBO 依赖库。
  2. 《example》:共9个例子,基本覆盖机器人的所有控制接口。
  3. AuboInterfaceExample.pro:项目文件。
  4. main.cpp:主函数,运行某个例子(不需要运行的例子注释掉)。

9个example功能如下表所示。

示例名

说明

example_0

工程模板。登录,初始化,上电,断电, 退出登录。

example_1

机械臂相关状态的获取。回调函数的方式获取实时路点,末端速度,机械臂的事件

example_3

关节运动

example_4

直线运动

example_5

轨迹运动

example_6

直线或关节方式运动至目标位置

example_8

正逆解

example_9

IO 状态获取、 IO 控制

example_toolio

工具 IO 操作

4.运行SDK示例

以运行example_3关节运动为例。

(1)取消main.cpp 中关节运动函数的注释aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

(2)打开example_3.cpp,修改IP

说明:本SDK示例程序运行在AUBO PE仿真环境下,可使用本地回环地址(127.0.0.1)或仿真环境IP(192.168.136.131)。

若SDK示例程序运行在非AUBO PE系统下,需填写AUBO PE系统设定的IP(192.168.136.131)。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

(3)编译运行

首先点击左下方的编译图标进行程序编译,构建完成后点击绿色三角运行按钮运行SDK example_3工程。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

(4)观察终端打印信息及机械臂动作过程aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

会观察到机械臂循环在两个路点之间进行关节运动。调用SDK接口函数为robotServiceJointMove。关闭右侧终端即可结束程序运行。

五、构建用户自定义算法SDK示例工程

下面讲解基于上述Qt Creator环境,从头开始创建遨博机器人SDK工程。

1.Linux C++ SDK透传接口

(1)进入 TCP 转 CAN 透传模式 robotServiceEnterTcp2CanbusMode

int  robotServiceEnterTcp2CanbusMode();

函数功能

进入CAN透传模式

返回值

调用成功返回ErrnoSucc,错误返回错误号

(2)退出TCP转CAN透传模式 robotServiceLeaveTcp2CanbusMode

int  robotServiceLeaveTcp2CanbusMode();

函数功能

退出can透传模式

返回值

调用成功返回ErrnoSucc,错误返回错误号

(3)发送坐标数据到关节CAN总线 robotServiceSetRobotPosData2Canbus

int robotServiceSetRobotPosData2Canbus(double jointAngle[aubo_robot_namespace::ARM_DOF]);

函数功能

通过透传将关节角度信息发送至驱动器

参数描述

jointAngle:六个关节角,单位rad

返回值

调用成功返回 ErrnoSucc,错误返回错误号

2.  创建新项目

打开Qt Creator,依次点击【欢迎】-【New Project】-【非Qt项目】-【纯C++语言项目】-【Choose】。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

在接下来的项目介绍和位置窗口填写工程名及保存位置,本例程工程名称为“Custom_SDK”,保存至上述创建的sdk文件夹下。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

下一步选择Qt版本为qt5.5.1。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

汇总面点击【完成】,创建完成如图所示。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

3.导入遨博机器人SDK linux_C++依赖库

把遨博机器人SDK C++示例工程【AuboInterfaceExample】目录下的【dependents】文件夹拷贝到上述工程Custom_SDK.pro文件同一路径下。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

修改Custom_SDK.pro文件,添加以下内容:

unix{

    #32bit OS

    contains(QT_ARCH, i386){

        CONFIG += c++11

        DEFINES += _GLIBCXX_USE_CXX11_ABI=0

        INCLUDEPATH += $$PWD/dependents/robotSDK/inc

        LIBS += -L$$PWD/dependents/robotSDK/lib/linux_x32/ -lauborobotcontroller

        LIBS += -lpthread

    }

    #64bit OS

    contains(QT_ARCH, x86_64){

        INCLUDEPATH += $$PWD/dependents/robotSDK/inc

        LIBS += -L$$PWD/dependents/log4cplus/linux_x64/lib/ -llog4cplus

        LIBS += -L$$PWD/dependents/robotSDK/lib/linux_x64/ -lauborobotcontroller

        LIBS += -lpthread

    }

}

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

4.编写程序

(1)向Custom_SDK工程中添加新文件

 鼠标右键【Custom_SDK】,点击【添加新文件】,在新建文件窗口依次点击【C++】 - 【C++ Class】-【Choose】。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 类名填写为“custom_demo”,之后点击【下一步】。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 汇总页面点击【完成】,添加完成后界面如下。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

 (2)编写头文件

在【custom_demo.h】头文件内新增如下代码:

#ifndef CUSTOM_DEMO_H

#define CUSTOM_DEMO_H

#include "AuboRobotMetaType.h"

#include "serviceinterface.h"

class custom_demo

{

public:

    static void demo();

};

#endif // CUSTOM_DEMO_H

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

(3)编写cpp源程序

修改【custom_demo.cpp】,新增如下代码:

#include "custom_demo.h"

#include <unistd.h>

#include <math.h>

#include <string.h>

#include <stdio.h>

#include <sstream>

#include <fstream>



#define SERVER_HOST "127.0.0.1"

#define SERVER_PORT 8899

ServiceInterface robotService;



void custom_demo::demo()

{

    int ret = aubo_robot_namespace::InterfaceCallSuccCode;



    /** Interface call: login ***/

    ret = robotService.robotServiceLogin(SERVER_HOST, SERVER_PORT, "aubo", "123456");

    if(ret == aubo_robot_namespace::InterfaceCallSuccCode)

    {

        std::cout<<"login successful."<<std::endl;

    }

    else

    {

        std::cerr<<"login failed."<<std::endl;

    }



    /** If the real robot arm is connected, the arm needs to be initialized. **/

    aubo_robot_namespace::ROBOT_SERVICE_STATE result;



    //Tool dynamics parameter

    aubo_robot_namespace::ToolDynamicsParam toolDynamicsParam;

    memset(&toolDynamicsParam, 0, sizeof(toolDynamicsParam));



    ret = robotService.rootServiceRobotStartup(toolDynamicsParam/**Tool dynamics parameter**/,

               6        /*Collision level*/,

               true     /*Whether to allow reading poses defaults to true*/,

               true,    /*Leave the default to true */

               1000,    /*Leave the default to 1000 */

               result); /*Robot arm initialization*/

    if(ret == aubo_robot_namespace::InterfaceCallSuccCode)

    {

        std::cout<<"Robot arm initialization succeeded."<<std::endl;

    }

    else

    {

        std::cerr<<"Robot arm initialization failed."<<std::endl;

    }



    /** 用户自定义业务逻辑start **/

    std::cout<<"CAN透传模式..."<<std::endl;

    double wp1[6] = {};

    wp1[0] = -17.254444*M_PI/180;

    wp1[1] = 36.019474*M_PI/180;

    wp1[2] = 91.554089*M_PI/180;

    wp1[3] = 66.159787*M_PI/180;

    wp1[4] = -89.807699*M_PI/180;

    wp1[5] = -0.000420*M_PI/180;



    /*关节运动至初始预设路点*/

    robotService.robotServiceJointMove(wp1,true);

    /*进入CAN 透传模式*/

    robotService.robotServiceEnterTcp2CanbusMode();

    /*用户自定义算法获取路点数据后下发给透传接口*/

    for(int i = 0; i < 1000; i++)

    {

    wp1[0] = wp1[0] + 0.001;

    //std ::cout << wp1[0] << std::endl;

    //将关节角透传到关节驱动器

    robotService .robotServiceSetRobotPosData2Canbus(wp1);

    usleep(1000*5);//透传接口发送频率需大于200Hz

    }

    robotService.robotServiceLeaveTcp2CanbusMode();

    sleep(1);

    /** 用户自定义业务逻辑end **/

    /** Robotic arm shutdown **/

    robotService.robotServiceRobotShutdown();



    /** Interface call: logout **/

    robotService.robotServiceLogout();

}

(4)修改main.cpp源文件

调用custom_demo.cpp中的用户自定义函数功能,更改如下:

#include <iostream>

#include "custom_demo.h"

using namespace std;



int main()

{

    custom_demo::demo();

    cout << "Hello World!" << endl;

    return 0;

}

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

5.编译运行

首先点击左下方的编译图标进行程序编译,构建完成后点击绿色三角运行按钮运行Custom_SDK工程。

aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

程序运行后会观察到,机械臂首先运动至初始预设路点位姿下,之后第一关节以0.001弧度进行步进运动直至循环结束。aubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

程序运行完毕,在终端界面按下回车结束程序运行。

六、小结

通过本篇文章的学习,用户可以基本掌握使用遨博机器人SDK进行二次开发的流程。针对科研需求,用户可以通过遨博机器人SDK中提供的透传接口,使用机器人开源框架(ROS MoveIt!、Matlab、Vrep、Unit Robot、PyBullet等)进行自定义算法(运动学、动力学、轨迹规划、避障、柔顺控制等)的开发与验证。有关遨博机器人SDK透传接口的典型示例可参考遨博ROS功能包中的aubo_driver驱动功能包。

aubo_robot/aubo_driver.cpp at master · AuboRobot/aubo_robot · GitHubaubo 判断失联,遨博协作机器人ROS开发,linux,运维,服务器

针对应用快速开发落地,用户可以选择使用遨博提供的示教器离线编程及遨博机器人SDK中提供的机械臂算法进行运动控制。文章来源地址https://www.toymoban.com/news/detail-621536.html

到了这里,关于遨博协作机器人高级编程 - 遨博机器人SDK用户自定义算法接口介绍与使用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 走进人工智能|机器人技术 人机协作新纪元

    前言: 机器人技术为人类提供协助、增强生产力,改善生活质量,并推动科技进步和社会发展。 机器人技术作为现代科技领域的重要研究方向,已经在各个领域展现出巨大的潜力和影响力。 随着人工智能、感知技术和机械工程的进步,机器人能够模拟和执行人类的动作和任

    2024年02月12日
    浏览(44)
  • 节卡率先冲刺科创板,协作机器人商业化正当时

    日前,上交所新增受理节卡机器人股份有限公司科创板上市申请,该公司拟募集资金7.5亿元,国泰君安任保荐人。此前,节卡机器人共完成6轮融资,总融资额超14亿元。按照最后的一轮融资计算,公司引入软银愿景基金二期、沙特阿美风投基金、淡马锡联合领投D轮融资10亿元

    2024年02月05日
    浏览(43)
  • 协作机器人(Collaborative-Robot)安全碰撞的速度与接触力

    协作机器人(Collaborative-Robot)的安全碰撞速度和接触力是一个非常重要的安全指标。在设计和使用协作机器人时,必须确保其与人类或其他物体的碰撞不会对人员造成伤害。 对于协作机器人的安全碰撞速度,一般会设定一个上限值,以确保机器人在与人类或其他物体发生碰

    2024年02月03日
    浏览(34)
  • 海康机器人工业相机SDK MVS安装教程

    海康机器人是面向全球的机器视觉和移动机器人产品及解决方案提供商,业务聚焦于工业物联网、智慧物流和智能制造,构建开放合作生态,为工业和物流领域用户提供服务,以创新技术持续推动智能化,引领智能制造进程。 进入官网 https://www.hikrobotics.com/cn,点击下载中心

    2024年02月10日
    浏览(33)
  • 【HIKROBOT】海康机器人:工业相机SDK二次开发

    海康机器人官网链接:https://www.hikrobotics.com/cn 根据购买设备的型号下载用户说明书 笔者实验室购买了两款,一款GigE网口接口的,一款USB接口 GigE网口接口 USB接口:MV-CA050-20UC 服务支持”“下载中心”“机器视觉”中下载MVS客户端安装包及SDK开发包。 1.1.1 Ubuntu18.04系统安装 下

    2024年02月05日
    浏览(43)
  • UE5 MetaHuman SDK插件的使用【二、聊天机器人】

    目录 制作: 流程制作【相对复杂但逻辑清楚】: 快速制作【有个函数把上面的流程全部合在了一起,只需要用一个函数即可】 3个结构体的参数 combo后面的逻辑:  效果: ​编辑 代码 在前面的文章中,我们创建了meta human的音波和嘴唇并进行了同步: UE5 MetaHuman SDK插件的使

    2024年02月12日
    浏览(71)
  • 机器人编程教程1机器人简介

    我们将制作一个机器人,并为其创建程序,赋予机器人行为,使其看起来具有智能并能够做出决策。我们将编写代码,使用传感器观察机器人周围的环境,并构建高级主题的实际示例,包括视觉、语音识别和说话。 您将看到简单的构建技术如何与少量代码相结合,使机器感觉

    2024年02月13日
    浏览(42)
  • 工业机器人编程与操作-搬运机器人码垛系统编程与仿真

    目录 一、设计背景  二、课程设计任务要求 三、设备导入并布局 四、传送带的smart组件 五、传送带整体思路 六、夹爪的smart组件6.1 LineSensor被测是否有任何对象与两点之间 七、夹爪整体思路 八、程序配置 九、各程序 参考文献 在科技和经济飞速发展的背景下,人力成本不断

    2024年02月07日
    浏览(44)
  • 如何使用OpenAI API和Python SDK构建自己的聊天机器人

    近日,OpenAI公司的ChatGPT模型走红网络。同时,OpenAI也推出了Chat API和gpt-3.5-turbo模型,让开发者能够更轻松地使用与ChatGPT类似的自然语言处理模型。 通过OpenAI API,我们可以使用gpt-3.5-turbo模型,实现多种任务,包括:撰写电子邮件或其他文本内容,编写Python代码,创建对话代

    2024年02月01日
    浏览(33)
  • 医疗机器人软件中的机器人机器人编程技术:机器人技术的创新应用

    作者:禅与计算机程序设计艺术 随着科技的发展,医疗机器人逐渐成为人们关注的热门话题。医疗机器人可以在医院、康复中心等各种场合为病人提供帮助,不仅可以提高工作效率,还能降低医护人员的工作强度。而机器人编程技术则是实现医疗机器人功能的关键,本文将围

    2024年02月07日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包