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

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

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

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

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

—-

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

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

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

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

설치하는 방법은 생략하고

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


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

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

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

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

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

이 정도 이유일 것 같아요!


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

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

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


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

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

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

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


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

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

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

간단히 설명드리면

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

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

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

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

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


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

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

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

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

시뮬레이션이니깐요.


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

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

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

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

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

건전한 스팀잇 생활을 위한 포스팅 정리

요즘 스팀잇을 하는 시간이 무척 많아졌습니다.

다니님의 스팀잇 생활을 보고

저도 지치지 않고 지속 가능한 스팀잇 활동을 위해 정리를 해야겠다 생각했습니다.

제가 스팀잇을 하는 목적은 아래 3가지입니다.

  • 평소 내 생각, 느낀점, 배운것 기록
  • 개발 관련 포스팅: 포트폴리오 및 추후 활용할 수 있도록 기록
    (내가 개발한 것 소개, 문제 발생, 코드 간단한 설명, 동작 원리 등등)
  • 내 생각도 정리하며 코인을 얻음!!

글을 작성할 수 있는 시간

  • 평소에 짬짬히 작업하는 것을 기록한다.
  • 취미를 하면서 워드프레스에 기록한다.
  • 에버노트에 기록한다.

매일 저녁 10시- 11시 이후, 글을 작성한 것을 정리해서 포스팅한다.

하루 글 1개 작성


내 포스팅 내용 및 계획

개발 관련 포스팅

  • 로봇 개발 관련 포스팅
    • 나만의 로봇 프로젝트: 오픈소스를 활용한 프로젝트, 나만의 로봇 갖기
  • 스팀잇 개발 관련 포스팅
    • 스팀잇 알림 서비스: python-steem 활용, telegram 활용
    • 워드프레스 플러그인 개발기: 개발하면서 기억할만한 것들, 만났던 문제들
  • 게임 프로젝트
    • 비밀 프로젝트 – 계획중..
  • 공부 포스팅
    • 코딩 공부

일기 포스팅

  • 일상 생활
  • 영화
  • 이력서 작성을 위한 포트폴리오
  • 영어 공부를 위한 영어 포스팅

정리를 해보니..

스팀잇 자체에 관심이 많아져서

스팀잇 관련 개발을 하게되었습니다.

사람의 시간은 한정되어있는데..

혼자서 다 못하는데 너무 많은 것을 시도하는 것 같다.

우선 순위를 정해서 해봐야 겠습니다.

 


개발 관련 포스팅 계획

  • 스팀잇 관련 개발 중에 만난 문제점 및 코드 공개로 끝을 낸다.
  • 워드프레스 플러그인의 경우 조금씩 공부할 예정. 내가 원하는 정도를 만들 때까지
  • 현재까지 개발한 것으로 포트폴리오 페이지 만들기 및 포스팅
  • 로봇 개발을 시작한다. (공개된 라이브러리 공부 – 음성 인식, 물체 인식, SLAM순)

일기

  • 평소 기록을 하고 잘 정리된 글은 포스팅한다.

읽어주셔서 감사합니다!

로봇 OS, 미들웨어, ROS에 대해 알아보자

ROS에 대해 소개하고자 합니다.

ROS 공식 홈페이지

ROS는 아래와 같습니다.

The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it’s all open source. – https://github.com/ros2/ros2/wiki


ROS는 로봇 분야에서는 많이 사용하고 있는 OS, Tool입니다.

책을 보면 자세히 알 수 있지만,

실제로 ROS 위에서 개발하는 사람의 입장에서

ROS를 설명해보고 싶습니다.

먼저 ROS에 장점들에 대해 적어봤습니다.

  • ROS는 로봇 어플리케이션 개발을 도와주는 소프트웨어 라이브러리, 툴의 집합체입니다. Android로 예를 들면, Android SDK, Android Studio라고 볼 수 있겠죠.
  • ROS는 센서 드라이버와 같이 Low-level부터 최신 기술들의 알고리즘까지 모두 지원을 합니다.
  • 그리고 오픈소스입니다. 무료입니다.
  • 시뮬레이션에서 개발한 알고리즘을 실제 로봇에 손쉽게 적용할 수 있습니다.
  • 하드웨어에 대한 의존성이 적습니다.

예를 들어

저는 B사에서 만든 로봇을 사용하고 있었습니다.

저는 이 로봇에 네비게이션 S/W를 개발했는데요.

하지만 가격 문제로, 좀 더 저렴한 로봇을 사고싶습니다.

그래서 C사 로봇을 사용하려고 합니다.

보통의 경우, C사 로봇을 사용하기위해 추가적인 개발이 많이 필요합니다.

즉, 하드웨어 의존성이 있다는거죠.

하드웨어 의존성을 ROS가 해결해줍니다.

ros robots에 대한 이미지 검색결과


ROS는 센서가 내부적으로 어떻게 동작하는지, CAN통신, UART가 뭔지 몰라도

그 센서를 활용할 수 있게 해주며, 알고리즘에 집중하게 해줍니다.

예를 들어

  • 제가 어떤 카메라를 사용하던지 간에 RGB 이미지만 가져올 수 있으면 됩니다.
  • 로봇의 Base는 제가 어떤 걸 쓰던지 간에, 로봇의 위치와 움직이라고 명령할 때 움직이기만 하면 됩니다.

ROS는 로봇 계의 안드로이드입니다.

우리가 LG, Samsung, 어떤 폰을 쓰더라도, 우리는 모두 다 카톡을 할 수 있고, 카메라 앱, 게임을 할 수 있습니다.

굳이 특정 스마트폰을 위한 게임이 아니라 안드로이드용으로 만들면 모든 안드로이드폰에서 활용할 수 있는거죠.

개발자가 스마트폰의 카메라를 활용하는 기능을 개발한다고 해서

스마트폰마다 달려있는 카메라에 대해 공부할 필요가 없습니다.


예전에 피쳐폰을 사용할 때는, 그 폰을 위한 게임, 어플들을 개발해야했었고

개인이 개발하기 어려웠습니다.

Android, iOS와 같은 미들웨어 OS가 생기면서 하드웨어 의존성을 없애줬죠!

로봇도 비슷한 방향으로 가고있다고 생각합니다.

읽어주셔서 감사합니다.


ROS 2는 ROS와 무엇이 다른가?