Go to Post Let's Get Ready to (Graciously) Rumble! - Mr MOE [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Closed Thread
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 11-01-2007, 10:31
Bomberofdoom's Avatar
Bomberofdoom Bomberofdoom is offline
Biggest FIRST addict in Israel
AKA: Nir Levanon
FRC #2230 (Zcharia's Angels)
Team Role: Programmer
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Israel
Posts: 471
Bomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond repute
Send a message via MSN to Bomberofdoom
Re: What are we supposed to do!?!?!?!??!?!

Quote:
Originally Posted by Bomberofdoom View Post
Autonomous Mode means that the RC will ignore all data from the Operator Interface and it will not
require a link with the Operator Interface to execute code.

If you wish to run the Robot Controller exclusively in Autonomous Mode, one way to do this is to set
your team number to zero. This is done by setting the team number on your OI to zero, linking your OI
and RC by tether, and then disconnecting from tether. After your RC is reset it will be in Autonomous
Mode.

To exit Autonomous mode if your team number is zero, you must re-tether and change the team number
to anything but zero.

An additional method for getting into Autonomous Mode is described in the Operator Interface
Reference Guide in the “Competition Control LED” section. See the Programming Reference Guide for
details on how to program for Autonomous Mod
Where is the team number value?(which source file?)
  #2   Spotlight this post!  
Unread 11-01-2007, 10:37
jakk jakk is offline
Jonathan Kobayashi
FRC #0368 (Kika Mana)
Team Role: Programmer
 
Join Date: Jan 2005
Rookie Year: 2005
Location: Hawaii
Posts: 39
jakk has a spectacular aura aboutjakk has a spectacular aura about
Re: What are we supposed to do!?!?!?!??!?!

Actually, can't you make something that will simulate the master controllers used at FIRST? You can connect some switches to that 'competition' port on the top and run either autonomous or disable the robot. Not really sure what pins but it can be done.
__________________
http://www.mckinleyrobotics.org
  #3   Spotlight this post!  
Unread 11-01-2007, 13:46
SuperBK's Avatar
SuperBK SuperBK is offline
Registered User
AKA: BrianK
FRC #1225 (Amperage Robotics)
Team Role: Mentor
 
Join Date: Jan 2007
Rookie Year: 2006
Location: Henersonville, NC
Posts: 358
SuperBK is just really niceSuperBK is just really niceSuperBK is just really niceSuperBK is just really nice
Re: What are we supposed to do!?!?!?!??!?!

Run the default code first. After loading the code into the robot controller, open the terminal, if the statement "printf(..." is not commented out, it will print the values for the joysticks. You can add other variables (like switches) to the printf. Move the sticks and see what values change. Look at Default_Routine() like the other poster said.

Look at ifi_aliases.h for the possible variables you can read and set.

Autonomous mode is in user_routines_fast.c. Look at User_Autonomous_Code(). It runs in a loop so you have to have a state machine. After you get the robot going and a few things figured out, then search around for an example or post back here.

Note: The operator interface will not talk to the robot controller until you set the team number on the IO and tether it first.

Hope this helps,
Brian
  #4   Spotlight this post!  
Unread 11-01-2007, 16:09
Bomberofdoom's Avatar
Bomberofdoom Bomberofdoom is offline
Biggest FIRST addict in Israel
AKA: Nir Levanon
FRC #2230 (Zcharia's Angels)
Team Role: Programmer
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Israel
Posts: 471
Bomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond repute
Send a message via MSN to Bomberofdoom
Re: What are we supposed to do!?!?!?!??!?!

Thanks for the help guys.
I guess the only problem is right now is just trying to dycript those small macros, functions and other varibles and how they relate to the robot or OI.
But our Programming group all agreed that we've reached the begining point and we can probablly see the next step ahead(with minor help from you guys and Delphi).

Thanks again
  #5   Spotlight this post!  
Unread 11-01-2007, 16:19
Bomberofdoom's Avatar
Bomberofdoom Bomberofdoom is offline
Biggest FIRST addict in Israel
AKA: Nir Levanon
FRC #2230 (Zcharia's Angels)
Team Role: Programmer
 
