Log in

View Full Version : How many RoboCoach Commands?


compwiz2008
06-01-2008, 20:29
I know that the RoboCoach can only have four buttons, but what if those four buttons did different things in Hybrid mode than in TeleOperate mode. I'm thinking of having technically eight commands. Four in Hybrid and Four in TeleOperation. For example the programming might look a little like this:

If in Hybrid {
If 1 pressed {
Do action 1
}

If 2 pressed {
Do action 2
}

If 3 pressed {
Do action 3
}

If 4 pressed {
Do action 4
}}

If in TeleOperate{
If 1 pressed {
Do action 5
}

If 2 pressed {
Do action 6
}

If 3 pressed {
Do action 7
}

If 4 pressed {
Do action 8
}}

Rule G01 and G02 states that the robot can only respond to four signals from the RoboCoach, but the signal that changes the mode from Hybrid to TeleOperate does not come from the RoboCoach, it comes from the Robot Operator Interface.

Did I just find a loophole? :ahh:

Unfortunately, now that I think about it more, why would I use the IR Remote during TeleOperate if the Operator Interface has plenty of Inputs? Expecially since the OI has less frequency interference than the IR remote (from what I've been reading) and is more predictable.

ewankoff
06-01-2008, 20:32
along the same line of thought, can you program your robot to respond to a series of comands such as, 1,2,3 or 2,4,1 to be two distinct operations?

Chrisms
06-01-2008, 20:33
it's not a loophole, just creativity of coding.

also, think about this:
if you had one of your commands "cycle" through a list of 3 other commands, you could have an infinite amount of commands from 4 inputs. however... your robocoach will go nuts trying to figure out which command is which. Maybe if you had a card counter or something.. hmmm.

frewre06
06-01-2008, 20:35
I was thinking about this today too. Something else occurred to me. Theoretically there could be 16 command (possibly more), if you were to combine them. However with the interference issues, it would need to be less.

I have no comment on this with regard to the rules, but it makes sense if your needs require more than just 4 commands.

bluexice27
06-01-2008, 20:36
We are't even considering using the remote unless its the first few seconds of hybrid mode considering every one else is going to be using there remotes and the command might not be sent and we mite just screw up our whole programming , and lose our chance of scoring in the hybrid mode.

Laaba 80
06-01-2008, 20:39
I'm not positive, but I think I remember reading that you can only have 4 commands from the IR and that you cant do any of that stuff, but I may be wrong. Even if you could do that, you have to display a 3 by 5 notecard saying everything that you may tell the robot to do. If you use the combinations like that, you will need alot of notecards.:D
Joey

Uberbots
06-01-2008, 20:48
one of the rules is that you cannot dynamically change control sets... sorry!

EricH
06-01-2008, 20:50
From the manual:
<G01> HYBRID PERIOD - The HYBRID PERIOD is the 15-second period at the start of the MATCH. Driver control of the ROBOT is not permitted at this time. During this period, the ROBOTS may react only to sensor inputs and commands programmed into the onboard control system. The only external signals that may be received by the ROBOT are those sent from ALLIANCE ROBOCOACHES. No external signals are permitted from any other source. The ROBOT may react to no more than four distinct external commands provided by the ROBOCOACH. All ROBOT safety rules are still applicable during the HYBRID PERIOD. The HYBRID PERIOD ends when the arena timer displays zero seconds left in the period.

<G49> ROBOCOACH Signaling – If the ROBOCOACH will be providing signals to the ROBOT, then prior to the start of each MATCH the ROBOCOACH must place a Signaling Card in the ROBOCOACH STATION. The Signaling Card shall be a 3-inch by 5-inch card listing the one to four actions that can be commanded by the ROBOCOACH.(emphasis mine)

So, the long and the short of the matter is, you get four commands that can't change during a match. (Between matches is another story.)

marccenter
06-01-2008, 20:59
Do you think it is within the spirit of the rules to use multiple key combinations (1-2-3, 4-5-6, 7-8-9, .i.e) to
activate the four different operating modes? This way,
a team could reduce the likelihood of another remote
operating their robot during the hybrid period.:confused:
The 3 by 5 cards would still say, for example, forward,
left, right, and reverse. Forward could be 1-2-3, Left
4-5-6, Right 7-8-9). This should maybe be a new thread.

yoyodyne
06-01-2008, 21:01
I think that the Robocoach can only make the robot do 4 things during a match. As for the changing from hybrid to tele - the second bullet of <R69> specifically disallows that.

• The ROBOT shall not dynamically change the recognized command set during a MATCH.

As far as combining commands to create more combinations the last bullet of <R65> explicitly disallows that

• not use changes in the signal states to encode or transmit larger messages (e.g. Morse
code)

We were of course also thinking about techniques to increase the number of commands and it has become clear that there can only be the 4 that are on the card posted on the Robocoach station.

Good luck,

Greg

GBIT
06-01-2008, 21:17
Do you think it is within the spirit of the rules to use multiple key combinations (1-2-3, 4-5-6, 7-8-9, .i.e) to
activate the four different operating modes? This way,
a team could reduce the likelihood of another remote
operating their robot during the hybrid period.:confused:
The 3 by 5 cards would still say, for example, forward,
left, right, and reverse. Forward could be 1-2-3, Left
4-5-6, Right 7-8-9). This should maybe be a new thread.


