0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PyBulletで3軸ロボットアームを動かす Part2 (手先位置を自由に設定)

0
Last updated at Posted at 2025-07-26

はじめに

PyBullet (Python上で動く物理シミュレータ) を使用して,ロボットアームを可視化して,動かしたい.
前記事では,PyBullet (Python上で動く物理シミュレータ) で3軸ロボットアームを可視化し,スライダーを用いて関節角度を簡単に変更できるようにした.

本記事では,下図のような3軸ロボットアームを動かす(下図はPyBullet上の3軸ロボットアームである).
下図の赤枠内のスライダーを動かすことによって,ロボットの手先位置を自由に設定して,ロボットを動かす.
3DoF_Image_IK.png

本記事で実装すること

  • 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軸方向へ回転する.
3DoF_URDF1.drawio.png

上図のパラメータ $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公式.png

「PYBULLET QUICKSTART GUIDE」タグをクリックすると,下図のようなドキュメントを見ることができる.基本的には,ドキュメントに記載されている関数の使用方法を見て,ソースコードを作成している.
PyBulletドキュメント.png
PyBulletの関数の引数や戻り値をもっと知りたいのでしたら,上記ドキュメントを見た方がわかりやすいです.

全体のソースコード

ソースコードとして,下表の3ファイルを作成する.各ファイルの詳細はGitHubリンクより確認できます.

ファイル名 概要
constant.py 定数の定義
main.py 全体的なメイン処理
pybullet_robot.py PyBulletでロボットを動かす

PyBulletでロボットを動かす

上記にて,ロボットのURDF,ソースコードを説明した.
main.pyファイルを実施することによって,PyBullet上のロボットを動かしていく.
実際に動かした動画を下図に記載した.
PyBulletと3軸ロボットアーム(逆運動学).gif

スライダー内のロボット手先位置を変更することで,シミュレータ上のロボットアームも動いていることがわかる.
また,スライダーにてロボットの手先位置が届かない範囲を設定しても,問題なくロボットが動いていることがわかる.特異点にロバストは逆運動学の設計となっているがわかる.
6軸ロボットアームにも応用できそうだ.

おわりに

本記事では,Pythonを使用して,下記内容を実装しました

  • PyBullet で使用する3軸ロボットアームのURDFの作成方法
  • PyBullet で3軸ロボットアームの手先位置をスライダーで設定することよって,ロボットを動かす

次記事では,下記内容を実装していきます.

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?