A bit off topic, but what does it do ? Are you using a standard clawbot build or something else ? Many examples will only run correctly on a known standard robot.
I disagree with this sentiment a bit. A programmer who has yet to transition to text programming is still a beginner programmer. As someone who properly started programming in VEX and who is now pursuing a degree in Software Engineering, and who considers myself to be an “intermediate” programmer, I think that getting beginner programmers transitioned to “real” programming languages like python and c++ should be the priority even before introducing sensors like the GPS. Once a student transitions away from blocks and into text the opportunities for practicing programming expand greatly beyond just VRC. If our goal is to inspire and educate students to pursue STEM careers, in this instance programming, I think that they would be much better served being introduced to industry standard programming languages before another fancy sensor from VEX. I know you don’t want to be told to take a Python/C++ course, but from my experiences dealing with and supporting VRC student programmers, a Python/C++ course is what they most desperately need in most instances. Too often I see students jumping to trying to work with sensors like the GPS in an unfamiliar programming language, and this slows them down much more than if they had been taught some text programming fundamentals first.
Yeah, we figured since it seemed to have a built-in 3-axis gyro (I think) that it could figure out which way gravity was pointing and “orient” the image based on that…that was a fun hour to figure out
How many recent posts have there been on questions of how to write a PID in Blocks. Can it be done? Sure. Should it be done? No. Spend the time learning Python/C++ and then learn from actual working implementations of PID controllers, for example.
I don’t have experience with Block programming and am probably biased against it. IMO about the only purpose it serves is to help beginners go from a flow-chart of what they want a program to do, to something the computer can actually execute. Anything that can’t be represented in a single-page flow-chart shouldn’t be implemented in a Block programming language, IMO.
Block programming absolves the programmer from learning the actual syntax, while introducing concepts like loops and branches. Once one understands loops and branches, it’s probably time to learn an actual language’s syntax.
They are not clawbot builds. One was a mini, 2 motor drivetrain basic drivebot, the other was a competition ready 4 motor drivetrain. But if the devices are configured correctly in the devices menu (utilizing either the inertial (which is what we used) or the GPS sensor within the drivetrain device group), wouldn’t that account for, and negate, any difference in wheel base width?
I don’t disagree with what you are saying, and I can especially relate to the PID analogy. But at the same time, you also need to consider that most of the coaches that I am referring to are just parents, or teachers, who are from other content specializations. That they are doing this strictly for the kids, and to give them exposure. They have no desire, let alone the time, to pursue formal course work. As it is just one more thing that would be added to their already overloaded plate. In other words, they only want to know what they need to know to help their students. And many of use have reached our peak. Were good with the easy stuff. Now we just need to be given time to work with a trainer so that we can help the students take the next step in their progression. A progression that would next lead to working with text programming projects. Call us beginners/novice still if you’d like. The VEX platforms did an amazing job of setting up their programming user interface to accommodate for a progressive and scaffolded approach to programming. And if VEXcode is the only exposure to programming at current for the student, then this step is needed. And maybe that can be what the next computer science course is that they create. But in person would be preferred. Think of it this way, we are at the point to where we could do text projects, but need to get comfortable seeing, understanding, the api/syntax elements of text by first creating a block project and toggling back and forth. And do to that correctly, it would be nice to have training to go over scenarios that can make best use of those advanced sensors.
I’m trying to reconcile
So parents/mentors in your area have no experience with text-based programming languages and both want to learn but don’t want to spend time learning? Or am I misunderstanding?
I’ve never opened Vex Blocks, but my belief is that Vex provides the ClawBot code in all of Blocks, Python, and C++. Is it not sufficient to look at the ClawBot code side-by-side in Blocks and Python/C++ and begin to learn the associated Python/C++ syntax?
I’m also not sure that it is Vex’s responsibility to provide “Intro to Python” and “Intro to C++” courses, when these topics are already well-covered in the opensource community, free YouTube videos, etc. I think it’s entirely reasonable for Vex to require pre-existing knowledge of C++ or Python to start using those languages. I’m open to changing my opinion, and I do feel like the VexForum (and James Pearman especially) are exceptionally patient with novice programmers unfamiliar with text-based programming language constructs such as “functions”, “scopes”, “data types”, etc. let alone “classes” and “inheritance”.
Seems like instead of mass produced scalable teaching resources you want some individual level attention. Which is fine. There are programs like this
That provide either virtual training sessions or onsite training at their facility. Potentially there is room for a more advanced session taught less often for teachers wishing for a deeper dive.
So, I didn’t want to mention their offerings, since its not VEX, even though I know they work closely together. And they do a great job, I’ve attended this training before when the V5 was first released. But even in their training, they are covering basics, and only get to sensors on the last day, and even then its only touching on them for 2 or 3 hours. I’m talking about a bootcamp specifically for them (vison, inertial, gps). And I agree that James and others do do a great job with helping us. But its more than just me. I am not speaking for just me. Please show me a video on that goes beyond an unboxing review of those sensors. PLEASE. It doesn’t exist. And I feel it is VEXs responsibility ( I say this in the respectful way possible, because I believe they do a great job) to help those who buy their sensors. Understand, and show them the different applications it can be used for.
Just opening up my Vex Code V5 environment. Under Examples, there’s a long list of programs included that touch on seemingly all sensors:
As well as programs that demonstrate text-based programming concepts such as functions, etc.
I know I’m coming across as unsympathetic, but James is but one person and Vex/RECF have real constraints. There is a reasonably knowledgeable and generally helpful on-line community here, and I’m not sure I understand what gap you perceive that isn’t being filled reasonably.
I think the gap is that of live in-person instruction being available. As a community college instructor, I know firsthand that some people, for a variety of reasons, don’t do well with self-paced online instruction. Some teachers have situations where they can be compensated for seminars which give College credit, but nothing for do it yourself learning, and this can be an obstacle as well. My plan is to begin offering live instruction at the college level, and I would hope it catches on with other U-teams to do similar.
I’ve learned how to use sensors not because anyone taught me how to, but because of vex forum, lots of time on the internet, and just figuring things out on my own. I’ve never really had anyone directly teaching me how to program or work with sensors.
My best advice for learning how to use sensors is just to write programs for them and figure out what works and what doesn’t.
This helps shift my perspective a bit. Perhaps putting words in @CentralTeacher 's mouth, they are looking not for an organized class schedule (e.g. 1 day a week), but rather a combination of “Ad-Hoc Office Hours” where one can drop in when they run into specific issues (e.g. DriveTo Point not working). The second case would be, “Show us non-obvious uses for sensors”. Personally, I feel that coming up with “non-obvious uses for sensors” is where the student-oriented creativity comes to play. I know students like to make reveal videos for mechanisms for their robots but I don’t think I’ve ever seen reveal videos that show off a non-traditional use of a distance sensor, for example. The most common sensor videos are about odometry (and there are a lot)
What’s being requested sounds a lot like VEX PD+
programming is a lot like cooking, you can read a cook book, but in the end you have to practice, make mistakes, iterate and learn.
I concede my point as it is still largely misunderstood. kmmohn comes closest to understanding what the need is, and the issues with the other options available. In the end my point is this. I oversee a large number of coaches (High, Middle, Elem) in our region. I would like to provide those coaches with an opportunity, as a whole, to learn how to operate those sensors. So that they could, in turn, assist students with applications of those sensors. I cannot provide it for them; and, to my knowledge, there is no one in our state that holds such PD/training opportunities outside of basic platform introductory workshops. Yes, Carnegie is the closest option for what I am referring too, but I was hoping for something with a little more focus on the areas I previously discussed. Even if someone could direct me to another region who has this opportunity. Because, like I have said, I have yet to find it. Looking at VEX PD+ I do not believe they address this subject. I could be wrong about that, and even if they don’t currently, I know it is still in its infancy, and could most certainly incorporate this at some point. I would be interested in pursuing that route if that were indeed the case. But still, a bootcamp/workshop is what I suggest. But reading the responses I don’t feel that that viewpoint is widely shared.
No idea what the actual content is, but it seems to at least consider what you seem to be asking for:
Would shifting your mindset from a top-down (coaches-to-students) approach to a bottom-up approach work? Surely some of your students have figured out how to use sensors? If not, maybe assign 1 sensor to a different coach to present back?
Would a starting point like VEX Sensors - BLRS Wiki work, or is there still a desire for human-to-human interaction with the actual device?
Beyond that, I’d be willing to do a 30-60 minute zoom with you / your coaches and share what I know about the sensors.
This is a bit off-topic from the OP, but I saw these comments and felt compelled to reply:
I can give @sazrocks and @Mentor_355U the benefit of the doubt because I believe I understand the sentiment, but I also want to caution against the attitude of superiority from those who program in a “real” language looking down on those who program in block code. It reminds of one of my favorite XKCDs:
Learning to code is about learning how to think. The language is just the tool being used. Block-based programming has opened the door to coding to students of all ages. Is it good to move past block-based coding at some point? Absolutely. That doesn’t mean you can’t do “real” programming with blocks. I think this is an especially important thing to understand when it comes to judging teams at VEX competitions. I think it would be terribly shortsighted for a judge reviewing the work of team to automatically assume that if they are using block code they have inferior programming to a team that is using text code.
I have been a computer science teacher for many years and have taught in block code, text languages, and hybrid languages. One thing I have noticed repeatedly with block coding is that someone who already has experience coding in a text language will often get much more frustrated with block code than someone who has never coded before.
So, just be careful to check your personal bias at the door and don’t discount the value of block programming or the ability of the one using it.
This may not be the practical solution you are looking for, but I think there is value in some metacognition within this topic.
You are in a very common place for people learning to code. I teach other teachers professional development preparing them to deliver computer science courses, and I always share this article:
Not to say it isn’t possible to create or find a resource like what you are looking for, but in a larger sense you are running into a natural boundary in the continuum of learning a coding language (or skills in a language). You can quickly get through the hand-holding resources that are available, but at some point you start running into topics and concepts that are more complex, more nuanced and less scaffolded than what has come before. The path forward is to grind it out, and you (and your students) will learn more and more as they go forward. You get to a point where there are 10 times as many failures as successes, but that makes the successes even sweeter and you are always building up competency even if you aren’t always confident.
I fully endorse that everyone starts knowing nothing about programming and that there are many entry points, including block programming.
I’m fully aware that there are differences in the ability to get things done and the tools one uses to achieve those ends.
While this may be confirmation bias, but it is my experience that there is more support for programmers who use text-based programming languages than block-based programming languages.
As I’ve noted on the forums here, the use of a programming language has 2 audiences - 1 is the computer that will execute the code and the other is humans who will later modify the program, for which they need to understand the intent of the author. That human may be the same person who initially wrote the code a month from now.
Clearly block-based programming languages are Turing Complete and can therefore have the computer execute in exactly the same way as a text-based program. Again, perhaps confirmation bias, but I do not believe that block-based programming languages can convey anything above an intermediate level of complexity to another human.
Of course, the opposite is also true. I’m sure we’ve both seen Obfuscated C contest winners whose intent and execution are virtually impossible to discern. Poorly written text-programming can certainly convey less meaning than well-expressed block-programming.
That said, for programmers who want to advance, transitioning to text-based programming is a necessary step to make at some point.
We see it a lot this year - how many forum posts are there where Block programmers want to control a 6-motor drive? One can make a reasonable argument that the Vex block-programming environment should make this easy to do, but one can also make the argument that a 6-motor drive is already putting the team into a “more advanced” state than a 2- or 4-motor drive robot and that with the increase in build complexity, so too should there be an increase in programming ability.
I have experience with block programming in a professional production environment (automated test setups with LabView) and I can say with some certainty that there’s no such thing as well-expressed block programming. For anything even moderately complicated, it’s an absolute nightmare to figure out what’s going on. Short of intentionally illegible code like Obfuscated C contests, text-based is vastly easier to understand than block-based.
Can block code introduce you to the basics of programming? Yes. Did I learn to ride a bike with training wheels? Yes. Do I still use either? No.