MyoRobotics Documentation¶
This document describes the use of the MyoRobotics toolkit, including assembly of muscle units, joints and bones, as well as configuration and control of through the Flexray interface.
This documentation is compiled from documentation produced by the concluded FP7 ICT MyoRobotics Project, the ongoing Roboy Project at TU Munich , Embedded Robotic Systems and the Fraunhofer IPA.
License¶
Unless specified otherwise all
this documentation and the hardware is released under the CC by 4.0 license, the software under the BSD license.
The main documentation for the site is organized into a couple sections:
Installation¶
How to get started with a set of MyoMuscles, Ganglia and Flexray2USBAdapter.
Cabling and Power¶
Warning
Check if:
- all motor cables are plugged in correctly. There are 2 ribbon cables (grey and rainbow coloured) that connect each motor with its motor driver board
- all sensor displacement cables are plugged in correctly
- all motor driver boards are connected to power with common ground and power is turned off
- all motor driver boards are connected to their respective ganglion (via SPI)
- all joint sensors are connected to ganglia
- all ganglia are connected to power with common ground and power is turned off
- all ganglia are connected to the flexray bus
- all power supplies are set to output at the very most 24V (for basic testing the 13 muscle MyoArm will run off a single 3A power supply)
- the Flexray2USB adapter is connected to power with common ground and power is turned off
- the Flexray2USB adapter is connected to the flexray bus
- turn the power on and check if
- all driver boards are lighting/flashing green
- the joint has a blinking light whose frequency changes with the joint’s angular displacement
- the software starts
Software Installation¶
To get started we recommend installing both the myo_blink and ros_control_boilerplate fork examples on top of the required flexrayusbinterface.
These examples require ROS kinetic to be installed on Ubuntu 16.04.
Allow your user to access the serial device¶
By default Ubuntu does not let you access your serial adapters. To change that we will add your user to the group ‘dialout’. Execute the following in a terminal:
sudo usermod -a -G dialout $(whoami)
This only needs to be done once.
Create a new workspace¶
Create a new folder that will contain your ROS / catkin workspace and all code.
source /opt/ros/kinetic/setup.bash
mkdir -p ~/MyoArm_ws/src && cd MyoArm_ws/src && catkin_init_workspace
cd ..
catkin_make
Now add the workspace to your ~/.bashrc so that it gets automatically sourced upon opening a shell:
echo 'source ~/MyoArm_ws/devel/setup.bash' >> ~/.bashrc
Install flexrayusbinterface¶
roscd && cd ../src
git clone https://github.com/roboy/flexrayusbinterface.git -b develop
roscd flexrayusbinterface && ./install_deps.sh
Important
The ftd2xx driver does not get loaded automatically. In order to use it you need to either install our udev rules [1] (recommended):
roscd flexrayusbinterface && sudo ./install_udev_rules.sh
Or manually unload the standard drivers every time you re-plug the Flexray2USBInterface board:
sudo rmmod ftdi_sio
sudo rmmod usbserial
Install myo_blink¶
Clone¶
roscd && cd ../src
git clone https://github.com/roboy/myo_blink.git -b master
Configure the myo_blink software example.¶
All system configuration is placed inside a yaml file in the ‘config’ directory of this package. Most importantly it contains the serial number of the USB2Flexray adapter. Adjust it to your devices ID.
Hint
- Find your device mounting location in /dev
All unix systems treat everything (including devices) as files. So first we want to find where your Ubuntu has mounted the USB2Flexray adapter.
Unplug the USB cable of the USB2Flexray adapter and in a terminal do one by one:
ls -1 /dev > ~/before.txt # Plug the UBS cable back in ls -1 /dev > ~/after.txt diff ~/before.txt ~/after.txt
You should see a few lines, one of which should start with:
> ttyUSBnWhere ‘n’ is a number: This is the device location.
ttyUSBn is the name of your USB device (i. e. ttyUSB1). It has been mounted at /dev/ as /dev/ttyUSBn now let’s:
- Find the device’s serial number
Use the following command, but replace the ttyUSBn with the above found name starting with ttyUSB:
/bin/udevadm info --name=/dev/ttyUSBn | grep SERIAL_SHORTThe returned string is the unique serial of the USB2FLEXRAY adapter, please copy it.
- Update the .yaml file
Replace the string after the tag serial: in the yaml file located in the config directory of the myo_blink package with the newly found serial.
Install ros_control_boilerplate fork¶
roscd && cd ../src
git clone https://github.com/compiaffe/ros_control_boilerplate.git -b MyoArm
Important
Also set the serial number in the corresponding yaml file as per Configure the myo_blink software example.. The yaml file is placed in
roscd ros_control_boilerplate/rrbot_control/config
Install all ROS dependencies¶
apt-get install -y ros-kinetic-rosparam-shortcuts ros-kinetic-ros-control ros-kinetic-ros-controllers ros-kinetic-control-msgs ros-kinetic-urdf ros-kinetic-control-toolbox ros-kinetic-robot-state-publisher libgflags-dev libncurses5-dev libncursesw5-dev wget vim
Build it¶
roscd && cd ..
catkin_make
ROS’ plentitute of terminals¶
For using ROS effectively, you will need a large number of terminals open at the same time. I recommend using the terminal app: terminator. Here you can split the screen into multiple terminals or add tabs. Once it is installed, see what a right-click allows you to do.
Install it using:
sudo apt-get install terminator -y
Run it using the myo_blink example application¶
In different (terminator) terminals run:
source .../MyoArm/devel/setup.bash
Then one of the following:
roscore
roslaunch myo_blink myo_blink.launch
rostopic list
For the last one you should now see a list of 13 topics starting with /myo_blink/muscles/
To see the state of a muscle you need to subscribe to its topic: Every muscle has a topic where it publishes it’s state. These are the 13 topics found above.
i.e. listen to the topic of the biceps muscle as follows:
rostopic echo -c /myo_blink/muscles/biceps
Important
Please note, that nothing will be published on these topics before you have sent any command to the motor!
In order to control a motor you need to send a rosservice call to it in a new console:
rosservice call /myo_blink/move "muscle: 'biceps'
action: 'move with'
setpoint: 0.0"
Important
When typing the rosservice call parameters autocomplete is your friend: Start by typing rosservice call /myo_blink/move and then press tab once or twice. ROS will autocomplete your text as good as it can. All you still need to do is fill in the action, to one of the options shown below and type in a setpoint.
Control mode (action):
- ‘move to’ - PositionController
- ‘move with’ - VelocityController
- ‘keep’ - Effort / ForceController
[1] | The udev rules are based on this article: https://www.ikalogic.com/ftdi-d2xx-linux-overcoming-big-problem/ |
Troubleshooting¶
This is a selection of typical problems. If your problem is not listed below, please check the issues for all related repositories:
Could not connect to the myo motor: device not opened¶
There are a number of possible reasons:
You do not have read/write access to the device /dev/ttyUSBn. Where n is a number¶
Verify this by running:
cat /dev/ttyUSBn
- If you get a ‘device not found’ you didn’t replace the right number for n in ttyUSBn
- If you do not get anything, just a clean return you have correct access rights. Press Ctrl+C and find the problem elsewhere.
- If you get a ‘permission denied’ then you have verified this problem. Add yourself to the ‘dialout’ group as described here: Allow your user to access the serial device.
The configured serial number does not match the serial number of the USB2FlexRay adapter¶
Go and double check it by following the instructions here: Configure the myo_blink software example.
You did not install the dependencies of flexrayusbinterface¶
Go and do it. No harm in doing it twice.: Install flexrayusbinterface
You did not install the udev rules¶
Check if there is a file called ‘30-ftdi.rules’ in ‘/etc/udev/rules.d/’:
ls -alh /etc/udev/rules.d # if you don't get back anything try it with sudo: # sudo ls -alh /etc/udev/rules.d
The file should contain a line with something like this at the end:
/sys/bus/usb/drivers/ftdi_sio/unbind
If it does, compare it with the file supplied by ‘flexrayusbinterface’. It is located at:
roscd flexrayusbinterface/udev
If they match, there might be something wrong with these rules for your system. Try the option below.
Something in the udev rules is not right¶
- Manually try to unload the ftdi_sio and usbserial kernel modules as described in the Manually unloading ftdi_sio and usbserial and try the roslaunch command again
- If that does help, use the manually loading as a workaround. Research udev files and how do unload kernel modules. If you are stuck or found a better solution, please create an issue on github at: flexrayusbinterface
- If that does not help find the problem somewhere else. Have you checked your permissions as in the first step?
Introduction¶
The control of highly coupled and compliant musculoskeletal systems is a complex task. In contrast to the well established control concepts of stiff robots widely used in industry, control strategies and algorithms for musculoskeletal systems are still areas of active research. In order to experiment with advanced control algorithms, it is desirable to have a set of simple linear controllers to control the muscle state. This baseline system fulfils two purposes; it provides a benchmark against which more advance control schemes can be tested and, perhaps more importantly, it provides a control interface that can be utilised by advanced and higher level control algorithms.
In order to run a range of linear (feedback) controllers on the MYO-Muscles, a control environment for sensing, processing and actuation is required. Due to the modular nature of the Myorobotic system, a heterogeneous and distributed control infrastructure has been devised. It allows the Myorobotics developers and users to test and control their Myorobot through the MYO-Muscles. In the following document, the main components of the control system are described from both a hardware and software perspective.
Overview¶
An overview of the distributed control system is presented in Fig. 2.1. The Myorobotics system consists of:
- a PC (Ubuntu 16.04 or newer with a working installation of the Robot Operating System - ROS),
- a Flexray2USB adapter board
- up to 6 ganglia (intermediary controller boards)
- up to 4 ‘motors with driver boards’ per connected ganglion

Overview of the Myorobotics distributed control infrastructure.
A Myrobotics system consists of up to 6 MYO-Ganglions, which are local 32-bit floating point electronic control units (ECU) that communicate via the FlexRay bus. Each MYO-Ganglion can control up to four MYO-Musles in different control modes. The communication between the MYO-Muscles and the MYO-Ganglion is established via four dedicated 5Mbit/s SPI connections. Up to four joints can also be connected to a MYO-Ganglion. These joints share a common controller area network (CAN) bus and communicate their absolute joint position at a rate of 1kHz. The same CAN bus is also utilised to read the state of up to 12 MYO-Perceptors, scalar sensors that can be used for various purpuses like tactile or temperature sensing. These sensors broadcast their sensory state at a rate of 100Hz.
Content of the design primitive library¶
Organization and description of the library elements¶
To simplify the presentation of the library elements and provide a framework for future extensions, the developed hardware elements are organized, for each DP functional category, using the following hierarchical classification:
Types (T) are used to distinguish the hardware elements on the basis of their design principle.
Varieties (V) are used, if needed, to distinguish the hardware elements based on the same design principles, on the basis of the technical implementation.
The description of each variety follows the following structure:
Illustrations | regroup figure and graphics illustrating the library element and its main features |
---|---|
Dimensions | list the element’s most important dimensions |
Features | provide a textual explanation of the element’s main features |
Material and fabrication | detail the materials and fabrication methods foreseen for the various parts of the library element |
Integration of the electronics | if needed, provides more details about the embedded electronic component and their integration in the hardware element |
Accessories | lists the additional pieces of hardware usable with the library element, if any |
Implemented instances | list the instances of the hardware elements that have been implemented so far, with their corresponding names and dimensions |
Overview of the implemented library elements¶
Mechanical couplings¶
Structural Bond¶

Type 1: Flange clamp with conical flange
Anchor Fastener¶

Type 1: Screw Fasteners
Design Primitives¶
MYO-Bones¶

Type 1: Parallel Assemblies - Four Round Tubes Fibres

Accessories

Type 2: Monolithic core - T-slot profile

Accessories
MYO-Joints¶

Type 1: Symmetric Hinge

Type 2: Asymmetric Hinge

Type 2: Revised Asymmetric Hinge

Type 3: Pivot

Type 4: Hinge-Pivot

Type 5: Hinge-Hinge
MYO-Muscles¶

Type 0: Passive Muscle - Simple spring

Type 1: Unilateral Series Elastic Actuator - Compression spring
MYO-Ganglion¶

Type 1: ECU with FlexRay bus
Accessories¶
Structural Bond¶
Type 1: Flange clamp with conical flange¶
The structural bond is made of the following elements:
- Two flange plates which include the conical flanges. The side-plates can be integrated in the bone or joint, on one or both sides.
- One clamp ring which clamps the two flange plates together.
- An electrical interface with spring contacts.
Variety 1: Screwed Half Clamps¶
In this implementation, the clamp ring is implemented in two parts. The pressure of the clamp ring on the conical flanges is ensured by two screws.
Illustrations
Overview:

Individual elements:

Dimensions
D1 Distance between the outer faces of the clamp ring
D2 Diameter of the clamp ring along its short axis
D3 Diameter of the clamp ring along its long axis
D4 Radius of the square pattern of the pins
D5 Radius of the square pattern of the screws
D6 Total thickness of the flange (conical and cylindrical section)
D7 Width of the flange, i.e. difference between the outer and inner flange radius
D8 Thickness of the cylindrical section of the flange
D9 Diameter of the central hole of the flange plates
Implemented instances:
Reference | SB-SC2-T1-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | D1 | 8 | [mm] |
D2 | 50 | [mm] | |
D3 | 62 | [mm] | |
D4 | 15 | [mm] | |
D5 | 16 | [mm] | |
D6 | 3 | [mm] | |
D7 | 4 | [mm] | |
D8 | 1 | [mm] | |
D9 | 24,5 | [mm] |
Features:
Flange plates:
- The flange plates are fixed to the joint or bone assembly using a square screw pattern.
- The flange plates can also be integrated in the bone or joint construction.
- The two flange plates are additionally connected via a set of up to four pins. They prevent the relative rotation of the flange plates along the longitudinal axis and contribute to transmit the torsion moment.
- The flange plates have an octagon in their centre to fix the electronic interface in it.
Clamp ring:
- The clamp ring is made of two parts, joined together by two screws.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
flange plate | aluminium |
|
polyamid (PA) |
|
|
clamp ring | polyamid (PA) |
|
Integration of the electronics
In order to implement power (24V) and communication (FlexRay) connectivity, PCBs with spring loaded contacts are integrated into the structural bonds. These circuit boards have a reverse polarity protection and were tested on their current carrying capability and can perform up to 20A.

Structural Bond with electronic interface
Anchor – Fastener¶
Type 1: Screw Fasteners¶
This basic type of anchor-fastener is simply made of a set of threads placed on a DP, on which another DP can be attached using screws.
Variety 1: Pair of Screws¶
This variety uses two screw-thread pairs, whose openings are coplanar.

Dimensions
D1 Screw diameter
D2 Depth of the screw hole
D3 Distance between the screw hole
Implemented instances
Reference | AF-SC2-T1-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | D1 | M3 | |
D2 | 5 | [mm] | |
D3 | 30 | [mm] |
Cable attachment¶
Type 1: Through hole¶
Overview

Dimensions
D1 Cable diameter
D2 Hole chamfer distance
D3 Hole chamfer angle
Implemented instances
Reference | CA-SC2-T1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | D1 | 1.6 | [mm] |
D2 | 1 | [mm] | |
D3 | 45 | [°] |
Type 2: Conical socket¶
In this type, the cable-end and the corresponding socket, have a conical shape.
Overview¶

Dimensions
D1 Cable diameter
D2 End connector maximum diameter
D3 End connector length
D4 End connector minimum diameter
Implemented instances
Reference | CA-SC2-T2 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | D1 | 2 | [mm] |
D2 | 6 | [mm] | |
D3 | 10 | [mm] | |
D4 | 4,8 | [mm] |
Features
- The cable-end has a conical shape to allow a better distribution of the transmitted force.
- The cable runs through the cylindrical channel of the cable-end.
- To fix the cable to the cable-end, a knot is made at the end of the cable, which is melted to prevent the knot to loosen. This knot is larger than the cylindrical channel and therefore applies the cable force on the internal cylindrical surface of the cable-end.
- The conical cable-end can be secured in a cylindrical socket built in one of the Design Primitives.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
cable-end | aluminium or brass |
|

Conical socket with HPPE cable
MYO-Bone¶
MYO-Bone¶
Type 1: Parallel Assemblies¶
This bone type implements the design principle “Parallel assemblies”. The bone is designed as an assembly made of three types of elements (see Fig. 5.1):
- Elongated structural profiles, hereafter called fibres, form the main structural element.
- Transverse spacers bind the fibres together and increase the assembly stiffness and strength. The spacers are shaped to allow the compact integration of other DPs and the electric cabling.
- End-spacers are spacers placed on each end of the bone, which provide additional interfaces.
Together, the fibres and the spacers are making up the bone core, while the end-spacers play the role of the bone ends.

Illustration of the bone construction Type 1 – “Parallel Assemblies”
Bone Variety 1: Four Round Tube Fibres¶
This variety takes inspiration of the ThorLabs Cage System [Web-ThorLabs]. A rigid cage system used to align optical components along a common optical axis. Four tubes with round cross sections are used as fibres and they are placed so that the intersections of the fibre longitudinal axes with the transverse plane are located at the vertex of a square.
D1 Diameter of the round tubes
D2 Distance between two adjacent fibres
D3 Distance between two successive spacers
Reference | BONE-SC2-T1-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | D1 | 6 | [mm] |
D2 | 30 | [mm] | |
D3 | 50 | [mm] | |
M | 188 | [g] |
Fibres:
- The fibres are implemented with standard tubes with a round section.
- Each fibre is terminated with two inserts equipped with screw threads.
- The inserts are glued to or pressed in each of the tube.
Spacers:
- The spacers are attached to the fibres using flexure clamps.
- The spacers are shaped to allow the integration of the muscle, close to the central axis on the four lateral sides of the bone.
- The spacers have a central hole to let the electric cables run through them.
End-spacers:
- The fixation of the fibres to the end-spacers is achieved via a screw connection.
- The end-spacers also have a central hole to let the electric cables run through them.
Attachment points:
- Each end-spacer has a screw pattern to attach one side of a SB.
- Each section of fibre between two successive spacers can be used to attach one or more anchor carriers (see Accessories).
Todo
Explain downside of four round tube fibres
Production and assembly instructions are found in :numref:`myoBone-assembly-fourRoundTubeFibres`
Element name | Material | Fabrication processes |
---|---|---|
tube | steel or composite |
|
insert | steel |
|
spacers | aluminium PA |
|
end-spacers | PA |
|
Accessories¶

Features:
- The adaptor implements four anchor points of type AF-SCX-T1-V1, one on each of the four sides of the bone core.
- The four parts making up the carrier are fixed to each other with screws.
- Like the spacers, the carrier is shaped to allow the compact integration of the muscles and has a hole in the middle to let the electric cables run through.

Features:
- The pulley module includes a closed profile to keep the cable in place.
- The guide sleeve has a shape that aligns the cable. Additionally its supporting shaft has two ball bearings to minimize the friction.
- The pulley is shaped to allow a fast attachment to the parallel fibres.
- The connector allows a secure lock of up to four pulleys. It has a hole in the middle to let the electric cables run through and an opening to allow an easy insertion.

Features:
- The end of the tendon cable is secured with a pin that can be quickly mounted or unmounted.
- The construction includes two aluminium plates that can be easily exchanged to adjust the pin position with respect to the end of the MYO-Bone.
- The cable attachment is shaped to allow a fast mounting to the parallel fibres and is fixed to them by clamping (using another cable attachment on the opposite side of the MYO-Bone).
- Up to four cable attachments can be mounted at the end of the MYO-Bone, while leaving sufficient space in the middle to let the electric cables run through.
Type 2 – Monolithic core¶
This bone type implements the design principle “Monolithic core”. The bone is designed as a solid aluminium profile with an end adaptor on each side of the bone.
Bone Variety 1 – T-slot profile¶
In this variant, a T-slot profile is used, enabling the easy fixation of design primitives or accessories on the MYO-Bone structure using nuts fitting in the T-slot.

Dimensions
D1 Width of the profile section
D2 Diameter of the centre hole
Implemented instances
Reference | BONE-SC2-T2-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | D1 | 25 | [mm] |
D2 | 8.5 | [mm] | |
M | 255 | [g] |
Features
Aluminium profile:
- The profile is standard aluminium T-slot profile with a square section. According to the shape of profile, it is possible to fix the muscle in any place along the profile.
- The profile has a high stiffness against torsion and bending.
- The channel in the centre of the profile can host the electric cables running through the bone. A hole must be drilled at the desired position to let the electrical cables in and out.
Adaptor:
- The end adaptor is screwed to the aluminium profile using the four peripheral holes that can easily be threaded.
- The end adaptor has a central hole to let the electric cables run through it.
- The end adaptor has a screw pattern to attach one side of a SB.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
T-slot profile | aluminium |
|
End adaptor | aluminium |
|
Accessories
MYO-Muscle Adaptor

Features:
- Each adaptor implements one anchor point of type AF-SCX-T1-V1.
- Two adaptors are required to attach one MYO-Muscle.
- Each adaptor is attached with two screws on one of the four sides of the T-Slot profile.
Pulley module

Features:
- The pulley module includes a closed profile to keep the cable in place.
- The guide sleeve has a shape that aligns the cable. Additionally its supporting shaft has two ball bearings to minimize the friction.
- The pulley module is shaped to allow a fast attachment with one screw to the profile.
Cable attachment

