HELLO ROS COMMUNITY!
I’ve been building an open-source project called QERRA-v2 Classical — a deterministic, fully explainable ethical evaluation layer (SEMEV-12, 12 vectors covering things like coercion, autonomy violation, harm intent) plus a lightweight physical-safety companion layer (QERRA-HSR — detects acute distress, isolation, environmental hazards).
Both layers are live on a public API, and I’ve just added a standalone PyTrees Condition node so you can try it in a Behavior Tree with zero ROS2 setup — just pip install py_trees requests.
pip install -r requirements-pytrees.txt
export QERRA_API_KEY=TEST-2026-QERRA-CLASSICAL-PUBLIC-KEY-98765
python test_bt_tick.py --live
This runs two real scenarios against the live API: a safe action that executes normally, and a high-risk action (autonomy violation) that the tree correctly blocks and routes to a human-review fallback node.
The two layers run in priority order: QERRA-HSR (physical safety — collapse, isolation, hazards) checks first and can suspend the ethical evaluation entirely if something CRITICAL is happening; otherwise SEMEV-12 evaluates the ethical content of the action.
Everything is deterministic — no LLM in the decision path, full reasoning trace in every response (which vectors fired, similarity scores, why).
I’m a solo independent developer and would genuinely value feedback from anyone working with Behavior Trees or robot safety layers — does this interface make sense for real BT setups? What’s missing for your use case? ![]()