Dear robotics programmers and enthusiasts,
VEX is amazing, and I feel like have learned a great deal in my past four years in VRC, especially about programming. The VEX hardware is fast and has external communication capability, and more and more tools are being put in place to program whatever can be imagined on VEX hardware. In order to more fully utilize these hardware abilities, I would like to showcase a new package I have developed.
Linked above are new ROS packages that allow VEX to interact with full-scale robotic systems via Robot Operating System (ROS). These packages provide (free and open-source) communication clients for ROS, which connect the VEX Cortex or the VEX V5 Robot Brain to ROS.
More specifically, the packages provide a ROS node that will listen for all of the messages on topics that a Cortex / V5 brain is subscribed to, and encode those messages and send them to the Cortex / V5 Brain. On the Cortex / V5 Brain end, the packages set up a PROS environment wherein it is possible to publish and subscribe to these messages. Together, these two elements effectively connect the Cortex and V5 Brain to the ROS ecosystem.
Currently, the ROS master process is tested to work on Linux. Now that ROS is announcing experimental releases of ROS for Windows 10, these packages, with some configuration, may also be compatible with ROS core processes running on Windows 10.
With this new connection, it is possible to have ROS, a professional robotics framework, supply additional robotics libraries, hardware interop, and programming flexibility, all to the VEX platform. The above links provide instructions for installation, examples, and more.
I think that the new possibilities for this project are exciting! These packages are a learning opportunity to use VEX hardware (that you already own) to taste a completely new depth of robotics. If you are looking to learn about professional robotics in the future, I hope you will consider challenging yourself to use these as stepping-stones to make a new project. Maybe you are interested in graphing sensor output on your computer. Or perhaps you want to go beyond that, and make your own GUI for real-time robot diagnostics and PID tuning, on the web. Or an app to control your robot. Or maybe you even want to try machine learning on your robot, and you want to use ROS libraries for that! Or whatever else you can imagine. In VEXU, it is even completely possible to run this ROS connection in competition, if you set up the system (a raspberry pi 3, for instance, could run ROS, and use a USB to connect to the V5 brain/Cortex). Having ROS at your disposal, whether for projects or competition, is something I hope you will consider taking advantage of.
The current projects already contain limited demos of using ROS to control a robot via an Android app, or an external joystick. The possibilities go far beyond these simple examples, however. The real power of combining the “intelligent simplicity” of VEX systems with the flexibility of ROS is that there are no limitations on what your system looks like. Therefore, I challenge you to use your imagination to come up with these systems, on a cost-effective budget, with hardware you already have!
If you have questions about how to configure/setup the packages, please see the 'README’s of the links above, or open an issue on my downstream repository (linked below) where hopefully I can help.
I hope you will find these ROS packages, rosserial_vex_cortex and rosserial_vex_v5, to be a helpful resource. This is a new chance to learn a powerful robotics framework. I believe that VEX hardware can be for VEX competitions, and everything else too. I can’t wait to see what you will decide to create, and I hope this project helps you along the way.