Apollo2.5摄像头安装
前言:在Apollo美研团队和长沙CiDi团队的支持下,最近完成了Apollo推荐的摄像头AR023ZWDR(Rev663F12)调试,在这里对Apollo的笔记做一个补充,希望以后的开发者不用在踩我们踩过的坑。
在本博客中提到的补充文件在我的百度网盘中,请大家自行下载。百度网盘:链接: https://pan.baidu.com/s/1z86gFcDqRyUpnzAc7q5K3g 提取码: b8i2
1. 查看摄像头,并修改相应的配置
Apollo推荐的摄像头支持v4l2 camera驱动,输入以下命令,在docker外,查看百度的相机在/dev下对应的device。
$ v4l2-ctl --list-devices
在我的电脑里输出:
AR023ZWDR(Rev663F12) (usb-0000:00:14.0-1):
/dev/video0
USB2.0 VGA UVC WebCam (usb-0000:00:14.0-7):
/dev/video1
其中,USB2.0 VGA UVC WebCam 为我笔记本自带摄像头,对应的设备为/dev/video1。AR023ZWDR(Rev663F12)为百度的摄像头,对应的设备为/dev/video0。
如果这条指令提示错误:sh: 1: v4l2-ctl: not found,需要安装v4l2库
$ sudo apt-get install v4l-utils
百度在ros的launch文件中默认百度的摄像头设备为:/dev/video0,如果你通过$ v4l2-ctl --list-devices命令看到百度的摄像头对应的不是/dev/video0,在docker 外执行以下步骤修改launch文件。
$ cd ~/apollo/modules/drivers/usb_cam/launch/
$ vim start_one_leopard.launch
修改
"video_device" value="/dev/video0" #将video0改为你对应的video*。
"image_width" value="1920"
"image_height" value="1080" #注意这两个值是否与相机匹配。
$ vim launch/usb_cam-test.launch
修改
"video_device" value="/dev/video0" #将video0改为你对应的video*。
"image_width" value="1920"
"image_height" value="1080" #注意这两个值是否与相机匹配。
$ vim start_leopard.launch
修改
"image_width" value="1920"
"image_height" value="1080" #注意这两个值是否与相机匹配。
重要:由于在第3步启动dreamviewer时需要用到start_obstacle_camera.launch文件,而在整个apollo文档中没有提到,可以从我的网盘中下载(默认下载到Downloads目录),执行:
$ vim ~/Downloads/start_obstacle_camera.launch
修改(如果需要)
"video_device" value="/dev/video0" #将video0改为你对应的video*。
"image_width" value="1920"
"image_height" value="1080" #注意这两个值是否与相机匹配。
然后拷贝到apollo的driver目录下:
$ cp ~/Downloads/start_obstacle_camera.launch ~/apollo/modules/drivers/usb_cam/launch/
2. 配置摄像头
进入docker:
$ bash docker/scripts/dev_start.sh -C
$ bash docker/scripts/dev_into.sh
编译apollo自带的usb_cam(~/apollo/modules/drivers/usb_cam)
$ cd /apollo
$ bash apollo.sh build_usbcam
根据~/apollo/modules/drivers/usb_cam/下的README_cn.md文件,需要根据相机的长短焦类型,进行设备固化。短焦相机设备绑定为/dev/camera/obstacle;长焦相机,设备绑定为/dev/camera/trafficlights。车道线保持相机固定到/dev/camera/lanemark
在docker外查看设备($ ls /dev)时,发现/dev下没有camera,根据CiDi的同学指点,在https://github.com/ApolloAuto/apollo/tree/042b715bba55b2f5ee4cbc1069b1ad223c478939/docker/setup_host/etc/udev/rules.d下有99-webcam.rules文件,具体内容如下:
SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTR{name}=="AR023ZWDR(Rev[0-9][0-9][0-9]s)", MODE="0666", SYMLINK+="camera/obstacle", OWNER="apollo", GROUP="apollo"
SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTR{name}=="AR023ZWDR(Rev[0-9][0-9][0-9])", MODE="0666", SYMLINK+="camera/trafficlights", OWNER="apollo", GROUP="apollo"
SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTR{name}=="AR023ZWDR(Rev[0-9][0-9][0-9]F12)", MODE="0666", SYMLINK+="camera/lanemark", OWNER="apollo", GROUP="apollo"
下载这个文件(默认下载到Downloads文件夹),在docker外,将99-webcam.rules文件拷贝到/etc/udev/rules.d/,执行。
$ sudo cp ~/Downloads/99-webcam.rules /etc/udev/rules.d/
由于我的摄像头apollo提供的摄像头AR023ZWDR(Rev663F12),以663F12结尾,且主要用于车道线检测,所以不需要修改99-webcam.rules。但是如果你的相机不是Apollo提供的相机,参考https://www.cnblogs.com/fah936861121/p/6496608.html,根据你的相机修改上述内容,对应的设备为:camera/obstacle是障碍物检测,camera/trafficlights是交通灯检测,camera/lanemark是车道线检测。
在docker外执行:
$ sudo chmod 755 /etc/udev/rules.d/99-webcam.rules
$ sudo service udev restart
在这里需要重新插拔一下摄像头。再次运行$ ls /dev/camera就可以看到lanemark。
将百度的相机链接到/dev/camera/lanemark上:
$ sudo ln -s /dev/video0 /dev/camera/lanemark
如果出现错误:"ln: failed to create symbolic link '/dev/camera/obstacle': File exists",那么执行:
$ sudo unlink /dev/camera/lanemark
在执行$ sudo ln -s /dev/video0 /dev/camera/lanemark语句就应该能解决。
3. 调试摄像头
根据~/apollo/docs/howto/how_to_run_apollo_2.5_perception_visualizer.md文件,在docker内修改modules/perception/conf/perception_lowcost.conf:
$ cd /apollo
$ vim modules/perception/conf/perception_lowcost.conf
其中的--dag_config_path有两种修改方法:
--dag_config_path=conf/dag_camera_obstacle_lane_motion_vis.config #仅有摄像头
--dag_config_path=conf/dag_camera_obstacle_offline_fusion_sync.config #摄像头和雷达融合
由于我们仅调试摄像头,所以将--dag_config_path=conf/dag_camera_obstacle_lane_motion_vis.config。
执行:
$ ./apollo.sh build_opt_gpu
运行完成后,可以通过dreamviewer记录数据,并且用perception模块测试数据。
根据how_to_run_apollo_2.5_perception_visualizer.md文档,如果只运行摄像头,那么必须包含rostopic:/apollo/sensor/camera/obstacle/front_6mm ,这个topic实际上就在start_obstacle_camera.launch中。
如果在之前没有将start_obstacle_camera.launch拷贝进入usb_cam,那么,在运行$ ./scripts/bootstrap.sh时,左侧的modules中的camera开关打不开。原因是dreamviewer启动之后,用到modules/dreamview/conf/hmi.conf配置文件,在这个配置文件的71-81行中,在navigation模式,用到了scripts/navigation_usb_camera.sh,其中,需要运行roslaunch usb_cam start_obstacle_camera.launch命令,而在usb_cam驱动中没有start_obstacle_camera.launch,
在docker内运行:
$ cd /apollo
$ ./scripts/bootstrap.sh
在次点击terminal中的http://localhost:8888,进入dreamviewer,在dreamviewer上方的模式中选择navigation,点击左侧的modules中,打开camera开关,运行:
$ rostopic list
就可以看到rostopic:/apollo/sensor/camera/obstacle/front_6mm。点击Bag Record按钮,过一小段时间,关闭Bag Record按钮。进入data/bag下就可以看到按照时间排序的rosbag,运行
$ cd /apollo
$ rosbag info data/bag/2018-xx-xx-xx-xx-xx/2018-xx-xx-xx-xx-xx.bag
可以看到,在这个Bag中包含rostopic:/apollo/sensor/camera/obstacle/front_6mm。
这时可以开车,拿着摄像头出去跑数据。记录一批数据后,回来运行:
$ ./scripts/perception_offline_visualizer.sh
然后运行:
$ cd /apollo
rosbag play data/bag/2018-xx-xx-xx-xx-xx/2018-xx-xx-xx-xx-xx.bag -l –clock
4. 保存修改后的docker
这里通过dock commit实现,在docker外运行:
$ docker ps
显示的数据第一个就应该是要保存的正在运行的container,复制container ID,取前三位就好。运行:
$ docker commit xxx registry.docker-cn.com/apolloauto/apollo:local_dev
xxx代表container ID前三位。运行完成后可以退出。下次在进入docker时运行:
$ bash docker/scripts/dev_start.sh -C -l
$ bash docker/scripts/dev_into.sh
进入docker后,运行:
$ rosls usb_cam/launch
如果显示出start_obstacle_camera.launch说明保存成功。
Apollo2.5摄像头安装的更多相关文章
- 树莓派3 之 USB摄像头安装和使用
需求 如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头(有点贵).如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头.你可能已经在PC上安装过了.我买的如图的这 ...
- 树莓派3B+ 人脸识别、摄像头安装和使用
最近在学校里折腾树莓派上的人脸识别,折腾了很久才能用 在此记录下使用的过程和遇到的困难 过程基于超有趣!手把手教你使用树莓派实现实时人脸检测完成的.其中前面opencv的安装是文章中的Raspbian ...
- 利用树莓派来安装opencv从而来调动摄像头工作(没有坑,超超自己试过)
超超最近参加了学校里一位特别厉害的老师讲的课(两天,我就从一个小白然后了解了树莓派以及Arduino这些我之前都没有了解过的东西,由于结课的需要,我们需要自己设计一个创意以及完成作品)所以才有了这篇文 ...
- 树莓派自身摄像头的opencv调用
很多人知道,opencv不能直接对树莓派原装摄像头进行调用,因为raspicam不是V4L驱动,怎样才能使用树莓派原装摄像头,它可比多数usb摄像头清晰和小巧. 具体方法,给树莓派原装摄像头安装一个可 ...
- 1.0.3-学习Opencv与MFC混合编程之---打开本地摄像头
源代码:http://download.csdn.net/detail/nuptboyzhb/3961643 版本1.0.3新增内容 打开摄像头 Ø 新建菜单项,Learning OpenCV——&g ...
- 树莓派3 之 安装Mysql服务
需求 在树莓派上 安装Mysql 服务,并开启远程访问 步骤 安装 mysql server $ sudo apt-get install mysql-server 我以为中间会让我提示输入 数据库r ...
- 利用opencv从USB摄像头获取图片
由于opencv自带的VideoCapture函数直接从usb摄像头获取视频数据,所以用这个来作为实时的图像来源用于实体检测识别是很方便的. 1. 安装opencv 安装的步骤可以按照之前这个文章操作 ...
- 树莓派安装Raspbian系统以及相关配置(通过Windows)
1.准备 树莓派3B+(E14) 一张内存卡 (至少16G) 一个读卡器 普通电脑显示器,键盘,鼠标 2.操作系统烧制(下面的操作都是在Windows中操作,通过读开启读取内存卡) Raspbian系 ...
- 基于USB3.0的双目相机测试小结之CC1605配合CS5642 双目 500w摄像头
基于USB3.0的双目相机测试小结之CC1605配合CS5642 双目 500w摄像头 CC1605双目相机评估板可以配合使用柴草电子绝大多数摄像头应用 如:OV5640.OV5642.MT9P03 ...
随机推荐
- Q:java中的泛型数组
对于java,其是不支持直接创建泛型数组的.当采用如下的方式去创建一个泛型数组时,其会出现错误,编译无法通过的情况. package other.jdk1_5; /** * 该类用于演示泛型数组的创 ...
- CodeChef SADPAIRS:Chef and Sad Pairs
vjudge 首先显然要建立圆方树 对于每一种点建立虚树,考虑这一种点贡献,对于虚树上已经有的点就直接算 否则对虚树上的一条边 \((u, v)\),\(u\) 为父亲,假设上面连通块大小为 \(x\ ...
- 【转载】python实例手册
今天写爬虫的时候遇到了问题,在网上不停地查找资料,居然碰到两篇好文章: 1.python实例手册 作者:没头脑的土豆 另一篇在这:shell实例手册 python实例手册 #encoding:ut ...
- Python FFT (Fast Fourier Transform)
np.fft.fft import matplotlib.pyplot as plt import plotly.plotly as py import numpy as np # Learn abo ...
- maven项目ssh框架的整合
1.环境 eclipse版本:Eclipse Mars2 4.5jdk版本:1.8maven版本:apache-maven 3.3.9zhnegs这是主要的开发工具版本,ssh的各种jar包版本就不列 ...
- 毕向东_Java基础视频教程第20天_IO流(7~10)
第20天-07-IO流(递归) package bxd; import java.io.File; public class FileDemo3 { // 非递归打印 public static vo ...
- c# 设计模式 之:抽象工厂
1.作用:抽象工厂的目的就是生产[产品族],之前讲的“工厂模式”的每一个factory只造一种产品,抽象工厂让一个factory造多个产品. uml类图: 代码实现: 抽象工厂代码: namespac ...
- win8.1 安装msi软件出现 2503、2502
问题现象: 安装Msi封包的程序的时候,老是提示 2503 和 2502 错误. 解决办法: 命令提示符提示安装程序权限 右击开始按钮,然后选择命令提示如(管理员)
- .net core系列之《sdk和runtime区别及使用CLI在Ubuntu上快速搭建Console,WebApi,MVC三大应用模型》
一.需要安装的软件 1.虚拟机安装Ubuntu系统(本人用的是vmware-14.1.12和buntu-18.04) 2.Xshell或 Putty(连接ssh服务) 3.FileZilla(ftp上 ...
- Visual Staudio 2015 打开指定文件,定位到指定文件目录下
Visual Staudio 2015 项目定位文件位置 每次使用的Visual Staudio 2015 写代码的时候总是打开了.cs文件或xaml文件时, 还要手动去找该 文件位置,每次都要翻好大 ...