Skip to content

Latest commit

 

History

History
408 lines (327 loc) · 23.7 KB

README_tb3_pizza_jp.md

File metadata and controls

408 lines (327 loc) · 23.7 KB

日本語 | English

TurtleBot3 Friends: Pizza

TB3 Pizza

実環境での動作検証

実環境 Rviz
TB3 Pizza GO TB3 Pizza GO rv
実環境 Rviz
TB3 Pizza BACK TB3 Pizza BACK rv

Gazebo環境での動作検証

Gazebo環境 + Rviz
TB3 Pizza BACK
Gazebo環境 + Rviz
TB3 Pizza BACK

セットアップ手順(Quick Start Guide)

1. 環境設定

Turtlebot3の新FriendsモデルのPizzaを利用するためには、まずTurtleBot3の基本的な設定を行う必要があります。そのため、TurtleBot3のe-Manualの「Quick Start Guide」に従って、セットアップを行ってください。ただし、以下の変更点に注意してください。

Pizzaは現時点で、ROS Noeticに対応していますので、「Quick Start Guide」の「Noetic」ブランチを選択してください。

ここでは、必要なROSパッケージをインストールしますが、今回はDebianのバイナリパッケージを使わずに、ROBOTIS日本支店の公式GitHubからダウンロードします。以下の手順通りにセットアップを進めてください。

$ sudo apt remove ros-noetic-dynamixel-sdk
$ sudo apt remove ros-noetic-turtlebot3-msgs
$ sudo apt remove ros-noetic-turtlebot3
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src/
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone -b noetic-jp-devel https://github.com/ROBOTIS-JAPAN-GIT/turtlebot3_jp_custom
$ cd ~/catkin_ws && catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

Pizzaモデルでは、Raspberry Pi 4Bの代わりにNUC11を使いますので、e-Manualに書いてあるステップを省略し、以下のような手順でセットアップを行います。

  1. NUCにUbuntu 20.04をインストールします。

  2. ROS Noeticをインストールします。

  3. Turtlebot3の必要なパッケージをインストールします。

$ sudo apt remove ros-noetic-dynamixel-sdk
$ sudo apt remove ros-noetic-turtlebot3-msgs
$ sudo apt remove ros-noetic-turtlebot3
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src/
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/DynamixelSDK.git
$ git clone -b noetic-devel https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone -b noetic-jp-devel https://github.com/ROBOTIS-JAPAN-GIT/turtlebot3_jp_custom
$ cd ~/catkin_ws && catkin_make
$ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc

OpenCRのセットアップは、NUCを通して行います。

  1. OpenCRをmicro USBケーブル経由でNUCに繋げてください。

  2. Debianパッケージをインストールするステップを飛ばします。(NUCにはarmではなくamdなので、大丈夫です)

  3. OPENCR_MODELをpizza_noeticに指定します。

$ export OPENCR_PORT=/dev/ttyACM0
$ export OPENCR_MODEL=pizza_noetic
$ rm -rf ./opencr_update.tar.bz2
  1. ファームウェアをダウンロードして、解凍します。
$ wget https://github.com/ROBOTIS-JAPAN-GIT/OpenCR_jp_custom/releases/download/v1.0.0/opencr_update_jp_custom.tar.bz2
$ tar -xvf opencr_update_jp_custom.tar.bz2 
  1. OpenCRにファームウェアをアップロードします。
$ cd ./opencr_update
$ ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr
  1. Turtlebot3 Pizzaのファームウェアが正しくアップロードされたら、以下のようなメッセージが出力されます。 TB3 Pizza OpenCR Success Output

2. ネットワーク設定

通常のTurtleBot3では、分散処理を前提としているため、SBCであるRaspberry Piをmaster pcには設定していませんでした。ですが、PizzaではNUCをmaster pcとし、SSH経由でのコマンド実行およびRVizでの描画を行うためのリモートPCを用意することになりますので、以下のように設定してください。

Note NUCはRaspberry Piに比べて処理能力が高いため、TB3のSBC側でメイン処理(SLAMやNavigation)を行うような構成になっています。

  • NUC(master PC)側
  1. NUC PCが繋がれたWIFIのIPアドレスを取得します。
$ ifconfig

「wlp2s0」の「inet addr」に書いてある192.168.X.XXXのようなIPをメモしておきます。

