Skip to content

快速开始

1. 环境安装

1.1 系统要求

当前推荐的开发环境操作系统为:

当前支持的编译套件包括:

  • Ubuntu 20.04

需要根据不同的控制器型号,选择不同的编译套件。

我们提供打包了所有开发环境的镜像文件,当然也可以在任意一台 Ubuntu 20.04 下参照小节《1.2 编译套件安装》来安装。

直接获取安装好了的虚拟机 点击这里 可以下载得到配置好开发环境的、基于 VirtualBox 软件使用的 Ubuntu 20.04.1 系统的虚拟机; 点击这里 可以下载得到基于 Windows 系统的 VirtualBox 软件安装包,如需其他系统版本的请自行到 VirtualBox 官网 进行下载。 • 安装 VirtualBox 软件(注意按转路径不能带有中文) • 打开下载的“开发环境虚拟机”文件夹,按照“README.txt”文件说明安装虚拟机; • 开机后登录账户“nbt”,密码是“123”。

1.2 编译套件安装

以下编译链根据具体的控制器硬件选择安装:

1.2.1 gcc-4.8 编译套件安装

因为 Ubuntu 20.04 自带的源 gcc 最低版本无法安装4.8。我们需要添加 trusty 的源。

bash
sudo sh -c 'echo "deb http://dk.archive.ubuntu.com/ubuntu/ trusty main" >> /etc/a pt/sources.list'
sudo sh -c 'echo "deb http://dk.archive.ubuntu.com/ubuntu/ trusty universe" >> /e tc/apt/sources.list'
bash
sudo apt update
sudo apt install -y gcc-4.8 g++-4.8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 40
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 40
sudo apt-get install -y gcc-4.8-multilib g++-4.8-multilib

下载 lib32 库文件

解压 lib32.xxx 文件,并替换原有的/usr/lib32文件夹。

bash
tar -zxvf lib32.xxx
sudo rm -rf /usr/lib32
sudo mv usr/lib32 /usr/

1.2.2 gcc-9.4 编译套件安装

Ubuntu20.04 的源直接安装即可。

bash
sudo apt install gcc g++

1.2.3 aarch64-Linux-gnu-gcc-5.3 编译套件安装

下载编译套件:链接: gcc-linaro-5.3.1-2016.05-x86_64_aarch64-Linux-gnu.tar.gz 提取码: w33y

新建 T5⽂件夹,将 gcc-linaro-5.3.1-2016.05-x86_64_aarch64-Linux-gnu.tar.gz 解压进去。

bash
mkdir ~/T5
tar -zxvf gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu.tar.gz -C ~/T5

添加环境变量

bash
gedit ~/.bashrc

将下面这行拷贝到最后,保存退出即可。

bash
export PATH=$PATH:$HOME/T5/gcc-linaro-5.3.1-2016.05-x86_64_aarch64-linux-gnu/bin

2. 构建项目

2.1 项目初始化

可以使用 VS code 或者其它 IDE 来开发。

新建一个 Demo 文件夹,将头文件放到 include 文件夹下,将 libNexRob.a 放到 lib 文件夹下。,目录的结构参考如下:

text
├── include
│   ├── nrcAPI.h
│   └── nrcAPI_advance.h
├── lib
│   └── libNexRob.a
└── src
    └── main.cpp

2.2 main.cpp 文件

cpp
#include <iostream>
#include "nrcAPI.h"


void SystemStartup() {
  //输出Nexmotion版本库信息
  std::cout << "库版本:" << NRC_GetNexMotionLibVersion() << std::endl;
  //启动控制系统
  NRC_StartController();
  //检测控制系统是否初始化完成
  while (NRC_GetControlInitComplete() != 1 ) {
    NRC_Delayms(100);   //延时100ms
  }
  //清除所有错误
  NRC_ClearAllError();


  std::cout << "----" << NRC_GetControlInitComplete() << std::endl;
  std::cout << "StartController Success" << std::endl;
  std::cout << "获取同步版本号" << NRC_GetSyncVersion() << std::endl;
  NRC_Delayms(200);
}


int main() {
  //系统启动
  SystemStartup();

  std::cout << "Hello World" << std::endl;


  //保持程序继续运行
  while(true) {
    NRC_Delayms(2000);
  }
}

2.3 编译代码

2.3.1 直接编译

确认自己的控制器系统架构,选择对应的编译链工具,下面使用的是 gcc-4.8,根据架构不同,可以换成 gcc-9。

注:如果是 x64架构的控制器需要将 g++-4.8修改为 g++-9,-m32修改为-m64,如果控制器是 x86架构的可不用进行修改。

