Turning VCS into RobotC

For the last month or so I have been using a library that I wrote and installed into VCS’s files to turn VCS programming into something that much more closely resembles RobotC. I did this because my students spent more time dealing with the syntax and specifics of VCS than they did making robots. Also our middle school teacher felt that VCS complexity made it a non-starter for his students. So I basically created a library to make VCS more usable and more like robotC.

For example turning on a motor at 50 percent power can be written as:
startMotor(RightMotor,50);

Instead of:
RightMotor.setVelocity(50,velocityUnits::pct);
RightMotor.spin(directionType::fwd);

I have written the library to simplify the starting and stopping of motors, having them rotate to absolute and relative positions, set brake modes, reading analog & digital sensors, quad encoders, and sonar sensors as well as motor info like temperature and power. It handles timers and sensing and drawing to the touchscreen. It also simplifies using the vision sensor and radio controller.

What I would like is some collaborators and testers. In particular I would like people to help:

  • Add in gyros and accelerometers.
  • More thoroughly test the camera and controller parts of library
  • Add in support for the 393 legacy motors
  • Add in PWMout and Digital Out methods
  • Adding in Competition specific features for VEX teams
  • Creating an installer to simplify installation for future users
  • Other features I haven’t thought of.

Or if you are just interested in trying it out send me a message and I can send you the library and direction on what folder to put it in. (Don’t worry: everything that works with VCS still works with it and it makes no changes to VCS and is easy to uninstall.)

Here is a user guide for you all to take a look at to see exactly what types of functions the library currently has, and how they work.

RobotC Reference Sheet.pdf (354.4 KB)

2 Likes

It seems like all you really want is.

https://pros.cs.purdue.edu/v5/api/c/motors.html

void opcontrol() {
  while (true) {
    motor_move(1, controller_get_analog(E_CONTROLLER_MASTER, E_CONTROLLER_ANALOG_LEFT_Y));
    delay(2);
  }
}

Also this would give you wireless downloading for free and better supported software.

6 Likes

That’s a step in the right direction. I would prefer to maintain more continuity with robotic and have more than just the motor commands though.

1 Like

what you really need is the library I mentioned in this post

I still have no plans to release it though

I would like your version of it, but it looks like I’ll have to make do with creating my own version… unless you change your mind…

we don’t just have motor commands…

5 Likes

IMO it doesn’t make sense to put in works towards something that’s not maintained. Why not use PROS or RMS, much easier to earn something than to recreate it o.O

4 Likes

It seems to me like you’re actually inhibiting your students’ learning by preventing them from learning the new coding solution.

1 Like

Drawing such a conclusion based on such little information is a major extrapolation at best. We do not know the priorities or constraints (such as time) that apply to their program.

Also, I completely agree with the OP that the shift toward C++ as an introductory language would just make students spend more time worrying about syntax rather than learning to think like a programmer. Accordingly, there’s no inherent value in “learning the new coding solution” if there is no compelling value-add over something that is tried and true.

With that said, since RobotC isn’t exactly an option with V5, I second the option to use PROS, specifically their C API, rather than making a wrapper library for VCS.

P.S. @Rick_TYler @John_TYler You should add a C API to RMS

1 Like