Library containing shared perception functionality. Python interface are developed for several functions and definitions in the C++ library using Boost. This is to avoid defining commonly used logic in different locations and also to expose C++ exclusive libraries (i.e. PCL) for use in Python. This means if a functionality is needed in both Python and C++, it should first be developed in C++ and then ported to Python.
mas_perception_libs
numpy
installation may not create a correct symbolic link to the library's include directory in the system, which results in a compilation error about missing header filenumpy/arrayobject.h
. This can be fixed by creating a correct link as follow (this is typical for an Ubuntu machine, please make sure it's appropriate for your own setup):# ln -s /usr/local/lib/python2.7/dist-packages/numpy/core/include/numpy /usr/include/numpy
Contains shared perception definitions in C++.
Contains shared perception definitions in Python.
Run an instance of ObjectDetectionActionServer
(described in Python Documentation).
Parameters:
action_name
: name of action servercloud_topic
: name of topic which supplysensor_msgs/PointCloud2
messagestarget_frame
: name of reference frame which the object poses will be transformed toclass_annotations
: YAML file which maps numeric class values to class names, used by theImageDetectorBase
class to configure the detection model. An example of this file isclass_annotation_example.yml
.kwargs_file
: YAML file which is used by theImageDetectorBase
class to specify additional parameters needed to configure the detection model. An example isimage_detector_test_kwargs.yml
.detection_module
: name of the module containing theImageDetectorBase
extension to import.detection_class
: name of the extension of theImageDetectorBase
class to import.
Run an instance of PlaneDetectionActionServer
(described in Python Documentation).
Parameters:
action_name
: name of action servercloud_topic
: name of topic which supplysensor_msgs/PointCloud2
messagestarget_frame
: name of reference frame which the object poses will be transformed toclass_annotations
: YAML file which maps numeric class values to class names, used by theImageDetectorBase
class to configure the detection model. An example of this file isclass_annotation_example.yml
.kwargs_file
: YAML file which is used by theImageDetectorBase
class to specify additional parameters needed to configure the detection model. An example isimage_detector_test_kwargs.yml
.detection_module
: name of the module containing theImageDetectorBase
extension to import.detection_class
: name of the extension of theImageDetectorBase
class to import.- also parameters defined in the dynamic reconfiguration file PlaneFitting.cfg.
Node for testing image detection models. Can test images from a directory, a sensor_msgs/Image
topic, or a
sensor_msgs/PointCloud2
topic.
Parameters:
class_annotations
,kwargs_file
,detection_module
, anddetection_class
: parameters forImageDetectorBase
class similar to ones described above forobject_detection_action_server
andplane_detection_action_server
.result_topic
:sensor_msgs/Image
topic which visualized detection results are published.image_directory
: if specified will ignore other image sources and read images from this directory for testing.cloud_topic
: if specified andimage_directory
is not specified will extract images fromsensor_msgs/PointCloud2
messages from this topic for testing.image_topic
: if specified and the other 2 image sources are not specified will test detection model onsensor_msgs/Image
messages from this topic.
Server which uses an instance of ImageClassifier
class (See
documentation) to classify images.
Parameters:
service_name
: name of recognition service to advertise (default:'~recognize_image'
).model_directory
: directory containing the trained classification model (default:''
)recognition_module
: module containing theImageClassifier
instance (default:'mas_perception_libs'
)recognition_class
: class name of theImageClassifier
instance (default:'ImageClassifierTest'
)
Script to test the image_recognition_server
.
usage: image_recognition_client_test [-h] --test-dir TEST_DIR --service-name
SERVICE_NAME [--num-samples NUM_SAMPLES]
[--preprocess-input-module PREPROCESS_INPUT_MODULE]
model_name
Tool to test model with test images using KerasImageClassifier class.Assuming
images to be of type jpg
positional arguments:
model_name Keras model to be tested
optional arguments:
-h, --help show this help message and exit
--test-dir TEST_DIR, -t TEST_DIR
directory with test images
--service-name SERVICE_NAME, -s SERVICE_NAME
name of recognition service
--num-samples NUM_SAMPLES, -n NUM_SAMPLES
number of samples to test, if left blank, take all
samples.
--preprocess-input-module PREPROCESS_INPUT_MODULE, -p PREPROCESS_INPUT_MODULE
module containing image preprocessing function.
Example execution:
image_recognition_client_test -s <service_name> -t <folder_with_test_images> <model_name>
Script for testing PlaneSegmenter
(see Python documentation), including handling of the
dynamic reconfiguration defined in PlaneFitting.cfg. Parameters:
cloud_topic
(string
): input point cloud topicprocessed_cloud_topic
(string
): topic on which the filtered cloud will be publishedtarget_frame
(string
): coordinate frame that the point cloud will be transformed to.extract_planes
(bool
): iffalse
will only do cloud filtering- parameters defined in PlaneFitting.cfg
C++ executable testing PlaneSegmenterROS
(see C++ documentation), including handling of the
dynamic reconfiguration defined in PlaneFitting.cfg. Parameters:
cloud_topic
(string
): input point cloud topicprocessed_cloud_topic
(string
): topic on which the filtered cloud will be publishedtarget_frame
(string
): coordinate frame that the point cloud will be transformed to.extract_planes
(bool
): iffalse
will only do cloud filtering- parameters defined in PlaneFitting.cfg
Launch the plane_detection_action_server
script. Arguments are the same with the script's parameters:
action_name
(default:"/mas_perception/detect_image"
)cloud_topic
(default:""
)target_frame
(default:"/base_link"
)class_annotations
(default:"$(find mas_perception_libs)/models/class_annotation_example.yml"
)kwargs_file
(default:"$(find mas_perception_libs)/models/image_detector_test_kwargs.yml"
)detection_module
(default:"mas_perception_libs"
)detection_class
(default:"ImageDetectorTest"
)plane_fitting_config_file
(default"$(find mas_perception_libs)/ros/config/plane_fitting_default_configs.yaml"
)
Launch the object_detection_action_server
script. Arguments are the same with the script's parameters:
action_name
(default:"/mas_perception/detect_image"
)cloud_topic
(default:""
)target_frame
(default:"/base_link"
)class_annotations
(default:"$(find mas_perception_libs)/models/class_annotation_example.yml"
)kwargs_file
(default:"$(find mas_perception_libs)/models/image_detector_test_kwargs.yml"
)detection_module
(default:"mas_perception_libs"
)detection_class
(default:"ImageDetectorTest"
)
Launch the image_detection_test
script. Arguments are the same with the script's parameters:
result_topic
(default:"/mas_perception/detection_result"
)image_directory
(default:""
)cloud_topic
(default:""
)image_topic
(default:""
)class_annotations
(default:"$(find mas_perception_libs)/models/class_annotation_example.yml"
)kwargs_file
(default:"$(find mas_perception_libs)/models/image_detector_test_kwargs.yml"
)detection_module
(default:"mas_perception_libs"
)detection_class
(default:"ImageDetectorTest"
)
Launch the image_recognition_server
. Arguments:
service_name
: name of recognition service to advertise (default:'~recognize_image'
).model_directory
: directory containing the trained classification model (default:$(find mas_perception_libs)/models
)recognition_module
: module containing theImageClassifier
instance (default:'mas_perception_libs'
)recognition_class
: class name of theImageClassifier
instance (default:'ImageClassifierTest'
)
Launch the cloud_processing_python_test
executable. Arguments are similar
to ones for the executable, with an additional plane_fitting_config_file
in which the default values for the dynamic
reconfiguration PlaneFitting.cfg. Default file is
plane_fitting_default_configs.yaml
.
Launch the cloud_processing_cpp_test
executable. Arguments are similar
to ones for the executable, with an additional plane_fitting_config_file
in which the default values for the dynamic
reconfiguration PlaneFitting.cfg. Default file is
plane_fitting_default_configs.yaml
.
.
├── CMakeLists.txt
├── common
│ ├── include
│ │ └── mas_perception_libs
│ │ ├── aliases.h
│ │ ├── bounding_box_2d.h
│ │ ├── bounding_box.h
│ │ ├── impl
│ │ │ └── pyboostcvconverter.hpp
│ │ ├── point_cloud_utils.h
│ │ ├── sac_plane_segmenter.h
│ │ └── use_numpy.h
│ └── src
│ ├── bounding_box_2d.cpp
│ ├── bounding_box.cpp
│ ├── init_numpy_api.cpp
│ ├── point_cloud_utils.cpp
│ ├── pyboost_cv3_converter.cpp
│ └── sac_plane_segmenter.cpp
├── docs
│ ├── cpp_library.md
│ ├── image_detection_class_structure.png
│ └── python_package.md
├── models
│ ├── class_annotation_example.yml
│ ├── image_detector_test_kwargs.yml
│ └── test_model.txt
├── package.xml
├── README.md
├── ros
│ ├── config
│ │ ├── PlaneFitting.cfg
│ │ └── plane_fitting_default_configs.yaml
│ ├── include
│ │ └── mas_perception_libs
│ │ ├── bounding_box_wrapper.h
│ │ ├── color.h
│ │ ├── image_bounding_box.h
│ │ ├── impl
│ │ │ └── ros_message_serialization.hpp
│ │ └── point_cloud_utils_ros.h
│ ├── launch
│ │ ├── cloud_processing_cpp_test.launch
│ │ ├── cloud_processing_python_test.launch
│ │ ├── image_detection.launch
│ │ ├── object_detection.launch
│ │ ├── image_detection_test.launch
│ │ └── image_recognition.launch
│ ├── scripts
│ │ ├── cloud_processing_python_test
│ │ ├── plane_detection_action_server
│ │ ├── object_detection_action_server
│ │ ├── image_detection_test
│ │ ├── image_recognition_client_test
│ │ └── image_recognition_server
│ └── src
│ ├── boost_python_module.cpp
│ ├── bounding_box_wrapper.cpp
│ ├── cloud_processing_test_node.cpp
│ ├── image_bounding_box.cpp
│ ├── mas_perception_libs
│ │ ├── bounding_box.py
│ │ ├── constants.py
│ │ ├── image_classifier.py
│ │ ├── image_detector.py
│ │ ├── image_recognition_service.py
│ │ ├── __init__.py
│ │ ├── object_detector.py
│ │ ├── ros_message_serialization.py
│ │ ├── scene_detection_action.py
│ │ ├── utils.py
│ │ └── visualization.py
│ └── point_cloud_utils_ros.cpp
└── setup.py