7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ロボットの自作記事まとめ

Last updated at Posted at 2025-07-05

はじめに

私がロボットに関して興味を持っており,ロボットの動かし方を学んだため,本記事にまとめる.
ロボットに関しての理論や実装をWebサイトで探していたが,見つけることができなかったため,自作しようと考えた.
また,私が学生時代にロボットの経路生成に関して研究をしており,経路生成を実施する前に,ロボットの動かし方を理解するのが難しかった経験をしたため,記事を投稿しようと思った.
ロボットを動かすために,三角関数(sin, cos, tan)を使用する.以下サイトはわかりやすいです.
https://www.meikogijuku.jp/meiko-plus/study/trigonometric-function.html

本記事に記載すること

・2軸ロボットアームの動かし方をまとめる
・3軸ロボットアームの動かし方をまとめる
・6軸ロボットアームの動かし方をまとめる
・私が作成したロボットの動かし方に関する記事の概要およびリンクと将来作成したい記事をまとめる

本記事では記載できないこと (将来作成したい記事)

・冗長ロボット (手先の位置・姿勢の次元数よりも関節数が多いロボットを指す)
・移動ロボット (具体例:お掃除ロボット)
・ヒューマノイドロボットなど
・Unity (ゲームエンジン) によるロボット制御
・ROS (ロボットを動かすプラットフォーム) によるロボット制御

経路生成手法(RRT)のアルゴリズム

ロボットと組み合わせる経路生成手法に関しては,本記事ではなく下記リンク先でまとめた.
https://qiita.com/haruhiro1020/items/000b3287fce082ae4283

2軸ロボットアームに関して

2軸ロボットアームに関しての動かし方をまとめる.
下図のような2軸ロボットアームを想定している.
リンク1はz軸に$\theta_{1}$回転し,リンク2はz軸に$\theta_{2}$回転する,2軸ロボットアームを考えている (z軸とは,下図のx軸とy軸との直角な方向であり,見ている図はz軸から見ている図である).
$\theta_{1} = 0$かつ$\theta_{2} = 0$の時,ロボットの手先位置は$(x, y ) = (l_{1} + l_{2}, 0)$となる.
ForwardKinematics_box.drawio.png

2軸ロボットアームの動かし方に関する記事の概要およびリンク

記事に関しては,可視化ツールによって,大きく下記の2グループに分けることができる.
・グループ1:matplotlib (Python)
・グループ2:PyBullet (Pythonの物理シミュレータ)

matplotlibによる記事の概要およびリンク

可視化ツールが matplotlib による,2軸ロボットアームの動かし方に関する記事の概要およびリンクを下表にまとめる.

作成した記事の概要 リンク
2軸ロボットアームの順運動学 (関節角度から手先位置を算出) https://qiita.com/haruhiro1020/items/4529e648161beac7754f
2軸ロボットアームの逆運動学 (手先位置から関節角度を算出) https://qiita.com/haruhiro1020/items/9416bea4b5b0757f4f36
2軸ロボットアームの軌道生成 (干渉物が存在しない環境下での2点間の軌道生成) https://qiita.com/haruhiro1020/items/6deca78f9f1fd868b2c0
2軸ロボットアームの経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/b42725df00e13ddcb5af
同時変換行列(ロボットの軸数が増えても容易な計算)を活用した順運動学 https://qiita.com/haruhiro1020/items/424f5d38861c32038636
微分逆運動学(手先速度から関節速度を算出)による数値解析 https://qiita.com/haruhiro1020/items/0f8c372cfb2988e47cf4
特異点近傍への対処方法 (レーベンバーグ・マルカート法) https://qiita.com/haruhiro1020/items/793eca1f6247fa1bd3f9
経路生成手法の RRT*-Smart による経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/9d9d8f6e8242c7148727
経路生成手法の RRT*-Connect による経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/253764ced728003dba75

PyBullet (Pythonの物理シミュレータ) による記事の概要およびリンク

可視化ツールが PyBullet (Pythonの物理シミュレータ) による,2軸ロボットアームの動かし方に関する記事の概要およびリンクを下表にまとめる.

