From 6db4d7a16938a621be54e7216cfde96dc536683d Mon Sep 17 00:00:00 2001 From: brunofavs Date: Thu, 18 Apr 2024 09:40:27 +0100 Subject: [PATCH] pushing test prints #929 --- atom_calibration/scripts/calibrate | 15 +- atom_core/src/atom_core/config_io.py | 3 - atom_core/src/atom_core/dataset_io.py | 32 + atom_core/src/atom_core/utilities.py | 2 +- .../calibration/config.yml | 6 +- .../calibration/summary.pdf | Bin 14015 -> 14353 bytes .../calibration/transforms_graph.json | 2 +- .../rviz/collect_data.rviz | 627 +++++++----------- .../rviz/dataset_playback.rviz | 341 +++++----- .../urdf/optimized.urdf.xacro | 6 +- .../urdf/optimized_w_pattern.urdf.xacro | 8 +- pyrightconfig.json | 6 + 12 files changed, 469 insertions(+), 579 deletions(-) create mode 100644 pyrightconfig.json diff --git a/atom_calibration/scripts/calibrate b/atom_calibration/scripts/calibrate index 09a638cd..2b2be58d 100755 --- a/atom_calibration/scripts/calibrate +++ b/atom_calibration/scripts/calibrate @@ -60,6 +60,8 @@ def signal_handler(sig, frame): # ------------------------------------------------------------------------------- def main(): + + atomStartupPrint('Starting calibration') # --------------------------------------- @@ -239,7 +241,7 @@ def main(): addNoiseToInitialGuess(dataset, args, selected_collection_key) - addNoiseToJointParameters(dataset, args) + # addNoiseToJointParameters(dataset, args) # Verify both arguments were provided @@ -255,8 +257,9 @@ def main(): # print(translation_tf_noise) # print(rotation_tf_noise) - for tf_pair in args['noisy_tf_links']: - addNoiseToTF(dataset,selected_collection_key,tf_pair[0],tf_pair[1],translation_tf_noise,rotation_tf_noise) + # for tf_pair in args['noisy_tf_links']: + # addNoiseToTF(dataset,selected_collection_key,tf_pair[0],tf_pair[1],translation_tf_noise,rotation_tf_noise) + # addNoiseToTF(dataset,selected_collection_key,tf_pair[0],tf_pair[1],1,1) # debugging print # tf_link = generateKey(tf_pair[0],tf_pair[1]) # from pprint import pprint @@ -338,6 +341,7 @@ def main(): # Steaming from the config json, we define a transform to be optimized for each sensor. It could happen that two # or more sensors define the same transform to be optimized (#120). To cope with this we first create a list of # transformations to be optimized and then compute the unique set of that list. + print("Creating sensor transformation parameters ...") sensors_transforms_set = set() for sensor_key, sensor in dataset["sensors"].items(): @@ -380,6 +384,7 @@ def main(): transform_key = generateKey(additional_tf['parent_link'], additional_tf['child_link']) additional_transforms_set.add(transform_key) + if dataset['calibration_config']['additional_tfs'] is not None: for _, additional_tf in dataset['calibration_config']['additional_tfs'].items(): transform_key = generateKey(additional_tf['parent_link'], additional_tf['child_link']) @@ -736,7 +741,9 @@ def main(): opt.computeSparseMatrix() # opt.printSparseMatrix() # opt.printParameters() - opt.getParamNames() + # opt.getParamNames() + + # --------------------------------------- # --- Get a normalizer for each residual type diff --git a/atom_core/src/atom_core/config_io.py b/atom_core/src/atom_core/config_io.py index 3ab0b8e9..f903e924 100644 --- a/atom_core/src/atom_core/config_io.py +++ b/atom_core/src/atom_core/config_io.py @@ -18,9 +18,6 @@ def mutually_inclusive_conditions(A,B): - print(A is None) - print(B is None) - if A is not None and B is not None: return True elif A is None and B is None: diff --git a/atom_core/src/atom_core/dataset_io.py b/atom_core/src/atom_core/dataset_io.py index 590a2251..510e796a 100644 --- a/atom_core/src/atom_core/dataset_io.py +++ b/atom_core/src/atom_core/dataset_io.py @@ -815,6 +815,8 @@ def addNoiseToInitialGuess(dataset, args, selected_collection_key): if sensor_key != dataset['calibration_config']['anchored_sensor']: calibration_child = sensor['calibration_child'] calibration_parent = sensor['calibration_parent'] + print(calibration_child) + print(calibration_parent) addNoiseToTF(dataset, selected_collection_key, calibration_parent, calibration_child, nig_trans, nig_rot) @@ -853,9 +855,12 @@ def addNoiseToTF(dataset, selected_collection_key, calibration_parent, calibrati elif dataset['transforms'][transform_key]['type'] == 'multiple': + for collection_key, collection in dataset["collections"].items(): # Get original transformation + tf_gt = copy.deepcopy(dataset['collections'][collection_key]['transforms'][transform_key]) + quat = dataset['collections'][collection_key]['transforms'][transform_key]['quat'] translation = dataset['collections'][collection_key]['transforms'][transform_key]['trans'] @@ -873,6 +878,33 @@ def addNoiseToTF(dataset, selected_collection_key, calibration_parent, calibrati dataset['collections'][collection_key]['transforms'][transform_key]['quat'] = new_quat dataset['collections'][collection_key]['transforms'][transform_key]['trans'] = list(new_translation) + print(f'{Fore.BLUE}{type(new_quat)}{Style.RESET_ALL}') + print(f'{Fore.BLUE}{type(list(new_translation))}{Style.RESET_ALL}') + + from atom_core.utilities import compareAtomTransforms + from pprint import pprint + + et,er = compareAtomTransforms(tf_gt,dataset['collections'][collection_key]['transforms'][transform_key]) + # pprint(tf_gt) + # pprint(dataset['collections'][collection_key]['transforms'][transform_key]) + + print("\n\nTranslation") + # print(f'{Fore.BLUE}{list(np.around(np.array(translation),4))}{Style.RESET_ALL}') + # print(f'{Fore.RED}{list(np.around(np.array(new_translation),4))}{Style.RESET_ALL}') + print(f'{Fore.GREEN}Diference\n{round(et,3)}{Style.RESET_ALL}') + + + + print("\n\nRotation") + # print(f'{Fore.BLUE}{list(np.around(np.array(euler_angles),4))}{Style.RESET_ALL}') + # print(f'{Fore.RED}{list(np.around(np.array(new_angles),4))}{Style.RESET_ALL}') + + print(f'{Fore.GREEN}Diference\n{round(er,3)}{Style.RESET_ALL}') + + + + # exit() + def copyTFToDataset(calibration_parent, calibration_child, source_dataset, target_dataset): """ diff --git a/atom_core/src/atom_core/utilities.py b/atom_core/src/atom_core/utilities.py index 0fdc45c3..a1afb1ad 100644 --- a/atom_core/src/atom_core/utilities.py +++ b/atom_core/src/atom_core/utilities.py @@ -169,7 +169,7 @@ def printComparisonToGroundTruth(dataset, dataset_initial, dataset_ground_truth, if dataset['calibration_config']['additional_tfs'] is not None: for additional_tf_key, additional_tf in dataset['calibration_config']['additional_tfs'].items(): - transform_key = generateKey(additional_tf["parent_link"], sensor["child_link"]) + transform_key = generateKey(additional_tf["parent_link"], additional_tf["child_link"]) row = [transform_key, Fore.LIGHTCYAN_EX + additional_tf_key + Style.RESET_ALL] transform_calibrated = dataset['collections'][selected_collection_key]['transforms'][transform_key] diff --git a/atom_examples/softbot/softbot_calibration/calibration/config.yml b/atom_examples/softbot/softbot_calibration/calibration/config.yml index 2a9ee02c..658005ce 100755 --- a/atom_examples/softbot/softbot_calibration/calibration/config.yml +++ b/atom_examples/softbot/softbot_calibration/calibration/config.yml @@ -110,9 +110,9 @@ additional_tfs: # This is the transformation (i.e. link) that we be optimized. # # EXAMPLE: - #base_footprint_to_base_link: - # parent_link: "base_footprint" - # child_link: "base_link" + world_to_base_footprint: + parent_link: "world" + child_link: "base_footprint" # ATOM can also calibrate several parameters of your joints. diff --git a/atom_examples/softbot/softbot_calibration/calibration/summary.pdf b/atom_examples/softbot/softbot_calibration/calibration/summary.pdf index aa16a46e20b4abbda193c40d8be104aa7e29a5c7..6e4935ea7a21e98e3f06234d376dc45d7c33e1b2 100755 GIT binary patch delta 12706 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 - Yaw: 2.4221785068511963 + Value: XYOrbit (rviz) + Yaw: 2.752181053161621 Saved: - - Class: rviz/Orbit - Distance: 4.057810306549072 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Field of View: 0.7853981852531433 - Focal Point: - X: -0.424695760011673 - Y: 0.802316427230835 - Z: 0.9974352121353149 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.5447967052459717 - Target Frame: - Yaw: 3.929020881652832 + - Class: rviz/Orbit + Distance: 4.057810306549072 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: -0.424695760011673 + Y: 0.802316427230835 + Z: 0.9974352121353149 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.5447967052459717 + Target Frame: + Value: Orbit (rviz) + Yaw: 3.929020881652832 Window Geometry: Displays: collapsed: false - Height: 1050 + Height: 683 Hide Left Dock: false Hide Right Dock: false - QMainWindow State: 000000ff00000000fd00000004000000000000016a000003b8fc020000000ffb0000001200530065006c0065006300740069006f006e000000003d0000009b0000006b00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000004400000186000000eb00fffffffb0000000a00560069006500770073000000018b00000102000000b900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001a00460072006f006e00740061006c00430061006d006500720061000000012e000001170000000000000000fb000000300062006100730065005f00630061006d006500720061002d004c006100620065006c0073002d0049006d00610067006500000001da000000b30000000000000000fb0000003e00660072006f006e0074005f00720069006700680074005f00630061006d006500720061002d004c006100620065006c0073002d0049006d00610067006501000001d1000001120000001600fffffffb0000003200660072006f006e0074005f00720069006700680074005f00630061006d006500720061002d00430061006d0065007200610000000135000000e70000001600fffffffb0000003c00660072006f006e0074005f006c006500660074005f00630061006d006500720061002d004c006100620065006c0073002d0049006d00610067006501000002ea000001120000001600fffffffb0000003000660072006f006e0074005f006c006500660074005f00630061006d006500720061002d00430061006d00650072006100000002c5000001370000001600ffffff000000010000011c0000024cfc0200000015fb000000220062006100730065005f00630061006d006500720061002d0049006d00610067006500000000410000024c0000000000000000fb0000001c00460072006f006e00740061006c002d00430061006d006500720061000000003d000001260000000000000000fb0000001e0054006f007000520069006700680074002d00430061006d00650072006100000000410000003a0000000000000000fb0000001c0054006f0070004c006500660074002d00430061006d0065007200610000000041000003840000000000000000fb0000000c00430061006d00650072006100000000410000024c0000000000000000fb0000000c00430061006d006500720061010000003d000003420000000000000000fb0000002a0054006f0070005200690067006800740049006d006100670065002d004c006100620065006c0065006400000000410000024c0000000000000000fb0000000c00430061006d00650072006101000000410000024c0000000000000000fb000000280054006f0070004c0065006600740049006d006100670065002d004c006100620065006c006500640000000177000001160000000000000000fb000000340054006f00700043005200470042004400430061006d002d0049006d006100670065002d004c006100620065006c006c006500640000000120000002a50000000000000000fb0000003a0054006f00700043005200470042004400430061006d006500720061002d0049006d006100670065002d004c006100620065006c006c0065006401000001630000012a0000000000000000fb000000280054006f00700043005200470042004400430061006d006500720061002d0049006d00610067006500000001da000000b30000000000000000fb0000001a0054006f0070004c006500660074002d0049006d00610067006501000000410000024c0000000000000000fb0000001c0054006f007000520069006700680074002d0049006d0061006700650100000169000001240000000000000000fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001e004c00650066007400530074006500720065006f0049006d006100670065000000003d000001340000000000000000fb000000200052006900670068007400530074006500720065006f0049006d0061006700650000000122000000dd0000000000000000fb0000001600460072006f006e007400430061006d006500720061000000003d0000008b0000000000000000fb0000002a0052006900670068007400530074006500720065006f005700690064006500430061006d00650072006100000000ce0000008a0000000000000000fb00000026004c00650066007400530074006500720065006f00570069006400650049006d006100670065000000003d0000019d0000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065000000000000000780000004f900fffffffb0000000800540069006d006501000000000000045000000000000000000000060f000003b800000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd00000004000000000000016a0000024cfc020000000bfb0000001200530065006c0065006300740069006f006e000000003d0000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c00610079007301000000410000024c000000dd00fffffffb0000000a00560069006500770073000000018b00000102000000b000fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001a00460072006f006e00740061006c00430061006d006500720061000000012e000001170000000000000000fb000000300062006100730065005f00630061006d006500720061002d004c006100620065006c0073002d0049006d00610067006500000001da000000b30000000000000000000000010000011c0000024cfc0200000015fb000000220062006100730065005f00630061006d006500720061002d0049006d00610067006500000000410000024c0000001600fffffffb0000001c00460072006f006e00740061006c002d00430061006d006500720061000000003d000001260000000000000000fb0000001e0054006f007000520069006700680074002d00430061006d00650072006100000000410000003a0000000000000000fb0000001c0054006f0070004c006500660074002d00430061006d0065007200610000000041000003840000000000000000fb0000000c00430061006d00650072006100000000410000024c0000000000000000fb0000000c00430061006d006500720061010000003d000003420000000000000000fb0000002a0054006f0070005200690067006800740049006d006100670065002d004c006100620065006c0065006400000000410000024c0000000000000000fb0000000c00430061006d00650072006101000000410000024c0000000000000000fb000000280054006f0070004c0065006600740049006d006100670065002d004c006100620065006c006500640000000177000001160000000000000000fb000000340054006f00700043005200470042004400430061006d002d0049006d006100670065002d004c006100620065006c006c006500640000000120000002a50000000000000000fb0000003a0054006f00700043005200470042004400430061006d006500720061002d0049006d006100670065002d004c006100620065006c006c0065006401000001630000012a0000000000000000fb000000280054006f00700043005200470042004400430061006d006500720061002d0049006d00610067006500000001da000000b30000000000000000fb0000001a0054006f0070004c006500660074002d0049006d00610067006501000000410000024c0000000000000000fb0000001c0054006f007000520069006700680074002d0049006d0061006700650100000169000001240000000000000000fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001e004c00650066007400530074006500720065006f0049006d006100670065000000003d000001340000000000000000fb000000200052006900670068007400530074006500720065006f0049006d0061006700650000000122000000dd0000000000000000fb0000001600460072006f006e007400430061006d006500720061000000003d0000008b0000000000000000fb0000002a0052006900670068007400530074006500720065006f005700690064006500430061006d00650072006100000000ce0000008a0000000000000000fb00000026004c00650066007400530074006500720065006f00570069006400650049006d006100670065000000003d0000019d0000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d00650000000000000007800000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000003e60000024c00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -428,14 +287,8 @@ Window Geometry: collapsed: false Views: collapsed: false - Width: 1920 + Width: 1366 X: 0 - Y: 0 - front_left_camera-Camera: - collapsed: false - front_left_camera-Labels-Image: - collapsed: false - front_right_camera-Camera: - collapsed: false - front_right_camera-Labels-Image: + Y: 28 + base_camera-Image: collapsed: false diff --git a/atom_examples/softbot/softbot_calibration/rviz/dataset_playback.rviz b/atom_examples/softbot/softbot_calibration/rviz/dataset_playback.rviz index f3ef99ab..f80716d8 100755 --- a/atom_examples/softbot/softbot_calibration/rviz/dataset_playback.rviz +++ b/atom_examples/softbot/softbot_calibration/rviz/dataset_playback.rviz @@ -1,210 +1,207 @@ Panels: - - Class: rviz/Displays - Help Height: 0 - Name: Displays - Property Tree Widget: - Expanded: - - /Global Options1 - - /Robot Meshes1 - - /lidar3d-Labels3d-PointCloud21 - Splitter Ratio: 0.446540892124176 - Tree Height: 431 - - Class: rviz/Selection - Name: Selection - - Class: rviz/Tool Properties +- Class: rviz/Displays + Help Height: 0 + Name: Displays + Property Tree Widget: Expanded: - - /2D Pose Estimate1 - - /2D Nav Goal1 - - /Publish Point1 - Name: Tool Properties - Splitter Ratio: 0.5886790156364441 - - Class: rviz/Views - Expanded: - - /Current View1 - Name: Views - Splitter Ratio: 0.5 - - Class: rviz/Time - Experimental: false - Name: Time - SyncMode: 0 - SyncSource: lidar3d-Labels3d-PointCloud2 + - /Global Options1 + - /base_camera-Image1 + Splitter Ratio: 0.763005793094635 + Tree Height: 523 +- Class: rviz/Selection + Name: Selection +- Class: rviz/Tool Properties + Expanded: + - /2D Pose Estimate1 + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 +- Class: rviz/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 +- Class: rviz/Time + Experimental: false + Name: Time + SyncMode: 0 + SyncSource: '' Preferences: PromptSaveOnExit: true Toolbars: toolButtonStyle: 2 Visualization Manager: - Class: "" + Class: '' Displays: - - Alpha: 0.5 - Cell Size: 1 - Class: rviz/Grid - Color: 160; 160; 164 - Enabled: false - Line Style: - Line Width: 0.019999999552965164 - Value: Lines - Name: Grid - Normal Cell Count: 0 - Offset: - X: 0 - Y: 0 - Z: 0 - Plane: XY - Plane Cell Count: 10 - Reference Frame: world - Value: false - - Class: rviz/TF - Enabled: false - Frame Timeout: 15 - Frames: - All Enabled: true - Marker Alpha: 1 - Marker Scale: 1 - Name: TF - Show Arrows: false - Show Axes: true - Show Names: false - Tree: - {} - Update Interval: 0 - Value: false - - Class: rviz/MarkerArray - Enabled: false - Marker Topic: /dataset_playback/robot_meshes - Name: Robot Meshes - Namespaces: - {} - Queue Size: 10 - Value: false - - Class: rviz/Image - Enabled: true - Image Topic: /front_left_camera/rgb/image_raw/labeled2d - Max Value: 1 - Median window: 5 - Min Value: 0 - Name: front_left_camera-Labels-Image - Normalize Range: true - Queue Size: 2 - Transport Hint: raw - Unreliable: false - Value: true - - Class: rviz/Image - Enabled: true - Image Topic: /front_right_camera/rgb/image_raw/labeled2d - Max Value: 1 - Median window: 5 - Min Value: 0 - Name: front_right_camera-Labels-Image - Normalize Range: true - Queue Size: 2 - Transport Hint: raw - Unreliable: false - Value: true - - Alpha: 1 - Autocompute Intensity Bounds: true - Autocompute Value Bounds: - Max Value: 10 - Min Value: -10 - Value: true - Axis: Z - Channel Name: intensity - Class: rviz/PointCloud2 - Color: 255; 237; 111 - Color Transformer: RGB8 - Decay Time: 0 - Enabled: true - Invert Rainbow: false - Max Color: 255; 255; 255 - Min Color: 0; 0; 0 - Name: lidar3d-Labels3d-PointCloud2 - Position Transformer: XYZ - Queue Size: 10 - Selectable: true - Size (Pixels): 3 - Size (m): 0.019999999552965164 - Style: Spheres - Topic: /lidar3d/points/labeled3d - Unreliable: false - Use Fixed Frame: true - Use rainbow: true + - Alpha: 0.5 + Cell Size: 1 + Class: rviz/Grid + Color: 160; 160; 164 + Enabled: true + Line Style: + Line Width: 0.02 + Value: Lines + Name: Grid + Normal Cell Count: 0 + Offset: + X: 0 + Y: 0 + Z: 0 + Plane: XY + Plane Cell Count: 10 + Reference Frame: world + Value: true + - Class: rviz/TF + Enabled: true + Frame Timeout: 15 + Frames: + All Enabled: true + Marker Scale: 1 + Name: TF + Show Arrows: false + Show Axes: true + Show Names: false + Tree: {} + Update Interval: 0 + Value: false + - Class: rviz/MarkerArray + Enabled: true + Marker Topic: /dataset_playback/robot_meshes + Name: Robot Meshes + Namespaces: {} + Queue Size: 10 + Value: true + - Class: rviz/Image + Enabled: true + Image Topic: /front_left_camera/rgb/image_raw/labeled2d + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: front_left_camera-Labels-Image + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: false + - Class: rviz/Image + Enabled: true + Image Topic: /front_right_camera/rgb/image_raw/labeled2d + Max Value: 1 + Median window: 5 + Min Value: 0 + Name: front_right_camera-Labels-Image + Normalize Range: true + Queue Size: 2 + Transport Hint: raw + Unreliable: false + Value: false + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 237; 111 + Color Transformer: RGB8 + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Max Intensity: 4096 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: lidar3d-Labels3d-PointCloud2 + Position Transformer: '' + Queue Size: 10 + Selectable: true + Size (Pixels): 3 + Size (m): 0.02 + Style: Spheres + Topic: /lidar3d/points/labeled3d + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: true Enabled: true Global Options: - Background Color: 34; 34; 34 + Background Color: 255; 255; 255 Default Light: true Fixed Frame: world Frame Rate: 30 Name: root Tools: - - Class: rviz/Interact - Hide Inactive Objects: true - - Class: rviz/MoveCamera - - Class: rviz/Select - - Class: rviz/FocusCamera - - Class: rviz/Measure - - Class: rviz/SetInitialPose - Theta std deviation: 0.2617993950843811 - Topic: /initialpose - X std deviation: 0.5 - Y std deviation: 0.5 - - Class: rviz/SetGoal - Topic: /move_base_simple/goal - - Class: rviz/PublishPoint - Single click: true - Topic: /clicked_point - - Class: rviz_visual_tools/KeyTool - - Class: rviz_plugin_selected_points_publisher/SelectedPointsPublisher + - Class: rviz/Interact + Hide Inactive Objects: true + - Class: rviz/MoveCamera + - Class: rviz/Select + - Class: rviz/FocusCamera + - Class: rviz/Measure + - Class: rviz/SetInitialPose + Theta std deviation: 0.2617993950843811 + Topic: /initialpose + X std deviation: 0.5 + Y std deviation: 0.5 + - Class: rviz/SetGoal + Topic: /move_base_simple/goal + - Class: rviz/PublishPoint + Single click: true + Topic: /clicked_point + - Class: rviz_visual_tools/KeyTool Value: true Views: Current: Class: rviz/XYOrbit - Distance: 1.5377488136291504 + Distance: 8.35604476928711 Enable Stereo Rendering: Stereo Eye Separation: 0.05999999865889549 Stereo Focal Distance: 1 Swap Stereo Eyes: false Value: false - Field of View: 0.7853981852531433 Focal Point: - X: 1.5510215759277344 - Y: 0.2774001955986023 + X: 0.3314114809036255 + Y: 0.6464090347290039 Z: 9.527429938316345e-07 Focal Shape Fixed Size: true Focal Shape Size: 0.05000000074505806 Invert Z Axis: false Name: Current View Near Clip Distance: 0.009999999776482582 - Pitch: -0.17520256340503693 + Pitch: 0.46479693055152893 Target Frame: - Yaw: 3.017179489135742 + Value: XYOrbit (rviz) + Yaw: 2.752181053161621 Saved: - - Class: rviz/Orbit - Distance: 4.057810306549072 - Enable Stereo Rendering: - Stereo Eye Separation: 0.05999999865889549 - Stereo Focal Distance: 1 - Swap Stereo Eyes: false - Value: false - Field of View: 0.7853981852531433 - Focal Point: - X: -0.424695760011673 - Y: 0.802316427230835 - Z: 0.9974352121353149 - Focal Shape Fixed Size: true - Focal Shape Size: 0.05000000074505806 - Invert Z Axis: false - Name: Orbit - Near Clip Distance: 0.009999999776482582 - Pitch: 0.5447967052459717 - Target Frame: - Yaw: 3.929020881652832 + - Class: rviz/Orbit + Distance: 4.057810306549072 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Focal Point: + X: -0.424695760011673 + Y: 0.802316427230835 + Z: 0.9974352121353149 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Orbit + Near Clip Distance: 0.009999999776482582 + Pitch: 0.5447967052459717 + Target Frame: + Value: Orbit (rviz) + Yaw: 3.929020881652832 Window Geometry: Displays: collapsed: false - Height: 1050 + Height: 683 Hide Left Dock: false Hide Right Dock: false - QMainWindow State: 000000ff00000000fd000000040000000000000224000003b8fc020000000dfb0000001200530065006c0065006300740069006f006e000000003d0000009b0000006b00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c0061007900730000000044000001f0000000eb00fffffffb0000000a00560069006500770073000000018b00000102000000b900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001a00460072006f006e00740061006c00430061006d006500720061000000012e000001170000000000000000fb000000300062006100730065005f00630061006d006500720061002d004c006100620065006c0073002d0049006d00610067006500000001da000000b30000000000000000fb0000003e00660072006f006e0074005f00720069006700680074005f00630061006d006500720061002d004c006100620065006c0073002d0049006d0061006700650100000044000001d60000001600fffffffb0000003c00660072006f006e0074005f006c006500660074005f00630061006d006500720061002d004c006100620065006c0073002d0049006d0061006700650100000221000001db0000001600ffffff000000010000011c0000024cfc0200000015fb000000220062006100730065005f00630061006d006500720061002d0049006d00610067006500000000410000024c0000000000000000fb0000001c00460072006f006e00740061006c002d00430061006d006500720061000000003d000001260000000000000000fb0000001e0054006f007000520069006700680074002d00430061006d00650072006100000000410000003a0000000000000000fb0000001c0054006f0070004c006500660074002d00430061006d0065007200610000000041000003840000000000000000fb0000000c00430061006d00650072006100000000410000024c0000000000000000fb0000000c00430061006d006500720061010000003d000003420000000000000000fb0000002a0054006f0070005200690067006800740049006d006100670065002d004c006100620065006c0065006400000000410000024c0000000000000000fb0000000c00430061006d00650072006101000000410000024c0000000000000000fb000000280054006f0070004c0065006600740049006d006100670065002d004c006100620065006c006500640000000177000001160000000000000000fb000000340054006f00700043005200470042004400430061006d002d0049006d006100670065002d004c006100620065006c006c006500640000000120000002a50000000000000000fb0000003a0054006f00700043005200470042004400430061006d006500720061002d0049006d006100670065002d004c006100620065006c006c0065006401000001630000012a0000000000000000fb000000280054006f00700043005200470042004400430061006d006500720061002d0049006d00610067006500000001da000000b30000000000000000fb0000001a0054006f0070004c006500660074002d0049006d00610067006501000000410000024c0000000000000000fb0000001c0054006f007000520069006700680074002d0049006d0061006700650100000169000001240000000000000000fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001e004c00650066007400530074006500720065006f0049006d006100670065000000003d000001340000000000000000fb000000200052006900670068007400530074006500720065006f0049006d0061006700650000000122000000dd0000000000000000fb0000001600460072006f006e007400430061006d006500720061000000003d0000008b0000000000000000fb0000002a0052006900670068007400530074006500720065006f005700690064006500430061006d00650072006100000000ce0000008a0000000000000000fb00000026004c00650066007400530074006500720065006f00570069006400650049006d006100670065000000003d0000019d0000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d0065000000000000000780000004f900fffffffb0000000800540069006d0065010000000000000450000000000000000000000555000003b800000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + QMainWindow State: 000000ff00000000fd00000004000000000000016a0000024cfc020000000bfb0000001200530065006c0065006300740069006f006e000000003d0000009b0000006400fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c00610079007301000000410000024c000000dd00fffffffb0000000a00560069006500770073000000018b00000102000000b000fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261fb0000001a00460072006f006e00740061006c00430061006d006500720061000000012e000001170000000000000000fb000000300062006100730065005f00630061006d006500720061002d004c006100620065006c0073002d0049006d00610067006500000001da000000b30000000000000000000000010000011c0000024cfc0200000015fb000000220062006100730065005f00630061006d006500720061002d0049006d00610067006500000000410000024c0000001600fffffffb0000001c00460072006f006e00740061006c002d00430061006d006500720061000000003d000001260000000000000000fb0000001e0054006f007000520069006700680074002d00430061006d00650072006100000000410000003a0000000000000000fb0000001c0054006f0070004c006500660074002d00430061006d0065007200610000000041000003840000000000000000fb0000000c00430061006d00650072006100000000410000024c0000000000000000fb0000000c00430061006d006500720061010000003d000003420000000000000000fb0000002a0054006f0070005200690067006800740049006d006100670065002d004c006100620065006c0065006400000000410000024c0000000000000000fb0000000c00430061006d00650072006101000000410000024c0000000000000000fb000000280054006f0070004c0065006600740049006d006100670065002d004c006100620065006c006500640000000177000001160000000000000000fb000000340054006f00700043005200470042004400430061006d002d0049006d006100670065002d004c006100620065006c006c006500640000000120000002a50000000000000000fb0000003a0054006f00700043005200470042004400430061006d006500720061002d0049006d006100670065002d004c006100620065006c006c0065006401000001630000012a0000000000000000fb000000280054006f00700043005200470042004400430061006d006500720061002d0049006d00610067006500000001da000000b30000000000000000fb0000001a0054006f0070004c006500660074002d0049006d00610067006501000000410000024c0000000000000000fb0000001c0054006f007000520069006700680074002d0049006d0061006700650100000169000001240000000000000000fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000001e004c00650066007400530074006500720065006f0049006d006100670065000000003d000001340000000000000000fb000000200052006900670068007400530074006500720065006f0049006d0061006700650000000122000000dd0000000000000000fb0000001600460072006f006e007400430061006d006500720061000000003d0000008b0000000000000000fb0000002a0052006900670068007400530074006500720065006f005700690064006500430061006d00650072006100000000ce0000008a0000000000000000fb00000026004c00650066007400530074006500720065006f00570069006400650049006d006100670065000000003d0000019d0000000000000000fb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007800000003efc0100000002fb0000000800540069006d00650000000000000007800000030000fffffffb0000000800540069006d00650100000000000004500000000000000000000003e60000024c00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 Selection: collapsed: false Time: @@ -213,10 +210,8 @@ Window Geometry: collapsed: false Views: collapsed: false - Width: 1920 + Width: 1366 X: 0 - Y: 0 - front_left_camera-Labels-Image: - collapsed: false - front_right_camera-Labels-Image: + Y: 28 + base_camera-Image: collapsed: false diff --git a/atom_examples/softbot/softbot_calibration/urdf/optimized.urdf.xacro b/atom_examples/softbot/softbot_calibration/urdf/optimized.urdf.xacro index 30018af4..d3939d9f 100644 --- a/atom_examples/softbot/softbot_calibration/urdf/optimized.urdf.xacro +++ b/atom_examples/softbot/softbot_calibration/urdf/optimized.urdf.xacro @@ -373,7 +373,7 @@ - + @@ -493,7 +493,7 @@ false - + @@ -586,7 +586,7 @@ false - + diff --git a/atom_examples/softbot/softbot_calibration/urdf/optimized_w_pattern.urdf.xacro b/atom_examples/softbot/softbot_calibration/urdf/optimized_w_pattern.urdf.xacro index 95b75092..0a292cc1 100644 --- a/atom_examples/softbot/softbot_calibration/urdf/optimized_w_pattern.urdf.xacro +++ b/atom_examples/softbot/softbot_calibration/urdf/optimized_w_pattern.urdf.xacro @@ -373,7 +373,7 @@ - + @@ -493,7 +493,7 @@ false - + @@ -586,7 +586,7 @@ false - + @@ -655,7 +655,7 @@ - + diff --git a/pyrightconfig.json b/pyrightconfig.json new file mode 100644 index 00000000..7d95bb8e --- /dev/null +++ b/pyrightconfig.json @@ -0,0 +1,6 @@ +{ + "executionEnvironments": [ + {"root": "src"} + ] +} +