Features:
- The end of the tendon cable is secured with a pin that can be quickly mounted or unmounted.
- The construction includes two aluminium plates that can be easily exchanged to adjust the pin position with respect to the end of the MYO-Bone.
- The cable attachment is shaped to allow a fast attachment with two screws to the profile.
MYO-Muscle¶
Type 0: Passive Muscle¶
In some cases, it is sufficient to have a passive muscle (i.e. without a motor to contact the muscle) acting as antagonist to an active muscle, in order to reduce the weight or the cost of the robot.
Variety 1 - Simple spring¶
This is the simplest variant of the passive muscle. It consists of an attachment point, provided by a yoke (1) holding a pin to which a extension spring can be fixed, directly or indirectly via a tendon cable. The yoke if fixed to a threaded rod (2) so that the position of the attachment point with respect to the base (3) of the passive muscle can be adjusted by tightening or losing a single nut (4). This allows to adjust easily the length of the tendon cable and/or to adjust the joint position at which the spring starts to be loaded.
Illustrations


Type 1: Unilateral Series Elastic Actuator¶
This type of actuator is mainly made of the following elements:
- a mechanical base to attach the actuator module to the bone
- a geared DC motor
- a series elastic element
- a cable transmitting the force to the skeleton
Variety 1: Compression Spring¶
This implementation builds on the hardware developments achieved in the Roboy project, in which the MYOROBOTICS consortium members TUM and ETH are contributing. The series elastic element is a linear compression spring combined with a set of pulleys, to reproduce the characteristics of a non-linear progressive spring. The origin of this idea can be tracked back to [Hyodo1993] and has been implemented in different forms in various SEA and variable stiffness actuators.
Illustrations
Overview:

Individual elements:

Integration to BONE-SC2-T1-V1 (see Section 5.1.1.1):

Dimensions
D1 Total length of the actuator
D2 Total height of the actuator
D3 Lever arm of the tension force in the cable w.r.t. the bone section centre
Implemented instances
Reference | MUSCLE-T1-V1-P100W | ||
---|---|---|---|
Corresponding DP-Class | II & III | ||
Motor power | 100 W | ||
Dimensions | D1 | 192 | [mm] |
D2 | 60 | [mm] | |
D3 | 32 | [mm] |
Features
Mechanical base:
- The mechanical base is connected to the bone using multiple anchor carriers developed for the BONE-SC2-T1-V1 (“Anchors circular pattern for vis-à-vis attachment”, see Section 5.1.1.1). As this implementation is based on an already existing hardware, it was not straightforward to directly use the available adaptor. For that reason one part of the adaptor was directly integrated in the mechanical base. Using the other parts of the anchor carrier (represented in green), the mechanical base can be fixed to the bone.
- The mechanical base contains a set of pulleys that redirect the cable transmission, from the motor reel, via the series elastic element, to come out parallel to the bone longitudinal axis.
DC motor:
- The DC motor is fixed to the mechanical base by a set of screws. It is equipped with an optical incremental encoder.
- A cable reel is attached to the DC motor shaft to wind up the cable. It has a cable attachment (of type CA-SC2-T1) to attach one side of the cable and is supported by a bearing at its extremity.
- The motor driver board (see hereunder) is fixed on one side of the mechanical base.
Series elastic element:
- The series elastic element is based on a compression steel coil spring.
- The spring compression is guided by a cylindrical plastic part, two bearings to slide linearly and a guide roller that prevents any twists. The other side of the spring is fixed using a spacer sleeve, a knurled nut and a nut witch are screwed together to a threaded rod witch is concentric to the cylindrical plastic part.
- To measure the deflection of the spring, a hall sensor in combination with a magnetic strip is used. It measures the linear displacement of the cylindrical plastic part. The sensor board is fixed with a wedge-shaped clip that has a spring lock mechanism.
Cable:
Cables made of high performance polyethylene fibres (HPPE), also commercially referred to as Dyneema®, were selected for their high strength, light weight, low stretch and flexibility.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
Mechanical base | Polyamid (PA) | laser sintering |
DC motor Bearings Pulleys |
purchase (standard component) | |
Reel | Aluminium | machining |
Compression Spring | Steel | purchase (standard component) |
Cylindrical part | POM | machining |
Cable | Dyneema® (HPPE) | purchase (standard component) |
Integration of the electronics
Motor driver board (MDB):
This driver board is based on the dsPIC33FJ128MC802 from Microchip, a micro-controller particularly suited for motor control applications. The MDB includes a sensor for the motor current and inputs for additional sensors, such as the spring displacement. The MDB can communicate with the MYO-Ganglion via SPI and also has a CAN interface for stand-alone applications, debugging and configuration.
Accessories
Spring adaptors
The mechanical base of the muscle was designed to allow the usage of various springs, as long as their dimensions are compatible with the spring guidance mechanism. The interface between the mechanical base and the spring guidance mechanism on one side and the spring on the other side is achieved by spring adaptors. The adaptors designed so far allow the usage of four springs with different stiffness and maximal forces selected from the catalogue of Gutekunst Feder.
Reference | D-311 | VD-339A-01 | VD-361 | VD-364P |
---|---|---|---|---|
Stiffness R (N/mm) |
30,682 | 64,301 | 63,636 | 127,805 |
Maximal force F n (N) |
664,58 | 813,639 | 1191,193 | 1337,561 |

MYO-Joint¶
Type 1: Symmetric Hinge¶
This joint type provides 1 DoF of rotation along an axis parallel to the joint end planes. The provided angular range of rotation is symmetric with respect to the axis perpendicular to its interface plane provided by the structural bond. This DoF is provided by a combination of axle and rotational bearings. The basic structure of the joint is illustrated in Fig. 7.1.
Both joint ends are shaped as forks (the upper- and under joint forks) and provide an interface for the structural bond. The electrical interfaces on both joint ends are embedded in the structural bonds and the space between the upper and under fork is used for the electrical cabling. The attachment and guidance for the cable transmission are placed centrally for a symmetrical application of the force on the bearings.

Illustration of the joint construction for Type 1
Variety 1¶
This implementation uses two axles placed on each side of the joint, supported by ball bearings to reduce the friction and increase the efficiency of the joint. Between the two axles, a disk-like structure is used to guide the cable while insuring a constant lever arm with respect to the joint rotation axis. The absolute position of the joint is measured using a Hall-effect sensor, comprising a magnet embedded in one of the axles and an electronic board located inside the joint. The corresponding sensor interface module (SIM) is located on the outside of the joint to be easily accessible for configuration purpose.
Illustrations¶


Dimensions
H Distance between joint end planes
W Maximal width of the joint
T Maximal thickness of the joint
X Height of the tilt axis
Θ Motion range of the joint
Implemented instances
Reference | JOINT-SC2-T1-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | H | 60 | [mm] |
W | 55 | [mm] | |
T | 36 | [mm] | |
X | 29 | [mm] | |
Θ | 140 | [°] | |
M | 70 | [g] |
Features
Under joint fork:
- Both bearings are implemented in the under joint fork.
- Two mechanical stoppers limit the motion range of the joint.
- The structural bond (SB) is integrated on the under joint fork.
- The topology of the force transmitting volume from the SB to the joint axis is optimised.
- A holding device allows attaching a SIM-board on the side.
Upper joint fork:
- Two cable attachments (CA-SC2-T2), allowing the bidirectional actuation of the joint, and a continuous guide for the cables are implemented.
- The SB is integrated on the upper joint fork.
- The topology of the force transmitting volume from the SB to the joint axis is optimised.
- The “neck” of the upper joint fork features a location to add an extension, providing if necessary additional CA on the joint.
- Both shafts of the joint are implemented with interference fit.
Sensor and electrical interfaces:
- The sensor board and its protection cap can be easily fixed on the under joint fork.
- To measure the movement between the joint parts, the magnet element of the sensor is mounted in the shaft.
- The electrical interfaces are small PCBs which are embedded in the structural bonds.
- Openings and cable channels are implemented to enable the electrical cabling between sensor and SIM-board and between the electrical interfaces of the structural bonds on both sides of the joint.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
Upper hinge part Lower hinge part Sensor cap |
Polyamide (PA) |
|
Shaft | Aluminium |
|
Bearing | Steel |
|
Assembly Procedure¶

Material needed:
1 x Upper hinge part
1 x Lower hinge part
1 x Sensor cap
2 Bearings 625 5x16x5 mm
1 x shaft left side
1 x shaft sensor side
4 data wires 0,25 mm2
2 power wires highly flexible silicon 1,5 mm2
2 x connector boards, four spring contacts
8 x M1,6 x 6
Step 1: Mount sensor board¶

Push the sensor cables through the cable channel. Place the sensor board on the pins and glue on two points.
Tips:
- for pre fixation of the board melt the plastic pins with a soldering iron
Step 2: Glue sensor cap¶

Put glue on the sensor cap and screw it on the housing.
Tips:
- just a small amount of glue is needed
Step 4: Assemble upper and under hinge part¶

Assemble the upper and under hinge part.
Plug in the shafts to fix the joint parts.
Tips:
- The shaft with magnet must on the sensor side
- For better fixation put lock tide on the shafts
Step 5: Connect cables to the board¶

Prepare cable tree on connector boards.
Cut on 15 cm length:
4 data wires 0,25 mm2
2 power wires highly flexible silicon 1,5 mm2
Connector side:

Pin colour code:
F1+ white
F1 - brown
F2 + yellow
F2 - green
Step 7: Connect cables to the second board¶

Skinning all cables long till the SB-pocket.
Pull cables through connector board and solder from top. Screw both connector boards to joint with four M1,6 screws.
Connector side:

Pin colour code:
F1+ white
F1 - brown
F2 + yellow
F2 - green
Tips:
- Turn Joint in the position of the longest cable path!
- Avoid cable crossovers by connecting to board
Type 2: Asymmetric Hinge¶
This joint type provides 1 DoF of rotation along an axis parallel to the joint end planes. In contrast to the symmetric hinge, the provided angular range of rotation is asymmetric with respect to the axis perpendicular to its interface plane provided by the structural bond. Following Principle II, this DoF is provided by a combination of axle and rotational bearings. The basic structure of the joint is illustrated in Fig. 7.1.
Both joint ends are shaped as forks (the upper- and under joint forks) and provide an interface for the structural bond. The electrical interfaces on both joint ends are embedded in the structural bonds and the space between the upper and under fork is used for the electrical cabling. The attachment and guidance for the cable transmission are placed centrally for a symmetrical application of the force on the bearings.

Illustration of the joint construction
Variety 1 [obsolete]¶
This implementation uses a joint axle to the under joint fork and supported on each side by ball bearings mounted on the upper joint fork and secured with side covers. The absolute position of the joint is measured using a Hall-effect sensor, comprising a magnet embedded in the joint axle and an electronic board located on the side of the joint, together with its corresponding sensor interface module (SIM). The electronic boards are integrated in one of the side covers.

Illustration of the joint construction
Given the constraint of asymmetric angular range, it was not possible to use the same mechanism for cable guidance as for the symmetric hinge joint, while preserving a compact joint design. Instead, the cable of the extension muscle is redirected by a guiding pulley (located on the under joint fork) towards the cable attachment (located on the upper joint fork) implemented using a pin mounted transversally to the cable direction.
This cable guidance implementation does not insure a constant lever arm length, which significantly decreases as the joint flexes, as shown in Fig. 7.17. Tests performed by ETH showed that this pronounced decrease of the lever arm length was prejudicial in applications. For that reason another asymmetric hinge variety was developed, which is described in the next section.

Lever arm length variation of the extensor muscle cable (red line) as the asymmetric hinge joint (variety 1) flexes from 0° to 140°
Variety 2¶
This variety has the same basic construction as variety 1 regarding the joint axle and bearing, as well as the implementation and location of the absolute position sensing.
The main difference with variety 1 lies in the implementation of the cable guidance. The guiding pulley and the cable attachment are both mounted on two metal sheets attached to the sides of the under and upper joint forks respectively. This construction has two benefits: (1) the decrease of the lever arm length as the joint flexes can be significantly reduced and (2) the lever arm length can be easily adjusted by exchanging the metal sheets. On the other hand, this configuration increases the risk that the cable jumps out of the guiding pulley. To prevent this, two mechanisms were devised to centre the cable attachment (cable centring mechanism) and to keep the cable running on the pulley (cable catching mechanisms).

Illustration of the joint construction

Lever arm length variation of the extensor and flexor muscles cables (resp. red and green lines) as the asymmetric hinge joint (variety 2) flexes from 0° to 140°
Illustrations¶

Dimensions
H Distance between joint end planes
W Maximal width of the joint
T Maximal thickness of the joint
X Height of the rotation axis
Θ Angular range of the joint


Implemented instances
Reference | JOINT-SC2-T2-V2 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | H | 80 | [mm] |
W | 66,25 | [mm] | |
T | 84 | [mm] | |
X | 40 | [mm] | |
Θ | 140 | [°] | |
M | 224 | [g] |
Features
Under joint fork:
- The joint axle is pressed through the under joint fork, while relative rotation is prevented via a chamfer.
- The axle is axially secured with one circlip on each of its sides.
- Two mechanical stoppers on each side of the under joint fork limit the extension of the joint.
- The structural bond (SB) is integrated on the under joint fork.
- M2 brass inserts are embedded in the under joint fork as fixation points for the metal sheets holding the guiding pulley.
- A M2 brass insert is embedded in the top part of the under joint fork as fixation point for the cable catching mechanism.
Upper joint fork:
- The ball bearings are mounted in the upper joint fork.
- The bearings are axially secured on the medial side by the upper joint fork itself and on the lateral side by the two side covers screwed on the upper joint fork.
- Two mechanical stoppers on each side of the upper joint fork limit the flexion of the joint.
- The SB is integrated on the under joint fork.
- M2 brass inserts are embedded in the upper joint fork as fixation points for the metal sheets holding the cable attachment for the extensor muscle cable.
Flexor muscle cable guidance and attachment:
- The cable attachment is implemented as a transversal parallel pin around which the end of the cable is attached. The pin is pressed in the upper joint fork.
- A pulley equipped with ball bearing is fixed on the under joint fork to guide the cable when the joint is close to most extended position.
Extensor muscle cable guidance and attachment:
- The cable attachment is implemented as a transversal parallel pin around which the end of the cable is attached. The pin is supported by the two metal sheets inserted in the upper joint fork structure and additionally fixed to it with four screws.
- To prevent that the cable slides laterally, a part (“cable centring clip”) is clipped on the pin to constraint the position of the cable to its centre.
- The cable guidance is implemented as a roller born by a transversal parallel pin supported by the two metal sheets screwed to the under joint fork.
- A part (“cable catching mechanism”) is fixed to top part of the under joint fork to prevent the cable to jump out of the roller when the joint extends while there is no tension in the cable. This part is shaped so as to deform in order to let the cable attachment pin pass under it and close afterwards when the joint extends or closes.
Sensor and electrical interfaces:
- A magnet is glued to the joint axle.
- The rotation of the magnet is measured by a Hall-effect sensor implemented in an IC mounted on the sensor board.
- The signal provided by the sensor board is conditioned and transmitted by the SIM-board. Both boards are housed in one of the side covers.
- Openings and cable channels are implemented to enable the electrical cabling between sensor and SIM-board and between the electrical interfaces of the structural bonds on both sides of the joint.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
Upper joint fork Under joint fork Side covers Guiding pulleys Cable centering clip Cable catching mechanism |
Polyamide (PA) | laser sintering |
Shaft | Aluminium | machining |
Bearings | Steel | purchase (standard component) |
Metal sheets | Aluminium | water jet cutting |
Parallel pins (cable attachment and pulley axles) | Steel | purchase (standard component) |
Type 3 – Pivot¶
This joint type provides 1 DoF of rotation along an axis perpendicular to the joint end planes. Following Principle II, this DoF is provided by a combination of axle and rotational bearings. The basic structure of the joint is illustrated in Fig. 7.23. One side of the joint includes the joint axle and is called the pivot shaft. This part includes the cable attachments. The other side of the joint carries one or multiple bearings and is made of a barrel-shaped housing and a lid. The pivot shaft and the lid have each an interface for a structural bond. The electrical interfaces on both joint ends are embedded in the structural bonds and the electric cabling joining them is guided through the joint.

Illustration of the joint construction for Type 2
Variety 1¶
This implementation provides a large symmetrical range of rotation of the joint. To reduce the friction and increase the efficiency of the joint, two ball bearings are used to support the joint axle.


Dimensions
H Distance between joint end planes
W Maximal width of the joint
T Maximal thickness of the joint
Θ Motion range of the joint
Implemented instances
Reference | JOINT-SC2-T3-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | H | 65 | [mm] |
W | 66,8 | [mm] | |
T | 50 | [mm] | |
Θ | 164 | [°] | |
M | 115 | [g] |
Features
Barrel-shaped housing:
- The barrel-shaped housing contains a reservoir for the electrical cables, into which the electric cable can freely move when the joint is rotating.
- On the outside of the housing, two holding devices are embedded for the pulleys redirecting the cable transmission.
- A holding bay in the housing allows attaching a SIM-board on the side.
- Two mechanical stoppers limit the motion range of the joint.
Pivot shaft:
- The bearing on the extremity of the shaft is fixed by a nut screwed on the pivot shaft.
- Two cable attachments (CA-SC2-T2), allowing the bidirectional actuation of the joint, and a continuous guide are implemented on the pivot shaft.
- The SB is integrated on the pivot shaft.
- To measure the rotation of the joint, an magnetic absolute position sensor is integrated in the joint. Its magnet element is mounted in the shaft.
Lid:
- The lid is screwed to the barrel-shaped housing and its position secured by four pins.
- The SB is integrated on the screw-on lid.
- The position sensor board is fixed on the inside of the lid.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
Barrel-shaped housing Lid Pivot shaft |
Polyamide (PA) |
|
Bearing Securing pins Shaft screw |
Steel |
|
Pulleys | Polymer |
|
Assembly Procedure¶

Material needed:
1 x Barrel-shaped housing
1x Lid; 1x Pivot shaft
2x Bearings 3802 15x24x7 mm
2x Securing pins 3mm x 8 mm
1 x Flat shaft screw M12 x 1
4 data wires 0,25 mm2
2 power wires highly flexible silicon 1,5 mm2
2 x connector boards, four spring contacts
8 x M1,6 x 6
Step 1: Mount sensor board¶

- Push the sensor cables through the cable channel.
- Place the sensor board on the pins and glue on two points.
Tips:
- for pre fixation of the board melt the plastic pins with a soldering iron
Step 2: Mount pulleys and magnet¶

- Put in the two pulleys.
- Fix them with the pins.
- Glue the magnet into the pivot shaft.
Step 3: Place the bearings into the housing¶

Place the two bearings into the barrel-shaped housing from below.
Step 4: screw the pivot shaft into the housing¶

Put the pivot shaft into the barrel-shaped housing and tighten the nut.
Step 5: screw lid on barrel-shaped housing¶

Screw the lid on the barrel-shaped housing and put in the security pin.
Step 6: Solder cables to the board¶

Prepare cable tree on connector boards.
Cut on 15 cm length:
4 data wires 0,25 mm2
2 power wires highly flexible silicon 1,5 mm2
Connector side:

Pin colour code:
F1+ white
F1 - brown
F2 + yellow
F2 - green
Step 7: Cable and solder cables to the second board¶

Place PCB carrier in SB
Solder cables to the second board (from below)
Carrier orientation:

Pin colour code:
F1+ white
F1 - brown
F2 + yellow
F2 - green
Push cable tree through the joint.
Screw both connector boards to joint with four M1,6 screws.
Type 4: Hinge-Pivot¶
This joint type provides 2 DoFs of rotation: one along an axis parallel to the proximal joint end plane (hinge) and one along an axis perpendicular to the distal joint end plane (pivot). The angular range of rotation of the hinge is symmetric with respect to the axis perpendicular to the structural bond. Both DoFs are implemented using a combination of axles and rotational bearings.
Variety 1¶
This implementation uses ball bearings for the hinge and pivot to reduce the friction and increase the efficiency of the joint. The tendon cables actuating the pivot part (in red hereunder) are running through the centre of the axles of the hinge part. The absolute joint angles are measured using Hall-effect sensors and magnet rings.
Illustrations¶

Illustration of the Hinge-Pivot joint construction


