遥控四轮车(视觉处理)

一、摄像头(ROS)

1.1 ROS摄像头驱动

在linux系统中,可以直接在终端中输入ls /dev/video*,查看是否有可用的摄像头设备。一般只有一个摄像头的系统会返回/dev/video0
在检测到摄像头设备后,用三条语句进行相机的测试,

sudo apt-get install ros-kinetic-usb-cam    //开始安装ROS摄像头的驱动
roslaunch usb_cam usb_cam-test.launch  //启动摄像头
rqt_image_view   //显示摄像机画面

1.2 相机标定

只有经过标定后的摄像头才能进行后续的操作,摄像头参数的标定可以借助标定功能包,安装方式如下,

sudo apt-get install ros-kinetic-camera-calibration    //标定功能包安装

标定的具体操作参考官网
此外除了普通的RGB相机,其它类型的相机也有相对应的驱动和标定功能包,这视情况而定。

二、物体识别

2.1 人脸识别

本案例中,人脸识别借助OpenCV中的人脸识别接口,一种基于Haar特征的级联分类器对象检测算法。OpenCV的安装如下,

sudo apt-get install ros-kinetic-vision-opencv libopencv-dev python-opencv

这里需要注意的是,OpenCV中的图片格式和ROS中的图片格式是不同的,需要通过cv_bridge库进行转换,即

from cv_bridge import CvBridge
#ros_imag为ROS中的图像数据,cv_image为opencv可以处理的格式

cv_image = CvBridge().imgmsg_to_cv2(ros_imag, "bgr8")  
ros_image = CvBridge().cv2_to_imgmsg(cv_image, "bgr8")

2.2 水杯识别

通过基于tensorflow框架的SSD_MobileNet,来进行水杯的识别。tensorflow的环境,可以借助virtualenv工具配置完成。virtualenv的安装如下,

sudo apt-get install python-pip python-dev python-virtualenv

tensorflow环境配置,首先创建一个包含系统环境的空间virtualenv --system-site-packages ~/tensorflow,接着激活新创建的虚拟环境source ~/tensorflow/bin/activate,然后就是更新下pip版本easy_install -U pip,最后便是tensorflow环境的安装,而关于tensorflow的安装要注意和ROS环境相匹配,如果直接pip install --upgrade tensorflow,会出现依赖包因为版本不匹配的错误,因此需要事先限制依赖包的版本。
比如kinetic版本的ROS,各依赖包的版本如下,

Flask==0.11.1
attrdict==2.0.0
eventlet==0.19.0
python-socketio==1.6.1
numpy==1.13.1
Pillow==2.2.1
scipy==0.19.1
keras==2.0.8
tensorflow==1.3.0
h5py==2.6.0

可以将这些依赖保存为一个txt文件,然后通过pip install -r requirements.txt 安装,这里如果网速不好的话,可以设置镜像源安装,比如添加ustc的镜像源,

pip install -r requirements.txt -i https://mirrors.ustc.edu.cn/pypi/web/simple

通过摄像头识别水杯可以参考SSD_MobileNet中的usb_cam_detector.launch和detect_ros.py文件。

三、遥控四轮车

3.1 思路

物体的识别后会得到物体在图片中的中心点(x, y)和识别物体大小的矩形宽(w)和高(h),我们可以借助(x, y)处于图片的什么区域对小车转向进行控制,而识别物体的矩形框的大小可以控制小车的前进后退。

3.2 实现方式

假设摄像机采集的图片分辨率为$W \times H$,则有小车的控制规则如下,

if ( w > W/2 and h > H/2): 
    小车前进
else:
    小车后退

if (x > W/2):
    小车右转
else:
    小车左转

这样就基本实现了通过识别物体的状态来遥控小车,控制小车的运行方式。

基于检测水杯控制小车

3.3 参考


   转载规则


《遥控四轮车(视觉处理)》 kieranych 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录