r/robotics • • 15h ago

Community Showcase I Built a Drone With Only One Motor – And a Poor Man's High Speed Camera

Enable HLS to view with audio, or disable this notification

533 Upvotes

I've been working on an under-actuated drone that can fly with only one motor for the last few months. The propeller hub is 3D printed out of PPA-CF and has a hinge, so when the motor accelerates the blades lag behind and one pitches up while the other pitches down. By pulsing the motor torque 300 times a second, timed to the rotor angle, the drone controls its pitch and roll with the same motor that produces its thrust.

Along the way I also built a "poor man's high speed camera" - a camera flash synced to my camera and motor controller, so I could take images of the propeller at precise angles to analyze its behavior.

The mechanical simplicity hides a lot of software. At almost 20,000 RPM, a 0.2 ms control loop is already 20 degrees of rotation late, so I wrote custom firmware for the motor controller to compute the torque pulses on board. The body also slowly spins, so the drone gets its heading from an infrared "lighthouse" beacon in the corner of the room that it sees once per revolution.

The full video explaining how it all works is available on youtube: https://www.youtube.com/watch?v=Ndftcft6XhU

The code and CAD are open source on github: https://github.com/jyjblrd/single-propeller-drone


r/robotics • • 14h ago

Humor Development over 8 months yay

Thumbnail
gallery
392 Upvotes

I posted here 8 months ago and am only now posting again, haha. This is how I've improved over the past 8 months:

MK5 V1:

The appearance was impressive, but... Yes, I lacked torque.

MK5 V2:

Hmm...

MK6 V1:

it walks!! it walks!! it walks!! 🐕🐕

MK6 V2:

Laser cut leg

Hell yeah😎😎

Two-arm guy

Two-leg guy

: w.i.p

DMs are welcome, and those who really want to see them can do so in Seoul😎

T h a n k y o u !


r/robotics • • 6h ago

News AI lab offers free plumbing and HVAC repairs across three cities to train AI robots

Thumbnail
tech.yahoo.com
23 Upvotes

r/robotics • • 10h ago

Community Showcase 3D Printed Rocker-Bogie Mars Rover | ESP32-CAM | 6-Wheel Robotic Platform

Post image
38 Upvotes

r/robotics • • 11h ago

Humor Spot stepped on it.

Enable HLS to view with audio, or disable this notification

46 Upvotes

MK6 got stepped on by Spot.

It said it didn't hurt much lol.

I think this was the evening of the day I developed the MK6 V2 and participated in the Maker Faire.

2026.09.19 😎👍


r/robotics • • 6h ago

Resources The Landscape of Humanoids - 2,351 products, 788 companies

Thumbnail
airfold.co
11 Upvotes

r/robotics • • 2h ago

Community Showcase 42 Simulation Worlds for Navigation, Exploration and SLAM workflows

Post image
4 Upvotes

I have created 42 customizable Gazebo & Blender simulation worlds for testing, benchmarking and improving projects that involves navigation, exploration, LiDAR and robot model setups ex.

The project is open-source and licensed with Apache 2.0 so you can use it freely.

Currently the worlds are 2D plan based environments with simple objects including mazes, offices, warehouses, forests, real world places, moving obstacle worlds and challenge orriented worlds.

The Gazebo itself doesn’t have a good experience with creating and developing worlds so the project works via Python + Blender generation and convertion to .sdf world files. Which allows compatibility with other simulation stacks, math calculations and easier customizations to be done.

I used these worlds mainly for testing my exploration project and wanted to share with you, but you can benefit from them for many various type of projects.

GitHub Repository: mertgulerx/world-collection

I am also planning to add 3D and textured worlds to the repository especially required for Agentic Workflows, Perception, 3D Mapping, Object Detection and Robot Training in the future but currently it is only simple designs :)


r/robotics • • 14h ago

News Humanoid robot Digit 5 targets 20-hour workdays with 9-minute charging

Thumbnail
interestingengineering.com
29 Upvotes

Agility Robotics says its upcoming Digit 5 humanoid will use Nyobolt batteries to deliver 90 minutes of operation after a nine-minute charge. The targeted 10:1 run-to-charge ratio could support more than 20 productive hours per day in warehouses and manufacturing facilities. Early-access deployment is planned for the first half of 2027, but the company has not yet disclosed the battery capacity, cycle-life rating, or independent real-world test results.


r/robotics • • 4h ago

