Files
RapidPoseTriangulation/extras/jetson
2025-02-05 10:33:02 +01:00
..
2024-12-06 16:51:49 +01:00
2025-02-05 10:33:02 +01:00
2025-01-27 17:11:35 +01:00

Setup with Nvidia-Jetson-Orin

Initial setup and installation of RapidPoseTriangulation on a Nvidia Jetson device.
Tested with a Jetson AGX Orin Developer Kit module.


Base installation

  • Install newest software image:
    (https://developer.nvidia.com/sdk-manager)

    • Use manual recovery mode setup for first installation

    • Find out the ip-address of the Jetson for the runtime component installation with:

      sudo nmap -sn $(ip route get 1 | awk '{print $(NF-2);exit}')/24
      
  • Initialize system:
    (https://developer.nvidia.com/embedded/learn/get-started-jetson-agx-orin-devkit)

    • Connect via ssh, because using screen did not work, skip oem-config step

    • Skip installation of nvidia-jetpack

  • Install basic tools:

    sudo apt install -y curl nano wget git
    
  • Update hostname:

    sudo nano /etc/hostname
    sudo nano /etc/hosts
    sudo reboot
    
  • Enable maximum performance mode:

    sudo nvpmodel -m 0
    sudo jetson_clocks
    
  • Test docker is working:

    sudo docker run --rm hello-world
    
  • Enable docker without sudo:
    (https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user)

  • Enable GPU-access for docker building:

    • Run sudo nano /etc/docker/daemon.json and add:

      {
        "runtimes": {
          "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
          }
        },
        "default-runtime": "nvidia"
      }
      
    • Restart docker: sudo systemctl restart docker

  • Test docker is working:

    docker run --rm hello-world
    docker run -it --rm --runtime=nvidia --network=host dustynv/onnxruntime:1.20-r36.4.0
    

RPT installation

  • Build docker container:

    docker build --progress=plain -f extras/jetson/dockerfile -t rapidposetriangulation .
    ./run_container.sh
    
  • Build rpt package inside container:

    cd /RapidPoseTriangulation/swig/ && make all && cd ../tests/ && python3 test_interface.py && cd ..
    
    cd /RapidPoseTriangulation/scripts/ && \
    g++ -std=c++2a -fPIC -O3 -march=native -Wall -Werror -flto=auto -fopenmp -fopenmp-simd \
      -I /RapidPoseTriangulation/rpt/ \
      -isystem /usr/include/opencv4/ \
      -isystem /usr/local/include/onnxruntime/ \
      -L /usr/local/lib/ \
      test_skelda_dataset.cpp \
      /RapidPoseTriangulation/rpt/*.cpp \
      -o test_skelda_dataset.bin \
      -Wl,--start-group \
        -lonnxruntime_providers_tensorrt \
        -lonnxruntime_providers_shared \
        -lonnxruntime_providers_cuda \
        -lonnxruntime \
      -Wl,--end-group \
      $(pkg-config --libs opencv4) \
      -Wl,-rpath,/onnxruntime/build/Linux/Release/ \
    && cd ..
    
  • Test with samples:

    python3 /RapidPoseTriangulation/scripts/test_triangulate.py
    

ROS interface

  • Build docker container:

    docker build --progress=plain -f extras/ros/dockerfile -t rapidposetriangulation_ros .
    ./run_container.sh
    
  • Run and test:

    docker compose -f extras/jetson/docker-compose.yml up
    
    docker exec -it jetson-test_node-1 bash
    export ROS_DOMAIN_ID=18