Most people run the bridge node and never touch these. Use them directly when you are writing a node of your own.
Neither imports rclpy. You give them a callable to publish with and a cache to read from, so they work in a plain test with no ROS installed.

ROS2FollowerAdapter

JointRanges
required
How far each joint travels, in your topic’s own units. This is what converts those values to the wire and back. See below.
callable
required
Called with {joint: value} every time a command is applied. Wire it to your publisher.
cache
Where the adapter reads current joint positions from. Fill it from your subscription callback. Leave it out to run open-loop.
float
default:"0.5"
How old a topic sample may be before it counts as stale.
int
default:"100"
The loop rate, and the rate announced to the leader.
str
default:"ros2"
A name for this machine, used in logs and the recording.
any
Everything from Follower: token, safety, record and the rest.

ROS2LeaderAdapter

Same ranges and latest, with no sink, since a leader never writes.
float
default:"0.0"
Ignore movements smaller than this, so a controller sitting still does not send noise.
any
Everything from Leader: sync_buffer_ms, max_misalignment and the rest.

Joint ranges

Give it the travel of each joint, in whatever units your topics already carry.
Each machine uses its own travel and never the other’s, which is what lets two arms of slightly different size drive each other correctly.
On an SO-101 you can read these from the calibration instead of typing them. See SO-101.

Wiring it up

sink is called with the values to publish, and latest is where you put what you receive.
The rclpy timer drives the loop, so there is no run() here and no thread of the SDK’s own.

Behaviour

read_joints() never raises. If the topic goes quiet it falls back to the last value it wrote, then to a neutral pose, rather than failing. torque_enable() does nothing. The bridge holds the arm by going quiet and letting your driver’s own watchdog take over, since it has no power control of its own.

Follower

The base class these subclass, and everything they inherit.

ROS 2

The bridge node these two feed, and every parameter it takes.