# Robot and interface specifications¶

Realtime control commands sent to the robot should fulfill recommended and necessary conditions. Recommended conditions should be fulfilled to ensure optimal operation of the robot. If necessary conditions are not met then the motion will be aborted.

The final robot trajectory is the result of processing the user-specified trajectory ensuring that recommended conditions are fulfilled. As long as necessary conditions are met, the robot will try to follow the user-provided trajectory but it will only match the final trajectory if it also fulfills recommended conditions. If the necessary conditions are violated, an error will abort the motion: if, for instance, the first point of the user defined joint trajectory is very different from robot start position ($$q(t=0) \neq q_c(t=0)$$) a start_pose_invalid error will abort the motion.

Values for the constants used in the equations below are shown in the Constants section.

## Joint trajectory requirements¶

### Necessary conditions¶

1. $$q_{min} < q_c < q_{max}$$
2. $$-\dot{q}_{max} < \dot{q}_c < \dot{q}_{max}$$
3. $$-\ddot{q}_{max} < \ddot{q}_c < \ddot{q}_{max}$$
4. $$-\dddot{q}_{max} < \dddot{q}_c < \dddot{q}_{max}$$

## Cartesian trajectory requirements¶

### Necessary conditions¶

1. $$T$$ is proper transformation matrix
2. $$-\dot{p}_{max} < \dot{p_c} < \dot{p}_{max}$$ (Cartesian velocity)
3. $$-\ddot{p}_{max} < \ddot{p_c} < \ddot{p}_{max}$$ (Cartesian acceleration)
4. $$-\dddot{p}_{max} < \dddot{p_c} < \dddot{p}_{max}$$ (Cartesian jerk)

Conditions derived from inverse kinematics:

1. $$q_{min} < q_c < q_{max}$$
2. $$-\dot{q}_{max} < \dot{q_c} < \dot{q}_{max}$$
3. $$-\ddot{q}_{max} < \ddot{q_c} < \ddot{q}_{max}$$

### Recommended conditions¶

Conditions derived from inverse kinematics:

1. $$-{\tau_j}_{max} < {\tau_j}_d < {\tau_j}_{max}$$
2. $$-\dot{\tau_j}_{max} < \dot{{\tau_j}_d} < \dot{\tau_j}_{max}$$

At the beginning of the trajectory, the following conditions should be fulfilled:

1. $${}^OT_{EE} = {{}^OT_{EE}}_c$$
2. $$\dot{p}_{c} = 0$$ (Cartesian velocity)
3. $$\ddot{p}_{c} = 0$$ (Cartesian acceleration)

At the end of the trajectory, the following conditions should be fulfilled:

1. $$\dot{p}_{c} = 0$$ (Cartesian velocity)
2. $$\ddot{p}_{c} = 0$$ (Cartesian acceleration)

## Controller requirements¶

### Necessary conditions¶

1. $$-\dot{\tau_j}_{max} < \dot{{\tau_j}_d} < \dot{\tau_j}_{max}$$

### Recommended conditions¶

1. $$-{\tau_j}_{max} < {\tau_j}_d < {\tau_j}_{max}$$

At the beginning of the trajectory, the following conditions should be fulfilled:

1. $${\tau_j}_{d} = 0$$

## Constants¶

Limits in the Cartesian space are as follows:

Name Translation Rotation Elbow
$$\dot{p}_{max}$$ 1.7000 $$\frac{\text{m}}{\text{s}}$$ 2.5000 $$\frac{\text{rad}}{\text{s}}$$ 2.1750 $$\frac{rad}{\text{s}}$$
$$\ddot{p}_{max}$$ 13.0000 $$\frac{\text{m}}{\text{s}^2}$$ 25.0000 $$\frac{\text{rad}}{\text{s}^2}$$ 10.0000 $$\;\frac{rad}{\text{s}^2}$$
$$\dddot{p}_{max}$$ 6500.0000 $$\frac{\text{m}}{\text{s}^3}$$ 12500.0000 $$\frac{\text{rad}}{\text{s}^3}$$ 5000.0000 $$\;\frac{rad}{\text{s}^3}$$

Joint space limits are:

Name Joint 1 Joint 2 Joint 3 Joint 4 Joint 5 Joint 6 Joint 7 Unit
$$q_{max}$$ 2.8973 1.7628 2.8973 -0.0698 2.8973 3.7525 2.8973 $$\text{rad}$$
$$q_{min}$$ -2.8973 -1.7628 -2.8973 -3.0718 -2.8973 -0.0175 -2.8973 $$\text{rad}$$
$$\dot{q}_{max}$$ 2.1750 2.1750 2.1750 2.1750 2.6100 2.6100 2.6100 $$\frac{\text{rad}}{\text{s}}$$
$$\ddot{q}_{max}$$ 15 7.5 10 12.5 15 20 20 $$\frac{\text{rad}}{\text{s}^2}$$
$$\dddot{q}_{max}$$ 7500 3750 5000 6250 7500 10000 10000 $$\frac{\text{rad}}{\text{s}^3}$$
$${\tau_j}_{max}$$ 87 87 87 87 12 12 12 $$\text{Nm}$$
$$\dot{\tau_j}_{max}$$ 1000 1000 1000 1000 1000 1000 1000 $$\frac{\text{Nm}}{\text{s}}$$

The arm can reach its maximum extension when joint 4 has angle $$q_{elbow-flip}$$, where $$q_{elbow-flip} = -0.467002423653011\:rad$$. This parameter is used to determine the flip direction of the elbow.

## Denavit–Hartenberg parameters¶

The Denavit–Hartenberg parameters for the Panda’s kinematic chain are derived following Craig’s convention and are as follows:

Panda’s kinematic chain.

Joint $$a\;(\text{m})$$ $$d\;(\text{m})$$ $$\alpha\;(\text{rad})$$ $$\theta\;(\text{rad})$$
Joint 1 0 0.333 0 $$\theta_1$$
Joint 2 0 0 $$-\frac{\pi}{2}$$ $$\theta_2$$
Joint 3 0 0.316 $$\frac{\pi}{2}$$ $$\theta_3$$
Joint 4 0.0825 0 $$\frac{\pi}{2}$$ $$\theta_4$$
Joint 5 -0.0825 0.384 $$-\frac{\pi}{2}$$ $$\theta_5$$
Joint 6 0 0 $$\frac{\pi}{2}$$ $$\theta_6$$
Joint 7 0.088 0 $$\frac{\pi}{2}$$ $$\theta_7$$
Flange 0 0.107 0 0

Note

$${}^0T_{1}$$ is the transformation matrix which describes the position and orientation of frame 1 in frame 0. A kinematic chain can be calculated like the following: $${}^0T_{2} = {}^0T_{1} * {}^1T_{2}$$