はじめに
PyBullet (Python上で動く物理シミュレータ) を使用して,ロボットアームを可視化して,動かしたい.
前記事では,PyBullet (Python上で動く物理シミュレータ) で3軸ロボットアームを可視化し,スライダーを用いて関節角度を簡単に変更できるようにした.
本記事では,下図のような3軸ロボットアームを動かす(下図はPyBullet上の3軸ロボットアームである).
下図の赤枠内のスライダーを動かすことによって,ロボットの手先位置を自由に設定して,ロボットを動かす.

本記事で実装すること
- PyBullet で3軸ロボットアームの手先位置を設定することで,動かす
本記事では実装できないこと (将来実装したい内容)
- PyBullet で3軸ロボットアームを使用して,干渉物が存在する環境下での経路生成(経路生成手法としてRRTを採用)
動作環境
- macOS Sequoia (バージョン15.5)
- Python3 (3.13.3)
- PyBullet (3.2.5) (物理シミュレータ)
- Numpy (2.3.0) (数値計算用ライブラリ)
PyBullet のインストール方法
PyBullet のインストール方法については前記事にて,説明したため,割愛する.
3軸ロボットアームの定義
本記事で動かしたい,3軸ロボットアームについて説明する.
本記事では,下図のような3軸ロボットアームを考えている.
$\theta_{1}$はZ軸方向, $\theta_{2}, \theta_{3}$ はY軸方向へ回転する.

上図のパラメータ $l_{1}, l_{2}, l_{3}, m_{1}, m_{2}, m_{3}$ の値は下表として,考える(値は適当である).
| パラメータ名 | 概要 | 値 |
|---|---|---|
| $l_{1}$ | リンク$1$の長さ | 1.0 [m] |
| $l_{2}$ | リンク$2$の長さ | 1.0 [m] |
| $l_{3}$ | リンク$3$の長さ | 1.0 [m] |
| $m_{1}$ | リンク$1$の質量 | 1.0 [kg] |
| $m_{2}$ | リンク$2$の質量 | 1.0 [kg] |
| $m_{3}$ | リンク$3$の質量 | 1.0 [kg] |
PyBulletで,上図のロボットを使用するために,URDF (Unified Robot Description Format)を作成する必要がある.
URDFソースコード
今回使用する,URDFのソースコードについて説明する.
| ファイル名 | 概要 |
|---|---|
| robot_3dof.urdf | 3軸ロボットアームの定義 |
PyBulletで,3軸ロボットアームを使用するためのURDF作成に関しては,前記事にて説明したため,割愛する.
PyBulletの使用方法
Pythonの物理シミュレータであるPyBulletの使用方法について説明する.
下記リンクのPyBullet公式で調べながら,PyBulletを使用している.
上記リンクを開くと,下図のようなサイトに飛ぶ.使用方法を調べるときは,下図の赤枠内の「PYBULLET QUICKSTART GUIDE」タグをクリックする.

「PYBULLET QUICKSTART GUIDE」タグをクリックすると,下図のようなドキュメントを見ることができる.基本的には,ドキュメントに記載されている関数の使用方法を見て,ソースコードを作成している.

PyBulletの関数の引数や戻り値をもっと知りたいのでしたら,上記ドキュメントを見た方がわかりやすいです.
全体のソースコード
ソースコードとして,下表の3ファイルを作成する.各ファイルの詳細はGitHubリンクより確認できます.
| ファイル名 | 概要 |
|---|---|
constant.py |
定数の定義 |
main.py |
全体的なメイン処理 |
pybullet_robot.py |
PyBulletでロボットを動かす |
PyBulletでロボットを動かす
上記にて,ロボットのURDF,ソースコードを説明した.
main.pyファイルを実施することによって,PyBullet上のロボットを動かしていく.
実際に動かした動画を下図に記載した.

スライダー内のロボット手先位置を変更することで,シミュレータ上のロボットアームも動いていることがわかる.
また,スライダーにてロボットの手先位置が届かない範囲を設定しても,問題なくロボットが動いていることがわかる.特異点にロバストは逆運動学の設計となっているがわかる.
6軸ロボットアームにも応用できそうだ.
おわりに
本記事では,Pythonを使用して,下記内容を実装しました
- PyBullet で使用する3軸ロボットアームのURDFの作成方法
- PyBullet で3軸ロボットアームの手先位置をスライダーで設定することよって,ロボットを動かす
次記事では,下記内容を実装していきます.