<br><br><div class="gmail_quote">On Mon, Jan 28, 2013 at 11:28 PM, Sachin Chitta <span dir="ltr"><<a href="mailto:sachinc@willowgarage.com" target="_blank">sachinc@willowgarage.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hey Adolfo,<br><br></blockquote><div>Hey Sachin,<br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Thanks for this email. It brought out a good set of ideas on what we want from a controller framework. I will try and address your points with regards to [1] - the PR2 independent controller infrastructure that we have been developing. <br>



<br>The main goal of this work is to develop a robot-agnostic version of the PR2 controller infrastructure. In addition, we aim to develop a few (limited set of) controllers (based on the current set of controllers we have for the PR2) and release them as an open-source robot agnostic library.</blockquote>
<div><br>We seem to be pretty much on the same page. <br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">The controller manager and the controllers are intended to be usable with multiple realtime operating systems.</blockquote>
<div><br>This statement makes me very happy, more below...<br> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">A further part of this project is to take some of the workhorse capabilities performed by some of the controllers, e.g. the FollowJointTrajectory action and break them up into more sensible libraries (in addition to an actual controller implementation) that can be used across robots. <br>
</blockquote><div><br>Yes!, about a year ago I spent many hours porting the FollowJointTrajectory controller to our infrastructure. One pain point was comparing timestamps generated in hard-rt and non-rt contexts [2]. Another one was separating trajectory processing from PID control, as mentioned in an earlier post. The downside of this effort was that I ended up with a separate codebase to maintain, whose improvements cannot be readily merged upstream. The upside was that I learned quite a bit by going down there :).<br>
<br>[2] <a href="http://www.orocos.org/forum/orocos/orocos-users/comparing-timestamps-generated-rt-and-non-rt-contexts">http://www.orocos.org/forum/orocos/orocos-users/comparing-timestamps-generated-rt-and-non-rt-contexts</a><br>
</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<br>To answer some of your more direction questions:<div class="im"><br>- Is it possible to have a controller with multiple interfaces (eg. send position + velocity + effort commands)?.<br></div>yes, you will have to implement an interface that incorporates all these commands.</blockquote>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>

- If I understand correctly, interfaces are limited by design to 
position, velocity and effort, and adding a new one (fancy example: 
stiffness) is not possible, correct?.<br></div>Not true, you can implement other types of interfaces as well.</blockquote><div><br>Thanks for clarifying the two above points, this is great news!, so no blockers here.<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>- Is it possible to chain controllers as in the attached figure 
(r_arm_follow_joint_traj + r_arm_pid_controller) from configuration 
files, ie. without writing code?.<br></div>The follow joint trajectory controller will probably reuse the PID controllers (if that's what you are asking), but directly in code. I think I understand what you are referring to - we could design individual controllers to be more flexible so they can do something like this but its not something we have put much thought into yet.</blockquote>
<div><br>I'm very interested in having a FollowJointTrajectory controller that does not output an effort command. Chaining controllers without writing code is important for many use cases. A very simple one is a position-controlled robot, whose hardware interface directly accepts position commands, but whose simulated interface (because of simulator constraints) only accepts effort commands.<br>
 </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>

- Controllers running at lower 
frequency than the manager need to implement this by doing work only one
 out of every n cycles, as separate controller threads are not 
supported, correct?.<br></div>

The intention of this work is to provide a simple single-threaded infrastructure. We are probably going to stay away from anything more (e.g. multi-threading, etc.) mainly because there's other tools out there that will provide some of those capabilities for you.</blockquote>
<div><br>If controllers can be triggered by timers that can be individually configured, as Herman suggests in a previous post, your solution works just fine. The other benefit of having stuff in separate threads is protection against mode switches and overruns, but proper monitoring and supervision allowing to be aware that these things are happening also works for me. Food for a second iteration.<br>
</div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im"><br>

- Is there any work on decoupling the more common "workhorse" 
controllers out of the pr2_controller_manager infrastructure (eg. a 
couple of mobile base implementations, the FollowJointTrtajectory 
action)?. I've already spent some time factoring out the spline splicing
 and interpolation code from the FollowJointTrtajectory action, and was 
planning on writing some unit tests on it. If not, I can also make this 
available once the cleanup is complete.<br></div>

Yes. We probably won't do the mobile base though.  <br></blockquote><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>This is a joint project with a spin-off from Willow Garage: HiDOF Inc. (<a href="http://hidof.com" target="_blank">hidof.com</a>). As the project matures, more documentation will be added to make some of these things clearer. <br>
</blockquote><div class="h5"><br>The copyright statements and commit logs indeed reflect that :)<br><br>Thanks for the very valuable feedback.<br><br>Adolfo.<br> <br>-- <br>Adolfo Rodríguez Tsouroukdissian<br>


