ROS2を使ってみる その1(環境構築、Windows)

はじめに

 今回はROS2の環境構築です。何度か挑戦して諦めていたのですが、今度こそちゃんと動かせるようにしてみます。

 つい最近参加していたROS Japan UGでは、ROS1からROS2に移行するのは大変という話を聞きました。ROS2から始めたほうがすんなり使えるそうです。私もROS2から始めてみます。

▼こちらのイベントに参加していました。

https://rosjp.connpass.com/event/304753/

 ROS2に関する書籍はいくつか出版されているのですが、環境構築の方法については古いことがあるらしいです。今回は公式ドキュメントに沿って環境を構築していきます。

環境を構築する

 Windows 10のみサポートしているそうです。

▼ドキュメントはこちら

https://docs.ros.org/en/iron/Installation/Windows-Install-Binary.html

▼はじめに古い方のドキュメントを読んでしまっていました。こちらは公式ではサポートされていません。でも検索して最初に見つかるのがこのドキュメントだと思います。

https://docs.ros.org/en/dashing/Installation/Windows-Install-Binary.html#

chocolateyのインストール

▼インストール方法についてはこちら

https://chocolatey.org/install#individual

 PowerShellで実行するコマンドがあります。

▼コマンドはこちら

▼実行してみると、以下のエラーが出ました。

 C:\ProgramData\chocolateyにすでにchocolateyのフォルダがありました。一旦削除して、もう一度実行しました。

▼すると、次のエラーが出ました。

 管理者権限が無いと実行できないようです。VS CodeのターミナルのPowerShellで実行していたのですが、改めてPowerShellを管理者として実行しました。

▼スタートメニューのWindows PowerShellを右クリックすると、選択できます。

 この後も管理者権限でコマンドを実行しています。

 さらにPythonとVisual C++ Redistributablesをインストールしました。

Open SSLのインストール

▼ダウンロードはこちらから

https://slproweb.com/products/Win32OpenSSL.html

 Win64 OpenSSL v3.2.1のexeファイルをダウンロードしました。実行してみると、これもすでにフォルダがあったみたいです。改めてインストールしました。

▼setxで環境変数を設定しておきます。

Visual Studioのインストール

▼ダウンロードはこちらから

https://visualstudio.microsoft.com/ja/downloads/

 Visual Studio 2019のDesktop development with C++が必要です。既にインストールしていたので、インストーラを起動して確認しておきました。

▼インストーラの「変更」を選択すると、設定を確認できます。

▼C++によるデスクトップ開発が既にインストールされている状態です。

Open CVのインストール

▼こちらのリンクをクリックすると、ダウンロードが始まります。

https://github.com/ros2/ros2/releases/download/opencv-archives/opencv-3.4.6-vc16.VS2019.zip

 ダウンロードしたファイルを解凍後、Cドライブ直下に移動しておきます。

▼移動した状態

▼環境変数を設定しておきます。

dependenciesのインストール

▼cmakeをインストールします。

▼こちらのページから、必要なパッケージをダウンロードします。

https://github.com/ros2/choco-packages/releases/tag/2022-03-15

▼必要なパッケージはこちら

  • asio.1.12.1.nupkg
  • bullet.3.17.nupkg
  • cunit.2.1.3.nupkg
  • eigen-3.3.4.nupkg
  • tinyxml-usestl.2.6.2.nupkg
  • tinyxml2.6.0.0.nupkg

▼ダウンロードしたパッケージをインストールします。「<PATH\TO\DOWNLOADS\>」の部分は、環境に合わせてください。

 私の場合はユーザー名がmgs_1で、C:\Users\mgs_1\Downloadsにしました。

▼ちなみに、パッケージが足りていないとエラーが出ました。

▼さらにインストールします。pipをアップグレードしないとエラーが出ました。

xmllintのインストール

▼ダウンロードページはこちら

https://www.zlatkovic.com/pub/libxml/64bit/

 libxml2-2.9.3-win32-x86_64.7zをダウンロードしました。推奨されている通りCドライブ直下にxmllintフォルダを作成して、そこで解凍しました。

▼解凍後のフォルダはこちら

 「Add C:\xmllint\bin to the PATH」とのことだったので、環境変数のPathに、C:\xmllint\binを追加しました。

Qt5のインストール

 推奨されていた5.12.x Offline Installersからインストールしました。かなり時間がかかりました。

▼インストール後、環境変数を設定しました。

 rqt_graphを使う場合はGraphvizが必要とのことだったので、これもインストールしておきます。ノード間通信に関するものだそうです。

▼graphviz-9.0.0 (64-bit) EXE installerをダウンロードしました。

https://graphviz.org/download/

 インストーラに環境変数の追加について聞かれるので、追加しておきました。

ROS2のインストール

▼ダウンロードはこちらから

https://github.com/ros2/ros2/releases

 今回はros2-iron-20240209-windows-release-amd64.zipをダウンロードしました。

▼C:\dev\ros2_ironフォルダに配置しました。

 セットアップをするのに call C:\dev\ros2_iron\local_setup.bat を実行するように書かれていました。しかし、callが定義されていないというエラーが出ていました。

▼callをつけずにbatファイルを実行すると、以下のエラーが出ました。

 ps1ファイルを実行してから、ros2コマンドを実行するとうまくいきました。

▼こちらのコマンドだとうまくいきました。

▼Hello WorldがPublishされています!

 なお新しくPowerShellを開くと、setupを実行しなければros2が定義されていない状態になっていました。

▼talkerを起動した状態で、別のPowerShellでlistenerも起動してみました。

▼talkerのメッセージを受信しています!

追記

 後日、別のPowerShellを起動してみるとコマンドをすんなり実行できなかったので再度検証してみました。

▼例えばlocal_setup.ps1を実行していない状態でros2コマンドを実行しようとすると、認識されていませんでした。

▼local_setup.ps1も、実行ポリシーを変更しなければ実行できませんでした。

 ポリシーを変更してから、local_setup.ps1を実行すると、ros2コマンドを呼び出せました。

▼以下の順番でコマンドを実行しました。

▼talkerを実行できています。

最後に

 目次を見ると、インストールするものが多いですね。バージョン依存が心配になります。

 ひとまずInstallationのページはこれでOKかなと思います。まだ簡単なサンプルしか実行していないので、次はチュートリアルを試してみます。

▼チュートリアルのページはこちら

https://docs.ros.org/en/iron/Tutorials.html

 Raspberry Piにも環境を構築したいところです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です