Introduction: Autonomous Solar Robot Stage 1
Background:
Hi, my name is Ben Rawstron and this is the robot I have been working on, recently in my sophomore (tenth grade) year of high school. I created this project as an "independent study" at my local school here in Waldoboro Maine since I wanted to surpass the limitations of robots I had worked with in the past. I have always been interested in creating a robot which would roam around searching and exploring independent of any user. This inspiration was fueled by the fact that I was never given a pet when I was young, so I decided to make my own. In the past I have made Lego Mindstorms robots which were completely original in design. The most notable Lego robot was again an autonomous robot which I created when I was 11. Mechanically, I was able to create a very impressive and successful Lego robot which anyone, with an eye for intricate robust Lego mechanisms, could appreciate. The downside was the programming code along with the few types of sensors available which limited the ability of the robot.
Therefore I built this robot with the goal of creating a robot capable, of working unattended (autonomous) and most importantly capable of making logical decisions based on its surroundings while being fully independent and charging itself with solar panels. All of us who are into robotics are familiar with the robots that come up to an obstacle and make a sharp turn left or right depending on the threshold setting of stationary sensors located on the two front corners. These robots are great at bouncing themselves around without coming in physical contact with the object however they often are in a bind when confronted with objects on both sides and fail to make calculated decisions which present fewer problems after the decision to turn a certain way.
In addition, the concept of an autonomous robot is not new idea and robots that move without an operator have become common. The other part which makes a robot fully "autonomous" is its independence which is less often conquered and relates to the power source. The power source is a major problem which is difficult to address since a sustainable power source is often larger than the robot itself. Solar panels present a proven solution to the amount power needed but again require more space than available on the surface of the robot. The solution this robot uses is an expandable PV (photovoltaic) array similar to what you would find on a lunar rover. Above the robot frame, which you currently see in the pictures, will have a double layer “umbrella” of solar panels. Four solar panels which are stationary will be on top in landscape format and 2 more panels on either side of the robot in portrait form will slide out from underneath the top layer for a total of 8 panels. The robot will look for a source of ambient light and then measure the light spectrum with a color sensor which will ensure the light source is coming from the sun (not a light bulb that would not provide enough power) and then plot a path toward the light in attempt to charge the 16 amps of Li-Po battery power.
How I intend to use the laser cutter:
I have entered the Hurricane laser competition for multiple reasons. First, I attend a small town school with a diverse and capable student body in the midcoast Maine region U.S. which lacks many of the more sophisticated/useful tools since our district does not have the money to support such expenses. Accordingly, this has a trickle down affect to all the students which are inhibited to have classes which explore advanced woodworking, arts and crafts, and fabrication of detailed components. Cost aside, my teachers are very interested in etching for both the shop class and the arts classes. Individually, I have a numerous uses for the laser cutter which range from etching, marking and cutting pieces for fabrication to cutting pieces for creating models and full scale devices. Some exact examples include, accurately marking drill holes and cut lines on metal pieces for the autonomous robot based on computer designs, cutting out and fabricating PCBs (printed circuit boards), and accurately cutting out the plastic pieces of the expandable solar array necessary to finish this autonomous robot. The solar array is made out of plastic pieces because of weight concerns and it is extremely difficult to build intricate pieces and then replicate those with a hand tool, exactly, while maintaining a mechanism that still works fluently. On the whole, I hope to share this laser cutter with my fellow students and give them the opportunity to explore their ideas with such a useful tool by donating the laser cutter to my school. I hope you enjoy this project and please view my other project on a Battery Voltage Indicator.
(Note: Notice the refresh rate of the robot's sensors speeds up as the robot approaches an object and how it searches for open space rather than "bouncing" it's trajectory off the closest object.)
Goal: To create an autonomous robot which is fully independent, makes intelligent navigation decisions based on its surroundings and is capable of finding a source of light which it can use to recharge its batteries.
Hi, my name is Ben Rawstron and this is the robot I have been working on, recently in my sophomore (tenth grade) year of high school. I created this project as an "independent study" at my local school here in Waldoboro Maine since I wanted to surpass the limitations of robots I had worked with in the past. I have always been interested in creating a robot which would roam around searching and exploring independent of any user. This inspiration was fueled by the fact that I was never given a pet when I was young, so I decided to make my own. In the past I have made Lego Mindstorms robots which were completely original in design. The most notable Lego robot was again an autonomous robot which I created when I was 11. Mechanically, I was able to create a very impressive and successful Lego robot which anyone, with an eye for intricate robust Lego mechanisms, could appreciate. The downside was the programming code along with the few types of sensors available which limited the ability of the robot.
Therefore I built this robot with the goal of creating a robot capable, of working unattended (autonomous) and most importantly capable of making logical decisions based on its surroundings while being fully independent and charging itself with solar panels. All of us who are into robotics are familiar with the robots that come up to an obstacle and make a sharp turn left or right depending on the threshold setting of stationary sensors located on the two front corners. These robots are great at bouncing themselves around without coming in physical contact with the object however they often are in a bind when confronted with objects on both sides and fail to make calculated decisions which present fewer problems after the decision to turn a certain way.
In addition, the concept of an autonomous robot is not new idea and robots that move without an operator have become common. The other part which makes a robot fully "autonomous" is its independence which is less often conquered and relates to the power source. The power source is a major problem which is difficult to address since a sustainable power source is often larger than the robot itself. Solar panels present a proven solution to the amount power needed but again require more space than available on the surface of the robot. The solution this robot uses is an expandable PV (photovoltaic) array similar to what you would find on a lunar rover. Above the robot frame, which you currently see in the pictures, will have a double layer “umbrella” of solar panels. Four solar panels which are stationary will be on top in landscape format and 2 more panels on either side of the robot in portrait form will slide out from underneath the top layer for a total of 8 panels. The robot will look for a source of ambient light and then measure the light spectrum with a color sensor which will ensure the light source is coming from the sun (not a light bulb that would not provide enough power) and then plot a path toward the light in attempt to charge the 16 amps of Li-Po battery power.
How I intend to use the laser cutter:
I have entered the Hurricane laser competition for multiple reasons. First, I attend a small town school with a diverse and capable student body in the midcoast Maine region U.S. which lacks many of the more sophisticated/useful tools since our district does not have the money to support such expenses. Accordingly, this has a trickle down affect to all the students which are inhibited to have classes which explore advanced woodworking, arts and crafts, and fabrication of detailed components. Cost aside, my teachers are very interested in etching for both the shop class and the arts classes. Individually, I have a numerous uses for the laser cutter which range from etching, marking and cutting pieces for fabrication to cutting pieces for creating models and full scale devices. Some exact examples include, accurately marking drill holes and cut lines on metal pieces for the autonomous robot based on computer designs, cutting out and fabricating PCBs (printed circuit boards), and accurately cutting out the plastic pieces of the expandable solar array necessary to finish this autonomous robot. The solar array is made out of plastic pieces because of weight concerns and it is extremely difficult to build intricate pieces and then replicate those with a hand tool, exactly, while maintaining a mechanism that still works fluently. On the whole, I hope to share this laser cutter with my fellow students and give them the opportunity to explore their ideas with such a useful tool by donating the laser cutter to my school. I hope you enjoy this project and please view my other project on a Battery Voltage Indicator.
(Note: Notice the refresh rate of the robot's sensors speeds up as the robot approaches an object and how it searches for open space rather than "bouncing" it's trajectory off the closest object.)
Goal: To create an autonomous robot which is fully independent, makes intelligent navigation decisions based on its surroundings and is capable of finding a source of light which it can use to recharge its batteries.
Step 1: Designing Robot and Cutting the Material
Gather the Materials:
The major parts include:
~ 4 standard continuous Parallax (Futaba) servos with wheels (Parallax)
~ 1 standard High Torque Servo (Futaba) for steering
~ 2 Hitec HS-35HD ultra nano servos for the forward sensors
~ 1 Hitec HS-5045HB servo for the back sensor
~ 1-2 Li-Po batteries with the Li-Po Rider Pro solar/USB charger (blue) from the Robot Shop
~ 2 Maxbotics ultrasonic sensors (MB1220 or MB1240 depending on desired sensitivity)
~ 1 Parallax Ping ultrasonic sensor for the back
~ USB cord
~ Small sleeve bearings for the steering mechanism (whatever can be found; I used aluminum dowels which came off of robots made by Parallax which I drilled out with a drill press to make sleeve bearings.
~ Cotter pin for the steering mechanism
~ Oil for the various moving metal parts
Raw materials:
~ Pieces of sheet metal (aluminum) for the frame and servo mounts
~ #8, #6, and #4 size nuts and bolts along with smaller nuts and bolts for the various micro servos
~ Wiring; for example telephone wire (4 wires) for the sensor and servo extensions
~ Glue for the wire extensions and servo mounts.
~ Brad nails (small) for mounting the front sensors.
~ liquid electrical tape and heat shrinkable tubing for the sensor and servo extensions (extensions can be bought instead)
~ #6 washers for the steering mechanism
~ braze rod for brazing as well as linkages (other soft round metal rods can be used)
~ small pieces of scrap wood for servo mounts
~ metal flat bar (steering system)
~ nails for steering shaft
~ soap stone for marking (optional)
PCB materials:
~ ATMEL ATMEGA 1284p processor
~ 2 chip LED (optional: regular LEDs but the circuit design must be changed)
~ Many rows of standard spaced Pin Headers for both the board as well as servo and sensor extensions
~ Oscillator with its capacitors
~ Reset switch
Note: please see diagram for more exact details
Tools:
Note: This project requires a variety of tools which you would find in a well equipped shop.
~ Drill press with drills
~ Jig Saw or some other handheld vertical blade saw
~ Grinding wheel and a file for the rough edges
~ Screw drivers, pliers etc.
~ Dremel Rotary Tool with its accessories (cutting disk, carving/grinding bits, drills and fine tip drills for the PCB)
~ A metal saw (something with a metal cutting blade) for cutting the metal flat bar
~ Sheet metal cutter (optional) for cutting the rough shape of the frame
~ Sheet metal bender to bend the 90 degree angles
~ Soldering Iron for the PCB and electronics
~ Some type of high power torch for brazing welding or silver soldering (your choice of boding the steering mechanisms)
~ Tap and die set for the steering mechansims
~ A vise or other clamping mechanism
~ Calipers
The major parts include:
~ 4 standard continuous Parallax (Futaba) servos with wheels (Parallax)
~ 1 standard High Torque Servo (Futaba) for steering
~ 2 Hitec HS-35HD ultra nano servos for the forward sensors
~ 1 Hitec HS-5045HB servo for the back sensor
~ 1-2 Li-Po batteries with the Li-Po Rider Pro solar/USB charger (blue) from the Robot Shop
~ 2 Maxbotics ultrasonic sensors (MB1220 or MB1240 depending on desired sensitivity)
~ 1 Parallax Ping ultrasonic sensor for the back
~ USB cord
~ Small sleeve bearings for the steering mechanism (whatever can be found; I used aluminum dowels which came off of robots made by Parallax which I drilled out with a drill press to make sleeve bearings.
~ Cotter pin for the steering mechanism
~ Oil for the various moving metal parts
Raw materials:
~ Pieces of sheet metal (aluminum) for the frame and servo mounts
~ #8, #6, and #4 size nuts and bolts along with smaller nuts and bolts for the various micro servos
~ Wiring; for example telephone wire (4 wires) for the sensor and servo extensions
~ Glue for the wire extensions and servo mounts.
~ Brad nails (small) for mounting the front sensors.
~ liquid electrical tape and heat shrinkable tubing for the sensor and servo extensions (extensions can be bought instead)
~ #6 washers for the steering mechanism
~ braze rod for brazing as well as linkages (other soft round metal rods can be used)
~ small pieces of scrap wood for servo mounts
~ metal flat bar (steering system)
~ nails for steering shaft
~ soap stone for marking (optional)
PCB materials:
~ ATMEL ATMEGA 1284p processor
~ 2 chip LED (optional: regular LEDs but the circuit design must be changed)
~ Many rows of standard spaced Pin Headers for both the board as well as servo and sensor extensions
~ Oscillator with its capacitors
~ Reset switch
Note: please see diagram for more exact details
Tools:
Note: This project requires a variety of tools which you would find in a well equipped shop.
~ Drill press with drills
~ Jig Saw or some other handheld vertical blade saw
~ Grinding wheel and a file for the rough edges
~ Screw drivers, pliers etc.
~ Dremel Rotary Tool with its accessories (cutting disk, carving/grinding bits, drills and fine tip drills for the PCB)
~ A metal saw (something with a metal cutting blade) for cutting the metal flat bar
~ Sheet metal cutter (optional) for cutting the rough shape of the frame
~ Sheet metal bender to bend the 90 degree angles
~ Soldering Iron for the PCB and electronics
~ Some type of high power torch for brazing welding or silver soldering (your choice of boding the steering mechanisms)
~ Tap and die set for the steering mechansims
~ A vise or other clamping mechanism
~ Calipers
Step 2: The Blueprints
Build the Pieces:
Start by creating the frame which is made from a piece of sheet metal. Use the attached blueprints to mark the dimensions and cutouts on the metal and then cut out the basic shape of the robot. Start by using a sheet metal sheer table to cut the rough dimensions and create a clean edge to work with. Then, use saws and other metal cutting tools or your choice (I used a handheld Jigsaw) to cut out the spaces for the front and back wheel/servo assemblies. Be sure to file/grind the sharp edges after cutting as a safety precaution. Use the Dremel tool (or equivalent) with a cutting or carving bit to hollow out spaces for the servos. Give a little bit of extra space around the servos to make sure they do not wear against the metal and can easily be installed. The Dremel's rotary cutting disks come in handy when making sharp 90 degree corners which the servos fit in. Use the Dremel tool to cut out the mini servo cutouts at the front of the robot. Be careful when using the cutting disks to keep your hands away from the metal being cut and preferably use gloves because the metal will become very hot. Take breaks and allow time for the metal to cool. I had problems with the aluminum "melting"/building up on the cutting disk which prevented it from cutting and instead created a lot of heat. I used a file to remove this build up of metal on the cutting disk. Use a combination of the Dremel tool and a drill press to drill out the holes for the servos. The mounting holes for the servos should be marked by both measurement and eye because of imperfections which may change the mounting locations from the original blueprints. Likewise, the nut and bolt sizes should be bought per servo. Leave the bending of the 90 degree tap off until after all the frame cutouts have been made since bending it ahead of time will make the frame difficult to handle and therefore work on.
Start by creating the frame which is made from a piece of sheet metal. Use the attached blueprints to mark the dimensions and cutouts on the metal and then cut out the basic shape of the robot. Start by using a sheet metal sheer table to cut the rough dimensions and create a clean edge to work with. Then, use saws and other metal cutting tools or your choice (I used a handheld Jigsaw) to cut out the spaces for the front and back wheel/servo assemblies. Be sure to file/grind the sharp edges after cutting as a safety precaution. Use the Dremel tool (or equivalent) with a cutting or carving bit to hollow out spaces for the servos. Give a little bit of extra space around the servos to make sure they do not wear against the metal and can easily be installed. The Dremel's rotary cutting disks come in handy when making sharp 90 degree corners which the servos fit in. Use the Dremel tool to cut out the mini servo cutouts at the front of the robot. Be careful when using the cutting disks to keep your hands away from the metal being cut and preferably use gloves because the metal will become very hot. Take breaks and allow time for the metal to cool. I had problems with the aluminum "melting"/building up on the cutting disk which prevented it from cutting and instead created a lot of heat. I used a file to remove this build up of metal on the cutting disk. Use a combination of the Dremel tool and a drill press to drill out the holes for the servos. The mounting holes for the servos should be marked by both measurement and eye because of imperfections which may change the mounting locations from the original blueprints. Likewise, the nut and bolt sizes should be bought per servo. Leave the bending of the 90 degree tap off until after all the frame cutouts have been made since bending it ahead of time will make the frame difficult to handle and therefore work on.
Step 3: The Steering System
The Steering Mechanism:
These linkages are made to be adjustable and can be calibrated around fabrications errors. Start by cutting the metal flat bar pieces based on the blueprints. There should be a total of 6 pieces stacked together to form a steering brace 3/4 of an inch tall above the sheet metal frame. View the pictures to see the layout of the flat bar pieces. The sleeve bearings for the steering shaft is an aluminum support dowel which was originally threaded for a Parallax Boebot. Carefully drill this piece out to the width of the nail with a drill press being sure to keep the drill vertical in the aluminum dowel. If it is difficult to drill a straight hole with a larger drill, consider using a smaller drill first which is easier to control to make a pilot hole. If possible, smooth the inside of this sleeve bearing with fine sandpaper or crocus cloth to reduce the wear and tear on the shaft. This sleeve is held in place by the friction created by the two separate flat bar plates. Drill the hole in the flat bar slightly smaller than the sleeve so it can be gently tapped in place with a hammer. If the sleeve is loosely held by the flat bar plates, you can drill a hole close to the sleeve which you can insert a bolt and "clamp" the pieces of flat bar together which is sure to hold the sleeve in place.
The servo holder are made from a piece of metal which is bent at the top and provides a small flat area where a nail can be attached by brazing, welding or silver soldering depending on the metal used. I used a steel plate brazed to a common steel nail.
Next make "lock" sleeve which is fixed to the shaft and connects to the steering linkages. Again, this is a drilled out sleeve which I got from parts for a Parallax Boebot. Turn this sleeve on its side so the hole which goes through it is horizontal and place it in a movable vice (or find a way of clamping it in place for ex. Visegrips). Place the vise under a drill press and drill a single hole through its center the width of the inside diameter of the thread you intend to use. Use calipers to find the inside diameter of the if the threads (between the ridges). Thread this hole with a tap and die set to the desired thread which should be around a #6 size bolt. Push down firmly with the tap and turn clockwise. Go entirely through the sleeve to ensure good threads on at least one side. You may want to attempt this on a scrap piece first to become familiar with the process.
Click pictures for notes. Later, connect the two linkages to the servo with some spacers and a cotter pin. Experiment with the different holds on the servo arm to determine which works best for you.
These linkages are made to be adjustable and can be calibrated around fabrications errors. Start by cutting the metal flat bar pieces based on the blueprints. There should be a total of 6 pieces stacked together to form a steering brace 3/4 of an inch tall above the sheet metal frame. View the pictures to see the layout of the flat bar pieces. The sleeve bearings for the steering shaft is an aluminum support dowel which was originally threaded for a Parallax Boebot. Carefully drill this piece out to the width of the nail with a drill press being sure to keep the drill vertical in the aluminum dowel. If it is difficult to drill a straight hole with a larger drill, consider using a smaller drill first which is easier to control to make a pilot hole. If possible, smooth the inside of this sleeve bearing with fine sandpaper or crocus cloth to reduce the wear and tear on the shaft. This sleeve is held in place by the friction created by the two separate flat bar plates. Drill the hole in the flat bar slightly smaller than the sleeve so it can be gently tapped in place with a hammer. If the sleeve is loosely held by the flat bar plates, you can drill a hole close to the sleeve which you can insert a bolt and "clamp" the pieces of flat bar together which is sure to hold the sleeve in place.
The servo holder are made from a piece of metal which is bent at the top and provides a small flat area where a nail can be attached by brazing, welding or silver soldering depending on the metal used. I used a steel plate brazed to a common steel nail.
Next make "lock" sleeve which is fixed to the shaft and connects to the steering linkages. Again, this is a drilled out sleeve which I got from parts for a Parallax Boebot. Turn this sleeve on its side so the hole which goes through it is horizontal and place it in a movable vice (or find a way of clamping it in place for ex. Visegrips). Place the vise under a drill press and drill a single hole through its center the width of the inside diameter of the thread you intend to use. Use calipers to find the inside diameter of the if the threads (between the ridges). Thread this hole with a tap and die set to the desired thread which should be around a #6 size bolt. Push down firmly with the tap and turn clockwise. Go entirely through the sleeve to ensure good threads on at least one side. You may want to attempt this on a scrap piece first to become familiar with the process.
Click pictures for notes. Later, connect the two linkages to the servo with some spacers and a cotter pin. Experiment with the different holds on the servo arm to determine which works best for you.
Step 4: Preparing the Sensors
Prepare the sensors:
Mount the forward sensors on the servo arms by cutting a small notch in the circular par of the servo arm which goes around the spline (See pictures). Use a servo horn which has two arms and is flat all the way across (does not get larger in the middle). Enlarge two of the holes in the servo arm which will be used to place nails that will support the sensor. The small brad nails go vertically through the servo arm and go up to the top of the sensor. Place the sensor in the notch cut out of the servo arm so the sensors circuit board is parallel to the brad nails. Glue the sensor in place with an appropriate glue and make sure the sensor will face horizontally if not slightly upward once installed.
For the rear sensor, use a Parallax Ping sensor. By default, the pins are at 90 degree to the board. Remove these pins or bend them out straight carefully without damaging the PCB. I removed the pins and replaced them with standard, straight pin headers. If you decide to remove them, be sure you do not damage the circuit traces by overheating or forcing it with a soldering iron. Use a soldering removal tool or remove the solder with a wire brush. Glue a small wooden piece onto a 4 armed servo horn being sure to leave the screw hole exposed for access. Mount a female pin header on top of this which the Ping sensor can connect to.
Mount the forward sensors on the servo arms by cutting a small notch in the circular par of the servo arm which goes around the spline (See pictures). Use a servo horn which has two arms and is flat all the way across (does not get larger in the middle). Enlarge two of the holes in the servo arm which will be used to place nails that will support the sensor. The small brad nails go vertically through the servo arm and go up to the top of the sensor. Place the sensor in the notch cut out of the servo arm so the sensors circuit board is parallel to the brad nails. Glue the sensor in place with an appropriate glue and make sure the sensor will face horizontally if not slightly upward once installed.
For the rear sensor, use a Parallax Ping sensor. By default, the pins are at 90 degree to the board. Remove these pins or bend them out straight carefully without damaging the PCB. I removed the pins and replaced them with standard, straight pin headers. If you decide to remove them, be sure you do not damage the circuit traces by overheating or forcing it with a soldering iron. Use a soldering removal tool or remove the solder with a wire brush. Glue a small wooden piece onto a 4 armed servo horn being sure to leave the screw hole exposed for access. Mount a female pin header on top of this which the Ping sensor can connect to.
Step 5: Assembling the Robot
Assembly process:
Assemble all the loose pieces. Install the servos and mount the sensors.
Assemble all the loose pieces. Install the servos and mount the sensors.
Step 6: Making PCB
PCB fabrication:
The PCB was designed on the computer using the free version of Eagle. Explore the program and feel free to edit the circuit board design to fit your needs or improvements.
Attached is a schematic. Open the file by saving it to your computer then opening it using Eagle software.
Since the developing process takes place in a dark room, I can not take pictures of the process. Please refer to this page for making your own PCBs. http://www.mgchemicals.com/tech-support/instructional-guides/videos/#prototyping-professional-electroplating
Use a fine tip soldering iron to solder the components onto the board. Be careful not to damage the components by overheating them with a soldering iron. Click on the pictures above to view the notes on the process.
The PCB was designed on the computer using the free version of Eagle. Explore the program and feel free to edit the circuit board design to fit your needs or improvements.
Attached is a schematic. Open the file by saving it to your computer then opening it using Eagle software.
Since the developing process takes place in a dark room, I can not take pictures of the process. Please refer to this page for making your own PCBs. http://www.mgchemicals.com/tech-support/instructional-guides/videos/#prototyping-professional-electroplating
Use a fine tip soldering iron to solder the components onto the board. Be careful not to damage the components by overheating them with a soldering iron. Click on the pictures above to view the notes on the process.
Step 7: Completed PCB
The completed PCB:
See comments/notes on the PCB.
See comments/notes on the PCB.
Step 8: Testing/programming the PCB
After building the PCB install the application Arduino and become familiar with the application. To use the Arduino with the ATMEG 1284p you will need to install an add-on to this programs; visit http://maniacbug.wordpress.com/2011/11/27/arduino-on-atmega1284p-4/ to get help on this process. Then setup the ATMEGA 1284p by "burning" a boot-loader which you can find under tool, boards, Original Mighty 1284p 16MHz, onto it with a pocket programmer (or equivalent ISP programmer). Test some simple example programs and write them to the chip using an FTDI adapter such as the FTDI Friend. Attached is the current code which is demonstrated in the video at the beginning. Copy the code from this PDF file into the Arduino software and upload it onto the board.
Attachments
Step 9: Completed 1st Stage Autonomous Solar Robot
Completed first stage robot.
You now have a robot capable of making intelligent navigation decisions. Have fun and continue to experiment. If you have ideas or suggestions feel free to make a comment. I am always happy to learn about improvements which I can make.
Thanks,
Ben Rawstron
You now have a robot capable of making intelligent navigation decisions. Have fun and continue to experiment. If you have ideas or suggestions feel free to make a comment. I am always happy to learn about improvements which I can make.
Thanks,
Ben Rawstron