Navigating in 3 Dimensions
At its core the job of a robot arm is to move a tool in space in a controlled and timely manner. There is one significant difference in the way a robot arm moves in space, compared to traditional cartesian machines like 2D plotters or 3D printers. For these, the coordinate system of the machine is aligned with its mechanical axes, so it is easy to understand that turning the X motor directly translates into moving the tool in the X axis, and this is valid for all axes. The joint space (rotating the X axis motor) is the same as the task space (translating the tool in the X direction). This is a fundamental difference in the way a robot moves a tool in space. For a traditional 6-axis robot arm, an action in joint space (rotating axis 1) does not translate intuitively in the task space (translating the tool in the X direction). This is a core difference in the mechanical nature of a robot arm compared to a cartesian machine, as the robot often has to use all its 6 motors together in the joint space to move in one dimension in the task space to simulate a mechanical axis that in reality does not exist.
Forward and Back
To control a robot arm we must often work in the joint space, for example if we only care about how some specific joints are oriented, or in the task space if we care about the coordinates of the tool. Going back and forth between these two spaces is the job of Forward and Inverse Kinematics. A set of mathematical equations that allow us to translate freely from one space to the other, so placing the robot's joints at specific angles will tell us the resulting cartesian coordinates. Inversely placing the tool at specific coordinates will tell us the resulting joint values each motor should reach to position the tool where we desire. Luckily all of that is handled internally by the robot controller and we usually never have to bother with the complexities of robot kinematics, but it is important to understand that ultimately the robot can only ever move around by moving in the joint space while we usually desire to move it in the task space and this translation from one to the other via forward and inverse kinematics is where robot arms derive a lot of their power.
From A to B
Bringing the robot to move into a sequence of points, commonly referred to as waypoints, means we have to figure out where these are defined in space, either as a set of joint values, or as spatial coordinates. As we saw above, while the robot can be moved in a particular location, we can describe its current position by either looking at the joint space: the current angle of each of its 6 joints, or in the task space: the cartesian coordinates describing the current translation and rotation of the tool. Depending on the application, there are advantages to using one or the other.
Joint/Linear Movement
There are two primary ways to move the robot from one waypoint to another, by going in a straight line through either the joint space or the task space. As we saw, two points in space can be both described by their joint space coordinates (the set of joint angles to position the robot at the waypoint), or their task space coordinates, the cartesian coordinates representing the translation and rotation of the tool. Going in a straight line from one point to another in joint space means that the robot controller will only look at the joint angle of both waypoints and linearly interpolate from one to another. In practice this would mean that if joint 1 must start at 0 degrees, and finish at 30 degrees, the controller will smoothly move the joint between the 2 values, resulting in a curved trajectory of the tool in task space. On the other hand, going in straight line in task space, means that the robot controller will only look at the waypoints' cartesian coordinates and smoothly interpolate between the two, resulting in a straight line for the tool, but a curved trajectory in joint space (some joints might move very slowly or rapidly in an unpredictable manner). A Joint movement will then be specified with a speed in degrees/sec for the maximum rotation of each joint, while a Linear movement will be specified as a cartesian speed in mm/sec of the tool in space. Projects that do not focus much on the tool but on large movements of the robot in space will often want to use Joint movements, while projects requiring precise positioning of the tool will want to use Linear movements. It is also very common to mix both during sequences alternating with a focus on the tool or on the whole robot.