在最开始介绍Jetbot的时候有提到,这套智能小车只使用一个CSI摄像头作为全部输入的设备,因为这种设备的体积轻巧、功耗较低,并且NVIDIA Jetson系列有针对CSI摄像头提供一组Camera SubSystem来提高效率,是非常适合用在智能车方案上的视频图像输入用途,下表是个各种摄像头的简单比较表,这样就能一目了然地理解Jetobt为何挑选CSI摄像头作为输入设备。

首先要提示的,Jetson Nano(含2GB)所支持的是CSI-2版本接口,早期用在树莓派上50元以下的CSI接口摄像头是不能使用的,主要以IMX219芯片的摄像头为主,价格大约在100元以上,因此请勿选购错误。
本文并不花时间去说明CSI摄像头的工作原理,主要配合Jetbot的安装,以及执行最简单指令去确认您手上的摄像头是良好可用的,否则等整机都装好之后再进行测试,如果遇到不良的摄像头还得再拆卸下来,是一件颇为浪费时间的事情。
这种接口并不支持即插即用(PnP, Plug and Play)功能,不能像USB摄像头可以随时插入Jetson Nano(含2GB),必须在开机之前就先装好。如果开机后测试发现不成功,就得关机后再检查是否有什么地方安装不正确?或者接触不良的问题,就便利性而言是不如USB摄像头那么顺手。
安装CSI摄像头的种接口如下图左方的卡座,要拔取卡笋进行安装时千万小心力度,这个塑料件比较脆弱,一不小心弄断了,不仅无法再安装CSI摄像头,也严重影响Jetson Nano(含2GB)的质保,需要非常小心处理!

卡座上透过一根专属的软排线(如下图右)与CSI摄像头进行连接,这个软排线是有方向性的,如上图右所显示,软排线有金属针脚的一面要朝内(核心模块)方向,将排线完整塞进卡座之后,再将卡笋往下压,确保完全压倒底,否则摄像头可能因为排线接触不良而无法正常工作。
请参考https://cloud.tencent.com/developer/article/1421907 “菜鸟手册(2):给Jetson Nano安装CSI摄像头”一文,有非常详尽的步骤与动态简图能完整表达过程。总而言之,这个摄像头的安装有些细微之处,需要细心处理。一旦安装测试好之后,也尽量不要拆卸。
由于Jetbot会关闭Ubuntu图形桌面,因此过去所学到调用nvarguscamera指令,去启动CSI摄像头并在图形桌面上显示的方法,在这里都不能适用,但是v4l2-ctl工具还是能做最基本的检测。
下面的测试都在Jetbot上的Jupyter环境上进行,也顺便讲解一下Jupyter上调用摄像头与显示内容的方法,先熟悉一下这方面的使用是很重要,因为后面所有实验都要用到CSI摄像头。
现在从PC上的浏览器输入 ”<IP_OF_JETBOT>:8888” 进入Jetbot的Jupyter操作界面,然后开启一个命令终端(如下图):

现在先用v4l2-ctl工具检查一下CSI摄像头的状况,请在终端输入以下指令:
|
$
$
$ |
# 如果是Docker版,请先安装v4l-utils工具 apt install v4l-utils # 执行检测指令 v4l2-ctl --list-devices # 如果检测到 /dev/video0,继续检测这个设备的细部参数 v4l2-ctl --device=/dev/video0 --all |
细部参数就不花时间说明,主要让大家知道当有需要的时候,就可以用v4l2-ctl这个工具查看细节。
接下去开始用Jupyter的代码,来测试CSI摄像头的工作状况。首先创建一个新的”Notebook”(如下图步骤),这是Jupyter的工作区域。

每次新开的Notebook都是如下图的状况,会有一个[ ] 与一个方框:

