The goal of the Simple Autonomous Wheeled Robot (SAWR) project is to define a basic "example robot" to demonstrate autonomous navigation using ROS with the Intel® RealSense™ 3D cameras. This robot can also be used as a software development and testing platform and to deliver training material.

The associated git repository contains the core hardware specifications, software, and documentation to enable you to build and run your own SAWR.

A 01.org/sawr site also exists and is for supplemental materials, such as blogs, tutorials, event notifications, and videos. It is intended to provide ongoing support to a community of SAWR users and builders.

The frame of the SAWR is modeled using OpenSCAD and can be replicated easily with a laser cutter and standard hardware (nuts, bolts, spacers, o-rings, etc).

For compute and sensing, for this initial release we have focused on the Intel® RealSense™ Robotic Development Kit which includes an Aaeon UP Board and an Intel® RealSense™ R200 3D camera. The frame can also support a Intel® Joule™ Development Kit and a RealSense™ ZR300 3D camera. However we are still working on testing the SW stack for the second option and writing instructions. Stay tuned! In general, the SAWR is a work in progress and we intend to continue to update it with new technologies and capabilities. Follow this site or "watch" the github repo to be informed of updates.

How to get started? First, you need a robot; then you need to install the software, and then run it.

You can follow theseBuild and Assemblyinstructions to create your SAWR. To configure your robot's software stack, follow the Install andLaunch instructions. In general, you should look at the README on the github site for more detail on the SAWR.

Step 1: ​Making a Frame

The SAWR frame, driver and wheel components are laser cut from two Acrylic or POM sheets: one 2mm thick and the second 3mm thick.

Acrylic is perfectly fine and is low-cost, but POM (also known as Acetal, Delrin, or Duracon) is more durable and is recommended for heavy use, such as in a classroom, or if you need to transport the robot frequently. Using Acrylic only for the 2mm sheet but POM for the 3mm sheet is also possible and gives most of the benefit of using POM alone.

If you just want to laser-cut the frame, start with the PDF files below, being careful not to resize them. If you do not have access to the size of sheet specified in these PDF files, you can rearrange the parts using a 2D vector graphics editor such as Inkscape, which is free. In this case, you want to start from the SVG file. If you need to rearrange the file with Adobe Illustrator, however, start from the PDF file, as Adobe Illustrator (annoyingly...) tends to resize SVG on import.

The lines in these files have been colored red and blue. Red lines should be cut first, followed by the blue lines (i.e. following Trotec conventions). Basically, the outline of a part should be cut last so it is only freed from the main sheet once all interior features have been cut. Depending on your laser cutter (i.e. if you have a Universal laser cutter), you may have to modify the colors to get the right cutting order. Depending on the laser cutter model the cut time is between 24 min to 1 hr.

Sheet 1: 2mm Thick

Use one of the following to cut parts from a 2mm sheet of either Acrylic or POM:

Laser Cut file for 2mm sheet in SVG format

Laser Cut file for 2mm sheet in PDF format

Sheet 2: 3mm Thick

If you are using Acrylic, use one of these files to cut a 3mm sheet:

Laser Cut file for 3mm sheet in SVG format for Acrylic

Laser Cut file for 3mm sheet in PDF format for Acrylic

If you are using POM and want a cantilevered suspension, use one of the following files instead for the 3mm sheet:

Laser Cut file for 3mm sheet in SVG format for POM

Laser Cut file for 3mm sheet in PDF format for POM

Step 2: Bill of Materials and Assembly Instructions

In addition to the frame, you will need a number of other parts. Here is a Bill of Materials (BOM), with estimated cost for each, based on prices from the sources cited. The links are for reference only; you may be able to find alternative suppliers with lower costs for these parts.

Select Download from the following web pages:

Download BOM (Bill of Materials) in XLS format

Download BOM (Bill of Materials) in CSV format

This information is also stored on the github site.

Please note that All mechanical drawings, 3D assemblies, and electrical schematics presented
in this document are also available in the form of web links to CAD cloud storage. In general, the online versions of these images and models may be more up-to-date than the images in this document, in addition to allowing interaction, such as rotating a 3D model. Therefore, please follow the links provided in any case where a clearer view is needed or to ensure you have the latest version of the figure. You can also use OpenSCAD to look at the model locally.

Fastener specifications and part numbers are provided in the BOM and 2D drawings. Generic hardware part numbers are from the McMaster-Carr catalog. Note however that all fasteners are sized in metric. In many cases equivalent parts can be substituted, so in addition to McMaster-Carr part numbers we also provide (in BOM and drawings) generic specifications of each part so you can find appropriate substitute parts if you would like.

