ロボットの開発に広く利用されるようになっているロボット開発プラットフォーム「ROS(Robot Operating System)」の活用について解説する本連載。今回は、「ROSの活用シーンとしてのシミュレーターとの連携」をテーマに、ロボット開発におけるシミュレーターの重要性や、ROSと連携可能なシミュレーターなどについて解説する。
前編では「ROS」がオープンソースソフトウェアとしてどのように進化してきたのかを紹介した。
もともとROSは、実機のロボットに接続してロボットを操作することを主な目的として開発されてきた。しかし近年は、実機でロボットを動作させる前、仮想空間上で動作確認を行うシミュレーションプラットフォームとしても注目を集めている。
ROSは豊富なパッケージ群が提供されており、それらを活用することで最小限のプログラミングで実機のロボットを操作できる。シミュレーターの「Gazebo」や可視化ツールの「RViz」も提供されているので、実機が手元になくても仮想的にロボットを操作することが可能だ。さらに、このシミュレーター内に、ロボットだけでなくロボットの稼働環境(通路、コンベヤー、ワーク)なども再現できる。
本連載は、ROSについて以下の3部構成で解説している。
中編に当たる今回は、「ROSの活用シーンとしてのシミュレーターとの連携」をテーマに、ロボット開発におけるシミュレーターの重要性やROSと連携可能なシミュレーター、ROSとシミュレーターの連携をどのように行うのかなどについて解説する。
一般的にシミュレーターは、自動運転車、自動搬送機ロボット、歩行ロボットなど多岐にわたる用途で活用されている。ここからは、アームロボットを題材としてシミュレーターについて説明しよう。
アームロボットを実環境に配置するまでには、さまざまな課題が存在する。
一例として、稼働中の工場で人間の作業員が行っているピック&プレース工程をロボットに置き換えることを考えてみよう。
人間とロボットでは占有スペースの形状や体積が異なり、また、作業を自動化するために工程の変更が必要な場合もある。このため、工場のレイアウトを変更せずに、人間が作業していたスペースを使ってそのままロボットに置き換えることは困難だとされており、ロボット導入のためには新たなライン設計や施工が必要になることが多い。さらに、なるべく短期間でロボットの稼働を開始するためには、工場の設計、施工と並行してロボットのシステム設計やプログラミングを進める必要がある。
アームロボットを操作する基本的なプログラムは、ロボットメーカーやROSのライブラリとして広く配布されているので、それらを活用することでピック&プレース用のプログラムを作ることが可能だ。しかし、実際の生産ラインでそのプログラムを搭載したロボットを稼働させるには、現場でのプログラムの調整が必要になる。
具体的には、以下のような調整が必要になるだろう。
物品の位置や向きを取得するための機能。カメラによる画像認識(単眼、ステレオ)や、ToF(Time Of Flight)方式、ASV(Active Stereo Vison)方式を用いた測距センサーなどを用いる。最近は、AI(人工知能)を用いた物品識別や姿勢推定が行われることも増えてきた。
障害物(箱・壁面)を回避しながら、自己衝突を避けてアームに移動経路を最適化する機能。障害物の形状などは作業環境に依存するため、全てのパターンを机上で洗い出すことは困難であり、実環境やシミュレーションでのテストが望ましい。
ロボットハンドで物品を把持するとき、滑り落ちや破壊を防ぎながら確実に把持する力加減の調整。
これらの調整作業は、実環境や机上の設計でも対応できるが、シミュレーター上で実環境をイメージしながら実施することにより作業の加速を期待できる。
ただし、ROSはロボットの操作はできるが、操作によってどのような動作結果が生じるかまでは関知していない、ということに注意が必要だ。例えば、歩行ロボットはROSの指示によって左右の足を動かすことができるが、その動作で実際に歩けるかどうかについてROSは関知していない。
また、障害物回避のために「何かが近づいたら避ける、止まる」というプログラムをROS内に作ることはできるが、そのセンサーデータ(画像やLiDARなど)はROS以外の手段で用意する必要があり、そのデータに応じた動作によって衝突回避に影響が出る場合もある。
Copyright © ITmedia, Inc. All Rights Reserved.