|
| 1 | +# Branching Visualization Guide for Information Gathering Operators |
| 2 | + |
| 3 | +## Overview |
| 4 | + |
| 5 | +This guide describes the enhanced branching visualization system for mock robot environments that includes information gathering operators. Information gathering operators create decision trees in belief-space planning, where the robot must handle different observation outcomes with appropriate action sequences. |
| 6 | + |
| 7 | +## Key Features |
| 8 | + |
| 9 | +### 🌳 **Branching Path Visualization** |
| 10 | +- **Tree Structure**: Shows all information gathering alternatives as a branching tree |
| 11 | +- **Decision Points**: Clearly marks where information gathering creates different paths |
| 12 | +- **Complete Coverage**: Enumerates all 2^n possible paths for n information gathering points |
| 13 | + |
| 14 | +### 🎯 **Shortest Path Highlighting** |
| 15 | +- **Bold Edges**: Optimal path edges are highlighted with thicker, solid lines |
| 16 | +- **Visual Distinction**: Non-optimal branches use dashed lines with different colors |
| 17 | +- **Interactive Toggle**: Users can show/hide shortest path and alternative branches |
| 18 | + |
| 19 | +### 📐 **Horizontal Layout** |
| 20 | +- **Left-to-Right Flow**: Horizontal tree layout optimized for branching structures |
| 21 | +- **Better Readability**: Easier to follow decision trees and sequential operations |
| 22 | +- **Tree Navigation**: Natural flow from initial state through decision points to goal |
| 23 | + |
| 24 | +### 📊 **Multi-Format Output** |
| 25 | +- **Interactive HTML**: `{task_name}_branching.html` - Interactive tree/graph with controls |
| 26 | +- **Structured YAML**: `{task_name}_branching_plan.yaml` - Machine-readable path data |
| 27 | +- **Console Output**: Immediate visibility of all complete paths |
| 28 | +- **Size Optimization**: Focused graphs are 90%+ smaller than full state spaces |
| 29 | + |
| 30 | +## Information Gathering Detection |
| 31 | + |
| 32 | +The system automatically detects information gathering operators by: |
| 33 | + |
| 34 | +1. **Naming Patterns**: `Inspect*`, `Observe*`, `Check*`, `Scan*`, `Monitor*` |
| 35 | +2. **Effect Analysis**: Operators that update belief predicates (`Unknown_X` → `Known_X`) |
| 36 | +3. **Precondition Matching**: Multiple operators with same preconditions, different outcomes |
| 37 | + |
| 38 | +## Generated Outputs |
| 39 | + |
| 40 | +### 1. Interactive Branching Visualization |
| 41 | + |
| 42 | +**File**: `{task_name}_branching.html` |
| 43 | +**Features**: |
| 44 | +- Horizontal tree layout (Left-to-Right) |
| 45 | +- Bold shortest path highlighting |
| 46 | +- Interactive controls: |
| 47 | + - Toggle shortest path visibility |
| 48 | + - Toggle alternative branches |
| 49 | + - Animate layout changes |
| 50 | + - Reset layout |
| 51 | +- Color coding: |
| 52 | + - **Blue bold**: Shortest path edges |
| 53 | + - **Red bold**: Shortest path belief updates |
| 54 | + - **Light blue dashed**: Alternative branches |
| 55 | + - **Pink dashed**: Alternative belief updates |
| 56 | + |
| 57 | +**Keyboard Shortcuts**: |
| 58 | +- `h`: Show help |
| 59 | +- `s`: Toggle shortest path |
| 60 | +- `e`: Toggle all edges |
| 61 | +- `a`: Toggle animation |
| 62 | +- `r`: Reset layout |
| 63 | +- `Esc`: Close info panel |
| 64 | + |
| 65 | +### 2. Structured Path Data |
| 66 | + |
| 67 | +**File**: `{task_name}_branching_plan.yaml` |
| 68 | +**Contents**: |
| 69 | +```yaml |
| 70 | +all_complete_paths: |
| 71 | + - path_id: 1 |
| 72 | + description: "Optimal Path (All surfaces clean)" |
| 73 | + operators: [list of operators] |
| 74 | + decisions: [key decision points] |
| 75 | + branch_outcomes: [inspection results] |
| 76 | + - path_id: 2 |
| 77 | + description: "Hybrid Path (First dirty, second clean)" |
| 78 | + # ... additional paths |
| 79 | +``` |
| 80 | + |
| 81 | +### 3. Console Output |
| 82 | + |
| 83 | +Immediately prints all complete paths with: |
| 84 | +- Path descriptions |
| 85 | +- Operator sequences |
| 86 | +- Key decision points |
| 87 | +- Branch outcomes |
| 88 | + |
| 89 | +## Example: Table Cleaning Task |
| 90 | + |
| 91 | +For a table cleaning task with 2 information gathering points: |
| 92 | + |
| 93 | +### Information Gathering Operators |
| 94 | +- `InspectSurfaceClean(robot, table_surface1)` vs `InspectSurfaceDirty(robot, table_surface1)` |
| 95 | +- `InspectSurfaceClean(robot, table_surface2)` vs `InspectSurfaceDirty(robot, table_surface2)` |
| 96 | + |
| 97 | +### Generated Paths (2² = 4 paths) |
| 98 | + |
| 99 | +1. **Path 1**: Both surfaces clean (optimal - 10 operators) |
| 100 | +2. **Path 2**: Surface 1 dirty, Surface 2 clean (hybrid) |
| 101 | +3. **Path 3**: Surface 1 clean, Surface 2 dirty (hybrid) |
| 102 | +4. **Path 4**: Both surfaces dirty (worst case - requires cleaning) |
| 103 | + |
| 104 | +### Visualization Features |
| 105 | +- **Horizontal flow**: Initial → Bowl1 removal → Inspect1 → branches → Goal |
| 106 | +- **Bold optimal path**: Clear visual hierarchy |
| 107 | +- **94% size reduction**: From 718KB to 44KB (focused graph) |
| 108 | + |
| 109 | +## Usage |
| 110 | + |
| 111 | +### Basic Usage |
| 112 | +```python |
| 113 | +# Standard planning and visualization |
| 114 | +creator.plan_and_visualize(initial_atoms, goal_atoms_or, objects, task_name) |
| 115 | + |
| 116 | +# Enhanced branching visualization |
| 117 | +creator.plan_and_visualize_with_branches(initial_atoms, goal_atoms_or, objects, task_name) |
| 118 | +``` |
| 119 | + |
| 120 | +### Integration with BKLVA |
| 121 | +- Compatible with belief-space planning approach |
| 122 | +- Works with VLM perception systems |
| 123 | +- Supports execution monitoring and replanning |
| 124 | +- All branches pre-verified to reach goal |
| 125 | + |
| 126 | +## Technical Implementation |
| 127 | + |
| 128 | +### Core Components |
| 129 | + |
| 130 | +1. **Information Gathering Detection** |
| 131 | +```python |
| 132 | +def _is_information_gathering_operator(self, operator) -> bool: |
| 133 | + # Detects by naming patterns and belief effects |
| 134 | +``` |
| 135 | + |
| 136 | +2. **Path Generation** |
| 137 | +```python |
| 138 | +def _find_branching_paths(self, ...) -> List[Dict]: |
| 139 | + # Complete enumeration of 2^n paths for n branch points |
| 140 | +``` |
| 141 | + |
| 142 | +3. **Visualization Filtering** |
| 143 | +```python |
| 144 | +# Only shows nodes and edges part of branching paths |
| 145 | +if (source_id, dest_id) in branching_path_edges: |
| 146 | + # Include in focused visualization |
| 147 | +``` |
| 148 | + |
| 149 | +### Enhanced Edge Styling |
| 150 | +```python |
| 151 | +edge_data.append({ |
| 152 | + 'is_shortest_path': is_shortest_path, # Bold highlighting |
| 153 | + 'is_info_gathering': is_info_gathering, # Special marking |
| 154 | + 'affects_belief': affects_belief # Color coding |
| 155 | +}) |
| 156 | +``` |
| 157 | + |
| 158 | +### Horizontal Layout Configuration |
| 159 | +```javascript |
| 160 | +layout: { |
| 161 | + name: 'breadthfirst', |
| 162 | + rankDir: 'LR', // Left to Right layout (horizontal) |
| 163 | + nodeSep: 100, |
| 164 | + rankSep: 150, |
| 165 | + roots: '[?is_initial]' // Start from initial state |
| 166 | +} |
| 167 | +``` |
| 168 | + |
| 169 | +## Benefits |
| 170 | + |
| 171 | +### For Developers |
| 172 | +- **Quick Debugging**: See all execution scenarios at once |
| 173 | +- **Plan Verification**: Ensure all branches reach goal |
| 174 | +- **Performance Analysis**: Compare path lengths and complexity |
| 175 | + |
| 176 | +### For Research |
| 177 | +- **Belief-Space Planning**: Visualize information gathering strategies |
| 178 | +- **Execution Monitoring**: Understand replanning triggers |
| 179 | +- **Algorithm Comparison**: Evaluate different planning approaches |
| 180 | + |
| 181 | +### For Demonstration |
| 182 | +- **Clear Presentation**: Horizontal layout shows sequential nature |
| 183 | +- **Interactive Exploration**: Stakeholders can toggle different views |
| 184 | +- **Complete Coverage**: Shows robot handles all observation outcomes |
| 185 | + |
| 186 | +## Best Practices |
| 187 | + |
| 188 | +### Environment Design |
| 189 | +1. **Clear Naming**: Use `Inspect*` for information gathering operators |
| 190 | +2. **Belief Predicates**: Structure with `Unknown_*`, `Believe*` patterns |
| 191 | +3. **Alternative Outcomes**: Ensure information gathering has meaningful branches |
| 192 | + |
| 193 | +### Visualization Usage |
| 194 | +1. **Start with Focused**: Use `_branching.html` for decision tree analysis |
| 195 | +2. **Interactive Exploration**: Use controls to focus on relevant paths |
| 196 | +3. **Documentation**: Save YAML for quantitative analysis |
| 197 | + |
| 198 | +### Performance Optimization |
| 199 | +1. **Focused Graphs**: Only include branching-relevant nodes (90%+ size reduction) |
| 200 | +2. **Horizontal Layout**: Better for sequential decision processes |
| 201 | +3. **Lazy Loading**: Generate visualizations on demand |
| 202 | + |
| 203 | +## Troubleshooting |
| 204 | + |
| 205 | +### Common Issues |
| 206 | + |
| 207 | +1. **No Branches Detected** |
| 208 | + - Check information gathering operator naming |
| 209 | + - Verify belief predicate effects |
| 210 | + - Ensure alternative operators exist |
| 211 | + |
| 212 | +2. **Layout Problems** |
| 213 | + - Use horizontal layout for tree structures |
| 214 | + - Check node/edge spacing parameters |
| 215 | + - Reset layout if needed |
| 216 | + |
| 217 | +3. **Performance Issues** |
| 218 | + - Use focused branching visualization |
| 219 | + - Limit to relevant paths only |
| 220 | + - Consider file size optimizations |
| 221 | + |
| 222 | +### Debugging Commands |
| 223 | + |
| 224 | +```python |
| 225 | +# Check if information gathering detected |
| 226 | +print(f"Info gathering operators: {[op for op in operators if self._is_information_gathering_operator(op)]}") |
| 227 | + |
| 228 | +# Verify branching paths |
| 229 | +paths = self._find_branching_paths(initial_atoms, goal_atoms_or, objects, transitions) |
| 230 | +print(f"Found {len(paths)} branching paths") |
| 231 | + |
| 232 | +# Check file sizes |
| 233 | +print(f"Regular: {regular_file_size}, Branching: {branching_file_size}") |
| 234 | +``` |
| 235 | + |
| 236 | +## Future Enhancements |
| 237 | + |
| 238 | +### Potential Improvements |
| 239 | +1. **3D Visualization**: For complex multi-level branching |
| 240 | +2. **Probability Weights**: Show likelihood of different branches |
| 241 | +3. **Execution Traces**: Overlay actual execution paths |
| 242 | +4. **Comparative Analysis**: Side-by-side algorithm comparison |
| 243 | + |
| 244 | +### Integration Opportunities |
| 245 | +1. **VLM Integration**: Show visual perception outputs at decision points |
| 246 | +2. **Real Robot**: Overlay actual sensor data and execution |
| 247 | +3. **Planning Algorithms**: Compare different belief-space planners |
| 248 | +4. **Performance Metrics**: Add timing and success rate analysis |
| 249 | + |
| 250 | +## Conclusion |
| 251 | + |
| 252 | +The enhanced branching visualization system provides comprehensive analysis of information gathering in belief-space planning. With horizontal layout, shortest path highlighting, and focused graph generation, it offers both clarity and performance for understanding robot decision-making under uncertainty. |
| 253 | + |
| 254 | +The system successfully demonstrates how information gathering operators create decision trees, showing the robot's ability to handle different observation outcomes with appropriate action sequences. This is crucial for robust robotics applications where sensor uncertainty requires adaptive planning strategies. |
0 commit comments