SCRC:Indoor Robot-Magellan: Software
Starting with the 2017 Robot, the software choice for the Sno_bot is the Robot Operating System's (ROS) Kinetic Kame release, running on Ubuntu Mate 16.04 on a Raspberry Pi 3B. Some key systems will be used from ROS 'off-the-shelf' while others will need to be developed.
Robot Operating System (ROS)
ROS provides libraries and tools to help software developers create robot applications. It provides hardware abstraction, device drivers, libraries, visualizers, message-passing, package management, and more. ROS is licensed under an open source, BSD license.
A piece of code that operates a portion of the robotic system can be included/imported into a ROS node file. This 2-part setup allows for development and testing of the code implementation without the hassle of also working with ROS. Then a node can be written to take advantage of the finished implementation.
The ROS wiki is the primary source for information about specific software packages.
Packages planned for use
Sno_bot package development
A typical ROS workflow consists of creating a workspace and building a package that contains all the custom code and ROS package requirements for the robot. Custom launchfiles are then created to launch a robotic system in one command.
The code can be found here: Github
Obviously, not everything can be pulled from a repo (where's the fun in that!), so here are the custom node we'll have to build
Robot Base Controller
The MD25 motor controller does not ship with a library for easy implementation, instead relying on the user to write a custom implementation on their own. Ours was written by Rob Ressler in Python and can be seen on GitHub. This functionality was then imported into a robot base controller node.