Badri IT and Systems Solutions LLC

Signal,
out of noise.

An independent embedded-systems engineering firm. We build on-device sensing and AI — sensor fusion, Kalman filters, CAN-bus telemetry — for agricultural and industrial machines that cannot afford to be wrong. Everything moving on this page is computed live, on your device.

Sensor fusion · CAN-bus telemetry · Kalman filtering on MCUs · Field-deployed on production tractors

01 / Capabilities

Embedded & IoT

Firmware that lives on the bus. ESP32, industrial PLCs, CAN topologies, encoders and sensors — sensor to decision in milliseconds, deterministic under load, on vehicles in the field. ISO 11783 (ISOBUS) and J1939 read from the published standard, not guessed at.

ESP32 · CAN · PLC · C · real-time

On-device AI

The network above is the actual topology we shipped on a tractor: 24 inputs, 8 hidden, 1 output — 209 parameters, running on a microcontroller beside the CAN stack. Intelligence measured in bytes, not GPUs.

MLP · CNN · DQN · TensorFlow · quantization

State estimation

The dots are noisy measurements. The line is a filter finding the truth they hide. Kalman, square-root and adaptive filters, designed and validated on real vehicle and biomedical data. AN-02 took a sensor off the bill of materials — a steering angle recovered from encoders already fitted, causal at 100 ms, one parameter set across every recording.

EKF · square-root KF · adaptive EMA

02 / Method

Every engagement runs one loop: instrument generously, learn off the machine, ship lean. The reference sensors are installed precisely so they can be deleted — what they measured, the mathematics reproduces.

one loop · instrument generously → learn offline → ship lean · reference sensors removed before delivery
  1. 01

    Roadmap

    Map the cheapest path to the answer before a wire is crimped — what must be measured, what can be inferred, what can be thrown away.

  2. 02

    Instrument

    Build a recording rig around the MCU: the sensors the product will keep, plus reference sensors it never will — extra eyes whose only job is to hold the truth while we learn it.

  3. 03

    Qualify the data

    Audit every channel before trusting it — drift, dropouts, timing, noise floor. Bad data is caught here, never in production.

  4. 04

    Record

    Capture real sessions on the real machine, under the conditions that actually break things. Raw, timestamped, deterministic.

  5. 05

    Develop, offline

    Off the machine, in Python, find the signal: the filter, the network, the estimator. Features engineered, models trained, every parameter justified.

  6. 06

    Ship to the edge

    Cross the model onto the MCU as a deterministic bundle — same math, no recompile — running on the required sensors alone. The reference eyes go dark.

  7. 07

    Trial, graded

    Back on the machine, live. Required sensors drive the decision; reference sensors ride along only to grade it — on-device output laid over offline truth until the two traces are one line.

  8. 08

    Close the loop

    Feed live data into the next round and tighten — until the reference sensors can come off for good: a real-time MCU, only the sensors it needs, doing the job alone.

  9. 09

    Document

    Every decision, failure mode and number, written to the standard of a journal paper. The work isn't done until it can be handed over.

03 / Selected work

Stationary detection, agricultural tractors

A machine that is almost stopped looks exactly like one that is stopped. The detector answers it from an accelerometer and a gyroscope alone — a 209-parameter network on an ESP32 beside the CAN stack, with an ifm CR710S PLC in the loop.

The part that decided the result was the scoring. Accuracy is the wrong headline here: a false stopped and a false moving cost different amounts of km/h downstream, so the model was tuned against what a mistake costs rather than against a percentage.

Getting it onto the device is its own problem — a model that is correct offline degrades on the MCU with nothing in the log to show it. The bundle ships feature ordering, window lengths, scaler, threshold and precision together, then proves host and device agree to 2.4×10−7.

open implementation · stationary-detection (209 parameters) · mcu-model-bundle

AN-01

Steering angle without a steering-angle sensor

