Nvidia Jetson TX1
The TX1 is the second generation of the Nvidia Jetson processor boards. They carry a Tegra processor manufactured by Nvidia, which integrates an ARM architecture CPU with a GPU, Northbridge, Southbridge, and memory controller on a single chip. It is explicitely marketed as a platform for deep learning and computer vision. For this page, it is assumed that the Nvidia Jetson TX1 Developer Kit is used.
To start using the TX1 for ROS applications, first the proper software needs to be installed. Fortunately, Nvidia provides most necessary software and drivers through JetPack. Simply said, JetPack flashes (installs the OS + drivers) the TX1 to Ubuntu 16.04 with a kernel and drivers that accompany the TX1 hardware architecture.
- A host PC running Ubuntu 16.04
- 14.04 will work as well, except OpenCV and Visionworks will be unavailable for installation on the host
- 10 GB of disk space is required on the host PC
- Ethernet cable with a connection to the same network router that is providing network access to the host computer
- According the Nvidia, it is also possible to connect the Ethernet cable to a secondary network card on the host PC. However, we did not try this out personally.
- USB to Micro-B cable
- DC power source connected with 5.5x2.5 mm plug (** must check voltage here)
- Optional, but recommended
HDMI compatible display & HDMI cable
Enables you to see the visual output of the TX1
- USB hub with at least two available slots for:
- USB Mouse
- USB Keyboard
Enables you to easily interact with the Jetson TX1 after the installation is completed.
Flashing the TX1 using JetPack
Download the latest version of JetPack (3.2 seems to be the latest version that will be made available for the TX1)
- Create an installation directory on the host computer
Copy your download of JetPack to the install directory
cp ~/Downloads/JetPack-L4T-3.2-linux-x64_b196.run ~/jetson_install
Run the JetPack 3.2 installer
chmod +x ./JetPack-L4T-3.2-linux-x64_b196.run
- Follow the installer to download all necessary components
full install is recommended - contains a lot of interesting demo material
- In the meanwhile: connect the Jetson TX1 to your host computer via the USB to Micro-B cable
- Also: connect the rest of the peripherals to the Jetson TX1 directly
- After all components are installed and the Jetson is properly connected, go on with 'device installation'
- A new terminal window comes up, asking you to put the Jetson in usb recovery mode.
- Power down the device
- Press and release the POWER button 
- Press and hold the RECOVERY FORCE button 
- While holding the RECOVERY FORCE button , press and release the RESET button .
If the Jetson is put into recovery mode correctly, the lsusb command should show an NVIDIA CORP device
- Now hit a key in the terminal to proceed
- If everything went well, Jetson should now first be flashed, boot into ubuntu (username nvidia, password nvidia) and all components selected in step 5 should start to install (see progress in terminal window)
Fortunately, ROS Kinetic can be installed on the Nvidia Jetson from Debian packages, as described by by the Ubuntu Install of ROS Kinetic page.
If you run into a 'cannot download default sources list from:' error when calling sudo rosdep init, try to call sudo c_rehash /etc/ssl/certs before calling sudo rosdep init again (fix courtesy of Jetsonhacks).
Install Google Cartographer
Google cartographer for ROS is a package that provides a faster implementation of SLAM than for example Gmapping.
Installing Google Cartographer can prove tedious, see this post on the Nvidia Devtalk forum about the solution.
When using the JetPack installer, at the Components Manager (step 5), the ‘next’ button can be hidden. To show it, enlarge the window.
- Make sure that your network is properly set-up: host should be connected (by cable or wifi) to network x, TX1 connected by an Ethernet cable to network x. The USB to Micro-B cable does not function as an Ethernet port!
- When connected through wifi on the host PC, the Network Manager in Ubuntu shows as though wifi is trying to connect. This seems to be a bug – the internet connection is still up.