Jetson Nano Mouseを動かしてみよう

Raspberry Pi MouseのROS 2サンプルをJetson Nano Mouseで使う方法

Raspberry Pi MouseのROS 2サンプルをJetson Nano Mouseで使う方法 Jetson Nano Mouseを動かしてみよう

d-satoです。Jetson Nano Mouseを動かしてみようの連載の第2回の後編です。ROSについての前編はこちらです。
前回はJetson Nano Mouseのセットアップをして実際に機械学習を活用したサンプルプログラムを動かせるようにするまでを紹介しました。今回はJetson Nano MouseをROS/ROS 2のインターフェース経由で操作する方法を紹介します。

この連載については第1回の「Jetson Nano Mouseのセットアップ方法」の記事にて紹介していますのでそちらをご覧ください。

この記事ではROS 2 Dashingのインストール方法を簡単に紹介した後に、Raspberry Pi Mouse制御用のROS 2パッケージをJetson Nano Mouseで使う方法を紹介します。なおROS MelodicとROS 2 Dashingは同じJetson Nano内にインストールできますので環境変数の切り替え等の作業を行えば共存できます。

この記事ではROS/ROS 2についての説明を省略します。そもそもROSやROS 2がどういうものなのかはROSの公式ドキュメントROS 2の公式ドキュメント、書籍等でご確認ください。

紹介するサンプルについて

今回紹介するサンプルはRaspberry Pi Mouse用に開発されたロボット制御用のROSパッケージサンプル集のROSパッケージの2つです。

ロボット制御用のROSパッケージ: https://github.com/rt-net/raspimouse2

サンプル集のROSパッケージ: https://github.com/rt-net/raspimouse_ros2_examples

Jetson Nano Mouseはアールティの車輪型プラットフォームロボットのひとつです。すでに販売しているRaspberry Pi Mouseと足回り(モータやタイヤなどの走行に関わる駆動部およびそのフレーム)は共通部品で、ソフトウェアインターフェースに関しても概ね同じになるように設計されています。
そのため、Raspberry Pi Mouseのソフトウェアに関してもほぼそのままJetson Nano Mouseで活用することができます。Raspberry Pi Mouseを使っていて「ラズパイをJetsonに置き換えられたらなあ」と思ったときはJetson Nano Mouseを入手するとソフトウェアに大きく手を加えずにJetson Nano Mouseに移行できます。

このサンプルの実行に必要なもの

このサンプルの実行には以下のものと十分な実験スペースが必要です。

  1. セットアップ済みJetson Nano Mouse
  2. Jetson Nano Mouse用電源(バッテリでも電源変換ケーブルつきACアダプタでも可)
  3. 操作用ノートパソコン
  4. ゲームパッド(オプション)

Jetson Nanoは第1回の記事でセットアップしたOSで動かすことを想定しています。
また今回紹介する例では別売のUSB接続の無線LANアダプタを取り付けています。

今回はゲームパッドにロジクール社のF710を使用しています。なくても問題ありません。

ROS 2のインストール

2020年11月12日現在、Jetson NanoのOS(L4T)はUbuntu 18.04がベースとなっています。

今回はUbuntu 18.04向けにリリースされているROS 2のディストーションのうち、LTSバージョンのROS 2 Dashing Diademata(以下、ROS Dashing)を使用します。

ROS Dashing公式のインストール方法の資料はこちらで公開されています。

404: Not Found
a community-maintained index of robotics software

また、「ラズパイマウスでROS2動かしてみた」の連載では日本語でインストール方法を説明しています。

Raspberry Pi 4 にROS 2をインストールする
このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS2を動かしていきます。今回はラズパイマウス(厳密に言うと、Raspberry Pi 4 Model BにインストールしたUbuntu 18.04)にROS 2をインストールします。

今回はインストーラを使ったインストール方法で説明をします。

まずインストーラをダウンロードするためにgitコマンドを使用するので以下のコマンドでインストールします。

sudo apt install -y git

以下のコマンドを実行してインストーラをダウンロード&実行してROSをインストールします。環境にもよりますが完了までは10分程度かかる場合があります。

git clone https://github.com/Tiryoh/ros2_setup_scripts_ubuntu.git
./ros2_setup_scripts_ubuntu/ros2-dashing-desktop-main.sh

