nullPointer Error

EDIT: after already posting I realized I titled this wrong. I should have posted “Resource already allocated Error”

My github for the code I am having issues with is here.

I have finally pushed code to our board, and I have been getting errors back through the Riolog. The error:

ERROR Unhandled exception: java.lang.RuntimeException:  Code: -1029. HAL: Resource already allocated at [edu.wpi.first.wpilibj.hal.PWMJNI.allocatePWMChannel(Native Method), edu.wpi.first.wpilibj.PWM.initPWM(, edu.wpi.first.wpilibj.PWM.<init>(, edu.wpi.first.wpilibj.SafePWM.<init>(, edu.wpi.first.wpilibj.Talon.<init>(, edu.wpi.first.wpilibj.RobotDrive.<init>(, org.usfirst.frc.team2847.robot.subsystems.Drivetrain.<init>(, org.usfirst.frc.team2847.robot.Robot.robotInit(, edu.wpi.first.wpilibj.IterativeRobot.startCompetition(, edu.wpi.first.wpilibj.RobotBase.main(]
WARNING: Robots don't quit!
---> The startCompetition() method (or methods called by it) should have handled the exception above.

The Drivetrain subsystem can be found in the github or here is an excerpt:

package org.usfirst.frc.team2847.robot.subsystems;

import org.usfirst.frc.team2847.robot.Robot;
import org.usfirst.frc.team2847.robot.RobotMap;
import org.usfirst.frc.team2847.robot.commands.JoystickDrive;

import edu.wpi.first.wpilibj.RobotDrive;
import edu.wpi.first.wpilibj.command.PIDSubsystem;

public class Drivetrain extends PIDSubsystem {

	// Initialize your subsystem here
	double] greenAreasArray = {};
	double] greenXArray = {};
	double] greenYArray = {};

	double maxArea = 0;
	double greenX = 0;
	double greenY = 0;
	double offsetX;

	int arrayNum = 0;

	// create our drivetrain object
	RobotDrive driveTrain = new RobotDrive(RobotMap.frontLeftDrive, RobotMap.rearLeftDrive, RobotMap.frontRightDrive,

	public Drivetrain() {
		// Use these to get going:
		// setSetpoint() - Sets where the PID controller should move the system
		// to
		// enable() - Enables the PID controller.
		super("Drivetrain", RobotMap.kDriveP, RobotMap.kDriveI, RobotMap.kDriveD);
	// Put methods for controlling this subsystem
	// here. Call these from Commands.

	public void initDefaultCommand() {
		// Set the default command for a subsystem here.
		setDefaultCommand(new JoystickDrive());

	// make the method for our drivetrain
	public void manDrive(double leftValue, double rightValue) {
		driveTrain.tankDrive(leftValue, rightValue);

	 * starts a counter and for each item in the number array compares it to the
	 * max value from before in the end of the loop we should have max = the
	 * biggest value in our array we do this to find out which contour is our
	 * target this should filter out any minor interference in the camera
	public void findMaxArea() {
		Robot.table.getNumberArray("area", greenAreasArray);
		for (int counter = 0; counter < greenAreasArray.length; counter++) {
			if (greenAreasArray[counter] > maxArea) {
				maxArea = greenAreasArray[counter];
				arrayNum = counter;

	public void updateArea() {
		Robot.table.getNumberArray("area", greenAreasArray);

	public void useCenter() {
		Robot.table.getNumberArray("centerX", greenXArray);
		Robot.table.putNumberArray("centerY", greenYArray);
		greenX = greenXArray[arrayNum];
		greenY = greenYArray[arrayNum];

	public double offsetCalc() {
		offsetX = 320 - greenX;
		return offsetX;

	protected double returnPIDInput() {
		// Return your input value for the PID loop
		// e.g. a sensor, like a potentiometer:
		// yourPot.getAverageVoltage() / kYourMaxVoltage;
		return greenY;

	protected void usePIDOutput(double output) {
		// Use output to drive your system, like a motor
		// e.g. yourMotor.set(output);
		if (offsetCalc() > 0) {
			this.manDrive(output * (greenX / 320), output);
		} else if (offsetCalc() < 0) {
			this.manDrive(output, output * (greenX / 320));
		} else {
			this.manDrive(output, output);

My thought was that I had declared the drivetrain wrong, but I am not sure after trying a few different ways. Any help would be greatly appreciated :]

Looking very quickly, it looks like you’re attempting to allocate your servo to the same PWM port as your frontRightDrive motor.

THANK YOU! For some reason I thought servos were plugged into a different place on the roboRio! Thank you very much sir!

Haha no problem man glad I could help out