Q - VEXCode & Robot Mesh

I’m having a hard time figuring which IDE we should use for our teams -
VEXCode
a - 1.x is seems the API doesn’t seem to support some of the older motor commands (rotateFor, rotateTo etc) - are these still supported? Have these commands have been depreciated or just lot listed via autofill
b - where do we turn on expert mode?

Robot Mesh
2a - does support wireless programming like VEXCode?

Both
3a - When implementing drivetrain it seems calls to the individual motors do not work (not declared)
3b - motor turn correctly as arcade but when we send commands the motors act like the reverse setting doesn’t work - one motor goes opposite direction

Overall it seems a wash between the two - I suspect the bugs are more me but wow - this gets confusing w/so many changes.

If choosing between the two I’d go with VEXcode.

  1. Version 1.01 has the expert mode stuff, and ALL previously supported commands still work in the 1.x’s

  2. Yes, they all support wireless downloading BUT with a major caveat: The library of commands of VEXcode is already on the brain so wireless downloading is snappy quick, but with RMS the library needs to get downloaded each and every time so it takes a few minutes to wirelessly download. PROS has the same issue, but they have an optional feature called hot/cold linking that makes it not an issue.

  3. You likely need to specify reversed or not in the motor/sensor setup.

All in all I’d say that VEXcode is the vastly superior option.

1 Like

1 - Thank you - I downloaded the latest (as of today) and didn’t see the expert mode. I’ll retry later.

2 - thanks - this makes a LOT of sense and is pretty much a deal breaker - our kids have so little time during matches to tweak their code we need all the help we can get!

3 - this motor reversing thing seems to be a bane of my VEXistence What i do is leave motors default fwd, and reverse in motor set-up to get it to work. I ‘assume’ it’s like w/Cortex - once they’re set-up correctly a positive move is forward direction. We’re using using arcade-control so adds a layer of ???.

Further complicating this is we try to use functions for autonomous (below) Strangely enough two positive degrees turn robot! We can compensate by changing the parameters but it gets confusing for kids - esp in heat of a match!

rDrive(360,360,60,60,0);

void rDrive(double lDeg, double rDeg, int l, int r, bool b){ // drive by relative distance
L_Drive.rotateFor(lDeg, vex::rotationUnits::deg,l, vex::velocityUnits::pct, false);
R_Drive.rotateFor(rDeg, vex::rotationUnits::deg,r, vex::velocityUnits::pct, b);
}

This link will help explain expert mode. Nothing was removed in 0.9 to 1.0, but we simplified a lot of things for new users. More experienced users can enable expert mode to do things “the old way”.

For expert mode users we also generated the API in a doxygen format, which we are going to continue improving over time:

https://api.vexcode.cloud/v5/html/index.html

5 Likes

thank you - while not perfect this is a big improvement over 1.0! Esp the simplification of motor commands

WOO HOO! - for the expert auto complete - which give us the older commands we’ve grown to love!

Esp grateful for Doxygen - very comprehensive!

Not sure why the graphical ‘add component’ portion is disabled - seeing said entries occur within different files. Thankfully the work-around is easy enough (use normal to generate components, copy, enable expert, paste)

Is there a difference / advantage between Task and Tread?

Thank you again!

This is most certainly not the case. When was the last time you used RMS? We’ve been linking against a stored asset and code blob for as long as wireless downloading has been available (~January).

Yes. We were actually the first publicly available tool to support it, followed shortly by PROS. (VEXcode was not out at the time.)

The individual motors are still accessible when using any of the languages in RMS.

There’s no known bugs with motor directions in RMS, so if you’re seeing some I’d be interested to see the project that you’re having difficulty with.

4 Likes

Thanks for these clarifications Mr Tyler.

I do like RMS ALOT - very mature / comprehensive. However I find the file management & on/off line usage difficult.

The wireless programming was a nightmare - prob b/c VEXCode & RMS using different versions of same driver?

