Core Concepts
Philosophy
So why did I make this? Well, isn't it obvious enough yet!? Programming robots is hell!!
On a more serious note, Kenate is built on one core belief: robotic code should be modular, not a monolithic disaster. I replace your chaotic scripts with highly-specialized behaviors.
The Atomic State Paradigm
Let's be real: putting all your robot's logic into one giant file is a great way to guarantee a catastrophic failure. Kenate forces you to be better. I treat robotic behavior as a set of isolated, high-performance modules. By replacing "scripts" with "Atomic States," you get an autonomous system that's modular by design and nearly impossible to break by accident. (Though I'm sure someone will try).
Definition: Atomic State
A behavioral module that performs exactly one task perfectly. Stop building States that try to do everything. If your robot needs to move and grab an object, that's two states. Simple.
Why Kenate?
Because traditional robotic software rapidly devolves into "Spaghetti Logic"—endless chains of if-else statements that make you want to rip your hair out when a sensor glitches in production. Kenate enforces a disciplined lifecycle: Init, Run, Analyze. It's the grown-up way to build robots.
Core Principles
Modularity
Each behavior is a self-contained State class. Add, remove, or modify states without breaking the others. It's like Lego, but for robot brains.
Hybrid Performance
Write in comfortable Python, execute in blazing-fast C++. The 1000Hz Kernel does the heavy lifting so your robot moves smoothly instead of violently jerking around.
Determinism
The Heartbeat guarantees your code runs exactly when it should. No more 'jitter' or randomly missed sensor readings. Predictable is professional.
The Watchdog Pattern
For systems that actually need to survive in the real world, you use the Watchdog pattern. Don't build robots without this unless you enjoy watching them catch fire.
# The Watchdog constantly monitors system health
class ThermalWatchdog(kenate.ThresholdState):
def on_update(self):
if self.get_system_temperature() > 85.0:
# Overrides ANY active mission state
self.engine.set_state("Safety")Always include a background state that monitors system vitals (heat, battery, signal).