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


Wiki: nodelet/Reviews/2010-02-17_API_Review (last edited 2010-02-17 22:07:35 by TullyFoote)