E177 Advanced Matlab, object oriented programming
Berkeley Laboratory for Automation Science and Engineering
Professor Ken Goldberg
Spring 2013


Team members:
Rundong TianDH Parameters, Link/Robot Classes and associated subclasses, GUI design
Eric Soenksen– GUI design and implementation, GUI callback functions
Keeley Maher – loading trajectory files, trajectory to text, creating trajectory files, GUI design
Fred Hertlein – getframe, simulation window, GUI design and implementation, playback, and viewing angles

The coursework of this class introduced object oriented programming, GUIs, and interfaces (JAVA, .NET, C) in the context of Matlab.

For the final project, we chose to build a visualizer for the RAVEN surgical robot platform, which is a part of a research project me and Keeley are involved in. The objective of this visualizer was to aid in debugging the various accuracy issues we were experiencing sans joint encoders, as well as an exercise in object oriented programming and robot kinematics.

Although our visualizer was made for the RAVEN surgical robot, it can easily be extended for general kinematic chains.

aperture

Animation of a hypothetical pick and place sequence created with our visualizer.

aperture

UML Diagram of the robot structure.

Each subclass of Link contains information encoding the shape of that particular link, as well as its position with respect to the world frame. The links associated with a particular robot are held in a Robot object, which has functions for computing forward kinematics and plotting

Important methods:
1) move - updates the current state of the robot
2) forwardK - the forward kinematics function. Calculates the new positions of each link given the current joint angles
3) plotRavenColor - plots the robot with selectable quality


aperture

Credit to Fred and Eric for coding up most of the GUI. Some of the features include:

Free Control Mode:
Directly change joint angles

Trajectory Analysis Mode:

Loading a trajectory file
Creating a trajectory file
Analyzing trajectory (joint positions)
Trajectory playback