re:3b - turns out I was using rotateFor - which IF I understand right, ignores the motor.reversed setting

Yep, we’re primarily a web tool these days. The standalone version was largely created as a solution to the “I need to take my code to a tournament without wifi” problem rather than as a primary usage mode. We’ve got some things we want to review about it, and that review is queued behind some big updates to the web version. Depending on your use case, you might find our teacher edition interesting: it lets a teacher create users and see the projects of users that they create.

The first time it downloads (or the first download after manually wiping the Brain’s memory) our stuff is going to be slow because we do have to download all our static stuff for the first time. Subsequent downloads should be much faster. (And if they’re not, I’d like to trouble you for a bug report!)

Hmm, rotateFor should respect the reverse flag. A quick test on our live servers showed it behaving properly. You don’t happen to still have the project that gave you trouble, by any chance?

1 Like

The code is in VEX Code so may not be of interest to you.

FWIW wireless programming w/ RMS & VEX Code didn’t work for us - I suspect calls to same but different drivers? RMS would time out and the controller would require a hard reset.

If it’s any consolation the offline mode is greatly appreciated!

If I could be so bold as to suggest maybe you can use a ‘github’ - type synce to make the transition transparent to the user?

While I have you attention, another thing both RMS & VEX Code could improve on is the autosave feature. Perhaps it’s me, but it seems the autosave over-writes the existing file - giving us no recourse should we go down the wrong wormhole.

Perhaps autosaving to a temp file (like Word) could be viable?

VEXcode text will save before you build your project, you can turn that off in preferences, however, code needs to be saved to be able to build with your latest changes. VEXcode does not try and implement any version control, there are good apps that do that already such as Tower and Gitkraken.

2 Likes

Ah. You might report that to them, then. Though our APIs are intended to be very similar on the surface, the implementations differ under the hood. (The schedulers, for example, are very different.)

We do actually keep previous saves, both locally and on our servers. There’s no visibility of that in the UI for the user at the moment, but we started keeping track of it a loooong time ago so that we could eventually add history management in the future. At the moment, the only way to access it is to manually copy an older version to overwrite the current one (local projects) or emailing us about doing a restore in the case of total-project-loss (online projects). Otherwise, forking a project on RMS is just a couple clicks if you want to make changes you might need to walk back: Options gear in the top right of the IDE -> Copy Project button.

2 Likes

Thanks - I see that in the preferences -

Dang - Tower & GitKraken look like overkill (& something else to figure our)

I’m sure you have bigger issues to worry about!

TY

Schedulers? What is this?

My windows is overdue for a refresh so rather not stir the pot when it’s likely my install

I see a bunch of p3_filename_v1, v2 etc - are these the backups? I was wondering where these came from!

Schedulers handle when threads are allowed to run. There are a couple things that the program has to take care of in the background (watching the competition state, for example), and the scheduler is the bit that handles switching between the various things the program is asked to do by you and those background tasks. There are a few ways to handle the problem, and the guys at VEX chose a different method than we did at Robot Mesh. (The folks at PROS use the same scheduler that RMS C++ does, too.) It doesn’t make too much of a practical difference for simple programs, though.

Yep, those are the previous versions of those projects. We’ve got a similar version history sitting in our database for every online project.

The code is in VEX Code so may not be of interest to you.

FWIW wireless programming w/ RMS & VEX Code didn’t work for us - I suspect calls to same but different drivers? RMS would time out and the controller would require a hard reset.

If it’s any consolation the offline mode is greatly appreciated!

If I could be so bold as to suggest maybe you can use a ‘github’ - type synce to make the transition transparent to the user?

While I have you attention, another thing both RMS & VEX Code could improve on is the autosave feature. Perhaps it’s me, but it seems the autosave over-writes the existing file - giving us no recourse should we go down the wrong wormhole.

Perhaps autosaving to a temp file (like Word) could be viable?