What can PROS do that V5 Text cannot?

I’ve been using V5 Text for the last season, and I thought that this summer would be a good time to learn some more programming. I just learned how odometry works and the math behind it and I’m now interested in different types of noise filtering like Median or Kalman filters. Is it worth it to switch to PROS?

1 Like

I’d say it is worth it. Okapilib makes programming autonomous and skills easier and just better, and, while its hard to learn at first, LVGL makes autonomous selectors so much more functional than anything you can realistically do in v5 text.

3 Likes

The biggest selling point of PROS is that it is set up like a “real-world” C++ development platform. For example, it comes with a command-line interface for compiling and uploading, which means that you can use whatever code editor you want, so long as you know how to use the terminal; it also comes with a plugin for the popular editor Atom, which lets you compile and upload with buttons in the editor, akin to what you’d see in VEXcode.

Its API is also more lilke what you’d see in a more standard system, with more support for idiomatic C and C++ things than VEXcode’s API (a good example is the multitasking API, or LVGL for controlling the screen).

Finally, it is open source and developed by the community (its development is lead by well-established VEX U team BLRS), so it tends to better reflect what competitive teams want to see in a programming platform.

13 Likes

From what I’ve heard, okapi is doesn’t have much customization with the odometry and the noise filters. Is that true? Would it be better to do my own math?

1 Like

Well, if you know enough C++ you can write your own components such as filters for Okapi. However, I’d recommend really using Okapi while you’re at the stage where making the algorithms yourself is still a bit out of reach; don’t try to learn everything at once. Once you get past that point, you may as well implement your own system so you have full control over the code and how it works. It would also serve as a great learning exercise to test your programming and math abilities.

Remember that programming in an educational context like VEX is a bit different from programming in industry. While your options are generally more limited, there’s also direct benefit to implementing things yourself rather than using an off-the-shelf library, in that you get to learn how they work at a real practical level; after all, even if you’re here to compete, you’re also here to learn. Take advantage of that while you have the time to.

4 Likes

Actually VEXcode could do everything PROS does,
You can use your own editor when VEXcode is open, we have a file watcher running, just make the VEXcode window small and use the download/run button. Any external edits are picked up by the VEXcode editor.

Okapilib is only “sort of” a part of PROS, it could be ported to VEXcode as well, perhaps a summer project for someone.

I already have provided lvgl as a library for VEXcode if you want to use it.

VEXcode has an event system PROS does not have. The multi-tasking is different from PROS but, for all practical purposes, they will work the same on the V5.

The underlying SDK that PROS uses is a subset of the VEXcode SDK, the only official way to access V5 functionality is via the SDK, so there’s really no advantage to be gained there for either PROS or VEXcode.

4 Likes

Correct me if I’m wrong, but I believe PROS allows you to supply 12.5 volts to the motors through voltage control, as opposed to the 12 you’d usually get from voltage or speed control through VEXcode.

1 Like

No it doesn’t.
Same voltage API used by both, the limit is in both vexos and the motor.

7 Likes

I feel like if the file watcher wasn’t so buggy (half of the times I move a file or folder it doesn’t register it or teleports the folder to some other path and only notices files if they were moved while project is open), if the compiler got fixed (it doesn’t look/compile files in subdirectories e.g. src/pid/drive/holonomic.cpp will not be found by the compiler), and at least a basic command line was added then you could make the argument of being able to use another text editor like VSCode. It’s a clunky experience to run VEXCode in the background of a text editor in order to compile or download with a buggy compiler. All of that ruins the point of even avoiding using the VEXCode editor because you will still be limited by it when you run any other text editor.

1 Like

It only works if the project is open.

We leave it to the customer to update Makefiles as necessary if you deviate from the default setup, just like “real world” dev environments.

The compiler is not buggy, we use clang, so any compiler bugs are owned by the LLVM organization.

5 Likes

I think this is important to keep in mind for everyone. It’s all just code. Anything code could do in vex code, code could do in PROS.

There are some style /api differences that might make you prefer one or the other but you could make a wrapper such that PROS code works in Vex code and vice versa.

LVGL and okapi is just examples of someone already having done the work to get them running in PROS. There are thousands of C++ libraries besides them and if you wanted them for cool features you would have to do the work yourself. 2 libraries is not a ton in the scheme of things.

8 Likes

exactly, I could technically build the PROS libraries using VEXcode if I wanted. In fact, the Python implementation that we have for V5 (which Tim has hinted at already) has the VM built as a user program, I could have easily used VEXcode to build that (although I didn’t, my preferred text editor is called BBEdit and I tend to compile at the command line). You can build any VEXcode project at the command line, just add the toolchain to you shell path and type “make” in the project directory.

3 Likes

It only works if the project is open.

Yes I am aware, even when the project is open it does strange things when moving files around like creating a new folder in project directory and moving a single file to it.

if the compiler got fixed (it doesn’t look/compile files in subdirectories e.g. src/pid/drive/holonomic.cpp will not be found by the compiler)

We leave it to the customer to update Makefiles as necessary if you deviate from the default setup, just like “real world” dev environments.

compile or download with a buggy compiler.

The compiler is not buggy, we use clang, so any compiler bugs are owned by the LLVM organization.

This is my bad I should have looked at the makefile.

PROS and VEXCode are equally capable of writing the same code, PROS doesn’t have some special sauce that makes their code ‘better’; however, VEXCode still can’t call running an entire editor in the background of a text editor to build and download projects to just using pros’ command line.

2 Likes

I probably shouldn’t post this, but I was playing with a pet project last year, I’m afraid it will never become public (well, at least I doubt it will).

image

3 Likes

As someone who runs Arch Linux on my laptop and who much prefers to write code in a Linux environment, PROS’ support for Linux is a very important advantage over VexCode. Even besides being usable on linux, PROS allows me to code, compile, and upload all from the editor of my choice, without the necessity of running a second whole editor simultaneously. Additionally the PROS CLI exposes quite a bit of functionality that allows for easy scripting. For example, early last season when wireless download and debug were not available, I wrote a script to compile the code on my computer, copy the binaries to a raspberry pi on my robot, then run prosv5 upload on the pi to get in effect wireless downloading months before such a feature was available otherwise. Such a method is still the only way to get high speed debug data back from the robot, and is not really possible from what I’ve seen of VexCode.

14 Likes

What… does that do?

Is there a particular reason why?

@Taran
@Barin
It’s VSCode

1 Like

Yea, we figured. @sazrocks informed us through other another medium.

1 Like

I think the project in question is the V5 sidebar on the left. I was thrown off by that into thinking it was VEXcode, but it clearly is not.

3 Likes