Vex Robotic Design System

The Vex Robotic Design System is like an Erector® Set on steroids. It's a system of motors, metal parts, and plastic gears, treads and wheels, capable of constructing R/C vehicles weighing several pounds. Autonomous operation is possible, but is not the main focus of the system (user memory is only about 32 KBytes, for one thing). But if you consider the utility as a mechanical platform, it's a very compelling system. Compared to Legos® it's more expensive, physically larger, harder to assemble, and more rugged. It's our intention to adapt JCX to be the "super-brain" for Vex. JCX will also enable mixing Lego and Vex motors and sensors, as well as other common robotic sensors.


What is Vex Robotics?
VexLabs and IFIrobotics are divisions of Innovation First, Inc. Vex Robotics is the online presence (documentation, online store, community, etc) of the Vex Robotics Design System, which was inspired by FIRST, and is derived from the actual kit of parts issued to all FIRST Robotics Competition teams. FIRST (For Inspiration & Recognition of Science and Technology) is a non-profit organization founded in 1989 by Dean Kamen, inventor of the Segway Human Transporter, to inspire an appreciation of science and technology in young people. Another major influence in the development of Vex is the Carnegie Mellon Robotics Institute.

What does JCX add and how does it interface?

In Nov 2005 we first started working with Vex, resulting in this project as presented at JavaOne.

JCX prototypes have been demonstrated adding these features to Vex::

  1. Java programmability with 3-20 million byte codes per second execution, 2-8 MBytes of user flash, and 512K to 2 MBytes of user SRAM.
  2. DC motor support in multiples of 4 motors per JCX.Moto board
  3. Analog inputs in multiples of 8 per JCX.Sensor board
  4. Digital I/O in multiples of 24 per JCX.DIO board
  5. TCP/IP through the JStik
  6. Dallas 1-Wire, SPI and I2C
  7. Amulet LCD/touchscreen
  8. CMUcam color vision support
  9. RF Modems
  10. Easy mixing of Lego and Vex sensors and motors.

Vex-related links
http://www.vexrobotics.com The Vex Robotics home website. You can order online.

http://www.vexlabs.com

Vex- and IFI- compatible accessory parts
http://www.ifirobotics.com motors, controllers and various parts
Vex V.5 Robotics Starter Kit Appendix 67 pages including (on page 20) a complete inventory of all items in the Vex V.5 Robotics Starter Kit

Common questions and answers about the Vex Controller

Note: These questions and answers are taken from the online Vex Labs forum and are duplicated here to save you the trouble of scrolling through multiple messages. Systronix is not responsible for any errors or inaccuracies.

RX1 and RX2 are inputs to the Master processor and can not be changed. There are 2 Serial Ports on the User processor. One is connected to the Serial Port and the other one is connected to the RX and TX on the Analog/Digital connector. Both these Serial Ports are TTL levels and not RS232. Do not connect RS232 devices to these Serial Ports without level converters or damage may occur. There is no I2C bus available.

Q: i was wondering how the signals are encoded from the rx module? is it a pattern of 0-2 ms pulses in 16-20 ms. if this is true is 1 ms centerd 0 ms full reverce 2 ms full forword? if i hope i can write a computer program to control a vex through my computers serial port.
A: The pulse width from the RF Receiver is 0.870 – 2.15ms and has a period of 18ms. This signal will be decoded by the Vex Micro Controller to a value from 0 – 255. The control signals are TTL levels where as your computers serial port is at 232 levels. You can damage the Vex Micro Controller if you do not do a level conversion.

