ROS와 Gazebo를 이용한 시뮬레이션 #1

in kr-dev •  2 years ago  (edited)

안녕하세요. 제이콥입니다.

오랜만에 로봇 관련으로 글을 써보려고 합니다.

제가 잘못된 정보를 적었거나 실수한게 있다면 알려주세요!

ROS가 무엇인가?에 대해 적어보았는데 궁금하시면 읽어보세요.


다시 한 번 ROS를 간단히 설명하자면

스마트폰 OS로 안드로이드가 있는 것과 같이, ROS는 로봇의 OS입니다.

정확히는 ROS는 메타 OS 라고 하며, 리눅스, 윈도우, 맥 등의 OS 위에 올라갑니다.

오늘은 로봇 시뮬레이션에 대해 설명하고자 합니다.

설치하는 방법은 생략하고

왜 시뮬레이션이 필요하고 어떻게 돌아가는지 보여드릴게요


우리가 잘 아는 시뮬레이션이 있습니다.

아래의 Zoo 타이쿤이죠! 우리는 이제 로봇을 위해 환경을 만들꺼에요!

타이쿤을에 대한 이미지 검색결과

로봇 프로그래밍에서 시뮬레이션이 왜 필요할까요?

  • 실제 로봇으로는 반복적인 테스트하기 어렵다.
  • 실제 로봇으로 하다가 로봇이 오동작하여 고장날 수 있다.
  • 여러 변수를 제거하고 시뮬레이션을 통해 테스트를 해볼 수 있다.
  • 자리에 앉아서 편하게 파라미터를 바꿔본다.
이 정도 이유일 것 같아요!

Gazebo를 통한 시뮬레이션을 보여드리려고 합니다.

Gazebo를 통해 원하는 환경을 만들 수 있으며,

로봇 또한 원하는대로 만들고 제어해 볼 수 있습니다.


먼저 Gazebo에서 환경을 만든 것을 보여드리겠습니다.

간단하게 환경을 만들어 봤습니다.

저는 기존의 지어진 집을 가져온거지만, 원한다면 자신이 만들 수 있습니다.

그리고 3D모델만 있다면 어떤 모델이든지 Gazebo로 가져올 수 있습니다.


다음은 방금 만든 환경에서 로봇을 불러보겠습니다.

Gazebo의 로봇을 불러오고 동작하기 위해서는 몇 가지 파일이 필요한데

  • 로봇의 3D 모델
  • 로봇에 부착되어 있는 센서들의 실제 동작 명시
  • 로봇의 컨트롤러

간단히 설명드리면

첫 번째, 로봇의 3D 모델은 Gazebo에 올려놓기 위한 것입니다.

두 번째, 로봇에 부착되어 있는 센서들의 실제 동작 명시

단순히 보여지는 센서들이 어떻게 동작해야하는지 정의하는 것입니다.

세 번째, 로봇의 컨트롤러는 로봇의 센서들을 실제로 제어하는 모듈이죠.

이렇게 3개가 준비가 되고, Gazebo와 연결을 하면 아래와 같은 동작을 할 수 있습니다.


위의 영상에서 로봇이 이동을 하고 있고, 로봇이 보고 있는 영상을 띄워놨습니다.

파란색으로 되어있는 영역이 Lidar로 주변 환경을 감지하고 있는 것입니다.

여기서 두 번째의 동작 명시를 설정을 함으로써

Lidar의 감지 거리를 조정할 수 도 있고, 카메라의 해상도도 조정가능합니다.

시뮬레이션이니깐요.


여기까지는 시뮬레이션을 위한 준비입니다.

위의 동작은 로봇을 키보드로 조작을 한 것입니다.

추후 이 로봇에게 주변 환경을 랜덤으로 돌아다니도록 한다거나

장애물 회피를 하는 알고리즘 등을 적용해 볼 수 있습니다.

감사합니다! 궁금한게 있다면 마음껏 물어보세요!

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

스스로 홍보하는 프로젝트에서 나왔습니다.
오늘도 좋은글 잘 읽었습니다.
오늘도 여러분들의 꾸준한 포스팅을 응원합니다.

ROS라... 솔직히 이 쪽에는 문외한이라 ㅠㅠ

로봇의 OS는 ROS 이거 하나만 건지고 갑니다 !!

읽어주셔서 감사합니다!

로봇의 OS는 ROS

시뮬레이션은 실제 로봇에서 하기 힘든 것들을 할 수 있도록 도와줍니다.

gazebo 환경에 띄우는 로봇모델만 해도 상당한 기술이 들어가 있을텐데 시뮬레이션까지 할 수 있다니 멋진 환경입니다.
그래도 로봇 관련해서는 실제와 많이 다를 것 같습니다.
특히 마찰력이 중요한 환경 같은데서는요.

음 중력도 있고 무게중심도 있고
실제 물리엔진이 적용이됩니다.
시뮬레이션에서는 알고리즘이 잘 돌아가는지 확인할 수 있고 어느정도 테스트를 하는데 도움을 받습니다.

시간을 조금 아껴주는 역할?

물론 실제에서도 예상치못한 많은 문제가 발생하기때문에 실제실험에서도 테스트를 많이 해야합니다.

읽어주셔서 감사합니다. ㅎㅎ

새해 복많이 받으세요!!