This always ends up being the most complex part of any robotics project, in my humble opinion. Thankfully, I have a slight advantage over most hobbyists, in that I have been a software developer for over 25 years. And while this does not make me an expert at coding for Arduino, hardware, or more importantly, robotics… it certainly gives me an understanding of software design, capacities, and minimal frustration & grief over any coding learning curves.
As I mentioned before, most other flavors of this project have opted to use out-of-the-box software on a Raspberry Pi, or none at all. I’ve only seen a few projects where there is much hope or promise to be moving on the ground, if at all, even with their off-the-shelf solutions. And as I also explained previously, this is pretty much why I build projects – to struggle & to learn.
I built a hexapod not long ago, and it was my most ambitious project until Nova came along. I learned a lot from that project, which I’ve applied to the design and build of Nova. The structure of her software comes from a motor-driving class I wrote for the hexapod project, and it works really well for controlling, sequencing, and choreographing movements of a robot in a non-blocking fashion.
Along with motor and movement code, the software also controls all of the components of Nova in conjunction with one another, as well as the communication between the Teensy and Arduino. Though as of this article, some features are not complete or fully integrated to date, they will be soon!
Here are a few videos reviewing the software that I have written for Nova to give her life and an ever-expanding conscience: