Some basic questions from a newbie Robotics team

Hello we are a group of 5 boys starting a new team - some basic questions here to you experts:

1>. how to get started with the robot? Should I buy the super kit or some other kit to start? Or does people have a recommended way to buy stuff online? We are interested to build a double intake robot with a ring processing device in the middle. Should I go directly to buy the parts for them?

  1. What programming language go people use for control? Heard of PROS and RobotC, but is there anybody using python for this? Is python too slow for this competition?

Thanks and input would be greatly appreciated



I would recommend looking at the resources on RECF’s website. I am assuming you are a VRC team - what grade level?


RobotC is deprecated and only works for the Cortex products. You will likely be working with V5 products, which means that the typical programming language will be C++, although I believe RobotMesh allows you to code in a multitude of languages, including Python. PROS is one viable software to code your robot with, however VEXcode might be more intuitive to use than PROS for beginners. They both utilize C++, but VEXcode also has block coding. I would only recommend using PROS when you are aiming for more advanced robot designs, or when the team has more advanced knowledge in general, but if you want to start with PROS, the learning curve won’t be absurdly difficult.


What is this PROS hate??

PROS and VEXCode should be equally easy for a new team to learn that isn’t using blocks, I haven’t seen a difference in students learning either or.

For PROS, check the getting started page, first time user, and the tutorials. Here is code to program the clawbot.


You will probably want a super kit and then some additional parts. It might help if your students cad their bot first to know what they will need.

Don’t use robot c. It is only for v4. Use either vex code pro, vex code blocks or pros. I would personally recommend vex code pro as it is easier to learn then pros without the limitations of blocks.


I am not exactly speaking from experience here when I say that VEXcode is easier than PROS, that’s just what I’ve witnessed within my organization. I’ve always been a PROS user, never really struggled with it, so perhaps it wasn’t wise of me to advise that VEXcode is easier without first trying it. However, by taking one look at VEXcode Pro V5’s UI, you can define different devices and even entire drive train configurations by just clicking a couple buttons. I haven’t seen something in PROS that is equally as intuitive as that, although you might be able to get close to that kind of intuitive behavior with Okapilib.


We are eight graders. Also the boys do want to do some real coding. Some of them had C++ or python experience before… so PROS might be a good choice for them? Surprisingly nobody mentions python here, might b e too slow for an interactive robot.

PROS and VEXcode Pro are both C++

But I have to add, today I’ve seen VEXcode crash four times, one of the times making it so we couldn’t open the project. Recently when I was working on a project main.c was cleared once, and froze while modifying code 5 or 6 times.

And to be fair to PROS, with it currently using Atom, there’s a bug where files will sometimes go blank. I’ve never had this happen, but I’ve seen students experience this and there’s threads here of students explaining their issues.

With PROS you don’t need to use Atom, as explained by Barin from the thread linked above:

Moral of the story is to use Git.


I know PROS is very good, but I feel like it should be used only as the compiler (similar to Python 3), with a 3rd party code editor, and for beginners that is when things may be a hard time.

I’ve had nothing but a bad time with Atom. In Turning Point, I switched to PROS and gave it a shot. But during states Atom corrupted the main project and then corrupted the backup project. The same issue happened again during VEX Worlds 2019, not allowing me the capability to tune my autonomous (granted, my autons were almost always bad anyways). I feel like if someone is going to use PROS then they should use Visual Studio instead of the pre-installed Atom. And then if that’s the case now you would need to figure out how to use the command line to interact with the compiler in Visual Studio, and then that is when you possibly will need to rely on the resources of your peers who have figured it out otherwise you will spend minutes, possibly hours searching or using trial and error to find how to download a PROS project onto the V5 Brain using the terminal in Visual Studio.

1 Like

I don’t think you need to worry about python being too slow. I’ve never had an issue with it, but then again, I’ve never really been able to get a complicated program working consistently.

I originally downloaded PROS, but found using text in VEXcode much easier deal with and operate. Though I would only recommend the text version, as it comes with the same benefits as block, but works like a text program.

1 Like

We do have a vscode extension available. (Can’t find the original blog post but there’s our reveal trailer)


