# 睿尔曼机械臂源码参数调姿态 Demo

本文档说明如何使用 `realman_joint_pose_config_demo` 在 CLion 中通过修改 C++ 源码顶部参数来调整机械臂姿态。

## 文件位置

| 文件 | 说明 |
| --- | --- |
| `examples/realman_joint_pose_config_demo.cpp` | 源码参数调姿态示例 |
| `CMakeLists.txt` | 已注册 `realman_joint_pose_config_demo` target |
| `CMakePresets.json` | 已注册 Debug/Release 构建 preset |

## CLion 运行

1. 用 CLion 打开项目：

   ```bash
   /home/mashiro/project/linkerhand-cpp-sdk
   ```

2. 点击 `Reload CMake Project`。
3. 打开文件：

   ```text
   examples/realman_joint_pose_config_demo.cpp
   ```

4. 修改源码顶部的“用户主要修改区”。
5. 运行 target：

   ```text
   realman_joint_pose_config_demo
   ```

## 主要参数

默认推荐使用相对关节偏移模式：

```cpp
constexpr TargetMode kTargetMode = TargetMode::kRelativeJointOffset;

constexpr std::array<float, ARM_DOF> kRelativeJointOffsetsDeg = {
    0.0F, 5.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,
};
```

这表示在当前姿态基础上让 `J2 +5°`，其他关节不动。

如果要改成其他姿态，例如 `J2 +3°`、`J4 -2°`：

```cpp
constexpr std::array<float, ARM_DOF> kRelativeJointOffsetsDeg = {
    0.0F, 3.0F, 0.0F, -2.0F, 0.0F, 0.0F, 0.0F,
};
```

速度参数：

```cpp
constexpr int kSpeedPercent = 10;
```

安全限幅：

```cpp
constexpr float kMaxSingleJointDeltaDeg = 10.0F;
constexpr int kMaxAllowedSpeedPercent = 20;
```

程序会拒绝超过限幅的动作，避免误把机械臂一次移动太大。

## 绝对关节角模式

需要直接给目标关节角时，改为：

```cpp
constexpr TargetMode kTargetMode = TargetMode::kAbsoluteJointAngles;

constexpr std::array<float, ARM_DOF> kAbsoluteTargetJointsDeg = {
    0.0F, 5.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F,
};
```

首次使用绝对模式前，建议先运行一次程序，看输出的 `Current joints`，把当前角度复制到 `kAbsoluteTargetJointsDeg`，然后只小幅修改其中一个或两个关节。

## 是否回到起点

默认移动到目标姿态后停在目标位置：

```cpp
constexpr bool kReturnToStartAfterMove = false;
```

如果只是测试动作，希望执行后回到起始姿态：

```cpp
constexpr bool kReturnToStartAfterMove = true;
```

## 只预览不运动

如果只想检查目标角度，不发送运动指令：

```cpp
constexpr bool kDryRunOnly = true;
```

程序会打印当前关节角和目标关节角，但不会调用 `rm_movej`。

## 命令行构建

Debug：

```bash
cd /home/mashiro/project/linkerhand-cpp-sdk
cmake --preset clion-debug
cmake --build --preset realman-joint-pose-config-debug
```

Release：

```bash
cd /home/mashiro/project/linkerhand-cpp-sdk
cmake --preset clion-release
cmake --build --preset realman-joint-pose-config-release
```

## 安全建议

- 优先使用 `kRelativeJointOffset`。
- 首次调姿态时，每个关节变化控制在 `1°..5°`。
- 速度先保持 `5..10`。
- 每次只改一个或两个关节，确认方向和空间余量后再组合动作。
- 运行前确认工作空间无人，急停按钮可触达。
