[{"data":1,"prerenderedAt":300},["ShallowReactive",2],{"project-42302026":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":43,"post_text":45,"what":46,"said":82,"maker_in_thread":160,"shape":170,"grid":174,"attempts":261,"same_week":262,"maker_shows":31,"maker_hidden":292,"reader_version":293,"card":294},"42302026","Copper","Open-source robotics in Rust with deterministic log replay","title","Show HN: Copper – Open-source robotics in Rust with deterministic log replay","https:\u002F\u002Fgithub.com\u002Fcopper-project\u002Fcopper-rs\u002Fwiki\u002FCopper-Release-Log","github.com","gbin",1733187533,2024,161,36,513,3515,15,"notable","infrastructure","robotics runtime","library",[24,25,26,27],"robotics framework","rust robotics","deterministic replay","ros alternative","curious",0.115,{"positive":31,"neutral":32,"mixed":33,"critical":34},4,7,0,2,13,{"idea":37,"docs":39,"execution":41,"design":42},{"positive":38,"critical":34},3,{"positive":40,"critical":33},1,{"positive":33,"critical":33},{"positive":33,"critical":33},[40,33,38,44,33,33,33,33,33,33,33,33,33,33,33,33,33,44,33,44,38,33,38,38,38,40,38,38,33,33,33,33,33,33,44,33],5,null,{"problem":47,"audience":61,"pricing":45,"motivation":45,"time_to_build":45,"stack":70,"openness":80,"stage":81,"team_size":81},{"value":48,"source":49,"evidence":50},"Building fast, reliable robots with low latency and deterministic replay, an alternative to ROS","maker",[51,54,57],{"id":52,"by":11,"text":53},"42304009","Note that Copper can be distributed too, we do support iceoryx2 for example if you need to split it in 2 or more processes. We have ~100x less latency and ~12x faster logging…",{"id":55,"by":11,"text":56},"42304198","Exactly. Technically Copper is a compiler taking your graph with those constraints in mind and building a game loop out of it.",{"id":58,"by":59,"text":60},"42302574","pryelluw","Such a great two sentence intro to the project: “ Copper is a user-friendly runtime engine for creating fast and reliable robots. Copper is to robots what a game engine is to…",{"value":62,"source":63,"evidence":64},"Robotics developers","inferred",[65,66],{"id":58,"by":59,"text":60},{"id":67,"by":68,"text":69},"42302543","a_t48","Nice release - deterministic replay isn't easy - I still need to go back and pull our implementation forward to match the new features in the core framework. I'm not sure if…",[71,76],{"value":72,"source":49,"evidence":73},"Rust",[74],{"id":75},"post",{"value":77,"source":49,"evidence":78},"iceoryx2",[79],{"id":52,"by":11,"text":53},"open_source","unknown",{"praise":83,"objections":105,"requests":130,"questions":135,"alternatives":150},[84,96,100],{"value":85,"source":86,"evidence":87},"Deterministic log replay is a valuable built-in feature","commenter",[88,92],{"id":89,"by":90,"text":91},"42302602","amacneil","It’s great to see more innovation in the robotics framework space, it’s sorely needed. Deterministic log replay is a killer feature to have baked in from the start - many…",{"id":93,"by":94,"text":95},"42302725","cchance","If this pics up support for like a open-library of assorted components and people shared them it has a lot of potential especially if the sim env and replays continues to be…",{"value":97,"source":86,"evidence":98},"Clear two-sentence intro, comparable to game engines for games",[99],{"id":58,"by":59,"text":60},{"value":101,"source":86,"evidence":102},"Welcome addition to a space needing more innovation",[103,104],{"id":89,"by":90,"text":91},{"id":67,"by":68,"text":69},[106,113,119],{"value":107,"source":86,"evidence":108},"ROS 2 comparison is unfair, since Copper is single-process and ROS uses default DDS",[109],{"id":110,"by":111,"text":112},"42302986","cpgxiii","This seems to suffer a bit from the same problem that affects a lot of \"new\" robotics frameworks: the beginnings are simple, and it's easy at that stage to think that everything…",{"value":114,"source":86,"evidence":115},"Determinism of replay depends on user code, not guaranteed by the runtime",[116],{"id":117,"by":68,"text":118},"42302906","My goal is determinism specifically around message timings\u002Fexecution in replay. We don't currently advertise runtime determinism, we also don't promise fixes for determinism in…",{"value":120,"source":86,"evidence":121},"Deterministic replay may not be a differentiator",[122,126],{"id":123,"by":124,"text":125},"42306321","ericyd","I know nothing about robotics. Is deterministic log replay really a differentiating factor? My naive assumption would be that this is table stakes for pretty much any software.",{"id":127,"by":128,"text":129},"42306524","chippiewill","ROS is probably the biggest robotics framework and doesn't have deterministic playback. It's important for safety critical to be sure, but you can get surprisingly far without it.",[131],{"value":132,"source":86,"evidence":133},"Support for a shared library of components",[134],{"id":93,"by":94,"text":95},[136,143],{"value":137,"source":86,"evidence":138},"How is bit-level determinism handled given C++ vs Rust compilers",[139],{"id":140,"by":141,"text":142},"42302832","AlotOfReading","Having maintained something similar myself, how has your experience been with exact determinism in C++? C++ compilers tend to be a bit of a free-for-all when it comes to bit…",{"value":144,"source":86,"evidence":145},"Does each task output one message per tick in topological order",[146],{"id":147,"by":148,"text":149},"42303145","rgovostes","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…",[151,156],{"value":152,"source":86,"evidence":153},"ROS \u002F ROS 2",[154,155],{"id":110,"by":111,"text":112},{"id":89,"by":90,"text":91},{"value":157,"source":86,"evidence":158},"Basis (C++ robotics framework)",[159],{"id":67,"by":68,"text":69},{"comments":161,"answered":31,"key":162},6,[163,164,167],{"id":52,"text":53},{"id":165,"text":166},"42302676","It almost feels like we would need an \"in between\" category. If I paint a broad brush: - embedded is all about latency, low bandwidth - computers are all about bandwidth with…",{"id":168,"text":169},"42305895","Indeed thanks. \"Not unlike\" :)",{"commenters":171,"max_depth":32,"maker_replies":161,"first_comment_mins":172,"lifespan_hours":173},23,90,155,[175,177,179,183,187,191,193,197,198,200,203,205,207,209,212,215,217,220,221,224,225,229,231,232,234,235,236,237,239,241,245,247,249,252,255,258],[110,33,40,176,111,33],"project\u002Fcritical\u002Fidea",[52,33,33,178,11,40],"maker\u002Fneutral\u002Fperformance",[180,33,38,181,182,33],"42305775","project\u002Fneutral\u002Fidea","rcxdude",[184,33,44,185,186,33],"42306324","project\u002Fpositive\u002Fidea","patrick451",[188,33,33,189,190,33],"42308475","commenter\u002Fneutral\u002Fnone","jvanderbot",[192,33,33,189,186,33],"42314617",[194,40,33,195,196,33],"42302625","other\u002Fneutral\u002Fnone","the__alchemist",[165,40,33,195,11,40],[199,40,33,195,196,33],"42306743",[201,40,33,195,202,33],"42302855","ModernMech",[204,40,33,189,141,33],"42302890",[206,40,33,189,202,33],"42302931",[208,40,33,195,68,33],"42303038",[210,40,33,195,211,33],"42304092","exe34",[213,40,33,195,214,33],"42304229","ribadeo",[216,40,33,195,141,33],"42303133",[218,40,33,195,219,33],"42306053","dgfitz",[89,34,44,185,90,33],[222,34,33,195,223,33],"42310282","jeffreygoesto",[93,38,44,185,94,33],[226,31,38,227,228,33],"42305849","project\u002Fneutral\u002Fdocs","leonheld",[168,31,33,230,11,40],"maker\u002Fneutral\u002Fnone",[67,44,38,181,68,33],[140,44,38,233,141,33],"project\u002Fneutral\u002Fexecution",[117,44,38,233,68,33],[123,161,40,176,124,33],[127,161,38,181,128,33],[147,32,38,238,148,33],"project\u002Fneutral\u002Fdesign",[55,32,33,240,11,40],"maker\u002Fneutral\u002Fdesign",[242,32,33,243,244,33],"42308920","other\u002Fneutral\u002Fdesign","BWStearns",[246,32,33,238,11,40],"42309305",[248,32,33,243,244,33],"42309643",[250,32,33,243,251,33],"42309813","steve_adams_86",[253,32,33,195,254,33],"42365240","tejaskumar_",[58,256,44,257,59,33],8,"project\u002Fpositive\u002Fdocs",[259,256,33,260,11,40],"42302743","maker\u002Fneutral\u002Fdocs",[],[263,268,273,278,282,287],{"id":264,"name":265,"points":266,"category":267},"42289690","Markwhen",912,"productivity",{"id":269,"name":270,"points":271,"category":272},"42284412","Privastead",551,"security_privacy",{"id":274,"name":275,"points":276,"category":277},"42320032","Outerbase Studio",356,"dev_tools",{"id":279,"name":280,"points":281,"category":20},"42270389","Vince",283,{"id":283,"name":284,"points":285,"category":286},"42311031","30cc",275,"languages",{"id":288,"name":289,"points":290,"category":291},"42261909","Voice-Pro",271,"creative",false,"v2",{"id":295,"name":5,"line":6,"ai":292,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":296,"top":18,"kw":297,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":298,"url":9,"mix":299,"praise":85,"objection":107,"sub":21},42302026,0.12,[24,25,26,27],"103500000000000005053033313300000050",[31,32,33,34],1793991106510]