Archive for the ‘VEX’ Category

ROBOTC for VEX Robotics 4.53 preview is out and it sports a myriad of awesome new features that we’re very excited about! A full list of changes and improvements appear below, but here are the highlights:

Create Graphs from your Datalogs

Want to know what running your robot into a wall looks like to your accelerometer? Curious about how ambient light intensity varies throughout the day? Datalogging now supports (live) plotting of incoming data gathered on the robot brain. Science experiments involving sensor and motor data can be displayed. You can easily find out by gathering the data and having ROBOTC plot the data for you, as it comes in.

Datalogging is no longer restricted to just Full ROBOTC, we’ve added easy to use blocks that allow you to access the same functionality in a simple manner.

Additionally, logged data can even be exported for further analysis in a spreadsheet application of your choice.

ROBOTC Graphical Variable Support

You can now use variables in ROBOTC Graphical, as well as perform various operations on them. You can add, subtract, divide, multiple, whatever your program requires. You can use variables in loops, motor blocks, you name it!

ROBOTC Graphical Break and Continue

We’ve added two new program flow blocks, break and continue. This was a much requested feature from our more advanced users of ROBOTC Graphical. You can now create more complex programs without creating work-arounds or having to switch to ROBOTC Full.

Beta Channel Access

Want to have a front row seat when it comes to upcoming features in ROBOTC? Subscribe to the beta channel through ROBOTC’s preference menu and you will be notified when a preview build (such as this one), is released. Try out new and exciting features before we release them to the general public and provide us with feedback. Help make ROBOTC better!

Other changes and bug fixes

New features – VEX

You can control an LED on the VEX EDR from Graphical and Natural Language using the new setLED block or command.

Changes and Improvements – General

The default colors in the Assembly window (F9) have new defaults for increased readability.

Function tooltips have been revised and corrected where applicable.

License error messages have been improved. A short explanation of the error codes is now provided.

#info has been added to the list of support #pragma statements, such as #error and #warn

The start and stop buttons on the datalogging control have been merged into a single button.

Deleting a file from the File Utility was not possible, this has been fixed.

We’ve made some visual changes to ROBOTC Graphical including new colours for enhanced readability.

Internal improvements to the datalogging system have been made that resolve possible data corruption and inability to disable polling for a specific data series.

Saving a New User Model in the Motors and Sensor Setup has been fixed.

Various float conversion related issues have been fixed.

NaN (Not a Number) detection has been fixed.

Sscanf with more than 7 arguments could crash the VM, this has been fixed.

Overloaded deprecated function no longer cause warnings.

A discrepancy between the compiler and VM regarding the maximum number of tasks has been fixed.

An issue with ROBOTC crashing due to a recursive macro has been addressed.

The RVW package manager now shows the correct informational icon.

Opening the RVW package manager no longer causes an exception under certain circumstances.

An issue with the debugStream window background refresh causing a hang when communications with the robot was lost, has been remedied.

The Program Debug window no longer crops the status line.

You can now use displayInverseString() in combination with a char *.

drawInvertRect and drawInvertEllipse were not deprecated correctly, this has been fixed.

Changes and Improvements – VEX

The VexIQ LCD screen has been added to the #debuggerWindows #pragma.

A bug in the macro parser prevented the use of the VEX EDR platform when a PLTW license was active. This has been fixed.

An issue with debugging and using sscanf on the VEX IQ has been addressed.

VEX IQ getGyroRate and getGyroRateFloat return incorrect values, this has been fixed.

Starting a new task on the VEX EDR no longer clears the screen.

Using drawTextCenteredInUserScreenArea function will no longer throw an exception on the VEX IQ.

An issue with the start of flash file system not showing correctly in communication debug message has been fixed.

In early 2015, our partner, Reeduca, started the ROBOTC and Robot Virtual Worlds (RVW) Software Programming Contest for both public and private school students in Mexico. Reeduca started the contest as a way to introduce students, teachers, parents, and educators to computer science and its benefits.

In order to reach the ROBOTC and RVW National Championship, students had to qualify through pre-national tournaments in each zone of Mexico. The best programmers were selected to move onto the National Championship.

Check out this video to see programmers in action at Mexico’s ROBOTC and Robot Virtual Worlds National Championship!

We are excited to say we have our winners in our Robot Virtual Worlds VEX Challenge! However, we are waiting for final validation from teams. If you participated in the challenge, please check your email as soon as possible so we can lock down your spot to VEX Worlds. We look forward to announcing the winners soon!

