View Single Post
  #1   Spotlight this post!  
Unread 02-08-2010, 03:49 PM
nighterfighter nighterfighter is offline
1771 Alum, 1771 Mentor
AKA: Matt B
FRC #1771 (1771)
Team Role: Mentor
 
Join Date: Sep 2009
Rookie Year: 2007
Location: Suwanee/Kennesaw, GA
Posts: 835
nighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant futurenighterfighter has a brilliant future
void RobotDrive::SetLeftRightMotorSpeeds?

Hi all-

Our robot drive-train is consisting of a total of 6 motors, meaning 3 motors per side, meaning 3 jaguars per side.

After looking through the RobotDrive class, I noticed there is not consturctor for a 6 wheel drive-train. So I made a constructor for 6 wheels, which I think should work...

Code:
RobotDrive::RobotDrive(SpeedController *rearLeftMotor, SpeedController *middleLeftMotor,
						SpeedController *frontLeftMotor, SpeedController *rearRightMotor,
						SpeedController *middleRightMotor,
						SpeedController *frontRightMotor,
						float sensitivity)
{
	if (frontLeftMotor == NULL || middleLeftMotor == NULL || rearLeftMotor == NULL || frontRightMotor == NULL || frontMiddleMotor == NULL|| rearRightMotor == NULL)
	{
		wpi_fatal(NullParameter);
		m_frontLeftMotor = m_rearLeftMotor = m_frontRightMotor = m_rearRightMotor = NULL;
		return;
	}
	m_rearLeftMotor = rearLeftMotor;
	m_middleLeftMotor = middleLeftMotor;
	m_frontLeftMotor = frontLeftMotor;
	m_rearRightMotor = rearRightMotor;
	m_middleRightMotor = middleLeftMotor;
	m_frontRightMotor = frontRightMotor;
	m_sensitivity = sensitivity;
	for (INT32 i=0; i < kMaxNumberOfMotors; i++)
	{
		m_invertedMotors[i] = 1;
	}
	m_deleteSpeedControllers = false;
}
Anyway, I looked into the TankDrive function I am using, because I want to ensure that when I move my joysticks, it moves all the motors, not just the first 2. So after looking through the TankDrive, it calls another function called SetLeftRightMotorSpeeds. After reading that, it makes me THINK that it will only set the first 2 Jaguars (on each side) to drive, not the third.

Here is that function
Code:
void RobotDrive::SetLeftRightMotorSpeeds(float leftSpeed, float rightSpeed)
{
	wpi_assert(m_rearLeftMotor != NULL && m_rearRightMotor != NULL);

	leftSpeed = Limit(leftSpeed);
	rightSpeed = Limit(rightSpeed);

	if (m_frontLeftMotor != NULL)
		m_frontLeftMotor->Set(Limit(leftSpeed) * m_invertedMotors[kFrontLeftMotor]);
	m_rearLeftMotor->Set(Limit(leftSpeed) * m_invertedMotors[kRearLeftMotor]);

	if (m_frontRightMotor != NULL)
		m_frontRightMotor->Set(-Limit(rightSpeed) * m_invertedMotors[kFrontRightMotor]);
	m_rearRightMotor->Set(-Limit(rightSpeed) * m_invertedMotors[kRearRightMotor]);
}
Any help on how to edit that so all 3 will go, not just 2?

Edit: Im thinking i can just say m_middleRight/LeftMotor -> Set...., but Im not sure.

Thanks- 1771

Last edited by nighterfighter : 02-08-2010 at 03:58 PM. Reason: Thought of something
Reply With Quote