Goose is a mobile autonomous robot I designed and built over 6 months in my spare time for a robotics competition. This was a fully custom and challenging build that tested my competence in electrical engineering, mechanical engineering, control systems, and computer science.
Instead of focusing heavily on the competition, the goal of this article is to briefly go through the system design process. I’ll touch on my various design choices and discuss how I chose to address some of the common issues in designing an autonomous robot. This is not a tutorial (those will be coming later) but more of a case study.
Reading Time: 2minutesI recently needed to build Python 3.6 from source on the BeagleBone Black for a robotics project and discovered that the build would always fail after running out of memory. Who could have figured that 512MB of RAM wasn’t enough to build Python from source?!
While I could have set up cross-compilation and performed the heavy lifting on my computer with more resources, I figured this was a perfect problem to solve by adding some swap memory to the BeagleBone Black.
Reading Time: 2minutesThe BeagleBone Black ships with a really great browser-based IDE called Cloud9, which is accessed by going to your BBB IP address at port 3000. While I don’t use Cloud9 for heavy development, it’s handy for debugging and quick changes to scripts. It also has a built-in terminal which means I can do everything in the browser.
By default Cloud9 launches a workspace at /usr/lib/cloud9, which has useful examples and scripts for all sorts of applications. I want it to point, instead, to my personal projects folder so I’ll change the default Cloud9 workspace on the BeagleBone Black to /home/debian/projects.
Reading Time: 4minutesConnecting a BeagleBone Black (BBB) to the internet over USB is a simple process thanks to the internet sharing capabilities of Windows. This is extremely convenient when developing because it allows your BeagleBone Black to have an internet connection as long as your computer or laptop has one, no matter the network, and SSH access over a single USB cable.
ModBot is a simple robotics platform created for testing sensors, algorithms, vision systems, and everything else in between. I designed this platform with modularity in mind (thus the name) which requires the compartmentalization of behaviors and functions into discrete and, ideally, interchangeable modules. Since this is an experimental platform I opted not tie it to ROS (even though it still uses a Linux environment so ROS can be used) and created a very simple ASCII protocol for communication between modules. Lastly, I added teleoperation capabilities using a PlayStation DualShock 4 controller.