Hi, I’m new to VEX in general, and VEX IQ specifically. My son was using the IQ super kit at school, and I was looking around for a robotics kit that could be programmed in C or C++, and settled on VEX IQ. The day after I ordered it, the availability of VEX Code for IQ changed from “November” to “early 2000”. I haven’t done much with it yet, as I prefer to wait stick myself in the eye a hundred times rather than do anything interesting in Scratch/blocks.
But looking down the road… it looks like the brain has 32K of RAM. Is all of that available for our code? What do we lose in overhead, if anything?
Is there any chance there could be an upgrade option for the brain, to use one of the other TI TM4C processors? There are a lot of processors in that family. For example, there are 4 that have the same 512K flash capacity and 256K ram (but none with 256K flash, 256K ram).
The plug-n-play nature of the kit is so great… imagine what we could do with 8X the memory!
ROBOTC is still available and works well on IQ.
Most of the RAM is not available, you will have less than 8k.
That’s not possible.
For a more powerful system, consider V5.
Please note that the IQ system is remarkably powerful despite having fairly modest hardware. I (a parent) have been able to build a bot with the following capabilities:
- 3-wheeled (kiwi) drive using omni wheels, so it could go in any direction (Please note that this requires the robot to run trig functions for each wheel)
- Gyro and field-centric orientation (forward on the joystick is always away from you, despite the robot rotating)
- Position tracking (the robot could pretty much return to a given spot by tracking wheel encoder positions).
Please note that the bot and code were never used in any competition, so lectures about student-centered competition are unnecessary.
Even running that code base, I think each loop through the main program was taking less than 10 ms. The robot never felt sluggish when driven with the remote. Remember, the robot is only storing and running compiled programs, so it doesn’t take much.
I agree with James, the V5 system is far more powerful, but don’t write off IQ too quickly.
Oh, absolutely, even with limited resources you can do some really cool stuff.
Here was one of mine from a few years ago.
@jpearmean: neat demo! I have seen some really cool stuff with the IQ, the one that stands out was a guy who put TONS of motors together and was trying to get a robot that stood up working. It was really nuts. Great stuff.
I did look into RobotC and also MeshStudio, but both are Windows only (Mesh Studio has a browser IDE, but I didn’t have consistent luck in downloading from it to the VEX, and well, it’s a browser-based editor).
8k… so the 32k is divided up into those 4 programming slots? ouch. Even with assembly it would be tough to do much, and I have no interest in learning assembly for a TI TM4. Which, I guess wouldn’t matter, because there doesn’t seem to be a way to actually hit the hardware of the brain.
The thing I like about the IQ system is that it’s quick to snap together a bot, I don’t have to spend hours just to build a basic bot (body). My interest is in the programming side, to build an interactive bot that can hopefully do some learning while it plays games. 8k… even 32k… that’s beyond ‘tight’. I don’t know how efficiently VEX Code compiles down to binary, but having done 6502 assembly with 64 and 128K systems in the past… oof.
Sounds like I’ll have to switch over the v5 at some point here, but we’ll see what can be done with 8k. (makes me cry just saying it).
No, programs reside in flash memory, each slot has 32K of flash (although technically they don’t have to be equal in size). The 32K of RAM is divided into two, 20K for system code and 12k for user code, however, by the time the user code support libraries have taken their share there’s very little left for variables etc. in the user program.
Well, RobotC on Vex IQ is a VM-based language. The compiler produces a kind of bytecode for the virtual machine running on the brain. Given the VM RobotC centric primitives, it makes it perhaps more memory efficient than what assembly would be. But learning, as in machine learning? Not a good platform for that, expecially with very limited (read: hacky) ways to implement any persistence.
V5, on the other hand, has 128MB RAM (a lot can be made available to the user code), 660MHz Cortex-A9, SD card access … and you can still use it with snap-together Vex IQ pieces if you wish (my son still prototypes from IQ a lot, including building complete robots, just using V5 motors and brain).
You can code the VEX IQ brain today in C++ using Robot Mesh Studio https://www.vexforum.com/t/c-for-vex-iq-now-with-robot-mesh-studio
Can you post the part number for the LED display, I’m not finding it on the site
The RobotC programming lets you create very complex routines and the code that it generates is pretty small and quick, I’d highly recommend it.
I’ve used the RobotMesh, the blocks language part is pretty sophisticated, and it lets you see the python code that can also be used.
The block languages that let you create your own custom blocks is pretty cool. I’d think twice about eyestabbing before I completely discount it.
If you are looking to build small / lightweight creations, you can use V5 Smart Motors/V5 Robot Brain with VEX IQ structural parts. The V5 Robot Brain already includes VEX IQ mounting holes on the sides, and you can mount the V5 Smart Motors onto IQ structural parts without any damage by taking the end cap off the motor, and flipping the two mounting standoffs 180 degrees.
After these are flipped, reattach the end cap onto the V5 Smart Motor. The two mounting posts on the motor should now be smooth and flush, and can be mounted onto any IQ structural beam using the standard #8-32 x 1/2" screws from VEX EDR without any damage. Please note that you should use the #8-32 x 1/2" screws with a Nylon locking patch (P/N 276-5007) instead of a liquid threadlocker (such as Loctite), as the latter will chemically attack the ABS plastic used in VEX IQ beams.
The only thing to keep in mind is that the plastic VEX IQ building system was designed to work with the 1.4 Watt (output) VEX IQ Smart Motors. The peak power output of the V5 Smart Motor is 11 Watts, so if you get aggressive with shock loads or gearing, you can pop apart or break IQ parts.
@nenik: oh, that’s fantastic. I assumed they were essentially incompatible, physically. I’ll play around with the IQ some more, and then probably get the system bundle for the v5. Thanks for that hint!
Haha, yes, not an IQ product.
For anyone that is interested, it used four 8x8 matrix displays from here.
and a TI launchpad board driving them running as a generic IQ sensor. (as well as a little custom electronics to power the launchpad from the IQ)
All the code, both the ROBOTC code for the IQ and the MSP430 code for the launchpad, is here.
Nice boards, I like how you can set the direction of the data transfer.
Did you power them off of the TI Launchpad or the IQ?
If you had to build it today, would you go for one of the Adafruit LED I2C combos? (https://learn.adafruit.com/adafruit-led-backpack)
Everything was powered from the IQ, there was a 5V regulator for launchpad and IIRC the 8x8 displays. I still have this project, used it occasionally at the school open house , I have a hard time dismantling my robots. The Adafruit displays look quite a bit smaller than the ones I used which were 2 inch square
@Art_Dutra_IV: thanks for the info! I look forward to my poorly engineered plastic robot spilling its guts everywhere when my programming gets sloppy. No but seriously, I think it’s great the systems have some low level compatibility on the physical end of things.