Dimensions
H Distance between joint end planes
W Maximal width of the joint
T Maximal thickness of the joint
X Height of the hinge rotation axis
Θhinge Motion range of the joint
Θpivot Motion range of the pivot
Implemented instances
Reference | JOINT-SC2-T4-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | H | 95 | [mm] |
W | 142 | [mm] | |
T | 78,5 | [mm] | |
X | 47,5 | [mm] | |
Θhinge | 140 | [°] | |
Θpivot | 180 | [°] | |
M | ~300 | [g] |
Features
Base:
- It holds the bearings for the hinge.
- Two mechanical stoppers limit the motion range of the hinge by contacting the ring mount.
- The structural bond (SB) is integrated on the proximal side of the base.
- It provides a fixation point on each side to screw a pulley-support.
Pulley-support:
- This part holds a pulley redirecting one of the tendon cables actuating the pivot through the hinge axle.
Ring mount:
- Two cable attachments (CA-SC2-T2) are provided, allowing the bidirectional actuation of the hinge.
- It holds two angular ball bearings for the pivot.
- It holds two pulleys that guide the tendon-cables for the pivot actuation towards the cable winch.
- It holds the two axles of the hinge, which are inserted with interference fit.
- The shafts are axially secured with steel sheets.
- Each steel sheet is secured with a cover clipped on the ring mount.
- A half magnet is mounted on its right side for the measurement of the hinge absolute position.
- The electronic board with the sensor measuring the absolute position of the pivot is mounted on its back.
Cable winch:
- Two tendon cable attachments are provided for the bidirectional actuation of the pivot and the round shape of the cable insures a constant lever arm.
- A magnet ring is mounted on the cable winch to measure the pivot absolute position.
Output shaft:
- The output shaft is mounted in the two angular ball bearings.
- The structural bond (SB) is integrated on the distal end of the output shaft.
- The cable winch is fixed to the output shaft with a screw with inner hole, allowing the passage of the electric cables.
Bearing cover:
- The bearing cover covers the two angular ball bearings.
- A mechanical stopper limits the motion range of the pivot.
- It is assembled with four screws on the ring mount.
Sensor and electrical interfaces:
- The sensor board for the hinge is attached on a pulley-support.
- The sensor board for the pivot movement is attached on the HX-ring mount.
- The cables routing (for the sensors) is supported by mounting clamps.
- The cables between the electrical interfaces of the structural bonds are guided through the output shaft.
Material and fabrication
Element name | Material | Fabrication processes |
---|---|---|
proximal base ring mount distal output shaft cable winch bearing cover pulley support axle cover safety cable cover cable cover pulley external pulley internal |
Polyamide (PA) |
|
axle | Aluminium |
|
Sheet metal axle cover | Steel |
|
Bearing | Steel |
|
screws | Steel |
|
Parallel pins | Steel |
|
Type 5: Hinge-Hinge¶
The joint type is a combination of two hinge joints using a combination of axle and rotational bearing (principle II). It is provides 2 DoFs of rotation along two axes: the first parallel to the proximal joint end plane (proximal axis), the second parallel to the distal joint end plane (distal axis).
Variety 1: Universal Joint¶
The two rotation axes intersect and are perpendicular. The joint is composed of three load carrying components: the proximal, middle and distal parts. The proximal and distal parts can be mounted to other toolkit elements via the modular structural bond. The middle part connects both sides and defines the plane for both axes. Each rotation axis is implemented using two symmetrical axles, which are made up of a screw, a plain washer, a nut and a bearing. The rotation around the proximal axis is actuated by two tendon cables fixed to screws on the middle part. The tendon cables that actuate the distal axis are guided by two ceramic bushes placed on each sides of the proximal part and their ends are attached on the distal part. Both rotations can be actuated independently and each tendon cable has an almost constant lever arm with respect to the rotation axis it actuates. The two absolute angles are measured with a position sensor located in the intersection point of both axes.

Illustrations:
Overview:


Individual elements:


Dimensions:
H Distance between joint end planes
W Maximal width of the joint
T Maximal thickness of the joint
X Height of the proximal axis
Θprox Motion range of proximal rotation
Θdist Motion range of distal rotation
Implemented instances:
Reference | JOINT-SC2-T5-V1 | ||
---|---|---|---|
Corresponding DP-Class | II | ||
Dimensions | H | 115 | [mm] |
W | 131,2 | [mm] | |
T | 86 | [mm] | |
X | 55 | [mm] | |
Θprox | 140 | [°] | |
Θdist | 110 | [°] | |
M | ~320 | [g] |
Features:
Proximal part:
- Two bearings and two screws are implemented in the proximal part.
- Two ceramic bushes are implemented on the proximal axis of the proximal part.
- The proximal structural bond (SB) is integrated on the proximal part.
- The topology of the part from the SB to the joint axis and the ceramic bushes is optimized to the expected loads.
- A bridge for attaching the position sensor (originally a joystick sensor) is located in the center of both rotation axes.
- The cables coming from the proximal SB connection board are guided through a tunnel to the center of the joint.
- The cables from the sensor are guided through a tunnel to the SIM board.
- The part includes an emplacement on the side to attach the SIM board.
- Mechanical stoppers, which collide with (17), limit the motion of range of the proximal rotation.
- Mechanical stoppers, which collide with (23), limit the motion of range of the distal rotation.
Middle part:
- The middle part holds the four axles (implemented using screws) together.
- Hexagonal openings allow the insertion of nuts to screw the axles in place.
- Cable attachments for the tendon cables actuating the rotation around the proximal axis are provided on the middle part, in the form of screws around which the tendon cables can be knotted.
- The tendon cables are guided on a circular arc centered on the proximal axis with a constant lever arm to the MYO-Muscle.
- Two aluminum sheets on each side of the circular arc reinforce the middle part, so that it is able to cope with the high forces applied by the tendon cables. Two distance spacers embedded in the middle part are used to screw the aluminum sheets.
- Rings and walls inside the middle part guide the electric cables from the proximal part to the distal part
- Mechanical stoppers, which collide with (9), limit the motion of range of the proximal rotation.
Distal Part:
- Two bearings and two screws are implemented in the distal part.
- The distal structural bond (SB) is integrated on the distal part.
- A bar directed towards the center of the joint allows the attachment of the magnet used with the position sensor. The distance between the magnet and position sensor is constant.
- Two cable attachments (CA-T2-DPX), allowing the bidirectional actuation of the rotation around the distal axis, and guides for the tendon cables are implemented.
- Rings and tunnels guide the electric cables coming from the middle part to distal SB connection board.
- Mechanical stoppers, which collide with (10), limit the motion of range of the distal rotation.
Material and fabrication:
Element name | Material | Fabrication processes |
---|---|---|
Proximal part Middle part Distal part |
Polyamid (PA) | laser sintering |
Aluminium sheets | Aluminium | water-jet cutting |
Bearing Screw Nut Plain washer |
Stainless Steel | purchase (standard component) |
Ceramic bush | Ceramic (polished surface) | purchased |
Position sensor Magnet | purchased |
Joint Sensor Board¶
The MYO-Joints are equiped with absolute position sensors. An interface board (joint sensor board) is mounted on each joint as shown in Fig. 8.1. The joint position is sent to the MYO-Ganglion via CAN. The joint sensor board reads the magnetic joint sensor (within the joint) at a rate of 16kHz. A filtered value of this joint position (moving average filter) is sent to the MYO-Ganglion at a rate of 1kHz. Up to 4 joint sensors can be connected to the MYO-Ganglion on a shared CAN bus. The DIP-switches on the joint sensor board are required to configure the CAN message ID (communication address). The DIP switches (S1, S2 and S3) are read after power-on reset. Manipulation of the switches during operation has no effect. For a 1DOF joint DIP switches 1 and 2 are used to set the address (0b00, 0b01, 0b10 or 0b11). Switches 3, 4 and 5 must be in the off position [3]. Switch 6 enables a CAN termination resistor. One (and only one) of the joint sensor boards connected to a MYO-Ganglion must have the termination resistor enabled (i.e. switch 6 ON). In general, CAN requires two \(120\Omega\) termination resistors. One of them is present on the MYO-Ganglion board and therefore only one of the joint sensors should have its termination resistor enabled.

The MYO-Joint (A) with a close-up (B) of the joint angle sensor board
Connectivity¶
The joint sensor board is supplied with a 4-pin [4] JST connector and should be directly connected to the MYO-Ganglion using any of the 5 available CAN connectors. The address of the joint is subject to the address of the joint sensor board, using DIP switches 1 and 2 as shown in Table 8.2.
During 1DOF operation, only one CAN message with the MsgID indicated by switches S1 and S2 is sent. For 2DOF operation two CAN messages are sent, the first one has the MsgID indicated by switches S1 and S2, the second CAN message has the ID indicated with switches S1 and S2 plus 1.
S1 | S2 | S3 | messageIDs on bus |
---|---|---|---|
0 | 0 | 0 | 0x50 |
0 | 0 | 1 | 0x50 and 0x51 |
0 | 1 | 0 | 0x51 |
0 | 1 | 1 | 0x51 and 0x52 |
1 | 0 | 0 | 0x52 |
1 | 0 | 1 | 0x52 and 0x53 |
1 | 1 | 0 | 0x53 |
1 | 1 | 1 | 0x53 |
S1 | S2 | Address / C++ index |
---|---|---|
0 | 0 | [0] |
0 | 1 | [1] |
1 | 0 | [2] |
1 | 1 | [3] |
Wiring Scheme: Joint Angle Sensor Board - Ganglion Distribution Board¶
Signal Name | CAN-H | CAN-L | Gnd | +5V |
---|---|---|---|---|
Sensor board, pad # | 1 | 2 | 3 | 4 |
Ganglion Distribution Board, pin # | 3 | 2 | 1 | 4 |

Cables and connectors to connect the joint angle sensor board to the ganglion distribution board; red circles mark the applicable connectors on the printed circuit boards.
Wiring Scheme: Analogue joint sensor - Joint Angle Sensor Board¶
The analogue joint sensor are soldered straight into the soldering pad on the joint angle sensor boards. The joint angle sensor board can output 5V or 3.3V on pins 6 and 8, depending on the components configured onto the joint angle sensor board.
Signal Name | Gnd | Gnd | +5V/3.3V | +5V/3.3V | AN0 | AN1 |
---|---|---|---|---|---|---|
Sensor board, pad # | 5 | 7 | 6 | 8 | 9 | 10 |
Wiring Scheme: 5V and 3.3V configuration¶
The joint angle sensor board can operate with 5V or 3.3V sensors, depending on the resistors populated and solder-bridges made. Details can be seen in Fig. 8.3. Resistors R5,R6,R7 and R8 are required to divide down the sensor output, in case of the 5V configuration, to the 3.3 analogue input voltage range of the micro-controller on the sensor board. One, and only one, solder-bridge (SB) between the 5V pad or 3.3V pad and the \(V_{supply}\) pad is required to supply the sensor with the appropriate voltage. For 3.3V operations resistors R7 and R8 should be removed and R5 and R6 replaced with a 0\(\Omega\) resistor.

PCB with components for 5V operation: \(R5=5k\Omega,R6=5k\Omega,R7=10k\Omega,R8=10k\Omega\) and solder-bridge (SB) implementing the connection between +5V and the sensor supply voltage \(V_{sensor}\). For 3.3V operation the solder-bridge is required between the 3.3V pad and \(V_{senosr}\). Importantly, the SB between +5V and \(V_{sensor}\) needs then be removed. In 3.3V operation R7 and R8 should be removed and R5 and R6 replaced with a \(0\Omega\) resistor (or a resistance \(<10\Omega\)). Red tracks/pads mark the PCB top, blue tracks/pads are on the bottom side of the PCB.
Calibration Procedure¶
The joints should be calibrated before the first operation. This makes sure that the digital outputs of the sensor board map symmetrically to the physical range of the analogue sensors. A calibrated sensor will broadcast a value of \(2048_{dec}\) in the centre position and a value between 0 and \(2048_{dec}\) at the physical negative end-stop (depending on range). The value at the positive end-stop will be between \(2048_{dec}\) and \(4095_{dec}\), again depending on the physical range. The calibration only needs to be performed once when connecting the sensor board to the physical joint and sensor, the calibration data is stored permanently in the flash memory of the joint angle sensor board. However, the procedure can be repeated if mistakes were made during calibration or if he sensor board is mounted onto another joint. The calibration data is agnostic to the to the joint address in principle. However, it is easiest to perform the calibration when joint ID zero (S0=0, S1=2) is selected. The calibration works for 1DOF and 2DOF operation. The following procedure will lead to a successful calibration:
- S0 and S1 are set to 0 (off), S4 is off, S3 off in 1DOF operation or S3 on for 2DOF operation
- power up joint angle sensor board
- set S4 to on
- move joint to negative position, hold there
- flick S0 on and off again
- move joint to positive position, hold there
- flick S1 on and off again
- set S4 to off
- calibration has been performed
[3] | Switches 3,4 are required to choose between 1DOF and 2DOF operation (S3) or to calibrate the joint (S4). Switch 5 is reserved |
[4] | The 4-way JST SH series connectors are available from Farnell Components, Farnell-number 1679110; connecting wires with pre-crimped connectors are available via RS components (300mm RS-number 311-6675, 150mm RS-number 311-6653). |
Motor Driver¶
In order to drive the MYO-Muscles, a motor driver board is provided. This is illustrated in Fig. 9.1. The motor driver board is supplied with 24V and communicates with the MYO-Ganglion via a 5MHz SPI connection. It provides sockets to connect the MYO-Muscle motor as well as a further connection for the spring-displacement sensor. For further hardware developments and other extensions, there is also a CAN interface and a micro-USB connection. However, they are not required when building a Myorobot.

The Myorobotics motor driver board.
Spring Displacement Sensor¶
To measure the displacement of the spring (a proxy for tendon force), a spring displacement sensor is connected to the motor driver board. The sensor is supplied via the motor driver board and connected via a 6-pin JST connector [1] as depicted in Fig. 9.2.
Wiring Scheme: Spring Displacement Sensor - Motor Driver Board¶
This cable is NOT symmetric.
Signal Name | GND | EncA | EncB | O | Idx | +5V |
---|---|---|---|---|---|---|
Displacement Sensor, pin # | 1 | 2 | 3 | 4 | 5 | 6 |
Motor Driver Board, pin # | 5 | 3 | 2 | 1 | 4 | 6 |

The spring displacement sensor and connector: Please note that the connector cable is not symmetric. Consequently, one end of the connector cable (marked with S or D) is plugged into the sensor board (A) and the other end (B) (marked with M) is plugged into the motor driver board (Fig. 9.1) The connectivity of the cable is described in Section 9.1.1 .

Cables and connectors to connect the spring displacement sensor with the motor driver board; red circles mark the applicable connectors on the printed circuit boards.
Driver Board Mounting¶
To illustrate how a motor driver board is mounted on the MYO-Muscle please refer to Fig. 9.4. The connector for the spring displacement sensor should be facing the spring. Two screws are sufficient to mount the motor driver board on the MYO-Muscle as shown in Fig. 9.4.

Motor driver board mounted on MYO-Muscle
Connectivity¶
The motor driver board has to be connected to the MYO-Ganglion board using the 5-pin JST connectors [2] . Depending where the motor driver board is plugged in (SPI0, SPI1, SPI2 or SPI3) the associate MYO-Muscle can be addressed with the corresponding index the flexrayusbinterface. In other words, the address of a motor driver board (and therefore the MYO-Muscle) is dependent upon the SPI connector it is connected to (see Table 9.1).
SPI Connection | Address / C++ index |
---|---|
SPI0 | [0] |
SPI1 | [1] |
SPI2 | [2] |
SPI3 | [3] |
Wiring Scheme SPI Connector: Ganglion Distribution Board - Motor Driver Board¶
Signal Name | SOMI | SIMO | Clk | SS | Gnd |
---|---|---|---|---|---|
Ganglion Distribution Board, pin# | 1 | 2 | 3 | 4 | 5 |
Motor Driver Board, pin # | 1 | 2 | 4 | 3 | 5 |

Cables and connectors to connect the SPI of the distribution board with the motor driver board; red circles mark the applicable connectors on the printed circuit boards.
[1] | The 6-way JST SH series connectors are available from Farnell Components, Farnell-number 1679112; connecting wires with pre-crimped connectors are available via RS components (300mm RS-number 311-6675, 150mm RS-number 311-6653). |
[2] | The 5-way JST SH series connectors are available from Farnell Components, Farnell-number 169111; connecting wires with pre-crimped connectors are available via RS components (300mm RS-number 311-6675, 150mm RS-number 311-6653). |
MYO-Ganglion¶
The MYO-Ganglion comprises three printed circuit boards (PCB). The PCBs of this set are linked using 2 ribbon cables, the ganglion is powered with up to 24V from simple stripped wires and there are 2 sets of Flexray connectors to connect to the FlexrayBus and daisy-chain other devices: (Fig. 10.2).
The ganglion can be mounted in 3 different ways:
- ‘MyoRobotics carrier’ for the MyoBone - see (Fig. 10.2)
- ‘Ganglion stack’ (Fig. 10.3)
- ‘Ganglion mount’ ‘spider’ (Fig. 10.4)
The centre board features the main floating-point processor, the TMS570LS20216 from Texas Instruments running at 140MHz. Adjacent to the processor board are the power supply and distribution boards, respectively.

The MYO-Ganglion PCB assembly: distribution board with CAN and SPI connections is shown on the left, the centre board is equipped with the main DSP (TMS570LS20216 on bottom side , not visible), the power supply board (24V) is mounted on the right side of the carrier.

The MYO-Ganglion mounted on bone before cables are attached.

The ganglion stack allows for stacking all 3 parts of the ganglion into a tightly integrated package. It is designed to be mounted on the side of a groove 6 aluminium profile.

Three (3) ganglion mounts are required to mount a ganglion to a groove 6 aluminium profile. The ganglion mounts can be integrated into complex structures such as bones.
Addressing¶
A Myorobot can have up to six MYO-Ganglions sharing the FlexRay bus. Each Ganglion has a unique address which is configured using the DIP-switches 1 to 6. In order to enable the Ganglion, one (and only one) of the DIP switches has to be in the ON position. All others have to be in the OFF position. If more than one DIP switch is in the ON position the Ganglion will not participate in the FlexRay communication. Similarly, if none of the switches are in the ON position, the Ganglion will not participate in the FlexRay communication. This provides a convenient way to temporarily disable a Ganglion that is not required (see also Table 10.1).
SW1 | SW2 | SW3 | SW4 | SW5 | SW6 | Address / C++ index |
---|---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | 0 | [0] |
0 | 1 | 0 | 0 | 0 | 0 | [1] |
0 | 0 | 1 | 0 | 0 | 0 | [2] |
0 | 0 | 0 | 1 | 0 | 0 | [3] |
0 | 0 | 0 | 0 | 1 | 0 | [4] |
0 | 0 | 0 | 0 | 0 | 1 | [5] |
any other combination | invalid / not connected |
USB-FlexRay Bridge¶
In order to connect ROS with a Myorobot, a USB-FlexRay bridge is provided. This system is illustrated in Fig. 11.1. To connnect to the PC, a mini-USB lead is necessary. The bridge board is also supplied with 24V, which should be the same voltage source that supplies the Myorobot to establish a common ground connection. The connection to the Myorobot, i.e., via the MYO-Ganglions, is established through a 2-wire FlexRay interface.

The Myorobotics USB-FlexRay Bridge
FlexRay is a differential serial bus and the FlexRay cables used for a Myorobot are a simple twisted pair wires, such as the dedicated Flexray cable FLR09YS-YW. The two FlexRay signal lines are referred to as FRp (FlexRay Plus, the positive signal) and FRm (FlexRay Minus, the negative signal). The FlexRay cable provided with your Myorobotic system is shown in Fig. 11.2. The pink cable is used for the FRp and the green cable for the FRm signal. The MYO-Ganglions feature two pairs of FlexRay connections (see Fig. 10.1) which affords easy daisy-chaining of multiple MYO-Ganglions.

The FlexRay cable used for Myorobotic system: green is the FRm signal, pink the FRp signal, i.e. model FLR09YS-YW.
Other developments¶
Alternative concept for the MYO-Bone design¶
An alternative, bio-inspired MYO-Bone design was developed, composed of a monolithic 3D-printed core and peripheral tensile elements (see Fig. 12.1).
The tensile elements were implemented with Dyneema cables running in parallel to longitudinal axis of the bone and are fixed at its two ends. With the cables, the stresses in the core due to bending loads could be reduced to approx. 50% of the stresses experienced without the cables.
The monolithic core was made of a repetition of identical segments with openings which (1) allowed to access the electric cables running in the centre of the construction and (2) provided slots to attach MYO-Muscle or accessories on the MYO-Bone. The shape of the segment was topologically optimized to reduce the stress in the core in the two different modes of loading, i.e. bending and torsion.

Alternative concept for MYO-Bone design implementing the Bionic structure (+biotensegrity) concept.
To evaluate the performances of the new design regarding resistance and stiffness (with respect to both bending and stiffness), prototypes with weight and size comparable to the MYO-Bone – Type 1 design were built. Tests showed that new design could support the expected loads and that, in comparison with Type 1, it had a lower bending stiffness but a significantly higher torsional stiffness.
Unfortunately, prolonged testing revealed a severe problem: under constant loads the monolithic core experienced severe creep due to the nature of the 3D-printed material, which led to permanent deformations. For that reason, the development of this design was abandoned.
Ball-and-socket joint¶
Sensor principle¶
To ensure accurate movement and control of this type of joint (3 degrees of freedom), the challenge is to determine the exact 3D-position in the ball-and-socket joint. The initial steps towards the development of a ball-and-socket joint sensor are shown. This approach is based on an optical sensor system which is integrated in the base of the ball-and-socket-joint. The sensor shall detect a unique pattern on the spheroid surface of the ball. This pattern contains information which is used to exactly determine the absolute orientation and position in the joint. Using an optical method to determine the absolute pose of a joint-socket, with a unique pattern, gives two possibilities. The first one is to recognize a complex marker (a pattern consists of multiple markers, Fig. 12.2 - right), which requires an expensive camera. The other possibility, which is novel, uses multiple simple markers detected by two very cheap sensors, that can be seen in Fig. 12.2.

