d-satoです。Jetson Nano Mouseを動かしてみようの連載の第2回です。
前回はJetson Nano Mouseのセットアップをして実際に機械学習を活用したサンプルプログラムを動かせるようにするまでを紹介しました。今回はJetson Nano MouseをROS/ROS 2のインターフェース経由で操作する方法を紹介します。今回は前編(ROS)と後編(ROS 2)にわけています。
この連載については第1回の「Jetson Nano Mouseのセットアップ方法」の記事にて紹介していますのでそちらをご覧ください。
この記事ではJetson Nano MouseへROS Melodicと使用するROSパッケージのインストール方法を簡単に紹介した後に、Raspberry Pi MouseのROSパッケージをJetson Nano Mouseで使う方法を紹介します。
紹介するサンプルについて
今回紹介するサンプルはRaspberry Pi Mouse用に開発されたロボット制御用のROSパッケージとサンプル集のROSパッケージの2つです。
ロボット制御用のROSパッケージ: https://github.com/ryuichiueda/raspimouse_ros_2
サンプル集のROSパッケージ: https://github.com/rt-net/raspimouse_ros_examples
Jetson Nano Mouseはアールティの車輪型プラットフォームロボットのひとつです。すでに販売しているRaspberry Pi Mouseと足回り(モータやタイヤなどの走行に関わる駆動部およびそのフレーム)は共通部品で、ソフトウェアインターフェースに関しても概ね同じになるように設計されています。
そのため、Raspberry Pi Mouseのソフトウェアに関してもほぼそのままJetson Nano Mouseで活用することができます。Raspberry Pi Mouseを使っていて「ラズパイをJetsonに置き換えられたらなあ」と思ったときはJetson Nano Mouseを入手するとソフトウェアに大きく手を加えずにJetson Nano Mouseに移行できます。
このサンプルの実行に必要なもの
このサンプルの実行には以下のものと十分な実験スペースが必要です。
- セットアップ済みJetson Nano Mouse
- Jetson Nano Mouse用電源(バッテリでも電源変換ケーブルつきACアダプタでも可)
- 操作用ノートパソコン
- ゲームパッド(オプション)
Jetson Nanoは第1回の記事でセットアップしたOSで動かすことを想定しています。
また今回紹介する例では別売のUSB接続の無線LANアダプタを取り付けています。
ゲームパッドは家庭用ゲーム機のものを使用しています。なくても問題ありません。
ROSのインストール
ROSの公式インストール方法はこちらのROS wikiにて紹介されています。
今回はインストーラを使ったインストール方法で説明をします。
今回使用するインストーラはcurl
を使用するので以下のコマンドでインストールします。
sudo apt install -y curl
以下のコマンドを実行してインストーラでROSをインストールします。環境にもよりますが完了までは10分程度かかる場合があります。
bash -c "$(curl -SsfL u.ty0.jp/ros-melodic-ros-base)"
インストーラが問題なく実行できれば以下のメッセージが表示されます。
Success installing ROS melodic Run 'source ~/.bashrc'
以下のコマンドでインストールした環境変数等の設定を読み込みます。
source ~/.bashrc
以上でROSのインストールは完了です。
追加でROSのパッケージをダウンロードしてくるワークスペースを用意しておきます。
mkdir -p ~/catkin_ws/src cd ~/catkin_ws catkin init
これでワークスペースの設定も完了です。
使用するROSパッケージのインストール
次は使用するROSパッケージのインストールをします。
まずはGitHubから必要なGitリポジトリをダウンロードしてきます。
cd ~/catkin_ws/src git clone https://github.com/rt-net/raspimouse_ros_examples git clone https://github.com/ryuichiueda/raspimouse_ros_2
次に依存関係にあるソフトウェアをインストールします。
rosdep install -r -y -i --from-paths .
rosdepをはじめとするROSのパッケージ管理ツールについては以下のブログにまとまっています。詳しく知りたい方はこちらでご確認ください。

