发布时间: 2026-01-16

未命名标题


CS 系列1 章 概述

ROSRobot Operating System,机器人操作系统)是一组开源的软件库和工具,为机

器人应用的开发与运行提供了灵活而强大的框架。ROS 2 ROS 1 的升级版本,在性能、通

信机制、安全性以及实时性方面均进行了大幅优化,更适合科研与工业级机器人系统。

ROS 2 中,程序通常以软件包(packages)的形式组织,并在一个工作空间(workspace

中使用 colconROS 2 多包构建工具)进行构建。每个软件包可以包含一个或多个节点(nodes),

节点之间可通过话题(topics)、服务(services)、动作(actions)等通信机制进行交互。

ELITE ROS 2 软件包主要使用以下 ROS 2 通信方式:

话题(Topics发送机器人状态信息。

动作(Actions处理长时间运行的任务,如运动执行等。

服务(Services处理快速请求,如启用机器人、切换机器人状态等。

1.1 主要功能

Elite ROS 2 软件包提供以下核心功能:

自定义控制器

MoveIt 2 集成:

提供运动规划与执行、碰撞检测、运动学求解与轨迹生成的完整支持,并可根据需求扩

展其他功能。

RViz 可视化与类仿真环境

实时可视化机器人模型、关节状态及传感器数据等。

提供基础 类仿真环境,用于预览规划执行的运动、实现与机器人交互控制等功能。

Gazebo 仿真环境:

提供完整的物理仿真环境,用于测试控制算法及机器人在逼真场景下的行为响应。

控制驱动接口:

ROS 2 驱动节点用于向机器人控制器发送控制指令并接收状态反馈。

CS 系列

1

版本:Ver2.15.01.2 ELITE ROS2 软件包结构

1.2 ELITE ROS2 软件包结构

ELITE ROS 2 软件包整体结构如下:

1-1: ELITE ROS2 软件包结构

软件包目录说明

eli_common_interface:定义一些共用的服务或消息接口。

eli_dashboard_interface:定义 Dashboard 节点使用的消息接口。

eli_cs_controllersElite CS 机器人控制器的具体实现。

eli_cs_robot_calibration:用于从真实机器人读取标定数据的工具。

eli_cs_robot_description Elite CS 机器人的描述文件和模型。

eli_cs_robot_driver:与机器人通信的硬件接口、驱动与示例。

eli_cs_robot_simulation_gzGazebo 仿真配置与示例。

eli_cs_robot_moveit_configMoveIt 配置与示例。

1.3 支持的系统与平台要求

ELITE ROS2 软件包旨在为 ELITE 协作机器人提供完整的 ROS 2 集成支持,兼容 CSES

系列全部机型。目前,该软件包已在 Ubuntu 22.04Jammy Jellyfish+ ROS 2 Humble

上正式测试和支持。

版本:Ver2.15.0

2

CS 系列1.4 ROS2 基本命令

1-1. ROS2 软件包硬件要求

组件

推荐最低要求

备注

处理器(CPU64 Intel i5 / i7(或同

AMD 处理器)

推荐使用多核 CPU,可显著提升编译与运

行效率。

内存(RAM) 至少 8 GB(推荐 16 GBMoveIt 2 运动规划和 RViz 可视化需要较

大的运行内存。

存储

Storage

至少 30 GB 可用空间(建

议使用 SSD

更快的存储可提升启动速度和数据处理能

力。

GPU

optional

支持 CUDA NVIDIA

GPU

非必需,但对高级感知应用(如基于 AI

视觉处理、实时 SLAM 等)有显著加速效

果。

1.4 ROS2 基本命令

本节介绍一些常用的 ROS2 基础命令。这些命令可用于构建、运行和调试 ROS 2 节点,管

理查询主题、服务、参数以及启动文件等。

1-2. ROS2 基础命令

命令

说明

cd /<ros2_ws>

进入 ROS 2 工作空间目录

colcon build

编译 ROS 2 工作空间内所有软件包

source ./install/setup.bash

添加软件包到环境变量(编译完成后必须执行)

ros2 pkg list

查看所有可用的软件包

ros2 pkg prefix <package-name>

查找软件包的安装路径

ros2 run <package-name>

<executable-name>

运行 ROS 2 节点

ros2 node list

查看当前正在运行的节点

CS 系列

3

版本:Ver2.15.01.4 ROS2 基本命令

命令

说明

ros2 node info <node-name>

查看指定节点的信息

ros2 node kill <node-name>

停止运行中的节点

ros2 topic –help

查看所有可用的话题操作

ros2 topic list

查看所有活动中的话题

ros2 topic echo /<topic_name>

实时显示指定话题的消息内容

ros2 topic info /<topic_name>

查看话题的信息(消息类型、发布者、订阅者等)

ros2 topic type /<topic_name>

查看话题的消息格式

ros2 interface show <msg_type>

显示特定消息类型的详细信息(类似于 ROS 1

中的 rosmsg show

ros2 service –help

查看所有可用的服务操作

ros2 service list

查看活动中的服务列表

ros2 service call <service-name>

<service-type> argument

手动调用服务

ros2 launch <package_name>

<file.launch.py>

运行启动文件

ros2 param list

查看某个节点的可用参数

ros2 param get <node-name>

<param-name>

获取某个参数的值

ros2 param set <node-name>

<param-name value>

设置参数的值

ros2 bag record /<topic_name>

记录某个话题的消息到 ROS 2 bag 文件中

ros2 bag play <bag_file>

重新播放已记录的 bag 文件消息

ros2 control list_controllers

查看当前加载的所有控制器及其状态

active/inactive 等)

ros2 control list_controller_types

查看可用控制器类型(例如

joint_trajectory_controller 等)

版本:Ver2.15.0

4

CS 系列1.4 ROS2 基本命令

命令

说明

ros2 control list_hardware_components

查看当前系统中注册的硬件组件(机器人本体、

传感器等)

ros2 control list_hardware_interfaces

查看可用的硬件接口(position, velocity,

effort, sensor interfaces 等)

roslaunch <package> <file.launch>

启动某个包内的 launch 文件(常用于统一管理

多个节点)

CS 系列

5

版本:Ver2.15.02 章 机器人端配置

使用 Elite_ROS2_Drivers 控制机器人有两种方式:实体机器人或虚拟示教器(ELIBOT

Sim)。

提示

两种方式任选其一。如无实体机器人,可选择使用虚拟示教器(ELIBOTSim)。

2.1 机器人配置

2.1.1 网络配置

1CS 系列标准控制柜

如您使用 CS 系列标准控制柜,需将 FB1FB2 同时接入局域网,并设置好 IP 地址。

为什么需要连接两个网口?

因为 CS 系列标准控制柜采用双处理器的分布式架构:

FB1 网口对应一个处理器,负责运行机器人的 dashboard 功能;

FB2 网口对应另一个处理器,负责运行与 Elite ROS2 Drivers 进行通讯的控制软件。

因此需要同时连接两个网口。

从机器人软件 2.14.3 版本起,若使用 Elite ROS2 Drivers headless 模式,可以只连

FB2 网口。

2CS 系列 B1 控制柜

如您使用 CS 系列 B1 控制柜,仅需连接一个网口。

CS 系列

7

版本:Ver2.15.02.1 机器人配置

2.1.2 设置远程控制模式

1. 点击示教器右上角的 Elite 图标 > 「设置」。

2-1: 示教器设置

2. 启用/禁用「远程控制模式」,点击左下角退出:

2-2: 远程控制模式设置

3. 若选择启用远程控制模式,界面右侧栏会出现「本地控制」选项,请切换到「远程控

制」模式。

版本:Ver2.15.0

8

CS 系列2.1 机器人配置

2-3: 远程控制选项

2-4: 远程控制界面

提示

如果 CS 系列机器人的远程控制模式是禁用状态,则会处于“混合模式”,即外部控制和

示教器本地控制均可生效。因此,在上述步骤中,也可将远程控制模式设为禁用。

CS 系列

9

版本:Ver2.15.02.1 机器人配置

2.1.3 测试网络连接

可通过以下两种方式测试 SDK 是否能与机器人通讯:

1. 使用机器人脚本

2. 使用 bash 指令测试

推荐使用方法 1(机器人脚本)。若脚本测试成功,说明机器人配置基本没有问题,通常

不会出现后续运行运动指令时的连接问题。

方法 2Bash 指令)可用于初步排查网络是否畅通,即使成功也可能因路由等原因导致

运动控制失败。因此,若使用方法 2 无法正常控制机器人运动,请使用方法 1

1. 使用机器人脚本(推荐)

1. 获取 IP 地址

在要运行 SDK Linux 操作系统中执行以下指令:

1 ifconfig

记录与机器人连接的网口 IP(记为 Local IP)。

提示

可能遇到的问题

Linux 中执行 ifconfig 时可能会出现找不到命令的提示,此时需要安装一下该指

令,例如在 Ubuntu 中执行 sudo apt install net-tools 指令安装。

2. 在示教器上创建测试脚本

点击示教器左侧栏的「任务」。

版本:Ver2.15.0

10

CS 系列2.1 机器人配置

2-5: 选择任务

选择「占位节点」>「高级」>「脚本」。

2-6: 选择脚本

点击左侧下拉框,选择「文件」,点击「编辑」。

CS 系列

11

版本:Ver2.15.02.1 机器人配置

2-7: 编辑文件

2-8: 编辑脚本

将以下内容写入文本编辑器中(注意将 Your.Local.IP.Addr 替换为刚才记录的 Lo

cal IP):

1 socket_open("Your.Robot.IP.Addr", 50001)

2 socket_send_string("Hello SDK\n")

3 sleep(1)

点击「保存」,并设置文件名。

版本:Ver2.15.0

12

CS 系列2.1 机器人配置

2-9: 保存脚本

2-10: 设置脚本名称

3. 创建 TCP 测试服务器

在要运行 Elite_ROS2_Drivers 的操作系统中创建一个端口为 50001 TCP 服务。

将以下内容保存为 sdk_connection_test.py,然后执行 python3 sdk_connection_test.py

运行。

CS 系列

13

版本:Ver2.15.02.1 机器人配置

1 import socket

2

3

4 def start_tcp_server(host='localhost', port=50001):

5

server_socket = socket.socket(socket.AF_INET, socket.

SOCK_STREAM)

6

server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR

, 1)

7

8

try:

9

# 设置accept超时(1秒)

10

server_socket.settimeout(1.0)

11

12

server_socket.bind((host, port))

13

server_socket.listen(5)

14

print(f"TCP服务器启动在 {host}:{port},等待客户端连接...")

15

16

while True:

17

try:

18

# 接受客户端连接(现在会超时,让出控制权)

19

client_socket, client_address = server_socket.

accept()

20

print(f"客户端 {client_address} 已连接")

21

22

try:

23

while True:

24

data = client_socket.recv(1024)

25

if not data:

26

print(f"客户端 {client_address} 已断开连

接")

27

break

28

29

received_string = data.decode('utf-8')

30

print(f"来自 {client_address} 的数据: {

received_string}")

31

32

except ConnectionResetError:

33

print(f"客户端 {client_address} 异常断开连接")

34

except Exception as e:

35

print(f"处理客户端 {client_address} 时发生错误: {e

}")

36

finally:

37

client_socket.close()

38

39

except socket.timeout:

版本:Ver2.15.0

14

CS 系列2.1 机器人配置

40

# 超时是正常的,继续循环

41

continue

42

43

except KeyboardInterrupt:

44

print("\n服务器被用户中断")

45

except Exception as e:

46

print(f"服务器发生错误: {e}")

47

finally:

48

server_socket.close()

49

print("服务器已关闭")

50

51

52 if name == "__main__":

53

start_tcp_server()

4. 运行测试

点击示教器上的任务运行按钮,如果一切正常,会看到 TCP 服务器接收到”Hello SDK”

的一行字符串。

2-11: 运行测试任务

可能遇到的问题

1. TCP 服务器无法启动

如果在创建 TCP 服务时失败,可能是系统中其他程序占用了 50001 端口。如需更换端

口,机器人脚本中的端口号需要同步修改。

2. 示教器报错:“socket_send_string”:未连接服务端“socket_0”。

CS 系列

15

版本:Ver2.15.02.1 机器人配置

这说明机器人无法连接 SDK TCP 服务端口。可能的原因包括:

如果使用了虚拟机,需要将虚拟机的网卡设置为桥接模式,并桥接到与机器人相连

的网卡上,然后设置好 IP 地址。

如您使用的是 CS 系列标准控制柜,可能没有连接 FB2 网口。

局域网设置可能关闭了连接,建议将机器人与运行 SDK 的电脑直连。如果您使用

的是 CS 系列标准控制柜,可以使用交换机将运行 SDK 的电脑、控制柜 FB1、控制

FB2 连接在一起。

IP 设置不正确,运行 SDK 的电脑 IP 与控制柜网口 IP 不在同一网段。

电脑开启了 VPN,建议关闭。

服务器没有启动成功,系统中某些应用占用了 50001 端口,请尝试更换端口。(注

意服务器端口和机器人脚本中 socket_open 指令端口需要同时修改)。

服务器被关闭,可能在接收到“Hello SDK”字符串后您关闭了服务器,但此时机

器人仍在循环执行脚本。

如上述情况均确认无误但仍无法连接,请重启控制柜再重试。

2. 使用 Bash 指令

1. 获取 IP 地址

在要运行 SDK Linux 操作系统中输入以下指令:

1 ifconfig

记录下与机器人相连网口的 IP,记为 Local IP

提示

可能遇到的问题

Linux 中执行 ifconfig 时可能会出现找不到命令的提示,此时需要安装一下该指令,例

如在 Ubuntu 中使用 sudo apt install net-tools 指令安装。

2. 测试机器人到 SDK 的连接

在要运行 SDK Linux 操作系统中运行以下指令,使用 ssh 登录到机器人的操作系统里

(注意替换 aaa.bbb.ccc.ddd 为机器人 IP,如您使用的是 CS 系列标准控制柜,则为 FB2

IP),密码为 elibot

版本:Ver2.15.0

16

CS 系列2.1 机器人配置

1 ssh root@aaa.bbb.ccc.ddd

登录成功后输入以下指令,检查机器人是否能连接到 SDK(注意替换 aaa.bbb.ccc.ddd

为刚才记录的 Local IP)。

1 ping aaa.bbb.ccc.ddd

如果连接成功,会有类似以下输出:

1 PING 192.168.1.110 (192.168.1.110): 56 data bytes

2 64 bytes from 192.168.1.110: seq=0 ttl=64 time=0.373 ms

3 64 bytes from 192.168.1.110: seq=1 ttl=64 time=0.409 ms

4 64 bytes from 192.168.1.110: seq=2 ttl=64 time=0.397 ms

5 64 bytes from 192.168.1.110: seq=3 ttl=64 time=0.432 ms

如无法连接,请检查网络设置,例如:IP 地址是否冲突,SDK 所在系统与机器人是否在

同一网段,所在的局域网环境等。

3. 测试 SDK 到机器人的连接

输入 exit 退出登录,返回至要运行 SDK 的操作系统中,执行以下指令,简单检查 SDK

是否能连接上机器人(注意替换 aaa.bbb.ccc.ddd 为机器人 IP,如果是 CS 系列标准控制柜,

需要确保能够接通 FB1 FB2)。

1 ping aaa.bbb.ccc.ddd

CS 系列

17

版本:Ver2.15.02.2 虚拟示教器仿真配置

2.2 虚拟示教器仿真配置

请按照以下方法配置虚拟示教器(ELIBOTSim)和 Docker

(1) 安装 Docker

在系统终端中输入以下内容:

1 curl -fsSL https://get.docker.com | sudo sh

(2) 下载仿真脚本

打开 链接,下载 start_elibotsim.sh 仿真脚本。

下载完成后,进入 start_elibotsim.sh 文件所在目录,右键点击「在终端打开/Open the

terminal」。

2-12: 找到仿真脚本

在终端输入以下内容:

1 chmod +x start_elibotsim.sh

2

3 sudo usermod -aG docker $USER

(3) 启动仿真

输入以下内容启动仿真脚本,首次启动默认访问 Docker 官网拉取仿真镜像。

版本:Ver2.15.0

18

CS 系列2.2 虚拟示教器仿真配置

1 ./start_elibotsim.sh

如启动失败,出现类似“Failed to create network”的提示,可在指令前加 sudo,即输

入以下内容:

1 sudo ./start_elibotsim.sh

如终端返回类似以下内容,则说明拉取仿真镜像成功:

2-13: 拉取仿真镜像成功

打开 Web 端输入 http://localhost:6080 ,出现以下仿真画面说明仿真器启动成功。

2-14: 仿真器启动成功

CS 系列

19

版本:Ver2.15.02.2 虚拟示教器仿真配置

提示

除第 4.3 节外,其他章节如无实体机器人都需提前启动该仿真环境。

仿真脚本参数使用说明:

1 Starts ELIBOTSim inside a docker container

2

3 Syntax: start_elibot_sim.sh [options]

4

5 options:

6

-m <model> Robot model (CS63, CS66, ES66, etc). Defaults to CS66.

7

-c

CONTROL_BOX_ID. Defaults to 3

8

-t

TOOL_TYPE_ID. Defaults to 1

9

-v <version> Image tag to use. Defaults to '2.14.5'

10

-p <folder> Program dir on host

11

-u <folder> ELITECO dir on host

12

-n

Container name. Default: '$CONTAINER_NAME'

13

-i

Container IP. Default: $IP_ADDRESS

14

-d

Detached mode (background)

15

-f

Port forwarding string (e.g. "-p 6080:6080 -p 5900:5900")

16

-r <0|1>

Robot series flag. 0 = CS_SERIES, 1 = ES_SERIES

17

-h

Show this help

例如,如需指定机械臂型号,可输入以下内容:

1

./start_elibotsim.sh -m cs616

配置完成后,启动虚拟仿真环境,随后启动 Elite_Robots_CS_ROS2_Driver 功能包节点,

即可实现 ROS 控制。

版本:Ver2.15.0

20

CS 系列3 章 本地环境安装

在编译和使用 Elite_Robots_CS_ROS2_Driver 软件包之前,请确保系统中已安装 ROS 2

MoveIt 2Elite SDK 以及 Gazebo

3.1 ROS 2 Humble 安装

以下两种安装方式任选其一即可。

3.1.1 官方安装

以下步骤参考 ROS 2 Humble 官方安装指南。

1)配置 ROS 2 软件包源

在系统终端输入以下内容:

1 sudo apt install software-properties-common

2

3 sudo add-apt-repository universe

4

5 sudo apt update && sudo apt install curl -y

6

7 sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/

ros.key -o /usr/share/keyrings/ros-archive-keyring.gpg

8

9 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/

keyrings/ros-archive-keyring.gpg] http://packages.ros.org/ros2/

ubuntu $(. /etc/os-release && echo $UBUNTU_CODENAME) main" | sudo

tee /etc/apt/sources.list.d/ros2.list > /dev/null

2)推荐安装桌面版本(包含 Rviz 等可视化工具和常用教程)

1 sudo apt update

2

3 sudo apt upgrade

4

5 sudo apt install ros-humble-desktop

CS 系列

21

版本:Ver2.15.03.2 Moveit 2 环境

6

7 sudo apt install ros-dev-tools

#可额外安装此编译工具包

3)配置 ROS 2 启动环境:

1 echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc

2

3 source ~/.bashrc

3.1.2 其他安装方式

如上述方式执行失败,可使用下列替代安装方式:

1 wget http://fishros.com/install -O fishros && . fishros

按提示操作即可完成安装。

输入以下内容,检测 ROS 2 是否安装成功:

1 ros2 --help

如终端输出类似以下内容,则说明安装成功:

3-1: 安装成功

版本:Ver2.15.0

22

CS 系列3.2 Moveit 2 环境

3.2 Moveit 2 环境

3.2.1 Moveit 2 概述

MoveIt 2 ROS 2 中用于机器人运动规划、控制与操作的完整解决方案,为机械臂等机

器人提供从路径规划到动作执行的全流程能力,可通过 URDF/SRDF 自动配置。

其主要特性包括:

运动规划(如避障路径规划)

/正运动学(IK/FK

碰撞检测

轨迹生成与优化

机器人控制接口(ros2_control

抓取与操作(grasping

可视化调试(MoveIt RViz 插件)

3.2.2 Moveit 安装

MoveIt 2 可通过官方 Debian 软件包(via apt)直接安装,安装方法可参考官方二进制安

装指南

安装命令:

1 sudo apt update

2

3 sudo apt install ros-humble-moveit

4

5 sudo apt install ros-humble-moveit-servo

6

7 source /opt/ros/humble/setup.bash

3.3 Gazebo Fortress 环境

3.3.1 Gazebo 概述

Gazebo Fortress 是新一代 Gazebo(原 Ignition Gazebo)系列的 LTS(长期支持)版本,

CS 系列

23

版本:Ver2.15.03.3 Gazebo Fortress 环境

是专为机器人仿真设计的高性能模拟器。相比经典版 GazeboGazebo 11),Fortress 在性

能、架构和可扩展性上全面升级,主要提供:

更先进的渲染引擎OGRE2 / Vulkan

强大的物理引擎支持ODEBulletDARTIgnition Physics 等)

模块化设计(基于 Ignition LibrariesPhysicsRenderingTransport 等)

更流畅的图形界面与场景编辑工具

更高性能的传输通信系统Ignition Transport

完善的 ROS 2 Humble 集成ros_gz_bridge

3.3.2 Gazebo 安装

Gazebo Fortress 的安装方法可参考 官方二进制安装指南

1)安装基础工具

1 sudo apt-get update

2

3 sudo apt-get install lsb-release gnupg

2)安装 Ignition Fortress

