📖 Scenario: You are setting up a robot navigation system using ROS. To help the robot understand its environment, you need to configure the costmap layers: static, obstacle, and inflation. This setup helps the robot avoid walls and obstacles safely.
🎯 Goal: Create a ROS costmap configuration file with three layers: static, obstacle, and inflation. Each layer should have specific parameters set to control how the robot perceives the environment and plans its path.
📋 What You'll Learn
Create a YAML dictionary named costmap_common_params with global costmap settings.
Add a dictionary named static_layer with parameters for the static map layer.
Add a dictionary named obstacle_layer with parameters for the obstacle detection layer.
Add a dictionary named inflation_layer with parameters for the inflation layer.
💡 Why This Matters
🌍 Real World
Robots use costmaps to know where obstacles and walls are, so they can move safely without bumping into things.
💼 Career
Robotics engineers and developers configure costmaps to customize robot navigation behavior for different environments.
Progress0 / 4 steps
1
Create the base costmap_common_params dictionary
Create a dictionary called costmap_common_params with these exact entries: robot_base_frame: "base_link", update_frequency: 5.0, and publish_frequency: 2.0.
ROS
Hint
Use a Python dictionary with keys exactly as robot_base_frame, update_frequency, and publish_frequency.
2
Add the static_layer dictionary
Add a dictionary called static_layer with these exact entries: enabled: true and map_topic: "/map".
ROS
Hint
Remember to use Python boolean True (capital T) for enabled.
3
Add the obstacle_layer dictionary
Add a dictionary called obstacle_layer with these exact entries: enabled: true, observation_sources: "laser_scan_sensor", and sensor_frame: "laser_frame".
ROS
Hint
Use exact key names and string values as shown.
4
Add the inflation_layer dictionary
Add a dictionary called inflation_layer with these exact entries: enabled: true, inflation_radius: 0.55, and cost_scaling_factor: 10.0.
ROS
Hint
Use floating point numbers exactly as shown for inflation_radius and cost_scaling_factor.
Practice
(1/5)
1. Which costmap layer in ROS is responsible for marking fixed obstacles from a pre-existing map?
easy
A. Obstacle layer
B. Inflation layer
C. Static layer
D. Sensor layer
Solution
Step 1: Understand the role of the static layer
The static layer uses a pre-built map to mark fixed obstacles that do not change over time.
Step 2: Compare with other layers
The obstacle layer updates obstacles dynamically from sensors, and the inflation layer adds safety buffers, so they do not mark fixed obstacles directly.
Final Answer:
Static layer -> Option C
Quick Check:
Fixed obstacles = Static layer [OK]
Hint: Static layer = fixed map obstacles [OK]
Common Mistakes:
Confusing obstacle layer with static layer
Thinking inflation layer marks obstacles
Assuming sensor data is static
2. Which of the following YAML snippets correctly enables the inflation layer in a ROS costmap configuration?
easy
A. inflation:
enable: true
radius: 0.5
B. inflation_layer:
active: yes
radius: 1.0
C. inflation_layer:
enabled: false
inflation_radius: 0.5
D. inflation_layer:
enabled: true
inflation_radius: 0.5
Solution
Step 1: Check correct keys for inflation layer
The correct keys are 'inflation_layer' with 'enabled' and 'inflation_radius' as parameters.
Step 2: Validate values and syntax
inflation_layer:
enabled: true
inflation_radius: 0.5 uses 'enabled: true' and 'inflation_radius: 0.5', which is correct YAML syntax and valid keys.
Final Answer:
inflation_layer:
enabled: true
inflation_radius: 0.5 -> Option D
A. inflation_radius must be an integer, not a float
B. Negative cost_scaling_factor is invalid and causes inflation errors
C. Missing 'enabled: true' disables inflation layer
D. cost_scaling_factor should be zero to disable inflation
Solution
Step 1: Check cost_scaling_factor value
The cost_scaling_factor controls how quickly costs drop off from obstacles. It must be positive; negative values are invalid.
Step 2: Understand impact of negative value
A negative cost_scaling_factor causes errors or unexpected inflation behavior in the costmap.
Final Answer:
Negative cost_scaling_factor is invalid and causes inflation errors -> Option B
Quick Check:
cost_scaling_factor < 0 = error [OK]
Hint: cost_scaling_factor must be positive [OK]
Common Mistakes:
Thinking inflation_radius must be integer
Assuming missing enabled disables inflation
Believing zero cost_scaling_factor disables inflation
5. You want to configure a ROS costmap that uses a static map, detects obstacles with a laser scanner, and inflates obstacles with a radius of 0.8 meters. Which of the following combined configurations is correct?