|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools |
Rating:
|
Display Modes |
|
|
|
#1
|
||||
|
||||
|
4-slot cRIO and default modules
I am very confused about the new module arrangements. Our team bought the new 4-slot cRIO this year. We followed the new convention and put the Analog module in slot 1, Digital module in slot 2 and the Solenoid module in slot 3. But we are trying to figure out if the WPILib would have the correct modules by default so we don't need to explicitly specify the modules when instantiating sensors and switches. This is to make sure our robotics library still works because the code would call GetDefaultXXXModule() to determine where the modules are. I have downloaded the source code of the WPILib. The more I look at it, the more confused I am. It looks like it is still defaulting to the 8-slot arrangement. For example, SensorBase.cpp has the modulePopulation array initialized to the 8-slot arrangement. SensorBase.h also has the following declaration:
Code:
UINT32 SensorBase::m_defaultAnalogModule = 1; UINT32 SensorBase::m_defaultDigitalModule = 4; UINT32 SensorBase::m_defaultSolenoidModule = 8; |
|
#2
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
I loaded a modified version of last year's code to the robot and it gave me:
Quote:
|
|
#3
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
Not sure if this is entirely related, but I know that nowhere in my teams code do we ever reference a specific module. We are using all the latest updates and etc.
If it helps at all, the cRIO imaging tool should show you if you have all the modules in the right slots. |
|
#4
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
They are in the right slots: 9201 in slot 1, 9403 in slot 2 and 9472 in slot 3. In fact, I just re-imaged the cRIO to make sure just in case I screwed up the first time.
|
|
#5
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
Quote:
![]() Anyways, I'm not sure I can help you much... The only sections of the WPILib.h source code I've ever studied in depth are the ones directly related to driving the robot, and receiving input from joysticks; among some other random stuff. This might be a dumb suggestion, but have you tried just running the simpletemplate? |
|
#6
|
||||||
|
||||||
|
Re: 4-slot cRIO and default modules
I don't think you're looking at this year's code.
|
|
#7
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
That's what I thought, but I got it off the latest from first forge.
http://firstforge.wpi.edu/sf/scm/do/...cts.wpilib/scm |
|
#8
|
|||
|
|||
|
Re: 4-slot cRIO and default modules
Quote:
|
|
#9
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
Quote:
thats where I get the source code I read to learn more about motor control and joysticks. |
|
#10
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
Quote:
Code:
static UINT32 GetDefaultAnalogModule() { return 1; }
static UINT32 GetDefaultDigitalModule() { return 1; }
static UINT32 GetDefaultSolenoidModule() { return 1; }
|
|
#11
|
|||
|
|||
|
Re: 4-slot cRIO and default modules
That's because it's not a slot number. The whole paradigm for referencing the modules has changed to support the 4-slot cRIO. The 1st of each module (analog, digital, solenoid) in slots 1-3 is module 1 of that type. The 2nd instance (slot 4 on 4-slot, slots 5-7 on 8-slot) is module 2 of each type.
|
|
#12
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
Ah I see. So in other words, all the methods involving modules (previously slots) are incompatible with previous versions. For example, for the gyro module, one of the constructors Gyro(UINT8 moduleNumber, UINT32 channel) is no longer compatible with the previous version Gyro(UINT32 slot, UINT32 channel). If I have old code that instantiate a gyro with a secondary Analog module in slot 3, for example. The code would look like Gyro(3, 1). But for this year, I have to put the secondary analog module in slot 5 (assuming a 8-slot cRIO) and initiate it with Gyro(2, 1). Does it sound about right?
Does it mean that I can no longer put the modules anywhere I want but it has to be "Analog, Digital, Solenoid, ???" in that order? Or the WPILib is smart enough so that I can put, for example, 3 analog modules anywhere, and I can address them by naming them 1 (1st instance of analog), 2 (2nd instance of analog) and 3 (3rd instance of anlog) since it can read the module ID in each slot. Last edited by mikets : 19-01-2012 at 23:42. |
|
#13
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
The simple template is not applicable to our robot. Our robot is using CANJaguar. So it doesn't use the PWMs on the digital sidecar.
|
|
#14
|
||||
|
||||
|
Re: 4-slot cRIO and default modules
Ahhh... Interesting. Our team has never tried that out... I think we'll stick to pwms for now.
|
|
#15
|
|||
|
|||
|
Greg, we were planning to go with two analogs in slots 1 and 4, and two digitals in slots 2 and 3 on a 4-slot cRIO. We're ordering a 4-slot specifically for that purpose. Are you saying we can't do this. We have no pneumatics this year.
Chris |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|