Turtlebotパッケージのインストールと動作確認(Noetic)

目的

Turtlebot2を動かすためにパッケージをインストールし,動作を確認します.

パッケージのインストールと設定

Turtlebot2及びKinect v1を動かすためのパッケージをインストールします.Turtlebot2を開発したYujin RoboticsからROS Noeticに対応したパッケージが公開されていないため,Githubで公開されているオープンソースソフトウェアを利用してTurtlebot2を動かします.

まずは必要なパッケージ等をインストールします.

$ sudo apt update
$ sudo apt install git
$ sudo apt install ros-noetic-joy ros-noetic-ecl-build ros-noetic-ecl-threads ros-noetic-ecl-geometry ros-noetic-ecl-console ros-noetic-ecl-mobile-robot ros-noetic-ecl-devices ros-noetic-ecl-sigslots ros-noetic-ecl-command-line ros-noetic-ecl-streams ros-noetic-base-local-planner ros-noetic-move-base ros-noetic-kobuki-ftdi ros-noetic-rgbd-launch
$ sudo apt install python3-vcstool libusb-dev libftdi-dev pyqt5-dev-tools curl

次にPythonのパッケージを管理するためのツールであるpip3をインストールします.

$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python3 get-pip.py
$ pip3 install -U pip

ソースコードのホスティングサービスであるGithubからTurtlebot2関連のパッケージをダウンロードします.Githubからブラウザを介して,又はcloneコマンドでパッケージをダウンロードしても良いですが,今回は多くのパッケージをダウンロードする必要があるため,rosinstallを利用します.Githubからダウンロードしたいパッケージを.rosinstallファイルで定義し,vcsと呼ばれるバージョン管理システムを利用してまとめてダウンロードします.下記のコマンドを実行すると,Turtlebot2を利用するためのパッケージが「~/turtlebot_ws/src/」の下にダウンロードされます.

$ wget "https://drive.google.com/uc?export=download&id=11NWowPoZnP52Pnf27FRfQjPjKjn0gCF2" -O ./turtlebot.rosinstall
$ mkdir turtlebot_ws
$ cd turtlebot_ws
$ mkdir src
$ vcs import ./src < ~/turtlebot.rosinstall

一部のパッケージは,C++のコンパイラのバージョンを変更しないとビルドエラーとなります.
下記のファイルをエディタで開きましょう.

$ vim ~/turtlebot_ws/src/kobuki/kobuki_node/CMakeLists.txt

17行目に下記を追加してください.

add_compile_options(-std=c++14)

一部のPythonプログラムはPython3で実行するようになっていないため修正が必要です.

$ vim ~/turtlebot_ws/src/turtlebot/turtlebot_teleop/scripts/turtlebot_teleop_key

# 1行目を下記のように変更してください.

#!/usr/bin/env python3

ROS Noeticに対応していないパッケージを削除しましょう.修正しても良いですが,今回は使用しないため削除します.

$ rm -rIf src/turtlebot_apps/
$ rm -rIf src/yujin_ocs/yocs_waypoint_provider/
$ rm -rIf src/yujin_ocs/yocs_navigator/
$ rm -rIf src/turtlebot_create_desktop/create_gazebo_plugins/
$ rm -rIf src/linux_Peripheral_interfaces/libsensors_monitor/
$ rm -rIf src/kobuki/kobuki_auto_docking/

ダウンロードしたパッケージをビルドしましょう.

$ cd ~/turtlebot_ws
$ catkin_make

Turtlebot(kobuki)の通信ポート名を変更します.

$ rosrun kobuki_ftdi create_udev_rules
$ systemctl status systemd-udevd.service

ここまで処理が完了したら再起動しましょう.
ターミナルから再起動する場合には下記のコマンドを実行しましょう.

$ sudo reboot

以上でTurtlebot2を使用する準備が整いました.

安全の確保

ロボットを動かす際には,必ず下記の点に注意してください.

  • 衣服の巻き込み等に対応できる服装を着用すること
  • ロボットを持ち上げて運ぶ際には,不安定な部分を持たないこと
  • ロボットを動かす際には周りに声を掛けること
  • ロボットを動かす場合には可動範囲を予想し,その範囲に人や不要な物がないことを確認すること
  • ロボットが予想外の動きをした場合には,即座に停止させること
  • ロボットが異音,発熱,不審な挙動をした場合には,即座にロボットを停止させ,教員に連絡すること
  • 教員の指示に従うこと

0. 起動の準備

