Announcement

Collapse
No announcement yet.

Ordering programs within a project

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • simonc8
    started a topic Ordering programs within a project

    Ordering programs within a project

    I've combined all the programs for the competition into a single project, and given the programs names all beginning with a number. The idea was that on the robot the programs would all appear sorted in the order they were required, so minimising the time to go from one program to the next.

    In fact, they seem to appear in the reverse of the order they were last edited, so after making little edits to several of the programs the order is all completely jumbled.

    Is there a way of getting the programs to sort in alphabetical order on the brick display? Can you do this in the memory browser?

    Grateful for advice.

  • Tim Carey
    replied
    My kids learned to make the sequencer later in the season, building off of last year's non-working sequencer. We ended up with 4 launches from base, used the 4 direction buttons to run each launch and the center button to run the 3 second gyro recalibration program if needed. They used text instead of images, but wrote the text in MS paint and imported it as an image to make it bigger and easier to read. We fell into the trap of not running the programs through the sequencer until the last couple of weeks, but with 8 kids and 4 launches, they paired up and each kid knew where to place the robot, which attachments were needed and which button to press to start their mission. Worked out well for them. We trouble shot the issues that may have arisen during a match and lucky for us we didn't have any major problems on competition day.

    Leave a comment:


  • Dean Hystad
    replied
    Originally posted by cschaffer View Post

    And if the kids mess up the order during the run, they have to look REALLY closely at the small font to find the right program as the order will be messed up until they re-stage everything again.
    If the kids aren't capable of programming a sequencer, do what Dean said above.
    Every team is capable of writing a sequencer program. They are a bit different than mission type programs (No move blocks! Hooray!), but the logic for even the most complicated sequencer is well within the understanding of any 9 year old. The tricky concept, and I was surprised by this, is using something the program can understand to represent the mission you want to run. Depending on what type of sequencer you write you probably want this program stand in to be something you can manipulate mathematically. I've worked with kids who have no problem doing line following or squaring to lines or any of the things robots do to solve missions have a really hard time understanding that the number 1 can be a stand in for mission 1 and that "Select Next Program" can be modeled using the equation "programNumber = programNumber + 1".

    Roughly half the mission sequencer programs I see have been copied from somewhere. I know this because they use the same variable names, the same block layout, and the same odd design choices. These teams are still saving precious seconds, so they get a little bump in their evaluation, but I am saddened they missed out on some fun programming. Face it, almost all mission programs are the same. Once you finish writing your "tools" the only difference between programs is the order of the blocks. Mission sequencers on the other hand are mostly switch blocks and loops with a smattering of display blocks and wait blocks and maybe even some sound blocks. Each part looks completely different than any other part.

    The main problem I see with mission sequencers is that teams write them at the wrong time. This is a great programming exercise you can work on BEFORE the challenge is released. I used a mission sequencer to teach my daughter's team how to program. They thought they were writing a music player, but it doesn't take much to convert a program that uses a menu to select a song to play into a program that uses a menu to select a mission to run, Most teams work on missions first and add the sequencer on at the very end. Often times this integration occurs a week before the tournament and the team is still working out bugs on tournament day. Teams also don't spend enough time practicing running the robot using the sequencer. Sure they can run all the missions in order, but did they practice interrupting mission 3 and running it again or skipping mission 4 because mission 2 messed up really bad and made mission 4 impossible?

    Leave a comment:


  • dnb
    replied
    Originally posted by SkipMorrow View Post
    I was wondering if any teams have ever brought flashlights to the table to get a better read on the EV3 screen. Or is it just my old eyes that can't see the screen? I know if I was a robot driver, I'd need a flashlight.
    My old team worked around this by displaying images instead of text on the screen. Each sequencer selection/choice produced a different full-screen image. The various images were easy to recognize and distinguish (there's a usability lesson in here) even from a distance.

    Leave a comment:


  • SkipMorrow
    replied
    I was wondering if any teams have ever brought flashlights to the table to get a better read on the EV3 screen. Or is it just my old eyes that can't see the screen? I know if I was a robot driver, I'd need a flashlight. That's probably just one of the many reasons my team won't let me touch the robot.

    Here's to Lego developing the "EV4" with a brighter backlit LCD screen! I hope....

    Leave a comment:


  • cschaffer
    replied
    Originally posted by Dean Hystad View Post
    If I have programs P1, P2, P3 and P4, I can put them in order in the Recent Programs tab by running P4 followed by P3, then P2 and finally P2. The programs will then appear as P1, P2, P3 and P4. To run P1 all I have to do is press the enter (middle) button. The list remains in the same order with P1 on top. To run P2 I have to press the down button and then enter. The order of program in Recent Programs is now P2, P1, P3, P4. To run P3 I press down twice and then press enter. The list is now P3, P2, P1, P4.. Finally to run P4 I have to press down 3 times and then enter. The list ends up in reverse order P4, P3, P2, P1.

    Did you notice the pattern? To run program N you press the down arrow N-1 times followed by enter. This can be done without looking at the display. To run the same mission over after a rescue you only have to press the enter button because the most recent program is always on top and always selected. Try it out. For ordering mission programs it works surprisingly well.
    And if the kids mess up the order during the run, they have to look REALLY closely at the small font to find the right program as the order will be messed up until they re-stage everything again.
    If the kids aren't capable of programming a sequencer, do what Dean said above.

    Leave a comment:


  • Dean Hystad
    replied
    If I have programs P1, P2, P3 and P4, I can put them in order in the Recent Programs tab by running P4 followed by P3, then P2 and finally P2. The programs will then appear as P1, P2, P3 and P4. To run P1 all I have to do is press the enter (middle) button. The list remains in the same order with P1 on top. To run P2 I have to press the down button and then enter. The order of program in Recent Programs is now P2, P1, P3, P4. To run P3 I press down twice and then press enter. The list is now P3, P2, P1, P4.. Finally to run P4 I have to press down 3 times and then enter. The list ends up in reverse order P4, P3, P2, P1.

    Did you notice the pattern? To run program N you press the down arrow N-1 times followed by enter. This can be done without looking at the display. To run the same mission over after a rescue you only have to press the enter button because the most recent program is always on top and always selected. Try it out. For ordering mission programs it works surprisingly well.

    Leave a comment:


  • brian@kidbrothers.net
    replied
    Originally posted by simonc8 View Post
    I've combined all the programs for the competition into a single project, and given the programs names all beginning with a number. The idea was that on the robot the programs would all appear sorted in the order they were required, so minimising the time to go from one program to the next.

    In fact, they seem to appear in the reverse of the order they were last edited, so after making little edits to several of the programs the order is all completely jumbled.

    Is there a way of getting the programs to sort in alphabetical order on the brick display? Can you do this in the memory browser?

    Grateful for advice.
    Yeah, my kids chose to use the "run recent" approach. All the programs for the tournament used file names like "1 solar panel" "2" meteoroid food production" "3 tube module", etc. etc. Then, immediately before the match, the kids would go to the file navigation menu and quickly run all the programs in *backwards* order -- 7, 6, 5, 4, 3, 2, 1. Then when the match started, they'd run them all from "run recent" where they were listed in the correct order, one after the other, all ready to go. It meant when they wanted to start the next program, they simply pressed two keys -- down, middle.

    Leave a comment:


  • Dean Hystad
    replied
    Originally posted by Tim Carey View Post
    I had this same question about a year ago. I cam across the idea of a sequencer program somewhere, but my team and I mangled it somehow. Dean helped me find a solution that my team was able to implement this year with much more success. The thread is here: https://forums.usfirst.org/forum/gen...uencer-program
    Hope this helps.
    You were already 99% of the way there. I hardly helped you at all.

    Leave a comment:


  • Dean Hystad
    replied
    Originally posted by cschaffer View Post
    I believe rationale behind why I posted my initial message was missed.
    I was simply giving credit to Dean for a cool idea and investigative work of how to order the programs on the brick, but noting that my team didn't use that by saying we used a menu program. I wasn't saying my team was cool and innovative.
    I'm pretty sure your team is cool and innovative.

    I am a selfish man. I think FLL exists so I get to visit with kids who like building and programming robots. Because I am a selfish man I want them to entertain me with original and imaginative ideas. Teams do a pretty good job at this and my time judging FLL is the highlight of my week. That said, I think programming gets short shrift compared to solutions and attachments. This is understandable because good solutions do not require fancy programming. However, being a selfish man and a programmer by profession, I think teams should go beyond what is required and write some cool, fun code for my enjoyment. In pursuit of my pursuits I occasionally poke the bear and post outlandish things that are probably best ignored by reasonable thinking teams. But there are plenty of teams that aren't reasonable. Maybe some of that unreasonableness can be directed at programming?

    Seriously now, though I do enjoy being surprised I think teams should not try to be innovative just for the sake of being innovative. The reward isn't worth the effort. Conversely I think teams should not be satisfied with the first solution they come up with or assume other teams are smarter than they. Looking at the diversity among solutions to the robot game challenges I am a bit surprised by the uniformity I see in sequencers/schedulers/monster programs. Even the same names get used by teams talking about their programs. There is obviously some "research" going on, if not in code, at least in concept. Maybe this kind of code, not moving the robot or attachments, not directly applicable to the game, is more a tedious task than a fun challenge.
    Last edited by Dean Hystad; 02-04-2019, 06:27 PM.

    Leave a comment:


  • cschaffer
    replied
    Originally posted by cschaffer View Post

    Last year, someone (Dean Hystad I believe) posted a message for how to edit the ev3 files to re-order the programs. My team uses a sequencer. Even if we could have the files in order, I think the sequencer is faster/easier for my kids as they can make the font huge so it's easy to see what program you are calling.
    Originally posted by Dean Hystad View Post
    There is no reason a menu needs to use words, or even the display. There is no reason a sequencer has to use up and down buttons, or even buttons for that matter. There was a time when a sequencer was pretty cool programming. Unfortunately he internet has stomped all the "coolness" out of mission sequencers. I know most FLL partners don't judge programs, but if yours does, why not challenge the team to come up with something new instead of "sequencer B"? Don't save all your creativity for designing attachments.
    I believe rationale behind why I posted my initial message was missed.
    I was simply giving credit to Dean for a cool idea and investigative work of how to order the programs on the brick, but noting that my team didn't use that by saying we used a menu program. I wasn't saying my team was cool and innovative.

    Leave a comment:


  • timdavid
    replied
    Originally posted by Dean Hystad View Post
    ...Unfortunately the internet has stomped all the "coolness" out of mission sequencers. I know most FLL partners don't judge programs, but if yours does, why not challenge the team to come up with something new instead of "sequencer B"?
    Creating a sequencer that uses "buttons" and "menus" on a display is still a reasonably challenging programming task for most FLL teams. Just because someone else has done it previously doesn't diminish the effort and learning required of kids on countless FLL teams. It can still help most teams shave valuable seconds off their non-scoring time in base.

    I agree, however, that downloading or copying a sequencer off a website doesn't teach the kids very much, and shouldn't be overly rewarded by judges, unless the kids were able to fully understand and substantially enhance the original code.

    Leave a comment:


  • cschaffer
    replied
    Originally posted by Dean Hystad View Post
    There is no reason a menu needs to use words, or even the display. There is no reason a sequencer has to use up and down buttons, or even buttons for that matter. There was a time when a sequencer was pretty cool programming. Unfortunately he internet has stomped all the "coolness" out of mission sequencers. I know most FLL partners don't judge programs, but if yours does, why not challenge the team to come up with something new instead of "sequencer B"? Don't save all your creativity for designing attachments.
    Numbers are useful for quickly making sure the team are on the right item. Words are good to jog your memory if you panic. The team isn't doing this to impress judges. They are doing it to get the robot out of base quickly. They also have included elements of sound to let them know they are on the right items, etc.

    Yes, they don't need to use buttons, as I said they have considered having the robot read their mind (interrupt before this point and they likely want to rerun, etc). They've also used touch sensors to denote when a mission is done to trigger the next mission. Again, these are all CHOICES and the choices aren't wrong as long as they understand why their choice works for them. If having visual and audible confirmations make them feel more comfortable and they average getting the robot back out on the table in sub 5 seconds even with attachment changes, who cares how they trigger it. There are a very large number of ways you can tell the robot to go and what to do (using the color/rli, gyro, US, motor rotation, touch sensors or even the sensor cables) in addition to the buttons. it's all a choice.

    Leave a comment:


  • Dean Hystad
    replied
    There is no reason a menu needs to use words, or even the display. There is no reason a sequencer has to use up and down buttons, or even buttons for that matter. There was a time when a sequencer was pretty cool programming. Unfortunately he internet has stomped all the "coolness" out of mission sequencers. I know most FLL partners don't judge programs, but if yours does, why not challenge the team to come up with something new instead of "sequencer B"? Don't save all your creativity for designing attachments.

    Leave a comment:


  • cschaffer
    replied
    Originally posted by Dean Hystad View Post

    Why are you using words? Words are a terribly inefficient way to convey information.

    I judged a team this year that gave names to each EV3 button. The buttons were named after some feature on their robot so it was easy to associate the name with the button. When it came time to run a mission the "pit crew" yelled out which button to use. I didn't think this a particularly good way to select programs, but at least it was different and creative. So many teams use the same 2-3 mission sequencers that when I hear "sequencer" or "monster program" I start trying to guess which version they implemented. Maybe you should re-think your solution and surprise your judge.
    I dont think one word or two quick words is "terribly inefficient" way to do a menu, though you are of course are entitled to your own opinion.

    My team decided to use an up/down button methodology to scroll through missions. They have more missions than are available buttons to assign myblocks to. Each mission label on the screen has a number and a word to remind them what mission it is. Pressing the up button goes to #2, then #3, etc. Pressing down goes to a lower number. To launch a mission, the center button is pressed.

    After a mission is run, the screen will automatically increment the screen to the next mission and the user just needs to hit the center button again to launch.

    Seems efficient to me and easier to handle then assigning missions around the diamond (especially when there are more than 5 missions). One button to press to launch the next mission, and its always the same button unless you decide to rerun or skip a mission. The team hasn't implemented a mind reader yet, though they have talked of doing that in a way that the robot would just know if they wanted to run the same mission again or skip a mission depending on when the robot is interrupted.

    Leave a comment:

Working...
X