calibrate-suite 0.1.0__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. {calibrate_suite-0.1.0/src/calibrate_suite.egg-info → calibrate_suite-0.1.2}/PKG-INFO +113 -45
  2. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/README.md +112 -44
  3. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/pyproject.toml +2 -1
  4. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/setup.py +2 -1
  5. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2/src/calibrate_suite.egg-info}/PKG-INFO +113 -45
  6. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/calibrate_suite.egg-info/SOURCES.txt +6 -3
  7. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/calibrate_suite.egg-info/entry_points.txt +1 -0
  8. calibrate_suite-0.1.2/src/gui/assets/2d-calibrate-page.png +0 -0
  9. calibrate_suite-0.1.2/src/gui/assets/2d-overlay-page.png +0 -0
  10. calibrate_suite-0.1.2/src/gui/assets/2d-record-page.png +0 -0
  11. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/extractor_widget.py +12 -1
  12. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/rviz_configs/3D-3D.rviz +3 -3
  13. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/LICENSE +0 -0
  14. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/MANIFEST.in +0 -0
  15. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/requirements.txt +0 -0
  16. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/setup.cfg +0 -0
  17. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/calibrate_suite.egg-info/dependency_links.txt +0 -0
  18. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/calibrate_suite.egg-info/requires.txt +0 -0
  19. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/calibrate_suite.egg-info/top_level.txt +0 -0
  20. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/fleet_server/__init__.py +0 -0
  21. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/fleet_server/app.py +0 -0
  22. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/fleet_server/config.py +0 -0
  23. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/fleet_server/templates/error.html +0 -0
  24. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/fleet_server/templates/index.html +0 -0
  25. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/fleet_server/templates/viewer.html +0 -0
  26. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/fleet_server/utils.py +0 -0
  27. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/__init__.py +0 -0
  28. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/2d-or-3d-fleet-upload.png +0 -0
  29. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/2d_3d_overlay_output.jpg +0 -0
  30. /calibrate_suite-0.1.0/src/gui/assets/3d_or_2d_calibrate-page.png → /calibrate_suite-0.1.2/src/gui/assets/3d-calibrate-page.png +0 -0
  31. /calibrate_suite-0.1.0/src/gui/assets/3d-or-2d-overlay_page.png → /calibrate_suite-0.1.2/src/gui/assets/3d-overlay-page.png +0 -0
  32. /calibrate_suite-0.1.0/src/gui/assets/3d-or-2d-record-page.png → /calibrate_suite-0.1.2/src/gui/assets/3d-record-page.png +0 -0
  33. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/3d_3d_overlay_output.png +0 -0
  34. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/GUI_homepage.png +0 -0
  35. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/hardware_setup.jpeg +0 -0
  36. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/single_lidar_calibrate_page.png +0 -0
  37. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/single_lidar_output.png +0 -0
  38. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/single_lidar_record_page.png +0 -0
  39. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/assets/virya.jpg +0 -0
  40. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/main.py +0 -0
  41. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/calibrator_widget.py +0 -0
  42. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/home_widget.py +0 -0
  43. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/recorder_widget.py +0 -0
  44. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/single_lidar_widget.py +0 -0
  45. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/three_d_calib_widget.py +0 -0
  46. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/two_d_calib_widget.py +0 -0
  47. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/uploader_widget.py +0 -0
  48. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/widgets/validator_widget.py +0 -0
  49. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/windows/main_window.py +0 -0
  50. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/gui/windows/main_window_ui.py +0 -0
  51. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/rviz_configs/2D-3D.rviz +0 -0
  52. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/rviz_configs/default_calib.rviz +0 -0
  53. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/utils/__init__.py +0 -0
  54. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/utils/calibration_common.py +0 -0
  55. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/utils/cli_calibrate.py +0 -0
  56. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/utils/cli_fleet_server.py +0 -0
  57. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/utils/data_extractor_common.py +0 -0
  58. {calibrate_suite-0.1.0 → calibrate_suite-0.1.2}/src/utils/gui_helpers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calibrate-suite
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Comprehensive camera-lidar calibration suite with GUI and fleet management
5
5
  Home-page: https://github.com/Opera5/calibrate-suite
6
6
  Author: Jamih
@@ -149,46 +149,39 @@ sudo apt update
149
149
 
150
150
  ### Installation Options
151
151
 
152
- **Option 1: ROS2 + System Packages (Recommended for ROS users)**
152
+ **Option 1: ROS2 + System Packages (Recommended for ROS users in development mode)**
153
153
  ```bash
154
154
  # Install system dependencies
155
155
  sudo apt install python3-opencv python3-open3d python3-pyqt5 python3-yaml
156
156
 
157
+ # Install in development mode
158
+ pip install -e .
159
+
160
+ # Or with GUI dependencies
161
+ pip install -e .[gui]
162
+
163
+ # Or with all features
164
+ pip install -e .[full]
165
+
157
166
  # Build with ROS2
158
167
  cd ~/calib_ws
159
168
  colcon build --packages-select calibrate-suite
160
169
  source install/setup.bash
161
-
162
- # Launch after installation
163
- calibrate-suite # GUI
164
- fleet-server # REST API
165
170
  ```
166
171
 
167
172
  **Option 2: pip - Core Only (Minimal)**
168
173
  ```bash
169
- pip install calibrate-suite
170
- ```
171
-
172
- **Option 3: pip - With Computer Vision**
173
- ```bash
174
- pip install calibrate-suite[cv]
174
+ pip install calibrate-suite==0.1.0
175
175
  ```
176
-
177
- **Option 4: pip - With 3D Processing**
176
+ **Option 3: pip - with full features**
178
177
  ```bash
179
- pip install calibrate-suite[3d]
178
+ pip install calibrate-suite==0.1.0 [full]
180
179
  ```
