본문 바로가기

토이프로젝트 자율주행용 지그 셋업하기 본문

개인 프로젝트 and 논문/딥러닝 자율주행 장난감 만들기

토이프로젝트 자율주행용 지그 셋업하기

jaegomhoji 2022. 10. 11. 22:12

업무 공부 겸 사이드 프로젝트로 진행할 지그를 셋업하려고 한다.

졸업시험 공부해야되는데, 나란 사람은 당장의 궁금증을 해결하는게 우선인가 보다.

사실 모르는게 너무 많아서 그렇다.

 

지그란? : 제품 테스트 혹은 무언가를 측정하기 위한 틀 , 기구 , 장치 

 

현재로서는 크게 세가지 파트로 나누어 볼 수 있을것 같다.

 

1. 웹캠에서 영상을 받아서 라즈베리 파이가 ssh로 쏴줌 

2. 컴퓨터에서 영상을 받아서 모델로 Predict , 결과를 시리얼 형태로 ssh로(UDP X ) 쏴준다.

3. 젯슨 나노에서 ROS로 시리얼 변환 후 모터 컨트롤러로 보내서 주행 명령 실행 

 

 

이렇게 구성한 이유는

첫번째로, 딥러닝 모델을 굳이 바로 올려놓고 테스트 할 필요가 없어서, 경우에 따라 모델을 교체할 수도 있어서.

두번째로, 스무스한 움직임을 코딩해야 하기 때문에 -> 어떤 파트에서 건드려줄지 판단  

세번째로, 장비 구입 이전에 필요 사양 테스트 

마지막으로, 모든 프로세스를 구성해보며 부딪히면서 배우고자 함이다.

 

1. roscore - 로스코어

2. CMD_VEL rosrun .py file 

3. Bringup roslaunch .launch file 

 

ping이란 ? : 원격 대상의 IP가 활성인지 비활성인지, 패킷 손상이 있는지 확인할 수 있으며, 거의 모든 리눅스 배포 환경에 설치된 iputils 패키지에 속해있다.

UDP란 ? : User Datagram Protocol으로 , ACK 없이 단방향 송신. 그래서 속도가 빠르다. 

UART란 ? : Universal Asynchronous Receiver/Transmitter로, 두 장치간 범용 직렬 데이터 교환 프로토콜을 말한다 

 

라즈베리 파이 설정 

[ 터미널 창 1 ]

ping ip_number 

설정한 Ip_num에서 패킷을 receive 하는지 확인한다. 

이후 정상적으로 received 되면 ctrl+c 로 close 

 

ssh id@ IP_num 

-> SSH란 ? : Secure SHell, 원격 시스템(셸 - CLI )으로 명령을 실행할 수 있도록 해주는 프로토콜. 주로 리눅스/유닉스에서 사용되며 암호화 기법을 사용하여 안전한 통신이 가능하다. 

-> 리눅스/유닉스 계열의 운영체제는 Openssh를 기본으로 포함하고 있다 

-> 참 https://velog.io/@hyeseong-dev/리눅스-ssh란

 

 

-> IP란 ? : 

hostname -I 

-> 라즈베리 파이에서 IP 주소 확인하기 

-> 참고 https://rottk.tistory.com/entry/라즈베리파이-IP-확인하기 

 

이후 

cd mjpg-streamer/ mjpg-streamer-experimental/ 

sh ./start.sh 로 스트리밍 시작 

-> mjpg 동영상 스트리밍 셋팅 필요

-> 라즈베리 파이에 카메라 스트리밍이 가능한 여러 스택들이 있지만, 그중 Mjpg-stream은 git에 소스코드가 공개되어 있다.

-> 많은 블로그들에서 구현한 방법을 참고 

-> 참고1 https://jow1025.tistory.com/295

-> 참고2 https://sjs2215.tistory.com/53

 

컴퓨터 셋팅

[ 파이썬 idle ] 

receive source를 스트리밍 주소로 설정 

 

SSH + ROS 설정

[ Jetson nano 설정 ] 

sudo apt-get install openssh-server

openssh-server 설치 

 

[ 터미널 창 2 ]

ssh id@Jetson IP

-> 스트리밍 전용 IP와는 다른 것을 사용한다  

-> 진입이 되었을 경우 계정@device로 변경됨 

-> 참고 https://developer-itspjc.tistory.com/21

이후

roscore 

 

[ 터미널 창 3 ] 

ssh 이후 

cd ~/catkin_ws/build 

-> change directory ~

-> catkin_ws는 ros의 작업환경이다. 

-> catkin_ws ( build, devel, install, src ) 의 하위 폴더가 존재한다 

-> build는 Src에서 catkin_pkg를 빌드하기 위해 cmake를 호출하는 공간이다. 

 

sudo chmod 777 /dev/ttyTHS1 

-> chmod로 rxw ( read 4, execute 2, write 1 = 4 + 2 + 1 = 7 ) 를 user/group/other 에 모두 부여한다. 

-> 젯슨 나노 1번 포트를 통해 시리얼 연결을 할 것이기 때문 

-> ttyTHS란? : tty + Tegra High Speed ( NVIDIA계열의 시리얼 연결 THS ) 

-> permission denied problem ( https://sunggoo.tistory.com/64 )

 

-> rosrun folder file.py ( 파이썬으로 작성할 주행 관련 파일 ) 

-> roslaunch folder launchfile.launch ( 모터 구동을 위한 변환용 파일 ) 

 

 

 

 

Comments