インストーラが問題なく実行できれば以下のメッセージが表示されます。

Success installing ROS dashing
Run 'source /opt/ros/dashing/setup.bash'

以下のコマンドでインストールした環境変数等の設定を読み込みます。

source /opt/ros/dashing/setup.bash

以上でROSのインストールは完了です。

追加でROSのパッケージをダウンロードしてくるワークスペースを用意しておきます。

mkdir -p ~/ros_ws/dashing/src

これでワークスペースの作成も完了です。

使用するROSパッケージのインストール

次は使用するROSパッケージのインストールをします。

まずはGitHubから必要なGitリポジトリをダウンロードしてきます。

cd ~/ros_ws/dashing/src
git clone https://github.com/rt-net/raspimouse2
git clone https://github.com/rt-net/raspimouse_ros2_examples

次に依存関係にあるソフトウェアと追加で必要なソフトウェアをインストールします。

rosdep install -r -y -i --from-paths .
sudo apt install ros-dashing-teleop-twist-keyboard

rosdepをはじめとするROSのパッケージ管理ツールについては以下のブログにまとまっています。詳しく知りたい方はこちらでご確認ください。

ROSパッケージ管理に使うバージョン管理ツールの違いとその使い方 | Memoteki
ROS/ROS2のパッケージ管理のためにバージョン管理について調べていると、vcstools, wstool, rosinstall, vcstoolなど様々なバージョン管理ツールやバージョン管理のためのライブラリが出てきます。それぞれの違

ここまで必要なソフトウェアは全てダウンロードできているはずなので、colconを使って~/ros_ws/dashing/src以下のROSパッケージをビルドします。

cd ~/ros_ws/dashing
colcon build --symlink-install
source ./install/local_setup.bash

以上でROSパッケージのインストールは完了です。

ROSサンプルの実行

Raspberry Pi Mouseの実機を動かすためのソフトウェアは基本的にJetson Nano Mouseでそのまま利用できます。
今回はRaspberry Pi MouseのROSサンプルを動かす方法を行紹介しますが、基本的に以下に書かれているREADMEにそってそのまま動かす方法を紹介しています。

GitHub - rt-net/raspimouse_ros2_examples: ROS 2 examples for Raspberry Pi Mouse
ROS 2 examples for Raspberry Pi Mouse. Contribute to rt-net/raspimouse_ros2_examples development by creating an account ...

なおJetson Nano Mouseには2020年11月12日現在LiDARを取り付けるオプションがありません。よってLiDARとLiDARマウントに取り付けて使用する前提のIMUのサンプルは使用できません。
(ソフトウェアは対応していますので自作のマウントを取り付ければ使用できます。)

(2022年11月24日追記)
2021年にJetson Nano Mouseのオプションの1つとして「マルチLiDARマウント」を発売しました。メーカ各社が提供するLiDARを取り付けるためのマウントパーツです。
USB出力9軸IMUセンサモジュールも同時に搭載が可能です。※LiDAR、センサは別売
ROSのSLAMやNavigationパッケージの使用に適しています。

Jetson Nano Mouse オプションキット No.1 [マルチLiDARマウント] [RT-JetsonNanoMouse-OP-1] - ¥5,500.- : アールティロボットショップ, ロボットキット、部品は専門スタッフがいるアールティへ!
アールティロボットショップ Jetson Nano Mouse オプションキット No.1 - ■概要 Jetson Nano Mouseに、メーカ各社が提供するLiDARを取り付けるためのマウントパーツです。 USB出力9軸IMUセンサモ...

今回使用するサンプル集のROSパッケージの使い方については以下のページで詳しく説明しています。

ラズパイマウスのROS 2パッケージをインストールする
このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS 2を動かしていきます。今回はラズパイマウスのROS 2パッケージをインストールします。
ラズパイマウスをROS 2 & ゲームコントローラで動かす
このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS 2を動かしていきます。今回はラズパイマウスのROS 2サンプル集をインストールします。インストール後はゲームコントローラでラズパイマウスを動かします。

キーボードからロボットを操作

まずは動かしてみましょう。モータのハードウェアスイッチをオンにします。

スイッチの先が外側(基板上スイッチ付近にONと書いてある方)に向いていたらモータのスイッチはオンです。