作成した記事の概要 リンク
2軸ロボットアームを動かす (関節角度を自由に設定) https://qiita.com/haruhiro1020/items/ecc5215234350b663770
2軸ロボットアームを動かす (手先位置を自由に設定) https://qiita.com/haruhiro1020/items/1a564c8b5e0dd7e09024
干渉物が存在する環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/cc29d72d291158fdc1ce
グリッパーを追加して,物体把持 https://qiita.com/haruhiro1020/items/01f661a571c6fe76c551
グリッパーを追加して,干渉物が存在する環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/43ddb8b3c4e379ab7983
単一のカメラとグリッパーを追加して,干渉物が存在しない環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/f66b13b2e12d6584c996
複数のカメラとグリッパーを追加して,干渉物が存在しない環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/e5252faeac3486ce4947

3軸ロボットアームに関して

3軸ロボットアームに関しての動かし方をまとめる.
下図のような3軸ロボットアームを想定している.
$l_{1}$はリンク1の長さ[m],$l_{2}$はリンク2の長さ[m],$l_{3}$はリンク3の長さ[m]です.
$\theta_{1}$は関節1の角度[rad]であり,z軸方向に回転する.
$\theta_{2}$は関節2の角度[rad]であり,y軸方向に回転する.
$\theta_{3}$は関節3の角度[rad]であり,y軸方向に回転する.
$\theta_{1} = 0$かつ$\theta_{2} = 0$かつ$\theta_{3} = 0$の時,ロボットの手先位置は$(x, y, z) = (l_{2} + l_{3}, 0, l_{1})$となる.
ForwardKinematics_V1.drawio.png

3軸ロボットアームの動かし方に関する記事の概要およびリンク

記事に関しては,可視化ツールによって,大きく下記の2グループに分けることができる.
・グループ1:matplotlib (Python)
・グループ2:PyBullet (Pythonの物理シミュレータ)

matplotlibによる記事の概要およびリンク

可視化ツールが matplotlib による,3軸ロボットアームの動かし方に関する記事の概要およびリンクを下表にまとめる.

作成した記事の概要 リンク
3軸ロボットアームの順運動学 (関節角度から手先位置を算出) https://qiita.com/haruhiro1020/items/27c0cf098056dc792ab9
3軸ロボットアームの逆運動学 (手先位置から関節角度を算出) https://qiita.com/haruhiro1020/items/3d72eddc3f623eee963a
3軸ロボットアームの経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/6994a94efaff98d8dae1
同時変換行列(ロボットの軸数が増えても容易な計算)を活用した順運動学 https://qiita.com/haruhiro1020/items/424f5d38861c32038636
微分逆運動学(手先速度から関節速度を算出)による数値解析 https://qiita.com/haruhiro1020/items/c07c2635d03cf31396f6
特異点近傍への対処方法 (レーベンバーグ・マルカート法) https://qiita.com/haruhiro1020/items/793eca1f6247fa1bd3f9
経路生成手法の RRT*-Smart による経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/f6924aebc24d1091641f
経路生成手法の RRT*-Connect による経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/6f7c3f110402bf3e07f0

PyBullet (Pythonの物理シミュレータ) による記事の概要およびリンク

可視化ツールが PyBullet (Pythonの物理シミュレータ) による,3軸ロボットアームの動かし方に関する記事の概要およびリンクを下表にまとめる.

作成した記事の概要 リンク
3軸ロボットアームを動かす (関節角度を自由に設定) https://qiita.com/haruhiro1020/items/2958018f76ae2b9251e7
3軸ロボットアームを動かす (手先位置を自由に設定) https://qiita.com/haruhiro1020/items/89ed03b9a63e2cb9b76b
干渉物が存在する環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/2da9fe2687e0849570ea
グリッパーを追加して,干渉物が存在する環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/d26009d50be190d97368
複数のカメラとグリッパーを追加して,干渉物が存在しない環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/7ddd04e73139370be4f1

6軸ロボットアームに関して