Turtlebot2の上にノートPCを載せましょう.動いているTurtlebotが停止すると,反動でノートPCが落ちてしまう可能性があるため,機体の真ん中に載せましょう.不安定ならば滑り止めシート等を利用してください.そして,ノートPCとTurtlebot2をUSBケーブルによって接続します.Turtlebot2及びKinectの2本USBケーブルがありますので両方ともノートPCに接続します.

Turtlebot2の電源をONにします.電源ボタンは機体の側面にあります.電源をONにすると,音が鳴ると共にStatus LEDが点灯します.
次に先ほどダウンロードしたパッケージ「turtlebot_bringup」に含まれている「minimal.launch」を実行し,Turtlebot2を動かすためのノードを立ち上げます.
Turtlebot2を使用する際には必要となりますので,下記のコマンドを実行してください.

$ cd ~/turtlebot_ws
$ source devel/setup.bash
$ roslaunch turtlebot_bringup minimal.launch

上記を実行するとTurtlebotから電子音が鳴ります.Turtlebotを動かす際には,上記を実行する必要があります.

1. ダッシュボード

Turtlebotとの通信状態を確認するためのlaunchファイルが用意されています.

$ roslaunch turtlebot_dashboard turtlebot_dashboard.launch

正常に起動したら左上の3つのアイコンが緑色になります.赤色や灰色の場合には,Turtlebot2との接続ができていない,もしくはTurtlebotとの通信ができていないことを表しています.USBケーブルが正常に接続できているか,roslaunchでminimal.launchを実行したかを確認してください.

次に,Turtlebotの状態を確認するために,左上の3つ並んだアイコンの中から一番左のアイコンをクリックします.そして,Turtlebotのバンパーを押してください.下記のようにメッセージ欄に「Wall Hit!」が出力されます.他にも,どのようなメッセージを受け取れるか試してみましょう.

turtlebot_dashboard

2. キーボードによる操作

turtlesimと同様に,キーボードによる操作するパッケージが用意されています.

$ roslaunch turtlebot_teleop keyboard_teleop.launch

端末に操作方法が出力されます.こちらを見て操作してみましょう.

3. Kinect

Turtlebot2にはmicrosoftから販売されているKinectが搭載されています.まずはKinectを使う準備をしましょう.最初に必要なソフトウェアをインストールしてください.

$ sudo apt install git-core cmake freeglut3-dev pkg-config build-essential libxmu-dev libxi-dev libusb-1.0-0-dev

次にKinectに接続する際に使用するlibfreenectライブラリをGithubからダウンロードしてビルドします.

$ cd
$ git clone https://github.com/OpenKinect/libfreenect.git
$ cd libfreenect
$ mkdir build
$ cd build
$ cmake -L ..
$ make
$ sudo make install
$ sudo ldconfig /usr/local/lib64
$ sudo adduser $USER video
$ sudo adduser $USER plugdev

下記のコマンドで設定ファイルを作成します.

$ sudo vim /etc/udev/rules.d/51-kinect.rules

エディタが開いたら下記を入力して保存してください.

# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02b0", MODE="0666"
# ATTR{product}=="Xbox NUI Audio"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ad", MODE="0666"
# ATTR{product}=="Xbox NUI Camera"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02ae", MODE="0666"
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02c2", MODE="0666"
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02be", MODE="0666"
# ATTR{product}=="Xbox NUI Motor"
SUBSYSTEM=="usb", ATTR{idVendor}=="045e", ATTR{idProduct}=="02bf", MODE="0666"

編集が完了したら下記のコマンドを実行してください.

$ python3 ../src/fwfetcher.py
$ sudo cp ./audios.bin /usr/local/share/libfreenect
$ freenect-glview

最後にROSで利用可能なfreenectパッケージをダウンロードしてビルドします.

$ cd ~/turtlebot_ws/src
$ git clone https://github.com/ros-drivers/freenect_stack.git
$ cd ../
$ catkin_make
$ source devel/setup.bash

これでKinectが使える準備が完了です.kinectは,可視光画像と距離画像を取得できるカメラです.kinectから画像を取得し,表示してみましょう.まずは,パソコンとkinectをUSBケーブルで接続し,通信をするために下記を実行します.

$ roslaunch freenect_launch freenect.launch

Kinectが利用可能になったら下記のコマンドで画像ビューアーを立ち上げましょう.

$ rosrun rqt_image_view rqt_image_view

ウィンドウが立ち上がるので,GUIから表示したい画像トピックを選択してください.カラー画像は/camera/rgb/image_color,距離画像は/camera/depth/imageとなります.