Turtlebot3の動作確認

Turtlebot3を使用方法を学び,動作を確認します.

目的

Turtlebot3を使用するための環境を作成し,実機を用いて動作を確認します. なお,これ以降の講義では2人でペアを作り,1台ずつTurtlebot3を割り当てます. 必ず割り当てられたTurtlebot3を使用してください.

Turtlebot3の起動を終了

1ペアに1台のTurtlebot3を割り当てます. Turtlebot3に機体番号が書かれたシールが貼られていますので,割り当てられたTurtlebot3を使用してください. なお,実験室には2台の無線LANルーターが設置されていますが,Turtlebot3はどちらか一方のルーターと対応付けされています. 指示された無線LANネットワークに接続してください.

Turtlebot3にはRaspberry Pi4が搭載されており,Ubuntu22.04とROS2 Humbleがインストールされています. Turtlebot3を使う際には電源スイッチをONにして起動してください. 電源を入れると音がなり,使える準備が整います. 各自のノートPCからsshコマンドにより遠隔操作します. ターミナルを起動し,下記のようにホスト名(HOST_NAME)を指定して接続します. ホスト名はTurtlebot3の上部天板に白シールにて書かれています. ただし,大文字アルファベットは小文字アルファベットに置き換えてください.

1
$ ssh ros@{HOST_NAME}.local

上記のコマンドを実行するとパスワードの入力を求められます. パスワードは講義中に指示します. sshでTurtlebot3に接続しているターミナルは,ユーザー名ros,ホスト名がHOST_NAMEとして表示されます. 下記はHOST_NAMEtb01のターミナル表示の例です.

1
ros@tb01:~$

終了時には,下記のコマンドによりUbuntuをシャットダウンします.

1
$ sudo shutdown now

上記コマンドを実行後,Raspberry Pi4上のアクセスランプ(緑色のLED)が点灯しなくなったら電源スイッチをオフにしてください.

関連ノードの起動

Turtlebot3の電源を入れた後,ROS2で使うためには下記のコマンドを実行します.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
$ ros2 launch turtlebot3_bringup robot.launch.py
[INFO] [launch]: All log files can be found below /home/ubuntu/.ros/log/2023-11-26-06-55-31-700216-ubuntu-5665
[INFO] [launch]: Default logging verbosity is set to INFO
urdf_file_name : turtlebot3_burger.urdf
[INFO] [robot_state_publisher-1]: process started with pid [5683]
[INFO] [ld08_driver-2]: process started with pid [5685]
[INFO] [turtlebot3_ros-3]: process started with pid [5687]
[robot_state_publisher-1] Parsing robot urdf xml string.
[robot_state_publisher-1] Link base_link had 5 children
[robot_state_publisher-1] Link caster_back_link had 0 children
[robot_state_publisher-1] Link imu_link had 0 children
[robot_state_publisher-1] Link base_scan had 0 children
[robot_state_publisher-1] Link wheel_left_link had 0 children
[robot_state_publisher-1] Link wheel_right_link had 0 children
[robot_state_publisher-1] [INFO] [1700981732.291499283] [robot_state_publisher]: got segment base_footprint
[robot_state_publisher-1] [INFO] [1700981732.292091147] [robot_state_publisher]: got segment base_link
[robot_state_publisher-1] [INFO] [1700981732.292191220] [robot_state_publisher]: got segment base_scan
[robot_state_publisher-1] [INFO] [1700981732.292227350] [robot_state_publisher]: got segment caster_back_link
[robot_state_publisher-1] [INFO] [1700981732.292257386] [robot_state_publisher]: got segment imu_link
[robot_state_publisher-1] [INFO] [1700981732.292285553] [robot_state_publisher]: got segment wheel_left_link
[robot_state_publisher-1] [INFO] [1700981732.292314645] [robot_state_publisher]: got segment wheel_right_link
[turtlebot3_ros-3] [INFO] [1700981732.336341650] [turtlebot3_node]: Init TurtleBot3 Node Main
[turtlebot3_ros-3] [INFO] [1700981732.337228530] [turtlebot3_node]: Init DynamixelSDKWrapper
[turtlebot3_ros-3] [INFO] [1700981732.342895786] [DynamixelSDKWrapper]: Succeeded to open the port(/dev/ttyACM0)!
[turtlebot3_ros-3] [INFO] [1700981732.351149515] [DynamixelSDKWrapper]: Succeeded to change the baudrate!
[turtlebot3_ros-3] [INFO] [1700981732.387574044] [turtlebot3_node]: Start Calibration of Gyro
[ld08_driver-2] /dev/ttyACM0    OpenCR Virtual ComPort in FS Mode
[ld08_driver-2] /dev/ttyUSB0    CP2102 USB to UART Bridge Controller
[ld08_driver-2] FOUND LDS-02
[ld08_driver-2] LDS-02 started successfully
[turtlebot3_ros-3] [INFO] [1700981737.387887897] [turtlebot3_node]: Calibration End
[turtlebot3_ros-3] [INFO] [1700981737.388057988] [turtlebot3_node]: Add Motors
[turtlebot3_ros-3] [INFO] [1700981737.388425725] [turtlebot3_node]: Add Wheels
[turtlebot3_ros-3] [INFO] [1700981737.388655167] [turtlebot3_node]: Add Sensors
[turtlebot3_ros-3] [INFO] [1700981737.394921324] [turtlebot3_node]: Succeeded to create battery state publisher
[turtlebot3_ros-3] [INFO] [1700981737.401007373] [turtlebot3_node]: Succeeded to create imu publisher
[turtlebot3_ros-3] [INFO] [1700981737.405075182] [turtlebot3_node]: Succeeded to create sensor state publisher
[turtlebot3_ros-3] [INFO] [1700981737.408886217] [turtlebot3_node]: Succeeded to create joint state publisher
[turtlebot3_ros-3] [INFO] [1700981737.409021938] [turtlebot3_node]: Add Devices
[turtlebot3_ros-3] [INFO] [1700981737.409069622] [turtlebot3_node]: Succeeded to create motor power server
[turtlebot3_ros-3] [INFO] [1700981737.414002164] [turtlebot3_node]: Succeeded to create reset server
[turtlebot3_ros-3] [INFO] [1700981737.418068177] [turtlebot3_node]: Succeeded to create sound server
[turtlebot3_ros-3] [INFO] [1700981737.422146024] [turtlebot3_node]: Run!
[turtlebot3_ros-3] [INFO] [1700981737.478917362] [diff_drive_controller]: Init Odometry
[turtlebot3_ros-3] [INFO] [1700981737.494701217] [diff_drive_controller]: Run!