i cant see why not seeing it is still only four actions. correct me if im wrong.

EricH
06-01-2008, 21:27
i cant see why not seeing it is still only four actions. correct me if im wrong.It's also harder to do. And, see <R65>:
<R65> SIGNALING DEVICES shall be designed to communicate signals from the ROBOCOACH to the ROBOT. SIGNALING DEVICES are excluded from Rule <R64>. SIGNALING DEVICES shall:
• use either passive (no emission of any electromagnetic radiation) or active (emits some restricted form of electromagnetic radiation) means of communication
• be hand held and completely supported by the ROBOCOACH when operated
• does not attach to anything or anyone other than the ROBOCOACH
• exclusively receives input from, and is operated by, the ROBOCOACH
• not receive any input or feedback directly from the ROBOT (the ROBOCOACH may receive feedback from the ROBOT and use it to control the SIGNALING DEVICE)
• be no larger than 3 feet tall by 3 feet wide by 1 foot deep (to fit within the confined volume of the ROBOCOACH STATION
• remain entirely within the ROBOCOACH STATION
• use a maximum of four different inputs from the ROBOCOACH (e.g. use four different buttons) during any single MATCH
• communicate no more than four messages, states or conditions to the ROBOT (please refer to Rule <R69> and Rule <G01> for additional information) during any single MATCH.
(emphasis mine)

Can we put the lawyers to bed now? I'm pretty sure the intent is FOUR buttons control FOUR commands, in a 1:1 ratio.

Phalanx
06-01-2008, 21:31
My thoughts are like this for the moment.....

Let's say you have 16 selectable autonomous/modes for your Robot. Each one of those modes uses only 4 commands, but the 4 commands mean different things depending on the selection setting.

In each round the ROBOCOACH would have a card that list each of the 4 commands used in that mode, or 16 cards of 4 commands each. So in theory you only have 4 commands for any given match, but up to 64 commands available to choose from or 16 command sets to choose from.

To me this seems completely doable and within the rules.

I do think that some clarification from the rules committee is needed.

EricH
06-01-2008, 21:33
My thoughts are like this for the moment.....

Let's say you have 16 selectable autonomous/modes for your Robot. Each one of those modes uses only 4 commands, but the 4 commands mean different things depending on the selection setting.

In each round the ROBOCOACH would have a card that list each of the 4 commands used in that mode, or 16 cards of 4 commands each. So in theory you only have 4 commands for any given match, but up to 64 commands available to choose from or 16 command sets to choose from.

To me this seems completely doable and within the rules.

I do think that some clarification from the rules committee is needed.As long as multiple automodes are permitted, this would be legal as long as you didn't change during the match.

compwiz2008
06-01-2008, 23:16
Thank for all the answers. I think it is abvious that the FIRST rules do not want us to have more than four methods and four buttons, one for each button. Thankfully, our design only needs three, and one as an emergency stop.

As I said earlier, were just going to use the Operator Interface for buttons instead of the remote during TeleOperate.

David
06-01-2008, 23:46
it's not a loophole, just creativity of coding.

also, think about this:
if you had one of your commands "cycle" through a list of 3 other commands, you could have an infinite amount of commands from 4 inputs. however... your robocoach will go nuts trying to figure out which command is which. Maybe if you had a card counter or something.. hmmm.

You could have a few status lights on the robot to tell the robocoach what programming set he had on.

I think that the Robocoach can only make the robot do 4 things during a match. As for the changing from hybrid to tele - the second bullet of <R69> specifically disallows that.

• The ROBOT shall not dynamically change the recognized command set during a MATCH.


If this rule is interpreted literally you would have to have, for example, a button to turn left then a button to stop turning. I believe this rule is intended so teams cannot change code "on-the-fly" during a match (i.e. downloading new code through some remotely operate serial cable). I do not believe this rule prevents cycling through commands like Chrisms and others have stated. Also if your team had PID or traction control and one of your commands was drive straight, then, if interpreted literally, you would have violated this rule (the robot is dynamically changing motor speed depending on the robot's speed).

663.keith
07-01-2008, 00:03
You could have a few status lights on the robot to tell the robocoach what programming set he had on.



If this rule is interpreted literally you would have to have, for example, a button to turn left then a button to stop turning. I believe this rule is intended so teams cannot change code "on-the-fly" during a match (i.e. downloading new code through some remotely operate serial cable). I do not believe this rule prevents cycling through commands like Chrisms and others have stated. Also if your team had PID or traction control and one of your commands was drive straight, then, if interpreted literally, you would have violated this rule (the robot is dynamically changing motor speed depending on the robot's speed).

I believe that it is pretty apparent that the intention of the rules is to only have four commands ever sent to the robot. The GDC went as far as to state this in three separate rules <G01> <R65> and <R69>. I think the best way to interpret this rule is by the 3x5 card where you have to state what the four commands are, if you can write the commands in such a way that there are only 4 commands, i would say it is legal.

for more information i would suggest looking into this topic
http://www.chiefdelphi.com/forums/showthread.php?t=60694&highlight=R65

specific rules are listed in my previous post on this matter
http://www.chiefdelphi.com/forums/showpost.php?p=669364&postcount=25

jgannon
07-01-2008, 00:09
Can we put the lawyers to bed now? I'm pretty sure the intent is FOUR buttons control FOUR commands, in a 1:1 ratio.
I'm mostly interested in figuring out what a "command" is so I can make sure that my students are doing it properly, and so I can explain what they're doing wrong when the issue inevitably arises. I could envision somebody writing this piece of code:
int *fwd[] = {&relay1_fwd, &relay2_fwd, &relay3_fwd, &relay4_fwd, &relay5_fwd};
int *rev[] = {&relay1_rev, &relay2_rev, &relay3_rev, &relay4_rev, &relay5_rev};
int index = 0;

while(true){
if(button == 1)
index = (index + 1) % 5;
if(button == 2){
*(fwd[index]) = !*(fwd[index]);
*(rev[index]) = !*(rev[index]);
}
}
And their index card reads:
Button 1: Chooses a relay
Button 2: Toggles a relay
So, using two buttons, I am able to turn any of five relays on or off. My command set never changes. I'd call this two commands. I suspect that some people would call it ten, but that seems like a bizarrely strict interpretation, and I'd expect a lot of askance looks from anyone I tried to tell that to. If that is indeed the case, I expect that a lot of teams won't do it properly for a lack of understanding, and that it will be impossible to police.

EricH
07-01-2008, 00:15
I'm mostly interested in figuring out what a "command" is so I can make sure that my students are doing it properly, and so I can explain what they're doing wrong when the issue inevitably arises. I could envision somebody writing this piece of code:
[snip]
So, using two buttons, I am able to turn any of five relays on or off. My command set never changes. I'd call this two commands. I suspect that some people would call it ten, but that seems like a bizarrely strict interpretation, and I'd expect a lot of askance looks from anyone I tried to tell that to. If that is indeed the case, I expect that a lot of teams won't do it properly for a lack of understanding, and that it will be impossible to police.I should have said actions. The rules say actions as well. (Granted, you've got a point, but I think common sense should win over the lawyers in this case.)

Vogel648
07-01-2008, 01:14
• The ROBOT shall not dynamically change the recognized command set during a MATCH.
I was under the impression that this rule was to keep people from choosing which 4 signals to recognize after the match had already started, not it couldn't change it's reaction based on it. So if I were commanding my arm to a specific angle during autonomous it wouldn't be illegal for that to move the arm up sometimes and not others I don't think. But what if I had a + button a - button and 2 toggle mode buttons. The two buttons ALWAYS toggle the mode, the + and the - always effect the mode in the + or - direction... It's really hard to interpret such a rule if you read it as "your robot can only react in 4 different ways to inputs", which is why I think that really can't be.

My 2 cents
-nrv

Uberbots
07-01-2008, 02:14
I should have said actions. The rules say actions as well. (Granted, you've got a point, but I think common sense should win over the lawyers in this case.)

But the thing is... does it mean physical actions or any action? because you could just map a button to a bit in a 4 bit number, and the remote will not send any encoded messages over nor will it be changing the message set dynamically. granted that would be a beast for the robocoach to control, but still...

JohnC
07-01-2008, 02:24
...So, using two buttons, I am able to turn any of five relays on or off. My command set never changes. I'd call this two commands. I suspect that some people would call it ten, but that seems like a bizarrely strict interpretation, and I'd expect a lot of askance looks from anyone I tried to tell that to.

We're looking at that too. Specifically:

A: cycles through positions on the overpass
B: sets position (where our ball is)
C: cycles through starting positions in the home stretch
D: sets starting position

that way the robot will know where it is and where the ball is, and can conduct itself appropriately.

What is the CD opinion on that?

Guy Davidson
07-01-2008, 02:44
C: cycles through starting positions in the home stretch
D: sets starting position

Why not just have a physical four-position switch on the robot connected to two digital inputs and use those to specify the position of the robot? You'll know it when you place it, and you have the freedom of using the fourth position to do whatever you want.

JohnC
07-01-2008, 05:18
Why not just have a physical four-position switch on the robot connected to two digital inputs and use those to specify the position of the robot? You'll know it when you place it, and you have the freedom of using the fourth position to do whatever you want.

Because almost a year ago now, at PNW 2007, I hung out with one of the mars rover guys (Mark Leon) who told us the exact same story Lavery did (plus lots of other fun stuff :)) so I'm inspired to play it how I think they want us to.

We did do something similar to that last year with our various autonomous modes though.

MrForbes
08-01-2008, 12:35
It's also harder to do. And, see <R65>:
(emphasis mine)

• use a maximum of four different inputs from the ROBOCOACH (e.g. use four different buttons) during any single MATCH
• communicate no more than four messages, states or conditions to the ROBOT (please refer to Rule <R69> and Rule <G01> for additional information) during any single MATCH.

Can we put the lawyers to bed now? I'm pretty sure the intent is FOUR buttons control FOUR commands, in a 1:1 ratio.

I'm not quite ready to put it to bed....I see no rule violation (either literal or in spirit) if you transmit 4 different sequences of the four buttons, to execute 4 different high level commands.

For example, using the number buttons,

Drive straight: 241
Turn left: 134
Whack ball: 423
Stop: 123

The signal that the remote sends when you push one button is coded already, somehow, isn't it? I see no rule preventing you from changing the coding scheme.

Might be a Q&A question...with emphasis that the intent of this method is to improve safety by reducing communication errors :)

JohnC
09-01-2008, 00:43
I'm not quite ready to put it to bed....I see no rule violation (either literal or in spirit) if you transmit 4 different sequences of the four buttons, to execute 4 different high level commands.

End of <R65>
not use changes in the signal states to encode or transmit larger messages (e.g. Morse code)

Uberbots
09-01-2008, 01:52
I'm not quite ready to put it to bed....I see no rule violation (either literal or in spirit) if you transmit 4 different sequences of the four buttons, to execute 4 different high level commands.

For example, using the number buttons,

Drive straight: 241
Turn left: 134
Whack ball: 423
Stop: 123

The signal that the remote sends when you push one button is coded already, somehow, isn't it? I see no rule preventing you from changing the coding scheme.

Might be a Q&A question...with emphasis that the intent of this method is to improve safety by reducing communication errors :)