I believe this depends.
If you order new sensors released by VEX, there is a garuntee that the sensors released by VEX would have immediate integration into VEXCode but the other coding softwares (like PROS and RobotMesh) will be behind with the integration due to information and implementation delay. It would be infuriating to be a new team and get a first batch of sensors, but you will not be able to figure out where to find half of the sensors in motors and sensors setup because the sensor may not yet be added in PROS or RobotMesh yet.

1 Like

I will be learning how to code a VEX robot in Python via VEXCode Python. I hope it goes well, but my biggest critiques so far is:

  1. Compiler errors are not an automatic thing. Usually errors are automatically presented with Python IDE’s (example Pycharm), but with VEXCode you have to physically click the “build” button in order to see if any errors exist.
  2. No PIP integration. It is excruciatingly limiting when you cannot use regularly used Python packages (like numpy). I would love it if there is the capability to install packages for the V5 brain to use (but I can see how this can be a massive feat to implement considering the limits of the V5 Brain)
  3. Speaking of numpy, where’s numpy? Numpy is a powerful package that is used regularly in Python applications. Why is numpy not a thing in the VEXcode Python’s IDE?
  4. No multi-file. Since we are talking about VEXcode and not VEXcode pro, there is no multi-file implementation which is a major issue. Python is built to be incredibly easy to do multi-file projects, so I would love it if multi-file is an option for VEXcode V5, or possibly have a Python version of VEXcode V5 Pro

Granted, though…
I have to admit, the VEXCode Embeded API is incredibly simple yet detailed on the VEXCode V5 in Python. Like, holy crap the detail and effort towards it is incredible, and the description and information is superb. Honestly, I love how there are functions that are neatly organized and when you click the “?” it provides not only function information but “How to use” and definitions in extreme detail yet simplicity. Props to whoever made the embeded API, it’s amazing and intuitive for newcomers. My only suggestion for the API is the capability to resize the width of the API because it can take up a lot of real-estate.


A few comments re Python.
The Python code is compiled on the V5, we actually download source and turn into byte code before execution. This means most errors are runtime errors as opposed to compile time errors that you may get with C++. When you hit “build” in VEXcode, we send the source off to a cloud server for linting, that’s why errors are not displayed as you type code. Perhaps at some point I will (be allowed to) release the VScode V5 plugin I have, that’s makes working with Python a better experience.

I’ve looked at adding a numpy like library.

The last time I tried to integrate this it had too many errors and was going to compromise the core implementation we have, hopefully I can revisit this at some point.

You can import modules from SD card. see this.

Supporting multi file beyond this is difficult on V5, the architecture for loading and executing programs expects a single file (usually a compiled binary) that can at most pre-load one other program or file (which is how we launch the Python VM and is the mechanism PROS uses to allow the hot/cold linking system). We could compile all the Python source files into a single bytecode file, but that then means we have to include all the platform specific build tools into VEXcode, it was far easier to allow the V5 to that work.


I am unsure if I am straying off-topic or not. But do you know if the V5 brain has enough power and the specifications to run a 64-Bit Linux architecture? Unless I am mistaken, I feel like you could use the Linux architecture to allow RAM and Flash allocation beyond the 128 MB and 32 MB size via the SD card as a partition. This may allow Python packages to be larger and possibly easier to implement due to Linux. (But I can see how Linux would require starting from square 1 with the V5 Brain’s operating system)
Note: I’m guessing here, and assuming it is not possible to use the SD as a partition for the V5 Brain in its current state at this point in time

1 Like

Theoretically the CPU could run Linux (32 bit, not 64), it’s a dual core A9, however, when used in this way Linux is usually booted from the primary core and the secondary core is used to run an embedded application. In the case of the V5 both cores are running bare metal applications, the primary core handles sensor comms, the UI, loading programs etc. the secondary core is running the user application. You might be able to get some type of Linux implementation running on the user program core, but it would not be a trivial project.

Python on the V5 is not trying to be a general purpose implementation with all standard packages, it’s designed to be able to learn the basics of Python and control a robot using that capability.


RobotMesh or PROS taking a little longer to support a sensor (usually within a month) doesn’t change the difficulty of learning the software. I don’t know why you chose a quote saying the difficulty of PROS or VEXcode should be same and then talk about integration delay after.

But on the topic of integration delay, it’s generally smart to wait for other teams to test new sensors before buying them. The recent sensors have been pretty good, but I couldn’t rationalize spending $50 on the IMU when it first came out without first hearing good things from team and seeing side by side comparisons with the old gyro.

