SlideShare a Scribd company logo
KINECT WITH ROS
ROS勉強会 @ 2016.11.17
KINECT WITH ROS
AGENDA
▸ 3D Vision System Overview
▸ 3D Sensors
▸ Simple Target Detection with OpenCV
▸ Put It All Together
3D VISION SYSTEM
OVERVIEW
KINECT WITH ROS
3D VISION SYSTEM OVERVIEW
3D SENSOR
(KINECT)
KINECT BRIDGE
OPENCV
ROS
POSITION
TRACKER
SENSOR IMAGE
SENSOR IMAGE 3D POSITION
3D SENSORS
KINECT WITH ROS
3D SENSORS
▸ depth cameraによって距離が計測できる
▸ 距離計測ができることで観測点のx,y,z座標が得られる
▸ ⼊⼿可能な3Dセンサー
▸ Microsoft Kinect
▸ ASUS Xtion
▸ PrimeSense Carmine
KINECT WITH ROS
MICROSOFT KINECT
▸ 製品(カッコ内は発売時期)
▸ Kinect 360 (2010. 11)
▸ Kinect One (2013. 11)
▸ Kinect for Windows v2 (2014. 7)
▸ Driver
▸ Freenect
▸ libfreenect2 (Kinect for Windows v2)
KINECT WITH ROS
KINECT FOR WINDOWS V2をROSから使うには?
▸ iai_kinect2をインストールすればよい
▸ https://github.com/code-iai/iai_kinect2
▸ READMEのインストール⼿順参照
▸ libfreenect2のビルド&インストール
▸ iai_kinect2のビルド&インストール
KINECT WITH ROS
LIBFREENECT2のインストール
▸ https://github.com/OpenKinect/libfreenect2
$ git clone https://github.com/OpenKinect/libfreenect2.git
$ cd libfreenect2
$ sudo apt-get install build-essential cmake pkg-config
$ mkdir build && cd build
$ cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2
$ make
$ make install
$ ./bin/Protonect
⼿順
動作確認
KINECT WITH ROS
IAI_KINECT2のインストール
▸ https://github.com/code-iai/iai_kinect2
$ cd ~/catkin_ws/src/
$ git clone https://github.com/code-iai/iai_kinect2.git
$ cd iai_kinect2
$ rosdep install -r --from-paths .
$ cd ~/catkin_ws
$ catkin_make -DCMAKE_BUILD_TYPE="Release"
$ roslaunch kinect2_bridge kinect2_bridge.launch
$ rosrun kinect2_viewer kinect2_viewer
⼿順
動作確認
SIMPLE TARGET
DETECTION
KINECT WITH ROS
SIMPLE TARGET DETECTION
▸ Kinectで取得した画像から対象となる物体を検出する
▸ OpenCVを使って⾊(HSV)認識で検出
KINECT WITH ROS
OPENCVで緑⾊の物体を検出する
#!/usr/bin/env python
import cv2
import numpy
# read png image and convert the image to HSV
image = cv2.imread("/path/to/target.png", cv2.IMREAD_COLOR)
hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
# detect green objects
lower_green = numpy.array([133 / 2 - 10, 62 * 255 / 100 - 30, 37 * 255 / 100 - 30], numpy.uint8)
upper_green = numpy.array([133 / 2 + 10, 62 * 255 / 100 + 30, 37 * 255 / 100 + 30], numpy.uint8)
mask = cv2.inRange(hsv, lower_green, upper_green)
cv2.imshow('original', image)
cv2.imshow('mask', mask)
cv2.imwrite("hsv_mask.png", mask)
cv2.waitKey(0)
cv2.destroyAllWindows()
PUT IT ALL
TOGETHER
KINECT WITH ROS
KINECTはROSからどう⾒えているのか?(1/2)
$ rostopic list | grep kinect2
/kinect2/bond
/kinect2/hd/camera_info
/kinect2/hd/image_color
/kinect2/hd/image_color_rect
(中略)
/kinect2/qhd/camera_info
/kinect2/qhd/image_color
/kinect2/qhd/image_color_rect
/kinect2/qhd/image_depth_rect
(中略)
/kinect2/sd/camera_info
/kinect2/sd/image_color_rect
/kinect2/sd/image_depth
/kinect2/sd/image_depth_rect
(中略)
/kinect2/sd/image_ir
/kinect2/sd/image_ir_rect
/kinect2/sd/points
KINECT WITH ROS
potix2@ros% rostopic info /kinect2/hd/image_color_rect
Type: sensor_msgs/Image
Publishers:
* /kinect2 (http://ros:42318/)
Subscribers: None
KINECTはROSからどう⾒えているのか?(2/2)
KINECT WITH ROS
物体検出の流れ(未完)
▸ kinect_bridgeからimageを取得
▸ 取得したimageをopencvで処理
▸ kinectのreference frame上の座標へ変換(未完)
▸ topicとしてpublish(未完)
KINECT WITH ROS
TRACKER.PY
import roslib
import rospy
import cv2
import sys
from std_msgs.msg import String
from sensor_msgs.msg import Image
from cv_bridge import CvBridge, CvBridgeError
class PositionTracker:
def __init__(self):
# subscribe to kinect image messages
self.sub = rospy.Subscriber("kinect2/qhd/image_color", Image, self.image_callback, queue_size=1)
self.bridge = CvBridge()
def image_callback(self,data):
try:
cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8")
except CvBridgeError as e:
print(e)
cv2.imshow("Image window", cv_image)
cv2.waitKey(3)
def main(args):
ic = PositionTracker()
rospy.init_node('kinect_tracker')
try:
rospy.spin()
except KeyboardInterrupt:
print("Shutting down")
cv2.destroyAllWindows()
if __name__ == '__main__':
main(sys.argv)
KINECT WITH ROS
TRACKER.PY

More Related Content

PDF
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
PPTX
OpenCVを用いた画像処理入門
PDF
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
PPTX
点群処理
PDF
1070: CUDA プログラミング入門
PDF
1072: アプリケーション開発を加速するCUDAライブラリ
PDF
㉞cocos2d-xの開発環境をインストールしてみよう
KEY
GPGPU deいろんな問題解いてみた
ARコンテンツ作成勉強会:C#ではじめようOpenCV(カラートラッキング編)
OpenCVを用いた画像処理入門
コンピュータビジョンの最新ソフトウェア開発環境 SSII2015 チュートリアル hayashi
点群処理
1070: CUDA プログラミング入門
1072: アプリケーション開発を加速するCUDAライブラリ
㉞cocos2d-xの開発環境をインストールしてみよう
GPGPU deいろんな問題解いてみた

What's hot (20)

PDF
1075: .NETからCUDAを使うひとつの方法
PDF
C#, C/CLI と CUDAによる画像処理ことはじめ
PDF
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
PDF
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
PDF
1076: CUDAデバッグ・プロファイリング入門
PDF
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
PDF
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
PDF
Maxwell と Java CUDAプログラミング
PDF
Androidプログラミング初心者のためのゲームアプリ開発入門
KEY
PyOpenCLによるGPGPU入門
PDF
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
PDF
なぜGPUはディープラーニングに向いているか
PPTX
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
PDF
OpenCLに触れてみよう
PDF
プログラムを高速化する話Ⅱ 〜GPGPU編〜
PDF
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
PPTX
Javaで簡単にgpgpu aparapi
PPTX
RLSを用いたマルチテナント実装 for Django
PDF
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
PDF
Hello, DirectCompute
1075: .NETからCUDAを使うひとつの方法
C#, C/CLI と CUDAによる画像処理ことはじめ
Android上での3D(OpenGL)描画の基礎とNDKによる実践的高速化手法
【Unite Tokyo 2018】カスタムシェーダーでモバイルでも最先端グラフィックスな格闘ゲームを!
1076: CUDAデバッグ・プロファイリング入門
VisualSFMとMeshLabとCloudCompareによるドローン撮影画像を用いたデジタル地図作成
【関東GPGPU勉強会#4】GTX 1080でComputer Vision アルゴリズムを色々動かしてみる
Maxwell と Java CUDAプログラミング
Androidプログラミング初心者のためのゲームアプリ開発入門
PyOpenCLによるGPGPU入門
【関東GPGPU勉強会#3】OpenCVの新機能 UMatを先取りしよう
なぜGPUはディープラーニングに向いているか
Swin Transformer (ICCV'21 Best Paper) を完璧に理解する資料
OpenCLに触れてみよう
プログラムを高速化する話Ⅱ 〜GPGPU編〜
【第27回コンピュータビジョン勉強会@関東】OpenCV 便利Tips紹介
Javaで簡単にgpgpu aparapi
RLSを用いたマルチテナント実装 for Django
コンテナセキュリティにおける権限制御(OCHaCafe5 #3 Kubernetes のセキュリティ 発表資料)
Hello, DirectCompute
Ad

Viewers also liked (20)

PDF
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
PDF
ROSによるロボットソフトウェアの開発
PDF
ROS Tutorial 02 - CIT
PDF
強化学習の汎用化Ros
PPTX
cvsaisentan20141004 kanezaki
PDF
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
PDF
画像処理でのPythonの利用
PDF
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
PPTX
複数台のKinectV2の使い方
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
PDF
Acerca de la geometria de lobachevski a. s. smogorzhevski
PPT
Cmmi1.3
PPT
Business ppt-template-043
PDF
R.T_article pdf
PPTX
Orange Sparkle Ball: Who We Are and What We Do
PDF
Coordenadas089 wifi
PDF
The orphan of chao
PDF
Browsers with Wings
PDF
Yliko pake geniko_meros_201105.20-27
PDF
De Boer 2011 Product Brochure English
ROS の活用による屋外の歩行者空間に適応した自律移動ロボットの開発
ROSによるロボットソフトウェアの開発
ROS Tutorial 02 - CIT
強化学習の汎用化Ros
cvsaisentan20141004 kanezaki
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
画像処理でのPythonの利用
三次元点群処理ライブラリPCLと 統合ロボットシステム研究での 利用例の紹介
複数台のKinectV2の使い方
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Acerca de la geometria de lobachevski a. s. smogorzhevski
Cmmi1.3
Business ppt-template-043
R.T_article pdf
Orange Sparkle Ball: Who We Are and What We Do
Coordenadas089 wifi
The orphan of chao
Browsers with Wings
Yliko pake geniko_meros_201105.20-27
De Boer 2011 Product Brochure English
Ad

Similar to KINECT WITH ROS (16)

PPTX
Kinect深度情報処理入門
PPT
Kinect導入講座
PDF
Hands on
PDF
すごいぞ!KinectV2!!
PPTX
3次元計測とフィルタリング
PDF
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
PDF
Azure kinect DKハンズオン
PDF
Introduction to Kinect vNext
PDF
3Dロボットビジョンプラットフォーム「RoVI」入門
PDF
Kinect for windows sdk introduction
PPTX
Kinect Hacks for Dummies (Japanese / 日本語)
PDF
KinectでAR空間に入り込もう
PDF
MVP Community Camp
PDF
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
PPTX
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...
Kinect深度情報処理入門
Kinect導入講座
Hands on
すごいぞ!KinectV2!!
3次元計測とフィルタリング
ロボット・ソフトウェア開発環境ROSとは何か? (in Japanese)
Azure kinect DKハンズオン
Introduction to Kinect vNext
3Dロボットビジョンプラットフォーム「RoVI」入門
Kinect for windows sdk introduction
Kinect Hacks for Dummies (Japanese / 日本語)
KinectでAR空間に入り込もう
MVP Community Camp
第19回SOIL水曜セミナー:RGB-DカメラでAR空間に入り込もう
現実世界コンピューティング RealSense とロボットと HoloLens (2019/04/24 Intel RealSense Japan Mee...

More from Katsunori Kanda (14)

PDF
Airflow 2.0 migration ガイド
PDF
Web Privacy Survival Guide
PDF
Airflowを広告データのワークフローエンジンとして運用してみた話
PPTX
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
PDF
GCSでstatic web hosting
PDF
Dockerだけではないコンテナのはなし
PDF
RealSenseを使ってCrazyflieを自律飛行させてみた
PDF
Docker超入門
PPTX
Hadoopことはじめ
PDF
データファースト開発
PDF
Spark Summit 2015 参加報告
PDF
20150207 何故scalaを選んだのか
PDF
Discretized Streams: Fault-Tolerant Streaming Computation at Scaleの解説
KEY
自動テストのすすめ
Airflow 2.0 migration ガイド
Web Privacy Survival Guide
Airflowを広告データのワークフローエンジンとして運用してみた話
BazelでビルドしたアプリをGCPにデプロイしようとしてハマった話
GCSでstatic web hosting
Dockerだけではないコンテナのはなし
RealSenseを使ってCrazyflieを自律飛行させてみた
Docker超入門
Hadoopことはじめ
データファースト開発
Spark Summit 2015 参加報告
20150207 何故scalaを選んだのか
Discretized Streams: Fault-Tolerant Streaming Computation at Scaleの解説
自動テストのすすめ

KINECT WITH ROS

  • 2. KINECT WITH ROS AGENDA ▸ 3D Vision System Overview ▸ 3D Sensors ▸ Simple Target Detection with OpenCV ▸ Put It All Together
  • 4. KINECT WITH ROS 3D VISION SYSTEM OVERVIEW 3D SENSOR (KINECT) KINECT BRIDGE OPENCV ROS POSITION TRACKER SENSOR IMAGE SENSOR IMAGE 3D POSITION
  • 6. KINECT WITH ROS 3D SENSORS ▸ depth cameraによって距離が計測できる ▸ 距離計測ができることで観測点のx,y,z座標が得られる ▸ ⼊⼿可能な3Dセンサー ▸ Microsoft Kinect ▸ ASUS Xtion ▸ PrimeSense Carmine
  • 7. KINECT WITH ROS MICROSOFT KINECT ▸ 製品(カッコ内は発売時期) ▸ Kinect 360 (2010. 11) ▸ Kinect One (2013. 11) ▸ Kinect for Windows v2 (2014. 7) ▸ Driver ▸ Freenect ▸ libfreenect2 (Kinect for Windows v2)
  • 8. KINECT WITH ROS KINECT FOR WINDOWS V2をROSから使うには? ▸ iai_kinect2をインストールすればよい ▸ https://github.com/code-iai/iai_kinect2 ▸ READMEのインストール⼿順参照 ▸ libfreenect2のビルド&インストール ▸ iai_kinect2のビルド&インストール
  • 9. KINECT WITH ROS LIBFREENECT2のインストール ▸ https://github.com/OpenKinect/libfreenect2 $ git clone https://github.com/OpenKinect/libfreenect2.git $ cd libfreenect2 $ sudo apt-get install build-essential cmake pkg-config $ mkdir build && cd build $ cmake .. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2 $ make $ make install $ ./bin/Protonect ⼿順 動作確認
  • 10. KINECT WITH ROS IAI_KINECT2のインストール ▸ https://github.com/code-iai/iai_kinect2 $ cd ~/catkin_ws/src/ $ git clone https://github.com/code-iai/iai_kinect2.git $ cd iai_kinect2 $ rosdep install -r --from-paths . $ cd ~/catkin_ws $ catkin_make -DCMAKE_BUILD_TYPE="Release" $ roslaunch kinect2_bridge kinect2_bridge.launch $ rosrun kinect2_viewer kinect2_viewer ⼿順 動作確認
  • 12. KINECT WITH ROS SIMPLE TARGET DETECTION ▸ Kinectで取得した画像から対象となる物体を検出する ▸ OpenCVを使って⾊(HSV)認識で検出
  • 13. KINECT WITH ROS OPENCVで緑⾊の物体を検出する #!/usr/bin/env python import cv2 import numpy # read png image and convert the image to HSV image = cv2.imread("/path/to/target.png", cv2.IMREAD_COLOR) hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # detect green objects lower_green = numpy.array([133 / 2 - 10, 62 * 255 / 100 - 30, 37 * 255 / 100 - 30], numpy.uint8) upper_green = numpy.array([133 / 2 + 10, 62 * 255 / 100 + 30, 37 * 255 / 100 + 30], numpy.uint8) mask = cv2.inRange(hsv, lower_green, upper_green) cv2.imshow('original', image) cv2.imshow('mask', mask) cv2.imwrite("hsv_mask.png", mask) cv2.waitKey(0) cv2.destroyAllWindows()
  • 15. KINECT WITH ROS KINECTはROSからどう⾒えているのか?(1/2) $ rostopic list | grep kinect2 /kinect2/bond /kinect2/hd/camera_info /kinect2/hd/image_color /kinect2/hd/image_color_rect (中略) /kinect2/qhd/camera_info /kinect2/qhd/image_color /kinect2/qhd/image_color_rect /kinect2/qhd/image_depth_rect (中略) /kinect2/sd/camera_info /kinect2/sd/image_color_rect /kinect2/sd/image_depth /kinect2/sd/image_depth_rect (中略) /kinect2/sd/image_ir /kinect2/sd/image_ir_rect /kinect2/sd/points
  • 16. KINECT WITH ROS potix2@ros% rostopic info /kinect2/hd/image_color_rect Type: sensor_msgs/Image Publishers: * /kinect2 (http://ros:42318/) Subscribers: None KINECTはROSからどう⾒えているのか?(2/2)
  • 17. KINECT WITH ROS 物体検出の流れ(未完) ▸ kinect_bridgeからimageを取得 ▸ 取得したimageをopencvで処理 ▸ kinectのreference frame上の座標へ変換(未完) ▸ topicとしてpublish(未完)
  • 18. KINECT WITH ROS TRACKER.PY import roslib import rospy import cv2 import sys from std_msgs.msg import String from sensor_msgs.msg import Image from cv_bridge import CvBridge, CvBridgeError class PositionTracker: def __init__(self): # subscribe to kinect image messages self.sub = rospy.Subscriber("kinect2/qhd/image_color", Image, self.image_callback, queue_size=1) self.bridge = CvBridge() def image_callback(self,data): try: cv_image = self.bridge.imgmsg_to_cv2(data, "bgr8") except CvBridgeError as e: print(e) cv2.imshow("Image window", cv_image) cv2.waitKey(3)
  • 19. def main(args): ic = PositionTracker() rospy.init_node('kinect_tracker') try: rospy.spin() except KeyboardInterrupt: print("Shutting down") cv2.destroyAllWindows() if __name__ == '__main__': main(sys.argv) KINECT WITH ROS TRACKER.PY