Go to Post You can't expect a situation to get better if you don't make an attempt to confront it. - AndyB [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 13-02-2015, 15:45
AlexanderTheOK AlexanderTheOK is offline
Guy
no team
 
Join Date: Jan 2014
Rookie Year: 2012
Location: Los Angeles
Posts: 146
AlexanderTheOK is just really niceAlexanderTheOK is just really niceAlexanderTheOK is just really niceAlexanderTheOK is just really nice
Re: Multiple Counter objects with Analog Triggers issues.

Yes. One seems fine on its own. Making multiple is however the specific issue here.

Are there any other teams here who are using the ma3 encoders for a swerve drive and don't have them geared 1 to 1? I would think this issue would pop up much earlier in the build season, but it seems I'm the first one to actually attempt using them like this,which leads me to believe that other teams are keeping track of their modules somehow differently. Are there other methods being used out there?
Reply With Quote
  #2   Spotlight this post!  
Unread 13-02-2015, 16:01
jhersh jhersh is offline
National Instruments
AKA: Joe Hershberger
FRC #2468 (Appreciate)
Team Role: Mentor
 
Join Date: May 2008
Rookie Year: 1997
Location: Austin, TX
Posts: 1,006
jhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond reputejhersh has a reputation beyond repute
Re: Multiple Counter objects with Analog Triggers issues.

Quote:
Originally Posted by AlexanderTheOK View Post
Yes. One seems fine on its own. Making multiple is however the specific issue here.

Are there any other teams here who are using the ma3 encoders for a swerve drive and don't have them geared 1 to 1? I would think this issue would pop up much earlier in the build season, but it seems I'm the first one to actually attempt using them like this,which leads me to believe that other teams are keeping track of their modules somehow differently. Are there other methods being used out there?
We use the absolute encoders 1:1. Not doing that loses pretty much all of their value and you may as well just use a digital encoder.
Reply With Quote
  #3   Spotlight this post!  
Unread 13-02-2015, 20:32
BradAMiller BradAMiller is offline
Registered User
AKA: Brad
#0190 ( Gompei and the Herd)
Team Role: Mentor
 
Join Date: Mar 2004
Location: Worcester, MA
Posts: 590
BradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant futureBradAMiller has a brilliant future
Re: Multiple Counter objects with Analog Triggers issues.

This issue has been fixed and verified by the AlexanderTheOK in the development release of the plugins. Next time we do an "official" release it will come out there. If you are having a similar issue, change your plugin location to development (replace "release" to "development" in the plugin path) and update the plugins.

Aleksandr, thanks for helping us track down the problem and get it fixed.
__________________
Brad Miller
Robotics Resource Center
Worcester Polytechnic Institute
Reply With Quote
  #4   Spotlight this post!  
Unread 14-02-2015, 20:27
AlexanderTheOK AlexanderTheOK is offline
Guy
no team
 
Join Date: Jan 2014
Rookie Year: 2012
Location: Los Angeles
Posts: 146
AlexanderTheOK is just really niceAlexanderTheOK is just really niceAlexanderTheOK is just really niceAlexanderTheOK is just really nice
Re: Multiple Counter objects with Analog Triggers issues.

One thing I almost forgot to post in this thread. The code I posted in the beginning of the thread WILL NOT WORK reliably to count rollovers on the MA3 encoders. This is because the original code did not make a call to the "setFiltered" method. This takes a boolean and is made specifically to facilitate rollovers. The corrected code looks like this:

Code:
public class Robot extends IterativeRobot {
	
	Joystick controller = new Joystick(0);
	
	
	VictorSP motor1 = new VictorSP(7);
	VictorSP motor2 =  new VictorSP(17);
	
	AnalogInput ma31 = new AnalogInput(0);
	AnalogInput ma32 = new AnalogInput(3);
	
	AnalogTrigger Trigger1 = new AnalogTrigger(ma31);
	AnalogTrigger Trigger2 = new AnalogTrigger(ma32);
	
	Counter Counter1 = new Counter();
	Counter Counter2 = new Counter();
	
    /**
     * This function is run when the robot is first started up and should be
     * used for any initialization code.
     */
    public void robotInit() {
    	
    	Trigger1.setLimitsVoltage(0.5, 4.5);
    	Trigger2.setLimitsVoltage(0.5,4.5);

        Trigger1.setFiltered(true);
        Trigger2.setFiltered(true);
        
    	Counter1.setUpDownCounterMode();
    	Counter2.setUpDownCounterMode();
    	
    	Counter1.setUpSource(Trigger1, AnalogTriggerType.kRisingPulse);
    	Counter1.setDownSource(Trigger1, AnalogTriggerType.kFallingPulse);

    	Counter2.setUpSource(Trigger2, AnalogTriggerType.kRisingPulse);
    	Counter2.setDownSource(Trigger2, AnalogTriggerType.kFallingPulse);
    	
    }

    /**
     * This function is called periodically during autonomous
     */
    public void autonomousPeriodic() {

    }

    /**
     * This function is called periodically during operator control
     */
    public void teleopPeriodic() {
    	
    	if(controller.getRawButton(1)) motor1.set(0.2);
    	else if(controller.getRawButton(2)) motor1.set(-0.2);
    	else if(controller.getRawButton(3)) motor2.set(0.2);
    	else if(controller.getRawButton(4)) motor2.set(-0.2);
    	else{
    		motor1.set(0);
    		motor2.set(0);
    	}
        System.out.println(Counter1.get()+ "    " + Counter2.get() + "   " + ma31.getVoltage()+ "   " + ma32.getVoltage());
    }
    
    /**
     * This function is called periodically during test mode
     */
    public void testPeriodic() {
    
    }
    
}

This is unrelated to the issue this thread is about, but future readers who may be using code from chief delphi may come across this and use the original code as an example, so I will leave this here to avoid confusing anyone.

Huge thanks to Brad Miller, Joe Hersh, and Kevin O'Connor. I would be struggling with a lot of communications code and an offboard processor to make our first swerve drive work if it wasn't for the fast and precise work and diagnosis of these fine gentlemen.
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 22:29.

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