본문 바로가기

IT/ROS

[ROS] 7. ROS + GAZEBO 에러 해결

반응형

☞ 메인보드 : Jetson Nano Developer Kit

운영 체제 : Ubuntu 18.04 - JetPack 4.3

☞ ROS 버전 : Melodic

 

 

 

 

<이전 포스트>

 

6. ROS + OPENCV (cv_bridge) 실시간 스트리밍

메인보드 : Jetson Nano Developer Kit 이미지 파일 버전 : JetPack 4.3 ROS 버전 : Ubuntu 18.04 LTS bionic > ROS Melodic 언어 : C++ <이전 포스트> 5. 예제를 통한 ROS 실행 : 퍼블리셔-서브스크라이버 메세지..

95mkr.tistory.com

 

 

 


목차

1. [Err][REST.cc:205] Error in REST request

2. [Err] [ClientConfig.cc:270] Parser error [3]

3. [Err] [Server.cc:238] Could not open file[empty.world]

 

 

 


 

 

 

 

저번 시간에는 cv_bridge가 잘 작동하는지 확인해보았고, 이번 포스트에는 가제보를 실행하고 겪었던 에러들의 해결법을 공유하고자 한다.

 

나는 ROS를 설치할 때 DESKTOP-FULL 버전을 다운로드하였고 가제보와 그 의존성 빌드 패키지들 또한 함께 설치하였다. 동아리 친구는 같은 버전을 받았는데 왜 에러 뜨고 가제보가 안 켜지냐 해서 출장기사를 하고 왔다. (양념갈비를 얻어먹었다.)

 

가제보를 실행할 때 상세정보를 보고 싶다면

 

gazebo --verbose

 

위 명령어를 입력하자. 여러 가지 에러들이 나온다고 하는데 그중에 내가 본 것들만 나열해보겠다.

 

 

 

 

 

[Err][REST.cc:205] Error in REST request

 

 

REST - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 대한민국의 힙합 음악가에 대해서는 R-EST 문서를 참조하십시오. REST(Representational State Transfer)는 월드 와이드 웹과 같은 분산 하�

ko.wikipedia.org

위의 글을 읽어봐도 너무 어려워 무슨 말인지 모르겠으나 "네트워크 요청에서 에러가 났다" 정도로 에러를 해석할 수 있다.

이는 입력된 url이 잘못 설정되어서 그렇다.

 

 

터미널 창을 실행하여 입력하자.

 

gedit .ignition/fuel/config.yaml

 

yaml 파일이 열리면 url에 있는 https://api.ignitionfuel.org  https://api.ignitionrobotics.org로 변경한다.

 

 

 

입력이 끝났으면 저장하고 가제보를 실행하면 에러가 나오지 않게 된다.

 

 

 


[Err] [ClientConfig.cc:270] Parser error [3]

 

parser는 컴파일러라고 생각하면 된다. parser error라는 것은 문법 오류와도 같다.

위 yaml 파일에서 들여 쓰기나 기호를 잘 못썼는지 확인하자. 그것만으로도 해결이 된다.

 

 


[Err] [Server.cc:238] Could not open file[empty.world]

 

위 에러는 empty.world 파일이 가제보 디렉터리에 없는 경우 발생한다.

desktop-full 버전을 설치했는데 이상하게 worlds 디렉터리가 없는 경우가 있다.

 

일단 위 에러가 발생하면 따라 해 보자.

 


 

① /usr/share 디렉터리에서 gazebo-9를 찾는다. (필자의 가제보는 9 버전이기에 gazebo-9 디렉터리가 있었다.)

 

② gazebo-9 디렉터리의 내용물 중 worlds 폴더가 있다면

 


 

 

sudo gedit ~/.bashrc

 

 

.bashrc 파일에 

 

 

export GAZEBO_RESOURCE_PATH=/usr/share/gazebo-9/worlds:/usr/share/gazebo_models:${GAZEBO_RESOURCE_PATH}
source ~/.bashrc

 

 

위 내용을 추가하여 worlds 디렉터리를 직접 입력해준다. (다른 버전을 사용한다면 중간에 있는 gazebo-9에서 본인에게 맞는 버전으로 바꾸어 주면 된다.)  만약 본인이 어떤 버전을 쓰고 있는지 모른다면 pkg-config를 이용하여 찾아주자.

 

 

pkg-config --modversion gazebo

 

 

[/usr/share/gazebo-9/worlds로 지정해주었는데도 에러가 나온다면 worlds 디렉터리에 있는 empty.world를 지정해주자.]

 

 

그리고 만약 worlds 디렉터리가 /usr/share/gazebo-9 디렉터리가 존재하지 않는다면 파일을 다운로드해야 한다.

 

 

git clone https://github.com/arpg/Gazebo

 

 

위처럼 가제보를 다운로드한다.

그러고 나서 내용을 그대로 /usr/share/gazebo-9 디렉터리에 옮겨주자.

 

 

sudo mv -r /usr/share/gazebo-9 ~/Gazebo/*

 

 

그리고 .bashrc 에 저장하자.

 

 

sudo gedit ~/.bashrc
export GAZEBO_RESOURCE_PATH=/usr/share/gazebo-9/worlds:/usr/share/gazebo_models:${GAZEBO_RESOURCE_PATH}

 

 

저장하고 나서 .bashrc 파일을 업데이트해주면 끝

 

 

source ~/.bashrc

 

 

위 에러 이외에 에러가 발생한다면 아직 만나보지 못하여 잘 모르겠다.

ros를 설치하면서 .bashrc 파일에 ROS_HOSTNAME 환경변수를 지정해주는데 이때 본인의 ip 주소를 제대로 적어주었는지 확인해주길 바란다.

(ip 확인 -> 터미널에서 ifconfig 입력)

 

 

 

 

 

반응형