하여간 이 Jetson 개발자 놈들은 뭐하나 쉽게 넘어가는 꼴을 못보는듯 합니다. Jetpack5에서 Jetpack6으로 넘어가는데도 시간이 한참을 걸리더만, Jetpack6에 올라가서는 Realsense 카메라들이 인신이 안되는 버그가 있습니다. 원인은 해당 드라이버를 포함하지 않아서이고, 이를 해결하기 위해선 커널 소스를 받아 해당 드라이버를 재빌딩해서 복사해 줘야 합니다.
특히 D435i의 경우 IMU가 내장되어 있는데, 이 IMU의 센서데이터를 USB HID 프로토콜을 이용해서 받도록 되어 있습니다. 이를 담당하는 디바이스 드라이버가 hidraw라는 녀석입니다. (아마 IMU가 내장되어 있지 않는 시리즈들은 잘 인식될 수도 있습니다. ^^)
다행히 librealsense 레포지토리에 커널 및 모듈을 편하게 빌드할 수 있도록 스크립트를 잘 만들어놓아서 빌드까지는 쉽게 해결이 가능합니다.
https://github.com/IntelRealSense/realsense_mipi_platform_driver/blob/dev/README_JP6.md
$ git clone https://github.com/IntelRealSense/realsense_mipi_platform_driver.git -b dev
$ cd realsense_mipi_platform_driver
$ ./setup_workspace.sh 6.0
$ ./apply_patches.sh apply 6.0
$ ./build_all.sh 6.0
유의해야 할 점은 현재까지는 Jetpack 6.0 (rev2)만 지원하고 있어서, 현재 최신버전인 6.2에서는 위 방법을 사용할 수 없고, 아직까지 지원 방안이 없습니다. 따라서 Jetson Orin NX 보드에 SDK Manager를 이용해 설치할 때, Jetpack 버전을 6.0 (rev2)로 선택해야 합니다.
이렇게 빌드를 완료하고,
그 다음, 빌드된 커널 모듈을 Jetson 보드에 복사하여 적용해야 하는데, 위 레포지토리의 문서를 따라서 진행하면, 드라이버의 문제인지 부팅이 제대로 되지 않거나, USB가 먹통이 되어버립니다. 따라서 다음의 과정만 진행하면 됩니다.
$ cd realsense_mipi_platform_driver
$ scp -r images/6.0/rootfs/lib/modules/5.15.136-tegra/extra <jetson-user-id>@<jetson-board-ip-address>:~/
다음으로 Jetson 보드에서는
$ sudo cp -r ~/extra /lib/modules/$(uname -r)/
$ cd /lib/modules/$(uname -r)/
$ sudo rm -rf videodev.ko
다음으로 depmod 설정파일에 경로를 추가합니다.
$ sudo vi /etc/depmod.d/ubuntu.conf
search updates boot built-in
이 부분을
search extra updates boot built-in
으로 수정
다시 터미널에서 다음과 같이 실행하고
$ sudo depmod
재부팅한 다음, Realsense 카메라를 꼽아주면 제대로 인식이 되고, 정상적으로 사용이 가능합니다.
끝.
Leave a Reply