Note 192.168.X.XXXの「X」という文字を各PCのIPに応じて変更してください。

  1. 「~/.bashrc」のファイルにROS IPを設定します。
$ nano ~/.bashrc

ドキュメントの一番下に以下のように書きます。

export ROS_MASTER_URI=http://192.168.X.XXX:11311
export ROS_HOSTNAME=192.168.X.XXX
  1. 以上2行を追加したら、ファイルを保存するため、Ctrl+s(保存)の次にCtrl+x(戻る)を押します。

  2. 最後にROS IPの変更点をターミナルに反映させます。

$ source ~/.bashrc
  • リモートPC(remote PC)側
  1. 前のNUC PCのIPアドレスを確認し、メモしておきます。(192.168.X.XXX)
  2. リモートPC側のIPアドレスをifconfigのコマンドで確認して、メモしておきます。(192.168.X.YYY)
  3. 「~/.bashrc」のファイルにROS IPを設定します。
$ nano ~/.bashrc

ドキュメントの一番下に以下のように書きます。

export ROS_MASTER_URI=http://192.168.X.XXX:11311
export ROS_HOSTNAME=192.168.X.YYY
  1. 以上2行を追加したら、ファイルを保存するため、Ctrl+s(保存)の次にCtrl+x(戻る)を押します。

  2. 最後にROS IPの変更点をターミナルに反映させます。

$ source ~/.bashrc

3. 追加レポジトリの設定

Turtlebot3のPizzaモデルには、デフォルトとして「Realsense D435」のデプスカメラと「Sick Tim571」のLiDARが付けてあります。それそれのレポジトリのセットアップ手順を説明します。

Warning 以下の手順はNUC側に行われます。

  • カメラ設定

まず、必要なパッケージをインストールします。

  • ROS Wrapper for Intel® RealSense™ Devices(公式サイトより)
$ sudo apt-get install ros-$ROS_DISTRO-realsense2-camera
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-JAPAN-GIT/realsense-ros_jp_custom
$ cd ~/catkin_ws
$ catkin_make

Note realsense-rosの設定手順のついて詳しく公式のGitHubに参照してください。

次に、シミュレーション環境でもRealsense D435を使えるように、次のレポジトリもダウンロードします。

$ cd ~/catkin_ws/src
$ git clone https://github.com/pal-robotics/realsense_gazebo_plugin
$ cd ~/catkin_ws
$ catkin_make
  • LiDAR設定

Sick Timのudev rulesの追加とともに、レポジトリをコンパイルします。

$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-JAPAN-GIT/sick_tim_jp_custom
$ cd sick_tim
$ sudo cp debian/udev /etc/udev/rules.d/81-sick-tim3xx.rules
$ sudo udevadm control --reload-rules
$ cd ~/catkin_ws
$ cakin_make

Note sick_timの公式GitHubとの差分はTim571のシミュレーション環境にも対応しています。

そして、LANケーブルでNUCに繋げるので、IPの設定も行います。

まず、Ubuntuの方の設定について、次の手順になります。

  1. LiDARのIPを確認し、メモしててください

Note デフォルトでIPは「192.168.0.1」になっていますが、別のIPアドレスを設定する必要な場合は、SICK公式サイトにて、IPの更新方法を確認してください。

  1. Ubuntuで「Settings/設定」のプログラムを開きます。
  2. 「Network/ネットワーク」に移動して、「Wired/有線」の一覧を確認します。
  3. その最初の箱にあるマスミのイコンを押します。
  4. IPv4に移動して、「IPv4 Method」はデフォルトで「Automatic (DHCP)」になっているところ、「Manual」を選択します。
  5. 「Address」の中に、「Address」を「192.168.X.XXX」に、「Netmask」を「255.255.255.0」に、Gateway「192.168.X.1」にします。

Note LiDARのIPに応じて、「X」の部分を更新します。そして、「XXX」の部分は、LiDARのIPと一致してはなりません。例えば、LiDARのIPは「192.168.0.1」の場合、「1」以外に「0~255」の間に番後を選択してください。

