Introducing RomiPi: A ROS Package for the Pololu Romi

The Pololu Romi with 32u4 Control Board is a robust, low-cost (<$150), educational robotics platform that supports interfacing with the Raspberry Pi computing platform. The Robot Operating System (ROS) is a robotics framework used throughout academics and industry which supports many distributed communication, computer vision, among others. While Pololu offers great support for the Romi through Arduino examples and a Raspberry Pi hardware driver, it does not support the ROS.

Pololu Romi outfitted with Raspberry Pi 3, Raspberry Pi Camera v2, and Octahedral Aruco Tag Board.

RomiPi is an attempt to bridge that gap and bring ROS support to the Pololu Romi with Raspberry Pi. Initially based on the Turtlebot3 example code, significant changes had to be made to adapt the embedded code from the relatively powerful OpenCR platform of the Turtlebot3 to the more modest Atmel AVR 32u4-based Romi 32u4 Control Board. Major components of RomiPi project are the ROS services, the I2C driver, and the Arduino 32u4 sketch.

Currently, the RomiPi project supports basic teleoperation through ROS. RQT visualization, Gazebo Simulation, and world-level navigation are planned, but have various levels of completion.

GitHub Source available here.

RomiPi Features

ROS Service Topics for Teleoperation

The romipi_astar package subscribes to a cmd_vel topic and publishes odometry and transform topics. The romipi_teleop package contains tools for teleoperation control, generating cmd_vel twist messages.

Pololu Romi 32u4 Control Board Features

The Romi 32u4 Control Board processor only handles low-level robot behaviors, like motor speed control, and communication. The Pololu supplied i2c driver has been modified into the romipi_astar ROS node. The Arduino folder contains the 32u4 code and the romipi_astar ROS node runs on the Raspberry Pi to handle ROS communication.

The Arduino Romi-RPi-I2CSlave program currently handles the following functions:

  • Odometry
  • PID velocity control
  • Twist to wheel velocity conversion
  • NeoPixel status lights
  • Low-Battery Warning Chimes
  • Startup Chime

Teleoperation Support

  • Teleoperation with Keyboard, Dual Shock 4, and Logitech USB Joystick

Features in Progress

  • World Navigation (romipi_navigation)
  • Simulation (romipi_gazebo, romipi_simulations)
  • rqt (Romi Operation.perspective, romipi_description)

Get Started! Get Involved!

Build your own RomiPi and install the RomiPi ROS packages.

Build Your Own RomiPi Robot Hardware

RomiPi Software Installation

  1. My RomiPi is currently running ROS Melodic on a standard Rasbapian Ubuntu 16.04 installation. Yep, this is a big step. See my previous post here.
  2. Follow the ROS Melodic tutorial to generate a catkin workspace and then clone the RomiPi GitHub repository into your catkin_ws/src directory.
  3. Return to your catkin_ws directory and build the project: catkin_make
  4. Install a recent version of the Arduino IDE and sketchbook location to ~/catkin_ws/src/RomiPi/Arduino. Open the Romi-RPi-I2CSlave upload the executable to your Romi 32u4. Note: you may not be able to do this from your Raspberry Pi.
  5. roslaunch romipi_astar romipi_astar_node.launch to start the
  6. roslaunch romipi_teleop romipi_teleop_key.launch
  7. If all is well, then you should be driving your RomiPi!

That’s all for now. Check back for updates if you’re interested, as I plan on adding more features in the near future. Feel free to comment below or contact me if you’d like to contribute!

This entry was posted in Projects, Robotics and tagged , , . Bookmark the permalink.

Leave a Reply