{"id":14959026,"url":"https://github.com/douglasrizzo/dodo_detector_ros","last_synced_at":"2026-02-21T00:04:35.949Z","repository":{"id":152474329,"uuid":"153167245","full_name":"douglasrizzo/dodo_detector_ros","owner":"douglasrizzo","description":"Object detection from images/point cloud using ROS","archived":false,"fork":false,"pushed_at":"2022-08-09T17:32:46.000Z","size":70,"stargazers_count":55,"open_issues_count":1,"forks_count":11,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-09-03T18:50:34.179Z","etag":null,"topics":["computer-vision","kinect","kinect-v2","object-detection","opencv3","ros","tensorflow","tensorflow-models"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/douglasrizzo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-15T19:05:43.000Z","updated_at":"2024-11-01T17:09:39.000Z","dependencies_parsed_at":null,"dependency_job_id":"3b286275-8a7c-4f42-90f6-4a659438be6b","html_url":"https://github.com/douglasrizzo/dodo_detector_ros","commit_stats":{"total_commits":84,"total_committers":3,"mean_commits":28.0,"dds":"0.16666666666666663","last_synced_commit":"7991af5be0eb010a0de6b51c5541ebc22eed7220"},"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/douglasrizzo/dodo_detector_ros","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fdodo_detector_ros","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fdodo_detector_ros/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fdodo_detector_ros/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fdodo_detector_ros/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/douglasrizzo","download_url":"https://codeload.github.com/douglasrizzo/dodo_detector_ros/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/douglasrizzo%2Fdodo_detector_ros/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29668646,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T23:24:07.480Z","status":"ssl_error","status_checked_at":"2026-02-20T23:24:06.202Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-vision","kinect","kinect-v2","object-detection","opencv3","ros","tensorflow","tensorflow-models"],"created_at":"2024-09-24T13:18:43.076Z","updated_at":"2026-02-21T00:04:35.934Z","avatar_url":"https://github.com/douglasrizzo.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Object detection from images/point cloud using ROS\n\nThis ROS package creates an interface with [dodo detector](https://github.com/douglasrizzo/dodo_detector), a Python package that detects objects from images.\n\nThis package makes information regarding detected objects available in a topic, using a special kind of message.\n\nWhen using an OpenNI-compatible sensor (like Kinect) the package uses point cloud information to locate objects in the world, wrt. to the sensor.\n\nClick the image below for a YouTube video showcasing the package at work.\n\n[![Youtube video](https://img.youtube.com/vi/fXJYmJOaSxQ/0.jpg)](https://www.youtube.com/watch?v=fXJYmJOaSxQ)\n\n\u003c!-- TOC --\u003e\n\n- [Installation](#installation)\n- [Usage](#usage)\n    - [TensorFlow-based detectors](#tensorflow-based-detectors)\n        - [TensorFlow 1 (for Python 2.7 and ROS Melodic Morenia downwards)](#tensorflow-1-for-python-27-and-ros-melodic-morenia-downwards)\n        - [TensorFlow 2 (for Python 3 and ROS Noetic Ninjemys upwards)](#tensorflow-2-for-python-3-and-ros-noetic-ninjemys-upwards)\n    - [OpenCV keypoint-based detectors](#opencv-keypoint-based-detectors)\n    - [Start the package](#start-the-package)\n        - [launch file examples](#launch-file-examples)\n\n\u003c!-- /TOC --\u003e\n\n## Installation\n\nThis repo is a ROS package, so it should be put alongside your other ROS packages inside the `src` directory of your catkin workspace.\n\nThe package depends mainly on a Python package, also created by me, called [dodo detector](https://github.com/douglasrizzo/dodo_detector). Check the README file over there for a list of dependencies unrelated to ROS, but related to object detection in Python.\n\nOther ROS-related dependencies are listed on `package.xml`. If you want to use the provided `launch` files, you are going to need `uvc_camera` to start a webcam, `freenect` to access a Kinect for Xbox 360 or [libfreenect2](https://github.com/OpenKinect/libfreenect2) and [iai_kinect2](https://github.com/code-iai/iai_kinect2) to start a Kinect for Xbox One.\n\nIf you use other kinds of sensor, make sure they provide an image topic and an optional point cloud topic, which will be needed later.\n\n## Usage\n\nTo use the package, first open the configuration file provided in `config/main_config.yaml`. These two global parameters must be configured for all types of detectors:\n\n- `global_frame`: the frame or tf that all object tfs will be published in relation to, eg `map`. Leave blank to publish wrt. `camera_link`.\n- `tf_prefix`: a prefix for the object tfs which will be published by the package.\n\nThen, select which type of detector the package will use by setting the `detector_type` parameter. Acceptable values are `sift`, `rootsift`, `tf1` or `tf2`.\n\n### TensorFlow-based detectors\n\n`tf1` and `tf2` detectors use the [TensorFlow Object Detection API](https://github.com/tensorflow/models/blob/master/research/object_detection/).\n\n#### TensorFlow 1 (for Python 2.7 and ROS Melodic Morenia downwards)\n\n`tf1` uses [version 1](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1.md) of the API, which works with TensorFlow 1.13 up until 1.15. It expects a label map and an inference graph. You can find these files [here](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf1_detection_zoo.md) or provide your own. After you have these files, configure the following parameters in `config/main_config.yaml`:\n\n- `inference_graph`: path to the frozen inference graph (the `.pb` file).\n- `label_map`: path to the label map, (the `.pbtxt` file).\n- `tf_confidence`: confidence level to report objects as detected by the neural network, between 0 and 1.\n\n#### TensorFlow 2 (for Python 3 and ROS Noetic Ninjemys upwards)\n\n`tf2` uses [version 2](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2.md) of the API, which works with TensorFlow 2. It expects a label map and a directory with the exported model. You can find these files [here](https://github.com/tensorflow/models/blob/master/research/object_detection/g3doc/tf2_detection_zoo.md) or provide your own. After you have these files, configure the following parameters in `config/main_config.yaml`:\n\n- `saved_model`: path to the directory with the saved model (usually exported with the name _saved_model_ by the API).\n- `label_map`: path to the label map, (the `.pbtxt` file).\n- `tf_confidence`: confidence level to report objects as detected by the neural network, between 0 and 1.\n\nTake a look [here](https://douglasrizzo.com.br/dodo_detector/#convolutional-neural-network-detector-4) to understand how these parameters are used by the backend.\n\n### OpenCV keypoint-based detectors\n\nIf `sift` or `rootsift` are chosen, a keypoint object detector will be used. The following parameters must be set in `config/main_config.yaml`:\n\n- `sift_min_pts`: minimum number of points to consider an object as present in the scene.\n- `sift_database_path`: path to the database used by the keypoint object detector. Take a look [here](https://douglasrizzo.com.br/dodo_detector/#keypoint-based-detector) to understand how to set up the database directory.\n\n### Start the package\n\nAfter all this configuration, you are ready to start the package. Either create your own `.launch` file or use one of the files provided in the `launch` directory of the repo.\n\nIn your launch file, load the `config/main_config.yaml` file you just configured in the previous step and provide an `image_topic` parameter to the `detector.py` node of the `dodo_detector_ros` package. This is the image topic that the package will use as input to detect objects.\n\nYou can also provide a `point_cloud_topic` parameter, which the package will use to position the objects detected in the `image_topic` in 3D space by publishing a TF for each detected object.\n\n#### launch file examples\n\nThe example below initializes a webcam feed using the *uvc_camera* package and detects objects from the `image_raw` topic:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003claunch\u003e\n    \u003cnode name=\"camera\" output=\"screen\" pkg=\"uvc_camera\" type=\"uvc_camera_node\"/\u003e\n    \n    \u003cnode name=\"dodo_detector_ros\" pkg=\"dodo_detector_ros\" type=\"detector.py\" output=\"screen\"\u003e\n        \u003crosparam command=\"load\" file=\"$(find dodo_detector_ros)/config/main_config.yaml\"/\u003e\n        \u003cparam name=\"image_topic\" value=\"/image_raw\" /\u003e\n    \u003c/node\u003e\n\u003c/launch\u003e\n```\n\nThe example below initializes a Kinect using the *freenect* package and subscribes to `camera/rgb/image_color` for images and `/camera/depth/points` for the point cloud:\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003claunch\u003e\n    \u003cinclude file=\"$(find freenect_launch)/launch/freenect.launch\"/\u003e\n    \n    \u003cnode name=\"dodo_detector_ros\" pkg=\"dodo_detector_ros\" type=\"detector.py\" output=\"screen\"\u003e\n        \u003crosparam command=\"load\" file=\"$(find dodo_detector_ros)/config/main_config.yaml\"/\u003e\n        \u003cparam name=\"image_topic\" value=\"/camera/rgb/image_color\" /\u003e\n        \u003cparam name=\"point_cloud_topic\" value=\"/camera/depth/points\" /\u003e\n    \u003c/node\u003e\n\u003c/launch\u003e\n```\n\nThis example initializes a Kinect for Xbox One, using [libfreenect2](https://github.com/OpenKinect/libfreenect2) and [iai_kinect2](https://github.com/code-iai/iai_kinect2) to connect to the device and subscribes to `/kinect2/hd/image_color` for images and `/kinect2/hd/points` for the point cloud. You can copy the launch file and use the `sd` and `qhd` topics instead of `hd` if you need more performance.\n\n```xml\n\u003c?xml version=\"1.0\"?\u003e\n\u003claunch\u003e    \n    \u003cinclude file=\"$(find kinect2_bridge)/launch/kinect2_bridge.launch\"\u003e\n        \u003cparam name=\"_depth_method\" value=\"cpu\" type=\"str\"/\u003e\n    \u003c/include\u003e\n    \n    \u003cnode name=\"dodo_detector_ros\" pkg=\"dodo_detector_ros\" type=\"detector.py\" output=\"screen\"\u003e\n        \u003crosparam command=\"load\" file=\"$(find dodo_detector_ros)/config/main_config.yaml\"/\u003e\n        \u003cparam name=\"image_topic\" value=\"/kinect2/hd/image_color\" /\u003e\n        \u003cparam name=\"point_cloud_topic\" value=\"/kinect2/hd/points\" /\u003e\n    \u003c/node\u003e\n\u003c/launch\u003e\n```\n\nThese three launch files are provided inside the `launch` directory.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasrizzo%2Fdodo_detector_ros","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdouglasrizzo%2Fdodo_detector_ros","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdouglasrizzo%2Fdodo_detector_ros/lists"}