ROS 2 Jazzy CLI cheat sheet

Quick-reference commands for ROS 2 Jazzy Jalisco.

Setup

source /opt/ros/jazzy/setup.bash
source install/setup.bash

Nodes and topics

ros2 node list
ros2 node info /node

ros2 topic list -t
ros2 topic type /topic
ros2 topic info /topic -v
ros2 topic echo /topic
ros2 topic hz /topic
ros2 topic bw /topic
ros2 topic delay /topic
ros2 topic pub /topic TYPE '{field: value}'
ros2 topic pub --once /topic TYPE '{field: value}'
ros2 topic pub -r 10 /topic TYPE '{field: value}'

Services and actions

ros2 service list -t
ros2 service type /service
ros2 service find TYPE
ros2 service call /service TYPE '{field: value}'

ros2 action list -t
ros2 action info /action
ros2 action send_goal /action TYPE '{field: value}'
ros2 action send_goal /action TYPE '{field: value}' --feedback

TF2 and TF visualization

Install the TF2 command-line tools:

sudo apt install ros-jazzy-tf2-ros ros-jazzy-tf2-tools

Inspect transforms and generate a TF tree:

ros2 run tf2_ros tf2_echo SOURCE_FRAME TARGET_FRAME
ros2 run tf2_ros tf2_monitor
ros2 run tf2_tools view_frames
ros2 run tf2_ros static_transform_publisher --help

view_frames writes the TF tree to a PDF file. RViz visualizes TF frames live.

Parameters and interfaces

ros2 param list /node
ros2 param get /node parameter_name
ros2 param set /node parameter_name value
ros2 param describe /node parameter_name
ros2 param dump /node
ros2 param load /node params.yaml

ros2 interface list
ros2 interface show package_name/msg/Type
ros2 interface proto package_name/msg/Type

Packages, executables, and launch files

ros2 pkg list
ros2 pkg executables package_name
ros2 pkg prefix package_name
ros2 pkg xml package_name
ros2 run package_name executable_name
ros2 launch package_name file.launch.py name:=value

Package creation

cd ~/ros2_ws/src
ros2 pkg create --build-type ament_cmake --license Apache-2.0 my_pkg
ros2 pkg create --build-type ament_python --license Apache-2.0 my_pkg
ros2 pkg create --dependencies rclcpp std_msgs my_pkg

Workspaces, colcon, and rosdep

mkdir -p ~/ros2_ws/src
cd ~/ros2_ws
rosdep install --from-paths src --ignore-src -r -y
colcon build --symlink-install
colcon build --packages-select my_pkg
colcon build --packages-up-to my_pkg
source install/setup.bash
colcon test --packages-select my_pkg
colcon test-result --verbose

Create a workspace from source

mkdir workspace_name
cd workspace_name
mkdir src
cd src
git clone <some-ROS-2-package-from-GitHub>
cd ..
vcs import src < <some-ROS-2-package-from-GitHub>/<dependency-file.repos>
rosdep init
rosdep install --from-paths src -iry

Common ROS arguments and rosbag

--ros-args -r old:=new
--ros-args -r __node:=name
--ros-args -r __ns:=/namespace
--ros-args -p name:=value
--ros-args --params-file file.yaml

ros2 bag record -a
ros2 bag record /topic
ros2 bag info BAG
ros2 bag play BAG

ros2_control

Install ros2_control and the standard controllers:

sudo apt install ros-jazzy-ros2-control ros-jazzy-ros2-controllers

Manage controllers and inspect hardware:

ros2 control list_controllers
ros2 control list_controller_types
ros2 control list_hardware_components
ros2 control list_hardware_interfaces
ros2 control load_controller NAME PARAMS.yaml
ros2 control unload_controller NAME
ros2 control set_controller_state NAME active
ros2 control set_controller_state NAME inactive
ros2 control switch_controllers --activate A --deactivate B
ros2 control cleanup_controller NAME

Use -c /namespace/controller_manager when targeting a namespaced controller manager.

GUI and visualization tools

rqt

sudo apt install ros-jazzy-rqt
rqt

rqt_graph

sudo apt install ros-jazzy-rqt-graph
rqt_graph

PlotJuggler

sudo apt install ros-jazzy-plotjuggler-ros
ros2 run plotjuggler plotjuggler

RViz

sudo apt install ros-jazzy-rviz2
rviz2

Daemon, diagnostics, lifecycle, and components

ros2 daemon status
ros2 daemon start
ros2 daemon stop
ros2 doctor --report
ros2 wtf

ros2 lifecycle nodes
ros2 lifecycle get /node
ros2 lifecycle list /node
ros2 lifecycle set /node configure
ros2 lifecycle set /node activate
ros2 lifecycle set /node deactivate
ros2 lifecycle set /node cleanup
ros2 lifecycle set /node shutdown

ros2 component list
ros2 component types
ros2 component load /container package_name Plugin
ros2 component unload /container component_id

Use -h or --help to display all options for a command.

References