:@emboss369 :hiroaki.kaneda
Turtlebot3とrealsenseで作
るお手軽移動ロボット
ROS Japan UG #23 関西勉強会
:@emboss369 :hiroaki.kaneda
自己紹介
金田浩明(かねだひろあき)
仕事ではiOSチームを束ねるAndroid開発者
Android本執筆(Kotlin対応!!)しました!本日発売です!「は
じめてのAndroidプログラミング 第3版」みんな買ってね!
ロボット関係、ROSやコミュニケーションロボット(ロビ)など
は趣味としてぼちぼちやってます。
ChainerでPointCloudのDeepLeaningとかやってます。
Twitter:@emboss369
Facebook:hiroaki.kaneda
:@emboss369 :hiroaki.kaneda
点群の深層学習
:@emboss369 :hiroaki.kaneda
点群の深層学習
:@emboss369 :hiroaki.kaneda
URL
● 「はじめてのAndroidプログラミング 第3版」
○ https://amzn.to/2qJaVRU
● 点群の深層学習
○ https://github.com/hiroaki-kaneda/voxcelchain
:@emboss369 :hiroaki.kaneda
ROS対応ロボット
http://robots.ros.org/all/
123台のROS対応ロボット
有名なのがPR2とturtlebot
:@emboss369 :hiroaki.kaneda
Turtlebotとは
研究用ロボット
iRobot +ラップトップ+ Kinect +ジャイロ= TurtleBot
要はルンバにノートパソコンとKinectセンサーを乗っけたもの
:@emboss369 :hiroaki.kaneda
Turtlebot2
「Kobuki」を移動台車として使用
:@emboss369 :hiroaki.kaneda
Turtlebot3
できること
ライダーによるスラム
ライダー(LiDAR:レーザーによる画像検出・測距のこ
と。北陽、ベロダイン、SICKが有名
スラム(SLAM:自己位置推定と環境地図作成を同時に
行うこと。移動ロボットには欠かせない機能)
:@emboss369 :hiroaki.kaneda
Turtlebot3
基本的にはRemote PCでSLAMやNavigationを動かす
(所詮Raspbery Piなので・・・)
:@emboss369 :hiroaki.kaneda
Turtlebot3の構成
小さい!持ち運びOK
:@emboss369 :hiroaki.kaneda
Turtlebot3シリーズ
TurtleBot3 WaffleはJouleがディスコン(製造中止)となったため、Raspberry Pi へ
置き換えた廉価版TurtleBot3 Waffle Piになっています。
6万ぐらい 22万ぐらい 15万5千600円ぐらい
:@emboss369 :hiroaki.kaneda
360 LiDAR
360 Laser Distance Sensor LDS-01
$179.90
安い!
範囲は12cm〜3.5m(狭い)
おそらく屋外では全く機能しないと思う。
学習用として割り切れば十分安い!!
日立LGデータストレージ製らしい。
:@emboss369 :hiroaki.kaneda
Turtlebot3
SLAM
:@emboss369 :hiroaki.kaneda
Turtlebot3の構成
OpenCR
:@emboss369 :hiroaki.kaneda
Turtlebot3 Friends
ちょいちょいっといじれば、いろんな形状のロボットを作れます!
:@emboss369 :hiroaki.kaneda
Turtlebot3 Friends
ちょいちょいっといじれば、いろんな形状のロボットを作れます!
:@emboss369 :hiroaki.kaneda
Friendsの作り方
http://emanual.robotis.com/docs/en/platform/turt
lebot3/friends/
に、CADデータや、部品リストも公開されてい
る。
→ 3Dプリンタで印刷する
金属部品リストはMiSUMiのURLがあるのでそ
れを購入可能!
:@emboss369 :hiroaki.kaneda
シリーズで何が違うのか?
◎バーガー
Dynamixel XL430-W250-T
¥5,000
◎ワッフル/ワッフル パイ
Dynamixel XM430-W210-R
¥23,760
:@emboss369 :hiroaki.kaneda
Turtlbot3 Waffle(ディスコン)が欲しかった
Intel Joule 高性能Atomプロセッサ!!
Intel Realsens 3次元での奥行き認識が可能!
:@emboss369 :hiroaki.kaneda
Burger + UP Board + RealSense ZR300
UP Board 64bit QuadコアAtom搭載ボード、ラ
ズパイとGPIOピン互換!
RealSense ZR300
深度検出のほかに高精度モーション追跡機能
があり、センサーが3D-SLAMを実行する
(CPUパワーを使わない!!)
:@emboss369 :hiroaki.kaneda
TurtleBot3 Friends: Carrier
Carrierをベースにして作成します。
支柱はMiSUMiで注文。あまり高くしてバラン
ス悪いのも嫌なので、設計より短くしました。
MiSUMiはカスタムサイズを指定してパーツを
発注できるのですごく便利!(ただし法人ま
たは個人事業主のみ)
:@emboss369 :hiroaki.kaneda
3Dプリント
タイヤはCADデータとして提供されているの
で印刷すればOK!
ただ結構でかいタイヤです。(直径約12セン
チ)
うちのプリンタでギリ印刷できるサイズ。
ゴムは、機械のパッキンなどに使われるOリン
グで、たまたまちょうどいいサイズをAmazon
で発見!
https://amzn.to/2Ha3lea
:@emboss369 :hiroaki.kaneda
キャスター
キャスター2個を取り付けています。
TurtleBot3 Friendsのパーツリスト通りだとボールキャスター。
これだと、外を走らせた時に砂を噛んでしまいそう・・・・
MiSUMiにいい感じのキャスターがなかったので、モノタロウで探して発注。た
しかキャスター1個100〜200円ぐらい。登録したら500円クーポンもらえたので、
タダで購入できました(法人または個人事業主)。
:@emboss369 :hiroaki.kaneda
UP Boardのセットアップ
up boardのwikiに、up boardのインストール方法がある。
https://wiki.up-community.org/Ubuntu
あとでつまらない問題が発生せぬよう、Englishでインストールする。極力日本語
環境は避けておくが吉。
up boardにUbuntuインストール時のユーザー名・パスワードなどを入れて、セッ
トアップをすすめる。この辺は普通のUbuntuセットアップ。
:@emboss369 :hiroaki.kaneda
電源ボタンで終了
電源ボタンでシャットダウンが即座に開始されるようにカスタマイズする。
https://www.hiroom2.com/2016/10/19/ubuntu-16-04-電源ボタン押下でシャットダ
ウンする/
このサイトそのまま実施
:@emboss369 :hiroaki.kaneda
続けて、wikiの手順通りセットアップを進める
3 Install the firmware driver for up core wifi chip
は、up core用なので行わない。up board
wifiは入っていないので、バッファローのUSB Wifiを挿して対応した。
(Raspberry Pi 3はBLEもWIFIも入っているが、UP BoardにはWIFIもBLEもな
い!
:@emboss369 :hiroaki.kaneda
Install Intel graphics driver
graphics update toolページに従え、とあるが、どうもこのアップデートツールは
終了したようです。そもそも、グラフィックはインストール時から有効だから、
インストールされている気がします。
最新ではディストリビューションに含まれたというような記述もあるので多分大
丈夫な気がするのでグラフィックはOK、飛ばします。ただ念の為3D環境のベン
チマークをして、確認しておきます。
sudo apt install mesa-utils
glxgears
sudo apt install glmark2
glmark2
glmark2 Score:562でした。ラズパイ3 より遥かに高いベンチマーク結果です。
:@emboss369 :hiroaki.kaneda
UP BoardへROSをインストール
ひとまず、Upboardへのubuntuのインストールは完了です。続けて、turtlebotの
インストールです。
UP BOARDはAtomなので、インストールは同じAtomであるJouleを参考にすれば
いいはずです。
インストールスクリプト実行。手作業で普通にインストールしてもいいのですが、
せっかくスクリプトを用意してくれているのでこれを使いましょう。
wget https://raw.githubusercontent.com/ROBOTIS-GIT/robotis_tools/master/install_ros_kinetic.sh && chmod
755 ./install_ros_kinetic.sh && bash ./install_ros_kinetic.sh
:@emboss369 :hiroaki.kaneda
UP BoardへROSをインストール
関連するパッケージをインストールします。こちらはgitからダウンロードします。
$ cd ~/catkin_ws/src
$ git clone https://github.com/ROBOTIS-GIT/hls_lfcd_lds_driver.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3_msgs.git
$ git clone https://github.com/ROBOTIS-GIT/turtlebot3.git
$ sudo apt-get install ros-kinetic-rosserial-python ros-kinetic-tf
次のリモートPC用パッケージも、ロボットにインストール
$ sudo apt-get install ros-kinetic-joy ros-kinetic-teleop-twist-joy ros-kinetic-teleop-twist-keyboard ros-kinetic-laser-proc ros-kinetic-rgbd-
launch ros-kinetic-depthimage-to-laserscan ros-kinetic-rosserial-arduino ros-kinetic-rosserial-python ros-kinetic-rosserial-server ros-
kinetic-rosserial-client ros-kinetic-rosserial-msgs ros-kinetic-amcl ros-kinetic-map-server ros-kinetic-move-base ros-kinetic-urdf ros-
kinetic-xacro ros-kinetic-compressed-image-transport ros-kinetic-rqt-image-view ros-kinetic-gmapping ros-kinetic-navigation ros-
kinetic-interactive-markers
:@emboss369 :hiroaki.kaneda
UP BoardへROSをインストール
ここで一回再起動かけます。
gitで取得したturtlebotのソースをビルドします。
$ cd ~/catkin_ws && catkin_make
USB設定。OpenCR1.0との接続時にroot権限なしでUSBポートに接続するため。
(上記ビルドを反映するため)新しくターミナルを立ち上げて次のコマンド実行。
rosrun turtlebot3_bringup create_udev_rules
以上でROSとturtlebotの主要なモジュールはインストールできた(はず)。
:@emboss369 :hiroaki.kaneda
オドメトリが狂う!
これでSLAMを実行すると、どんどん狂っていってしまいます。
原因は、でっかいタイヤに変更したから。オドメトリの計算が狂っているのでし
ょう。
どっかにタイヤの直径が設定されているはず・・・
:@emboss369 :hiroaki.kaneda
オドメトリは、OpenCR(Arduino互換ボード)にあ
る!オドメトリの計算は、OpenCRというArduino互換ボードで、サーボや電源の管理
をしてくれているボードで行っています。
Arduinoなのでスケッチをちょいと弄って書き込めばOKでした!
Arduino IDEをインストール。aptでインストールもできるが、そっちは古いので
ダメ、 https://www.arduino.cc/en/Main/Software からarduino-1.8.5-linux64.tar.xzをダウンロー
ドして次のコマンドでインストール。
cd ~/Downloads
tar -xvf arduino-1.8.5-linux64.tar.xz
sudo mv arduino-1.8.5 /opt
cd /opt/arduino-1.8.5/
chmod +x install.sh
./install.sh
:@emboss369 :hiroaki.kaneda
タイヤ半径の設定
ファイル、環境設定を開き、「追加のボードマネージャーのURL」に
https://raw.githubusercontent.com/ROBOTIS-GIT/OpenCR/master/arduino/opencr_release/package_opencr_index.json
を入力、OK。
メニューのツール、ボード、ボードマネージャーより、「OpenCR by ROBOTIS」を探して、「インストール」する。It takes
about 10 minutes.
メニューのツール、ボード、OpenCRボードを選択。
メニューのファイル、スケッチ例>TurtleBot3>turtlebot3_waffle>turtlebot3_core
turtlebot3_coreとturtlebot3_core_config.hが開きます。
turtlebot3_core_config.hに「WHEEL_RADIUS(ホウィール_レイジアス)」という値があります。
#define WHEEL_RADIUS 0.033 // meter
これを実際の値に変更します。実測したところホイールとゴムをあわせた直径が119mmだったので
#define WHEEL_RADIUS 0.0595 // meter (BURGER : 0.033, WAFFLE : 0.033, CARRIER 0.0595)
とします。
Tools> Port > /dev/ttyACM0
Uploadボタンを押して、ファームウェアをOpenCRに書き込みます。
これでNavigationを行ったところ、オドメトリが修正され、マップがずれなくな
りました。
:@emboss369 :hiroaki.kaneda
TurtleBot3 Carrier
https://github.com/ROBOTIS-GIT/turtlebot3_deliver/
ここに、Carrierを使った仮想の宅配システムの例があり、こちらに先ほどのタイ
ヤ半径も設定済みのCarrier用スケッチがあります!このファームウェアを
Arduinoに書き込めばOKです!他にも、荷物運び用にアクチュエータ(ダイナミ
クセル)の設定変更がなされています。具体的にはプロファイルアクセラレーシ
ョンを変更し、荷物を安全に運べるように加速を制限した設定になっています。
:@emboss369 :hiroaki.kaneda
:@emboss369 :hiroaki.kaneda
:@emboss369 :hiroaki.kaneda
:@emboss369 :hiroaki.kaneda
RealSense ZR300のセットアップ
をしようとおもったら
:@emboss369 :hiroaki.kaneda
RealSense D400シリーズ
本命キター
:@emboss369 :hiroaki.kaneda
RealSense D400シリーズ
安価!
高性能!
野外でも十分な性能!
なんとD435はグローバルシャッターを採用
:@emboss369 :hiroaki.kaneda
RealSense ZR300のセットアップ
https://github.com/IntelRealSense/realsense_samples_ros
公式の手順通りに進める。
# Install Intel RealSense SDK for Linux
sudo apt-key adv --keyserver keys.gnupg.net --recv-key D6FB2970
sudo sh -c 'echo "deb http://realsense-alm-public.s3.amazonaws.com/apt-repo xenial main" >
/etc/apt/sources.list.d/realsense-latest.list'
sudo apt update
sudo apt install -y librealsense-object-recognition-dev librealsense-persontracking-dev librealsense-slam-dev libopencv-
dev
# Download and compile ROS wrappers for Intel RealSense SDK for Linux
# mkdir -p catkin_ws/src ##作成済みなので mkdir はスキップ
cd catkin_ws/src/
# catkin_init_workspace ## ワークスペースもturtlebot3のインストールで作成済み
git clone https://github.com/IntelRealSense/realsense_samples_ros
cd ..
catkin_make
source devel/setup.bash
しかしエラーになる。。。。
:@emboss369 :hiroaki.kaneda
RealSense ZR300のセットアップ
もはや、ZR300のライブラリはメンテされてない模様・・・
githubのプルリクエスト(修正パッチの提案)も放置されたまま・・・・・orz
仕方ないので手動でプルクエスト
https://github.com/IntelRealSense/realsense_samples_ros/pull/29
を適用する。
cd ~/catkin_ws/src/realsence_samples_ros/
git fetch origin pull/29/head:mybranch
git checkout mybranch
cd ~/catkin_ws/
catkin_make
source devel/setup.bash
これでビルドは通るようになりました。
:@emboss369 :hiroaki.kaneda
RealSense ZR300のセットアップ
https://github.com/IntelRealSense/realsense_samples_ros
しかし、ROSのサンプルはroslanchしてもエラーを吐くのみで動かない・・・・
海外でも同じ状況の人発見。しかし、試行錯誤の末、うまくいかなかったと書い
てある。
完全に行き詰まった。
D400を買うしかないのか・・・
いや、ZR300をゴミにしたくない・・・ と葛藤中。
:@emboss369 :hiroaki.kaneda
詳説 ROSロボットプログラミング
https://github.com/bmagyar/rosbook_jp
ROS学習の第一歩
クリエイティブ・コモンズ・表示 - 非営利 4.0
国際・ライセンスで提供されています。
つまり無料です!再配布も自由です!
:@emboss369 :hiroaki.kaneda
ROSロボットプログラミングバイブル
https://amzn.to/2HIjcxD
「詳説 ROSロボットプログラミング」と同じ
執筆陣
アップデート版を出版
TurtleBot3の情報満載
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2018
http://www.tsukubachallenge.jp/
つくば市内の遊歩道等の実環境で移動ロボットに自律走行させる技術チャレンジ
年々難しくなってる
2013年 人の探索
2015年 横断歩道を渡る
2018年 経由点の設定が日毎に変化するような課題
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2018
経由点の設定が日毎に変化するような課
題
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2018
経由点の設定が日毎に変化するような課
題
結構難しくなりそう・・・・・
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2018
コースも長い
:@emboss369 :hiroaki.kaneda
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2018
人探索が難しくなりました
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2017では・・・・
人探索が難しくなりました
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2018
:@emboss369 :hiroaki.kaneda
つくばチャレンジ2018
:@emboss369 :hiroaki.kaneda
:@emboss369 :hiroaki.kaneda
ご清聴ありがとうございました
・Turtlebot3はロボット(ROS)の学習に最適。Burgerがオススメ。
・自分好みに改造するとまた勉強になる(オドメトリ大事!とか)。
・RealSense ZR300自体がSLAM機能を持っている。
・上記、ROSで使うのは今は困難そう。今からやるなら、最新のD400シリー
ズのほうが良いかも。
・単純にRGB-Dカメラとして使うなら問題なし。
・つくばチャレンジに初参加するぞ!早くSLAM機能を完成させなければ!!
まとめ

Turtlebot3とrealsenseで作るお手軽移動ロボットros japan ug #23 関西勉強会

Editor's Notes

  • #10 オープンソース! Raspbery Pi、にUbuntu OpenCRという制御ボードもオープンソースで仕様が公開されている。また、Arduino互換ボードなのでコーディングも楽。 3D CADデータも公開されているので3Dプリンタで印刷することも可能。部品壊しても印刷できる!
  • #11 基本的にはRemote PCでSLAMやNavigationを動かす (所詮Raspbery Piなので・・・)
  • #14 SICKの距離センサーもありますね。なんて病気なて会社名なんだろと思ってましたけど ドイツの会社さんなんですね。病人はクランケ、病気はクランクだから別に違和感なかったのかか? 日立LGデータストレージといえば、ブルーレイドライブを作ってる会社なので、レーザーやモーター回転はお手のもなんでしょうね!
  • #15 デッドレコニング、と センサーマッチング あづみ先生 地図と、リアルタイムのLiDAR当てはまったか、を計算、スキャンマッチングする。 今いる場所がどこになるのかを判定するのが、スキャンマッチング。
  • #16 OpenCR はTurtleBotのメインコンピュータ 高性能マイクロコントローラー Arduinoとの互換性 ダイナミクセル用通信インタフェース、GPIO、UARTユーアート、SPI、I2Cアイアイしー、CANキャン デバッグ用にJTAGも用意されている。 IMUがあり、ジャイロ、加速度、地磁気センサが載っている。 電源のホットスワップ可能。これはありがたい、テスト中にバッテリがーなくなっても電源に接続して続行できる。
  • #19 CADデータはすべて完全クラウド型3DキャドにOnShapeにおいてある。 そこからパーツごとのデータをダウンロードできる。 STL形式でダウンロードすれば、そのまま3Dプリンターですぐさま部品を作成することが可能。 もちろんBurgerなどのデータもあるので、ラズパイ、OpenCRボード、LiDAR、アクチュエーターを個別に購入して、あとの部品は3Dプリンターで印刷して作成することも可能。 少しでも安くしたかったので、安くなるのか、計算しまくりました。 その結果、印刷時間や3Dプリンターの電気代、フィラメント代、その他諸々を考慮すると、素直に6万円でBurgerを買ったほうが良いという結論に達しました。