Stúdíó Baksi software
The GUI for controlling Baksi the robot.
Studio Baksi GitHub repository
Development
I received a grant from the Icelandic Student Innovation Fund to hire a university student to make control software for Baksi the robot. Guðjón Bergmann, aerospace engineering student at TU Delft, had the job to create the BAKSI Python program during the summer of 2023. So I scrambled to finish building Baksi, graduated from the Fab Academy and immediately sent Baksi to Delft.
Features
Guðjón got a lot further than I expected. He made a zoomable timeline where you can create, edit, copy and movement blocks and then you can save and load the whole file. He even figured out how to add PNGs of Baksi, to make it look nice. And when you play the motion in the GUI, the program sends commands to the joints in the arm via a USB serial connection. Currently, it also sends the commands when you're moving around the timeline with the mouse. When I've tuned up the PID controllers on the motors and got Baksi operational, it will be interesting to see Baksi try to follow quick scrubbing in the GUI in real time. I say scrubbing because video editors are the inspiration for this GUI, and scrubbing is the term for dragging a slider to quickly navigate through a video timeline.
Guðjón made the GUI with PyQt5, which means that in theory, this set of Python scripts could be turned into a standalone program. I think fbs is probably the way to go to build a desktop app.
Guðjón Bergmann.
Why not ROS?
My initial plan was that Guðjón would use ROS (Robot Operating System) to build the software, but a fellow student at TU Delft who works with ROS advised him against it. ROS is for much bigger and more complicated systems, and it is complicated in itself. ROS also needs a computer running Ubuntu, but Baksi only has microcontrollers and I don't want to add more cost to the robot for an unclear return. Jake Read, creative machine designer and PhD student at the Center for Bits and Atoms at MIT, also advised me not to use ROS for this project.