Cornell Mars Rover Arm
The rover arm was developed for the Cornell Mars Rover (CMR) Team between August 2023 and June 2024. During this time, I served as the Arm Subteam lead, directing the construction of the arm and overseeing the members of the Arm Subteam. This project was a collaboration with the Arm Subteam and other members of CMR. My design contributions included the lower arm, one of the end effectors (the rack and pinion type), and the miniature arm control/teleoperation. I did not work directly on the wrist design or the four-bar end effector.
To understand the arm’s design, it is essential to first grasp a few competition requirements. The primary requirement is that the arm must lift a 5 kg weight and place it in a drawer. Additionally, the arm must be capable of completing dexterous manipulation tasks, such as pressing keys on a keyboard, flipping switches, and pushing buttons. There were also several internal requirements that influenced specific design decisions, but I won’t delve into those here.
A picture of the rover in Utah at the Unversity Rover Competition.
Electro-Mechanical Motion
Three key components were used to build this arm: strain wave gearboxes, brushless DC motors, and field-oriented motor controllers (FOC).
Motors are an excellent choice for driving an arm like this. They come in two basic varieties: brushed and brushless. Brushed motors are cheaper but do not have great stall characteristics and usually perform better at high speeds. Controlling brushed motors is challenging because the basic control scheme relies on PWM. PWM control does not provide good torque control, and an external encoder is required for effective positional control. In contrast, brushless motors exhibit much better low-speed characteristics and can be used with FOCs for torque control and precise positional control. Combining brushless motors with FOCs provides excellent control and decent torque. Stepper motors were ruled out due to their higher power draw and electrical noise compared to standard brushless motors.
Gearboxes are essential for arms like this. To lift the 5 kg payload and the weight of the arm, gearing is needed between the motor and the arm. Without getting too technical, torque is directly proportional to the phase current of the motor, while heat generation is quadratically related to the phase current. This means that if torque is doubled, heat production will quadruple. Excess heat can damage electronics on FOCs and burn through the enamel coating on motor wires, leading to motor failure. Therefore, lower torque usage is generally better for both the motor and the controller. A gearbox helps achieve this by trading output speed for additional torque.
Regarding gearboxes, multiple options were discussed and evaluated. Possible choices included planetary gear drives, belt drives, chain drives, cycloidal drives, and strain wave gearing. I needed a high gear ratio to minimize the input torque. For the technical details, I calculated a gear ratio that utilized the motor’s peak power output when the arm was at maximum load. This approach is effective since the arm does not need to hold 5 kg throughout its entire workspace but only close to the rover itself. The selected gearbox for the lower arm was a 1:100 strain wave gearbox. Although there were many trade-offs, this option best satisfied all the requirements.
In summary, the motion components of the arm enable excellent and accurate control. The design is low-cost and optimized for manufacturability.
Structure
This is an old CAD screenshot of the lower arm that I worked on.
The structure is composed of carbon fiber beams with CNC-machined aluminum members positioned between the carbon fiber (CF) tubes. The CF tubes were chosen for their excellent strength, rigidity, and lightweight properties. Alternatives to CF tubes included aluminum tubes and possibly other composite tubing. Using tubing is advantageous due to basic physics principles regarding bending members and the available shapes for purchase. Since CF tubing is a composite material, analysis was challenging and time-consuming. To address this, we selected a thick tube that would certainly withstand the expected loads. The chosen tube was a relatively inexpensive 1/8” thick CF tube, capable of supporting the weight of a small house.
The aluminum brackets connecting the CF members and gearboxes were optimized for manufacturing. During our design phase, the machine shop’s availability was questionable due to faculty retirement, which compelled us to use many manufacturing-optimized parts across the rover. Consequently, most of these CNC brackets were designed for a maximum of one or two CNC operations. Special thanks to David S for assisting me with the Ansys analysis of these brackets.
The design also incorporates laser-cut plates at the gearboxes. These plates facilitate the connection between the motors and gearboxes, as well as mount the motor controllers to each actuator, allowing for direct motor control. Laser-cut bent sheet metal was primarily used at the wrist (thanks to Loren W for the fantastic wrist design) and the end effector, rather than the lower arm structure. This technique proved to be effective; it is cost-efficient and enables the construction of incredibly strong and reliable systems with minimal effort or equipment. The structure of the rover was designed to handle heavy 5 kg loads while remaining reliable and rigid.
End Effector
The end effector that I designed and built.
There were three end effector designs throughout the design cycle for which I served as the lead. Each end effector was designed for a different purpose in the competition and could be swapped out as needed. Here, I will focus on the end effector that I designed.
My end effector featured a rack and pinion design, utilizing a single centered servo and a single linear rail to constrain the motion of the gripper sides. This design provided excellent gripping power, capable of exerting around 20 lbf. The gripper tips were specifically designed to type on a keyboard, and the detent in the tips was engineered to ensure the gripper could securely grasp a handle.
The rover arm typing on a keyboard. I’m controlling the arm with the mini-arm from far away. This end effector was designed specifically to be able to press buttons with the thin points on the front.
Control
Control of the arm can be thought of in three separate sections:
- control of the arm from a low-level accuracy perspective (how do I get the arm to do what I told it to do)
- control of the arm from a user/driver perspective (how do I input what I want it to do)
- mini arm
- IK
The following control scheme was devised, and tested in simulation, but not implmented.
Note: I know now that there are better ways to do this! I’m including this to show what I was thinking at the time.
This controller shows a robotic arm control scheme that linearizes the arm in joint space. It linearizes the graivity term by adding feedforward torques equivalent to the weight forces on the arm. It also attempts to linearize the inertial forces as well. This control scheme theoretically allows for the arm to be controlled very precisely by the PID control block.
This block diagram is probably not the greatest way to illustrate this, but I think I accidently re-invented this method, and choose to just keep the original block diagram I made. One notable oddity here is the method of handling the inertial time-invariance. Instead of using what I have since learned is called computed torque control and calculating the inertial and gravity-induced torques to linearize the system, this control scheme suggests the use of an arcane ‘Loop Gain Estimator’ which I can only assume I meant as a hand-wave in the direction of gain scheduling. (I have learned more since I made this diagram)
Although a form of this control was separately validated for two degrees of freedom, the arm for this year actually just used joint-space control without gravity compensation or inertial compensation. This was a valid approach due to the relatively high torque output of the arm versus its needs and the low speeds that the arm would move at. The high torque compensated for most of the gravity loads applied to the arm, and the low speeds meant that inertial compensation was almost entirely irrelevant.
In fact, even when the gains were push to be unstable, the very high gear ratio of the strain wave gearing prevented the arm from becoming unstable. So although there was instability on the inputs, the high (100:1 or 50:1) reductions meant that the arm overall was relatively stable. Although I would struggle to call joint space PD very mature, or elegant, it was simple, robust, and functional.
Additionally, we simply ran out of time to implement the theorized controller. The benefits that the control gave were marginal compared to the other issues facing the rover at the time. Hopefully future members can use computed torque control to achieve better control and accuracy than this arm was able to!
If I learned something from this, it would be to use the simplest form of control scheme possible at first, and then increase complexity to add functionality. Also, computed torque control exists and does not require re-inventing!
Control - Inverse Kinematics
The higher-level control of the rover arm was done via magic inverse kinematics. Honestly it was basically magic though because some ROS package did everything once we set it up. Yes we know how IK works, no we did not want to find all those homogeneous transforms ourselves. The arm was controllable with IK through a Playstation controller and was useful in fine motion tasks like typing on a keyboard or moving directly up and down for certain motions.
Control - Mini arm
The mini arm was definitely one of my favorite components of the overall arm design. It served as a scale model of the arm, allowing users to move it to control the corresponding joints on the actual arm. While this is not a new concept by any means, it was innovative for CMR and a first for me. The implementation was relatively straightforward, making the use of the arm much more enjoyable and significantly easier.
Special thanks to David B for creating the mini arm for me when I was completely overwhelmed with other responsibilities. He also helped test everything with me and was a great support throughout the process. The original implementation idea included torque feedback; however, the latency between the real arm and the mini arm via radio was too great to achieve this without risking instability. I believe it’s possible to accomplish this with a slower arm and lower latency, but it wasn’t feasible this year.
Results/Lessons
Honestly, the biggest lessons from leading the Arm Subteam were in the leadship and how to work with others on a large project spanning multiple discplines. But those are boring and don’t fit well on a portfolio-website. So technically speaking, I think this project taught me a lot about gearboxes, motor control, structures, and control. Oh, and it solidified my hatred for wiring. That too.
10/10 would build again. Thanks to everyone on Rover for a great time! :D