OpenAIジム+ ROS +ガゼボ:自宅でスタンドアロンロボットをトレーニングします。 パート1

過去数年にわたって、ロボット掃除機から無人ドローンまで、私たちの日常生活に人工知能技術が導入されてきました。 それらのすべては、人工知能によって制御されており、すでに私たちにとってありふれたものです。 しかし、それにもかかわらず、設計から実装までの開発プロセスには数年かかり、安価ではありません。 さらに、機械学習アルゴリズムにはビッグデータが必要であり、すべてが長期的に機能するという保証はありません。



遅かれ早かれ、各開発者は、実際のロボットを作成する前に、シミュレーションで概念をテストし、すべてのシステムをデバッグし、最終的に開発パスが選択されているかどうかを理解する必要があるという結論に達します。



アンドリューハワード博士は、彼が学生のナトンケーニッヒとともに2002年に南カリフォルニア大学の3Dシミュレータガゼボの開発を始めたとき、同様の考えを持っていました。 高精度シミュレータの概念は、さまざまな屋外条件でロボットをテストする必要があるために生まれました。 開発の最初の段階では、このアプローチにより必要な機器の購入にかかる時間と費用を節約できます。



この一連の記事では、センサーとして通常のカメラを1つだけ使用して、無人車両のシミュレーションとトレーニングの経験を共有したいと思います。







みなさんこんにちは。 私はベルリン応用科学大学(HTW-ベルリン)の応用情報学の理学修士(コンピューター科学、MS)です。



コースの一環として、ROS [1]、Gazebo [2]、OpenAI Gym [3]を使用して、シミュレートされた環境で自律型ロボットをトレーニングする方法に取り組んでいます。 このコースは2つの部分に分かれています。



最初の部分は、Gazeboシミュレーション内のさまざまな自律ロボットで強化学習(強化トレーニング)アルゴリズムのテストを簡素化するフレームワークの開発に専念します。



第二部では、自動運転のためのアルゴリズムの実装に集中します。 私は次の学期にこれに取り組みますので、この記事と以下の記事では主にGazeboのOpenAIジム環境の実装を扱います。 強化学習(RL)自体が表面的に影響を受けます。



完全なプロジェクトコードはこちらにあります



システム要件





ROSバージョンのMelodicを使用します。 このバージョンにはいくつかの制限があり、その中で最も重要なものはUbuntu 18です(ROSをWindows WSLおよびUbuntu Headlessにインストールすることも可能ですが、それ以外の場合はそれ以上です)。 また、ROSはまだPython 3をサポートしていません。



パート1:はじめに



このパイロットパートでは、環境の作成に使用されるテクノロジーについて簡単に説明します。 また、インストールプロセスについても説明し、最終的にはGym APIを介して制御できる本格的なシミュレーションを開始します。



ROS:「車輪を再発明しないでください」



ロボットオペレーティングシステム(ROS)は、ロボットをプログラミングするためのフレームワークです。 ROSは、開発者が特定のタスクに集中できるようにする「ソフトウェアのり」です。 ROSはオペレーティングシステムではありませんが、ハードウェアの抽象化、低レベルのデバイス管理、頻繁に使用される機能の実装、プロセス間のメッセージ受け渡し、パッケージ管理(プラグイン)などのサービスを提供します。



ROSは、ノードと呼ばれるプロセスが1つのタスクを担当する必要がある疎結合システムとして設計されています。 ノードは、トピックと呼ばれる論理チャネルを通過するメッセージを使用して相互に通信します。 各ノードは、パブリッシュ-サブスクライブパターンを使用して、別のノードからデータを送受信できます。



ROSの場合、コントローラー、GPS、カメラ、レーザー距離計などの多くのデバイスで単一の方法で作業できるようにするドライバーが既に実装されています。



