Owesome Software

SOE proudly contributes to open-source. Visit our GitHub organization to access our open-source software packages. We are always developing software, so check back often!

Bobble-Bot Simulator

Recently released to our GitHub, the Bobble-Bot simulator enables students and educators to re-explore the classic inverted pendulum control problem in a new way. The simulator makes us of the Robot Operating System (ROS) and the open-source simulation framework, Gazebo. The project aims to demonstrate how a real-world control system can be developed at low cost using simulation. The real Bobble-Bot would have been much more difficult to develop without this handy tool.

Simulation Features

3D Graphics

Realistic visualization based on actual Bobble-Bot reference CAD. The provided URDF matches the Bobble-Bot mass properties and defines the approximate collision geometry.

Python and C++ APIs

The Bobble sim utilizes an object-oriented architecture based around standardized ROS interfaces that enable convenient C++ and Python messaging APIs. Use either C++ or Python to extend the Bobble-Bot simulator’s base capabilities.

Designed for Real-time Control

The Bobble-Bot controller implements a hardware/simulation agnostic software architecture that targets real-time Linux and utilizes ROS control. See how this is done by inspecting the simulation and controller source. Adapt it to your project’s specific needs.

Modular Controller Software

Generic PID and digital filtering C++ classes are included. These modules are ready to be applied to other arbitrary robot controllers and simulators.


All Bobble-Bot control gains and software configuration parameters are easily set from a YAML file. This file can be modified while the robot/simulator is running in an idle mode. This allows for tuning the controller on the fly.


Simulation and graphics have been fully replicated in a containerized environment using Docker. This allows users to get up and running with minimal configuration of their development machine.

Tools for Automated Robot Analysis

Jupyter Notebook is a commonly used open-source tool in data science. It allows for organizing and sharing data processing and analysis code in a readable notebook style format. SOE uses Jupyter for creating analysis notebooks that we can reuse during our robot’s development and testing phase. We’ve developed a light weight Python library that we use in our notebooks. It saves us a lot of time, and we’re happy to share our work in hopes it inspires other developers.