Generally a 10% tolerance is assumed for the thickness of the plates making up the frame and for the sizes of holes. For example, the slots for tabs on 3mm plates are actually 3.3mm wide so plates that are a little thicker than they are supposed to be will still work. The same is true for most bolt holes; an M3 bolt hole is generally 3.2mm in diameter (the threaded part of an M3 bolt is actually slightly less than 3mm in diameter). This allows for both manufacturing variance (eg for plates, which can very in thickness even within a single sheet!) and for the use of Imperial substitutions for bolts. One exception however where an accurate size is needed is for the bearings and the bolt used for the wheel axle. These must be exact as a press fit is used so either get metric bolts and bearings or edit the CAD files and/or PDF files before cutting if you must make substitutions.

Cut sheets and instructions for making a frame are in the Make subdirectory on the sawr_hardware package in the github site..

Here is a drawing of all laser cut components with the names we will be using to refer to them in the assembly notes.

The Tower plate provides the option to mount either the RDK kit (UP board and Intel RealSense R200) or an Intel Joule Development Kit with an Intel RealSense ZR300 camera. It is also possible to combine a Joule with an R200 camera.

Step 3: Software Installation and Launching Robot

The SAWR software stack supports autonomous navigation using simultaneous localization and mapping (SLAM). This means that it is capable of creating a model of its environment (a map) and then figuring out its current location with respect to that map (localization). In addition, "autonomous navigation" means the robot can be given a goal destination in the map, then it can plan a path from its current estimated position to the destination, and then execute the plan. The plan of course will route around known obstacles in the map but during execution the robot will also dynamically avoid obstacles that show up along the way, re-planning as necessary.

Follow these instructions to set up the software stack on your robot.

Once set up, refer to LAUNCH.md for instructions on how to run and use the software stack.

SAWR uses ROS (Robot Operating System, an open-source middleware framework for robotics) but this is not a tutorial on how to use ROS for mobile autonomous robotics. Please see the ROS wiki and also the many excellent books on ROS. Please also visit and follow the SAWR 01.org project page for more discussion, information, and resources for learning about robotics using SAWR.

This looks fantastic. I'd love to build it, but the BOM is too high for me. I'd love to replicate it using cheaper motors, Pi and Arduino though!
<p>The reason I'm using the Robotis motors is that once you add up the cost of your own MCUs (Arduino), encoders, motor drivers, and gear motors, they are actually a pretty good deal. Also, they are much lower backlash than most gearmotors, and the encoders are magnetic and have very high accuracy. This turns out to be important for speed control and navigation. I've built robots before with my own gearmotors and PID controllers and while interesting, and useful if you want to build LARGE robots, for a small robot these are actually more cost-effective.</p><p>As for using a Pi, etc: sorry, the Rasp Pi is just not powerful enough. Also, memory space is an issue. The UP Board has 4x the memory and is significantly more performant than the Pi. It's also running full desktop Ubuntu, which makes installing ROS very easy. With the Pi, you CAN build a robot that does SLAM, but it typically won't do it on its own: the heavy lifting will be done by a laptop or PC that you will connect to over the internet. I wanted to build an autonomous robot.</p><p>That said... the UP Board has the same form factor as the Pi so you *could* mount a Rasp Pi in its place. I won't stop you ;). However, you will have to use a different camera as the RealSense needs USB 3.0 due to its data rate and the Pi does not have that either.</p>
<p>How exactly its SLAM works? Can you explain from the very beginning, assuming it knows nothing about environment yet, sees some set of distances from the camera - what happens next? In which way these distances are formed into a map, when it moves or turns - in which way known map is matched to new observations?</p>
<p>The SAWR software stack uses ROS, an open-source robot middleware stack. Within that, it uses several packages for doing SLAM: gmapper, which adds range data to build a 2D map; amcl, which given some range data and a map, tries to figure out the robot's current position (localization); and move-base, which plans a path and then tries to move the robot along it, avoiding known obstacles in the map as well as any new ones that show up along the way (eg from range data). I suggest you look at the github project. There are also a lot of books on ROS, I suggest &quot;Programming Robots with ROS&quot; from O'Reilly.</p>
<p>That's a neat project, thanks for sharing :)</p>

About This Instructable




More by mdmccool:SAWR Simple Autonomous Wheeled Robot 
Add instructable to: