1 robotic arm + 5 DSP boards + 1 ARM-based microcontroller = a robust research platform
I am currently working as an intern in Germany at Kaiserslautern Technical University (Technische Universität Kaiserslautern). I’m helping to develop control algorithms for a robotic arm in the Institute of Control Systems (Lehrstuhl für Regelungssysteme).
The robotic arm I’m working with is a Kantana robotic arm made by Neuronics AG, based out of Zurich, Switzerland.
The robotic arm has been actively used in industry, as shown in this video clip, as well as increasingly in higher education research. The robotic arm is relatively small — when fully extended vertically it’s about 3/4 of a meter or 30 inches tall and it’s load capacity is less than half a kilogram (1.1 lbs). The robotic arm might seem like it isn’t capable of much, but it has excellent precision and range of motion with its five degrees of freedom.
Herein lies the problem: The robotic arm is precise, as it always knows the current positions of each joint and the calculations to determine the position of the end effector (tip of the arm or gripper), but knowing the proper inputs to obtain a desired position are difficult to predict. For example, without feedback, give the arm a certain amount of power (input a finite amount of energy into the system) and ask, “What is the current position of the arm?”
Reverse engineering the system and creating a valid model are invaluable for robust control. The physical trajectories of the system are calculatable, but the non-linearities of the system, such as various types of friction, are hindering control algorithms. I’ve been tasked with measuring and modeling these non-linearities.
About the robotic arm:
I’m working with a prototype arm that is not self-contained in order to access all of the control boards (DSPs) and ribbon cables that connect each joint together. The DSP boards are used to control the geared DC motors and rotary position encoders that are externally mounted on the arm. The DSPs are programmed in C++ with functions that can be called by the ARM-based microcontroller that is also programmed in C++.
In order to debug code and extract data from the system, the DSP and microcontroller are capable of two-way communication and the microcontroller can send data over a serial connection to the PC. I can measure the current input to each motor (calculated from the voltage across a shunt resistor compared to the voltage across the motor calculated from the PWM signal) and position of the motor with respect to time.
For those who are interested, here’s a look at some of the components I’m using to control the arm:
Texas Instruments TMS320F2808 (5)
NXP LPC2294 (1)
Faulhaber DC Minimotors with optical position encoders (5)
In no particular order, my lofty goal by the middle of August are to:
- Develop a warm-up procedure to ensure consistent results
- Develop a quantitative measurement (not solely time-based) of when the robot is ‘warmed up’
- Measure current using built in measurement chip as well as an oscilloscope of voltage across the shunt resistor
- Based off of results, choose a frictional model for each joint and analyze using MATLAB
- Possibly develop a self-calibration C++ function of frictional constants that’s included in the robot warm up
- A self-check and indicator when calibration is required
As I have just started working with the arm, I have more wild ideas than absolute plans, and feedback is graciously welcomed on my above ideas.
I feel that this type of time constrained project is a great example of a way to learn or teach mechatronics. I have had experience with microcontrollers, programming in C, design and physics, building mechatronic systems, but for this robot the chips, development software, chip programmer, electronic setup, even language of some menus are different (I am in Germany after all).
Adapting quickly to a project and to know enough concepts about an entire system — the electronics, software and hardware components — in order to start solving problems quickly and efficiently is at the heart of mechatronic design. I know I’m far from being a mechatronics expert, and I’d love to know what you think!