次に、「sick_tim571_2050101.launch」(~/catkin_ws/src/sick_tim)のlaunchファイルをつぎのように書き換えます。

  • 更新前
    <!-- Uncomment this to enable TCP instead of USB connection; 'hostname' is the host name or IP address of the laser scanner
    In cases where a race condition exists and the computer boots up before the TIM is ready, increase 'timelimit.'
         <param name="hostname" type="string" value="192.168.0.1" />
         <param name="port" type="string" value="2112" />
         <param name="timelimit" type="int" value="5" />
    -->
  • 更新後
    <!-- Uncomment this to enable TCP instead of USB connection; 'hostname' is the host name or IP address of the laser scanner
    In cases where a race condition exists and the computer boots up before the TIM is ready, increase 'timelimit.' -->
         <param name="hostname" type="string" value="192.168.X.XXX" />
         <param name="port" type="string" value="2112" />
         <param name="timelimit" type="int" value="5" />

Note value="192.168.X.XXXの「X」の文字をLiDARのIPに応じて、更新します。例えば、デフォルトでLiDARのIPは「192.168.0.1」の場合、value="192.168.0.1"のままで大丈夫です。(別のIPアドレスを設定する必要な場合は、SICK公式サイトにて、IPの更新方法を確認してください。)

シミュレーション環境(Gazebo)

TurtleBot3 PizzaにはGazeboという物理演算を考慮したシミュレーション環境も備えています。基本的に、シミュレーションのパッケージをダウンロードするだけで、すぐに使えます。

$ cd ~/catkin_ws/src/
$ git clone -b noetic-jp-devel https://github.com/ROBOTIS-JAPAN-GIT/turtlebot3_simulations_jp_custom
$ git clone https://github.com/robotics-upo/lightsfm
$ cd lightsfm
$ make
$ sudo make install
$ cd ~/catkin_ws && catkin_make

動かしてみましょう!

実機

ここまでで環境のセットアップは完了となります。これから、TurtleBot3 Pizzaモデルを実際に動かしてみましょう。動作手順は、e-Manualの「Bring-Up」と同じになります。

Note sshよりNUCに繋ぐとき、NUCのIPアドレス(192.168.X.XXX)を使用することになります。

  1. Turtlebot3のモデルを選択します
$ export TURTLEBOT3_MODEL=pizza
$ export TURTLEBOT3_PLAT=false

Note 新しい端末をたちが得るたびに、以上のコマンドを実行する必要があります。そして、pizza以外にも、burger, waffle_pi, big_wheel等というモデルもあります。

  1. まずNUC側でroscoreを起動します。
$ roscore
  1. NUC側でTurtlebot3 Pizzaのbring-upコマンドを実行します。
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
  1. 必要であれば、リモートPC側でTeleOPを実行します。
$ roslaunch turtlebot3_teleop turtlebot3_teleop_key.launch
  • SLAM (地図生成) + Navigation

通常のTurtleBot3と同じ手順で実行できますので、公式のe-Manualの「SLAM」や「Navigation」に従って進めてください。

シミュレーション

シミュレーションも通常のTurtleBot3と同じ手順で実行できますので、e-Manualの「1.1.2. Launch Simulation World」に従って進めてください。

$ export TURTLEBOT3_MODEL=pizza
$ export TURTLEBOT3_PLAT=false
$ roslaunch turtlebot3_gazebo turtlebot3_empty_world.launch

Note empty_world以外にも、house, simulation, stage_1などという環境もあります。そして、ROBOTIS日本支店カスタムのワールドもあります。現時点では、turtlebot3_jp_world_empty, turtlebot3_jp_world_static, turtlebot3_jp_world_dynamic, turtlebot3_jp_world_corridor_pedestrianの4種類のワールドを用意しています。

モデル名 画像
turtlebot3_jp_world_static TB3 static
turtlebot3_jp_world_dynamic TB3 dynamic
turtlebot3_jp_world_corridor_pedestrian TB3 corridor
turtlebot3_jp_world_corridor_pedestrian (rgbd) TB3 corridor rgbd

ハードウェア関係

部品リスト(BOM)