Principle scheme (left), Single code-disk (middle), pattern consitting of disk-codes (right).
Known optical orientation systems, and their pattern, require a comparatively high number of pixels. To recognize fine structures or distances e.g. a rectangle (barcode) requires a lot of pixels, presupposed the edges are not aligned with the pixel rows and lines. In three degrees of freedom systems, the rotary orientation of a target to the sensor is arbitrary. The code-disks (orientation points) in the pattern are specially designed for the mouse-sensor, considering the low resolution and variable rotation of the Images. A single code-disk can be seen in Fig. 12.2 - middle. The circular shaped code-disk is all around uniformly arranged. This means that the appearance is independent of the rotation. A rotation of the code-disk does not change the content of the frame. In the right drawing a pattern area consisting of different code-disks is shown. From the perspective of the sensor, the frame is horizontal and can always be fitted in a code-disk. This applies independent of the position or rotation of the sensor view, respectively the pattern. The horizontal frame may be located anywhere in the sensor view, whereas the alignment is fixed, that means always horizontal referred to the sensor view. Reading from left to right through the center of the code-disk enables to read the specific code in a convenient/pixel-saving way. To increase the definite recognition of a code-disk a method is used. A specific code cannot just be found in a pixel row from left to right, but also from right to left or from top to down or from down to top in a code-disk. As soon as minimum two of four of the codes are found, the possibility of a correct specific code corresponding to a code-disk are truly high. To guarantee that the found codes belong to one code-disk, the code-disk-center is used. Reading from the outside to the inside of the code-disk, the last pixel of the specific code is always located in the centre. As soon as the pixel position matches, the specific codes can be collated to the code-disk.

Test Set up
The test setup of one sensor can be seen in Fig. 12.3. The sensitivity of both systems is quite low (20 - 30 %). But possibilities for the improvement are considered. Besides an important characteristic, the Positive Predictive Value is high (85 - 95 %), which shows the reliability of the system.
Mechanical design¶
Although the sensing principle presented in the previous section showed promising results, open challenges remains regarding the integration of the pattern on the ball part of the joint. Therefore, the first prototype of the mechanical concept for the ball-and-socket joint was based on another sensing concept using two absolute sensors. It has a large rotation ranges for all 3 DoF: 110° for both “hinge” axes and 180° for the “pivot” axis. Those three degrees of freedom are reflected by a combination of a carriage, pivot and hinge joint-system. This structure increases the stability of the 3D joint and keeps the ball-socket into position. On both ends of the ball-socket joint, standardised electromechanical interfaces (structural bond) for other modules are implemented. The basic structure of the prototype, as illustrated in Fig. 12.4, has a weight of about 315 grams and an overall dimension of 115x156x125 mm.

Main dimensions of the ball-and-socket joint prototype
The ball-socket joint is actuated by three pairs of antagonistic tendon cables (see Fig. 12.5). Their attachment points are located centrally for a symmetrical application of the force. The moveable cable transmission systems are able to redirect the cables and provide returning forces for the whole motion space of the ball-socket joint.

Cable transmission and assembly of the ball-and-socket joint
Two different sensors that are located inside of the joint for protection reasons generate the three absolute angle positions (see Fig. 12.6). One sensor (using a magnet ring) is placed on the upper pivot joint and the other one (using a 2 DoF joystick sensor) inside of the ball-socket. Both sensors are based on a contactless, magnetic measurement principle.

Absolute position sensors for the measure of the three joint angles
Alternative concept for MYO-Muscle design using leaf spring¶
A new variety of MYO-Muscle Type 1 was developed as alternative to the existing design based on compression spring. In this new design (represented in Fig. 12.7), the series elastic element is implemented with two leaf springs, mounted symmetrically on the sides of the DC motor. Instead of a single tendon cable, two tendon cables are used in parallel to transmit the tendon force and are wrapping around the motor reel following the Do-Helix principle. In this way the radial forces applied by the tendon cables on the reel are balanced and no additional bearing is required to support the reel on the side opposite to the motor. Each tendon cable leaving the motor reel towards the load is passing through a set of three redirecting pulleys, the middle one being fixed to a leaf spring. When a tension force is applied in the cable, an outward force is applied on that pulley causing the deflection of the spring. In that way, elastic energy can be stored in the series elastic element. As the middle pulley moves outwards, the intensity of the lateral force component resulting from the tendon cable tension decreases, until it drops to zero when the tendon cable runs in a straight line between to two outer, fixed pulleys.
This new design has multiple benefits compared to the implementation using the compression spring. First the implementation of the series elastic element is more compact, as it is located on the sides of the motor rather than on top. This allows for example to position other modules on top of a MYO-Muscle (this was exploited for the development of the bi-articular actuation module, presented in the next section). Also, the leaf springs do not require a guiding system and springs with higher energy storage than steel (e.g. fiberglass), which can potentially reduce the weight of the module. Finally, the non-linearity of the series elastic element is more pronounced than in the previous due to the different geometry of the three redirecting pulleys locations. This allows a larger range of stiffness variation via co-contraction of two antagonistic MYO-Muscles.

Alternative implementation of the MYO-Muscle – Type 1 using leaf springs as series elastic elements
A first prototype of this promising concept was built as proof-of-concept (see Fig. 12.7) and helped identify where further developments are required. These include the dimensioning of the leaf springs and the adaptation of the redirecting pulleys dimensions. In addition, a concept for the sensing of the tendon cable tension is still required.
Bi-articular muscle modules¶
In parallel to the development of the new MYO-Muscle design presented in the previous section, the work on the design of a bi-articular muscle module started. The purpose of this module is to convert a MYO-Muscle, designed to actuate a single joint (i.e. as mono-articular muscle), into a bi-articular muscle.
As mono-articular and bi-articular muscles have different roles, it is generally desirable to be able to implement both of them. This poses a practical challenge because (1) the space available on the MYO-Bone is limited and (2) the tendon cables of the multiple muscles actuating the same joint should not interfere. The new MYO-Muscle design was selected as reference actuator for the bi-articular module development because of its greater compactness. As it was still under development, the MYO-Muscle was only summarily modelled.


Bi-articular muscle module. In the middle picture: (a) bi-articular module block and pulley cable, (b) output tendon cable from bi-articular module towards distal joint (here extension of asymmetric hinge joint), (c) output tendon cable from mono-articular MYO-Muscle and (d) output tendon cable from bi-articular module towards proximal joint (here flexion of asymmetric hinge joint)
The developed module is represented in Fig. 12.9. It is composed of a main casing ((2) on the top part of the figure) that can be fixed on the MYO-Bone structure and fit above a MYO-Muscle (which acts as the mono-articular muscle of the next MYO-Joint, numbered as 2 in the figure). On top of the casing, another MYO-Muscle can be mounted. The latter actuate a system of blocks and pulleys shown as (1) on the top part of Figure 3 and represented in more details on the bottom part of the same figure. When the MYO-Muscle contracts, blocks A and B are pulled together and the overall distance between the tendon cable attachments on the joints 1 and 2 shorten. When the A and B blocks move together, the length of the bi-articular muscle stays constant and the motion of both joints is coupled.
For the integration of the module, the adaptation of one of the MYO-Joint was required to provide sufficient attachment points for the multiple tendon cables. The asymmetric hinge joint was selected for this purpose and the module was integrated to mimic the Gastrocnemius muscle, which is the knee flexor - ankle extensor bi-articular muscle in the human leg.
A physical prototype from this construction was built (see Fig. 12.7), where the MYO-Muscle modules were replaced by extension springs.

Prototype of the bi-articular muscle module
Scaling of selected design primitives¶
The issue of scaling the design primitives to other size classes was considered for one type of each design primitives, namely:
The resulting prototypes for the joint and muscle design primitives are shown in Fig. 12.11 and Fig. 12.12 respectively. In both cases, the dimensions have been reduced significantly in comparison to joints of the size class II (see in both figures the size of the module compared to a 1 Euro coin).

Prototype of the asymmetric hinge joint for the small size class

Prototype of the muscle module for the small size class
Injection Moulding¶
Finally, preliminary investigations were performed towards using injecting moulding instead of 3D printing for the production of the plastic parts of the toolkit. The design of various toolkit parts (see Fig. 12.13) was adapted in order to be producible using injection moulding.

Toolkit parts adapted for injection moulding, from top left to bottom right: base of the MYO-Muscle - T1 - V1, upper and under joint forks of the MYO-Joint - T2 - V2, end-spacer of the MYO-Bone - T1- V1, clamping ring of the structural bond
Different types of moulding technologies were considered. A relatively new method, coined Rapid Tooling, turned out to be the most promising for our investigations. It uses a 3D printed mould produced with stereolithography (the 3D printing technology with the highest resolution) and made of thermoset plastic. It can be used to mould parts made of thermoplastic such as PE, PP, PS, ABS and TPE. However, the mould degrades quickly and it can only resist from 100 to 200 injection cycles. Nevertheless, given the low cost of the printed mould, we found out that it is the most cost-effective production method from a few tens up to one thousand pieces. Hence this production technique allows to nicely “close the gap” between prototyping and series production.

CAD design of the mould and mechanical adaptor (left) and moulded clamping rings (right)
Initial testing with this production technique was performed using in-house injection moulding machine. Given limitations on the total injection volume (to 12 cc), the clamping ring was chosen for the first test. The mould and the adaptors for mounting on the machine were designed (see Fig. 12.14) and a first series of 100 pieces was produced, which confirmed the feasibility of the approach. Further work is required to investigate the tolerances of the produced parts (and especially their evolution during the production, as the mould degrades) as well as the mechanical properties of the parts compared to those of parts produced with laser sintering.
Overview¶
Bones¶
There are a number of different MyoBone types:
MyoBone ‘Parallel Assemblies’ - Four Round Tube Fibres¶
Prepare parts¶
Step 1: Cut fibres to the desired length¶

Tips:
- Lathe can create a precise cut and avoids damaging the tube
Step 2: Mill the tube ends¶

Mill the inside hole of both tube ends in order to create a rough surface for gluing.
Tips:
- Use a round moulding cutter with an automatic screwdriver
- Use gloves to protect you from dust
Step 3: Positioning of the tube length¶

Insert the tubes in the tube holding-support and position the tubes with the distance support. Fix the tubes with the screws.
Step 4: Gluing threaded pin in tube ends¶

Add glue evenly to the threaded pin and hole. Use the distances according to the MYO-Bone class.
Tips:
- While drying, use a fixture to keep the thread pin and fibre centred and at the correct distance
- Wear protective gloves
Step 5: Remove the leftover glue¶

Remove the glue with a cutter knife. Consider the hardening-time of the glue.
Production of spacers
Step 2: Drilling and threading of holes¶

Drill and thread the holes of the flexure clamps.
Tips:
- Put small fibers in the flexure clamps to avoid deformation caused by the pressure exerted by the drill bit
Production of end plates and flanges¶

End Spacer:
- Selective Laser Sintering (Polyamide)
SB Flange plate:
- Machining (Aluminium)
- Selective Laser Sintering (Polyamide)
Screws, nuts and washers are standard parts.
Assembly¶

Material needed
4 x CFRP tubes with threaded ends
4 x spacers
16 x M2.5x10 countersunk head screw (DIN 965)
2 x end spacer
8 x M4 thin nut (DIN 39)
8 x M4 spring washer (DIN 127)
2 x SB flange plates
8 x M3x25 countersunk head screw (DIN 7991)
8 x M3 thin nut (DIN 39)
8 x M3 spring washer (DIN 6798)
Step 1: Assemble fibres and spacers¶

Slide the fibres (1) in the flexure clamps (2) of the spacers.
Tips:
- Slide one fibre through all spacers, and then go on with the next fibre
- Flexure clamp screws should be loose
- In preparation for the next step, regroup the spacers next to each other
Step 2: Plug fibres in the end-spacer¶

Plug each fibre in one of the holes of the end-spacer.
Tips:
- Apply sufficient pressure so that the end of the cfc tube is in contact with the shoulder at the bottom of the hole
- Do not press the fibers firmly into the holes
Step 3: Screw fibres to the end spacer¶

Screw each of the fibers to the end-spacer using the M4 nuts and the large spring washers.
Tips:
- Screw the nut until the spring washer is nearly flat, not more
- (if you screw further, you may pull the threaded pin out of the tube)
Step 4: Attach the other end-spacer¶

Repeat steps 2 & 3 for the other end-spacer.
Tips:
- Make sure the end-spacers are as much as possible:
- Parallel to each other
- Perpendicular to the fibres
- Lay the bone on the table to ensure that it is not twisted
Step 5: Adjust the spacers¶

Arrange the spacers equidistantly between the two end-spacers.
Tips:
- Distance between spacers: 51 to 52 mm
- Ensure that the spacers are perpendicular to the fibres
Step 6: Check straightness¶

Check that the MYO-Bone is straight and that both end-spacers are parallel to each other.
If necessary proceed to adjustments.
Step 7: Attach the SB flange plates¶

Screw the SB flange plates to the end-spacers with the M3 screws.
Use the small spring washers together with the M3 nuts (backside).
MyoBone ‘Monolithic’ - T-Slot Profile Fraunhofer¶
Profile¶
Step 1: Cut profiles to the desired length¶

Tips:
- Using circular saw creates a suitable cut and provides a good surface
Step 2: Thread the holes at both ends of the profile¶

- Drill first the holes with a ∅ 4,2 mm bit
- Thread with a M5 tap
Adaptor¶
Step 2: Countersinking of holes¶

Countersink the M5 clearance holes for the fixation to the profile.
Assembly¶

Material needed
1X Aluminum profile with threaded ends
2X Adaptor
8X M5 countersunk head screw (DIN 965)
2X SB flange plates
8X M3x25 countersunk head screw (DIN 7991)
8X M3 thin nut (DIN 31)
8X M3 spring washer (DIN 6798)
Step 1: Assemble profile and adaptors¶

Screw the adaptors at the end of the profile with the M5 screws.
Step 2: Attach the SB flange plates¶

Screw the SB flange plates to the adaptors with the M3 screws and nuts.
Tips:
- Use the small spring washers together with the M3 nuts (backside)
Step 3: Drill the profile for electric cables outlet (if necessary)¶

Drill an outlet for the electric cables at the suitable position.
MyoBone ‘20mm bone’ Monolithic Profile - GI Mod¶
The ‘20mm bone’ is a newly developed monolithic bone for affordable and robust MYO robots. It uses a 6mm groove, 20mm aluminium profile (i.e. Bosch Rexroth, Easy Systemprofile, etc.) as the base and adds laser sintered PA components for mounting muscles and joints.

Visualisation of assembled 20mm bone with mounted muscle and symmetric joint.
Parts List¶
The parts list is maintained at roboy.open-aligni.com.
External users can access it using the following credentials:
- user: roboy
- password: roboy
Level | Manufacturer P/N | Manufacturer Name | Part Type | Description | Quantity | Designator |
---|---|---|---|---|---|---|
Level | Manufacturer P/N | Manufacturer Name | Part Type | Description | Quantity | Designator |
0 | Myo Bone Rexroth 20mm x 350mm | GI | Bones | Rexroth bone assembly of bone, thread, 2 flanges | 1 | |
1 | Strebenprofil 20x20mm Nut 6 | Easy Systemprofile | Screws, Bolts and Rods | 0.35 | ||
1 | Cut thread - M6 | Easy Systemprofile | Labour | Gewindebohrung Rexroth | 2 | |
1 | A11 conical flange plate mod für Boschprofil | Shapeways | MyoCAD | Myo Flange for 20mm Rexroth | 2 | |
1 | Myo Clamping Ring Set | GI | Accessories | Ring that binds 2 flanges together | 2 | |
2 | A11 clamping half ring mod | Shapeways | MyoCAD | Clamp ring to hold the two flange plates together. | 2 | |
2 | 1018-066 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x8 | 4 | |
2 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 2 | |
2 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 2 | |
1 | 2534-314 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M4x8 | 4 | |
1 | Nutenstein Nut 6 M4 | Easy Systemprofile | Screws, Bolts and Rods | Nutenstein schwer Nut 6 - M4 | 4 |
Profiles¶
Step 1: Cut profiles to the desired length¶

Tips:
- Using circular saw creates a suitable cut and provides a good surface
Optional Step 2: Cut a (longitudal) thread into the core of the profile¶
Cut a M6 thread into the end pieces of the profile.
Adaptor¶
Step 1: Print or order flanges¶
The bone requires 2 A11 conical flange plate mod für Boschprofil as the end caps and interfaces to joints. These connections are secured using the A11 clamping half ring mod of the Myo Clamping Ring Set.
Parts can be printed using services such as shapeways.com or virtually any SLS printer.

A11 conical flange plate mod für Boschprofil
Assembly¶
Step 1: Mount flanges¶
Place the flanges
Step 2: Attach the SB flange plates¶

Screw the SB flange plates to the adaptors with the M3 screws and nuts.
Tips:
- Use the small spring washers together with the M3 nuts (backside)
Step 3: Drill the profile for electric cables outlet (if necessary)¶

Drill an outlet for the electric cables at the suitable position.
Joints¶
J22 Symmetric Joint¶

Fully assembled J22 asymmetric joint showing the optional connectivity in the flange.
Parts List¶
The parts list is maintained at roboy.open-aligni.com.
External users can access it using the following credentials:
- user: roboy
- password: roboy
Level | Manufacturer P/N | Manufacturer Name | Part Type | Description | Quantity | Designator |
---|---|---|---|---|---|---|
0 | J22 Asymmetric joint | MyoRobotics Consortium | Joints | Asymmetric elbow joint | 1 | |
1 | J22 prox joint end | GI | MyoCAD | Under joint fork that provides an interface for the structural bond. | 1 | |
1 | J22 dist joint end | GI | MyoCAD | Upper joint fork that provides an interface for the structural bond. | 1 | |
1 | J22 prox lever arm adapter | GI | Machined parts | 2 | ||
1 | J22 dist level arm adapter | GI | Machined parts | 2 | ||
1 | J22 axle assembled | GI | MyoCAD | This is all the parts required to make the axle pin work in the asymmetric joint | 1 | |
2 | J22 axle | GI | Machined parts | This is the joint axle that goes through the upper and under joint fork | 1 | |
2 | 626-2Z | NKE | Bearings | Bearing 6 x 19 x 6 mm | 2 | |
2 | 1950-007 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Circlip 9 x 1mm | 2 | |
2 | 1950-004 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Circlip 6 x 0.7 | 2 | |
2 | MyoArm Assembly | GI | Labour | 0.17 | ||
1 | J22 cover | GI | MyoCAD | Side cover of the joint for myorobotics elbow asymmetric | 1 | |
1 | J22 cover sensor | GI | MyoCAD | This covers the magnet and the SIM board | 1 | |
1 | J22 cabel cover v4 | GI | MyoCAD | This used in the asymmetric joint to decrease the risk of the cable jumping out the guiding pulley. | 1 | |
1 | J22 Guiding pulley assembled | MyoRobotics Consortium | Accessories | Putting together of the small guided pully | 1 | |
2 | J22 pulley centre | GI | MyoCAD | Is used to create the pulley which is then inserted in to the upper joint fork | 1 | |
2 | 693-2Z | NKE | Bearings | Bearing 3 x 8 x 4 mm | 1 | |
2 | 1018-066 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x8 | 1 | |
2 | MyoMuscle Assembly | GI | Labour | 0.17 | ||
1 | J22 Cabel centering | GI | MyoCAD | This used in the asymmetric joint to decrease the risk of the cable jumping out the guiding pulley. | 1 | |
1 | Large Hinge Pin 6x45 | MyoRobotics Consortium | Screws, Bolts and Rods | The labour to create the groves and attach the washer | 1 | |
2 | 1018-190 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Hinge pin 45 x 6 mm | 1 | |
2 | MyoArm Assembly | GI | Labour | 0.17 | ||
2 | 1956-114 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 5 mm | 2 | |
1 | Large Hinge Pin 4x25 | MyoRobotics Consortium | Screws, Bolts and Rods | 1 | ||
2 | 1018-112 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | cylindric bolt 25 x 4 mm | 1 | |
2 | MyoArm Assembly | GI | Labour | 0.17 | ||
2 | 1956-110 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 3.2 mm | 2 | |
1 | Large Hinge Pin 3x24 | MyoRobotics Consortium | Screws, Bolts and Rods | This is the labour need to create the hinge pin groves and attach washers (was meant to be 3x25) | 1 | |
2 | 1018-082 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x24 | 1 | |
2 | 1956-108 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 2.3 mm | 2 | |
2 | MyoArm Assembly | GI | Labour | 0.17 | ||
1 | 1956-108 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 2.3 mm | 2 | |
1 | 1956-114 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 5 mm | 2 | |
1 | 1956-110 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 3.2 mm | 2 | |
1 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 5 | |
1 | 813 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 4 | |
1 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 4 | |
1 | J22 pulley prox joint end | GI | MyoCAD | This is used for the pulley for the cable to be able to move | 1 | |
1 | MyoJoint Sensor | GI | MyoRobotics Products | Joint sensor for a MyoRobotics elbow | 1 | |
2 | Joint Angle Sensor Board (JASB) | Embedded Robotic Systems LLP | Microcontroller | Sim board used with the magnet in the asymmetric joint | 1 | |
2 | RMM44A3A00 | RLS | Microcontroller | Magnet for the sensor board | 1 | |
2 | Cable JASG to CAN | GI | Tendon, Rope, Cables | CAN bus cable for the joint sensor | 1 | |
3 | SH3-SH3-28300 | JST | Tendon, Rope, Cables | Cable, crimped, 300mm for JST SH series | 4 | |
3 | SHR-04V-S-B | JST | Tendon, Rope, Cables |
|
1 | |
3 | MyoMuscle Assembly | GI | Labour | 0.15 | ||
3 | SPUL/1.2/3.2MMBLK SPUL/1.2/3.2MMBLK | Pro Power | Tendon, Rope, Cables | Shrink Tube 3.2-1.2mm | 0.1 | |
2 | Cable magnetic joint sensor to JASB | GI | Tendon, Rope, Cables | Wires that come out of the joint | 1 | |
3 | MyoMuscle Assembly | GI | Labour | 0.75 | ||
3 | 2842/19 RD005 | Alpha Wire | Tendon, Rope, Cables | Redwire for magnet ( 30.5m, Diameter 0.688mm) | 10 | |
3 | 2842/19 BL005 | Alpha Wire | Tendon, Rope, Cables | Blue wire for magnet ( 30.5m, Diameter 0.688mm) | 10 | |
3 | 2842/19 GR005 | Alpha Wire | Tendon, Rope, Cables | Green wire for magnet ( 30.5m, Diameter 0.688mm) | 10 | |
2 | RMB20VA10BC1 | RLS | Sensors | Magnet sensor board | 1 | |
1 | 2534-278 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M3 screw cylinder 8mm into the lower joint fork | 8 | |
1 | 2534-234 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M2 screw cylinder 6mm | 5 | |
1 | J22 prox lever arm adapter bonnet | GI | MyoCAD | 2 |
Upper Joint Fork¶
Step 1: Mount metal sheets on upper joint fork¶