181
-
182
- **Option 5: pip - With GUI**
183
- ```bash
184
- pip install calibrate-suite[gui]
185
- ```
186
-
187
- **Option 6: pip - Full Installation (Isolated venv recommended)**
180
+ **Option 4: pip - Full Installation (Isolated venv recommended)**
188
181
  ```bash
189
182
  python3 -m venv calib_env
190
183
  source calib_env/bin/activate
191
- pip install calibrate-suite[full]
184
+ pip install calibrate-suite==0.1.0
192
185
 
193
186
  # Launch commands after installation
194
187
  calibrate-suite # GUI
@@ -235,6 +228,34 @@ fleet-server --version
235
228
 
236
229
  ### Known Conflicts & Solutions
237
230
 
231
+ **Issue: RViz snap glibc conflicts**
232
+ ```
233
+ Problem: RViz snap conflicts with system glibc (__libc_pthread_init error)
234
+ Solution: Use system RViz instead of snap
235
+ sudo apt install ros-humble-rviz2
236
+ # OR continue without RViz (extractor still works)
237
+ ```
238
+
239
+ **Issue: NumPy version conflicts**
240
+ ```
241
+ Problem: Mixed system (1.21.5) and pip NumPy versions causing sklearn conflicts
242
+ Solution: Use consistent package sources
243
+ # Remove pip scientific packages
244
+ pip uninstall numpy scipy scikit-learn open3d opencv-python
245
+
246
+ # Use system packages
247
+ sudo apt install python3-numpy python3-scipy python3-sklearn python3-opencv python3-open3d
248
+
249
+ # Reinstall calibrate-suite without dependencies
250
+ pip install -e . --no-deps
251
+ or
252
+ # Remove pip-installed numpy and opencv
253
+ pip uninstall numpy opencv-python
254
+
255
+ # Use system packages
256
+ sudo apt install python3-numpy python3-opencv
257
+ ```
258
+
238
259
  **Issue: OpenCV conflicts with system Qt/RViz**
239
260
  ```
240
261
  Problem: pip opencv-python can conflict with system OpenCV
@@ -279,19 +300,34 @@ calibrate-suite
279
300
 
280
301
  **GUI Workflow Tabs:**
281
302
 
282
- | Home/Record | Overlay |
303
+ | Home |
304
+ | ![Home Interface](src/gui/assets/GUI_homepage.png)|
305
+
306
+ | Single-LiDAR Record | Calibrate |
307
+ |---|---|
308
+ | ![Single LiDAR Record](src/gui/assets/single_lidar_record_page.png) | ![Single LiDAR Calibrate](src/gui/assets/single_lidar_calibrate_page.png) |
309
+
310
+ | 2D-3D Record page | 3D-3D Record page |
311
+ |---|---|
312
+ | ![2D-3D Record](src/gui/assets/2d-record-page.png) | ![3D-3D Record](src/gui/assets/3d-record-page.png) |
313
+
314
+ | 2D-3D Calibrate page | 3D-3D Calibrate page |
283
315
  |---|---|
284
- | ![Home Interface](src/gui/assets/GUI_homepage.png) | ![Record Page](src/gui/assets/3d-or-2d-record-page.png) |
316
+ | ![2D-3D Calibrator](src/gui/assets/2d-calibrate-page.png) | ![3D-3D Calibrator](src/gui/assets/3d-calibrate-page.png) |
317
+
318
+ | 2D-3D Overlay page | 3D-3D Overlay page |
319
+ |---|---|
320
+ | ![2D-3D Calibrator](src/gui/assets/2d-overlay-page.png) | ![3D-3D Calibrator](src/gui/assets/3d-overlay-page.png) |
285
321
 
286
322
  ### Command-Line (Quick Calibration)
287
323
  ```bash
288
324
  cd /home/jamih/calib_ws/src/calibrate-suite/src
289
325
 
290
326
  #launching calibrator suite from terminal
291
- # Method 2: Direct Python execution
327
+ # Method 1: Direct Python execution
292
328
  python3 -m gui.main
293
329
 
294
- # Method 3: Direct script execution
330
+ # Method 2: Direct script execution
295
331
  python3 gui/main.py
296
332
 
297
333
  # 2D-3D Calibration (AprilTag-based, recommended)
@@ -313,7 +349,7 @@ python3 2d_3d_data_extractor.py \
313
349
  python3 2d_3d_calibrator.py --data_root ../calib_data/multimodal_captures
314
350
 
315
351
  # 3. Visualize results
316
- python3 visualize_alignment.py --data_root ../calib_data/multimodal_captures
352
+ python3 2d_3d_overlay.py --data_root ../calib_data/multimodal_captures
317
353
  ```
318
354
 
319
355
  ---
@@ -358,11 +394,6 @@ python3 visualize_alignment.py --data_root ../calib_data/multimodal_captures
358
394
  ```
359
395
  GUI → Single LiDAR Tab → Upload PCD files → Select method → Run → View metrics
360
396
  ```
361
-
362
- | Record | Calibrate |
363
- |---|---|
364
- | ![Single LiDAR Record](src/gui/assets/single_lidar_record_page.png) | ![Single LiDAR Calibrate](src/gui/assets/single_lidar_calibrate_page.png) |
365
-
366
397
  ---
367
398
 
368
399
  ### Framework 2: 3D-3D Camera-LiDAR Calibration
@@ -459,17 +490,13 @@ final_extrinsic.yaml:
459
490
  GUI → 2D-3D Tab → Select data directory → Configure quality filter → Run → View metrics
460
491
  ```
461
492
 
462
- | GUI Interface | Alignment Visualization |
463
- |---|---|
464
- | ![2D-3D Calibration](src/gui/assets/3d_or_2d_calibrate-page.png) | ![Alignment Overlay](src/gui/assets/3d-or-2d-overlay_page.png) |
465
-
466
493
  ---
467
494
 
468
- ## 💻 Command-Line Tools
495
+ ## 💻 Command-Line Tools(without GUI)
469
496
 
470
497
  ### Data Extraction Tools
471
498
  ```bash
