OS | Graphic Card | Cuda | |
---|---|---|---|
Desktop | Ubuntu 18.04 LTS | >440 | >6.1 |
Robot | Jetpack4.5.1 | .. | .. |
OS | Graphic Card | Cuda | |
---|---|---|---|
Desktop | Ubuntu 20.04 LTS(docker) | 470 | 11.4 |
Robot | Jetpack4.5.1 | .. | .. |
bob@desktop:~/isaac/engine/$ ./engine/build/scripts/install_dependencies.sh
bob@desktop:~/isaac/engine/$ ./engine/build/scripts/install_dependencies_jetson.sh -u <jetson_username> -h <jetson_ip>
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로 패키지를 관리하는 법은 간단하다.
# 전체 패키지 빌드
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
bob@desktop:~/isaac/sdk$ bazel run //engine/gems/filters/examples:ekf_sin_exp
# 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>
# 로봇에 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
도커에서 필요한 옵션은 다음과 같다.
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 를 쉽게 설치할 순 없었다. 그들만의 도커를 사용해야하는데 이것은 해결못하였다.
웹캠을 사용한다면 본인 웹캠의 스펙에 맞는 내용을 적어주도록하자.
"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파일을 사용하니 다시 빌드할 필요없이 그 내용만 수정하면 되겠다.
isaac sdk의 데이터를 보고 싶어서 파이썬 파일을 작성해야하는지, 어떤걸 해야하는지 고민하다가 tutorial에 jupyter notebook을 사용할 수 있다고 하여 쓴 내용이다.
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.
bazel run //apps/tutorials/jupyter_notebook:jupyter_notebook -- --allow-root