ROS는 파이썬과 C++을 공식적으로 지원하고 있습니다. 각각의 언어는 아래와 같은 특징을 가지고 있습니다.
파이썬
커뮤니티의 다양한 모듈(확장)을 지원해 기능 구현의 난이도가 C++에 비해 상대적으로 낮습니다. 이러한 장점으로 빠른 개발이 가능해 교육 및 프로토타이핑 목적으로 자주 사용합니다.
C++
대부분의 기능을 사용자가 직접 구현해야 하는 경우가 많아 코드 작성 난이도가 Python 대비 높은 편입니다. 반면, 빠르고 효율적인 동작이 가능해 센서 드라이버와같이 빠른 동작이 필요한 부위에서 자주 사용합니다.
이어지는 가이드에서는 파이썬을 주로 사용할 예정입니다. 따라서 C++ 기반의 패키지는 생성 과정만 간단하게 알아보고 넘어가겠습니다.
ROS의 모든 개발은 워크스페이스의 src 폴더에서 진행합니다. 앞선 과정을 통해 ROS를 설치하였다면 워크스페이스가 설정되어 있을 것입니다. 터미널에 cd 명령어를 입력하여 패키지를 생성할 경로로 이동합니다. cd 명령어는 change directory의 줄임말로 현재 위치를 다른 폴더로 이동할 때 사용하는 명령어입니다. 커서 좌측을 보면 경로가 변경된 것을 확인할 수 있습니다.
<aside> 💡 터미널 실행 시 커서 좌측의 문구는 순서대로 사용자 이름, PC 이름, 현재 경로를 의미합니다. 사용자 이름과 PC 이름은 OS 설치 시 입력한 내용에 맞게 변경될 수 있으나, 경로는 기재되어 있는 것과 동일해야 합니다.
이번 가이드에서는 터미널에 입력하는 모든 명령에 대해 경로를 표시해 두었으니 참고해 주세요.
# [사용자 이름]@[PC 이름]:[현재 경로]$
ubuntu@ubuntu-pc:~$
</aside>
ls 명령어는 List의 줄임말로 현재 위치나 특정 경로의 파일 목록을 조회할 때 사용합니다. ls 명령어 뒤에 추가적인 내용을 입력하지 않으면 현재 경로의 파일 목록을 조회하는데요. 아직 src 폴더에서 작업을 진행하지 않았기 때문에 텅 비어 있는 것을 확인할 수 있습니다.
ubuntu@ubuntu-pc:~$ cd ros2_ws/src
ubuntu@ubuntu-pc:~/ros2_ws/src$ ls

<aside> <img src="https://prod-files-secure.s3.us-west-2.amazonaws.com/2ccf8125-610b-4b57-b7a3-33cdeb0f73a8/3d85eb57-6fb7-490c-b6a8-38b84a126f35/노션_1.png" alt="https://prod-files-secure.s3.us-west-2.amazonaws.com/2ccf8125-610b-4b57-b7a3-33cdeb0f73a8/3d85eb57-6fb7-490c-b6a8-38b84a126f35/노션_1.png" width="40px" /> ROS 2 Package 생성 명령어
ros2 pkg create <pkg-name> --build-type <build-type>
패키지를 생성할 때는 ros2 pkg create 명령어 뒤에 빌드 타입과 패키지 이름을 입력해야 합니다. 빌드 타입에는 파이썬을 사용하는 ament_python과 C++을 사용하는 ament_cmake가 있습니다.
<aside>
💡 명령어가 너무 길어서 타이핑이 힘드실 때는 tab 키를 눌러 자동완성이 가능합니다. 자동완성이 가능한 경우가 2가지 이상일 경우 tab 키를 두 번 눌러 자동완성이 가능한 목록을 확인할 수 있습니다.
예를 들어, ros2 pkg create --build-type a까지 입력한 후 tab 키를 누르면 ament_까지 자동완성이 됩니다. 이후 tab 키를 두 번 누르면 amet_python과 ament_cmake로 두 가지 옵션이 뜨는 것을 확인할 수 있습니다. p를 누르고 다시 tab키를 눌러주면 ament_python까지 빠르게 입력이 가능합니다.
</aside>
<aside> 💡 Python Package 생성 실습은 ROS 2 Humble 공식 Docs의 자료를 사용합니다. 보다 자세한 내용은 아래 링크를 참고해 주세요.
Writing a simple publisher and subscriber (Python) — ROS 2 Documentation: Humble documentation
</aside>
ubuntu@ubuntu-pc:~/ros2_ws/src$ ros2 pkg create --build-type ament_python py_pubsub
