こんにちは、小銭です。インターンシップで書籍「ROS 2とPythonで作って学ぶAIロボット入門」を読み進めながら実際にアームロボットCRANE+ V2を動かしています。前回はCRANE+ V2のセットアップをしました。
今回はアームロボットの基礎知識、運動学を学びました。
インターンシップで使用したもの
8月30日に発売された書籍「ROS 2とPythonで作って学ぶAIロボット入門」にてアールティが販売するアームロボットCRANE+ V2を教材としてご紹介いただきました。
CRANE+ V2について詳しくは下記の製品ページをご覧ください
アームロボットの基礎知識
アームロボットを扱う6章の冒頭では、アームロボットの用語や構造について詳しく説明していました。具体的な関節や機構の種類についても紹介されていたのですが、人の関節のような回転関節だけでなく、真っ直ぐ動く直動関節というものを初めて知りました。
基礎知識を学ぶ際に、simple_armという関節が2つ(2自由度)のアームを動かせるサンプルコードが付属していました。
サンプルコードを実行すると、RVizという可視化ツールを用いてアームの動きが見れます。図だけでなく可視化ツールでアームの動きが見れるのはとても理解しやすかったです!
以下の動画では画面左にあるスライドバーで関節角を操作し、簡易的なアームを動かしています。
アームロボットの運動学
アームロボットが自分の姿勢を把握したり、ものを掴んで移動するときに運動学はとても便利です。
書籍では順運動学と逆運動学について解説していました。順運動学を解くと関節角から手先の位置や姿勢の計算ができます。
逆運動学を解くと目標の位置に手先を動かすための関節角が計算できます。
他には、位置や姿勢の表現方法、simple_armを用いた順運動学と逆運動学の計算方法、速度の運動学について証明と補足、位置の順運動学と逆運動学についての途中計算や図解など様々なことが本に載っていて理解しやすかったです。
CRANE+ V 2でサンプルプログラムを動かそう
実際に順運動学と逆運動学を用いているサンプルプログラムをCRANE+ V2で動かしてみました。動画内で動かしているプログラムは、順運動学と逆運動学が学べるサンプルプログラムです。
順運動学
順運動学のサンプルプログラムはキー入力により関節角を好きな方向に動かすことができます。順運動学を用いることで関節角から手先の位置と姿勢を計算して端末に結果が出力されます。そのとき関節角が設定した範囲外に移動する指示が出た場合、範囲外と端末に出力します。
逆運動学
逆運動学のサンプルプログラムはキー入力により、手先の位置や姿勢を好きな方向に移動させることができます。手先の位置が可動範囲外に出るか、アームの構造上取れない姿勢になる指示が出た場合、逆運動学の解がないと端末に出力されます。
2つのサンプルプログラムを実行してみて、手先を目標位置へ動かすことの難しさを実感できました。
順運動学のサンプルでは関節を個別に動かします。そのため、手先を目標位置へ動かすには、各関節を微調整しなければなりません。
一方、逆運動学サンプルでは、関節角度を自動的に計算してくれるため、手先を簡単に動かせました。その反面、関節がどのように動くかわからないため、アームが障害物にぶつかったり、そもそも逆運動学が解けなかったりなど、逆運動学ならではの課題があると分かりました。
おわりに
今回は、CRANE+ V2を使いアームロボットの基礎知識、アームロボットの運動学について学びました。
私は大学の課外活動で(Robocup@Home Education)ロボットを動かしています。
これまではロボットを動かす際に、いくつもの関節角度を微調整しながら手先を動かしていました。
今思うと、大変な作業をやっています…。
インターンシップが終わったらすぐに運動学をロボットに取り入れます!それほど運動学の良さを知りました!
次回は、ROS 2のアクション機能や他のノードから指令を受けて動作するサンプルプログラムをいくつか動かしてみたいと思います。