bash
g++-4.8 -m32 -o nrc2.out src/*.cpp -I./include -L./lib -lNexRob -lpthread -lm -ldl -lrt -std=c++11
  • 支持的编译器版本
    • gcc-4.8
    • gcc-9.4
    • aarch64-Linux-gnu-gcc-5.3

2.3.2 使用 Makefile

新建 Makeifile 文件

在 Demo 目录下新建 Makefile 文件,将下面内容拷贝到 Makefile 文件中,并保存。

makefile
TARGET=nrc2.out
all :
	g++-4.8 -m32 -o nrc2.out src/*.cpp -I./include -L./lib -lNexRob -lpthread -lm -ldl -lrt -std=c++11


clean :
	rm $(TARGET) $(objects)

Makefile 文件建好之后在编译时只需要在 Demo 文件目录下打开终端输入 make 即可编译控制器可执行程序

在 Demo 目录下打开一个新的终端,输入 make,编译完成后在 Demo 目录下有一个 nrc2.out 的可执行程序

编译的流程如下图:

控制器二次开发程序编译流程图:在 Demo 目录下执行 make 命令,使用 gcc-4.8 工具链编译生成 nrc2.out 可执行文件

3. 远程登陆到控制器

3.1 确认电脑连接上控制器

首先确保你的电脑已经跟控制器连接了通讯,电脑的 IP 需要跟控制器的 IP 在同一网段下。控制器的出厂默认 IP 为192.168.1.13,所以电脑连接控制器的网口同样需要设置为1网段(比如可以设置192.168.1.110)。设置完成之后在 Ubuntu 中打开一个新的终端输入

bash
ping 192.168.1.13

出现下面如图所示,即为同控制器通讯通讯成功:

Ubuntu 终端中执行 ping 192.168.1.13 成功收到控制器应答的通讯测试截图

如出现不成功的情况,请检查网线的连接,电脑的 IP,控制器的 IP。

3.2 使用 ssh 登陆到控制器

bash
ssh inexbot@192.168.1.13

然后密码输入123,即可进行远程控制了。

3.3 查看控制器系统架构

登陆进控制器后,可以通过 uname -a 查看控制器的架构

SSH 远程登录到控制器后执行 uname -a 命令查看控制器系统架构的终端输出截图

图中所示是三个 i686,分别为机器硬件名,处理器类型,硬件平台。i686我们俗称为32位系统。

4. 将程序上传到控制器运行

4.1 使用 SCP 上传程序

编译完成后,我们将要把程序给替换进控制器当中运行我们自己编译的二次开发程序,继续在当前终端下输入

bash
scp nrc2.out inexbot@192.168.1.13:~/robot

输入完成后会出现一句 “ inexbot@192.168.1.13's password: “。

我们继续敲123即可,当出现下图就表示程序已经程序替换进控制器当中了。

使用 scp 命令将 nrc2.out 上传到控制器的终端输出截图,显示上传进度条和完成信息

当然也会出现替换不成功的时候,终端会显示 Text file busy,这种情况就是控制器原本的 nrc2.out 程序还在运行,无法被替换。

这就需要 ssh 远程登陆到控制器的后台中将正在开启的 nrc2.out 进程给关闭。

bash
sudo killall -9 nrc2.out

进程关闭后就可以再次执行上面提到的 scp 的操作,就可以成功把二次开发程序替换到控制器当中。

4.2 远程登陆到控制器中启动程序

随后就可以执行我们编译的二次开发程序,,在控制器后台的 robot 目录下输入

bash
sudo ./nrc2.out

执行的效果如下如:

在控制器后台 robot 目录下执行 sudo ./nrc2.out 启动二次开发程序的终端运行效果截图

到这一步我们的二次开发项目已经成功运行起来了。


5. 调试与安全规范

5.1 调试流程

新机型或新程序首次运行时,建议按以下步骤操作:

  1. 初始化阶段 — 确认伺服连接状态,设置各轴正反限位、减速比,完成伺服映射
  2. 示教模式上电 — 切换到示教模式,先以低速点动测试各轴,目视确认运动方向与速度响应正确
  3. 逐步提速 — 确认无碰撞风险后,逐步提升速度至正常值
  4. 运行测试 — 编写简单作业文件,测试完整运动流程

5.2 上电规则

模式上电规则
示教模式只能为当前选中的单个机器人上电,保证操作安全性
运行/多机模式可同时为多个机器人上电,适用于已验证安全性的产线环境

原因: 示教模式下操作人员站在机器人旁,须保证人对机器人的绝对控制。运行模式下多机已调试完毕、安全性已验证,可并行运行。

5.3 安全提醒

  • 电机抱闸: 没上使能时电机处于抱闸状态,手掰不动,防止重力导致掉落。上使能后抱闸松开、电机供电维持角度。
  • 初始低速: 软件总有 Bug 的可能,首次运行务必低速——万一参数填错、速度远超预期,后果可能是设备损坏或人身伤害。
  • 急停可达: 调试期间确保急停按钮在可触及范围内。