Skip to first unread message

Damian Axford

unread,
Sep 8, 2015, 6:20:09 AM9/8/15
to swindon-hackspace

Hi All


In case you've missed it, Rob and myself have started on another little robotics project...  that being an OpenSCAD "port" of the BOB biped robot - named SCOB:


The design re-uses a lot of elements from LogoBot, both hardware and software, so should be easy to get to grips with. 

The printable parts will fit on a single 200x200 base plate, and consume approx £1 of plastic.  You'll also need a 5v Pro Mini (or similar), 4x 9g servos (e.g. TowerPro SG90) and an HC-SR04 ultrasonic sensor.

The SCOB firmware is developing rapidly, and supports Logo-esque commands over serial.  It also has two autonomous modes in development - random movements and a wander/explore mode using the sonar sensor.

Pic below is of the original BOB robot, the SCOB version has Mr-Potato-Head style pin connectors around the front/sides and a removable skull-cap to allow for extensions/customisation.  It also makes assembly easier and reduces the plastic required.  The pin connectors are compatible with LogoBot, so some parts can be shared.

You're all more than welcome to join in with the development - just pick something to work on/extend and get stuck in and fire any questions at Rob/myself.  They're extremely cute/simple/cheap robots and a great complement to LogoBot :)


Robert Longbottom

unread,
Sep 8, 2015, 7:51:47 AM9/8/15
to swindon-...@googlegroups.com

Here is an early video of Scob walking, the code has improved a bit since then: https://youtu.be/nfrh7tHPFYQ

And here's what he looks like:

He still needs a head top designing (I think) to stop his brains falling out! 

And someone suggested that flexy arms which wobble around when he's walking would be funny!

Rob.

--
You received this message because you are subscribed to the Google Groups "swindon-hackspace" group.
To unsubscribe from this group and stop receiving emails from it, send an email to swindon-hacksp...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Damian Axford

unread,
Sep 22, 2015, 12:12:02 PM9/22/15
to swindon-hackspace
hi all

A whole bunch of development has happened off-group and is available in the git repo - both hardware and software updates.  Latest video from Rob:

And a frame grab for fun:


As you can see, SCOB now has arms (two variants), and an initial mouth design using a neopixel strip :)   There's also a cap piece for his head, not shown in the video.


Software-wise, the animation control is stable and fairly capable, plus very portable to other projects.  It will co-ordinate keyframe animation across a set of servos, with tween control via a bezier curve.  Command queuing is inherited from LogoBot, but with a more streamlined/efficient parsing approach.  There are a couple of ino files in the repo illustrating how to apply the libraries in a very simple form as well as a more full-featured version.


Latest experiments are with further streamlining the state machine that is used for selecting between different behaviours (e.g. wander at random vs collision avoidance) in the full-featured firmware.


Today's discussion has been on:

  • How to get more reliable sonar readings whilst his head is swinging around.... perhaps incorporating a neck servo to de-couple the sonar direction from the body orientation.
  • How to take the state machine / behaviour model further - looking into things like "subsumption architecture"

