Go to Post Equally possible is that we're just providing some lunch-break entertainment for the people in the GDC. - wasayanwer97 [more]
Home
Go Back   Chief Delphi > Technical > Programming > Java
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 05-02-2016, 12:06
fireXtract fireXtract is offline
MegaHertz_Lux
FRC #2847 (Mega Hertz)
Team Role: Programmer
 
Join Date: Jan 2013
Rookie Year: 2012
Location: fmt
Posts: 42
fireXtract is an unknown quantity at this point
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:
Code:
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(PWM.java:117), edu.wpi.first.wpilibj.PWM.<init>(PWM.java:134), edu.wpi.first.wpilibj.SafePWM.<init>(SafePWM.java:35), edu.wpi.first.wpilibj.Talon.<init>(Talon.java:51), edu.wpi.first.wpilibj.RobotDrive.<init>(RobotDrive.java:121), org.usfirst.frc.team2847.robot.subsystems.Drivetrain.<init>(Drivetrain.java:28), org.usfirst.frc.team2847.robot.Robot.robotInit(Robot.java:47), edu.wpi.first.wpilibj.IterativeRobot.startCompetition(IterativeRobot.java:72), edu.wpi.first.wpilibj.RobotBase.main(RobotBase.java:241)]
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:

Code:
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,
			RobotMap.rearRightDrive);

	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);
		setPercentTolerance(5.0);
	}
	// 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;
			}
		}
		System.out.println(maxArea);
	}

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

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

	public double offsetCalc() {
		this.useCenter();
		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

Last edited by fireXtract : 05-02-2016 at 12:14. Reason: more of the error
Reply With Quote
  #2   Spotlight this post!  
Unread 05-02-2016, 12:17
Dan Waxman Dan Waxman is offline
Registered User
FRC #0263 (Aftershock)
Team Role: Programmer
 
Join Date: Feb 2016
Rookie Year: 2016
Location: Long Island
Posts: 31
Dan Waxman is an unknown quantity at this point
Re: nullPointer Error

Looking very quickly, it looks like you're attempting to allocate your servo to the same PWM port as your frontRightDrive motor.
Reply With Quote
  #3   Spotlight this post!  
Unread 05-02-2016, 12:26
fireXtract fireXtract is offline
MegaHertz_Lux
FRC #2847 (Mega Hertz)
Team Role: Programmer
 
Join Date: Jan 2013
Rookie Year: 2012
Location: fmt
Posts: 42
fireXtract is an unknown quantity at this point
Re: nullPointer Error

THANK YOU! For some reason I thought servos were plugged into a different place on the roboRio! Thank you very much sir!
Reply With Quote
  #4   Spotlight this post!  
Unread 05-02-2016, 12:30
Dan Waxman Dan Waxman is offline
Registered User
FRC #0263 (Aftershock)
Team Role: Programmer
 
Join Date: Feb 2016
Rookie Year: 2016
Location: Long Island
Posts: 31
Dan Waxman is an unknown quantity at this point
Re: nullPointer Error

Quote:
Originally Posted by fireXtract View Post
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
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 09:12.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi