API review
Proposer: Tully
Present at review:
- Ken
- Radu
Question / concerns / comments
Enter your thoughts on the API and any questions / concerns you have here. Please sign your name. Anything you want to address in the API review should be marked down here before the start of the meeting.
Meeting agenda
General theory
Nodelets look like nodes to everyone except ros they each get a namespace at the default level. Parameters are loaded into their ~ namespace. Remappings are applied to their specific NodeHandles at load, and not to the entire process.
Launch Syntax
Existing roslaunch syntax.
<launch> <node> <machine> <include> <remap> <env> <param> <rosparam> <group> <test>
proposed yaml syntax for nodelets
normal_estimator: type: NormalEstmator params: min_area: 3 max_area; 4 remap: - from:~/input_cloud to: pcd_cloud - from: ~/output_normals to: normals ground_plane_removal: type: GroundPlaneFilter params: tolerance: 5 something_complicated: {a:'b', c:'d'} remap: - from: ~/input_cloud to: pcd_cloud - from: ~/input_normals to: normals - from: ~/output_cloud to: ground_free_cloud
Alternative to be more roslaunch like
nodelets: - name: foo type: bar params: many: here remap: - from: a to: b - name: foo2 type: bar params: many: here remap: - from: a to: b
For launching you can use spawner style syntax: so you bring up node "manager" and then use
nodelet_spawner "manager" nodelet_name NodeletType parameter_file.yaml remappings.yaml
Or yaml_file config based
nodelet load nodelet_name yaml_file.yaml [manager] nodelet load "manager" nodelet_name NodeletType parameter_file.yaml remapping_file nodelet start nodelet_name
to stop
nodelet stop nodelet_name nodelet unload nodelet_name
Comments: Ken:
- global namespace for nodelets is going to be a naming issue. Doing package - Nodelet_name.
- keep top level unclaimed so you can add misc things and can include/combine functionality.
- can use !Type declarations to declare a new type, something like:
!! nodelet: type: pkg: name: manager:
!node ns: this is the only support namespaces no groups !param !nodelet !include ns: file:
This is better due to being able to concatenate
pluginlib abstract package/name for Type to avoid namespace collisions
For now push parameters up and then point manager to namespace by service call. make parameters in private namespace, not ~/params
Conclusion
Package status change mark change manifest)
Action items that need to be taken.
Major issues that need to be resolved