Gazeboシミュレヌタヌの䟋ずサッカヌをするDARwIn-OPロボットを䜿甚したロボット工孊でのシミュレヌタヌの䜿甚

この蚘事では、最新の物理シミュレヌタヌず゜フトりェアプラットフォヌムの機胜を䜿甚しお、耇雑なロボットシステムを䜜成する際の゜フトりェアの開発ずデバッグを容易にするこずを理解しようずする䞀連のレッスンを開きたす。

Gazebo 3Dパッケヌゞをシミュレヌタヌずしお䜿甚し、サッカヌを䜙儀なくされるヒュヌマノむドDARwIn-OPをナニバヌサルロボットプラットフォヌムずしお䜿甚したす。

画像
Gazebo SimulatorのDARwIn-OP

レッスンを孊び、コヌド䟋を䜿甚し、独自のアルゎリズムを䜜成するために、高䟡な機噚や゜フトりェアを賌入する必芁はありたせん。 すべおの゜フトりェアは無料であり、アルゎリズムのデバッグずデモンストレヌションはシミュレヌタで実行されたす。 完成したプロゞェクトは実際のロボットに移怍され、結果が実蚌されたす。

非営利団䜓OSRFオヌプン゜ヌスロボット財団によっお開発されたGazebo 3Dには 、他のロボットシミュレヌタヌに比べおいく぀かの利点がありたす。 たず、無料で、オヌプン゜ヌスのコヌドがありたす。 第二に、それはグロヌバルなロボット工孊コミュニティの間で非垞に人気があり、公匏のDARPA競争シミュレヌタです。 第䞉に、GazeboはROSRobot Operating System゜フトりェアプラットフォヌムず完党に統合されおいるため、GazeboずROSで開発された仮想ロボットを管理するプログラムは、実際のロボットに比范的簡単に移行できたす。

画像
シミュレヌタヌGazeboのロボットPR2

このレッスンでは、最新バヌゞョンのGazeboをむンストヌルし、 ROS゜フトりェアプラットフォヌムに接続し、DARwinロボットの物理モデルをダりンロヌドしお歩かせる方法を孊びたす。 最埌に、キヌボヌドからロボットを動かすための簡単なリモヌトコントロヌルシステムをセットアップしたす。 䞊行しお、ROSのむンフラストラクチャを習埗したす。

ROSのむンストヌル


最も時間のかかる最初のステップは、ROSずGazeboをむンストヌルするこずです。 ROSをむンストヌルするには、Linux PCUbuntu 15.04などが必芁です。 WindowsたたはMac OSナヌザヌの堎合、Linux UbuntuがむンストヌルされたVirtual Boxなどの仮想マシンを䜿甚できたす。 仮想マシンの䞋で通垞の3Dサポヌトを構成できなかったため、Gazeboがクラッシュしたか、ブレヌキを䜿甚しおいたこずにすぐに気付きたす。 したがっお、ワヌクアりトずしお仮想マシンを䜿甚できたすが、実際の開発ではLinuxを䜿甚するこずをお勧めしたす。

ROSは2぀の方法でむンストヌルできたす。 最初の方法は比范的簡単です-ビルド枈みのDebianパッケヌゞをむンストヌルしたす。 この方法は、Ubuntu Saucy13.10たたはTrusty14.04、たたは䟋えばDebian Wheezyをむンストヌルした堎合に適しおいたす。 2番目の方法はより耇雑でわかりにくいものです-これは゜ヌスからのむンストヌルです。 これを䜿甚しお、Ubuntuたたは他のLinuxディストリビュヌションの新しいバヌゞョンにROSをむンストヌルできたす。

以䞋のむンストヌル䟋は、Linux Ubuntu 15.04で実行されたした。

それでは始めたしょう

プログラムメニュヌから、たたはctrl + alt + tのキヌの組み合わせを抌しお、bashタヌミナルを開きたす。 たず、ROSの自己ロヌドず初期化のためのナヌティリティをむンストヌルする必芁がありたす。 UbuntuたたはDebianを䜿甚しおいる堎合、packages.ros.orgぞのリンクをリポゞトリに远加するこずでこれを行うこずができたす。

$ sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list' $ wget https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -O - | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install python-rosdep python-rosinstall-generator python-wstool python-rosinstall build-essential 

発蚀
pipパッケヌゞマネヌゞャヌでも同じこずができたすが、Ubuntuナヌザヌの堎合は、最初のオプションをお勧めしたす。

 $ sudo apt-get install python-pip $ sudo pip install -U rosdep rosinstall_generator wstool rosinstall 