ここまで必要なソフトウェアは全てダウンロードできているはずなので、catkin-toolsを使って~/catkin_ws/src
以下のROSパッケージをビルドします。
cd ~/catkin_ws catkin build catkin source
以上でROSパッケージのインストールは完了です。
ROSサンプルの実行
Raspberry Pi Mouseの実機を動かすためのソフトウェアは基本的にJetson Nano Mouseでそのまま利用できます。
今回はRaspberry Pi MouseのROSサンプルを動かす方法を行紹介しますが、基本的に以下に書かれているREADMEにそってそのまま動かす方法を紹介しています。
なおJetson Nano Mouseには2020年9月11日現在LiDARを取り付けるオプションがありません。よってLiDARとLiDARマウントに取り付けて使用する前提のIMUのサンプルは使用できません。
(ソフトウェアは対応していますので自作のマウントを取り付ければ使用できます。)
キーボードからロボットを操作
まずはとりあえず動かしてみましょう。モータのハードウェアスイッチをオンにします。
スイッチの先が外側(基板上スイッチ付近にONと書いてある方)に向いていたらモータのスイッチはオンです。
端末を2つ起動してそれぞれSSHでJetson Nano Mouseにログインしておきます。
どちらの端末でも以下のコマンドを実行してROSの設定を読み込んでおきます。
cd ~/catkin_ws catkin source
1つ目の端末(上の図の右側)では
roslaunch raspimouse_ros_examples teleop.launch key:=true
と実行します。
その後、2つ目の端末(上の図の左側)では
rosservice call /motor_on
とコマンドを実行します。
1つ目の端末はコマンドを実行すると以下の図のようにキーボード入力をロボットの移動司令に変換して送信するROSノードが起動します。
2つ目の端末では、1つ目の端末で無事にノードが起動できていれば、以下のようにモータをオンにできたというメッセージが表示されます。
1つ目の端末上でIで前進、>で後進、Jで左旋回、Lで右旋回、Kで停止の司令をロボットに送ることができます。
ゲームパッドからロボットを操作
つぎにゲームパッドからロボットを操作します。
ゲームパッドはロボットに直接つなぐか、ROSがインストールされたノートパソコンにつなぎます。
今回はROSがインストールされたノートパソコンにつなぐ例を紹介します。
ROS_MASTER_URI
の設定をしておきます。
Jetson Nano MouseのIPアドレスが192.168.100.3
であれば
export ROS_MASTER_URI=http://192.168.100.3:11311
とZshやBashの設定ファイルに書いておきます。ROS_MASTER_URI
の説明は様々なサイトにありますが、例えば以下の情報が参考になると思います。
今回も端末を2つ起動します。1つ目(以下の図の右側)はSSHでJetson Nano Mouseにログインして、ROSの設定を読み込んでおきます。2つ目(以下の図の左側)は操作用のノートパソコン内でROSの設定を読み込んでおきます。
1つ目の端末(上の図の右側)では
roslaunch raspimouse_ros_examples teleop.launch
と実行します。
その後、2つ目の端末(上の図の左側)では
roslaunch raspimouse_ros_examples teleop.launch joy:=true mouse:=false joyconfig:="dualshock4"
とコマンドを実行します。
L1を押しながら左右のジョイスティックを操作してロボットを操作できます。
※動画内ではraspimouse_ros_examplesを実行する以外にさらにrqtを使ってカメラの状態やセンサ状態を表示しています。
まとめ
Jetson Nano MouseはデバイスドライバがRaspberry Pi Mouseとある程度互換性を持つように設計されているため、Raspberry Pi Mouseのソフトウェア資産を活用できます。
今回はRaspberry Pi MouseのROSサンプルもそのまま実行できることを紹介しました。
長くなってしまったので一度個々で区切りますが、Jetson Nano Mouseに搭載されているカメラを使ったROSパッケージやGazeboでのシミュレーションについても今後紹介していきます。
ぜひご購入をご検討ください!