6軸ロボットアームに関しての動かし方をまとめる.
下図のような6軸ロボットアームを想定している.
関節$1$はz軸周りに$\theta_{1}$で回転し,関節$2$はy軸周りに$\theta_{2}$で回転し,関節$3$はy軸周りに$\theta_{3}$で回転し,関節$4$はz軸周りに$\theta_{4}$で回転し,関節$5$はy軸周りに$\theta_{5}$で回転し,関節$6$はz軸周りに$\theta_{6}$で回転する.
ForwardKinematics_V0.drawio.png

関節$1$ ~ $6$全部が角度$0[rad]$の時は,下図のようになる6軸ロボットアームを考える.
(全関節の座標系がワールド座標系と同じになる)
ForwardKinematics_V1.drawio.png

6軸ロボットアームの動かし方に関する記事の概要およびリンク

記事に関しては,可視化ツールによって,大きく下記の2グループに分けることができる.
・グループ1:matplotlib (Python)
・グループ2:PyBullet (Pythonの物理シミュレータ)

matplotlibによる記事の概要およびリンク

可視化ツールが matplotlib による,3軸ロボットアームの動かし方に関する記事の概要およびリンクを下表にまとめる.

作成した記事の概要 リンク
6軸ロボットアームの順運動学 (関節角度から手先位置を算出) https://qiita.com/haruhiro1020/items/a240f8c8e538e75473a3
6軸ロボットアームの逆運動学 (手先位置から関節角度を算出) https://qiita.com/haruhiro1020/items/af1d404b518aa6e13468
6軸ロボットアームの経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/e543294c6912e56e704f
特異点近傍への対処方法 (レーベンバーグ・マルカート法) https://qiita.com/haruhiro1020/items/793eca1f6247fa1bd3f9
姿勢軌道の作成(1軸回転法) https://qiita.com/haruhiro1020/items/9e90b2399ee4d50ffff4
微分逆運動学(手先速度から関節速度を算出)による数値解析 https://qiita.com/haruhiro1020/items/bfb298ccdd124fb89301
経路生成手法の RRT*-Smart による経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/c04e9231424b50db00ed
経路生成手法の RRT*-Connect による経路生成 (干渉物が存在する環境下で,干渉回避を実施する2点間の経路生成) https://qiita.com/haruhiro1020/items/4a6493871ee809234d16

PyBullet (Pythonの物理シミュレータ) による記事の概要およびリンク

可視化ツールが PyBullet (Pythonの物理シミュレータ) による,6軸ロボットアームの動かし方に関する記事の概要およびリンクを下表にまとめる.

作成した記事の概要 リンク
6軸ロボットアームを動かす (関節角度を自由に設定) https://qiita.com/haruhiro1020/items/75d95e1628fdea0743f4
6軸ロボットアームを動かす (手先位置を自由に設定) https://qiita.com/haruhiro1020/items/c22050a879043a2ca026
干渉物が存在する環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/f8c807257a498522f5be
グリッパーを追加して,干渉物が存在する環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/a43e5de8978b040e3719
グリッパーを追加して,干渉物が存在する環境下での経路生成 (RRT-Connect) https://qiita.com/haruhiro1020/items/c09508eee2761ff9380a
グリッパーを追加して,干渉物が存在する環境下での経路生成 (RRT*) https://qiita.com/haruhiro1020/items/2abc337181d2cdb0f919
複数のカメラとグリッパーを追加して,干渉物が存在しない環境下での経路生成 (RRT) https://qiita.com/haruhiro1020/items/82fce1178147eb0abb0c

将来作成したい記事

将来作成したい記事を下表にまとめる.

将来作成したい記事の内容
ROS(ロボットを動かすプラットフォーム)上でロボットを動かす
Unity上でロボットを動かす
ロボット * 機械学習
冗長ロボット(手先の位置・姿勢の次元数よりも関節数が多いロボットを指す)の動かし方
移動ロボットの動かし方
ヒューマノイドロボットの動かし方

おわりに

本記事では,ロボットの動かし方に関する自作記事をまとめた

次記事では,下記内容を実装していきます.
・本記事の "将来作成したい記事" に記載した記事を作成する
・機械学習や統計学に関する記事を作成する

7
6
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
7
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?