ROBOTC.net Blog  

ROBOTC News

Archive for the ‘projects’ tag

ROBOTC Curriculum Breakdown

without comments

ROBOTC-BreakdownA curriculum pacing guide is something that teachers have to consider whenever they examine their curriculum. This fact does not escape teachers of <a href=”http://www.robotc.net”>ROBOTC</a>. Whenever I come across teachers who are just starting to use the ROBOTC curriculum, often their first question revolves around how long the curriculum will take. Once again, teachers are used to having some type of pacing guide that delineates how a subject is to be taught. The ROBOTC curriculum is not organized in that fashion. Instead, the curriculum is organized by topic. The topics include basic programming fundamentals, robot movement, robot sensing, etc. The teacher is then free to spend an appropriate amount of time within each topic.

As teachers, this freedom is welcome. It is welcome because the pacing that comes with most textbooks is an impossible guide to follow. In order to create a true pacing guide, student background knowledge would have to be taken into account. Since every classroom is different (sometimes within the same grade, within the same school), it is impossible to gauge how quickly the students are going to master the concepts as they are presented. Screenshot-2013-09-05_15.11.12Additionally, as the teacher becomes more familiar with ROBOTC, they will find that they spend more time on particular concepts then they did the first time they taught the curriculum. For example, when I first taught ROBOTC, I spent 20 minutes discussing Flowcharts and Pseudocode. Experience has now taught me to spend a significant amount of time on these topics. I also spend much more time talking about Errors. Specifically, what should a student do when they get the dreaded compiler errors in their program? Experience has taught me to spend much more time on thinking about the logic of a program before the writing of ROBOTC and on debugging strategies once the code has been written.

Screenshot-2013-08-05_15.01.181Each of the aforementioned sections of the ROBOTC curriculum contains a programming challenge. The programming challenged is designed to showcase the skills that were emphasized in that section. Each section also contains an assortment of “mini challenges”. These challenges can be used at the teacher’s discretion. They all do not have to be completed. However, they can be very useful. For example, after the students have spent a day or two learning a topic, I will begin the following class with one of these mini challenges. They might not know all of the skills needed to complete the section challenge, but the mini challenge is a good assessment of what has been presented so far in that section. This also serves as a good change of pace for the class. Simply, you can’t learn to program without actually programming. In order to really understand the applications of while loops or if/else statements, students need to apply them. The mini challenges found within the ROBOTC curriculum serve as a great opportunity to scaffold skills toward their more challenging applications.

A beginning teacher of ROBOTC could teach the basic ROBOTC curriculum in one semester. By including many of the mini challenges, the curriculum can be stretched easily over a semester. I often tell teachers who are teaching the class for a year to do this, and then to end the year with a larger programming challenge. After the students have made it through the ROBOTC curriculum, I enjoy introducing them to Multi-Robot Communication. The sensor needed (NXTBee) is inexpensive, and there are a lot of great ideas for activities and programming challenges.

 


 

If you have a stronger background in computer science, and maybe you are teaching older students, you may be able to navigate through the curriculum much faster. What then do you do with students if you have them for an entire year? Luckily, there are many great ROBOTC projects on robotc.net. Moreover, the ROBOTC forum is also a wonderful place to look for ideas for projects, in-class competitions, and programming challenges.

Teaching robotics and ROBOTC is a lot of fun. The ability to watch your students apply what they learn in the ROBOTC curriculum in such engaging and open-ended activities is one of the main reasons why.

Basic Electronics and Arduino: A Winning Combination

with 2 comments

Electronics is an integral part of innovation, yet many electronic classes across the United States are being closed because of NCLB(1) and ever-shrinking school budgets.  However, more and more schools are instead opening robotics courses. With the Arduino platform we saw an opportunity for educators to integrate basic electronic principles into existing robotics courses using the VEX, LEGO, and BoE  hardware. Fortunately, Arduinos are very inexpensive and can be used not only as a mobile robot controller, but to create lots of other “smart” stuff as well.

Arduino on a NXT platform

