Go to Post First, corndogs and now cowbells... when will you make the pain stop, Frank?!?!?! - barn34 [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #5   Spotlight this post!  
Unread 29-04-2016, 15:40
cpapplefamily cpapplefamily is offline
Registered User
FRC #3244 (Granite City Gearheads)
Team Role: Mentor
 
Join Date: May 2015
Rookie Year: 2015
Location: Minnesota
Posts: 256
cpapplefamily has a spectacular aura aboutcpapplefamily has a spectacular aura about
Re: Run a command with conditions

Quote:
Originally Posted by kylelanman View Post
Code:
new ShootBall()
Simply creates an instance of the command. That instance needs to be scheduled by running ->Start()

Code:
Command* c = new ShootBall()
c->Start()
Another option is to build the command group on the fly. Here is an example of how we do this.

Code:
m_defenseChooser = new SendableChooser();
		//Group A
		m_defenseChooser->AddObject("Portcullis", new TraversePortcullisCommandGroup());
		m_defenseChooser->AddObject("Cheval de Friese", new TraverseChevalFrieseCommandGroup());

		//Group B
		m_defenseChooser->AddObject("Moat", new TraverseMoatCommandGroup());
		m_defenseChooser->AddObject("Ramparts", new TraverseRampartsCommandGroup());

		//Group C
		m_defenseChooser->AddObject("Drawbridge", new TraverseDrawbridgeCommandGroup());
		m_defenseChooser->AddObject("Sally Port", new TraversePortCommandGroup());

		//Group D
		m_defenseChooser->AddObject("Rock Wall", new TraverseWallCommandGroup());
		m_defenseChooser->AddObject("Rough Terrain", new TraverseTerrainCommandGroup());

		m_defenseChooser->AddDefault("Nothing", (void*)0);

		SmartDashboard::PutData("Defense Chooser",m_defenseChooser);

		m_posChooser = new SendableChooser();
		m_posChooser->AddDefault("Nothing", NULL);
//		m_posChooser->AddObject("Pos 1 (Low Bar)", (void*)1);
		m_posChooser->AddObject("Pos 2", (void*)2);
		m_posChooser->AddObject("Pos 3", (void*)3);
		m_posChooser->AddObject("Pos 4", (void*)4);
		m_posChooser->AddObject("Pos 5", (void*)5);

		SmartDashboard::PutData("Position Chooser", m_posChooser);
Code:
void AutonomousInit()
	{
		autonomousCommand.reset(new GeneratedAutoCommandGroup((Command*)m_defenseChooser->GetSelected(),
				(int)m_posChooser->GetSelected(),
				(int)m_backChooser->GetSelected()));
		if (autonomousCommand != NULL)
			autonomousCommand->Start();
}
Code:
class GeneratedAutoCommandGroup: public CommandGroup
{
public:
	GeneratedAutoCommandGroup(Command* traverseCommand, int position, int driveBack)
		: CommandGroup("GeneratedAutoCommandGroup"){
		double angleArray[6] = {0, 0, 30, 0, 0, -25};
		if (traverseCommand){
			AddSequential(new AutoBlockOneCommandGroup());
			AddSequential(traverseCommand);
			AddSequential(new RotateToAngleCommand(angleArray[position]));    //disabling for middle pos
			if (position == 2) {
				AddSequential(new LockOnTargetCommand(CameraProcessor::LEFT_TARGET));
			} else {
				AddSequential(new LockOnTargetCommand(CameraProcessor::RIGHT_TARGET));
			}
			AddSequential(new AutoBlockTwoCommandGroup());
			AddSequential(new RotateToAngleCommand(0));
			AddSequential(new DriveDistanceCommand(.5, .5, 2000));	
			AddSequential(new Rotate180Command());
			if (driveBack==1) {
				AddSequential(new DriveDistanceCommand(.5, .5, 2000));
				AddSequential(traverseCommand);
			}
		}
	}
};
Ok so your rebuilding the command in the
Code:
void AutonomousInit()
That makes since because with more testing now I found the command always use the status of the Sendable chooser when the Roborio booted up. When rebuilding the Command before
Code:
autonomousCommand->Start()
you capture the current state of the sendable Choosers.
Reply With Quote
 


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 22:07.

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