Hope we can archive this code in my github repo after worlds in a similar way to last year, it sounds really good.
Ultrasonic works pretty decently on cubes, the precision isn’t great but that’s to be expected.
Ya the material is pretty heavy so I am not surprised. And of course, ultrasonic sensors were never made to be used for pin point range measurements. I like the VEX ones. Pretty good to be honest.
Good stuff.
Could be, but mostly the kids here are just caught up with inventive ways to use “salty” as a derogatory adjective. That’s trending too.
For some of us, the whole AI thing never went away. To anthropomorphize, it’s just been grinding along getting dirt under its metaphorical fingernails while it whiles away the hours working on a few interesting classes of problems. Though there was a period longer than a decade during which calling your work “AI” would get your PowerPoint presentation cut short, your office supplies confiscated, and your coffee machine privileges suspended. You’d be escorted out of the room. Then the people who had been rolling their eyes at you would begin to openly mock what you were proposing. While you were still within earshot. AI was looked down on. So it had to work under various assumed names.
I think we can openly talk about neural nets again, but I’m not sure when this happened exactly. I said “deep learning” in a meaningful context once last week, and some of the students were clambering to agree it was useful. “Deep Learning” isn’t magical, and while I know it’s on an upswing, it’s not clear to me how it made it onto the kids’ radar. Some of my day-job projects are all about advanced techniques, and that one’s been a standard approach for a while now. Though under different names.
Those systems are sensitve, almost weirdly so. Not quite to the point of being a chaotic, but sometimes it seems so.
Cool. I worked with an aeronautical engineer years ago that called things like that “steam gauge numbers.” These days we’d call it a “dashboard number.”
That’s a very good illustration of using offline time and tasks to inform the decisions made in the game. And a great way to cast it as an AI solution.
Fix it in software. I’m familiar with that concept. I’ve written more than a few software fixes for hardware problems. Some electrical, some mechanical, and a couple pneumatic errors. Sometimes, it’s the most expedient solution. And on occasions where the hardware can’t come back for service (say, it’s on a one-way trip and it’s very, very far away) it’s the only option.
Sounds like it’s worth an Innovate Award.
Indeed. And exactly.
One additional factor in the value equation is “Will the students get something useful out of it?” So, even if the payoff in game score is low, the payoff in education might offset it. Of course, learning to allocate the precious resource of person-time on task is one of the most important things they could take away from VEX. And more drive time will almost always pay off, while more complex control systems might not.
Continuing on @kypyro comment, I think, the most important component of autonomous is to know where you are. We all seen autonomous routines, when robots would go in the wrong direction and end up doing more harm than good. If you don’t know where you are - it is hard to make good choices about what to do next.
It is important not only know your position, but the uncertainty associated with it. One of the reasons why clawbots are doing great in skills this season is because wide open claws mitigate position uncertainty and then every time you back into the fence to score, it helps you to realign the robot’s heading.
Assuming that the next season’s game will have open field, the smart move would be to start looking into navigation algorithms that both estimate your position and uncertainty around this position (filters). Then you would feed the uncertainty, associated with multiple sensors, into some sort of artificial intelligence engine, like multi-layer neural network, which is naturally designed to take a bunch of probabilities as inputs and then generate some actionable decisions as the outputs.
For example, if position uncertainty grows high (let say +/- 2ft xy, +/- 30 deg heading) the smartest choice on the closed Starstruck field would be to stop moving and stay put. While on the open field, like for Nothing But Net, you may choose to go after scoring objects while uncertainty is low but, when it grows high, start moving in circles just to mess with the opponent’s autonomous.
First you would come up with several alternative strategies, program them the usual way, test them and document the average scores. Then you would collect some test data regarding how score changes depending on different types of the opponent’s autonomous and document those too. Then you would “train” your neural network to come up with best-scoring decisions for each class of the opponent.
Your opponent classification metric could look like this:
{drive type: unknown, slow, fast}
{scoring object: unknown, none, cube, stars}
{scoring location: unknown, none, side, center}
etc…
Ideally, you would retrain your neural network every time you bring back real scoring results from the tournaments. This way, at the next competition, you could input some intelligence about your opponents before each game and hope your artificial intelligence engine will make some smart decisions during autonomous.
Obviously, experienced teams are already doing this (autonomous selection) manually, based on their human intelligence. It would take some time before you could get your AI engine to be anywhere close to that sophistication. However, if you could get there, it will have potential to get you better results, because it could re-think the course of action in the middle of the autonomous period. Especially, if you could get some feedback about what opponents are doing, in addition, to just estimating how your robot is doing vs its planned route and scoring.
I would love to hear if any VEX-U team is doing something like that, because it makes so much more sense for their longer autonomous period.
More information will come later in the season, but I can tell you now that we are keeping track of our position on the fly through autonomous using quad encoders and a 6DOF IMU.
What third party sensors are you using?
The more I think about it, the more I am convinced that the next micro-controller will allow wider variety of sensors like camera, LIDAR, etc…
If I were one of VRC sponsors (such as US Air Force) I would lobby IFI to enable and encourage more sophisticated autonomous programming with computer vision, advanced navigation, and even robot-to-robot communication.
Regardless of what will be announced at the Worlds, we are going to experiment with something more AI-ish during summer. With Raspberry Pi Zero Wireless + 180 deg camera + GY-521 3-axis gyro and accelerometer costing less that $50 together it would be foolish not to try them.
We are using neato LIDAR, an MPU 6000, and a raspi .
I wouldn’t enjoy having to work with half a gig of ram. Once you start adding the overhead of a real OS that starts getting eaten up fast.