<aside> ☑️

Agenda: (TBC)

  1. Understand most of the broad ROS concepts
    1. What ROS is used for
    2. What a node is
    3. How nodes communicate
    4. Roughly the structure of ROS software and how to run it
  2. Be able to understand how a ROS program may work </aside>

*** The following is to understand the basics of ROS. Its important that you cover most of the content. Do not worry about remembering details just a rough overview and a basic understanding of the concepts. The documentation isn’t strictly necessary, the most important thing is the video series at the bottom below ROS2 Guides ***

Intro Videos

https://www.youtube.com/watch?v=2lIV3dRvHmQ

https://www.youtube.com/watch?v=KAASuA3_4eg

What is ROS?

Credit: Arthur Richards

ROS (in our context) stands for the Robot Operating System. It's not really an operating system as it runs on top of Ubuntu Linux, but it provides useful message passing and standards for robots.

ROS is great for being supported by lots of off-the-shelf robots, making it easy to share and build on existing software, and taking care of repetitive housekeeping tasks like logging. However, the learning curve is quite steep, it's quite limited to Ubuntu, the timing model is challenging, and it's hard to keep up with regular upgrades.

ROS provides us with extra capability that works well with robots, such as logging, code encapsulation, and organization in the form of nodes, as well as simple ways for those nodes to communicate with each other.

ROS vs ROS2

ROS2 has been released to improve things like networking, security, and the timing model. It also offers Windows support. Bristol FSAI only uses ROS2, specifically ROS2 Galactic for our sim.

ROS and ROS2 are fully supported on Linux. ROS2 is also supported on Windows and macOS, but it doesn’t run as well on either as it does on Linux.

Almost all coding will be done in Python and C++, though depending on what you want to do only one may be necessary to learn.

ROS2 Distributions

There are several different ROS2 distributions (also called releases), each offering its own set of features, updates, and levels of support. Newer distributions often include improvements to performance, tools, and stability, but may also introduce small changes in syntax that make code written for one distribution slightly different from another.

Some releases are Long Term Support (LTS), meaning they are maintained and supported for a longer period of time, which makes them more reliable for bigger projects. To avoid compatibility issues, it is important that a team agrees on and sticks to a single distribution. For our work, Bristol FSAI uses ROS2 Galactic, although other popular distributions include Foxy, Humble, and Iron, each with their own support timelines and features.

Gazebo and RViz

Gazebo and RViz are two important tools we can use alongside ROS2.

Gazebo is a powerful simulator that lets us create and test our autonomous driving system in a virtual world, complete with physics, sensors, and environments. This allows us to experiment safely and develop our system without needing the real car every time.