# turtlebot3_obstacle_detection *This file is ai generated. Do not edit this file directly. Instead, edit the node source code and run the generate-node-docs command to update this file.* ## Description An obstacle detection node that automatically stops the TurtleBot3 when obstacles are detected in front of it. The node monitors laser scan data and prevents the robot from colliding with obstacles within a specified distance threshold. It allows teleoperation commands to pass through unless an obstacle is detected. ## Publishers - `cmd_vel` ([geometry_msgs/Twist](http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html)) - Final velocity commands after applying obstacle avoidance logic ## Subscribers - `scan` ([sensor_msgs/LaserScan](http://docs.ros.org/api/sensor_msgs/html/msg/LaserScan.html)) - Laser scan data for obstacle detection - Uses sensor data QoS profile - `cmd_vel_raw` ([geometry_msgs/Twist](http://docs.ros.org/api/geometry_msgs/html/msg/Twist.html)) - Raw velocity commands from teleoperation or other controllers - Uses sensor data QoS profile ## Parameters The node uses hardcoded parameters (can be modified in source): - Stop distance: 0.5 meters - Stop angle range: -90° to 90° (front hemisphere) - Default linear velocity: 0.2 m/s - Timer period: 0.1 seconds (10 Hz) ## Example Usage Launch the obstacle detection node: ```bash ros2 run turtlebot3_example turtlebot3_obstacle_detection ``` Use with keyboard teleoperation: ```bash # Terminal 1: Start obstacle detection ros2 run turtlebot3_example turtlebot3_obstacle_detection # Terminal 2: Send raw velocity commands ros2 topic pub /cmd_vel_raw geometry_msgs/msg/Twist "{linear: {x: 0.2}}" ``` ## Behavior - The node monitors a 180° arc in front of the robot (±90° from forward) - When an obstacle is detected within 0.5 meters: - Linear velocity is set to 0.0 (stops forward motion) - Angular velocity is preserved (allows turning in place) - A warning message is logged (throttled to once per 2 seconds) - When no obstacle is detected: - The raw velocity commands are passed through unchanged - The node publishes filtered commands at 10 Hz ## Notes - Requires a working laser scanner (e.g., LDS-01, LDS-02) - The stop distance and detection angle can be modified in the source code - Compatible with any teleoperation or navigation node that publishes to `/cmd_vel_raw`