Tutorial for ver.3

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

ここでは、SIGVerse v3のROS (Robot Operating System)を使用したサンプルについて説明します。 基本的なサンプルはこちらのページを参照してください。

システム要件

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

Windows側の要件はこちらのページを参照してください。

ROS側の要件は、OSが Ubuntu 16.04 、ROSのディストリビューションは Kinetic Kame とします。

環境構築

基本的な環境構築

まず、こちらのページを参照して、SIGVerse v3を使用するための基本的な環境構築を行ってください。 その後、以降の環境構築作業を行ってください。

Ubuntu環境の設定

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

CMakeのインストール

ターミナルで、以下のコマンドを実行します。CMakeはver.3.2以上が必要となります。

$ sudo apt-get install cmake

ROS Kineticのインストール

こちらの手順に従って、ROSをインストールします。(日本語版)
その後、ROSのチュートリアルに従ってcatkinワークスペースの作成まで行ってください。

また以降のコマンド簡略化のため、~/catkin_ws/devel/setup.bash の実行を.bashrcに追記します。複数のcatkin workspaceを管理している方は注意してください。

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

ROSBridge_suiteのインストール

ターミナルを起動し、以下のコマンドを実行します。

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

Mongo C driver インストール

ターミナルで、以下のコマンドを実行します。

$ 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 インストール

ターミナルで、以下のコマンドを実行します。

$ 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の設定

ターミナルで、以下のコマンドを実行します。

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

Turtlebotパッケージのインストール

Turtlebotを使用したサンプルを実行する場合、Turtlebotパッケージもインストールします。

こちらの手順に従って、Turtlebotを利用するためのROSパッケージをインストールしますが(※Debs Installationで問題ありません。)、
Kinetic Kameにインストールする場合は以下も参考にしてください。

http://answers.ros.org/question/246015/installing-turtlebot-on-ros-kinetic/

$ 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-kinetic-turtlebot*

そして、SIGVerse用の.launch XMLファイル(3dsensor)を配備します。

$ 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

※本件に関してまして、産業技術総合研究所の原功 氏からファイルの提供と助言を頂きました。
有難うございました。

TurtleBot3に関してはこちらを参考にしてください。

サンプルプログラムの実行

Unityシーンの開き方

まずUbuntu環境のIPアドレスをSIGVerse設定画面で入力します。
IPアドレスはUbuntu環境で以下のコマンドを実行することで確認できます。

$ ifconfig

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

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

Unityシーンの開き方は次の通りです。

  1. [Project]タブの[Assets/SIGVerse/SampleScenes/xxxxx/yyyyy(.unity)]をダブルクリックしてシーンを開きます。
  2. Unity画面の上部中央にある再生ボタンをクリックしてシーンを再生します。
  3. SIGVerseメニューの[Start]をクリックして、シーンを開始します。

Turtlebot Followerの実行

Ubuntu環境での起動手順

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

$ roslaunch sigverse_turtlebot2 follower.launch 

Windows環境での起動手順

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

実行

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の実行

Ubuntu環境での起動手順

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

$ roslaunch sigverse_turtlebot2 teleop_key.launch

Windows環境での起動手順

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

実行

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

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

TurtleBot3 with OpenManipulator Chain による把持(Keyboard Teleop)の実行

Open Manipulatorの仕様は、こちらをご参照ください。
カメラの仕様は、こちらをご参照ください。

Ubuntu環境での起動手順

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

$ roslaunch sigverse_turtlebot3_open_manipulator grasping_teleop_key.launch 

Windows環境での起動手順

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

実行

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

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

TurtleBot3 with OpenManipulator Chain による把持(自動把持)の実行

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

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

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

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

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

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

Open Manipulatorの仕様は、こちらをご参照ください。
またカメラは深度センサの最短距離が短い方が都合が良かったため、RealSense R200ではなく、 RealSense SR300を想定します。

Ubuntu環境の設定

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

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

Ubuntu環境での起動手順

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

Windows環境での起動手順

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

実行

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

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

TurtleBot3 によるSLAM(Gmapping)の実行

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

Laser Distance Sensorの仕様は、こちらをご参照ください。
Gmappingの説明はこちらをご参照ください。

Ubuntu環境での起動手順

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

$ roslaunch sigverse_turtlebot3_laser_distance_sensor slam.launch 

Windows環境での起動手順

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

実行

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

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

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

人間キャラクターが指差す方向を認識する

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

Ubuntu環境での起動手順

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

$ roslaunch sigverse_turtlebot3_open_manipulator recognize_pointed_direction.launch

Windows環境での起動手順

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

実行

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


Counter: 173, today: 1, yesterday: 0

Front page   Edit Freeze Diff Backup Upload Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2017-10-04 (Wed) 00:59:16 (46d)