Skip to content

General Infrastructure

Mehul Goel edited this page Oct 24, 2024 · 6 revisions

File Structure

  • docs
  • Contains certain documentation outlining how the software architecture is supposed to look
  • maps
  • Contains custom map as a tile server of Flagstaff Hill to make it easier to view during the actual race without the internet.
  • Connects to Foxglove
  • rb_ws
  • ROS workspace that all the code is contained within
  • Contains the ROS Package buggy which contains the majority of code that RoboBuggy Software will write, and is contained within this ROS package
  • Take a look here for more information Package Wiki Page

Docker

Why

Docker is used within the development containers to make sure that the development environments between various machines are identical, and should be as similar to the computers on NAND and Short Circuit as functionally possible. The goal is to not have significant software setup troubles when onboarding new members and to keep systems relatively similar between machines.

The goal is to keep Docker maintained and up to date with what runs onboard.

How

The bash script setup_dev.sh clears out all old Docker containers, uses the appropriate docker-compose YAML file, and then actually builds and starts the container for users.

docker-dev.yml is the docker-compose file that contains the system setup that should mimic what is on Short Circuit. It also mentions which Dockerfile to use.

Dockerfile is the dockerfile used to create the dev container. We build off of ROS's official Humble docker container, including the additional ROS packages for Foxglove, the INS driver, and a variety of other drivers. Afterward, we pip to install the necessary python packages, specified in python-requirements.txt. We also include the initial build system for docker with the bashrc to make it efficient.

ROS

ROS stands for Robotic Operating System and is how the software stack is run. The idea is to be able to concurrently run multiple different ROS nodes, which are effectively python processes, that can interact with each other and send data using ros topics. The reason for using ROS is because it allows the largest system compatibility with our external devices, including the INS, Zed Camera, and potentially a Velodyne 16 LiDAR.

ROS Node

For an example ros node, take a look at debug/watchdog_node.

To create a ROS Node from scratch:

  1. Follow this tutorial
  2. Inside setup.py, under entry_points create a new line in console scripts that names the executable (what you are running, and which function to run on execution)

ROS Launch File

A ROS Launch file is the way to launch multiple nodes, and control what is happening in the system. The directory for current launch files is rb_ws/src/buggy/launch. To create a new launch file, name it and add the important nodes. You will probably need foxglove to actually visualize whatever code you are running.

Clone this wiki locally