|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
| Thread Tools | Rate Thread | Display Modes |
|
#1
|
||||
|
||||
|
2006 CMUcam2 Code
As was mentioned during the kick-off, we have new-and-improved, country fresh CMUcam2 code this year. There are two versions available: The "bells and whistles" version contains interactive menu code that allows you to change, on-the-fly, the camera calibration and tracking parameters and save the configuration to EEPROM. And we also have the "streamlined" no nonsense version for the minimalist crowd. Both versions can be found here: http://kevin.org/frc. If you have questions or spot a bug in the code or documentation, please post it in this forum.
-Kevin Last edited by Kevin Watson : 07-01-2006 at 14:07. |
|
#2
|
|||
|
|||
|
Re: 2006 CMUcam2 Code
do you use the ifi loader to download the code to the cam via to the frc controller?
|
|
#3
|
||||
|
||||
|
Re: 2006 CMUcam2 Code
You don't download the program to the camera.
You basically give it a string of commands and it responds. You could hook it to a PC and run it with Hyperterm if you wanted. ![]() |
|
#4
|
||||
|
||||
|
Re: 2006 CMUcam2 Code
Quote:
|
|
#5
|
||||
|
||||
|
Re: 2006 CMUcam2 Code
If you recently downloaded the camera code, you may have noticed that it doesn't work. No, you're not going crazy, the code on my website was broken because the last time I built the code I forgot to change the baud rate on serial port two to the same baud rate the camera expects. To fix my gaff, open up serial_ports.c, and change line 450 to this: "SPBRG2 = BAUD_115200" and Line 452 to: "TXSTA2bits.BRGH = 1". Sorry 'bout the hassle and yes, Kevin is a doofus.
-Kevin |
|
#6
|
||||
|
||||
|
Re: 2006 CMUcam2 Code
Quote:
|
|
#7
|
||||
|
||||
|
Re: 2006 CMUcam2 Code
Quote:
-Kevin |
|
#8
|
|||
|
|||
|
Re: 2006 CMUcam2 Code
This is a diff between the two versions I had available in my repo, so that I could patch my current working sources. I don't gaurantee it working, but it is a straight up diff between the old and the new:
Code:
diff -urNp -x *FRC* -x .svn* -x *.lkr -x *.hex ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/ifi_utilities.c ./ifi_utilities.c
--- ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/ifi_utilities.c Thu Jan 12 05:56:02 2006
+++ ./ifi_utilities.c Wed Jan 4 16:33:12 2006
@@ -27,7 +27,6 @@
int ifi_packet_num1 = 0;
int ifi_last_packet1 = 0;
-char ifi_printfBufr[80];
unsigned char *ptr;
unsigned char ifi_count;
unsigned char ifi_analog_channels;
@@ -88,33 +87,6 @@ void PrintWord(unsigned int odata)
TXREG = 13; /* add a carriage return */
Wait4TXEmpty();
}
-
-
-/*******************************************************************************
-* FUNCTION NAME: PrintString
-* PURPOSE: Prints a string to the serial port.
-* CALLED FROM: anywhere
-* ARGUMENTS: none
-* Argument Type IO Description
-* -------- ------------- -- -----------
-* bufr pointer I word of data to be transmitted
-* RETURNS: void
-*******************************************************************************/
-void PrintString(char *bufr)
-{
- static int len,I;
-
- strcpypgm2ram (ifi_printfBufr,(rom char *) bufr); /*Move from flash to ram*/
- len = (int) strlen((const char *)ifi_printfBufr);
- if (len > 80) len = 80;
-
- for (I=0;I<len;I++)
- {
- TXREG = ifi_printfBufr[i];
- Wait4TXEmpty();
- }
-}
-
/*******************************************************************************
* FUNCTION NAME: DisplayBufr
diff -urNp -x *FRC* -x .svn* -x *.lkr -x *.hex ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/ifi_utilities.h ./ifi_utilities.h
--- ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/ifi_utilities.h Thu Jan 12 05:56:02 2006
+++ ./ifi_utilities.h Wed Jan 4 16:33:46 2006
@@ -74,7 +74,6 @@ void Generate_Pwms(unsigned char pwm_1,u
void Wait4TXEmpty(void);
void PrintByte(unsigned char odata);
void PrintWord(unsigned int odata);
-void PrintString(char *bufr);
void DisplayBufr(unsigned char *bufr);
void PacketNum_Check(void);
void Initialize_Serial_Comms (void);
diff -urNp -x *FRC* -x .svn* -x *.lkr -x *.hex ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/readme.txt ./readme.txt
--- ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/readme.txt Wed Dec 31 19:00:00 1969
+++ ./readme.txt Mon Oct 10 14:26:42 2005
@@ -0,0 +1,65 @@
+This directory contains the default code for the Innovation First 2006 Full-size Robot Controller.
+
+To compile this code you must have Microchip's MPLAB IDE (v7.2) with their C18 compiler (v2.4) installed on your system.
+
+If you wish to restore your Full-size Robot Controller to the default functionality as shipped from the factory, use the IFI Loader application to download the FRC_default.hex file to your Robot Controller.
+
+CAUTION: Do not relocate this FrcCode directory very deep in your directory tree. This is because the Microchip compiler has a 64 character path/filename limit. We suggest placing it in a directory named C:\mcc18\Projects\
+
+Notes:
+Use FRC_library.lib (default) if you plan to use the Generate_Pwms() function. This uses Timer0 to synchronize any PWM outputs generated by the User processor to make sure they avoid any SPI interrupts.
+If you want to use Timer0 yourself, then you can replace FRC_library.lib with FRC_alltimers.lib in the project.
+
+
+www.InnovationFirst.com
+10/10/2005
+- Added a checksum to the breaker panel packet
+- now using <stdio.h>, compiler needs -nw=2066 to suppress warnings (under project->build options->project->MPLAB C18->Use Alternate Settings)
+- Note: when using a 'printf' use a '\r' rather than a '\n' with the C18 compiler (v2.4 or later)
+
+11/12/2004
+- Added user_SerialDrv.c - device driver for the uart
+- Added code to handle packets from the breaker panel
+
+2/26/2004
+- ifi_aliases.h
+ Changed "competition_mode" alias to "disabled_mode" to be more accurate.
+ Added comment explaining that this bit is 1 when the RC is disabled.
+- ifi_default.h
+ Corrected comment regarding "disabled" bit. This bit is 1 when disabled.
+
+2/24/2004
+- user_routines_fast.c
+ Added interrupt enable check to interrupt service routine to ensure that disabled interrupts are not serviced.
+ Also all PWM and Relay outputs are initialized to neutral when entering Autonomous. This fixes a problem where the last PWM values are remembered and stuck throughout Autonomous mode when switching from Disabled to Autonomous.
+- ifi_aliases.h
+ Added aliases for the CCP pins (PWM OUTPUTS 13-16).
+ These can be used as digital outputs (not inputs) when properly configured.
+- README.txt (this file)
+ Added recommended directory for code placement.
+
+
+2/18/2004
+- ifi_aliases.h
+ Swapped relayX_fwd and relayX_rev aliases.
+ Added a note that the REV/FWD labels on the Robot Controller are incorrect.
+- FRC_default.hex
+ Recompiled to reflect the correct relay behavior (swapped FWD/REV).
+
+2/10/2004
+- user_routines_fast.c
+ Added Generate_Pwms() function call to User_Autonomous_Code.
+- 18f8520user.lkr
+ Removed debug section of program memory. Now User code can go all the way up to 0x7FFF.
+- FRC_library.lib and FRC_alltimers.lib
+ Now configure TTL Serial Port (USART2) RX2 pin as an input by default.
+
+1/29/2004
+- user_routines.c
+ Corrected Limit Switch section by removing NOT (!) from inputs.
+- ifi_aliases.h
+ Corrected User_Byte1 and User_Byte2 aliases.
+ Added TTL Serial Port aliases.
+
+1/8/2004
+- Initial Release
diff -urNp -x *FRC* -x .svn* -x *.lkr -x *.hex ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/serial_ports.c ./serial_ports.c
--- ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/serial_ports.c Thu Jan 12 05:56:02 2006
+++ ./serial_ports.c Wed Jan 11 22:10:44 2006
@@ -4,7 +4,7 @@
*
* VERSION: 0.4 (Beta)
*
-* DATE: 05-Jan-2006
+* DATE: 10-Jan-2006
*
* AUTHOR: R. Kevin Watson
* kevinw@jpl.nasa.gov
@@ -144,6 +144,8 @@
* 05-Feb-2005 0.3 RKW - Added _user_putc() interface to C18's new output
* stream capabilities. Updated documentation.
* 05-Jan-2006 0.4 RKW - Partial port to 18F8722. Updated documentation.
+* 10-Jan-2006 0.4 RKW - Modified the #pragma interruptlow line to also
+* save the .tmpdata section.
*
*******************************************************************************/
#include <p18f8722.h>
diff -urNp -x *FRC* -x .svn* -x *.lkr -x *.hex ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/serial_ports.h ./serial_ports.h
--- ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/serial_ports.h Thu Jan 12 05:56:02 2006
+++ ./serial_ports.h Tue Jan 10 21:22:08 2006
@@ -4,7 +4,7 @@
*
* VERSION: 0.4 (Beta)
*
-* DATE: 05-Jan-2006
+* DATE: 10-Jan-2006
*
* AUTHOR: R. Kevin Watson
* kevinw@jpl.nasa.gov
@@ -29,6 +29,8 @@
* 05-Feb-2005 0.3 RKW - Added _user_putc() interface to C18's new output
* stream capabilities. Updated documentation.
* 05-Jan-2006 0.4 RKW - Partial port to 18F8722. Updated documentation.
+* 10-Jan-2006 0.4 RKW - Modified the #pragma interruptlow line to also
+* save the .tmpdata section.
*
*******************************************************************************/
#ifndef _SERIAL_PORTS_H
diff -urNp -x *FRC* -x .svn* -x *.lkr -x *.hex ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/serial_ports_readme.txt ./serial_ports_readme.txt
--- ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/serial_ports_readme.txt Thu Jan 12 05:56:02 2006
+++ ./serial_ports_readme.txt Tue Jan 10 21:17:20 2006
@@ -16,9 +16,10 @@ on-board serial ports. This software is
designed to work with the output stream functions included
with Microchip's C18 C compiler version 2.4
-The source code in serial_ports.c/.h will work with the
-Robovation (A/K/A EDU-RC) robot controller and the FIRST
-Robotics robot controller without modification.
+This source code will work with the PIC18F8520-based FIRST
+Robotics robot controller, the PIC18F8722-based FIRST Robotics
+robot controller, and the Robovation (A/K/A EDU-RC) robot
+controller.
Because you can now easily receive data from another computer,
you can interact with your nifty IFI robot controller in real-
@@ -137,7 +138,7 @@ correctly:
1a) FRC-RC: As this software is intended to replace IFI's
serial port driver, the call to Serial_Driver_Initialize()
in user_routines.c / User_Initialization() should be
- removed or commented out. In addition, all references to
+ removed or commented out. In addition, all references to
"user_Serialdrv.c" and "user_Serialdrv.h" must be removed
from the project and all project source files.
@@ -211,7 +212,7 @@ correctly:
This serial port driver can send output stream data to either
of the serial ports by setting the value of the global variable
stdout_serial_port before calling output stream functions like
-printf(). Setting the value to "SERIAL_PORT_ONE" will send the
+printf(). Setting the value to "SERIAL_PORT_ONE" will send the
output to serial port one. Likewise, setting the value to
"SERIAL_PORT_TWO" will send the output to serial port two.
Setting the value to "NUL" will send the output to the null
diff -urNp -x *FRC* -x .svn* -x *.lkr -x *.hex ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/user_routines_fast.c ./user_routines_fast.c
--- ./../FIRST/tags/FRC-StandardCode-2006-[Kevin_Watson Camera]/user_routines_fast.c Thu Jan 12 05:56:02 2006
+++ ./user_routines_fast.c Tue Jan 10 21:47:04 2006
@@ -55,7 +55,7 @@ void InterruptVectorLow (void)
* RETURNS: void
*******************************************************************************/
#pragma code
-#pragma interruptlow InterruptHandlerLow save=PROD /* You may want to save additional symbols. */
+#pragma interruptlow InterruptHandlerLow save=PROD,section(".tmpdata")
void InterruptHandlerLow ()
{
|
|
#9
|
||||
|
||||
|
Quote:
![]() |
|
#10
|
||||
|
||||
|
look. i don't know jack squat on all of this, and i know this may not be the right thread to post this in, but I'm getting severely disappointed in my team in the fact that all they seem to be doing is yelling at each other and not being very smart about it.
i don't mind the argument, but they're all being immature about it. anyway, i have two questions regarding the camera and the sensor. Question 1: I don't exactly understand how they want us to build a mock-up sensor target like the one they have on the field. I have the "instructions" (aka, the .pdf file), but I do not understand what the heck some of these pieces look like, how they're supposed to be connected to the base plate, etc. Question 2: I like the fact that we have code, but what after calibrating the camera, what files would I need to add to the main workspace (MPLab IDE C18) that I am using for the robot? Question 3 (ties in with question 2): Proving to the world the fact that I am a n00b programmer, how would I be able to re-program the code for the servos for another type of motor? I know that the code for servos differs from that of say a fisher price or a globe motor. Any assistance is greatly appreciated, and please, pray for my sanity .. ![]() |
|
#11
|
|||
|
|||
|
Re: 2006 CMUcam2 Code
Quote:
Quote:
Good luck!! -Joe |
|
#12
|
|||||
|
|||||
|
Re: 2006 CMUcam2 Code
I have been using the camera_s downloaded from your site and i have a quick question as to how can i tell if the camera is searching for the green or if it is following it.
|
|
#13
|
||||
|
||||
|
Re: 2006 CMUcam2 Code
Quote:
Searching... Searching... Searching... Searching... Searching... ... on your terminal screen. If it's actively tracking, the camera will be pointed at the green thing, the little red LED on the camera should light up and you should be getting some statistics dumped onto your terminal screen. -Kevin |
|
#14
|
|||||
|
|||||
|
Re: 2006 CMUcam2 Code
sorry i meant in code how do i tell, i am planning a function that needs to know if the camera has a target
|
|
#15
|
||||
|
||||
|
Re: 2006 CMUcam2 Code
Quote:
-Kevin |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Out of the Box Camera Code | russell | Programming | 9 | 21-10-2009 05:28 |
| CMUCam2 code (FRC and EDU?) | Amber | Programming | 0 | 15-02-2005 22:23 |
| Team THRUST - Kevin's Code and Camera Code Combine | Chris_Elston | Programming | 3 | 31-01-2005 22:28 |
| CMUCam2 Camera Code - Are important parts commented out? | Mr. Lim | Programming | 4 | 14-01-2005 12:11 |
| heres the code. y this not working | omega | Programming | 16 | 31-03-2004 15:18 |