Romi, what's next?

Alright…here it goes…
We currently have four romi bots that I would like to utilize with an arm that we just purchased. We have no problem getting the romi up and running and driving. We use the romi reference and java to run it successfully. The next step that I am unsure of is how to wire and program the arm. We are running into some wiring issues and I am unsure of where to look for pictures and diagrams on how to connect the arm to the romi. Do we need to get a voltage regulator and a battery pack? We have 6 batteries in the bottom that we use, but is there something different we need to do with a battery pack? There is very limited documentation to pull from, and I am just trying to give my kiddos a resource to run this. My IT guy, who is wicked smart, is even really confused by the wiring and other accessories needed.
Selfishly I am wanting someone to walk me through it step by step if they can, so that I can teach my kiddos. This is not my area of expertise, but I want to give them as many experiences as possible that closely relate to the big FRC robot.
Thanks so much to everyone!

which ARM are you trying to use on the ROMI? is it the servo one or?

Good question. What do I look for?

Part/Model number from the box/invoice? But assuming you got it from Pololu (you can actually get the ROMI from other vendors), it’s most likely this one -; if this is it, please make sure you read and be familiar with the doc before doing anything electrical - Pololu - 4. Using the Robot Arm for Romi. [And likewise make sure you are familiar with the ROMI’s - Pololu - Romi Robot Kit for FIRST - Red].

If this is the Arm, it’s basically just a servo (red - power, black - ground and white is signal) with the analog voltage feedback (green wire). You can ignore the feedback wire part for now and just focus on getting it powered and drive the signal (PWM). You can test the Arm independently from the ROMI to make sure that it’s operable before trying to tie it to the ROMI.

1 Like

There have been a few discussions about this. I’ve used the Pololu 2.5A regulator board to power the servos, but haven’t used the arm a lot. Details can be found in these discussions:

@Mr.R_2 might have some knowledge in this area.


Yes, you need a voltage regulator. You can probably move one servo at a time without it, but if you try to use all three servos it will draw too much power and brown out the controller. You don’t need a battery pack, but you’ll probably go through a lot of AA’s if you don’t use rechargables.

From the thread @veg referenced, here is how we wired our regulators. You can use the Pololu regulator, but we just used these super cheap RC car regulators and they’re fine.

Here are the basic steps:

  1. Follow the instructions when you put the arm together. The kids tend to just wing it but the servos get attached to the arm in the wrong position and they have to take them apart later. The instructions give you a PWM pulse to command the servo to, but you can also just rotate it carefully by hand.
  2. Solder the regulator to the board. See the thread from above again.
  3. Remove the jumper and plug in the voltage regulator instead.
  4. Power up the romi, connect to its wifi network, make the filesystem writable, and configure at least 3 external ports for PWM.
  5. Write some code. See this CD post for details and a link to our arm code.
  6. Connect each servo to a port you configured, that matches your code.
  7. Verify full range of motion on the arm’s lift, tilt, and gripper. Disassemble and adjust as needed.
  8. Set appropriate limits in the subsystem so the servos cannot be commanded beyond the mechanism’s range.


  • Verify range of motion and set limits one servo at a time. Unplug the others, just to isolate any issues.
  • If you hear Romi make a beep you’re drawing too much power or the batteries are low. Make sure you’re not trying to command a servo beyond the mechanism’s range of motion. After the beep, Romi will usually misbehave until you restart the simulator.
  • If something doesn’t seem right, carefully touch each servo and see if it’s hot. If it’s bound up or trying to move beyond the range of motion it will get very warm.
1 Like

Once you have the arm moving, you can use the green wires for feedback. There are only 5 external IO ports though, so you can only get feedback for two of the three servos.

  1. Log back in to the Romi web UI.
  2. Make the file system writable and configure the two remaining ports for Analog input.
  3. Connect the green wires to the middle EXT port pin.
  4. Write some code using the AnalogInput object to read the servo’s position.

All the answers above are incredible. I apologize I did not chime in, but everyone else beat me to the post :slight_smile: post again if you need more help.

For us, the realization was that the Romi has more of the micro controller elements exposed than the Rio. We had to learn how to use them to make peripherals work.