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.