【树莓派4B或CM4】ubuntu 18.04 CSI摄像头

【树莓派4B】ubuntu 18.04 CSI摄像头

  • 摄像头驱动
    • 插入摄像头
    • 安装摄像头驱动
  • CM4
    • 检查是否连接上摄像头
  • 查看摄像头
    • raspistill、libcamera、fswebcam
    • motion
  • ROS功能包调调用摄像头并发布话题
  • 参考

摄像头驱动

插入摄像头

按照下面的图片里面的动画将CSI摄像头插入树莓派,插入的时候要将树莓派的电给断掉,然后再上电,安装的时候注意触电的位置面向hdmi接口。

安装摄像头驱动

因为树莓派安装的是Ubuntu 18.04 LTS而不是树莓派的系统,所以需要安装raspi-config来对摄像头进行配置。具体步骤如下:

wget http://mirrors.ustc.edu.cn/archive.raspberrypi.org/debian/pool/main/r/raspi-config/raspi-config_20201108_all.deb //下载raspi-config的deb包
sudo apt install lua5.1 libfftw3-single3 libsamplerate0 alsa-utils //安装相关依赖包
sudo dpkg -i raspi-config_20201108_all.deb //安装deb包
df -h//挂载

正常会出现下面的输出
【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第1张图片
之后按照以下步骤进行

mount /dev/mmcblk0p1 /boot
sudo usermod -aG video usename//添加到用户群组 这里usename处填写自己的用户名 例如 我的就是ubuntu
sudo raspi-config //打开raspi-config配置

然后按照下面的图示执行

【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第2张图片
用⬆和⬇来进行选择到3,按回车进入

【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第3张图片
然后选择P1 Camera按Enter进入,这时系统问你要不要使能摄像头,按Enter即可。

【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第4张图片
然后退出即可,结束终端。之后运行下面的命令

sudo apt-get install v4l-utils //安装V4l2工具包
v4l2-ctl --list-devices //显示设备列

【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第5张图片
正常会显示上面的这张图片。

CM4

树莓派无法连接csi摄像头的问题分析(cm4)

检查是否连接上摄像头

我看网上都是使用这条命令

vcgencmd get_camera

来检测是否连接上摄像头的,但是当我运行这条命令时会报以下错误
在这里插入图片描述
那就说明我们没有安装这个东西,需要安装,于是我参考了这里

首先使用su命令进入root用户模式下,接着执行以下命令

cd /tmp
git clone https://github.com/raspberrypi/userland.git 
cd userland

如果是32位OS,就输入

./buildme

如果是64位OS就输入(我的树莓派是aarch64)
可以通过设置-详细信息-About进行查看

./buildme --aarch64

接着,在/opt/vc/bin目录下就有vcgencmd了。直接运行,可能导致报错:

./vcgencmd: error while loading shared libraries: libvchiq_arm.so: cannot open shared object file: No such file or directory

在root用户下执行:

echo "/opt/vc/lib" >> /etc/ld.so.conf
ldconfig

其次如果需要,可以/opt/vc/bin加入到环境变量PATH内,方法可以参考这里
将 export PATH=/opt/vc/bin:$PATH 这句话添加到 ~/.bashrc 的文件下面
可以通过vim进入

//通过修改.bashrc文件:
sudo vim ~/.bashrc 
//在最后一行添上:
export PATH=/opt/vc/bin:$PATH

具体的vim命令可以看这里
具体的nano命令可以看这里

当我不添加到环境变量里面时,还是会出现vcgencmd:未找到命令
当我添加到环境变量里时,运行下下面这个语句,结果为

vcgencmd get_camera

在这里插入图片描述
安装这个连接进行尝试解决,最后不仅重启了一下耽误几分钟,结果还是这样。
于是我就尝试执行以下命令

cd /opt/vc/bin/
sudo ./vcgencmd get_camera

结果就是这样对的,说明摄像头已经连接成功
在这里插入图片描述
这里如果不加sudo结果会跟上边一样 VCHI initialization failed
总之,不管怎样能够检测了,勉强能够接受。

这说明我们已经连接上了摄像头,下面进行拍照测试或者查看视频流

查看摄像头

raspistill、libcamera、fswebcam

查看网上大多使用的是

raspistill -v -o test.jpg

这条语句进行拍摄的,而当我运行时,出错了
在这里插入图片描述
经过查阅 查看了这里还有这里说配置或者升级系统出现问题,在最新的树莓派系统中已经从基于专有 Broadcom GPU 代码的传统相机软件堆栈过渡到基于 libcamera 的开源堆栈,也就说未来会使用libcamera来替代
然后我运行下面的这个命令

libcamera-hello

在这里插入图片描述
然后找到了libcamera的安装教程,在这里

git clone https://git.libcamera.org/libcamera/libcamera.git
cd libcamera
meson build
ninja -C build install

首先第一步就被绊住了,一直克隆不下来,最后通过其他机子克隆下来了然后上传到云盘下载下来了,结果到第三步就又不行了meson命令没找到,反正装这装那一顿操作后,没解决,然后只能另寻出路了。这时找到了fswebcam这个工具,安装教程在这里安装好后执行以下命令进行拍摄

fswebcam --no-banner -r 640x480 image3.jpg

结果成功,也可以参考这里但是我尝试了许多,均不能查看视频流。于是找到了motion

motion

motion是一个提供视频监控解决方案的开源软件,支持Linux/FreeBSD/MacOS等多个平台。可以将USB等摄像头转换成网络摄像头。
安装教程在这里

安装完成后通过 ifconfig 查看当前机子的ip地址,然后输入并加端口即可进入查看视频流,但是会卡,因此我们调节一下帧率就可以缓解卡顿。可以参考这里或者这里

这里的教程都没有说的一点就是 如果打开网页后只显示下面这个图片而没有视频 那就换一下端口别设置成8081 换一个 比如8085这个时候你可以试试 进8081和8085会有不一样的效果

在这里插入图片描述
8081是这样
【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第6张图片
8085是这样
【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第7张图片
另外因为它已经是一个网络摄像头 你只要在同一个网关下 都是可以进去的。

ROS功能包调调用摄像头并发布话题

在ubuntu18下和ros版本melodic下安装usb_cam功能包

sudo apt-get install ros-melodic-usb-cam
roslaunch usb_cam usb_cam-test.launch

如果有报错就请参考这里

可以查看话题,并使用rviz查看具体图像,rqt也可以。

【树莓派4B或CM4】ubuntu 18.04 CSI摄像头_第8张图片

参考

【树莓派4B】测试Ubuntu Mate20.04搭载CSI摄像头

你可能感兴趣的:(树莓派ubuntu,arm,arm开发,硬件架构)