摄像头

Donkeycar通过CAMERA_TYPE配置支持大量摄像头。对于大多数应用程序,广视野非常重要,因此您的摄像头应使用120度广角镜头或更好。建议使用160度广角镜头。

摄像头设置

如果您使用默认的深度学习模板或计算机视觉模板,则需要一个摄像头。默认情况下,myconfig.py假设使用树莓派摄像头。您可以通过编辑~/mycar文件夹中的myconfig.py文件中的CAMERA_TYPE值来更改此设置。

如果您使用GPS路径跟踪模板,则不需要(可能也不想要)摄像头。在这种情况下,您可以将摄像头类型更改为模拟摄像头;CAMERA_TYPE = "MOCK"

树莓派:

如果您使用的是树莓派并且使用推荐的树莓派摄像头("PICAM"),则不需要更改__myconfg.py__。

这适用于所有树莓派摄像头,包括基于5百万像素OV5647芯片组的原始树莓派摄像头模块和基于Sony IMX219芯片的树莓派摄像头模块v2。这些摄像头很容易获得,并且许多供应商提供通用(克隆)版本。

确保摄像头正常工作摄像头连接问题很常见,特别是在组装新的Donkeycar、安装新的摄像头或发生碰撞后。在这些情况下,或者在使用Donkeycar软件时遇到摄像头错误时,您应该在向Discord寻求帮助之前确保您的摄像头正常工作。Raspberry Pi OS包含摄像头软件,可拍照或流视频。如果您的Raspberry Pi连接了键盘、鼠标和显示器,那么您可以运行rpicam-hello实用程序来显示摄像头的视频流。如果您通过ssh登录到Raspberry Pi,那么您可以使用rpicam-jpeg实用程序拍摄一张图像并将其保存为JPEG格式,然后将生成的JPEG文件复制到主机计算机上进行查看(通常,如果成功拍摄照片而没有报告错误,则摄像头应该正常工作)。

Jetson Nano:

Jetson Nano没有适用于基于5百万像素OV5647芯片的原始树莓派摄像头的驱动程序,但它有适用于基于IMX219芯片的v2摄像头的驱动程序。事实上,推荐的摄像头是基于IMX219芯片的。

默认设置CAMERA_TYPE = "PICAM"在Jetson上不起作用,即使您使用的是8MP树莓派摄像头或基于Sony IMX219的摄像头。在这两种情况下,您需要编辑__myconfg.py__,将其设置为CAMERA_TYPE = "CSIC"

要垂直翻转图像,请设置CSIC_CAM_GSTREAMER_FLIP_PARM = 6 - 如果您必须将摄像头安装在旋转的位置上,这很有帮助。

USB摄像头

当设置了OpenCV时,CAMERA_TYPE = CVCAM是适用于USB摄像头的摄像头类型。这需要额外设置Jetson Nano上的OpenCVRaspberry Pi上的OpenCV

如果您已安装了可选的pygame库,则可以通过将摄像头类型编辑为CAMERA_TYPE = "WEBCAM"来连接到摄像头。请参阅pygame的必要附加设置

如果您有多个摄像头,则可能需要设置CAMERA_INDEX配置值。默认情况下,它为零。

注意:CAMERA_TYPE = CVCAM依赖于编译了GStreamer支持的OpenCV版本。这是Jetson计算机的默认设置,并且在Raspberry Pi的推荐版本的OpenCV中也受支持。

Intel Realsense D435

Intel Realsense摄像头是RGBD摄像头;它们提供RGB图像和深度图像。您可以将它们用作RGB摄像头,通过在myconfig.py设置中将CAMERA_TYPE = "D435"来为深度学习模板或计算机视觉模板提供图像。您还需要查看适用于Intel Realsense摄像头的特定设置;

# Intel Realsense D435 and D435i depth sensing camera
REALSENSE_D435_RGB = True       # True to capture RGB image
REALSENSE_D435_DEPTH = True     # True to capture depth as image array
REALSENSE_D435_IMU = False      # True to capture IMU data (D435i only)
REALSENSE_D435_ID = None        # serial number of camera or None if you only have one camera (it will autodetect)

如果不使用深度图像,则需要设置REALSENSE_D435_DEPTH = False,以便不保存深度数据。

故障排除

如果颜色看起来不对,可能是摄像头输出的是BGR颜色而不是RGB。您可以设置BGR2RGB = True将BGR转换为RGB。

随着时间的推移,我们会添加其他摄像头,因此请阅读myconfig.py中的摄像头部分,了解可用的选项。

如果您在使用摄像头时遇到问题,请查看我们的Discord硬件频道以获取更多帮助。