You cant say with this method that one button is doing one thing, as they are always part of a larger message.

MrForbes
09-01-2008, 08:21
Not at all! The message is what comes out the other end...and I am still only selecting one of 4 commands, which is what the rules allow.

Note that I specified the message in each case:

For the message "Drive straight", the signal is: 241
For the message "Turn left", the signal is: 134
For the message "Whack ball", the signal is: 423
For the message "Stop", the signal is: 123

I have modified the SIGNAL to be 3 characters, but I have NOT changed the number of MESSAGES. The are still only 4 messages.

===================================

To show you what would be illegal, consider this example of a use of a larger number of coded messages, with a smaller signal:

The message "drive" uses a first digit of 1
The message "turn" uses a first digit of 2
The message "manipulate ball" uses a first digit of 3
The message "stop" uses a first digit of 4.

Now, we get to the illegal part:

For a first digit of 1, the second digit of 1 means "slow"
For a first digit of 1, the second digit of 2 means "medium"
For a first digit of 1, the second digit of 3 means "fast"

For a first digit of 2, the second digit of 1 means "right"
For a first digit of 2, the second digit of 2 means "left"

For a first digit of 3, the second digit of 1 means "pop off overpass"
For a first digit of 3, the second digit of 2 means "pick up"
For a first digit of 3, the second digit of 3 means "drop"

