メモ

tb3管理表

https://docs.google.com/spreadsheets/d/1Dsn0B4qgr0d_l07FCjJ3_7MTArnQmQWde6SJHWU4wHE/edit#gid=0

turtlebot3のセットアップ

turtlebotのマニュアルを参考に進める.

https://emanual.robotis.com/docs/en/platform/turtlebot3/sbc_setup/#sbc-setup

SDカードにubuntuをインストール

turtlebotに搭載されているRaspberry Piのバージョンは,4 Model B. 下記よりRaspberry Pi Imagerをダウンロードし,Ubuntuをインストール

https://www.raspberrypi.com/software/

  1. Raspberry Pi Imagerを起動.
  2. OSを選択 => Other gerneral-purpose OS => Ubuntu => Ubuntu Server 22.04.3 LTS(64bit)
  3. ストレージの選択 => SDカード
  4. カスタマイズ => 設定を編集する => 一般
    • ホスト名:tb01(数字はシールと同じ)
    • ユーザー名:ros
    • パスワード:ros
    • WiFi (/etc/netplan/50-cloud-init.yamlで後から変更可能)
      • SSID:robolabB1 (適宜変更)
      • パスワード:roboticslab
      • wifiを使う国:JP
    • ロケール設定をする
      • タイムゾーン:Asia/Tokyo
      • キーボードレイアウト:jp
  5. カスタマイズ => 設定を編集する => サービス
    • SSHを有効にする
      • パスワード認証を使う
  6. 書き込み

設定変更

  • ubuntu自動更新の無効化 /etc/apt/apt.conf.d/20auto-upgradesを開き,下記のように編集
APT::Periodic::Update-Package-Lists "0";
APT::Periodic::Unattended-Upgrade "0";
  • ネットワーク接続関係 初期設定では,ネットワークに接続するまで待機するため無効化する.
$  systemctl mask systemd-networkd-wait-online.service
  • サスペンドとスリープの無効化
$ sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target

ソフトウェアインストール

ROSをインストール後,下記を実行

$ sudo apt install python3-argcomplete python3-colcon-common-extensions libboost-system-dev build-essential
$ sudo apt install ros-humble-hls-lfcd-lds-driver
$ sudo apt install ros-humble-turtlebot3-msgs
$ sudo apt install ros-humble-dynamixel-sdk
$ sudo apt install libudev-dev
$ mkdir -p ~/turtlebot3_ws/src && cd ~/turtlebot3_ws/src
$ git clone -b humble-devel https://github.com/ROBOTIS-GIT/turtlebot3.git
$ git clone -b ros2-devel https://github.com/ROBOTIS-GIT/ld08_driver.git
$ cd ~/turtlebot3_ws/src/turtlebot3
$ cd ~/turtlebot3_ws/
$ echo 'source /opt/ros/humble/setup.bash' >> ~/.bashrc
$ source ~/.bashrc
$ colcon build --symlink-install --parallel-workers 1
$ echo 'source ~/turtlebot3_ws/install/setup.bash' >> ~/.bashrc
$ source ~/.bashrc

OpenCR関連.

$ sudo cp `ros2 pkg prefix turtlebot3_bringup`/share/turtlebot3_bringup/script/99-turtlebot3-cdc.rules /etc/udev/rules.d/
$ sudo udevadm control --reload-rules
$ sudo udevadm trigger

ROS_DOMAIN_IDの設定

$ echo 'export ROS_DOMAIN_ID=30 #TURTLEBOT3' >> ~/.bashrc
$ source ~/.bashrc

使用するLDSの設定.

$ echo 'export LDS_MODEL=LDS-02' >> ~/.bashrc
$ source ~/.bashrc

モデルの設定

export TURTLEBOT3_MODEL=burger

slamが起動しない.下記をインストール

$ sudo apt install ros-humble-cartographer-ros

カメラ

$ sudo apt install ros-humble-v4l2-camera

無線LANの設定変更

SDカード内のnetwork-configを編集しても接続される無線LANを変更できない. これは初回のみ有効. ubuntu起動後は,下記のファイルを編集して再起動することで更新可能. インデントはタブ禁止,半角スペースでないと文法エラーとなる.

/etc/netplan/50-cloud-init.yaml

変更した例は下記の通り

network:
    version: 2
    wifis:
        renderer: networkd
        wlan0:
            access-points:
                robolabB1:
                    password: "roboticslab"
            dhcp4: true
            optional: true

SDカードのコピー

