编译运行机械臂Linux-SDK,尝试直接在ubuntu中用C++开发。
不使用实时内核!
目录
前言
基本环境介绍
编译流程
step1 安装依赖(通过安装ros解决)
step2 安装vscode以及必要的VSCode扩展
step3 添加头文件路径
step4 添加头文件
step5 修改example文件内容
step6 进行编译
step7 更改网络环境
step8 执行编译生成的文件
踩坑记录
大坑
大坑1:没有实时内核也可以编译运行机械臂SDK
大坑2:虚拟机软件一定要使用VMWare的pro系列
小坑
小坑1:关于虚拟机配置
小坑2
宿主机:win10(带有显卡,为什么要强调显卡后续会讲)
虚拟机:ubuntu20.04
wget http://fishros.com/install -O fishros && . fishros
通过鱼香ros一键安装
(过程中会完成换源,所以在这步之后可以安装输入法)
必须的扩展如下:
第一次进入工程右下角会弹窗,询问是否configure头文件,选择是,会自动在.vscode文件夹下生成c_cpp_properties.json。
如果跳过了这步直接生成,网上还有很多其他教程/模板,还是可以生成该文件,这里就不赘述。
对工程中所有的.cpp文件都添加如下头文件:
#include
不然sleep函数会报错。
对joint_s_mu.cpp文件额外添加如下头文件:
#include
对于所有的例程都需要检查如下内容,如果不是则需要进行修改。
IP地址:本地的机械臂ip地址为192.168.0.160
初始姿态:
原本有的初始姿态
std::array q_drag = {{0,PI/6,PI/3,0,PI/2,0,0}};
是错误的,需要修改为:
std::array q_drag = {{0,PI/6,0,PI/3,0,PI/2,0}};
不使用实时内核:在初始化部分,将原本代码中的
xmate::Robot robot(ipaddr, port,XmateType::XMATE7_PRO);
改为
xmate::Robot robot(ipaddr, port,XmateType::XMATE7_PRO,false);
直接在vscode中使用终端依次输入如下命令:
cd rci_client/build/
cmake ..
make
编译不报错即可。
这样是编译了整个工程,后续应改为只编译使用的文件!
首先通过如下语句安装net-tools网络工具,通过ifconfig命令查看当前的ip地址。
sudo apt install net-tools
在虚拟机界面,虚拟机-设置-网络适配器-桥接模式(勾选“复制物理网络连接状态”),如上图所示,点击确定退出。
留在虚拟机界面,编辑-虚拟网络编辑器,将虚拟机的主网络桥接到宿主机的物理连接上,如下图所示:
通过下列语句将虚拟机主网络ip地址改为192.168.0.50(跟机械臂在同一网段)
sudo ifconfig ens33 192.168.0.50
此时可以看到虚拟机主网的ip修改成功。
通过ping 192.168.0.160检查与机械臂是否连接,出现下图状况说明连接正常。
通过如下指令切换到相应路径:
cd build/example
直接通过如下指令运行可执行文件:
sudo ./cartesian_position_move
一定要加上sudo,不然执行依然需要实时内核。
然后就可以看机械臂执行程序啦~
** 程序执行完后,不要忘记通过HMI给机械臂手动下电(后续可以写在程序中)
之前在外接固态上安装过ubuntu系统并成功安装了实时内核,当外接固态接在主机上通过bios启动时,显示器因为接在显卡上并没有安装显卡驱动,因此分辨率只能达到1024x768,在官网下载了对应的显卡驱动但是在安装时提示不能在实时内核环境下安装,所以不用死磕实时内核环境。
因为机械臂和主机通过网线连接,后续在运行c++生成的可执行文件时,需要将虚拟网络桥接到机器人网口,而VMware Workstation Player需要没有虚拟网络编辑器的功能。
具体设置过程如下:
创建虚拟机时需要自定义硬件,内存需要调大一些,默认内存的2GB是远远不够用的。(会导致一些潜在问题,例如:VS Code界面显示不全,VS Code运行较为卡顿)
(未完待续)