For a first digit of 4, the second digit of 1 means "with manipulator down"
For a first digit of 4, the second digit of 2 means "with manipulator up"

See how in this illegal example, we use only the 4 digits, and the signal is only two characters long, but it is decoded into ten different MESSAGES!

jtdowney
09-01-2008, 08:52
I'm not quite ready to put it to bed....I see no rule violation (either literal or in spirit) if you transmit 4 different sequences of the four buttons, to execute 4 different high level commands.


R65 states
Active SIGNALING DEVICES shall:
* be operated through only a single input at any given time (e.g. may not be operated by depressing two buttons at one time)

MrForbes
09-01-2008, 09:02
Pressing two buttons in sequence is not the same as pressing two buttons at once.

However, it is likely that the intent of that rule is also to prohibit the longer signal scheme I presented.....so if someone plans to use this scheme, it would be wise to ask about it on the Q&A

jtdowney
09-01-2008, 09:22
Pressing two buttons in sequence is not the same as pressing two buttons at once.

Well then R65 also states

Active SIGNALING DEVICES shall:
* not use changes in the signal states to encode or transmit larger messages (e.g. Morse code)

Which rules out sending a sequence of button commands for one command.

MrForbes
09-01-2008, 09:30
Didn't I just explain how this does NOT increase the complexity of the message? (ie. it is not transmitting more than more 4 messages) I guess I did a lousy job the first time :)

Let's say you want to transmit for different commands, which are:

Drive straight
Turn left
Whack ball
Stop

First case: You could use a single button for each one

Drive straight = "1" button
Turn left = "2" button
Whack ball = "3" button
Stop = "4" button

Second case: You could make it use the sequential pressing of 3 buttons for each one:

Drive straight: press "2" button, then press "4" button, then press "1" button
Turn left: press "1" button, then press "3" button, then press "4" button
Whack ball: press "4" button, then press "2" button, then press "3" button
Stop: press "1" button, then press "2" button, then press "3" button

What is the message in each case?

In the first case, the first message is "Drive straight". In the second case, the first message is "Drive straight".

How is "Drive straight" a longer message than "Drive straight"?

I don't understand.

Alan Anderson
09-01-2008, 09:46
Didn't I just explain how this does NOT increase the complexity of the message? (ie. it is not transmitting more than more 4 messages)
...
How is "Drive straight" a longer message than "Drive straight"?

I don't understand.

"Drive straight" is not a message, it's an action. With the sequential button presses in your example you're obeying the "do no more than four actions" rule, but you're still violating the "don't use changes in signal states to send long messages" rule.

johnr
09-01-2008, 09:59
so who is going to confirm that six robots are doing exactly what is written on six small cards? six more refs? instant replay? gp?

jtdowney
09-01-2008, 10:03
We can sit here and argue semantics until the cows come in but I think the rules have very clearly stated the way the Hybrid mode should operate is you have 4 buttons that do 4 actions and those actions cannot change the actions the other buttons perform. It doesn't matter how complex or simple your IR commands are. Button 1 can only make it do one thing and the same with buttons 2 through 4.

MrForbes
09-01-2008, 10:05
I am doing the following things:

--using a maximum of four different inputs from the robocoach

--communicating no more than four messages, states, or conditions to the robot

