Since I started this, I should probably also reply :)
I would like to avoid any discussion on the general merit of dynamic ports. 
I think it was understood by most what I intended with the proposed change. 
Just going a bit further with what Sylvain already hinted he would like orogen 
to generate: the helper function for generating the dynamic ports, and a 
general contract on the lifecycle (e.g. when can the ports be generated.)
That orogen itself is not capturing the entire model is fine with me. But the 
more self-descriptive it is, the better. 

Just a few things:
- I don't see that generating new ports in the RUNNING state is necessary 
anywhere. Restricting it for the transition to CONFIGURED is not harmful but 
only helpful.
- How it works now with e.g. the joint_dispatcher is that you create a 
configuration, if this configuration is not consistent or invalid, you don't 
transition to CONFIGURED.
- The change I proposed would do the same thing: The configuration for the 
joint_dispatcher (and imho any other module) would just be expressed in a 
slightly different manner.
- Yes, only at run-time would you know if it worked, unless you have another 
model and validation tool sitting on top.

What you gain though, is
a) a more streamlined way of how to handle dynamic ports in the code
b) a better generic knowledge on the structure of your task
c) a cleaner interface for your model validation to hop onto
d) a generic and natural way for task introspection

One task that was mentioned that would be more complex is the one mentioned by 
Martin, the robot_frames. 
Instead of parsing a URDF in task, you would put this into the configuration 
procedure for your task. I think both syskit and orogen.cpp know how to do 
this, at least with the transformers, and could probably do the same with 
robot_frames.

Cheers,

Jakob 


_______________________________________________
Rock-dev mailing list
Rock-dev@dfki.de
http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev

Reply via email to