Eagle3D

These are components I’ve created for Eagle3D.

You may also want to check out the tutorials on how to create your own components.  http://blog.everythingrobotics.com/tutorials/eagle3d-tutorials/using-google-sketchup-to-create-components/

Components

HopeRF RFM12B SMD 433Mhz/915Mhz RF Module

RFM12BSMD

Microchip MR24J40MA FCC Approved 2.4GHZ 802.15.4 RF Module

MRF24J40MA

Sparkfun SMA PCB Edge

SMA_FEMALE_PCB

PJ-326 3.5mm Jack http://www.switchcn.com/

PJ326

900Mhz GSM SMA Antenna attached to PCB SMA Connector

SMA_connector_antenna_hor

Downloads:

Strobit Eagle3D Library (19/03/2009) Download

Links

Disclaimer:

These are provided AS-IS and may contain bugs and or discrepancies and may not be to scale.

If you find any bugs or problems or make enhancements please feel free to contact me so I can update the downloads.

Protocol

Protocol:

Full Detail can be found here on the wiki – http://wiki.everythingrobotics.com/index.php?title=Draft_Proposal

The trigger packet transmitted is 7 bytes long.  Preamble(3 bytes), Sync(2 bytes), trigger command (1 byte) and CRC byte.

The Preamble is used by the the RF module to tune the Receiver.

The Sync word is used by the RF modules receiver circuit to know when a valid transmission is occuring and not just interference.  This SYNC word can be used as a future PAN address, i.e. all your units are set to the same unique SYNC pattern then your units operating in the same area as other trigger units on the same frequency will not be triggered by your units and visa-versa.

If an invalid packet is detected by the CRC then the packet is dropped and the strobe will not fire.  This is where some future work can be done with forward Error Correction, so a corrupt packet could be rebuilt and still used by the slave, i.e. the strobe could still fire even if some corruption is detected.

Currently the slaves so not communicate back to the master in anyway.

Back – Firmware Triggr Home

Open Source Wireless Trigger

After getting back into photography after many many years (and because Digital SLRs are so much cheaper)  I’ve been an avid follower of the stobist website (www.strobist.com) for off camera lighting.  To do this off camera lighting you need a way of triggering the remote stobes, some are wired, some are wireless either RF or Infrared, but obviously the easiest is via wireless.  Well there are many solutions, some cheap (ebay triggers) some expensive (Pocket wizards) and you get what you pay for, the cheaper ones (of which I one a couple) are notorious for false triggers, while the Pocket wizards are way out of my price range.

So in the true spirit of Open Source, of which I’m a huge fan, I’ve proposed an open source wireless trigger for the strobist community.  Initial thread found here – www.flickr.com/groups/strobist/discuss/72157602088957861/  So far the response has been great fantastic.

 I’ve now setup a wiki for a brain dump of ideas http://wiki.everythingrobotics.com and will shortly have a mailing list up and running.

 forums are now also up and running http://forums.everythingrobotics.com  hopefully these will eventually fall under the strobist.com domain

Buzzbot – Odometry Task

Now that I have my Interrupts working on the the PIO Port, I have successfully adapted some code to provide Odometry for Buzzbot, based on reading the wheel encoders.    

This odometry task provides me with the following data:

  • Buzzbots Location in 2D Space (X and Y cooridinates).
  • Current Heading in Degees.
  • Average distance travelled in centimeters.
  • Angle of rotation about the axis.

I would like now to get the motor contol going, so at least I can get some basic movement, then the next step will then get some behaviour happening.    The PID combined with the odometry will allow me to command Buzzbot to drive to a specific X, Y Location, so I can do some calibration on the odometry to see how accurate it is.

