[[Tutorial using ROS for ver.3]]

* TurtleBot3による把持(自動把持)の実行 [#e93a5390]

このサンプルは、物体の自動把持を行うシンプルなサンプルです。

TurtleBot3にはOpenManipulatorが付いています。


darknet_ros(YOLO)による物体認識や、Point Cloudデータを使用しています。~
またYOLOによる物体認識を行うため、Ubuntu環境にCUDAをインストールする必要があります。~
CUDAをインストールしなくともCPUを使用して動かすことは可能ですが、物体認識の速度が非常に遅くなります。

操作の概略は以下の通りです。

+ キー操作でTurtleBot3を物体の手前まで移動する。
+ なるべくカラー画像の中心付近に把持対象が映るようにTurtleBot3を動かす。
+ 番号を入力し把持する物体を指定する。

上記の操作を行うと、TurtleBot3は以下のような流れで物体の把持を試みます。

+ darknet_ros(YOLO)が、カラー画像を使用して物体認識を行う。
+ カラー画像とPoint Cloud情報を使用して、物体の3次元座標を推測する。
+ 算出した3次元座標の位置を把持する。

Open Manipulatorの仕様は、[[こちら>http://emanual.robotis.com/docs/en/platform/turtlebot3/manipulation/#manipulation]]をご参照ください。~
カメラの仕様は、[[こちら>https://www.stereolabs.com/zed-mini/]]をご参照ください。


** Ubuntu環境の構築 [#c709f1fe]

本サンプルでは darknet_ros(YOLO)をUbuntu環境にインストールする必要があります。~
まずはrosを使用しない[[通常のdarknet>https://github.com/pjreddie/darknet]]の動作確認を行うことをお勧めします。

手順は以下の通り
+ CUDAを使用する場合は、NVIDIAドライバをインストールします。(CUDAをインストールしなくともCPUを使用して動かすことは可能です)
+ CUDAを使用する場合は、[[こちら>https://developer.nvidia.com/cuda-downloads]]からダウンロードしてインストールします。~
(詳細は各自のPCやNVIDIAドライバの環境に合わせて行ってください)
+darknet_rosを git cloneする。~
動作確認済みのコミットをチェックアウトします。
 $ cd ~/catkin_ws/src
 $ git clone --recursive https://github.com/leggedrobotics/darknet_ros.git
 $ cd darknet_ros
 $ git checkout 1027a280
+CUDAを使用する場合は、darknet_ros/darknet/Makefileを修正します。(GPU=1、CUDNN=1)
+darknet_rosをインストールする。
 $ cd ~/catkin_ws
 $ catkin_make -DCMAKE_BUILD_TYPE=Release
※GPUとCUDAの組み合わせによっては、catkin_make時に"Unsupported gpu architecture 'compute_30'"というようなエラーが出るかもしれません。 ~
その場合は、darknet_rosのCMakeLists.txtのcompute_30に関わる行をコメントアウトすれば回避できると思われます。 ~
※例えば NVIDIA Tesla T4の場合は、compute_30の行は削除し、compute_75を追加する必要があります。

** 起動手順 [#bc27b1e9]

まずUbuntu側を起動します。その後 Windows側を起動してください。

*** Ubuntu側の起動手順 [#l39593fd]

新しいターミナルを開き、以下のコマンドを実行します。
 $ roslaunch sigverse_turtlebot3_open_manipulator grasping_auto.launch

*** Windows側の起動手順 [#df821e14]

[[こちら>Tutorial using ROS for ver.3#open_scene]]を参考に[Assets/SIGVerse/ExampleScenes/Turtlebot3/OpenManipulator(.unity)]シーンを開始します。


** 実行 [#sd88b953]

Ubuntu側の grasping_auto という名前のターミナル上でキー操作を行うとTurtleBot3を操作できます。

※操作方法の詳細はターミナルの表示を確認してください。

※画像処理負荷が高いため、ロボットのカメラ画像送信間隔は1000[ms]にしています。 ~
(もしも送信間隔を短くしたい場合は、turtlebot3_with_open_manipulator/RosBridgeScriptsにアタッチされているZEDMiniPubCameraImageControllerのSending Intervalを小さくしてください)


終了する際は、Unity側を停止させてからROS側を終了してください。


Ubuntu側(細部は最新版とは異なる場合があります)
#ref(TurtleBot3GraspAutoUbuntu.png)

Windows側(細部は最新版とは異なる場合があります)
#ref(TurtleBot3GraspAutoWindows.png)

Windows側 ("clock"を把持した)(細部は最新版とは異なる場合があります)
#ref(TurtleBot3GraspAutoWindowsGrasping.png)

----
''参考動画''
(GPUを使用していないので物体認識速度は遅いです)
#youtube(eZgu1bO7KMM)

Front page   Edit Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes