$ ros2 pkg list
$ ros2 pkg executables <패키지명>
$ ros2 run <패키지명> <노드명>
$ ros2 node list
$ ros2 topic list
$ ros2 service list
$ rqt_graph
$ ros2 node info /<노드명>
ros2 [verbs][sub-verbs] [options][arguments]
ex. $ sudo apt install ros-foxy-teleop-twist-joy
패키지 명으로만으로 설치 가능.
설치된 파일은 /opt/ros/foxy
에 저장되어 ros2 run
이나 ros2 launch
로 해당 패키지내의 실행 가능한 노드를 실행시킬 수 있다.
ex.
$ git clone https://github.com/ros2/teleop_twist_joy.git
$ cd ~/robot_ws/
$ colcon build --symlink-install --packages-select teleop_twist_joy
패키지를 수정하여 사용하고자 할 경우나 소스 코드 내용을 확인할 필요가 있을 때
'/opt/ros/[버전이름]' 폴더에 설치
ROS를 설치할 때 선택했던 패키지와 ROS 구동 프로그램이 포함됨
▪ /bin : 실행 가능한 바이너리 파일
▪ /cmake : 빌드 설정 파일
▪ /include : 헤더 파일
▪ /lib : 라이브러리 파일
▪ /opt : 기타 의존 패키지
▪ /share : 패키지의 빌드, 환경 설정 파일
▪ local_setup. : 환경 설정 파일
▪ setup. : 환경 설정 파일
사용자가 원하는 곳에 생성할 수 있음.
사용자가 작성한 패키지와 공개된 다른 개발자의 패키지를 저장하고 빌드하는 공간
▪ /build : 빌드 설정 파일용 폴더
▪ /install msg, srv : 헤더 파일과 사용자 패키지 라이브러리, 실행 파일용 폴더
▪ /log : 빌드 로깅 파일용 폴더
▪ /src : 사용자 패키지용 폴더
: 단일 패키지 대상 (낮은 레벨, 의존성 낮음)
: 전체 패키지 대상 (상위 레벨, 의존성 높음)
rosbuild, catkin_make, catkin_make_isolated, catkin_tools, ament_tools 그리고 현재 ROS 2 버전에서 널리 사용되고 있는 colcon이 있음
ament_tools
: ROS 2의 ament_cmake 및 ament_python, 순수 CMake 패키지를 모두 지원하는 툴로 catkin_make, catkin_make_isolated, catkin_tools 모두의 기능을 사용할 수 있으며 ROS 2 Bouncy 버전 이전까지 사용되었다.
colcon
: ROS 1과 ROS 2 모두를 지원하기 위하여 통합된 빌드 툴로서 소개되었으며 ROS 2 Bouncy 이후 ROS 2의 기본 빌드 툴로 사용 중에 있다.
--packages-select
옵션을 이용하고 symlink를 이용하려면 --symlink-install
옵션을 붙여줌.$ cd ~/robot_ws && colcon build --symlink-install
$ cd ~/robot_ws && colcon build --symlink-install --packages-select [패키지 이름]
colcon build --symlink-install
와 같은 옵션을 사용하면 패키지 설치 없이도 패키지 사용할 수 있음. 여러 리포지토리 작업을 보다 쉽게 관리할 수 있도록 설계됨.
ex)
$ wget https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
$ vcs import src < ros2.repos
package.xml에 기술된 의존성 정보를 가지고 의존성 패키지들을 설치해 주는 역할.
ex)
$ sudo rosdep init
$ rosdep update
$ rosdep install --from-paths src --ignore-src --rosdistro foxy -y --skip-keys "console_bridge fastcdr fastrtps rti-connext-dds-5.3.1 urdfdom_headers"
패키지 개발자가 개발한 패키지를 유지보수 및 관리하기 위한 툴이다.
패키지의 정보를 기술 (패키지 이름, 저작자, 라이선스, 의존성 패키지 등)
각 패키지당 무조건 1개의 패키지 설정 파일 (package.xml)을 포함