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>
'프로젝트 > ros2' 카테고리의 다른 글
ROS2 foxy 튜토리얼10 - Recording and playing back data (9는 건너뜀) (0) | 2022.03.04 |
---|---|
ROS2 foxy 튜토리얼8 - Using rqt_console (0) | 2022.03.03 |
ROS2 foxy 튜토리얼7 - Understanding ROS2 actions (0) | 2022.02.24 |
ROS2 foxy 튜토리얼6 - Understanding ROS2 parameters (0) | 2022.02.24 |
ROS2 foxy 튜토리얼5 - Understanding ROS2 services (0) | 2022.02.24 |