1 sudo curl https://packages.osrfoundation.org/gazebo.gpg --output /usr/

share/keyrings/pkgs-osrf-archive-keyring.gpg

2

3 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/

keyrings/pkgs-osrf-archive-keyring.gpg] http://packages.

osrfoundation.org/gazebo/ubuntu-stable $(lsb_release -cs) main" |

sudo tee /etc/apt/sources.list.d/gazebo-stable.list > /dev/null

4

5 sudo apt-get update

6

7 sudo apt-get install ignition-fortress

3)安装 ROS 2 集成(ros-gz Bridge)及设置环境变量

1 sudo apt install -y ros-humble-ros-gz

2

3 echo 'source /usr/share/gz/setup.bash' >> ~/.bashrc

4

5 source ~/.bashrc

版本:Ver2.15.0

24

CS 系列3.4 ELITE SDK 安装

Ubuntu 虚拟机环境配置

如果您在 虚拟机中运行 Gazebo Fortress,可能会遇到 网格闪烁空白渲染窗口的问

题,这是由于硬件加速有限导致的。为解决这个问题,可添加以下内容强制启用软件渲染:

1 echo 'export LIBGL_ALWAYS_SOFTWARE=true' >> ~/.bashrc

2

3 source ~/.bashrc

3.4 ELITE SDK 安装

