Can robot brain get/send custom messages to PC?

@vyuschuk, there are several great things about VEX EDR system.

First, there is a lot of matched mechanical components that are very easy to build / prototype with, if you need a platform that is stronger than Lego Technic or VEX IQ.

Second, if your kids are into robotics and are competitive they may fall in love with VRC and there is a great community that formed around it.

Also, VEX EDR electronics is good for students to get started with out of the box, but it was not designed for easy tinkering or to be interfacing with non-VEX components. Legacy Cortex system is slightly better in that regard, but V5 is nowhere near to the point where it is as open and as well documented as something like Arduino or Raspberry Pi.

The best document, I’ve seen, about interfacing with non-V5 components is the one linked by @majorjoel2

However, it is not for the faint of heart and you will need to have a lot of prior electronics knowledge just to understand it and get started.

If you already know that your children like to tinker with metal parts, screwdrivers, gears, and wheels then VEX EDR V5 could be great platform for them. And if they happen to like V5 and/or get into competitive robotics, then expect yourself to be buying more mechanical parts over the next months and years. But, if you are not sure about their future commitment, then VEX IQ or Lego Mindstorms might be a cheaper alternative to collect dust after a few weeks of initial use.

Personally, I like VEX EDR mechanical system for quick prototyping and getting demonstration models built, but V5 brain and other electronics is too expensive to leave it on a one off models like people usually do with Arduino or other cheaper alternatives.

Unlike V5, older Cortex motors and electronics are much easier to interface with other control systems (Raspberry Pi, Arduino, ESP), which may be something for you to consider.

Here is an example of using EDR motors and mechanical components with NodeMCU/ESP8266 microprocessor module controlled by a cell phone over WiFi: Inexpensive control system for teams without access to Cortex / V5 off-season

If the budget is limited you can get your feet wet in VEX by getting an older Cortex system cheap on eBay, and then, if you like it, keep adding more parts and/or V5 control system if you decide to compete in VRC.

11 Likes

@vyuschuk
If you run a linux (preferabally ubuntu 18.04) then it’s pretty easy to send ROS messages over the v5 brain via the serial connection with a USB.

This provides a great way to interact with the brain using custom messages. Use this to download to the brain with PROS, and use this to connect with ROS on your computer to the brain and publish the topics.

Just a thought :man_shrugging:

2 Likes

The brain advertises a service with several characteristics, there’s an exchange done where the brain id has to be entered to avoid ad-hoc connections, then you essentially end up with two bidirectional pipes that act the same as the two USB CDC channels. One is for admin messages, to download programs etc. the other is for IO to/from user programs.

As far as user code is concerned, the same stdio commands are used. Using std::cout will direct to whatever is connected, if USB and BLE are both active, then the data will go to both.

15 Likes

@Potatehoes914M ROS and PROS are new to me, thanks.
I get the sense that PROS makes the device less kid-friendly so I probably wouldn’t do that in the very near future.
However(!) it looks like I can give ROS a try with the mBot and Pi3 that we already have and see how that goes.

@sazrocks FWIW I wish I could mark the first reply as a second solution since it seems adding a Pi would indeed add the capability and add even more potential.

@jpearman I see that the VEX IQ supports a Smart Radio module. Should I infer that the IQ could also send/receive messages the same way?

1 Like

The radio is locked down, you can’t really do much with the V5 system wirelessly outside of controller communication.

There is one branch of PROS that supports a wireless stdin + stdout, but it has disconnection issues so it’s not recommended.

2 Likes

@djavaisadog Thanks. I assume you are referring just to the wifi (which was indeed my original, uninformed question) and not the bluetooth option mentioned later by others.

Just out of curiosity how hard would it be to plug 1 V5 radio directly into a computer to get (if I handled the r485 stuff) to talk to a V5 over the link.

What would it take to initialize connection?

1 Like

This sounds interesting. Would you do this to control a different V5 in a configuration similar to the upcoming VEX LINK, or would it be to talk to a controller using the radio. The former could be extremely interesting for external computing in a competition like VAIC. Obviously this would hugely benefit teams who can afford powerful computers, but maybe it would be possible to control the robot using a neural net on a remote computer. Then again, neural nets would have many issues…

1 Like

IQ is more difficult to communicate with as the BLE connection is reversed as compared to the V5. There is, however, more information available. VEX has (pretty old now) an sdk available and we wrote some demo apps when it was first available.

see my earlier comments about BLE.
VEXcode also supports wireless programming and stdio (in and out) through the controller.

quite hard, a fair amount of reverse engineering.
simpler solution (more expensive :slight_smile: )would be to use a V5 at the computer connected with USB, then use VEXlink (and yea, I know we have not discussed many details on that yet) with one or more radios to talk with the robot (or robots) you could theoretically control up to 20 robots from the one PC.

12 Likes

I would be really happy to be able to interface to the PC via the Vex V5 Controller vs another V5 Brain, since the terminal window in Vexcode already can display output when the controller is connected to the PC via USB and wirelessly to the brain via VexNet or Bluetooth
is that a possibility? would it be theoretically possible to have say a python program connect to the ‘terminal’ and send and receive messages to the Brain via the handset and vexnet?

1 Like

Not via the controller.

With the direct USB connection, anything that can open a serial port could replace the terminal. Either close VEXcode or disable the terminal in preferences to free up the serial port for use by other code.

the terminal is a bit more difficult when using the controller as the messages are part of the admin messages that get sent, we have not opened up that protocol beyond third party devs, but I’m sure someone could look at what PROS is doing and copy it.

6 Likes

Ok Cool, I got that to work with Terra Term, Not as useful to have a hard tether to the V5 Brain though.

Also I am not seeing how to send data from the PC to the Brain,

More to dig into…

Sorry to be a latecomer to this thread. Lots of useful stuff, especially about wireless. I had a student ask me about connecting a GPS (real GPS) sensor to the V5 for a summer project, and my first thought was to get a GPS hat for the Raspberry Pi, and connect the Pi to the V5 using serial cable. I also live in the FRC world, where Raspberry Pi’s are very commonly added to robots as co-processors, usually for vision processing. It seems to me that the Pi is becoming a standard way to add edge computing to a robot, using a model where the Pi accomplishes a computing task to produce simple numbers, to feed to the main brain like any other simple sensor. Since the Pi has host-mode USB, it should be a simple matter to connect the V5 by USB, and do serial comm. As stated by @Potatehoes914M, there’s a way to do this with PROS, and I’ve seen other messages on the board recommending PROS for this. I’ve also seen a message or two implying VEXCode can do this with stdin/stdout. The latter seems like the ideal way for my student to proceed. Writing a few print/read statements in C++ and Python to establish a simple protocol would be within their capability. Moving to PROS might be too much. But my question is whether this will work in VEXCode? I haven’t had an opportunity to try it myself, but wondering what to tell the student.

1 Like

Lets continue discussion over

1 Like

I’ve worked with GPS in graduate school. Things like this, basically communicate over serial.

Often a u-blox chip. There’s a standard NEMA protocol these things speak. So connecting to VEX boils down to getting serial into the VEX brain.

1 Like

We are thinking of using this GPS hat, along with running GPSD on the Pi

yes, no problem, as long as the Pi sees the V5 and mounts as a CDC serial device. VEXcode supports stdio using C or C++ APIs.

A bit more tricky in Python as that serial output is used for REPL, I’ve improved that in the next Python VM (meaning you have a choice now), not sure when Robomatter will release the next VEXcode V5 with that update though.

6 Likes

I Have 276-6009-750 With Brain 276-4810 I Try To Use VEXLink To Connect With Computer Serial But I Can’t How Can Solve This