上記の出力の最後のようにRUN!が表示されていればROS2で使える準備が整ったことを表します.

動作確認

上記のlaunchファイルを実行すると複数のノードが起動します. ROS2で使える状態であるかを確認しましょう. 新たにターミナルを起動して,sshコマンドでTurtlebot3に接続し, 下記のコマンドラインで起動しているノードを確認しましょう.

1
2
3
4
5
$ ros2 node list
/diff_drive_controller
/ld08_driver
/robot_state_publisher
/turtlebot3_node

上記のノードが起動していない場合は,正しくlaunchファイルを実行できていない可能性があります.

次に,キーボードによってTurtlebot3を遠隔操作してみましょう. 先ほどと同様に,新たにターミナルを立ち上げ,sshコマンドでTurtlebot3に接続後, 下記のコマンドを実行してください.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
$ ros2 run turtlebot3_teleop teleop_keyboard

Control Your TurtleBot3!
---------------------------
Moving around:
        w
   a    s    d
        x

w/x : increase/decrease linear velocity (Burger : ~ 0.22, Waffle and Waffle Pi : ~ 0.26)
a/d : increase/decrease angular velocity (Burger : ~ 2.84, Waffle and Waffle Pi : ~ 1.82)

space key, s : force stop

CTRL-C to quit

Turtlesimを動かした時とは異なり,矢印キーではなくアルファベットキーで操作します.

バッテリー残量の確認

Turtlebot3は満充電の状態でおおよそ1時間半ほど使用できます. 使い方によって使用可能時間は前後しますので目安としてください. バッテリー残量は下記のコマンドで確認することができます.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ ros2 topic echo /battery_state
---
header:
  stamp:
    sec: 1710307591
    nanosec: 971499990
  frame_id: ''
voltage: 12.239999771118164
temperature: 0.0
current: 0.0
charge: 0.0
capacity: 0.0
design_capacity: 1.7999999523162842
percentage: 96.65999603271484
power_supply_status: 0
power_supply_health: 0
power_supply_technology: 0
present: true
cell_voltage: []
cell_temperature: []
location: ''
serial_number: ''
---

voltageがバッテリー電圧,percentageはバッテリー残量をパーセンテージで表した数値となります. voltageが約11.1[V],percentageが約30[%]以下でピープ音を発します. 電圧が10.9[V]付近まで下がるとピープ音が鳴る間隔が短くなりますのでバッテリーの充電が必要です. ただちに電源をオフにして教員に連絡してください.

データのコピー

作成したパッケージをノートPCにバックアップを取りたい場合にはscpというコマンドを使いましょう. 以下のコマンドはノートPC(sshでTurtlebot3にログインしない)で実行することを想定しています. また,sshを実行する際と同様に{HOST_NAME}には,Turtlebot3の上部天板に貼ってある白シールの文字列を入力してください. ただし,大文字アルファベットは小文字アルファベットに置き換えてください.

Turtlebot3からノートPCにパッケージをコピー

Turtlebo3にて作成したパッケージauto_runディレクトリをノートPCのホームディレクトリにコピーする場合には下記のコマンドを実行します.

1
$ scp -r ros@{HOST_NAME}.local:/home/ros/ar20000_ws/src/auto_run ~/

上記はディレクトリをコピーする例ですが,ファイル単体をコピーする場合にはオプションの-rを削除して実行してください.

ノートPCからTurtlebot3にパッケージをコピー

ノートPC上のパッケージauto_runディレクトリをTurtlebo3にコピーする場合には下記のコマンドを実行します.

1
$ scp -r ~/auto_run ros@{HOST_NAME}.local:/home/ros/ar20000_ws/src/

上記はディレクトリをコピーする例ですが,ファイル単体をコピーする場合にはオプションの-rを削除して実行してください.