Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Technical Discussion (http://www.chiefdelphi.com/forums/forumdisplay.php?f=22)
-   -   Jaguar Speed & Position Control with Encoders (http://www.chiefdelphi.com/forums/showthread.php?t=123677)

DavisDad 26-12-2013 08:06

Jaguar Speed & Position Control with Encoders
 
Last year we tried to use the Jaguar Motor Controller's position and speed control functions in our Ultimate Accent bot. We got the BDC-COMM utility to work but couldn't work out the "C" programming.

We've had good success on the FTC team using the Matrix motor controller and would like to achieve a similar performance with Jaguars.

I'd appreciate any feedback or point me to a thread where this is discussed.

brennonbrimhall 26-12-2013 14:14

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by DavisDad (Post 1317037)
We got the BDC-COMM utility to work but couldn't work out the "C" programming.

I'm going to operate with the assumption that by "C programming," you mean the C++ programming on the cRIO.

While we use Java, that should be similar to the API we use, which can be found here for all of the classes used in WPILibJ, or here for the CANJag class.

Does anyone know of similar documentation for C++?

DavisDad 26-12-2013 16:38

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by brennonbrimhall (Post 1317088)
I'm going to operate with the assumption that by "C programming," you mean the C++ programming on the cRIO.

While we use Java, that should be similar to the API we use, which can be found here for all of the classes used in WPILibJ, or here for the CANJag class.

Does anyone know of similar documentation for C++?

I'm not a C++ programmer and will relay any info about this to my son who knows that stuff. I'm mechanical and would understand mechanism and controls hardware. I've worked with industrial PLCs using ladder logic and have some understanding of controls systems. The big questions for me are:
  • Do the Jaguar on-board speed and position controls work? If so, looking for examples of successful controls strategy?
  • Is my assumption correct that using the Jaguar's micro-controller PID loops faster and more efficient than running feedback/feed-forward loops from the CReo?
  • Is the CAN Bus route worth the effort?
  • What questions have I forgotten to ask? :)

Jared 26-12-2013 16:57

Re: Jaguar Speed & Position Control with Encoders
 
The PID functionality of the Jaguars does work, but adding CAN can be expensive depending on which adapter you use.

The PID on the cRIO is just as fast and as powerful as the one on the jaguar, but works with all types of speed controllers and sensors. If you're looking for basic getting started examples, there are plenty for PID on the cRIO.

brennonbrimhall 26-12-2013 17:04

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by DavisDad (Post 1317130)
I'm not a C++ programmer and will relay any info about this to my son who knows that stuff. I'm mechanical and would understand mechanism and controls hardware. I've worked with industrial PLCs using ladder logic and have some understanding of controls systems. The big questions for me are:
  • Do the Jaguar on-board speed and position controls work? If so, looking for examples of successful controls strategy?
  • Is my assumption correct that using the Jaguar's micro-controller PID loops faster and more efficient than running feedback/feed-forward loops from the CReo?
  • Is the CAN Bus route worth the effort?
  • What questions have I forgotten to ask? :)

  • Yes. However, it is the opinion of some (myself included) has been that the physical connections and mechanical implementation in the Jaguar motor controller are unreliable.
  • Yes.
  • In my experience, I'd say that doing PID on the cRIO is much less of a headache and much easier to implement than CANBus. I personally find the CAN interface on the Jaguar to be much more trouble than it's worth. That being said, there are several teams who have used the CANBus route successfully and prefer it (according to my friends on 195, it can have cleaner wiring if you do it right, and it is more computationally efficeint than doing it on the cRIO). Whether or not it is a success on your team is a function of your determination, human resources, experience, and time.
  • It's worth noting that there is not an insignificant chance that the interface for CAN in 2015 will be much different than it was in 2013 (with new roboRIO, and with a new CAN-based Talon). I'd read the following documents/forum discussion. Hopefully they'll answer more questions than they raise, but as always, feel free to ask any new questions you might have. That's what ChiefDelphi is all about. :)

DavisDad 26-12-2013 17:18

Re: Jaguar Speed & Position Control with Encoders
 
brennonbrimhall,

Thanks so much for the help!

I was very excited about the performance of the Jaguar/CIM running on the bench through BCD-COMM. If this can be done through the cRIO, I'm willing to forge ahead. I've read through VEX and TI manuals, read the NI forums but no joy finding a servo/motor/Jaguar set-up problem to solve the problem. I guess I'll need to delve into programming language to get the complete picture :O.

brennonbrimhall 26-12-2013 17:28

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by DavisDad (Post 1317149)
brennonbrimhall,

Thanks so much for the help!

No problem. Always glad to help.

Quote:

Originally Posted by DavisDad (Post 1317149)
I was very excited about the performance of the Jaguar/CIM running on the bench through BCD-COMM. If this can be done through the cRIO, I'm willing to forge ahead.

Best of luck. You're far braver than I am...

Quote:

Originally Posted by DavisDad (Post 1317149)
I've read through VEX and TI manuals, read the NI forums but no joy finding a servo/motor/Jaguar set-up problem to solve the problem.

