Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   New version of WPILib (http://www.chiefdelphi.com/forums/showthread.php?t=42237)

BradAMiller 07-02-2006 20:21

Re: New version of WPILib
 
Quote:

Originally Posted by Kruuzr
Hi Brad...

I started coding up our full application using WPILib but I ran across a big difference between the documentation and what I assume are new functions. In the userAPI.h file, there are two camera functions:

void InitCamera(unsigned char cameraInitIndex);
void CaptureTrackingData(
unsigned char *centerX,
unsigned char *centerY,
unsigned char *x1,
unsigned char *y1,
unsigned char *x2,
unsigned char *y2,
unsigned char *regionSize,
unsigned char *confidence,
unsigned char *pan,
unsigned char *tilt);

The first is obviously a changed version of InitializeCamera() and the second must be new. Could you give a quick rundown of how they work, especially the 'cameraInitIndex' parameter of InitCamera() ? And how do we set camera parameters as there is no place to set up a CameraInitializationData struct.

Thanks

You caught me! I just put up a new version with the function definition included in the BuiltIns.h file.

There are a few functions in WPILib which are hard for programmers to use, but easy for EasyC to automatically generate. These are two of those functions.

The function:

InitializeCamera(CameraInitializationData *c);

that you can call passing the address of the camera initialization structure. This is probably easiest for you to use. The other function:

InitCamera(unsigned char cameraInitIndex);

was intended for EasyC. It assumes that there is an array of those structs and the argument is the index to the one you want to use.

My suggestion is to initialize a structure with the camera parameters you want to use and call InitializeCamera. It's actually called from inside of InitCamera anyway.

The other functions to use the camera data are:

CaptureTrackingData(...) - this is the one you described

and

TPacket *CopyTrackingData(void);

Is the function that I intended hand-coding programmers to use. This returns a pointer to a static structure containing a TPacket inside of WPILib. When you call the function, it turns off interrupts, grabs the most recent packet, and puts it into the static structure - then returns its address.

Then you can write code like this:

TPacket t = CopyTrackingData();
conf = t->confidence;

which seemed to be pretty convenient.

Kruuzr 07-02-2006 22:14

Re: New version of WPILib
 
Quote:

Originally Posted by BradAMiller
You caught me! I just put up a new version with the function definition included in the BuiltIns.h file.

There are a few functions in WPILib which are hard for programmers to use, but easy for EasyC to automatically generate. These are two of those functions.

The function:

InitializeCamera(CameraInitializationData *c);

that you can call passing the address of the camera initialization structure. This is probably easiest for you to use. The other function:

InitCamera(unsigned char cameraInitIndex);

was intended for EasyC. It assumes that there is an array of those structs and the argument is the index to the one you want to use.

My suggestion is to initialize a structure with the camera parameters you want to use and call InitializeCamera. It's actually called from inside of InitCamera anyway.

The other functions to use the camera data are:

CaptureTrackingData(...) - this is the one you described

and

TPacket *CopyTrackingData(void);

Is the function that I intended hand-coding programmers to use. This returns a pointer to a static structure containing a TPacket inside of WPILib. When you call the function, it turns off interrupts, grabs the most recent packet, and puts it into the static structure - then returns its address.

Then you can write code like this:

TPacket t = CopyTrackingData();
conf = t->confidence;

which seemed to be pretty convenient.


Thanks for the info Brad...
I think the time lag between coding and documentation is a law of physics. :)

Steve

BradAMiller 07-02-2006 22:43

Re: New version of WPILib
 
Quote:

Originally Posted by Kruuzr
Thanks for the info Brad...
I think the time lag between coding and documentation is a law of physics. :)

Steve

The laws of physics change somewhat during the 6 week build season. Then they go back to normal.

BradAMiller 18-02-2006 19:00

Re: New version of WPILib
 
There is a new version of WPILib that has better error handling for the CMUCam. It will now fail more quickly if the camera is not detected and there is a function to get the status from the camera after initialization.

You can get it at the usual place.

Please post something with your results. I have tested it on a 2006 controller with the camera disconnected from the serial adapter and also with the serial adapter disconnected from the robot and both seem to work.

Be sure to save the old version this close to shipping in case you don't like the results.

michael714 15-01-2007 16:23

Re: New version of WPILib
 
Hey Brad,
Where do you find BuiltIns.h ?

Your efforts are appreciated.

BradAMiller 16-01-2007 13:50

Re: New version of WPILib
 
Whoops...

It's fixed now. There was a problem with the automatic build stuff and some stuff didn't update properly.

The new version is in the usual place.

Brad

Kruuzr 16-01-2007 14:19

Re: New version of WPILib
 
Not quite fixed yet!!!

I get :
You don't have permission to access /~bamiller/WPILib/WPILib2007011601.zip on this server.

Kruuzr

Quote:

Originally Posted by BradAMiller (Post 558181)
Whoops...

It's fixed now. There was a problem with the automatic build stuff and some stuff didn't update properly.

The new version is in the usual place.

Brad


slavik262 16-01-2007 19:39

Re: New version of WPILib
 
Same here. I'm getting the "You don't have permission to access /~bamiller/WPILib/WPILib2007011601.zip on this server." as well

BradAMiller 17-01-2007 07:49

Re: New version of WPILib
 
Quote:

Originally Posted by slavik262 (Post 558422)
Same here. I'm getting the "You don't have permission to access /~bamiller/WPILib/WPILib2007011601.zip on this server." as well

Fixed... sorry about that.

slavik262 18-01-2007 22:21

Re: New version of WPILib
 
Quote:

Originally Posted by BradAMiller (Post 558742)
Fixed... sorry about that.

Thanks as always

BradAMiller 22-01-2007 11:47

Re: New version of WPILib
 
I put up a new version of WPILib that exposes some of the internal functions that can reset the camera and send commands to it. Should make it easy to use the Virtual Window stuff.

http://users.wpi.edu/~bamiller/WPILib/Versions.html

When you reset the camera, then send commands, tracking is turned off. You need to restart tracking by calling StartCamera(). Also you can set the camera debug mode by calling SetCameraDebugMode(1) and the commands to/from the camera will be echoed in the terminal window so you can see what it is doing.

slavik262 27-01-2007 15:49

Re: New version of WPILib
 
Good Stuff. Thank you.


All times are GMT -5. The time now is 15:18.

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