Software

Introduction

Welcome to the MRSD APEX Labs software documentation. The root of our organization’s GitHub repository is here: https://github.com/MRSD-APEXLabs/.

Our software is distributed across several distinct repositories, each handling a specific subsystem of our project—ranging from core robot operations and computer vision to navigation and hardware modules. Below are the details and operating instructions for each repository.

Note: All code within these repositories has been thoroughly commented to aid future teams and sponsors in understanding the underlying logic.


Repositories and Operating Instructions

1. Autolab (Main Repository)

This is the primary repository that orchestrates the core system using Docker. It spins up three distinct containers:

Installation & Configuration: To get the system up and running, first clone this repository in recursive mode to pull all submodules:

git clone --recursive https://github.com/MRSD-APEXLabs/Autolab.git
cd Autolab

Next, run the installation and setup scripts:

./autolab.sh install
./autolab.sh setup

Operating Instructions: To start the system and spin up all three Docker containers (robot, sim, and gcs), use:

./autolab up

To execute commands within a specific container, connect to it using:

# Replace <container_name> with robot, sim, or gcs
./autolab connect <container_name> 

To shut the system down safely:

./autolab down

2. Autolab Camera Edge

This repository contains the vision software deployed on the Jetson Xavier edge device. It is responsible for streaming camera feeds, running YOLO object detection models, and executing visual servoing routines.

Operating Instructions: Navigate to the repository on the Jetson Xavier and run the main Python script:

Bash

python3 main.py

3. ot-wrapper

This repository contains the necessary wrapper code to remotely command the Opentrons liquid handler over the network.

4. Gripper-code

This repository contains the embedded code that runs directly on the custom gripper, specifically designed to interface with and command the Opentrons system.

5. Teleoperation

This module contains the control logic that allows a user to teleoperate the xArm6 robotic manipulator using a secondary Leader arm.

6. Navigation

This repository manages the mobile base’s movement.

7. Shaker module

This repository contains the embedded C/C++ code designed to be flashed onto the ESP32 microcontroller that operates the laboratory shaker module.