reading file /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_experiments/01_initial_estimate_vs_error/batch_mmtbot_partial.yml Loaded config file /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_experiments/01_initial_estimate_vs_error/batch_mmtbot_partial.yml (rendered with nested variable substitution) {'home': '/home/daniela', 'dataset_path': '/home/daniela/datasets/train_dataset_1', 'cmd_prefix': 'rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json ', 'output_folder': '/home/daniela/datasets/train_dataset_1/results_partial', 'batches': [{'name': 'partial_0', 'cmd': "rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16]' -nig 0.05 0.02 -ss 1", 'files_to_collect': ['/home/daniela/datasets/train_dataset_1/atom_calibration.json', '/tmp/optimized.urdf.xacro']}, {'name': 'partial_1', 'cmd': "rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1]' -nig 0.05 0.02 -ss 1", 'files_to_collect': ['/home/daniela/datasets/train_dataset_1/atom_calibration.json', '/tmp/optimized.urdf.xacro']}, {'name': 'partial_3', 'cmd': "rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1,2,4]' -nig 0.05 0.02 -ss 1", 'files_to_collect': ['/home/daniela/datasets/train_dataset_1/atom_calibration.json', '/tmp/optimized.urdf.xacro']}, {'name': 'partial_6', 'cmd': "rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1,2,4,6,8,13]' -nig 0.05 0.02 -ss 1", 'files_to_collect': ['/home/daniela/datasets/train_dataset_1/atom_calibration.json', '/tmp/optimized.urdf.xacro']}, {'name': 'partial_9', 'cmd': "rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1,2,4,6,8,13,14,19,24]' -nig 0.05 0.02 -ss 1", 'files_to_collect': ['/home/daniela/datasets/train_dataset_1/atom_calibration.json', '/tmp/optimized.urdf.xacro']}]} Batch0, executing command: rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16]' -nig 0.05 0.02 -ss 1 Batch0 terminated, stdout is: Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_0.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_3.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_5.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_7.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_9.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_10.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_11.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_12.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_15.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_16.pcd Skipped loading images and point clouds for collections: ['1', '2', '4', '6', '8', '13', '14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29']. Deleted collections: ['1', '2', '4', '6', '8', '13', '14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'] because of the -csf flag. Deleted collections: [] because these are incomplete. If you want to use them set the use_incomplete_collections flag. Deleted collections: []: at least one detection by a camera should be present. After filtering, will use 10 collections: dict_keys(['0', '3', '5', '7', '9', '10', '11', '12', '15', '16']) Loaded dataset containing 3 sensors and 10 collections. Initializing optimizer... Selected collection key is 0 Anchored sensor is  Creating parameters ... Creating residuals ... RNG Seed: 1 Computing sparse matrix ... Initializing optimization ... Starting optimization ... Iteration Total nfev Cost Cost reduction Step norm Optimality 0 1 1.1829e+05 3.38e+06 1 2 7.0965e+03 1.11e+05 1.96e-01 7.08e+05 2 3 5.4213e+02 6.55e+03 1.54e-01 9.33e+04 3 4 2.5826e+01 5.16e+02 7.85e-02 2.21e+04 4 5 8.8892e+00 1.69e+01 3.88e-02 4.04e+03 5 6 7.4846e+00 1.40e+00 1.99e-02 3.02e+03 6 7 7.4756e+00 8.98e-03 1.55e-02 3.28e+03 7 8 7.3663e+00 1.09e-01 1.18e-02 3.58e+03 8 9 6.9283e+00 4.38e-01 2.78e-03 3.16e+03 9 11 6.7536e+00 1.75e-01 6.10e-04 4.18e+02 10 12 6.7134e+00 4.02e-02 6.55e-04 3.55e+02 11 13 6.6933e+00 2.00e-02 7.67e-04 4.37e+02 12 14 6.6818e+00 1.15e-02 7.44e-04 5.74e+02 13 16 6.6748e+00 7.06e-03 1.57e-04 2.87e+02 14 17 6.6718e+00 2.95e-03 1.49e-04 2.64e+02 15 18 6.6695e+00 2.36e-03 1.53e-04 1.92e+02 16 19 6.6674e+00 2.11e-03 1.43e-04 2.04e+02 17 20 6.6654e+00 1.92e-03 1.34e-04 1.58e+02 18 21 6.6637e+00 1.76e-03 1.22e-04 1.80e+02 19 22 6.6620e+00 1.64e-03 1.11e-04 1.46e+02 20 23 6.6605e+00 1.53e-03 1.04e-04 1.70e+02 21 24 6.6590e+00 1.46e-03 9.18e-05 1.43e+02 22 25 6.6576e+00 1.39e-03 1.93e-04 1.66e+02 23 26 6.6563e+00 1.34e-03 1.21e-04 1.45e+02 24 27 6.6550e+00 1.29e-03 9.84e-05 1.68e+02 25 28 6.6538e+00 1.25e-03 8.18e-05 1.51e+02 26 29 6.6526e+00 1.20e-03 8.57e-05 1.73e+02 27 30 6.6514e+00 1.16e-03 7.38e-05 1.61e+02 28 31 6.6503e+00 1.10e-03 8.50e-05 1.85e+02 29 32 6.6493e+00 1.03e-03 7.62e-05 1.78e+02 30 33 6.6484e+00 9.04e-04 9.73e-05 2.04e+02 31 34 6.6477e+00 6.85e-04 9.84e-05 2.02e+02 32 35 6.6466e+00 1.08e-03 4.09e-05 4.34e+01 33 36 6.6463e+00 3.28e-04 2.47e-05 5.82e+01 34 37 6.6457e+00 6.02e-04 2.26e-05 4.31e+01 35 38 6.6445e+00 1.19e-03 4.46e-05 5.92e+01 36 39 6.6422e+00 2.33e-03 7.35e-05 4.22e+01 37 40 6.6377e+00 4.48e-03 1.17e-04 7.04e+01 38 41 6.6296e+00 8.11e-03 1.90e-04 5.84e+01 39 42 6.6152e+00 1.44e-02 3.88e-04 9.99e+01 40 43 6.5910e+00 2.42e-02 7.67e-04 6.92e+01 41 44 6.5587e+00 3.23e-02 1.55e-03 9.67e+01 42 45 6.5423e+00 1.64e-02 3.02e-03 1.51e+02 43 47 6.5389e+00 3.47e-03 4.88e-04 1.75e+02 44 48 6.5376e+00 1.31e-03 4.95e-04 1.95e+02 45 50 6.5375e+00 7.25e-05 8.34e-05 2.17e+02 46 52 6.5371e+00 3.77e-04 1.48e-05 6.87e+01 47 54 6.5371e+00 4.65e-05 6.24e-06 9.74e+00 48 55 6.5371e+00 2.71e-06 7.10e-06 1.03e+01 49 56 6.5371e+00 4.81e-08 6.91e-06 9.88e+00 50 57 6.5371e+00 2.46e-06 1.64e-06 2.01e+00 51 58 6.5371e+00 5.44e-07 1.64e-06 1.59e+00 52 59 6.5371e+00 3.59e-07 1.24e-06 1.78e+00 53 60 6.5371e+00 6.60e-07 1.32e-06 1.47e+00 54 61 6.5370e+00 1.27e-06 1.44e-06 1.65e+00 55 62 6.5370e+00 2.46e-06 2.18e-06 1.54e+00 56 63 6.5370e+00 4.82e-06 4.08e-06 1.87e+00 57 64 6.5370e+00 9.35e-06 7.72e-06 2.06e+00 58 65 6.5370e+00 1.81e-05 1.53e-05 2.12e+00 59 66 6.5370e+00 3.38e-05 3.03e-05 3.04e+00 60 67 6.5369e+00 5.87e-05 6.10e-05 2.55e+00 61 68 6.5368e+00 8.17e-05 1.22e-04 6.88e+00 62 69 6.5368e+00 3.68e-05 1.72e-04 3.20e+00 63 71 6.5368e+00 1.18e-06 2.58e-05 4.55e+00 64 73 6.5368e+00 6.66e-08 4.72e-06 5.31e+00 65 75 6.5368e+00 4.19e-07 4.38e-07 1.80e+00 66 77 6.5368e+00 5.72e-08 2.11e-07 2.17e-01 `ftol` termination condition is satisfied. Function evaluations 77, initial cost 1.1829e+05, final cost 6.5368e+00, first-order optimality 2.17e-01. ------------- Optimization finished: `ftol` termination condition is satisfied. Final errors: Sensor 3dlidar 0.00526892329847325 Sensor hand_camera 0.1906305266546242 Sensor world_camera 0.33696692634011755 Saving the json output file to /home/daniela/datasets/train_dataset_1/atom_calibration.json, please wait, it could take a while ... Completed. Parsing description file /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro Executing command: xacro /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro -o /tmp/description.urdf Found joint: 3dlidar_base_mount_joint Replacing xyz = [0.0, 0.0, 0.001] by [0.006350508564110722, 0.007117033065257243, -0.008034834383115324] Replacing rpy = [0.0, 0.0, 0.0] by [-0.0021197099014751432, -0.00019401991136827861, -0.001860229942636417] Found joint: hand_camera_joint Replacing xyz = [-0.02, 0.05, 0.07] by [-0.018123347218847133, 0.07402072303634166, 0.06986761964770923] Replacing rpy = [0.0, 0.0, 0.0] by [0.0004373042822350975, 0.000779739903593617, -0.00031057954120079664] Found joint: world_camera_joint Replacing xyz = [0.02, 0.07, 0.015] by [0.019348571550864085, 0.0942396124415095, 0.014241738590994375] Replacing rpy = [0.0, 0.0, 0.0] by [0.00012672439902903552, 0.0002116232552489597, -0.0010156269355663843] Optimized xacro file saved to /tmp/optimized.urdf.xacro . You can use it as a ROS robot_description. Moving file /home/daniela/datasets/train_dataset_1/atom_calibration.json to /home/daniela/datasets/train_dataset_1/results_partial/00_partial_0_atom_calibration.json Moving file /tmp/optimized.urdf.xacro to /home/daniela/datasets/train_dataset_1/results_partial/00_partial_0_optimized.urdf.xacro Command executed in 34.35598 secs. Batch1, executing command: rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1]' -nig 0.05 0.02 -ss 1 Batch1 terminated, stdout is: Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_0.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_1.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_3.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_5.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_7.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_9.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_10.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_11.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_12.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_15.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_16.pcd Skipped loading images and point clouds for collections: ['2', '4', '6', '8', '13', '14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29']. Deleted collections: ['2', '4', '6', '8', '13', '14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'] because of the -csf flag. Deleted collections: [] because these are incomplete. If you want to use them set the use_incomplete_collections flag. Deleted collections: []: at least one detection by a camera should be present. After filtering, will use 11 collections: dict_keys(['0', '1', '3', '5', '7', '9', '10', '11', '12', '15', '16']) Loaded dataset containing 3 sensors and 11 collections. Initializing optimizer... Selected collection key is 0 Anchored sensor is  Creating parameters ... Creating residuals ... RNG Seed: 1 Computing sparse matrix ... Initializing optimization ... Starting optimization ... Iteration Total nfev Cost Cost reduction Step norm Optimality 0 1 1.2953e+05 3.69e+06 1 2 7.7777e+03 1.22e+05 2.01e-01 7.82e+05 2 3 5.1669e+02 7.26e+03 1.61e-01 8.26e+04 3 4 2.6178e+01 4.91e+02 7.46e-02 2.05e+04 4 5 9.4149e+00 1.68e+01 4.13e-02 5.74e+03 5 6 8.4457e+00 9.69e-01 2.28e-02 6.47e+03 6 7 8.3773e+00 6.84e-02 1.89e-02 6.51e+03 7 9 7.8960e+00 4.81e-01 1.80e-03 4.40e+03 8 11 7.6343e+00 2.62e-01 6.06e-04 6.55e+02 9 12 7.5837e+00 5.06e-02 6.82e-04 2.79e+02 10 13 7.5328e+00 5.09e-02 1.23e-03 6.67e+02 11 14 7.4854e+00 4.74e-02 1.61e-03 5.46e+02 12 15 7.4645e+00 2.09e-02 1.08e-03 8.48e+02 13 16 7.4552e+00 9.31e-03 7.19e-04 9.49e+02 14 18 7.4545e+00 6.28e-04 3.48e-04 1.17e+03 15 19 7.4397e+00 1.49e-02 1.36e-04 1.65e+02 16 20 7.4388e+00 8.14e-04 7.22e-05 8.09e+01 17 21 7.4381e+00 7.75e-04 5.46e-05 1.85e+02 18 22 7.4373e+00 7.64e-04 5.52e-05 8.97e+01 19 23 7.4366e+00 7.39e-04 5.49e-05 2.01e+02 20 24 7.4359e+00 7.20e-04 5.51e-05 1.08e+02 21 25 7.4352e+00 6.84e-04 5.95e-05 2.23e+02 22 26 7.4345e+00 6.40e-04 6.18e-05 1.37e+02 23 27 7.4340e+00 5.60e-04 7.13e-05 2.57e+02 24 28 7.4335e+00 4.42e-04 8.07e-05 1.81e+02 25 29 7.4328e+00 7.56e-04 3.29e-05 4.14e+01 26 30 7.4326e+00 2.18e-04 1.79e-05 5.44e+01 27 31 7.4322e+00 3.91e-04 1.81e-05 4.46e+01 28 32 7.4314e+00 7.73e-04 3.46e-05 5.33e+01 29 33 7.4299e+00 1.53e-03 6.84e-05 4.33e+01 30 34 7.4269e+00 2.96e-03 1.36e-04 5.08e+01 31 35 7.4214e+00 5.48e-03 2.53e-04 4.23e+01 32 36 7.4117e+00 9.70e-03 4.64e-04 4.81e+01 33 37 7.3954e+00 1.63e-02 9.12e-04 5.79e+01 34 38 7.3744e+00 2.10e-02 1.75e-03 7.58e+01 35 39 7.3673e+00 7.09e-03 3.07e-03 3.79e+01 36 41 7.3646e+00 2.71e-03 6.35e-04 8.89e+01 37 42 7.3642e+00 3.57e-04 1.22e-03 9.04e+01 38 43 7.3637e+00 5.05e-04 3.46e-04 1.14e+02 39 45 7.3637e+00 2.41e-05 8.24e-05 1.49e+02 40 47 7.3635e+00 2.05e-04 1.04e-05 5.21e+01 41 49 7.3635e+00 3.44e-05 4.78e-06 1.20e+01 42 51 7.3635e+00 4.32e-06 2.39e-06 2.23e+00 43 52 7.3635e+00 1.05e-06 2.86e-06 1.85e+00 44 53 7.3635e+00 1.30e-06 3.10e-06 1.79e+00 45 54 7.3635e+00 2.24e-06 3.19e-06 3.45e+00 46 55 7.3635e+00 4.23e-06 4.87e-06 2.46e+00 47 56 7.3635e+00 8.05e-06 9.69e-06 4.05e+00 48 57 7.3634e+00 1.47e-05 1.88e-05 2.95e+00 49 58 7.3634e+00 2.40e-05 3.75e-05 4.43e+00 50 59 7.3634e+00 2.76e-05 7.35e-05 4.87e+00 51 60 7.3634e+00 3.78e-06 6.88e-05 4.25e+00 52 61 7.3634e+00 2.50e-06 5.65e-05 5.84e+00 53 63 7.3634e+00 1.77e-06 1.15e-05 9.43e+00 54 66 7.3634e+00 1.09e-06 1.07e-06 4.59e-01 55 67 7.3634e+00 4.26e-08 2.47e-06 5.16e-01 `ftol` termination condition is satisfied. Function evaluations 67, initial cost 1.2953e+05, final cost 7.3634e+00, first-order optimality 5.16e-01. ------------- Optimization finished: `ftol` termination condition is satisfied. Final errors: Sensor 3dlidar 0.005229412983036696 Sensor hand_camera 0.18820015728344988 Sensor world_camera 0.34728842244594393 Saving the json output file to /home/daniela/datasets/train_dataset_1/atom_calibration.json, please wait, it could take a while ... Completed. Parsing description file /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro Executing command: xacro /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro -o /tmp/description.urdf Found joint: 3dlidar_base_mount_joint Replacing xyz = [0.0, 0.0, 0.001] by [0.005813602613495607, 0.004174983988170576, -0.00796618386641497] Replacing rpy = [0.0, 0.0, 0.0] by [0.00023136516474109544, -0.000895885823097973, -0.0006524144218182017] Found joint: hand_camera_joint Replacing xyz = [-0.02, 0.05, 0.07] by [-0.01796573608187643, 0.07392438677439146, 0.06992787449805264] Replacing rpy = [0.0, 0.0, 0.0] by [0.0005911258667111864, 0.0008114462451132486, -0.00024818487347712747] Found joint: world_camera_joint Replacing xyz = [0.02, 0.07, 0.015] by [0.019448496589346442, 0.093883281117068, 0.014334550932203673] Replacing rpy = [0.0, 0.0, 0.0] by [0.00026715550275981445, 0.00023156091832203334, -0.0008770148188332813] Optimized xacro file saved to /tmp/optimized.urdf.xacro . You can use it as a ROS robot_description. Moving file /home/daniela/datasets/train_dataset_1/atom_calibration.json to /home/daniela/datasets/train_dataset_1/results_partial/01_partial_1_atom_calibration.json Moving file /tmp/optimized.urdf.xacro to /home/daniela/datasets/train_dataset_1/results_partial/01_partial_1_optimized.urdf.xacro Command executed in 33.09828 secs. Batch2, executing command: rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1,2,4]' -nig 0.05 0.02 -ss 1 Batch2 terminated, stdout is: Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_0.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_1.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_2.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_3.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_4.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_5.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_7.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_9.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_10.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_11.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_12.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_15.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_16.pcd Skipped loading images and point clouds for collections: ['6', '8', '13', '14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29']. Deleted collections: ['6', '8', '13', '14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'] because of the -csf flag. Deleted collections: [] because these are incomplete. If you want to use them set the use_incomplete_collections flag. Deleted collections: []: at least one detection by a camera should be present. After filtering, will use 13 collections: dict_keys(['0', '1', '2', '3', '4', '5', '7', '9', '10', '11', '12', '15', '16']) Loaded dataset containing 3 sensors and 13 collections. Initializing optimizer... Selected collection key is 0 Anchored sensor is  Creating parameters ... Creating residuals ... RNG Seed: 1 Computing sparse matrix ... Initializing optimization ... Starting optimization ... Iteration Total nfev Cost Cost reduction Step norm Optimality 0 1 1.5354e+05 4.37e+06 1 2 8.6927e+03 1.45e+05 2.09e-01 9.07e+05 2 3 3.7974e+02 8.31e+03 1.97e-01 1.09e+05 3 4 1.6318e+01 3.63e+02 7.76e-02 1.99e+04 4 5 9.9191e+00 6.40e+00 2.93e-02 6.38e+03 5 6 9.4524e+00 4.67e-01 1.71e-02 6.24e+03 6 7 9.4086e+00 4.38e-02 8.44e-03 6.42e+03 7 8 8.7149e+00 6.94e-01 1.76e-03 4.10e+03 8 10 8.5006e+00 2.14e-01 6.36e-04 8.46e+02 9 11 8.4465e+00 5.41e-02 6.69e-04 2.75e+02 10 12 8.4169e+00 2.96e-02 8.58e-04 4.02e+02 11 13 8.3934e+00 2.34e-02 1.29e-03 4.44e+02 12 14 8.3840e+00 9.43e-03 8.35e-04 6.85e+02 13 15 8.3815e+00 2.50e-03 5.58e-04 7.90e+02 14 16 8.3809e+00 6.06e-04 2.79e-04 1.07e+03 15 17 8.3725e+00 8.40e-03 6.78e-05 4.14e+02 16 18 8.3721e+00 3.72e-04 1.28e-04 3.38e+02 17 19 8.3706e+00 1.54e-03 3.29e-05 7.42e+01 18 20 8.3701e+00 5.37e-04 5.20e-05 1.61e+02 19 21 8.3696e+00 4.85e-04 3.41e-05 7.19e+01 20 22 8.3691e+00 4.79e-04 3.54e-05 1.57e+02 21 23 8.3686e+00 4.79e-04 2.78e-05 6.89e+01 22 24 8.3681e+00 4.78e-04 3.25e-05 1.50e+02 23 25 8.3677e+00 4.78e-04 2.58e-05 6.43e+01 24 26 8.3672e+00 4.78e-04 3.09e-05 1.40e+02 25 27 8.3662e+00 9.54e-04 4.37e-05 6.26e+01 26 28 8.3643e+00 1.90e-03 8.79e-05 1.44e+02 27 29 8.3606e+00 3.71e-03 1.41e-04 7.86e+01 28 30 8.3535e+00 7.09e-03 2.51e-04 1.51e+02 29 31 8.3405e+00 1.31e-02 4.17e-04 9.84e+01 30 32 8.3178e+00 2.26e-02 8.27e-04 1.57e+02 31 33 8.2858e+00 3.20e-02 1.58e-03 1.54e+02 32 34 8.2722e+00 1.36e-02 3.23e-03 1.90e+02 33 36 8.2698e+00 2.35e-03 5.64e-04 2.62e+02 34 38 8.2698e+00 4.49e-05 1.53e-04 2.95e+02 35 40 8.2687e+00 1.13e-03 2.68e-05 8.27e+01 36 42 8.2685e+00 1.30e-04 1.24e-05 1.01e+01 37 43 8.2685e+00 1.25e-05 1.21e-05 9.12e+00 38 44 8.2685e+00 6.63e-06 1.08e-05 4.95e+00 39 45 8.2685e+00 4.91e-06 7.85e-06 1.14e+01 40 46 8.2685e+00 4.41e-06 5.90e-06 6.19e+00 41 47 8.2685e+00 3.82e-06 5.25e-06 1.42e+01 42 48 8.2685e+00 2.95e-06 5.02e-06 8.98e+00 43 49 8.2685e+00 9.69e-07 6.11e-06 1.88e+01 44 50 8.2685e+00 6.21e-06 2.71e-06 4.09e+00 45 51 8.2685e+00 1.46e-06 1.63e-06 4.34e+00 46 52 8.2685e+00 2.27e-06 1.40e-06 2.74e+00 47 53 8.2685e+00 4.47e-06 2.63e-06 4.97e+00 48 54 8.2685e+00 8.77e-06 4.54e-06 3.02e+00 49 55 8.2684e+00 1.70e-05 8.63e-06 5.13e+00 50 56 8.2684e+00 3.19e-05 1.55e-05 3.45e+00 51 57 8.2684e+00 5.74e-05 3.10e-05 5.70e+00 52 58 8.2683e+00 9.28e-05 6.06e-05 4.12e+00 53 59 8.2682e+00 1.01e-04 1.24e-04 6.87e+00 54 61 8.2682e+00 9.57e-06 3.26e-05 8.76e+00 55 62 8.2682e+00 1.50e-06 3.37e-05 1.03e+01 56 64 8.2682e+00 1.70e-08 2.84e-06 1.10e+01 57 65 8.2682e+00 1.22e-06 7.86e-07 4.06e+00 58 67 8.2682e+00 1.76e-07 2.82e-07 1.59e+00 59 69 8.2682e+00 3.69e-08 1.42e-07 4.25e-01 `ftol` termination condition is satisfied. Function evaluations 69, initial cost 1.5354e+05, final cost 8.2682e+00, first-order optimality 4.25e-01. ------------- Optimization finished: `ftol` termination condition is satisfied. Final errors: Sensor 3dlidar 0.005126602777508887 Sensor hand_camera 0.18360062510935538 Sensor world_camera 0.33598215896804234 Saving the json output file to /home/daniela/datasets/train_dataset_1/atom_calibration.json, please wait, it could take a while ... Completed. Parsing description file /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro Executing command: xacro /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro -o /tmp/description.urdf Found joint: 3dlidar_base_mount_joint Replacing xyz = [0.0, 0.0, 0.001] by [0.004857504931472983, 0.0027132569390721692, -0.005393879206434733] Replacing rpy = [0.0, 0.0, 0.0] by [-0.0013430445900427495, 0.0003767916145439119, -0.00020183884101403896] Found joint: hand_camera_joint Replacing xyz = [-0.02, 0.05, 0.07] by [-0.018296907314958966, 0.0741472415875768, 0.06976574085681601] Replacing rpy = [0.0, 0.0, 0.0] by [0.00039301886072821523, 0.0007110457510735379, -0.00038255196935611444] Found joint: world_camera_joint Replacing xyz = [0.02, 0.07, 0.015] by [0.019445167465015088, 0.09419257770775874, 0.014296955247027785] Replacing rpy = [0.0, 0.0, 0.0] by [0.00017872254854171257, 0.00025889010892641006, -0.00093650700023546] Optimized xacro file saved to /tmp/optimized.urdf.xacro . You can use it as a ROS robot_description. Moving file /home/daniela/datasets/train_dataset_1/atom_calibration.json to /home/daniela/datasets/train_dataset_1/results_partial/02_partial_3_atom_calibration.json Moving file /tmp/optimized.urdf.xacro to /home/daniela/datasets/train_dataset_1/results_partial/02_partial_3_optimized.urdf.xacro Command executed in 43.10244 secs. Batch3, executing command: rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1,2,4,6,8,13]' -nig 0.05 0.02 -ss 1 Batch3 terminated, stdout is: Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_0.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_1.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_2.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_3.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_4.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_5.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_6.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_7.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_8.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_9.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_10.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_11.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_12.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_13.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_15.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_16.pcd Skipped loading images and point clouds for collections: ['14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29']. Deleted collections: ['14', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29'] because of the -csf flag. Deleted collections: [] because these are incomplete. If you want to use them set the use_incomplete_collections flag. Deleted collections: []: at least one detection by a camera should be present. After filtering, will use 16 collections: dict_keys(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '15', '16']) Loaded dataset containing 3 sensors and 16 collections. Initializing optimizer... Selected collection key is 0 Anchored sensor is  Creating parameters ... Creating residuals ... RNG Seed: 1 Computing sparse matrix ... Initializing optimization ... Starting optimization ... Iteration Total nfev Cost Cost reduction Step norm Optimality 0 1 1.8697e+05 5.25e+06 1 2 9.6772e+03 1.77e+05 2.18e-01 1.07e+06 2 3 2.4653e+02 9.43e+03 2.11e-01 8.15e+04 3 4 1.9696e+01 2.27e+02 6.51e-02 1.80e+04 4 5 1.1600e+01 8.10e+00 2.51e-02 6.46e+03 5 6 1.0996e+01 6.04e-01 1.23e-02 4.12e+03 6 8 1.0387e+01 6.10e-01 1.87e-03 5.76e+03 7 9 1.0310e+01 7.70e-02 3.15e-03 4.12e+03 8 10 9.9915e+00 3.18e-01 5.99e-04 7.70e+02 9 11 9.9686e+00 2.29e-02 5.99e-04 6.43e+02 10 12 9.9615e+00 7.15e-03 6.38e-04 5.45e+02 11 13 9.9470e+00 1.45e-02 1.43e-04 1.13e+02 12 14 9.9438e+00 3.15e-03 1.49e-04 1.20e+02 13 15 9.9412e+00 2.58e-03 1.38e-04 1.40e+02 14 16 9.9367e+00 4.56e-03 2.25e-04 6.50e+01 15 17 9.9293e+00 7.33e-03 2.54e-04 2.09e+02 16 18 9.9181e+00 1.12e-02 3.03e-04 1.56e+02 17 19 9.9001e+00 1.80e-02 4.38e-04 2.72e+02 18 20 9.8731e+00 2.70e-02 7.13e-04 2.57e+02 19 21 9.8409e+00 3.22e-02 1.38e-03 2.84e+02 20 22 9.8397e+00 1.18e-03 2.32e-03 3.61e+02 21 23 9.8349e+00 4.77e-03 7.27e-04 4.50e+02 22 27 9.8327e+00 2.23e-03 3.60e-05 1.48e+02 23 28 9.8325e+00 1.96e-04 7.75e-05 1.95e+02 24 29 9.8321e+00 3.67e-04 1.83e-05 3.97e+01 25 30 9.8321e+00 5.06e-05 2.28e-05 2.14e+01 26 31 9.8320e+00 2.89e-05 2.02e-05 3.52e+01 27 32 9.8320e+00 2.28e-05 1.84e-05 2.02e+01 28 33 9.8320e+00 1.73e-05 1.74e-05 3.79e+01 29 34 9.8320e+00 1.39e-05 1.27e-05 2.55e+01 30 35 9.8320e+00 9.99e-06 1.42e-05 4.67e+01 31 36 9.8320e+00 4.07e-06 1.16e-05 3.86e+01 32 37 9.8320e+00 2.04e-05 4.31e-06 7.83e+00 33 38 9.8320e+00 4.48e-06 3.30e-06 1.25e+01 34 39 9.8320e+00 3.69e-06 2.18e-06 5.37e+00 35 40 9.8319e+00 7.15e-06 3.62e-06 1.14e+01 36 41 9.8319e+00 1.39e-05 4.90e-06 5.63e+00 37 42 9.8319e+00 2.67e-05 7.81e-06 1.25e+01 38 43 9.8319e+00 5.09e-05 1.11e-05 6.44e+00 39 44 9.8318e+00 9.71e-05 2.31e-05 1.39e+01 40 45 9.8316e+00 1.81e-04 4.33e-05 7.80e+00 41 46 9.8313e+00 3.12e-04 8.93e-05 1.44e+01 42 47 9.8308e+00 4.30e-04 1.75e-04 1.29e+01 43 48 9.8307e+00 1.02e-04 3.52e-04 1.85e+01 44 49 9.8307e+00 7.01e-05 9.35e-05 2.28e+01 45 51 9.8307e+00 9.75e-07 9.41e-06 2.94e+01 46 52 9.8307e+00 8.27e-06 3.37e-06 4.46e+00 47 53 9.8307e+00 1.64e-08 3.35e-06 5.15e+00 48 54 9.8307e+00 3.18e-07 9.15e-07 2.06e+00 49 55 9.8307e+00 6.85e-08 9.33e-07 1.91e+00 `ftol` termination condition is satisfied. Function evaluations 55, initial cost 1.8697e+05, final cost 9.8307e+00, first-order optimality 1.91e+00. ------------- Optimization finished: `ftol` termination condition is satisfied. Final errors: Sensor 3dlidar 0.005226156134392931 Sensor hand_camera 0.18948340461803276 Sensor world_camera 0.32421266666904336 Saving the json output file to /home/daniela/datasets/train_dataset_1/atom_calibration.json, please wait, it could take a while ... Completed. Parsing description file /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro Executing command: xacro /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro -o /tmp/description.urdf Found joint: 3dlidar_base_mount_joint Replacing xyz = [0.0, 0.0, 0.001] by [0.004355407025593727, -9.52647515676175e-05, -0.00013727566320248578] Replacing rpy = [0.0, 0.0, 0.0] by [-0.0009607080363733627, 0.0031742618383724464, 0.0008316092910890621] Found joint: hand_camera_joint Replacing xyz = [-0.02, 0.05, 0.07] by [-0.018110969908087523, 0.07425010741550936, 0.06990206663119206] Replacing rpy = [0.0, 0.0, 0.0] by [0.0004985974122279434, 0.0008108482273539094, -0.00045673111043649457] Found joint: world_camera_joint Replacing xyz = [0.02, 0.07, 0.015] by [0.019866069257797613, 0.09263908256020299, 0.014546044147394825] Replacing rpy = [0.0, 0.0, 0.0] by [0.0002052097181537004, 0.0003560613868991412, -0.0002139561190936228] Optimized xacro file saved to /tmp/optimized.urdf.xacro . You can use it as a ROS robot_description. Moving file /home/daniela/datasets/train_dataset_1/atom_calibration.json to /home/daniela/datasets/train_dataset_1/results_partial/03_partial_6_atom_calibration.json Moving file /tmp/optimized.urdf.xacro to /home/daniela/datasets/train_dataset_1/results_partial/03_partial_6_optimized.urdf.xacro Command executed in 43.94002 secs. Batch4, executing command: rosrun atom_calibration calibrate -json /home/daniela/datasets/train_dataset_1/data_collected.json -csf 'lambda name: int(name) in [0,3,5,7,9,10,11,12,15,16,1,2,4,6,8,13,14,19,24]' -nig 0.05 0.02 -ss 1 Batch4 terminated, stdout is: Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_0.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_1.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_2.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_3.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_4.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_5.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_6.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_7.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_8.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_9.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_10.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_11.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_12.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_13.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_14.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_15.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_16.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_19.pcd Reading point cloud from /home/daniela/datasets/train_dataset_1/3dlidar_24.pcd Skipped loading images and point clouds for collections: ['17', '18', '20', '21', '22', '23', '25', '26', '27', '28', '29']. Deleted collections: ['17', '18', '20', '21', '22', '23', '25', '26', '27', '28', '29'] because of the -csf flag. Deleted collections: [] because these are incomplete. If you want to use them set the use_incomplete_collections flag. Deleted collections: []: at least one detection by a camera should be present. After filtering, will use 19 collections: dict_keys(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15', '16', '19', '24']) Loaded dataset containing 3 sensors and 19 collections. Initializing optimizer... Selected collection key is 0 Anchored sensor is  Creating parameters ... Creating residuals ... RNG Seed: 1 Computing sparse matrix ... Initializing optimization ... Starting optimization ... Iteration Total nfev Cost Cost reduction Step norm Optimality 0 1 2.2187e+05 6.23e+06 1 2 1.1191e+04 2.11e+05 2.37e-01 1.27e+06 2 3 2.2518e+02 1.10e+04 2.32e-01 1.02e+05 3 4 1.8934e+01 2.06e+02 6.27e-02 9.23e+03 4 5 1.5055e+01 3.88e+00 3.00e-02 9.31e+03 5 6 1.4730e+01 3.24e-01 1.84e-02 8.33e+03 6 8 1.3841e+01 8.89e-01 2.47e-03 6.63e+03 7 9 1.3703e+01 1.38e-01 3.17e-03 7.48e+03 8 10 1.3288e+01 4.15e-01 6.19e-04 1.01e+03 9 11 1.3249e+01 3.92e-02 6.41e-04 5.02e+02 10 12 1.3228e+01 2.15e-02 7.89e-04 6.75e+02 11 13 1.3213e+01 1.51e-02 5.75e-04 5.56e+02 12 14 1.3202e+01 1.03e-02 6.05e-04 7.60e+02 13 15 1.3200e+01 2.21e-03 5.92e-04 6.92e+02 14 16 1.3184e+01 1.59e-02 1.95e-04 1.18e+02 15 17 1.3181e+01 3.17e-03 1.65e-04 7.43e+01 16 18 1.3176e+01 4.42e-03 2.13e-04 1.83e+02 17 19 1.3170e+01 6.73e-03 2.64e-04 1.19e+02 18 20 1.3161e+01 9.10e-03 3.33e-04 2.65e+02 19 21 1.3147e+01 1.36e-02 4.41e-04 2.09e+02 20 22 1.3127e+01 2.02e-02 8.41e-04 3.08e+02 21 23 1.3102e+01 2.52e-02 1.52e-03 3.09e+02 22 24 1.3097e+01 4.91e-03 3.06e-03 4.05e+02 23 25 1.3094e+01 3.04e-03 9.86e-04 5.36e+02 24 28 1.3094e+01 1.51e-05 1.11e-04 5.77e+02 25 29 1.3092e+01 1.92e-03 2.63e-05 2.83e+02 26 30 1.3091e+01 2.30e-04 4.72e-05 2.68e+02 27 31 1.3091e+01 3.82e-04 1.42e-05 1.10e+02 28 32 1.3091e+01 7.10e-05 3.28e-05 9.82e+01 29 33 1.3091e+01 3.64e-05 2.74e-05 1.05e+02 30 34 1.3091e+01 6.23e-05 7.30e-06 2.63e+01 31 35 1.3091e+01 2.34e-05 1.50e-05 2.32e+01 32 36 1.3091e+01 2.01e-05 1.24e-05 2.16e+01 33 37 1.3091e+01 1.76e-05 1.34e-05 2.05e+01 34 38 1.3091e+01 1.60e-05 1.02e-05 1.94e+01 35 39 1.3091e+01 1.44e-05 1.18e-05 1.95e+01 36 40 1.3091e+01 1.31e-05 8.74e-06 1.87e+01 37 41 1.3091e+01 1.19e-05 1.07e-05 1.97e+01 38 42 1.3091e+01 1.07e-05 7.74e-06 1.94e+01 39 43 1.3091e+01 9.69e-06 1.00e-05 2.12e+01 40 44 1.3091e+01 8.60e-06 6.98e-06 2.19e+01 41 45 1.3091e+01 7.56e-06 9.62e-06 2.50e+01 42 46 1.3091e+01 6.16e-06 6.55e-06 2.79e+01 43 47 1.3091e+01 4.18e-06 1.00e-05 3.45e+01 44 48 1.3091e+01 7.75e-06 3.31e-06 4.62e+00 45 49 1.3091e+01 1.95e-06 2.04e-06 5.59e+00 46 50 1.3091e+01 3.39e-06 2.49e-06 3.70e+00 47 51 1.3091e+01 6.30e-06 4.15e-06 5.70e+00 48 52 1.3091e+01 1.10e-05 4.64e-06 5.20e+00 49 53 1.3091e+01 1.97e-05 7.33e-06 6.25e+00 50 54 1.3091e+01 3.68e-05 1.48e-05 7.76e+00 51 55 1.3091e+01 6.85e-05 2.89e-05 8.48e+00 52 56 1.3090e+01 1.20e-04 5.90e-05 9.70e+00 53 57 1.3090e+01 1.75e-04 1.16e-04 1.51e+01 54 58 1.3090e+01 9.96e-05 2.31e-04 1.43e+01 55 60 1.3090e+01 2.73e-06 1.37e-05 1.83e+01 56 62 1.3090e+01 2.82e-06 1.95e-06 2.15e+00 57 63 1.3090e+01 3.63e-07 2.73e-06 2.28e+00 58 64 1.3090e+01 1.99e-07 2.70e-06 2.14e+00 59 65 1.3090e+01 1.38e-07 2.35e-06 2.21e+00 60 66 1.3090e+01 5.61e-08 2.07e-06 2.81e+00 `ftol` termination condition is satisfied. Function evaluations 66, initial cost 2.2187e+05, final cost 1.3090e+01, first-order optimality 2.81e+00. ------------- Optimization finished: `ftol` termination condition is satisfied. Final errors: Sensor 3dlidar 0.005094815463389134 Sensor hand_camera 0.2294298088834065 Sensor world_camera 0.31498391702118994 Saving the json output file to /home/daniela/datasets/train_dataset_1/atom_calibration.json, please wait, it could take a while ... Completed. Parsing description file /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro Executing command: xacro /home/daniela/catkin_ws/src/calibration/mmtbot/mmtbot_description/urdf/mmtbot.urdf.xacro -o /tmp/description.urdf Found joint: 3dlidar_base_mount_joint Replacing xyz = [0.0, 0.0, 0.001] by [0.004449006349427484, 0.0004367019791746993, -0.0005718801267856308] Replacing rpy = [0.0, 0.0, 0.0] by [-0.0011760547691325727, 0.002261730076906534, 0.00025692257175730446] Found joint: hand_camera_joint Replacing xyz = [-0.02, 0.05, 0.07] by [-0.017991215717438995, 0.07432560597340361, 0.07005024806678259] Replacing rpy = [0.0, 0.0, 0.0] by [0.0005475000279163899, 0.0009048481752135639, -0.0005116755357952071] Found joint: world_camera_joint Replacing xyz = [0.02, 0.07, 0.015] by [0.02012032684481158, 0.09217025547376684, 0.014797379386435746] Replacing rpy = [0.0, 0.0, 0.0] by [0.0002993306469959765, 0.00045706901781712673, -1.5620847004966334e-05] Optimized xacro file saved to /tmp/optimized.urdf.xacro . You can use it as a ROS robot_description. Moving file /home/daniela/datasets/train_dataset_1/atom_calibration.json to /home/daniela/datasets/train_dataset_1/results_partial/04_partial_9_atom_calibration.json Moving file /tmp/optimized.urdf.xacro to /home/daniela/datasets/train_dataset_1/results_partial/04_partial_9_optimized.urdf.xacro Command executed in 60.83681 secs.