Nvidia Jetson Nano
In the article “Computer Vision”, I outlined my intent to build a small Computer Vision test lab, designed to support a range of business use cases. The article highlighted the target uses cases (internal and external), requirements, proposed architecture and bill of materials.
This article will detail the setup of the Computer Vision test lab, with a follow-up article that will focus on the testing observations and results.
The test lab is built around the Nvidia Jetson Nano Developer Kit, which is a small and power-efficient computer, with enough horsepower to run multiple neural networks in parallel, supporting applications such as image classification, object detection, segmentation, etc.
The full bill of materials can be found below, selected based on their interoperability.
- Nvidia Jetson Nano Developer Kit: £101.50
- SanDisk Ultra 64GB A2 microSD Card: £9.69
- Geekworm 5V 4A 4000mA AC-DC Adaptor: £12.99
- Raspberry Pi Camera v2.0+: £24.00
- EDiMAX EW-7611ULB USB Wi-Fi Adapter with Bluetooth: £12.17
The total one-time cost of the test lab was £160.35, making it a cost-effective entry point for anyone looking to explore Artificial Intelligence or subfields such as Computer Vision.
Hardware Setup
The Jetson Nano Developer Kit is shipped in a small, bare-bones box, which includes the Jetson Nano module and carrier board. No other peripherals are provided (e.g. SD Card, Power Adaptor, etc.) The box does double as a fold-out paper stand, which is a nice touch, but fairly useless outside of the initial setup.
The back of the box highlights the product specification and board schematic, as well as acknowledging the need for an SD CArd and 5V 2A power source.
Although the Jetson Nano Developer Kit can be powered via micro-USB, I would highly recommend an external power adaptor to ensure a consistent and reliable 5V 2A. I selected the Geekworm 5V 4A 4000mA AC-DC Adaptor, which appears to work well (even under heavy load). To enable the external power adaptor, a jumper must be used to close the DC EN connection (highlighted in the photo below).
Although delivered as one unit, the Jetson Nano Developer Kit is two components, the Jetson Nano module, mounted on a carrier board. The module includes a large heatsink, with an option to add an external 40mm fan (recommended with hot or enclosed environments). The carrier board includes a range of input/output options, specifically HDMI, Display Port, 4x USB, 2x MIPI-CSI Camera Connector Connectors, 1x Expansion Header (GPIO, I2C, UART) and Ethernet.
The microSD slot can be found on the back of the Jetson Nano module, which can be accessed whilst mounted to the carrier board (highligted in the photo below).
I previously mentioned the fold-out paper stand, which works fine for the initial setup but does not include any mounting points for peripherals such as a camera, etc. As a result, I constructed a rudimentary stand out of Lego for the camera. The Raspberry Pi Camera connects via a MIPI-CSI Camera Connector.
To install the camera, simply disconnect all power sources (CCD cameras are sensitive to static) and connect the ribbon, ensuring the blue side is facing away from the Jeston Nano module (outwards).
Finally, the EDiMAX EW-7611ULB USB Wi-Fi Adapter with Bluetooth adaptor can be inserted into an available USB port.
This concludes the hardware setup of the Jetson Nano Developer Kit, ready to be connected to a monitor (HDMI or Display Port) and USB Keyboard/Mouse.
Software Setup
Nvidia provides a custom version of Ubuntu Linux, which can be downloaded from their website.
Once downloaded, follow the steps outlined in the “Jeston Nano Developer Kit Getting Started Guide” to write the operating system image to the microSD card. I used Windows to write the image, using an application called Etcher.
Once written, do not be surprised if the host operating system (in my case Windows) displays multiple errors when attempting to read the microSD card. Simply eject the microSD card and insert it into the Jetson Nano module.
The newly written operating system can now be used to boot the Jeston Nano Developer Kit, following the on-screen instructions to complete the initial operating system setup (e.g. Username, Password, etc.)
Once at the Linux desktop, it is time to set up and enable the EDiMAX EW-7611ULB USB wireless adapter.
Start by opening the terminal and cloning the following GitHub repository (you will temporarily need an Internet connection via the Ethernet port).
git clone https://github.com/lwfinger/rtl8723bu.git
Within the terminal, navigate to the newly downloaded directory and type the following command:
source dkms.conf
Type the following command to create a working project directory:
sudo mkdir /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION
With the directory created, type the following command to move the files to the working project directory:
sudo cp -r core hal include os_dep platform dkms.conf Makefile rtl8723b_fw.bin /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION
Add the files to DKMS with the following command:
sudo dkms add $PACKAGE_NAME/$PACKAGE_VERSION
Finally, the driver can be installed by typing the following command:
sudo dkms autoinstall $PACKAGE_NAME/$PACKAGE_VERSION
With the installation of the wireless adapter complete, restart the Jeston Nano Developer Kit, at which point wireless networks should be accessible via “Settings > Network”.
Although the Raspberry Pi Camera should be “plug and play”, it is worth testing. I would recommend using the CSI-Camera repository, which includes code that interacts with the MIPI-CSI Camera Connector. Using the provided Python script ‘python simple-camera-py’, the camera can be activated, with a live feed being displayed to the monitor.
Finally, the following two terminal commands will update the operating system and Nvidia Jetpack SDK, which includes a suite of tools to support Computer Vision use cases.
sudo apt-get update
sudo apt-get install nvidia-jetpack
That is it! The Jeston Nano Developer Kit is now ready to start processing Computer Vision workloads. In the next article, I will focus on testing observations and results.