Elite SDK 是艾利特机器人 CS 系列机械臂的 C++ 库,借助该库,开发者可以基于 C++

现驱动程序,从而充分利用艾利特机器人 CS 系列机械臂的多功能性来开发外部应用程序。在

安装 Elite_Robots_CS_ROS2_Driver 之前需要在系统中安装该 SDK 包,推荐使用编译安装方

式。如需了解 Elite SDK 包的安装和使用操作,请查阅《CS 系列 C++SDK 快速使用手册》。

3.5 ROS2_Driver 安装

1)新建工作空间

在终端输入以下内容:

1 cd

2

3 mkdir -p elite_ros_ws/src

4

5 cd elite_ros_ws/src

2)获取相应代码

1 git clone https://github.com/Elite-Robots/Elite_Robots_CS_ROS2_Driver.

git

3)自动安装 Elite ROS2 Drivers 所需依赖

CS 系列

25

版本:Ver2.15.03.5 ROS2_Driver 安装

1 cd ..

2

3 sudo rosdep init

4

5 rosdep update

6

7 rosdep install --ignore-src --rosdistro $ROS_DISTRO --from-paths src -y

4)编译 Elite ROS2 Drivers

1 colcon build

5)配置终端环境

构建完成后,需对环境进行设置以使用该软件包:

1 source ~/elite_ros_ws/install/setup.bash

如需在每次打开终端时自动加载,可添加:

1 echo "source ~/elite_ros_ws/install/setup.bash" >> ~/.bashrc

2

3 source ~/.bashrc

至此,ELITE ROS 2 驱动已完成编译与安装,可用于机器人控制与运动规划。

6)验证软件包是否安装成功

1 ros2 launch eli_cs_robot_driver elite_control.launch.py robot_ip:=xxx.

xxx.xxx.xxx local_ip:=yyy.yyy.yyy.yyy cs_type:=zzzz

其中:

robot_ip 填写机器人端 IP 地址(实体机器人填实际机器人端 IP 地址,仿真环境填本地

电脑的 IP 地址);

local_ip 填写本地电脑的 IP 地址;

cs_type 填写对应的机器人型号,如 cs66/cs63/cc612 等。

版本:Ver2.15.0

26

CS 系列4 章 入门指南

4.1 基础教程:使用 eli_cs_robot_driver 控制 ELITE 机器人

eli_cs_robot_driver 是用于控制 ELITE 机器人的 ROS 2 驱动程序包,通过 ROS 2 的服务

Service)和主题(Topic)与 ELITE 机器人通信。本节将提供示例服务调用及控制器命令发

布方式,展示如何向机器人发送基本控制指令并查询其状态。

