Lynxmotion SSC32/AL5x Robotic Arm Library

It’s been a long time I did not post anything on my blog… I’ve been quite busy during the past few months !

I did not do any major development so far and I decided to slowly come back to my experiments by publishing some of my code. It’s been a while now that I thought it would be cool I publish my code for the Lynxmotion AL5x and its SSC32 board.
I was quite surprised to see that there’s no existing library for these devices.
I made some improvements on the code I wrote some time ago, mostly to support more SSC32 features and to have a better, cleaner and commented code.

So there you go guys, the Lynxmotion library is on my Github account : https://github.com/remyzerems/Lynxmotion

As you can see from the Github page, the main key features are driving servos, input/output access, SSC32 enumeration and of course AL5x joints driving.

Hope this will be in a way useful to somebody !

Delayed Multiple Input Multiple Output Interface library

On my last post, I talked about the « connectionist theory base models ».
I started coding a C# library that could help me in my AI projects in a sense that I keep on spending time putting « small » systems together to make a bigger and smarter one. It’s been some time that I thought it must exist some way to ease things up…

The initial idea is based on a feeling I have around a lot of systems I have to deal with at school, at work, in my everyday life, in programming… : modularity.

They all have common characteristics, but one among them is a major one : the all have either input(s) or output(s) or a combination of the two.
They all have a function which make them useful and working.
You can easily think of such systems like :

  • Your coffee machine
    • Function : make coffee
    • Input : coffee, water and energy
    • Output : drinkable coffee
  • Your DVD player
    • Function : read a DVD and generate appropriate video signals out of it
    • Input : DVD and energy
    • Output : TV compatible video signals

They have a second similarity : they may need to know what happened in the past. Some of the actions of a system may depend on what it did before or on what were the previous inputs.

Another important characteristic is that those systems can be and most of the time are connected to another system. In the previous example of the DVD player, what would be the goal of a DVD player if it could not be connected to a TV ?

These are the major point I kept in mind to start coding the library.
Finally after some iterations and some diverse structure trials I finally came to a satisfying system that allows to mimic all the points I talked about combined with an ease of use in term of programming.

If you are interested in the details or want to try/use this C# library, I published it on GitHub : https://github.com/remyzerems/DeMIMOI
I called it DeMIMOI which stands for Delayed Multiple Input Multiple Output Interface, in reference to the control theory denomination.

At this time I did not use the library in an AI context but I already tried the DeMIMOI library for signal filtering for example. The use case is provided as a sample in the GitHub repository.

I’m pretty sure this is going to help in my experimentations since I’ll be able to build and test reasonably small parts of a system and then simply connect it to a bigger system to include this new module.

The other interesting part is that I’m more on the connectionism theory regarding AI, so I think it will help me make connection based systems easily.

Accord.Net contribution

Accord.Net

I contributed to add the Denavit Hartenberg model support to the Accord.Net library and I’m happy today because my contribution has been released !

In my project, I needed to manage the Kinematics of the robot arm, so I tryed it the hard way first (sinus multiplying cosinus all the way round with angles everywhere). Though, I managed to obtain something quite functional. Some time later I found an article talking about the Denavit Hartenberg (DH) transform which made me realize I spent a lot of hard time to calculate my Kinematics… The DH makes it much more easily !! It also offers a good frame for making it more generic to apply it to any robot configuration.

So I then decided to go for it and code it in C# to add it to my toolbox. I built it generic and flexible to allow easy manipulation of complex models and even push it further to allow animation and on-the-fly modification of the model with model combinations. As I’m more comfy when it’s visual, I also developped a visualization module to display what the model looks like and how it’s moving. Then I decided to share it with the Accord.Net community.

Now, enough words, as a drawing is always better than thousands of hours of explanations, give a look below !

DH model sample app

Some links :

Finally I would like to thank Cesar Souza and all the people involved in Accord.Net and AForge.Net for providing us with such great libraries ! Thank you so much !