시뮬레이션과 Gazebo
로봇이 없는데 로봇 코드를 시험할 수 있을까?
화면을 누르면 다음 장으로 넘어갑니다
왜 시뮬레이션
부딪혀도 고장 나지 않습니다
실제 로봇은 비싸고, 코드가 틀리면 벽에 부딪혀 부서집니다. 시뮬레이션(simulation)은 컴퓨터 안의 가상 세계에서 로봇을 굴려 보는 일입니다. 부딪혀도 버튼 하나로 처음부터 다시 하면 됩니다.
14~15강은 로봇 없이 노트북 한 대로 따라 합니다.
Gazebo
물리와 센서를 흉내 내는 세계
Gazebo는 로봇용 시뮬레이터입니다. 중력, 마찰, 충돌을 계산해 바퀴를 굴리고, 라이다·카메라·IMU 같은 센서 값도 만들어 냅니다. 그림은 이 강에서 쓸 TurtleBot3 월드입니다.
같은 코드
ROS 쪽에서는 똑같이 보입니다
내 노드는 /cmd_vel로 속도를 보내고 /scan으로 라이다 값을 받을 뿐입니다. 토픽 이름과 타입이 같으면, 반대편이 시뮬레이터인지 실제 로봇인지 알 필요가 없습니다(3강 4편).
그래서 시뮬레이션에서 다듬은 코드를 실제 로봇에 거의 그대로 옮길 수 있습니다.
이름 정리
Gazebo는 두 갈래입니다
예전 Gazebo는 이제 Gazebo Classic이라고 부르고, 2025년 1월에 지원이 끝났습니다. 새 Gazebo는 판마다 알파벳 순서의 이름이 붙습니다. ROS 2 Jazzy와 짝을 이루는 판은 Gazebo Harmonic입니다.
자료를 찾을 때 Classic용(gazebo_ros)인지 새 Gazebo용(ros_gz)인지 먼저 봅니다.
주의
Harmonic만 씁니다
Jazzy용 ROS 연결 패키지는 Harmonic에 맞춰 만들어져 있습니다. Classic(gazebo), gz-ionic, gz-jetty는 설치하지 않습니다. 여러 판이 섞이면 명령과 라이브러리가 엉켜 원인을 찾기 어렵습니다.
설치 명령은 다음 편에서 한 단계씩 따라 합니다.
느릴 때
그래픽 카드가 없으면 느릴 수 있습니다
Gazebo는 화면과 라이다 계산에 그래픽 카드(GPU)를 씁니다. GPU 가속이 없는 VM이나 WSL2에서는 매우 느리거나 창이 아예 뜨지 않을 수 있습니다. 창 아래쪽의 실시간 비율(RTF, Real Time Factor)이 1보다 많이 작으면 느리게 돌고 있는 것입니다.
막대의 값은 예시입니다. 시뮬레이션 시간이 느리게 가는 문제는 7편에서 다시 봅니다.
다음 편