按照以下步骤启动并连接机器人驱动程序节点:

1)配置机器人网络或启动仿真

请先配置机器人端网络(参见 第 2.1 节),或启动虚拟示教器仿真环境(参见 第 2.2 节)。

2)在示教器上打开机器人电源和抱闸,使机器人处于正常模式

点击「打开电源」> 「释放抱闸」。

4-1: 打开电源

CS 系列

27

版本:Ver2.15.04.1 基础教程:使用 eli_cs_robot_driver 控制 ELITE 机器人

4-2: 释放抱闸

完成后,示教器应显示为正常模式

4-3: 正常模式

3)启动 ELITE ROS 2 驱动程序并与机器人建立连接:

1 ros2 launch eli_cs_robot_driver elite_control.launch.py robot_ip:=<

robot_ip> cs_type:=<cs_type> headless_mode:=true

说明:

版本:Ver2.15.0

28

CS 系列4.1 基础教程:使用 eli_cs_robot_driver 控制 ELITE 机器人

<robot_ip> 需替换为机器人实际 IP 地址(如您使用的是虚拟仿真器,则为本机 IP)。

<cs_type> 需替换为实际机器人型号(如 cs66)。

headless_mode 表示是否启用外部程序控制模式。

运行成功后,Rviz 中显示的机器人姿态应与示教器一致,如下所示:

4-4: Rviz 显示形态

4-5: 示教器中机器形态

此时示教器左上角状态显示为运行模式

4.1.1 示例服务命令

本节展示如何通过 ROS 2 服务接口向 ELITE 机器人发送控制命令。完整的服务列表请参

CS 系列

29

版本:Ver2.15.04.1 基础教程:使用 eli_cs_robot_driver 控制 ELITE 机器人

ROS2 接口文档

提示

1. 执行以下命令前,请确保 elite_ros2_driver 节点正在运行

2. 执行这些命令不需要提前给机器人上电或释放抱闸。

1)打开电源

1 ros2 service call /dashboard_client/power_on std_srvs/srv/Trigger "{}"

执行后示教器左上角机器人状态将从关机切换为待机。

4-6: 转为待机

2)释放抱闸

1 ros2 service call /dashboard_client/brake_release std_srvs/srv/Trigger

"{}"

执行后示教器左上角状态变为正常模式。

3)获取当前任务的状态

1 ros2 service call /dashboard_client/get_task_status eli_common_interface

/srv/GetTaskStatus "{}"

返回结果如下:

4-7: 返回结果

版本:Ver2.15.0

30

CS 系列4.1 基础教程:使用 eli_cs_robot_driver 控制 ELITE 机器人

4.1.2 示例控制器命令