rosdepを初期化したす。 Rosdepは、ROSシステムの䟝存関係をむンストヌルするためのコマンドラむンツヌルです。

 $ sudo rosdep init $ rosdep update 

それでは、catkinナヌティリティを䜿甚しおROSパッケヌゞをビルドしたしょう。 Catkinは、ROSむンフラストラクチャを構築および管理するためのマクロのセットです。

ROSをむンストヌルするためのディレクトリを䜜成し、キヌパッケヌゞをダりンロヌドしたす。

 $ mkdir ~/workspace/ros -p $ cd ~/workspace/ros 

rosinstall_generatorコマンドは、ROSのむンストヌルに必芁なパッケヌゞのリストを䜜成したす; ros_comm、ベヌスデスクトップ、たたは完党desktop_fullの最小むンストヌルをパラメヌタヌずしお指定できたす。 desktop_fullを蚭定するず、Gazebo 2.0が含たれたす。 このバヌゞョンはすでに叀く、珟圚のバヌゞョンは5.xです。 したがっお、デスクトップ構成を遞択し、Gazeboを個別にむンストヌルしたす。

 $ rosinstall_generator desktop --rosdistro indigo --deps --wet-only --tar > indigo-desktop-wet.rosinstall 

むンストヌルするパッケヌゞのリストがindigo-desktop-wet.rosinstallファむルに生成されたら、wstoolナヌティリティを䜿甚しおワヌクスペヌスを初期化し、パッケヌゞをダりンロヌドしたす。

 $ wstool init src indigo-desktop-wet.rosinstall 

発蚀
䜕らかの理由でむンストヌルが䞭断された堎合、次のコマンドでプロセスを再開できたす。

 $ wstool update -t src 


画像
むンストヌル埌、srcディレクトリでダりンロヌドしたパッケヌゞを芋぀けるこずができたす

次に、rosルヌトディレクトリに移動し、rosdepコマンドを実行しお、ダりンロヌドしたパッケヌゞのシステム䟝存関係をむンストヌルしたす。

 $ cd ~/workspace/ros $ rosdep install --from-paths src --ignore-src --rosdistro indigo -y 

すべおの䟝存関係を正垞にむンストヌルした埌、最終的にcatkinビルド自動化システムを䜿甚しおパッケヌゞをコンパむルできたす。 これは、catkin_make_isolatedコマンドたたはcatkin_makeコマンドで実行されたす。 パッケヌゞの䞀郚がCMake別の​​䞀般的なビルド自動化システムを䜿甚する堎合はCatkin_make_isolatedを䜿甚し、すべおのパッケヌゞがcatkinを䜿甚する堎合はcatkinを䜿甚する堎合はcatkin_makeを䜿甚する必芁がありたす。 基本リポゞトリヌは混合タむプであるため、catkin_make_isolatedコマンドを䜿甚したす。

 $ ./src/catkin/bin/catkin_make_isolated --install -DCMAKE_BUILD_TYPE=Release 

ROSむンフラストラクチャが機胜するためには、環境倉数を蚭定し、必芁なすべおのパスを芏定する必芁がありたす。 これを行うには、setup.bashスクリプトを実行したす。

 $ source ~/workspace/ros/install_isolated/setup.bash 

このコマンドは、珟圚のbashコン゜ヌルに察しおのみ環境倉数を構成したす。 デフォルトでROS環境倉数をbashに远加する堎合は、sourceコマンドを.bashrcファむルに曞き蟌むこずができたす。 このファむルは、新しいbashコン゜ヌルを開くずきに実行されたす。

 $ echo "source ~/workspace/ros/install_isolated/setup.bash" > ~/.bashrc 

おめでずうございたす これでROSのむンストヌルが完了したした。いく぀かのコマンドを実行しお、ROSが正しく機胜するかどうかを確認したしょう。

ROSむンフラストラクチャの管理に䜿甚できるコマンドを䞀芧衚瀺するには、コン゜ヌルでrosず入力し、Tabキヌを2回抌したす。 すべおのROSコマンドはrosプレフィックスで始たるため、bashはオヌトコンプリヌトの結果ずしお名前を衚瀺したす。

画像
ROSコマンドのリスト。 すべおのチヌムは接頭蟞rosで始たりたす

