What are people programming VEXIQ with?

So I generally use RobotC until I had to use the Smart Radio which is not available yet

ModKit seems nice (website) but I wish it had copy and paste.

If you buy a licence, is the desktop version much better?

What else do people use?

Simon,

All of our 6210_ MS & Elem VexIQ teams use ModKit. The free website version allows any of our interested students to work with it at home (very useful). As far as I can tell; the desktop version is exactly the same as the web version, my students have used both and they look and work the same. There are some quirks that are able to be worked around, but in conversations I have had with RobotC users, there are similar quirks in it too. The lack of copy and paste makes for some extra time wasted, and (at least on a Mac) the shortcut for window minimize is right arrow, so when you are in a text entry box and try to move to the right the window will minimize, (very annoying).

Paul

Last year my teams started out using Flowol then switched to RobotC. This year our default language will be Modkit. Over the summer I did a detailed comparison of all the Vex IQ programming options. I planned on doing a write up of my testing and results, but haven’t got around to it. Here’s a summary:

  • **RobotC** - Still the best option for experienced programmers. Don't overlook the Natural Language commands. Difficult to teach to someone with no programming experience.
  • **ModKit **- Scratch like graphical UI. Best way to get started if no programming experience. The graphical drivetrain and controller features make it easy to program robot movement in autonomous and driver control. No debugging or tracing options. You can go a long way with Modkit but at some point you will grow out of it.
  • **Blockly/Python** - Scratch like graphical UI or text. This is the newest option and I'm excited to see where they take it. You can write your programs in graphical mode and look at the Python code that was generated. It should be easier to graduate to the text based Python option after you get the hang of the graphical mode. Much deeper feature set than any of the other graphical options. Good tracing options, but no breakpoints. Still rough around the edges. Can only have one program on the brain at a time.
  • **Flowol **- Graphical flowcharting language. Good option for getting started if no programming experience, but you will grow out of it quickly. Not a good option for driver control programs. No drivetrain features like ModKit.
  • **RobotC Graphical **- Scratch like UI, very limited functionality (no variables), but it works. No way to convert graphical code into regular C.
  • **EasyC** - Graphical flowcharting language, that sort of generates C code. It works, but I could write a long list of reasons for not using it.
All of these packages have their own quirks and bugs. Downloading to the brain via USB is error prone in all languages, Mac or Windows it doesn't make a difference.

ModKit has come a long way since I first tried it a couple years ago. The main reason we didn’t use it before was because there was no desktop version, and I didn’t want to get stuck at a competition with no Internet connection.

ModKit and Flowol are the only options that provide full support for Mac users. The online version of Blockly/Python works on Macs, but not the desktop version (yet).

In terms of support RobotC and Blockly/Python both have their own user forums, Modkit and Flowol have email support, and all responded to my questions within 24 hours. RobotC has a ton of support from the user community, and Modkit is starting to get a good following. I had an issue installing the EasyC trial version and had to go through many steps to open a support ticket. The 15 day trial license started even though the install wasn’t complete. A week later someone finally followed up by asking me for my license key (which I didn’t have because it was a trial! And I said that in the support ticket too!), but by then I had already resolved the issue myself.

ModKit and Blockly/Python have a free fully functional online version, but you have to purchase the desktop version. You want to get the desktop version before going to a competition where Internet connectivity can be a problem.

RobotC, Flowol, and EasyC have 15 day trial versions.

The pricing on all these products is comparable for the first year (about $50 per computer), with EasyC being on the high end. RobotC is a one year license with an option for a more expensive perpetual license. They all have licence bundles to bring down the per person price.

Well, I guess that’s more than a short summary…

Jerry

Our Elementary teams are using RobotC and have consistently won the programming challenges in this region. My reasoning for using this option and not others is that the Middle School/High School Vex and High School FRC all use it. The kids really didn’t have a hard time figuring out the basics of autonomous control and now have skills that will last them a long time.

I’m hoping to buy a couple of VexIQ super kits for my classroom. Is there a supplied programming IDE/language that comes with a kit, or do I have to purchase one of the languages mentioned in this thread? I was planning on getting RobotC but I’ll have to adjust my budget. I’m not sure if we will have enough money for 2 kits and 2 software seats.

thanks

Actually, the RobotC graphical has a convert to text option (View->Convert Graphical File to Text). My team liked to start graphical, stay there as long as practical, then export to text and work with that later - saves a lot of typing and typos. And they can easily copy/paste snippets prepared this way for further typo elimination.
Yes, RobotC comes with a price tag. Last year, we bought the 6-seat Vex+Virtual Words 1-year license ($300) so it was $50 per kid and they could keep practising home and over the summer with VirtualWorlds.
ModKit, as mentioned here, is free when used online. I’d like to present it as an option to my new 6th graders team, as they are familiar with Scratch (used in class) and could work on their chromebooks (except for program upload), but I still expect them to use RobotC for serious programming. They are 6th graders after all…

Good point curiousworx. Modkit is not an option for VRC, all the other programming options that I listed are.

If you can actually get the kids to understand C, then that will definitely be an asset; for VRC and beyond robotics.

Maybe I’m not teaching RobotC right, but I really had a hard time getting the kids to understand it. RobotC comes with some good sample programs that many teams start with, but I’m not sure how much the kids really learn from that.