ROS 2 control ROS 中用于向机器人发送控制命令(关节、速度、轨迹)并管理硬件的

核心组件。eli_cs_controllers 包提供了适用于 Elite CS 系列机器人的 ros2_control 专用控制

器与硬件接口,包括:

speed_scaling_interface :读取当前速度缩放值并传递给控制器。

scaled_joint_command_interface:结合速度缩放值提供对关节值和命令的访问。

speed_scaling_state_controller:将机器人报告的当前执行速度(0-1 浮动值)发

布到主题接口。

scaled_joint_trajectory_controller:与 joint_trajectory_controller 类似,但它使

用机器人报告的速度缩放值来减少轨迹的执行进度。

提示

执行下述机器人命令前,须先确保 elite_ros2_driver 节点正在运行,且机器人处于运

行模式

1)列出当前可用控制器

1 ros2 control list_controllers

返回结果如下:

4-8: 返回结果

CS 系列

31

版本:Ver2.15.04.1 基础教程:使用 eli_cs_robot_driver 控制 ELITE 机器人

2)关节轨迹控制

示例如下:

1 ros2 topic pub /scaled_joint_trajectory_controller/joint_trajectory

trajectory_msgs/msg/JointTrajectory "

2 joint_names: [

3

'shoulder_pan_joint',

4

'shoulder_lift_joint',

5

'elbow_joint',

6

'wrist_1_joint',

7

'wrist_2_joint',

8

'wrist_3_joint'

9 ]

10 points:

11 - positions: [0.0, -1.0, 1.0, -1.5, 1.5, 0.0]

