​Restarting the Thor software project from scratch.

A project log for Building the Thor robot

Building a 6-axis robot based on the Thor robot. When size DOES matter!

Olaf Baeyens 10/22/2017 at 23:212 Comments

Restarting the Thor software project from scratch. This time with the intention to make it publishable over time.

The software will be built from the ground up, not relying on libraries. The whole point of all this is to learn to develop robotics code from scratch.

It is written in C++ (Visual Studio 2015) with a plugin called Visual Micro that compiles the C++ code to the Arduino Due.

I already have the these parts described in my blog posts:

For me this is my little private project. I prefer to keep developing this at my own pace and on my own. I already work in teams professionally, this one I want to call my own. :-)


dannyvandenheuvel wrote 10/23/2017 at 12:28 point

Hoi Olaf,

That's what I did with the 6DOF robot project, building this robot with 9 smart servo's will delliver me a more accurate results and a  more powerful robot. I'm almost ready to release it. I have built already 3 axis out of six. All my parts are redrawed to use almost no supports at printing . It will be very easy to build one yourself. All parts are built with one extruder on my new leapfrog 3D printer. Almost no wires because the use of serial communication with every servo.   After this project I will re -finnish my Thor robot, so a lot to do :-) I will follow your work because it could be very useful in the near future.

  Are you sure? yes | no

Olaf Baeyens wrote 10/23/2017 at 15:57 point

I am not that far in my work as I wanted to be. If this was my main work then it would probably have been programmed in a few weeks. But I have a few more holidays coming up, more time.

I did encounter strange issues in my previous designs that I can only explain by having buggy compiler output. I am very experienced in c++ and access violations, but this was none of that sort.

The functional code to control the stepper motors (easily) are these single functions I already blogged about. What I am now designing is the class structure to make development easy.

I want to for example dynamically be able to choose the Nextion serial port. The Nextion library assumes compile time choice. I am even thinking about multiple Nextion displays possibility.

The interrupt driven impulse is also working great. You get a predictable step pulse rate, while I do calculations outside that interrupt. I still am figuring out how to create a critical section lock mechanism. The Due is slightly different than the Arduino Uno/Mega.

That critical section locking mechanism, I also included reference counting so it acts more like Windows Critical sections. Methods are re-entrant.

Try-catch does not seem to exist, but I may invent som mechanism to do just that. A try catch is simple, just store the address of the next instruction to execute in some location. And when everything goes wrong jump to that location and continue.

  Are you sure? yes | no