Join Date: Jan 2007
Rookie Year: 2007
Location: Israel
Posts: 471
Bomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond reputeBomberofdoom has a reputation beyond repute
Send a message via MSN to Bomberofdoom
Re: What are we supposed to do!?!?!?!??!?!

BTW, I find the previous codes some people sent very usefull. It'll also help me and the team to get some more work to do(I'm head of the programming team{and look how desperate I was}).
Please send any previous codes you can(with comments of course, so we may understand ). We will really appreciate it.
  #6   Spotlight this post!  
Unread 11-01-2007, 10:39
bear24rw's Avatar
bear24rw bear24rw is offline
Team 11 Programming Captain
AKA: Max T
FRC #0011 (MORT)
Team Role: Programmer
 
Join Date: Sep 2005
Rookie Year: 2005
Location: Flanders, NJ
Posts: 385
bear24rw is a splendid one to beholdbear24rw is a splendid one to beholdbear24rw is a splendid one to beholdbear24rw is a splendid one to beholdbear24rw is a splendid one to beholdbear24rw is a splendid one to beholdbear24rw is a splendid one to behold
Send a message via AIM to bear24rw
Re: What are we supposed to do!?!?!?!??!?!

The team number isnt set in the code, its setting in binary using the dipswitches..

Also, just try to get a copy of someones code (i would upload mine but i dont have it with me) and just look through it and try to learn it. Before last year I didnt have a clue what a #define statement was, i just read over the code from previous years over and over again and read all the programming papers on ifirobotics.com... now i knew the controller inside and out...

Good luck
  #7   Spotlight this post!  
Unread 11-01-2007, 11:21
Joe Johnson's Avatar Unsung FIRST Hero
Joe Johnson Joe Johnson is offline
Engineer at Medrobotics
AKA: Dr. Joe
FRC #0088 (TJ2)
Team Role: Engineer
 
Join Date: May 2001
Rookie Year: 1996
Location: Raynham, MA
Posts: 2,644
Joe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond reputeJoe Johnson has a reputation beyond repute
Re: What are we supposed to do!?!?!?!??!?!

Quote:
Originally Posted by Bomberofdoom View Post
But we don't know what to do in EasyC. We're used to raw C code. These blocks are confusing(safe, but confusing).
I am not surprised that you are confused.

The Default code is a real mess in my opinion. It is a mix-mash of a bunch of legacy stuff from the early years of FIRST and a bunch of patches and band -aids applied to add new features and functions.

Here is the basic idea:
Inputs from the Operator Interface (OI) come from 4 ports -- they themselves are legacy 15 pin game ports from the early days of the IBM PC. Each port has switches and analog inputs.

The switches are defined this way: pN_sw_SWITCHNAME where N refers to the port number and SWITCHNAME refers to "top", "trig", "aux1" and "aux2" Depending on what brand joystick you use these switches will be available out of the box or not -- if not, and you need those switches, you will have to build a custom harness to get access to the switches. The default code has structures and aliases defined for you that allow you to treat these switches as either 1 or 0's

The analog inputs are defined this way:
pN_ANALOGNAME where N refers to the port number and ANALOGNAME
Refer to "X" "Y" "WHEEL" and "AUX" Again depending on what brand joystick you use these analog inputs will be available out of the box or not -- if not, and you need those inputs, you will have to build a custom harness to get access to the analog inputs (wiring in your own potentiometer for example). The default code has structures and aliases defined for you that allow you to treat these analog inputs as either a number between 0 and 255 -- with 127 being the nominal center position of the joystick.

You have similar naming conventions for inputs on the Robot Controller's analog and digital inputs.

The outputs on the RC are basically the PWM values 0-254 and relays (which are of the form rc_dig_outNN).

In order to control a motor, you just assign the PWM output to a value 0 = full rev, 127 = off, 254= full fwd. The default code simply maps joystick values from the OI to PWM outputs on the RC. It also has some example methods of mapping limit switches to particular PWM output so that the motor will turn off when an end of travel switch is made. If you know C and you know how to access the various inputs and outputs, you should be able to write code to let your robot do what ever you need it to do.

