알파카농장

Jackal 초기 세팅 & Jetson Nano tx2 - Jetpack 설정 본문

Autonomous Vehicle

Jackal 초기 세팅 & Jetson Nano tx2 - Jetpack 설정

갱파카 2022. 11. 10. 01:02

어쩌다 보니, 옛 연구실에서 몇 년 동안 방치됐었던 Jackal이란 로봇 플랫폼을 통해 연구를 진행하기로 했다.

 

Jackal이 뭐냐면.. Clearpath Robotics에서 만든 로봇 플랫폼이다! GPS랑 IMU 내장되어있고 install shell 파일로 초기 세팅만 잘 해두면, ROS에서 여러 토픽들이 자동으로 발행되는 고런,, 시스템인 것 같다.

 

SLAM을 하고 싶다고 생각은 했지만, 세부적인 건 잡지 못한 나..
일단 로봇이라도 구동시키고 이곳저곳 굴려봐야 인사이트가 나올 것 같아서 냅다 로봇을 세팅하고 있다. 

 

Jackal이 여러 부품으로 구성되어 있는데, 메뉴얼은 아래에서 확인해볼 수 있다.

https://www.generationrobots.com/media/Jackal_Clearpath_Robotics_Userguide.pdf

 

쨌든.. 이게 내가 처음 만지는 게 아니다 보니까 이 부품 저 부품이 비어있었는데, 모자란 부품을 찾아 삼만리 하다가 첫째날은 겨우 전원만 인가할 수 있었다. 플랫폼 자체에 jetson tx2 보드가 딸려있는데, 여기 안의 내용도 초기화를 하고 사용해야 돼서 해야 될 게 이만 저만이 아니었다.. (참고로, 예전에 Jackal 사용하시던 분들이 따로 tx2 구매해서 설치한 거임)

Jetson TX2 Spec.

일단, 나노에 전원을 인가한 후, 보드를 초기화하고 이 작은 보드에 Ubuntu OS와 JetPack을 설치했어야 했다.


즉, Host PC에서 SDK Manager를 통해 Jetson tx2에 넣을 OS image랑 CUDA나 Computer vision에서 사용하는 여러 라이브러리들을 준비해야한다 => 이걸 통칭 : Jetpack이라 하기로 했어요..

 

Jetpack SDK : NVIDIA에서 제공하는 AI 응용 프로그램 구축 시 사용하는 포괄적인 솔루션

=> 최신 OS image로 Jetson Developer Kit를 flash하고, Host PC를 통해 개발자 키트용 도구 설치 및 개발 환경 시작하는 데 필요한 라이브러리 및 API를 설치하는 그런 과정이라고 함

 

그래서 우리가 준비해야하는 것은 무엇이냐..

1. Ubuntu 18.04 LTS 버전이 설치된 호스트 PC 

2. 보드와 호스트 PC를 이어줄 USB 연결선 
(OS를 flash 하는 과정은 젯슨이 recovery 모드로 들어가서 OS image를 serial port로 OS 복구를 진행하고, host 와 함께 연결된 라우터(공유기)를 통해 필요한 라이브러리를 받아온다고 하네요! )

3. 보드를 연결할 수 있는 모니터와.. 근처에 모니터 있으면 Best..

급해서 내꺼에서 캡쳐를 못 땀.. 본인한테 맞게 설정해주면 된다. 출처) https://jstar0525.tistory.com/58

쨌든 이렇게 설정을 해주면, 

 

위와 같은 과정으로 보드는 리커버리 모드로 넣어주고 OS 넣어주고 라이브러리 설정해주는 과정 거치면 된다.
Library로는 TensorRT, cuDNN, CUDA, VisionWorks, Gstreamer, OpenCV가 있음

 

그렇게 다 구워주고 나면 tx2에서 ubuntu setup이 나오고 우리가 평소 알고 있던 Ubuntu 설치하듯이 초기 세팅해주면 됨! 


그리고 여기는 Jackal Setup인데 ppt로 정리한 게 있어서 ppt로만 첨부할게요

install.sh에서 알아서 설정해주긴 하는데, 내가 설정 바꾸고 싶으면 jackal github에서 패키지 가져와서 여러 configuration 바꿔주면 됨.. ㅇㅇ src 파일이 없는 건 아쉬운데,, 이건 왜 공개를 안해주는건지 ㅠ..

 

 

걍 install.sh로 설치하면 이렇게 알아서 노드랑 토픽 발행해준다. 

1. bluetooth controller (PS4) input 관련된 topic이랑 
2. twist_mux라고, rviz 상에서 들어온 값이랑 joystick에서 들어온 값 관련해서 cmd_vel이랑 odom 뽑아주고

3. jackal_node에서 GPS, IMU 처리하는 부분이랑 joint, cmd 처리 값 

4. 그리고 현재 state를 diagnostics 해주는 부분

이렇게 4파트가 있다고 생각이 되네요,, 쨌든 ROS wiki에 쳐보면 토픽 msg type이랑 어떤 일 하는지 대충은 짐작 가능함 

 

그리고 jackal은 로봇 플랫폼이니까 우리가 맨날 hdmi 연결하고 모니터로 볼 수 없자나,,? 그래서 원격 접속할 Desktop 설정해줘야 하는데 (Host PC 설정) 이렇게 설정해주면 된다! 

Host PC 설정

그리고, Host PC에서 Jackal tx2 board로 원격 접속해야하는데 그건 ssh로 접속할 수 있다.

 

내가 바보라서 그런지 네트워크 설정하는게 도무지 이해 안갔는데, 메뉴얼 보면 이렇게 하라고 나와있다!

대충 원리는 Jackal Tx2 보드에서 roscore (master node)가 돌아가는거고, Host PC에서는 본인의 ip 주소가 172.20.10.3 (ROS_HOSTNAME)인데 다만 ROS_MASTER_URI -> 내가 쓸 master node는 Host PC의 master가 아닌, tx2 board의 master를 쓰겠다라는 걸 의미함 

 

=> 이렇게 하면, Host PC에서도 Jackal이 발행하는 토픽도 볼 수 있고, command 줘서 Jackal에서 실행할 수도 있음..

 

그 파트는 후속작으로 얘기하겠다 ! 근데 ppt 이미지 왜 깨지지 ㅠ 쨌든..

 

내 SLAM을 demo시킬 Jackal아... 잘 부탁해! 내가 1년 동안 열심히 연구해서 예쁘게 써줄게..