見出し画像

ROS (Robot Operating System) - ロボットプログラミングの未来への鍵

以下の記事を参考に書いてます。

Robot Operating System (ROS): The key to the future of robotics programming

1. ROS

ROS」(Robot Operating System)は、完全にオープンソースなロボット用OSです。「ROS」は、ハードウェアをソフトウェアから抽象化するためのメタOSと言えます。「ROS」の背後にある主なアイデアは、継続的な車輪の再発明を避け、標準化された機能を利用できるようにすることです。「ROS」は、ホビーユーザーやプロではない人が、ロボットプログラミングに参入しやすい環境を提供します。

「ROS」は、2006年に米国カリフォルニア州のウィロー・ガレージ社によって開発されました。一般的な用途に使用できるフレームワークを構築することを目的としており、それ以来、彼らによって保守・開発が行われています。「ROS」には多くのバージョンやディストリビューションがあり、「Ubuntu」の新バージョンの更新毎にリリースされています。最新のものは、「Ubuntu 20.04 LTS」を対象とした「ROS Noetic Ninjemys」です。

2. なぜROSを選択するのか?

「MRPT」「CARMEN」「LCM」「Player」「Microsoft RDS」など、多くの選択肢があります。しかし、「MRPT」「CARMEN」「LCM」「Player」「Microsoft RDS」などは、言語サポートの制限、通信の最適化がなされていない、各種デバイスのハードウェアサポートがなされていないなどの設計上の問題があります。「ROS」は、ソフトウェア開発者がハードウェアの設計や動作を意識することなくプログラムを作成できます。「ROS」は、プロセスのネットワークを、中央またはマスターハブに接続する方法を提供します。また、「ROS」は多くのプログラミング言語に対応しており、他のフレームワークに比べて柔軟性があります。

また、「ROS」はすでに誰かが開発した「ノード」を開発者が簡単に統合できるようにしています。例えば、「モーションノード」と「コントロールノード」を搭載したロボットアームを作ったとします。他の誰かが、「ビジョンノード」と「モーションノード」で構成されるビジョンベースのオブジェクトトラッキングカーを作ったとします。その車の「ビジョンノード」をロボットアームに搭載すれば、物体検出機能を持ったロボットアームができあがります。

「ROS」は、ロボット用ミドルウェアの業界標準を目指しています。ABIリサーチによると、「2024年に出荷される商業用ロボットの約55%、91万5,000台以上に、少なくとも1つのROSパッケージがインストールされるだろう」とのことです。「ROS」の成功は、他のオープンソース・プロジェクトとの幅広い相互運用性と互換性によるものです。「ROS 1.0」では、リアルタイム通信に「Orocos」を、ビジョンに「OpenCV」を採用しています。

3. 本格的な物理シミュレーション

「ROS」には、システムが実世界でどのように動作するかを把握するための便利なツールが数多く用意されています。その一つが「RViz」で、これは普及型の3Dビジュアライゼーションツールです。これは、ソフトウェアのパラメータを入力として受け取り、入力の種類に応じて視覚化します。これにより、ロボットの視点から環境を見ることができます。

画像1

ビジュアライゼーションがうまくいったら、全ての物理的パラメータを使って3Dの世界でシミュレーションを行います。このシミュレーションには、3Dシミュレータで「ROS」をサポートしている「Gazebo」の助けを借ります。こうしたシミュレーションでアルゴリズムや設計をテストすることで、時間とコストを大幅に削減することができます。

画像2

4. ROSをサポートするハードウェア製品

「ROS」は、Linuxベースの環境で動作する必要があります。プロセッサの種類や必要なメモリは、プロジェクトによって全く異なります。一般的に、小規模なROSプロジェクトで最もよく使われるコンピュータは「Raspberry Pi」です。これは、Linuxカーネルをサポートしていることと、ボードの価格が安いことが理由です。最近では、「RP2040」を搭載した「Raspberry Pi Pico」が登場し、その上でも「micro-ROS」をサポートしています。例えば、「SLAM」による自律航行やコンピュータビジョンアプリケーションのように、重い計算を必要とするプロジェクトがあるとします。その場合は、「Nvidia Jetson TX2」や「Intel NUC」のような強力なボードを選ぶべきです。

センサーについては、「ROS」にはほとんどのセンサーと互換性のあるライブラリが用意されています。360度レーザースキャナー「RPLIDAR A1M8」や「Intel Realsense Depthカメラ」など、多くの製品が「ROS」に対応しています。

もしあなたが「ROS」を学びたいと思っている全くの初心者であれば、「ROS wiki」から始めるのが一番です。ドキュメント化されたライブラリや、初心者向けのわかりやすいチュートリアルが用意されています。


この記事が気に入ったらサポートをしてみませんか?