Damien Kee, a VEX IQ and EV3 Super User, has created another cool project! This time he used one of his kids toys, the Tumble Bug Ball Drop, to test out how often the ball comes out of the left foot / right foot with a 50% probability. Damien says, “My boys got this toy for Christmas one year and I thought I’d put together a little device to check the probability of how it works. I used Ultrasonic Sensors with the EV3 and Colour Sensors (Proximity mode) with the IQ to keep track every time a ball went through the toy…. This would make a great experiment to run in class, not just with the Tumble Bug but all different types of kids toys.” We couldn’t agree more!

Damien used the VEX IQ and LEGO EV3 programmed in ROBOTC to run his tests. The programs figure out the percentage and display them on screen. Here is a full breakdown video of how the project was done …

Not only does this project allow for the practice of programming, but it gives the opportunity to assess variables when determining the results. Damien says: ”

What I love about doing these sort of extended investigations in class, is that rather than being a final conclusion, this now opens up a huge range of other questions and scenarios that you can test.

The competition kicked off a few months ago, and we have NEW HIGH SCORES to share with you …

As some of you may know, we along with VEX Robotics and the REC Foundationhave an exciting competition going on right now with the VEX and VEX IQ Programming Skills Challenges for Robot Virtual Worlds. This competition offers a low cost, high quality virtual competitions that enable students to test their problem solving and programming skills in the VEX Nothing But Net and VEX IQ Bank Shot Robot Virtual World Competitions. And, not only do these virtual competitions provide a great learning experience, the winner of each competition will receive an invitation to the VEX World Championship — April 20-23, 2016 at the Kentucky Expo Center in Louisville, Kentucky!

You still have one more week to compete and try to beat these high scores for a chance to qualify for VEX Worlds! Think you can do it? Learn more here robotc.net/recfand visit www.cs2n.org/competitions to sign up!

Important Deadlines:

Submissions for both contests are due by March 1, 2016.

Winners will be announced on March 11, 2016!

And remember, you must submit both your score and code through CS2N.org to officially register for the competition.

As some of you may know, we along with VEX Robotics and the REC Foundationhave an exciting competition going on right now with the VEX and VEX IQ Programming Skills Challenges for Robot Virtual Worlds. This competition offers a low cost, high quality virtual competitions that enable students to test their problem solving and programming skills in the VEX Nothing But Net and VEX IQ Bank Shot Robot Virtual World Competitions. And, not only do these virtual competitions provide a great learning experience, the winner of each competition will receive an invitation to the VEX World Championship — April 20-23, 2016 at the Kentucky Expo Center in Louisville, Kentucky!

The competition kicked off a few months ago, and it is time to share our latest high scores …

You still have one more month to compete and try to beat these high scores for a chance to qualify for VEX Worlds! Think you can do it? Learn more here robotc.net/recfand visit www.cs2n.org/competitions to sign up!

Important Deadlines:

Submissions for both contests are due by March 1, 2016.

Winners will be announced on March 11, 2016!

And remember, you must submit both your score and code through CS2N.org to officially register for the competition.

For the 2014-2015 VEX Robotics game, Skyrise, Team 8086A, Team Semiconductors, built a very unique robot, a dual-bot. This robot’s unique design included many advantages, most significantly the ability to multitask. However, along with the advantages came many challenges. The team worked hard all year to conquer the challenges and the assistance of ROBOTC in many of these challenges was invaluable.

Team Semiconductors

Team Semiconductor is a group of friends in Glen Allen, Virginia. This independent team has its roots in two middle school VEX World Championship competitive robotics teams, Team Theodore (6740C) and Team Dave (6740D). Several students from the two teams and their school’s Technology Student Association (TSA) who were moving on to high school and wanted to compete in VEX Robotics banded together to create a new team, Team Semiconductors. Midway through the 2014-2015 season (Skyrise), the team revealed their one-of-a-kind design: Arty the Dual-Bot.

Skyrise

Skyrise was the 2014-2015 Vex robotics game. The goal of Skyrise was to build a skyrise (a yellow pylon, built piece by piece). 4 points were awarded each section built, and putting cubes (hollow cubes, 8 inches wide) on the skyrise were worth another 4 points each. Then, you could put the cubes on varying height poles for 2 points, and if you had the top cube on the post, you scored 1 extra point. This was the tallest game vex had ever made. The highest item was the robot built skyrise which at max was about 60 inches tall.

Arty: The Dual-Bot

Arty is a very unique robot designed to compete in Skyrise: a dual-bot. Arty consisted of two parts each performing specialized tasks simultaneously: an immovable tower that is dedicated to building a skyrise, and a rover, whose task is to move around the field placing cubes on poles and on the skyrise. These two pieces have a connector running between the two holding the wiring, and they also give the robot its name, “Arty” (RT for Rover/Tower).