The Arduino exposes students to a basic microprocessor concepts, prototyping on a breadboard, and basic electronics concepts through many cool projects.  The Arduino takes the processor ‘out of the box’ and gives students the opportunity to ‘build from scratch’ electronics systems. To augment these features, we’ve developed lessons around LEGO, VEX, and the BoE bot at our ROBOTC wiki and by the end of the summer we will have a set of plans that allow students to turn a RC car fully autonomous.  We have a team of folks dedicated to creating a series of lessons that makes teaching electronics through robots fun and easy, all while using technology that is already in your classroom.

In this regard, we have a very broad range of projects in mind for ROBOTC for Arduino; everything from basic LED control to creating homebrew sensors is covered. The end-goal for this research and development project is to expose students to a broad range of basic electronic concepts from simple circuitry to digital input (on/off switches) to analog inputs (potentiometer) to PWM concepts. As we continue to develop our ROBOTC for Arduino support materials, we need your help.  We are asking you, the ROBOTC community, to recommend projects that you are working on and are willing to share with educators and hobbyists.  Please consider sharing your project ideas and we will be glad to post them on both our blog and wiki. As always, keep an eye on our forum, Facebook, and Twitter pages for the most up-to-date news. Thanks!

Arduino on a BoE-bot platform.

Arduino on a VEX platform.

Written by John Watson

June 29th, 2012 at 2:25 pm

Posted in Arduino,General News

Tagged with , , , , ,

MARVIN, Mindstorms Anthropomorphic Robot-Verbalizing Interactive Nerd

without comments

Thanks C. Shepherd for submitting this one. Here is his really awesome project:

“So I was tinkering around with a bunch of mechanisms, and before I knew it I was into another project and it kept getting bigger and bigger. Take Omnibot, throw in some Kismet with some Lego Lips, and this is what you get.

It’s far from being done. Right now, it has 4 NXTs, 9 servos, 3 Ultrasonic sensors, 3 touch sensors (bumpers), the compass sensor, 5 PF motors, the HiTechnic SMUX, and on and on. More will be added soon. I’ll give full details along with a video when it is done.

OK, I know I said I was going to build a car factory. I still have a bunch of pieces lying around waiting to be worked on. I am trying to design a cool car that can be handled by the grippers and that is an unforeseen problem. I have bunches of Technic pieces, but not a lot of small car parts. ”

More details can be found here

Written by Vu Nguyen

February 25th, 2010 at 4:27 pm

Posted in Cool projects,NXT

Tagged with ,

The Domino Printer aka Dominobot

without comments

Now here’s a great robot that actually prints words using dominoes. You’ll have to see the video to get the full effect, but here’s the description:

“A Lego NXT robot that uses one Lego NXT, three servos, the HiTechnic IRLink sensor and 8 medium PF motors with receivers to lay dominoes to spell a message. For more information, visit www.tinkernology.blogspot.com


YouTube Direct Link 

Written by Vu Nguyen

February 25th, 2010 at 3:36 pm

Posted in Cool projects,NXT

Tagged with ,

Mindstorms Power Scope

without comments

This article first appeared here.

Mindsensors Power Meter

Mindsensors was kind of enough to send me one of their prototype sensors, the Power Meter, to play with.  It’s a sensor that allows you to measure, among other things, the current and voltage of anything you care to connect to it (within limits, of course).

The first thing that came to mind was building something that would log the incoming data to an Excel sheet using the NXT HID, but then Andy M scooped me on that so I had to come up with something else (damn you, Andy!).  Then it hit me!  Why not make an oscilloscope? So without further ado I started programming. This is what I came up with.


YouTube Direct Link 

The result is quite nice, I must say.  Right now it takes a sample every couple of milliseconds and refreshes the screen every 20 milliseconds.  There are five scales for each unit (amps and volts), to cover the full range of the sensor (up to 13V5 and up to 3A).  You can switch between ranges using the arrow keys and between units using the enter key.  This program, together with the driver will be available with the next release of the 3rd Party Driver Suite.

