LEGO Mindstorms EV3 Ball Catching Robot.

EV3 Ball Catching Robot
en.pdf24.org    Send article as PDF   
This robot is a very clever design using the Mindsensors NXTCam-v4. Actually two of them for stereo vision. The instantaneous response of the Delta Robot design for catching the ball is outstanding choice by the owner Dillon Sharlet!

The Mindsensors NXTCam-v4’s Vision Subsystem has realtime image processing capability to detect and track a line or upto 8 colorful objects. It Tracks upto 8 objects, with 8 different user defined colors at 30fps. This provides realtime tracking statistics to LEGO Mindstorms EV3 (NXT) programable brick.

LEGO Mindstorms EV3 Ball Catching Robot

It must be noted that using the NXTCam requires fair amount of programming expertize, as well as analytical programming skills. The following need to be considered:

  • Ensure that the NXTCam is configured correctly for the color of the object being used in the target lighting conditions.
  • There may be other stray objects detected in your view, which will need to be filtered out.
  • Examine the images that NXTCam receives, and implement logic to eliminate erroneous detections.
  • Allow for the fact that the width to height ratio of the detected objects should meet certain criteria.
  • If you have multiple objects, the distance between multiple objects will need to meet certain criteria.

It is possible for you to program your own tracking algorithm(s) and update NXTCam-v4 with your firmware. The NXTCam has three processors and a CCD.

NXTCam Internals

The PIC16F886 and AVR Mega 8 are the important processors involved. The I2C communication with Host I2C controller is handled by PIC16F886. This processor also communicates with AVR processor to send commands and receive the responses (through internal serial bus).

The AVR Mega 8 processor runs the image tracking algorithm. In the default firmware, the color tracking mode is invoked by an ‘Enable Tracking’ command from the PIC processor. In this mode, each scan line from the image is brought into the processor memory, the line is processed and then discarded to get next scan line. This results in the AVR processor to continuously send tracking data to the PIC processor, until a ‘Stop Tracking’ command is sent. Same communication happens with the USB host program, (i.e. NXTCamView) as well.

Dillon Sharlet decided to us EV3dev in place of the standard LEGO Mindstorms EV3 Operating System. The EV3dev distribution is a full Debian (jessie) Linux distribution running on the 3.16.x kernel that has been customized for the LEGO MINDSTORMS EV3 controller.

Rather than use custom language bindings that use direct access to mmap’ed files, this distribution aims to allow as many programming languages as possible to access the EV3 peripherals using simple Linux file access. If your favorite programming language is available as an ARM port, and it can read and write files, you can use it to program the EV3.

Currently the EV3dev distribution includes the following languages:

  • bash/dash
  • awk/gawk
  • perl
  • Lua
  • guile
  • ruby
  • python
  • Google Go (golang)
  • Node.js

If your favorite language isn’t listed, you can still program with the EV3. EV3dev supports standard apt tools, so once you get up-and-running you can install whatever language you like.

And although you can directly access the APIs via file I/O if you want to, let’s face it: that’s tedious. It’s much easier when you have a higher-level library to use. Learn more about our pre-made language bindings on the documentation page.

Features above and beyond the official LEGO kernel are include:

  • Support for Atheros, Realtek, and other wifi chipsets so you’re not stuck with one specific wifi dongle
  • Support for SSH terminal sessions
  • Ethernet over USB functionality and a full network stack
  • Actual user accounts instead of passwordless root access
  • Fully upgradeable and customizable install using standard “apt” tools, running on the brick
  • NFS file share / file transfer capability
  • Automatic NTP clock updates
  • Access to device drivers through user-space filesystem
  • Built in text editors like vim and nano
  • Prebuilt support for programming languages like Lua, perl, gawk, Python, guile, Ruby, and more
  • Support for all host operating systems including Windows, Mac, Linux, Android, even Blackberry!

Put more simply: EV3dev can do almost everything normal Linux can, while the stock LEGO kernel cannot.

Don’t want to give up your official LEGO MINDSTORMS EV3 kernel and rootfs? You don’t need to! Just install EV3dev on any microSD card (min 1GB suggested, but can you even buy one that small anymore?) and plug it into the microSD slot on the EV3. The uboot loader will look on the card, find the ev3dev kernel and happily boot that instead!

When you want to use the official LEGO tools, just shutdown the EV3, unplug the EV3dev microSD card and restart the brick.

This is still an early beta, so it’s not as polished as the official LEGO offering, but it’s getting better every week as we add support for more of the native EV3 drivers. Alongside the main kernel, work is also being done on brickman, which adds a LEGO-like GUI.

I am amaze at the ingenuity shown by many LEGO Mindstorms EV3 owners, and there Robotic creations. It is a great that we live in such a connected world and can get too see these masterpieces…

Previous Post

EVShield: Arduino Shield for EV3 & NXT Motors & Sensors

OpenElectrons.com have a new Arduino Shield being readied for release in the near future. You can use it to make Robots with 'Arduino Brains', using either LEGO Mindstorms EV3 or ... Read more

Next Post
EVShield

EVShield Holonomic Platform with LCD & Wii Nun-chuck

A few days ago I received an EVShield from OpenElectrons (Mindsensors) to Beta test. The EVShield fits on top of an Arduino Microcontroller and operates in a similar manor to ... Read more

Short URL: http://tinyurl.com/hkgmbcp

Leave a Reply

Your email address will not be published. Required fields are marked *



Do NOT follow this link or you will be banned from the site!
error: Content is protected !!