Archive for the ‘Teacher POV’ Category
Jason McKenna, from the Hopewell Area School District outside of Pittsburgh, PA, writes about his experience in the classroom with the new Robot Virtual World game, VEX IQ Beltway. Check it out below …
The new VEX IQ virtual game Beltway is a great way to challenge your students to apply the basics of ROBOTC programming while also asking them to come up with unique strategies to try to score as many points in the 2 minute game as possible. My students just spent about 3 weeks working on the challenge and trying to score the highest score as possible. The students had an absolute blast and as a teacher, it was great seeing all the different ways the students tried to tackle this completely open-ended challenge.
The objective in Beltway is the same as VEX IQ Highrise: program your VEX IQ robot to autonomously score as many cubes as possible during a 2 minute period. With Beltway, a conveyor belt has been added around the perimeter of the game field in order to assist with game play. Additionally, the virtual environment utilizes “magic stacking” meaning that the cubes automatically jump onto the stack when they are placed onto of the stacking cube regardless of the apparent size of the robot. The conveyor belt reduces the accumulation of error, where, for example, a robot’s slight error in one turn becomes a larger error when the robot repeats that same turn 4 or 5 times. Any time students attempt a long program with many different elements they will at some point become frustrated with the accumulation of error that occurs. Magic stacking and the large margin of error that enables easy pickup of cubes eliminates any frustration that the students may encounter as try to pick up cubes and then stack them. These elements of gameplay in Beltway allow students to focus on their strategy, and it also allows them to try to experiment with many different scoring methods because they are not spending a lot of time programming perfect 90 degree turns and aligning their robots perfectly to pick up a cube. You can click here for a more extensive list of rules and information about gameplay!
Beltway comes with a variety of sample programs that students can use to help them get started or as a reference as they adjust their strategies. For example, if students decided that they wanted to control the conveyer belt manually, they could refer to a sample program to see how that is done. I did that many times while monitoring the students. After a few days, the students aren’t repeatedly raising their hands; instead, they just refer to the sample programs for guidance.
The game also served as a great tool to teach beginning programmers the utility of comments. Oftentimes, beginners don’t make programs quite as long as the ones they will make for Beltway. Students quickly saw the need to point out what was going on in their code with comments so they could go back to those sections and make whatever adjustments they wanted as they progressed with their gameplay.
As I stated earlier, my students had a lot of fun while playing Beltway. It is not easy to keep students’ interest level high in an activity that takes 3 weeks. The students maintained their level of interest and they consistently asked to stay after school to work on their programs some more. We had an in-class competition where the students ran their final programs. The winning team scored the winning points as the timer, literally, went to zero. It was pandemonium in my room. Kids were high-fiving each other, cheering, and remarking at how awesome the competition turned out. Students were also talking about the different strategies that the other teams used and how they could change their programs based upon what they had just seen.
So now, of course, the students want to play some more. This is great because now I can use that as an opportunity to show students how they can take some of the code that they used over and over again (for example, picking up cubes) and show them how they can use full ROBOTC to turn those behaviors into functions. Beltway has proven to be both a great teaching and learning tool in my classroom.
- Jason McKenna
This is my third year teaching, but my first time working with Project Lead The Way (PLTW) and a robotics course. After accepting this assignment, I was extremely nervous. I did not study robotics in college, and I had never, ever pictured myself in this role. But I am so very happy to have taken on this challenge.
My favorite part about teaching this class is the atmosphere and expectations that I set up with this class and my students. From the first day of school, I was completely honest with the kids. I broke down the walls of the normal teacher-student relationship where the teacher is looked at as the bearer of all knowledge and all knowledge is passed down from the teacher to the students. I created a culture where students and their knowledge are equally valued and as important as the teacher’s. This led to a culture of mutual respect and collaboration. I, as the teacher, was not viewed as the bearer of all knowledge, but as a helpful resource to rely on when problems arose. The most important part of creating this culture is setting up those expectations from the beginning of school.
The major theme from this class was “Problem-Solving”. I would present students with a variety of real-world scenarios and they would have to think of a design to solve that problem. They would work in groups of 2 to 4 students to create, construct, and program these robots to solve the problems I presented to them. This allowed for A LOT of different interpretations and ways to solve these problems, which was awesome!
Several key strategies that I incorporated into the class that proved to be successful were: purposeful grouping, incorporating student choice, and using students in a teacher’s role to help other students who needed more assistance. I incorporated a “Menus” style of teaching and learning. Students would be purposefully grouped into groups of 2-4 and then they would be presented with 3 different levels of activities: Appetizer, Main Meal, and Dessert. Within each level, students would have to choose 1 task out of 3 or 4 different options. As a group, students would choose which task to complete. Once decided, students would work as a group to design, build, and program the robot to complete the task. I would watch the robot perform the task, sign off on their paper, and they would move on to the next part of the menu. The activities got progressively more difficult as students moved from the Appetizer to the Main Meal to the Dessert level, with the Dessert level activities being the most difficult.
As we get ready to begin with the second semester, I cannot help but think about how much I have learned and how better of a teacher that I have become because of teaching this class. Some future ideas I have are the creation of a “Girls in STEM Club”. The purpose of this being opening girls’ eyes to future careers and possibilities associated with this class and the STEM ideals. Also, possibly creating a VEX Competition Robotics club where students would meet after school to construct robots to participate in VEX Robotics competitions. One thing that I realized early on in my teaching career is how much teachers learn from their students. Teaching this class has been one of the best learning experiences of my life.
– Ross Hartley
If you’re a teacher or robotics coach and would like to write a blog about your experiences teaching, send us an email at firstname.lastname@example.org!
We came across a wonderful blog post, written by a faculty member at Allendale Columbia School in Rochester, NY, that talks about their transition to ROBOTC in their elementary classes.
While our 5th grade S.T.E.M. students at Allendale Columbia School were initially perplexed by some very new terminology, concepts, and programming requirements, it didn’t take long to see that our elementary grade students were up to the challenge of learning an industry-standard, text-based programming language typically taught at the high school and college levels: ROBOTC.
Just a couple of weeks before the start of school, we became inspired to teach ROBOTC programming after several local teachers and robotics coaches shared their concerns with us about the need for students to learn high level and industry-standard programming well before their high school years. Pondering this notion, it occurred to us that we could provide our young students the “familiar and scaffolded context” of reconstructing NXT robotic, challenging them to ultimately solve for the same exact missions our students originally and proficiently programmed in NXT in their fourth grade year, re-programming in ROBOTC, in the beginning of their fifth grade year.
As it turns out, our young students exceeded all expectations, easily grasping the new programing concepts, skills, and requirements for successfully completing the PBL (project-based learning) tasks and challenges they were able to solve for…
To read more from this blog, visit their blog here – Programming in RobotC – Starting in the Lower School Grades
Anna Lynn Martino attended one of our Professional Development classes recently and wrote a wonderful blog about her experience. Check it out below …
Reblogged – “Robots Oh My!” from (link temporarily unavailable)
Last week I attended another teacher training at CMU’s Robotics Academy. My goals this year was to be more comfortable working with ROBOTC, which is the programming language that my FTC robotics team uses. Also, I am teaching/mentoring/moderating our robotics class in the fall. As a middle school with a programming class, I thought my students would be better served by teaching them robotC but also I thought it would be great to have them also prepped for the team if they are interested in becoming part of the team.
Above is a collage showing the ROBOTC graphical interface, some “regular” ROBOTC, and a Tetrix bot.
Again, it was a really great workshop and I learned a lot! It is crazy. I have been teaching Scratch and this summer I introduced kids to Python and some basic programming in Arduino and I was struggling with explaining variables and functions. I got the basics but I had a hard time explaining it because I do not have a Comp Sci background but this time, I totally understood how variables and functions operating within a programming language. Tim Friez, our instructor, was really amazing and his style of teaching was perfect. I think, that his style is what a lot of teachers are starting to go for – in the parlance of our field – student-driven/centered.
We also had a teacher, who works on curriculum development at the center, come in and give us tips and hints about teaching robotics. It was practical advice and just giving us tips on what to be aware of. Also, in order to have a class, there is a fair amount of start-up costs.
What you need:
- The Robot kits (you might want different types)
- Fields (for kids to do their challenges on)
- license for the programming language
- license for the curriculum
- remote controls
- wifi/bluetooth adapters
- challenge elements (blocks, balls, cut pvc pipes, folders or books for walls
- colored electrical tape
- expansion kits if you have advanced students (which you will probably have)
I also met some really amazing people and it was great hearing what their challenges are and how they dealt with them. Most of us were just “regular teachers” which also made the prospect of having a robotics class less daunting.
I am again super excited about it but I also realize that I need to recharge. I am taking the next few weeks to do that before orientation week. I worked all of June and July. I do not want to go back feeling like I did not have this time to process all that I did this summer and last year.
If anyone is thinking about teaching robotics, I would highly highly recommend the CMU Robotics Academy. They offer online and campus workshops in the summer. They are going to have webinar soon about EV3 and ROBOTC.
Follow them on Twitter @ROBOTC or subscribe to their blog
Thank you, Anna for the great blog post! To read more from here blog, visit her at (link temporarily unavailable)!
Programming your robot to make precise turns can be a source of frustration for some students as they begin to learn ROBOTC. Oftentimes, when students are just learning programming, all of the movements of their robots are based on timing. When programming a robot to move forward or backwards, a small error or a small amount of inconsistency can usually be overcome. With turning, however, inconsistencies and small errors can lead to larger errors and the frustration I mentioned earlier.
At this point, students learn that sensors can be used to improve the movement of their robots. With the VEX IQ, a Gyro Sensor is provided that eliminates any guesswork when it comes to programming your robot to turn.
The Gyro Sensor measures the rotational angle of the robot. If you look at the Gyro Sensor, you will see an arrow that points in a counter-clockwise direction. That is the default positive direction. Therefore, as long as the sensor is mounted flat on the robot it picks up the parallel angle to the ground. The sensor then registers the current position as a zero point. If the robot turns counter-clockwise, it registers as a positive value. If it turns clockwise, the sensor registers a negative value. We can see this applied with the following illustration:
We can program the Gyro Sensor using Natural Language or full ROBOTC. To use Natural Language, you just need to make sure that the Gyro Sensor is plugged into port 4. Let’s take a look at some ways to program the Gyro Sensor with Natural Language.
With this program, getGyroDegrees returns the current rotational value of the sensor in units of degrees. When making gyro-based turns, it is best to reset the gyro sensor before each turn, so the resetGyro command is utilized. With the example, we want the robot to turn until the getGyroDegrees command returns a value (from the Gyro Sensor) of 90 degrees. Therefore, we use the repeatUntil command. When we run this program, our robot should make a 90 degree left turn. Note that the robot may turn more than 90 degrees due to drift, which is caused by momentum. If this occurs, just slow down the speed of the motors. That should eliminate the drift.
We can apply the same commands to program our robot to make a right turn.
What I did when first showing the students the Gyro Sensor was to have them see the sensor work with the debugger screen. I used a sample program utilizing full ROBOTC with this activity. The sample program we used was in the Gyro Sensor Folder, and it is called Gyro Display Values. The students compiled and downloaded the program. They kept the USB cables plugged into their robots so they could see the values of the Gyro Sensor on the debugger screen. To access the debugger windows, go to the Robot menu, click on Debugger Windows, and then select Sensors.
The students can now run their program, physically move their robot, and see how the values of the Gyro Sensor change via the debugger screen.
The VEX IQ Gyro Sensor is extremely useful and easy to program, and the students have a lot of fun using this sensor.
– Jason McKenna
Whether they are in elementary school, middle school, or high school, students really enjoy programming their robots with remote controls. Luckily, the VEX IQ wireless controller allows you to do just that. ROBOTC allows you to create your own remote control programs to customize each joystick axis and button controls. Moreover, you can use both Natural Language and full ROBOTC with the remote controls.
Both the VEX IQ brain and the remote control require a radio controller for communication. The radio controller has to be in each in order to use the remote control. Additionally, a battery needs to be placed into the remote control for the wireless communication. Just like the battery for the VEX IQ brain, the battery for the remote control is rechargeable.
In order for the VEX IQ brain and the controller to communicate, they must be paired together. With both devices turned off, connect the two devices together with the tether cable that is included with the VEX IQ Starter Kit with Controller. The tether cable is just a standard Ethernet cable. Turn on the VEX IQ brain by pressing the check button. The controller will automatically link and pair with the VEX IQ brain.
Once your connection has been established, the green light will blink on both the remote control and the VEX IQ brain. You will not have to link the tether cable with the remote control the next time you turn on the VEX IQ brain or the remote control. In the classroom, you can assign each robot to a remote control by giving each a number. That way, you never have to link the remote control with the VEX IQ brain. Or, you can just have the students do a quick set up at the beginning of class. Either way will work.
ROBOTC can access all of the data from the VEX IQ remote control by referencing the button and axes by their described names. Joystick buttons return values of..
• 1 – Pressed
• 0 – Not Pressed/Released
Joystick Axis return values of…
• -100 to +100 (0 when centered)
When using the VEX IQ remote control, make sure you switch to your “Controller Mode” to Tele-Op.
Alright, now you can begin programming (either in Natural Language or full ROBOTC) and have some fun.
As teachers, we all know to expect the unexpected. I recently had the students on a Friday, with a long weekend in front of them. Therefore, I did not want to start a new concept, for I would have to re-teach it after the long weekend. So, I decided to set up a quick in-class competition with the VEX IQ Challenge Field and some Bucky Balls and rings.
I allowed the students to make up the parameters for the game, gave them some time to devise some strategy, downloaded some sample programs to run the remote controls, and let the fun begin. The students had a great time and the activity will serve as a springboard for future investigation into how to customize the remote control programs.
– Jason McKenna
In the previous entry, I shared some of the features of the VEX IQ robots. Also discussed were some ideas on how to get a classroom organized. Now that we have those things established, we can move on to a discussion of how to begin programming the VEX IQ robots.
ROBOTC for VEX IQ has Natural Language commands that will help beginning programmers of the VEX IQ by supplying a set of commands that use “natural” words. For example, the “forward” command will make your robot move forwards for a specified amount of time or distance. The robot will come to a stop after the movement. Here are some examples of the command:
Move the robot forward for 2.5 rotations:
Move the robot forward to 180 degrees:
• forward(180, degrees);
Move the robot forward for 1.5 rotations at 30% speed:
• forward(1.5, rotations, 30);
Move the robot forward for 10 seconds:
• forward(10, seconds);
• forward(10000, milliseconds);
Natural Language also contains other helpful commands; such as, “backward”, “turnLeft”, “turnRight”, and “repeat”. Below is an example of a Natural Language sample program that is located within the Natural Language sample program folder in ROBOTC:
VEX IQ Natural Language – Port Names and Numbers
leftMotor – Port #1
rightMotor – Port #6
armMotor – Port #10
clawMotor – Port #11
touchLEDSensor – Port #3
gyroSensor – Port #4
distanceSensor – Port #7
bumperSensor – Port #8
colorSensor – Port #9
//Configure the Natural Language to use the VEX IQ Clawbot
//Move the robot forward for 1.5 rotations (rotations are the default unit) at 50% speed (default speed)
//Turn the robot right for 1.25 rotations at 50% speed (default speed)
//Move the robot backwards for 720 degrees at 25% speed.
backward(720, degrees, 25);
//Turn the robot left for 2.5 rotations at 50% speed (default speed)
As you can see, there are a couple things that we have to do in order to use the Natural Language functionality. To enable Natural Language, go to “Robot Menu -> Platform Type -> Natural Language”.
The easiest way to get started programming is to open a sample program or to use a template. To open a sample program in ROBOTC, go to File Menu -> Open Sample Program.
To use a Natural Language template in ROBOTC, go to File Menu -> New… -> Natural Language Template.
To make programming easier, Natural Language makes assumptions about the type of robot you are using. To configure your Natural Language program to use our VEX IQ Clawbot, use the following line of code:
More robot models will be supported in future releases.
Finally, you will notice in the sample program that port names and numbers are given specific names and ports. Make sure that your VEX IQ Clawbot’s motors and sensors are configured this way in order to work with the Natural Language commands.
Ok. We are ready to go with programming! What should we do? My suggestion would be to start with the Labyrinth Challenge.
The Labyrinth challenge gives the students an opportunity to engage with the VEX IQ robots and ROBOTC. The students are immediately engaged because they can see and test their robot’s movement as it makes its way through the course. Since this may be the first program that some students write, there are a couple of things worth remembering. First, makes sure the students create a flowchart before they begin programming. For more information on flowcharts, you can look here: VEX Teacher – Engineering.
Second, it is important that the students describe what is going on in their programs with comments. For more information on how to utilize comments, please see here: http://www.robotc.net/vex_full/reference/hp_comment.pdf
Now you are ready to go! Good luck and have fun! Remember, if you have any questions as you are working, please visit the ROBOTC forums.
– Jason McKenna
The VEX IQ robot is a great, new option for middle and high school robotics teachers. With anything new in the classroom, it’s important to have some ideas on how to best implement the new tools in the classroom.
There are some features of the VEX IQ system that teachers will notice initially. The VEX IQ brain has 12 identical ports. This means that any device (either a sensor or a motor) can be plugged into one of the ports. Also, the VEX IQ motors are smart motors; therefore, the motors can hold a position and resist external movements. Some of the sensors for the VEX IQ include a Bumper sensor, a Touch LED sensor, a Gyro Sensor, a Color sensor, and a Sonar sensor. One nice asset of the motors and sensors is the fact that they each have their own upgradeable firmware. As a result, if new features are added, the firmware for the device can be upgraded, as opposed to buying a new sensor and/or motor.
With the VEX IQ Starter Kit, there are over 850 structural and motion components. That many parts allow teachers and students lots of flexibility when it comes to building a robot. But, that’s only if they can find the parts they need. One of the first things that teachers need to do is get their kits organized. The Starter Kit comes with a storage bin and tray that help, but the amount of parts means that different pieces will need to be stored together in the storage bin. If the students know what pieces are located in each section of the storage bin, it will make the building process much easier.
The base robot for the VEX IQ is the Clawbot. The Clawbot include a gripper and a lifter arm. These features immediately grab the attention of most students; they love the idea of being able to lift and grab an object. For teachers, it is a good idea to build the Clawbot before allowing the students the opportunity to do the same. This gives teachers an idea of what problems the students may have as they begin building, and it also allows the teachers to help those students that run into problems. You can’t start anything until all the students have their robot built. Having some groups finish their robot, while other groups lag behind can be an issue. Building a robot first, puts the teacher in the best position to get everyone started off on the right foot.
When it comes time to start building, students can work on different parts of the VEX IQ Clawbot. You can divide the Clawbot into these sections: the Base, the Claw, the Tower, and the Ball Holder. One suggestion to organize a class would be to have two students work on the Base, while one student each works on the Claw, the Tower and the Ball Holder. Or, you could have one student work on each section. It’s important to note that however the class is organized for the building of the Clawbot, there should be a uniform way that the students attach the motors and sensors.
The battery for the VEX IQ robot brain comes charged, so a teacher does not need to worry about doing that preliminarily. So, once the Clawbot is built, the next thing that needs to be done is install the ROBOTC firmware and update the VEX IQ brain, motors, and any sensors that may be on the robot. Click here for directions on how to install the ROBOTC Firmware.
To update the VEX IQ brain, motors, and sensors, the VEX IQ Firmware Update Utility needs to be downloaded to your computer. The Firmware Update Utility and directions on how to utilize it can be found here.
With the next installment, we will take a look at how to set up your first programming lesson. In the meantime, teachers can take advantage of a few readily available resources at Carnegie Mellon’s Robotics Academy VEX Teacher Site and the ROBOTC Wiki to help with questions concerning programming the VEX IQ with ROBOTC.
The ROBOTC Curriculum contains quizzes to help assess what students have learned, or for that matter, what they haven’t learned. However, as we discussed in a previous blog post, one of the great things about teaching ROBOTC is the ability to differentiate instruction to your students. This can present some issues when it comes to assessment. If a student is progressing quickly through the curriculum, he/she cannot have more assessments than another student. Students all have to be assessed equally. This then begs the question of how you can have the students move through the curriculum at different rates while still assessing them equally.
One of the ways I’ve been able to address this is through the use of rubrics, like the one below:
The programmer uses Pseudocode within the comments to display a logical plan to solve the Mission.
Unsatisfactory – No Pseudocode included.
Satisfactory – Pseudocode is included but it does not display a logical plan to solve the mission.
Good – Pseudocode is included and it displays some logical thinking and something of a plan to solve the mission.
Exemplary – Pseudocode displays a logical plan to solve the mission. The plan is well thought out and clear.
The programmer is able to solve the Mission efficiently and repeatedly.
Unsatisfactory – Less than 70% of the mission is completed.
Satisfactory – Between 70 and 80% of the mission is completed.
Good – Between 80-90% of the mission is completed.
Exemplary – All of the mission is completed, and is able to be completed repeatedly.
Unsatisfactory – Code is hard to read and understand.
Satisfactory – Code is readable but is difficult to understand completely.
Good – Code is readable and understandable, but unclear is certain places.
Exemplary – The code is tabbed well and takes good advantage of white space in order to make it very easy to read.
Unsatisfactory – No Comments included.
Satisfactory – Basic Comments are included but some important parts of the code are not explained.
Good – All of the code is commented but explanations could be more complete.
Exemplary – All of the code is commented and the comments are thorough and comprehensive.
The nice thing about this rubric is that the student does not have to complete the programming challenge in order to be assessed. Just like in any other class, students might not learn a concept to mastery on its initial presentation. You never want a student to reach their frustration level, so this gives the teacher an opportunity to clear up misconceptions while still assessing the student.
Another thing that a teacher can do is utilize Exit Slips. Once again, if students are working at different instructional paces, then the Exit Slips can general. You can ask questions like, “What part(s) of the programming challenge were you able to finish today?” This type of metacognition is valuable for students as they complete projects that last several days. Or, the exit slip can be a review of previously learned concepts. Either way, Exit Slips can play an important role in both teaching and assessing.
Fortunately for teachers, robotc.net contains a wealth of information for extension activities. The ROBOTC blog contains a section entitled “Cool ROBOTC Projects.” Here, there is a wealth of ideas that teachers can look at in order to create an interesting activity.
Moreover, the ROBOTC forum contains a section dedicated to projects. This can also be researched in order to find ideas or interesting projects for your class. Also, the forum can be used to ask questions as you begin to plan and implement a project. Here, you really get the best of both worlds: A wealth of ideas and choose from and a dedicated community willing to help you with those ideas.
Have a great school year!
So your class has gone through the ROBOTC Video Trainer Curriculum (VEX or LEGO), are comfortable programming in ROBOTC, and the robots are starting to zip across the room: however, some students are absorbing the programming knowledge quickly, while others are taking a little longer to grasp the core concepts. Where should a teacher look to if a student (or classroom) advances beyond the pace of the class? In this post, we will take a look at some of the many advanced programming resources available for ROBOTC.
Because ROBOTC is a C-based programming language, there are many C programming features that students can lean about and implement in their code. The first resource to investigate is the ‘Programming Tips and Tricks’ section of the ROBOTC wiki. This special subsection contains samples of some of the more advanced C-based operations that can be executed using ROBOTC and are pulled from a variety of sources. Topics include structs, switch statements, tertiary operators, and more. Because all of the information is available for free online, students can research and test the topics at their own pace and gain a deeper understanding of the subjects.
Next, you may want to take a look at tutorials on the ROBOTC wiki for implementing advanced programming concepts with different sensors. Also be sure to check out ROBOTC’s Sample Programs (via the ‘File -> Open Sample Programs’) as many of the programming concepts have pieces of advanced code that can help the students understand exactly how they are applied in real-world scenarios. There are also several multi-robot projects (for the NXT) that can be found on ROBOTC’s Multi-Robot wiki and a thread dedicated to advanced ROBOTC programming with VEX which will both offer unique challenges for students to conquer, as well as a wealth of community created projects showcased on the ‘Projects Discussion‘ section of the ROBOTC forums.
Once the students have sufficiently expanded their knowledge of advanced ROBOTC programming, they will be ready to tackle more complex robotics projects. This is a perfect opportunity to encourage creativity and inventiveness with preexisting challenges (and is a perfect example of where differentiated instructions can positively impact a classroom). By utilizing differentiated instruction in the classroom, you will be able to not only challenge the newer programmers with the basic programming examples, but will also be able to engage the more advanced students with complex programming options, such as making their robots perform a challenge quicker, more efficiently, or more accurately (or a mix of all three).
– John Watson