ロボットアームの円弧補間制御実験
実験の目的:
- ロボットアームの運動学アルゴリズムを理解します。2. 運動学アルゴリズムを組み合わせたプログラミング制御により、円弧補間制御を実現します。
基本的な動作原理:
-
3 軸ロボットアームの先端に旋回モジュールを追加し、エンドエフェクタのグリッパーの向きを制御できるようにしています。
-
取り付け位置は、回転軸を鉛直下向き、x 軸方向、y 軸方向などにすることができます。ただし、第 4 軸は一般に 3 軸構成では先端を平行に保てないという問題を補うために使われるため、直列 4 軸の第 4 関節は通常、第 2・第 3 関節と同じ回転方向にします。
-
運動学アルゴリズムは必要に応じてダウンロードしてください:直列4自由度ロボットアームの運動学計算.pdf
ハードウェアの準備
ディスプレイ × 1、Bluetooth キーボード・マウス × 1、メインコンソール × 1、サーボ × 4、4 自由度ロボットアーム関連の構造部品、グリッパー × 1
回路接続:
ハードウェアモジュール
ヒント:ハードウェアモジュールの使用説明
ハードウェアシステムの全体組立
電子モジュールの紹介
物理配線
ロボットアームのベースをメインコンソールに固定します。具体的な取り付け方法はハードウェアシステムの全体組立を参照してください。

ソフトウェアの実装
ソースコードとライブラリのダウンロード
ソースコードのリンク:RAI-P4 具身ロボットタスクプランニング総合実習プラットフォーム コース用オープンソースリポジトリ
プログラムコード
コードの構成:

**arm_circar_interpolation**:円弧補間というモーション制御アルゴリズムの実装に特化しています。**arm_control.py**:プロジェクトのメインエントリ(サンプルファイル)で、下位のsrcディレクトリの機能をデモします。**src/arm_control**:ロボットアームのコア機能の実装を含むディレクトリです。下位モジュールは高度にモジュール化されています:custom_font.py:ヒューマンマシンインタラクション(ターミナル表示の装飾)を処理します。serial_section.py:ハードウェア通信(シリアルポートによるデータ送受信)を担当します。servo_section.py:サーボとの通信のプロトコルとコマンドを定義します。user_arm.py:中核となる運動学アルゴリズム(関節角度の計算と補間動作の実現)を含みます。manager.py:マネージャーとして、上記すべてのモジュールの機能を調整・統合します。
具体的なコード:
arm_control.py はロボットアームの円弧補間動作のメインプログラムです。プロジェクトの完全なコードは(ソースコードのリンク)からダウンロードしてください。
"""
--------------------------------------------------------------------------------
功能:机械臂使用直线插补向前向后运动
日期:2025-09-07
--------------------------------------------------------------------------------
"""
import time
import queue
import threading
from src.arm_control import manager
from src.arm_control import custom_font
#=======================================加载自定义字体
time.sleep(1)
font = custom_font.CustomFont()
print(font.color_text(font.compony_msg, color="cyan", bold=True))
print(font.color_text(font.font_load_success, color="green", bold=True))
#=======================================创建机械臂实例,以及机械臂相关参数
arm = manager.RobotManager()
arm.arm_init_action()#机械臂执行初始化动作
print(font.color_text(font.arm_load_success, color="green", bold=True))
detection_red_count = 0
detection_green_count = 0
while True:
try:
arm.arm_cir_move(50.0, 0.0, 160.0, 0.0, 60.0, 100, True)
time.sleep(0.2)
arm.arm_cir_move(160.0, 0.0, 50.0, 0.0, 60.0, 100, False)
time.sleep(0.2)
except KeyboardInterrupt:
print("\n程序退出")
break
except Exception as e:
time.sleep(1) # 出错时等待1秒再继续
arm.arm_init_action()
操作手順:
具体的な操作
-
回路接続:本ドキュメントの回路接続のピン説明に従って配線を完了してください。
-
ロボットアームを初期化角度に調整します。
上腕と前腕の長さを測定して記録します。例えばテスト時には、上腕の実測長は 109cm、前腕の長さは 126cm でした。
プログラムを開き、赤枠部分のコードを修正します:

- ロボットアーム初期化状態でのサーボの角度を記録します。
ロボットアームが初期状態にあるときのサーボ値を記録し、次の表に記入します。以下はテスト時のデータ値です:
| ハードウェア | ロボットアーム初期状態に対応するサーボ値 |
|---|---|
| 旋回台サーボ | 83 |
| 上腕関節 | 100.9 |
| 前腕関節 | 95 |
| グリッパー | 141 |
- 運動学関数 void get_coordinate(float x1,float y1,float z1) の初期化パラメータを同期して更新します。パラメータ 83,100.9,95,141 を図の赤枠部分に反映してください。

- ロボットアームの可動範囲から離れた状態でスイッチを入れ、プログラムを実行します。
注意:ロボットアームの動作が速いと先端の慣性が大きくなります。起動時は、ぶつからないようロボットアームの球面状の可動範囲に入らないようにしてください。
再現時の注意点
-
再現する際は、各関節サーボの出力軸に取り付けるサーボホーンの向きが、実物写真やデモ動画と一致していることに注意してください。これはロボットアーム各関節の回転方向に影響し、運動学式における方向と関係します。向きが間違っていると、ある関節の回転角度や動作方向が大きくずれることになります。
-
ロボットアームの初期化状態では、各関節の角度をできるだけサーボの中央付近の範囲(80~150)に収めることを推奨します。この範囲外の場合は、構造の分解・組み直しによって調整することを推奨します。これはロボットアームの可動範囲に影響します。サーボの回転範囲は 0~270 度で中央値は 135 のため、この付近にすると関節サーボの可動範囲が最大になります。中央値の範囲が不適切だとロボットアームの到達可能な点が減少し、本来到達できるはずの点が運動学式で計算した結果解なしとなり、理論上の到達点に届かなくなります。
具体的な操作
- ターミナルからリモート接続します。ターミナルに次のコマンドを入力して Enter を押します
ssh sunrise@192.168.8.111
パスワードは sunrise です。パスワードを入力して Enter を押すとログインが完了します。
- 指定のディレクトリに移動してターミナルを開き、次のように入力します:
cd ~/Desktop/Arm_Experiment/arm_circular_interpolation
上記のターミナルで次のように入力し、ロボットアームの円弧補間動作プログラムを実行します:
python arm_control.py
- ロボットアームが円弧補間アルゴリズムに従って動作するかを観察します。
テスト時の操作コマンドは下図のとおりです。必要に応じて参照してください。

実験結果:
4 自由度ロボットアームが円弧補間動作を行います。
インターフェースドキュメント
さらに詳しくは、以下の API インターフェースドキュメントを参照して二次開発や最適化を行うことができます。
ロボット本体インターフェースの全体紹介
お問い合わせ
資料のダウンロード・技術サポートについては、HumansX株式会社までお問い合わせください。
ドキュメント