Universal_Robots_Client_Library

Universal_Robots_Client_Library
Universal Robots ROS 2 documentation

Universal Robots 客户端库

这是一个用于访问 Universal Robots 接口的 C++ 库,利用该库可以基于 C++ 实现驱动程序,创建外部应用程序来发挥 Universal Robots 机器人机械臂的多功能性。

要求

  • Polyscope 软件版本:CB3 系列需 3.14.3 或更高版本,e 系列需 5.9.4 或更高版本。建议使用较新版本的软件,若无法升级,请参考兼容性表。
  • 需要 POSIX 线程 实现,例如 pthread 库。
  • Socket 通信基于 Linux 套接字,因此需要在 Linux 上进行编译和使用。
  • 主分支需要支持 C++17 的编译器。如果不希望使用 C++17,可以使用 boost 分支,该分支依赖 Boost 库。

构建说明

请参考 构建/安装

许可证

库的主体部分使用 Apache-2.0 许可证发布,但某些部分使用不同的许可证:

  • 通信结构中的队列由 Cameron Desrochers 编写,采用 BSD-2-Clause 许可证。
  • 信号量实现由 Jeff Preshing 编写,采用 zlib 许可证。
  • Dockerfile 由 Arran Hobson Sayers 编写,采用 MIT 许可证。

库内容

  • 基础主接口:主接口目前只实现了基本功能。
  • RTDE 接口:完全支持 RTDE 接口,可以作为 RTDE 客户端使用。
  • 仪表盘接口:提供了访问仪表盘服务器的功能。
  • 自定义运动流:支持通过自定义 Socket 进行数据流操作,如执行运动指令。

示例驱动

examples 文件夹中提供了一个运行驱动的简单示例,启动后会读取并打印控制器的 RTDE 值。

架构

请参见 架构文档

主接口/次接口说明

目前,库对主接口的支持有限,更多功能基于 RTDE 接口开发。comm::URStream 类可用于连接主/次接口并发送数据,但包解析尚未完全实现。

实时调度

为了确保 RTDE 消息的顺畅接收,接收线程及调用 getDataPackage() 的线程应设置为实时优先级。

生产者/消费者架构

通信通过生产者/消费者模式实现,生产者从 Socket 读取数据并将解析后的包存入队列,消费者则处理这些包。

日志配置

库使用自定义日志宏,可以根据需求创建新的日志处理程序。

更改日志级别

可以通过以下代码更改日志级别:

#include "ur_client_library/log.h"

int main(int argc, char* argv[]) {
  urcl::setLogLevel(urcl::LogLevel::DEBUG);
  URCL_LOG_DEBUG("Logging debug message");
  return 0;
}

贡献指南

  • 支持 pre-commit 进行代码格式化。
  • 所有 Pull Request 需要通过管道测试。
  • 公共方法的参数需有文档说明。

总结功能和用法

该库提供了几种接口来与 Universal Robots 机器人进行通信,包括基础的主接口、RTDE 接口、仪表盘接口,以及自定义的运动指令流。通过这些接口,用户可以实现对机器人实时数据的读取和运动控制。该库依赖 POSIX 线程和 Linux 套接字,因此需要在 Linux 环境下使用。开发者可以通过生产者-消费者模式来管理通信数据的流动,并根据需要进行实时调度和日志记录配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值