Making software for controlling robots


#1

Would anyone here be interested in starting some kind of project for making software packages to control the various robotic systems that we are trying to develop?

I’m personally working on trying to make a simpler and more universal controller. I feel that the software packages I’ve found that are open source seem to have started as firmware for a specific project, and then being developed further to a level of complexity and lack of documentation that makes it difficult to reuse and develop further for anything that isn’t specifically what it’s original purpose was. A good example I think would be Marlin for 3d printers: Its fantastic, in my opinion, for Cartesian printers, but as soon as you want to change to something that’s not a printer or to another kind of kinematics, it’s very hard to find good and fulfilling documentation.

I recently read a book regarding “clean code” and agile software development, and it seems like functionality similar to that found in Marlin or other packages would be much more flexible if it was more clearly modular and navigable, and each part was properly documented.

I’m starting out trying to make a firmware for RAMPS boards with 3 axis. If anyone would like to help or develop with me in parallel for a different Arduino based platform, or just want to discuss further, please let me know.

Also, if you know of any good projects that are already working on this, let me know. I know of GRBL, but again, I’m having a hard time even getting it up and running on my board.

If it gets anywhere, we could continue to expand, for example for controlling multi robot systems or implementing computer vision or other, relevant things


#2

Hi @MagnusNM,

I’m interested in working in software for this kind of machines, I currently work with a 3 axis CNC using GRBL and have noticed some areas that are in need of improvement. I’ll like to help you in designing, writing and testing the firmware, I’m also interested in improving all the software stack, from the firmware and drivers to the open source CAD/CAM software packages.

I’ve experience mostly writing command line utilities and web-based applications; I have written some non-trivial Arduino sketches and somewhat trivial AVR programs in C and some ASM for the ATMega328p.


#3

Sounds great! Down the line, I have some plans for CAM related software as well, but it’s very much dependent on this initial groundwork.

What communication and development platforms would you prefer? I’m currently using OneNote for planning and designing, but something like a sub-forum here might be more suitable. Also, the bits of code that I have so far are on my OneDrive, I’m assuming github would be the obvious choice for collaboration and version control.

Having a sub forum seems like a pretty good discussion platform, we could discuss and plan a bit further there. I won’t have access to a computer for the next days, but if @taylor sees this maybe he could make one!


#4

I moved this to the “Machines” category - is that what you meant with a sub-forum? “Machines” Should be the place for discussion of any actual work, I would say. If y’all get crazy and start making a lot of stuff we can categorize in more detail.

I like the idea of thinking about control electronics - I agree RAMPS did a lot for 3D printers but its not flexible enough for making Machines and the various Modules. I would love to see a main board that can manage real-time control of distributed controllers - so if you have some Module with 15 motors in it, software can be written that update control parameters of each motor at 1KHz, while each board runs control loops at 20KHz or something.

Have you seen EtherCAT before? It’s a real-time capable variant of Ethernet with pretty high performance for a distributed bus, and it’s built for automation:

If you started an open source EtherCAT based micro-controller board, that could serve as a node in a distributed automated system.

What do you think?


#5

Well - yes! What I was describing was obviously the accompanying software. Again, drawing parallels to open source 3d printers, they have various firmwares, but they’re quite specialized for 3d printing. Imagine if you had a basic framework for firmware that included steppers and BLDC servos with accompanying functionality for acceleration, kinematic configurations, endstops, sensing and so forth. You then develop or use some drivers, either built into the motor or mounted on the controller board (or as a separate unit) and you make some kind of scalable controller system. It’d be really cool to see what could be done. I guess at some point it could start to rival some of the industrially available proprietary systems that are used for setting up manufacturing lines, which is kinda the goal i guess.

It might already exist, but I haven’t found it, and it seems absolutely essential to this kind of project and to open source hardware in general


#6

I’ve recently come across MachineKit, which sounds a bit like this!

http://www.machinekit.io/


#7

It sure does. Good find, I’ll take a look