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

Concepts

MC-One

MC-One is the class name for the first half-humanoid Mind Children robot. Development of the robot is aimed at achieving what we like to call "Real Human Interaction", and manipulation of small objects in support of this. The MC-One has no bipedal locomotion.

ROS2

Our stack is based on ROS2. If you are unfamiliar, please check this explainer or this video to familiarize yourself with the basic ideas.

Packages

Modularity is achieved by organizing the robot’s software into ROS2 packages. Each package contains one or more related nodes that handle a specific task or function. Each package can be deployed as Docker container, from which the nodes can run using docker compose.

As the robot evolves, new packages will be added and unused ones will be removed.

Nodes

ROS2 nodes deal with one single task or function. A node describes its own parameters and typically sends or receives to/from ROS2 topics. In addition, a node can also provide ROS2 services or ROS2 actions.

Monitor

The Monitor is a web-based tool for robot factory and field engineers. It allows for fast diagnostics of hardware issues, and some very basic functionality around the robot joints.

UI

The UI is a full-screen interface on the Raspberry Pi MIPI touchscreen on the robot's chest. It contains a few buttons to make the robot listen, be quiet or enable/disable the servo torque.

Joints

The robot is designed with 4 different types of joints:

  • Simple Joints: One servo services one axis of the robot. Example joints are: wrists, neck and torso.
  • Face Joints: One servo services one axis, but this axis maps the range 0..1 to the output. These joints are typically used in the face.
  • Complex Joints: Two servos service two axes, but the servos are positioned such that they both contribute torque to each axis. Example joints are: shoulders and elbows.
  • Knees/Hips Joints: Four servos together service one axis. Each servo contributes part of the torque, based on PID logic derived off of one of the knee servos.