472
- # Synchronized extraction from ROS2 bag
499
+ # Synchronized extraction from ROS2 bag for 3d-3d mode
473
500
  cd src
474
501
  python3 3d_3d_data_extractor.py \
475
502
  --bag path-to-bag \
@@ -477,13 +504,13 @@ python3 3d_3d_data_extractor.py \
477
504
  --num-poses 20 \
478
505
  --sync-tolerance 100
479
506
 
480
- # Extract camera images only(it will be 3d_3d_data extractor for the 3d_3d mode)
507
+ # Extract camera images only for 2D-3D mode
481
508
  python3 2d_3d_data_extractor.py \
482
509
  --bag path-to-bag \
483
510
  --type camera \
484
511
  --output ../calib_data/camera_images
485
512
 
486
- # Extract LiDAR point clouds only
513
+ # Extract LiDAR point clouds only for 2D-3D mode
487
514
  python3 2d_3d_data_extractor.py \
488
515
  --bag path-to-bag \
489
516
  --type lidar \
@@ -527,12 +554,26 @@ python3 2d_3d_overlay.py \
527
554
  --data_root ../calib_data/multimodal_captures \
528
555
  --pose 1
529
556
 
530
- # generate/Verify corner detection
557
+ # generate/Verify corner detection in lidar and camera
531
558
  python3 camtag_det.py \
532
559
  --data_root ../calib_data/multimodal_captures
533
560
 
534
561
  python3 lidtag_det.py \
535
- --data_root ../calib_data/multimodal_captures
562
+ --data_root ../calib_data/multimodal_captures
563
+ ```
564
+ ### To use the package camera calibrator(if you're using AprilTag Grid)
565
+ ```bash
566
+ # After pip install calibrate-suite
567
+ calibrate-camera --data_root /path/to/data
568
+
569
+ #For PyPI Users (after adding entry point)
570
+ pip install calibrate-suite[cv] # Need OpenCV
571
+ calibrate-camera --data_root ./my_data
572
+
573
+ #if you already have your camera intrinsics,
574
+ #make sure to select them in the GUI before running any tab execution
575
+ #as it has hardcoded intrinsics params(though if you capture with the GUI,
576
+ #the system saves camera_intrinsics.yaml once, but verify path is right in GUI)
536
577
  ```
537
578
  ---
538
579
 
@@ -540,7 +581,7 @@ python3 lidtag_det.py \
540
581
 
541
582
  ### Directory Structure (Package-Created)
542
583
 
543
- When using calibrate-suite, the following directory structure is created(note, they can be changed as per your wish in the GUI):
584
+ When using calibrate-suite, the following directory structure is created(note: they can be changed as per your wish in the GUI or through terminal by passing --data-root flag with folder path):
544
585
 
545
586
  ```
546
587
  calib_data/
@@ -564,6 +605,33 @@ calib_data/
564
605
 
565
606
  ```
566
607
 
608
+ ### Camera Intrinsics Format
609
+
610
+ All calibrate-suite scripts use a standardized `camera_intrinsics.yaml` format. If you have your own camera intrinsics, use this exact format:
611
+
612
+ ```yaml
613
+ # Standard format supported across all calibrate-suite scripts
614
+ camera_matrix: [[fx, 0.0, cx], [0.0, fy, cy], [0.0, 0.0, 1.0]] # 3x3 intrinsic matrix
615
+ dist_coeffs: [k1, k2, p1, p2, k3] # Distortion coefficients
616
+ image_size: [width, height] # Image dimensions in pixels
617
+ distortion_model: "plumb_bob" # OpenCV distortion model
618
+ camera_name: "camera_frame" # Camera frame ID (optional)
619
+
620
+ # Example with real values:
621
+ camera_matrix: [[1364.0, 0.0, 944.66], [0.0, 1363.42, 570.16], [0.0, 0.0, 1.0]]
622
+ dist_coeffs: [0.1, -0.2, 0.001, 0.002, 0.05]
623
+ image_size: [1920, 1080]
624
+ distortion_model: "plumb_bob"
625
+ camera_name: "camera_optical_frame"
626
+ ```
627
+
628
+ **Important Notes:**
629
+ - File must be named exactly `camera_intrinsics.yaml`
630
+ - Place in your data root directory (e.g., `calib_data/multimodal_captures/camera_intrinsics.yaml`)
631
+ - `camera_matrix` must be a 3×3 nested list (not a flat array)
632
+ - `dist_coeffs` must be a flat list of 5 coefficients [k1, k2, p1, p2, k3]
633
+ - All extractors, calibrators, and visualization scripts use this format
634
+
567
635
  ### Board Geometry Configuration
568
636
  ```yaml
569
637
  board_type: "AprilTag"
@@ -757,5 +825,5 @@ A: Run separate calibrations for each camera+LiDAR pair. Combine results using p
757
825
 
758
826
  ## 📄 Version
759
827
 
760
- **Package Version:** 0.1.0
828
+ **Package Version:** 0.1.2
761
829
  **License:** MIT
@@ -94,46 +94,39 @@ sudo apt update
94
94
 
95
95
  ### Installation Options
96
96
 
97
- **Option 1: ROS2 + System Packages (Recommended for ROS users)**
97
+ **Option 1: ROS2 + System Packages (Recommended for ROS users in development mode)**
98
98
  ```bash
99
99
  # Install system dependencies
100
100
  sudo apt install python3-opencv python3-open3d python3-pyqt5 python3-yaml
101
101
 
102
+ # Install in development mode
103
+ pip install -e .
104
+
105
+ # Or with GUI dependencies
106
+ pip install -e .[gui]
107
+
108
+ # Or with all features
109
+ pip install -e .[full]
110
+
102
111
  # Build with ROS2
103
112
  cd ~/calib_ws
104
113
  colcon build --packages-select calibrate-suite
105
114
  source install/setup.bash
106
-
107
- # Launch after installation
108
- calibrate-suite # GUI
109
- fleet-server # REST API
110
115
  ```
