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:
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 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.
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
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)
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
cd webapp npm install npm run dev