If you’re a team that buys things when they come out and you use PROS or RobotMesh, yes you’ll have to wait before you get to play with it.


Okay, I’ll stop being a devil’s advocate and give my point.
My argument is not to make a claim that one is better than the other. My argument is the component of “It just works.” Why would 95% of computer owners use Windows when Linux is leagues faster and more efficient? The simple answer for Windows being more of a dominant operating system for the masses is “It just works.” All you need to do is hop onto the VEX downloads page, click install for the software you desire, then you’re good to go. Just a couple of clicks for installation, and even the embedded API right in the IDE. Nearly everything you need to at least get your robot moving, and you do not need to hop onto VEX forum to see if a sensor you bought on the VEX website finally received integration because in VEXcode, the maker for the sensors is next to the the same maker for VEXcode. Everything is right there, couple of clicks, and a snap of a finger with no delay to use all of the sensors and components in VEXcode, and this applies to other aspects of the IDE as well. You could always switch to PROS later once you realize VEXCode has its limits.


I feel like VEXcode is more successful than PROS by the majority of individuals in VEX (although I admit more competitive individuals tend to use PROS more).

Looking at PROS API:

As you can see, you are presented with loads of places and information. That’s usual and nice, but I feel like much of what it offers seem unnecessary, or “fluffy”

What does all of these things mean? There’s no good detailed description, and no preview of a function. I feel like this is inconvenient from a newcomer’s standpoint.

I feel like most people will not understand this structure nor devote the time to understand it unless they have the motivation to do so.

From a newcomer’s perspective, this is incredible confusing. I feel like if PROS want to make itself presentable to newcomers, they should show the function without the std:: nonsense to make it easier for newcomers to properly understand and write the function, or possibly include a side-by-side comparison of the prototype and function? I feel like how it is now, it is far more difficult to understand than Python’s API and almost any community-made API written in Python on Github. In a day of age where coding is simpler for the majority of the population, I do not feel like the presented information matches the status quo of how things are going in society when coding.

Most of the stuff I need should be presented directly in front of me, with no unnecessary fluff. Then the more advanced code should be categorized as such. Look at Google’s settings. Most of the stuff you need is there, but if not then you click “Advanced” tab at the bottom.

The objective of VEXCode V5 is to teach you what everything means, then when you transition to VEXCode Pro V5 you would no longer need a crutch of extreme “push-to-your-face” information.

I would like to provide how to access documentation for VEXCode functions. I want to see the functions of the motor. Looking at it I see… No motor functions?

A newcomer would likely figure out that it adds functions based upon sensor setup. Adding a motor to the sensor setup, looking at the area again…

You can see there is all the functions 95% of most individuals in VEX need, categorized neatly. But what does each function mean or how would a newcomer use it? They would simply click the “?” next to motor.spin for voltage and a “Help” section pops up on the righthand side.

As you can see, it is straight to the point with VEX’s Embeded API. And it’s directly in the software.

Now, it is about as easy in VEXCode pro…
When coding, you can view the functions of the motor as such:
Screenshot (4)
I want to learn about current, so let’s press “Enter.”
Then, a newcomer would right click the function in the code and I click “Command Help”
Screenshot (5)
It then asks me which type:
Screenshot 2021-09-06 215156
They would want to see what MOTOR.current() does, so they click that.
Straight to the point, in a manner that I feel like 95% of individuals in VEX should understand.

From what I can see, I feel like it is not correct to assume that PROS is just as easy as VEXcode. I feel like VEXcode offers an easier way of making information understandable and presentable in a manner that is clean and straight-to-the-point without fluff.

1 Like

Connor, the aggression, disrespect, and lack of professionalism displayed in your post is uncalled for and actively inhibits the process of productive civil discussion. I would respond to your points respectfully, but the tone of your post is so incendiary that I doubt any further productive discussion would result. If you truly become this upset because a member of the forum respectfully disagrees with you, then I suggest you take a break away from the computer before coming back and taking a second look at the situation to determine if there is a good reason to be so upset. There is no need to use such condescending language in the course of a civil discussion on this forum. Such language is unproductive and does not foster a welcoming environment, something that is especially important when it comes to welcoming new teams into the competition. When you have to begin a post with “Honestly, this may sting a bit”, that should trigger a self reflection on if what you are about to post is truly worded in the most productive manner.