ZappBot 5.0 Robot --- AKA "FrankenBot"

zappmanzappman Posts: 414
edited 2015-01-01 - 14:56:55 in Robotics
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
attachment.php?attachmentid=112591&d=1420069946

FrankenBot Right Side
attachment.php?attachmentid=112592&d=1420069949

FrankenBot Rear
attachment.php?attachmentid=112593&d=1420069958

FrankenBot Left Side
attachment.php?attachmentid=112594&d=1420069964

FrnkenbBot Charging You can see I have switched the drive servos left / right to make the robot compatible with the ActivityBot code.
attachment.php?attachmentid=112595&d=1420070953

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: 6–9 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:
Frank_front-2014-12-24_1024x768.jpg

Frank_right-2014-12-24_1024x768.jpg

Frank_rear-2014-12-24_1024x768.jpg

Frank_left-2014-12-24_1024x768.jpg

Frank_charging-2014-12-26_1024x768.jpg

Comments

  • mklrobomklrobo Posts: 420
    edited 2014-12-31 - 17:51:14
    Cool robot! :) Good Work!
    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! :)
  • Duane DegnDuane Degn Posts: 10,002
    edited 2014-12-31 - 21:15:54
    Very nice seeing another robot driving around in rectangles. I've been doing a lot of that with my robot lately.

    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.
  • NikosGNikosG Posts: 657
    edited 2015-01-01 - 06:27:51
    Very interesting approach for a stingray like robot ……

    I’m trying to imagine the result with an appropriate wheel for these servo motors, with the same encoder’s spokes, but with a bigger diameter….

    However your your design is very Smart!
  • ercoerco Posts: 19,425
    edited 2015-01-01 - 10:24:41
    Duane Degn wrote: »
    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.

    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
    "When you make a thing, a thing that is new, it is so complicated making it that it is bound to be ugly. But those that make it after you, they don’t have to worry about making it. And they can make it pretty, and so everybody can like it when others make it after you."

    - Pablo Picasso
  • zappmanzappman Posts: 414
    edited 2015-07-02 - 20:11:53
    erco wrote: »
    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]
  • ercoerco Posts: 19,425
    edited 2015-01-01 - 14:56:55
    Amazing job, zappman!
    "When you make a thing, a thing that is new, it is so complicated making it that it is bound to be ugly. But those that make it after you, they don’t have to worry about making it. And they can make it pretty, and so everybody can like it when others make it after you."

    - Pablo Picasso
Sign In or Register to comment.