Embedded

젯슨 나노 jetson nano 도커 및 주피터랩으로 제어 및 카메라 테스트

Bicentennial 2023. 7. 22. 00:26

Nvidia DLI 과정을 참고하여 도커와 주피터랩을 이용하여 젯슨 나노에서 카메라 예제를 실행해보겠습니다.

 

무선 인터넷을 사용하지 않아도 메인 PC에서 제어가 가능한 SSH를 활용한 데이터 통신 방법을 함께 소개하겠습니다.

 

제어할 메인 PC와 젯슨 나노를 USB 케이블로 연결합니다.

 

 

젯슨 나노의 마이크로 5핀과 연결하면 되는데, 전원 공급을 위해서가 아니라 유선 데이터 통신을 하기 위함입니다.

 

따라서 일반 충전케이블이 아닌, 데이터 통신이 가능한 USB 케이블을 사용해야 합니다.

 

카메라는 USB웹캠 혹은 CSI카메라를 연결합니다.

 

 

CSI카메라는 라즈베리파이에 사용하는 picamera와 같은 연결방식을 사용하는 카메라를 말합니다.

 

메인 PC의 프롬프트 창을 열어 다음 SSH 통신 커맨드를 입력합니다.

 

ssh <username>@192.168.55.1

<username>은 젯슨 나노에 등록한 사용자 이름을 입력하면 됩니다. SSH통신은 192.168.55.1의 주소로 접근하게 돼있습니다.

 

이후엔 메인 PC의 프롬프트에서 젯슨 나노 프롬프트 입력이 가능합니다.

 

 

디렉토리를 만들어줍니다.

mkdir -p ~/nvdli-data

 

 

도커 컨테이너를 생성합니다.

sudo docker run --runtime nvidia -it --rm --network host \
    --volume ~/nvdli-data:/nvdli-nano/data \
    --device /dev/video0 \
    nvcr.io/nvidia/dli/dli-nano-ai:<tag>

이때, <tag>에는 현재 설치된 JetPack OS 버전에 따른 컨테이너 버전을 입력해 줍니다.

 

저는 JetPack 4.6.1 en-US 버전을 사용하고 있으므로, v2.0.2-r32.7.1를 입력하였습니다.

 

JetPack Release               Container Version                                                                         TagLanguage

4.4 v2.0.0-r32.4.3 en-US
4.4.1 v2.0.1-r32.4.4 en-US
4.4.1 v2.0.1-r32.4.4zh zh-CN
4.5 v2.0.1-r32.5.0 en-US
4.5 v2.0.1-r32.5.0zh zh-CN
4.6 v2.0.1-r32.6.1 en-US
4.6 v2.0.1-r32.6.1zh zh-CN
4.6 v2.0.1-r32.6.1tw zh-TW
4.6 v2.0.1-r32.6.1ja JA
4.6 v2.0.2-r32.6.1kr KR
4.6.1 v2.0.2-r32.7.1 en-US
4.6.1 v2.0.2-r32.7.1zh zh-CN
4.6.1 v2.0.2-r32.7.1tw zh-TW
4.6.1 v2.0.2-r32.7.1ja JA
4.6.1 v2.0.2-r32.7.1kr KR

 

도커 컨테이너 생성문은 재실행시에는 다음 명령어를 차례로 사용합니다. 

echo "sudo docker run --runtime nvidia -it --rm --network host \
    --volume ~/nvdli-data:/nvdli-nano/data \
    --device /dev/video0 \
    nvcr.io/nvidia/dli/dli-nano-ai:v2.0.2-r32.7.1" > docker_dli_run.sh
chmod +x docker_dli_run.sh
./docker_dli_run.sh

명령 프롬프트가 root@<username>-desktop:nvdli-nano# 으로 변경되었다면 도커 환경 실행 성공입니다.

 

이제 주피터랩으로 컨테이너 상의 예제를 젯슨 나노에서 실행시켜보겠습니다.

 

메인 PC의 브라우저에서 192.168.55.1:8888로 접속합니다.

 

이때 SSH 대신 다른 원격 제어등을 사용하신 다면, 젯슨 나노의 해당 IP:8888로 접속하면 됩니다.

 

 

 

주피터랩을 사용하여 도커 컨테이너에 무사히 접근하였습니다.

 

hello_camera 폴더로 이동하면 카메라 테스트 예제가 있습니다. USB, CSI 각각 파일이 준비돼있으니 연결한 카메라에 맞게 실행하면 됩니다.

 

주피터랩의 코드는 인터프리터 형식으로 차례로 실행하면 됩니다. 블록 내의 코드를 실행할 땐 상단의 ▶버튼을 사용하면 젯슨 나노상에서 코드가 실행이 됩니다.

 

코드를 차례로 실행하다 보면 카메라로 순간 사진 촬영 및 실시간 영상 확인이 가능합니다.

 

 

영상은 주피터랩  화면에서 바로 확인 가능합니다.

 

화면에서 마우스 오른버튼을 클릭하고 중간에 Create New View for Output을 선택하면 이미지 아웃풋 화면을 별도 창으로 띄워서 확인할 수 있습니다.

 

 

다른 코드를 보면서도 이미지 확인이 가능하죠.

 

도움이 됐으면 좋겠습니다.

 

감사합니다.