目录
前言
自己搭建的差速小车,想在树莓派4B上搭载CSI摄像头,下面是摄像头驱动配置以及rviz界面订阅/image话题,显示摄像头实时拍摄场景的操作。
一、调试摄像头驱动
1.连接
在连接摄像头和树莓派之间,一定要将树莓派断电!不然会使树莓派崩溃关机,甚至损坏。
在连接时,要注意不要装反,应该是有触点的一侧面向hdmi接口,参照下图所示的动图。
我买的摄像头是带支架的,将支架组装好后,将摄像头镜头的保护片撕下,然后将镜头后的双面胶撕下,粘在板子上。
2.安装摄像头驱动
因为树莓派装的系统是Ubuntu Mate20.04所以没法直接打开raspi-config对摄像头进行配置,需要进行一些操作。
下载raspi-config的deb包
$ wget http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20201108_all.deb
安装相关依赖包
$ sudo apt install lua5.1 libatopology2 libfftw3-single3 libsamplerate0 alsa-utils
安装deb包
$ sudo dpkg -i raspi-config_20201108_all.deb
挂载
$ df -h
正常应出现如下效果
然后输入:
$ mount /dev/mmcblk0p1 /boot
添加到用户群组(在usename处填自己的用户名)
$ sudo usermod -aG video usename
打开raspi-config配置
$ sudo raspi-config
出现如下所示的图
用↑↓键选择3,按回车进入
选择P1 Camera按回车进入,这时系统问你要不要使能摄像头,按回车就可以
然后Crtl+C退出,下面安装V4l2工具包
$ sudo apt-get install v4l-utils
显示设备列表
$ v4l2-ctl --list-devices
正常应出现下图所示情况:
重启树莓派,检查是否连接上摄像头
$ vcgencmd get_camera
正常应出现:
这说明我们已经连接上了摄像头,下面进行拍照测试
3.测试
在某一文件夹下输入一下代码,如果拍照成功则会在命令行显示一系列的raspistill的操作命令提示,并且在当前文件夹下生成以张照片
$ raspistill -v -o test.jpg
关于raspistill和raspivid命令的详细操作,可以参考这篇博客,不过这两个命令其实不太常用,我们一般都是要调用摄像头串口数据进行更进一步的操作,下面介绍ROS下rqt和rviz显示摄像头捕获实时画面。
二、ROS工具调用摄像头
1.安装功能包
进入工作空间的源目录,复制功能包
$ git clone https://github.com/UbiquityRobotics/raspicam_node.git
然后回到上一级,编译并设置环境
$ cd ..
$ catkin_make
$ source devel/setup.bash
运行节点,打开摄像头
$ roslaunch usb_cam usb_cam-test.launch
可以输入rostopic list显示目前的话题列表,树莓派在通过串口像单片机传输摄像头数据时,可以发布图中的话题数据,这是压缩的像素数据,内存小收发比较快。
2.rqt工具显示
输入以下代码:
$ rqt_image_view
选择相应的话题显示画面
成功看到画面
3.rviz工具显示
输入以下命令打开rviz界面
$ rosrun rviz rviz
点击左下角Add添加image图像类型
展开image,选择需要订阅的话题
成功显示实时图像
总结
最后说一下供电问题,在网上搜到树莓派4B有三种供电方式,为了排线方便,我本来想用第二种方式,用5V电池通过串口给树莓派供电,实际操作时我还怕把板子烧坏了,结果是供电电流不够...远程连接时卡的一批...一跑摄像头程序直接掉电关机了...在使用安卓充电线5V/2A供电时系统丝滑流畅,程序运行顺利。