Things I’d like to implement at some point is data recording, zooming and manual scrolling of the screen.  I had the manual scrolling implemented at one point but ditched it for the cardiogram-look instead.

Another cool project using the Power Meter sensor can be found here: [LINK].

Written by Xander Soldaat

January 7th, 2010 at 5:44 am

Posted in Cool projects,NXT

Tagged with ,

LEGO NXTShot 2.0 – Cannon controlled by Mindsensors remote

without comments

[Correction: updated description]

Here’s another neat video that Tim found. It features a joystick that you can use to point its “missile shooter” towards a target. Here’s the description:

NXTShot 2.0 is lego NXT model cannon. Its targeting is driven in realtime by a Mindsensors Acceleration Sensor mounted on a remote. Its firing mechanism is powered by springs from old BIC pens. It has an innovative homing system that sets the limits for turning and inclining using a single light sensor. It has an onscreen menu system that uses a voice to give feedback on selections. It is programmed in ROBOTCC.
I have made plans of NXTShot using Google SketchUp and the fantastic NXT components provided by Payton White (see tinyurl.com/yw7tnw). More pictures of NxtShot can be found at tinyurl.com/2l7m2m.


YouTube Direct Link 

Written by Vu Nguyen

December 14th, 2009 at 10:55 am

Posted in Cool projects,NXT

Tagged with , ,

LEGO Flexpicker

with 2 comments

You guys really have to watch this one. It’s made by one of our very talented users on the forums, nicknamed “shep”. It’s an arm that’s based off of the flexpicker industrial arms that you see on assembly lines. Here’s the video:


YouTube Direct Link 

Here’s shep’s description:

This robot is based on the ABB Flexpicker industrial pick and place robot. It uses four NXT microcontrollers with various Lego sensors and motors. It is very easy to program, each position uses an array element containing 3 motor positions, 3 motor speeds and an action such as grip, release or pause. I can easily teach it to pick anything up as long as it can reach it and it will fit into the end effecter. The robot is programmed using RobotC 1.45.

Good job Shep!

Written by Vu Nguyen

December 3rd, 2009 at 1:28 pm

Posted in Cool projects,NXT

Tagged with , , , , ,

Lego UAV 2 by Chris Anderson

without comments

Here’s the second iteration of a really cool project by Chris Anderson, using a LEGO Mindstorms NXT and ROBOTC to create an Unmanned Aerial Vehicle (UAV).

It features:

  • Mindstorms NXT controller
  • Two prototype integrating gyros from HiTechnic. These are not the rate gyros already available. Rate gyros output degrees/sec, which requires a pretty gnarly math process to measure and integrate the results over time to get absolute degrees. The prototype iGyros from HiTechnic do that in hardware, and output absolute degrees, which is very easy for the NXT to deal with with.
  • A 3-axis accelerometer to calibrate the gyros using a modified Kalman filter. Basically gyros are right in the short term (seconds) but wrong in the long term (minutes; they drift over time). Meanwhile accelerometers are wrong in short term (they’re noisy) but right in the long term (they don’t drift). So we averge the accelerometer readings over time to correct drift in the gyros.A prototype servo multiplexer from HiTechnic. This is similar to the servo driver accessory that they’re selling as part of the FTC competition kit, but is designed for RC use. It takes I2C output from the NXT and converts it into PWM for the servos. It also has a channel 6 input from the RC receiver that switches it from RC to NXT control (this is our hardware failsafe switch).
  • A GPS sensor/datalogger (iBlue 747) that communicates with the NXT via bluetooth.

Video of the UAV in action:


YouTube Direct Link 

Source: http://diydrones.com/profiles/blog/show?id=705844%3ABlogPost%3A32733

Written by Jesse Flot

December 2nd, 2009 at 3:13 pm

Posted in Cool projects,NXT

Tagged with ,

VEXnet Upgrade Support

without comments

VEXnet Upgrades

