News for hackers. Stuff that matters.
Re:Show HN: Copper – Open-Source Robotics in Rust with Deter... by rgovostes on Monday December 02, 2024 @11:47PM (#42303145)
Do I understand that at each tick, every task outputs a single message, and can depend on the outputs of other tasks? I.e., nodes and topics are merged into tasks, executed in topological order?
Re:Show HN: Copper – Open-Source Robotics in Rust with Deter... by gbin on Tuesday December 03, 2024 @03:48AM (#42304198)
Exactly.

Technically Copper is a compiler taking your graph with those constraints in mind and building a game loop out of it.

Re:Show HN: Copper – Open-Source Robotics in Rust with Deter... by BWStearns on Tuesday December 03, 2024 @12:48PM (#42308920)
This reminds me, I've been messing around with Bevy recently and have been wondering if ECS systems might be suited to hardware. On the surface it seems like a good ergonomic fit. Not sure if ECS is a performance/determinism killer but since they're used in gaming where performance is often critical I imagine it's surmountable?
Re:Show HN: Copper – Open-Source Robotics in Rust with Deter... by gbin on Tuesday December 03, 2024 @01:17PM (#42309305)
I believe that at least the initial version of ISAAC from Nvidia was based on an ECS. I don't think it is a determinism killer, this is often a well ordered pipeline within a game loop.

In terms of architecture though, it looks like it makes a ton of sense inside something like a tracker (ie the entity is basically a track) but for other parts like a vision pipeline, sensor fusion etc... I don't see how it helps.

Tell me if I am missing something.

Talking about Bevy, fitting Copper within Bevy to build this little simulation example happened super naturally: Copper is a System querying the Entities within the virtual world after each simulation tick.

Re:Show HN: Copper – Open-Source Robotics in Rust with Deter... by BWStearns on Tuesday December 03, 2024 @01:43PM (#42309643)
Very cool about ISAAC. I didn't know.

As far as how it helps, I was mostly thinking from a dev ergonomics perspective. For things like ROS/mavlink it can sometimes be hard (for me) to think through how all the systems are interacting but for whatever reason ECSs feel like a natural way to think about systems with simultaneousish inputs and outputs.

Re:Show HN: Copper – Open-Source Robotics in Rust with Deter... by steve_adams_86 on Tuesday December 03, 2024 @01:55PM (#42309813)
I'm not an authority on the topic, but a somewhat similar concept to ECS is state charts, which I find far better suited to hardware.

Some might verbally assault me for calling these two things similar, but I mean that loosely. Someone who is new to both might notice that they compose systems which can communicate and respond to inputs, which is conceptually similar. State charts offer far more guarantees, consistency, reliability, and predictability though.

I suppose one is about propagating data (not state, specifically), the other is about state and state control. Both are hierarchical in a sense, but ECS doesn't place as much importance on hierarchy.

Apologies if I'm dead wrong.

Re:Show HN: Copper – Open-Source Robotics in Rust with Deter... by tejaskumar_ on Monday December 09, 2024 @06:39AM (#42365240)
Interesting point about state charts for hardware systems. They're indeed excellent for modeling complex system behaviors. I've heard of Stately/XState being used for some embedded control interfaces - while it's typically associated with web apps, the same statechart patterns work surprisingly well for describing hardware state machines and their transitions.