To

Unit 2: Basic Concepts 본문

ROS

Unit 2: Basic Concepts

딸기소 2021. 1. 13. 10:41

이 글은 Construct Sim의 ROS in 5 Days 강의를 정리한 글입니다.

app.theconstructsim.com/#/Course/1

 

Learn Robotics from Zero - Robotics & ROS Online Courses

 

app.theconstructsim.com


로봇을 움직이려면 어떻게 해야 할까요?

 

가장 쉬운 방법은 이미 존재하는 ROS 프로그램을 실행하는 것입니다. Launch files 들은 ROS 프로그램을 실행시키는 특별한 파일입니다.

 

roslaunch 명령어는 두 개의 인자를 필요로 합니다. pacakge의 이름, launch file의 이름입니다.

 

그렇다면 package는 무엇일까요?

Package는 한 ROS 프로그램이 가지고 있는 모든 파일을 말합니다.

Package의 파일들은 공통적으로 다음과 같이 정리되어 있습니다.

  • launch 폴더 : Launch file들을 포함합니다.

  • src 폴더 : Source files (cpp, python)을 포함합니다.

  • CMakeLists.txt : 컴파일에 필요한 cmake rules들을 가지고 있습니다.

  • package.xml : Package의 정보와 dependencies가 있습니다.

임의의 ROS package로 가려면 roscd 명령어를 사용하면 됩니다.

이제, ROS 프로그램을 실행시키는 launch file에 대해 자세히 알아봅시다.

위에 보이는 것은 keyboard_teleop.launch 파일에 있는 내용입니다. <node> 태그가 <launch> 태그로 둘러싸인 것을 볼 수 있습니다. <node> 태그 안에는 여러 매개변수들이 선언되어 있는데요, 정리하면 다음과 같습니다

  1. pkg="package_name" # 우리가 실행할 ROS program이 있는 package를 알려줍니다.

  2. type="python_file_name.py" # 우리가 실행할 프로그램의 파일명을 알려줍니다.

  3. name="node_name" # 파이썬 파일을 실행시킬 ROS node의 이름을 알려줍니다.

  4. output="type_of_output" # 어떤 방식으로 결과를 출력할지 알려줍니다.

어느 정도 package에 대해 이해했으니, 직접 package를 만들어볼까요?

Package를 만들 때 주의해야 할 점은 항상 catkin workspace에서 만들어야 한다는 점입니다. ROS pacakge는 항상 catkin workspace 디렉터리 안에 위치해야 합니다.

 

~/catkin_ws/src로 이동하여 다음 명령어를 입력해봅시다.

그 후 간단한 python 프로그램을 my_pacakge/src에 만들어봅시다.

마지막으로 launch 디렉토리를 만든 후, launch file도 만들어줍시다.

이제 roslaunch를 입력해 프로그램을 실행해보면 됩니다.

가끔 다음과 같은 에러가 뜰 때가 있습니다.

Error: cannot launch node

이는 우리가 생성한 python 파일에 execute permission이 없어서 일어나는 것입니다. chmod +x 를 이용해주면 해결할 수 있습니다.

 

방금 전 우리는 ROS node를 사용해 python 파일을 실행했습니다. 그렇다면 node는 무엇일까요?

Node란 ROS의 한 프로그램을 말합니다. rosnode 명령어로 현재 실행되고 있는 node들과, 원하는 node의 정보를 가져올 수 있습니다.

일반적으로 새롭게 pacakge를 만들어 준 후 컴파일을 해주어야 합니다. catkin_make 명령어를 이 때 사용하면 됩니다.

 

Parameter Server란 ROS 내부에 여러 매개변수들을 저장하고 있는 dictionary입니다.

다음과 같은 명령어들로 매개 변수들에 접근할 수 있습니다.

Roscore란 ROS 시스템 전체를 관리하는 메인 프로세스입니다. ROS의 모든 일들은 roscore 아래에서 동작합니다.

ROS Core Diagram

이번 Unit에서는 여러 기본 개념들에 대해서 배웠습니다. 다음 Unit에서는 Topic에 대해 다뤄보겠습니다.

'ROS' 카테고리의 다른 글

Unit 5: Services in ROS: Clients  (0) 2021.01.13
Unit 1: ROS Deconstruction  (0) 2021.01.13