ROS勉強記その7:Raspberry Pi ロボットの起動をlaunchファイルにまとめる

投稿日:2023年4月17日
最終更新日:2023年4月17日

Raspberry Pi 4+ROSの起動処理をlaunchファイルにまとめてみる

これまでROSをつかってラズパイでPS4コントローラとの接続&DCモータの制御、カメラモジュールとの接続などの処理を行ってきたが、ひとつひとつをターミナルから起動していると時間がかかって面倒くさい。ということで、いったんここまでの処理をlaunchファイルにまとめてみる。

launchファイルにまとめることで、roslaunchで実行すればlaunchファイルに記述したノードを一度に起動してくれる。また、pigpiodやds4drvの起動はROSのlaunchファイルにはまとめられないため(ROS用のパッケージではないので)、こちらもシェルスクリプトにまとめた。

ちなみに一つ一つの処理については前回までのブログを参照。

 

実行環境

Raspberry Pi 4 Model B / 4GB

Ubuntu Server 20.04.5 LTS(64-bit)

 

pigpiodやds4drvの起動をシェルスクリプトにまとめる

まず、ROSのノードを起動する前に、pigpiodの起動&ds4drvの起動&PS4コントローラの接続をする必要がある。ということで、この2つの処理をinit_robot.sshという名前のシェルスクリプトにまとめた。内容は以下の通り。

#!/bin/bash
sudo pigpiod
sudo ds4drv

実行前に実行権限をつけるのを忘れずに。

chmod +x init_robot.sh

これでsshファイルが置いてあるディレクトリで以下を実行すれば、pigpiodが起動&ds4drvが実行されてPS4コントローラの接続街になるので、前回と同様に接続すればOK。

./init_robot.sh

 

ROSノードの起動をlaunchファイルにまとめる

今回はdc2_joyパッケージのディレクトリにlaunchという名前でディレクトリを作成して、以下の内容のlaunchファイルをdc2_joy.launchという名前で作成した。

<launch>
   <include file="$(find raspicam_node)/launch/camerav1_1280x720.launch"/>
   <node name="joy" pkg="joy" type="joy_node" output="screen"/>
   <node name="dc2_joy" pkg="dc2_joy" type="pwm_2motors.py" output="screen"/>
</launch>

なお、raspicam_nodeについては、ノード自体を起動するわけではなくincludeを使って、raspicam_nodeのlaunchファイルを実行してからjoyとdc2_joyのノードを起動させている。なお、roscoreについてはlaunchファイルに記述していなくても自動的に起動される。

実行するときは、以下を実行するだけ。

roslaunch dc2_joy dc2_joy.launch

これで、シェルスクリプトとroslaunchを実行すればロボットを動かせるようになった。今後は起動時に実行したいノードが増えたら、このlaunchファイルに追記していきたい。

 

ROS勉強記まとめ

この勉強記は以下のページでまとめてます。

ROS(Robot Operating System)勉強記 まとめ


投稿者: wakky

映画と旅行が大好きなエンジニア。お酒、ゲーム、読書も好き。

コメントを残す

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

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください