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): Whendebugis 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): Whentorqueis 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): Whenonlineis enabled, the system uses cloud services for ASR, TTS, LLM, etc. Whenonlineis 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): Thecorenode listens to incoming joint states (from the animation system), and whendebugis 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): Thecorenode outputs the goal joint states to this topic. Whendebugis enabled, these are the joint states as controlled by the engineer from the Monitor. Whendebugis disabled, this is a copy of/joint_states. -
/animation(output): When the engineer triggers individual animations from the Monitor, thecorenode uses this topic to inform the animation system. -
/monitor(input): Othermc_*nodes send information for the monitor to thecorenode 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.