HumansXドキュメントセンター 公式サイトへ ↗

ロボットアームアルゴリズムインターフェース

user_arm.py はロボットアームの運動学制御プログラムです。以下に API の使い方を示します。

1. コンストラクタ

__init__()

機能 :ロボットアームのパラメータを初期化し、リンク長を設定します

パラメータ :なし

戻り値 :なし

使用例 :

python

arm = FourDofArm()
print(f"L2连杆长度: {arm.L2}mm, L3连杆长度: {arm.L3}mm")

2. 角度変換メソッド

angle_to_duty_cycle(angle)

機能 :角度値を PWM デューティ比に変換します(サーボ制御用)

パラメータ :

  • angle (float):角度値。範囲は 0~270 度

戻り値 :

  • float:PWM デューティ比の値(2.5~20.0ms)

使用例 :

python

duty_cycle = arm.angle_to_duty_cycle(180)
print(f"180度对应的PWM占空比: {duty_cycle}ms")  # 输出: 15.0ms

3. グリッパー制御メソッド

grap(grap_value)

機能 :ロボットアームのグリッパーの開閉を制御します

パラメータ :

  • grap_value (float):グリッパーの開閉角度値(0~270 度)

戻り値 :なし(変換後の PWM デューティ比を直接出力します)

使用例 :

python

arm.grap(135)  # 控制夹爪到135度位置
# 输出: raw: 12.5

4. 逆運動学計算メソッド

get_coordinate(x1, y1, z1)

機能 :逆運動学計算を行い、デカルト座標を関節角度に変換します

パラメータ :

  • x1 (float):X 座標(mm)。ロボットアームが X 方向に移動する距離を表します。
  • y1 (float):Y 座標(mm)。ロボットアームが Y 方向に移動する距離を表します。
  • z1 (float):Z 座標(mm)。ロボットアームが Z 方向に移動する距離を表します。

戻り値 :

  • tuple:(alpha, theta, beta, gamma) 4 つの関節角度値(度)

使用例 :

python

# 计算目标位置的关节角度
angles = arm.get_coordinate(150, 80, 100)
alpha, theta, beta, gamma = angles
print(f"关节角度: α={alpha}°, θ={theta}°, β={beta}°, γ={gamma}°")

5. 直線補間による軌道計画メソッド

linear_interpolation(start_x, start_y, start_z, end_x, end_y, end_z, num_points)

機能 :直線補間動作により、滑らかな直線軌道を実現します

パラメータ :

  • start_x, start_y, start_z (float):始点座標(mm)。ロボットアームの初期位置 X,Y,Z です。
  • end_x, end_y, end_z (float):終点座標(mm)。ロボットアームが到達すべき目標位置 X,Y,Z です。
  • num_points (int):補間点の数(動作の滑らかさを決定します)。ロボットアームのサーボ回転の分割点数で、値が大きいほどロボットアームの回転は遅くなり、値が小さいほど速くなります。

戻り値 :なし

使用例 :

python

# 从原点直线运动到目标位置,分20个插补点
arm.linear_interpolation(0, 0, 0, 150, 80, 100, 20)

# 在Z轴方向做垂直运动
arm.linear_interpolation(100, 50, 50, 100, 50, 150, 10)

6. 円弧補間による軌道計画メソッド

arc_interpolation(start_x, start_y, end_x, end_y, radius, num_points, grap_value)

機能 :円弧補間動作(XY 平面内、Z の高さは固定)

パラメータ :

  • start_x, start_y (float):始点座標(mm)。ロボットアームの円弧補間動作の開始位置の x、y 値です。
  • end_x, end_y (float):終点座標(mm)。ロボットアームの円弧補間動作で到達すべき目標位置の x、y です。
  • radius (float):円弧の半径(mm)。ロボットアームの円弧補間動作の円弧半径です。
  • num_points (int):補間点の数
  • grap_value (float):グリッパーの角度値。アーム先端のグリッパーの角度を制御します。この値は現在使用されていないため、無視してかまいません。

戻り値 :なし

使用例 :

python

# 绘制半径为80mm的圆弧,同时控制夹爪
arm.arc_interpolation(0, 0, 100, 50, 80, 30, 90)

# 半圆形运动
arm.arc_interpolation(-50, 0, 50, 0, 50, 20, 135)

7. 円弧の中心座標を計算するメソッド

calculate_circle_center(x1, z1, x2, z2, radius, reverse)

機能 :円弧動作の中心座標を計算します

パラメータ :

  • x1, z1 (float):始点座標(mm)
  • x2, z2 (float):終点座標(mm)
  • radius (float):円弧の半径(mm)
  • reverse (bool):方向フラグ。True で逆方向

戻り値 :

  • tuple (center_x, center_z)。計算できない場合は (None, None) を返します

使用例 :

python

# 计算圆弧圆心
center_x, center_z = arm.calculate_circle_center(0, 0, 100, 50, 80, False)
if center_x is not None:
    print(f"圆心坐标: ({center_x}, {center_z})")
else:
    print("无法计算圆心,半径可能太小")