[[Tutorial for ver.3]]

SIGVerse_v3では、ROSのプログラムを利用して仮想ロボットを制御することができます。
----

ここでは、SIGVerse v3のROS (Robot Operating System)を使用したサンプルについて説明します。
基本的なサンプルは[[こちらのページ>Tutorial for ver.3]]を参照してください。
SIGVerse v3では、ROS(Robot Operating System)のプログラムを利用して仮想ロボットを制御することができます。

ここでは ROS を使用したサンプルプログラムについて説明します。
ROSを使用しないサンプルプログラムは[[こちらのページ>Tutorial for ver.3]]を参照してください。



#contents

* システム要件 [#l6825477]
* システム要件 [#SystemRequirements]

ROSを使用する際にはUbuntu環境を用意して、そこにROSをインストールします。~
そしてROSをインストールしたUbuntuと、UnityをインストールしたWindowsで通信を行います。~

Windows側の要件は[[こちらのページ>Tutorial for ver.3]]を参照してください。

ROS側の要件は、OSが Ubuntu 16.04 、ROSの[[ディストリビューション>http://wiki.ros.org/Distributions]]は Kinetic Kame とします。
ROS側の要件は、OSが ''Ubuntu 20.04'' 、ROSの[[ディストリビューション>http://wiki.ros.org/Distributions]]は ''Noetic Ninjemys'' とします。

#ref(RobotOperationUsingROS.png)

* 環境構築 [#vf01a3c9]

** 基本的な環境構築 [#k2704bce]
* Windows環境の構築 [#k2704bce]

まず、[[こちらのページ>Tutorial for ver.3]]を参照して、SIGVerse v3を使用するための基本的な環境構築を行ってください。
[[こちらのページ>Tutorial for ver.3#SystemRequirements]]を参照して、Windows環境の構築を行ってください。~
その後、以降の環境構築作業を行ってください。

** Ubuntu環境の設定 [#zddcd2d8]
* Ubuntu環境の構築 [#zddcd2d8]

以下のようにUbuntu環境を構築します。~

ROSを使用するサンプルプログラムを実行する場合、以下のように設定を行います。~
** VMwareの使用 [#gc586877]

*** CMakeのインストール [#iad7c8b9]
ターミナルで、以下のコマンドを実行します。CMakeはver.3.2以上が必要となります。
Ubuntu PCを用意する代わりにWindows上にUbuntuの仮想マシンを構築して使用することもできます。~
但しこの場合、GPUを使用するチュートリアルは難しいです。 ~
VMwareを使用すると多くの計算資源が必要になるので注意してください。~
またDockerはVMwareとの共存に問題があるかもしれません。ご注意ください。

 $ sudo apt-get install cmake
VMwareを使用してUbuntu環境を構築する方法は次のような流れです。

+ VMware Workstation Playerをダウンロードします。~
https://my.vmware.com/jp/web/vmware/downloads/info/slug/desktop_end_user_computing/vmware_workstation_player/16_0
+ Ubuntu 20.04.4 LTSのISOファイルをダウンロードします。~
http://releases.ubuntu.com/focal/
+ VMware Workstation Playerを起動します。
+ [Create a New Virtual Machine]をクリックします。
+ [Installer disc image file(iso):]を使用し、ubuntu-20.04.4-desktop-amd64.isoを選択します。
+ Specify Disk Capacity画面で、"Store virtual disk as a single file"にチェックを入れることをお勧めします。
+ VMの作成が終わったら、VMware Workstation Playerの仮想マシン設定画面でメモリやCPU数を調整してください。~
また拡張キーボードを使用するよう設定してください。

*** ROS Kineticのインストール [#dccef8ca]
[[こちら>http://wiki.ros.org/kinetic/Installation/Ubuntu]]の手順に従って、ROSをインストールします。([[日本語版>http://wiki.ros.org/ja/kinetic/Installation/Ubuntu]])~
その後、[[ROSのチュートリアル>http://wiki.ros.org/ja/ROS/Tutorials/InstallingandConfiguringROSEnvironment]]に従ってcatkinワークスペースの作成まで行ってください。

また以降のコマンド簡略化のため、~/catkin_ws/devel/setup.bash の実行を.bashrcに追記します。複数のcatkin workspaceを管理している方は注意してください。
** ROS Noetic Ninjemysのインストール [#dccef8ca]
[[ROSインストールページ>http://wiki.ros.org/noetic/Installation/Ubuntu]]を1.6節まで実行してROSをインストールします。~
その後、[[ROSのチュートリアル>http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment]]の3章に従ってROSワークスペースの作成を行ってください。


** 必要なライブラリのインストール(シェルスクリプト使用) [#i3fb7c9b]
シェルスクリプトを使用してライブラリを一括インストールする手順を示します。 ~
この手順を実行した場合、以降の手動インストール手順は不要です。 ~
ROS Noeticを標準インストールした場合で動作確認しています。 ~
そのためROSワークスペースの名前がcatkin_wsではない場合などは正常にインストールできません。 ~
注意して使用してください。
 $ wget https://raw.githubusercontent.com/SIGVerse/docker-ros/main/noetic/sigverse_setup.sh
 $ chmod +x sigverse_setup.sh
 $ ./sigverse_setup.sh
 $ source ~/.bashrc

** 必要なライブラリのインストール(手動) [#n300e515]

*** .bashrcへのコマンド追加 [#bceb6936]
コマンド簡略化のため、~/catkin_ws/devel/setup.bash の実行を.bashrcに追記します。~
複数のROSワークスペースを管理している方は注意してください。

 $ echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
 $ source ~/.bashrc


*** ROSBridge_suiteのインストール [#c3162771]
ターミナルを起動し、以下のコマンドを実行します。

 $ sudo apt-get install ros-kinetic-rosbridge-server
 $ sudo apt-get install ros-noetic-rosbridge-server


*** Mongo C driver インストール [#n65f2eba]
*** Mongo C driver のインストール [#n65f2eba]
ターミナルで、以下のコマンドを実行します。

 $ cd ~/Downloads (日本語設定の場合は cd ~/ダウンロード で実行してください。)
 $ cd ~/Downloads #(日本語設定の場合は cd ~/ダウンロード)
 $ wget https://github.com/mongodb/mongo-c-driver/releases/download/1.4.2/mongo-c-driver-1.4.2.tar.gz
 $ tar zxvf mongo-c-driver-1.4.2.tar.gz
 $ cd mongo-c-driver-1.4.2
 $ ./configure
 $ make
 $ sudo make install

*** Mongo C++ driver インストール [#lf0687e5]
*** Mongo C++ driver のインストール [#lf0687e5]
ターミナルで、以下のコマンドを実行します。

 $ cd ~/Downloads (日本語設定の場合は cd ~/ダウンロード で実行してください。)
 $ cd ~/Downloads #(日本語設定の場合は cd ~/ダウンロード)
 $ wget https://github.com/mongodb/mongo-cxx-driver/archive/r3.0.3.tar.gz
 $ tar zxvf r3.0.3.tar.gz
 $ cd mongo-cxx-driver-r3.0.3/build
 $ cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DLIBMONGOC_DIR=/usr/local -DLIBBSON_DIR=/usr/local ..
 $ sudo make EP_mnmlstc_core
 $ make
 $ sudo make install

*** sigverse_ros_bridgeの設定 [#n891675d]
*** gnome-terminal のインストール [#qee06a1a]
gnome-terminalがインストールされていない場合はインストールしてください。

 $ sudo apt install gnome-terminal

*** sigverse_ros_bridgeの設定 [#k80ec0b6]
ターミナルで、以下のコマンドを実行します。

 $ cd ~/catkin_ws/src
 $ git clone https://github.com/SIGVerse/sigverse_ros_package.git
 $ cd ..
 $ catkin_make


*** TurtleBot3パッケージのインストール [#c4f5154e]

*** Turtlebotパッケージのインストール [#c4f5154e]
[[TurtleBot3>http://wiki.ros.org/turtlebot3]]を利用するには関連するROSパッケージをインストールします。~

Turtlebotを使用したサンプルを実行する場合、Turtlebotパッケージもインストールします。
 $ sudo apt install ros-noetic-rgbd-launch
 $ sudo apt install ros-noetic-gmapping
 $ sudo apt install ros-noetic-turtlebot3*
 
// $ cd ~/catkin_ws/src
// $ git clone https://github.com/ros-drivers/openni2_camera.git
// $ git clone -b legacy https://github.com/IntelRealSense/librealsense.git
// $ git clone -b indigo-devel https://github.com/IntelRealSense/realsense-ros.git
// $ sed -i 's/c++11/c++14/g' realsense-ros/realsense_camera/CMakeLists.txt
// 
// $ cd ~/catkin_ws
// $ catkin_make --pkg librealsense
// $ catkin_make
// 
// $ source ~/.bashrc

[[こちら>http://wiki.ros.org/Robots/TurtleBot]]の手順に従って、Turtlebotを利用するためのROSパッケージをインストールしますが(※Debs Installationで問題ありません。)、~
Kinetic Kameにインストールする場合は以下も参考にしてください。
*** PR2パッケージのインストール [#hf065135]

http://answers.ros.org/question/246015/installing-turtlebot-on-ros-kinetic/
PR2を利用するにはPR2関連パッケージをインストールします。

 $ sudo apt-get install -y linux-headers-generic
 $ sudo sh -c 'echo "deb-src http://us.archive.ubuntu.com/ubuntu/ xenial main restricted
 deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-updates main restricted
 deb-src http://us.archive.ubuntu.com/ubuntu/ xenial-backports main restricted universe multiverse
 deb-src http://security.ubuntu.com/ubuntu xenial-security main restricted" > \
   /etc/apt/sources.list.d/official-source-repositories.list'
 $ sudo apt-get update
 $ sudo apt-get install -y ros-kinetic-librealsense
 $ sudo apt-get install -y ros-kinetic-realsense-camera
 $ sudo apt-get install -y ros-kinetic-turtlebot
 $ sudo apt-get install ros-noetic-pr2*
 
 $ cd $ROS_ROOT/../prosilica_camera
 $ sudo mkdir plugins
 $ sudo cp nodelet_plugins.xml plugins/

また以下もインストールすると便利だと思います。

 $ sudo apt-get install ros-kinetic-turtlebot*
* ROSを使用したサンプルプログラムの実行 [#o023aef1]

そして、SIGVerse用の.launch XMLファイル(3dsensor)を配備します。
** Unityシーンの実行方法 [#open_scene]

 $ cd ~/catkin_ws/
 $ sudo cp src/sigverse_ros_package/samples/turtlebot2/resources/asus_xtion_pro_sigverse.launch.xml /opt/ros/${ROS_DISTRO}/share/turtlebot_bringup/launch/includes/3dsensor
Unityのサンプルシーンを実行する前に、ROSのIPアドレスをUnity側に設定する必要があります。

※本件に関してまして、[[産業技術総合研究所の原功 氏>http://hara.jpn.com/_default/ja/Topics/SIGVerse20Ver.3.html]]からファイルの提供と助言を頂きました。~
有難うございました。



TurtleBot3に関しては[[こちら>https://turtlebot3.readthedocs.io/en/latest/]]を参考にしてください。






* サンプルプログラムの実行 [#o023aef1]

** Unityシーンの開き方 [#open_scene]

まずUbuntu環境のIPアドレスをSIGVerse設定画面で入力します。~
+Ubuntu環境のIPアドレスを確認します。~
IPアドレスはUbuntu環境で以下のコマンドを実行することで確認できます。
 $ hostname -I
+ UnityでSIGVerse v3プロジェクトを開きます。
+ Unityメニューの[SIGVerse]-[SIGVerse Settings]をクリックして、SIGVerse設定画面を開きます。
+ ROS側のIPアドレスを[Config file Settings]-[Rosbridge IP]に入力します。~
(同様に[Rosbridge Port]や[SIGVeres Bridge Port]も変更できます。)

 $ ifconfig
#ref(SIGVerseSettings.png)

そして、以下の手順でIPアドレス等を設定します。

+ UnityでSIGVerse_v3プロジェクトを開きます。
+ Unityメニューの[SIGVerse]-[SIGVerse Settings]をクリックして、SIGVerse設定画面を開きます。
+ [Config file Settings]の[Rosbridge IP]をROS側のIPアドレスに変更します。~
([Rosbridge Port]や[SIGVeres Bridge Port]を変更したい場合も同様に変更できます。)

Unityシーンの開き方は次の通りです。
+ [Project]タブの[Assets/SIGVerse/SampleScenes/xxxxx/yyyyy(.unity)]をダブルクリックしてシーンを開きます。
Unityシーンの実行方法は次の通りです。
+ [Project]タブの[Assets/SIGVerse/ExampleScenes/xxxxx/yyyyy(.unity)]をダブルクリックして対象シーンを開きます。
+ Unity画面の上部中央にある再生ボタンをクリックしてシーンを再生します。
+ SIGVerseメニューの[Start]をクリックして、シーンを開始します。


** Turtlebot Followerの実行 [#bd112681]

*** Ubuntu環境での起動手順 [#ge25aa6a]

新しいターミナルを開き、以下のコマンドを実行します。
 $ roslaunch sigverse_turtlebot2 follower.launch 
** サンプルシーン一覧 [#h9fc55dc]

// - [[(Turtlebot2)人間を追従する]]
// - [[(Turtlebot2)キーボードで操作する]]
- [[(TurtleBot3)把持する(キーボード操作)]]
- [[(TurtleBot3)把持する(自動把持)]] #darknet_ros(YOLO)
- [[(TurtleBot3)SLAMの実行]]
- [[(TurtleBot3)人間が指差す方向を認識する]]
- [[(PR2)キーボードで操作する]]
- [[(HSR)キーボードで操作する]]
- [[(HSR)Cleanupタスクの実行]]
- [[(HSR)クラウドとVRを使用したCleanupタスクの実行]] #Cloud, VR
- [[(HSR)クラウドとVRを使用したCleanupタスクの実行(記録・再生機能付き)]] #Cloud, VR
- [[(HSR)あれ取ってきて!(Bring that!)部屋の地図作成&自律移動(作成中)]]
- [[(TIAGo)キーボードで操作する]]
- [[(TIAGo)Cleanupタスクの実行]]

*** Windows環境での起動手順 [#u521891c]

[[こちら>#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/Turtlebot2/Turtlebot2Follower(.unity)]シーンを開始します。


*** 実行 [#b584cb20]

Windows側のUnity画面にフォーカスを当てた状態で十字キーを操作すると、アバターが移動し、TurtleBotがアバターに追従します。

※ROS側でTurtleBotのカメラ画像確認を行いたい場合は以下のコマンドで確認できます。
 $ rosrun image_view image_view image:=/camera/rgb/image_raw

※またrvizでも確認できます。
 $ roslaunch turtlebot_rviz_launchers view_robot.launch





** Turtlebot Keyboard Teleopの実行 [#m81a1f8d]

*** Ubuntu環境での起動手順 [#he2ae03c]

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


*** Windows環境での起動手順 [#ifc7cd9b]

[[こちら>#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/Turtlebot2/Turtlebot2Teleop(.unity)]シーンを開始します。


*** 実行 [#h6d18830]

Ubuntu側の keyboard_teleop.launch のターミナル上でキー操作を行うとTurtleBotが移動します。

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





** TurtleBot3 with OpenManipulator Chain による把持(Keyboard Teleop)の実行 [#hced1165]

Open Manipulatorの仕様は、[[こちら>https://turtlebot3.readthedocs.io/en/latest/manipulation.html]]をご参照ください。~
カメラの仕様は、[[こちら>https://turtlebot3.readthedocs.io/en/latest/appendix_realsense.html]]をご参照ください。

*** Ubuntu環境での起動手順 [#ncdcea0d]

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


*** Windows環境での起動手順 [#w85a2596]

[[こちら>#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/Turtlebot3/OpenManipulator(.unity)]シーンを開始します。


*** 実行 [#dc60bbe2]

Ubuntu側の grasping_teleop_key.launch のターミナル上でキー操作を行うとTurtleBot3を操作できます。

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





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

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

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

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

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

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

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


Open Manipulatorの仕様は、[[こちら>https://turtlebot3.readthedocs.io/en/latest/manipulation.html]]をご参照ください。~
またカメラは深度センサの最短距離が短い方が都合が良かったため、[[RealSense R200>https://turtlebot3.readthedocs.io/en/latest/appendix_realsense.html]]ではなく、
[[RealSense SR300>https://www.intel.com/content/dam/support/us/en/documents/emerging-technologies/intel-realsense-technology/realsense-sr300-datasheet1-0.pdf]]を想定します。


*** Ubuntu環境の設定 [#c709f1fe]

本サンプルでは darknet_ros(YOLO)を使用するため、Ubuntu環境にインストールする必要があります。

+ CUDAを[[こちら>https://developer.nvidia.com/cuda-downloads]]からダウンロードしてインストールする。~
(詳細は各自のPCやNVIDIA Driverの環境に合わせて行ってください)
+[[こちら>https://github.com/leggedrobotics/darknet_ros]]を参考にして、darknet_rosを git cloneする。~
以下の追加データもダウンロードしてください。
 $ cd ~/catkin_ws/src/darknet_ros/darknet_ros/yolo_network_config/weights/
 $ wget http://pjreddie.com/media/files/yolo.weights
+[[こちら>https://github.com/leggedrobotics/darknet_ros]]を参考にして、darknet_rosをインストールする。~
またビルド時には依存関係にあるdarknet_ros_msgsを先にcatkin_makeしたほうが良いかもしれません。
 $ catkin_make --pkg darknet_ros_msgs

*** Ubuntu環境での起動手順 [#l39593fd]

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



*** Windows環境での起動手順 [#df821e14]

[[こちら>#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/Turtlebot3/OpenManipulatorSR300(.unity)]シーンを開始します。


*** 実行 [#sd88b953]

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

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







** TurtleBot3 によるSLAM(Gmapping)の実行 [#i221ef46]

Laser Distance Sensorを使用して、SLAM(Gmapping)を行うサンプルです。

Laser Distance Sensorの仕様は、[[こちら>https://turtlebot3.readthedocs.io/en/latest/appendix_lds.html]]をご参照ください。~
Gmappingの説明は[[こちら>http://wiki.ros.org/gmapping]]をご参照ください。

*** Ubuntu環境での起動手順 [#i234a113]

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


*** Windows環境での起動手順 [#q350a952]

[[こちら>#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/Turtlebot3/LaserDistanceSensor(.unity)]シーンを開始します。


*** 実行 [#i6d2d2bc]

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

TurtleBot3を動かすと、RViz上でマップが作成されていることが確認できると思います。

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







** 人間キャラクターが指差す方向を認識する [#xc5f1917]

TurtleBot3 が人間キャラクターの指差す方向を認識して、Manipulatorをその方向に回転するサンプルプログラムです。

*** Ubuntu環境での起動手順 [#l8b689c6]

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


*** Windows環境での起動手順 [#z37ca133]

[[こちら>#open_scene]]を参考に[Assets/SIGVerse/SampleScenes/Turtlebot3/Pointing(.unity)]シーンを開始します。


*** 実行 [#o9555b32]

Unity側で左右の矢印キーを押下すると、人間キャラクターの右手が動きます。~
その後 Spaceキーを押下すると、TurtleBot3がManipulatorを人間キャラクターの指差す方向に回転します。


----

#counter


Front page   New List of pages Search Recent changes   Help   RSS of recent changes