[아빠의 글]
굳이 윈도우 리눅스 환경에 GUI가 필요한 이유가 ROS2 때문이었다. ROS는 Robot Operating System 를 뜻하는데, 여기서 OS라는것은 우리가 흔히 생각하는 그런 OS라기보다는, 상위의 어플케이션 - 여기서는 강아지 로봇이라든지, 그러한 로봇이 될수도 있다 - 을 만들기 쉽게 해주는 플랫폼이라고 생각하면 쉽다 (마치 현대가 ccOS - Connected Car Operating System 라고 부르는 것처럼 말이다)
ROS와 ROS2는 아키텍쳐가 많이 바뀌었고 현재는 대부분 ROS2 기준으로 새로운 프로젝트들을 진행하는것 같다. ROS2는 윈도우 바이너리도 있지만 WSL 의 Ubuntu에서 매우 잘 돌아가기 때문에 윈도우 사용자는 WSL을 이용해 ROS2를 설치한다.
현재 ROS2의 최신 버전은 jazzy이고 Ubuntu24.04를 Tier1 설치환경으로 잡아서 가이드를 하고 있다. 윈도우 WSL상의 Ubuntu 24.04라고 하더라도 공식 ROS2 가이드 문서와 전혀 다르지 않게 작업을 진행하면 된다
https://docs.ros.org/en/jazzy/Installation/Ubuntu-Install-Debs.html
Ubuntu (deb packages) — ROS 2 Documentation: Jazzy documentation
© Copyright 2025, Open Robotics.
docs.ros.org
작업을 크게 나눠보자면
- 로케일 설정등의 기본적인 우분투 설정. 가이드 문서에는 en_US.UTF-8 로 locale을 만들었지만 wsl로 우분투를 설치한후 ko_KR.UTF-8로 locale을 설정하면 된다
- ROS2용 repository를 설정하는 부분. repo를 더하고 GPG key 등을 설정한다. 가이드 문서의 커맨드라인을 복붙하며 진행하면 큰 문제 없이 진행이 가능하다
- ros-jazzy-desktop 패키지를 설치하는 단계. 시간이 많이 걸린다 (sudo apt install ros-jazzy-desktop)
- .profile등에 환경을 추가하는 단계. 매번 source /opt/ros/jazzy/setup.bash 를 입력하기 귀찮으니 profile에 설정하는게 편하다.
- Test 단계. talker와 listener를 실행해서 잘 주고 잘 받는지 테스트해보면 된다.
추가적으로 gazebo를 설치해주면 좋은데, 문서(https://gazebosim.org/docs/harmonic/ros_installation/)를 보면 뭔가 설치조합이 복잡하다고 하는데 잘 조합한 패키지를 제공해놨다는 자랑이고 아래의 명령어를 입력해 설치해주면 된다 ( source /opt/ros/jazzy/setup.bash 를 하면 ${ROS_DISTRO} 같이 설정 되기 때문에 수정없이 저대로 입력해주면 된다)
sudo apt-get install ros-${ROS_DISTRO}-ros-gz
마지막으로 gz sim 을 입력하면 WSLg 상에서 Gazebo가 잘 실행 된다.
Gazebo 설정상 몇가지 팁이 있는데,
- 한글화가 잘 안되어 있어서 LANG이 한글이면 몇몇 버튼이 깨진다. LANG은 en_US.UTF-8 로 바꿔준다.
- 렌더러가 기본이 ORGE2인데, 내 WSLg 환경은 vGPU 가속이 되지 않아 지원하지 않아 에러 메시지 출력이 많다. --render-engine ogre 옵션을 통해 렌더러를 orgre 1으로 바꿀수 있다. (vGPU가 활성화되어서 에러가 발생하지 않는다면 굳이 이 작업을 할 필요가 없다)
- 역시 vGPU를 지원하지 않아 Dropped Escape call with ulEscapeCode : 0x03007703 에러 메시지가 출련된다. 해당 에러메시지를 거르기 위해 2>&1 | grep -Ev '(0x03007703)$' >&2 형태로 에러메시지를 필터링해주면 된다.
결과적으로 나는 gazebo라는 이름으로 명령어를 다음과 같이 alias 해서 사용하고 있다
alias gazebo="LANG=en_US.UTF8 gz sim --render-engine ogre 2>&1 | grep -Ev '(0x03007703)$' >&2"
환경 설정을 끝내고 gazebo 튜터리얼을 보면서 조금씩 ROS와 gazebo를 공부하고 있다. 작년에는 욕심을 내서 급하게 진행하려고 했는데 올해는 차근히, 그러나 정확하고 꼼꼼하게 진행을 하려고 한다. (조금씩 보고 있는 유튜브 링크 - https://www.youtube.com/watch?v=oHtQYPDGk3Y)
시뮬레이션을 돌려보고 싶으면 gazebo 실행후 ackermann_steering을 선택해 로딩하고
다른 터미널에서 topic을 방출하면 된다
gz topic -t "/model/vehicle_blue/cmd_vel" -m gz.msgs.Twist -p "linear: {x: 4.0}"
( play 버튼을 누르면 시물레이션이 실행되는데 토픽을 방출하면 자동차가 움직이다 gz topic -l을 입력하면 사용 가능한 토픽 리스트가 출력된다)
'개발 이야기' 카테고리의 다른 글
Docker Desktop 대신 WSL (0) | 2025.02.18 |
---|---|
50+ 앱 개발 도전하기 (3) | 2024.09.01 |