3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ROS 2Advent Calendar 2024

Day 4

ROS2 Humble 上で Joystick F310 を使いルンバを操作

Last updated at Posted at 2024-11-25

初めに

 ROS2 Humble 上で、ラズパイにつないだルンバをJoystickで操作できるようにします。

準備

ラズパイ自動ログイン、リモートログイン

 Ubuntu や ROS2 はラズパイとリモート操作用PCにインストール済みの前提で説明します。ラズパイは電源投入でログインさせるため、設定(settings)>users>の中で自動ログインに設定します。また、リモートログインするために、ラズパイに sshサーバー をインストールします。

sshサーバーのインストール
sudo apt install openssh-server
sudo apt install avahi-daemon

リモートPCの端末からラズパイにログインする場合は以下の通りです。xx@yy はラズパイのユーザー名等です。通信がつながるとラズパイのpasswordを聞かれるので、入力します。ログイン出来たら、プロンプトが2行目のように変わります。

リモートPCの端末からラズパイにログイン
ssh xx@yy.local
xx@yy:~:$

ラズパイ終了する場合は、リモートPCからshutdownして下さい(本当に終了?とか聞かれないので注意)。

リモートPCの端末からラズパイを終了
shutdown -h now

次に、ルンバのROS2ドライバで定番の AutonomyLab/create_robot から ROS2 の version に合わせたブランチ(foxy や humble)を選んで、github の指定通りラズパイにインストールします。

ラズパイのUSBとルンバの通信端子をつなぐTTL変換ボードの接続は色々な所で出ていますので、それを参考に接続します。以上で、準備完了です。

実行

### 指令待ち状態になるかの確認
ノートPCから ssh でラズパイに入り、ラズパイ上で以下を実行すれば指令待ち状態になります。

ラズパイ上で指令待ち状態にする
ros2 launch create_bringup create_2.launch

このとき、端末上で以下のメッセージを確認できれば接続はOKです。メッセージが大量に速く流れるので、途中でCtrl-Cで止めて確認してもいいでしょう。

接続後に確認すべきメッセージ
... 大量のメッセージ
... Connection established.
... Battery level ##.# %
... Ready.
... 大量のメッセージ

 接続されていない場合は、ルンバの電源ボタンを押すと、あっさり動いたりします。また、USBシリアル変換ボードがだめで接続されない場合があります(私は安物のボードを買って、時間を無駄にしました。ちょっと値段が高めのボードを買って使ったら、一発でつながりました)。この場合、「ルンバが power-off か確認しろ」、みたいなメッセージがでて、Retryを繰り返します。

接続確認後、指令を出して動かす

 接続できたら、以下のコマンドで動くはずです(ラズパイでもノートPCでも、どちらでコマンドを発行しても動きます)。

直進速度と回転速度を指示する
ros2 topic pub /cmd_vel geometry_msgs/Twist '{linear: {x :0.1}, angular: {z: 0.3}}'

ここで、:(コロン)の後に必ず、半角スペースを入れる必要があります。入れないと、エラーが出ます。私はこれで、時間を無駄にしました。

### キーボードで操作する
コマンドラインではなく、キーボードで操作したければ turtlebot3 の teleop_keyboard が使えます。

tutlebot3 インストール
sudo apt install ros-humble-turtlebot3-msgs
sudo apt install ros-humble-turtlebot3
キーボードでルンバを動かす
export TURTLEBOT3_MODEL=burger
ros2 run turtlebot3_teleop teleop_keyboard

ジョイスティックで操作する

 ジョイスティック用のプログラムをインストールします。

ジョイスティック用プログラム インストール
sudo apt install ros-humble-joy-linux
sudo apt install ros-humble-joy-linux-dbgsym

Joystick F310 をUSBで有線で接続します。認識されたかどうかは以下で確認します。ついでに、権限も付与します。jstest 実行中にスティックをいじって、値が変わればOKです。

Joystick の確認と権限付与
lsusb           # F310 が表示される
ls /dev/input/  # js0 が表示される
sudo chmod a+rw /dev/input/js0  # 権限付与
#  以下を実行し、Joystickを操作すると表示が変化
jstest /dev/input/js0

なお、F310のスティック操作とAxes番号との対応は以下の通りでした。ボタン操作とButtons番号の対応も調査したが、説明は省略します。

# Joystick と Axes 番号の対応(F310限定)
# 左スティック 左右 0  上下 1
# 右スティック 左右 3 上下 4
# 向こう側の側面 左 2 右 5
# 十字キー   左右 6 上下 7

端末で以下を入力すると、ジョイスティック操作は /joy として発行されます。

ros2 run joy_linux joy_linux_node 

別端末で以下を入力すると、発行内容が確認できます。

ros2 topic echo /joy

このままでは、ルンバは操作内容を受け取れないので、/joy の情報を /cmd_vel へ変換する必要があります。プログラムは、@moriitkys(CHE MOT) さんの ROS2 Joy Stick Controller を使って Turtlesim を動かす の記事が参考になります。ノートPC上で以下の操作をすればジョイスティックでルンバが動きます。

cd ~
mkdir ~/rmba_ws/src
cd ~/rmba_ws/
ros2 pkg create --build-type ament_python --node-name joy_translate_node joy_translate
...
... cd で該当フォルダに移動し、
... joy_translate_node.py に
... 適当なプログラムを書き込み、保存
...
cd  ~/rmba_ws/
colcon build
source install/setup.bash
ros2 run joy_translate joy_translate_node
3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?