智能机器人(43):ROS视觉

7、视觉

7.1 首先测试,连接Kinect之后:
$ roslaunch openni_launch openni.launch
即可查看视频:
$ rosrun image_view image_view image:=/camera/rgb/image_color
7.2、自建测试包
$ cd ~/catkin_ws/src
$ catkin_create_pkg mysample_opencv sensor_msgs cv_bridge rospy std_msgs
$ catkin_make
okay.
$ mkdir ./scripts
$ mkdir ./launch
7.3、测试depth image
OpenCV2可以无缝链接到Python,先启动OpenNI驱动以获取点云图:
$ roslaunch openni_launch openni.launch
启动脚本:
$ python ~/catkin_ws/src/mysample_opencv/scripts/cv_bridge_demo.py
如图。

NOTE: 桥接poencv和ros-python的cv_bridge_demo.py脚本:
#!/usr/bin/env python
import rospy
import sys
import cv2
import cv2.cv as cv
from sensor_msgs.msg import Image, CameraInfo
from cv_bridge import CvBridge, CvBridgeError
import numpy as np
class cvBridgeDemo():
def __init__(self):
def image_callback(self, ros_image):
def depth_callback(self, ros_image):
def main(args):
try:
cvBridgeDemo()
rospy.spin()
except KeyboardInterrupt:
print “shutting down main”
cv.DestroyAllWindows()
if __name__ == ‘__main__’:
main(sys.argv)

7.3、测试point cloud
PCL支持OpenNI的3D接口,可以在Riz图形化。先启动OpenNI驱动以获取点云图:
$ roslaunch openni_launch openni.launch
然后可视化显示:
$ rosrun rviz rviz
启动后把fixed frame设置为camera_link,添加一个PointCloud2显示选项,把topic设置为/camera/depth/points,即可看到点云图,再把ColorTransformer设置为AxisColor从而近处红色远处紫色蓝色,如图。

7.4、测试laser scan
先启动OpenNI驱动以获取点云图:
$ roslaunch openni_launch openni.launch
然后启动depthimage到laserscan的转换:
$ roslaunch mysample_openvc a.launch
最后可视化显示:
$ rosrun rviz rviz
启动后把fixed frame设置为camera_link,添加一个laserscan显示选项,把topic设置为/scan,即可看到激光扫描,图。
NOTE: 变换depthimage到laserscan的a.launch脚本:

args=”load depthimage_to_laserscan/DepthImageToLaserScanNodelet lasersc$