This topic confuses me.
Driving a CIM open loop is easy with existing FIRST motor controls.
Get a Talon, Victor or Jaguar and the power electronics are done.
Arduino can easily produce PWM.
Most servo CNC controls use PWM on the low end anyway.
They close the loop with encoders, potentiometers or other sensors in the control system.
Driving a CIM closed loop could be done with a Jaguar alone but that would hybrid part of the control into the Jaguar.
I use steppers to drive non-FIRST robots all the time.
Position in the environment exceeds the sort of sensing most CNC controls do.
That is why CNC machines can be very dangerous.
They do not 'see' hands in the work area.
There is no reason you can not use a stepper to drive a robot at all.
I know this post is 60 days old but I just came across it.
I am more confused why you would want to drive a robot around on G-code or M-code.
I doubt Mach 3 or BobCAD support a driving milling machine

Then again a router on wheels has been done an I doubt the software would know either.
I have considered using a FIRST size robot to haul around loads but at low speed and not under CNC control.
Bolt the milling machine to the robot frame?
That is a strange way to look at a portable machine tool.
Kidding:
Hey the driving milling machine needs some flood coolant.
Drive it through the locker room showers!
No...no...stop milling Lexan in the hall way now you need to tow a vacuum.
Not kidding:
I want to build a FIRST motor based CNC system.
I may even try to use the Talon or Victor for that purpose.
It only makes good sense when you think about it:
Every year we accumulate more CIMs and motor controls (drivers in CNC parlance).
We have the ever growing pile of parts.
A CIM is a 100+A 12V motor. That's plenty big enough to drive a CNC axis.
You need to control the speed of the CIM which we do all the time.
You need feedback and that's a concept we basically teach all the time.
All the community needs are viable plans and a working example.
It's not like we couldn't use a CNC machine in the competition!
So why not part the never ending pile as an act of technology recycling?
We could use but don't need fancy linear bearings.
You can use a piece of black pipe or even 80/20 extrusion as the linear system.
Just use skateboard bearings or whatever you can find.
You can gear down the axis with the cogged belts which is common for servo systems anyway.
You could probably use AndyMark gear boxes but the backlash would increase.
You don't need fancy ACME or roller ball screws, you can pull with belts or rack and pinion.
If you sit and think about this for a while you'll realize that you are sitting on a mountain of CNC parts.
Every year you participate you could be building a robot to make building more robots easier.
Parts required to make this work:
1. A computer to act as the control system.
3D printers can use G-code and M-code but I doubt the Arduino CNC controller has the power to drive a larger CNC.
There are plenty of PC based CNC control systems: EMC2 (Linux), Mach3 (Windows), KCAM (Older Windows), TurboCNC (DOS).
2. A suitable interface between the computer controller and the FIRST motor controls.
This for the most part already exists off the shelf.
I suspect the FIRST control system could be rigged to do this if you did not want to buy or build this.
3. Plates to put the CIMs on the machine with the necessary gearing to drive an axis at acceptable velocity and thrust.
This is perhaps the part most likely to require machine tools already to make.
4. A machine design for a gantry router.
I already have a pile of my own and other people's designs for this purpose.