Which leads me nicely to thoughts on how the subsumption approach could be implemented...  (you'll need to look at the latest code for context and for this to make much sense):


Subsumption architecture is based on the principle of co-existing behaviours, vying for control over the "actuators" of the robot, achieved by more important behaviours being able to suppress/inhibit the actions of others.  Read the wiki article for more background, but that's the gist of it.  This is really easy to understand if you have a continuous parameter space for your control (e.g. wheeled robot with fine grain control over speed/direction), but harder when you have discrete control states (e.g. for SCOB, with a set of fixed movement animations).


In the discrete case (ala SCOB), the various behaviours need to fight it out to determine:

  • the current animation/movement (e.g. walk forward, walk backward, turn left, etc)
  • animation speed
  • anything else we add (e.g. animation mode for the neopixel mouth)

Of course, you don't want to switch animations too fast, or poor SCOB will end up fitting.  On the flip side, allowing each animation to complete may be too slow for some reactions (e.g. collision avoidance).  So, animations may need to define valid points of "interruption"...  given they are keyframe animations, this could be as simple as a boolean flag for each keyframe that indicates if it is interruptible.


There is also the challenge of behaviours needing to co-ordinate a sequence of moves to get something done (e.g. collision avoidance needs to back-up then turn).


The MIBE architecture is actually a better fit for this problem, and is derived from the subsumption approach.


In SCOB terms, he has a couple of simple behaviours:

  • Don't hit stuff
  • Explore (wander around)
  • Have fun (do random movements to avoid getting bored)
Each of these has an urgency value and an importance value - the two are multiplied together to determine which behaviour wins at any given point in time.  A behaviour releases control, by relaxing its urgency value, which may be after a sequence of movements has been executed.

Putting this together, the main loop looks like:
  • Update sensors (i.e. take sonar readings)
  • Update behaviour urgencies
  • Select and execute active behaviour
  • Execute movement(s)
Each behaviour thus needs two functions, one to update it's urgency and one for execution.  The urgency handlers can be very simple:
  • Don't hit stuff - check sonar reading, if below threshold value then urgency = high
  • Explore - static. low urgency
  • Have fun - time based value, if time since last "dance" > threshold, urgency = high
The importance values are scaled such that don't hit stuff is the highest, followed by have fun, then explore.

The execution handlers are also fairly simple:
  • Don't hit stuff - state machine to co-ordinate a move back, then turn.  Reset urgency level once complete.
  • Explore - state machine to co-ordinate walk, look around, turn
  • Have fun - generate random moves for a while.  Reset urgency level once complete.
...and that's pretty much it...   simple, modular and easy to add additional behaviours into the mix.

Thoughts?  will prob have a crack at implementing this at some point this week...









Robert Longbottom

unread,
Nov 3, 2015, 11:08:02 AM11/3/15
to swindon-hackspace
Hi all,

Related to the "we want to continue playing with Logobot" theme, I've been doing a bit more work on Scob and have created a wifi module for him using an ESP8266.  It's very similar to what I did for one of my Logobots (and the hardware would work on a Logobot), but is a bit better because:
  • Makes use of a PCB cut on the hackspace PCB milling machine (rather than a veroboard circuit), so should be easier to reproduce.  (which is what I've been doing with the PCB milling machine recently)
  • Uses the new SPIFFS (on flash file system) from the staging version of esp-for-Arduino ( https://github.com/esp8266/Arduino )  What this means is that rather than having the web pages that you want to serve out generated in code (which is the way the Logobot code works) they are stored in a "proper" filesystem that is stored in a reserved area of the flash memory on the ESP.  This is better because:
    • It's easier to edit / develop the webpages because you can just work on a local copy of the files (no need to then copy/paste html into a c++ header, just upload the files directly)
    • The code is now more generic as it just has to serve out pages from the filesystem - so adding a new page is easier.  (there is still some specific code to handle the command interface, but thats fairly stable)
    • Programming the ESP is quicker because you can update the sketch and webpages independently (and in general there is no need to update the sketch)  On an ESP-01 module the filesystem is only 64k, which is a lot quicker to upload that the full 512k if you do the sketch + webpages.
If you want to make one (for Scob or Logobot) you'll need:
Probably some other stuff that I've forgotten about!

I'll bring Scob along next time I'm there.  For now, here's some pictures:






Rob.


Damian Axford

unread,
Nov 3, 2015, 2:31:16 PM11/3/15
to swindon-hackspace
Awesome :) given I have a bunch of spare Esps, I'd love to make up some carrier boards on the mill!

Robert Longbottom

unread,
Nov 4, 2015, 8:10:17 AM11/4/15
to swindon-...@googlegroups.com
It should be easy enough to cut some more boards. There are two bits of
copper clad board that are already the right shape / size and they should
make 5 ish boards. I'm going to cut a few more for myself so when I do
I'll just cut as many as will fit.


On 3 November 2015 19:31:18 Damian Axford <dam...@axford.me.uk> wrote:

> Awesome :) given I have a bunch of spare Esps, I'd love to make up some
> carrier boards on the mill!
>
Reply all
Reply to author
Forward
0 new messages