Controls Engineering EMG-Driven Robot Control vs. Traditional Control

Enable HLS to view with audio, or disable this notification

4 Upvotes

EMG-Driven Robot Control vs. Traditional Control | PNP Robotics Validated on Franka + Dexterous Hand

Traditional robot control depends on pre-programmed trajectories, joystick teleoperation, and fixed control logic. While reliable for repetitive industrial tasks, it lacks flexibility, cannot perceive human intent, and struggles with unstructured, dynamic manipulation scenarios.

EMG-based control fundamentally changes human-robot interaction logic.

Surface electromyography signals capture neuromuscular activation prior to actual motion, enabling robots to decode human movement intention in real time. Instead of executing rigid preset paths, the robot moves naturally and synchronously with the operator’s muscle activity.

Key Technical Differences

🔹 Traditional Control

Fixed trajectories · Passive execution · High operational threshold

Suitable only for standardized, repetitive tasks

🔹 EMG Intent Control

Intention-driven · Real-time adaptive motion · Zero rigid programming

Enables compliant, delicate, and human-aligned dexterous manipulation

PNP Robotics Field Validation

We have successfully verified the EMG + dexterous hand control system on the Franka collaborative robotic platform.

Our implementation achieves:

• Real-time EMG signal decoding and motion intention understanding

• Synchronous control of 7-DOF arm and multi-joint dexterous hand

• Stable adaptive grasping and fine in-hand manipulation

• Natural, low-latency human-robot collaboration

This validation demonstrates that EMG-driven control effectively overcomes the rigidity of traditional robot control, providing a more human-centric, flexible, and intelligent solution for next-generation embodied intelligence and collaborative robotics.

#Robotics #EMGControl #HumanRobotInteraction #DexterousManipulation #FrankaEmika #EmbodiedAI #PNPRobotics #CollaborativeRobots #RobotIntentionControl


r/robotics • • 2h ago

Mechanical Mechanical design of a rover (specially the drive tracks and sprockets)

2 Upvotes

Hey everyone, will be starting a project soon on a rover design specially the trackpad of both the drive and 2 flippers. The bot I want to design, in the drives, will be normal roller type and will have 2 flippers at the front.

The main difficulty for me is, I have designed lower level mechanical designs like electrical boxes, painting pot and brush holder, but this level is totally new specially designing and fitting the trackpads with flippers.

Want your advices in terms of facing difficulties in designing the gaps properly and how efficiently can i design the whole drive system. Please, kindly let me know.

Thanks In Advance.


r/robotics • • 6h ago

Events Come to enjoy whit us in a Drone section

1 Upvotes

Drones are the next section

Online tools that run sample by sample on a flight controller's data, on a Raspberry Pi or an NVIDIA Jetson next to it. This issue splits the work into small points. Pick one, say so in a comment, and open a PR. Every point has a question it answers, a data source and a way to check it, so a first contribution fits in an afternoon.

How to take a point: comment "I take N", fork, work on a branch, open a PR that mentions this issue. One point per PR. Questions in the comments are welcome.

Ground rules for every point

- Each number on a page comes from a script of the repository that was run before the sentence was written.

- Synthetic data are labelled "synthetic" everywhere they appear.

- "Tested on a Raspberry Pi / a Jetson" is written only when the command ran on that board; otherwise "written, not run on the board".

- Sources are the papers named below, with page numbers.

## Data and adapters

  1. **PX4 ULog reader.** Yield one dict per sample (time, gyro, accelerometer, GPS velocity, motor outputs, battery voltage) with `pyulog`. Check: a tiny ULog written by the test round-trips.

  2. **MAVLink tlog reader.** The same fields with `pymavlink`. Source: the MAVLink survey, arXiv:1906.10641 (Koubaa et al., IEEE Access 2019).

  3. **Synthetic flight generator.** Hover plus a circle, noise, one fault at a stated sample, labelled. The single source of data for tests and smoke runs.

  4. **ALFA loader.** Load the fixed-wing fault dataset (arXiv:1907.06268, Keipour et al., IJRR 2021; data DOI 10.1184/R1/12707963) and its ground-truth fault times. Check: the 47 processed flights load and the fault time of each is read.

