Skip to main content
WIM Tech Blog

EngineeringInsights

Sharing the latest technologies, hands-on experience, and in-depth insights in AI and Robotics.

Categories

Explore Topics

Latest Articles

Time Is a Control Input: A Hard Real-Time Jetson Host Took a Humanoid Teleop Arm From 1.57 s Behind to On Time, Without Touching the Vendor Box

Time Is a Control Input: A Hard Real-Time Jetson Host Took a Humanoid Teleop Arm From 1.57 s Behind to On Time, Without Touching the Vendor Box

A robot arm that is fed position targets moves exactly as well as the host keeps time. We put our hard real-time layer on a Jetson AGX Orin in front of an unmodified UFACTORY xArm 7 used for humanoid teleoperation. Send jitter stayed within 5 µs, the box's 6.5 ms lag was cancelled, and the arm went from 1.57 s behind the plan to on time. Tool-tip error at the same instant fell from 165 mm to 0.3 mm, path error from 1.11 mm RMS to 0.008 mm, with zero box errors across 30 runs and a 1.57 kg load swinging from the gripper. This post is the whole stack, kernel to motor, with the measurements behind every layer.

Why Our EtherCAT Sync Fell Apart Every 110 Seconds: One Jetson Default, 328 µs to 3.5 µs

Why Our EtherCAT Sync Fell Apart Every 110 Seconds: One Jetson Default, 328 µs to 3.5 µs

Running two servo drives at 1 kHz from a Jetson AGX Orin with the IgH EtherCAT master, the Distributed Clocks (DC) deviation between drives spiked to hundreds of microseconds roughly every 110 seconds. The cause was not the motors, the kernel, or our control code. It was the PTP-TSC hardware lock that NVIDIA's nvpps driver enables at boot. Disabling it with one device tree property cut the maximum DC deviation from 328 µs (300 s with the lock on) to 3.5 µs (20 minutes with it off).

Why Raising Friction Made Our Robot Turn Worse: The Geometry of Skid-Steer Scrub

Why Raising Friction Made Our Robot Turn Worse: The Geometry of Skid-Steer Scrub

We derive why three weeks of friction-coefficient tuning was doomed from the start — in a skid-steer vehicle's turning-ability ratio, both the friction coefficient and the weight cancel out, leaving only contact geometry. With measured data, plus two hard-earned lessons about trusting simulation instrumentation.

Simulating a Tracked Robot: Why We Deleted the Tracks and Added 12 Invisible Wheels

Simulating a Tracked Robot: Why We Deleted the Tracks and Added 12 Invisible Wheels

No physics engine has a native "track" primitive. We share how we modelled a tracked skid-steer robot in Isaac Sim — the failure of a 46-link articulated track, a 4-contact model that turned "perfectly" and was wrong precisely because of it, and the measured 12-contact distributed virtual-wheel model we use today.

RL-Based Low-Level Motor Control: Beyond PID/ADRC

RL-Based Low-Level Motor Control: Beyond PID/ADRC

In the domain of 1kHz real-time motor control that LLMs cannot replace, we introduce WIM's approach to replacing traditional PID/ADRC manual tuning with reinforcement learning (RL).

What is the Real Cost of std::memory_order on ARM64? - Jetson Orin Benchmark

What is the Real Cost of std::memory_order on ARM64? - Jetson Orin Benchmark

We measured whether atomic memory ordering could be a performance bottleneck in a 1kHz RT loop on Jetson Orin (Cortex-A78AE). On AArch64, the cost of seq_cst is virtually identical to release/acquire, and the total cost of 25 atomic operations is less than 0.01% of the 1ms budget.

About

About This Blog

WIM Inc. is building the future of industrial automation by integrating AI and Robotics technologies. In this blog, we share the technical challenges we face, our solutions, and the insights we gain.

Through field-tested technologies, in-depth analysis, and practical guides, we aim to help engineers in the AI and Robotics fields.

Newsletter

Get notified when new articles are published

No spam, only technical content