111
116
 
112
117
  **Option 2: pip - Core Only (Minimal)**
113
118
  ```bash
114
- pip install calibrate-suite
115
- ```
116
-
117
- **Option 3: pip - With Computer Vision**
118
- ```bash
119
- pip install calibrate-suite[cv]
119
+ pip install calibrate-suite==0.1.0
120
120
  ```
121
-
122
- **Option 4: pip - With 3D Processing**
121
+ **Option 3: pip - with full features**
123
122
  ```bash
124
- pip install calibrate-suite[3d]
123
+ pip install calibrate-suite==0.1.0 [full]
125
124
  ```
126
-
127
- **Option 5: pip - With GUI**
128
- ```bash
129
- pip install calibrate-suite[gui]
130
- ```
131
-
132
- **Option 6: pip - Full Installation (Isolated venv recommended)**
125
+ **Option 4: pip - Full Installation (Isolated venv recommended)**
133
126
  ```bash
134
127
  python3 -m venv calib_env
135
128
  source calib_env/bin/activate
136
- pip install calibrate-suite[full]
129
+ pip install calibrate-suite==0.1.0
137
130
 
138
131
  # Launch commands after installation
139
132
  calibrate-suite # GUI
@@ -180,6 +173,34 @@ fleet-server --version
180
173
 
181
174
  ### Known Conflicts & Solutions
182
175
 
176
+ **Issue: RViz snap glibc conflicts**
177
+ ```
178
+ Problem: RViz snap conflicts with system glibc (__libc_pthread_init error)
179
+ Solution: Use system RViz instead of snap
180
+ sudo apt install ros-humble-rviz2
181
+ # OR continue without RViz (extractor still works)
182
+ ```
183
+
184
+ **Issue: NumPy version conflicts**
185
+ ```
186
+ Problem: Mixed system (1.21.5) and pip NumPy versions causing sklearn conflicts
187
+ Solution: Use consistent package sources
188
+ # Remove pip scientific packages
189
+ pip uninstall numpy scipy scikit-learn open3d opencv-python
190
+
191
+ # Use system packages
192
+ sudo apt install python3-numpy python3-scipy python3-sklearn python3-opencv python3-open3d
193
+
194
+ # Reinstall calibrate-suite without dependencies
195
+ pip install -e . --no-deps
196
+ or
197
+ # Remove pip-installed numpy and opencv
198
+ pip uninstall numpy opencv-python
199
+
200
+ # Use system packages
201
+ sudo apt install python3-numpy python3-opencv
202
+ ```
203
+
183
204
  **Issue: OpenCV conflicts with system Qt/RViz**
184
205
  ```
185
206
  Problem: pip opencv-python can conflict with system OpenCV
@@ -224,19 +245,34 @@ calibrate-suite
224
245
 
225
246
  **GUI Workflow Tabs:**
226
247
 
227
- | Home/Record | Overlay |
248
+ | Home |
249
+ | ![Home Interface](src/gui/assets/GUI_homepage.png)|
250
+
251
+ | Single-LiDAR Record | Calibrate |
252
+ |---|---|
253
+ | ![Single LiDAR Record](src/gui/assets/single_lidar_record_page.png) | ![Single LiDAR Calibrate](src/gui/assets/single_lidar_calibrate_page.png) |
254
+
255
+ | 2D-3D Record page | 3D-3D Record page |
256
+ |---|---|
257
+ | ![2D-3D Record](src/gui/assets/2d-record-page.png) | ![3D-3D Record](src/gui/assets/3d-record-page.png) |
258
+
259
+ | 2D-3D Calibrate page | 3D-3D Calibrate page |
228
260
  |---|---|
229
- | ![Home Interface](src/gui/assets/GUI_homepage.png) | ![Record Page](src/gui/assets/3d-or-2d-record-page.png) |
261
+ | ![2D-3D Calibrator](src/gui/assets/2d-calibrate-page.png) | ![3D-3D Calibrator](src/gui/assets/3d-calibrate-page.png) |
262
+
263
+ | 2D-3D Overlay page | 3D-3D Overlay page |
264
+ |---|---|
265
+ | ![2D-3D Calibrator](src/gui/assets/2d-overlay-page.png) | ![3D-3D Calibrator](src/gui/assets/3d-overlay-page.png) |
230
266
 
231
267
  ### Command-Line (Quick Calibration)
232
268
  ```bash
233
269
  cd /home/jamih/calib_ws/src/calibrate-suite/src
234
270
 
235
271
  #launching calibrator suite from terminal
236
- # Method 2: Direct Python execution
272
+ # Method 1: Direct Python execution
237
273
  python3 -m gui.main
238
274
 
239
- # Method 3: Direct script execution
275
+ # Method 2: Direct script execution
240
276
  python3 gui/main.py
241
277
 
242
278
  # 2D-3D Calibration (AprilTag-based, recommended)
@@ -258,7 +294,7 @@ python3 2d_3d_data_extractor.py \
258
294
  python3 2d_3d_calibrator.py --data_root ../calib_data/multimodal_captures
259
295
 
260
296
  # 3. Visualize results
261
- python3 visualize_alignment.py --data_root ../calib_data/multimodal_captures
297
+ python3 2d_3d_overlay.py --data_root ../calib_data/multimodal_captures
262
298
  ```
263
299
 
264
300
  ---
@@ -303,11 +339,6 @@ python3 visualize_alignment.py --data_root ../calib_data/multimodal_captures
303
339
  ```
304
340
  GUI → Single LiDAR Tab → Upload PCD files → Select method → Run → View metrics
305
341
  ```