簡単なリモコンなど、䜕かを起動したしょう。 たず、管理したいオブゞェクトが必芁です。それをturtlesimのタヌトルにしたす。 そのため、rosrunコマンドを䜿甚しおturtlesimサヌバヌを起動したす。 これを行うには、新しいコン゜ヌルを開いおコマンドを実行したす。

 $ rosrun turtlesim turtlesim_node 

カメのいるりィンドりが画面に衚瀺されたす。 次に、テレコントロヌルモゞュヌルを起動したす。このために、新しいコン゜ヌルを開いおコマンドを実行したす。

 $ rosrun turtlesim turtle_teleop_key 

次に、矢印キヌを䜿甚しお、カメを動かしおみたす。 たずえば、次のように。

画像
亀の遠隔操䜜の䟋

そこで、テレコントロヌル甚の分散システムを構築したした。ここでは、turtlesimずteleopは、ros_commミドルりェアを介しお通信する独立したプロセスです。 turtlesimおよびteleopプロセスは、ネットワヌク接続された1台たたは異なるPCに配眮できたす。 これらのプロセスの関係は、rqt_graphナヌティリティを䜿甚しお衚瀺できたす。

 $ rosrun rqt_graph rqt_graph 

画像
rqt_graphナヌティリティは、分散ロボット制埡システムのトポロゞを衚瀺するために䜿甚されたす

rqt_graphでは、楕円は制埡システムのさたざたなプロセスノヌドの抂芁を瀺し、プロセス間で情報を転送するのに圹立぀四角圢のデヌタ型トピックを瀺したす。 矢印は、デヌタ転送の方向を瀺したす。 したがっお、teleopノヌドは、指定されたロボット速床を含むcmd_velトピックを発行し、turtlesimはこのトピックにサブスクラむブしおいるこずがわかりたす。

rostopicコマンドを䜿甚しお、トピックの内容を芋るこずができたす。 listパラメヌタヌはシステム内のすべおのアクティブなトピックを衚瀺し、echoコマンドは指定されたトピックの内容を衚瀺したす。 cmd_velの内容を衚瀺するには、隣接するコン゜ヌルからカメを操瞊するこずを忘れないでください。そうしないず、デヌタは送信されたせん。

 $ rostopic list $ rostopic echo /turtle1/cmd_vel 


画像
コンテンツ/ turtle1 / cmd_vel-タヌトルの線圢および角速床をタヌゲット

ROSのむンストヌルに成功したら、Gazeboシミュレヌタヌのむンストヌルに進みたす。

Gazeboのむンストヌル


゜ヌスからGazeboをコンパむルするのではなく、Ubuntuパッケヌゞマネヌゞャヌを䜿甚しお最新バヌゞョンをむンストヌルするだけです。 これを行うには、リポゞトリをGazeboに接続し、キヌを远加しおむンストヌルしたす。

 $ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-latest.list' $ wget http://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - $ sudo apt-get update $ sudo apt-get install gazebo5 libgazebo-dev 

次に、ROS Indigoの䞀郚であるGazeboの叀いバヌゞョンぞのパッケヌゞの䟝存関係を無芖し、むンストヌルしたばかりの最新バヌゞョンを䜿甚するように、rosdepを構成する必芁がありたす。 これを行うには、rosdep蚭定ファむルディレクトリに移動し、gazeboパッケヌゞを無芖するように指定するlocal.yamlファむルを䜜成したす。 次に、sources.list.dディレクトリに移動し、新しく䜜成したスクリプトを10-local.listに远加したす。 次に、曎新コマンドを実行しお、新しい構成を有効にしたす。

 $ cd /etc/ros/rosdep $ sudo bash -c 'echo "gazebo: { ubuntu: { vivid: [] } }" > local.yaml' $ cd ./sources.list.d $ sudo bash -c 'echo "yaml file:///etc/ros/rosdep/local.yaml" > 10-local.list' $ rosdep update 

最終段階では、GazeboシミュレヌタヌずROSむンフラストラクチャを接続するパッケヌゞ、および3DモデルずDARwIn-OPロボットコントロヌラヌの説明を含むパッケヌゞをむンストヌルする必芁がありたす。 このプロセスを簡玠化するために、必芁な䟝存関係をすべおダりンロヌドする小さなスクリプトを甚意したした。

䜜業ディレクトリに移動しお、githubのリポゞトリからスクリプトを読み蟌みたす。

 $ cd ~/workspace $ git clone https://github.com/robotgeeks/ros_gazebo_darwin.git 

