= 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. * {X} Major issues that need to be resolved ---- ## PackageReviewCategory