Skip to content

mgpauly1458/IC_protobot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

55 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

IC_protobot

Overview

This is a clone of the shared project repository made by the members of the University of Hawaii Robotic Space Exploration Team. Our team's goal is to creat a six wheeled robot that can drive, operate a manipulator arm, detect life, and autonomously navigate which we will officially enter into the University Rover Challenge, June 2022. This repository contains the software module prototypes which we worked diligently on in order to prove the architectural concepts laid out in our Critical Design Review.

Contributors: Maxwell Pauly, Bret Witt, Ashten Akemoto, Jacob Sequeira, Jeraldine Milla, Stephanie Alemore, and Zolbo Tomita.

Picture of the robot currently used for prototyping:
image

Robot Operating System (ROS)

ROS is an open source robotics middleware suite and is the premier framework for robotic rapid prototyping. The ROS wiki is an outstanding resource to learn more so I won't go into detail here. The project uses ROS for the majority of the robot's communication between components and functionality. Each software developer on the project completed the ROS Tutorials and below is a demonstration of ROS nodes talking to one another and executing commands.

rosDemo.mp4

Gazebo Simulation

Gazebo is a suite of simulation software that communicates quite nicely with ROS. The team religiously uses gazebo to simulate all prototyped software and hardware dimensions before any fabrication takes place.

A basic gazebo simulation with a turtlebot and obstacles. The turtlebot is using it's simulated laser scanner and a simple obstacle avoidance algorithm to wander around obstacles. gazeboBasics

Web App Graphical User Interface (GUI)

A GUI is needed to contorl the robot and subsequently compete in the URC competition. The stack begins with a simple web app which interfaces with the ROS network via a web socket. Commands are transferred wirelessly using 802.11 WiFi and the HTTP protocol. The web server was made using Node.js and Express (source). The data is displayed to the operator using html/css/javascript (source). The video below shows a demo of the latest prototype where a video feed and three topics are displayed on the homepage.
The latest GUI prototype can display video output, and topic data. The up and down arrows are pressed on the keyboard and which sends velocity commands to ROS, which can be seen at the bottom of the display.

guiDemo.mp4

An earlier prototype, text input in an html form is sent to the ROS network and broadcasted by a node.

guiProto.mp4

Motor Encoders

The robot uses ten motors: six for forward and backward acceleration and four for steering the wheels left and right. We are using Roboclaw motor encoders which communicate over serial ports.

A 'roboclaw' object was created using C++ which acts as the bridge between the linux serial ports and the actual encoders (source). This object is used by the ROS node (source) to properly send and recieve data and control when the wheels spin.

(video of ros sending and recieving data and turning the wheels)

Installation

Dependencies

sudo apt update
sudo apt upgrade
sudo apt-get install ros-noetic-rosbridge-suite ros-noetic-rosbridge-server nodejs npm

Getting Started:

Terminal 1 (runs ros core through the rosbridge (web socket package) launch file):

cd catkin_ws source devel/setup.bash roslaunch rosbridge_server rosbridge_websocket.launch

Terminal 2 (runs the package I made that listens to /score topic which uses std_msgs/Int64 messages):

cd catkin_ws source devel/setup.bash rosrun listener_package score_listener

Terminal 3 (runs the web app):

cd webapp npm install npm run dev

Web Browser:

http://localhost:3000 -->

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published