A method performed by one or more data processing apparatus, the method comprising: receiving pose data defining a target pose for an end effector of a robot having a wrist offset, the pose data specifying a target end effector position for the end effector and a target orientation of the end effector, the end effector being attached to a first end of a first link of the robot; determining, based on the pose data, a first target position of a first point located at the first end of the first link; determining, based on the pose data, a second target position of a first joint connecting the first link to a second link, the first joint being located at (i) a second end of the first link opposite the first end and (ii) a first end of the second link, wherein the first link and the second link form an offset wrist connected to a first end of a third link of the robot; characterised by determining a third target position of a second joint located at the first end of the third link, including: defining a first plane that (i) includes the second target position of the first joint and (ii) for which a line between the first target position of the first point and the second target position of the first joint is a normal to the first plane; determining, based at least on a distance between the first joint and the second joint, a position and size of a circle that (i) lies within a second plane that is parallel to the first plane and that is located (ii) at an offset position from the first plane; and selecting, as the third target position of the second joint, a point on a perimeter of the circle; and providing, to a control system of the robot and based on each target position for each joint, movement data that causes the control system to adjust links of the robot such that each joint is located at the target position for the joint and the end effector is located at the target end effector position and in the target orientation for the end effector. receiving pose data defining a target pose for an end effector of a robot having a wrist offset, the pose data specifying a target end effector position for the end effector and a target orientation of the end effector, the end effector being attached to a first end of a first link of the robot; determining, based on the pose data, a first target position of a first point located at the first end of the first link; determining, based on the pose data, a second target position of a first joint connecting the first link to a second link, the first joint being located at (i) a second end of the first link opposite the first end and (ii) a first end of the second link, wherein the first link and the second link form an offset wrist connected to a first end of a third link of the robot; characterised by determining a third target position of a second joint located at the first end of the third link, including: defining a first plane that (i) includes the second target position of the first joint and (ii) for which a line between the first target position of the first point and the second target position of the first joint is a normal to the first plane; determining, based at least on a distance between the first joint and the second joint, a position and size of a circle that (i) lies within a second plane that is parallel to the first plane and that is located (ii) at an offset position from the first plane; and selecting, as the third target position of the second joint, a point on a perimeter of the circle; and defining a first plane that (i) includes the second target position of the first joint and (ii) for which a line between the first target position of the first point and the second target position of the first joint is a normal to the first plane; determining, based at least on a distance between the first joint and the second joint, a position and size of a circle that (i) lies within a second plane that is parallel to the first plane and that is located (ii) at an offset position from the first plane; and selecting, as the third target position of the second joint, a point on a perimeter of the circle; and providing, to a control system of the robot and based on each target position for each joint, movement data that causes the control system to adjust links of the robot such that each joint is located at the target position for the joint and the end effector is located at the target end effector position and in the target orientation for the end effector.