Press the four M2 brass inserts into the upper joint fork using pliers or a bench vise.

Screw the two upper metal sheets on the sides with M2 screws.
Step 2: Mount the cable catching¶

Press the M2 brass insert into the upper joint fork on the top side.

Fix the cable catching mechanism with M2 screws.
Step 3: Mount the guiding pulley¶

Place the pulley between the metal sheets. Push in the pulley axle (hinge pin 25x4 mm).

If needed adjust the diameter of the holes of the metal sheets.

Secure the axle on both sides with lock washers or locktite.
Lower Joint Fork¶
Step 4: Mount the metal sheets on the under joint fork¶

Insert the M3 brass inserts (with heads) in the holes on the inside of the joint, and the M3 brass inserts (without heads) from the outer side.

Insert the under metal sheets in the appropriate slots and fix them with M3 screws
Step 5: Mount the cable fixation pin¶

Mount the cable fixation pin
- (if needed) adjust the diameter of the mounting holes for pin (hinge pin 45x6 mm)
- Mount the pin
- Secure the pin on both sides with the lock washers
- Clip on it the cable centring clip or glue in the pin
- Note: Bearings should not be in the under joint fork at this time
Step 6: Mount the guiding pulley¶

Press the ball bearing into the pulley. Insert the axle pin in the ball bearing

Mount the assembly in to the upper joint fork
Step 7: Assemble the joint axle (part 1)¶

Mount joint axle side.

Insert the joint axle through the upper and under joint forks. Mount the other large circlip on the other side of the joint axle
Step 8: Assemble the joint axle (part 2)¶

Mount the other ball bearing. Mount the other small circlip. Glue the sensor magnet (use only a small drop of glue!). Note: the magnet can also be glued before mounting the joint axle.

Optionally: Secure the joint axle with the countersunk M3 screw.
Step 9: Mount the side covers¶

- Assemble the sensor and SIM boards and the circular space in the larger side cover (glue the boards to the cover)
- Check that the red, blue and green cables are facing upwards and the other red cables are behind
- Screw the side covers on the under joint fork
Optional Step 10: Solder the cables on one of the SB connection boards¶
This step can be skipped if now SB connection boards are to be used.

Prepare cable tree on connector boards.
Cut on 15 cm length:
4 data wires 0,25 mm2
2 power wires highly flexible silicon 1,5 mm2
Connector side:

Pin colour code:
F1+ white
F1 - brown
F2 + yellow
F2 - green
Optional Step 11: Guide the cables through the joint and solder them to the other SB connection board¶
This step can be skipped if now SB connection boards are to be used.

Strip all cables until the SB-pocket.
Pull cables through the connector board and solder from top. Screw both connector boards to joint with four M1,6 screws.
Connector side:

Pin colour code:
F1+ white
F1 - brown
F2 + yellow
F2 - green
Tips:
- Put the joint in the position of the longest cable path!
- Avoid cable crossovers by connecting to board
Muscles¶
Muscle Mod Non-CE¶
These muscles are not CE conform due to the missing protecting bar covering the spring.
Parts List¶
The parts list is maintained at roboy.open-aligni.com.
External users can access it using the following credentials:
- user: roboy
- password: roboy
Level | Manufacturer P/N | Manufacturer Name | Part Type | Description | Quantity | Designator |
---|---|---|---|---|---|---|
1 | JFM-0304-03 | Igus | Bearings | Igus Gleitlager JFM 0304-03 (Guide-Pulley) | 2 | Cross-Guide |
1 | JFM-0304-05 | Igus | Bearings | Igus Gleitlager JFM 0304-05 (Guide-Roller) | 2 | |
1 | JFM-0608-06 | Igus | Bearings | Igus Gleitlager JFM 0608-06 (Motor Reel) | 1 | Tendon-Spooling |
1 | MCM-12-02 | Igus | Bearings | Igus Cliplager MCM-12-02 | 2 | Displacement-Assembly |
1 | 2534-294 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 3x25 | 1 | |
1 | 4001-205 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Selbstschneidende Schraube(Blechschraube) | 2 | |
1 | 2534-236 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 2x8 | 2 | Cross-Guide |
1 | 1160-043 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Senkkopfschraube M 2,5x10 | 3 | |
1 | 1018-082 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x24 | 1 | Cross-Guide |
1 | 1018-076 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x18 | 1 | |
1 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 2 | Cross-Guide |
1 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 3 | |
1 | M12 main body allConfig CE - new | MyoRobotics Consortium | MyoCAD | body | 1 | |
1 | M11 main body cover | Shapeways | MyoCAD | body cover | 1 | |
1 | M11 cable pulley horizontal | Shapeways | MyoCAD | cable pulley | 1 | |
1 | M11 cross guide cover | Shapeways | MyoCAD | cross guide cover | 1 | Cross-Guide |
1 | M11 cross guide roller - new | Shapeways | MyoCAD | cross guide roller | 1 | Cross-Guide |
1 | D-311 | Gutekunst Federn | Springs | Feder D-311 | 1 | Displacement-Assembly |
1 | myoMotorDriver | Embedded Robotic Systems LLP | Boards | Motor Driver Board | 1 | |
1 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 1 | |
1 | Spring Displacement Sensor Board | Embedded Robotic Systems LLP | Boards | Sensor Board | 1 | Displacement-Assembly |
1 | MyoMuscle Assembly | GI | Labour | 0.75 | ||
1 | Cable-Displacement-Sensor | GI | Tendon, Rope, Cables | Displacement Sensor Cable | 1 | Displacement-Assembly |
2 | SHR-06V-S-B | JST | Tendon, Rope, Cables | Connector Male - 1.0mm pitch/Disconnectable Crimp style connectors, with protrusions | 2 | |
2 | SH3-SH3-28150 | JST | Tendon, Rope, Cables | Cable, crimped, 150mm for JST SH3 series | 6 | |
2 | MyoMuscle Assembly | GI | Labour | 0.25 | ||
1 | 458375 | Maxon | Motors | Maxon Motor-Getriebe-Encoder-Kombination | 1 | |
1 | ISO 7379-4-M3-20 | Ganter Griff | Screws, Bolts and Rods | ISO 7379 Passschrauben mit Bund Stahl, Festigkeit 12.9 | 2 | |
1 | Complete pulley spring displacement shaft without spring | GI | Machined parts | Complete assembly of pulley, shaft, magnetic strip, threaded rod, but NO spring | 1 | |
2 | Assembly of pulley fork for displacement shaft | GI | Machined parts | Pulley in fork to be installed on displacement shaft | 1 | |
3 | MyoMuscle Assembly | GI | Labour | 0.12 | ||
3 | GN 751-4-8-M4-SL-AL | Ganter Griff | Screws, Bolts and Rods | Gabelgelenke GN 751 aus Aluminium bestehen aus dem Gabelkopf DIN 71752 und einem Bolzen mit axialer KL- oder SL-Wellensicherung. | 1 | |
3 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 1 | |
2 | Displacement shaft | GI | Machined parts | Shaft holding the magnetic strip of the displacement sensor | 1 | |
2 | 2210-850 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 976 Gewindestangen | 12 | Displacement-Assembly |
2 | KBEE5-1.2KL50 | Bogen Electronic | Sensors | Linear Magnetic Scale Incremental | 5 | Displacement-Assembly, Displacement-Sensor |
2 | M11 spacer sleeve | Shapeways | MyoCAD | spacer sleeve | 1 | |
2 | MyoMuscle Assembly | GI | Labour | 0.5 | Assemble parts | |
2 | 2012-104 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 315 Flügelmuttern kleine Flügelform | 1 | Displacement-Assembly |
2 | 1544-020 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 4,3 x 20mm Kotflügelscheiben | 1 | Displacement-Assembly |
2 | 2896-150 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 934 Sechskantmuttern | 1 | |
2 | 1900-144 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Fächerscheibe Az 4.3 (für M4) | 1 | |
1 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 2 | |
1 | M11 motor reel | GI | Machined parts | Cable Winch | 1 | Tendon-Spooling |
1 | M11 Spring Sensor Wedge | GI | MyoCAD | Wedge for holding in the magnetic encoder of the displacement sensor | 1 | Displacement-Assembly |
1 | 2118-924 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 913 Gewindestifte mit Kegelkuppe, mit Innensechskant “Madenschraube” | 1 | Tendon-Spooling |
1 | 1708-844 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Federringe B2 (for M2) | 2 | Cross-Guide |
1 | 1556-202 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts |
|
1 |

Visualisation of a fully assembled muscle unit.
Step 1: Mount the plain bearings into the housing¶

Install the gliding bearings into the muscle housing.
Put the plain bearing (1) and the clip plain bearings (2) into the housing.
Put the two M2 inserts (3) in the holes of the housing.
Step 2: Assemble the pulley yoke and the spring guide shaft¶

Assemble the pulley yoke and displacement or spring guide shaft
Put screw glue into the screw thread of the pulley yoke (1) and connect it with the threaded rod (2).
Stick the magnetic strip (3) in the longitudinal groove in the spring guide shaft (4). The magnetic strip should be as near as possible to the pulley yoke as you can see in the example.
Slide the washer (5) down the threaded rod to the pulley yoke.
Slide the pulley yoke with the threaded rod from the right through the clip plain bearings (6) and put it in position.
Slide the spring guide shaft from the left through the clip plain bearings so that the threaded rod passes in its middle. Fix the rod on the shaft with the nut and washer (7).
Step 3: Mount the spring¶

Mount the spring.
Slide first the spring (1) then the spacer sleeve (2) from the left over the spring guide shaft (4) axle.
Use the washer (3) to push the spacer sleeve until it starts to preload the spring.
Then fix in place with the wing nut (5).
Step 4: Assemble the cross-guide¶

Assemble the cross guide of the displacement shaft.
Insert the plain bearings (1) into the guide-roller (2) and insert the cylindrical pin (3).
Insert this assembly into the cross-guide (4).
Mount the cross-guide (4) into the housing.
Then screw in the two screws (5) to hold it in place.
Step 5: Assemble the cover¶

Assemble the muscle cover and tendon guide.
Press the three M3 inserts (1) into the cover (2).
Insert the plain bearings (3) in the cover and place the printed pulley (4) between the plain bearings.
Fix the printed pulley to the cover by inserting the cylindrical pin (5) through both the pulley and the plain bearing. The pin must be pressed in the pulley.
Step 6: Mount the cover and the pulleys on the housing¶

Placement of guiding pulleys in muscle housing.
Insert the screws (2) and (3) from the back of the housing in holes (a), (b) and (c). One black screw (3) must be in hole (a).
The other black screw (3) goes in hole (c) as an axle for one of the bearings (1) and other black screw in hole (a) acts as another axle for the other bearing (1).
Mount the cover (4) on the housing and tighten all screws. Make sure that the brass pulley can still rotate freely.
Step 7: Mount the reel on the motor shaft¶

Fixing tendon reel on motor shaft.
Put screw glue on the setscrew (2).
Mount the reel (1) using the setscrew on the shaft of the motor (3).
Step 8: Mount the motor and the motor driver board¶

Mounting motor and driver board to muscle housing
Use the three screws (1) to mount the motor to the housing.
Connect the motor to the motor driver board (2).
Mount the board with the screws (3) to the housing.
Step 9: Connect to the dispacement sensor to the Motor board¶

