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

ROS

The core presents itself as a full ROS2 node.

Parameters

The core node is a ROS node, which exposes the following parameters:

  • debug (boolean): When debug is enabled, the servos ignore /joint_states. Instead, they listen to the sliders from the Monitor. The engineer can manually move the servos to see if they work properly.

  • torque (boolean): When torque is disabled, the servos are not powered. Joints can be calibrated in this mode, and the engineer can see if the joints report their positions correctly to the system.

  • online (boolean): When online is enabled, the system uses cloud services for ASR, TTS, LLM, etc. When online is disabled, it uses local versions of the services.

  • audio_input_device (string with options): The currently selected audio input device.

  • audio_output_device (string with options): The currently selected audio output device.

  • video_input_device (string with options): The currently selected video input device (head camera).

Topics

The core node interacts with the following ROS topics:

  • /joint_states (input): The core node listens to incoming joint states (from the animation system), and when debug is disabled, adjusts the servos accordingly.

  • /current_joint_states (output): Measurements from the servos are converted back to a set of joint states, and published to this topic.

  • /goal_joint_states (output): The core node outputs the goal joint states to this topic. When debug is enabled, these are the joint states as controlled by the engineer from the Monitor. When debug is disabled, this is a copy of /joint_states.

  • /animation (output): When the engineer triggers individual animations from the Monitor, the core node uses this topic to inform the animation system.

  • /monitor (input): Other mc_* nodes send information for the monitor to the core node using this topic.

  • /audio_in (output): Audio samples coming from the microphone are published on this topic.

  • /audio_out (input): Audio samples that should be played through the speakers are taken from this topic.

  • /video_in (output): Video frames coming from the head camera are published on this topic.

Foreign Node Scanner

Periodically scans for appearing and disappearing ROS nodes on the network. If a new node appears, its parameter descriptions are read to be used by the Monitor. Node parameters are then set according to the persistent storage.