This package contains a combination of pose prediction and ISM. It provides a (sevice) interface for the ISM scene detection and visualization and contains the pose prediction logic for ISM scene detection. The reason to combine those modules in this package was to avoid creating ROS messages from the ISM classes. It enables us to easily copy ISM scene detection results to the pose prediction.


This package is the connection between pose prediction and scene recognition. It provides several services for controlling purpose. Its main parts are:

  • scene recognition for ISM logic

  • pose prediction for handling unfound objects

  • shared recognition results manager for managing ISM datastructes in both parts aforementioned

The following picture illustrates the process of the package:


Initially, the objects that were found are used to compute which scenes could be present (scene recognition). In the second step, these scenes are rated by their probability. In the last step, pose predictions for the missing objects are generated by resampling the rated results with importance sampling.


You need the ISM package for the scene detection and a source for AsrObjects.

Needed packages

  • asr_lib_ism: scene recognition
  • asr_lib_pose_prediction_ism: does the real pose prediction
  • asr_ism_visualizations: help package for visualizing the recognized scene
  • asr_world_model: the pose prediction uses a Service call to get the already found objects from the world model
  • asr_msgs: messages and datatypes
  • asr_object_database: information about the objects

Start system

Before you can start the rp_ism_node, you have to launch the world_model:

roslaunch asr_world_model world_model.launch

All functionality goes to one ros-node: the rp_ism_node. To launch it simply call:

roslaunch asr_recognizer_prediction_ism rp_ism_node.launch

ROS Nodes

Published Topics

The topics that the package publishes are only meant for the visualization. Those topics are:

  • /ism_results_visualization
    • data type: visualization_msgs/MarkerArray
    • description: scene recognition results
  • /pose_prediction_results_visualization
    • data type: visualization_msgs/MarkerArray
    • description: predicted poses for the missing objects
  • /ism_results_for_pose_prediction_viz
    • data type: visualization_msgs/MarkerArray
    • description: sampled scene recognition results used for pose prediction


You have to set some parameters in:


  • dbfilename:
    • data type: string
    • description: Sqlite DB, containing recorded object configurations that are transformed to model object configurations in an ism tree during ism learning in this node.
  • raterType:
    • data type: int unsigned
    • description; Which rater to rate/score a recognition result should be used.
  • baseFrame:
    • data tyoe: string
    • description: Frame to which incoming object messages are transformed
  • objectSetMaxCount:
    • data type: int unsigned
    • description: Threshold for the maximum processed number of object sets from combining input object pose samples. (Should be set to (#SamplesFromWorldModel)^(#InputObjects))

  • enableRotationMode:
    • data type: int
    • description: Whether the orientation of rotation invariant objects should be rotated to the rotationFrame or to an object.
      • 1 => rotationFrame is used

      • 2 => the specified rotation object is used

  • rotationFrame:
    • data type: string
    • description: Defines the rotation frame. The rotation only takes place if baseFrame == rotationFrame.
  • rotationObjectType:
    • data type: string
    • description: Defines the object type of the rotation object.
  • rotationObjectId:
    • data type: string
    • description: Defines the object id of the rotation object. (number in quotation marks to preserve leading zeros)
  • bin_size:
    • data type: double
    • description: size of voxel
  • maxProjectionAngleDeviation:
    • data type: double
    • description: deviation in orientation
  • markerLifetime:
    • data tye: double
    • description: lifetime of visualization marker
  • sceneMarkersSceneRecognitionPublisherName:
    • data type: string
    • description: visualization topic name for the results of the scene recognition
  • vizSamplesClientName:
    • data type: string
    • description: name of service call "visualize_sampled_poses"
  • pushCompletePatternsName:
    • data type:string
    • description: name of service call "push_complete_patterns"


  • predictionGenerationFactor:
    • data type:double
    • description: Factor to reduce generated results.
  • equal_results_number:
    • data type: bool
    • description: Whether to choose an equal number of recognition results for each scene present.
  • importance_resampled_size:
    • data type:unsigned int
    • description: Number of recognition results among n best recognition results that importance sampling is going to draw.
  • foundObjectClientName:
    • data type: string
    • description: name of service call "get_found_object_list"
  • PointCloudServerName:

    • data type:string
    • description: name of service call "get_point_cloud"
  • posePredictionMarkersPublisherName:
    • data type:string
    • description: visualization topic name for the predicted poses for the missing objects
  • sceneMarkersPosePredictionPublisherName:
    • data type: string
    • description: visualization topic name for all sampled scene recognition results used for pose prediction
  • latched:
    • data type: bool
    • description: latch publisher


  • processGetPointCloudServiceCall: Actual pose prediction

  • processFindScenesServiceCall: Actual scene recognition

  • setLogFilePathServiceCall: set path to file for writing object constellation

  • processToggleVisualizationServiceCall: toggles visualization

  • processResetServiceCall: Clears the old recognition results



Wiki: asr_recognizer_prediction_ism (last edited 2019-11-09 08:17:44 by FelixMarek)