Mounting of the displacement sensor on the muscle unit and cabling to the motor driver board.
The motor board (3) should already be attached by the screws in previous step.
Insert the DS header (displacement sensor pins) on wire (2) into the displacement sensor (1).
Then the MD header (motor driver board pins) on wire (2) into the motor board.
Then place the displacement sensor (1) into the slot on top of the housing unit and secure it using the wedge (4) as shown in the photo on the right.
The side of the displacement sensor shown Fig. 4.17 should be on the inside of the muscle houseing, close to the magnetic strip on the displacement shaft.
Applications¶
There are a number of different MyoBone types:
MyoArm¶
The MyoArm is a 13 myo muscle system. 9 muscles actuate the shoulder complex, 2 muscles the upper arm and 2 muscles the lower arm (1DOF hand, forearm rotation).
Partslist¶
The parts list is maintained at roboy.open-aligni.com.
External users can access it using the following credentials:
- user: roboy
- password: roboy
Level | Manufacturer P/N | Manufacturer Name | Part Type | Description | Quantity | Designator |
---|---|---|---|---|---|---|
Level | Manufacturer P/N | Manufacturer Name | Part Type | Description | Quantity | Designator |
0 | gi-myo-assemly-arm-hand | GI | MyoRobotics Products | 13 motor Robotic arm with Myo-Bones and Roboy Hand | 1 | |
1 | MyoShoulder ‘MyoArm’ | MyoRobotics Consortium | MyoRobotics Products | MyoArm inspired shoulder | 1 | joint |
2 | Muscle | MyoRobotics Consortium | Muscles | 9 | ||
3 | JFM-0304-03 | Igus | Bearings | Igus Gleitlager JFM 0304-03 (Guide-Pulley) | 2 | Cross-Guide |
3 | JFM-0304-05 | Igus | Bearings | Igus Gleitlager JFM 0304-05 (Guide-Roller) | 2 | |
3 | JFM-0608-06 | Igus | Bearings | Igus Gleitlager JFM 0608-06 (Motor Reel) | 1 | Tendon-Spooling |
3 | MCM-12-02 | Igus | Bearings | Igus Cliplager MCM-12-02 | 2 | Displacement-Assembly |
3 | 2534-294 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 3x25 | 1 | |
3 | 4001-205 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Selbstschneidende Schraube(Blechschraube) | 2 | |
3 | 2534-236 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 2x8 | 2 | Cross-Guide |
3 | 1160-043 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Senkkopfschraube M 2,5x10 | 3 | |
3 | 1018-082 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x24 | 1 | Cross-Guide |
3 | 1018-076 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x18 | 1 | |
3 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 2 | Cross-Guide |
3 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 3 | |
3 | M12 main body allConfig CE - new | MyoRobotics Consortium | MyoCAD | body | 1 | |
3 | M11 main body cover | Shapeways | MyoCAD | body cover | 1 | |
3 | M11 cable pulley horizontal | Shapeways | MyoCAD | cable pulley | 1 | |
3 | M11 cross guide cover | Shapeways | MyoCAD | cross guide cover | 1 | Cross-Guide |
3 | M11 cross guide roller - new | Shapeways | MyoCAD | cross guide roller | 1 | Cross-Guide |
3 | D-311 | Gutekunst Federn | Springs | Feder D-311 | 1 | Displacement-Assembly |
3 | myoMotorDriver |
|
Boards | Motor Driver Board | 1 | |
3 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 1 | |
3 | Spring Displacement Sensor Board |
|
Boards | Sensor Board | 1 | Displacement-Assembly |
3 | MyoMuscle Assembly | GI | Labour | 0.75 | ||
3 | Cable-Displacement-Sensor | GI | Tendon, Rope, Cables | Displacement Sensor Cable | 1 | Displacement-Assembly |
4 | SHR-06V-S-B | JST | Tendon, Rope, Cables | Connector Male - 1.0mm pitch/Disconnectable Crimp style connectors, with protrusions | 2 | |
4 | SH3-SH3-28150 | JST | Tendon, Rope, Cables | Cable, crimped, 150mm for JST SH3 series | 6 | |
4 | MyoMuscle Assembly | GI | Labour | 0.25 | ||
3 | 458375 | Maxon | Motors | Maxon Motor-Getriebe-Encoder-Kombination | 1 | |
3 | ISO 7379-4-M3-20 | Ganter Griff | Screws, Bolts and Rods | ISO 7379 Passschrauben mit Bund Stahl, Festigkeit 12.9 | 2 | |
3 | Complete pulley spring displacement shaft without spring | GI | Machined parts | Complete assembly of pulley, shaft, magnetic strip, threaded rod, but NO spring | 1 | |
4 | Assembly of pulley fork for displacement shaft | GI | Machined parts | Pulley in fork to be installed on displacement shaft | 1 | |
5 | MyoMuscle Assembly | GI | Labour | 0.12 | ||
5 | GN 751-4-8-M4-SL-AL | Ganter Griff | Screws, Bolts and Rods | Gabelgelenke GN 751 aus Aluminium bestehen aus dem Gabelkopf DIN 71752 und einem Bolzen mit axialer KL- oder SL-Wellensicherung. | 1 | |
5 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 1 | |
4 | Displacement shaft | GI | Machined parts | Shaft holding the magnetic strip of the displacement sensor | 1 | |
4 | 2210-850 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 976 Gewindestangen | 12.0 | Displacement-Assembly |
4 | KBEE5-1.2KL50 | Bogen Electronic | Sensors | Linear Magnetic Scale Incremental | 5.0 | Displacement-Assembly, Displacement-Sensor |
4 | M11 spacer sleeve | Shapeways | MyoCAD | spacer sleeve | 1 | |
4 | MyoMuscle Assembly | GI | Labour | 0.5 | Assemble parts | |
4 | 2012-104 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 315 Flügelmuttern kleine Flügelform | 1 | Displacement-Assembly |
4 | 1544-020 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 4,3 x 20mm Kotflügelscheiben | 1 | Displacement-Assembly |
4 | 2896-150 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 934 Sechskantmuttern | 1 | |
4 | 1900-144 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Fächerscheibe Az 4.3 (für M4) | 1 | |
3 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 2 | |
3 | M11 motor reel | GI | Machined parts | Cable Winch | 1 | Tendon-Spooling |
3 | M11 Spring Sensor Wedge | GI | MyoCAD | Wedge for holding in the magnetic encoder of the displacement sensor | 1 | Displacement-Assembly |
3 | 2118-924 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 913 Gewindestifte mit Kegelkuppe, mit Innensechskant “Madenschraube” | 1 | Tendon-Spooling |
3 | 1708-844 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Federringe B2 (for M2) | 2 | Cross-Guide |
3 | 1556-202 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts |
|
1 | |
2 | myoGanglion |
|
Boards | SIM | 3 | Ganglion |
2 | Tendon Guide Shoulder - Angel Öse | GI | MyoCAD | 6 | ||
3 | Aufnahme Gegenstück | GI | MyoCAD | 1 | ||
3 | Aufnahme Angelöse | GI | MyoCAD | 1 | ||
3 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 2 | |
3 | 2534-278 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M3 screw cylinder 8mm into the lower joint fork | 2 | |
3 | 2534-236 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 2x8 | 2 | |
3 | 2.6*8# Fishing rod guide | THKFISH | Bearings | Fishining line guide to be installed on top of fishing rod, 2.6mm rod tip diameter | 1 | |
2 | Shoulder Joint | MyoRobotics Consortium | Joints | MyoArm inspired shoulder joint | 1 | |
3 | Schultergelenk Mod | MyoRobotics Consortium | MyoCAD | Modified shoulder socket for ball-in-socket joint | 1 | |
3 | Aufnahme Angelöse Schulter Gegenstück | MyoRobotics Consortium | MyoCAD | Counter part for fixing fishing rod guide to joint | 3 | |
3 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 6 | |
3 | 2.6*8# Fishing rod guide | THKFISH | Bearings | Fishining line guide to be installed on top of fishing rod, 2.6mm rod tip diameter | 3 | |
3 | 2534-236 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 2x8 | 6 | |
2 | Schulterplatte vorne | GI | Machined parts | 1 | ||
2 | Schulterplatte hinten | GI | Machined parts | 1 | ||
2 | Verbindungsplatte | GI | Machined parts | 1 | ||
2 | Ganglion Stack | GI | MyoCAD | 3 | Ganglion | |
2 | Nutenstein Nut 10 M4 | Easy Systemprofile | Screws, Bolts and Rods | Nutenstein schwer Nut 10 - M4 | 3 | Ganglion |
1 | Myo Roboy Upper Arm | MyoRobotics Consortium | MyoRobotics Products | Roboys Humerus - Myorobotics Edition | 1 | |
2 | a - oberarm | GI | MyoCAD | Roboy type MyoRobotics bone with mounts for muscles and ganglion and internal cableing | 1 | |
2 | p - oberarm deckel - 2 | GI | MyoCAD | cover for internal cabling of Roboy inspired Roboy arm | 1 | |
2 | p - oberarm - decker v01 mod | GI | MyoCAD | (lower?!) cover for internal cabling of Roboy inspired Roboy arm | 1 | |
2 | DIN 319-KU-40-M10-E | Ganter Griff | Nuts, rings, inserts | Ball knob with threaded bushing, D1=40mm, M10 | 1 | Ball in socket joint |
2 | Muscle | MyoRobotics Consortium | Muscles | 2 | ||
3 | JFM-0304-03 | Igus | Bearings | Igus Gleitlager JFM 0304-03 (Guide-Pulley) | 2 | Cross-Guide |
3 | JFM-0304-05 | Igus | Bearings | Igus Gleitlager JFM 0304-05 (Guide-Roller) | 2 | |
3 | JFM-0608-06 | Igus | Bearings | Igus Gleitlager JFM 0608-06 (Motor Reel) | 1 | Tendon-Spooling |
3 | MCM-12-02 | Igus | Bearings | Igus Cliplager MCM-12-02 | 2 | Displacement-Assembly |
3 | 2534-294 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 3x25 | 1 | |
3 | 4001-205 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Selbstschneidende Schraube(Blechschraube) | 2 | |
3 | 2534-236 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 2x8 | 2 | Cross-Guide |
3 | 1160-043 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Senkkopfschraube M 2,5x10 | 3 | |
3 | 1018-082 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x24 | 1 | Cross-Guide |
3 | 1018-076 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x18 | 1 | |
3 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 2 | Cross-Guide |
3 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 3 | |
3 | M12 main body allConfig CE - new | MyoRobotics Consortium | MyoCAD | body | 1 | |
3 | M11 main body cover | Shapeways | MyoCAD | body cover | 1 | |
3 | M11 cable pulley horizontal | Shapeways | MyoCAD | cable pulley | 1 | |
3 | M11 cross guide cover | Shapeways | MyoCAD | cross guide cover | 1 | Cross-Guide |
3 | M11 cross guide roller - new | Shapeways | MyoCAD | cross guide roller | 1 | Cross-Guide |
3 | D-311 | Gutekunst Federn | Springs | Feder D-311 | 1 | Displacement-Assembly |
3 | myoMotorDriver |
|
Boards | Motor Driver Board | 1 | |
3 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 1 | |
3 | Spring Displacement Sensor Board |
|
Boards | Sensor Board | 1 | Displacement-Assembly |
3 | MyoMuscle Assembly | GI | Labour | 0.75 | ||
3 | Cable-Displacement-Sensor | GI | Tendon, Rope, Cables | Displacement Sensor Cable | 1 | Displacement-Assembly |
4 | SHR-06V-S-B | JST | Tendon, Rope, Cables | Connector Male - 1.0mm pitch/Disconnectable Crimp style connectors, with protrusions | 2 | |
4 | SH3-SH3-28150 | JST | Tendon, Rope, Cables | Cable, crimped, 150mm for JST SH3 series | 6 | |
4 | MyoMuscle Assembly | GI | Labour | 0.25 | ||
3 | 458375 | Maxon | Motors | Maxon Motor-Getriebe-Encoder-Kombination | 1 | |
3 | ISO 7379-4-M3-20 | Ganter Griff | Screws, Bolts and Rods | ISO 7379 Passschrauben mit Bund Stahl, Festigkeit 12.9 | 2 | |
3 | Complete pulley spring displacement shaft without spring | GI | Machined parts | Complete assembly of pulley, shaft, magnetic strip, threaded rod, but NO spring | 1 | |
4 | Assembly of pulley fork for displacement shaft | GI | Machined parts | Pulley in fork to be installed on displacement shaft | 1 | |
5 | MyoMuscle Assembly | GI | Labour | 0.12 | ||
5 | GN 751-4-8-M4-SL-AL | Ganter Griff | Screws, Bolts and Rods | Gabelgelenke GN 751 aus Aluminium bestehen aus dem Gabelkopf DIN 71752 und einem Bolzen mit axialer KL- oder SL-Wellensicherung. | 1 | |
5 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 1 | |
4 | Displacement shaft | GI | Machined parts | Shaft holding the magnetic strip of the displacement sensor | 1 | |
4 | 2210-850 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 976 Gewindestangen | 12.0 | Displacement-Assembly |
4 | KBEE5-1.2KL50 | Bogen Electronic | Sensors | Linear Magnetic Scale Incremental | 5.0 | Displacement-Assembly, Displacement-Sensor |
4 | M11 spacer sleeve | Shapeways | MyoCAD | spacer sleeve | 1 | |
4 | MyoMuscle Assembly | GI | Labour | 0.5 | Assemble parts | |
4 | 2012-104 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 315 Flügelmuttern kleine Flügelform | 1 | Displacement-Assembly |
4 | 1544-020 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 4,3 x 20mm Kotflügelscheiben | 1 | Displacement-Assembly |
4 | 2896-150 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 934 Sechskantmuttern | 1 | |
4 | 1900-144 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Fächerscheibe Az 4.3 (für M4) | 1 | |
3 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 2 | |
3 | M11 motor reel | GI | Machined parts | Cable Winch | 1 | Tendon-Spooling |
3 | M11 Spring Sensor Wedge | GI | MyoCAD | Wedge for holding in the magnetic encoder of the displacement sensor | 1 | Displacement-Assembly |
3 | 2118-924 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 913 Gewindestifte mit Kegelkuppe, mit Innensechskant “Madenschraube” | 1 | Tendon-Spooling |
3 | 1708-844 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Federringe B2 (for M2) | 2 | Cross-Guide |
3 | 1556-202 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts |
|
1 | |
2 | myoGanglion |
|
Boards | SIM | 1 | |
2 | 2896-146 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | M3 hex normal nut | 8 | muscle fixation |
2 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 8 | muscle fixation |
2 | 2896-162 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | DIN 934 Sechskantmuttern M10 | 2 | Ball in socket joint |
1 | J22 Asymmetric joint | MyoRobotics Consortium | Joints | Asymmetric elbow joint | 1 | |
2 | J22 prox joint end | GI | MyoCAD | Under joint fork that provides an interface for the structural bond. | 1 | |
2 | J22 dist joint end | GI | MyoCAD | Upper joint fork that provides an interface for the structural bond. | 1 | |
2 | J22 prox lever arm adapter | GI | Machined parts | 2 | ||
2 | J22 dist level arm adapter | GI | Machined parts | 2 | ||
2 | J22 axle assembled | GI | MyoCAD | This is all the parts required to make the axle pin work in the asymmetric joint | 1 | |
3 | J22 axle | GI | Machined parts | This is the joint axle that goes through the upper and under joint fork | 1 | |
3 | 626-2Z | NKE | Bearings | Bearing 6 x 19 x 6 mm | 2 | |
3 | 1950-007 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Circlip 9 x 1mm | 2 | |
3 | 1950-004 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Circlip 6 x 0.7 | 2 | |
3 | MyoArm Assembly | GI | Labour | 0.17 | ||
2 | J22 cover | GI | MyoCAD | Side cover of the joint for myorobotics elbow asymmetric | 1 | |
2 | J22 cover sensor | GI | MyoCAD | This covers the magnet and the SIM board | 1 | |
2 | J22 cabel cover v4 | GI | MyoCAD | This used in the asymmetric joint to decrease the risk of the cable jumping out the guiding pulley. | 1 | |
2 | J22 Guiding pulley assembled | MyoRobotics Consortium | Accessories | Putting together of the small guided pully | 1 | |
3 | J22 pulley centre | GI | MyoCAD | Is used to create the pulley which is then inserted in to the upper joint fork | 1 | |
3 | 693-2Z | NKE | Bearings | Bearing 3 x 8 x 4 mm | 1 | |
3 | 1018-066 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x8 | 1 | |
3 | MyoMuscle Assembly | GI | Labour | 0.17 | ||
2 | J22 Cabel centering | GI | MyoCAD | This used in the asymmetric joint to decrease the risk of the cable jumping out the guiding pulley. | 1 | |
2 | Large Hinge Pin 6x45 | MyoRobotics Consortium | Screws, Bolts and Rods | The labour to create the groves and attach the washer | 1 | |
3 | 1018-190 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Hinge pin 45 x 6 mm | 1 | |
3 | MyoArm Assembly | GI | Labour | 0.17 | ||
3 | 1956-114 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 5 mm | 2 | |
2 | Large Hinge Pin 4x25 | MyoRobotics Consortium | Screws, Bolts and Rods | 1 | ||
3 | 1018-112 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | cylindric bolt 25 x 4 mm | 1 | |
3 | MyoArm Assembly | GI | Labour | 0.17 | ||
3 | 1956-110 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 3.2 mm | 2 | |
2 | Large Hinge Pin 3x24 | MyoRobotics Consortium | Screws, Bolts and Rods | This is the labour need to create the hinge pin groves and attach washers (was meant to be 3x25) | 1 | |
3 | 1018-082 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x24 | 1 | |
3 | 1956-108 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 2.3 mm | 2 | |
3 | MyoArm Assembly | GI | Labour | 0.17 | ||
2 | 1956-108 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 2.3 mm | 2 | |
2 | 1956-114 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 5 mm | 2 | |
2 | 1956-110 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Lock washer 3.2 mm | 2 | |
2 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 5 | |
2 | 813 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 4 | |
2 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 4 | |
2 | J22 pulley prox joint end | GI | MyoCAD | This is used for the pulley for the cable to be able to move | 1 | |
2 | MyoJoint Sensor | GI | MyoRobotics Products | Joint sensor for a MyoRobotics elbow | 1 | |
3 | Joint Angle Sensor Board (JASB) |
|
Microcontroller | Sim board used with the magnet in the asymmetric joint | 1 | |
3 | RMM44A3A00 | RLS | Microcontroller | Magnet for the sensor board | 1 | |
3 | Cable JASG to CAN | GI | Tendon, Rope, Cables | CAN bus cable for the joint sensor | 1 | |
4 | SH3-SH3-28300 | JST | Tendon, Rope, Cables | Cable, crimped, 300mm for JST SH series | 4 | |
4 | SHR-04V-S-B | JST | Tendon, Rope, Cables |
|
1 | |
4 | MyoMuscle Assembly | GI | Labour | 0.15 | ||
4 | SPUL/1.2/3.2MMBLK SPUL/1.2/3.2MMBLK | Pro Power | Tendon, Rope, Cables | Shrink Tube 3.2-1.2mm | 0.1 | |
3 | Cable magnetic joint sensor to JASB | GI | Tendon, Rope, Cables | Wires that come out of the joint | 1 | |
4 | MyoMuscle Assembly | GI | Labour | 0.75 | ||
4 | 2842/19 RD005 | Alpha Wire | Tendon, Rope, Cables | Redwire for magnet ( 30.5m, Diameter 0.688mm) | 10.0 | |
4 | 2842/19 BL005 | Alpha Wire | Tendon, Rope, Cables | Blue wire for magnet ( 30.5m, Diameter 0.688mm) | 10.0 | |
4 | 2842/19 GR005 | Alpha Wire | Tendon, Rope, Cables | Green wire for magnet ( 30.5m, Diameter 0.688mm) | 10.0 | |
3 | RMB20VA10BC1 | RLS | Sensors | Magnet sensor board | 1 | |
2 | 2534-278 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M3 screw cylinder 8mm into the lower joint fork | 8 | |
2 | 2534-234 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M2 screw cylinder 6mm | 5 | |
2 | J22 prox lever arm adapter bonnet | GI | MyoCAD | 2 | ||
1 | Myo Roboy Lower Arm | MyoRobotics Consortium | MyoRobotics Products | Roboy Radius and Ulna - Myorobotics Edition | 1 | |
2 | Muscle | MyoRobotics Consortium | Muscles | 2 | Hand, lower arm rotation | |
3 | JFM-0304-03 | Igus | Bearings | Igus Gleitlager JFM 0304-03 (Guide-Pulley) | 2 | Cross-Guide |
3 | JFM-0304-05 | Igus | Bearings | Igus Gleitlager JFM 0304-05 (Guide-Roller) | 2 | |
3 | JFM-0608-06 | Igus | Bearings | Igus Gleitlager JFM 0608-06 (Motor Reel) | 1 | Tendon-Spooling |
3 | MCM-12-02 | Igus | Bearings | Igus Cliplager MCM-12-02 | 2 | Displacement-Assembly |
3 | 2534-294 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 3x25 | 1 | |
3 | 4001-205 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Selbstschneidende Schraube(Blechschraube) | 2 | |
3 | 2534-236 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M 2x8 | 2 | Cross-Guide |
3 | 1160-043 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Senkkopfschraube M 2,5x10 | 3 | |
3 | 1018-082 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x24 | 1 | Cross-Guide |
3 | 1018-076 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x18 | 1 | |
3 | 812 000 020.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M2 | 2 | Cross-Guide |
3 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 3 | |
3 | M12 main body allConfig CE - new | MyoRobotics Consortium | MyoCAD | body | 1 | |
3 | M11 main body cover | Shapeways | MyoCAD | body cover | 1 | |
3 | M11 cable pulley horizontal | Shapeways | MyoCAD | cable pulley | 1 | |
3 | M11 cross guide cover | Shapeways | MyoCAD | cross guide cover | 1 | Cross-Guide |
3 | M11 cross guide roller - new | Shapeways | MyoCAD | cross guide roller | 1 | Cross-Guide |
3 | D-311 | Gutekunst Federn | Springs | Feder D-311 | 1 | Displacement-Assembly |
3 | myoMotorDriver |
|
Boards | Motor Driver Board | 1 | |
3 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 1 | |
3 | Spring Displacement Sensor Board |
|
Boards | Sensor Board | 1 | Displacement-Assembly |
3 | MyoMuscle Assembly | GI | Labour | 0.75 | ||
3 | Cable-Displacement-Sensor | GI | Tendon, Rope, Cables | Displacement Sensor Cable | 1 | Displacement-Assembly |
4 | SHR-06V-S-B | JST | Tendon, Rope, Cables | Connector Male - 1.0mm pitch/Disconnectable Crimp style connectors, with protrusions | 2 | |
4 | SH3-SH3-28150 | JST | Tendon, Rope, Cables | Cable, crimped, 150mm for JST SH3 series | 6 | |
4 | MyoMuscle Assembly | GI | Labour | 0.25 | ||
3 | 458375 | Maxon | Motors | Maxon Motor-Getriebe-Encoder-Kombination | 1 | |
3 | ISO 7379-4-M3-20 | Ganter Griff | Screws, Bolts and Rods | ISO 7379 Passschrauben mit Bund Stahl, Festigkeit 12.9 | 2 | |
3 | Complete pulley spring displacement shaft without spring | GI | Machined parts | Complete assembly of pulley, shaft, magnetic strip, threaded rod, but NO spring | 1 | |
4 | Assembly of pulley fork for displacement shaft | GI | Machined parts | Pulley in fork to be installed on displacement shaft | 1 | |
5 | MyoMuscle Assembly | GI | Labour | 0.12 | ||
5 | GN 751-4-8-M4-SL-AL | Ganter Griff | Screws, Bolts and Rods | Gabelgelenke GN 751 aus Aluminium bestehen aus dem Gabelkopf DIN 71752 und einem Bolzen mit axialer KL- oder SL-Wellensicherung. | 1 | |
5 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 1 | |
4 | Displacement shaft | GI | Machined parts | Shaft holding the magnetic strip of the displacement sensor | 1 | |
4 | 2210-850 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 976 Gewindestangen | 12.0 | Displacement-Assembly |
4 | KBEE5-1.2KL50 | Bogen Electronic | Sensors | Linear Magnetic Scale Incremental | 5.0 | Displacement-Assembly, Displacement-Sensor |
4 | M11 spacer sleeve | Shapeways | MyoCAD | spacer sleeve | 1 | |
4 | MyoMuscle Assembly | GI | Labour | 0.5 | Assemble parts | |
4 | 2012-104 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 315 Flügelmuttern kleine Flügelform | 1 | Displacement-Assembly |
4 | 1544-020 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 4,3 x 20mm Kotflügelscheiben | 1 | Displacement-Assembly |
4 | 2896-150 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | M4 DIN 934 Sechskantmuttern | 1 | |
4 | 1900-144 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Fächerscheibe Az 4.3 (für M4) | 1 | |
3 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 2 | |
3 | M11 motor reel | GI | Machined parts | Cable Winch | 1 | Tendon-Spooling |
3 | M11 Spring Sensor Wedge | GI | MyoCAD | Wedge for holding in the magnetic encoder of the displacement sensor | 1 | Displacement-Assembly |
3 | 2118-924 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | DIN 913 Gewindestifte mit Kegelkuppe, mit Innensechskant “Madenschraube” | 1 | Tendon-Spooling |
3 | 1708-844 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | Federringe B2 (for M2) | 2 | Cross-Guide |
3 | 1556-202 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts |
|
1 | |
2 | a unterarm | GI | MyoCAD | Roboy Radius and Ulna - Myorobotics Edition | 1 | |
2 | 2896-146 | Wegertseder GmbH - Schrauben Shop | Nuts, rings, inserts | M3 hex normal nut | 8 | motor fixation |
2 | SZU4-13 U604ZZ | YongTian bearing Co.,Ltd. ( NBZH Precision Bearings ) | Bearings | Roller Bearing U groove 604UU 4*13*4mm | 1 | tendon guide |
2 | ISO 7379-4-M3-20 | Ganter Griff | Screws, Bolts and Rods | ISO 7379 Passschrauben mit Bund Stahl, Festigkeit 12.9 | 1 | tendon guide |
2 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 1 | tendon guide |
2 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 8 | motor fixation |
2 | lower arm spring | Gutekunst Federn | Springs | placeholder spring | 1 | lower arm rotation |
2 | Tendon Dyneema Spectra Fishing Line | Herkules Pro | Tendon, Rope, Cables | Tendon | 0.6 | |
1 | Roboy Hand scaled | GI | MyoCAD | Roboy hand, scaled and with flange | 1 | |
2 | a hand rechts komplett v01 mod | GI | MyoCAD | Roboy hand cad | 1 | The hand |
2 | p fingerkuppe 12.4 mod | GI | MyoCAD | Roboy hand finger tip | 4 | fingerpads of digits |
2 | p fingerkuppe 18 mod | GI | MyoCAD | Roboy hand finger tip | 1 | |
2 | z sensor dummy mod | GI | MyoCAD | Roboy hand sensor dummy | 1 | |
2 | hand springs | Gutekunst Federn | Springs | placeholder spring for hand | 2 | |
2 | Schwarz 27,5 kg Ladung 0.6mm Dia Nylon Angelschnur Gewinde Rolle 100 M 10# | sourcingmap | Tendon, Rope, Cables | 220.0 | ||
2 | p deckel handrücken | GI | MyoCAD | Roboy back of hand cover | 1 | |
1 | Myo Arm Stand | GI | Accessories | Stand for the Myo Arm | 1 | |
2 | Myo Stand Base plate | GI | Machined parts | Metal base plate for the myo arm | 1 | |
2 | GN 343.4-60-M16-125-G | Ganter Griff | Screws, Bolts and Rods | Levelling feet Threaded stud steel, zinc plated / Foot plastic | 3 | |
1 | USB-to-FlexRay Adapter |
|
Boards | USb to Flexray adapter | 1 | |
1 | MyoArm Assembly | GI | Labour | 32.0 | ||
1 | FLR09YS-YW | Kromberg & Schubert | Tendon, Rope, Cables | FLR09YS-YW is a FlexRay data cable with a cross-section of 2 x 0.35 mm². | 300.0 | Flexray cable |
1 | 0.5m Myo power cable | GI | Tendon, Rope, Cables | Power cable for the shoulder motors | 11 | |
2 | Assembly blank cable | GI | Labour | 3 | ||
2 | PP001078 | Pro Power | Tendon, Rope, Cables | Wire, heatresistent, flexible silicone, 0.5 mm², 16 x 0.2mm | 0.5 | |
2 | PP001077 | Pro Power | Tendon, Rope, Cables | Red Wire, heatresistent, flexible silicone, 0.5 mm², 16 x 0.2mm | 0.5 | |
1 | Myo Upper Arm Power Cable | GI | Tendon, Rope, Cables | Power cable for the upper arm items | 4 | |
2 | PP001077 | Pro Power | Tendon, Rope, Cables | Red Wire, heatresistent, flexible silicone, 0.5 mm², 16 x 0.2mm | 1.0 | |
2 | PP001078 | Pro Power | Tendon, Rope, Cables | Wire, heatresistent, flexible silicone, 0.5 mm², 16 x 0.2mm | 1.0 | |
1 | Myo Lower Arm Power Cable | GI | Tendon, Rope, Cables | Power cable for the lower arm items | 2 | |
2 | PP001077 | Pro Power | Tendon, Rope, Cables | Red Wire, heatresistent, flexible silicone, 0.5 mm², 16 x 0.2mm | 1.5 | |
2 | PP001078 | Pro Power | Tendon, Rope, Cables | Wire, heatresistent, flexible silicone, 0.5 mm², 16 x 0.2mm | 1.5 | |
1 | Myo Muscle Control Cable | GI | Tendon, Rope, Cables | SPI cable to control the Myomuscles | 13 | |
2 | Assembly Displacement S. Cable | GI | Labour | 0.1 | ||
2 | SH3-SH3-28300 | JST | Tendon, Rope, Cables | Cable, crimped, 300mm for JST SH series | 5 | |
2 | SHR-05V-S-B | JST | Tendon, Rope, Cables | Male plug, 5 -polig, 1 mm | 2 | |
1 | Tendon Dyneema Spectra Fishing Line | Herkules Pro | Tendon, Rope, Cables | Tendon | 5.5 | |
1 | Myo Clamping Ring Set | GI | Accessories | Ring that binds 2 flanges together | 4 | |
2 | A11 clamping half ring mod | Shapeways | MyoCAD | Clamp ring to hold the two flange plates together. | 2 | |
2 | 1018-066 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderstift 3x8 | 4 | |
2 | 2534-288 | Wegertseder GmbH - Schrauben Shop | Screws, Bolts and Rods | Zylinderkopfschraube M3x18 | 2 | |
2 | 852 000 030.800 | Kerb Konus | Nuts, rings, inserts | Brass Insert M3 | 2 |
Firmware, FlexrayUSBInterface¶
The MYO-Ganglion implements the linear-feedback controllers for the MYO-Muscles. Currently, five control modes are possible: raw, position, velocity, force and torque. In the raw mode, no feedback controller is enabled. Rather, the muscle is driven in an open-loop mode where the motor supply voltage can be varied between \(\pm 100\%\). The remaining four control modes use the freely configurable linear-feedback control topology depicted in Fig. 1.1.