All these tasks run under the FreeRTOS (http://www.freertos.org).

Make Controller

My new Make controller arrived today from www.makethings.com/makecontrollerkit  Talk about fast delivery, just ordered it last week and arrived here in Western Australia today woohoo….

This impressive board seems to have pretty good specs, and from my initial look at it I’m pretty impressed by the features for the price.

Makecontroller

Using the Embedded AT91SAM7X which is Based on the 32bit ARM7 core with 256K Flash, 55MHZ

Has heaps of buffered I/O bought out for easy access on the controller board, or you can pull off the Controller board get access to heaps more, although unbuffered, I/O. 

 Ethernet Port, USB, CAN Network, RS232.

 x8 10bit Analog Inputs

 x8 digital Out, with PWM

 x4 Servo Motor Connections

 x4 Status LEDS

I’ve just downloaded the the demo and could access the board from a browser via the ethernet.  Tonight I’ll look at putting it on Buzzbot.

Southwest Robotics Group

A friend of mine, Paul and I have been talking for sometime on setting up a robotics club here in the Southwest of Western Australia, anyway nothing has ever eventuated until now.  So to get the ball rolling I put a call up for expression of interest in starting a club on one of our local community portals, anyway I’ve had a good response from the local media.  I’ve done a couple of interviews with the local newspapers and one with with the local radio station this weekend.  Hopefully these will generate a bit of interest.

I’ve started a mailing list to help kick things off (found here).

Java – Intelligent Agents

Well it’s been a while since my last post – Sorry about that, alot happening in my life at the moment and unfortunately robotics have taken a bit of a back seat.  Although it’s taken a back seat it has not been forgotten and during this period I’ve been looking at Intelligent Agents using JADE and more importantly JADEX that sits atop of JADE and provides a BDI Agent  BDI – Belief, Desire, Intention.  Actually I had come across JADE a couple of years ago and dabbled with it a little, but then got busy with my job at the time.  By chance I came across the site again and rekindled my interest and how it can be applied to robotics.

One of the cool thing about JADE is the ability for agents to live in any container on a network and work together, that is talking to other agents that perform a particular job to help them in their individual goals.  Agents can also migrate from container to container.   Think of the possibilities, an agent can be monitoring the hardware platform and detects an abnomily then all agents leave the host before it fails completely, pretty cool stuff.  Also using the LEAP plugin for JADE agents they can run on mobile computing, i.e. small hardware footprint, obviously something cabable of  running a Java VM, but still something with a small Memory/CPU footprint. 

What I can envisage here, is an agent based home control system, with all appliances networked, each with their little helper agents.  E.g. the homecontrol agent talks to the mowerbot system and sets a new goal, “mow the lawn”.  The agent on the mowerbot dutifully makes this it’s primary goal.  So off it goes mowing the lawn until that goal is achieved, using it’s beliefs to help it obtain this goal, the goal could be deemed as complete by the the amount of lawn covered/cut etc. The mowerbot agent also monitors the mowing system, battery is getting low, so the new goal that overrides the current goal is go and get charged, so the Agent could now ask the home control agent to turn on the recharge station  beacon so it can locate it, the agents goal then becomes navigate to the recharge station, once recharged, the prior goal comes back into play and the mowing of the lawn continues.  Or alternately a problem occurs and the mowerbot gets stuck, or has a hardware failure.  The Mowerbot agent then communicated this to the home control agent that inturn notifies the occupier by different plans (i.e. email, phone txt etc) that it’s something needs to be done and intervention is required. 

I’m currently playing with JADE/JADEX and writting a helpdesk system based on these agents to help me in my day to day work.

 Helpdesk Agent System

BuzzBot – PicAxe Frustrations

Frustrations 

I have to make some decisions on what direction I need to go with my buzzbot project, basically I have been frustrated with some short comings of the PICAXE microcontroller.  The main being lack of any onboard timers and having only one common interrupt available.  Also I think that I’m trying to fit too much onto one of these babies. 

Don’t get me wrong I love these little guys, they are fantastic if all I need is polled I/O, which for the majority of the time is what I’m after, however everytime I want to do something time critical I hit a dead end. 

Main issues so far:

PID Motor / Differential steering Control – No timer interrupts and PICAXE not being fast enough to update PID Calculation base on each wheel velocity.  I have no real way of getting around this so I think my options are to move to an actual PIC (as opposed to PICAXE) and program the PID Differential Steering in C / Assembler.

PWM Motor Control – Limited to 2 pwm output pins on the picaxe28, (btw this in itself is not an issue, just trying to get it working on the existing H-Bridge which has 4 wires – and I didn’t really want to use any external logic), I have tried coding a PWM using picbasic, but does not have the resolution, so I may have to add some external “glue” hardware to allow my h-bridge to be driven from onboad pwm and forward/reverse direction.  I’m also cosidering replacing the existing H-Bridge that was part of the R/C buggy with a L293 Dual H-Bridge chip, this in itself will solve my issues with PWM motor control, but still need to resolve the PID issue for my differential steering. 

IR Detectors – I have moved the IR Detector Circuit offchip while playing with PWM / PID control.  This I have implemented using a picaxe08M, also having some issues here, although I think I can get around these.  The 08M only has one PWM onboard, and I’m using this to modulate one of the IR TX LEDS.  I would love to have 2 PWM onchip as the PWM/IRTX/IRRX Combo works really well in detecting objects,  I have moved to a proper IR Receiver rather than just an IR Opto Switch.  I had issues with sensitivity, and using a proper IR modulated Receiver has cut these out.  I guess it was  ambient IR causing the problems.  The only problm I have now is as there is only one PWM I need to modulate another IR TX (The right) at approx 40Khz.  I have tried it in code but no go as the picaxe is not fast enough, So I have been playing around with the “infraout” commands of the 08M,  this in conjunction with the PWM seems to be causing alot of noise on the RX, if I disable the infraout then all works aok, so some more things to look at, it may be that the same onboard timer is being used as with the PWM, or the infraout is spot on 38Khz, as I have found by detuning the PWM down I decreased my falses.  Anyway will look into this a bit more.

BuzzBot – Initial Testing

I started testing last night after finishing initial motor and wheel sensor hookups to my development board.  Couple of minor issues so far. 

Issues 

I’m using a pic based board from Modtronics. These are great and reasonably priced, along with the prototyping daughterboard.  However I have since found that the onboard RS232 is not on the same pin as the PICAXE28X, so I had to wire in an additional programming circuit, no biggy.  The other issues so far were the wheel sensors.  From my initial design I had used 10K resistors to bias the output of the opto-transistor, this was not tested and when testing the logic probe was picking things up ok, but not the PICAXE, after much stuffing around and not being able to find my multimeter (it was still packed away from shifting house) I ended up prototyping the same circuit, still had some issues, so I went  hunting for my multimeter and of course it was on the bottom box lol.  Luckily thanks to my trusty multimeter I found that the sensor was just dropping down to 3.8v when interrupted, anyway the solution to the problem was a larger resistor, a 22K on the output, this tested AOK, now getting ttl levels when switched, I also noted that the distance of the sensor to the reflective object (paper in this case) was fairly critical.  I modded the breadboard and then found one side was working fine, the other was not being seen.  Checked and found that the sensor was slightly further away than the one that was working.  So out with the hot glue gun and moved the sensor.  Both side are now giving me a reading on the PICAXE.

Motor Tests 

Next I adapted some motor control routines on Hippys PICAXE site to test my motor circuit.  First I tested without my motor control board plugged in, didnt’ want any smoke to escape, and all logic tested aok, then came big crunch of running motors live.  I can gladly say that all tests worked A1 with no issues.  Motor was tested though a range of 3 speeds in FWD, REV, Turn right FWD , Turn Left FWD, Turn Right Rev, Turn Left Rev, Spin Left and finally Spin Right.  While Testing the FWD and REV, I checked the Pulses from the wheel encoders to see how much the same each drive was over 100 counts from the wheel encoders and it looks like the Right side is slightly stronger than the left, no real surprise here as no two motor/gearbox combinations are the same.  I had thought about this a few days ago and knew that with any differential drive system I will encounter this type of problem.

Motor Control Algorithm 

This then leads me onto my motor control algorithm.  Over the last few days I have been researching PID Controller and their application to motor control for robots, as I want Buzzbot to drive in a straight line, also been looking at fuzzy logic, but I think will give that a miss at the moment.  I have been thinking of using and adaptation of the PI Proportional controller from the book “Robots – Inspiration to Implementation”  however so far I’m not 100% happy with the PWM and the way it is from the code I adapted, while it is very simple and works,  I would really like to use the onboard PWMout routines, but as I mentioned in an earlier entry it is only limited to two PWM and to two physical pins on the PICAXE – Bummer!!!!   I also thought I can use the old PWM command.  This command requires it to be refreshed, much like what is happening in  my test code, except with a agreater resolution, unlike the PWMOUT that runs in the background, perfect I thought!, but when I went to test it I found it’s only available on the 08 series…double Bummer!!!!!  So now may have to look at teh PulseOut command.

While the existing configuration does give me three speeds, the lowest is time critical and I notice that when I add a debug routine the slowest speed does start pulsing, also I don’t think it will give me the fine control needed on each of the wheel speed controllers.  I’m going to have to think about this a bit deeper.

Conclusion 

All in all everything is working as expected, with a couple of minor hicups along the way.  Biggest issue will be PWM resolution and time of my routines.  I think I’ll need to come up with another way of doing what I want simply and without too much additional hardware if I want a closed loop control system.  While I ponder on this I’ll test the IR Sensor circuits.  These I’ll prototype first before I hardwire in.  Once I finish these I can then start working on behaviour.  I would like to look at using some sort of subsumption model, but will look at it deeper as I get closer.

buzzbot -  Motor Testingbuzzbot -  Motor TestingBuzzBot - Modtronics PIC Board

CNC – MK1 Modelling Begins

After lots of research I’ve started to put some ideas to paper for the MK1 CNC Machine.  

Yes I know I could probably jump right in and start putting together bit and pieces, but I really want to learn to use some 3-D Modelling CAD Packages for future Robotics projects and since I will eventually need to model components so they can be exported to the CNC machine for milling, I thought it might be a good exercise by modelling the MK1 itself.

So here is the start of the X-Axis Linear Bearings

CNC - MK1 X-Axis Bearings

CNC Bug Bites

Over the past number of years, along with my interest in robotics and software development,  I have also had a keen interest in machining and metal work, I suppose ever since I build my first Stuart Turner stationary engine when I was 15 on my fathers Lathe,  BTW my father is also a very keen model engineer/machinist.  So wanting to merge my interests along came CNC.

I don’t own a lather / milling machine, actually I don’t even have a workshop myself (about to change with my new house being built), although I do have access to them when ever I want its still not the same as ducking out to the shed to whip up a part, in general I find making small components and PCBS a bit of a pain, mainly though lack of tools and proper work area.  So Getting back into the robotics/electronics scene after a long break has also re-kindled my interest in the CNC Area, especially for small robotic parts (plastic and aluminium) and one off PCBs (routing and drilling). 

So in my quest for knowledge, I spent the last few nights browsing what’s out there, and was very surprised to see the huge amount of work that people have done.  I must admit it had been a couple of years since I’ve last looked, and there there are some truly amazing machines out there (check out http://www.cnczone.com/).   Anyway I think I want to start off small first with a low cost pcb router/drilling using a 3-axis with a dremal.  Plenty of photos out there with low cost designs and common parts have inspired me to take some steps and begin some design work, so stay tuned.

 

BuzzBot

Introduction 

The Buzzbot idea came to me when i was trying to think what can i do to learn the picaxe uController, something practical, well rather than just flashing Leds and buzz buzzers anyway. What I wanted to do was something robotic that is cheap and easy as I don’t have much of a workshop facility available to me just yet to assemble any bases. 

Recycle 

We had just moved house and whilst doing the spring clean of some toy boxes and throwing alot of my childrens toys into thte “garage sale” box I came across the Buzz Lightyear Remote control buggy.  Basically a 6 wheel buggy with a psycho looking buzz with missile launchers as hands that raises and releases the missiles.  Well the missiles were long lost and what interested me was in using it as the base for my “buzzbot” is that most of the work is already done for me. i.e. I don’t have to build a base and look for motors etc.  I just want to get down to the nitty gritty of interfacing the PICAXE into something and playing around with it. Another thing that I think will work in my favour is that the Left and right wheel drives seem to be independant of each other as this thing from memory could turn on a dime, so therefore there must at least two motors, and the necessary driver circuits in place for me to use.

 BuzzBot Buzz Buggy Side

The Autopsy

Upon dissasembly it looks as though I was right, a gearbox and motor for the left and right drives (front two wheels on each side are geared , while the rear is free wheeling) also a circuit board with a simple RF Receiver and a heap of transistors, which after some initial tracing leads me to suspect are the H-Bridge Drive implementation for the motors, Left, right and the psycho buzz torso aka Missle launcher (he raises up to fire) woohoo, most of the work is already done.

Buzz Buggy InsideBuzzBot Drive Trainbuzzbot control boardbuzzbot -  inside buzz

Man he must be on crack!

buzzbuggy - psycho buzz

Next Steps…..

Ok since I have now dissected the Buzzbuggy it will now be re-assembled back into the “buzzbot”  minus the psycho buzz torso, as I just want to use the base as my test platform for the PicAxe.  I now need to trace through the circuit and see where I can tap into for the motor control, and also add some sensors. 

 Stay Tuned….

About

This blog is a collection of my projects and things I’m doing at the time.

Unfortunately due to a busy life (like most out there) the blog may see some in-action for periods of time, however don’t despair, as I get around to updating things eventually and the blog posts go through a burst of activity.

My Interests (in no order what so ever): Embedded Development, Photography, Wireless Sensor Networking, Home Control, CNC, Forex, Automated Trading, Quant Trading.

Thingiverse: http://www.thingiverse.com/seaton

My Photography: www.flickr.com/strobotics/

Tweet Me: www.twitter.com/madeinoz