대회 규정집을 보면 우분투 서버에서 시뮬레이션을 돌리고 도커에서 코드와 rosbridge를 실행하는 것으로 되어있다.
그래서 우분투 서버 세팅을 끝내고 이번에는 도커 설치 후 세팅을 해보려고 한다.
 
도커를 어디다 쓰는지 모르는 사람을 위한 한줄 설명!
도커에서 코드를 돌리고 local host에서 실행중인 시뮬레이션으로 쏴준다고 생각하면 될 것 같다.
연습할 때는 그냥 로컬에서 시뮬레이션과 코드 둘다 돌려도 된다. 그게 확실히 편하기도 하다.
그렇지만 대회가 도커로 한다고 하니... 도커 세팅을 미리 진행하였다.
 
이제 아래에서 도커 설치방법과 세팅하는 여러 방법을 소개해 줄테지만..!
우리 팀 인스턴스에는 더이상 해줄게 없으니, 도커를 사용하고자 한다면 맨 아래로 내려가 사용방법을 보고 익혀주면 된다.

 

여기서 팁 하나!! yolo와 velodyne 드라이브까지 깔고 나니.. 용량이 20기가를 넘게 차지하게 되었다.

그냥 20기가인거는 문제가 안되는데, 이 도커 컨테이너를 .tar파일로 압축하고, 클라우드에 원활한 업로드를 위해 다시 zip파일로 압축을 하기 위해서는...! 용량이 최소 50기가가 넘게 남아있는 환경에서 진행하는 것을 추천한다...

모든 세팅을 끝내고 정보통신공학과 4학년이 한줄만 팁을 주자면...
걍 처음에 잘 작동하는지 확인용으로만 해보고 연습에서는 안쓰는걸 추천한다.. 머리가 너무 아프다..
그냥 해보기만 하고 대회 직전에 도커에서 잘 작동하는지 확인하는 용으로만 하자...
앗! 두줄이넹.

도커 설치

대회에서 제공해준 아래 파일을 실행해보면 도커 설치 방법이 아주 친절하게 나와있다.
그대로 터미널 창에 입력해주면 된다.

Ubuntu_Docker_v2_2.pdf
0.06MB

그런데, 중간에 컴퓨터를 재부팅하라는 말이 있는데... 이게 아주 딜레마다. 
잘못 재부팅하면 그 인스턴스와는 영영 빠이빠이를 할 수 있다. 실제로 지난번 대회때는 대회 전날 그렇게 인스턴스가 죽었다. 그래서 이번에 잔뜩 겁먹은 채로 재부팅을 눌러봤는데..

하하하하하하하
그렇지만 한 5-6분 정도 기다리니 다시 로그인이 되었다는 아주 행복한 결말.
그러니 만약 도커 설치하고 재부팅하다가 죽었다면.. 일단 기다려보고, 그래도 돌아오지 않는다..? 빠르게 문의사항에 글을 올리도록 하자.
'내가 인스턴스 좀 가지고 놀면서 찾은건데, DCV페이지 오른쪽 상단을 통해 Disconnect를 하면 안되고, 터미널창에 reboot 써주면 조금 기다리면 다시 연결이 되는 것 같다!!'
재부팅 해줄 필요가 있으면 Disconnect나 power off가 아니라, 터미널창에 reboot 꼭 기억해주자!!
 

도커 세팅

도커 실행

재부팅 후 도커 컨테이너 세팅까지 도커세팅안내집을 잘 따라했다면, 이제 사용법을 익혀보자.
 
