TL-硬件驱动功能包

1. tl_driver 功能包说明

tl_driver 功能包在机械臂 ROS2 功能包中是十分重要的,该功能包实现了通过 ROS 与机械臂进行通信控制机械臂的功能,在下文中将通过以下几个方面详细介绍该功能包。

  • 功能包使用。
  • 功能包架构说明。
  • 功能包话题说明。

通过这三部分内容的介绍可以帮助大家:

  • 了解该功能包的使用。
  • 熟悉功能包中的文件构成及作用。
  • 熟悉功能包相关的话题,方便开发和使用。

2. tl_driver 功能包使用

2.1 tl_driver 功能包编译

Bash
cd ~/tl_robot_ros2_cpp
colcon build
source install/setup.bash

编译完成后我们可以通过以下命令直接启动节点,连接机械臂。

2.2 启动方式

tl_driver 提供两种启动方式:

方式一:通用启动(推荐开发调试使用)

通过 tl_driver.launch.py 传入 arm_type 参数,适用于快速切换不同臂型:

Bash
ros2 launch tl_driver tl_driver.launch.py arm_type:=<arm_type>

方式二:快捷启动(推荐日常使用)

每种臂型都有对应的专用 launch 文件,无需传参,直接启动:

臂型 启动命令
TCB605 ros2 launch tl_driver tl_tcb605_driver.launch.py
TCB605F ros2 launch tl_driver tl_tcb605f_driver.launch.py
TCB605L ros2 launch tl_driver tl_tcb605l_driver.launch.py
TCB605LV ros2 launch tl_driver tl_tcb605lv_driver.launch.py
TCB605V ros2 launch tl_driver tl_tcb605v_driver.launch.py
TCB610 ros2 launch tl_driver tl_tcb610_driver.launch.py
TCB610V ros2 launch tl_driver tl_tcb610v_driver.launch.py
TCB705 ros2 launch tl_driver tl_tcb705_driver.launch.py
TCB705F ros2 launch tl_driver tl_tcb705f_driver.launch.py
TCB705L ros2 launch tl_driver tl_tcb705l_driver.launch.py
TCB705LV ros2 launch tl_driver tl_tcb705lv_driver.launch.py
TCB705V ros2 launch tl_driver tl_tcb705v_driver.launch.py
TCB710 ros2 launch tl_driver tl_tcb710_driver.launch.py
TCB710V ros2 launch tl_driver tl_tcb710v_driver.launch.py

以下文档示例均以 TCB710 为例进行说明,其他臂型操作方式相同。

2.3 示例:启动 TCB710 机械臂

Bash
ros2 launch tl_driver tl_tcb710_driver.launch.py

2.4 指定机械臂 IP 启动

默认 IP 为 config 文件中的 192.168.1.13。若机械臂 IP 不同,可直接在启动指令后追加 arm_ip:=<IP> 覆盖(优先于 config 文件,无需修改配置):

Bash
ros2 launch tl_driver tl_tcb710_driver.launch.py arm_ip:=192.168.1.100

通用 launch 同样支持:

Bash
ros2 launch tl_driver tl_driver.launch.py arm_type:=tcb710 arm_ip:=192.168.1.100

启动成功后,将显示以下画面:

tl_driver 启动画面

当机械臂 IP 被改变后我们的启动指令就失效了,再直接使用如上指令就无法成功连接到机械臂了,我们可以通过修改如下配置文件,重新建立连接。该配置文件位于我们的 tl_driver 功能包下的 config 文件夹下,需要根据不同的机械臂型号修改相应的配置文件。以 TCB710 为例,配置文件为 config/tl_tcb710_config.yaml:

tl_driver 配置文件

其配置文件内容如下:

YAML
tl_driver:
  ros__parameters:
    # robot param
    arm_ip: "192.168.1.13"          # 设置TCP连接时的IP
    arm_port: "6001"                # 设置TCP连接时的端口
    arm_port_aux: "7000"            # 设置机械臂连接时的辅助端口
    arm_type: "TCB710"              # 机械臂型号
    arm_joints: ["joint1", "joint2", "joint3", "joint4", "joint5", "joint6", "joint7"] # 关节名称

3. tl_driver 功能包架构说明

3.1 功能包文件总览

Text
├── CMakeLists.txt                 # 编译规则文件
├── config                         # 机械臂配置文件
│   ├── tl_tcb605_config.yaml
│   ├── tl_tcb605f_config.yaml
│   ├── tl_tcb605l_config.yaml
│   ├── tl_tcb605lv_config.yaml
│   ├── tl_tcb605v_config.yaml
│   ├── tl_tcb610_config.yaml
│   ├── tl_tcb610v_config.yaml
│   ├── tl_tcb705_config.yaml
│   ├── tl_tcb705f_config.yaml
│   ├── tl_tcb705l_config.yaml
│   ├── tl_tcb705lv_config.yaml
│   ├── tl_tcb705v_config.yaml
│   ├── tl_tcb710_config.yaml
│   └── tl_tcb710v_config.yaml
├── doc                            # 相关文档与图片
│   ├── tl_driver1.png
│   └── tl_driver2.png
├── include                        # 头文件
│   └── tl_driver
│       └── tl_driver.h
├── launch                         # 启动文件
│   ├── tl_driver.launch.py        # 通用启动(需传 arm_type 参数)
│   ├── tl_tcb605_driver.launch.py
│   ├── tl_tcb605f_driver.launch.py
│   ├── tl_tcb605l_driver.launch.py
│   ├── tl_tcb605lv_driver.launch.py
│   ├── tl_tcb605v_driver.launch.py
│   ├── tl_tcb610_driver.launch.py
│   ├── tl_tcb610v_driver.launch.py
│   ├── tl_tcb705_driver.launch.py
│   ├── tl_tcb705f_driver.launch.py
│   ├── tl_tcb705l_driver.launch.py
│   ├── tl_tcb705lv_driver.launch.py
│   ├── tl_tcb705v_driver.launch.py
│   ├── tl_tcb710_driver.launch.py
│   └── tl_tcb710v_driver.launch.py
├── lib                            # 专有库(V3.0.2,不可修改)
│   ├── arm                        # ARM 架构
│   │   └── libtl_host.so
│   ├── include                    # C/C++ API 头文件(扁平结构)
│   │   ├── tl_admittance.h
│   │   ├── tl_api.h
│   │   ├── tl_clamp.h
│   │   ├── tl_constant_force.h
│   │   ├── tl_dexterous_hands.h
│   │   ├── tl_force.h
│   │   ├── tl_interface.h
│   │   ├── tl_io.h
│   │   ├── tl_job_operate.h
│   │   ├── tl_modbus.h
│   │   ├── tl_queue_operate.h
│   │   ├── tl_servo_ext.h
│   │   ├── tl_track.h
│   │   └── tl_types.h
│   └── x86                        # x86 架构
│       └── libtl_host.so
├── package.xml
├── README.md
├── src                            # 驱动代码源文件
│   └── tl_driver.cpp
└── test                           # 接口测试
    ├── test_all_interfaces.py     # 全接口测试脚本
    └── tl_driver_接口测试.md       # 接口测试说明文档

4. tl_driver 功能包话题与服务说明

tl_driver 功能包的服务和话题较多,可以通过如下指令了解其话题信息。

tl_driver 话题信息1

tl_driver 话题信息2

主要为套用 API 实现的一些机械臂本体的功能,其详细介绍和使用在此不详细展开,可以通过专门的文档《tl_driver服务与话题说明书》进行查看。