Q: i assume that since you are using timer0 only to sync pwm generation to avoid conflicts with spi interrupts, that you are using timing loops to generate the pwm outputs. does this mean that for 1-2ms out of every 18 the controller is busy doing nothing but counting cycles and switching motor outputs? the reason this concerns me is that i've got ahold of an analog devices gyro and an accelerometer and would like to attempt to put together a self-balancing robot. seems to me that i might not be able to do this if i can't sample the sensors while waiting for pwm generation. i'll probably need to run hardware pwm at a much higher frequency than 50Hz through an h-bridge and either get a couple of gearmotors or gut a couple of yours. which leads me to a question about the motors in the kit. are they not essentially hobby servos with the stops removed and the positioning feedback disconnected? if i wanted a plain vanilla gearmotor that would mount to the kit could i buy a spare and remove whatever electronics might be inside. maybe tuck a little board with an l293d or similar into it.
A: All PWMs get generated in one call to generate_pwms which takes 2ms. This is done every 18ms. If you can handle a 55Hz rate then allow the master to generate them for you and you will have plenty of time to sample sensors. A fellow from Deka has already built a balancing robot using the Vex controller so we know that it is possible.

As for the motors, they are basically a servo motor that has been modified. They work form a standard R/C PWM signal. That signal is decoded by a micro-controller. You must be able to decode that same signal and then control the motor.

Q: wondering if the motors run off of a 50hz pwm with a 1-2 ms duty cycle like hobby servos.
A: The period on the PWM Outputs is 18ms or about 55Hz with a 1-2 ms pulse width. The nominal dead band varies from 1.47ms – 1.55ms but over all temperature and voltage ranges could vary from 1.36ms – 1.68ms. The operating range of the Vex Controller is 5.5 – 9.0 Volts which will be applied to the + Power PWM Outputs. The + Power PWM Outputs can source up to 4 Amps. The PWM Control signal High is about 4 Volts @ 1mA and for a Low is about 0.6 Volts @ 1 mA.

Q: i'm still trying to dope out what i've got to work with. it seems that you guys have hijacked the high priority interrupts. i'm guessing that you use them to catch the spi transmissions from the master controller and to generate pwm outputs for the motors. i figure you have to be using one of the timers for pwm as well. timer0? so is there anyway to hook into the high priority interrupts? maybe steal back whatever timer you're using and run a whole mess of servos off of the a/d ports -- oops, found the bit about getting timer0 back in the readme, but am not sure what functionality i lose. presumably all of the motors.
A: You are correct. The SPI interrupt is the only High priority interrupt and all the other interrupts are defined as Low priority. These settings can not be changed. When the Timer 0 flag is set, it tells you that the SPI data transfer between the Master and the User processors is about to take place.

Use the vex_library for Timer 0 to work this way. Use the alltimers_library to have access to all Timers. The only functionality you lose by doing this is that the User processor (your code) simply will not know when the SPI data transfer is about to take place

Q: I've read on the CD Forum that the PIC in the Vex Micro Controller is the same PIC that is used in the FRC RC. If that is true, do the analog inputs have 10bit resolution as well, or just 8? It will make a difference when I start programming.
A: You are correct. Both Controllers use the PIC18F8520 and have 10 bit A/D resolution.

Sprockets and Chains are Fully Compatible with each other and the Mini Robot Kits from IFI Robotics. They can be used with the Radio Shack Vex Robotics Kit since the drive shafts are the same -- Vex Sprockets must use Vex Chain and our Sprockets must use our Chain.

JCX brings the power of Java Technology, the speed of native execution, real-time capability, a power-thrifty 32-bit CMOS controller, and an open, standard system bus within reach of almost everyone.


Systronix® 939 Edison St, Salt Lake City, Utah, USA 84111
Tel +1-801-534-1017, Fax +1-801-534-1019
contac ust Time Zone: MDT (UTC-6)

Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries.
Systronix is independent of Sun Microsystems, Inc.
TStik, JStik, JCX, JStamp, JSimm, JDroid, and JRealTime are trademarks of Systronix, Inc.
1-Wire, iButton and TINI are trademarks of Dallas Semiconductor
Simmstick is a trademark of Dontronics
LEGO® is a trademark of Lego A/S, Denmark