306
-
307
- | Record | Calibrate |
308
- |---|---|
309
- | ![Single LiDAR Record](src/gui/assets/single_lidar_record_page.png) | ![Single LiDAR Calibrate](src/gui/assets/single_lidar_calibrate_page.png) |
310
-
311
342
  ---
312
343
 
313
344
  ### Framework 2: 3D-3D Camera-LiDAR Calibration
@@ -404,17 +435,13 @@ final_extrinsic.yaml:
404
435
  GUI → 2D-3D Tab → Select data directory → Configure quality filter → Run → View metrics
405
436
  ```
406
437
 
407
- | GUI Interface | Alignment Visualization |
408
- |---|---|
409
- | ![2D-3D Calibration](src/gui/assets/3d_or_2d_calibrate-page.png) | ![Alignment Overlay](src/gui/assets/3d-or-2d-overlay_page.png) |
410
-
411
438
  ---
412
439
 
413
- ## 💻 Command-Line Tools
440
+ ## 💻 Command-Line Tools(without GUI)
414
441
 
415
442
  ### Data Extraction Tools
416
443
  ```bash
417
- # Synchronized extraction from ROS2 bag
444
+ # Synchronized extraction from ROS2 bag for 3d-3d mode
418
445
  cd src
419
446
  python3 3d_3d_data_extractor.py \
420
447
  --bag path-to-bag \
@@ -422,13 +449,13 @@ python3 3d_3d_data_extractor.py \
422
449
  --num-poses 20 \
423
450
  --sync-tolerance 100
424
451
 
425
- # Extract camera images only(it will be 3d_3d_data extractor for the 3d_3d mode)
452
+ # Extract camera images only for 2D-3D mode
426
453
  python3 2d_3d_data_extractor.py \
427
454
  --bag path-to-bag \
428
455
  --type camera \
429
456
  --output ../calib_data/camera_images
430
457
 
431
- # Extract LiDAR point clouds only
458
+ # Extract LiDAR point clouds only for 2D-3D mode
432
459
  python3 2d_3d_data_extractor.py \
433
460
  --bag path-to-bag \
434
461
  --type lidar \
@@ -472,12 +499,26 @@ python3 2d_3d_overlay.py \
472
499
  --data_root ../calib_data/multimodal_captures \
473
500
  --pose 1
474
501
 
475
- # generate/Verify corner detection
502
+ # generate/Verify corner detection in lidar and camera
476
503
  python3 camtag_det.py \
477
504
  --data_root ../calib_data/multimodal_captures
478
505
 
479
506
  python3 lidtag_det.py \
480
- --data_root ../calib_data/multimodal_captures
507
+ --data_root ../calib_data/multimodal_captures
508
+ ```
509
+ ### To use the package camera calibrator(if you're using AprilTag Grid)
510
+ ```bash
511
+ # After pip install calibrate-suite
512
+ calibrate-camera --data_root /path/to/data
513
+
514
+ #For PyPI Users (after adding entry point)
515
+ pip install calibrate-suite[cv] # Need OpenCV
516
+ calibrate-camera --data_root ./my_data
517
+
518
+ #if you already have your camera intrinsics,
519
+ #make sure to select them in the GUI before running any tab execution
520
+ #as it has hardcoded intrinsics params(though if you capture with the GUI,
521
+ #the system saves camera_intrinsics.yaml once, but verify path is right in GUI)
481
522
  ```
482
523
  ---
483
524
 
@@ -485,7 +526,7 @@ python3 lidtag_det.py \
485
526
 
486
527
  ### Directory Structure (Package-Created)
487
528
 
488
- When using calibrate-suite, the following directory structure is created(note, they can be changed as per your wish in the GUI):
529
+ When using calibrate-suite, the following directory structure is created(note: they can be changed as per your wish in the GUI or through terminal by passing --data-root flag with folder path):
489
530
 
490
531
  ```
491
532
  calib_data/
@@ -509,6 +550,33 @@ calib_data/
509
550
 
510
551
  ```
511
552
 
553
+ ### Camera Intrinsics Format
554
+
555
+ All calibrate-suite scripts use a standardized `camera_intrinsics.yaml` format. If you have your own camera intrinsics, use this exact format:
556
+
557
+ ```yaml
558
+ # Standard format supported across all calibrate-suite scripts
559
+ camera_matrix: [[fx, 0.0, cx], [0.0, fy, cy], [0.0, 0.0, 1.0]] # 3x3 intrinsic matrix
560
+ dist_coeffs: [k1, k2, p1, p2, k3] # Distortion coefficients
561
+ image_size: [width, height] # Image dimensions in pixels
562
+ distortion_model: "plumb_bob" # OpenCV distortion model
563
+ camera_name: "camera_frame" # Camera frame ID (optional)
564
+
565
+ # Example with real values:
566
+ camera_matrix: [[1364.0, 0.0, 944.66], [0.0, 1363.42, 570.16], [0.0, 0.0, 1.0]]
567
+ dist_coeffs: [0.1, -0.2, 0.001, 0.002, 0.05]
568
+ image_size: [1920, 1080]
569
+ distortion_model: "plumb_bob"
570
+ camera_name: "camera_optical_frame"
571
+ ```
572
+
573
+ **Important Notes:**
574
+ - File must be named exactly `camera_intrinsics.yaml`
575
+ - Place in your data root directory (e.g., `calib_data/multimodal_captures/camera_intrinsics.yaml`)
576
+ - `camera_matrix` must be a 3×3 nested list (not a flat array)
577
+ - `dist_coeffs` must be a flat list of 5 coefficients [k1, k2, p1, p2, k3]
578
+ - All extractors, calibrators, and visualization scripts use this format
579
+
512
580
  ### Board Geometry Configuration
513
581
  ```yaml
514
582
  board_type: "AprilTag"
@@ -702,5 +770,5 @@ A: Run separate calibrations for each camera+LiDAR pair. Combine results using p
702
770
 
703
771
  ## 📄 Version
704
772
 