The vehicle had none, and an ABS loop needed one. The angle came out of the two wheel encoders already fitted for wheel-speed — which removed a part from the bill of materials instead of adding one.

The finding that made it work is counter-intuitive. The angle is a ratio of two nearly-equal integer tick counts, so ±1 µs of quantisation becomes a degree of wobble — worst when driving nearly straight, which is exactly where precision matters. Quantisation, not sensor noise, was the dominant error, and that makes the obvious approach — compute the angle, then filter it — structurally wrong. The filter runs on each channel before the ratio.

Causal, 100 ms, one fixed parameter set across every recording, and scored on whether the output describes motion the linkage can physically make rather than on an average error figure.

code and synthetic drive · ekf-steering-angle

AN-02

ECU commissioning and dual-sensor consolidation

Two sensor firmwares, each written as though it owned the bus, merged into a single deterministic image. One bus, one clock, no contention — and no arbitration surprises the first time both sensors speak at once.

It started on a bench, not a vehicle: a portable test rig built around a mobile machine controller — supply, ignition and inhibit-pin wiring, CAN interfacing — with the whole build-and-flash workflow validated end to end before anything was installed. A controller is far cheaper to commission on a bench, and the bench is the only place the failure modes are welcome.

Two quadrature ABS wheel-speed sensors, acquired cyclically in both the trusted and the memory-protected untrusted partitions, with dual-channel analogue drawbar-angle integration published to CAN. The streamed output was checked against two independent CAN analysers using a DBC database written for that bus — so the decoding was confirmed by something other than the code that had produced it.

client engagement · no public repository · the DBC work here is what AN-05 generalises

AN-03

Two CAN buses, one card, one clock

An ESP32 logger that records two CAN buses to a single SD card on a single clock — so a frame on one bus can be placed against a frame on the other afterwards, which is the whole reason for logging them together.

Nothing bus-specific is compiled in. Identifiers, scaling and units come from DBC files on the card, one per bus, so the same firmware records a tractor or a press without a rebuild. The receive path grew out of code that recorded hours of a 540 frame/s bus without dropping a frame.

The README states which half is field-proven and which is not: the second controller, the shared SPI bus and the eight-column CSV have not been on a live wire, and the logger reports its own worst-case drain time so the timing budget can be checked on a bench rather than taken on trust.

dual-can-logger-esp32

AN-04

Reading a bus you did not design

A CAN recording is a wall of hex until something tells you where the signals begin. dbcgen compiles ISO 11783 (ISOBUS) and J1939 from the published standard into a Vector DBC — every parameter group whose bit layout is documented, with its real signal names, scales, offsets and units. That half is a lookup, not a guess.

Give it a recording of your own bus as well and it narrows that database to the machine in front of you: real source addresses, real cycle times, and a measured field structure for the groups the standard names but never lays out.

The two halves carry different weight and the file says which is which. Signals taken from the standard are exact. Signals inferred from traffic measure about 69% exactly correct where a public reference exists, and carry no units — stated in the README rather than discovered later. 166 tests.

dbcgen

AN-05

Getting the recording off the card

A field session is worth nothing until the data is off the machine, and that is where recording days are actually lost.

Browse, upload and download an ESP32's SD card over Wi-Fi — or over the USB serial cable when there is no network, which on a machine in a field is most of the time. The serial path is CRC-32 verified, so a transfer either arrives intact or says so. No external libraries.

It is the least interesting repository here, and the one that most often decides whether a day of recording is usable the same evening.

esp32-sd-file-manager

AN-06

Real-time neural state tracking

Seizure-state estimation from multi-channel EEG — a hidden state recovered causally, which is estimation under noise at its hardest. First-authored at Asilomar, with the multi-channel journal version in IEEE Trans. Neural Systems & Rehabilitation Engineering.

It is on this page because it is where the method came from. The same discipline — causal, scored on the cost of being wrong, parameters justified one at a time — now ships on machines.