Senior robotics engineer<br>
<a href="mailto:adolfo.rodriguez@pal-robotics.com" target="_blank">adolfo.rodriguez@pal-robotics.com</a><br><a href="http://www.pal-robotics.com/" target="_blank">http://www.pal-robotics.com</a><br><br>PAL ROBOTICS S.L<br>




c/ Pujades 77-79, 4º4ª<br>08005 Barcelona, Spain.<br>Tel. <a href="tel:%2B34.93.414.53.47" value="+34934145347" target="_blank">+34.93.414.53.47</a><br>Fax.<a href="tel:%2B34.93.209.11.09" value="+34932091109" target="_blank">+34.93.209.11.09</a><br>



Skype: adolfo.pal-robotics<br><a href="http://www.facebook.com/palrobotics1" target="_blank">Facebook</a> - <a href="http://twitter.com/#%21/palrobotics" target="_blank">Twitter</a> - <a href="http://www.youtube.com/user/PALRobotics" target="_blank">PAL Robotics YouTube Channel</a><br>




<br>AVISO DE CONFIDENCIALIDAD: Este mensaje y sus documentos adjuntos, pueden contener información privilegiada y/o confidencial que está dirigida exclusivamente a su destinatario. Si usted recibe este mensaje y no es el destinatario indicado, o el empleado encargado de su entrega a dicha persona, por favor, notifíquelo inmediatamente y remita el mensaje original a la dirección de correo electrónico indicada. Cualquier copia, uso o distribución no autorizados de esta comunicación queda estrictamente prohibida.<span style="border-collapse:collapse;font-size:13px"><span style="border-collapse:collapse;font-size:13px"><span style="font-size:13px"><tt><font face="'times new roman', serif"><font color="#333333"><br>




<br></font></font></tt></span></span></span>CONFIDENTIALITY NOTICE: This e-mail and the accompanying document(s) may contain confidential information which is privileged and intended only for the individual or entity to whom they are addressed.  If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or use of this e-mail and/or accompanying document(s) is strictly prohibited.  If you have received this e-mail in error, please immediately notify the sender at the above e-mail address.
<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im">_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org" target="_blank">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
<br></div></blockquote></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br>Sachin Chitta<br>Manager and Research Scientist<br>Autonomous Mobile Manipulation Group<br>Willow Garage
</font></span><br>_______________________________________________<br>
ros-users mailing list<br>
<a href="mailto:ros-users@code.ros.org">ros-users@code.ros.org</a><br>
<a href="https://code.ros.org/mailman/listinfo/ros-users" target="_blank">https://code.ros.org/mailman/listinfo/ros-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>Adolfo Rodríguez Tsouroukdissian<br>Senior robotics engineer<br><a href="mailto:adolfo.rodriguez@pal-robotics.com" target="_blank">adolfo.rodriguez@pal-robotics.com</a><br>
<a href="http://www.pal-robotics.com/" target="_blank">http://www.pal-robotics.com</a><br><br>PAL ROBOTICS S.L<br>c/ Pujades 77-79, 4º4ª<br>08005 Barcelona, Spain.<br>Tel. +34.93.414.53.47<br>Fax.+34.93.209.11.09<br>Skype: adolfo.pal-robotics<br>
<a href="http://www.facebook.com/palrobotics1" target="_blank">Facebook</a> - <a href="http://twitter.com/#%21/palrobotics" target="_blank">Twitter</a> - <a href="http://www.youtube.com/user/PALRobotics" target="_blank">PAL Robotics YouTube Channel</a><br>
<br>AVISO DE CONFIDENCIALIDAD: Este mensaje y sus documentos adjuntos, pueden contener información privilegiada y/o confidencial que está dirigida exclusivamente a su destinatario. Si usted recibe este mensaje y no es el destinatario indicado, o el empleado encargado de su entrega a dicha persona, por favor, notifíquelo inmediatamente y remita el mensaje original a la dirección de correo electrónico indicada. Cualquier copia, uso o distribución no autorizados de esta comunicación queda estrictamente prohibida.<span style="border-collapse:collapse;font-size:13px"><span style="border-collapse:collapse;font-size:13px"><span style="font-size:13px"><tt><font face="'times new roman', serif"><font color="#333333"><br>
<br></font></font></tt></span></span></span>CONFIDENTIALITY NOTICE: This e-mail and the accompanying document(s) may contain confidential information which is privileged and intended only for the individual or entity to whom they are addressed.  If you are not the intended recipient, you are hereby notified that any disclosure, copying, distribution or use of this e-mail and/or accompanying document(s) is strictly prohibited.  If you have received this e-mail in error, please immediately notify the sender at the above e-mail address.