Robotic Joint Impedance Control for Exoskeleton Development

Hello all!

I work at the Laboratório de Biomecatrônica at the Universidade de São Paulo, Brazil. Our focus is the study of Motor Control through the eyes of Mechatronics.

I'm a master student working with exoskeleton development. My master project aims at understanding the interaction between a generic robotic joint and a human joint. This modular approach allows many teams to collaborate even though their problems are not exactly the same.

I am very keen on project documentation, so I decided to create a Github project called ModExo to help with the collaborative development. However, I'm not a really skilled programmer, I'm just making the project move! There are infinite challenges that I'm facing, from programming language to proper sensor reading, amongst others.

My project is strongly focused on the control itself, rather than the mechanical interface. Right now, I have just managed to make the robotic joint behave as a second order system, some people call this Impedance Control.

The system I'm using is quite expensive, however, I truly believe in using cheaper solutions, such as windshield motor as seen in Affordable Exoskeleton Arm (ExoArm) | Hackaday.io and that could be a future possibility for this system.

Driver: EPOS2 70/10

Motor: Maxon Motor EC90 flat
Brushless
90 Watt

Sensors:
Human-Robotic Joint Torque: Strain Gauges in Full Wheatstone Bridge
Motor Position (Integrated EPOS Solution): Combination of Hall Sensor and Encoder Mile
Position Control: Encoder USDigital MA3

High Level Controller: Arduino UNO

The communication between the Arduino and the EPOS is made by CAN BUS protocol. It has shown good performance so far, I have learned a lot with this post here: CANopen control MAxon EPOS2, Sparkfun CANshield and Seeedstudio CAN library - Networking, Protocols, and Devices - Arduino Forum

Any comments or help would be much appreciated!

ModExo Repository