Skip to content

jurgensymynck/TiSCo_Docs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  • Based on a standard Arduino Mega 2560 with extra breakout boards, and standard hobby servos with small modification.
  • Controls up to 16 modified hobby servos.
  • No specialized robotics theory like Inverse Kinematics is implemented. Complex motions are simply taught using the Teach-in feature: just manipulate the joints by hand while the joint angles are recorded.
  • Three modes of motion:
    • directly mirroring joystick input (normal joystick or custom made using low cost potentiometers),
    • replaying an earlier recorded motion,
    • executing a stream of COSMOS commands, setting the desired joint angles.

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

Stewart/Gough platform 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

  • The robots do not move autonomously by following high-level commands like "walk forward" or "grip object." Instead, they either mirror analog inputs in real time, replay previously recorded motions, or set the joints according to an incoming stream of COSMOS command packets.

  • There is no support for rotary motions like wheels, making Turtle robots or other mobile robots unfeasible at this time. If a reliable teach-in method for multiple rotations is developed, this feature might be included in the future.

  • Battery power supply is not a priority, as the robots cannot move far. Consequently, power consumption is also not a focus, and the robot remains tethered to its power supply.

    (back to top)

Roadmap

  • Write detailed instructions on:
    • Calibration of input potentiometers and joysticks
    • Calibration of servo internal angle feedback potentiometers, setting the safe software limits for servo sweep angles.
    • Calibration of current sensors
    • COSMOS usage
    • recording and replaying motions
  • Improve code comments, expanding the Doxygen generated documentaion.
  • Upgrade the prototype mechanism for much higher stiffness using the Markforged Mark Two Continuous Fiber Composite 3D Printer, and create comprehensive tutorials and demos
  • Create Battle of the Lores video, Round 2 and 3!

(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:

  • What kind of classes go into which file(s)? How to organize class definitions in well-chosen files?
  • Correct usage of include files (.h) vs. code files (.cpp).
  • Proper implementation of Object Oriented Programming with abstraction, encapsulation and inheritance (for code reuse), keeping in mind that the code is running on embedded hardware.
    • inheritance <-> composition
    • public/private members and variables
  • Make code more readable and maintainable.
  • If sensible, refactor large switch() statements using polymorphism, for readability.

Feature requests

  • Implementation of safe serial framed data communication, possibly using COBS or SLIP protocols.
  • Move initialization of all joint and robot parameters that are now hardcoded to COSMOS. The robot should be initialized after booting, via a series of COSMOS initialization commands.
  • Upload/download/verify robot motions via COSMOS instead of compiling the motions together with the code.
  • Move all debug message strings to flash memory instead of SRAM.
  • Write test procedures for testing the code base and COSMOS communication.

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)

About

TiSCo Project description and documentation

Resources

License

Stars

Watchers

Forks