I saw a high end robot arm once that I could move and bend it to any form I wanted with no resistance, as if the robot arm didn't have any weight. I'd like to know more about them. What is this class of robot arm design called? Where can I get some more information about its design and applications?
It's called compliance. Gravity compensation by itself is not enough to achieve this, as well it is not mandatory. For example, if reducers with high reduction ratios are used, robot arm will be very stiff to move around.
One way to make robotic arm compliant is to have torque sensors that can measure the differences in expected load (i.e. weight of the arm) and actual load, when you try to move and arm. Then you simply amplify difference enough to help user to move an arm. This is called active compliance.
You can also compute expected load before hand using knowledge of the arm configuration and inertial parameters. If arm is not moving, this is called gravity compensation, thus when you try to move an arm you do not feel its weight, but only joint stiffness.
To get information of how to compute torques for gravity compensation and how to make robot compliant I recommend this course: http://see.stanford.edu/see/courseInfo.aspx?coll=86cc8662-f6e4-43c3-a1be-b30d1d179743
Here is some more information about compliance: http://www.eucognition.org/eucog-wiki/Compliant_robots
This capability is called "gravity compensation". Simply put, the robot arm only exerts enough torque to cancel out the effects of gravity. So, any extra force that you exert on the arm allows the arm to be moved easily. Note that the required torques are highly dependent on the arm's configuration (i.e. joint angles). This is mainly a feature of the software and the control system rather than the hardware (although there is a minimum set of required hardware functionality, see below).
I believe PD control is typically used. Gravity compensation requires a very good model of the arm's kinematic and dynamic properties. This goes well beyond just the center of masses for each link. Frictions, inertias, and other non-linear affects are typically taken into account. (I heard a story from a friend that the friction properties of the arm he was working on changed dramatically as it warmed up, which made controller tuning a nightmare). The controller must also be tuned very well.
While this is a software feature, I think it would be difficult to impossible without certain hardware features. For example you need high precision joint encoders, some manner of joint or motor torque sensing, good resolution torque control, and typically back-drivable motors.
I believe you can implement a kind of poor-man's gravity compensation without some of these hardware features if you have a good force-torque sensor at the wrist. The limitation being that the user can only move the arm by touching the force-torque sensor. Basically, this is zero-force control. The arm can hold its position with as much torque as it wants, but tries to keep zero force on the sensor. So if you push the sensor, the arm will move away as if it is weightless.
Besides gravity compensation, some impedance/admittance control can be used to make a robot compliant and regulate the stiffness of the motion. What you actually do is that by using a specific control law you can make the robot to behave as a mass-damper-spring system.
Using control theory and measurements from the robots sensors (torque sensors etc) the controller (implemented on a computer) calculates the new torques for the joints and send them to the actuators. These new torques are the result of the control law (a mathematical equation). You can specify a desired value for the inertia (how difficult is to accelerate the robot), the damping coefficient (how difficult is to move the robot with a high velocity) and the spring constant (how "fast" the robot will return to the initial position). If you want just a compliant robot, you may not need the spring constant.