Unit 2: Basic Concepts
이 글은 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> 태그 안에는 여러 매개변수들이 선언되어 있는데요, 정리하면 다음과 같습니다
-
pkg="package_name" # 우리가 실행할 ROS program이 있는 package를 알려줍니다.
-
type="python_file_name.py" # 우리가 실행할 프로그램의 파일명을 알려줍니다.
-
name="node_name" # 파이썬 파일을 실행시킬 ROS node의 이름을 알려줍니다.
-
output="type_of_output" # 어떤 방식으로 결과를 출력할지 알려줍니다.
어느 정도 package에 대해 이해했으니, 직접 package를 만들어볼까요?
Package를 만들 때 주의해야 할 점은 항상 catkin workspace에서 만들어야 한다는 점입니다. ROS pacakge는 항상 catkin workspace 디렉터리 안에 위치해야 합니다.
~/catkin_ws/src로 이동하여 다음 명령어를 입력해봅시다.
그 후 간단한 python 프로그램을 my_pacakge/src에 만들어봅시다.
마지막으로 launch 디렉토리를 만든 후, launch file도 만들어줍시다.
이제 roslaunch를 입력해 프로그램을 실행해보면 됩니다.
가끔 다음과 같은 에러가 뜰 때가 있습니다.
이는 우리가 생성한 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 아래에서 동작합니다.
이번 Unit에서는 여러 기본 개념들에 대해서 배웠습니다. 다음 Unit에서는 Topic에 대해 다뤄보겠습니다.