ZappBot 5.0 Robot --- AKA "FrankenBot"
My latest creation has been seen moving about.
I have taken Victor Frankenstein's approach to bring my latest creation to life.
Take a piece from here and a piece from there, then add a little electricity.
Its built from new parts, its built from used parts.
There are somethings old and somethings new.
Take 4 parts BOE-Bot, 3 parts Activity-Bot, 2 parts Stingray and 1 part Elev-8 then add some more.
Batteries are included.
Its got a P8X32A brain, so it is quite smart.
It thinks in Basic, C, SPIN or PASM.
Its the "ZappBot 5.0 Robot" AKA "FrankenBot", born on December 24, 2014.
FrankenBot Front
FrankenBot Right Side
FrankenBot Rear
FrankenBot Left Side
FrnkenbBot Charging You can see I have switched the drive servos left / right to make the robot compatible with the ActivityBot code.
Here is a video of FrankenBot performing a close-order drill on December 31, 2014
[video=youtube_share;peFOrB4Ln9U]
Here are some quick facts about the robot.
The caster wheel is the key to making the design functional
The drive wheels are "Activity Bot" wheels
The robot uses a pair of "Boe-Bot" Digital Encoders
Two Parallax (Boe-Bot) Continuous Rotation Servos are used as the motors on this robot, these are the servos used on the Boe-Bot.
The control board used on the robot is a Parallax (Activity Bot) Activity Board
The bottom and middle plate used in my robot are from a Parallax Stringray Robot
The top used on my robot is from a Parallax ELEV-8 Quadcopter
I have run "ActivityBot Calibration.side" on the robot.
Below are the "ActivityBot Display Calibration.side" results.
I think the results are good since the the robot is using Boe-Bot (~60 RPM) Servos instead of Activity-Bot (~180 RPM) Servos
The C Code used in the December 31, 2014 video is shown below:
[php]/* FrankenBot-test004.c
Code used in 12/31/2014 video
Using:
--- void drive_setMaxSpeed (int speed)---
Modifies the default maxiumum top speed for use with encoders.
The default is 128 ticks/second = 2 revolutions per second (RPS).
This is the full speed that drive_distance and drive_goto use.
This value can currently be reduced, but not increased.
Speeds faster than 128 ticks per second are "open loop" meaning the
control system does not use the encoders to correct distance/speed.
http://learn.parallax.com/propeller-c-tutorials
*/
#include "simpletools.h" // simpletools library
#include "abdrive.h" // abdrive library
int main()
{
drive_setMaxSpeed(60); //drive_setMaxSpeed(int speed);
pause(10000); //added for time to start camera
drive_goto(94, 94); //go forward 1 foot
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(141,141); //go forward 1.5 feet
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(47,47); //go forward 1/2 foot
drive_goto(94, 94); //go forward 1 foot
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(141,141); //go forward 1.5 feet
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(47,47); //go forward 0.5 foot
} [/php]
Attachments:
I have taken Victor Frankenstein's approach to bring my latest creation to life.
Take a piece from here and a piece from there, then add a little electricity.
Its built from new parts, its built from used parts.
There are somethings old and somethings new.
Take 4 parts BOE-Bot, 3 parts Activity-Bot, 2 parts Stingray and 1 part Elev-8 then add some more.
Batteries are included.
Its got a P8X32A brain, so it is quite smart.
It thinks in Basic, C, SPIN or PASM.
Its the "ZappBot 5.0 Robot" AKA "FrankenBot", born on December 24, 2014.
FrankenBot Front
FrankenBot Right Side
FrankenBot Rear
FrankenBot Left Side
FrnkenbBot Charging You can see I have switched the drive servos left / right to make the robot compatible with the ActivityBot code.
Here is a video of FrankenBot performing a close-order drill on December 31, 2014
[video=youtube_share;peFOrB4Ln9U]
Here are some quick facts about the robot.
The caster wheel is the key to making the design functional
-
It is just the right size to make the robot level
-
It is easy to mount, stick the threaded stud through the bottom plate and secure it with a nut and lock washer.
-
The caster wheel actually has two small wheels mounted side by side and swivels, a similar configuration to that used on the Parallax "Arlo" robot platform.
The drive wheels are "Activity Bot" wheels
-
The drive wheels are the key to controlling the movement of the robot, the ring of 32 spokes in the wheel, lets you know how far the wheel has moved.
-
Wheel Size: 64 mm diameter (tire adds 2 mm)
-
O-ring Tire: 1/8" size 228 NBR
-
Distance between left and right wheel (center to center) is 282mm.
The robot uses a pair of "Boe-Bot" Digital Encoders
-
Voltage requirement: 5 VDC
-
Current requirement: 60 mA
-
Communication: Active-high (5 VDC = reflection detected)
-
Using 10K Ohm pull-up resistors to 5 VDC
-
Encoders are needed to accurately maneuver the robot.
Two Parallax (Boe-Bot) Continuous Rotation Servos are used as the motors on this robot, these are the servos used on the Boe-Bot.
-
Power requirements: 4 to 6 VDC , 15 -200 mA
-
Torque: 38 oz-in @ 6 V
-
Bidirectional continuous rotation
-
0 to 50 RPM, with linear response to PWM for easy ramping
-
Servo weight 1.5 oz (42.5 g)
The control board used on the robot is a Parallax (Activity Bot) Activity Board
-
8-core Propeller P8X32A-Q44 microcontroller
-
Dimensions: 4.0 x 3.05 x 0.625 in
-
2.1 mm center-positive power jack
-
Power requirements: 69 VDC from an external power supply, or 5 V from a USB port
-
This robot is using 6 VDC
The bottom and middle plate used in my robot are from a Parallax Stringray Robot
-
The part number for the Stingray Chassis Plate(s) is 730-00050
The top used on my robot is from a Parallax ELEV-8 Quadcopter
-
The part number for the ELEV-8 Quadcopter Chassis Plate is 721-80003
I have run "ActivityBot Calibration.side" on the robot.
Below are the "ActivityBot Display Calibration.side" results.
I think the results are good since the the robot is using Boe-Bot (~60 RPM) Servos instead of Activity-Bot (~180 RPM) Servos
=== LEFT SERVO === Table Entries = 99 Zero Speed Index = 44 Index Servo Drive Encoder Ticks/Second ----- ----------- -------------------- 0 -194 1000 1 -189 63 2 -184 62 3 -179 64 4 -174 63 5 -169 61 6 -164 63 7 -159 65 8 -154 63 9 -149 63 10 -144 63 11 -139 62 12 -134 62 13 -129 60 14 -124 61 15 -119 59 16 -114 61 17 -109 60 18 -104 60 19 -99 58 20 -94 57 21 -89 56 22 -84 53 23 -79 50 24 -74 48 25 -69 49 26 -64 42 27 -59 41 28 -54 36 29 -49 31 30 -44 29 31 -39 25 32 -34 22 33 -29 18 34 -27 17 35 -25 16 36 -23 15 37 -21 13 38 -19 11 39 -17 10 40 -15 8 41 -13 7 42 -11 6 43 -9 4 44 0 0 45 9 2 46 11 4 47 13 6 48 15 8 49 17 9 50 19 11 51 21 12 52 23 14 53 25 16 54 27 17 55 29 18 56 31 20 57 33 20 58 35 22 59 40 25 60 45 29 61 50 35 62 55 37 63 60 40 64 65 43 65 70 45 66 75 47 67 80 50 68 85 52 69 90 53 70 95 55 71 100 56 72 105 58 73 110 58 74 115 60 75 120 59 76 125 60 77 130 61 78 135 60 79 140 62 80 145 61 81 150 63 82 155 63 83 160 62 84 165 62 85 170 62 86 175 61 87 180 61 88 185 63 89 190 61 90 195 61 91 200 61 92 170 62 93 175 61 94 180 61 95 185 63 96 190 61 97 195 61 98 200 1000 === RIGHT SERVO === Table Entries = 97 Zero Speed Index = 46 Index Servo Drive Encoder Ticks/Second ----- ----------- -------------------- 0 -195 1000 1 -190 64 2 -185 64 3 -180 63 4 -175 65 5 -170 64 6 -165 64 7 -160 66 8 -155 65 9 -150 65 10 -145 63 11 -140 64 12 -135 64 13 -130 63 14 -125 62 15 -120 61 16 -115 61 17 -110 59 18 -105 61 19 -100 58 20 -95 60 21 -90 57 22 -85 55 23 -80 53 24 -75 53 25 -70 49 26 -65 48 27 -60 43 28 -55 42 29 -50 37 30 -45 34 31 -40 29 32 -35 26 33 -30 23 34 -25 18 35 -23 17 36 -21 15 37 -19 14 38 -17 12 39 -15 11 40 -13 9 41 -11 7 42 -9 6 43 -7 4 44 -5 3 45 -3 2 46 3 0 47 9 2 48 11 4 49 13 5 50 15 7 51 17 9 52 19 11 53 21 13 54 23 14 55 25 15 56 27 17 57 29 18 58 31 21 59 36 24 60 41 26 61 46 31 62 51 34 63 56 38 64 61 42 65 66 45 66 71 48 67 76 51 68 81 54 69 86 55 70 91 56 71 96 59 72 101 60 73 106 60 74 111 60 75 116 61 76 121 61 77 126 62 78 131 64 79 136 64 80 141 64 81 146 64 82 151 64 83 156 64 84 161 64 85 166 65 86 171 64 87 176 64 88 181 64 89 186 64 90 191 65 91 196 65 92 201 63 93 186 64 94 191 65 95 196 65 96 201 1000
The C Code used in the December 31, 2014 video is shown below:
[php]/* FrankenBot-test004.c
Code used in 12/31/2014 video
Using:
--- void drive_setMaxSpeed (int speed)---
Modifies the default maxiumum top speed for use with encoders.
The default is 128 ticks/second = 2 revolutions per second (RPS).
This is the full speed that drive_distance and drive_goto use.
This value can currently be reduced, but not increased.
Speeds faster than 128 ticks per second are "open loop" meaning the
control system does not use the encoders to correct distance/speed.
http://learn.parallax.com/propeller-c-tutorials
*/
#include "simpletools.h" // simpletools library
#include "abdrive.h" // abdrive library
int main()
{
drive_setMaxSpeed(60); //drive_setMaxSpeed(int speed);
pause(10000); //added for time to start camera
drive_goto(94, 94); //go forward 1 foot
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(141,141); //go forward 1.5 feet
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(-69,69); //rotate ccw 1/4 turn
drive_goto(47,47); //go forward 1/2 foot
drive_goto(94, 94); //go forward 1 foot
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(141,141); //go forward 1.5 feet
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(94,94); //go forward 1 foot
drive_goto(69,-69); //rotate cw 1/4 turn
drive_goto(47,47); //go forward 0.5 foot
} [/php]
Attachments:
Comments
The FrankenBot seems to track great! I saw it track in your floor tiles with
accuracy, to use that as a scale.
When I finish my walking legs, you could try them on your robot!
I think the greater distance between the wheels (compared with an ActivityBot) makes your robot's turns more precise than the turns of an AB.
You've got straight lines and right angle turns down, how about some figure 8s? I doubt FrankenBot will have trouble pulling off a few figure 8s.
Thanks for the fun robot post with video.
Im trying to imagine the result with an appropriate wheel for these servo motors, with the same encoders spokes, but with a bigger diameter .
However your your design is very Smart!
Good call, my young Padawan. Zappman, please see the thread below and we hope to see you jump in soon!
http://forums.parallax.com/showthread.php/138125-Erco-s-Figure-Eight-Challenge
Thank you to everyone for the interest and comments about my FrankenBot robot.
FrankenBot has accepted the Figure Eight Challenge.
FrankenBot performs the Figure Eight Challenge on January 1, 2015
[video=youtube_share;0PgDEv8_bMk]
Below is the C code used in the January 1, 2015 video:
[php]/*
FrankenBot-test006.c
The Erco Figure Eight Challange
Code used in 01/01/2015 video
Using:
--- void drive_setMaxSpeed (int speed)---
Modifies the default maxiumum top speed for use with encoders.
The default is 128 ticks/second = 2 revolutions per second (RPS).
This is the full speed that drive_distance and drive_goto use.
This value can currently be reduced, but not increased.
Speeds faster than 128 ticks per second are "open loop" meaning the
control system does not use the encoders to correct distance/speed.
*/
#include "simpletools.h" // simpletools library
#include "abdrive.h" // abdrive library
int main()
{
drive_setMaxSpeed(60); //drive_setMaxSpeed(int speed);
pause(10000); //added for time to start camera
drive_speed(60, 13); // Set CW Turn
pause(11700); // Run for 11.7 Seconds
drive_speed(0, 0); // Stop
pause(2000); // Pause for 2 seconds
drive_speed(13, 60); // Set CCW Turn
pause(11600); // Run for 11.6 Seconds
drive_speed(0, 0); // Stop
}[/php]