Team Semiconductors had multiple reasons for using a dual-bot. The most important reason was the ability to multi-task, which allowed for higher scoring and the ability to still compete if our alliance partner is a no-show. This bot was made possible due to the high scoring potential in the starting area, with scoring skyrises. We noticed that many robots that would do skyrises wouldn’t even leave the starting square for the first minute, while stacking skyrises. We thought it would be best to have a stationary robot in there to score those while another part of our robot was doing something else. One of the biggest advantages of the stationary tower was its precision; instead of relying on time to move the skyrise, we could use potentiometers to measure the position of our claw, and drop the pylon once it lined up.

Arty can score high by itself in matches, up to 58 points on its own without autonomous bonus, allowing it to be able to carry most matches, regardless of alliance partner. It also has high skills scores, with the second highest Driver Skills and Programming Skills scores in Virginia, with 43 and 27 points, respectively.

Why ROBOTC

Two main factors came into play for us choosing ROBOTC to program Arty: it’s easy to learn and it has the ability to use tasks. The first factor was essential, as our team had no previous experience in ROBOTC. The only previous experience with programming robots our team had came from using block code. The transition to using a text-based language, especially one we had almost no base in was worrying, and lead to questions about our ability to learn the language in-time to program the robot. Our lead programmer had experience in programming languages, but no experience in C-based languages, meaning there was a lot of learning involved in the first few weeks of programming. However, after those few weeks, we felt confident in our abilities with the program, and were able to create the complex programs used in Arty with almost no syntax trouble.

The second factor was specific mainly to Arty, but still very important. Due to Arty being a dual-bot, we needed a way to run programs for the rover and the tower at the same time. This was allowed by tasks, which can run side by side with each other, unlike functions, which run one after the other. These tasks allowed us to run the rover and tower side by side, but also allowed for smaller additions to increase efficiency.

How ROBOTC was Used

As mentioned above, one of the key elements of our programming of “Arty” was the use of tasks for the control of both rover and tower. We used separate tasks in both driving and autonomous functions. We also used tasks to increase efficiency in our programs. For example, we used tasks to turn the tower arm and raise the tower simultaneously instead of one after the other to save time. One problem we came up against with tasks was the inability to pass inputs into the tasks. To get around this we created functions that modified global variables and then called the tasks, and used those global variables for things that would’ve needed to be input into the task.

One of the most interesting things we did in the rover’s drive tasks was creating a turret-centric drive. The turret on rover that could swing 360 degrees was always facing forward on the robot. Since we had an X-drive, any direction could be the front of the robot; it was all in how we programmed the wheels. One of the biggest problems rover had was its inability to turn without getting tangled in the connector. We put a turret on the top of the robot to prevent us from having to turn, but this made driving awkward. The solution to this: a turret-centric drive. We measured the location of the turret with a quad encoder and adjusted the values in Robot C according to which way the turret was facing. This made it so that whenever we hit up on the joystick the rover always drove in the direction its turret was facing, making it much easier to drive, since it now had a distinct “front”.

In programming our tower, we found that we were always doing the same thing, but we were just changing times for movement, and target locations to account for swing. To save time and space in our program we used a for loop that looped for however many skyrises we were going to build. At the start of the loop we had a switch statement to assign all the values based on which piece we were stacking. We then had our previous generic code that we had been writing out inserted, with variables instead of numbers being used. This saved a lot of time in programming, as all values that needed to be adjusted were easily found in one place.

Due to the way the tower was built, sometimes our arm would get caught on something, and not finish the turn. To get around this our turn function had a self-check built in. At the start of the task, we would calculate approximately how long it should take for our arm to reach its position. At the end of the time period, we would then check to make sure we were in position. If we were not, we’d raise our arm and then try to turn again. This process would repeat for 3 times at most. If it reached its location, it would then lower the arm the same amount it raised it and continue the program. If it never reached its location it would set a variable to false, and then the program would stop, to avoid wasting scoring objects by dropping them.

ROBOTC helped the team maximize our unique robot design and Team Semiconductors went on to win the 2015 World Championship Science Division Create Award with Arty the dual-bot. You can learn more about Team Semiconductors and follow us on social media at http://www.VEXTeam8086.org.

– Team Semiconductors

———————————————————–

Test Your Skills with our Virtual Competitions!

If you’re looking for a cost-effective and fun way to participate in a robotics competition, check out or low cost, high quality virtual competitions that enable students to test their problem solving and programming skills.

