Software > Software

tracking a moving object from a moving UAV robot

<< < (2/3) > >>

Admin:
What is your previous experience with such things? Are you a skilled programmer?

If I were to do it, I'd use a Blackfin Camera combined with my Axon Mote microcontroller, and a sonar to verify the target distance. Probably use a construction worker reflector vest to stand out.

An infrared beacon is fine, but most cameras have infrared filters built in already. A red hat may be too small, especially compared to a red car in the background.

gratefulfrog:
Hi,
Yes,  I'm an expert programmer in many many languages, but I have nearly no idea of how the hardware will all work together, nor do I know anything about image processing.  But it doesn't scare me.

I am a keen off-piste skier and was thinking about how I would build a quad-copter that would be able to fly ahead of a skier, and film him from above.  I would not consider any obstacle avoidance, assuming a clear sky...  This could potentially give great shots of my ski trips, compared to the boring photos & films I get today...

I only discovered your site this afternoon, until then I had been mainly surfing on DIYdrones.

Algorithmically, it seems quite straightforward, using any of the autopilot boards based on an arduino-mega? taking a video feed from an intova camera http://www.intova.net/products/sport-hd/ and I would have the skier carry some altimeter, either an android phone or other, to send alt info to the drone, and to call it back when finished.

However, I have not seen anyone do this yet, so I wonder if I am just too naive?

I have been debating on how to start, maybe with an ar.drone at first, for simplicity and reliability... I hadn't considered a ground based prototype - I'm also quite expert in RC heli flying.

But I haven't got a clear plan yet.

Discussing with you has already been helpful!
Thanks,
Bob

stridera:
i've done something similar using aForge.net.  (They have lots of good tutorials on their site.  Like OpenCV, you won't be able to run it on a arduino.  (aforge would take a laptop most likely.)  However, the articles and concepts should transfer over nicely.

Basically what you'll want to do is take a image of the background, and then watch as things change.  (Check out this article for a simplified version.)  The problem is that if the robot moves, the background will change.  (Also, if the user wears the same shades as the background, you'll lose them.)    If the user is in a white room wearing dark clothes, it's easy since the background remains the same.  Otherwise, you'll want to track new items as they come into the frame and mark them as background.

As mentioned by Admin, it's not trivial unless your conditions are perfect. 

Admin:
If you are skiing and there are no obstacles (no trees, rocks, or other people), this might be relatively easy.

It would be "easy" because it's a dark colored person on a perfectly clean/white background (ie snow).

What normally would make this problem hard is the person getting confused with the background clutter - I originally assumed you wanted to follow a person walking around in a neighborhood.

An image is just an x/y matrix with with color values.

I recommend reading up on vision processing before continuing, but this is basically what I'd do (google anything you don't understand):
1) read the image into a large matrix (x, y, color)
2) convert the image to 256 bit greyscale (or greenscale, if the human has a green vest on, etc)
3) run a histogram to calculate a threshold value
4) using threshold value, convert image to black/white (not greyscale)
5) run blob detection, filter out anything that isn't about the size/shape of a person
6) determine x/y coordinates in the image matrix of the center of that blob
7) knowing size of the blob, and info from the IMU of the drone, calculate location of that person

Then it gets a bit harder . . . the robot needs to predict ahead of time which direction the human is going so that it may keep up and not fall behind. So then you got complicated math to calculate the trajectory and speed of the person wrt the speed/trajectory of your robot.

this might help:
http://www.societyofrobots.com/programming_computer_vision_tutorial.shtml

Make a cheap ghetto two wheel robot using the camera and processor you plan to use. Program it to chase a ball that roles around your floor. Then when you think you're ready and have things figured out, just move that same software to a quadrotor.

gratefulfrog:
Hi Admin!

Thanks for those detailed instructions!  I am studying the vision tutorial!

It sounds like the programming shouldn't be so hard, the math doesn't scare me ;-)

On the other hand, identifying the moving skier may not be as easy as you suggest since snow isn't really "white" and mountains are covered with lots of stuff that's not snow, like rocks, trees, and people. In any event, this looks like a good starting point for some prototyping!

I plan to use "Wizard of Oz" systems,; ie human replacing machine at first, then  build robots working in 2D  and finally 3D.   I  have quite an AI background and know the importance of reducing complexity early on to see if the problem is solvable.

This forum has been really helpful and you can count on me for any support and as a customer on the shop!

With my greatest appreciation and thank,
Ciao,
Bob

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version