Nvidia Omniverse (Isaac SDK)

최준혁·2022년 2월 10일
0

Omniverse

목록 보기
2/5

Isaac samples

setup

  1. Prerequisites (os 버전 제외하고는 완전 필수는 아닌듯)
  • Recommendation
OSGraphic CardCuda
DesktopUbuntu 18.04 LTS>440>6.1
RobotJetpack4.5.1....
  • Mine
OSGraphic CardCuda
DesktopUbuntu 20.04 LTS(docker)47011.4
RobotJetpack4.5.1....
  1. sdk download

Installing Dependencies on Desktop

  1. Desktop
bob@desktop:~/isaac/engine/$ ./engine/build/scripts/install_dependencies.sh
  1. Robot
    dependencies를 재밌게도 host pc에서 로봇에 원격설치해주는 방식을 사용한다. ssh가 설치되어있어야 하니 주의할 것.
bob@desktop:~/isaac/engine/$ ./engine/build/scripts/install_dependencies_jetson.sh -u <jetson_username> -h <jetson_ip>
  1. Docker
    다행히 도커 옵션을 주면 도커에서 로봇으로 ssh를 통한 접속이 가능하다. 해서 사용에 완전 문제가 없다.
bob@desktop:~/isaac/sdk$ ../engine/engine/build/docker/install_docker.sh
bob@desktop:~/isaac$ ./engine/engine/build/docker/create_image.sh
bob@desktop:~/isaac$ docker volume create isaac-sdk-build-cache
bob@desktop:~/isaac$ docker run --mount source=isaac-sdk-build-cache,target=/root -v `pwd`:`pwd` -w `pwd`/sdk --runtime=nvidia -it isaacbuild:latest /bin/bash

기본 사용법

bazel을 사용해서 패키지를 관리하고 배포한다. 나는 도커를 사용해서 필요한 버전을 쉽게 설치했지만 다른분들은 모르겠다. 다른건 모르겠고 3.1버전만 된다는 것을 기억하자.

bazel로 패키지를 관리하는 법은 간단하다.

  • build
# 전체 패키지 빌드
bazel build ...

# 하나만 빌드
bob@desktop:~/isaac/sdk$ bazel build //engine/gems/filters/examples:ekf_sin_exp

# 전체 테스트
bob@desktop:~/isaac/sdk$ bazel test ... --jobs=1

# 하나만 테스트 
bob@desktop:~/isaac/sdk$ bazel test //engine/gems/optimization/tests:pso_ackley
  • run
    빌드한 파일 실행하기
bob@desktop:~/isaac/sdk$ bazel run //engine/gems/filters/examples:ekf_sin_exp
  • deploy
    빌드한 파일 로봇에 배포하는 법이다. 이때 로봇에 ssh 연결이 꼭 되어있어야한다.
  1. desktop에서 배포.
# app 배포
bob@desktop:~/isaac/sdk$ ./../engine/engine/build/deploy.sh --remote_user <username_on_robot> -p //apps/samples/stereo_dummy:stereo_dummy-pkg -d jetpack45 -h <robot_ip>
# package 배포
bob@desktop:~/isaac/sdk$ ./../engine/engine/build/deploy.sh --remote_user <username_on_robot> -p //packages/visual_slam/apps:elbrus_visual_slam_zed-pkg  -d jetpack45 -h <robot_ip>
  1. run in robot
    빌드한 파일 로봇에서 사용하기
# 로봇에 ssh를 통한 접속
# app 실행 
bob@jetson:~/$ cd deploy/bob/stereo_dummy-pkg
bob@jetson:~/deploy/bob/stereo_dummy-pkg$ ./apps/samples/stereo_dummy/stereo_dummy
# package 실행
bob@jetson:~/$ cd deploy/bob/
bob@jetson:~/deploy/bob$ ./packages/visual_slam/apps/elbrus_visual_slam_zed

sample 사용




도커에서 필요한 옵션은 다음과 같다.
myshell.sh

#!/bin/bash
docker run \
    --mount source=isaac-sdk-build-cache,target=/root \
    -v `pwd`:`pwd` \
    -w `pwd`/sdk \
    --network host \
    -v /dev:/dev \
    --rm \
    --name isaac-zed \
    --gpus all \
    -it \
    isaac-zed:latest \
    /bin/bash

물론 전체 /dev를 할 필요는 없다. -v /dev:/dev-device /dev/video0 같이 바꾸어도 똑같이 된다.
아쉬운 점은 웹캠은 쉽게 설치가 되었지만 zed sdk나 realsense sdk 를 쉽게 설치할 순 없었다. 그들만의 도커를 사용해야하는데 이것은 해결못하였다.

웹캠을 사용한다면 본인 웹캠의 스펙에 맞는 내용을 적어주도록하자.

  • v4l2_camera.app.json 중 config
"config": {
  "camera": {
    "V4L2Camera": {
      "device_id": 2,
      "rows": 480,
      "cols": 640,
      "rate_hz": 30
    }
  },
  "websight": {
    "WebsightServer": {
      "port": 3000,
      "ui_config": {
        "windows": {
          "Camera": {
            "renderer": "2d",
            "channels": [
              { "name": "v4l2_camera/viewer/ImageViewer/image" }
            ]
          }
        }
      }
    }
  }

rows와 cols에 지원하는 내용을 적어주도록 하자. 그리고 json파일을 사용하니 다시 빌드할 필요없이 그 내용만 수정하면 되겠다.


Run Jupyter notebook

isaac sdk의 데이터를 보고 싶어서 파이썬 파일을 작성해야하는지, 어떤걸 해야하는지 고민하다가 tutorial에 jupyter notebook을 사용할 수 있다고 하여 쓴 내용이다.

  1. docker에서 다음과 같이 실행하면 에러가 나온다
bazel run //apps/tutorials/jupyter_notebook:jupyter_notebook

[C 09:29:08.480 NotebookApp] Running as root is not recommended. Use --allow-root to bypass.

  1. docker 컨테이너 안이라면 사용에 arg를 다음과 같이 넣어줘야 한다.
bazel run //apps/tutorials/jupyter_notebook:jupyter_notebook -- --allow-root
profile
3D Vision, VSLAM, Robotics, Deep_Learning

0개의 댓글