モータのハードウェアスイッチ

端末を2つ起動してそれぞれSSHでJetson Nano Mouseにログインしておきます。

どちらの端末でも以下のコマンドを実行してROSの設定を読み込んでおきます。

cd ~/ros_ws/dashing
source install/local_setup.bash

コマンドを実行してROSの設定を読み込む

1つ目の端末(上の図の左側)では

ros2 run raspimouse raspimouse

と実行します。
その後、2つ目の端末(上の図の右側)では

ros2 lifecycle set raspimouse configure
ros2 lifecycle set raspimouse activate
ros2 service call /motor_power std_srvs/SetBool '{data: true}'

とコマンドを実行します。

1つ目の端末では、raspimouseノードを起動し、2つ目の端末での実行結果が表示されています。
Turned motors onと表示されていればエラーなくモータがオンになっています。

実行結果

2つ目の端末上では、raspimouseノードのライフサイクルの状態を変更し、モータをオンにしています。
(ここではROS 2のライフサイクルについては説明を省略します。ライフサイクルについての詳細は https://design.ros2.org/articles/node_lifecycle.html を参照してください。)

実行結果

このまま2つ目の端末上で

ros2 run teleop_twist_keyboard teleop_twist_keyboard

とコマンドを実行します。

実行結果

デフォルトのパラメータでは早すぎるので速度を下げますXキーを連打して0.15m/s以下まで下げます。

速度を下げる

このまま2つ目の端末上でIで前進、>で後進、Jで左旋回、Lで右旋回、Kで停止の司令をロボットに送ることができます。

ゲームパッドからロボットを操作

つぎにゲームパッドからロボットを操作します。

ゲームパッドはROS Dashingとrt-net/raspimouse_ros2_examplesがインストールされたノートパソコンにつなぎます。
(F710はそのままではJetPack 4.3をインストールしたJetson Nanoで認識されないためです。NVIDIAのフォーラムでも報告があります。)

今回も端末を2つ起動します。1つ目(以下の図の左側)はSSHでJetson Nano Mouseにログインして、ROSの設定を読み込んでおきます。2つ目(以下の図の右側)は操作用のノートパソコン内でROSの設定を読み込んでおきます。

ROSの設定を読み込む

1つ目の端末(上の図の右側)では

ros2 run raspimouse raspimouse

と実行します。

その後、2つ目の端末(上の図の左側)では

ros2 launch raspimouse_ros2_examples teleop_joy.launch.py joydev:="/dev/input/js0" joyconfig:=f710 mouse:=false

とコマンドを実行します。

teleop_joy.launch.pyがraspimouseノードのライフサイクルの状態を変更し、モータをオンにしているので、ライフサイクルの状態を変更するコマンドは実行する必要がありません。

実行結果

L1を押しながら左右のジョイスティックを操作してロボットを操作できます。

ジョイスティックでロボットを操作

※動画は前編で紹介したROS Melodicのraspimouse_ros_examplesを実行したときの様子です。ほぼ同じように動きます。さらにrqtを使ってカメラの状態やセンサ状態を表示しています。

まとめ

前回に引き続きJetson Nano MouseはRaspberry Pi Mouseのソフトウェア資産を活用できることを紹介しました。
今回はRaspberry Pi MouseのROS 2用のソフトウェアをほぼそのまま実行してみました。
次回は先月公開したGazeboでのシミュレーション用パッケージについて紹介する予定です。

今回紹介したROS 2のソフトウェアについては触れませんが、第1回第2回前半にて紹介したソフトウェアについてブログよりも詳しく説明するセミナーを開催しております。定期開催予定です。

https://rt-net.jp/service/seminar-jnmouse/

ぜひJetson Nano Mouseのご購入をご検討ください!

Jetson Nano Mouse [RT-JetsonNanoMouse] - ¥77,000.- : アールティロボットショップ, ロボットキット、部品は専門スタッフがいるアールティへ!
アールティロボットショップ Jetson Nano Mouse - ◆お知らせ◆ こちらの製品は受注生産となります。 2台以上ご希望の場合はご相談ください。 また、Jetson Nanoの市場在庫が僅少となっておりますので、Jetson N...
タイトルとURLをコピーしました