ROS2のturtlebot2_demoを動かすときにハマったこと
ROS2の公式ページのtutrialsの中にturtlebot2のデモをやっと動かせたので、そのときにハマったことを残しておきます。
環境はUbuntu18.04です
とりあえず、公式通り動かしてみる
launch `ros2 pkg prefix turtlebot2_teleop`/share/turtlebot2_teleop/launch/turtlebot_joy.py
動きませんでした。
ということで、もう一つの起動方法を試しました。
端末を立ち上げて、以下を入力
$ ros2 run turtlebot2_drivers kobuki_node
もう一つ端末を立ち上げて
$ ros2 run joy joy_node
これも、エラーは出ないけど動きませんでした。
解決方法
launchファイルを読んでみると、ros2 runでの起動時に立ち上げてたのは、
- turtlebotの起動
- コントローラーのドライバーみたいなやつ(間違ってたらごめんなさい)
の2つで、コントローラーからturtlebotにメッセージを送るノードが足りてなかったようです。
以下に、起動できたときのコマンドを残しておきます。
1つ目の端末
$ export ROS1_DISTRO=melodic && source /opt/ros/$ROS1_DISTRO/setup.bash
$ source ~/ros2_ws/install/local_setup.bash
$ ros2 run turtlebot2_drivers kobuki_node
2つ目の端末でコントローラーを接続
$ sudo ds4drv
3つ目の端末
$ export ROS1_DISTRO=melodic && source /opt/ros/$ROS1_DISTRO/setup.bash
$ source ~/ros2_ws/install/local_setup.bash
$ ros2 run joy joy_node
4つ目の端末
$ export ROS1_DISTRO=melodic && source /opt/ros/$ROS1_DISTRO/setup.bash
$ source ~/ros2_ws/install/local_setup.bash
$ ros2 run teleop_twist_joy teleop_node
なお、以下の2つは毎回打つのがめんどくさければ、.bashrcに書いてしまって問題ないと思われる。
$ export ROS1_DISTRO=melodic && source /opt/ros/$ROS1_DISTRO/setup.bash
$ source ~/ros2_ws/install/local_setup.bash
端末に入力するときに、1つ目を打ったあと、2つ目を打つと、何か出るかもしれないが、もう一度入力すれば、問題ない。
最後に
今回、デモを動かすのにPS4コントローラーを使いました。
PS4コントローラーではR1ボタンを押しながら右スティックで操作できましたが、非常に使いづらいかったです。
今後、コード読みながらPS4コントローラーに対応させれたらなとおもいます。(もうあるかもしれない)