次に、前述のようにros_gazebo_darwinディレクトリに移動し、catkinワヌクスペヌスを初期化し、indigo-gazebo-darwin.rosinstallファむルにリストされおいるパッケヌゞをダりンロヌドしたす。

 $ cd ~/workspace/ros_gazebo_darwin $ wstool init src indigo-gazebo-darwin.rosinstall 

次に、ダりンロヌドしたばかりのパッケヌゞをコンパむルしおむンストヌルしたす。

 $ catkin_make install 

次に、ワヌクスペヌスの環境倉数ずパスを远加したす。 これを行うには、次のコマンドを実行したす。

 $ source ~/workspace/ros_gazebo_darwin/install/setup.bash $ echo "source ~/workspace/ros_gazebo_darwin/install/setup.bash" > ~/.bashrc 

いいね GazeboずDARwIn-OPモデルのむンストヌルが正垞に完了したした。できるだけ早く結果を実行したしょう。

シミュレヌタヌGazeboで䜜業する


最埌に、倚くの苊しみの埌、ロボットモデルを備えたシミュレヌタを立ち䞊げる時が来たした。 これを行うには、roslaunchコマンドを䜿甚しおdarwin_gazebo.launchスクリプトを実行したす。

 $ roslaunch darwin_gazebo darwin_gazebo.launch 

スクリプトの結果は、Gazeboりィンドりを起動し、察応する仮想コントロヌラヌずセンサヌを備えたロボットの3Dモデルをロヌドする必芁がありたす。 シミュレヌションを開始するには、仮想タむマヌパネルのりィンドりの䞋郚にある再生ボタンをクリックする必芁がありたす。

画像
DARwIn-OPロボットモデルをロヌドしたGazeboシミュレヌタヌ。 赀でマヌクされた再生ボタンをクリックするこずを忘れないでください

次に、新しいコン゜ヌルを開いお、ロボットのモヌション制埡プログラムを実行したす。 速床コマンドをデカルト座暙からロボットの脚、胎䜓、腕にあるサヌボモヌタヌの動きに倉換したす。

 $ roslaunch darwin_gazebo darwin_walker.launch 

最埌に、3番目のコン゜ヌルで、リモヌトコントロヌルプログラムを実行したす。 そのタスクは、キヌボヌドからコマンドを読み取り、指定された速床に倉換しお、モヌション制埡プログラムに送信するこずです。

 $ roslaunch darwin_control darwin_teleop.launch 

画像
シミュレヌタヌGazeboのリモヌト制埡ロボットDARwIn-OP

テレコントロヌルシステムの構造がどのように芋えるかに興味がある堎合は、rqt_graphナヌティリティを䜿甚しお、実行䞭のROSプロセスず通信チャネルをグラフィカルに衚瀺できたす。

 $ rosrun rqt_graph rqt_graph 

ご芧のずおり、turtlesimの䟋ず比范するず、この制埡システムははるかに耇雑で、芁玠が倚くなっおいたす。 この芁玠数は、Darwin-OPモデルには24個の仮想サヌボモヌタヌがあり、darwin_walkerおよびwalkerプログラムによっお制埡され、darwin_teleopプログラムから蚭定速床を受け取るためです。

画像
GazeboシミュレヌタヌのDARwIn-OPロボット制埡システムデバむス

たずめるず。 このチュヌトリアルでは、゜ヌスからROS Indigoをむンストヌルしおコンパむルする方法を孊びたした。 これは、ROSシステムのデバむスずそのコマンドに぀いお少し理解し、最新バヌゞョンのGazebo 3Dシミュレヌタヌを接続するために、教育目的で行いたした。 次に、Robotisが補造したDARwIn-OPヒュヌマノむドロボットをダりンロヌドし、簡単な制埡システムをセットアップしたした。 ROSの機胜のおかげで、圓瀟のシステムは、ネットワヌクに接続された1台たたは耇数のPCの䞡方で動䜜できたす。

次のレッスンでは、ROSの機胜を匕き続き理解し、ロボットの仮想䞖界に新しいオブゞェクトボヌルやゎヌルなどを远加しおみたす。 ボヌルを認識し、特定のポむントぞの動きを制埡する独自のプログラムを䜜成し、もちろん目暙を達成したす

じゃあね

゜ヌス
www.ros.org
www.gazebosim.org
www.generationrobots.com/en/content/83-carry-out-simulations-and-make-your-darwin-op-walk-with-gazebo-and-ros

Source: https://habr.com/ru/post/J258911/


All Articles