Intermediate AI Prompts for Chapter 3
Use these prompts with AI assistants to get help implementing perception nodes, configuring SLAM, managing TF2, and deploying Nav2.
Camera & Depth Processing
Basic Camera Subscriber
Write a ROS 2 Python node that subscribes to /camera/image_raw
and displays the image using OpenCV. Include proper error handling.
cv_bridge Conversion
Show me how to convert a ROS Image message to OpenCV format using cv_bridge.
Handle different image encodings (bgr8, rgb8, mono8).
Edge Detection Pipeline
Create a perception node that subscribes to camera images,
applies Canny edge detection, and publishes the result.
Include visualization code.
Depth Data Extraction
Write code to extract distance measurements from a depth image
at specific pixel coordinates. Handle invalid depth values.
Region of Interest Processing
How do I process only a specific region of interest (ROI) in a camera image?
Show me code to extract and process a rectangular region.
Image Encoding Issues
I'm getting "cv_bridge encoding error" when converting images.
What encodings are available? How do I handle different formats?
Publishing Processed Images
Show me the complete pattern for subscribing to an image,
processing it with OpenCV, and publishing the result as a new ROS Image message.
TF2 Coordinate Frames
Broadcasting Static Transform
Write code to broadcast a static transform from base_link to camera_link.
The camera is 0.1m forward and 0.2m up from base_link.
Dynamic Transform Broadcasting
Create a node that broadcasts a dynamic transform that changes over time.
Show me how to update the transform in a timer callback.
Looking Up Transforms
How do I look up the transform between two frames (e.g., map to base_link)?
Include error handling for when the transform doesn't exist.
Transform Point Between Frames
I have a point in camera_frame coordinates. Show me how to transform it
to base_link frame using TF2.
TF2 Listener Setup
What's the proper way to set up a TF2 listener in a ROS 2 node?
Show me the initialization and lookup pattern.
Debugging TF Issues
My TF lookup fails with "frame does not exist". How do I debug this?
What commands can I use to visualize the TF tree?
Time Synchronization
How do I handle time synchronization when looking up transforms?
What's the difference between lookup_transform with time=now vs time=0?
SLAM Toolbox
Basic SLAM Launch
Show me a launch file to start SLAM Toolbox with default parameters.
Include the necessary nodes and parameter files.
SLAM Parameter Tuning
What SLAM Toolbox parameters should I tune for a large indoor environment?
Explain resolution, scan_buffer_size, and loop_closure parameters.
Saving Maps
How do I save a map generated by SLAM Toolbox?
Show me the command and explain the output files.
Loading Existing Maps
I have a saved map. How do I load it for localization-only mode?
What parameters need to change?
SLAM Not Updating
My SLAM map isn't updating as the robot moves. What could be wrong?
What topics should I check? What parameters affect update rate?
Loop Closure Configuration
How do I enable and tune loop closure in SLAM Toolbox?
What parameters control loop closure detection and correction?
SLAM Performance Optimization
My SLAM is running slowly. How can I optimize performance?
What parameters affect computational cost?
Nav2 Navigation
Basic Nav2 Launch
Create a launch file that starts Nav2 with a pre-built map.
Include all necessary nodes and configuration files.
Sending Navigation Goals
Write a Python node that sends a navigation goal to Nav2.
Include code to monitor status and handle completion/failure.
Goal Pose Construction
Show me how to construct a PoseStamped message for a navigation goal.
Include position (x, y) and orientation (quaternion).
Navigation Action Client
Implement a complete NavigateToPose action client with:
- Goal sending
- Feedback monitoring
- Result handling
- Cancellation support
Multiple Waypoints
How do I send the robot to multiple waypoints in sequence?
Show me code to navigate through a list of poses.
Navigation Status Monitoring
How do I check if navigation is in progress, succeeded, or failed?
Show me how to parse action status messages.
Canceling Navigation
How do I cancel an in-progress navigation goal?
Show me the action client cancellation pattern.
Costmap Visualization
Visualizing Costmaps in RViz2
What RViz2 displays do I need to visualize global and local costmaps?
Show me the configuration for costmap visualization.
Understanding Costmap Colors
What do the different colors in the costmap represent?
Explain the cost values and their meanings.
Costmap Not Showing
I launched Nav2 but don't see costmaps in RViz2. What should I check?
What topics should be publishing?
Integration & Architecture
Perception to Navigation Pipeline
Design a system architecture that connects:
1. Camera perception node
2. Obstacle detection
3. Nav2 navigation
Show me the topic flow and node structure.
Multi-Sensor Fusion
How do I integrate multiple sensors (camera + LIDAR) for navigation?
What's the architecture for sensor fusion with Nav2?
Perception Node Structure
What's the best structure for a perception node that:
- Subscribes to multiple sensor topics
- Processes data
- Publishes results
Show me a template.
Debugging & Troubleshooting
No Camera Images
I'm not receiving camera images in my subscriber. How do I debug?
What commands check if images are being published?
Depth Data All Zeros
My depth image subscriber gets all zero values. What could be wrong?
How do I verify depth camera is working in Gazebo?
TF Frame Not Found
I get "frame 'X' does not exist in the tf tree" error.
How do I diagnose and fix TF frame issues?
SLAM Map Quality Poor
My SLAM map is noisy and inaccurate. What parameters should I tune?
How do I improve map quality?
Robot Won't Navigate
Nav2 is running but robot doesn't move toward goal. What should I check?
Walk me through systematic debugging steps.
Costmap Shows No Obstacles
My costmap doesn't show obstacles detected by sensors.
What configuration could be wrong?
Navigation Oscillates
My robot oscillates back and forth instead of moving smoothly.
What local planner parameters should I adjust?
Performance Optimization
Perception Node Performance
My perception node is slow and dropping frames. How do I optimize?
What are common performance bottlenecks?
SLAM Computational Cost
SLAM is using too much CPU. What parameters reduce computational cost
without sacrificing too much accuracy?
Real-Time Constraints
How do I ensure my perception pipeline meets real-time constraints?
What techniques help maintain consistent frame rates?
Code Patterns
Perception Node Template
Give me a complete template for a perception node with:
- Multiple subscribers (camera, depth)
- Image processing
- Multiple publishers
- Proper error handling
- Logging
TF2 Broadcaster Template
Provide a template for a node that broadcasts transforms with:
- Static transforms in __init__
- Dynamic transforms in timer callback
- Proper timestamp handling
Nav2 Goal Sender Template
Give me a reusable template for sending navigation goals with:
- Action client setup
- Goal construction
- Feedback callback
- Result handling
- Error recovery
Configuration Files
SLAM Parameters Explained
Explain each parameter in the SLAM Toolbox configuration file.
What does each one control? What are good starting values?
Nav2 Parameters Overview
What are the most important Nav2 parameters to understand?
Explain global_costmap, local_costmap, and planner parameters.
Launch File Best Practices
What are best practices for writing Nav2 launch files?
How should I organize parameters and node configurations?
Testing & Validation
Testing Perception Nodes
How do I test my perception node without a full robot setup?
Can I use rosbag files or test images?
Validating SLAM Output
How do I validate that my SLAM map is accurate?
What metrics or checks should I use?
Navigation Testing
What's a good testing strategy for Nav2 navigation?
How do I test in simulation before real deployment?
Tips for Using These Prompts
- Add Context: Mention which lesson you're on and what you've tried
- Share Error Messages: Include full error output for debugging help
- Request Explanations: Ask "why" not just "how"
- Iterate: Start simple, then ask for more advanced versions
- Code Review: Ask AI to review your code for improvements
Next: Advanced AI Prompts (after completing Intermediate tier)