$ sudo apt-get install ros-indigo-freenect-* $ rospack profile
echo $TURTLEBOT_3D_SENSOR #Output: kinect
若是你看到一个3D传感器,例如asus_xtion_pro,您将须要设置环境变量的默认值,修改和从新启动终端:node
echo "export TURTLEBOT_3D_SENSOR=kinect" >> .bashrc
若是是asus_xtion_pro相机,设置为asus_xtion_pro。
在Turtlebot终端执行:python
roslaunch turtlebot_bringup minimal.launch
在Turtlebot终端,新开终端,输入web
#针对Microsoft Kinect: $ roslaunch freenect_launch freenect-registered-xyzrgb.launch (新版本) $ roslaunch openni_launch openni.launch (或旧版本) #针对Asus Xtion, Xtion Pro, or Primesense 1.08/1.09 cameras: $ roslaunch openni2_launch openni2.launch depth_registration:=true
图像,在工做站打开终端执行:bash
$ rosrun image_view image_view image:=/camera/rgb/image_color $ rosrun image_view image_view image:=/camera/depth_registered/image_raw
sudo bash -c 'echo -1 > /sys/module/usbcore/parameters/autosuspend' lsusb
rosrun rosbag record /camera/rgb/image_color /camera/depth_registered/image_raw
# coding:utf-8 #!/usr/bin/python # Extract images from a bag file. #PKG = 'beginner_tutorials' import roslib; #roslib.load_manifest(PKG) import rosbag import rospy import cv2 from sensor_msgs.msg import Image from cv_bridge import CvBridge from cv_bridge import CvBridgeError # Reading bag filename from command line or roslaunch parameter. #import os #import sys rgb_path = '/home/nvidia/ttttt/rgb/' depth_path= '/home/nvidia/ttttt/depth/' class ImageCreator(): def __init__(self): self.bridge = CvBridge() with rosbag.Bag('/home/nvidia/ttttt/2019-05-10-09-00-55.bag', 'r') as bag: #要读取的bag文件; for topic,msg,t in bag.read_messages(): #print(t) if topic == "/camera/rgb/image_color": #图像的topic; try: cv_image = self.bridge.imgmsg_to_cv2(msg,"bgr8") except CvBridgeError as e: print e timestr = "%.6f" % msg.header.stamp.to_sec() #%.6f表示小数点后带有6位,可根据精确度须要修改; image_name = timestr+ ".png" #图像命名:时间戳.png cv2.imwrite(rgb_path + image_name, cv_image) #保存; elif topic == "/camera/depth_registered/image_raw": #图像的topic; try: cv_image = self.bridge.imgmsg_to_cv2(msg,"16UC1") except CvBridgeError as e: print e timestr = "%.6f" % msg.header.stamp.to_sec() #%.6f表示小数点后带有6位,可根据精确度须要修改; image_name = timestr+ ".png" #图像命名:时间戳.png cv2.imwrite(depth_path + image_name, cv_image) #保存; if __name__ == '__main__': #rospy.init_node(PKG) try: image_creator = ImageCreator() except rospy.ROSInterruptException: pass