Skip to content

Project for ROB 550. Mobile Inverted Pendulum System

Notifications You must be signed in to change notification settings

saptadeb/balanceBot

Repository files navigation

Mobile Inverted Pendulum System

Codacy Badge

A project for ROB 550: Robotics Systems Lab course taught in University of Michigan, Ann Arbor. An overview of this project:

Acting

  • Dynamic control of DC motors to balance and control a wheeled inverted pendulum
  • Trajectory Following for a mobile robot

Sensing

  • Use of wheel encoders for performing odometry
  • Use of MEMS IMU sensors to determine orientation (heading, pitch angle)

Design

  • Build a system from the ground up based on an embedded system
  • Use of Beaglebone with Robot Control Library in C for soft real-time control

The control architecture can be explained by the following figure:

Dependencies

libroboticscape

Source code for The Robot Control Library is in the folder ~/Install/librobotcontrol. Check out the website, or the github repository for how to use the functionality it provides.

Running the code

  • run test_motors.c to test the motor standalone
  • balancebot/balancebot.c is the main code which starts two threads, and attaches the balancebot_controller() function to the IMU interrupt.

Directories and Codebase

Files Description
bin/ Binaries folder
balanceebot/balanceebot.c/.h Main setup and threads
test_motors/test_motors.c/.h Program to test motor implementation
common/mb_controller.c/.h Contoller for manual and autonomous nav
common/mb_defs.h Define hardware config
common/mb_motors.c/.h Motor functions to be used by balancebot
common/mb_odometry.c/.h Odometry functions
optitrack/ optitrack driver/server
xbee_serial xbee serial optitrack client code

Square Lap corrected by UMBark procedure

Check out the final report for more information and results.

Collaborators

Shreyas Bhat and Saptadeep Debnath