はじめに
私がロボットに関して興味を持っており,ロボットの動かし方を学んだため,本記事にまとめる.
ロボットに関しての理論や実装をWebサイトで探していたが,見つけることができなかったため,自作しようと考えた.
また,私が学生時代にロボットの経路生成に関して研究をしており,経路生成を実施する前に,ロボットの動かし方を理解するのが難しかった経験をしたため,記事を投稿しようと思った.
ロボットを動かすために,三角関数(sin, cos, tan)を使用する.以下サイトはわかりやすいです.
・https://www.meikogijuku.jp/meiko-plus/study/trigonometric-function.html
本記事に記載すること
・2軸,3軸,6軸ロボットアームの動かし方をまとめる
・私が作成したロボットの動かし方に関する記事の概要およびリンクと将来作成したい記事をまとめる
本記事では記載できないこと (将来作成したい記事)
・冗長ロボット(手先の位置・姿勢の次元数よりも関節数が多いロボットを指す),移動ロボット,ヒューマノイドロボットなど
・Pybullet(Pythonで動く物理シミュレーション),ROS(ロボットを動かすプラットフォーム),Unityによるロボット制御
経路生成手法(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)$となる.
2軸ロボットアームの動かし方に関する記事の概要およびリンク
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 |
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})$となる.
3軸ロボットアームの動かし方に関する記事の概要およびリンク
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 |
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}$で回転する.
関節$1$ ~ $6$全部が角度$0[rad]$の時は,下図のようになる6軸ロボットアームを考える.
(全関節の座標系がワールド座標系と同じになる)
6軸ロボットアームの動かし方に関する記事の概要およびリンク
6軸ロボットアームの動かし方に関する記事の概要およびリンクを下表にまとめる.
作成した記事の概要 | リンク |
---|---|
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 |
将来作成したい記事
将来作成したい記事を下表にまとめる.
将来作成したい記事の内容 |
---|
Pybullet(Pythonで動く物理シミュレーション)上でロボットを動かす |
ROS(ロボットを動かすプラットフォーム)上でロボットを動かす |
Unity上でロボットを動かす |
ロボット * 機械学習 |
冗長ロボット(手先の位置・姿勢の次元数よりも関節数が多いロボットを指す)の動かし方 |
移動ロボットの動かし方 |
ヒューマノイドロボットの動かし方 |
おわりに
本記事では,ロボットの動かし方に関する自作記事をまとめた
次記事では,下記内容を実装していきます.
・本記事の"将来作成したい記事"に記載した記事を作成する
・機械学習や統計学に関する記事を作成する