部品名 型番 個数 購入リンク
Dynamixel xm540-w150-r 902-0134-000 2 here
OpenCR1.0 903-0257-000 1 here
NUC 11 Pro Kit NUC11TNHv7 BNUC11TNHV70000 1 here
TiM571-2050101 1075091 1 here
Realsense d435 --- 1 here
車輪(5inch) --- 2 here
なめらかオムニホイール(Φ55mm) 4571398310089 2 here
アルミフレーム CAF5-2020-400 4 here
アルミフレーム CAF5-2020-360 6 here
アルミフレーム CAF5-2020-170 4 here
アルミフレーム CAF5-2020-100 5 here
回り止付ハードブラケットSS SFK-N58T 52 here
マキタ互換バッテリー BL1490 14.4v 9Ah BL1490 1 here
バッテリー18 vドック B08X73Z7RP 1 here
スラスト針状ころ軸受 BA0821 4 here
シェル形ニードルベアリング TLA810Z 2 here
金属ワッシャ TWSSS16-4-1 4 here
黄銅スペーサー BRB-435CE 2 here
六角穴付きボルト CSH-SUS-M5-10 6 here
六角穴付きボルト CSH-SUS-M4-16 2 here
六角穴付きボルト SBCB3-8 2 here
六角穴付きボルト CSH-SUS-M2.5-20 8 here
六角穴付きボルト CSH-SUS-M2.5-12 8 here
六角穴付ボルト UNC CSH-SUS-UNC1/4-7/16 8 here
六角穴付き皿ボルト CSHCS-BR-M4-10 21 here
六角穴付き皿ボルト CSHCS-BR-M4-8 5 here
六角穴付き皿ボルト CSHCS-ST-M2.5-8 16 here
六角穴付き皿ボルト SHFBS3-10 2 here
ナット LBNR4 4 here
ナット LBNR2.5 8 here
黄銅 ローレットツマミ NB-310EA-N 4 here
SF20 TナットSS(先入れ) SFB-012 26 here
クッションコーナーガード EA983FE-72 4 here
--- --- --- here
--- --- --- here

3Dモデルの参照

詳細なパーツのリストとモデルの設計は、Turtlebot3 Friends: PizzaのOnShapeドキュメントで確認できます。

モデルの特徴

項目 Pizza Big Wheel
最大直進速度 0.35 m/s 0.50 m/s
最大回転速度 1.49 rad/s 3.41 rad/s
最大ペイロード 30kg
サイズ(長さ x 幅 x 高さ) 434.94mm x 489.10mm x 261.54mm 281mm x 306mm x 170.30mm
重量
乗り上げ可能高さ
動作時間
充電時間
コンピュータ NUC10i7FNHN Raspberry Pi
MCP Intel® Core™ i7-10710U Processor (12M Cache, up to 4.70 GHz) 32-bit ARM Cortex®-M7 with FPU (216 MHz, 462 DMIPS)
リモートコントローラ - -
アクチュエータ XM540-W150 XM430-W210
LiDAR SICK TiM571 360 Laser Distance Sensor LDS-01 or LDS-02
カメラ Realsense D435 Realsense D435
IMU Gyroscope 3 Axis Gyroscope 3 Axis
Accelerometer 3 Axis Accelerometer 3 Axis
供給入力端子 3.3V / 800mA, 5V / 4A, 12V / 1A
I/Oピン GPIO 18 pins, Arduino 32 pin
周辺機器 UART x3, CAN x1, SPI x1, I2C x1, ADC x5, 5pin OLLO x4
DINAMIXELポート RS485 x 3, TTL x 3 RS485 x 3, TTL x 3
オーディオ 複数ブザービート使用可能 複数ブザービート使用可能
LED使用可能 User LED x 4 User LED x 4
LEDステータス Board status LED x 1, Arduino LED x 1, Power LED x 1 Board status LED x 1, Arduino LED x 1, Power LED x 1
ボタンとスイッチ Push buttons x 2, Reset button x 1, Dip switch x 2 Push buttons x 2, Reset button x 1, Dip switch x 2
バッテリ マキタ互換バッテリー BL1490 14.4v 9Ah Lithium polymer 11.1V 1800mAh / 19.98Wh 5C
PC接続 USB USB
ファームウェア更新 USB経由, JTAG経由 USB経由, JTAG経由
電力アダプタ Input : 100-240V, AC 50/60Hz, 1.5A @max, Output : 12V DC, 5A Input : 100-240V, AC 50/60Hz, 1.5A @max, Output : 12V DC, 5A

TurtleBot3のROBOTIS e-Manual

TurtleBot3に関するオープンソース関連

TurtleBot3に関するドキュメントと動画