705
- **Package Version:** 0.1.0
773
+ **Package Version:** 0.1.2
706
774
  **License:** MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "calibrate-suite"
7
- version = "0.1.0"
7
+ version = "0.1.2"
8
8
  description = "Comprehensive camera-lidar calibration suite with GUI and fleet management"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.8"
@@ -70,6 +70,7 @@ Repository = "https://github.com/Opera5/calibrate-suite.git"
70
70
  [project.scripts]
71
71
  calibrate-suite = "utils.cli_calibrate:main"
72
72
  fleet-server = "utils.cli_fleet_server:main"
73
+ calibrate-camera = "calibrate_camera:main"
73
74
 
74
75
  [tool.setuptools.packages]
75
76
  find = {where = ["src"]}
@@ -15,7 +15,7 @@ long_description = readme_file.read_text(encoding="utf-8") if readme_file.exists
15
15
 
16
16
  setup(
17
17
  name="calibrate-suite",
18
- version="0.1.0",
18
+ version="0.1.2",
19
19
  description="camera-lidar calibration suite with GUI and fleet management",
20
20
  long_description=long_description,
21
21
  long_description_content_type="text/markdown",
@@ -29,6 +29,7 @@ setup(
29
29
  "console_scripts": [
30
30
  "calibrate-suite=utils.cli_calibrate:main",
31
31
  "fleet-server=utils.cli_fleet_server:main",
32
+ "calibrate-camera=calibrate_camera:main",
32
33
  ],
33
34
  },
34
35
  package_data={
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: calibrate-suite
3
- Version: 0.1.0
3
+ Version: 0.1.2
4
4
  Summary: Comprehensive camera-lidar calibration suite with GUI and fleet management
5
5
  Home-page: https://github.com/Opera5/calibrate-suite
6
6
  Author: Jamih
@@ -149,46 +149,39 @@ sudo apt update
149
149
 
150
150
  ### Installation Options
151
151
 
152
- **Option 1: ROS2 + System Packages (Recommended for ROS users)**
152
+ **Option 1: ROS2 + System Packages (Recommended for ROS users in development mode)**
153
153
  ```bash
154
154
  # Install system dependencies
155
155
  sudo apt install python3-opencv python3-open3d python3-pyqt5 python3-yaml
156
156
 
157
+ # Install in development mode
158
+ pip install -e .
159
+
160
+ # Or with GUI dependencies
161
+ pip install -e .[gui]
162
+
163
+ # Or with all features
164
+ pip install -e .[full]
165
+
157
166
  # Build with ROS2
158
167
  cd ~/calib_ws
159
168
  colcon build --packages-select calibrate-suite
160
169
  source install/setup.bash
161
-
162
- # Launch after installation
163
- calibrate-suite # GUI
164
- fleet-server # REST API
165
170
  ```
166
171
 
167
172
  **Option 2: pip - Core Only (Minimal)**
168
173
  ```bash
169
- pip install calibrate-suite
170
- ```
171
-
172
- **Option 3: pip - With Computer Vision**
173
- ```bash
174
- pip install calibrate-suite[cv]
174
+ pip install calibrate-suite==0.1.0
175
175
  ```
176
-
177
- **Option 4: pip - With 3D Processing**
176
+ **Option 3: pip - with full features**
178
177
  ```bash
179
- pip install calibrate-suite[3d]
178
+ pip install calibrate-suite==0.1.0 [full]
180
179
  ```
181
-
182
- **Option 5: pip - With GUI**
183
- ```bash
184
- pip install calibrate-suite[gui]
185
- ```
186
-
187
- **Option 6: pip - Full Installation (Isolated venv recommended)**
180
+ **Option 4: pip - Full Installation (Isolated venv recommended)**
188
181
  ```bash
189
182
  python3 -m venv calib_env
190
183
  source calib_env/bin/activate
191
- pip install calibrate-suite[full]
184
+ pip install calibrate-suite==0.1.0
192
185
 
193
186
  # Launch commands after installation
194
187
  calibrate-suite # GUI
@@ -235,6 +228,34 @@ fleet-server --version
235
228
 
236
229
  ### Known Conflicts & Solutions
237
230
 
231
+ **Issue: RViz snap glibc conflicts**
232
+ ```
233
+ Problem: RViz snap conflicts with system glibc (__libc_pthread_init error)
234
+ Solution: Use system RViz instead of snap
235
+ sudo apt install ros-humble-rviz2
236
+ # OR continue without RViz (extractor still works)
237
+ ```
238
+
239
+ **Issue: NumPy version conflicts**
240
+ ```
241
+ Problem: Mixed system (1.21.5) and pip NumPy versions causing sklearn conflicts
242
+ Solution: Use consistent package sources
243
+ # Remove pip scientific packages
244
+ pip uninstall numpy scipy scikit-learn open3d opencv-python
245
+
246
+ # Use system packages
247
+ sudo apt install python3-numpy python3-scipy python3-sklearn python3-opencv python3-open3d
248
+
249
+ # Reinstall calibrate-suite without dependencies
250
+ pip install -e . --no-deps
251
+ or
252
+ # Remove pip-installed numpy and opencv
253
+ pip uninstall numpy opencv-python
254
+
255
+ # Use system packages
256
+ sudo apt install python3-numpy python3-opencv
257
+ ```
258
+
238
259
  **Issue: OpenCV conflicts with system Qt/RViz**
239
260
  ```
240
261
  Problem: pip opencv-python can conflict with system OpenCV
@@ -279,19 +300,34 @@ calibrate-suite
279
300
 
280
301
  **GUI Workflow Tabs:**
281
302
 
282
- | Home/Record | Overlay |
303
+ | Home |
304
+ | ![Home Interface](src/gui/assets/GUI_homepage.png)|
305
+
306
+ | Single-LiDAR Record | Calibrate |
307
+ |---|---|
308
+ | ![Single LiDAR Record](src/gui/assets/single_lidar_record_page.png) | ![Single LiDAR Calibrate](src/gui/assets/single_lidar_calibrate_page.png) |
309
+
310
+ | 2D-3D Record page | 3D-3D Record page |
311
+ |---|---|
312
+ | ![2D-3D Record](src/gui/assets/2d-record-page.png) | ![3D-3D Record](src/gui/assets/3d-record-page.png) |
313
+
314
+ | 2D-3D Calibrate page | 3D-3D Calibrate page |
283
315
  |---|---|
284
- | ![Home Interface](src/gui/assets/GUI_homepage.png) | ![Record Page](src/gui/assets/3d-or-2d-record-page.png) |
316
+ | ![2D-3D Calibrator](src/gui/assets/2d-calibrate-page.png) | ![3D-3D Calibrator](src/gui/assets/3d-calibrate-page.png) |
317
+
318
+ | 2D-3D Overlay page | 3D-3D Overlay page |
319
+ |---|---|
320
+ | ![2D-3D Calibrator](src/gui/assets/2d-overlay-page.png) | ![3D-3D Calibrator](src/gui/assets/3d-overlay-page.png) |
285
321
 
286
322
  ### Command-Line (Quick Calibration)
287
323
  ```bash
288
324
  cd /home/jamih/calib_ws/src/calibrate-suite/src
289
325
 
290
326
  #launching calibrator suite from terminal
291
- # Method 2: Direct Python execution
327
+ # Method 1: Direct Python execution
292
328
  python3 -m gui.main
293
329
 
294
- # Method 3: Direct script execution
330
+ # Method 2: Direct script execution
295
331
  python3 gui/main.py
296
332
 
297
333
  # 2D-3D Calibration (AprilTag-based, recommended)
@@ -313,7 +349,7 @@ python3 2d_3d_data_extractor.py \
313
349
  python3 2d_3d_calibrator.py --data_root ../calib_data/multimodal_captures
314
350
 
315
351
  # 3. Visualize results
316
- python3 visualize_alignment.py --data_root ../calib_data/multimodal_captures
352
+ python3 2d_3d_overlay.py --data_root ../calib_data/multimodal_captures
317
353
  ```
318
354
 
319
355
  ---
@@ -358,11 +394,6 @@ python3 visualize_alignment.py --data_root ../calib_data/multimodal_captures
358
394
  ```
359
395
  GUI → Single LiDAR Tab → Upload PCD files → Select method → Run → View metrics
360
396
  ```
361
-
362
- | Record | Calibrate |
363
- |---|---|
364
- | ![Single LiDAR Record](src/gui/assets/single_lidar_record_page.png) | ![Single LiDAR Calibrate](src/gui/assets/single_lidar_calibrate_page.png) |
365
-
366
397
  ---
367
398
 
368
399
  ### Framework 2: 3D-3D Camera-LiDAR Calibration
@@ -459,17 +490,13 @@ final_extrinsic.yaml:
459
490
  GUI → 2D-3D Tab → Select data directory → Configure quality filter → Run → View metrics
460
491
  ```
461
492
 
462
- | GUI Interface | Alignment Visualization |
463
- |---|---|
464
- | ![2D-3D Calibration](src/gui/assets/3d_or_2d_calibrate-page.png) | ![Alignment Overlay](src/gui/assets/3d-or-2d-overlay_page.png) |
465
-
466
493
  ---
467
494
 
468
- ## 💻 Command-Line Tools
495
+ ## 💻 Command-Line Tools(without GUI)
469
496
 
470
497
  ### Data Extraction Tools
471
498
  ```bash
472
- # Synchronized extraction from ROS2 bag
499
+ # Synchronized extraction from ROS2 bag for 3d-3d mode
473
500
  cd src
474
501
  python3 3d_3d_data_extractor.py \
475
502
  --bag path-to-bag \
@@ -477,13 +504,13 @@ python3 3d_3d_data_extractor.py \
477
504
  --num-poses 20 \
478
505
  --sync-tolerance 100
479
506
 
480
- # Extract camera images only(it will be 3d_3d_data extractor for the 3d_3d mode)
507
+ # Extract camera images only for 2D-3D mode
481
508
  python3 2d_3d_data_extractor.py \
482
509
  --bag path-to-bag \
483
510
  --type camera \
484
511
  --output ../calib_data/camera_images
485
512
 
486
- # Extract LiDAR point clouds only
513
+ # Extract LiDAR point clouds only for 2D-3D mode
487
514
  python3 2d_3d_data_extractor.py \
488
515
  --bag path-to-bag \
489
516
  --type lidar \
@@ -527,12 +554,26 @@ python3 2d_3d_overlay.py \
527
554
  --data_root ../calib_data/multimodal_captures \
528
555
  --pose 1
529
556
 
530
- # generate/Verify corner detection
557
+ # generate/Verify corner detection in lidar and camera
531
558
  python3 camtag_det.py \
532
559
  --data_root ../calib_data/multimodal_captures
533
560
 
534
561
  python3 lidtag_det.py \
535
- --data_root ../calib_data/multimodal_captures
562
+ --data_root ../calib_data/multimodal_captures
563
+ ```
564
+ ### To use the package camera calibrator(if you're using AprilTag Grid)
565
+ ```bash
566
+ # After pip install calibrate-suite
567
+ calibrate-camera --data_root /path/to/data
568
+
569
+ #For PyPI Users (after adding entry point)
570
+ pip install calibrate-suite[cv] # Need OpenCV
571
+ calibrate-camera --data_root ./my_data
572
+
573
+ #if you already have your camera intrinsics,
574
+ #make sure to select them in the GUI before running any tab execution
575
+ #as it has hardcoded intrinsics params(though if you capture with the GUI,
576
+ #the system saves camera_intrinsics.yaml once, but verify path is right in GUI)
536
577
  ```
537
578
  ---
538
579
 
@@ -540,7 +581,7 @@ python3 lidtag_det.py \
540
581
 
541
582
  ### Directory Structure (Package-Created)
542
583
 
543
- When using calibrate-suite, the following directory structure is created(note, they can be changed as per your wish in the GUI):
584
+ When using calibrate-suite, the following directory structure is created(note: they can be changed as per your wish in the GUI or through terminal by passing --data-root flag with folder path):
544
585
 
545
586
  ```
546
587
  calib_data/
@@ -564,6 +605,33 @@ calib_data/
564
605
 
565
606
  ```
566
607
 
608
+ ### Camera Intrinsics Format
609
+
610
+ All calibrate-suite scripts use a standardized `camera_intrinsics.yaml` format. If you have your own camera intrinsics, use this exact format:
611
+
612
+ ```yaml
613
+ # Standard format supported across all calibrate-suite scripts
614
+ camera_matrix: [[fx, 0.0, cx], [0.0, fy, cy], [0.0, 0.0, 1.0]] # 3x3 intrinsic matrix
615
+ dist_coeffs: [k1, k2, p1, p2, k3] # Distortion coefficients
616
+ image_size: [width, height] # Image dimensions in pixels
617
+ distortion_model: "plumb_bob" # OpenCV distortion model
618
+ camera_name: "camera_frame" # Camera frame ID (optional)
619
+
620
+ # Example with real values:
621
+ camera_matrix: [[1364.0, 0.0, 944.66], [0.0, 1363.42, 570.16], [0.0, 0.0, 1.0]]
622
+ dist_coeffs: [0.1, -0.2, 0.001, 0.002, 0.05]
623
+ image_size: [1920, 1080]
624
+ distortion_model: "plumb_bob"
625
+ camera_name: "camera_optical_frame"
626
+ ```
627
+
628
+ **Important Notes:**
629
+ - File must be named exactly `camera_intrinsics.yaml`
630
+ - Place in your data root directory (e.g., `calib_data/multimodal_captures/camera_intrinsics.yaml`)
631
+ - `camera_matrix` must be a 3×3 nested list (not a flat array)
632
+ - `dist_coeffs` must be a flat list of 5 coefficients [k1, k2, p1, p2, k3]
633
+ - All extractors, calibrators, and visualization scripts use this format
634
+
567
635
  ### Board Geometry Configuration
568
636
  ```yaml
569
637
  board_type: "AprilTag"
@@ -757,5 +825,5 @@ A: Run separate calibrations for each camera+LiDAR pair. Combine results using p
757
825
 
758
826
  ## 📄 Version
759
827
 
760
- **Package Version:** 0.1.0
828
+ **Package Version:** 0.1.2
761
829
  **License:** MIT
@@ -19,12 +19,15 @@ src/fleet_server/templates/index.html
19
19
  src/fleet_server/templates/viewer.html
20
20
  src/gui/__init__.py
21
21
  src/gui/main.py
22
+ src/gui/assets/2d-calibrate-page.png
22
23
  src/gui/assets/2d-or-3d-fleet-upload.png
24
+ src/gui/assets/2d-overlay-page.png
25
+ src/gui/assets/2d-record-page.png
23
26
  src/gui/assets/2d_3d_overlay_output.jpg
24
- src/gui/assets/3d-or-2d-overlay_page.png
25
- src/gui/assets/3d-or-2d-record-page.png
27
+ src/gui/assets/3d-calibrate-page.png
28
+ src/gui/assets/3d-overlay-page.png
29
+ src/gui/assets/3d-record-page.png
26
30
  src/gui/assets/3d_3d_overlay_output.png
27
- src/gui/assets/3d_or_2d_calibrate-page.png
28
31
  src/gui/assets/GUI_homepage.png
29
32
  src/gui/assets/hardware_setup.jpeg
30
33
  src/gui/assets/single_lidar_calibrate_page.png
@@ -1,3 +1,4 @@
1
1
  [console_scripts]
2
+ calibrate-camera = calibrate_camera:main
2
3
  calibrate-suite = utils.cli_calibrate:main
3
4
  fleet-server = utils.cli_fleet_server:main
@@ -506,10 +506,21 @@ class ExtractorWidget(QWidget):
506
506
 
507
507
  def stop_process(self):
508
508
  if self.record_process and self.record_process.state() == QProcess.Running:
509
+ self.rec_log.append("🛑 Stopping process and closing RViz...")
509
510
  self.record_process.write(b'q\n')
510
- self.record_process.waitForFinished(1000)
511
+ self.record_process.waitForFinished(3000) # Wait longer for graceful shutdown
511
512
  if self.record_process.state() == QProcess.Running:
513
+ self.rec_log.append("⚠️ Force killing process...")
512
514
  self.record_process.kill()
515
+ self.record_process.waitForFinished(1000)
516
+
517
+ # Force kill any remaining RViz processes
518
+ try:
519
+ import subprocess
520
+ subprocess.run(['pkill', '-f', 'rviz2'], capture_output=True)
521
+ self.rec_log.append("🔧 Cleaned up RViz processes")
522
+ except Exception as e:
523
+ self.rec_log.append(f"⚠️ RViz cleanup warning: {e}")
513
524
 
514
525
  def capture_frame(self):
515
526
  if self.record_process: self.record_process.write(b'n\n')
@@ -63,7 +63,7 @@ Visualization Manager:
63
63
  Enabled: true
64
64
  Invert Rainbow: false
65
65
  Max Color: 255; 255; 255
66
- Max Intensity: 217
66
+ Max Intensity: 206
67
67
  Min Color: 0; 0; 0
68
68
  Min Intensity: 0
69
69
  Name: PointCloud2
@@ -180,5 +180,5 @@ Window Geometry:
180
180
  Views:
181
181
  collapsed: false
182
182
  Width: 1200
183
- X: 720
184
- Y: 79
183
+ X: 555
184
+ Y: 101
File without changes