doi:10.1109/IEEECONF44664.2019.9048990

AN-07

04 / Field partners

Intelligence only earns its keep on real machines. These are the makers whose vehicles carry the work into the field — where a wrong decision is measured in tonnes, fuel and daylight, not test coverage.

Demmler Andreas Fahrzeugbau

Wertingen · Germany

Agricultural vehicle manufacturer in Wertingen, Germany. We make their machines smart — on-board sensing, on-device AI and state estimation so the vehicle can perceive, decide and act in real time, out in the field.

feeder tanks · walking-floor bodies · special vehicles

a-demmler.de →
P-01
wheel · articulation · inertial sensing → CAN bus → on-device estimate: speed · drawbar · axle → steer the trailing axle
plan view — drawbar measured at the pin · the axle group re-traces the tractor · dashed ghost: the uncorrected cut
the same corner, twice — locked 1.7 m off-track · steered 0.4 m
the estimator's journal — stationary → hold · zero-lock · recalibrate → resume

05 / Company

Principal engineer

Mohammad Badri Ahmadi — the engineer you actually get. First author at Asilomar on real-time mixed-filter state tracking; co-author on the multi-channel journal version in IEEE Trans. Neural Systems & Rehabilitation Engineering and on a four-class EEG-fNIRS study in the Journal of Neuroscience Methods. A decade separating signal from noise — first in brains, now in machines.

What you get, and who owns it

An estimate with a stated trust boundary: a quantity the machine could not measure before, the conditions under which it holds, and the measured behaviour of every way it fails. The decision that can injure somebody stays in your safety-rated channel at whatever performance level ISO 25119 or ISO 13849 requires — an estimator belongs upstream of a safety function, never inside one.

The target is whichever controller the machine already uses. You receive source, parameters and the bundle proving host and device agree, documented for your release process to qualify. Work product is assigned to you as it is created, not on final payment. Contract under your law, arbitration at an EU seat — Iran acceded to the New York Convention in 2001, so an award is enforceable. Milestone billing keeps your exposure to one milestone.

Jurisdiction, and what actually applies

BISS — Badri IT and Systems Solutions LLC — is registered in Iran (registration no. 1983, tax identifier 14015168957), providing information-technology services only. Three checks close the file, and each names its own source so you are not taking my word for any of it.

Screening. Those identifiers and my name against the EU Consolidated List and Annexes VIII–IX of Reg. 267/2012. Neither the company nor I appear on them — a search that takes minutes and does not involve me.

What I write. The EU's software control on Iran is Annex VIIA of Reg. 267/2012: ERP and industrial-integration software for the nuclear, military, oil, gas, naval, aviation, financial and construction sectors. Estimator firmware for farm implements is not in it, and Art. 10d controls software moving to Iran, not work arriving from it.

What you send me. That is the controlled direction, under Annex I of Reg. (EU) 2021/821 as cross-referenced by Reg. (EU) 2026/759. Anonymised CAN logs off an implement are not listed items — but that is your assessment to make, not mine, and if you would rather transfer nothing at all, the remote-session route keeps every file inside your network.

Most firms your size have no compliance department, and the real cost of engaging me is the hours spent establishing whether you may. Ask and you get it all in one message — registration documents, the identifiers above for screening, the data flow for each route, your own representations countersigned on your template, and an introduction to a German client who has already done this. If your counsel then says no, you spent an afternoon.

Commercials, and the paper trail

Why it is crypto — not a preference. The banking system I sit in is disconnected from SWIFT and no German bank holds a correspondent route into it, so a euro wire has nowhere to arrive. The obstacle is a missing channel, not the law: under Art. 30a(2) of Reg. 267/2012 a transfer below €10,000 to an Iranian company needs no authorisation and no notification at all, with notification from €10,000 and authorisation from €40,000 that Art. 30b(4) deems granted if the Bundesbank has not refused within four weeks — Servicezentrum Finanzsanktionen, Munich, +49 89 2889 3800. The day that channel opens I will use it and say so.

