3D Robotics
I got started with amateur UAVs by making a Lego Mindstorms autopilot two years ago. It was a total kludge, using a mechanical assembly with Mindstorms motors to move the rudder, with stabilization handled by a FMA Co-Pilot. Originally, I used a compass sensor for steering, but quickly upgraded that to a Bluetooth GPS module. It worked, sort of, but then I decided to go all the way to a 5DOF Lego IMU, using some protoype Hitechnic integrating gyros and a RC MUX. Unfortunately, HiTechnic decided not to release those products, and I stopped development. (Although Sami took a version based on commercially-available gear further than I did--see photo above--he too stopped before getting it totally working). Now I'm thinking of coming back to Mindstorms. Not a full IMU-based one (the cost, weight and size of the sensors, interface boards and other necessary equipment is several times that of custom hardware like ArduPilot), but rather a navigation-only autopilot that could work with a FMA Co-Pilot to make a very simple UAV for kids. What we'd need is a custom interface board that performs the following functions: 1) RC MUX, to switch control from RC to Mindstorms and vice-versa 2) Servo driver (at least two channels--rudder and throttle--but ideally more for photos and other triggering). Here's one example. 3) A GPS interface, so we don't have to use Bluetooth Mindstorms uses a I2C interface. My sense is that if I can just add a Mindstorms connector to ArduPilot and figure out how to handle the I2C communications between it and Mindstorms, it could serve as that interface board. It would send GPS information (already parsed) to Mindstorms, and then Mindstorms would send servo information back to ArduPilot. What's the point of the Mindstorms, since ArduPilot can already perform all those functions itself? Just that it's a more kid-friendly programming environment. If we could treat the custom ArduPilot board as a plug-and-play preprogrammed device that spits out GPS data and accepts servo commands, students could focus on simple navigation logic and action controls. What do you think? Is this a good idea and worth the bother? Or should I simplify things even further and just use the Mindsensors board as a servo interface, Bluetooth for the GPS interface and a touch-sensor as the MUX (like this)?
E-mail me when people leave their comments –

You need to be a member of diydrones to add comments!

Join diydrones

Comments

  • u can also 'cascade' them

    -This guy's book describes how port #...I believe 4 on the nxt can be used as a serial com port. he used it to slave two nxt's through nxc. that might help some:

    http://robotics.benedettelli.com/NXTrobots.htm

    This site shows how to create a gps sensor and link sensors by x-bee and some other stuff.....:

    http://www.wired.com/geekdad/2009/06/fantasy-lego-mindstorms-sensor...
  • with this u can split one port into three for $10
    http://www.mindsensors.com/index.php?module=pagemaster&PAGE_use...
  • Hi Chris,

    I recently hacked my ardupilot (lots of firmware changes + a couple extra wires soldered across the back) to be a 4 channel RxMux + read 4 channels from the receiver + drive 4 output servos simultaneously. In addition I use the single serial port to communicate to some host computer. The ardupilot spits out the transmitter stick positions as read from the receiver, and the host computer sends back servo commands (which the ardupilot will use to drive the servo locations rather than doing any of that itself.)

    One limitation I discovered is that the Atmega328 chip only has one serial port and now I have tied it up talking back and forth to the host computer, so I can't plug a gps receiver directly into the ardupilot any more.

    You mentioned I2C, so if you could figure out a way to leverage that to communicate to the mindstorm controller, that frees the serial port back up to do gps. The Atmega328 chip supports SPI (according to the data sheet) but the arduino programming environment doesn't offer any functions to expose this interface, and I'm not sure Jordi made any of those SPI pins available for use anyway ... (?)

    Well despite asking for a bunch more functionality myself, one really nice feature of the ardupilot is it's simplicity. Or maybe I should say "simplicity" (in quotes.) *Relative* simplicity. :-) That said, whenever Jordi is ready to migrate to a chip that can do an additional 2 or 3 serial ports, I'll be cheering him on.
  • 3D Robotics
    Nick, Xander-- I think you're probably right. I'll probably demo it with just the mindsensors servo interface and a BT GPS (with a touch sensor for MUX). If you've already got a NXT kit, that's just an extra $49 for the servo interface and maybe another $30-$40 for the GPS. Plus $70 for a FMA Co-Pilot, of course. About the same cost as ArduPilot (not including the NXT), but perhaps easier or more fun for kids and NXT fans.

    Not an ideal autopilot, but possibly cool enough to attract new people to our world.
  • As much as i love mindstormes (it is how i got into robotics) i dont think a NXT autopilot is such a good idea.
    As Xander said, NXT hardware interfaces are expensive than their ardupilot equivalents.
    Also, building an autopilot is no easy task. They are complex, expensive and easily damaged.
    Realistically, besides the "coolness" factor, an autopilot offers no more advantages for teaching kids/students than a ground based rover which would be cheaper and less likely broken.
    My $0.02
  • Maybe you could make a kit that [I know. I know] didn't use adrupilot the Nxt aught to be powerfull enough; if it's not then it is a waste to have it onboard the only thing it's good at is "microcontrolling" to coin a phrase. Just my thoughts.....

    -Rd=]
  • Possibly something like this: http://www.mignongamekit.org/2009/02/visual-programming-tool-for-ar...
  • Seems to me you'd just be using the NXT for its software interface, with the components being significantly more expensive than their ardupilot equivalents. Not sure how realistic it is, but perhaps a better goal would be an NXT-like interface for the ardupilot. Developing something like that from scratch sounds...like a huge amount of work, but perhaps some frameworks already exist out there that it could be built on top of?
  • Oh and of course this would be an easy way to start with UAV's for people who want to avoid code based programming
This reply was deleted.