본문 바로가기

& 프로그래밍/& ROS

(7)
ROS 서비스 서버 클라이언트 실행하기 어제 ROS 메시지 통신을 구현해보았다. 유튜브 구독을 예로 들면서 쉽게 접근했는데, 다들 이해가 되었길.... 이번에는 서비스 통신을 구현해보려 한다. 메시지통신을 이해했다면 구조상 크게 달라지는 부분이 없으니 이번에도 어렵지 않게 배울 수 있을 것이다 서비스(service) 서비스 메시지통신은 서비스를 요청(request)하는 서비스 고객(service client)와 응답(response)를 담당하는 서비스 서버간에 양방향 통신을 의미한다 서비스서버(service server) 서비스서버는 요청을 입력받고 응답해주는 형태로, 서비스 메시지 통신의 서버역할을 한다. 요청과 응답은 모두 메시지로 되어 있으며, 서비스서버는 정해진 명령을 받아 수행하는 노드에 사용된다 서비스클라이언트(service cli..
ROS 메시지 통신 이해하기 ROS에서 사용되는 통신 시스템은 메시지(msg), 액션(action), 서비스(svc) 크게 3가지로 이해할 수 있다 이중에서 오늘은 메시지통신이 실제로 어떻게 구현되는지 실습과 함께 이해해보려고 한다 메시지통신을 이해하기 전 우선 관련 용어를 이해해보자 메시지(message) 노드와 노드가 서로 데이터를 주고 받을때 사용되는 것이 바로 메시지이다. 메시지는 int, float, point, boolean과 같은 변수 형태를 띄고 있으며, 단방향 메시지 송수신 방식의 토픽(topic)과 양방향 메시지 요청(request)/응답(response) 방식의 서비스를 이용한다 토픽(topic) 토픽은 단어 뜻 그대로 주제, 이야깃거리를 의미한다. 퍼블리셔(publisher)와 서브스크라이버(subscriber..
ROS 기본용어 정리 ROS 프로그래밍을 공부하면서 기본적으로 알아야하는 용어들을 정리한다. 아마 직접 실습을 해봐야 이해가 되는 용어들도 존재할테니.... 너무 완벽하게 이해하려 하지 않아도 된다. 어차피 하면서 배우니까~ ROS 로봇의 응용프로그램을 개발하기 위한 운영체제와 같은 로봇 소프트웨어 플랫폼으로서 필요한 하드웨어 추상화, 디바이스 제어, 로보틱스에서 사용되는 센싱, 인식, 지도 맵핑 등의 기능을 구현하며, 프로세스간 메세지 파싱, 패키지 관리등 다양한 개발 및 디버깅 도구를 제공한다 마스터 노드와 노드 사이의 연결과 메세지 통신을 위한 네임 서버와 같은 역할을 한다. roscore가 실행명령어이며, 마스터를 실행하면 각 노드의 이름을 등록하고 필요에 따라 정보를 받을 수 있다. 즉, 마스터가 없이는 노드 간의 ..
ROS 개발환경 구축하기(melodic설치) 지난번에 ros시스템으로 kinetic을 설치하는 방법을 알아보았다. ROS 개발환경 구축하기(우분투/ROS설치) ROS가 지원하는 운영체제는 다양하지만, 공식적으로 지원하는 프로그램은 우분투(Ubuntu)이다. 따라서 우분투를 설치해서 개발환경을 구축해놓을 것이다. 1. 본인 컴퓨터의 운영체제에 맞게 우분 en-percent.tistory.com 이번에는 같은 맥락인 melodic을 설치하는 방법을 알아보려고 한다. ROS 홈페이지에서 알려주는 방식대로 진행할거다. 1. 설치 컴퓨터에 ros관련 패키지를 설치할 수 있도록 설정을 승인해준다 sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt..
ROS 활용하기[Manipulator] 오늘은 매니퓰레이터(Manipulator)에 대해 학습했다. 로봇의 일종으로 이해할 수 있는데, 내 나름대로 관절로봇으로 이해했다. 로봇이 가진 관절의 특징을 구분지어서 여러가지 매니퓰레이터로 나눌 수 있는데 아래 사진처럼 크게 6가지 정도가 나온다 1. 원통형(cylindrical) - 원통으로 생긴 link를 기준으로 수직,수평으로 물체를 이동시킬 수 있는 구조인데, 무거운 물체나 작업영역이 넓은 곳에서 주로 사용된다. 일상에서는 타워크레인이 대표적인 예라고 할 수 있을 것 같다 2. 직교형(Cartesian) - 평면적으로 물체이동에 유리하고 세밀하고, 작업속도가 빠른 구조로, 항만에서 컨테이너를 옮기는 크레인, 실내 작업장에서 쓰이는 크레인, 최근에는 3D프린터가 이 직교형 디자인을 가지고 있다...
ROS 개발환경 구축하기(우분투/ROS설치) ROS가 지원하는 운영체제는 다양하지만, 공식적으로 지원하는 프로그램은 우분투(Ubuntu)이다. 따라서 우분투를 설치해서 개발환경을 구축해놓을 것이다. 1. 본인 컴퓨터의 운영체제에 맞게 우분투를 설치한다. - intel 맥os 같은 경우, 부트캠프를 활용해서 파티션을 분할해서 우분투를 설치하면되고, 윈도우 컴퓨터에 경우 '윈도우+r'을 눌러 diskmgmt.msc에 접속해서 파티션을 분할해주면 된다. [운영체제별 우분투 설치하기] - 맥 os : http://wiki.ros.org/kinetic/Installation/OSX/Homebrew/Source - 윈도우 : http://wiki.ros.org/hydro/Installation/Windows 2. ROS설치하기 우선 ROS Kinetic을 설..
내가 ROS를 배우는 이유 오늘부터 ROS(Robot Operating System) 교육과정이 시작되었다. 지난주까지 라즈베리파이를 이용해서 다양한 임베디드 시스템을 개발해봤는데, 나름 재미있더만~ 내가 로봇프로그래밍(이하 ROS)을 배우는 이유는 여러가지가 있다 1. 교육과정 일환 - 내가 참여하고 있는 교육과정에 핵심은 '자율주행'이다. 즉, 자율주행과 연관된 시스템을 모두 배우는 과정이라서 ROS가 필수로 반영되어있다. 2. 단순히 로봇을 만들기 위한 공부가 아니다 - ROS는 이름을 그대로 해석하면 로봇을 작동시키기위한 운영체제가 맞지만, 로봇의 범주가 엄청나게 넓다는것을 먼저 이해해야 한다. IoT시스템, 무인배송드론, 서빙로봇 등 실생활에서 정말 많은 곳에서 ROS가 사용되고 있다. 또한 ROS 프로그램은 정형화가 되..