|
| 1 | +# Data Collection Guide |
| 2 | + |
| 3 | +--- |
| 4 | + |
| 5 | +## Terminal Commands |
| 6 | + |
| 7 | +### Start Pipeline (every session) |
| 8 | + |
| 9 | +```bash |
| 10 | +# T1 |
| 11 | +source /opt/ros/humble/setup.bash && source ~/Documents/Visual_Inspection_ws/inspection_ws/install/setup.bash |
| 12 | +ros2 run visual_inspection_ros camera_node |
| 13 | + |
| 14 | +# T2 |
| 15 | +source /opt/ros/humble/setup.bash && source ~/Documents/Visual_Inspection_ws/inspection_ws/install/setup.bash |
| 16 | +ros2 run visual_inspection_ros servo_node |
| 17 | + |
| 18 | +# T3 |
| 19 | +source /opt/ros/humble/setup.bash && source ~/Documents/Visual_Inspection_ws/inspection_ws/install/setup.bash |
| 20 | +ros2 run visual_inspection_ros ibvs_action_server |
| 21 | + |
| 22 | +# T4 — collection script |
| 23 | +python3 ~/Documents/Visual_Inspection_ws/evaluation/collect_dataset.py |
| 24 | +``` |
| 25 | + |
| 26 | +### ROS Topic Monitor Commands |
| 27 | + |
| 28 | +```bash |
| 29 | +# Check all active topics |
| 30 | +ros2 topic list |
| 31 | + |
| 32 | +# Watch camera feed is running (should publish at 30Hz) |
| 33 | +ros2 topic hz /visual_inspection/insta360/image_raw |
| 34 | + |
| 35 | +# Watch Logitech camera |
| 36 | +ros2 topic hz /visual_inspection/logitech/image_raw |
| 37 | + |
| 38 | +# Watch YOLO detections |
| 39 | +ros2 topic echo /visual_inspection/detections |
| 40 | + |
| 41 | +# Watch current system status |
| 42 | +ros2 topic echo /visual_inspection/status |
| 43 | + |
| 44 | +# Watch IBVS error live |
| 45 | +ros2 topic echo /visual_inspection/ibvs_error |
| 46 | + |
| 47 | +# Check action server is ready |
| 48 | +ros2 action list |
| 49 | + |
| 50 | +# Open RViz to see camera feed |
| 51 | +rviz2 |
| 52 | +# Then: Add → By Topic → /visual_inspection/debug → Image |
| 53 | +``` |
| 54 | + |
| 55 | +### Check Collected Images |
| 56 | + |
| 57 | +```bash |
| 58 | +# Count all collected images |
| 59 | +find ~/Documents/Visual_Inspection_ws/evaluation/ -name "*.jpg" | wc -l |
| 60 | + |
| 61 | +# See folder breakdown |
| 62 | +find ~/Documents/Visual_Inspection_ws/evaluation/ -name "*.jpg" | \ |
| 63 | + sed 's|/[^/]*\.jpg||' | sort | uniq -c | sort -rn |
| 64 | + |
| 65 | +# Check latest capture |
| 66 | +ls -lt ~/Documents/Visual_Inspection_ws/captures/inspection/ | head -5 |
| 67 | + |
| 68 | +# View capture log |
| 69 | +cat ~/Documents/Visual_Inspection_ws/evaluation/capture_log.csv |
| 70 | +``` |
| 71 | + |
| 72 | +### SCP Images to Laptop |
| 73 | + |
| 74 | +```bash |
| 75 | +# Run on LAPTOP after each session |
| 76 | +scp -r rgen@192.168.8.181:~/Documents/Visual_Inspection_ws/evaluation/ \ |
| 77 | + /home/dinethra/Jetson_orin_nano/Evaluation_V_I_ws/eval_dataset/ |
| 78 | + |
| 79 | +# Or just the log |
| 80 | +scp rgen@192.168.8.181:~/Documents/Visual_Inspection_ws/evaluation/capture_log.csv \ |
| 81 | + /home/dinethra/Jetson_orin_nano/Evaluation_V_I_ws/eval_dataset/capture_log.csv |
| 82 | +``` |
| 83 | + |
| 84 | +--- |
| 85 | + |
| 86 | +## Script Features |
| 87 | + |
| 88 | +Press `s` in the main menu to see a **progress bar** showing how many images in each folder. |
| 89 | + |
| 90 | +All sessions let you: |
| 91 | +- Type **any angle** (0 to 180°, any direction) |
| 92 | +- Type **any exact distance** you measured (e.g. 1.2m, 2.4m) |
| 93 | +- Type **how many images** you want at that position |
| 94 | +- Type **any occlusion %** you applied |
| 95 | +- Decide when you're done — `q` goes back to menu, `y` continues |
| 96 | + |
| 97 | +--- |
| 98 | + |
| 99 | +## What to Collect Per Session |
| 100 | + |
| 101 | +### Session 1 — Reference |
| 102 | +- Pick object → robot at 1m, 0° → press ENTER |
| 103 | +- 5 images per object (fire_ext, gauge, door) |
| 104 | + |
| 105 | +### Session 2 — Angle |
| 106 | +- Pick ANY angle (0°, 15°, 30°, 45°, 60°, 90° etc.) |
| 107 | +- Pick L or R direction (covers full 180°) |
| 108 | +- Type actual measured distance (can vary ±20cm per position) |
| 109 | +- 10 images per position |
| 110 | +- Keep going: change angle → type new angle → more images |
| 111 | + |
| 112 | +### Session 3 — Distance |
| 113 | +- Type exact measured distance (0.5m, 1.0m, 1.5m, 2.0m, 2.5m, 3.0m, 4.0m) |
| 114 | +- 10 images per distance |
| 115 | +- Keep going: new distance → more images |
| 116 | + |
| 117 | +### Session 4 — Gauge Ground Truth |
| 118 | +- Type true reading → 3 images → type next reading → repeat |
| 119 | +- Skip if no gauge equipment (q to exit) |
| 120 | + |
| 121 | +### Session 5 — VLM Images |
| 122 | +- Pick scenario (fire_ext pass/fail, exit pass/fail, door, cylinder) |
| 123 | +- Type caption after each capture (1 sentence) |
| 124 | +- 10 images per scenario |
| 125 | + |
| 126 | +### Session 6 — Occlusion |
| 127 | +- Type exact % you covered (0, 10, 25, 50, 75, 90...) |
| 128 | +- 10 images per level |
| 129 | + |
| 130 | +### Session 7 — Multi-object |
| 131 | +- Pick scene type → 5 images per scene |
| 132 | + |
| 133 | +--- |
| 134 | + |
| 135 | +## Checklist |
| 136 | + |
| 137 | +``` |
| 138 | +[ ] Reference: fire_ext (5) gauge (5) door (5) |
| 139 | +[ ] Angle: 0° 15°L 15°R 30°L 30°R 45°L 45°R (10 each) |
| 140 | +[ ] Angle extra: 60°L 60°R 90°L 90°R (10 each, if time) |
| 141 | +[ ] Angle vertical: up down (5-10 each) |
| 142 | +[ ] Distance: 1m 1.5m 2m 2.5m 3m 3.5m 4m (10 each) |
| 143 | +[ ] Gauge GT: 5 reading positions × 3 (skip if no equipment) |
| 144 | +[ ] VLM: fire_ext pass (10) fail (10) |
| 145 | +[ ] VLM: exit pass (10) fail (10) |
| 146 | +[ ] VLM: door pass (10) |
| 147 | +[ ] Occlusion: 0% 25% 50% 75% (10 each) |
| 148 | +[ ] Multi-object: 2 same class, mixed class (5 each) |
| 149 | +``` |
0 commit comments