도커 키는거를 간단하게 하기 위해 우분투 local에 다음 단축어를 설정해 주었다.
(여기서 하나! 만약 내가 말하는 local과 컨테이너가 구분이 안간다면 명령어 앞을 봐라! 명령어 앞이 root로 되어있는지, ubuntu로 되어있는지 보고 만약 root@..... :~#로 되어있다면 도커 컨테이너 콘솔에 해준거!)

ubuntu@seolnaver007:~$ gedit ~/.bashrc
// 단축어 설정
alias start_docker='xhost +local:docker && docker start ubuntu && docker attach ubuntu'
// 종료
ubuntu@seolnaver007:~$ source ~/.bashrc

이렇게 하면 start_docker만 입력해도 도커 컨테이너가 실행된다.

처음에는 단축어를 docker로 해뒀지만, 디버깅하면서 저거때문에 계속 오류가 나서 단축어 start_docker로 바꿨다.

여기서 팁 하나! 도커는 기본적으로 Linux운영체제를 따른다. 그래서 대부분의 명령어들이 비슷하다.
들어가자마자 터미널에 ls쳐보면 현재 위치가 home이 아닌걸 알 수 있다.
그냥 바로 진행해도 될테지만 home으로 가고 싶다면 그상태로 cd해주면 자동으로 home으로 들어간다! 
 

도커 세팅

자 이제 도커에 들어가서 보면... 애석하게도 우리가 볼 수 있는 도커는 터미널창 밖에 없다. 
그래서 터미널창에서 catkins_ws/src/로 들어가보면 모라이 메세지 파일밖에 없는걸 볼 수 있다.
그럼 먼저! 단축어부터 설정해주자
 
그런데...!
root@f5f3cb79cdac:~# gedit ~/.bashrc
bash: gedit: command not found
..? 도커 컨테이너 내에서는 gedit이 없다..
그럼 새로 깔아주면 되지!!

root@f5f3cb79cdac:~# sudo apt-get install gedit

자 이제 모라이 초기 세팅때 해줬던 단축어 설정 여기서도 해주자!!

그런데... bashrc들어가보면 보이겠지만 이미 ros bridge키는 명령어가 'rb'로 설정되어 있다. 만약 이대로 쓰고 싶다면 그렇게 하고.. 나는 로컬이랑 헷갈릴 것 같아서 morai_connect로도 설정해주었다. 'rb'도 살려뒀으니 그걸 쓰고 싶으면 그걸 쓰면 된다! VS코드 키는 명령어도 같이 넣어줬다.

root@f5f3cb79cdac:~# gedit ~/.bashrc

alias cs='cd ~/catkin_ws/src/'
alias cm='catkin_make'
alias morai_connect='roslaunch rosbridge_server rosbridge_websocket.launch'
alisa open_vs='code --no-sandbox --user-data-dir=/app'

root@f5f3cb79cdac:~# source ~/.bashrc

&& 10.25 수정 &&
오늘 도커 초기화 하고 다시 깔면서 생각난건데, 제공된 도커 이미지에 기본적으로 모라이 메세지 파일이 깔려있다. 그런데! 이게 최신 버전이 아니라서, rosbridge를 키면 multiplay 서비스에서 에러가 난다!

~/catkin_ws/src/MORAI-ROS_morai_msgs$ git pull

을 해주면! 이제 에러 안난당
&& 수정 끝 &&
 
이제 레포지토리 git clone을 받고 권한 부여를 해줄건데, 이상하게 catkin_ws/src/ 에 가서 chmod를 하니 계속 cannot find가 떴다..

root@f5f3cb79cdac:~# chmod -R 777 catkin_ws

그래서 위의 명령어로 아예 워크스페이스 자체에 대한 권한부여를 해줬다.
보안상 참 안좋은 방법이지만.. 더 나은 방법을 찾을 때 까지는 이렇게 하자.
다 되었다면 메세지 파일 빌드 한번 다시 해주고 catkin make 해주자

이제 rosbridge에 연결하자.
여기서 두가지 방법을 정리하였다. 대회 환경에 맞는 방법을 택해주자.
 
&& 10/25 수정 &&
오늘 모라이 리허설 가서 연구원님과 얘기한 결과, 멀티플레이에는 램포트를 이용해서 통신하니, 나는 도커를 local과 연결하면 된다고 했다. 그러니까, ip주소를 건드릴 일이 전혀 없다는 것이다. 
우리가 할일은
1.모라이 네트워크 ROS통신 127.0.0.1로 해주기
2. docker 잘 키기.
끝이다.
그러니까 아래의 ip주소 건들이는 거 전부 스킵하고 도커 사용방법과 도커 압축과 해제 방법을 읽어주시면 되겠다.
&& 수정 완료 &&

도커 컨테이너 IP 주소 알아내기

우선 모든 과정을 시작하기 전에 각자 설치한 docker의 컨테이너 ip주소를 알아내야 한다.
사실 docker를 키자마자 ROS_IP와 ROS_MASTER_URI를 뽑아보면 아래와 같이 뜬다.

root@f5f3cb79cdac:~# echo $ROS_IP

root@f5f3cb79cdac:~# echo $ROS_MASTER_URI
http://localhost:11311

현재 ROS의 주소가 local host로 되어있다는 뜻이다.
도커 컨테이너 말고 우분투 local에 차례대로 입력해주자.

ubuntu@seoulnaver007:~$ xhost +local:docker

위 명령어를 입력했을 때, 
non-network local connections being added to access control list 가 뜨면 정상이다.

ubuntu@seoulnaver007:~$ docker start ubuntu

그 다음 위의 명령어를 입력했을 때,
ubuntu 가 뜬다면 잘 된거다.

ubuntu@seoulnaver007:~$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ubuntu

위의 명령어를 입력하면!
컨테이너의 ip주소가 나온다. 
우리 같은 경우에는 172.17.0.2가 나왔다.

1. 로컬로 통신

자 이제는 localhost로 통신을 진행해보자.아래에 하나 더 정리했지만 요 방법이 우리가 대회에서 사용할 방법 되시겠다.
아주간단하다. 모라이 네트워크와 도커의 모든 세팅을 초기상태로 둔다. 그러니까 도커의 ROS MASTER URI = http://localhost:11311로 두고, 모라이에서도 127.0.0.1로 둔 다음 연결해주면 잘 작동한다. 
여기서 집중!
도커에서 rosbridge를 키고 도커에서 코드를 돌리는 것이다. 그러니까 이렇게 했을때 도커로 토픽 잘 들어오는지 확인해야겠지요?
내가 맨 처음 깐 도커에서는 여기서 안돼서.. 도커 지우고 다시 깔았다.. 이거 잘 되는지 꼭 확인해주고… 만약 안된다면 안타깝지만 지우고 다시 깔자…
 

2. 도커의 IP주소로 통신

이번에는 알아낸 컨테이너 IP주소로 통신을 해보자.
모라이 네트워크 세팅에서 127.0.0.1(local)로 되어있는 걸 전부 172.17.0.2로 바꿔줘야 한다. (9090부분은 그냥 둬도 괜찮다. 설명을 원한다면 해주겠지만.. 아무도 궁금해 하지 않을 것을 알고 있다. 하하하)
docker 콘솔에 들어가서 현재 ROS IP와 ROS MASTER URI가 어떻게 되어 있는지 확인해야 한다.

root@f5f3cb79cdac:~# echo $ROS_IP
root@f5f3cb79cdac:~# echo $ROS_MASTER_URI

위의 명령어를 각각 쳐주면 현재 상태를 알 수 있다. 이제 이 ROS ID와 ROS MASTER URI를 바꿔줄거다.
아래 명령어를 차례대로 쳐주면 된다.

root@f5f3cb79cdac:~# export ROS_IP=172.17.0.2
root@f5f3cb79cdac:~# export ROS_MASTER_URI=http://172.17.0.2:11311

그 다음 ROS Bridge를 켜주자.

moari_connect

모라이에서 네트워크 다 disconnect해줬다가 다시 connect해준다.
이제 rostopic list를 실행해주면!

...토픽이 너무 잘 들어오는 걸 확인할 수 있다...
 

docker 사용법 정리

대회에서는 로컬통신을 이용해서 통신을 진행한다. 따라서 나는 로컬로 통신하는 첫번째 방법 사용법을 정리하겠다.

ubuntu@seoulnaver007:~$ start_docker

위의 단축어 명령어로 도커를 실행시켜준다.

non-network local connections being added to access control list
ubuntu
root@f5f3cb79cdac:/#

위와 같이 뜬다면 성공적으로 켜진것이다.
이제 터미네이터를 실행해주자.

root@f5f3cb79cdac:/# terminator

(terminator:49): dbind-WARNING **: 18:21:45.492: Couldn't connect to accessibility bus: Failed to connect to socket /tmp/dbus-1Sh9FHSQOJ: Connection refused

** (terminator:49): WARNING **: 18:21:45.813: Binding '<Control><Alt>a' failed!
Unable to bind hide_window key, another instance/window has it.

터미네이터를 켜주면 위와 같은 warning과 함께 터미네이터 창이 뜰 것이다. 우리가 하려는 일에 아무 지장이 없으니 안심하고 신경을 꺼주면 된다.
이제 rosbridge를 키고 모라이로 넘어가자.

root@f5f3cb79cdac:~# moari_connect

모라이 네트워크와 센서 네트워크 주소를 127.0.0.1로 바꿔주고 전부 disconnect 했다가 다시 connect해주자.
bridge에 client connected가 뜨기 시작했다면 성공적으로 연결 된것이지만, 확인을 위해 rostopic list 한번 해주자.
자 이제 도커에서 VS Code를 켜주자. 아래의 단축어를 입력해주면 VS Code가 열린다. 

root@f5f3cb79cdac:~# morai_vs

이제 작업해주면 된다.
내가 이렇게 잘 정리해뒀지만..!! 잘 되는거 확인했으니, 도커로 하는거 귀찮으니까 다들 연습할때는 걍 local환경에서 코드도 돌리도록 하자...

자 이제 왠만한 세팅은 다 끝났다. 남은 건 아마 대회 직전에 대회에 맞게 하는거..?
열심히 해보자.
화이팅.
 
&& 수정 10.07 &&
.. 도커 세팅 다 끝내고 로컬에서 python코드 돌리려는데 apt에러가 떴다...

WARNING: apt does not have a stable CLI interface. Use with caution in scripts

sudo apt update도 안되고 아무것도 안돼서 진짜 암담했는데... 우분투를 reboot시키니 돌아왔다.
진짜 컴퓨터에 절할 뻔..
&& 수정 끝 &&
 
&& 수정 10.07 2차 &&

아니다. 사실 아직 세팅 안끝난 것 같다...
현재까지 도커에 필요한거 전부 설치해줬고, 도커 컨테이너에서 rosrun이 되는 걸 확인하고 위의 포스트를 마무리 했었다.
그런데, 이게 왠걸.. 로컬 환경에서 rosrun이 안된다..
살려줘...
처음에는 python이 없대서 python깔아주고.. 뭐 yaml 모듈이 없대서 그것도 깔아줬는데.. 갑자기 바로 위에 써져있는 것처럼 apt가 아예 안먹어서 재부팅 해줬다..
재부팅하니 이제 apt는 잘 되고 python도 잘 깔고 yaml도 잘 깔았는데.. 에러가 없어지지를 않는다.. catkin_make랑 source ~도 해줘야 하는거 다 했는데.. 왜 안됨..?
하다못해 ros도 싹 지웠다가 다시 다 깔고 권한부여도 야무지게 다 해줬는데..? 안된다..
도커 깔기 전에 ros깔고 토픽 잘 들어오는지만 확인하고 코드는 안돌려 봤어서 내가 처음부터 잘못한건지, 도커 깔면서 어디서 충돌 난건지는 모르겠다.
사실 지금도 도커로 코드 돌리면 되기는 하지만.. 작업 편의상 로컬이 좋은데.. 왜 안되니..
일단 우리 선배님께 SOS를 외친 상태이다.. 저녁때 봐주시기로 했다…

&& 수정 끝 &&
 
&& 수정 10.07 3차 &&

원인 찾았다! python버전이 안맞았다... 분명 python3가 설치되어있었어서 이게 문제가 될 것이라고 생각하지 않았는데, default가 python2였다...

sudo apt install python-is-python3

위의 명령어로 default를 python3로 맞춰주고, 필요한 파이썬 라이브러리들 차례대로 설치해주니, 잘 작동이 되었다!
이부분은 태초마을 세팅 포스트에 업데이트 해두었다.
 
이제 진짜 세팅 끝!!
&& 수정 끝 &&
 

도커 이미지 압축 및 해제

이번엔 대회 제출을 위한 도커 파일 변환 방법을 정리하겠다.
사실 대회측에서 새로 나눠준 도커 세팅 pdf에 나와있는데, 딱 이부분만 수정이 되어서 여기에 다시 정리하려 한다.
아래의 명령어는 도커 이미지를 tar로 압축해주는 것이다.

 docker export ubuntu > 007.tar

‘ubuntu’ 컨테이너를 이미지 파일로 생성할 때 규칙!!
명령어를 입력한 터미널의 위치에 파일이 생성된다.
해당파일을 구글드라이브를 통해 다운로드링크를 만들어 제출하면 된다.
 
제출한 파일을 다운받아 압축풀어줄 때

docker import 007.tar test

여기서 test는 컨테이너의 이름 되시겠다. 원하는 걸로 하면 된다.

&& 10/25 수정 &&
오늘 리허설을 위해 도커 이미지파일 팀즈에 올려서 가져갔는데.. 파일을 올리는 도중에 깨진건지 모르겠으나, 이미지파일이 깨져서 실행이 불가했다… 잘 준비하면 된다고 하지만.. 혹시 모를 상황을 위해 도커 이미지를 usb에도 담아가고 도커 허브에도 업로드 하는 등, 최대한 할 수 있는 모든 걸 준비해 가려한다.. 후..
&& 수정 완료 &&

 

32기통 도커 실행을 위한 명령어

  1. docker import 007.tar 007
  2. xhost +local:docker
  3. docker run -itd --privileged --network host -e DISPLAY=$DISPLAY --gpus all --name 007 007 /bin/bash
  4. docker start 007
  5. docker attach 007

뭔가 에러가 났다?!?!

docker images //HOST에 다운받은 이미지들 출력

docker ps //실행중인 컨테이너 목록 확인

docker ps -a //전체 컨테이너 목록 확인

docker image rm 007 //도커 단일 이미지 삭제

docker rm 007 //도커 컨테이너 삭제

docker exec -it 007 /bin/bash //실행되고 있던 컨테이너 접속

오늘 클라우드 서버가 제공되어서 클라우드 세팅을 진행하려고 한다.
사실 팀당 서버 하나라서 따로 정리 해둘 필요 없다고 생각했는데... 왠지 이번에도 인스턴스 날려버리면 세팅하는데 또 시간 쓸 것 같아서 해두려고 한다.
 
우선 팀장님이 보내주신 링크로 들어가서 'NICE DCV 2023.0 Client'를 클릭해준다.
나는 처음에는 window에서 진행했는데, 각자 돌리고 싶은 OS에 맞는 걸 찾아서 앱을 다운로드 해준다.
(만약 window에서 할거라면 portable말고 첫번째거로 해주자!!)
왠만한 권한 다 OK해주고 다운을 완료 해주자.

아래는 우분투 환경에서 다시 다운로드 받은거다.

똑같이 링크에서 ubuntu 20.04버전으로 다운 받아주고 다운로드에 들어가서 deb파일을 클릭! 해주면 

아래 첫번째 사진과 같은 화면이 뜨는데 설치를 눌러주자.

다운로드가 완료되면 전체메뉴에 NICE DCV Client라는 앱이 생성이 되었을 것이다. 이걸 실행시켜주면 된다.

제일 첫 로그인 화면은 위의 오른쪽 사진과 같다. 여기서는 각자 받은 ip주소로 하고, 이때 '신뢰하지 않는..' 이라는 아래 사진과 같은 경고창이 영어로 뜨는데 당황하지 말고 그냥 Trust&Connect를 눌러서 실행해주자.

(당황하지 말라는 얘기는 곧.. 내가 당황했다는 뜻이다. 허허)

그 뒤 우분투 로그인은 각자 받은 host 이름과 비밀번호를 넣어주면!
태초마을의 우분투가 보인다. 
진짜 아무것도 없으니 처음부터 세팅해주자...

 

참고로 우분투에 뭐 설치해줄때 요구하는 password는 로그인해줄때 비밀번호와 동일하다. 

다들 눈치챘겠지만 혹시나 해서.. ㅎㅎ

 

우리 서버는 세팅 다 해두었으니, 만약 이걸 보는 우리 팀원이 있다면 바로 작업해도 될 듯 하다.

 

만약 작업하다가 재부팅 해줄 필요가 있으면 Disconnect나 power off가 아니라, 터미널창에 reboot 꼭 기억해주자!!

재부팅할때마다 쫄리지만.. 아직까지 reboot로 문제 생긴적은 없었다. 

 

만약 태초마을이라면?
제일 첫 화면이 22.04로 업데이트 하시겠습니까? 이다.
절대 누르지 말고 잘 대처해주자.
 
이제 home을 들어가보면...
ros도 안깔려있고 VS code도 안깔려 있다..
ROS 설치부터 진행하였다.
 
그렇지만 터미네이터 부터 깔자.

$ sudo apt-get install terminator

다음으로 디스코드를 깔아주자. 
https://discord.com/download

 

Download Discord to Talk, Chat, and Hang Out

Download the best app to communicate over video, voice, or text. Available for Windows, macOS, Linux, iOS, and Android devices.

discord.com

들어가서 Linux버전의 deb파일을 설치해주자.

$ cd Downloads
$ sudo dpkg -i discord-0.0.31.deb

이제 ROS를 설치해주자.
https://wiki.ros.org/noetic/Installation/Ubuntu

 

noetic/Installation/Ubuntu - ROS Wiki

If you rely on these packages, please support OSRF. These packages are built and hosted on infrastructure maintained and paid for by the Open Source Robotics Foundation, a 501(c)(3) non-profit organization. If OSRF were to receive one penny for each downlo

wiki.ros.org

위 링크에서 복붙해주자.
이제 워크스페이스를 만들어 주자.
http://wiki.ros.org/ROS/Tutorials/InstallingandConfiguringROSEnvironment

 

ROS/Tutorials/InstallingandConfiguringROSEnvironment - ROS Wiki

When working with ROS source code, it is often useful to do so in a "workspace". For the following ROS tutorials you will need an area for working on tutorials and creating new ROS stacks and packages. rosws is a tool that provides a uniform interface to v

wiki.ros.org

따라해주자.
위의 설치를 기다리는 동안 VS code도 설치해주자.

$ sudo apt update
$ sudo apt install software-properties-common apt-transport-https wget
$ wget -q https://packages.microsoft.com/keys/microsoft.asc -O- | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main"
$ sudo apt install code
$ code

위를 순서대로 차례차례 해주면 vs code가 실행된다.
 
자, 이제 모라이와 repository를 설치해주자. 설치하는 방법은 전 포스트를 참고해보자.
2023.09.26 - [MACARON/MORAI] - MORAI 초기 세팅

 

MORAI 초기 세팅

서울 버추얼 자율주행 챌린지에 참가하게 되어 오랜만에 MORAI세팅을 진행하고, 정리해보았다. 팀 이름은... 32기통이다... 그래서 우리 톡방 이름이 '32기통 미친 폭주기관차'이다... 3명의 기계와 2

yunji00.tistory.com

오늘 새로 만난 오류들도 수정해서 작성해 두었으니 참고해보면서 하면 좋을 것 같다.
 
그런데... 메세지 파일과 macaron파일을 clone받고 여기서 catkin_make를 하려는데 오류가 났다...
GPT한테 물어보니 다음 해결책을 주었다.

$ sudo apt-get install ros-noetic-serial

... 나 ros패키지 안깔았나 의심이 약간 들어 조금 있다 확인해보려고 한다...
진짜 안깔았으면 바보다...

&& 수정 &&
팀원 말로는 아래 깃허브 catkin_ws/src/에 clone 받아주는거로도 해결이 된다고 한다!!


https://github.com/wjwwood/serial.git

 

GitHub - wjwwood/serial: Cross-platform, Serial Port library written in C++

Cross-platform, Serial Port library written in C++ - GitHub - wjwwood/serial: Cross-platform, Serial Port library written in C++

github.com

clone 받은 다음 아래 명령어를 입력해주자.

$ cd serial/
~/catkin_ws/src/serial$ make

완료되었다.

혹시 모르니 둘다 해두었다… ㅎㅎ
&& 수정 끝 &&
 
여기까지 진행하고 gps대충 달고 들어오나 확인했을 때, 잘 작동한다면 완료가 된 듯 하다. 

&& 10.07 수정 &&

오늘.. 문제가 생겼다. 태초마을 세팅할 때, 토픽이 잘 들어오는지만 확인하고 코드를 돌려보지는 않았다.

그런데 도커 실행해서 rosbridge잘 켜지고 코드도 돌아가는 거 확인하고 슬슬 트랙킹 해보려고 로컬에서 코드 돌려봤는데..!

이게 왠걸..

  File "/usr/lib/python3/dist-packages/yaml/__init__.py", line 399
    class YAMLObject(metaclass=YAMLObjectMetaclass):
                              ^
SyntaxError: invalid syntax

에러가 떴다.. 구글링 해서 파일도 다 설치 해줬는데, 계속 같은 에러가 나서.. 우리 선배님께 SOS를 보내고 같이 들여다본 결과...!

파이썬 버전이 안맞았다.. python3가 설치는 되어있지만 default로 작동하는게 아니었다..!

sudo apt install python-is-python3

위 명령어를 진행한 후, 필요한 파이썬 라이브러리를 설치해주니...!

하하하하하 이제 로컬에서도 코드 잘 작동한다!!

&& 수정 끝 &&

'MACARON5.0 > MORAI 세팅 및 사용' 카테고리의 다른 글

도커 설치 & 사용법  (0) 2023.10.07
MORAI 초기 세팅  (2) 2023.09.26

서울 버추얼 자율주행 챌린지에 참가하게 되어 오랜만에 MORAI세팅을 진행하고, 정리해보았다.

팀 이름은... 32기통이다... 그래서 우리 톡방 이름이 '32기통 미친 폭주기관차'이다...
3명의 기계와 2명의 정통이라나.. 스페이스바 누르면 날아갈 수 있다나...
대회 설명 듣고 나니 선견지명인건가 싶기도 하고...
시작.

모라이 설치부터 실행까지 

먼저 MORAI 설치 파일을 home화면에 압축 풀어주기

$ cd ~/MoraiLauncher Lin
$ chmod +x MORAISim.sh
$ chmod +x MoraiLauncher_Lin.x86_64
$ ./MORAISim.sh

이러면 모라이 시작 화면이 나타난다.
만약 설치를 기다리고 있는데 너무 느리다?
인내해야한다. 여기서 끊으면 돌이킬 수 없다. 모든걸 완전히 지웠다가 다시 까는 수밖에...
이때 외에도 설치하는데에 시간이 좀 드는데... 인내해주자.
설치가 완료되었다면 이제 단축어를 설정해주자

$ gedit ~/.bashrc
//단축어 입력해주자
alias cs='cd ~/catkin_ws/src/'
alias cm='catkin_make'
alias morai='cd ~ && chmod 777 -R MoraiLauncher_Lin && cd MoraiLauncher_Lin && ./MORAISim.sh'
alias morai_connect='roslaunch rosbridge_server rosbridge_websocket.launch'
source /opt/ros/noetic/setup.bash
source ~/catkin_ws/devel/setup.bash
// 저장해주자
$ source ~/.bashrc

이제 메세지 파일을 다운받아주자.

https://github.com/MORAI-Autonomous/MORAI-ROS_morai_msgs

위의 깃허브에 들어가서 다운받아주자.
압축 풀때는 catkin_ws/src에 풀어주고 폴더이름은 morai_msg로 바꿔주자. (사실 이름 안바꿔줘도 될것같다!!)
완료했다면 catkin_make를 해주고 정상적으로 완료가 되도록 해주자.
 
지난번에 모라이 참여했을 때, 우리의 팀장님과 최고의 팀원이 알려줬던걸 정리하도록 하겠다.
만약 내가 패키지를 만드는 입장이다?
아래를 실행해서 package만들어주자

$ catkin_create_pkg macaron_5_SVAC_32 rospy roscpp std_msgs geometry_msgs morai_msgs

만약 다른 사람이 다 만들어둔거 git clone받아온 입장이다?
아래를 실행해서 빌드해주자

$ cd ~/catkin_ws/src/morai_msg/
$ rosmake morai_msgs

이제 튜토리얼 보면서 모라이 가지고 좀 놀아보자.
로그인 직후 초기화면일 때, 다른 package설치해보려고 하지 말자. 어차피 우리는 license없어서 못쓴다.
왼쪽에 lastest version이 우리가 사용하는 것이니 그냥 바로 start버튼을 눌러주자.
 
&& 수정 &&
매번 할때마다 까먹어서 구글링 하는것 같다.. 나에게 슬슬 짜증이 나려고 하니 정리해두려고 한다.
하위 디렉토리 및 파일들 전체에 권한 부여 하는법

$ cd catkin_ws/src/
$ chmod -R 777 macaron_5_SVAC_32

그냥 일반 파일 권한부여하는 법

$ chmod +777 state.py

이제 까먹지 말도록 하자…
&& 수정 끝 &&
 

모라이 네트워크 세팅

이제 모라이에 로그인해보자.
완료되었다면 ROS브릿지를 연결해 주어야 한다.
이부분은 잘 모르니 그냥 아래의 단축어를 사용하도록 하자.

$ morai_connect

여기서 에러나면 topic안들어오니까 꼭 확인하자.
 
&& 10.6 수정 &&
클라우드에 설치하면서 딱 요 부분에서 에러가 생겼다.
RLException: [rosbridge_websocket.launch] is neither a launch file in package [rosbridge_server] nor is [rosbridge_server] a launch file name The traceback for the exception was written to the log file
뭐 이런 에러였는데... 아래의 명령어로 package를 설치해주니 해결이 되었다.

$ sudo apt-get install ros-noetic-rosbridge-suite

해결 완료.
그치만 다른 에러가 생길수도 있으니 예전에 디코에서 팀장님이 보내둔 rosbridge오류 해결 링크도 공유해 두겠당.
https://github.com/RobotWebTools/rosbridge_suite/issues/198

 

Rosbridge only one way on OSX · Issue #198 · RobotWebTools/rosbridge_suite

This issue is more fully described by: http://answers.ros.org/question/221356/rosbridge-only-one-way-on-my-osx/ In a nutshell, I can run the tutorial http://wiki.ros.org/roslibjs/Tutorials/BasicRos...

github.com

&& 수정 끝 &&
 
이제 morai에서 network세팅을 해주자.
Edit -> Network Settings -> Publisher, Subscriber, Service가 disconnect되어 있다면 connect시켜주고, 연결되어있어도 끊었다가 다시 해주자.
이게 완료되면 Cmd Control도 똑같이 해준다.
 
&& 10.6 수정 &&
다시 확인하니, network설정 default가 UDP통신으로 되어있다.

Cmd Control 뿐만 아니라 Publisher, Subscriber, Service 부분도 다 UDP가 Default였다. 이거 싹다 ROS로 바꿔주자.

위의 사진처럼 왼쪽 위에 보이는 톱니바퀴 모양의 Simulator Network로 들어가보면 여기는 또 ROS2로 되어있다. 이부분도 ROS로 바꿔주자.
심심해서 ROS2로 해두고 connect해봤다. 순간 세팅화면에서 벗어나지를 않길래 개쫄렸는데 다행히도 아무일도 일어나지 않았다.
&& 수정 끝 &&
 

센서 세팅

gps, imu, camera는 ROS통신으로, LiDAR는 UDP통신이다. 이점 유의해주자.
센서를 장착해준다.
이제 사진에서 왼쪽 아래에 노란색으로 써있는 Sensor Setting에 들어가서 각 센서별로 연결을 끊었다가 다시 연결해주자.
이때 대회때는 우분투 무선ip주소를 사용해야 하지만, 연습할때는 127.0.0.1(local 통신)을 사용해주도록 하자.
각 센서별로 ROS통신인지 UDP통신인지 확인해주자.

&& 10.7 수정 &&
대회때는 도커에서 코드와 rosbridge를 돌려야 해서 네트워크 세팅부분이 바뀌어야 한다.

이부분은 아래 포스트에 정리해두었다.
비번은 우리 팀원이라면 알것이다. 하하.

2023.10.07 - [MACARON/MORAI] - 도커 설치 & 사용법

 

도커 설치 & 사용법

 

yunji00.tistory.com

&& 수정 끝 &
 
여기까지 완료했다면 rostopic list로 모든 센서가 잘 들어오고 있는지 확인해준다.
잘 들어오는 것 같다면 rostopic echo /[]로 값도 잘 들어오는지 확인해주자.
 
아래는 오늘 imu랑 gps값이 들어오는 걸 확인하고 대충 mapping해준 다음 plot띄워본거다. 아주 이쁘다.

이틀동안 한 5시간동안 한거라 두서가 없다. 오늘은 그만 알아보고 회의한 뒤 다시 다뤄보도록 하자.
 

&&수정&&

10/6 첫 32기통 회의
오늘 클라이드 서버가 제공이 되어 ros설치부터 모라이 연결까지 다 진행하였다.
다음 포스트에서 태초마을 세팅을 참고하자...
2023.10.06 - [MACARON/MORAI] - 클라우드 서버에 처음부터 세팅하기

 

우분투 서버에 모라이을 위한 태초마을 세팅하기

오늘 클라우드 서버가 제공되어서 클라우드 세팅을 진행하려고 한다. 사실 팀당 서버 하나라서 따로 정리 해둘 필요 없다고 생각했는데... 왠지 이번에도 인스턴스 날려버리면 세팅하는데 또 시

yunji00.tistory.com

 

+ Recent posts