目的
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!」が出力されます.他にも,どのようなメッセージを受け取れるか試してみましょう.
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となります.