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勉強記まとめ
この勉強記は以下のページでまとめてます。