LiDAR 센서를 Gazebo
에서 plugin
으로 구현해서 시뮬레이션 할때, ray
혹은 gpu_ray
를 사용한다.
로컬 컴퓨터에는 모두 잘 세팅이 되어있었는데, docker에 환경을 꾸리려다보니 자꾸 gpu_ray
만 사용하면 segmentation fault
가 발생하면서 시뮬레이션이 터졌다.
gpu_ray
는 renderer를 활용한다고 어디서 줏어 들어서 처음에는 NVIDIA 드라피버나 GPU 사용 설정, OpenGL 등이 문제라고 생각했는데…
결론은 Gazebo
버전이 너무 낮아서 안되었던 것 같다…
해당 포스팅에서는 다음에 대해 설명하고자 한다.
Gazebo
버전 업그레이드… (ft. gpu_ray segmentation fault 해결)Gazebo
에서 gpu_ray
플러그인 사용 시, segmenation fault 에러 발생GDB
로 backtrace 해보니 해당 부분에서 에러 발생 gazebo::sensors::GpuRaySensor::UpdateImpl(bool) ()
gpu_ray
의 소스 코드를 직접 들여다 보았으나 그냥 CPU 버전의 ray
와 큰 차이 못 느낌…Gazebo
버전 확인은 터미널에서 gzclient
혹은 gzserver
입력후 tab으로 자동 완성해보면 알수있다. 기본으로 ROS-melodic
에 깔리는 버전은 9.0.0인데 9.19.0 이상이 되어야 gpu_ray
사용 시에 문제가 없었다.$ sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list'
$ cat /etc/apt/sources.list.d/gazebo-stable.list
$ wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get upgrade