そして、ROS Melodicをインストールします( 完全な手順



sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-key 421C365BD9FF1F717815A3895523BAEEB01FA116 sudo apt update sudo apt install ros-melodic-desktop-full sudo rosdep init rosdep update echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc source /opt/ros/melodic/setup.bash
      
      





何らかの理由で、完全インストールパッケージには必要なパッケージが含まれていません。 それらを個別にインストールします。



 sudo apt install ros-melodic-ackermann-msgs sudo apt install ros-melodic-effort-controllers sudo apt install ros-melodic-joy sudo apt install ros-melodic-tf2-sensor-msgs
      
      





それらについては詳しく説明しません。 それらは私たちのロボットを制御するために必要です。これについては後で説明します。



ガゼボ



Gazeboは、 Open Source Robotic Foundationによって開発され、ROSと非常に密接に相互作用するオープンソースの動的3Dシミュレーターです。 Gazeboを使用すると、屋内と屋外の両方の困難な状況でロボットを正確かつ効率的にシミュレートできます。



シミュレーターは、物理学、衝突の計算、センサーのシミュレーションに関与するgzserverサーバーで構成されてます。 クライアントは、 gzclient (デスクトップ用)およびgzweb (ブラウザー用)などのサーバーに接続できます。 モデルをレンダリングするのは彼らです。



これにより、仮想空間で複雑なロボットシステムをはるかに高速にテストでき、高価な実際のロボットを損傷するリスクがありません。



Gazeboは完全なROSインストールパッケージに含まれているため、他に何もインストールする必要はありません。 ヘッドレス構成の場合、 gzwebが必要です。 彼については、次の部分で説明します。



OpenAIジム



OpenAIは、Ilon Maxが共同設立した非営利の人工知能研究会社です。

OpenAI Gymは、RLアルゴリズムを開発および比較するためのAPIを提供し、膨大な数の仮想環境と共通のAPIを備えたPythonライブラリです。 ジムには、アタリゲームなど、すでに多くの既製の環境があります。



openai_ros



私のプロジェクトはopenai_rosパッケージに基づいています。 このパッケージは、 Constructチームによって提案されたアーキテクチャを実装しています。 Constructユーザーは、シミュレーションを制御するために必要なAPIを実装する共通のフレームワークを開発し、GazeboをGymに統合するためのAPIについて説明します。 提案された構造は3つの論理層で構成され(実際には任意の数を使用できます)、そのうちの最下位は、GymboとGazeboを接続する別の「接着剤」です。 これについては、コードを解析する次のパートで詳しく説明します。



すべてをまとめる



最初に、catkinの作業ディレクトリを作成する必要があります。 catkinはCMakeのようなビルド自動化システムで、ROSインストールパッケージにデフォルトで含まれています:



 cd ~ mkdir catkin_ws cd catkin_ws/ mkdir src cd src/
      
      





必要なROSパッケージを複製します。



ミットレースカー



すべてのセンサーを備えたMITで開発されたロボットモデルが必要になります。



 git clone https://github.com/mit-racecar/racecar.git git clone https://github.com/mit-racecar/racecar-simulator.git
      
      





openai_ros



 git clone https://bitbucket.org/theconstructcore/openai_ros.git
      
      





神経レーサー



まあ、実際には、プロジェクト自体



 git clone https://github.com/karray/neuroracer.git
      
      





次に、これらすべてのパッケージをコンパイルする必要があります



 cd ~/catkin_ws catkin_make
      
      





また、必要なすべてのpythonライブラリをインストールする必要があります。



 pip install -U numpy tensorflow gym keras
      
      





シミュレーションの実行



ROSパッケージを実行するには、まず、コンパイルしたすべてのROSパッケージを現在のターミナルセッションにロードする必要があります。



 source ~/catkin_ws/devel/setup.bash
      
      





これで、Racecarロボットシミュレーションを実行できます。



 roslaunch racecar_gazebo racecar_tunnel.launch
      
      





このコマンドは、ROSマスターサーバー、Gazeboサーバー、およびそのUI(デスクトップ上)を起動し、ロボットとその世界をロードします。



スクリーンショット:



ネタバレ見出し




そして、RLアルゴリズムの2番目の端末でも同じことが言えます。



 source ~/catkin_ws/devel/setup.bash roslaunch neuroracer_gym_rl qlearning.launch
      
      





このチームはneuroracer_gym_rlパッケージを起動します。 このパッケージは、ジム環境で簡単なQラーニングアルゴリズムを実装します。 次のパートで分析します。



待つことができない人は、 ここでソースコードを見つけることができます。 今後、GeForce GTX 1080 Ti 11GB RAMカードを搭載したサーバーでの数日間のトレーニングの後、この単純なアルゴリズムは何も学習しなかったと言います。 次の部分では考えられる理由をリストしますが、実装を試すことができます。



おわりに



そして、自動運転車の完全に機能するシミュレーションと既製のRLアルゴリズムテンプレートがあります。 次の部分では、openai_rosをより詳細に分析し、ロボットにインストールされているセンサーについて説明し、その後、アルゴリズムの実装方法とトレーニング中に発生する可能性のある問題を示します。



PS:記事を書いたのはこれが初めてです。 したがって、間違いを見つけたり、アイデアや建設的な批判がある場合は、ためらわずに書いてください。 次の部分でこれを考慮に入れます。



参照資料



[1](M. Quigley、K。Conley、B。Gerkey、J。Faust、T。Foote、J。Leibs、R。Wheeler、およびAY Ng。Ros:オープンソースロボットオペレーティングシステム。ICRAワークショップオープンソースソフトウェア、第3巻、5ページ。神戸、2009年。



[2] NPケーニッヒとA.ハワード。 オープンソースのマルチロボットシミュレータであるgazeboのパラダイムを設計して使用します。 IROS、ボリューム4、2149–2154ページ 。 Citeseer、2004。



[3] LPJSJSJTWZグレッグブロックマン、ヴィッキーチャン。 Openaiジム、2016年、 arXiv:1606.01540



All Articles