ラズパイマウスでROS2動かしてみた 技術情報・開発日誌

ラズパイマウスのROS 2パッケージをインストールする

ラズパイマウスのROS 2パッケージをインストールする ラズパイマウスでROS2動かしてみた

こんにちはshotaです。このシリーズではRaspberry Pi Mouse(ラズパイマウス)でROS 2を動かしていきます。

今回はラズパイマウスのROS 2パッケージをインストールします。

前回のおさらい

前回はラズパイマウスにROS 2をインストールしました。

今回はROS 2がインストールされた状態で作業を進めるので、前回の記事を忘れずにチェックしてください。

また、ROS 2パッケージ経由でブザーを鳴らしたりモータを回したりします。
デバイスドライバも忘れずにインストールしてください。

ワークスペースの作成

さて、今回インストールするパッケージはrt-net/raspimouse2です。

こちらのパッケージは2020/07/06時点ではバイナリパッケージとしてインストールできません(aptコマンドでインストールできません)。
rosdistroにPRがマージされたので、もう間もなくaptでインストールできると思います。

そのため、今回はパッケージをビルドしてインストールします。

まず、公式手順に従い、ビルドツール(colcon)をインストールし、ワークスペースを作成します。

# ビルドツールのインストール
$ sudo apt install python3-colcon-common-extensions

# ワークスペース作成
$ mkdir -p ~/ros2_ws/src
$ cd ~/ros2_ws

$ colcon build

ワークスペースの作成に成功すると、build、install、logというディレクトリが新たに作成されます。

$ cd ~/ros2_ws
$ ls
build  install  log  src

rt-net/raspimouse2パッケージのインストール

ワークスペースができたので、そこにパッケージをクローンし、ビルド、インストールします。

インストール手順はパッケージのREADMEにも記載されています。

パッケージのクローン

まず最初にraspimouse2パッケージをクローンし、rosdepコマンドで依存するパッケージをインストールします。

# Clone package
$ git clone https://github.com/rt-net/raspimouse2

# Install dependencies
$ rosdep install -r -y -i --from-paths .

rosdepコマンドを実行したときに下記のエラーが表示されたときは、指示に従いrosdepパッケージをインストールします。

Command 'rosdep' not found, but can be installed with:

sudo apt install python-rosdep2

rosdepパッケージのインストール

rosdepコマンドのエラーが出た場合は下記のコマンドを実行します。

$ sudo apt install python-rosdep2

$ sudo rosdep init
$ rosdep update

依存関係も忘れずにインストールしましょう。

$ cd ~/ros2_ws/src
$ rosdep install -r -y -i --from-paths .

パッケージのビルドとインストール

raspimouse2パッケージをビルドし、インストールします。

# Build & Install
$ cd ~/ros2_ws
$ colcon build --symlink-install
$ source ~/ros2_ws/install/setup.bash

colcon buildのオプションに–symlink-installを付けると、ファイルのシンボリックリンクincludeディレクトリに作成されます。

オプションを付けない場合は、ファイルのコピーincludeディレクトリに作成されます。

シンボリックリンクを使うことで、pythonファイルやlaunchファイル等のスクリプトファイルを編集した後、colcon buildを実行すること無く、編集後のスクリプトを実行できます。

raspimouse2パッケージの実行

raspimouse2パッケージのREADMEにあるQuick Startの項目に従いコマンドを実行します。
このQuick Startでは複数のターミナルを使用します。

SSHでラズパイマウスにログインしている場合は、複数回SSHでログインすればOKです。

まずは1つ目のターミナルでraspimouseノードを起動します。

# Terminal 1
$ source ~/ros2_ws/install/setup.bash
$ ros2 run raspimouse raspimouse

ブザーを鳴らす

続いて、2つ目のターミナルでraspimouseノードのライフサイクルの状態を変更します。

ROS 2のライフサイクルについては説明を省略します。ライフサイクルについての詳細はhttps://design.ros2.org/articles/node_lifecycle.htmlを参照してください。
$ source ~/ros2_ws/install/setup.bash
$ ros2 lifecycle set raspimouse configure
Transitioning successful

Transitioning successfulと表示されたら状態遷移成功です。これでraspimouseノードがInactive状態になりました。
この状態ではブザーを鳴らすことができますが、モータを回すことはできません。

次のコマンドを実行してブザーを鳴らします。

$ ros2 topic pub -1 /buzzer std_msgs/msg/Int16 '{data: 1000}'

# ブザーを止める
$ ros2 topic pub -1 /buzzer std_msgs/msg/Int16 '{data: 0}'

ブザーを1000Hzで鳴らすことができました。
数値を変えることでブザー音の周波数を変更できます。

モータを回す

次に、raspimouseノードの状態を更に変更して、モータを回します。

下記のコマンドを実行して、raspimouseノードをActive状態にします。

$ ros2 lifecycle set raspimouse activate
Transitioning successful

状態遷移に成功するとライトセンサのLEDが点灯します。

続いて、下記のコマンドを入力しモータ電源をONします。
ラズパイマウス本体にあるモータ電源スイッチもONしてください。

$ ros2 service call /motor_power std_srvs/SetBool '{data: true}'

下記のコマンドを入力してモータを回します。
安全のためタイヤは浮かしておきましょう。

# モータが回ります。大きな音が鳴るので気をつけてください
$ ros2 topic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.05, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.05}}'

# 走行速度が変わります。音は静かですがタイヤの回転が早いので気をつけてください
$ ros2 topic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.5, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.5}}'

# 走行速度を0にしてブレーキします
$ ros2 topic pub -1 /cmd_vel geometry_msgs/Twist '{linear: {x: 0.0, y: 0, z: 0}, angular: {x: 0, y: 0, z: 0.0}}'

最後にraspimouseノードの状態をInactiveに戻します。

$ ros2 lifecycle set raspimouse deactivate
# ここでモータの電源が切れる

Ctrl+Cを入力してraspimouseノードをシャットダウンします。

実行した動画

これらのコマンドを実行した動画がこちらです。
参考にしてください。

bashrcの編集

ターミナルを開くたびに

source ~/ros2_ws/install/setup.bash

を実行するのは面倒なので、
.bashrcにコマンドを追記し、ログイン時に自動でワークスペースを読み込むことも可能です。

# .bashrcに追加
source ~/ros2_ws/install/setup.bash

しかしワークスペースを複数作る場合は、.bashrcにコマンドを追記するのではなく、
手動でsetup.bashを読み込むことをオススメします。

また、新しくパッケージをビルドしたときも、setup.bashを忘れずに読み込みましょう。

まとめ

今回は

  • ビルドツールのcolconをインストールし、ワークスペースを作成しました
  • raspimouse2パッケージをビルドし、インストールしました
  • raspimouseノードを起動し、ブザーを鳴らし、モータを回しました

次回はラズパイマウスのROS 2サンプル集をインストールします。

タイトルとURLをコピーしました