Monkeybot
Team Members
Nathan Henry - Senior, Mechanical Engineering
Nelson Rosa - Ph.D Student, Mechanical Engineering
Overview
The goal of this project was to create a brachiating robot capable of swinging itself side to side or climbing. This two link robot has electro-magnets on each end and a DC motor at the pivot. With one magnet on, the robot swings under gravity and is aided by a input torque from the motor. This torque allows the swinging robot to overcome friction and pump energy into the system. Once the swinging arm has enough energy, the second magnet reaches a point at the same height or above the first magnet. At this point, the second magnet is turned on the motor is turned off. Now the process is repeated, swinging on the second magnet.
We attempted to control the motor using both a closed loop control, with rotary encoders, and an open loop control, using a time based algorithm.
Video of the monkeybot climbing
Geometry
The monkeybot behaves like a double-pendulum system. The geometry, and our definitions of angles is shown to the right. The two angles important to us are the angle between the top link and a horizontal reference, and the angle between the two links. The rotary encoders over the magnet provide a measurement of the first angel, while the motor encoder measures the second.
With these two angles we are able to implement a variety of control laws as described below.
Control Method
Closed Loop Control
We first attempted to control the DC motor using feedback from a rotary encoder placed directly over each magnet. From this encoder, using both the A and B channels, we are able to determine the sign of the top link's velocity. We then implemented a simple control law in which the motor is full on in the same direction that the top link is rotating. This causes the lower link to pump in phase with the top link, mimicking the motion of a person on a swing set.
With this control law we were able to pump energy into the system, however, we were never able to add enough energy to get the bottom magnet to a height equal to or above the top magnet. Starting from a resting position, with the lower link dangling straight down, the bottom link pumps in phase with the top link. The bottom magnet gradually gets higher and higher, but seems to stop increasing when it reaches a height slightly below the fixed magnet. Friction seems to be the main reason why the robot can not climb.
We also implemented a control law where the lower link pumped out of phase with the top link. This caused a large increase in the movement of the top link, however, the bottom magnet stays in nearly the same position throughout.
Open Loop Control
Our second approach was an open loop, time based algorithm. It involves no feedback and is just a simple set of commands implemented by the PIC. In order for the monkeybot to climb, the first link must be started with some potential energy. The magnets are both on and at the same height when the algorithm begins. The algorithm is as follows, it can be tuned by changing the values A,B,C,D which are on the order of 500-600 milliseconds.
Release magnet one Motor on counterclockwise for A milliseconds Motor off Magnet one on Release magnet two Motor on counterclockwise for B milliseconds Motor off Magnet two on Release magnet two Motor on clockwise for C milliseconds Motor off Magnet two on Release magnet one Motor on clockwise for D milliseconds Motor off Magnet one on
This process is repeated, and overtime, the monkeybot climbs. A video of this can be found here.
Mechanical Design
Parts List
The robot contains:
Two acrylic links Two rotational ball-bearings Two electro-magnets Two rotary encoders One Pittman GM8224 DC Motor with 19.5:1 Gear Head
Design Considerations
The two links, made of 1/8” thick acrylic, create the body of the robot and create a mount for both bearings and the motor. The thickness and the material was chosen to minimize weight, and thus the torque required to swing the robot. The links were produced using a laser cutter. The rotational ball bearings mount on the links and hold the magnets, allowing the robot to swing around a fixed point. The encoders are mounted above the magnets on a bridge, so that they are capable of measuring the rotation of the link around the magnet.
The Pittman motor was chosen to provide enough torque to the links to overcome friction. The gear head is also needed to get the necessary torque. With the gear head, the Pittmann is capable of providing 2.1 Nm of torque, which is more than enough for this application. However, the motor is rather large and thus increases the overall weight of the system.
Electrical Design
Code
Results and Reflections
We successfully created a climbing robot, however, the monkeybot was not as intelligent as we had originally hoped. It was unable to swing itself up from rest using a variety of closed loop control laws, most likely due to the large amounts of friction. To combat the high friction, we started the swinging link with some potential energy. From that point, it was relatively simple to design and tune an open loop time based algorithm which causes the robot to climb.