Kubo: Overview

Amy Phung edited this page Dec 9, 2018 · 31 revisions

Kubo head-on image


Kubo is a Kubota tractor being developed as the first large Olin unmanned ground vehicle (UGV) to be run using C++, ROS, and Arduino rather than LabView hardware and software.

Currently Using:

  • Ubuntu 16
  • ROS Kinetic

Left max: 45 degrees Right max: 30 degrees


Ackermann Steering: Overview of Ackermann steering and explanation of corresponding ROS data type (documentation)

  • Hardware: List of the current navigational units, computational platforms, sensors, and other electrical hardware currently installed on Kubo as part of its autonomous system. (documentation)
  • NUC: Documentation on Kubo's mid-brain, its interface, and how to use it. (documentation)
  • Roboclaw Setup: Steps taken to set up Roboclaw Motor Controller for Kubo hind-brain (documentation)
  • TF Transforms: Documentation of coordinate frames and references for Kubo and its sensors. (documentation)


  • IMPACT-HCP: Developing an autonomous supply chain for the army's front-line using autonomous ground and air vehicles to transport goods.
  • Target Tracking: Kubo follows a set distance behind a moving object, rejecting disturbances and stopping when the object stops. Can be used to follow people or other vehicles.
  • Road Repair: Kubo uses an autonomously controlled box blade and grading blade to repair a weather-damaged or erosion-damaged road template. (documentation)

Robot Behaviors

  • GPS Waypoint Navigation: Uses GPS data from robot to publish heading and velocity commands to navigate robot to pre-selected waypoints
  • LiDar Obstacle Avoidance Uses LiDar data from Hokuyo to publish change in steering to avoid obstacles. (documentation)

Running Teleop System

  1. Make sure the steering is straight, the brake is off, the RPM is set to the minimum, and the tractor is set to low gear.

  2. Remove pins

  3. Turn the tractor electronics on

  4. Plug controller and Teensy into your laptop

  5. Run roslaunch hindbrain_min.launch

  6. Add pins, start tractor, raise hitch

  7. Plug in the Logitech Gamepad F310. Then, in a new Terminal, execute roslaunch gravl teleop.launch.

  • This launch file initializes the software necessary to read the controller and publish heading and velocity commands to /teledrive.
  1. In a new Terminal, execute rosrun gravl DriveState DriveState.cpp.
  • This command starts the program that takes commands from either /autodrive or /teledrive and publishes them to /drive, to which the hind brain listens.
  1. Turn on the power to Kubo's electronics.
  2. Plug in the Tractor Teensie. Then, in a new Terminal, execute rosrun rosserial_python serial_node.py _port:=[insert port here] _baud:=115200. Test steering and velocity actuators BEFORE moving onto the next step.
  • Example port: /dev/ttyACM0. Use Arduino IDE to see to which port the Teensy has connected.
  • This command connects to the Teensie via rosserial. The port (usually in the form /dev/ttyACM#) can be found through the Arduino IDE by selecting "Tools", then mousing over "Ports". This command also specifies the baud rate of the connection.
  1. Turn Kubo's wheels to the straight position and install the steering column pin; Attach the actuator clip to the velocity pedal.
  2. Release the brakes; Verify that velocity pedal is released; Start the engine.
Control L. Joy Vert R. Joy Horiz B Button A Button
Function Vel. Pedal Steer E-Stop Toggle Auto Toggle
  1. After estop, stop all terminals, remove steering pin, restart electronics, and reinstall steering pin. Currently, the velocity actuator does not recover from e-stop and must undergo a full system cycle to respond.


  1. Kubota B7510 Data Page (link)
  2. How to Read Tire Sizes (link)
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.