--limiting the robot to react to four distinct commands

--I am helping to insure that the robot will only react to permitted signaling devices belonging to the assigned alliance


I am not doing any of the following prohibit things:

--switching between more than 4 states or conditions

--operating thru more than one input at a time

--using changes in signal states to encode or transmit larger messages (eg Morse code)

(note that morse code uses only two digits to encode the whole alphabet and number set, where I am using 4 different 3 character long sequences of 4 numbers to encode 4 different messages)

I still don't understand how this is a violation of any of the rules.

Alan Anderson
09-01-2008, 10:32
I am not doing any of the following prohibit things:
...
--using changes in signal states to encode or transmit larger messages (eg Morse code)

That is exactly what you are doing.

(note that morse code uses only two digits to encode the whole alphabet and number set, where I am using 4 different 3 character long sequences of 4 numbers to encode 4 different messages)

I still don't understand how this is a violation of any of the rules.

You said it yourself. You're using long sequences of numbers. You're using changes in signal states to encode larger messages. Your signals are "1", "2", "3", and "4". Your messages are "2 4 1", "1 3 4", etc. I see no way for you to legitimately claim that you're not sending a message encoded by multiple signals. The fact that you only define four of the possible 256 four-character messages doesn't alter the fact that you're using messages created by changes in signal states.

