Using IFI Controller witout Operator System

Hi, my school is working with something called the Lemelson-MIT InvenTeam. Certain schools are chosen to invent some type of machine that will does not currently exist and that has a practical purpose. Our team is building a robotic athletic field striper. To do this we are using the IFI robotics controller. The only problem is that this robot is completely autonomous and it doesn’t run by remote control. Currently, the robot won’t run unless it has a signal from the operator system (joysticks and such) or if it is tethered to the operator system. We need the robot to run without this, any suggestions? I believe there is code we can edit so that it can run without it. The EDUbot doesn’t require anything to be connected so I’m checking out code differences currently but I haven’t come up with anything. Any help would be greatly appreciated.

You could put the Operator interface right next to the OI. And yes, you can edit the code(don’t ask me how, I will let you know if I find out), but you could save more money by going and researching some other systems built for autonomous programming. I have no researched into this myself, so I hope someone else will pop in and help you with this.

Check the RC Reference Guide (emphasis mine):

Why thank you, I’ll try that out.

Does the code go in the regular user_routines.h file or under autonomous code in user_routines_fast.h?


There is a note saying //Insert autonomous code here

My understanding is that simply editing the autonomous code will not allow the robot to operate without the operator interface. Yes, the code will run, but the outputs will remain null. This is because of the way in which the IFI system is designed.

As I understand it, there is a chip on either side of the I/O of the microprocessor in the robot controller. The one on the input side disallows all input from the OI during autonomous mode. The one on the output side disallows all output from the RC when it is not connected to the OI, or when the robot is disabled. This is for safety, which is very important to FIRST. If the robots, which weigh as much as many people, and are considerably more powerful in many circumstances, could drive around when the referees wanted them disabled, that would be disasterous. The IFI system simply does not allow it.

Now, the other suggestion on here, which is basically piggy-backing the OI on top of the RC, tethered, should work.

Good luck with your project.

He might be right, I’ve never tried a auton run with team zero and no OI, it just may not go. If that is the case, instead of piggybacking it, you might want to consider the Edu-Robo-Whatevertheheckitscalled RC, it’ll run the same (well nearly same) C code, drive the same Spikes/Victors/Whatevers, runs on 7.2 volts, is lighter and is designed to operate completely autonomously…

I have, team zero and no oi attached works fine :slight_smile: Stopping it is a whole different matter though.

Does anyone know how to do this with a 2003 or earlier RC that runs PBASIC? I have one right here (since I know how to program PBASIC and not C) and would love to run it without the operator interface but team zero isn’t working for me… If anyone knows, please tell me or PM me.

Anybody? Maybe some tips? Explain what you would normally do? Help? Please?

Ahh! Revival of 2 year old topics! :yikes:

Ironically this was a topic started by one of the members on my team a few years back and I just so happened to come across it!

BTW, for anyone interested, that whole Lemelson-MIT InvenTeam project went very well and worked beautifully, we still have it laying around the shop (though in a dysfunctional state).

Im not sure how many people are familiar with the old 2003 RCs, most student programmers have since moved on (graduated) I would think, I’ll see if I can ask some of our programming mentors if they remember anything, but I’m not even sure if they were on the team back in 2003. :frowning:

That feature didn’t exist in the old RCs. You must have the OI connected (either tethered or radio).

Step1: Connect OI to controller on robot. Forget about autonomous mode. After all the OI just sends the value of the joysticks to the controller, right. The code assigns it to the motors. If you don’t assign it it will not run.

Step2: Use your sensors to determine what you want to do. Like if the sensors sees the light then assign a value to you PWM outluts where your motors are. No matter what mode you are in if you assign 255 to a PWM the motor will run.

I suggest you include a kill switch. Use a switch like a plug. If the plug is out the robot stops.

// include at bottom of code.
if( rc_dig_in01 == 1 )
// switch is open not closed, closed = 0 yes backards its digital
pwm01 = 127; // stops motor
pwm02 = 127; // stops motor

In addition I gave a workshop in 2005 on writing autonomous programs.

If you are still stuc that you need autonomous put this at the top of your program.

autonomous_mode = 1;

This will force on the autonomous bit. It is not necessary but put it on if you like.

I definitely remember testing autonomous modes in 2003 by setting the team number dipswitches on the RC to zero. However, it won’t work if you have a pre-2003 RC, since autonomous mode only came into existence for the 2003 game.

Yes, you’re right. The 2003 PBASIC controller supports this (but only the 2003 controller). 2002 and prior does not.

You can read the RC reference guide for the 2003 controller here.

Please review my post on the first page. You do not have to run this in autonomous mode. It will run fine by your code in normal mode.

The difference in autonomous mode is a bit is set on called autonomous_mode. If this is 1 then your code takes over control of the robot.

If the bit is not on then you allow the controlls to operate the robot. But you can allow you code to run the robot all the time by itself without anyone operating it.

That’s not what the poster is asking for. He wants to run it without the OI - your post does not provide an answer for that.

Thanks everybody for the replies! I’ve been waiting on this information. I definitely have a pre 2003 controller (either 2001 or 2002 since 2003 and 2000 are still in use) I like the older controllers because I’m not familiar with C at all and I’m pretty fluent with PBASIC since I used BOE-Bots while testing stuff. I would just use the BOE with this, but it simply doesn’t have enough ports. I guess I’ll have to finally move up to C this summer. But the 2003 controller has autonomous? Wow, I never knew that… I just reprogrammed our 2003 robot after having to get it working earlier this year but I never saw anything about the autonomous. Oh well… So If I use the 2005 or 2006 controller, will I have to initially start the RC with the OI before becoming completely autonomous, or will it automatically start up without an OI?

You will need the OI only once, connected to the RC by tether cable, in order to set the team number to zero. After that, the RC will always run autonomously until you change the team number back to something non-zero using the same method.