12

time_from_start: {sec: 2}

13

"

或使用:

1 - ros2 action send_goal /scaled_joint_trajectory_controller/

follow_joint_trajectory \

2

control_msgs/action/FollowJointTrajectory "{

3

trajectory: {

4

joint_names: [shoulder_pan_joint, shoulder_lift_joint,

elbow_joint, wrist_1_joint, wrist_2_joint, wrist_3_joint],

5

points: [

6

{positions: [0,-1.57,1,-1.5,1.5,0.0], time_from_start: {sec:

2}}

7

]

8

}

9

}"

成功执行后机器人将到达指定关节位置:

版本:Ver2.15.0

32

CS 系列4.1 基础教程:使用 eli_cs_robot_driver 控制 ELITE 机器人

4-9: 返回结果

4.1.3 程序控制示例

提示

执行下述命令前,请先确保 elite_ros2_driver 节点正在运行且机器人处于运行模式

Python 示例:

1 ros2 run eli_cs_robot_driver safe_joint_move.py --target 0 -1.2 0 -1.57

0 0 --max-vel 0.5 --min-time 2.0 --controller

scaled_joint_trajectory_controller

具体代码和参数使用方法参见 Python 源代码

C++ 示例:

1 ros2 run eli_cs_robot_driver safe_joint_move_cpp --ros-args -p target

:="[0.0,-1.57,0.0,-1.0,-1.57,0.0]" -p max_vel:=0.5 -p min_time

:=2.0 -p controller:="scaled_joint_trajectory_controller"

具体代码和参数使用方法参见 C++ 源代码

CS 系列

33

版本:Ver2.15.04.2 Moveit 2 教程:规划与执行

4.2 Moveit 2 教程:规划与执行

本节示例展示如何基于 Moveit 2 ELITE 机器人(以 CS66 为例)进行运动规划与路径

执行。

提示

执行下述命令前,请先确保示教器中机器人处于正常模式

1)启动机器人驱动和控制器程序:

1 ros2 launch eli_cs_robot_driver elite_control.launch.py robot_ip:=<

robot_ip> headless_mode:=true launch_rviz:=false cs_type:=cs66

<robot_ip> 需替换为实际的机器人 IP 地址(如您使用的是虚拟仿真器,则为本地电脑的

IP 地址)。

2)启动 Moveit2 控制程序:

1 ros2 launch eli_cs_robot_moveit_config cs_moveit.launch.py cs_type:=cs66

启动完成后,Rviz 中的机器人姿态应与示教器中的状态一致。如不一致,可重启机器人

驱动节点与 Moveit 2 控制节点。

3)生成规划轨迹并执行

Rviz 中使用交互标记(机器人末端执行器球体)拖动至目标位置:

点击「Plan」生成机器人的规划轨迹;

或点击「Plan & Execute」直接规划并执行。

版本:Ver2.15.0

34

CS 系列4.3 Gazebo 教程:物理仿真世界

4-10: 生成轨迹

执行规划后,机器人示教器端将实时同步显示运动过程。

如需了解 Moveit 2 的完整配置方法与编程控制示例,可参阅ELITE Robots ROS2 教程

4.3 Gazebo 教程:物理仿真世界

Gazebo 可模拟机器人的物理特性,并允许添加障碍物测试运动规划、碰撞检测与避障算

法。本节展示如何在 Gazebo 中启动 ELITE 机器人并实现程序控制。

提示

启动 Gazebo 仿真前,请确保 已关闭其他机器人端连接

1. 通过程序控制 Gazebo 机器人

1)启动 Gazebo 环境:

1 ros2 launch eli_cs_robot_simulation_gz cs_sim_control.launch.py

启动后 Gazebo 将加载机器人模型,显示效果如下:

CS 系列

35

版本:Ver2.15.04.3 Gazebo 教程:物理仿真世界

4-11: 启动结果

2)控制 Gazebo 中的机器人运动:

1 ros2 run eli_cs_robot_simulation_gz gz_control.py --example

更多程序控制方案可参考 该脚本源代码

2. Moveit 2 控制 Gazebo 机器人

1)同时启动 Moveit 2 Gazebo 环境:

1 ros2 launch eli_cs_robot_simulation_gz cs_sim_moveit.launch.py

2)执行运动规划

可参考第 4.2 节的步骤 3(同样适用 Gazebo )实现控制。

提交反馈