[ROS] 03 ROS2 Workspace
Published:
In this post, ros lecture 3 is introduced.
ROS2 Workspace
ROS에서 패키지는 기능을 구현하는 가장 작은 단위이고, 워크스페이스는 여러 개의 패키지를 모아 관리하는 작업 공간이다.
colcon은 ROS 2 프로젝트를 빌드(build)하기 위한 도구이다. 다음 명령어로 설치한다.
sudo apt install python3-colcon-common-extensions
예를 들어, 다음과 같은 프로젝트 구조를 생각하자.
ros2_ws/
├── src/
│ ├── my_robot
│ ├── my_msgs
│ └── camera_node
colcon build를 하면 현재 워크스페이스 안의 모든 ROS 패키지를 컴파일한다. 실행하면, build/, install/, log/ 디렉터리가 생기는데, 각각 컴파일 중간 파일, 실행 가능한 결과물, 빌드 로그를 담는다.~/.bashrc에source ~/ros2_ws/install/setup.bash를 추가하여, 내가 방금 빌드한 패키지를 ROS가 인식하도록 한다.패캐지를 만들기 위해선
src디렉터리에서ros2 pkg create my_robot_controller --build-type ament_python --dependencies rclpy와 같이 명령어를 입력한다.--build-type ament_python: ROS2 패키지는 python과 C++ package 두 개가 있는데 python package로 작성할 것임을 의미한다.--dependencies rclpy: Python에서 노드를 만들려면import rclpy를 사용한다.--dependencies rclpy를 적으면 패키지 생성시package.xml안에<depend>rclpy</depend>가 자동으로 들어간다.
src/my_robot_controller안의 디렉터리 구조는 다음과 같게 된다.my_robot_controller/ ├── package.xml ├── setup.py ├── setup.cfg ├── resource/ │ └── my_robot_controller ├── my_robot_controller/ │ ├── __init__.py └── test/
📝 XML
XML(eXtensible Markup Language)은 데이터를 구조적으로 저장하기 위한 형식이다. ROS2에서 package.xml은 이 패키지가 어떤 패키지인지 설명하는 메타데이터 파일이다.
<?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_robot_controller</name>
<version>0.0.0</version>
<description>TODO: Package description</description>
<maintainer email="arcstone@todo.todo">arcstone</maintainer>
<license>TODO: License declaration</license>
<depend>rclpy</depend>
<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>
<test_depend>ament_pep257</test_depend>
<test_depend>python3-pytest</test_depend>
<export>
<build_type>ament_python</build_type>
</export>
</package>

Leave a Comment