(Morse code actually uses a set of either three or four symbols, not two "digits", but that's beside the point.)

MrForbes
09-01-2008, 10:39
(I agree about Morse code, I didn't mention the short and long spaces)

What you say may be true, but could you please quote a rule that says so?

I can't find one.

Nate Laverdure
09-01-2008, 10:45
Sorry to be in the middle of this epic Morse code throwdown, but I have a thought:
Could a lack of a command also be a command? Would it count as one of the four?

Example: Press "1" and the robot does something. If no command is received in the next three seconds, the robot reverts to a previous behavior until another button is pushed.

In this example, you are technically sending information by not pressing a button within a time period. Would this count as a command?

GaryVoshol
09-01-2008, 10:47
Sorry to be in the middle of this epic Morse code throwdown, but I have a thought:
Could a lack of a command also be a command? Would it count as one of the four?

Example: Press "1" and the robot does something. If no command is received in the next three seconds, the robot reverts to a previous behavior until another button is pushed.

In this example, you are technically sending information by not pressing a button within a time period. Would this count as a command?
Wouldn't that be very similar to a command "Move forward for 3 seconds"? That sounds legal.

Alan Anderson
09-01-2008, 10:55
What you say may be true, but could you please quote a rule that says so?
I can't find one.

<R65>. You've quoted it yourself. "...Active SIGNALING DEVICES shall:...be able to switch between no more than four states or conditions (i.e. send no more than four messages)...not use changes in the signal states to encode or transmit larger messages (e.g. Morse code)"

Nate Laverdure
09-01-2008, 10:57
Wouldn't that be very similar to a command "Move forward for 3 seconds"? That sounds legal.
OK, I agree with you. But here's how I can exploit this to gain an extra command:
Program 5 time slots into the 15-second hybrid mode. Within each 3-second time slot, a command must be received for the robot to do something. So a potential history of these time slots might look like this:

Time / Command
00:00 / 1
00:03 / 2
00:06 / 4
00:09 / 3
00:12 / 2

But what if I wanted to add an additional command to the system and remain below the refs' radar?

Time / Command
00:00 / 1
00:03 / No command sent
00:06 / 4
00:09 / 3
00:12 / 2

You could program the "No command sent" command to do anything, not just revert to previous behavior. Perhaps "No command sent" means "turn left." How many commands do I really have now?

MrForbes
09-01-2008, 11:01
I'll discuss the epic Morse code thing with Alan off line and see what we come up with....

Anyways, if your command set includes "if 4 is pressed within 3 seconds of 1 being pressed, then do the fourth thing, else do the fifth thing" then I think you are using 5 commands.

Alan Anderson
09-01-2008, 11:40
I'll discuss the epic Morse code thing with Alan off line and see what we come up with...

I've already quoted the applicable rule and shown why I think that your examples have at least one of the prohibited qualities. If you still don't think the rule applies, there's nothing more I can say, either in public or private, to convince you that your proposal breaks it.

MrForbes
09-01-2008, 12:10
I realize that, but I think it's because I can see a difference between a message and the coded signal used to transmit that message, and you apparently can't see that difference, or think it is irrelevant.

If anyone wants to play with the scheme I mentioned, I'd suggest asking about it in Q&A.

Jon Stratis
09-01-2008, 12:20
OK, I agree with you. But here's how I can exploit this to gain an extra command:
Program 5 time slots into the 15-second hybrid mode. Within each 3-second time slot, a command must be received for the robot to do something. So a potential history of these time slots might look like this:

Time / Command
00:00 / 1
00:03 / 2
00:06 / 4
00:09 / 3
00:12 / 2

But what if I wanted to add an additional command to the system and remain below the refs' radar?

Time / Command
00:00 / 1
00:03 / No command sent
00:06 / 4
00:09 / 3
00:12 / 2

You could program the "No command sent" command to do anything, not just revert to previous behavior. Perhaps "No command sent" means "turn left." How many commands do I really have now?

My team and i believe the idea of a "no command sent" command is entirely within the letter and the spirit of the rule - such a command is called default behavior. The presence of this default behavior in the robot is critical. Without it, the Mars Rover wouldn't work. The programming on the rover isn't as simple as "drive straight unless i tell you to do something else". No, it probably has code that avoids collisions with big rocks or skirts around the outside of craters instead of falling in. The presence of a command from NASA (lets say drive straight for 500 feet) might override these behaviors and cause the Rover to head down into a crater. Thus the presence of a signal causes certain behavior, as does its absence.

With the game this year, there is a pretty small number of finite states you could have for your robot. A basic state diagram for one might be something like "drive straight. stop. knock ball off. drive straight. turn to the left in an arc of radius X. goto state 1". Pretty simple stuff, doesn't really require input from the robocoach to go through knocking random balls off. Now, you might modify the above state machine to throw in some bypasses - "if we're in state one(driving straight) and receive a "1" signal, turn to the left 5 degrees. a "2" signal turn to the right 5 degrees". That would give you three possible behaviors for that portion of operation using only two button pushes. you could also have buttons 3 and 4 modify state 5 (turning at radius X) so you turn at a different radius to line up with your ball on the other side - a default radius might take you from the outside of the track to the inside (or inside to outside), while a signal of "3" could be a tight radius (inside to inside) and a signal of 4 could be a wide radius (outside to outside)... that would give you again 3 possible behaviors using only 2 signals.


So i would say using the absence of a signal to dictate robot behavior is entirely acceptable, making your example above perfectly fine. You do need to be careful, however, when talking about breaking the hybrid period into time slots - there's a powerful urge there to have signals mean something different in different time slots, which, i think, would be breaking the rule.

Mark McLeod
09-01-2008, 12:37
Q&A will need to clarify more of this Hybrid interaction.
The mixture of autonomous control and the 4 Robocoach commands can make for quite a variety of responses even under the most benign of conditions.

For example, a robot that senses and avoids traffic jams autonomously,
and a Robocoach command to order a left or right override.
The robot can detour all over the field on just those two commands.

ebarker
09-01-2008, 12:45
Sorry to be in the middle of this epic Morse code throwdown, but I have a thought:
Could a lack of a command also be a command? Would it count as one of the four?

Example: Press "1" and the robot does something. If no command is received in the next three seconds, the robot reverts to a previous behavior until another button is pushed.

In this example, you are technically sending information by not pressing a button within a time period. Would this count as a command?

If Press "1" says "go forward for three seconds" that is an command that execute a preprogrammed sequence. Like "go explore that rock".

Not pressing "1" within 3 seconds is not sending a command. The bot is simply playing out it's program.

Pressing "1" again before the 3 seconds to restart the timer could be considered
1) reissuing the command (so you are patting the "watchdog)
2) or a new type of command (extended period)

Nate Laverdure
09-01-2008, 14:00
If your robot ever makes this decision, then IMO, you have sent a command to the robot, even if you HAVE NOT sent any signal to your robot:

1. Doing Action A for 3 seconds...
2. Has a signal been sent to the robot in the last 3 seconds? If so, GOTO 3. If not, GOTO 4.
3. Doing Action B...
4. Doing Action C...

ebarker
09-01-2008, 14:19
If you press "1" and that means

"go explore that rock, drill a hole in it, do some chemistry, and back up ten feet and stop."

That is a single command. A complex command but still a single command.

It is what a lot of different types of devices do.

Jon Stratis
09-01-2008, 16:30
If your robot ever makes this decision, then IMO, you have sent a command to the robot, even if you HAVE NOT sent any signal to your robot:

1. Doing Action A for 3 seconds...
2. Has a signal been sent to the robot in the last 3 seconds? If so, GOTO 3. If not, GOTO 4.
3. Doing Action B...
4. Doing Action C...

So how do you account for default behavior? The hybrid mode isn't supposed to be a different form of teleoperation - it's an automated period with guided oversight. You can send signals to your robot that are designed to change its behavior, so the whole concept of "if signal received goto 3, else goto 4" is perfectly legitimate. I would say that a communications window (like the 3 seconds posted above) is also perfectly legal - in fact, it's a concept that is used all the time in industry. Do you think the Rover has it's modem powered on 24/7? My guess would be that it is set up to turn on at set times to receive any new instructions - that saves on power consumption, which is a pretty important part of such a device - without it, they would have to design the rover to be able to draw more power at any given time than it does if only some parts are on at once. That means that the rover would be bigger, and weigh more, and thus be more expensive to send to Mars.

Ziaholic
09-01-2008, 16:47
I'm not clear on the benefits of Squirrell's proposal ... while I do agree with most of the comments that this is not a legal operation.

What exactly do you gain by sending 123 or 456 or 789 versus a simple 1 or 2 or 3? What are the benefits of sending an (imo illegal) multi-button command?

If alliance and/or opponent interference is the problem that you're trying to avoid then perhaps we should get some time prior to match start to verify that our remote commands do not overlap. It'd be a darned shame if in the middle of my Auto-HURDLE, my alliance partner inadvertantly makes me TURN LEFT!
:ahh:

This concern will end up influencing my team's placement of the IR sensor, to make sure that we have access to the PROGRAMMING button ... we can re-load the 1/2/3/4 buttons from our (very typical) Sony remote control into something like CH UP / CH DN / MUTE / MENU ... or some other keys.

JohnC
09-01-2008, 18:24
I am not doing any of the following prohibit things:

--switching between more than 4 states or conditions

It says you can't use "changes in the signal states to encode or transmit larger messages." Let me explain it by defining the words so that it makes sense that what you're doing is illegal.

I don't know exactly how IR works, but let's say every single button press on every single remote control in the world has a unique wavelength, and that's how the board identifies them. I know they aren't that unique, but just for the sake of argument.

Now let's say you press the "A" button. Good, now you press the "B" button. The signal state has changed from x nanometers in wavelength to y nanometers in wavelength, and by doing so it has encoded a larger message.

If that explanation doesn't make it crystal clear... then I guess go ahead and use your idea.

But what if I wanted to add an additional command to the system and remain below the refs' radar?

Dude... gracious professionalism. Come on. I read what you said and it doesn't look like having that default in there is breaking any rules, but language like that makes your intent seem questionable.

Nate Laverdure
09-01-2008, 18:37
Wouldn't that be very similar to a command "Move forward for 3 seconds"? That sounds legal.
My team and i believe the idea of a "no command sent" command is entirely within the letter and the spirit of the rule - such a command is called default behavior.
Not pressing "1" within 3 seconds is not sending a command. The bot is simply playing out it's program.
So how do you account for default behavior?
Wow, nobody agrees with me? I didn't expect that.

All of you are concerned with default behavior. Specifically, you all mention that when the Action (which is triggered by the Command) ends, then the robot should default to Default Behavior.

Let me first define some of my terms:
Action -- a series of clearly defined movements; can be as simple as "move faster" or as complicated as "go explore that rock, drill a hole in it, do some chemistry, and back up ten feet and stop." (credit: ebarker)
Command -- any information sent to the robot to trigger an action; according to FIRST rules, there can be no more than four distinct commands.
Default Behavior -- whatever the robot was doing before any commands were issued, and before any actions were embarked upon.

Now if you'll bear with me, imagine this: what if the default behavior was that the robot was standing still, and would remain standing still unless any other command was received?

Now my examples and previously expressed exasperation should make sense, and you should agree with me that what I describe is illegal according to the 2008 rules, but in case it doesn't make sense and/or you don't agree, I'll walk through the 15-second hybrid period, time slot by time slot. If you're just tuning in now, you'll need to refer to my previous post to understand what I'm talking about.

Time
00:00 -- Hybrid period begins. The robot begins its default behavior, which, as I previously mentioned, is standing still.
00:00 - 00:03 -- Command "1" is received. Action "A" is triggered.
00:03 - 00:06 -- No command is sent. Since no command is received in this time slot (00:03 - 00:06), Action "E" is triggered.
00:06 - 00:09 -- Command "4" is received. Action "D" is triggered.
00:09 - 00:12 -- Command "3" is received. Action "C" is triggered.
00:12 - 00:15 -- Command "2" is received. Action "B" is triggered.

Action E is triggered by the lack of a command in any of the 5 time slots, would NOT normally happen as a part of Default Behavior.

This is what I've been trying to say: it is possible to
1) transmit a command,
2) and trigger any action (including complex series of events),
without actually sending a signal to the robot. AND, if the sum total of the distinct commands (including any commands sent by a LACK of a signal) total more than four, then the robot is violating the rules.

