ProMRDS Home Page Arm Mover

Professional
   Microsoft Robotics Developer Studio
Home Page Book Contents This Chapter

Arm Mover

Purpose

The Arm Mover works with an Xbox controller and allows you to move a robotic arm. Versions are provided that work with either the simulated or the real Lynx 6 Arm.

Description

There are two fundamentally different approaches to moving a robotic arm:
Specify the location of the tip of the arm in 3D coordinates;
or
Move the individual joints separately.

The MoveArm program allows you to set the End Effector Pose by using the controls as follows:

NOTE: This diagram does not allow you to use the Gripper.

The coordinate system for the arm is as follows (and is the same for the real arm or the simulated arm which always starts with a camera view similar to the following picture):

Lynx 6 Coordinate System

This means that the right thumbstick moves the End Effector up and down. The left thumbstick makes the End Effector move along the respective axes (maintaining the same height), which affects both depth and rotation at the same time. If you move the left thumbstick only in the X or the Y direction, the tip moves in a straight line.

Initially the MoveArm program is set up to use the simulated arm. You need to replace the simulated arm with the real arm if you want to use it. For your convenience, another diagram called MoveArm_Real is also included which has the manifest already replaced. It also used the X/B buttons for the gripper.

The alternative to using the End Effector Pose is to use the Xbox controller to manipulate the individual joints. The MoveArmJoints diagram allows you do do this as follows:

IMPORTANT NOTES: For the real arm, you should be very careful about the amount of pressure that you apply using the gripper. Use short bursts on the X and B buttons. For the simulated arm, there is a significant lag when you use the gripper, so avoid holding down X or B because it will flood the arm with messages and take a while to recover.

MoveArmJoints is also set up initially to use the simulated arm. The MoveArmJoints_Real diagram works with the real arm. It also adds another level of sophistication because the MoveJoint custom activity allows you to change the arm in just one place even though there are six joints movements in the main diagram.

Try out both methods of control. You might find that one method or the other suits your own personal "feel" for how the robot should move. If the directions of motion are not intuitive to you, then change the connections in the diagram.

Of course, you can combine both of the methods but that gets a little tricky. If you like to use the left thumbstick to rotate the arm, and wanted to control the vertical position using the Pose, then you must first get the current Pose and extract the X and Z values before you change the Y value. Rotating the Base joint changes BOTH the X and Z coordinates (because the tip moves on the circumference of a circle). Good luck!