TiSCo_Docs

TiSCo project

Teach-in Servo Controller
A framework of robot control software and IT hardware to complement
the mechanical aspects of generic educational and hobby robots.
View TiSCo in action (Youtube)

TiSCo/LORE 'Proof Of Concept' in action. Stewart/Gough platform

About the project

The project offers an easy and consistent method to control mechanisms involving 16 hobby servos.

Programming a Robot by Teaching it

The project provides an easy and reliable way to activate various complex mechanisms using hobby servos. A key feature, often missing in most hobby robot control software, is the Teach-in functionality. This allows users to manually move the robot joints in real time, recording the joint angles as the robot is guided through its movements. After processing the input, the robot can accurately replay the recorded motions at any desired speed. This feature enables the execution of extensive and complex movements without needing advanced robotics theories like Inverse Kinematics.

Why this project?

The project empowers hands-on builders to bring their ideas to life, allowing them to focus on the mechanical aspects of their designs, such as material selection, mechanical strength, stiffness-to-weight ratio, mass/weight, durability, manufacturability, sustainability, and cost.

Once the mechanical design is validated, the mechanism can be given to software and microcontroller enthusiasts to develop the necessary robotics control firmware.

Key features

TiSCo deals exclusively with the electronics and software. For the mechanical side of the robots, see the AMROD project homepage!

(see also what the project doesn’t do)

(back to top)

Hardware

The brain of TiSCo: Arduino Mega 2560 with shields and breakout boards      Hitec HS-645MG hobby servo

The controller is a standard Arduino Mega 2560 rev. 3 topped with a 16 channel PWM servo shield, driving up to 16 modified hobby servos (Hitec HS-625MG and HS-645MG, eight are connected in the prototype of which three actually drive the mechanism). Power to the servos is fed by one or more Weidmuller CP E SNT 100W 5V, 16A Switched Mode Power Supply.

Adafruit ADS1015      low cost potentiometer with extra radial flattening

A few ADS1015 analog to digital breakout boards together with lots of analog input pins, register the angle of modified low cost potentiometers as well as the servos internal shaft angle.

(back to top)

OpenC3 COSMOS Control Software

Multiple COSMOS command and telemetry screens, for controlling TiSCo

The robot is controlled by OpenC3 COSMOS (“The software for integration, test, and operations”). Using Command and Telemetry ‘screens’, all operational instructions, detailed telemetry and test commands are passed via serial protocol over USB cable.

Fitting the telemetry data Fitting the telemetry data

COSMOS allows for all telemetry data to be stored and to be extracted for further analysis. An R script cleans up, curve-fits and resamples the raw telemetry data. This results in an C++ include file called motion_1.h (1 or higher) that contains the motion data, ready to be (re)compiled in the firmware.

(back to top)

‘Proof of Concept’ Development Prototype

TiSCo/LORE 'Proof Of Concept' in action.

Using the Teach-In functionality, setting any mechanical construction in motion is effortless. For example, the image shows a three DOF (degrees of freedom) ‘proof-of-concept’ made from 4mm plywood. Although it lacks the stiffness for proper functionality, it serves well for designing and testing the firmware and COSMOS control software.

See it in action as it draws a logo on a phosphorescent screen with a UV LED. The motion was recorded earlier by tracing the logo from a piece of paper placed on the screen (video from the AMROD YouTube playlist). Using a telemetry screen, the PWM pulses used for each joint can be retrieved and displayed while the motion is running.

(back to top)

Stewart-Gough platform

</a> Stewart/Gough platform </a> Stewart/Gough platform

See the repo with full description and annotated code, and s2+++++oee the online Stewart-Gough platform servo angle generator!

(back to top)

Detailed Documentation and More Info

What the Project Doesn’t Do

Roadmap

(back to top)

Contributing

Since this project will be featured in an educational setting, it is essential that it exemplifies good coding practices and the use of embedded Object-Oriented Programming in C++. Additionally, the coding style should closely align with established Arduino coding conventions.

Prioritized todos

Coding style

Evaluate the code and suggest better (embedded) coding practices:

Feature requests

License

(back to top)

About me

I work at Odisee University College as a teacher and researcher in the Professional Bachelor program for Design and Production Technology (Ontwerp- en productietechnologie in Dutch). I teach courses on mechanical design and CAD systems, including SOLIDWORKS and its integrated FEA simulation software, SOLIDWORKS Simulation. My teaching focuses on the design, assembly, and documentation of 3D-printed parts (both polymer and metal) and sheet metal parts.

More than two decades ago I received some formal training in microcontroller programming (using C — what else?) which I enjoyed very much. Afterwards, I sadly never really got the change to use these skills in a professional context.

With the advent of powerful, easy to use and cheap controller boards like the Arduinos, and after noticing how quick and effortlessly students slapped an Arduino and motors to their 3D printed builds, I decided to reorient my courses.

This project aims to help me (re)learn C and C++ in an embedded context while building cool robots!

(back to top)