Using the 4 Motor Drivetrain With Mecanums

So we are using vexcode and mecanum wheels on our robot. Our autonomous isn’t very reliable so I’m going to be adding an inertial sensor. I looked around and found this drivetrain thing that looks very easy to use and quite effective. The problem is that if I use a drivetrain then I am unable to use motors by themselves in the usercontrol to strafe like I have been doing. Is there a way I can control motors in a motorgroup seperate from the other in the group or is there a mecanum option somewhere in the drivetrain?


Not true in V5 text; after setting up a drivetrain in the graphical configurator, look in robot_config.cpp and you will see the individual motor objects there. You can address them individually just like you could if you hadn’t set up a drivetrain.



it does not appear to be that way…

is there a way to control that port?

I should have checked myself before I posted - turns out the auto-generated robot_config.h only declares the drivetrain object for use in other files, not the underlying motors.

So, you need to add a .h file with the following content:

extern motor leftMotorA;
extern motor leftMotorB;
extern motor rightMotorA;
extern motor rightMotorB;

and then #include that file in main.cpp - or just add those lines to robot_config.h if you have “Expert Robot Configuration” enabled.

edit: also add the following line:

extern inertial TurnGyroSmart;

if you want to access the inertial sensor from main.cpp as well


Ok, thanks. I’ll try that when I get home. Also, if I tell the drivetrain to move forward will It use the inertial sensor to keep a straight line?

nope, you have to code that yourself.


Got it. I got everything working it looks like, if I do something like Drivetrain.driveFor(forward, 50,inches); will it utilize the inertial sensor’s accelerometer to calculate how far it has driven?

99.9% positive It will use the Integrated motor encoders. The inertial sensor is only utilized for turns.


Yeah, makes sense. Thanks.