ROS2 package란?

  • ROS2 코드의 컨테이너
  • 최소 패키지 구조
    • package.xml : 패키지에 대한 메타 정보가 포함된 파일
    • CMakeLists.txt : 패키지 내에서 코드를 빌드하는 방법을 설명하는 파일
  • 보통 저장공간은 ~/dev_ws/src/패키지 로 구성함

 

실습

1. Create a package

--node-name NODE_NAME : name of the empty executable

cd ~/dev_ws/src
ros2 pkg create --build-type ament_cmake <package_name>
ros2 pkg create --build-type ament_cmake --node-name <node_name> <package_name>

 

2. Build a package

같은 workspace root에 존재하는 package들은 "colcon build"로 한 번에 빌드가 가능하다.

다른 workspace root에 존재한다면 개별적으로 빌드를 해야한다.

 

현재는 ~/dev_ws가 workspace이므로 이 경로에서 빌드를 해준다.

cd ~/dev_ws
colcon build

 

이렇게 하면 하위 경로의 패키지들은 전부 빌드가 된다. 패키지가 많다면 시간이 오래 걸릴 수 있다.

하나의 패키지만 빌드하고 싶다면 다음과 같은 명령어를 사용하면 된다.

colcon build --packages-select <package_name>

 

3. Source the setup file

새로운 패키지를 사용하고 실행시키기 위해서는 빌드한 것과 다른 터미널에서 ~/dev_ws에서 다음과 같은 명령어를 사용한다.

이 명령어는 작업 공간을 경로에 추가시켜준다.

. install/setup.bash

 

4. Use the package

아래와 같은 명령어로 패키지를 실행시킨다.

ros2 run <package_name> <node_name>

 

아래와 같은 결과가 출력된다.

 

5. Examine package contents

dev_ws/src/<package_name> 내부에서 ros2 pkg create ~ 명령어로 자동으로 생성된 파일과 폴더를 확인할 수 있다.

 

6. Customize package.xml

1단계에서 맨 마지막 명령어를 입력했을 때 패키지의 정보가 반환된 것을 볼 수 있다.

이 때 description: TODO: Package description 이라고 적힌 것을 볼 수 있다.

이 부분은 자동적으로 설정되지 않고 패키지를 릴리즈할 때 작성하면 된다.

maintainer 부분도 마찬가지다.

 

텍스트 에디터로 ~/dev_ws/src/<package_name>/package.xml을 수정해서 바꿀 수 있다.

 

예제에서는 다음과 같이 바꿨다.

<description> ~ </description> 부분과

<license> ~ </license> 부분만 변경하면 된다.

<?xml version="1.0"?>
<?xml-model
   href="http://download.ros.org/schema/package_format3.xsd"
   schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
 <name>my_package</name>
 <version>0.0.0</version>
 <description>TODO: Package description</description>
 <maintainer email="user@todo.todo">user</maintainer>
 <license>TODO: License declaration</license>

 <buildtool_depend>ament_cmake</buildtool_depend>

 <test_depend>ament_lint_auto</test_depend>
 <test_depend>ament_lint_common</test_depend>

 <export>
   <build_type>ament_cmake</build_type>
 </export>
</package>

+ Recent posts