デュプリケータでMicro SDXCカード(以降,SDカード)をコピー可能. ただし,コピー元よりもコピー先の容量が小さい場合には,コピー時に警告が発生する. その状況で警告を無視して強制的にコピーできるが,ubuntuが起動せずにbusyboxが起動する. busyboxでfsckコマンドで修復を試みるが失敗する.

同じ容量のSDカードを購入しても,メーカーやシリーズによって微妙に容量が異なる. SDカード内に管理領域を確保しているが,この管理領域の容量(全体の3%程度)がメーカーやシリーズに異なるためである. Turtlebot3を購入した際に付属したSDカードは,Samsung社のEVO Plus32GBであるが,現在は購入ができない状態である. 代替品の候補を探すため幾つかのSDカード(容量は公称32GB)を購入して容量を確認した.

メーカー 品名 or シリーズ 使用可能な容量[MB] Amazonの商品URL
Samsung EVO Plus 30,528 URL
Gigastone GS-2IN1C1032G-R 29,819 URL
Transcend TS32GUSD350V-E 29,824 URL
KIOXIA KLMEA032G 29,544 URL
Samsung PRO Endurance 30,560 URL

Turtlebot3に付随してきたSamsung社のEVO PlusでUbuntu等の環境を作成し,これをコピー元として同シリーズのSDカードを全てクローンする. 予備のSDカードとしては,上記表のうちSamsung社のPRO Enduranceのみ使用可能であったので,本シリーズのSDカードを採用する. ただし,Samsung社のPRO EnduranceからEVO Plusへは正常にクローンできないので注意が必要.

コピーしたSDカードの設定

下記の3つ(場合によっては2つ)を変更する.

hostnameの設定

ホスト名を用いてsshで遠隔操作する. そのため,turtlebot3ごとにホスト名を変更する必要がある. ホスト名は,機体に貼ってあるシールと同じ(ただし,文字は小文字)とする. 例えば,TB01というシールが貼られていれば,ホスト名はtb01となる.

通常,ubuntuでは/etcディレクトリ内のファイルを変更すればホスト名を変更可能である. しかし,これはDesktop版の有効であり,Server版では再起動後に設定前の内容に戻ってしまう. Server版では,下記のファイルを編集することでホスト名を変更できる.

$ sudo vim /boot/firmware/user-data

上記ファイルを編集後,再起動すると設定が反映される.

ROS_DOMAIN_IDの設定

.bashrcに記述されているROS_DOMAIN_IDの数字を変更する. 数字は機体に貼ってある数字(ただし,一桁の数字の場合には0を付けない)とする.

無線LANの設定

実験室には2機の無線Lanルーターが設置されている.

access-pointsにあるSSID名を必要に応じて編集する. パスワードは共通であるため編集の必要はない.

$ sudo vim /etc/netplan/network.yaml

バッテリー管理

バッテリーの基本情報

Turtlebot3ではこちらのlipoバッテリーが搭載されている. バッテリーからは2つの端子が利用可能であり,充電時にはバランス端子(白い端子)を用いる.

バッテリーは3つのセルで構成されている. 目安となる電圧仕様は下記の通りである.

  • 最高電圧:4.2 [V/cell] (12.6V)
  • 標準電圧:3.7 [V/cell] (11.1V)
  • 必要電圧:3.5 [V/cell] (10.5V)
  • 最低電圧:3.2 [V/cell] (9.6V)

Turtlebot3を使用する期間に入ったら満充電して保管する. 満充電後,必ず機体からパワー端子接続を外す.

バッテリーに関しての注意事項

バッテリー低下し,電圧が11.1[V]付近になるとピープ音を発する. ピープ音を発する間隔が短くなり,電圧が10.9[V]付近になったら直ぐにバッテリーを充電する必要がある. 最低電圧3.2[V]を下回るまで使用した場合には,付随する充電器で充電することが不可能(故障)となる. 低電圧の状態で再充電すると発火等の危険があるため,一般的な充電器では充電できないように設計されている.

バッテリーを長期的(一ヶ月以上)に使用しない場合には,3.7 ~ 3.8 [V/cell]とし,自己自然放電を防ぐために必ず機体からパワー端子を外す. また,講義で長期間使用しない場合には,上記の電圧に調整してリポセーフティバッグにて保管する.

バッテリーの寿命

バッテリーが消耗したり,過充電や過放電するとバッテリーが劣化する. また,一般的なlipoバッテリーの充電回数は500~1000回とされている. 劣化するとバッテリー膨らみ,本来の性能を発揮できなくなる. バッテリーが一定以上膨らむと発火の恐れがあるため,教員に連絡すること.

低電圧バッテリーの復旧

一定以下の電圧となったバッテリーは,用意している充電器で充電ができない. このような問題が発生した場合には教員に連絡すること.