Our VEX Nothing But Net and VEX IQ Bank Shot Robot Virtual World Competitions both simulate the single-player Robot Skills and Programming Skills modes of the physical Nothing But Net and Bank Shot competitions. And, the winners of the Robomatter sponsored VEX Nothing But Net and VEX IQ Bank Shot Robot Virtual World competition will receive an invitation to the VEX World Championship April 20-23, 2016 at the Kentucky Expo Center in Louisville Kentucky! To learn more, check out this blog post.

Do you have a cool ROBOTC project you want to share with the world? If so, send us an email at socialmedia@robomatter.com and we’ll post it on our blog and social media pages!

The ROBOTC Development Team is very happy to announce the official release of ROBOTC 4.52. This update is for the VEX Robotics (VEX EDR CORTEX and VEX IQ) physical and virtual robotics systems and includes new features, improvements, and a load of bug fixes.

Download the “VEXnet Key 2.0 Firmware Upgrade Utility” and insert your VEXnet 2.0 key to any free USB port on your computer. Follow the instructions on the utility to update each key individually. All VEXnet 2.0 keys must be running the same version in order to function properly.

After updating your VEXnet 2.0 keys, you will need to update your VEX Cortex and VEX Game Controllers with Master Firmware Version 4.25 from inside of ROBOTC.

After updating the master firmware, you will also have to update the VEX Cortex with the latest ROBOTC firmware.

ROBOTC 4.50 —> 4.51 —> 4.52 Change Log:

New Features and Improvements:

Added support for simple mathematical expressions in numerical text boxes in Graphical.

Datalogging has been added for the VEX IQ platform.

Users can now log data from inside your program, with or without a timestamp.

Users can also configure motor, sensor and other values to be automatically polled at intervals as low as 10ms.

Users can view data in ROBOTC as it polled in and save to a .CSV file for additional analysis in a popular spreadsheet software.

You can use standard keyboard shortcuts to Select All, Copy, Cut and Paste in the Debugstream Window.

Natural Language Library Files have been enhanced for improved readability.

“Port with no Motor” has been added as an option for graphical blocks that use multiple motors – this will allow you to unselect a specific motor.

Graphical Copy and Paste has been improved to work better with comment blocks.

A flag (-SUPPRESS ) has been added to allow suppression of command line activation errors.

When compiling multiple files at once, the IDE will remain more responsive to user interaction.

A setMotorBrakeMode block has been added to Graphical, allowing motors to be set to either “float” or “brake”. This will allow motors to be setup as “free running”. This command can be found in “Expert” and above menu levels.

Additional programming samples have been added

User I2C commands for the Cortex has been implemented.

Users can now use custom I2C sensors within their programs – custom I2C commands are compatible with using the VEX Integrated Motor Encoders.

The list of loggable properties has been greatly trimmed down and sorted according to menu level. Static and irrelevant properties have been removed where appropriate.

Tetris is a beloved and well-known classic game that many of us have been addicted to at one point or another. We wait patiently for that perfect “Tetrimino” that will create a horizontal line so the board continues to move down so the game keeps going. Well, our latest Cool Project does just that, but on a VEX IQ brain and programmed in ROBOTC!

Petr Nejedly created the game as an experiment to see what could be done with the VEX IQ platform outside of robotics. He says, “I have coded it ad-hoc in one night. The code is pretty … short, not really pretty. 233 lines including (rare) comments.” When we spoke through email he mentioned that game is currently not random at all. “So, my son came to me, that he has an improvement to the program. That I should use this random() function, it will be more fun to play … Teachable moment! We have discussed, how a computer, a very exact instrument that always follows the same instructions and in fact only moves numbers here and there, come up with random numbers. What is a PRNG and how you have to seed it (srand()), what are real sources of randomness and what kind of issues such a lack of true randomness could cause in real world, besides lack of fun.” At this point, Petr said he would like to leave the actual fix to the curious readers/programmers out there to see what they can do with it. (Let us know if you do!)

Access to this year’s the ITEEA Conference at the National Harbor in Washington, D.C.

The courses that we are offering are Certification Courses. They will consist of two trainings sessions at the conference and four online classes after the conference. The online classes are offered once per week, are recorded, provide you with 24/7 access, and include forums that are enable you to get you questions answered on your schedule. There are two courses being offered, ROBOTC for LEGO training and ROBOTC for VEX training.

Each course will consist of:

Two (2) three-hour, on-site sessions at the ITEEA National Harbor conference

Four (4) additional online evening training sessions following the conference (or you could attend a summer online course)