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 Limits for Panda and Limits for Franka Research 3 section.

Joint trajectory requirements

Necessary conditions

  • \(q_{min} < q_c < q_{max}\)

  • \(-\dot{q}_{max} < \dot{q}_c < \dot{q}_{max}\)

  • \(-\ddot{q}_{max} < \ddot{q}_c < \ddot{q}_{max}\)

  • \(-\dddot{q}_{max} < \dddot{q}_c < \dddot{q}_{max}\)

Cartesian trajectory requirements

Necessary conditions

  • \(T\) is proper transformation matrix

  • \(-\dot{p}_{max} < \dot{p_c} < \dot{p}_{max}\) (Cartesian velocity)

  • \(-\ddot{p}_{max} < \ddot{p_c} < \ddot{p}_{max}\) (Cartesian acceleration)

  • \(-\dddot{p}_{max} < \dddot{p_c} < \dddot{p}_{max}\) (Cartesian jerk)

Conditions derived from inverse kinematics:

  • \(q_{min} < q_c < q_{max}\)

  • \(-\dot{q}_{max} < \dot{q_c} < \dot{q}_{max}\)

  • \(-\ddot{q}_{max} < \ddot{q_c} < \ddot{q}_{max}\)

Recommended conditions

Conditions derived from inverse kinematics:

  • \(-{\tau_j}_{max} < {\tau_j}_d < {\tau_j}_{max}\)

  • \(-\dot{\tau_j}_{max} < \dot{{\tau_j}_d} < \dot{\tau_j}_{max}\)

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

  • \({}^OT_{EE} = {{}^OT_{EE}}_c\)

  • \(\dot{p}_{c} = 0\) (Cartesian velocity)

  • \(\ddot{p}_{c} = 0\) (Cartesian acceleration)

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

  • \(\dot{p}_{c} = 0\) (Cartesian velocity)

  • \(\ddot{p}_{c} = 0\) (Cartesian acceleration)

Controller requirements

Necessary conditions

  • \(-\dot{\tau_j}_{max} < \dot{{\tau_j}_d} < \dot{\tau_j}_{max}\)

Recommended conditions

  • \(-{\tau_j}_{max} < {\tau_j}_d < {\tau_j}_{max}\)

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

  • \({\tau_j}_{d} = 0\)

Limits for Panda

Limits in the Cartesian space are as follows:

Name

Translation

Rotation

Elbow

\(\dot{p}_{max}\)

1.7 \(\frac{\text{m}}{\text{s}}\)

2.5 \(\frac{\text{rad}}{\text{s}}\)

2.1750 \(\frac{rad}{\text{s}}\)

\(\ddot{p}_{max}\)

13.0 \(\frac{\text{m}}{\text{s}^2}\)

25.0 \(\frac{\text{rad}}{\text{s}^2}\)

10.0 \(\;\frac{rad}{\text{s}^2}\)

\(\dddot{p}_{max}\)

6500.0 \(\frac{\text{m}}{\text{s}^3}\)

12500.0 \(\frac{\text{rad}}{\text{s}^3}\)

5000.0 \(\;\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.

Limits for Franka Research 3

Limits in the Cartesian space are as follows:

Name

Translation

Rotation

Elbow

\(\dot{p}_{max}\)

3.0 \(\frac{\text{m}}{\text{s}}\)

2.5 \(\frac{\text{rad}}{\text{s}}\)

2.620 \(\frac{rad}{\text{s}}\)

\(\ddot{p}_{max}\)

9.0 \(\frac{\text{m}}{\text{s}^2}\)

17.0 \(\frac{\text{rad}}{\text{s}^2}\)

10.0 \(\;\frac{rad}{\text{s}^2}\)

\(\dddot{p}_{max}\)

4500.0 \(\frac{\text{m}}{\text{s}^3}\)

8500.0 \(\frac{\text{rad}}{\text{s}^3}\)

5000.0 \(\;\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.9007

1.8361

2.9007

-0.1169

2.8763

4.6216

3.0508

\(\text{rad}\)

\(q_{min}\)

-2.9007

-1.8361

-2.9007

-3.0770

-2.8763

0.4398

-3.0508

\(\text{rad}\)

\(\dot{q}_{max}\)

2.62

2.62

2.62

2.62

5.26

4.18

5.26

\(\frac{\text{rad}}{\text{s}}\)

\(\ddot{q}_{max}\)

10

10

10

10

10

10

10

\(\frac{\text{rad}}{\text{s}^2}\)

\(\dddot{q}_{max}\)

5000

5000

5000

5000

5000

5000

5000

\(\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}}\)

