Git Product home page Git Product logo

riptide_setup's Introduction

Riptide Software

The Riptide AUV Software Platform

This repository serves as a setup utility for the Underwater Robotics Team at The Ohio State University. Our mission is to develop the software which powers our autonomous underwater vehicles (AUVs) that compete in the Association for Unmanned Vehicle Systems International (AUVSI) RoboSub Competition in San Diego, CA. The AUV software is built on Robot Operating System 2 and handles low level controls, computer vision, mission-specific programs, and everything in between.

Supported Operating Systems: Ubuntu 22.04

The Underwater Robotics Team
The Ohio State University

Website | License

OSU UWRT Logo

Initial Setup

Cloning riptide_setup

NOTE: It is common to see brackets such as <> to act as placeholders for actual code. Make sure you replace the ENTIRE phrase <SOMETHING_HERE> with the requested info.

mkdir -p ~/osu-uwrt/
cd ~/osu-uwrt/
git clone https://github.com/osu-uwrt/riptide_setup.git

Installing ROS and/or Dependencies

The riptide_software base currently uses ROS2 Humble Hawksbill and is dependent on various ROS packages and other libraries. Once you have cloned this repository run the following command to set everything up.

~/osu-uwrt/riptide_setup/setup.bash

During setup, the script will prompt the user for multiple options including the following:

  • desktop vs base ROS installation, (default: desktop) for a normal install press enter
  • release installation, (default: no) for a normal install press enter, yes is for deploying to the vehicle
  • simulator installation, (default no) for a no-simulation install press enter

Sourcing

There are a number of environment variables (mostly pertaining to ROS features and package paths) that are required when compiling/running our code. Each time you want to run one of those commands in a terminal, those environment variables will need to be set. This process is called "sourcing", and it is specific to working with catkin workspaces.

To automate this process, we add various commands to the bashrc file indicating what needs to be sourced. As a note, bashrc = Born Again Shell Run-Commands. Each time a new terminal/shell is opened, it executes any commands within this file.

To edit/open the bashrc file, use the terminal text editor, nano (this is a hidden file, hence the "."):

nano ~/.bashrc

To exit and save your changes, press CTRL-X, type "y", then press ENTER. For the changes to take effect, close and re-open all terminals. If you are lazy and don't want to close your terminals, then you will need to source the bashrc file in each terminal that you have open:

source ~/.bashrc

Chaining Workspaces

Each of the above repositories are built on colcon as well. For the entire set of repositories to work together, we must "chain" their setup.bash files within the bashrc file for complete functionality (in essence, we must source these setup.bash files in a specific order).

Below is a complete section of code that must be placed within the bashrc file for ALL of our working workspaces to be chained properly. The lines pertaining to software and dependencies can be commented/omitted if the user decides not to use them. The lines pertaining to /opt/ros/humble must remain.

source /opt/ros/humble/setup.bash
source ~/osu-uwrt/development/software/install/setup.bash
source ~/osu-uwrt/development/dependencies/install/setup.bash

Building riptide_software

ROS2 is compiled using the colcon build system, and so all of our repos will use colcon. The build command is colcon build while your terminal is in the correct directory

riptide_setup's People

Contributors

andenacitelli avatar blaine141 avatar btk203 avatar coalman321 avatar juched avatar mitchsayre avatar osu-uwrt-bot avatar rjp5th avatar spyalexs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

riptide_setup's Issues

Teleop

The teleop stack needs updated to be compatible with the latest code. It hasn't been tested in ages, but would be useful for collecting video at the pool without needing the control stack to be fully functional.

We should be able to drive the robot without going through the attitude or depth controllers.

Controller Data Collection

We need to publish more data about what is going on inside our controllers in order to know why they are failing. As of right now, the input command and output command are plottable, but the error signal is not.

So, need to add publishers for the error signal in each controller.

Thrusters firing in wrong direction

  1. Verify the sign and magnitude of the slopes in thrusters.yml
  2. Update pwm_controller.cpp to include the intercepts for those slopes. This will get us outside the thrust deadband.
  3. Confirm this works in the test tub before merging a fix.

Coprocessor.py: Depth Sensor

Processing the depth/switch messages one byte at a time is causing a huge bottleneck in that data stream. Need to process the data coming from the co-processor one line at a time using readline(). This should speed up the signal significantly and remove the delay.

Test before merging

Condense controller config files

There's like 2 config files per controller, when really they could just be in one file. This would improve readability and make the package more cohesive.

Safety Node

Need a node which monitors all safety related data (battery info, kill switch status, is the computer crashing, etc) and provides logic for handling different safety scenarios. This will later be integrated with the state machine.

Thruster Validation Node

We need an easy to use command line tool for validating the thruster mapping and function prior to running the vehicle. The tool should be easy enough for any team member to run it and interpret its results.

Improve organization of the Riptide vision library

There are only a handful of functions in riptide_vision.py right now, but many more will be added in the coming months. To accommodate this, the functions should be broken out into task-specific classes.

i.e. RiptideVision.GateDetector(); RiptideVision.DiceDetector() etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.