项目简介
本项目基于C++开发,以Ruckig库为核心,能够实现机器人和机器的实时轨迹生成。该系统可使机器人和机器对传感器输入做出即时反应,能从任意初始状态出发,在速度、加速度和 jerk 约束下,计算到目标点(包含位置、速度和加速度)的轨迹。除了目标状态,还支持定义中间位置实现路径点跟随,对于状态到状态的运动能保证时间最优解,在有中间路径点时相比传统方法可显著加快轨迹计算。
项目的主要特性和功能
- 多场景支持:支持从任意初始状态计算到目标点的轨迹,可定义中间位置实现路径点跟随。
- 时间最优:状态到状态运动保证时间最优解,有中间路径点时联合计算路径及其时间参数化,使轨迹更快。
- 丰富的参数设置:可设置最大/最小速度、加速度、jerk,以及控制接口、同步行为、轨迹最小持续时间等。
- 多种使用方式:支持在线和离线轨迹计算,有跟踪接口可实现对任意信号的跟踪。
- 灵活的自由度处理:支持固定和动态数量的自由度,可使用自定义向量类型。
- 输入验证:计算前验证输入有效性,确保生成轨迹在运动学限制范围内。
安装使用步骤
安装
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】