ROS2 Documentation : HumbleのTutorials体験記(第1回)

 

 ROS2 Documentation : HumbleのTutorialsを実践することでROS2の理解を深めることを今回からやっていきます。以下に参照元を載せます。

 

docs.ros.org

 

 環境の設定(原題:Configuring environment)

 目的:ROS2環境の準備の理解

 レベル:初級

 学習設定時間:5分

 背景を読んで理解したこと

引用元:https://3.bp.blogspot.com/-vlksTv3khj8/UO6a162KAtI/AAAAAAAAKlQ/4DokUA8ayKg/s1600/kaigara_nimaigai2.png

 

 ROS2はシェル環境(ユーザーはシェルを通してOSの中核のカーネルとの意思疎通を行い、目的の実行結果を得る環境)を利用して複数のワークスペース(システム上の開発領域)をつなぎ合わせることができ、異なるバージョンのROS2での開発にも柔軟に対応できます。

 

 課題1:セットアップファイルの実行

 source /opt/ros/humble/setup.bashをターミナルに入力し環境設定のセットアップスクリプトを実行する。

 これは前回のROS2 Humble初期環境設定で実行したので理解できました。ROS2を使うための儀式呪文のようなものと個人的にイメージしています。

 

 課題2:シェル起動スクリプトにセットアップファイル実行を追加

 echo "source /opt/ros/humble/setup.bash" >> ~/.bashrcをターミナルに入力し、毎回"source /opt/ros/humble/setup.bash" を入力しなくてもよくする。

 実行する前に.bashrcがどこにあるのかを調べ、中身を確認することにしました。どこにあるかを調べるためにホームディレクトリでls -laで隠しファイルを含むファイル一覧を表示させました。すると、.bashrcがホームディレクトリにあることを確認でき、次に、cat .bashrcを入力し中身を確認しました。.bashrcファイルを書き換える課題なので心配な人は元ファイルをcpコマンドで複製して試しに実行してみることを推奨します。追記する命令文を間違えると最悪起動できなくなる恐れがあるという記事を見たことがあるためです。

 実際にターミナルに入力したコマンド

 1.ls -la #ディレクトリ内の隠しファイルを含むファイルの権限・所有者とファイル名をリスト表示

 

 2.cat .bashrc #.bashrcファイル内容を表示

 

 3.cp .bashrc .bashrc1 #.bashrcの複製.bashrc1を作成

 

 4.echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc1 #ホームディレクトリの.bashrc1ファイルの最終行にsource /opt/ros/humble/setup.bashを追記

 

 5.diff .bashrc .bashrc1 #.bashrcと.bashrcの差分表示(ファイル同士を比較し、異なる個所を表示)

 

 6.cat .bashrc1 #.bashrc1ファイル内容を表示

 

 7.echo "source /opt/ros/humble/setup.bash" >> ~/.bashrc #ホームディレクトリの.bashrcファイルの最終行にsource /opt/ros/humble/setup.bashを追記

 

 実行結果

 恐らくターミナルを開くとros2のセットアップファイルが実行されるようになりました。.bashrcがどのタイミングで実行されるのかの詳細を確認していないのでどんな時に実行されるかわかりません。実行されていなければエラーになるのでセットアップファイル実行コマンド(source /opt/ros/humble/setup.bash)を入力することにします。

 

 課題3:環境変数の確認

 ROS 2 パッケージの検索または使用で問題が発生した場合の確認方法として以下のコマンドを実行する。

 

 printenv | grep -i ROS #大文字小文字区別ないROSという文字列を含む環境変数の表示

 

 実行結果

printenv | grep -i ROS コマンド実行結果

 rosとROSを含む環境変数が表示されることを確認できました。

 

 課題3-1:ROS_DOMAIN_ID変数の設定

 以下のコマンドを実行してROS_DOMAIN_ID変数設定をする。

 

 export ROS_DOMAIN_ID=< your_domain_id > #< your_domain_id >の部分に0~101、215~232の数字を入力するそうです。exportは環境変数やシェル変数を設定するコマンドです。

 

 自分で調べたことを書きます。ROS2はDDSという通信ミドルウェアを採用しています。複数の通信が混信しないようにIDを設定することができ、デフォルトではID=0。IDが同じノード(通信のつながり)のみにできます。

 

 実行結果

 

export ROS_DOMAIN_ID=1 コマンドの実行結果

 1つ前の課題で環境変数の確認の仕方を実行することでROS_DOMAIN_IDが1になっていることが確認できました。ちなみに、毎回入力するのが手間の場合には.bashrcに追記するとよいと記述されています。

 

 課題3-2:ROS_LOCALHOST_ONLY変数の設定

 特定の範囲だけでDDS通信する設定にデフォルトではなっていないが、ROS_LOCALHOST_ONLYを1にすることで可能になる。以下のコマンドを入力する。

 

  export ROS_LOCALHOST_ONLY=1

 

 実行結果

 

export ROS_LOCALHOST_ONLY=1 コマンドの実行結果

 

 デフォルトで0だった(環境変数の確認課題時)のが1に変わっていることが確認できました。

 

 まとめを読んで理解したこと

 ROS2で作業を始める際には、環境変数の設定やその確認が大切であることが理解できました。

 

 Tutorialを体験しての感想

 ROS2で環境変数の設定とその確認の仕方を学ぶことができました。エラーや問題が発生した時の確認の方法の1つとして今後使っていきたいと思いました。

 元のページは英語なのでGoogle翻訳で訳したものを読むことで進めていきました。訳が必ずしも正しいものではないかもしれないので、訳が怪しい部分は英語の意味を個別に調べて対応し、また、わからない専門知識も他サイトで調べて自分なりに理解するのに時間がかかりました。なので元サイトの設定時間5分は十分な知識量がある人向けの設定時間であると感じました。

 

 今後の課題

 linuxのターミナルにコマンドを入力していく操作なのでコマンドの意味やシェル環境の理解に乏しい部分が多々あるので、その都度調べながら理解し、その他ROS2の中身を知っていきたいと思いました。今回のDDS通信も完全には理解できていないので実際に使う場面に出会うか、または作るかして理解を深めていきたいです。

 

 以上です。ありがとうございました。