VEXnet is an 802.11 WiFi replacement for the crystal-based communication system between the VEX Microcontroller and Radio Control Transmitter. The VEXnet Upgrade enables users to convert existing Microcontrollers and Transmitters to the VEXnet communication system.

Additional VEXnet features include:

  • Easy to connect (No IP addresses, MAC addresses, or passwords)
  • Multiple layers of security built-in and always on
  • No wireless access point needed; each VEXnet pair makes its own private network
  • Hundreds of robots can operate at once; every VEXnet robot has a hidden unique ID
  • Optional tether for wired communication
  • Two user selectable channels and one private channel for competitions
  • Optional 9V battery backup to maintain wireless link during a main 7.2V power loss
  • LED scheme displays the status of the Robot, VEXnet link, and Game (Competition Mode)

Read the rest of this entry »

Written by Jesse Flot

November 25th, 2009 at 12:37 pm

Posted in General News,VEX

Tagged with , , ,

ROBOTC with the Mindsensors NXTCam

with 4 comments

The Mindsensors NXTCam can be configured to track up to 8 colored objects.  It connects to an NXT sensor port, and reports the coordinates of each object to the NXT, enabling fast line tracking, color recognition, and object tracking. Watch this cool video showing ROBOTC and the NXTCam: http://www.education.rec.ri.cmu.edu/downloads/lego/resources/NXTCam/NXTCam.html

Sample code for Color Recognition:

#pragma config(Sensor, S1,     camera1,             sensorI2CCustomFast)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//
 
/*
Color Recognition - ROBOTC for the NXT
 
Description: The NXT displays the name of the color returned by the Mindsensors NXTCam v2
 
NXT Configuration:
- Mindsensors NXTCam v2 plugged into NXT Sensor Port 1
 
Camera Configuration:
- Color Index 0: Red
- Color Index 1: Orange
- Color Index 2: Yellow
- Color Index 3: Green
- Color Index 4: Blue
- Color Index 5: Purple
- Color Index 6: Black
- Color Index 7: Brown
 
Notes:
- As of October 2008, NXTCam color index must be configured through
NXTCamView, found at: http://nxtcamview.sourceforge.net/
- More information can be found at: http://mindsensors.com/index.php?module=pagemaster&amp;PAGE_user_op=view_page&amp;PAGE_id=78
*/
 
//Include NXTCam Library
#include "RAnxtCamLib.c"
 
//Define global variables
string colorName;
int numBlobs;
int_array blobColor;
int_array blobX1;
int_array blobTop;
int_array blobX2;
int_array blobBottom;
 
void printColorName();
 
task main ()
{
  //Initialize the NXTCam
  enableTracking(camera1);
  wait1Msec(500);
  sortBySize(camera1);
  wait1Msec(500);
  useObjectTracking(camera1);
  wait1Msec(500);
 
  //Recognize Colors Forever
  while(true)
  {
    printColorName();
    wait1Msec(100);
  }
}
 
//void printColorName() - Writes the color returned from the camera to the NXT screen
void printColorName()
{
  nxtDisplayString(1, "The color is:");
  //Retrieves Camera Data
  getCameraData(camera1, numBlobs, blobColor, blobX1, blobTop, blobX2, blobBottom);
 
  if(numBlobs &gt; 0)  //If at least 1 "blob" or color is seen...
  {
    switch(blobColor) //...check the blobColor index.
    {
    case 0:
      colorName = "RED     ";
      break;
    case 1:
      colorName = "ORANGE  ";
      break;
    case 2:
      colorName = "YELLOW  ";
      break;
    case 3:
      colorName = "GREEN   ";
      break;
    case 4:
      colorName = "BLUE    ";
      break;
    case 5:
      colorName = "PURPLE  ";
      break;
    case 6:
      colorName = "BLACK   ";
      break;
    case 7:
      colorName = "BROWN   ";
      break;
    default:
      colorName = "UNKNONWN";
      break;
    }
  }
  nxtDisplayString(3, colorName);
}

Written by Jesse Flot

November 24th, 2009 at 12:32 pm