博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Llinux+ROS+OpenCV开发环境配置笔记
阅读量:2384 次
发布时间:2019-05-10

本文共 2428 字,大约阅读时间需要 8 分钟。

ROS中的三个重要计算机视觉的包分别为:OpenCV,(OpenNI2+OpenKinect) 和 PCL。OpenCV主要负责2D图像处理,OpenNI2和OpenKinect则是以Kinect为摄像头的深度视觉库,PCL是用于处理3D粒子群的库。

 

1.首先配置好ROS,若还没配置好ROS,参见。

2.然后安装上面提及的这些包:

     $ sudo apt-get install ros-indigo-openni-* ros-indigo-openni2-* \ros-indigo-freenect-*

     $ rospack profile

 

3.安装摄像头的驱动,这里有很多方法,一个简易的方法(不一定适用于所有摄像头),是使用usb_cam包:

     $ cd ~/catkin_ws/src

     $ git clone https://github.com/bosch-ros-pkg/usb_cam.git

     $ cd ~/catkin_ws

     $ catkin_make

     $ rospack profile

 

免Linux的驱动摄像头最好,可以通过 ls dev/ 看目录下有无检测到video0(一般为摄像头)。

如果usb_cam包无效,可以试一下Linux UVC包。

可以使用luvcview去测试linux下摄像头的安装是否正确。

 

4.安装rbx1包,这是ROS by Example的源代码:

     $ cd ~/catkin_ws/src

     $ git clone 

     $ cd rbx1

     $ git checkout indigo-devel

     $ cd ~/catkin_ws

     $ catkin_make

     $ source ~/catkin_ws/devel/setup.bash

     $ rospack profile

 

5.先测试连接Kinect(没有Kinect可以跳过):

     $ roslaunch freenect_launch freenect-registered-xyzrgb.launch

如果没有Kinect,可以在初始化结束之后ctrl+C退出。

 

6.测试

     VMWare Workstation 虚拟机对摄像头支持不好。如果摄像头不支持,好像目前无解!

 

     $ roslaunch rbx1_vision usb_cam.launch video_device:=/dev/video0

这会让摄像头publish图像到/camera/rgb/image_raw话题。

若提示没有找到包,试一下如下:

$ cd ~/catkin_ws

$ source ~/catkin_ws/devel/setup.bash

然后用image_view订阅该话题,即可显示摄像头的输入。

在新的terminal中:

     $ rosrun image_view image_view image:=/camera/rgb/image_raw

若能看到摄像头输入,说明ROS已经能够正确读取摄像头输入。

 

7.下面我们安装OpenCV。

 

     $ sudo apt-get install ros-indigo-vision-opencv libopencv-dev \python-opencv

     $ rospack profile #查看已经安装的包

 

8.测试python是否能调用OpenCV:

 

     $ python

     >>> from cv2 import cv

     如果能够import说明安装成功

     >>> quit()

 

9. ROS与OpenCV之间的图像格式转换由 cv_bridge 包负责,我们看下这个包怎么运作:

 

     $ roslaunch rbx1_vision usb_cam.launch video_device:=/dev/video0

     $ $rosrun rbx1_vision cv_bridge_demo.py

 

     Github的代码已经更新,这里面我们需要手动改一些这个python script的语句,注意,这个文件的路径在:catkin_ws/src/rbx1/rbx1_vision/nodes下。

 

     将其中的 input_rgb_image,input_depth_image全部改为/camera/rgb/image_raw。以上两个是jade里的更新的主题名,但在indigo里,还是以/camera/rgb/image_raw为主题名。

     

这个python script里面几个关键的语句:

     

     # 创建CvBridge对象

     self.bridge = CvBridge()

     # 将ros_image通过蓝绿红8位色空间转换为OpenCV图像,结果返回给frame

     frame = self.bridge.imgmsg_to_cv2(ros_image,"bgr8")

     # 最后将frame用numpy转换成numpy数列,OpenCV这样大部分的函数才能够处理

     frame = np.array(frame,dtype = np.uint8)

     

到这一步,ROS和OpenCV的配置基本完成,接下来OpenCV的开发可以基于ros2opencv2.py(catkin_ws/src/rbx1/rbx1_vision/src/rbx1_vision/ros2opencv2.py),改写其中的process_image()和process_depth_image()函数即可。在订阅主题的同时,这个节点也会发布信息到/roi(关注域,region of interest)主题下。

其具体的格式为:

 

uint32 x_offset

uint32 y_offset

uint32 height

uint32 width

bool do_rectify

 

 

 

 

具体请参考这个script。

 

 

References:

《ROS by Example》Chapter 10

你可能感兴趣的文章
couldn't set locale correctly报错解决
查看>>
回收基表的空间,造成物化视图只刷新了一部分数据
查看>>
ORA-12052,不能建立快速刷新物化视图的解决
查看>>
物化视图comlete刷新会产生大量的日志
查看>>
Mysql cluster slave server的自动检测与修复
查看>>
solaris同步时钟
查看>>
mysql升级
查看>>
V$sql_text v$sqlarea v$sql 的区别
查看>>
Redis 集群功能说明
查看>>
oracle11gR2在RedHat5上前期安装配置脚本
查看>>
sar的用法
查看>>
Cocos2dx3.2从零开始【四】继续。
查看>>
Unable to execute dex: Multiple dex files define 解决方法
查看>>
Cocos2dx3.2从零开始【五】
查看>>
字符画
查看>>
JS读取DropDownList中的值
查看>>
进度条例子
查看>>
WordPress注册支持中文用户名的解决办法
查看>>
设置WordPress评论头像为圆角鼠标触碰后旋转效果
查看>>
WordPress:删除多说插件的版权信息
查看>>