実環境 | Rviz |
---|---|
実環境 | Rviz |
---|---|
Gazebo環境 + Rviz |
---|
Gazebo環境 + Rviz |
---|
Turtlebot3の新FriendsモデルのPizzaを利用するためには、まずTurtleBot3の基本的な設定を行う必要があります。そのため、TurtleBot3のe-Manualの「Quick Start Guide」に従って、セットアップを行ってください。ただし、以下の変更点に注意してください。
- 1.1. PC Setupについて
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
- 3.2. SBC Setupについて
Pizzaモデルでは、Raspberry Pi 4Bの代わりにNUC11を使いますので、e-Manualに書いてあるステップを省略し、以下のような手順でセットアップを行います。
-
NUCにUbuntu 20.04をインストールします。
-
ROS Noeticをインストールします。
-
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を通して行います。
-
OpenCRをmicro USBケーブル経由でNUCに繋げてください。
-
Debianパッケージをインストールするステップを飛ばします。(NUCにはarmではなくamdなので、大丈夫です)
-
OPENCR_MODELを
pizza_noetic
に指定します。
$ export OPENCR_PORT=/dev/ttyACM0
$ export OPENCR_MODEL=pizza_noetic
$ rm -rf ./opencr_update.tar.bz2
- ファームウェアをダウンロードして、解凍します。
$ 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
- OpenCRにファームウェアをアップロードします。
$ cd ./opencr_update
$ ./update.sh $OPENCR_PORT $OPENCR_MODEL.opencr
通常のTurtleBot3では、分散処理を前提としているため、SBCであるRaspberry Piをmaster pc
には設定していませんでした。ですが、PizzaではNUCをmaster pc
とし、SSH経由でのコマンド実行およびRVizでの描画を行うためのリモートPCを用意することになりますので、以下のように設定してください。
Note NUCはRaspberry Piに比べて処理能力が高いため、TB3のSBC側でメイン処理(SLAMやNavigation)を行うような構成になっています。
- NUC(master PC)側
- NUC PCが繋がれたWIFIのIPアドレスを取得します。
$ ifconfig
「wlp2s0」の「inet addr」に書いてある192.168.X.XXX
のようなIPをメモしておきます。
Note
192.168.X.XXX
の「X」という文字を各PCのIPに応じて変更してください。
- 「~/.bashrc」のファイルにROS IPを設定します。
$ nano ~/.bashrc
ドキュメントの一番下に以下のように書きます。
export ROS_MASTER_URI=http://192.168.X.XXX:11311
export ROS_HOSTNAME=192.168.X.XXX
-
以上2行を追加したら、ファイルを保存するため、
Ctrl+s
(保存)の次にCtrl+x
(戻る)を押します。 -
最後にROS IPの変更点をターミナルに反映させます。
$ source ~/.bashrc
- リモートPC(remote PC)側
- 前のNUC PCのIPアドレスを確認し、メモしておきます。(192.168.X.XXX)
- リモートPC側のIPアドレスを
ifconfig
のコマンドで確認して、メモしておきます。(192.168.X.YYY) - 「~/.bashrc」のファイルにROS IPを設定します。
$ nano ~/.bashrc
ドキュメントの一番下に以下のように書きます。
export ROS_MASTER_URI=http://192.168.X.XXX:11311
export ROS_HOSTNAME=192.168.X.YYY
-
以上2行を追加したら、ファイルを保存するため、
Ctrl+s
(保存)の次にCtrl+x
(戻る)を押します。 -
最後にROS IPの変更点をターミナルに反映させます。
$ source ~/.bashrc
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の方の設定について、次の手順になります。
- LiDARのIPを確認し、メモしててください
Note デフォルトでIPは「192.168.0.1」になっていますが、別のIPアドレスを設定する必要な場合は、SICK公式サイトにて、IPの更新方法を確認してください。
- Ubuntuで「Settings/設定」のプログラムを開きます。
- 「Network/ネットワーク」に移動して、「Wired/有線」の一覧を確認します。
- その最初の箱にあるマスミのイコンを押します。
- IPv4に移動して、「IPv4 Method」はデフォルトで「Automatic (DHCP)」になっているところ、「Manual」を選択します。
- 「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の更新方法を確認してください。)
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)を使用することになります。
- Turtlebot3のモデルを選択します
$ export TURTLEBOT3_MODEL=pizza
$ export TURTLEBOT3_PLAT=false
Note 新しい端末をたちが得るたびに、以上のコマンドを実行する必要があります。そして、
pizza
以外にも、burger
,waffle_pi
,big_wheel
等というモデルもあります。
- まずNUC側でroscoreを起動します。
$ roscore
- NUC側でTurtlebot3 Pizzaのbring-upコマンドを実行します。
$ roslaunch turtlebot3_bringup turtlebot3_robot.launch
- 必要であれば、リモート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 | |
turtlebot3_jp_world_dynamic | |
turtlebot3_jp_world_corridor_pedestrian | |
turtlebot3_jp_world_corridor_pedestrian (rgbd) |
部品名 | 型番 | 個数 | 購入リンク |
---|---|---|---|
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 |
詳細なパーツのリストとモデルの設計は、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 |