使用指南
本章介绍如何配置并运行一个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平台编译
- 下载并安装 Qt5.15.2 或以后版本,并将编译器勾选为 MSVC2019 编译器;
- 将SDK工程包保存到本地(无中文路径);
- 创建新工程文件,并将编译器选用为 MSVC2019 ;
- 进入配置文件(
.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 <gregkh@linuxfoundation.org>"[unknown]
gpg: aka "Greg Kroah-Hartman <gregkh@kernel.org>"[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。