ROSとMoveIt!は,ロボットアームのための非常に強力なツールです.ROSの基本機能とros_controlの枠組みにより,どのようなロボットアームも統一的なインターフェースで動かすことができます.その上で動くMoveIt!は,障害物の回避や拘束条件を考慮したロボットアームの動作計画を,色々なアルゴリズムを使って簡単に行うことができます.ROS-Industrialレポジトリを見ると,色々な産業用ロボットアームをROSとMoveIt!を使って動作させるためのパッケージが,すでに公開されています.これらの機能は,産業用ロボットアームをROSで使おうという大きな動機となっています.
しかし実際に使ってみると,産業用ロボットアームがあたりまえに備えている機能が,逆にROSには無いことに気づくのではないでしょうか? それは,ジョグ動作とティーチングです.
ジョグ動作というのは,ロボットの関節や手先を実際にちょっとずつ動かして,目標のロボット姿勢に到達させる機能です.ジョグ動作により,ロボットを目視しながらロボットの関節角度の微小な変位量を連続して与えて動かすことができ,ワークとの位置合わせなどでは必須の機能です.MoveIt!のrvizプラグインはGUI(Interactive Marker)でロボットの手先の目標位置姿勢をマウスで指定することができます.しかし,ロボットが仕事をする姿勢は実際にロボットを環境に置いて動かして指定するのですが,やってみるとrvizプラグインでは思い通りに動かすのは少し,いえ,かなり難しいです.
ティーチングというのは,目的のロボットの姿勢を覚えさせた上で,目的のタスクに対してその到達の順番や条件を記述するプログラミングのような機能です(非常に簡略化した説明です).
市販の産業用ロボットでは,コントローラとティーチングペンダントにこれらの機能が内蔵されているのが普通です.そのため,そちらの機能を使うことで補うことも出来ますが,たとえばROSネイティブなロボットではそのような機能が無いため,ロボットになにかタスクをやらせようとした時にいきなり困ってしまうことになります.
“jog_controll”メタパッケージは,ROS及びMoveIt!に,ジョグ動作の機能を追加します.
関節に微小な関節角度を与えて動作させる関節ジョグ(joint jog)と,手先や目標座標系に位置と姿勢の微小な変位を与えて動作させるフレームジョグ(frame jog)の2つをサポートしています.
“jog_msgs”パッケージは,ジョグ動作の指令値を与えるための新たなメッセージパッケージです.関節ジョグの変位量を与えるJogJoint.msgと,フレームジョグの変位量を与えるJogFrame.msgを含んでいます.
“jog_controller”パッケージは,これらのメッセージを受け取り,実際にロボットを動かすためのパッケージです.いまのところ,関節ジョグのためのjog_joint_nodeと,フレームジョグのためのjog_frame_nodeがあります.また,これらの指令値を与えるためのrvizパネルプラグイン”JogJointPanel”と”JogFramePanel”を含んでいます.
これらのパッケージを使えば,UR5, Denso VS060, TRA1, NEXTAGE Openや,ROS-Iのレポジトリにある種々のロボットアームをジョグ動作させることが出来るようになります.
これらのパッケージはまだ開発中で,機能や動作確認はまだまだ足りておらず,ドキュメントも不足しています.興味を持たれた方は,ぜひ自分のロボットで使ってみて,Issuesなどで不具合や動作の報告をしてください.フィードバックをいただくことでより優れたパッケージにしていきたいと思っています.
ティーチング機能についても新たな取り組みが行われています.これについてはまた別の記事で紹介したいと思います.
コメントを投稿するにはログインしてください。
著者について