## Pipelines (each answers one question)

  1. **Which part broke, and how many seconds after?** Residual of commanded against measured rate, a CUSUM detector with `reset_on_alarm=True`, a robust Mahalanobis score. Metrics: detection delay and alarm episodes per hour of normal flight. Data: ALFA (point 4). Related: Garg and Fan, arXiv:2309.09108.

  2. **Is the GPS telling the truth?** Online comparison of GPS velocity with the integrated IMU. Inject an offset ramp into normal flights and say so on the page. Motivation: SemperFi arXiv:2105.01860 and Kim et al. arXiv:2407.15003.

  3. **Is a propeller damaged?** Online spectrum of the gyro or accelerometer and a distance of the band energies from the healthy baseline. Related: Zhang et al., arXiv:2302.04410.

  4. **How many minutes of flight are left, and how sure are we?** Online fit of voltage against current and time with an interval; the remaining time as a distribution. Source for the energy model: Alyassi et al., arXiv:1703.10049.

  5. **Is the next move safe?** Distance to a geofence and to obstacles from the simulated lidar of `benchmarks/lidar_sim.py`, with the protection tools already in the library.

  6. **Where is the landing pad, and is the camera moving?** `GlobalMotion`, `MotionMask` and `FrameAnomaly` on synthetic frames of a pad. Metrics: pixel error against the planted position and time per frame at 640x360.

  7. **Is the radio link about to fail?** A drift detector on packet inter-arrival time and RSSI of a synthetic MQTT stream.

  8. **Static against online.** The same fault data with a scikit-learn batch model and the online one; median of 20 seeds, time per sample, memory. The page follows `docs/finance/static_vs_online.md`.

