Robotics Software Engineer

Notes from the 2020 course

Gazebo

Gazebo is a 3D simulation tool that uses 3D models to represent how a ROS toolchain could work in a robot given a simulation.

ROS Essentials

ROS, the Robot Operating System, is a framework that mimics the real time nature of a robot. It consists of nodes. Nodes have their own responsibilities and usually interact with other nodes to determine when to run calculations or make decisions.

Publisher-Subscriber

A publisher-subscriber (pub-sub) model is best described as a pipeline. When an interaction or event occurs, the rest of the pipeline happens sequentially (like dominoes). There should be no cycles.

In robotics, sensors will typically be publishers that signal subscribers to do tasks. Publishers publish to a topic that subscribers subscribe to. Subscribers will perform a task when something new is published.

Service-Client

A service-client model is similar to the server-client model in web applications. Requests are made by a client and the service will perform some calculations accordingly.

In robotics, nodes make service requests that are necessary for it to continue doing its tasks (which was started due to a newly published topic that it was subscribed to).

Localization

Given a map, how can a robot determine where in the map it is?

Markov Localization or Particle Filters

Particle filters help localize a robot by using a point cloud of possible poses that best match its environment readout over time.

Mapping and SLAM

Usually, a robot will not know its environment and must map and localize simultaneously or SLAM (simultaneous localization and mapping).

Path Planning and Navigation

Course Opinions

The course feels more like plug and play instead of actual software engineering.

ROS and Gazebo are nice software packages, but really buggy. Multiple times Gazebo would crash on me while I tried making new buildings and robot models. I question how viable these software packages are in real development environments.

Last updated

Was this helpful?