TT Lab
Blog

한국어 English 日本語 中文

Get started
Blog

Blog

Jacobian and Velocity: Racket Speed Achievable by Joint Velocity Limits

Status: Draft (2026-10-18), Measured. Numbers were calculated directly using Python 3.9.6 and numpy 2.0.2 on a laptop (Apple M1 Max, macOS 26.5). Raw data and code: working directory measure/robot-arm-basics/'s arm.py, m05_speed.py, out/m05_speed.json(required speed is from Part 7 out/m07_hit.json). Joint velocity limits are assumed values and not measured with actual motors (hardware not measured). Reference materials were accessed on 2026-10-18. Writing conventions: Measured data is the baseline; unmeasured items are marked as 「Unmeasured」, and unverified items are marked as 「Unverified」.

Table of Contents

1. Intuition: Length of the Lever

Even when swung at the same angular velocity, the tip of a long rod is faster than the tip of a short rod. If the shoulder is rotated at 1 rad/s, the wrist 0.75 m away moves at 0.75 m/s, and the elbow 0.4 m away moves at 0.4 m/s. When there are multiple joints, the velocities produced by each joint are added as vectors. This 「joint velocity → racket velocity」 conversion table is the Jacobian. Because the length and direction of the lever change depending on the joint angles, the Jacobian also varies with each posture.

This leads to the first question asked when choosing a motor: What joint rad/s are needed for the racket to be fast enough to return the ball?

2. Calculation

2.1 Geometric Jacobian

When the axis of rotational joint i is a unit vector z_i and a point on the axis is o_i, if only that joint rotates at 1 rad/s, the racket center p moves at a velocity of z_i × (p − o_i), and the racket rotates at 1 rad/s around z_i. A 6×6 matrix stacking these columns is the geometric Jacobian.

def jacobian(q):
    Ts = frames_dh(q)                    # 바닥, 관절 1..6 의 좌표계(3편)
    pe = Ts[6][:3, 3]                    # 라켓 중심
    J = np.zeros((6, 6))
    for i in range(6):
        z, o = Ts[i][:3, 2], Ts[i][:3, 3]
        J[:3, i] = np.cross(z, pe - o)   # 선속도 부분 J_v
        J[3:, i] = z                     # 각속도 부분 J_w
    return J

The racket center velocity is v = J_v q̇, and the racket angular velocity is ω = J_w q̇. Since other points on the racket face (points at a distance r from the center) move at v + ω × r, if the ball hits the edge of the face, it receives a different velocity than the center velocity.

2.2 Maximum Speed Within Velocity Limits

Each joint has a limit of |q̇_i| ≤ q̇max_i. To move the racket fastest in a unit direction d, we can choose q̇ that maximizes dᵀ J_v q̇. Since the objective function is linear and the feasible range is a box, the maximum value occurs at the vertices of the box, and we only need to match the sign for each joint.

v_max(d) = Σ_i |dᵀ J_v,i| · q̇max_i        (J_v,i 는 J_v 의 i 번째 열)

This formula is a closed-form solution that does not require solving a linear programming problem. In the code, all 2⁶ = 64 vertices of the 6 axes were substituted to verify that the same values are produced (Section 4).

There is one thing to note. This maximum value is the value when the racket angular velocity is unconstrained. Since q̇ in the above formula rotates everything up to the wrist at maximum speed, the racket face also rotates rapidly. If the orientation of the racket face must be fixed at the moment of impact (Part 7), there is a corresponding penalty. Both cases are measured together below.

2.3 Manipulability and Singularities

Manipulability w = √det(J Jᵀ) is the degree to which the racket can be moved evenly in all directions. In a 2-link planar arm, w = L1·L2·|sin q2|, so it is greatest when the elbow is bent at a right angle, and becomes 0 when the arm is fully extended or completely folded. The singularity in Part 4 is precisely this 0. A fully extended arm cannot push the racket any further in the direction of the arm length.

Elbow angle q2 0° 30° 60° 90° 120° 150°
w = L1·L2·|sin q2| 0 0.070 0.121 0.140 0.121 0.070
Shoulder-to-tip distance (m) 0.75 0.72 0.65 0.53 0.38 0.20

To hit the ball hard, you need to extend your arm to make the lever longer, but fully extending it creates a singularity. This is the same tension relationship as why humans hit with "almost" extended arms.

3. Figure: Joint Velocity Limits and Racket Speed

관절 속도 한계와 낼 수 있는 라켓 속력 2.8 5 5.7 10 11.3 20 17.0 30 5.1 8·20 0 5 10 15 20 25 라켓 중심 최대 속력(m/s, +x) 관절 최대 속도(rad/s, 모든 축 같음; 8·20 은 어깨·팔꿈치 8, 손목 20) 사람(엘리트 주니어 여자) 포핸드 탑스핀 라켓 속도 13.0–14.7 m/s 빠른 반환(비행 0.35 s)에 필요한 라켓 법선 속도 중앙값 3.6 m/s 막대: 타격 자세 2,134개의 중앙값, 선: 5–95백분위.
Figure: Maximum racket speed achievable by joint velocity limit, required speed, and human racket speed

