Shop OBEX P1 Docs P2 Docs Learn Events
LittleRobot(tm) project — Parallax Forums

LittleRobot(tm) project

prof_brainoprof_braino Posts: 4,313
edited 2013-08-18 13:10 in Robotics
Ken asked that I start a thread for this project.

The LittleRobot(tm) is a demo to show off the usability and function of the newly completed PropForth version 5.5 kernel. The (tm) is there just so noone tries to claim it and/or prevent others from using the materials. The software and materials are all free and open source, and available from the propforth google code site.

http://code.google.com/p/propforth/

Just look in the WIKI section for page names that start with LittleRobot. They are not well organized, but most of the information is there.

EDIT - b We've started work on organizing the materials. Please give feedback so we can improve.

http://code.google.com/p/propforth/wiki/GettingStartedWithPropForth

http://code.google.com/p/propforth/wiki/GettingStartedLittleRobot
«1

Comments

  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-08 21:45
    The propforth team determined that the biggest obstacles to entry are 1) cost of materials and 2) difficulty of material. We felt the propforth kernel is refined to a useful state, the materials are designed to be "simple enough for parents". So the remaining barrier is cost of physical materials. To allow maximum exposure, the demo must be so cheap that anybody could give it a try without hestitating (at least due to cost). We determined that our sample group (me) would "just buy it" if it cost $20. So we targeted a $20 robot kit.

    We ended up with a simple "tail dragger" differential steering bot, as commonly found all over the web. It consists of the 5 volts steppers and ULN2003 drivers; the SR04 ultrasonic range finder (silimar to ping))) but of questionable quality), and the HC05 bluetooth module. These parts can be purchased on Ebay from China for under $20. The rermainder of the parts are to be found our fabricated.

    We did not include the cost of the micro controller. We use the Quickstart, since we use PropForth; but others could use any other microprocessor and any other programming environment. The kit of robot parts, the software design, and the algorithms should be directly applicable to any solution. Anyone should be able to expand on the concept and contribute further using any applicable set of tools, this is the intent. Many of the PropForth team are familliar with other tool chains, perhaps equivalent examples using SPIN, BASIC, and C may be added (however, this effot is currently limited to propforth).

    So far, we have an effective low cost demo. These bots are designed to be slow, gentle, easy, and above all CHEAP. Those that find they have a nack for bots, might upgrade to more capable offerings. The prop and propforth may provide a base to upgrade.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-08 21:46
    Professor Braino is also the president of the Chicago Robotics Club Chibots.org. In this capacity, I see numerous requests for robot related events. One request was a school attempting to start a Robot program, I mentioned LittleRobot among the other club offerings. The school accepted. It took nearly a year to get the arrangements set and the program started.

    The school did not want to buy the individual parts directly, they went to OBC and arranged for PropellerPowered to source the kits. Jeff handles most of the parts already and arranged a price to provide convenience for the client and sufficient margin for PropellerPowered. It is in everyone interest for him to afford to continue sourcing the kits. Notes on the kits (with "do different next time") are in the wiki pages. Jeff was able to find excellent wheels for the kits, battery holders, mounted bluetooth modules, and included "protoboard and more" kits with each Quickstart. We discovered that the school prohibits the kids from soldering (forth graders, go figure), so we are switching to bread boards and saving the solderable parts for next term. The chassis will be cut fom a 4x8 chunk of pink foam insullation from the home center.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-08 21:47
    Instruction is by the following method: After the class is presented with the material for a particular activity, one or two kids are mentored individually. When these kids complete the exercise, they demonstrate proficiency by mentoring another kid. After a kid completes mentoring, they show the TA, and she updates the progress chart. Then the kids mentor/play until the last kid is finished. While the "hello World" task quickly became variations of "burritos are my fav" and "Tommy is gassy"; the blinky LED task yielded a bunch of cool patterns and timing variations of flashes.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-08 21:49
    Progress for far:

    All plans and schedules were overcome by events, we missed the January 3rd start date of the term and instead started April 22. The term still ends June 3rd. We have seven kids (or eight, roster is STILL in flux). The mix is fourth and fifth graders, and one or two seventh(?) graders. All the kids have done "Hello World" and "blinky LEDs".

    Today we got the terminals (old laptops running coolterm, these are more than adequate for propforth) set up in the robotics lab (a table in the Art room) and assigned one kid per station. (They were sharing borrowed laptops till now). We started logging the progress for each kid for each session (they already completed the work but it was not logged).

    We have adopted the rule "if there's no record, we can't claim it happened". The management appreciates the progress data, they will use this to refine the course.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-08 21:50
    Future Plans:

    There have been recent requests for one or two day workshops. The team feels we can tailor the session for adults to fit the setup and intro to programming activites in a single session. Actuators and sensors may or may not fit in this session, depending on the individuals present. A second session could be devoted to "build the bot out of cardboard", and the participants would refine their design at home.

    A LittleRobotWorkshop page may be created it this develops.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-10 06:35
    The mechanism for knowledge transfer - some people read the instructions first. Some people don't read the instructions, usually the very sharp ones, that have learned that they don't need to read first, they can "just figure it out". This is a barrier; at some point, the task will be more difficult than one can grok, and reading is required. Unfortunately, the HABIT of reading toward a goal has not been established, particularly in the "extra sharp" cases. In propforth, most questions are topics covered in the material, send the person to the primary reference usually solve it for them. A wiki page is created only to supplement a given topic. My impression is that folks who become frustrated (and end up bailing out early) usually did not read propforth.htm.

    In the case of elementary school kids, we don't assume the habit of reading data sheets is established. The instructor reads or has read the material, and presents it in a logical manner.

    Today's task is to start figuring out a way to show the kids how FIND the information they need in the materials available, and to ask questions.

    Understanding the mechanism for knowledge transfer, this is ... something I have to work on.
  • mindrobotsmindrobots Posts: 6,506
    edited 2013-05-10 07:06
    I think this is a big challenge in elementary education and an area where things have really changed since I was a kid (along with everything else that has changed since then!).

    We were pretty much taught one way to do something, maybe two. Nowadays, kids are given multiple ways to do something and exposed to several different knowledge transfer methods: written, visual, oral, etc. Some kids (and this extends into adulthood) just learn things better and more effectively through different mechanisms. This is probably applied most effectively in primary education situations. The science and practical methods are just being applied to adult education and training.

    O'Reilly's Head First Book Series
    makes good use of these various techniques to make the learning process more efficient and effective. I have a couple these books and have found them well done and effective for picking up a new subject. Anyone interested in writing a book or tutorial should check out some of these titles.

    As you have mentioned, some people (many) have become frustrated by the PropForth method of documentation and tutorialization ( I like the sound of that word!) and have walked away from it. I don't think the presentation is well suited for elementary for elementary or middle-school aged kids.

    I do think you are safe in the assumption that the habit of reading data sheets has not been established in the case of elementary school kids. :lol:
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-14 15:24
    So Hello World and Blinky LED were great. Do..loop and delms (delay for x milliseconds) were ok, the kids did not really understand. If .. then was ok, also not a full success in my opinion. The more abstract we get, the less the kids absorb?

    The instructor (who knows these kids and how they learn) pointed out how these fourth graders are not going to learn structure programming the same way I did (by reading the fortran manual) or by reading Propforth.htm, or by reading the Prop data sheet. And I was so happy that I had it all planned out so nice! Start again!

    My new direction: Jump to the completed algorithm, let them play with the robot, and answer questions as they come up. Work BACKWARD from the working robot to its code pieces. This allow the kids to drive the discussion, and set the pace. Unfortunately I spent all my time preparing for Plan A, now that the requirement changed, I have to spend that time again on Plan B. Such is the nature of new development. :) If it was easy, it wouldn't be so fun.
  • mindrobotsmindrobots Posts: 6,506
    edited 2013-05-14 15:38
    No plan survives first contact with the enemy. In this case, the enemy happens to be the fourth grade mind.

    'm seeing similar challenges with the slightly older 4-H kids.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-15 07:58
    mindrobots wrote: »
    I think this is a big challenge in elementary education ....

    This is clearly impossible. Only a fool would take such a challenge. I am that fool. :)
    As you have mentioned, some people (many) have become frustrated by the PropForth method of documentation and tutorialization ( I like the sound of that word!) and have walked away from it. I don't think the presentation is well suited for elementary for elementary or middle-school aged kids.

    Yeah, and this is problematic, as folks tend to bail out and I don't have any clues as to what needs changes. We have contributions form Nick, Duane, Loopy, and Caskaz; but I don't know if any are "better" or what about them should be emulated.

    Really, for an electrical Engineer with some familiarity with software, or a software engineer with some familiarity with electronics, propforth.htm is the only reference needed. This is also sufficient for any other user, it just requires careful reading a couple times. Or so we think. Maybe the propforth wiki pages are just confusing matters?
    I do think you are safe in the assumption that the habit of reading data sheets has not been established in the case of elementary school kids. :lol:

    So, this is the question: When should folks get introduced to reading proper references, like data sheets and manuals? Should they EVER be introduced to datasheets? I didn't see a datasheet until the second month of my first job after university, I felt cheated. Many issues I encounter are from folks not following the proper references (or the references being incomplete or incorrect). The thought was start the kids NOW, and they'll be good at it later...

    Suggestions? Opinions?
  • TtailspinTtailspin Posts: 1,326
    edited 2013-05-15 08:48
    I think you could/should use Data Sheets that are in the skill range of the students in question...

    Here is a data sheet one could introduce to a new student...
    http://www.jameco.com/Jameco/Products/ProdDS/660130.pdf

    And here is a data sheet that prolly should not be a first introduction...
    http://www.jameco.com/Jameco/Products/ProdDS/10567AMD.pdf

    I do think data sheets should be used early and often, It just takes some practice to wade thru what is needed from them.


    -Tommy
  • mindrobotsmindrobots Posts: 6,506
    edited 2013-05-15 08:55
    I don't know if I have suggestions yet. I'm sure I have opinions and thoughts.

    I still hold my strange fascination and admiration for Forth but I wonder of it's value as an educational tool in today's world. It used to have value because of its speed and interactive nature that led to a rapid prototyping environment that was close to the hardware. A unique position for a while. Now, there are a number of higher level languages that offer powerful REPL interpreters and growing libraries that support various features and functions so is the Forth experience that unique and beneficial? Now, perhaps it's more like learning Latin or Greek as a classical language.

    BUT, if you do want to propagate (sorry) Propforth, it does need a tutorial or two that are engaging and relevant for younger minds and newer learners and quick, painless and relevant for experienced folks. Quite a challenge! This is especially true for a part time army the likes of us. When you look at the good documentation and tutorials that are coming out for the RasPi and Scratch and Python, the task is even more daunting.

    The LittelRobot(tm) project offers an exciting medium to explore Forth. Maybe with kids it's best to present the hole and then decompose and explore deeper as they are interested. If they aren't interested to dig any deeper with Forth (or any other language), at least they've had a building experience and hopefully come away with something...it may just be the realization that they might not really be technologists! There are still other areas of interest and career opportunities to pursue when you are 10-11 years old!!

    Suggestions? Watered down data sheets? Simple reference manuals? Googling 101? I noticed my daughter needs some google tips: how the avoid advertisers, best potential sites for good answers, avoid worthless sites, spam, etc. When we were young, encyclopedias, libraries and such were safe and generally had vetted information, this isn't true anymore for general searching. Do I want my 5th grader out Googling for information unsupervised? Not particularly.
  • nglordinglordi Posts: 114
    edited 2013-05-15 09:27
    IMHO the initial data sheet for the Little Robot should focus only on the basic commands needed to operate the robot. These commands should be in a format requiring a minimum of keystrokes to execute. For example, F for forward, B for backward, etc. Furthermore, using an indexed approach, i.e., having predefined data tables, only 0 - 9 need be entered. Thus if the student enters 5 F (cr), the robot moves forward at a certain speed. If the student enters S, the robot stops - then enters G, the robot continues forward. In this way, the student can experiment with different combinations of commands, learning how to control the robot. The data sheet can be expanded as the need to know more develops.

    I am in process of developing a reduced version of my forth robot control language for the Little Robot and will post it when completed.

    NickL
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-15 09:46
    mindrobots wrote: »
    ... admiration for Forth but I wonder of it's value as an educational tool in today's world. .

    It has the same value as any other tool. If you can't find a use for it, it has no value.

    In my case, I have found it has the lowest entry cost, and is the easiest to get started with, and is the most powerful in that it spans the entire range of beginner to professional. It can be used by hobbiest and the highest tech organizations like Sun, Alpple, and NASA. It does not rely on powerful external systems for its evey operation. I have not found a similar bang for the buck in any modern tools. But then, I don't look very hard.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-16 09:09
    My attempt at do...loop and if..else..then almost lost them all.

    Until we get try nglordi's robot control language, I've changed the curriculum outline:

    1) setup PC, software, (drivers, prop tool, terminal program) load devkernel.spin into EEprom
    2) Hello world, blinky LED
    3) stepper driver (complete) show the motor turns
    4) SR04 driver (complete) show the sensor measures
    5) HC05 driver (complete) show the bluetooth talks
    6) build the bot by sticking the parts on the foam chassis
    7) bot.f from extensions directory, show the bot can dance

    The idea is that we only need to show the hardware is connected correctly, then let the kids play. If they are interested in further exploration of programming, their questions will drive the discussion.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-17 19:11
    Here's a video of Sal's prototype. This is the 3D printed chassis, it works the same as the pink foam board, but is much sturdier.

    It uses the same bot.f demo from the extensions directory, and the standard PropforthEEprom.spin kernel

    http://propforth.googlecode.com/files/Bot2Intro.mp4
  • mindrobotsmindrobots Posts: 6,506
    edited 2013-05-17 19:44
    That turned out very nice!

    ...and Sal really does exist!!
  • ercoerco Posts: 20,255
    edited 2013-05-17 21:27
    Super cool, Prof B. Well done!
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-18 09:11
    We continued with snippets from bot.f. The bot.f demo uses the EEprom kernel so that it can auto boot into bot mode. We are using devkernel.spin, the plain kernel, to keep the number of knowns and issue to a minimum. The wiki pages for each driver just removes reference to EEprom kernel words.

    All the kids present connected the steppers, showed the LEDS flash as predicted, and got the steppers to move. They weren't as impressed as I with the ramp up and ramp down, maybe it happens too quickly for them to notice?

    We also were short two teachers. Professor Braino and his side-kick Captain Entropy were almost overwhelmed by the fourth and fifth graders. As luck would have it, two high school kids happened by, and their presence was enough to maintain some order. The high school kids we able to connect a board, do hello world, Blinky LED, load the stepper driver, and make the stepper move, in under an hour and a half.

    After an hour and a half, all the kids set their steppers to move 9,999,999,999 steps, and went out to play, so we ended class early.

    Next class we plan to mount the steppers to the chassis, and play with SR04 ultrasonic range finder.

    We may have a request to do the LittleRobot project as a 4 hour demo for older kids. More as this develops
  • nglordinglordi Posts: 114
    edited 2013-05-18 11:22
    Attached find the PopForth Robot Control language for the LittleRobot(TM) project. I have not completed the documentation, but decided to download it anyway. The stepper motor driver is much simpler than the bot.f version. Separate cogs are used for the motors, ping and to calculate wheel velocities. Note that there are two sets of motion control commands which use predefined data tables to execute the commands. This index approach is more than adequate to drive the robot. For example, the command 9 F(orward) causes the robot to move forward at the highest velocity (ca. 12 rpm). This motion continues until the user executes the H(alt) command. Execution of G(o) causes the robot to continue its motion.

    The second group of commands are all prefixed with a G, i.e., GF (go forward). Executing, 9 GF with cause the robot to move forward 30 inches and then stop. Executing 2 GC (GCC, GTR, GTL) will cause the robot to turn 15 degrees in the direction defined by the specific command. Indices in this version are limited to 0 - 9 (10 items).

    The ping is set to automatically stop the robot if it approaches an obstacle by less than a preset value in inches.

    I believe that this approach to robot control is well suited to the age range of the students involved in the project. I would appreciate any comments or suggestions related to the program. I am not yet in a position to actually build the robot, although I have all the parts and have tested the stepper motors using the program.

    NickL
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-20 06:56
    nglordi wrote: »
    Attached find the PopForth Robot Control language for the LittleRobot(TM) project.

    Really Cool! Very concise!

    The kids start building the bots today, the chassis will be the pink foam insulation from the home center. Everything will be stuck on with velcro or duct tape (per school safety rules). After we get some unit assembled and tested with individual drivers, we'll give this a try.

    Posted http://code.google.com/p/propforth/wiki/LittleRobotNickLordiRobotControlLanguage
  • nglordinglordi Posts: 114
    edited 2013-05-20 08:03
    Prof -

    In order to use the program, you need to change the motor pin assignments. Also the ping driver will not work with the ultrasonic device. I believe that only a couple of minor changes need to be made in the code. When I receive my US device later this week, I will be able to make adjustments in the code.

    Will the 3-D printer code used by Sal be made available?

    NickL
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-20 09:51
    nglordi wrote: »
    Will the 3-D printer code used by Sal be made available?

    He SAID he would let me post the SCAD file when he's done, but he takes a LONG time to test stuff before he feels its ready to be called "released". However, he let his grandson play with his prototype, and both survived without damage. I'll ask him again this week, maybe we should just decide the prototype is sufficient.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-20 19:16
    Today the kids got the ultrasonic range finders to operate, and measured with rulers to check the precision and accuracy. Most observed +/- 3mm, although a couple parts seemed to be more like +/- 5mm. We also noticed that when enough are too close together, they might interfere with each other. One unit would jump from 164 mm to 17,198 mm; there were three units pointing at the same target. I thought I was loosing the kids when they became really quiet, but the teachers said they were "really fascinated" and they get quiet when they think.

    One fourth grader stopped me to say he really enjoys the class and thanked me for doing it.

    The kids also started asking if they could go over the "Hello World" and blinky LED programs again for more practice. We only have two weeks to finish the bots and we have to start the chassis built or we won't finish by end of term. Notice to self, start next class at BEGINNING of term, starting middle of term is a little cramped for time.
  • nglordinglordi Posts: 114
    edited 2013-05-22 17:22
    Prof:

    Attached find an updated version of my LittleRobot program (still short on documentation) which has been updated to utilize the SR04 Ultrasonic distance detector. I finally put together a LittleRobot and am pleased to report that all commands work as expected. Note the simplicity of the my SR04 driver, which uses a counter, as compared to the bot.f version. I have also added a couple of example maneuvers.

    I would appreciate comments and suggestions for additions or changes in the program.

    NickL
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-22 20:16
    nglordi wrote: »
    updated version of my LittleRobot program ... I would appreciate comments and suggestions for additions or changes in the program.

    Thanks! Posted on the wiki under downloads http://code.google.com/p/propforth/downloads/list

    I'll get the kids to make comments when their bots get rolling.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-22 20:29
    Started on the Chassis today.

    We used the PINK INSULATION FOAM as suggested. I found 2 inches 4 feet by 8 feet for under $30 at the home center. This was cut into 8 inch by 6 inch blocks. We have about ten times more blocks than we need, so I gave each kid a block to destroy while we set up the class room. The blocks did very well, only a couple were completed reduced to powder, and that kid really had to work. This was a half hour well spent. They all have some respect for the foam, and know exactly what it takes to ruin the blocks, and hopefully will not destroy them when the robots are being built.

    Turns out the only thing that needs actual cutting on the blocks are the insert holes for the stepper motors. Everything else can just screw in to the top. We had the kids do "layout" on the blocks, by placing the parts on the block, and tracing around them with a sharpie. Some did amazing, the layout looks very pro, some look like they were uninterested (just like in a real workplace!). The fourth graders generally did more meticulous layout than the fifth graders.

    I will cut motor holes with a hole saw this weekend. The kids will fasten the parts to the block with regular screw, I think I'll find a box of long skinny machine screws at the home store, and bring in a bunch of screw drivers for one day.
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-23 11:29
    Lets see if braino can get this to work. I'm photographically challenged...
    This should be a picture of the LittleRobot chassis' with the kids' sketched layout.
    These are 2" pink house insulation foam, 6" x 8", cut from a 4' by 8' sheet

    littlrobots-rough.jpg
    816 x 612 - 74K
  • nglordinglordi Posts: 114
    edited 2013-05-23 15:28
    Prof:

    Attached find V. 2 of my LittleRobot control program. Also included is an image of my LittleRobot. This version eliminates the use of indexed commands except for changing speeds. Consequently, GF & GB take the actual number of inches as input. GC, GCC, GTR, GTL require the actual number of degrees as inputs. I believe this improves the program for older users as well as increase its flexibility.

    Constants defining motor driver pins, ping, as well as the user constant stpdg (steps/degree) may have to be changed to suit a specific robot's configuration. In the case of stpdg, the important parameter is the distance between the two wheels. The stpdg is calculated as follows: (512*wheel distance*100)/(wheel diameter*360) where 100 is a scaling factor.

    If changes in these constantsneed to be made after the program has been merged with the forth deveopment kernel, one can use the utility WTO to change values, followed by saveforth.

    NickL
    451 x 338 - 180K
  • prof_brainoprof_braino Posts: 4,313
    edited 2013-05-25 08:29
    nglordi wrote: »
    V. 2 of my LittleRobot control program.

    Posted! v1.1 has been marked deprecated, so it doesn't display in the Search: "current downloads" list.

    The kids are just building their chassis, I'll have them try this when they are assembled.

    Thanks again!
Sign In or Register to comment.