RobotWebTools / rclnodejs

Node.js version of ROS 2.0 client
https://docs.ros.org/en/humble/Concepts/Basic/About-Client-Libraries.html?highlight=rclnodejs#community-maintained
Apache License 2.0
320 stars 70 forks source link

add new example: ros-graph-example #803

Closed wayneparrott closed 3 years ago

wayneparrott commented 3 years ago

The ros-graph-example.js demonstrates use of the Node api for accessing ROS2 graph info. When executed the example creates 4 nodes: a publisher node, a subscription node, a service node and a ros-info node that outputs detail of the other 3 nodes to stdout.

wayneparrott commented 3 years ago

Example output:

$ node example/ros-graph-example.js
This example creates the following nodes and outputs the corresponding ROS2 graph:
  publisher_node
  subscriber_node
  service_node
  ros_graph_display_node
NODES
[
  'publisher_node',
  'subscriber_node',
  'service_node',
  'ros_graph_display_node'
]
[
  { name: 'publisher_node', namespace: '/ns1' },
  { name: 'subscriber_node', namespace: '/ns1' },
  { name: 'service_node', namespace: '/ns1' },
  { name: 'ros_graph_display_node', namespace: '/ns1' }
]
TOPICS & TYPES
[
  {
    name: '/ns1/parameter_events',
    types: [ 'rcl_interfaces/msg/ParameterEvent' ]
  },
  { name: '/ns1/topic', types: [ 'std_msgs/msg/String' ] },
  { name: '/rosout', types: [ 'rcl_interfaces/msg/Log' ] }
]
SERVICES & TYPES
[
  {
    name: '/ns1/add_two_ints',
    types: [ 'example_interfaces/srv/AddTwoInts' ]
  },
  {
    name: '/ns1/publisher_node/describe_parameters',
    types: [ 'rcl_interfaces/srv/DescribeParameters' ]
  },
  {
    name: '/ns1/publisher_node/get_parameters',
    types: [ 'rcl_interfaces/srv/GetParameters' ]
  },
  {
    name: '/ns1/publisher_node/list_parameters',
    types: [ 'rcl_interfaces/srv/ListParameters' ]
  },
  {
    name: '/ns1/publisher_node/set_parameters',
    types: [ 'rcl_interfaces/srv/SetParameters' ]
  },
  {
    name: '/ns1/publisher_node/set_parameters_atomically',
    types: [ 'rcl_interfaces/srv/SetParametersAtomically' ]
  },
  {
    name: '/ns1/ros_graph_display_node/describe_parameters',
    types: [ 'rcl_interfaces/srv/DescribeParameters' ]
  },
  {
    name: '/ns1/ros_graph_display_node/get_parameters',
    types: [ 'rcl_interfaces/srv/GetParameters' ]
  },
  {
    name: '/ns1/ros_graph_display_node/list_parameters',
    types: [ 'rcl_interfaces/srv/ListParameters' ]
  },
  {
    name: '/ns1/ros_graph_display_node/set_parameters',
    types: [ 'rcl_interfaces/srv/SetParameters' ]
  },
  {
    name: '/ns1/ros_graph_display_node/set_parameters_atomically',
    types: [ 'rcl_interfaces/srv/SetParametersAtomically' ]
  },
  {
    name: '/ns1/service_node/describe_parameters',
    types: [ 'rcl_interfaces/srv/DescribeParameters' ]
  },
  {
    name: '/ns1/service_node/get_parameters',
    types: [ 'rcl_interfaces/srv/GetParameters' ]
  },
  {
    name: '/ns1/service_node/list_parameters',
    types: [ 'rcl_interfaces/srv/ListParameters' ]
  },
  {
    name: '/ns1/service_node/set_parameters',
    types: [ 'rcl_interfaces/srv/SetParameters' ]
  },
  {
    name: '/ns1/service_node/set_parameters_atomically',
    types: [ 'rcl_interfaces/srv/SetParametersAtomically' ]
  },
  {
    name: '/ns1/subscriber_node/describe_parameters',
    types: [ 'rcl_interfaces/srv/DescribeParameters' ]
  },
  {
    name: '/ns1/subscriber_node/get_parameters',
    types: [ 'rcl_interfaces/srv/GetParameters' ]
  },
  {
    name: '/ns1/subscriber_node/list_parameters',
    types: [ 'rcl_interfaces/srv/ListParameters' ]
  },
  {
    name: '/ns1/subscriber_node/set_parameters',
    types: [ 'rcl_interfaces/srv/SetParameters' ]
  },
  {
    name: '/ns1/subscriber_node/set_parameters_atomically',
    types: [ 'rcl_interfaces/srv/SetParametersAtomically' ]
  }
]
PUBLISHERS BY NODE
[
  {
    "node": {
      "name": "publisher_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/parameter_events",
        "types": [
          "rcl_interfaces/msg/ParameterEvent"
        ]
      },
      {
        "name": "/ns1/topic",
        "types": [
          "std_msgs/msg/String"
        ]
      },
      {
        "name": "/rosout",
        "types": [
          "rcl_interfaces/msg/Log"
        ]
      }
    ]
  },
  {
    "node": {
      "name": "subscriber_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/parameter_events",
        "types": [
          "rcl_interfaces/msg/ParameterEvent"
        ]
      },
      {
        "name": "/rosout",
        "types": [
          "rcl_interfaces/msg/Log"
        ]
      }
    ]
  },
  {
    "node": {
      "name": "service_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/parameter_events",
        "types": [
          "rcl_interfaces/msg/ParameterEvent"
        ]
      },
      {
        "name": "/rosout",
        "types": [
          "rcl_interfaces/msg/Log"
        ]
      }
    ]
  },
  {
    "node": {
      "name": "ros_graph_display_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/parameter_events",
        "types": [
          "rcl_interfaces/msg/ParameterEvent"
        ]
      },
      {
        "name": "/rosout",
        "types": [
          "rcl_interfaces/msg/Log"
        ]
      }
    ]
  }
]
SUBSCRIPTIONS BY NODE
[
  {
    "node": {
      "name": "publisher_node",
      "namespace": "/ns1"
    },
    "info": []
  },
  {
    "node": {
      "name": "subscriber_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/topic",
        "types": [
          "std_msgs/msg/String"
        ]
      }
    ]
  },
  {
    "node": {
      "name": "service_node",
      "namespace": "/ns1"
    },
    "info": []
  },
  {
    "node": {
      "name": "ros_graph_display_node",
      "namespace": "/ns1"
    },
    "info": []
  }
]
SERVICES BY NODE
[
  {
    "node": {
      "name": "publisher_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/publisher_node/describe_parameters",
        "types": [
          "rcl_interfaces/srv/DescribeParameters"
        ]
      },
      {
        "name": "/ns1/publisher_node/get_parameters",
        "types": [
          "rcl_interfaces/srv/GetParameters"
        ]
      },
      {
        "name": "/ns1/publisher_node/list_parameters",
        "types": [
          "rcl_interfaces/srv/ListParameters"
        ]
      },
      {
        "name": "/ns1/publisher_node/set_parameters",
        "types": [
          "rcl_interfaces/srv/SetParameters"
        ]
      },
      {
        "name": "/ns1/publisher_node/set_parameters_atomically",
        "types": [
          "rcl_interfaces/srv/SetParametersAtomically"
        ]
      }
    ]
  },
  {
    "node": {
      "name": "subscriber_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/subscriber_node/describe_parameters",
        "types": [
          "rcl_interfaces/srv/DescribeParameters"
        ]
      },
      {
        "name": "/ns1/subscriber_node/get_parameters",
        "types": [
          "rcl_interfaces/srv/GetParameters"
        ]
      },
      {
        "name": "/ns1/subscriber_node/list_parameters",
        "types": [
          "rcl_interfaces/srv/ListParameters"
        ]
      },
      {
        "name": "/ns1/subscriber_node/set_parameters",
        "types": [
          "rcl_interfaces/srv/SetParameters"
        ]
      },
      {
        "name": "/ns1/subscriber_node/set_parameters_atomically",
        "types": [
          "rcl_interfaces/srv/SetParametersAtomically"
        ]
      }
    ]
  },
  {
    "node": {
      "name": "service_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/add_two_ints",
        "types": [
          "example_interfaces/srv/AddTwoInts"
        ]
      },
      {
        "name": "/ns1/service_node/describe_parameters",
        "types": [
          "rcl_interfaces/srv/DescribeParameters"
        ]
      },
      {
        "name": "/ns1/service_node/get_parameters",
        "types": [
          "rcl_interfaces/srv/GetParameters"
        ]
      },
      {
        "name": "/ns1/service_node/list_parameters",
        "types": [
          "rcl_interfaces/srv/ListParameters"
        ]
      },
      {
        "name": "/ns1/service_node/set_parameters",
        "types": [
          "rcl_interfaces/srv/SetParameters"
        ]
      },
      {
        "name": "/ns1/service_node/set_parameters_atomically",
        "types": [
          "rcl_interfaces/srv/SetParametersAtomically"
        ]
      }
    ]
  },
  {
    "node": {
      "name": "ros_graph_display_node",
      "namespace": "/ns1"
    },
    "info": [
      {
        "name": "/ns1/ros_graph_display_node/describe_parameters",
        "types": [
          "rcl_interfaces/srv/DescribeParameters"
        ]
      },
      {
        "name": "/ns1/ros_graph_display_node/get_parameters",
        "types": [
          "rcl_interfaces/srv/GetParameters"
        ]
      },
      {
        "name": "/ns1/ros_graph_display_node/list_parameters",
        "types": [
          "rcl_interfaces/srv/ListParameters"
        ]
      },
      {
        "name": "/ns1/ros_graph_display_node/set_parameters",
        "types": [
          "rcl_interfaces/srv/SetParameters"
        ]
      },
      {
        "name": "/ns1/ros_graph_display_node/set_parameters_atomically",
        "types": [
          "rcl_interfaces/srv/SetParametersAtomically"
        ]
      }
    ]
  }
]
coveralls commented 3 years ago

Coverage Status

Coverage remained the same at 90.62% when pulling 59847dba569940bb336c8629622f996b822d69a8 on wayneparrott:ros-graph-example into 8ebe705e4f3a5df9ecc3e80ee224ce907298e0e6 on RobotWebTools:develop.