4. Measurements

4.1 Striking Postures and Measurement Method

Based on the arm base, +x is set toward the opponent (toward the table tennis table). The racket center was randomly sampled from a box of x 0.40–0.65 m, y −0.35–0.35 m, z 0.0–0.35 m, and the racket normal was tilted 0–20° upward and ±20° sideways from +x. 400 postures were solved using the analytical solutions from Part 4, and among the 8 solutions, all solutions where all joints fell within ±170° were used. The resulting joint postures numbered 2,134. The difference between the 64-vertex exhaustive verification and the closed-form solution was at most 3.6×10⁻¹⁵ m/s.

4.2 Maximum Racket Speed by Joint Velocity Limit

Joint velocity limit (rad/s) +x direction 5% / median / 95% (m/s) Racket normal direction median (m/s)
All 5 2.1 / 2.8 / 3.7 2.8
All 10 4.3 / 5.7 / 7.5 5.7
All 20 8.5 / 11.3 / 15.0 11.4
All 30 12.8 / 17.0 / 22.5 17.1
Shoulder/elbow 8, wrist 20 3.8 / 5.1 / 6.7 4.6

Even with the same limits, the 5th and 95th percentiles differ by a factor of 1.7 depending on the posture. Postures hitting with the arm almost extended are fast, and postures with a folded arm are slow. Therefore, when deciding 「where to hit」, the speed achievable in that posture must be considered together . The striking decision in Part 7 uses this table as a constraint condition.

The last row is a configuration combining shoulder and elbow joints with large reduction ratios and a lightweight wrist. No matter how fast the wrist is made, the lever (d6 = 0.15 m) is short, yielding little benefit, and ultimately the speeds of the shoulder and elbow determine the racket speed.

4.3 Conversely: What joint speed in rad/s is needed to produce 5 m/s?

We used the pseudoinverse to calculate the joint velocities required to move the racket center at +x at 5 m/s, and recorded the speed of the fastest among the six joints.

Condition 5% Median 95%
Fixed racket face (angular velocity 0) 10.7 14.1 18.0 rad/s
Free racket face rotation (position velocity only) 11.9 14.7 17.8 rad/s

We expected the required speed to decrease when freeing the rotation, but the median actually increased slightly. This is because the pseudoinverse provides a solution that minimizes the sum of squaresof the joint velocities, not the fastest joint. If joint limits are an issue, it must be solved as a linear programming problem minimizing the infinity norm (unmeasured). The minimum singular value of the positional Jacobian J_v was 0.26 m/rad at the median posture. This means 「1 rad/s of joint motion results in 0.26 m/s of racket motion in the most sluggish direction」.

4.4 Comparison with required speed

In Part 7, we solved for the racket speeds needed to receive 200 actual shots and return them to a target point (opponent side x = 0.3, y = 0.9 m) within a specified flight time. We bring those results forward.

Flight time on return Outgoing ball speed median Required racket normal speed 5% / median / 95%
0.80 s (slow return) 5.5 m/s 1.4 / 1.9 / 2.1 m/s
0.60 s 5.7 m/s 1.5 / 2.0 / 2.2 m/s
0.45 s 6.9 m/s 2.1 / 2.6 / 2.9 m/s
0.35 s (fast return) 8.7 m/s 3.1 / 3.6 / 4.0 m/s

Since the ball bounces off the racket, the racket can be much slower than the ball (assuming a coefficient of restitution of 0.8). All joints at 10 rad/s can achieve up to fast returns in most postures, and 5 rad/s allows only slow returns.

Compared to humans, the difference is significant. Bańkosz and Winiarski (2018) measured 10 elite Polish female junior players using 120 Hz motion capture and reported that the racket speed at the moment of ball contact in a forehand topspin averages 13.0–14.6 m/s. Humans use that speed to hit hard with spin , rather than just 「returning」 the ball. To achieve that level with this example arm, all joints would need to be around 25 rad/s based on the median (between 11.3 at 20 rad/s and 17.0 m/s at 30 rad/s).

4.5 Gantry + Wrist

A wrist mounted on a 2-axis gantry is simpler to calculate. The maximum racket speed is the linear speed of the belt axis plus the wrist angular velocity multiplied by the distance from the wrist to the racket.

Belt axis (m/s) Wrist (rad/s) Wrist-racket 0.15 m 0.25 m
1 20 4.0 6.0
2 20 5.0 7.0
3 20 6.0 8.0
5 20 8.0 10.0

This table is based on addition, so it is more of a calculation than a direct measurement. For reference, Google's 2023 system specified a maximum gantry speed of 2 m/s (arXiv:2309.03315 , Section II-A). While gantry speeds are uniform regardless of posture, moving large masses on the belt axes imposes separate acceleration limits (Part 8).

5. Limitations

6. Conclusion

A word from Titi. Even with joints rotating at just 10 rad/s, you can return the ball. But to swing at 14 m/s like a pro player, you need two to three times that speed, so your very first robot should aim for 「returning」 first!

References

All materials were accessed on 2026-10-18.

Sign in to like

Comments

No comments yet.

Sign in to leave a comment