Using Matlab With Bobble-Bot

Posted on June 30, 2019 in Matlab

Bobble-Bot now speaks Matlab! Matlab and its companion simulation software, Simulink, are widely used desktop applications across many fields of engineering. It is especially useful for developing and testing prototypes for control systems. In this post, we take a look at using Matlab in combination with techniques from image processing to create a control loop that allows Bobble-Bot to track and follow a blue ball.

BobbleMatlab


Learn more

Learn Controls With Bobble-Bot (Part 1)

Posted on May 25, 2019 in tutorials

Classical linear controls is a subject that is unfortunately glossed over by worn out engineers during their upper level undergraduate course work. Many do not see the subject at all, or they gain only a vague understanding while breezing through some abstract, graphical, Matlab Simulink excercises. This is a bit of a shame because linear feedback control is a wonderful subject rich both in theory and application. Bobble-Bot was invented to provide students and educators with a platform for experimenting with feedback control in a fun and engaging way. This series of blog posts will show how to use Bobble-Bot to have fun exploring this fascinating subject with entirely free and open source software. Part one will focus on keeping Bobble-Bot upright by using a PD controller. Don't know what that is? Read on to find out.

Learn Controls Part 1


Learn more

Using Simulation for Testing and Continuous Integration

Posted on May 20, 2019 in software

Developing software for a complex embedded system is hard. Tracking down a single bug in such a system can often take hours. Even worse, "fixing" a bug in one of these systems often uncovers another bug. It is a vicious cycle that embedded software developers unfortunately know all too well. Time spent resolving these issues during the development of a new product is costly. Many projects fail as a result of brittle and inadequately tested software. Many more succeed, but only after pouring a tremendous amount of money and resources into solving these issues. Fortunately, there are free and open-source tools that can be used to help avoid these problems. This blog post shows the test driven approach used during the development of Bobble-Bot's embedded software. Read more to see how we are able to use this approach to avoid common pitfalls in embedded software development and to achieve responsive balance control.

BobbleSim


Learn more

Docker for Gazebo-ROS Simulations

Posted on January 26, 2018 in docker

Have you ever spent hours trying to get an open-source package to build from source? Docker is a free tool that helps application developers solve this problem by allowing them to package their software and its dependencies into a Linux container. In recent years, Docker has seen a rapid rise in popularity, especially in the web application space. ROS has also recently started providing Docker images and documentation on how to use them. This post explores how I used Docker to containerize the Bobble-Bot Gazebo simulation.

BobbleSim


Learn more

Analyzing ROS Data Using Jupyter (Part 1)

Posted on January 24, 2018 in analysis

Jupyter Notebook is a popular open-source tool used in data science. This blog post covers using Jupyter in combination with the Bobble-Bot simulator to perform an analysis of the robot's balance controller. In part one I explore downloading the simulator and using it to generate sample analysis data for Jupyter Notebook.

Jupyter


Learn more

Analyzing ROS Data Using Jupyter (Part 2)

Posted on January 24, 2018 in analysis

This post will show how to use the library rosbag_pandas to load Gazebo ROS data into a Pandas DataFrame for a Jupyter Notebook based analysis. We first show how to setup the analysis environment using pip. Next, we create some simple plots from the command line before showing how to examine the data using Pandas within Jupyter Notebook.

Sample Data Table


Learn more

Analyzing ROS Data Using Jupyter (Part 3)

Posted on January 24, 2018 in analysis

In the final part of this series, I combine the lessons learned in part one and two to complete the analysis of Bobble-Bot's balance controller. The post covers a modular approach for rendering Matplotlib plots within Jupyter. In addition, I show how to implement a differential drive robot model using NumPy in order to post process Bobble-Bot simulation data. Finally, I conclude the series by producing several plots that capture the performance of the Bobble-Bot balance controller.

Square Drive Sim


Learn more