Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CLI

The CLI binary is named talos-cli.

List Topics

talos-cli list-topics

This asks the agent for the current topic list and prints topic name, type, publisher count, and subscriber count.

List Nodes

talos-cli list-nodes

This asks the agent for discovered ROS 2 nodes and prints their names and namespaces.

Echo Topic Data

talos-cli echo /joint_states --count 5

echo subscribes to the requested topic before waiting for data. A count of zero means unlimited output.

Topic Rate

talos-cli hz /scan --duration 10

hz polls the agent’s topic stats once a second and prints the rate, bandwidth and header-stamp latency (- for unstamped types) of one topic:

rate: 10.00 Hz  bandwidth: 11.3 KB/s  latency: 4.2 ms

The numbers are measured by the agent (see Topic Observation), so the topic must be in the agent’s [[subscriptions]]. Without --duration it runs until interrupted.

Parameters

View and set ROS 2 parameters on any node in the graph. Pass the fully-qualified node name (e.g. /talos_agent).

List a node’s parameters with their current values:

talos-cli list-params /talos_agent

Get specific parameter values:

talos-cli get-param /talos_agent use_sim_time rate

Set a parameter (the value type is inferred — true/false for bool, integers, floats, [1, 2, 3] for arrays, otherwise a string):

talos-cli set-param /talos_agent rate 50.0

set-param exits non-zero if the node rejects the change and prints the reason. The agent reaches each node through the standard rcl_interfaces parameter services, so the target node must be running.

JSON Output

The global --json flag switches to machine-readable output for piping into tools such as jq:

CommandOutput
list-topicsone array of {name, type_name, publisher_count, subscriber_count}
list-nodesone array of {name, namespace, publishers, subscribers, services}
list-params, get-paramone array of {name, type, value}
echoone {topic, stamp: {sec, nanosec}, data} object per line per message
hzone {topic, rate_hz, bandwidth_bps, latency_ms} object per line per second

set-param ignores --json; errors still go to stderr with a non-zero exit.

talos-cli --json echo /joint_states --count 1 | jq '.data.position'

Message data and parameter values are converted to plain JSON rather than Talos’ internal tagged form:

  • messages become objects with fields in message order (the type name is dropped), and arrays and sequences become arrays;
  • uint8[]/byte[] fields and byte-array parameters become base64 strings;
  • NaN and infinite floats become null, as JSON has no representation for them, and so do unset parameters and a missing latency_ms.

Logger Levels

Show a node’s logger level, or set it by passing a level (unset, debug, info, warn, error or fatal):

talos-cli log-level /talos_agent
talos-cli log-level /talos_agent debug

--logger <name> targets another logger, such as rclcpp, instead of the node’s own. See Logger Levels for what the node must enable.

Socket Selection

The default transport is UDS:

talos-cli --socket /tmp/talos.sock list-topics

With the quic feature enabled, --remote selects QUIC:

talos-cli --remote 192.168.1.50:4433 list-topics

--socket and --remote are mutually exclusive. If the binary was compiled without QUIC support, --remote returns an error.