REPLAY or RE-RUN

I’m currently working on a program where you drive your robot, and then the robot does your actions autonomously, I have found some useful forms about this and some useful GitHub’s that I’ll leave down below but I would like to make this program based off of sensors like an Accelerator, Gyro sensor and Ultra sonic sensor. but all the programs below don’t have any sensors and I was wondering if anyone would have some pointers to make this program as successful as possible.
https://vexforum.com/t/answered-what-rules-are-in-place-to-protect-robots-that-are-hanging/18114/1
https://vexforum.com/t/answered-what-rules-are-in-place-to-protect-robots-that-are-hanging/18114/1



Read this post, which is a recent time when I said “search the forum” and did it for the poster:

https://vexforum.com/index.php/conversation/post/218659

Follow the links in the post. Alternately, jump ahead to the TL;DR links at the bottom, though the discussion in the twice-dereferenced thread is quite helpful. Some of the code there records the sensor values at the same time it’s finding and recording motor settings. You can use the recorded sensor values to generate appropriate decision logic, if you’ve a mind to.

IMHO, this should not be allowed. It defeats the purpose of the programming part of this game.

While I agree that It takes away from the learning that is achieved in creating a proper autonomous, I (a person who has never used replay and never intends to) disagree that it should be illegal.
First, how would such a rule be enforced? Mandatory code reviews? That would be a logistical nightmare. How would replay code even be identified?
Second, I believe there is quite a bit of learning to be gained for the team that creates the replay system. This would hurt them.
Lastly, (to my knowledge) these replay systems will simply never be as good or consistent as a normal autonomous, and have difficulty controlling complex robots (like the PID controlled lifts of this year).

what on earth is the rationale behind this? The team has to program the replay system…
also, not all programming is done in autonomous… trust me when I tell you there are more applications for clever automation in driver control as well this year more than any other…

The rationale is that I had one of our teams download it from the Internet and get it to work. There was a little work involved getting it to work, but they it was just distributed among the rest of our 20 teams and neighboring schools. Teams (with next to no effort) were able to just record them driving and paste it into their auton without knowing how to code. We put a stop to it - none of our teams used it for more than a week.

One of our teams was then partnered with another team in an event. Their autons clashed trying to get the 20 point. Our team asked them if they could just make changes and put it in the 5. Their response: “We can’t , we’d have to drive it, we don’t know how to program.”

I can easily envision this being passed down from team to team, year to year.

Trust me when I tell you that is NOT what I am trying to achieve and I highly doubt what RECF and VEX are trying to promote with the autonomous portions of the matches or skills challenge.

I would actually like them to learn … well, how to program.

The problem with this is that it should always get beat by a hand coded autonomous, meaning PID, distance sensors and hours of adjustments. People should understand that this is to be used sparingly, and not as a catch all solution to autonomous.

Have you ever seen them? It is easily identified.

I’m sure that I haven’t seen every replay program, but the makers of the programming studios (VCS, RobotMesh Studio, PROS) could easily make thing very difficult to do this - if they wanted to (or were told to by RECF/VEX).

As I detail above, I very much question the “quite a bit of learning”. Especially in organizations that have many teams and teams that pass down prior knowledge year after year.

For the top end robots, yes - maybe top 5%. However, what about the bottom 95%? I want everyone to learn to program.

what I’m saying is that the students should learn fairly quickly that they can beat other rerun auto’s with their hand built code, and this leads to an, for lack of a better term, arms race of autonomouses (autonomi?) , with the best one beating out the ones below them.

I understand what you are saying, and you are correct. However, “PID, distance sensors and hours of adjustments” is hard, but needed if you wanted to score well this year (50+ in auton). Slapping a recorded driving session is easy. Most teams don’t score 50+ in prog skills. You could easily get 20-40 in skills this year with replay and you didn’t need to learn how to program.

Additionally, getting a cone on the goal in the 20 for the match auton is easy with replay. The consistency is definitely higher if you use “PID, distance sensors and hours of adjustments”, but most teams don’t put that amount of effort into it and, again, I’d like to see every team program.

I’m glad to see that Turning Point should have a relatively easy auton. IMHO, that was one of the biggest misses with In the Zone. There were teams at Worlds that didn’t have an auton.

We should be encouraging all teams to learn to code.

Its really a Pandora’s box problem, once you open the box, you cant put the recorded autonomous back in. This could also be true for building, is copying the “meta-bot” really learning to build? Are diver micro’s really driving? This problem happens all over in VRC, however its something you have to encourage your teams to avoid, I always try to avoid copying the meta, and encourage others to find something they can do better, or innovate on, or improve or out-work, And I think thats really all that Vex is trying to encourage.

Honestly, making a rerun program that works even semi-consistently requires lots of different PID loops and control systems. Each one needs to be tuned based on each robot. Tuning effectively requires an understanding of how PID actually works. I would be shocked if anyone got a rerun program that was plug and play on every robot.

Ah I see. Well I do see where you are coming from on this and I agree that teams should certainly learn how to program their own robots not be copy/pasting code directly from the internet.

However, while replay systems might make this slightly easier to copy its really not much different than copy and pasting someone’s open source function library. As long as open source resources are available teams will continue to do this and replay systems are no more responsible for this than any other open source code.

For example, my code is open sourced and it contains a fairly extensive set of PID auton functions for precise turning and movements. Functions can be called as easily as moveForward(inches, speed) or turn(degrees, direction). A student could simply download my program and call these human readable functions without knowing any programming to write a fairly effective autonomous. This auto would be quite a bit better than most replay systems publicily available. Does this mean that my functions should be disallowed? I don’t feel that way. I think if a team finds an open source program and is able to make it work to their robot they should be allowed to use it technically although it may not be what mentors/vex/EPs prefer.

Also Rod’s point basically sums up the rest of my opinion on this.

Only one of my teams has tried a replay program, and after watching it run a few times, they tracked down some flawed motions and edited the code.

I understand its possible for students to be so incurious as to copy/paste and never look at the content of a replay program, but that is the fault of the students and a missed opportunity for their mentors to have them engage the content. All replay code is going to have faults that can be corrected. When students are prodded into making those corrections, they start programming.

How do you think that PROS, for example, could stop teams from programming a rerun system?

Limit the number of items in an array and the number of arrays that can be used.

But why not just make it so they have to … well, actually program?

A reasonable point, however, coding for a career also involves looking up code on the Internet. Most of the time, you won’t be able to just paste it in. Also, at least, it looks like code and you will likely learn something by just looking at it.

The “code” generated by replay doesn’t look anything like code you or I would develop. IMHO, there is no value to using replay.

Again, I just don’t understand the benefits of using replay. As many have pointed out, for the top programming teams, it isn’t as consistent and, honestly, isn’t as good. For the rest, they don’t learn how to program.

Who does it benefit?