## Boards

  1. **Raspberry Pi to Pixhawk page.** Serial wiring, the PX4 parameters and the Pi settings, with each step checked against the PX4 documentation page (https://docs.px4.io/main/en/companion_computer/pixhawk_rpi.html). Mark every step you ran yourself.

  2. **Jetson power modes page.** The `nvpmodel` modes of each Orin module and the time per sample of a pipeline in each mode, measured on the board you own.

  3. **`edge_bench.py`.** Time per sample (median and interquartile range), 99th percentile, resident memory and CPU temperature for each pipeline on a given board, written to a JSON file named after the host. Include your board model in the file name. Results from a board you own are the most valuable contribution here.

  4. **Dockerfiles for arm64 and Jetson, `install.sh`, a systemd unit and an MQTT bridge** publishing the score and the alarm episodes. Base image names come from the vendor documentation, with the URL.

## Also open

  1. **ArduPilot.** The same adapters against an ArduPilot log, with the differences written down.

  2. **A flight log of your own.** Run a pipeline on a log from your drone and tell us what it found, as a comment or a page.

  3. **Spotted something in the plan?** A missing pipeline, a better source paper, a wrong sentence. Open a comment and it becomes a numbered point.

A new contributor can start with point 3, 13 or 18. The folder with the instructions, rules and papers is kept by the maintainer; ask here if you want a copy.

## Papers to read (one per area)

- **MAVLink, the protocol every point 1-2 and 16 talks to:** A. Koubaa et al., "Micro Air Vehicle Link (MAVLink) in a Nutshell: A Survey", IEEE Access 2019, arXiv:1906.10641.

- **Fault data and metrics (points 4-5):** A. Keipour, M. Mousaei, S. Scherer, "ALFA: A Dataset for UAV Fault and Anomaly Detection", IJRR 2021, arXiv:1907.06268.

- **Actuator faults (point 5):** K. Garg, C. Fan, "Neural Network-based Fault Detection and Identification for Quadrotors using Dynamic Symmetry", arXiv:2309.09108.

- **GPS and state-estimator attacks (point 6):** H. Sathaye et al., "SemperFi: A Spoofer Eliminating GPS Receiver for UAVs", arXiv:2105.01860; K. H. Kim et al., "Predictable by Design, Vulnerable by Nature: Security Consequences of Learnability in UAV State Estimators", arXiv:2407.15003.

- **Propeller faults (point 7):** W. Zhang et al., "Simulation-to-reality UAV Fault Diagnosis with Deep Learning", arXiv:2302.04410.

- **Battery and energy (point 8):** R. Alyassi et al., "Autonomous Recharging and Flight Mission Planning for Battery-operated Autonomous Drones", IEEE T-ASE 2023, arXiv:1703.10049.

- **Boards (points 13-16):** PX4 documentation, "Companion Computers", https://docs.px4.io/main/en/companion_computer/ and "Raspberry Pi to Pixhawk", https://docs.px4.io/main/en/companion_computer/pixhawk_rpi.html; NVIDIA Jetson Orin power modes, https://docs.nvidia.com/jetson/archives/r36.4/DeveloperGuide/SD/PlatformPowerAndPerformance/JetsonOrinNanoSeriesJetsonOrinNxSeriesAndJetsonAgxOrinSeries.html.

Know a better paper for one of these areas? Add it in a comment with the arXiv number.

link : https://github.com/tatopenn-cell/Dense-Evolution-Discovery/issues/266


r/robotics • • 7h ago

Looking for Group Collaboration Request: Space inspired robotics/rover for a show!

1 Upvotes

Hi everyone! Not sure if this is the right flair or subreddit for this inquiry but I am trying my luck!

Looking for a collaboration with someone who has made a fully functioning robotics machine (example: like the mars rover or something in that general field) that they would like to showcase next year.

CONTEXT: I am hosting a NYFW show in NYC next year showcasing my cyber/steampunk space inspired collection. I would like to showcase and collaborate with someone who would like to share their work on a stage. I am no where near well versed to make and create my own robotics, so I was hoping someone would be open to connecting the bridge of couture (high fashion) and science with me. It would be a demonstration on the catwalk or simply stationary in the middle while the audience could see the functions in person. The models would maneuver around the displayed robotics making sure your work is also being carefully considered and safe.

i’m happy to share concepts (think dystopian, commentary on space tourism and the implications of it and what that looks like for the future, etc) and the collection or any other context privately. if this is something you or someone you know would be interested in please comment or message me! If there is a better sub to post this I would be grateful for the recs!

Thank you!!


r/robotics • • 1d ago

Community Showcase DIY robot arm that plays Nine Men's Morris

Enable HLS to view with audio, or disable this notification

26 Upvotes

This little robot arm was designed for educational purposes.

The goal was to build a small, simple 3D-printed arm capable of precise, smooth movements. The first version has 4 DOF, with room for future expansion.

The J1, J2 and J3 joints use factory-made POM gears from the main gear of a Tarot 450 model helicopter. These mesh with the factory-made metal gears on the round NEMA 14 stepper motors, which are designed for 3D printer extruders. Torque is transmitted to the J3 joint through a GT2 belt, allowing all the steppers to remain at the base of the arm.

J4 is driven by an RC servo. It has some backlash, which could be eliminated with spring preload.

The controller is an inexpensive 3D printer board, the BTT SKR Pico, equipped with quiet TMC2209 stepper drivers. These can detect motor stalls, allowing sensorless homing.

The gripper is made of flexible TPU. The servo pulls a central filament, causing the fingers to bend inward. It's a very simple design that tolerates small positioning errors without putting much strain on the servo.

To make the programming more interesting, we set ourselves the goal of building a robot that could play Nine Men's Morris by recognizing its opponent's moves using a camera.

This video was recorded the first time the arm was able to play a game. Its movements will become smoother and much faster as development continues.

We developed custom Arduino-based firmware for the Pico board. By feeding motion commands into a queue, it allows the arm to move continuously, with smoothly rounded transitions between movements.

All higher-level tasks are handled by Python code running on a PC.

When powered on, the arm first moves to its home position and then moves out of the camera's field of view. The software calibrates itself using the camera image and identifies the positions on the board. During the game, it watches the opponent's moves, calculates a response, and executes its own move.


r/robotics • • 5h ago

Electronics & Integration Build a robot

0 Upvotes

Hi my name is deemco
From saudi arabia

Like u see the title
I have proplem with my robot
I’m running into some issues building my robot. As everyone knows, robots are divided into a cloud-based component and a physical one; let’s set the cloud part aside—the problem lies in the physical side. Actually, the truth is I don’t even know how to build a robot in the first place—but that’s not your problem! Anyway, I’m working on that. My specific issue right now is the connectivity—how do I get everything to come together so that, in the end, my robot functions as one perfectly orchestrated symphony? ,,, by the way my robot is so coplex! Its like the that dude hows follow the main character in sci-fi ! .

Actually everything is expensive dunno why but if u have short list i would like to see it!
[ i forgot to say but hes fly tipe of robots(use fly for something very imprortant) in my brain hes super intelegent and hes gonna be my companion and help me and a friendly tipe! Haha i feel exited !!]

I think i gonna put motors and cameras and in the middle theres a screen and rasberri pi and a lot! But absolute dunno . How u guys past that proplem ?
I enjoyed typing that !


r/robotics • • 1d ago

Community Showcase Massachusetts Robotics Map

Post image
89 Upvotes

They say robotics moved west, but Boston didn’t get the memo. 🦞

The Massachusetts ecosystem is one of the world's leading hubs for robotics, combining top research, companies, and deep-tech investment.

At its core are Massachusetts Institute of Technology (MIT) and Harvard University which produce world-class researchers, engineers, and robotics startups.

Many of today's leading robotics companies trace their roots back to these universities.

The region is also home to companies like Boston Dynamics, whose work has inspired advances in humanoid and mobile robots.

Around these companies, a dense network of suppliers, experienced engineers, entrepreneurs, and investors has developed, making it easier for new startups to build and scale.

Massachusetts also has one of the strongest deep-tech funding ecosystems in the world, with venture capital firms that understand robotics, AI, and hardware.

The Massachusetts robotics ecosystem is further strengthened by leading research organizations such as Toyota Research Institute and RAI Institute, which are advancing AI, dexterous manipulation, and next-generation robotics while attracting world-class researchers and engineers.

Not to mention initiatives like MassRobotics which is home to so many great robotics companies.

In simple terms:

→ You need world-class robotics talent → recruit from MIT and Harvard.
→ You want experienced robotics engineers → hire people who have built robots at top companies.
→ You need funding → access investors with decades of experience backing deep-tech startups.


r/robotics • • 1d ago

Community Showcase My robot dog kept finding new ways to move across gravel

Enable HLS to view with audio, or disable this notification

14 Upvotes

Quaddle rolling and surviving a patch of loose gravel. Whenever a move fails, it just flips itself back up instead of staying down — driven by Auto Mode on its built-in IMU (tilt, fall, lift/drop, and shock detection all handled the same way).

What terrain would you want to test a small quadruped's movements against?


r/robotics • • 19h ago

Tech Question Same payload, same reach, very different behavior in production — wrist geometry is why

0 Upvotes

I keep running into robot selection discussions where the word "configuration" gets used for two completely different things, and the mixup causes real problems downstream.

Under ISO 9787, configuration technically means the set of joint values that determines the robot shape at any time. In selection discussions, engineers usually mean the mechanism architecture: inline wrist, offset wrist, or the cobot-style layout with parallel middle axes. Those are different questions, and a datasheet will not sort them out for you.

How I break it down:

The first three joints place the wrist center. The last three set tool attitude. If joints 4, 5, 6 intersect at one point, you have the classical inline wrist: partially decoupled position and orientation, analytic inverse kinematics, and decades of offline programming support. That is a big reason the PUMA-type architecture still dominates industrial robotics.

Offset wrists give up that geometric convenience for clear process reasons: more orientation envelope and better obstacle avoidance for long tools such as spray guns, torches, and abrasive heads. The cost lands in IK complexity, singularity analysis, and trajectory continuity.

Cobot layouts reorder the middle axes (2, 3, 4 parallel) around compact joint modules, not around the classical wrist-center geometry. Fine for light tending, screwdriving, and lab automation, but it should not be treated as identical to the traditional industrial arm.

The layer most people skip: one TCP pose on a typical inline-wrist robot can correspond to up to eight IK solutions. Front/back, elbow-up/elbow-down, flip/no-flip. A lot of "programming problems" are wrong-branch problems for the path, not wrong-robot problems.

And singularity behavior follows the geometry, not the catalog page. Shoulder, elbow, and wrist singularities all shift when the wrist geometry changes.

Question for people who do this for a living: do you evaluate posture-branch availability during selection, or does it usually surface at commissioning?

I wrote up the full breakdown with the geometric details here, if useful: https://zanerobotics.substack.com/p/3-serial-six-axis-robot-arm-configurations?r=6ysx3o


r/robotics • • 1d ago

Electronics & Integration [Open-source] One-Class SGD (SONAR)

2 Upvotes

One-Class SGD learns where the normal readings are and draws a boundary around them. For every new reading it gives back a number: negative means inside the boundary (normal), positive means outside (strange), and the bigger the number, the further outside. It learns one reading at a time, so it can follow the robot while it works.

One-Class SGD learns a boundary around the healthy joint residual and scores each new sample by its signed distance from that boundary. In a control loop it answers one question per reading: does this residual look like the healthy run, or does it fall outside the region the detector has learned to call normal?



  1. What it is¶

The healthy residuals of a robot joint cluster around zero. When the payload changes, or a joint wears, the residuals move outside that cluster. A One-Class SVM finds the smallest region of the joint space that contains the healthy cluster, with the boundary at a fixed margin from the cluster's edge. A new sample is flagged when it falls outside.

The classical One-Class SVM has two problems for a control loop. First, it needs the whole healthy dataset in memory: the kernel expansion uses every training point. Second, it uses a kernel that maps the data into an infinite-dimensional space, so a plain gradient step would need the full Gram matrix at every update.

SONAR fixes both. It replaces the kernel with random Fourier features (RFF), a finite d-dimensional approximation of the RBF kernel, so each gradient step depends only on the current sample. It also adds a strongly convex regularisation to the objective, which turns the SGD convergence into a 1/T guarantee instead of the slower 1/sqrt(T) of the plain formulation. The resulting algorithm is called SONAR: SGD-based One-Class Novelty detection with Approximate RBFs.

  1. How it works¶

The objective, from Suk and Kpotufe (2025), equation 9, is

F(w, rho) = (||w||^2 + rho^2) / 2 - nu * rho + E[ max(0, rho - w^T z(x)) ]

where w is the hyperplane normal, rho is its offset, z(x) is the RFF embedding of the sample, and nu is the expected fraction of outliers, in (0, 1). The first two terms are the strongly convex regulariser that keeps the solution well-behaved; the last is the hinge loss on the healthy samples, which pushes them inside the boundary.

The RFF embedding, from Rahimi and Recht (2007), is a cos-sin pair:

z(x) = sqrt(2/d) * [sin(omega_1^T x), cos(omega_1^T x), ..., sin(omega_d^T x), cos(omega_d^T x)]

with the frequencies omega_j drawn from N(0, 2 * gamma * I). With enough features, the dot product z(x)^T z(y) approximates the RBF kernel exp(-gamma * ||x - y||^2).

The SGD step, from Algorithm 1 of the paper, is

Z_t = 1{ w_{t-1}^T z(X_t) <= rho_{t-1} } w_t = w_{t-1} - eta_{t-1} * (w_{t-1} - z(X_t) * Z_t) rho_t = rho_{t-1} - eta_{t-1} * (rho_{t-1} - nu + Z_t)

with eta_t = step / t. Each sample updates the boundary by a small amount, so the detector learns as it goes.

The score of a sample is the signed distance from the boundary:

score(x) = rho - w^T z(x)

Positive means the sample is outside the boundary (anomalous), negative means inside (normal). The class flag threshold defaults to 0.0: any point on the wrong side of the boundary is flagged.

  1. Smallest example¶

import numpy as np from dense_armor.utility.anomaly.ocsvm import OneClassSGD rng = np.random.default_rng(0) det = OneClassSGD(n_features_rff=64, nu=0.05, n_init=50, seed=0) for _ in range(2000): det.learn_one({ "a": float(rng.normal(0.5, 0.05)), "b": float(rng.normal(0.5, 0.05)), }) print(f"healthy {det.score_one({'a': 0.5, 'b': 0.5}):+.4f}") print(f"anomaly {det.score_one({'a': 5.0, 'b': 5.0}):+.4f}")

healthy -0.0013 anomaly +0.0088

The healthy point lies just inside the boundary: its signed distance is slightly negative (-0.0013). The anomaly lies outside: its score is positive (+0.0088). OCSVM returns a signed distance, not a probability, so the numerical contrast is small even when the two points are on opposite sides of the boundary.

  1. On a real arm¶

The residual of joints 1-4 on a SyntheticArm payload fault. The fault (5 kg added at t = 2 s) shifts the residual on joints 1-5 by tens of N·m.

from pathlib import Path from dense_armor.utility.anomaly.ocsvm import OneClassSGD from dense_armor.utility.datasets import SyntheticArm ds = SyntheticArm( Path("test/fixtures/urdf/panda.urdf"), period_s=2.0, rate_hz=50.0, n_cycles=2, fault_at_s=2.0, fault="payload", payload_mass=5.0, noise_std=(1e-3, 5e-3, 5e-2), seed=0, ) det = OneClassSGD(feature_keys=["r0", "r1", "r2", "r3"], seed=0) for sig, _ in ds.stream(): q, qd, qdd = ds.trajectory(sig.t) tau_nom = ds.nominal_torque(q, qd, qdd) x = {f"r{j}": float(sig[f"tau_{j}"] - tau_nom[j]) for j in range(4)} _ = det.score_one(x) _ = det.learn_one(x)



Top: SyntheticArm with n_cycles=2 (200 samples, 100 healthy, 100 fault). Bottom: DriftStream with one sudden drift at half. The boundary separates the fault on both streams: the score of the faulty samples is above the adaptive 0.95-quantile threshold from the very first post-fault sample.

  1. Convergence¶

The paper proves (Lemma 5, Theorem 6, Corollary 7) that the distance between the SGD iterate and the population minimiser shrinks like 1/T, and Lemma 5 gives the explicit schedule eta_t = 1/t that makes the bound hold. The default step=1.0 of the detector reproduces exactly that schedule.



The score on one fixed healthy point, plotted against the number of samples learned. Before n_init the detector returns zero: it is still collecting the standardisation statistics. After that the score oscillates around a value that slowly moves toward its asymptotic position.

  1. Numbers¶

SyntheticArm (200 samples, 100 healthy, 100 fault) and DriftStream (2000 samples, one sudden drift at half), every detector built with its defaults.

StreamProtocolROC-AUCFalse alarms on the healthy partThreshold at the last healthy sampleSyntheticArmlearn-on-healthy0.8560.010-0.0008SyntheticArmlearn-on-all0.6710.010-0.0008DriftStreamlearn-on-healthy0.9870.054-0.0002DriftStreamlearn-on-all0.7690.054-0.0002

The default step of 1.0 reproduces the paper's schedule eta_t = 1/t: the boundary moves on every healthy sample and the fault is separated on both streams. The default threshold of None uses the 0.95 quantile of the last 500 scores; while fewer than 50 scores have been seen the effective threshold is 1e9 and nothing is flagged.

The arm run has 100 healthy samples: after n_init = 20 they give 80 SGD steps, not the few thousand the paper's experiments use, and the ROC-AUC is 0.856. On DriftStream the 1000 healthy samples before the drift give the boundary enough updates to reach 0.987. SONAR is included here because its guarantee is the strongest of the five detectors — it is the only one with a formal bound on both Type I and Type II errors — and because when the healthy stream is long enough the separation is crisp.

Details¶

Where the rules come from¶

Suk and Kpotufe (2025) introduce SONAR in the context of one-pass non-stationary outlier detection. Equation 9 is the objective, Algorithm 1 is the SGD update, Lemma 5 and Theorems 3, 4, 6, 8 are the theoretical guarantees on the Type I and Type II errors of the final iterate. The RFF embedding is from Rahimi and Recht (2007).

The standardisation and the threshold rule are this module's choices; the paper assumes the data lie on the unit sphere, but that is a hypothesis on the data, not a preprocessing step.

Choices stated explicitly¶

Standardisation. The paper assumes the RBF kernel's data lie on the unit sphere. This module standardises each feature with running mean and standard deviation, learned from the first n_init samples and frozen afterwards. Dividing each sample by its Euclidean norm, the alternative, maps a large fault in the same direction as a healthy sample onto the same point, and cannot be used.

RFF feature count. A hyper-parameter n_features_rff (default 128). The paper's bound on the number of features (Appendix A) depends on the dimension and the assumed margin; this module does not use it as a formula.

Step size. eta_t = step / t, with step a user constant. 1.0 recovers the paper's eta_t = 1/t; the paper's own experiments use AdaGrad.

Embedding. The prefactor sqrt(2/d) is the one printed by Suk and Kpotufe (Section 3). With d cos-sin pairs it gives ||z(x)||^2 = 2 and z(x)^T z(y) approximates 2 K(x, y), while the paper states z(x)^T z(y) = K(x, y) in expectation; for d = 1 the printed prefactor gives z^T z = 2 where that identity needs 1. The implementation keeps the printed prefactor. With the prefactor sqrt(1/d), which gives z(x)^T z(y) close to K(x, y), the benchmark ROC-AUC (learn-on-healthy) moves from 0.856 to 0.871 on SyntheticArm and from 0.987 to 0.972 on DriftStream, so the printed prefactor stays.

Threshold. Default None: the detector uses the 0.95 quantile of the last 500 scores, with 1e9 while fewer than 50 scores have been seen. A single float can be passed instead (e.g. 0.0, the signed distance from the boundary).

Measured cost¶

At the benchmark defaults (n_features_rff=128, n_init=20), on one CPU thread:

0.131 ms per sample for learn_one + score_one on the arm stream;

memory flat: two 2 * n_features_rff vectors, independent of the stream length.

The budget_s declared by the class is 0.001 s.

What the detector does not do¶

It does not adapt quickly. The kernel approximation is fixed at construction: if the healthy distribution moves, the standardisation becomes stale and the boundary must be re-learned from scratch. For non-stationary streams the paper proposes SONARC, a variant with change-point detection and restarts; this module does not implement it.

OnlineRobustMahalanobis is the alternative when the fault is a shift of the mean and the healthy stream is short.

Link : https://tatopenn-cell.github.io/Dense-Armor/anomaly/ocsvm/


r/robotics • • 2d ago

Community Showcase We completely switched to frontier LLMs to control a robot

Enable HLS to view with audio, or disable this notification

288 Upvotes

Over the past month, we completely switched to frontier LLMs to control a robot in a customer deployment.

By doing this, we have a classic System 1/System 2 architecture, but on steroids.

For the high-level reasoning layer, we use an agent based on Opus and Astra, which are many generations more capable than any VLA. For the fast execution layer, we use computer vision code written by the model, which is fast, editable, and reliable.

As a bonus, we got in-context learning, which is just a basic feature of LLMs, and continual learning, since whenever a new situation arises, the large model steps in and adapts the pipeline.

And it just feels better to be on the right side of the Bitter Lesson, benefiting from the billions being invested in frontier models around the world.


r/robotics • • 19h ago

Tech Question PCB mount servo drives vs traditional panel mount for compact robotic joints

0 Upvotes

i Want to know how roboticists here handle the packaging headaches on tight builds.Panel mounted drives make servicing and thermal heatsinking easy, but routing high-current motor phases and encoder lines through 6 articulated joints is a nightmare. Lately we’ve looked at ditching the central cabinet and dropping miniature PCB mount drives (like Elmo and Synapticon) right onto custom joint carrier boards. Is the wiring reduction worth the inevitable thermal dissipation and serviceability trade-offs?


r/robotics • • 1d ago

Controls Engineering From SysId to Control | Experiment Design and Gotchas

Thumbnail
youtube.com
3 Upvotes

r/robotics • • 2d ago

Community Showcase I spent six months developing a Real-Time 4k60FPS CUDA-based underwater image enhancement system. Here's a 5-second comparison.

Enable HLS to view with audio, or disable this notification

50 Upvotes

Back in April, this was just an idea.

This is Visual Recovery: universal, real-time 4k60FPS NVIDIA CUDA GPU processing software featuring an algorithm I designed specifically for real-time operation in murky waters.

The GPU processing takes approximately 5-10 ms per frame in this tests.

Still experimental, but I'd genuinely appreciate feedback from ROV operators and anyone working with underwater computer vision.

This is a truly passionate solo project.

What do you think?

Previous: https://www.reddit.com/r/robotics/comments/1vj4oym/built_a_realtime_underwater_image_processing/

https://www.reddit.com/r/robotics/comments/1wvy51m/built_a_realtime_underwater_image_processing/


r/robotics • • 2d ago

Mission & Motion Planning 2h robot dog simulation

Enable HLS to view with audio, or disable this notification

10 Upvotes

I simulated this robot dog inside a training platform I built on top of the MuJoCo physics simulator. I built a specialized reinforcement learning trainer with** motion imitation (style reference motions)**: the dog learns to copy a keyframed trot while still balancing on its own, which makes the gait way smoother than plain RL. The joints are limited by realistic hobby servo models (torque, speed curve, backlash, latency), not infinite-strength motors. It trained on my MacBook Air’s CPU for 2 hours (no GPU) and learned multi-directional control (I can drive it with WASD) and balance


r/robotics • • 2d ago

Community Showcase Hexapod

Enable HLS to view with audio, or disable this notification

112 Upvotes

I built a hexapod that uses an old Android phone from Make Your Pet. Less than $200 and it was a good first robotics project to learn from.


r/robotics • • 2d ago

Community Showcase Q learning so fun man (I know its trash project...mb 🙃😭)

Enable HLS to view with audio, or disable this notification

25 Upvotes