Nodes and Messages¶
An Isaac application is created out of multiple nodes. The navigation stack has the following nodes:
- GlobalLocalization: Estimates the pose of the robot in a map only using the current range scan measurement without prior information.
- ParticleFilterLocalization: Continuously tracks the pose of the robot using range scan measurements.
- GlobalPlanner: Computes a path to a target using the currently known map.
- LqrPlanner: Computes an optimal trajectory for the robot to smoothly drive it on a desired path.
- DifferentialBaseControl: A basic controller to output the current base command message using the base trajectory plan.
- LocalMap: Creates a representation of obstacles around the robot using the range scan measurements.
- DifferentialBaseOdometry: Estimates the ego motion of the robot using the odometry estimate from the differential base.
- LocalizeBehavior: Switches between global and local localization to keep the robot localized.
- Map: Provides the map of the environment to various other nodes.
- RobotModel: Provides the range scan model and the differential base model to support computations by various other nodes.
- Websight: Publishes various visualization and plot data from all nodes to the web frontend.
Nodes send each other messages as shown by the arrows in the diagram below. Use message passing to separate an application into modular entities. Nodes can be executed in parallel and run periodically or when new messages are received. Some nodes, like the map or the range scan model, do not publish messages but act as a service provider and other nodes link to them directly.
The navigation stack has the following incoming and outgoing message types. In addition to these messages the navigation stack uses a variety of internal messages to communicate between its various nodes.
- DifferentialBaseStateProto: This message contains odometry data from the differential base which can be used to better estimate the egomotion of the robot and thus its location in the map.
- RangeScanProto: A flat range scan containing the distance to obstacles for in a polar scan around the sensor. This can for example be computed from a LIDAR sensor like the Velodyne Puck.
- GoalProto: A message containing the desired goal pose.
- DifferentialBaseControl: The desired motion for the differential base produced by the controller. It is smooth and safe and can be used directly to drive the robot.