Re: Updated dataflow semantics for RTT
S Roderick <[email protected]> Mon, 28 Sep 2015 12:47:09 +0000 (GMT)
| Newsgroups | gmane.science.robotics.orocos.devel |
|---|---|
| Message-ID | <[email protected]> |
--===============1198201156== Content-type: multipart/alternative; boundary="Boundary_(ID_Pa1XnKBfiF1jiIVHikCHwQ)" --Boundary_(ID_Pa1XnKBfiF1jiIVHikCHwQ) Content-type: text/plain; charset=utf-8; format=flowed Content-transfer-encoding: quoted-printable =0AOn Sep 28, 2015, at 08:44 AM, Herman Bruyninckx <Herman.Bruyninckx@mech= .kuleuven.be> wrote:=0A=0AOn Mon, 28 Sep 2015, S Roderick wrote:=0A=0AOn S= ep 27, 2015, at 08:11 AM, Herman Bruyninckx=0A<[email protected]= uven.be> wrote:=0A=0AOn Mon, 21 Sep 2015, Johannes Meyer wrote:=0A=0ADear = Orocos community,=0Aduring the last few weeks we have been working on the = concept and=0Aimplementation of a major redesign of the Orocos=0ARTT dataf= low, that we would like to share and ask for your valuable feedback.=0AThe= re was already a previous=0Adiscussion on the mailing list about the topic= earlier this year [1], and the=0Afollowing proposal tries to address=0Aal= l the issues mentioned there.=0A=0AWith the version 2 of the Orocos toolch= ain some years ago, the previous data=0Aflow architecture, which was based= on a=0Asingle data object and buffer shared between all ports participati= ng at the=0Asame connection, was replaced by a=0Aconnection architecture b= ased on data flow, where each pair of output and=0Ainput ports (or streams= ) is connected=0Athrough an individual channel, each having its own data o= bject or buffer.=0AWhile there was a well substantiated=0Amotivation for t= his update and it solved some of the shortcomings in RTT=0Aversion 1 [2], = it also introduced some new,=0Asometimes hidden, problems and broke other = use cases. One example is an input=0Aport with multiple connections, where= =0Adue to the ambiguity in which channel to read from the result is someti= mes=0Aunexpected to the user, who expects that=0Aeach write overwrites pre= vious samples in case of simple data connections.=0A=0AWe assembled a docu= ment (see attachment, or [3]) which introduces the version=0A1 and version= 2 data flow semantics=0Afor those who are not aware of the details, three= example use cases and=0Apresents the new dataflow architecture we=0Ahave = in mind, which ideally works for a superset of use cases that are=0Asuppor= ted by RTT version 1 and 2.=C2=A0=0A=0AWe do not want to go into details h= ere, so only a short summary for those who=0Ado not want to read the full = document:=0AWe propose to add two more boolean flags to the ConnPolicy str= uct that=0Adescribes the type of connection between two=0Aports: "shared" = and "mandatory". Furthermore the existing "pull" flag, which=0Awas only me= aningful for remote=0Aconnections, now has a big influence for local conne= ctions.=0A=0A"push" vs. "pull"=0A=0A=0AThanks for this nice effort. I thin= k it is really time to consider a next=0Ageneration of Orocos RTT...=0A=0A= If you allow me to bring in my two cents... It's possible that you won't l= ike=0Athe=0Amessage, or find it off-topic, but I think I should share it w= ith you anyway=E2=80=A6=0A=0AThese are interesting ideas Herman, but=C2=A0= you're right in that they're somewhat=0Aoff topic. For this discussion we = are interested in the here and now - in=0Aevolutionary and incremental cha= nges to a product=C2=A0that has served many of us=0Afairly well.=0A=0AThe = evolution from the current "data flow architecture" to a "event stream"=0A= _can_/_could_ be done in an incremental way...=0APolicy by policy. (i.e., = pull/push; read/write; buffer/port;...) =0ASeparation by separation. (i.e.= , component/activity/thread/OS; pub/sub to=0Aevent stream;...)=0A=C2=A0=0A= With all due respect, I think that your idea of "incremental" and mine are= two very different things (and both are equally valid). It took us two fu= ll years to convert our system from RTT v1 to RTT v2. There is no way we w= ould even consider moving to a RTT replacement without some serious review= and up front discover and prototype use of a replacement system. So incre= mental for us is defined in months to years =E2=80=A6=0A=0APersonally, I'm= not so worried about "better" as I am worried=0Aabout "good enough".=0A=0A= I am mostly interested in "simple". Because that is what determines how=0A= much of the potential mind share a project actually gets.=0A(Mind that I a= m not interested in "easy", which is the driver for ROS, and=0Athat serves= another public well.)=0A=C2=A0=0A+1 on simple.=0AS=0A=0A= --Boundary_(ID_Pa1XnKBfiF1jiIVHikCHwQ) Content-type: multipart/related; boundary="Boundary_(ID_uA2HSWHFOkD7gDEknBqWpw)"; type="text/html" --Boundary_(ID_uA2HSWHFOkD7gDEknBqWpw) Content-type: text/html; charset=utf-8 Content-transfer-encoding: quoted-printable <html><body><div><br></div><div>On Sep 28, 2015, at 08:44 AM, Herman Bruyninckx <He= [email protected]> wrote:<br><br></div><div><blockquote = type=3D"cite"><div class=3D"msg-quote"><div class=3D"_stretch"><span class= =3D"body-text-content"><span class=3D"body-text-content">On Mon, 28 Sep 20= 15, S Roderick wrote:<br><br></span></span><blockquote class=3D"quoted-pla= in-text" type=3D"cite">On Sep 27, 2015, at 08:11 AM, Herman Bruyninckx</bl= ockquote><blockquote class=3D"quoted-plain-text" type=3D"cite"><Herman.= [email protected]> wrote:</blockquote><blockquote class=3D"qu= oted-plain-text" type=3D"cite"><br></blockquote><blockquote class=3D"quote= d-plain-text" type=3D"cite">On Mon, 21 Sep 2015, Johannes Meyer wrote:</bl= ockquote><blockquote class=3D"quoted-plain-text" type=3D"cite"><br></block= quote><blockquote class=3D"quoted-plain-text" type=3D"cite">Dear Orocos co= mmunity,</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite"= >during the last few weeks we have been working on the concept and</blockq= uote><blockquote class=3D"quoted-plain-text" type=3D"cite">implementation = of a major redesign of the Orocos</blockquote><blockquote class=3D"quoted-= plain-text" type=3D"cite">RTT dataflow, that we would like to share and as= k for your valuable feedback.</blockquote><blockquote class=3D"quoted-plai= n-text" type=3D"cite">There was already a previous</blockquote><blockquote= class=3D"quoted-plain-text" type=3D"cite">discussion on the mailing list = about the topic earlier this year [1], and the</blockquote><blockquote cla= ss=3D"quoted-plain-text" type=3D"cite">following proposal tries to address= </blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">all the= issues mentioned there.</blockquote><blockquote class=3D"quoted-plain-tex= t" type=3D"cite"><br></blockquote><blockquote class=3D"quoted-plain-text" = type=3D"cite">With the version 2 of the Orocos toolchain some years ago, t= he previous data</blockquote><blockquote class=3D"quoted-plain-text" type=3D= "cite">flow architecture, which was based on a</blockquote><blockquote cla= ss=3D"quoted-plain-text" type=3D"cite">single data object and buffer share= d between all ports participating at the</blockquote><blockquote class=3D"= quoted-plain-text" type=3D"cite">same connection, was replaced by a</block= quote><blockquote class=3D"quoted-plain-text" type=3D"cite">connection arc= hitecture based on data flow, where each pair of output and</blockquote><b= lockquote class=3D"quoted-plain-text" type=3D"cite">input ports (or stream= s) is connected</blockquote><blockquote class=3D"quoted-plain-text" type=3D= "cite">through an individual channel, each having its own data object or b= uffer.</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">W= hile there was a well substantiated</blockquote><blockquote class=3D"quote= d-plain-text" type=3D"cite">motivation for this update and it solved some = of the shortcomings in RTT</blockquote><blockquote class=3D"quoted-plain-t= ext" type=3D"cite">version 1 [2], it also introduced some new,</blockquote= ><blockquote class=3D"quoted-plain-text" type=3D"cite">sometimes hidden, p= roblems and broke other use cases. One example is an input</blockquote><bl= ockquote class=3D"quoted-plain-text" type=3D"cite">port with multiple conn= ections, where</blockquote><blockquote class=3D"quoted-plain-text" type=3D= "cite">due to the ambiguity in which channel to read from the result is so= metimes</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">= unexpected to the user, who expects that</blockquote><blockquote class=3D"= quoted-plain-text" type=3D"cite">each write overwrites previous samples in= case of simple data connections.</blockquote><blockquote class=3D"quoted-= plain-text" type=3D"cite"><br></blockquote><blockquote class=3D"quoted-pla= in-text" type=3D"cite">We assembled a document (see attachment, or [3]) wh= ich introduces the version</blockquote><blockquote class=3D"quoted-plain-t= ext" type=3D"cite">1 and version 2 data flow semantics</blockquote><blockq= uote class=3D"quoted-plain-text" type=3D"cite">for those who are not aware= of the details, three example use cases and</blockquote><blockquote class= =3D"quoted-plain-text" type=3D"cite">presents the new dataflow architectur= e we</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">hav= e in mind, which ideally works for a superset of use cases that are</block= quote><blockquote class=3D"quoted-plain-text" type=3D"cite">supported by R= TT version 1 and 2. </blockquote><blockquote class=3D"quoted-plain-te= xt" type=3D"cite"><br></blockquote><blockquote class=3D"quoted-plain-text"= type=3D"cite">We do not want to go into details here, so only a short sum= mary for those who</blockquote><blockquote class=3D"quoted-plain-text" typ= e=3D"cite">do not want to read the full document:</blockquote><blockquote = class=3D"quoted-plain-text" type=3D"cite">We propose to add two more boole= an flags to the ConnPolicy struct that</blockquote><blockquote class=3D"qu= oted-plain-text" type=3D"cite">describes the type of connection between tw= o</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">ports:= "shared" and "mandatory". Furthermore the existing "pull" flag, which</bl= ockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">was only me= aningful for remote</blockquote><blockquote class=3D"quoted-plain-text" ty= pe=3D"cite">connections, now has a big influence for local connections.</b= lockquote><blockquote class=3D"quoted-plain-text" type=3D"cite"><br></bloc= kquote><blockquote class=3D"quoted-plain-text" type=3D"cite">"push" vs. "p= ull"</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite"><br= ></blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite"><br></= blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">Thanks fo= r this nice effort. I think it is really time to consider a next</blockquo= te><blockquote class=3D"quoted-plain-text" type=3D"cite">generation of Oro= cos RTT...</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cit= e"><br></blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">= If you allow me to bring in my two cents... It's possible that you won't l= ike</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">the<= /blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">message,= or find it off-topic, but I think I should share it with you anyway=E2=80= =A6</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite"><br>= </blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">These a= re interesting ideas Herman, but you're right in that they're somewha= t</blockquote><blockquote class=3D"quoted-plain-text" type=3D"cite">off to= pic. For this discussion we are interested in the here and now - in</block= quote><blockquote class=3D"quoted-plain-text" type=3D"cite">evolutionary a= nd incremental changes to a product that has served many of us</block= quote><blockquote class=3D"quoted-plain-text" type=3D"cite">fairly well.</= blockquote><span class=3D"body-text-content"><span class=3D"body-text-cont= ent"><br>The evolution from the current "data flow architecture" to a "eve= nt stream"<br>_can_/_could_ be done in an incremental way...<br>Policy by = policy. (i.e., pull/push; read/write; buffer/port;...) <br>Separation by s= eparation. (i.e., component/activity/thread/OS; pub/sub to<br>event stream= ;...)</span></span></div></div></blockquote><span> </span></div><div>= With all due respect, I think that your idea of "incremental" and mine are= two very different things (and both are equally valid). It took us two fu= ll years to convert our system from RTT v1 to RTT v2. There is no way we w= ould even consider moving to a RTT replacement without some serious review= and up front discover and prototype use of a replacement system. So incre= mental for us is defined in months to years =E2=80=A6</div><div><br></div>= <div><blockquote type=3D"cite"><div class=3D"msg-quote"><div class=3D"_str= etch"><blockquote class=3D"quoted-plain-text" type=3D"cite">Personally, I'= m not so worried about "better" as I am worried</blockquote><blockquote cl= ass=3D"quoted-plain-text" type=3D"cite">about "good enough".</blockquote><= span class=3D"body-text-content"><span class=3D"body-text-content"><br>I a= m mostly interested in "simple". Because that is what determines how<br>mu= ch of the potential mind share a project actually gets.<br>(Mind that I am= not interested in "easy", which is the driver for ROS, and<br>that serves= another public well.)</span></span></div></div></blockquote><span> <= /span></div><div>+1 on simple.</div><div>S</div><div><blockquote type=3D"c= ite"><div class=3D"msg-quote"><div class=3D"_stretch"><blockquote class=3D= "quoted-plain-text" type=3D"cite"><br></blockquote></div></div></blockquot= e></div></body></html>= --Boundary_(ID_uA2HSWHFOkD7gDEknBqWpw)-- --Boundary_(ID_Pa1XnKBfiF1jiIVHikCHwQ)-- --===============1198201156== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline -- Orocos-Dev mailing list [email protected] http://lists.mech.kuleuven.be/mailman/listinfo/orocos-dev --===============1198201156==--