现在就将下面代码复制到在Notebook的方框内里,由于前面“v4l2-ctl”检测到这个摄像头的宽高为(1640, 1232),因此在代码中将摄像头与widgets的图形尺寸都设为这两个数字:
|
|
from jetbot import Camera, bgr8_to_jpeg import ipywidgets.widgets as widgets from IPython.display import display import traitlets
camera = Camera.instance(width=1640, height=1232)
image = widgets.Image(format='jpeg', width=1640, height=1232) camera_link = traitlets.dlink((camera, 'value'), (image, 'value'), transform=bgr8_to_jpeg)
display(image) |
然后按一下“Ctrl-Enter”组合键就能执行,正常的话就能在下方看到一个方框显示摄像头所捕捉的动态画面,这样就完成CSI摄像头的测试。假如饭局这个显示好像有点小延迟,这是正常的,毕竟这里选择的是(1640, 1232)尺寸,试试将尺寸都缩小到1/2之后,是不是就流畅的多?
如果要停止摄像头播放,就用上面的“+”号添加一个“指令格”,然后在里面输入
|
|
camera_link.unlink() |
然后用“Ctrl-Enter”执行这个指令,这时候显示画面就处于冻结状态,不会播放显示器所捕捉的内容。
假如想要让摄像头再次执行播放,就在下面再添加一个“指令格”,输入
|
|
camera_link.link() |
按下“Ctrl-Enter”执行,就会看到显示框里的内容又开始执行动态播放了。
由于Jupyter并不支持OpenGL功能,无法像图形桌面那样直接播放视频,因此在这里需要使用一些固定的技巧,将视频转成图形方式去显示,上面这段代码可以说是Jetbot所有实验启动CSI摄像头的标准内容。
这个代码中有几个关键的部分:
早期Jetbot的摄像头是基于NVIDIA的JetCam项目,提供对CSI与USB两类摄像头的支持,不过最新版本中仿佛只对CSI摄像头提供支持,并且将底层的代码放在jetbot/camera下面的几只.py里面。
这使得调用方式变得非常简单,只要将宽与高提供给Camera.instance(宽,高)就可以,不需要再指定摄像头的编号。
这个模块为jupyter提供非常好用的“互动式小部件”,为原本只提供静态显示的教学环境,注入非常生动与多样化互动的功能。
熟悉图形化开发工具的朋友就应该知道,很多这类工具会提供下拉式选项、滑块調整、复选框、文字框这类的小部件,可以组建较为复杂的仪表盘。
在后面控制Jetbot车轮的实验中会使用到多种这类小部件,这里只是用到比较简单的widgets.image功能,设定输出为 ”jpeg”格式图像。
这是一个python互动式界面里的显示功能,这里就是将widget.image输出的jpeg图像显示在Jupyter。
如果从整个英文字去翻译,这个库就被称为“叛徒库”,其实是蛮奇怪的东西。但如果将这个字切割成 ”trait”与”-let”组合,就能解释成“小特征”的含义,例如booklet是小册子、eaglet是小老鹰的意思。
这个库的功能非常强大,除了能为我们处理“类型检查”之外,还能为动态计算提供预设值、修改属性之后发出更改的事件信号、处理属性值之间的交互影响,为我们简化很多复杂的交错关系。
在上述代码中”camera_link=traitlets.dlink((camera, 'value'), (image, 'value'), transform=bgr8_to_jpeg)”,将摄像头读取的图像与widgets.image所创建的image对象产生动态关联,并将摄像头图形执行“bgr8_to_jpeg”转换,存放到image里,最后再由display(image)显示出来。
至于camera_link物件就能在后面透过.link()与.unlink()执行开关人任务,以实现“暂停”与“再启动”的功能。
这样我们对Jetbot摄像头的调用与使用,就有个初步的了解,在后面实验中就能更清楚的感受到这些功能的使用。[完]
好文章,需要你的鼓励
OpenAI、Anthropic和Google的AI代码助手现在能够在人工监督下连续工作数小时,编写完整应用、运行测试并修复错误。但这些工具并非万能,可能会让软件项目变得复杂。AI代码助手的核心是大语言模型,通过多个LLM协作完成任务。由于存在上下文限制和"注意力预算"问题,系统采用上下文压缩和多代理架构来应对。使用时需要良好的软件开发实践,避免"氛围编程",确保代码质量和安全性。研究显示经验丰富的开发者使用AI工具可能反而效率降低。
香港大学研究团队发布GenieDrive技术,通过引入4D占用空间概念,让AI真正理解驾驶的物理规律。该系统能将复杂驾驶场景分解为物理预测和视频生成两步,解决了传统AI只会模仿、容易产生偏见的问题。测试显示其预测准确度提升7.2%,视频质量提升20.7%,且能准确响应各种驾驶指令,为开发更安全的自动驾驶系统提供了新范式。
英伟达与AI芯片竞争对手Groq达成非独家授权协议,将聘请Groq创始人乔纳森·罗斯、总裁桑尼·马德拉等员工。据CNBC报道,英伟达以200亿美元收购Groq资产,但英伟达澄清这并非公司收购。Groq开发的LPU语言处理单元声称运行大语言模型速度快10倍,能耗仅为十分之一。该公司今年9月融资7.5亿美元,估值69亿美元,为超200万开发者的AI应用提供支持。
这项由孟加拉国工程技术大学、澳大利亚莫纳什大学和卡塔尔计算研究所联合开展的研究,首次让网页机器人具备了"后悔能力"和"战略思维"。WebOperator系统通过树状搜索、安全回退和破坏性动作识别三大创新,在WebArena测试中达到54.6%成功率,显著超越以往记录。该技术有望革命性改变电子商务、办公自动化和内容管理等领域的效率和可靠性。