The linear feedback controller topology: the controller is freely con figurable within the flexrayusbinterface and runs on the MYO-Ganglion. Four motor controllers run in parallel, controlling the four MYO-Muscles. The control frequency is currently limited to a maximum of 2.5kHz and is also confi gurable.
To be clear, these controllers run on the MYO-Ganglion autonomously. They are configured via flexrayusbinterface (control parameters, cycle time, etc) during the start-up phase of the user’s high-level controller running within flexrayusbinterface. By default, the gains are all set to zero, so no control action is issued. During run-time, flexrayusbinterface sends the reference values to the controllers which can happen at any point in time and with arbitrary update rates. Furthermore, the control parameters can also be changed during runtime. Note, however, that the control parameters are not stored on the MYO-Ganglion. Following reset, all the controllers need to be re-configured.
Configuring a Controller¶
Todo
Turn the descripton into sphinx/breathe doxygen type documentation
The flexrayusbinterface interface (internally as well as externally) makes heavy use of mapbox variants and one should be familiar with the concept to use the library, as well as develop it.
Below are step by step explanations of how to use the interface. See the complete example at the Roboy/flexrayusbinterface repo
Parsing the parameters¶
Flexrayusbinterface takes a FlexRayBus object generated from a configuration yaml using the provided yaml-cpp based parser.
This yaml file contains all parameters required to instantiate the controllers.
An example configuration file can be found here: RobotDescription.yaml
#include "flexrayusbinterface/Parsers.hpp"
auto node = YAML::Load("/path/to/yaml/file");
node = node["FlexRay"];
FlexRayBus fbus = node.as<FlexRayBus>();
Instantiate the interface / connect to the flexray¶
Using the FlexRayBus object we can try to instantiate the ‘FlexRayHardwareInterface’. This interface returns a variant:
- It will return the FlexRayHardwareInterface upon successful instantiation or
- return a std::pair<FlexRayBus, FtResult>.
FlexRayBus fbus = node.as<FlexRayBus>();
while (FlexRayHardwareInterface::connect(std::move(fbus))
.match(
[&](FlexRayHardwareInterface &flex) {
ROS_INFO_STREAM("Connected");
MyoMotor motor{std::move(flex)};
blink(motor); // do something with the motors
return false;
},
[&](std::pair<FlexRayBus, FtResult> &result) {
ROS_ERROR_STREAM("Could not connect to the myo motor: "
<< result.second.str());
fbus = std::move(result.first);
return true;
}))
Use the interface¶
FlexRayHardwareInterface provides an interface to the individual motors, allowing to read their state, activate different controllers and program the setpoints.
It spins an additional thread in the background, that will exchange data (thereby reading the state of the motors) with the flexraybus at the update rate specified in the yaml file.
Todo
Update this following the found, hardcoded update rate of 100 Hz
The interface offers 3 control modes as enumerated with ‘ControlMode’:
- Position
- Velocity
- Force
Which can be used to ‘set’ a command as shown in the ROS service definition below:
class MyoMotor {
public:
/*
* Implements the service to move the motors.
*/
bool moveMotor(myo_blink::moveMotor::Request &req,
myo_blink::moveMotor::Response &res) {
if (req.action == "move to") {
flexray.set(req.muscle, ControlMode::Position, req.setpoint);
res.is_success = true;
} else if (req.action == "move with") {
flexray.set(req.muscle, ControlMode::Velocity, req.setpoint);
res.is_success = true;
} else if (req.action == "keep") {
flexray.set(req.muscle, ControlMode::Force, req.setpoint);
res.is_success = true;
} else {
res.is_success = false;
}
return true;
}
FlexRayHardwareInterface flexray;
MyoMotor(FlexRayHardwareInterface &&flexray) : flexray{std::move(flexray)} {}
};
The four parameter array constant, linear, quadratic, cubic
describe the
non-linear mapping of the spring displacement measurement to a force.

The internal structures required to confi gure a local (firmware) muscle controller. This shows an example from the old MYODE code.
Communication Timing¶
Before a snippet of example code is presented, let us briefly consider the timing behaviour of this (partly) asynchronous communication system. In principle, four different timing cycles can be distinguished and they are illustrated in Fig. 1.3. At the highest level is the user application (UA). Typically, the cycle time of this control loop is in the tens of milliseconds range (e.g. \(20ms\)) and is set by the user. Since a standard Ubuntu installation is used, it is important to note that the cycle time of the UA is not ‘hard real-time’ and some variance on the timing is to be expected. In the UA, data from the Myorobot is read, such as motor velocity or joint angles, or set in the case of tendon force and motor position.

The cycle and communication times of the complete Myorobotics communication chain. Red arrows indicate that this communication parameter is user con gurable. From left to right, the user application (UA), the USB interface (UI), the USB-FlexRay bridge (UFR) the linear-feedback controller (LFC) and the motor-driver board(MD) are illustrated, including the implementation and communication media.
Data is exchanged with the Myorobot via a thread that is hidden from the user by the FlexRayHardwareInterface and sometimes called USBI. It exchanges the data from the UA with the FlexRay2USB Adapter. The USBI also runs as a ‘soft real-time’ system with a nominal update rate of 500Hz. In other words, data exchange between the UA (via the USBI) and the Myorobot is also limited to a minimum update rate of 2ms.
The next level of communication is realised with the USB-FlexRay bridge (UFR) (aka Flexray2USB Adapter) (see Section 11). Here, the USB data is exchanged with the ‘hard real-time’ FlexRay bus that forms the communication backbone of the Myorobot, allowing the exchange of data between the UFR and the MYO-Ganglions in a fully synchronous and time-trigger fashion at a rate of 1kHz.
The lowest level in this communication chain is formed by the
linear-feedback controllers (LFC) (see Fig. 1.1)
running on the MYO-Ganglions. The controllers run in a ‘hard real-time’
loop on the MYO-Ganglion and exchange data with the FlexRay bus and the
motor driver boards (MD); see Section 9. As
explained above, the cycle time of the linear-feedback controllers is
user configurable by setting the float32 timePeriod
variable of the
structure control_Parameters_t
. The minimum cycle
time is \(400\mu s\) representing an update rate of \(2.5kHz\).
Introduction¶
Danger
This control section describes the old MYODE architecture. While most parts of the hardware and firmware are unchanged, the high-level control is very different. The remaining, valid information will be incorporated into the above section.
Todo
Integrate and update D4.1_update.rst
A heterogeneous distributed control architecture has been developed to allow the modular configuration and control of compliant muscolosceletal robots. This architecture has been designed specifically to facilitate further research into the control of highly coupled muscolosceletal robotic systems by removing the initial hardware development phase required to undertake such research. Toward this end, the embedded control architecture sustains a transparent interface between the physical design primitives (joints, links, muscles and sensors) and a PC based simulation, development and test environment (Caliper and MYODE). This report provides a comprehensive description of the component parts that make up the release version of the control architecture and provides testing results of the various operational modes that it supports. It is intended that this page will serve as a technical reference manual for end users to understand the system, visualise its performance and appreciate its constraints.
Tis page is composed of 3 sections; A technical description of the various components that make up the control architecture; A comprehensive guide to the connectivity between components necessary to build a MYO-Robot; and finally a collection of integrated test results that have been designed to demonstrate the performance and capabilities of the system in a number of robot control scenarios.
Hardware Description¶
Danger
This control section describes the old MYODE architecture. While most parts of the hardware and firmware are unchanged, the high-level control is very different. The remaining, valid information will be incorporated into the above section.
Principles¶
The Myorobotic control system comprises four main components. The highest level of the control system is formed by the Caliper environment and the associate MYODE plugin suite. Caliper and the MYODE plugins are software applications that run on Ubuntu 12.04 and communicate with the rest of the control system via a 10Mbit/s FlexRay bus. The FlexRay bus forms the back-bone of the Myorobotics communication infrastructure. Along the robot’s FlexRay bus, up to six MYO-Ganglions can be attached. The MYO-Ganglions are local control and communication units. Each MYO-Ganglion can control up to four MYO-Muscles in various control modes. Each MYO-Muscle has its own motor driver unit, and communication with the MYO-Ganglion is achieved via a 2 Mbit/s SPI interface. In addition, each MYO-Gangion has up to four joint angle sensors attached to it. They communicate on a shared 1 Mbit/s CAN bus with the MYO-Ganglion. This CAN bus is also shared with up to 12 MYO-receptors, external sensors that can provide various external values to the Myorobot, e.g. pressure, temperature etc. The message (or sampling) rate of the joint sensors is \(1\frac{message}{ms}\), the MYO-Receptors only provide their sensor status every 10ms. This asymmetry allows good utilisation of the CAN bus, whilst guaranteeing a sufficient update rate for the joint angles, important for their control.
An overview of the communication and control infrastructure is given in Fig. 3.40. In the following sections, we will introduce and describe the relevant subsystems and explain how the several linear control schemes are implemented.

Overview of the heterogeneous Myorobotics control infrastructure.
Modules¶
MYO-Ganglion¶
Danger
This control section describes the old MYODE architecture. While most parts of the hardware and firmware are unchanged, the high-level control is very different. The remaining, valid information will be incorporated into the above section.
The MYO-Ganglions are main control and signal processing units, distributed along the robots links. They are based on the TMS570LS20216, a 32-bit floating point digital signal processor from Texas Instruments. This micro-controller is based on their ARM Cortex RISC CPU, provides analogue and digital I/O and several relevant communication interfaces. The 140MHz clock and the floating point unit enable high-performance signal processing and control algorithms to be implemented. Together with the appropriate motor drivers (see section Section 3.2.3), a MYO-Ganglion is able to control up to four actuators. Fully transparent access to motor and sensor data from MYODE is possible through the integrated 10Mbit/s FlexRay interface, using a ’FlexRay typical’ 1ms control loop. At this communication rate, up to 24 MYO-Muscles are controllable using six MYO-Ganglions on each FlexRay bus. Each ganglion is assigned a fixed communication ID (Ganglion ID) in the range from 0 to 5. Currently this is achieved during the programming of the on-chip Flash memory. In the next instantiation of the MYO-Ganglion, a small bank of DIP switches will allow the end user to configure the Ganglion ID. As a consequence, all MYO-Ganglia can run on the same software and no re-programming is necessary for high-level users. Similarly, an additional bank of DIP switches will allow the user to configure how many motor driver boards are connected to the MYO-Ganglion.

The MYO-Ganglion hardware, a densely packed 4 layer printed circuit board (communication connectors below). Heatsinks are mounted on the microcontroller and the multi-voltage regulator. Size: \(\approx 25mm \times 55mm\).
In addition to the FlexRay interface, the MYO-Ganglion provides a CAN communication bus (1 Mbit/s) to allow the connection of joint angle sensors (Section 3.2.2) and MYO-Perceptors, the external sensors (Section 3.2.5). Communication to the motor driver boards is established with four [1] dedicated SPI links, each running at 2 Mbit/s.

Circuit diagram of the MYO-Ganglion (without power supply).
Joint Angle Sensor Board (JASB)¶
The position of each joint is measured using a joint angle sensor that communicates with the MYO-Ganglion on a shared 1Mbit/s CAN bus. This printed circuit board, that interfaces with the actual sensor, is based on the dsPIC33FJ128GP802 from Microchip. It is supplied with 5V DC and communicates with the MYO-Ganglion CAN bus (see Fig. 3.40). The actual joint sensor can be a simple potentiometer or a hall-effect based absolute position sensor. Any of those sensor is supplied with 3.3 V from the JASB and must provide an analogue output.
The joint angle interface board senses joint angles on analog input zero and one (AN0, AN1). This information, encoded as a 12-bit unsigned integer in byte 0 and 1 (little endian), is broadcast on the CAN bus every 1ms. The CAN message ID (MsgID) can be adjusted with the 2 DIP-switches (on switch bank SW2) beween 0x50 and 0x53, using switch 1 (S1) (lsb) and switch 2 (S2) (msb). In order to configure the sensor board for 1DOF, switch 3 (S3) needs to be off. For 2DOF operation, S3 needs to be on. With S6 the CAN termination can be switched on (1) or off (0). S4 is used for joint calibration and needs to be in the off position during normal operation, see below.
In case of 1DOF operation, only one CAN message with the MsgID indicated by switches S1 and S2 is sent. For 2DOF operations, two CAN messages are sent, the first one has the MsgID indicated by switches S1 and S2, the second CAN message has the ID indicated with switches S1 and S2 plus 1.
S1 | S2 | S3 | messageIDs on bus |
---|---|---|---|
0 | 0 | 0 | 0x50 |
0 | 0 | 1 | 0x50 and 0x51 |
0 | 1 | 0 | 0x51 |
0 | 1 | 1 | 0x51 and 0x52 |
1 | 0 | 0 | 0x52 |
1 | 0 | 1 | 0x52 and 0x53 |
1 | 1 | 0 | 0x53 |
1 | 1 | 1 | 0x53 |
The DIP switches (S1, S2 and S3) are read after power-on reset. Manipulation of the switches during operation has no effect. The analogue inputs are 16 times oversampled (16kHz) and the CAN output data is the moving average of the last 16 measurements.
LED1 on the sensor board blinks at 1 Hz, indicating operation. LED2 blinks as a function of the AN0 value, the lowest frequency is 1Hz, the highest frequency is 500Hz (AN0=0). In other words, a low frequency (i.e. a large period) corresponds to a large AN0 reading. This allows simple visual inspection of the operation of the joint sensor. LED3 is only on when the board is connected to a non-functioning CAN bus, i.e. the red LED is on during various CAN error states. In a CAN error state, LED1 and LED2 only function correctly when in 1DOF mode.
Calibration¶
The mounting of the magnetic position sensor can lead to a situation where the output signal experiences a zero-crossing (over or underflow) when the joint goes through its motion range. This is not desirable and it is therefore possible to calibrate this out of the joint. This is a software process and no mechanical manipulation. This calibration only has to be performed once, the calibration values are stored in the EEPROM/FlashMemory of the JASB microcontroller. The calibration can be repeated if necessary. Procedure:
- adjust S1, S2 and S3 according to joint configuration (i.e. address and DOF).
- power joint up.
- put S1 and S2 to off, S3 can remain in current position.
- switch S4 on.
- move joint in negative direction until at end stop, hold in position and flick S1 on and off again.
- move joint in positive direction until at end stop, hold in position and flick S2 on and off again.
- joint end positions are now stored, flick S4 back to off to write position into EEPROM/FlashMemory.
- bring S1 and S2 back to correct address position.
- calibration has been performed and joint angle measurement values will now move through continuous range without zero-crossing or overflow.
When calibrating a 2DOF joint, move both degrees of freedom to there negative and positive end position at the same time when performing this calibration procedure.

Top View of the joint angle sensor board: LED1, LED2 and LED3 indicate basic functionality, sensor reading on AN0 and CAN error states. Size: \(\approx 14mm \times 19mm\)

Joint sensor angle board PCB layout to illustrate sensor connections.
Brushless-DC Motor Driver¶
The MYO-Muscles are (at this stage of the project) series elastic actuators, driven by brushless DC motors from Maxon. In order to drive these motors (for different size categories) a driver board was developed. This driver board is based on the dsPIC33FJ128MC802 from Microchip, a micro-controller particularly suited for motor control applications.
In brief, the functionality of the motor driver board is as follows:
Commutation: only 3-phase brushless DC motors can be driven. Commutation feedback from the motor via hall-effect sensors is required.
Position feedback: The motor shaft position can be sensed via an incremental encoder interface with differential inputs. The microcontroller is configured in \(4 \times\) - mode, e.g. a shaft rotation with an encoder of 512 pulses/rotation will increment the internal encoder counter by 2048.
For our medium sized MYO-Muscles the motor assembly has an encoder with 512 counts/rotation. In addition the motor output shaft is driven via a 1:53 gear box. Consequently, the output shaft resolution is \(r_{output}=512 \times 4 \times 53 = 108544 \mbox{ } counts/rotation\)
Spring Displacement: The spring displacement (indicating the tendon strain) is sensed via a magnetic strip and a hall-effect based sensor. The magnetic strip (for illustration pictured below) provides magnets with a distance of 2.4mm between pole pairs. The sensor provide 40 encoder pulses per magnet (pole pair).
The sensor provides an incremental encoder interface which is read by the micro-controller. Similar to the motor shaft position feedback, the encoder interface is configured in \(4 \times\) - mode, so that resolution is of \(\frac{2.4 mm}{40 \times 4} = 15 \mbox { } \mu m/count\) , i.e. \(r_{displacement}=66.\overline{6} \mbox{ }counts/mm\).

Circuit diagram of the joint angle sensor interface board.

Brushless-DC motor driver board. Size: \(\approx 40mm \times 55mm\)

Operational principle of the spring displacement sensor using the AS5306 from AMS.

Circuit board with the spring displacement sensor, the AS5306 from AMS.
Motor current: The motor current is sensed via two shunt-resistors, one in phase A and one in phase B of the motor. For the medium sized motors, \(10m\Omega\) resistors are used as shunts. A differential amplifier gains the voltage drop on the resistors by a factor of 20 and the output of the amplifier supplies the ADC of the microcontroller.
With 10-bit ADC, supplied by a \(3.3V\) reference, the sensed and amplified current is represented as an integer in a range between \([0..1023]\). The resistor-amplifier arrangement has a gain of \(G_{RA} = 0.01 \frac{V}{A} \times 20 = 0.2 \frac{V}{A}\). The ADC gain is \(G_{ADC}=\frac{1024 \mbox{ } counts}{3.3V} = 310.\overline{30} \frac{counts}{V}\). Taken together, the ADC gain for the current measurement is
In other words, the smallest current that can be measured is \(1 /( 62.\overline{06} \frac{ \mbox{ }counts}{A}) =16.11 \mbox{ }mA\).
SPI communication: The motor driver boards communicate with the MYO-Gangion with a 3-wire SPI interface. The MYO-Ganglion is the bus master and communicates motor control parameters to the motor driver boards. The motor driver board supplies the MYO-Ganglion with shaft position, shaft velocity, motor current, spring displacement and various error codes. Details of this communication protocol can be found in Section 4.
CAN communication: For testing and de-bugging but also in order to use the motor driver board in different applications, a 1Mbit/s CAN interface has been implemented. This non-essential communication interface is not described further in this page.
Power and Communication Distribution¶
In order to distribute power and communication signals from MYO-Bone to MYO-Bone as well as connecting motor drivers and sensor to the MYO-Ganglion, a distribution circuit has been designed. This printed circuit board sits inside the MYO-Bone and can be wired-up by the Myorobotics users.
MYO-Perceptor¶
The MYO-Perceptors have not been finalised at this stage, since they form an optional part, not relevant to the core control infrastructure. However, as mentioned above, they will be similar to the joint angle sensor and will communicate with the MYO-Ganglion via a CAN bus with a message rate of 100Hz, i.e. they distribute their state every \(10ms\). We envisage simple tactile sensors, temperature sensor etc. From an electronics design point of view, this constitutes a simple modification of the joint angle sensor board.

Circuit diagram of the brushless-DC motor driver.

Printed circuit board for power and communication distribution.
Connectivity¶
In order to connect motor drivers, MYO-Ganglions, spring displacement sensor and joint angle sensors, various cable connections are required. The connections between the boards are not 1 to 1 and not all connecting cables are symmetric, i.e. it is important which connector goes where. In the following, details of the connector cables are given.
Spring Displacement Sensor \(\Longleftrightarrow\) Motor Driver Board¶
Signal Name | GND | EncA | EncB | O | Idx | +5V |
---|---|---|---|---|---|---|
Displacement Sensor, pin # | 1 | 2 | 3 | 4 | 5 | 6 |
Motor Driver Board, pin # | 5 | 3 | 2 | 1 | 4 | 6 |

Cables and connectors to connect the spring displacement sensor with the motor driver board; red circles mark the applicable connectors on the printed circuit boards.
This cable is not symmetric!
SPI: Distribution Board \(\Longleftrightarrow\) Motor Driver Board¶
Signal Name | SOMI | SIMO | Clk | SS | Gnd |
---|---|---|---|---|---|
Distribution Board, pin# | 1 | 2 | 3 | 4 | 5 |
Motor Driver Board, pin # | 1 | 2 | 4 | 3 | 5 |

Cables and connectors to connect the SPI of the distribution board with the motor driver board; red circles mark the applicable connectors on the printed circuit boards.
This cable is symmetric!
SPI:MYO-Ganglion \(\Longleftrightarrow\) Distribution Board¶
Signal Name | SOMI | SIMO | En | CS2 | CS1 | CS0 | Clk | Gnd |
---|---|---|---|---|---|---|---|---|
MYO-Ganglion, pin# | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Distribution Board, pin # | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 |

