notes
ProjectSalamander

salamander RobStride 4 軸の原点 (SetZero) 姿勢

base_yaw / shoulder_pitch / beam_pitch / wrist_yaw をどの物理姿勢で set_zero するか。URDF の 0 定義、adapter の invert / position_offset との関係、手順

要点: SetZero は「その姿勢でモータ角 = 0」を flash に書く。adapter が position_offset を足して関節値にするので、関節値 = URDF 角になる姿勢を選ぶ。機械ストッパで再現できる姿勢を使い、URDF 0 とのずれは position_offset で吸収するのが精度が出る。

関節ごとの原点姿勢 (2026-09-11 時点の設定)#

関節 (CAN ID)URDF 0 の定義SetZero する物理姿勢adapter 設定その姿勢で読める関節値
base_yaw (1)正面 (home)試合開始 = rest 姿勢 (正面から +Z 側へ 90°)position_offset: +π/2+π/2 (= rest.base_yaw)
shoulder_pitch (2)crank 鉛直crank 鉛直 (現状、目視)offset なし0
beam_pitch (3)beam 水平 = 上げ切りストッパ上げ切り (機械ストッパ)invert: true0
wrist_yaw (4)パッド軸が横向き (base_yaw 0 で Y 方向)パッド横向きoffset なし0

wrist_pitch / pad_stroke は M2006 で壁探し calib (mech_calibration) なので SetZero は不要。

注意#

  • base_yaw: position_offset +π/2 があるので SetZero 姿勢は「正面」ではなく rest 側 90°。正面 (home=0) は SetZero 姿勢から -Z 回りに 90°。rest が反対側 (正面から -Z 側) にある機体なら position_offset を -π/2 にする。
  • shoulder: 鉛直は目視で 2〜3° ずれる (0.40 m 先で 15〜20 mm)。下げ切りストッパ (CAD -45°) で SetZero し position_offset: -0.7853982 を入れると再現性が出る。ストッパ角は実測して合わせる。
  • beam: 上げ切りストッパで SetZero するのが正 (URDF 0)。下げ切り (rest +33.8°) で切ると全域 33.8° ずれる。
  • RS05×3 / RS00×3 は起動時にモータ角 ±π を関節 ±π/3 で正規化するので、起動時姿勢は SetZero 姿勢の ±60° 以内に置く。

手順#

# 1. adapter / launch を全部止める (同じ CAN を二重に開かない)
# 2. 各関節を上の姿勢に手で保持
ros2 launch fibril_robstride_adapter set_zero_all.launch.xml            # 4 軸一括
ros2 launch fibril_robstride_adapter set_zero_all.launch.xml \
  base_yaw:=false shoulder_pitch:=false wrist_yaw:=false                  # beam だけ
# 3. 4 軸とも "Set zero and save complete" → Ctrl-C → launch 再起動
ros2 topic echo /salamander/joint_states --once                          # 上表の値になっているか

関連#

  • /docs/project/salamander/beam-shoulder-coupling
  • docs/base_yaw_zero_calibration.md (リポジトリ内)
最終更新:

On this page