Jeston Nano无法启动CSI相机

Jeston Nano无法启动CSI相机

在学习了一段时间的目标检测算法之后,想将其部署到设备上,以测试其实际性能。所以入手了一款NVDIA的Jetson Nano人工智能开发板套件,由于第一次使用,所以想跟着官网的教程走一遍,熟悉这个设备。结果在配置无外设模式的时候,就遇到了无法启动CSI相机的问题,以下记录一些探索过程。

运行的代码是hello_camera/csi_camera.ipynb

Jeston Nano无法启动CSI相机_第1张图片

报错位置:第二个代码块
报错内容

#前面还有一堆报错,有错误提示是无法创建相机对象
could not initialize camera

1、第一个尝试:
在终端试了一下,直接用python交互式编程来执行这两行代码,结果直接显示No module named jetson。自然想到去装这个包,然后经过一番操作,发现这个包只支持python3.x,而Ubuntu系统默认的python版本是python2。但是我感觉这个系统应该有预装python3,所以查看了一下,确实有。然后通过一番操作将系统默认python版本修改为python3。然后在终端执行

from jetcam.csi_camera import CSICamera
camera = CSICamera(width=224, height=224, capture_device=0) # confirm the capture_device number

心想这下不报错了,应该好了吧,然后打开jupyter notebook运行这段代码。可爱的是。报错依旧,一个字都没变。
不应该啊为什么呢?
然后我猛地意识到,不会这个在docker运行的python版本还是python2吧。于是打开终端,开始验证:

./docker_dli_run.sh
python --version

验证结果:
Jeston Nano无法启动CSI相机_第2张图片
还真是python版本的问题,为了进一步验证,进入python2,尝试引用jetcam
Jeston Nano无法启动CSI相机_第3张图片
结果真是,没法引用。
这里存在一个矛盾:似乎docker默认运行python2,而jetcam只提供了python3版本。要崩溃了。

但是啊但是,再留意一下右上角:
Jeston Nano无法启动CSI相机_第4张图片
Jupyter用的是python3!!!
所以洗洗睡吧,遇上了没法解决的问题:python3明明可以引用jetcam的,为什么在jupyter lab中不可以!

第二天早上洗洗起床,试图再挣扎一下,但是突然发现无法通过ssh访问Jetson Nano了,所以重启了一下…

重启之后,用ssh访问jetson运行docker,然后打开jupyter lab,想再查看一下报错的内容,总结一下然后再找解决办法。结果啊结果,在我运行到第二个代码块的时候,它没有立马报错,就在这三秒钟之内,我幻想,它不会好了吧?三秒钟之后,它没有报错,接下来的代码也没有报错,啊啊啊,内心瞬间舒爽。问题似乎解决了

我回想了一下,当时为了能一直远程访问Jetson Nano,我就给它设置了永不睡眠/锁定的状态,而且自此之后,我进行的所有操作之后,都没有重启过它。所以,有可能是我中间的某一步操作解决了问题,但是因为没有重启导致没有生效。以下是我认为有可能解决问题的步骤:(如果你也遇上同样的问题,可以在执行完每一步就重启一次)

  • 1、对于CSI相机,在定义docker启动脚本docker_dli_run.sh的时候,需要在终端如下设置:
echo "sudo docker run --runtime nvidia -it --rm --network host \
    --volume ~/nvdli-data:/nvdli-nano/data \
    --volume /tmp/argus_socket:/tmp/argus_socket \
    --device /dev/video0 \
    nvcr.io/nvidia/dli/dli-nano-ai:v2.0.1-r32.5.0" > docker_dli_run.sh

特别注意第三行后的反斜杠,官网没有这一个反斜杠

  • 2、在python3环境下安装jetcam和traitlets
  • 3、更改系统的默认python版本为python3

以上方法我暂时不重新做验证了,希望后来的小伙伴如果用上述方法能解决问题,请在评论区留言反馈一下。

以下是在探索过程中所主要参考的一些文章,衷心感谢!
[1] https://github.com/NVIDIA-AI-IOT/jetcam/issues/12
[2] https://github.com/NVIDIA-AI-IOT/jetcam
[3] https://pypi.org/project/traitlets/#history
[4] https://blog.csdn.net/weixin_44786482/article/details/101097122

你可能感兴趣的:(Jetson,Nano设备部署,笔记,人工智能,linux,嵌入式硬件)