Cables and connectors to connect the SPI of the distribution board with the MYO-Gangion; red circles mark the applicable connectors on the printed circuit boards.
This cable is symmetric!
CAN 1: MYO-Ganglion \(\Longleftrightarrow\) Distribution Board¶
Signal Name | CAN-H | CAN-L |
---|---|---|
MYO-Ganglion, pin# | 1 | 2 |
Distribution Board, pin # | 2 | 1 |

Cables and connectors to connect the CAN of the distribution board with the MYO-Gangion; red circles mark the applicable connectors on the printed circuit boards.
This cable is symmetric!
FlexRay 1: MYO-Ganglion \(\Longleftrightarrow\) Distribution Board¶
Signal Name | BP | BM |
---|---|---|
MYO-Ganglion, pin# | 1 | 2 |
Distribution Board, pin # | 2 | 1 |

Cables and connectors to connect the FlexRay of the distribution board with the MYO-Gangion; red circles mark the applicable connectors on the printed circuit boards.
This cable is symmetric!
Joint Angle Sensor Board \(\Longleftrightarrow\) Distribution Board¶
Signal Name | CAN-H | CAN-L | Gnd | +5V |
---|---|---|---|---|
Sensor board, pad # | 1 | 2 | 3 | 4 |
Distribution Board, pin # | 3 | 2 | 1 | 4 |

Cables and connectors to connect the joint angle sensor board to the e distribution board; red circles mark the applicable connectors on the printed circuit boards.
Magnetic joint sensor \(\Longleftrightarrow\) Joint Angle Sensor Board¶
The magnetic joint sensor are soldered straight into the soldering pad on the joint angle sensor boards.
Signal Name | Gnd | Gnd | +3.3V | +3.3V | AN0 | AN1 |
---|---|---|---|---|---|---|
Sensor board, pad # | 5 | 7 | 6 | 8 | 9 | 10 |
magnetic sensor cable colour | blue | orange | red | red | green | white |

Colour codes and pad number for connecting the magnetic angles sensors with the joint angle sensor board; red is +3.3 V, orange is Gnd and white is the sensor signal output. For 1DOF only AN0 is supplied with a sensor output, for 2DOF AN0 and AN1 are supplied with one sensor output each. Make sure to solder the opposite side to the red wires that go to the distrbution board (see 2.3.6).
Software¶
Danger
This control section describes the old MYODE architecture. While most parts of the hardware and firmware are unchanged, the high-level control is very different. The remaining, valid information will be incorporated into the above section.
The core of the operation of the controller infrastructure is software running on a network of MYO-Ganglions, combined with supporting tasks running on sub-networks of motor drivers and exteroceptive sensors. Each MYO-Ganglion can control up to 4 motors via an SPI communication bus, and can be provided with real-time commands direct from the Caliper environment via a high speed FlexRay bus, which also allows the MYO-Ganglions to relay all sensor information to the MYODE plugins. Exteroceptive sensors can communicate directly with each MYO-Ganglion via a local (to each MYO-Ganglion) CAN bus.
The software system is made up of a number of interacting sub-components which will be described in the following sections: communication, consisting of well defined protocols for each communication network; sensor access, what sensor information is gathered by each component in the system, and how that data is processed; motor drivers, the software running on each motor driver board; controller, the software structure that is used for the controllers, including the simple to use, user extensible, API; controller commands and tuning, the messaging structure used to allow the MYODE plugin suite to command and tune the controllers.
Communication¶
Communication between a MYO-Ganglion and up to 4 motor driver boards is performed using an SPI bus. In each communication cycle the MYO-Ganglion sends a duty cycle period demand and some command data, and receives the sensor values for the muscle it is actuating in return. The data structure for the SPI message frame is shown in Fig. 4.18. There are two types of message that can be sent to a motor driver, command and diagnostic. Command is the standard motor command, while diagnostic requests that the motor driver uses the standard data fields to report diagnostic data for error handling (instead of sensor data). The command flags allow requests for specific operations to be performed by the motor controller. The sensor data relayed via SPI is that which is directly related to the motor, i.e., motor position, velocity, drive current, and displacement in the series elastic element connected; additionally, provision has been made for two additional sensors to allow communication of possible further data from each motor driver board. The error flags field allows the motor driver to report error conditions to the MYO-Ganglion, error handling is then performed by the MYO-Ganglion, and dependent on the error message this might also trigger a diagnostic message to be sent in the next communication cycle to allow full error analysis and reporting.

Data structure of an SPI data frame. The MYO-Ganglion transmits data in the first 4 elements, the others are used to trigger data transmission by each motor driver.
Each MYO-Ganglion has 2 CAN channels, one designed to allow the user to interface directly with the controller for debugging and initialisation of the FlexRay parameters, and the other for connection of ’smart’ exteroceptive and joint sensors that have their own microcontroller to allow communication over CAN. It is anticipated that, when implemented, these sensors will communicate with their attached MYO-Ganglion at a frequency of at least 1kHz. The framework for both of these tasks is included in the MYO-Ganglion API but specific uses of these facilities have yet to be developed.
In order for the control of a Myorobotics assembly from Caliper to be transparent to the user, a high speed FlexRay bus is utilised to relay control commands to each MYO-Ganglion, and for the MYO-Ganglia in turn to report their sensor information to the MYODE suite. In addition controllers and controller parameters that have been optimised in MYODE can be easily loaded onto each MYO-Ganglion.
FlexRay is a deterministic, high speed bus system (operating at 10MBit/s), in each communication cycle there is a static segment of predetermined frames for regularly transmitted data, and a dynamic segment for occasionally transmitted data. In a MYO-Ganglion network, the static segment is used for command and sensor data, and the dynamic segment for updating controller parameters; the dynamic segment is also used for fault reporting by the MYO-Ganglions.
All static frames must be the same size, and the largest (and most prevalent) frame type is the sensor data frame, the composition of which is shown in Table 4.2. Each static frame is sized to allow a MYO-Ganglion to transmit sensor data for up to 4 muscles, including the possibility of 1 joint per muscle (muscle 0 reports data for joint ID 0x50, muscle 1 joint ID 0x51 etc.), and 12 16-bit words [2] for exteroceptive sensor data. This data plus the FlexRay message header amounts to 48 16-bit words, and as we are aiming for a baseline control loop of 1ms, this allows transmission of 8 static frames, with a dynamic segment of 114 words (2 word times are required for the network idle time used in bus clock synchronisation). Allowing for 32-bit set point values, 4 of which may be required per MYO-Ganglion, commands for up to 6 MYO-Ganglia can be contained in one static frame. The MYODE suite requires an additional static frame to provide mode control commands for the controllers on each MYO-Ganglion, which may be indicators of the presence and purpose of data in the dynamic frame (see Section 4.4). Hence, up to 6 MYO-Ganglia may be commanded with a 1ms refresh rate, allowing the control of up to 24 muscles, the structure of data in a communication cycle is shown in Fig. 4.19.
Data | Size (Words) | comment |
---|---|---|
Joint Position | 2 | |
Actuator Position | 2 | |
Actuator Velocity | 2 | |
Actuator Current | 1 | |
Tendon Displacement | 1 | |
Total per Muscle | 8 | |
Total Muscle Data | 32 | 4 muscles per MYO-Ganglion |
External Sensors | 12 | per MYO-Ganglion |
Frame Overhead | 4 | |
Total per Ganglion | 48 |

Structure of a FlexRay communication cycle. Static frames are shown in blue, the dynamic segment is shown in green, and network idle time in orange.
Motor Drivers¶
Controller¶
The MYO-Ganglion controller API is written in C++, to allow both simple user extensibility and a single set of API functions to intuitively command a controller regardless of the underlying processes. However, it is important to note that as the interrupt service routines are written in C, a set of bridging functions are provided to allow them to access the underlying controller objects. The operation of the bridging functions requires that the underlying controller objects must all inherit a parent controller class, and implement its core set of (pure virtual) functions. These functions allow the getting and setting of the controller type and parameters (utilising a controller parameters union), and the invocation of the control loop with the desired set point (\(sp\)) and current process variable (\(pv\)) values.
A MYO-Ganglion has an array of controller objects, containing a controller for each available control mode, for each motor connected to it. Which controller is active for each motor is determined by part of the command in the controller mode frame (see Section 4.4). Each motor has an independent control loop frequency, and each iteration (if the currently selected controller is enabled) it calculates the needed demand signal to be sent. In the core API we have implemented linear feedback PID controllers, which are used to control a variety of process variables, as well as a raw control mode that allows direct setting of the motor driving PWM duty cycle. Each process variable is calculated from the raw sensor data provided by the motor driver board, to allow transparent tuning of PID gains via MYODE; the implemented process variable controllers, and their conversion factors are described in Table 4.3. The means for user extensibility of the controller infrastructure is detailed in the API documentation.
Process Variable | Conversion Factor |
---|---|
Actuator Position | Rad/Encoder count |
Actuator Velocity | Rad/Encoder count and control loop frequency |
Actuator Force | Torque Constant |
Tendon Strain | 4 term polynomial |
In order to increase the safety of operation, the user is able to set limits for both the output drive signal, and the process variable demand, for each controller. These limits are included within the parameter set for each controller, and must be set during controller initialisation and parameter updates. Safe limits should be automatically generated by MYODE, or set by the user, during specification and simulation of a Myorobotics assembly, so that they can be loaded on to each MYO-Ganglion. The limits are enforced by each controller, and commands that try to exceed them will be limited to prevent them from doing so and generate fault messages transmitted as a dynamic frame. As an additional safety precaution controller, output is always checked against maximum drive values for the connected MYO-muscle to prevent user set limits from allowing maximum drive values to be exceeded.
Linear Feedback Controller Implementation¶
The linear feedback controller we have implemented on the MYO-Ganglion is a PID controller, with an additional feed-forward term using the desired set-point (sp), and optional dead-band and integral wind-up limiting. The gain for each control term (pgain, igain, dgain, forwardgain) must be set on controller initialisation and can be tuned during robot operation via MYODE; some process variables may not require all terms, and in this case the gain of unused terms is set to zero. Limits (\(outputPosMax\) and \(outputPosMax\)) for the control output are used to ensure safe operation.

Block diagram of the linear feedback controller: note the amplifier gain of \(\frac{1}{4000} \times 24V\).
These control limits are also used to limit integral saturation, by not adding to the accumulated integral on a control loop iteration when the output is in saturation and a control error is still present. Integral wind-up is implemented with thresholds (IntegralPosMax and IntegralNegMax) beyond which the integral cannot be increased. The symmetric dead-band is implemented similarly with minimum error thresholds (\(deadBand\) and \(-1\times deadBand\)) required to trigger a change in control effort. To ensure jerk-free operation when switching between control modes, the integral term is reset to zero when control modes are changed.
Parameter Modification and Modes¶
In addition to a controller set point frame, MYODE also transmits a mode command frame that allows selection of the operating mode, and control mode of each controller. Hence, in the mode frame each MYO-Ganglion has 4 8-bit words (one for each controller) to issue the operating mode commands, and 4 8-bit words to issue the control mode commands. The operating mode commands determine the operation that will be performed using the controller selected in the control mode command.
There are 3 operating mode commands that can be issued: initialise controller, set point update (normal operation mode), and disable controller. The first operating mode indicates to a motor that the controller selected in the control mode command will have its parameters set, and so to expect parameter data in a dynamic frame that communication cycle. The parameters used by the currently implemented PID controller is a total of 84 bytes, so only one controller in the whole assembly may be updated during each communication cycle, due to the small size of the dynamic segment. However, as the communication cycle operates with a 1ms period, initialising one controller each for the maximum number of motors would only take 24ms. The initialisation operation mode is also used to tune the parameters for the selected controller, e.g., in the case of a PID controller the tunable parameters are the PID gains, and the operating frequency, although other parameters such as control limits may also be updated. It is important to note that the initialise controller mode does not change whether or not a controller is enabled; hence, during initialisation of a MYO-robot all controllers needed can be initialised before any are enabled. The set point update mode enables the selected controller and updates the set point to be used in its control loop; if the controller selected has not been initialised or safety limits are exceeded, an error is reported in the dynamic frame, and it is not enabled. Enabled controllers can be disabled using the disable controller mode.
Dynamic Frame Control Parameters¶
The configuration parameters are transmitted in the following structure
typedef struct
{
uint32 tag;/*!<Tag to indicate data type when passing the union*/
sint32 outputPosMax; /*!< maximum control output in the positive direction in counts, max 4000*/
sint32 outputNegMax; /*!< maximum control output in the negative direction in counts, max -4000*/
float32 spPosMax;/*<!Positive limit for the set point.*/
float32 spNegMax;/*<!Negative limit for the set point.*/
float32 timePeriod;/*!<Time period of each control iteration in microseconds.*/
float32 radPerEncoderCount; /*!output shaft rotation (in rad) per encoder count */
float32 polyPar[4]; /*! polynomial fit from displacement (d) to tendon force (f) f=polyPar[0]+polyPar[1]*d +polyPar[2]*d^2+ +polyPar[3]*d^3+ +polyPar[4]*d^4 */ //mjp-3rd order?
float32 torqueConstant; /*!motor torque constant in Nm/A */
parameters_t params; //the PID or RAW controller Paramters
}control_Parameters_t;
Here it is important to note that the first parameter, tag, indicates the controller type the paramters for. Tag is a value from the following enumeration
typedef enum comsControllerMode
{
Raw=0,
Torque,
Velocity,
Position,
Force,
JointPosition,
JointVelocity,
NoControllers//not a usable control mode, but used on the ganglion to set up the array of controllers
}comsControllerMode;
typedef union
{
pid_Parameters_t pidParameters;
//raw_Parameters_t rawParameters;
}parameters_t;
typedef struct
{
float32 integral;/*!<Integral of the error*/
float32 pgain;/*!<Gain of the proportional component*/
float32 igain;/*!<Gain of the integral component*/
float32 dgain;/*!<Gain of the differential component*/
float32 forwardGain; /*!<Gain of the feed-forward term*/
float32 deadBand;/*!<Optional deadband threshold for the control response*/
float32 lastError;/*!<Error in previous time-step, used to calculate the differential component*/
float32 IntegralPosMax; /*!<Integral positive component maximum*/
float32 IntegralNegMax; /*!<Integral negative component maximum*/
}pid_Parameters_t;
Caliper Integration¶
In order to set motor control parameters as well as the controller reference values manually, a GUI for MYODE plugin suite has been created. Based on the QT4 framework, this interface allows the real time display of all process states which are supplied via the FlexRay bus.
The Myorobot plugin (see Fig. 4.22) for Caliper presents the component parts of the embedded control infrastructure as a tree. The robot has a number of ganglions, each with a number of connected muscles (motors in this case), each muscle has a set of control modes which each have a set of parameters. This tree structure is generated based on the robot configuration file generated by the virtual assembly toolbox, and represents the underlying data structures created. To allow easy testing of a Myorobot, the sensor data transmitted via FlexRay from each ganglion is displayed in the Status column in the row of the associated control mode for each connected muscle. Additionally, control reference values or controller parameters may be sent to the Myorobot via FlexRay by entering them in the ‘Setting Value‘ column. Ranges for each value are automatically enforced, and are only sent to the robot when ‘Send Data’ is pressed; selection of the control mode, and whether to enable or disable each motor is performed using the check boxes.

Sceenshot of the Myorobot plugin GUI.
Controller Tests¶
Danger
This control section describes the old MYODE architecture. While most parts of the hardware and firmware are unchanged, the high-level control is very different. The remaining, valid information will be incorporated into the above section.
In this section the basic functionality of the controller infrastructure is demonstrated. The results are not all encompassing and further testing is still ongoing. However, these preliminary results show that the infrastructure in principle is functional, the sensory system is of high quality and linear control of the MYO-Muscles is achievable.
All controller test where carried out by changing the control parameters in the MYODE robot control GUI and then transmitting them via the FlexRay bus to the MYO-Ganglion. The MYO-Ganglion runs the actual linear controllers and communicates with the motor driver in order to read the motor state and set the PWM drive signal.
Position Motor Control¶
For the first demonstration of the controller capabilities the position controller running at 100Hz was selected. The demand or reference value was set to 10 rad (shaft position) from an initial position of 0 rad. Fig. 5.12 shows the result with a slightly under-gained PI controller. It is observable that the final position is reached after approximately \(300ms\). During the control phase, the control output saturates at a duty cycle of \(100\%\) and a maximum velocity of approximately \(35 rad/s\) is achieved. Please note that no tendon is attached to the motor and the only ‘load’ is the motor gearbox.

PI control of motor shaft position: motor position in rad (top); duty cycle (DC) of PWM signal (centre); shaft velocity in rad/s (bottom).
In the next experiment (Fig. 5.13), the PI gains were increased and it is observable how the control system overshoots and a slight second-order oscillation is visible.

PI control of motor shaft position: motor position in rad (top); duty cycle (DC) of PWM signal (centre); shaft velocity in rad/s (bottom).
In order to reduce this overshoot, the controller is enhanced with a D component and it is clearly visible in Fig. 5.14 that the overshoot is reduced.

PI control of motor shaft position: motor position in rad (top); duty cycle (DC) of PWM signal (centre); shaft velocity in rad/s (bottom).
Overall, this brief set of experiments demonstrates the PID controller’s capabilities and the principle operation. Note, that it was not our intention to tune the system ‘perfectly’ or test all control modes but to merely demonstrate the principle operation of the system. Further tests are required. However, the reader may note the good signal quality and the almost ‘textbook’ plots. All signals shown here are unfiltered and obtained from real experiments.
Velocity Motor Control¶
The next set of experiments demonstrate the velocity control mode. Here, a sample rate of \(1KHz\) is chosen and the controller is configured as a PI controller. The step response to a velocity demand is shown in Fig. 5.15 and Fig. 5.16. It is clearly observable how the P element of the controller leads to a very fast increase in shaft velocity and how the I element of the controller then slowly increases the velocity until the reference is reached asymptotically.

PI control of motor shaft velocity:shaft velocity in rad/s (top) ; dutcy cycle (DC) of PWM signal (bottom).

PI control of motor shaft velocity:shaft velocity in rad/s (top) ; dutcy cycle (DC) of PWM signal (bottom).
The velocity signals is obtained by simple numerical differentiation of the encoder signal. The blue line in the plot shows the measured signal and the black line shows the filtered velocity signal (2nd order Butterworth, cut-off frequency 1/5 of Nyquist frequency for the given sample rate). Fig. 5.15 is merely a zoomed in version of Fig. 5.16.
As for the position control, only a small part of the controllers functionality is demonstrated in this summary of work and further tests are ongoing.
Position Control of 1-DOF Arm¶
We conclude this page by demonstrating simple position control of the MYO-Muscle with an attached arm. This is a 1-DOF experiment with a single muscle, the counterforce is produced by gravity as can be understood from Fig. 5.17.

Simple Myorobotic test rig: Only the upper MYO-Muscle is attached via the tendon with the distal bone. The experimenter deflects the bone to demonstrate the compliant nature of the system and the sensing capabilities.
In this experiment, the linear feedback controller is configured as a pure P position controller of the MYO-Muscle. To limit the motor velocity and to demonstrate the functionality of the output saturation system, the PWM duty cycle was limited to \(15\%\). The plots in Fig. 5.18 show the joint angle, the motor shaft position and the spring displacement. At \(t \approx 1200 ms\) the motor shaft reference value is changed and it is observable that with the change in motor shaft position the joint angle changes too. The steady state is reached at \(t\approx 2400ms\).

1DOF arm control: the plots show the change of motor, joint and spring position.
It is interesting to note that during the first phase of the motion (from 1200ms to 2400ms) the spring of the MYO-Muscle is not deformed. Only later, at \(t\approx 4000ms\), when the experimenter applies an additional vertical force to the distal bone, is a spring displacement and a change in joint angle observable. What is demonstrated here is the inherent compliance of the musculoskeletal approach. Clearly, under a great load or greater accelerations, a spring displacement is also expected during the change in joint position without external disturbances.

1DOF arm control: the plots show the motor shaft velocity (blue raw signal, black LP filtered) and the duty cycle (DC) of the motor control signal.
Also note that the change in motor shaft position is negligible, i.e. the position controller holds the position despite the external disturbances. In other words, the system is passively compliant and not dependent on ‘softly tuned’ motor controllers.

1DOF arm control: normalised plot of MYO-Muscle control states.
To further demonstrate the quality of control system, Fig. 5.20 shows the normalised signals of several motor states. Here it is important to note that the signals are only normalised to allow their display in a single plot in order to demonstrate how they correlate. They are not post-processed for plotting which demonstrate the low-noise nature of our control and signal acquisition system.
[1] | In this first instantiation of the design primitives, only three SPI channels are accessible, this will be changed to four for the second instantiation of the design primitives. |
[2] | In the context of FlexRay, a word is 16 bit. Note that the MYO-Ganglion controller is a 32-bit processor. |
Embedded Robotic Systems¶
Embedded Robotic Systems produces and develops the electronic components.
General Interfaces¶
General Interfaces can provide fully assembled solutions based on MyoRobotics components.
Fraunhofer IPA¶
Fraunhofer develops the muscle units and electronics for MyoRobotics.
Roboy¶
The MyoArm is based on the same artificial muscle systems developed for Roboy. Roboy is a humanoid robot being develop at the Technical University of Munich (TUM) in Germany. He is probably the most human robot in the world, with a human-like skeleton, muscle structure, and incredibly cute looks.