littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于C++的实时机器人轨迹生成系统

项目简介

本项目基于C++开发,以Ruckig库为核心,能够实现机器人和机器的实时轨迹生成。该系统可使机器人和机器对传感器输入做出即时反应,能从任意初始状态出发,在速度、加速度和 jerk 约束下,计算到目标点(包含位置、速度和加速度)的轨迹。除了目标状态,还支持定义中间位置实现路径点跟随,对于状态到状态的运动能保证时间最优解,在有中间路径点时相比传统方法可显著加快轨迹计算。

项目的主要特性和功能

  1. 多场景支持:支持从任意初始状态计算到目标点的轨迹,可定义中间位置实现路径点跟随。
  2. 时间最优:状态到状态运动保证时间最优解,有中间路径点时联合计算路径及其时间参数化,使轨迹更快。
  3. 丰富的参数设置:可设置最大/最小速度、加速度、jerk,以及控制接口、同步行为、轨迹最小持续时间等。
  4. 多种使用方式:支持在线和离线轨迹计算,有跟踪接口可实现对任意信号的跟踪。
  5. 灵活的自由度处理:支持固定和动态数量的自由度,可使用自定义向量类型。
  6. 输入验证:计算前验证输入有效性,确保生成轨迹在运动学限制范围内。

安装使用步骤

安装

C++ 库

Ruckig 无依赖(测试除外),使用 CMake 构建步骤如下: bash mkdir -p build cd build cmake -DCMAKE_BUILD_TYPE=Release.. make 若要系统级安装,使用 (sudo) make install。也可将 Ruckig 作为项目目录包含,在父 CMakeLists.txt 中调用 add_subdirectory(ruckig)。若要启用在线 API,传递 BUILD_ONLINE_CLIENT 标志给 CMake。

Python 模块

可从 PyPI 安装 Ruckig 社区版: bash pip install ruckig 使用 CMake 时,可通过 BUILD_PYTHON_MODULE 标志构建 Python 模块。若只对 Python 模块感兴趣,可通过 pip install. 构建和安装。

使用

基本轨迹生成

```cpp Ruckig<6> ruckig {0.001}; // 自由度数量;控制周期(秒) InputParameter<6> input; input.current_position = {0.2,...}; // 设置其他输入参数 OutputParameter<6> output;

while (ruckig.update(input, output) == Result::Working) { // 使用新状态,如 robot->setJointPositions(output.new_position); output.pass_to_input(input); } ```

中间路径点

cpp Ruckig<6> otg {0.001, 8}; InputParameter<6> input {8}; OutputParameter<6> output {8}; input.intermediate_positions = { {0.2,...}, {0.8,...}, };

离线计算

cpp result = ruckig.calculate(input, trajectory); while (ruckig.update(trajectory, output) == Result::Working) { // 使用新状态 }

跟踪接口

cpp Trackig<1> otg {0.01}; // 设置当前状态和运动学约束 for (double t = 0; t < 10.0; t += otg.delta_time) { auto target_state = signal(t); auto res = otg.update(target_state, input, output); // 使用平滑目标运动 output.pass_to_input(input); }

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】