diff --git a/README.md b/README.md index c93e630c..89f000ac 100644 --- a/README.md +++ b/README.md @@ -14,9 +14,21 @@ Packages that infer and react to the presence of obstacles from sensor inputs. A ROS 2 node that subscribes to `LaserScan` messages and publishes obstacles to `/rmf_obstacles`. -The node is implemented as an`rclcpp::lifecycle_node` node where upon activation, it calibrates the surroundings based on the range values in the initial few `LaserScan` messages. +The node is implemented as an `rclcpp::lifecycle_node` node where upon activation, it calibrates the surroundings based on the range values in the initial few `LaserScan` messages. This essentially becomes the "obstacle-free" configuration. -Subsequently, any changes to the surroundings is detected as an obstacle. +Subsequently, any changes to the surroundings are detected as an obstacle. + +Since this node is implemented as a `rclcpp::lifecycle_node`, before running, it is important to configure and activate the respective node as follows: +``` +#to configure the node +ros2 lifecycle set /laserscan_obstacle_detector configure +``` + +``` +#to activate the node +ros2 lifecycle set /laserscan_obstacle_detector activate +``` +you can read more about `rclcpp::lifecycle_node` here: [ROS2 Lifecycle Node](https://design.ros2.org/articles/node_lifecycle.html) To run ``` @@ -28,7 +40,7 @@ The node accepts the following parameters | Parameter Name | Description | Default Value | | --- | --- | --- | | `scan_topic_name` | The topic over which `LaserScan` messages are published. It is strongly recommended to [filter the scan](http://wiki.ros.org/laser_filters) to remove out-of-range rays before passing it to this node. | `/lidar/scan` | -| `range_threshold` | For each ray, if the difference in range measurement between the latest `LaserScan` and the calibrated one is grater than this value, a new obstacle is assumed. | `1.0` meter | +| `range_threshold` | For each ray, if the difference in range measurement between the latest `LaserScan` and the calibrated one is greater than this value, a new obstacle is assumed. | `1.0` meter | | `min_obstacle_size` | The minimum perceived size of an object for it to be considered an obstacle. | `0.75` meter | | `level_name` | The level(floor) name on which the scanner exists. | `L1` | | `calibration_sample_count` | The number of initial `LaserScan` messages to use for calibrating the "obstacle-free" configuration. | `10` | @@ -47,7 +59,7 @@ To launch as a standalone node, ros2 launch rmf_human_detector_oakd human_detection.launch.xml blob_path:= ``` -THe node has several configurable parameters documented in the [launch file](rmf_human_detector_oakd/launch/human_detector.launch.xml). +The node has several configurable parameters documented in the [launch file](rmf_human_detector_oakd/launch/human_detector.launch.xml). The most important of which is `blob_path` as it holds the absolute path to the NN model for inference. See `depthai` documentation for more information on how the various pre-trained models can be obtained. It is recommended to use the [blobconverter](https://github.com/luxonis/blobconverter/) tool to obtain the `mobilenet-ssd_openvino_2021.4_6shave.blob` blob for inference. @@ -59,7 +71,7 @@ For more information on setup and troubleshooting see [here](rmf_human_detector_ ## rmf_human_detector ![](../media/rmf_human_detector.gif) -A ROS 2 node that subscribes to `sensor_msgs::Image` messages published by a monocular camera and runs `Yolo-V4` to detect the presence of humans. The relative pose of the humans with respect to the camera frame is estimated based on heuristics that can be configured through ROS 2 params. +A ROS 2 node that subscribes to `sensor_msgs::Image` messages published by a monocular camera and runs `Yolo-V4` to detect the presence of humans. The relative pose of the humans with respect to the camera frame is estimated based on heuristics that can be configured through ROS 2 parameters. The use case for this node would be to detect crowds from existing CCTV cameras or vision sensors in the facility. @@ -72,8 +84,8 @@ ros2 launch rmf_human_detector human_detector_launch.py ## rmf_obstacle_ros2 The `rmf_obstacle_ros2` package contains ROS 2 nodes that react to the presence of obstacles. -At present the `lane_blocker_node` is available which subscribes to `/rmf_obstacles`, checks whether -any of the obstacles intersects with any of the lanes across fleet navigation graphs. +At present the `lane_blocker_node` is available which subscribes to `/rmf_obstacles`, and checks whether +any of the obstacles intersect with any of the lanes across fleet navigation graphs. If a new intersection is determined, the lanes for the corresponding fleets are closed. Previously closed lanes are also opened once the obstacles no longer intersect with the lanes.