Where the money actually goes. To a wallet I hold the keys to myself. No exchange, no bank and no payment institution sits in the path on my side — there is no third-party financial institution in the transaction at all, so there is no further counterparty for your screening to clear beyond me. The destination address is printed on the invoice before you pay, and your own provider screens it as a matter of course rather than on my assurance. Settlement is EURC by preference — under MiCA an e-money token, euro-denominated and redeemable at par — or BTC, ETH or USDT as agreed.

What your auditor ends up holding. A sequentially numbered invoice naming both parties, the service, the period and the euro amount; the reverse-charge notice under §13b UStG, so no VAT passes through me; the settlement asset, network and destination address; the rate reference and timestamp that fixed the euro figure; and, once settled, the transaction hash. That hash resolves on a public ledger to the exact amount, address and minute — a payer, a payee, a sum and a date verifiable independently, permanently, without asking either of us. A correspondent wire leaves less behind than that.

What it does not do is satisfy a policy forbidding digital assets outright, or spare your provider the enhanced measures that apply to this destination. If either rules it out, tell me in one line and I will stop there. Demmler Andreas Fahrzeugbau of Wertingen, Bavaria has settled exactly this way for over two years; ask and I will introduce you first.

06 / Contact

Engagements begin with a written assessment, not a sales call. The first step is deliberately small — establish what your existing sensors and bus already produce, and whether the quantity you want can be derived from it, before anything is bought or fitted. If it cannot be done, that is what the note will say.

That first step is unpaid, and nothing needs clearing before it. No contract, no invoice, no payment rail, no purchase order, and — on the remote-session route — not one file leaving your network. Nothing for your finance team or your counsel to decide in order to find out whether the engineering is any good. Only if your engineers then want to continue does the jurisdiction or settlement question below become worth anyone's hour, and by then you are deciding about work you have already read.

Three ways to run it, and they are not equivalent, so your counsel and your IT lead should pick rather than me. Simplest — you drive. You share your screen on a call and keep the keyboard; I watch the bus and tell you what to capture and what it means. No access into your network, no credentials issued, no account created, no file transferred, nothing for IT to approve and nothing for export control to reach. Or I connect by remote session into a machine you control, if your policy permits inbound contractor access — no recording, drawing or image leaves your systems. Or you send me anonymised CAN logs, which is least work for you and is unambiguously a transfer of technical data to Iran that your counsel has to assess on its merits. I will not tell you the third one is a formality. Any channel below reaches the engineer directly; there is no front desk to get past.

07 / Questions

What is on-device AI, and why not the cloud?

The intelligence runs on the machine's own microcontroller — a 209-parameter network on an ESP32, say — not a remote server. Decisions in milliseconds, no connectivity needed, and the data never leaves the machine.

What is state estimation used for on vehicles?

Recovering what you cannot sense directly. A steering angle for ABS from wheel encoders alone, where no angle sensor existed — which took a sensor off the bill of materials. Or deciding a tractor is truly at rest, tuned so false positives are vanishingly rare.

Does any of our data have to go to Iran?

Not if you pick the first route: I work by remote session into a machine you control, and nothing leaves your systems. The alternative — you send anonymised logs — is easier for you and is unambiguously a transfer of technical data to Iran, which is your counsel's call. I will not tell you it is a formality.

Can you invoice us by bank transfer instead of crypto?

Not today. Settlement is in cryptocurrency, EURC by preference: a euro stablecoin at 1:1, with a public and permanent record a wire does not leave. If your policy forbids digital assets, say so in one line and I will stop there.

How does an engagement start?

With a written assessment, not a sales call. For a fixed fee I establish what your existing sensors and bus already produce, and whether the quantity you want can be derived from it, before anything is bought or fitted. If it cannot, that is what the note says.