How can i make driving easier in Programming?

Hello Guys,

I am wondering if any of you guys had any insight or ideas to make driving on a vex VRC robot easier for my team, my teams have stated to me that the driving on the vex VRC robot is difficult for them to handle due to speeds and also the controller not being fast enough to respond.

How can coding help us with making driver input easier?\


What control layout are you using, what speed does your drive train run at, how big is your robot, and how much practice have you had with the robot?

In what way is it difficult to drive at speed?

Also posting your code would help a lot with why there is controller delay or slow acceleration. The second and third most likely reasons for input delay.

Making driving easier is a bit too broad to give helpful feedback on so some details would be great :slight_smile:

Tank V Aracde

One way is to determine how you actually want to control the robot. Most teams (including mine) use split-arcade due to its ability to perfectly straight (assuming the builders do their job :roll_eyes:) and turn easily.

Tank is by far the simplest way to work with a robot, but I believe it is not the good for the long term. but what do I know, at the end of the day it is really the driver’s option that matters the most.

Scaling the joysticks

But by far the most common way is to scale the joysticks. e.g. a cubic function allows for fine control when the joystick is moved slightly. But when the joystick is moved to its maximum value, you get the full output of the motors.

Cubic Function Graphed


I am using the default controller layout, L Stick (Up or down - Forwards or Backwards), R Stick (L - R - Turn L or R). We haven’t configured the drivetrains’ speed or set the velocity; I am aware that this is a possible feature on the VEX VRC but i need the motor to be more powerful and stronger.

I haven’t currently got a code that this effective and works at the moment however, I do have a rough old code that was used and was not affective. The robot had a flinging mechanism to shoot the tri-balls onto the other side and get 2 points. We also had an elevation claw however, we shortly got rid of that due to effectiveness.

Our team has not had that must experience driving so that could be part of how difficult it is however, the speed for the motor is so fast that they just crash into things.

The robot is around the size of this photo attached and the code is also attached!

Declan (16676A)

Thanks for your insights. We will look into this and apply it!

-Declan (16676A)

This is what you do: (I’m explaining this as if you were using VEX Blocks

When you enter the motors on your device, select the type of drivetrain you are using (unless using more that 4 motors for your drivetrain, that you’ll need to select motor group) and confirm. Also make sure your controller is on there with its preferred driving method. (1 or 2 joysticks. If doing tank drive you’ll use the R and L buttons at the top. My team finds it easy to use 1 joystick) In the programming options under “drivetrain,” or "motors you should see an option that says “Set (drivetrain) velocity to ____”. Change the percentage to your preference
I would advise to research on the forum first before posting, however!

-C. Rhineheart
9545C Team

1 Like


I did research and I am aware the feature to change the drive velocity to a given value. I needed a way to code the sensitivity of the robot so that the robot can move when we tell it too (input controls). At the moment there was some ‘lag’ on the robot, and it didn’t move properly when we wanted it to, it was a little bit late.

Thanks for your input, much appreciated :smiley:

-Declan (16676A)

If you don’t want to go through the more complicated system with the cubic function you can make an approximation. If the joystick is under 100 (it’s from -127 to 127) you divide it by 2 and set this to the motor speed % for that side. then if the joystick is over 100 you set the drive train on that side to %100. Also, mirror this for when over or under -100.

This gives the driver more fine control of the motor speed but they can still go max speed very easily by pushing the joysticks all the way forward.

This is pretty easy to implement for tank control and it wouldn’t be hard to add some calculations beforehand to make arcade or split arcade control.

I haven’t used vex code for a while but I’m pretty sure the joystick is -127 to 127. If it is %-100 to %100 you just do %80 or %90. You can always change this as long as it’s a few below the max value.

Hope this helps :slight_smile:

This is a topic I’ve worked on for a while with my programmer. We have decided that an inverse cubic function is the best. Currently, our function is y=21.6x^(1/3). It is awesome, and makes driving at medium speed very easy, and even makes it easier to drive straight at low speed values. We tried using a regular cubic but found that it made driving more difficult, because it was more sensitive, and tougher to land at a good medium value. This is a desmos of what it looks like.

And this is what it looks like in code

I hope other teams find inspiration from our findings!

1 Like