Enforces the shared /safety/protective_stop (std_msgs/Bool) contract on
the follower arm. If a node publishes the the stop signal (a depth or vision AI backend, a manual e-stop
topic, etc.), the follower arm stops following the leader holding the last commanded pose.
Runs as an always-on daemon.
Configure via snap set:
snap set so101-safety mode=jtc
snap set so101-safety safety-stop-topic=/safety/protective_stop
snap set so101-safety gate-input-topic=/safety/follower/arm_trajectory_in
snap set so101-safety gate-output-topic=/follower/arm_trajectory_controller/joint_trajectory
snap set so101-safety joint-states-topic=/follower/joint_states
snap set so101-safety ros-domain-id=0
snap set so101-safety rmw-implementation=rmw_fastrtps_cpp
If running mode=jtc alongside so101-teleop, point so101-teleop's
jtc-topic at this snap's gate-input-topic so the trajectory is routed
through the gate instead of straight at the controller:
snap set so101-teleop jtc-topic=/safety/follower/arm_trajectory_in
Check status with snap services so101-safety / snap logs so101-safety.