こちらの記事は,ロボティクスの辞書的な記事(にしたい記事)のコンテンツです.
お疲れ様です。秋並です。
この記事では「ロボットアームの動作計画」について解説します。
動作計画とは
ロボットアームの動作計画 (motion planning) とは
- 障害物と衝突しないような「初期姿勢」から「目標姿勢」に至る動作を生成すること
になります。1
動作計画の解法
動作計画には、以下のような幾つかの解法があります。
各解法については、説明が長くなるのでそれぞれ別の記事で説明します。
- タスク空間(task space) における動作計画:「タスク空間における動作計画」では、タスク空間上で「初期手先位置$\vec{P}_{\mathrm{start}}$」と「目標手先位置$\vec{P}_{\mathrm{goal}}$」を結ぶ軌道を求める
- コンフィギュレーション空間(Configuration space) を用いた動作計画:コンフィギュレーション空間上で「初期関節角度$\vec{Q}_{\mathrm{start}}$」と「目標関節角度$\vec{Q}_{\mathrm{goal}}$」を結ぶ軌道を求める
- 深層学習による動作計画
各手法のメリット·デメリット
各手法のメリット·デメリットは以下のようになります。
深層学習による動作計画については様々な手法があり、単純に比較できないので割愛します
タスク空間における動作計画
- メリット
- タスク空間における軌道を求めるので、人間が任意の手先軌道を指定することが可能(動作計画法を用いることで、自動的に軌道を求めることも可能)
- デメリット
- 逆運動学を何度も解く必要がある(手先軌道の長さ分)
コンフィギュレーション空間上を用いた動作計画
- メリット
- コンフィギュレーション空間上で軌道を求めるため、逆運動学を計算する回数が少なくて済む(「初期関節角度$\vec{Q}_{\mathrm{start}}$」と「目標角度$\vec{Q}_{\mathrm{goal}}$」の2回だけでよい)
- デメリット
- コンフィギュレーション空間上で軌道を求めるため、タスク空間においてどのような手先軌道になるか、実際に動かしてみないと分からない
「タスク空間における動作計画」と「コンフィギュレーション空間を用いた動作計画」を比較すると下動画のようになります。
どちらの手法が良いかは一概には言えませんが、個人的なイメージとしては以下のような使い分けになるかなと思っています。
- タスク空間における動作計画:任意の軌道を描くように手先位置を制御したい時
- 例:ペンを持って絵を描く
- コンフュギュレーション空間を用いた動作計画:単に、障害物にぶつからないように「初期手先位置$\vec{P}]_{\mathrm{start}}$」から「目標手先位置$\vec{P}_{\mathrm{goal}}$」まで移動させたい時
- 例:A地点からB地点までぶつからないように物を運びたい
ちなみに、ROSで採用されているロボットアームの動作計画用フレームワークである「MoveIt!」では「コンフィギュレーション空間を用いた動作計画」が採用されています。
最後に
今回は、ロボットアームの動作計画の概要について説明しました。
次回は、「タスク空間における動作計画」の具体的な手順について解説します。
この記事が少しでも皆さんのお役に立てれば幸いです。
-
「動作計画」という言葉は「動作を計画する」という割と大雑把な単語なので、書籍や論文によっては意味合いが若干異なることがあります。今回紹介している「動作計画」の定義は一般的ではあると思いますが、あくまでこの記事内での定義であるということにご注意ください。 ↩