跳到主要内容

使用指南

本章介绍如何配置并运行一个xCore SDK C++程序。

其他语言版本(Python、Java、C#)请参考分手册。

1 设置

1.1 硬件设置

关于机器人本体和控制柜等硬件的设置,请参考 《xCore 控制系统使用手册 V3.0.1》。除了网络配置外,使用 xCore SDK无需其他额外的硬件设置。

1.2 网络配置

xCore SDK 通过以太网(TCP/IP)连接机器人。通过有线或无线连接皆可,使用户 PC 和机器人连接同一局域网。如果只使用非实时控制,对于网络性能要求不高,可以通过无线连接。

使用实时控制的话推荐通过有线直连到机器人。机器人配置有 2 个网口,一个是外网口,一个是直连网口。直连网口默认静态IP地址是 192.168.0.160。连接机器人有两种方式:

  • 连接方式 1 :机器人与用户 PC 采用网线直连的方式连接。如果用户工控机与机器人不处于同一个网段,需要配置用户 PC 的 IP 使其与机器人静态 IP 地址处于同一个网段,例如 192.168.0.22

  • 连接方式 2 :机器人外网口连接路由器或者交换机,用户 PC 也连接路由器或者交换机,两者处于同一局域网。

注:推荐使用方式 1 进行连接,连接方式2网络通信质量差时可能会造成机器人运动不稳定现象。

1.3 机器人功能设置

无需通过 RobotAssist 进行任何设置,用户可直接用 xCore SDK 控制机器人。

切换到实时模式后,机器人重启后会保持打开状态,并自动切换成自动模式。

2 编译

2.1 xCore SDK工程包说明

xCoreSDK
├── doc: 文档和使用手册
├── example: 示例程序
├── external: Eigen
├── include: 头文件
└── lib: 各操作系统和架构的库文件

2.2 C++ 编译

xCoreSDK 版本使用 CMake 构建工程,CMake 版本不低于 3.12。

2.2.1 Linux平台编译

cd xCoreSDK-v0.5.0
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=../out
cmake --build . --target sdk_example
cmake --build . --target install

2.2.2 Windows 平台编译

1.下载并安装 Microsoft Visual Studio 2017 或以后版本,选择安装“使用C++的桌面应用”。

2.打开 CMake 工程,选择根目录下的 CMakeLists.txt

3.选择编译 Release 或 Debug,编译示例程序

2.2.3 QT平台编译

  1. 下载并安装 Qt5.15.2 或以后版本,并将编译器勾选为 MSVC2019 编译器;
  2. 将SDK工程包保存到本地(无中文路径);
  3. 创建新工程文件,并将编译器选用为 MSVC2019 ;
  4. 进入配置文件(.pro文件),输入以下配置语句:
DEFINES += _USE_MATH_DEFINES
LIBS += -L <path-to-library-directory> -lxCoreSDK
INCLUDEPATH += <path-to-include-directory>
#Eigen 配置
INCLUDEPATH += <path-to-external-directory

静态库编译示例:

DEFINES += _USE_MATH_DEFINES

#SDK
LIBS += -L$$PWD/xCoreSDK-v0.5.0/lib/Windows/Debug/64bit -lxCoreSDK
INCLUDEPATH += xCoreSDK-v0.5.0/include

#Eigen
INCLUDEPATH += xCoreSDK-v0.5.0/external

3 本地配置文件

3.1 运行日志

运行 SDK 程序并连接到机器人之后,SDK 会在调用设置数据、执行操作等接口时打印日志到文件,包含调用参数和返回结果等信息。可在遇到问题时将日志提供给珞石技术支持人员,以便分析排查。

日志默认的设置如下:

  • 文件路径:<当前工作目录>/_rokae_log_/<机器人uid>/xCoreSDK_<YYYY-MM-DD>.log

  • 最多保留7天的日志

目前支持用户自定义配置日志的输出位置和保留天数,需要用户在程序运行目录处放置一个名为 user_log_settings.json的文件,文件结构如下:

{
"_log_storage_directory_": "user_defined_log_storage_directory",
"_retention_days_":5
}

_log_storage_directory_ 为用户指定的日志存储目录路径,替换默认日志存储目录 _rokae_log_,建议使用相对路径的方式写入;_retention_days_为日志保留天数。

目前也提供了全局日志,全局日志的输出位置固定在运行程序所在目录下名为 logs 的文件夹,最多保留 7 天的全局日志。

3.2 实时模式等待超时时间设置

实时模式接收状态数据默认的等待超时时间是 1ms ,根据现场实际的网络情况,可以在可执行文件同目录下,增加配置文件 xcoresdk_config.json来设置超时时间,以适应实际情况和优化实时效果。若设备网络情况较好,并出现控制一段时间后,发送的运动指令有延迟执行的现象,可适当将超时时间调大,设置范围为 1∼4ms ,具体的 json 文件格式如下:

{
"rt":{
"_timeout_": 1
}
}

4 语言

xCore SDK 的错误码信息和异常信息支持中文和英文,根据用户 PC 设置的系统语言而定。设置显示中文则返回中文错误信息,非中文则返回英文错误信息

5 Linux实时环境配置(可选)

xCore 控制器实时模式接收运动命令的周期为1ms,客户端需保证至少1kHZ的发送周期。如果计算量较大,推荐安装实时内核。

5.1 安装依赖

apt-get install build-essential bc curl ca-certificates fakeroot gnupg2 libssl-dev lsb-release libelf-dev bison flex cmake libeigen3-dev

5.2 下载实时内核补丁

通过 uname -r 命令可以知道本机正在使用的内核;

通过网站 https://www.kernel.org/pub/linux/kernel/projects/rt/ 查找离现在内核版本最接近的kernel;

下载文件:

$ curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.xz
$ curl -SLO https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.14.12.tar.sign
$ curl -SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.xz
$ curl –SLO https://www.kernel.org/pub/linux/kernel/projects/rt/4.14/older/patch-4.14.12-rt10.patch.sign

如果国内网速很慢可以直接从网站上下载或者找其他镜像源;

解压:

$ xz -d linux-4.14.12.tar.xz
$ xz -d patch-4.14.12-rt10.patch.xz

检查 sign 文件完整性

$ gpg2 --verify linux-4.14.12.tar.sign

会得到类似于如下的信息:

$ gpg2--verify linux-4.14.12.tar.sign 
gpg: assuming signed data in 'linux-4.14.12.tar'
gpg: Signature made Fr 05 Jan 2018 06:49:11 PST using RSA key ID 6092693E
gpg: Can't check signature: No public key

记下 ID 6092693E 执行:

$ gpg2--keyserver hkp://keys.gnupg.net--recv-keys 0x6092693E

同理对于 patch 文件,执行相同的操作。

下载完成 server key 后再次验证,若得到如下信息就说明是正确的。

$ gpg2--verify linux-4.14.12.tar.sign
gpg: assuming signed data in 'linux-4.14.12.tar'
gpg: Signature made Fr 05 Jan 2018 06:49:11 PST using RSA key ID 6092693E
gpg: Good signature from "Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;"[unknown]
gpg: aka "Greg Kroah-Hartman &lt;gregkh@kernel.org&gt;"[unknown]
gpg: aka "Greg Kroah-Hartman (Linux kernel stable release signing key)<greg@kroah.com>"[unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg: There is no indication that the signature belongs to the owner. Primary key
fingerprint: 647F 2865 4894 E3BD 4571 99BE 38DB BDC8 6092 693E

同理验证一下patch文件。

5.3 编译内核

解压:

$ tar xf linux-4.14.12.tar
$ cd linux-4.14.12
$ patch -p1 < ../patch-4.14.12-rt10.patch

配置内核:

$ make oldconfig

出现以下信息:

Preemption Model
1. No Forced Preemption (Server) (PREEMPT_NONE)
2. Voluntary Kernel Preemption (Desktop) (PREEMPT_VOLUNTARY)
3. Preemptible Kernel (Low-Latency Desktop) (PREEMPT_LL) (NEW)
4. Preemptible Kernel (Basic RT) (PREEMPT_RTB)(NEW)
>5. Fully Preemptible Kernel (RT) (PREEMPT_RT_FULL)(NEW)

选5然后一直 enter。

开始编译:

$ fakeroot make-j4 deb-pkg

dpkg 安装:

$ sudo dpkg -i ../linux-headers-4.14.12-rt10_*.deb ../linux-image-4.14.12-rt10_*.deb

5.4 验证是否安装成功

重启一下,进 ubuntu 高级选项,可以看到你安装的内核。选择新安装的内核进入后,通过 uname -r 查看对应内核版本,如果版本正确,/sys/kernel/realtime 里内容是 1。