Modkit they get, and they can create their own programs from scratch. Modkit does teach some good program structure too. All the code for each component (drivetrain, LED, gyro…) is organized separately. I know that some of the more sophisticated FRC teams organize their code that way too.

It might be surprising to learn that some of the best FRC teams do not code in C (or I should say C++, plain C is not an option for FRC). However, you still have a valid point. Learning C, if it really happens, will be a valuable skill. I just think Modkit is a better place to start.

shmish,

If you have a reliable internet connection in your classroom then you can use Modkit or Blockly/Python for free. Here are the links:
http://www.modkit.com/vex
http://www.robotmesh.com/python

http://modkit.com/vex

I didn’t notice that, thanks!

Yesterday I got a call from one of the kids on the team that I coached last year. His team had finished a 5 motor swerve/crab drivetrain the day before, but it wouldn’t run because Driver Control doesn’t have an option for a 5 motor drivetrain. So I had him install Modkit, which took about 1/2 hour. Once installed it only took him 10 minutes to write his first program and get the robot running. I could hear him say “I did it!”, before he hung up.

Last year I tried, unsuccessfully, to get the same boy started in RobotC. At some point he will outgrow Modkit, but this is a good start. He’s gaining confidence that he can program.

ROBOTC mainly and Modkit for younger kids.
To write some of the programs we write in ROBOTC in Modkit would take too long and be very difficult to debug if something went wrong.
Modkit is getting there now, it’s stable but missing some really useful simple things like cut and paste and also the ability to rename components. Funnily enough, you can go into the MKT files and rename the parts yourself and it doesn’t seem to break anything so not sure why you can’t do it in the software!

Hello everyone, I’m a bit new to the VIQ forum but I’ve been active in educational robotics for many years.

While there’s something to be said for using languages which are available in VRC and above, I think it’s best to plan on switching languages sometime during the upward progression.

When you learn your first programming language, you learn a lot about how to implement your code in one way. In Modkit, most of the code is event-driven, although forever and while loops are possible. This is one way to program. It is easy to write code like this when starting to program, since you can do things like when(button L up) -> set motor(To 45 degrees) and it will happen, just as you expect it to. The Robot GUI also lets you map joystick inputs directly to motors and such without even writing code, which is great for starting out, and provides an awesome foundation for new programmers to start on.

Eventually, when the code becomes increasingly complex, there are better ways to write code - It’s still possible to do it in Modkit (and I only use Modkit because it runs well on Mac), but there are a lot of other ways to write code. The text-based languages tend to favor an iterative approach (everything inside of a single while loop), which in my experience is the next place to go from the basic event-driven blocks.

So, when you learn your second language, you learn another way to implement the code you’ve gotten used to writing. If you do this several times, with very different languages, you will be able to use a wide variety of programming concepts to write much better code for the task at hand.

When I first learned LabVIEW for FRC, I had already learned a procedural programming language (C) and bits and pieces of object-oriented programming in C++. To me, this was the only way to program, so I tried to write LabVIEW code as objects (if you know LabVIEW, this is very inefficient, as the language does not favor this type of programming). Without learning the concepts of another type of programming, I was stuck writing huge and inefficient programs. I eventually learned about declarative programming styles - especially functional and data-flow programming by learning Simulink - and was able to write code the way LabVIEW intended it (LabVIEW is a data-flow language with objects added later). Eventually, I learned many languages and many different styles, and how to use each style of programming for my application. Had I stuck with C/C++, I would have never learned other ways to program.

tl;dr the most important programming language you can learn (and teach) is your second. The first language will teach the concepts of programming in one specific application, but the second one will teach you how to apply programming concepts in programs of different architectures and programming styles, and to think in terms of concepts instead of syntax.

That explains a lot of my problems, my first language was Fortran, my second was COBOL :wink:

I’ve done Modkit with roboteers that already knew Scratch, they made the switch pretty easy. The others I teach RobotC from day one. On my wish list would be Snap! http://snap.berkeley.edu/ to be able to program the robot. Snap! allows you to create your own blocks. Having your own blocks makes it possible to extend, it would be tough to out grow something that you could keep extending.

Blockly can do subroutines.
http://www.robotmesh.com/python/
It also has nice GUI features, like collapsing subroutines and sections of code so it’s easier to view. But. it doesn’t have a native Mac version, can’t store multiple programs on the IQ brain (it will only use slot 1), and I couldn’t figure out how to directly set the speed of the motors, which both Modkit and RobotC can do (I think the smart motors do it internally?).

It seems like Modkit could add subroutines easily. What you can do is write your own events, which kinda works, but events aren’t blocking so the calling thread will continue and the event handler will execute separately. That’s normally done to pass events between subsystems, but it can be used for some re-usable code, by setting global variables as ‘arguments’ and then triggering the event.

Copying and pasting would be good in Modkit also. It’s extremely tedious to drag a bunch of blocks out when you know you will need to copy some sections.

Eventually, the tedious nature of dragging blocks all the time becomes limiting and advancing to something else greatly speeds up programming, at least from Modkit. Other graphical languages do a much better job of making it less tedious, imho, without sacrificing ease of use.