u20-humble-Docker-Desktop.md

May 30, 2024 ยท View on GitHub

Ubuntu Installation

  1. Follow the instructions here to download the bare Ubuntu 20.04 image for Jetson Nano.
  2. Boot the SD card using the downloaded image and balenaEtcher.
  3. Insert the SD card to Jetson Nano and bootup the device. If prompted, username is 'jetson' and password is 'jetson'.
  4. Login to the system and run following commands to update the system.
    sudo apt update
    
    and
    sudo apt upgrade
    
  5. Add CUDA path to .bashrc. First open .bashrc
    gedit .bashrc
    
    and add the following lines to end of the file
    export PATH=${PATH}:/usr/local/cuda/bin
    export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/cuda/lib64
    

Testing the CUDA functionality

  1. Open a new Terminal to refresh the path variables. Then run,

    /usr/local/cuda-10.2/bin/cuda-install-samples-10.2.sh .
    cd NVIDIA_CUDA-10.2_Samples/
    
  2. Build the examples by running

    make
    

    if an error pops up saying,

    error -- unsupported GNU version! gcc versions later than 8 are not supported!
    

    run

    make HOST_COMPILER=/usr/bin/g++-7
    
  3. Run the following command to test

    ./bin/aarch64/linux/release/deviceQuery
    

    and output should be similar to the following

    ./bin/aarch64/linux/release/deviceQuery Starting...
    
    CUDA Device Query (Runtime API) version (CUDART static linking)
    
    Detected 1 CUDA Capable device(s)
    
    Device 0: "NVIDIA Tegra X1"
    CUDA Driver Version / Runtime Version          10.2 / 10.2
    CUDA Capability Major/Minor version number:    5.3
    Total amount of global memory:                 3964 MBytes (4156399616 bytes)
    ( 1) Multiprocessors, (128) CUDA Cores/MP:     128 CUDA Cores
    GPU Max Clock rate:                            998 MHz (1.00 GHz)
    Memory Clock rate:                             13 Mhz
    Memory Bus Width:                              64-bit
    L2 Cache Size:                                 262144 bytes
    Maximum Texture Dimension Size (x,y,z)         1D=(65536), 2D=(65536, 65536), 3D=(4096, 4096, 4096)
    Maximum Layered 1D Texture Size, (num) layers  1D=(16384), 2048 layers
    Maximum Layered 2D Texture Size, (num) layers  2D=(16384, 16384), 2048 layers
    Total amount of constant memory:               65536 bytes
    Total amount of shared memory per block:       49152 bytes
    Total number of registers available per block: 32768
    Warp size:                                     32
    Maximum number of threads per multiprocessor:  2048
    Maximum number of threads per block:           1024
    Max dimension size of a thread block (x,y,z): (1024, 1024, 64)
    Max dimension size of a grid size    (x,y,z): (2147483647, 65535, 65535)
    Maximum memory pitch:                          2147483647 bytes
    Texture alignment:                             512 bytes
    Concurrent copy and kernel execution:          Yes with 1 copy engine(s)
    Run time limit on kernels:                     Yes
    Integrated GPU sharing Host Memory:            Yes
    Support host page-locked memory mapping:       Yes
    Alignment requirement for Surfaces:            Yes
    Device has ECC support:                        Disabled
    Device supports Unified Addressing (UVA):      Yes
    Device supports Compute Preemption:            No
    Supports Cooperative Kernel Launch:            No
    Supports MultiDevice Co-op Kernel Launch:      No
    Device PCI Domain ID / Bus ID / location ID:   0 / 0 / 0
    Compute Mode:
       < Default (multiple host threads can use ::cudaSetDevice() with device simultaneously) >
    
    deviceQuery, CUDA Driver = CUDART, CUDA Driver Version = 10.2, CUDA Runtime Version = 10.2, NumDevs = 1
    Result = PASS
    

ROS Installation

  1. Start the ROS2 Humble ros-base docker container using the following command. For more customized containers checkout KalanaRatnayake/Jetson-ROS-Docker. To build your own docker images, follow instructions at dusty-nv/jetson-containers

    docker pull dustynv/ros:humble-ros-base-l4t-r32.7.1
    docker run --rm -it --runtime nvidia --network host --gpus all -e DISPLAY dustynv/ros:humble-ros-base-l4t-r32.7.1