Jetson Nano Mouseを動かしてみよう

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

Jetson Nano Mouseを動かしてみよう

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

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

この記事ではJetson Nano MouseへROS Melodicと使用するROSパッケージのインストール方法を簡単に紹介した後に、Raspberry Pi MouseのROSパッケージをJetson Nano Mouseで使う方法を紹介します。

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

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

今回紹介するサンプルは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に移行できます。

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

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

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

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

ゲームパッドは家庭用ゲーム機のものを使用しています。なくても問題ありません。

ROSのインストール

最新のセットアップ方法についてはRT Software Tutorialsにて紹介しています。https://rt-net.github.io/tutorials/jnmouse/ros/install.html

ROSの公式インストール方法はこちらのROS wikiにて紹介されています。

melodic/Installation/Debian - 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のパッケージ管理ツールについては以下のブログにまとまっています。詳しく知りたい方はこちらでご確認ください。

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

ここまで必要なソフトウェアは全てダウンロードできているはずなので、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にそってそのまま動かす方法を紹介しています。

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

なお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の説明は様々なサイトにありますが、例えば以下の情報が参考になると思います。

複数のPCを用いた分散処理 | ロボット理工学科 演習
目的 ROSは容易に分散処理できるように設計されています.本演習では,複数のPCで計算する方法について学びます

今回も端末を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でのシミュレーションについても今後紹介していきます。

ぜひご購入をご検討ください!

Jetson Nano Mouse [RT-JetsonNanoMouse] - ¥77,000.- : アールティロボットショップ, ロボットキット、部品は専門スタッフがいるアールティへ!
アールティロボットショップ Jetson Nano Mouse - ~ROSやAIの学習に最適なステレオカメラ搭載の車輪型ロボット~ Jetson Nano Mouse(ジェットソンナノマウス)はロボット制御技術とAI関連技術を同時に学ぶことができる小型二輪移動ロボットです。 広角カメラ2台を前方に搭載しており、Je...
タイトルとURLをコピーしました