Good luck.

Joe J.
__________________
Joseph M. Johnson, Ph.D., P.E.
Mentor
Team #88, TJ2
  #8   Spotlight this post!  
Unread 11-01-2007, 13:38
Mark Pierce Mark Pierce is offline
Registered User
FRC #0085 (B. O. B.)
Team Role: Mentor
 
Join Date: Jan 2002
Rookie Year: 1999
Location: Zeeland, MI
Posts: 239
Mark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant futureMark Pierce has a brilliant future
Re: What are we supposed to do!?!?!?!??!?!

In preparing for some intro to programming sessions I held this year I spent some time looking for what you're after. I'm hoping to organize my thoughts into a white paper or something, but haven't had time to clean it up. Currently there are some of my notes on my website Marks programming page which might help with some references to some resources.

Here's a quick sketch of how our team tries to approach programming:

First: Familiarization -Get the default code compiling, downloading, and the controllers talking to each other, try connecting a joystick and motor or two and see how things work.

Second: Functional Requirements - Identify what functions need to by done by the controller. Every team's program will handle some operator input, use some robot sensors such as limit switches, and drive some outputs. The basic joystick as input and drive train as output is in the default code because it is the most common to all teams.

Third: Design -Break these functions down into smaller pieces and identify those that can be easily handled, and those which you will need to do more research or find help for, such as camera, timers, or other sensors.

Fourth: Implement - Make a working copy of the default code. Cut out parts of the example code that you won't need. Define macros for your names of inputs and outputs. Declare functions or at least insert comments for those things you need to add. Then start coding.

Quote:
Originally Posted by Joe Johnson View Post
The Default code is a real mess in my opinion.
I hope to have something ready soon (this weekend) showing how we are rearranging the default code into a framework to work from.
  #9   Spotlight this post!  
Unread 11-01-2007, 10:29
jakk jakk is offline
Jonathan Kobayashi
FRC #0368 (Kika Mana)
Team Role: Programmer
 
Join Date: Jan 2005
Rookie Year: 2005
Location: Hawaii
Posts: 39
jakk has a spectacular aura aboutjakk has a spectacular aura about
Re: What are we supposed to do!?!?!?!??!?!

Remember that this program actually runs in a HUGE loop. In other words, the program runs through lots of times per second. Program will check the status of the Operator Interface and will adjust the values of the PWMs accordingly. This is how the robot is able to have variable speeds.

As for the PWMs, looks in user_routines.c and look around for the "pwm=xx;" where xx is a number or perhaps another variable like the value of the joysticks.

The default code provided by FIRST controls the Kitbot rather nicely. If hooked up correctly, the Kitbot can move with either 1 joystick or 2.


-----------------------------
The following explaination is based off of the code we used 2 years ago. I'm sorry if I get some things wrong and if I do, please correct me. It has been 2 years since I was a programmer.

void User_Initialization (void)
this is where you initialize the ports on the RC. In other words, you are setting those pins on the Robot Controller to do something, like be an output(gives out power) or input(receives a signal for a sensor).

void Default_Routine(void)
this is where the controls are at. Remember how I said that the program runs in a HUGE loop? Well this is part of that loop. This function looks at all the values of the Operator Interface (like the joystick values) and through some "if" and "else" statements, it can control the motor's speed.

---------------------------------------

Like Qbranch said, easyC is a good introduction to C programming. I think it is setup so there is an "operator control" section and "autonomous" section so it well orgranized.
__________________
http://www.mckinleyrobotics.org
Closed Thread


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

Similar Threads
Thread Thread Starter Forum Replies Last Post
What are Potentiometers? Theory6RobotiX Control System 18 30-12-2005 09:57
PBASIC 2.5 Software supposed to be released TODAY. Travis Hoffman Programming 7 13-01-2003 20:43
What are pneumatics? Aignam Pneumatics 23 16-10-2002 21:17
Who was supposed to be in Huntington?? Heather 45 Off-Season Events 4 16-03-2002 22:43


All times are GMT -5. The time now is 01:22.

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