Arducam has updated Jetvariety, the project to increase MIPI Cameras for Jetson Nano and Xavier NX, to support NVIDIA Argus API
- The Jetson Nano and Jetson Xavier NX only support the IMX219 camera by default, but Arducam wants to support more.
- The Project Jetvariety of Arducam aims to support all kinds of MIPI camera modules with a single kernel camera driver. It has progressed a lot since its release.
- To address the new progress, Arducam rebrands the Jetvariety project into 3 three series – Jetvariety RAW, Jetvariety ISP, and Jetvariety Argus.
What is Jetvariety
Arducam aims to support the unsupported and to meet the unmet. Jetvariety is the best example of this spirit in the field of NVIDIA Jetson.
The Jetson Nano and Jetson Xavier NX only support the IMX219 camera by default. However, Arducam believes that’s far from enough to unlock the full potential of this powerful AI platform, and we decide to support more on our own.
The original purpose of Project Jetvariety is to quickly increase the variety of Jetson Nano cameras with a general-purpose camera solution. And it has done the job quite well. We’ve made it to interface global shutter cameras (OV7251, OV9281, OV2311) and a bunch of rolling shutter ones (OV5647, IMX135, IMX298, AR1820).
Here is the original blog when the Jetvariety is released:
Project Jetvariety: How Arducam Makes it Possible to Use Any Camera Module on the Jetson Nano with One Kernel Driver for All
Introducing Project Jetvariety – Increase the Jetson Nano Camera Variety Today we are proud to introduce the Project Jetvariety (short for Jetson variety), which aims to quickly increase the variety of Jetson Nano cameras with Read more…
Jetvariety entering the next chapter
8 months ago, when Project Jetvariety was announced, it was a breakthrough. Anyway, we’re perhaps the first to meet so many unmet needs. As more people got to use the Jetvariety cameras, new needs emerged.
At first, Jetvariety is more about proving the feasibility: Yes, you can use camera modules on the Jetson Nano other than the IMX219. Yet some improvements remain to be made other than the proof of concept.
One of the key issues is that the original Jetvariety cameras only support RAW data capturing. For some users, RAW data would be okay for their applications. They are either less concerned with color accuracy or familiar with the software image processing. However, for some others, they are expecting a similar performance and usage as the default IMX219 camera. So it’s time to embrace the change.
ISP and Image Processing
To solution to the RAW data issues is an image signal processor (ISP). Without the ISP, we get an uncompressed unoptimized image file – there is no Auto White Balance (AWB), Auto Gain (AE), JPEG compression, or MP4 encoding.
But how is the ISP not an issue for the IMX219 camera? Because it is supported by the NVIDIA Argus Camera plugin (for GStreamer). And it can be accelerated by Jetson Hardware ISP Engine. So if we’ve handled the driver to the Jetson hardware ISP, the Jetvariety camera modules can run with the same Argus-based commands, just like the IMX219.
Yet that’s not the only solution to an ISP. You can build a discrete ISP on your camera board, so the data it sends out is not dependent on the ISP of the Jetson hardware. Another bonus is that it offloads the Jetson from the image processing to free more computing power from it. You can use it as a general Video4Linux2 (V4L2) device.
So, to conclude, there are two possible improvements:
- We figure out a way to get the camera supported by the Jetson Hardware ISP Engine and use the Argus API for GStreamer.
- We build camera modules with ISP included and get a V4L2-compliant video device.
The Rebranding of the Jetvariety – Now 3 Series
We’ve worked hard for the two improvements mentioned above, and here are our solutions:
- We’ve built camera modules with discrete ISPs, currently two (AR0230 and AR1335).
- We’ve built drivers for the Jetson ISP, currently also two (IMX135 and IMX298)
Those two improvements, combined with our original RAW data solution, becomes the 3 new series of the Jetvariety cameras, and they are:
- Jetvariety RAW – Same as the original Jetvariety solution, and only support RAW data
- Jetvariety ISP – Come with built-in discrete ISP and V4L2 compliance
- Jetvariety Argus – Upgraded from Jetvariety RAW, but enhanced by the Jetson Hardware ISP
Here are the full list of all the Jetvariety cameras:
Jetvariety RAW series
- Jetvariety RAW 0.3 (OV7251, global shutter)
- Jetvariety RAW 1 (OV9281, global shutter)
- Jetvariety RAW 2 (OV2311, global shutter)
- Jetvariety RAW 5 (OV5647, rolling shutter)
- Jetvariety RAW 13 (IMX135, rolling shutter) – phasing out
- Jetvariety RAW 16 (IMX298, rolling shutter) – phasing out
- Jetvariety RAW 18 (AR1820, rolling shutter)
Jetvariety ISP series
- Jetvariety ISP 2 (AR0320, HDR)
- Jetvariety ISP 13 (AR1335)
Jetvariety Argus series
- Jetvariety Argus 13 (IMX135, rolling shutter) – New, experimental
- Jetvariety Argus 16 (IMX298, rolling shutter) – New, experimental
Further Improvements and Notes
Currently, the Jetvariety Argus supports the Argus API and Jetson hardware ISP, but it’s still primitive and experimental – there is no ISP tuning process involved.
Arducam engineers are working on this issue, and we will bring more image sensors to Argus and Jetson ISP support.