What do you mean by a set-up problem? Are you referring to the PID coefficients, or a simple set-up diagram of sorts?

Quote:

Originally Posted by DavisDad (Post 1317149)
I guess I'll need to delve into programming language to get the complete picture :O.

Yes, I would recommend that. What language do you use?

Joe Ross 26-12-2013 19:06

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by Jared (Post 1317140)
The PID on the cRIO is just as fast and as powerful as the one on the jaguar,

Why do you say this? I wasn't aware that anyone was running PID at 1000 hz on the cRIO. Doing PID on the cRIO is more flexible, however, since you can implement your own.

The serial CAN interface is somewhat inefficient, and you may find that if you send to many updates, it may use more cRIO throughput then running a 50 or 100hz PID on the cRIO would. One option would be to invest in the 2CAN. Another option would be to limit the amount of CAN traffic. Setting a setpoint every few seconds isn't a problem. Changing setpoints at 50hz to multiple jaguars and requesting lots of status can be a problem.

Joe Ross 26-12-2013 19:32

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by DavisDad (Post 1317037)
Last year we tried to use the Jaguar Motor Controller's position and speed control functions in our Ultimate Accent bot. We got the BDC-COMM utility to work but couldn't work out the "C" programming.

This thread shows the required calls for setting up a CAN Jaguar in position mode. http://www.chiefdelphi.com/forums/sh...d.php?t=102909 You also need to using the imaging tool to set the appropriate CAN Jaguar plugin (Serial or 2CAN).

ronbaer 26-12-2013 21:04

Re: Jaguar Speed & Position Control with Encoders
 
We successfully utilized Jags last year with CAN bus and a position sensor. We were going to also use the speed sensor but had wired a hall-effect sensor for speed vice an encoder. The Jag could not utilize the hall-effect sensor.

Couple of things we learned.
1. Wire the serial port of the cRio to the first Jag, than CAN to the other Jags
2. Don't forget the terminator on the last Jag
3. ReImage the cRio with CAN support (that one took us a while to learn :)
4. Write simple test programs to exercise the Jag before integrating Jag support into your overall robot code. Its MUCH easier to debug.

Don't forget, Jags also work well with limit switches (CAN and PWM control).

Good luck with the Jags this year.

DavisDad 26-12-2013 21:29

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by brennonbrimhall (Post 1317151)
...What do you mean by a set-up problem? Are you referring to the PID coefficients, or a simple set-up diagram of sorts?

Hooking up to the BCD-COMM wasn't easy for us:
  • I had some quad encoders with index and it took some time to realize that the index was resetting the counter when trying position control
  • Struggled a bit with USB/Serial converter to Jaguar; PC serial software
  • Didn't have documentation about PID (PI only) constants; had to trial-and-error the integral.
  • "Bricked" a Jaguar by failed firmware update (VEX had good support and fixed it for free)

I know none of these are that big a deal individually, but when you're dealing with multiple snags it can get daunting. What I meant is: I wanted to make sure there wasn't some issue like those with the cRIO CAN setup that was preventing proper operation.

Jared 26-12-2013 21:30

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by Joe Ross (Post 1317179)
Why do you say this? I wasn't aware that anyone was running PID at 1000 hz on the cRIO. Doing PID on the cRIO is more flexible, however, since you can implement your own.

I tested this last year. I tried 800 hz to 10 hz, and everything faster than 100 hz behaves the same way as 100 hz because the victor can only be updated every ~20 ms (50 hz).

Also, I don't think that a drivetrain used in FRC will benefit from being updated 100 times a second vs 1000.

Where did you find the 1000hz number? I'm not saying it's wrong, but I couldn't find it online.

Ether 26-12-2013 21:43

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by Jared (Post 1317222)
Where did you find the 1000hz number? I'm not saying it's wrong, but I couldn't find it online.

The point Joe was making is that the built-in PID in the Jag's firmware closes the loop at 1000 Hz. You can't do that with cRIO. You can't do that with Victor or Talon.

Quote:

everything faster than 100 hz behaves the same way as 100 hz because the victor can only be updated every ~20 ms (50 hz).
Victors will accept 200 Hz input PWM frequency.


Quote:

I don't think that a drivetrain used in FRC will benefit from being updated 100 times a second vs 1000.
Other systems might.



Joe Ross 26-12-2013 21:45

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by Jared (Post 1317222)
Where did you find the 1000hz number? I'm not saying it's wrong, but I couldn't find it online.

It's in the jaguar source code (not sure if it's still available online, used to be available from TI). There is a 1ms timer interrupt. It runs the PID and updates the H-bridge PWM from the same interrupt.

Ether 26-12-2013 21:56

Re: Jaguar Speed & Position Control with Encoders
 
Quote:

Originally Posted by Joe Ross (Post 1317226)
It's in the jaguar source code (not sure if it's still available online, used to be available from TI). There is a 1ms timer interrupt. It runs the PID and updates the H-bridge PWM from the same interrupt.

Portions of the relevant source code were posted here by dyanoshak:

http://www.chiefdelphi.com/forums/sh...6&postcount=41




All times are GMT -5. The time now is 17:27.

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