jetson orin nano에서 zed로 객체 인식할 일이 있어서 nano 셋팅을 하게 되었다.
객체인식..은 금방 하는거지만 jetson은 셋팅 되어 있는거만 써봤지 os 부팅부터 하기는 처음이라서 개열받는(?) 셋팅 시행착오 일지를 남겨 본다.
orin 개발자 키트와 연구실에 남는 SD 카드를 하나 받았다. 키트 안에 64gb짜리 SD 카드가 꼽혀있길래 전원을 켜보았다.
os 설치가 안 되어있었다.
찾아보니 Jetpack이라는 Jetson SDK를 깔아야 jetson용 OS도 깔리고 부팅이 가능한거였다.
SD 카드 사용해서 jetpack image flash 하는 방법이 있어서, sd card를 사용중인 우분투 pc 어댑터에 꼽고 포맷을 해봤다.
안된다. 외않된데?
balenaEtcher에 무작정 jetpack image를 넣어봤다.
flash도 역시 안된다.
SD 카드 결함인가? 원인 불명의 에러와 종일 SD 카드랑 씨름하다가 터덜터덜 퇴근
점심시간 전까지 여전히 해결이 안됨
내 문제인가, sd 카드의 문제인가 중요한 논제를 가릴 때가 되었다 싶어 연구실 에인절에게 포맷 좀 해달라고 해봤다.
내 어댑터를 그대로 쓰니까 안됐다.
어댑터를 다른걸로 바꾸니깐 됐다. 야발
아하! 어댑터 문제일거라곤 꿈에도 생각 못했다. 문제는 나인가 sd 카드인가 죽음의 이지선다에 빠져 있었기 때문에......... (착한말)(착한말)
어쨋든 덕분에 어댑터 바꿔서 jetpack 5.1.1 버전으로 이미지 플래쉬도 잘 하고, 부팅도 잘 됐다.
ROS2를 써야 했는데, jetpack 5.1.1은 20.04 라서 foxy를 깔았다.
사실 이 ㄸㅐ... 좀 싸했다. zed 셋팅 humble에서만 해봤는데....... 왠지 싸했어.......
어쨌든 zed sdk 설치하고, zed-ros2-wrapper 설치 강행
rosdep install부터 막혀서 어찌어찌 해결했는데, wrapper 패키지 빌드하니깐 계속 뭐가 하나씩 없대..
걸리는 것 마다 apt-install로 싹 깔아주고
symlink-install로 빌드 완료
그리고 source 하고 도키도키하게 카메라를 켜봤다.
하지만.. 돌아오는건 제드 토픽이 아닌 차가운 에러 메시지뿐
[component_container-2] [INFO] [1733414829.790032321] [zed.zed_node]: Camera-IMU Translation:
[component_container-2] -0.002 -0.023061 0.000217
[component_container-2] [INFO] [1733414829.790224267] [zed.zed_node]: Camera-IMU Rotation:
[component_container-2] FFFFD08A1670
[component_container-2] 0.999985 0.004895 -0.002594
[component_container-2] -0.004901 0.999986 -0.002006
[component_container-2] 0.002584 0.002019 0.999995
[component_container-2]
[component_container-2] [INFO] [1733414829.790310928] [zed.zed_node]: *** Subscribers ***
[component_container-2] terminate called after throwing an instance of 'rclcpp::exceptions::InvalidTopicNameError'
[component_container-2] what(): Invalid topic name: topic name must not be empty string:
[component_container-2] ''
[component_container-2] ^
[component_container-2]
[ERROR] [component_container-2]: process has died [pid 102219, exit code -6, cmd '/opt/ros/foxy/lib/rclcpp_components/component_container --ros-args -r __node:=zed_container -r __ns:=/zed'].
원인은 모르지만 sd card로 6.x는 부팅이 안되는데 어쩌나..?
어~ 그냥 하지마~
오늘은 sd card 부팅법을 포기하고, 내 ubuntu pc에 sdk manager를 설치하고 거기서 jetpack 6.x를 깔아보기로 했다.
sdk manager 깔고, 티스토리 jetpack 설치 글 참고해서 orin이랑 ubuntu 연결하고 젯팩 설치를 시작했다.
image flash 방법에 비하면 더럽게 오래 걸렸다.
그리고 중간에... SDK 컴포넌트 설치하는 과정에서 자꾸 내 username/password를 인식 못하는 문제가 있었다.
이건 해결법 좀 찾아보다가 그냥 오린 터미널 들어가서 패스워드 다시 변경했더니 그대로 설치 됐다.
드디어 jetpack 6.x 부팅 성공...!!! 바로 기분 최고조
이제 바로 humble 깔고, zed sdk 깔고, wrapper 깔고.. 순조롭게 진행됐다.
zed 카메라 launch도 잘 실행됐고, 코드 바로 넣어서 인식기 만들고, 인식 결과를 커스텀 메시지로 생성해서 발행하게 해 두었다.
그런데 추론속도가 안나와서 원인을 파악해보니, jetson에서 gpu를 사용하려면 전용 torch를 설치해야 했다.
(*cuda는 jetson이랑 같이 설치돼서 12.6으로 깔려있는 상태였다. )
그래서 nvidia developer 사이트 들어가서 맞는 버전 찾고, torch whl파일 받은 다음 설치 명령어 실행해서 torch, torchvision 다시 설치했더니...
추론 속도가 떡상한걸 확인할 수 있었다.
기분좋게 노션에 셋팅 메뉴얼 작성해놓고 퇴근~
내일은 생일 기념으로 연차 누려야겠다 ^__^
그럼 안녕~