Dude... gracious professionalism. Come on.
I was being facetious. I don't want to break the rules-- I just want to let other people know that as the rules are currently written, there is a whole lot of room for interpretation.

Alan Anderson
09-01-2008, 21:09
What exactly do you gain by sending 123 or 456 or 789 versus a simple 1 or 2 or 3? What are the benefits of sending an (imo illegal) multi-button command?

As I understand it, the extra complexity is intended to provide some immunity to accidental triggering of actions.

ebarker
09-01-2008, 21:31
So what I'm seeing is action "E" occurs after any of A, B, C, or D. E is just simply an extension to the other four. In other words the E property is contained inside of the A,B,C,D.

Think of it this way. If you have multiple programs you can choose several ways to implement things.

abort - pressing A then B. B aborts A and executes B.
example. A = go forward, B = stop

interrupt - pressing A then B. B interrupts A and executes and the returns which lets A resume it's task.
example. A = make tea, B = make coffee, when done go back to making tea

queue - pressing A then B. A is executed completely, then B
example, A = make tea, B = then make coffee

What I think is clearly forbidden and against the spirit of the rules is this:
If you telegraphed within a short interval say:

AAA - program #1
AAB - program #2
ABC - program #3
ABD - program #4
ABA - program #5
DBA - program #6
DAD - program #7

and the list go's on and on, etc

"It is left as an exercise to the student to determine the number of permutations."

ebarker
09-01-2008, 22:26
More -
Definitions:

lawyering - turning and twisting an interpretation to suit the needs of the reader, usually to the detriment of the person or group that wrote the document.

specification - fullfilling a customer need, making a precise determination what the customer needs in the product.

It is generally agreed that "lawyering" is undesirable and we don't want to telegraph a zillion messages.

So let's see if we can fulfill this customer specification.

buttons = A - go, B - turn left, C - turn right, D - stop

example #1 - a command can cancel or abort a previous command
elapsed time
0 - A start going forward
3 - B stop and turn left
5 - A start going forward
7 - D stop

