sudo apt install software-properties-commonsudo add-apt-repository universesudo apt update && sudo apt install curl -ysudo curl -sSL https://raw.
개발이 진행될 워크스페이스 생성후 빌드빌드가 완료되면 test_ws 폴더에 src폴더를 제외한 build, install, log폴더가 생성!bashrc 파일 맨뒤에 저장 후 다시 터미널을 껏다 키면 이제 터미널에서 번거롭게 ros를 실행할 필요 없이 자동으로 실행되며
노드(node)는 ROS에서 실행되는 최소단위의 프로세스이다. 즉, 하나의 실행 가능한 프로그램이라고 생각하면 된다.ROS에서는 하나의 목적에 하나의 노드를 작성하길 권하는데, 예를 들면 하나의 로봇시스템에는 모터구동, 센서 드라이브, 센서데이터를 이용한 변환, 네비게
토픽(Topic) 토픽(Topic)은 정보를 송신하는 와 정보를 수신하는 가 토픽 메시지 형태로 정보를 송수신하는 것이다. 첫번째 그림에서 Node A - Node B처럼 비동기식 단방향 메시지 송수신 방식으로 msg 메시지 형태의 메시지를 발행하는 Publisher
서비스는 메시지 통신은 서비스를 요청하는 서비스 클라이언트(service client)와 서비스 응답(response)을 담당하는 서비스 서버(service server)간의 동기식 양방향 서비스 메시지 통신을 말한다.결국 서비스는 특정 요청을 하는 클라이언트 단과 요
액션(Acion) 메시지 통신은 요청 처리 후 응답까지 오랜 시간이 걸리고 중간 결괏값이 필요한 경우에 사용되는 메시지 통신 방식이다. 이는 서비스와 많이 비슷한데 요청과 응답에 해당하는 목표(goal)와 결과(result)가 있다. 여기서 피드백(feedback)이
지금까지 강좌에서 다루었던 토픽, 서비스, 액션은 ROS의 중요한 컨셉이자 앞으로 다룰 ROS프로그래밍에 있어서 매우 중요한 부분이기에 다시 한번 비교를 하겠다.아래 표는 토픽, 서비스, 액션에 사용되는 msg, srv, action 인터페이스를 비교한 내용이다. 모든
파라미터(Parameter)는 아래 그림과 같이 각 노드가 가진 Parameter Server 를 통해 외부의 Parameter Client 와 통신하여 파라미터를 변경하는 것으로 서비스와 동일하다. 단, 서비스가 서비스 요청과 서비스 응답이라는 RPC(Remote P
이번 장에서 다룰 내용은 서로 다른 좌표 표현 방식을 사용할 경우 발생하는 좌표계(Coodinate system) 불일치를 사전에 막기 위한 규칙이다.예를 들어 로봇의 센서로서 널리 사용되는 카메라의 경우, 컴퓨터 비전 분야에서 널리 사용되는 z forward x ri
다수의 센서를 사용하는 로봇은 시간에 따른 센서 값의 변화량과 그 센서들 간의 시간 동기화가 매우 중요하다. ROS2는 여러 노드들이 서로 통신하며 다양한 정보(센서 값, 알고리즘을 수행한 결과값 등)들을 주고받기 때문에 해당 정보들이 퍼블리시된 정확한 시간이 필수적이
ROS2의 파일 시스템(Filesystem)은 ROS 패키지 및 소스코드를 검색하거나 메시지 파일, 실행 파일, 파라미터 설정 및 환경설정 파일 등을 이용할 때 사용자에게 일관된 경험을 제공하기 위해서 동일한 구조를 가지고있다. ROS2의 파일 시스템을 설명하기 위하여
빌드 시스템(build system)과 빌드 툴(build tools)을 나누어 비교하고 ROS에서는 어떻게 역할 분담이 되어 있는지 알아보자. 결론부터 말하자면 빌드 시스템과 빌드 툴의 큰 차이는 단일 패키지를 대상으로 하느냐 전체 패키지를 대상으로 하느냐이다. 즉,
패키지 파일(package Files)의 종류로는 아래와 같다.패키지 설정 파일은 ROS 패키지의 필수 구성 요소로서 패키지의 정보를 기술하는 파일이다. 기술하는 내용으로는 패키지 이름, 저작자, 라이선스, 의존성 패키지 등이 있으며 XML 형식으로 기술하고 파일명은
프로그래밍 언어의 시작은 화면에 "Hello world"문구를 출력하는 것이다. ROS의 "Hello world" 프로그램 또한 다르지 않지만 출력보다는 메시지 전송에 더 초점을 둔다. 이번 장에서는 파이썬 언어로 ROS2의 가장 간단한 구조의 토픽(Topic), 퍼블
이 장에서는 C++ 언어로 ROS2 의 가장 간단한 구조의 토픽(Topic) 퍼블리셔(Publisher)와 서브스크라이버(Subscriber)를 작성하고 동작시켜 보겠다. 앞에 Python 와 동일한 기능을 갖기때문에 언어에 따른 차이점을 보면 좋을거 같다.ROS2 패
ROS2 프로그래밍은 메시지 통신을 위해 정수, 부동 소수점, 불린과 같은 기본 변수 타입들이 담긴 std_msgs 인터페이스나 병진 속도와 회전 속도를 표현할 수 있는 geometry_msgs의 Twist.msg 인터페이스, 레이저 스캐닝 값을 담을수 있는 senso
ROS와 연동되는 로봇 프로그램과 일반적인 로봇 프로그램과의 차이는 프로세스를 목적별로 나누어 노드(Node) 단위의 프로그램을 작성하고 노드와 노드 간의 데이터 통신을 고려하여 설계해야 한다는 것이다. 이번 장에서는 ROS2의 토픽, 서비스, 액션 프로그래밍을 이용해
1. 토픽 ROS2의 메시지 통신에 대해 설명할때 토픽에 대해 설명하였지만 다시 개념을 짚고 넘어가겠다. 토픽(Topic)은 비동기식 단방향 메시지 송수신 방식으로 메시지를 퍼블리시하는 퍼블리셔(Publisher)와 메시지를 서브스크라이브하는 서브스크라이버(Subscr
1. 서비스(Service) 서비스는 동기식 양방향 메시지 송수신 방식으로 서비스의 요청(Request)을 하는 쪽을 서비스 클라이언트(Service Client), 요청받은 서비스를 수행한 후 서비스의 응답(Response)을 하는 쪽을 서비스 서버(Service S
액션(Action)은 비동기식+동기식 양방향 메시지 송수신 방식으로 액션 목표(Goal)를 지정하는 액션 클라이언트(Action Client)와 액션 목표를 받아 특정 태스크를 수행하면서 중간 결괏값을 전송하는 액션 피드백(Action Feedback) 그리고 최종 결
ROS2의 파라미터(Parameter)는 ROS1의 parameter server와 dynamic_reconfigure 패키지의 기능을 모두 가지고 있어 노드가 동작하는 동안 특정값에 대한 저장, 변경, 회수가 가능하다.ROS2의 모든 노드는 파라미터 서버(Parame
프로그램 실행 시 옵션으로 인수를 추가하여 실행하는 경우가 있다. 이때에 사용되는 인자를 실행 인자 라고 하며, main 함수에서 매개변수를 통해 접근할 수 있다.예를 들어 앞전의 패키지설계(Python) 를 살펴보면 다음과 같은 명령어를 통해 GOAL_TOTAL_SU
ROS와 연동되는 로봇 프로그램과 일반적인 로봇 프로그램과의 차이는 프로세스를 목적별로 나누어 노드(Node) 단위의 프로그램을 작성하고 노드와 노드 간의 데이터 통신을 고려하여 설계해야 한다.이번장에서는 ROS2의 토픽, 서비스, 액션 프로그래밍을 이용해서 각 노드들
토픽(Topic)은 비동기식 양뱡향 메시지 송수신 방식으로 메시지를 퍼블리시하는 퍼블리셔(Publisher)와 메시지를 서브스크라이브 하는 서브스크라이버(Subscriber) 간의 통신이다. 이는 1:1 통신을 기본으로 하지만 복수의 노드에서 하나의 토픽을 송수신하는
서비스(Service)는 동기식 양방향 메시지 송수신 방식으로 서비스의 요청(Request)을 하는 쪽을 서비스 클라이언트(Service Client)라고 하며, 요청 받은 서비스를 수행한 후 서비스의 응답(Response)을 하는 쪽을 서비스 서버(Service Se
액션(Action)은 비동기식+동기식 양방향 메시지 송수신 방식으로 액션 목표(Goal)를 지정하는 액션 클라이언트(Action Client)와 액션 목표를 받아 특정 테스크를 수행하면서 중간 결괏값을 전송하는 액션 피드백(Action FeedBack) 그리고 최종 결
ROS2의 파라미터(Parameter)는 ROS1의 parameter server와 dynamic_reconfigure 패키지의 기능을 모두 가지고 있어 노드가 동작하는 동안 특정 값에 대한 저장, 변경, 회수가 가능하다. ROS2의 모든 노드는 파라미터 서버(Para
C++ 프로그램 실행 시 가장 먼저 호출되는 main 함수는 두 개의 매개변수를 가진다. 먼저 첫 번째 매개변수인 argc 는 argument count의 약자로 넘겨받은 인자들의 개수를 담고 있다. 두 번째 매개변수인 argv는 argument vector의 약자로
1. ROS2 Launch System ROS2 에서는 하나의 노드를 실행시키기 위해서는 ros2 run 명령어를 사용한다. 이 명령어만으로도 노드를 실행시키는 것에는 큰 문제가 없다. 하지만 ROS2 에서는 하나의 노드만을 실행시키는 일보다 복수의 노드를 함께 실행시