ROS从入门到放弃——用TurtleBot3做OpenCV仿真
0. 准备工作
首先,我们打开Gazebo仿真环境(否则你摄像头里没东西)
export TURTLEBOT3_MODEL=waffle
roslaunch turtlebot3_gazebo turtlebot3_world.launch
然后,我们可以观察一个名为/camera/rgb/image_raw
的Topic,它使用的msg类型为sensor_msgs/Image
,具体定义如下:
std_msgs/Header header
uint32 seq
time stamp
string frame_id
uint32 height
uint32 width
string encoding
uint8 is_bigendian
uint32 step
uint8[] data
我们下一步的目的就是通过OpenCV将这个图像绘制出来。
1. 显示摄像头的图片
我们在自己的一个pkg(我的叫mytest)的scripts里面新建一个python文件,名字为displayAnIMG.py
#!/usr/bin/env python
from __future__ import print_function
import sys
import rospy
import cv2
from std_msgs.msg import String
from sensor_msgs.msg import Image # 这是我们/camera/rgb/image_raw使用的消息类型
from cv_bridge import CvBridge, CvBridgeError
class image_converter:
def __init__(self):
self.bridge = CvBridge()
self.image_sub = rospy.Subscriber("/camera/rgb/image_raw",Image,self.callback)
def