example #2 a command can interrupt a previous command
elapsed time
0 - A start going forward
3 - B keep going and turn left
5 - D stop
7 - C turn right and stop

In example #2 it interrupts the previous command and resumes after completion. The theoretical principal is the same as a software interrupt. Just a different implementation.

Back to lawyering versus specification.

Clearly using 4 buttons to telegraph a zillion programs is forbidden.

But does our customer want the behavior in example #1 or #2 ???

(This sounds like my job every day, discerning this type of customer spec.)


Two more examples.

buttons = A - go control, B - turn left control, C - turn right control

Notice the button descriptions are slightly different than above

example #3 - a command can cancel or abort a previous command
elapsed time
0 - A start going forward
3 - A stop
5 - B start turning left
7 - B stop turning left

example #4 a command can interrupt a previous command
elapsed time
0 - A start going forward
3 - B start turning left and keep going
3 - B stop turning left and keep going
5 - A stop

are examples #3 and #4 legal ? And if so how do label the 3x5 card ?


1st card
buttons = A - go, B - turn left, C - turn right, D - stop

2nd card
buttons = A - go control, B - turn left control, C - turn right control

?????????????

KRV
10-01-2008, 20:27
I think that there is a definite difference between an action and a state change. For example, if pressing button A "switches direction," is that legal? In some cases, it allows the robot to move forward, but other times backward...

My question, though, is how many total times can the Robocoach press the various buttons? Say A is turn left, B is turn right, C is manipulator up, and D is manipulator down. The rules specify that only 4 commands may be sent; they do not specify how many times each of the four commands may be sent. It seems that they only want a maximum of four button presses, but the wording is not definite either way.

Jon Stratis
11-01-2008, 11:29
Wow, nobody agrees with me? I didn't expect that.

All of you are concerned with default behavior. Specifically, you all mention that when the Action (which is triggered by the Command) ends, then the robot should default to Default Behavior.

Let me first define some of my terms:
Action -- a series of clearly defined movements; can be as simple as "move faster" or as complicated as "go explore that rock, drill a hole in it, do some chemistry, and back up ten feet and stop." (credit: ebarker)
Command -- any information sent to the robot to trigger an action; according to FIRST rules, there can be no more than four distinct commands.
Default Behavior -- whatever the robot was doing before any commands were issued, and before any actions were embarked upon.

Now if you'll bear with me, imagine this: what if the default behavior was that the robot was standing still, and would remain standing still unless any other command was received?

Now my examples and previously expressed exasperation should make sense, and you should agree with me that what I describe is illegal according to the 2008 rules, but in case it doesn't make sense and/or you don't agree, I'll walk through the 15-second hybrid period, time slot by time slot. If you're just tuning in now, you'll need to refer to my previous post to understand what I'm talking about.

Time
00:00 -- Hybrid period begins. The robot begins its default behavior, which, as I previously mentioned, is standing still.
00:00 - 00:03 -- Command "1" is received. Action "A" is triggered.
00:03 - 00:06 -- No command is sent. Since no command is received in this time slot (00:03 - 00:06), Action "E" is triggered.
00:06 - 00:09 -- Command "4" is received. Action "D" is triggered.
00:09 - 00:12 -- Command "3" is received. Action "C" is triggered.
00:12 - 00:15 -- Command "2" is received. Action "B" is triggered.

Action E is triggered by the lack of a command in any of the 5 time slots, would NOT normally happen as a part of Default Behavior.

This is what I've been trying to say: it is possible to
1) transmit a command,
2) and trigger any action (including complex series of events),
without actually sending a signal to the robot. AND, if the sum total of the distinct commands (including any commands sent by a LACK of a signal) total more than four, then the robot is violating the rules.


If you draw out a state diagram, you'll see that default behavior isn't just "standing still". Once you interact with it at all (send it ANY commands) the behavior of the robot changes, potentially for the rest of the match. If you draw out a state diagram, it might look something like the attached image.

In this example, sending a signal to the robot initiates a series of commands, and the lack of a signal just means that the series initiated by the previous command.

for example, you might hit "1" which means "drive over there, pick up that rock, and drill a hole in it" as three separate and distinct states. If during the first state in the sequence you send it command "2" which says "turn left, drive straight for 3 seconds, then stop and wait for instructions", you would be interrupting the sequence started with command "1", which is perfectly legal.

So from your example, action E is part of the default behavior of A.

They key is to draw out the state diagram, and ensure that each command received by the robot only goes to one state - it's illegal for button 4 to mean something different based on the state it's in. You could have more than one state per button, so long as the state is the same in every instance and the only difference is that it goes back to whatever it was doing previously (instead of always moving on to the same next state). The signal means the same thing every time. the robot's actions are the same every time for that signal.

Urban Hawk
11-01-2008, 16:46
• use a maximum of four different inputs from the ROBOCOACH (e.g. use four different buttons) during any single MATCH
• communicate no more than four messages, states or conditions to the ROBOT (please refer to Rule <R69> and Rule <G01> for additional information) during any single MATCH.

Here is another fun idea for the controls!
the rules say that the robocoach can communicate no more than four messages, states or conditions to the ROBOT. However, what if he messages are not sent to the robot. Rather, if they were sent to the driver. in that aspect you could communicate to the driver after autonomous mode was over. Also it is stated that no more then four inputs may be used by the robocoach.... it never mentions outputs though!!!!:yikes: