ROS版本: ROS Kinetic
操作系统:Ubuntu16.04 LTS
kinect
为了在gazebo中观察并利用利用视觉进行小球的定位并与ros通信,我们需要一个深度相机,这时可以直接使用kinect并加入插件与ros通信,gazebo官方也为我们提供了这个方法
http://gazebosim.org/tutorials/?tut=ros_depth_camera
直接将Kinect的模型文件下载在
<sensor>
....
</camera>
在此处添加插件代码即可
</sendor>
但有时,我们需要得到左右目两张图像,这是,我们就需要一个双目相机模型。
##双目相机
方法类似,我们可以继续使用kinect的外观,使用一个Muticamera插件,
http://gazebosim.org/tutorials?tut=ros_gzplugins
这时只需要将上述文件的sensor部分替换为官方给出的sensor部分的代码即可。这时在rqt_image_view中可以看到left和right两张图像
注意:以上两种修改sdf文件的方法不要忘记修改模型文件夹名字,sdf文件中的model名字,以及config文件中的model名
显示
首先,用rosrun gazebo_ros gazebo命令打开gazebo之后,在新的终端输入rostopic list,我们可以看到左右目的话题都在发布,主要是以下两个话题,
/multisense_sl/camera/left/image_raw
/multisense_sl/camera/left/image_raw
我们的目的是订阅这两个话题并显示,我们先尝试订阅一个话题
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#订阅gazebo中双目相机左目的图像并显示
import rospy
import cv2
import message_filters
from cv_bridge import CvBridge, CvBridgeError
from sensor_msgs.msg import Image
#ros传感器和opencv中的图像类型转换
bridge = CvBridge()
#回调函数
def callback(