\(\dot{q}_{offset}\)

0.6599

0.2517

0.2000

0.3533

0.5757

0.4878

0.4628

\(\frac{\text{rad}}{\text{s}}\)

\(\ddot{q}_{dec}\)

6.0

2.585

3.5

4.0

17.0

5.5

17.0

\(\frac{\text{rad}}{\text{s}^2}\)

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.

Important

Note that the maximum joint velocity depends on both the joint position and the direction of motion. The maximum and minimum joint velocities for a given joint position can be obtained from the following functions:

Robot::getUpperJointVelocityLimits(const std::array<double, 7UL> &joint_positions);
Robot::getLowerJointVelocityLimits(const std::array<double, 7UL> &joint_positions);

The position based joint velocity limits are computed by:

\[ \begin{align}\begin{aligned}\dot{q_i} (q_i)_{max} = \min(\dot{q}_{max,i}, \max(0, \; -\dot{q}_{offset,i} + \sqrt{\max(0, \; 2 \cdot \ddot{q}_{dec,i} \cdot (q_{max,i} - q_i))}))\\\dot{q_i} (q_i)_{min} = \max(\dot{q}_{min,i}, \min(0, \; \dot{q}_{offset,i} - \sqrt{\max(0, \; 2 \cdot \ddot{q}_{dec,i} \cdot (-q_{min,i} + q_i))}))\end{aligned}\end{align} \]
where:
  • \(\dot{q_i} (q_i)_{max}\) is the maximum joint velocity for joint \(i\) at position \(q_i\).

  • \(\dot{q_i} (q_i)_{min}\) is the minimum joint velocity for joint \(i\) at position \(q_i\).

  • \(\dot{q}_{max,i}\) is the maximum joint velocity for joint \(i\) from the table above.

  • \(\dot{q}_{min,i}\) is the minimum joint velocity for joint \(i\) from the table above.

  • \(\dot{q}_{offset,i}\) is the velocity offset for joint \(i\) from the table above.

  • \(\ddot{q}_{dec,i}\) is the maximum deceleration limits for joint \(i\) from the table above.

  • \(q_{max,i}\) is the maximum joint position for joint \(i\) from the table above.

  • \(q_{min,i}\) is the minimum joint position for joint \(i\) from the table above.

  • \(q_i\) is the current joint position of joint \(i\).

In order to avoid violating the safety joint velocity limits, the Max/Min Joint velocity limits for FCI are more restrictive than those provided in the Datasheet.

Since most motion planners cannot represent variable velocity limits and instead rely on constant limits, users are free to choose the joint range and velocity limits within which they wish to operate.

In the figure below, the system velocity limits are shown in red and blue, and the position–velocity rectangular limits are depicted in black.

_images/pbv_limits_generic.svg

Position based velocity limits

Below are suggested position-velocity rectangular limits:

Name

Joint 1

Joint 2

Joint 3

Joint 4

Joint 5

Joint 6

Joint 7

Unit

\(q_{max}\)

2.3476

1.5454

2.4937

-0.4226

2.5100

4.2841

2.7045

\(\text{rad}\)

\(q_{min}\)

-2.3476

-1.5454

-2.4937

-2.7714

-2.5100

0.7773

-2.7045

\(\text{rad}\)

\(\dot{q}_{max}\)

2

1

1.5

1.25

3

1.5

3

\(\frac{\text{rad}}{\text{s}}\)

Important

These limits are only a suggestion. Since FR3 does not inherently implement any restriction to the system limits (red and blue line in the plots above), you are free to implement your own motion generator to exploit the HW capabilities of FR3 beyond the rectangular limits imposed by existing motion generators.

Denavit–Hartenberg parameters

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

_images/dh-diagram-frankarobotics.png

Franka Research 3 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}\)