pymomentum-cpu 0.1.93.post0__cp312-cp312-macosx_14_0_arm64.whl
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.
- include/axel/BoundingBox.h +59 -0
- include/axel/Bvh.h +708 -0
- include/axel/BvhBase.h +75 -0
- include/axel/BvhCommon.h +43 -0
- include/axel/BvhEmbree.h +87 -0
- include/axel/BvhFactory.h +34 -0
- include/axel/Checks.h +21 -0
- include/axel/DualContouring.h +79 -0
- include/axel/KdTree.h +208 -0
- include/axel/Log.h +22 -0
- include/axel/MeshToSdf.h +123 -0
- include/axel/Profile.h +64 -0
- include/axel/Ray.h +45 -0
- include/axel/SignedDistanceField.h +248 -0
- include/axel/SimdKdTree.h +515 -0
- include/axel/TriBvh.h +157 -0
- include/axel/TriBvhEmbree.h +57 -0
- include/axel/common/Constants.h +27 -0
- include/axel/common/Types.h +21 -0
- include/axel/common/VectorizationTypes.h +58 -0
- include/axel/math/BoundingBoxUtils.h +54 -0
- include/axel/math/ContinuousCollisionDetection.h +48 -0
- include/axel/math/CoplanarityCheck.h +30 -0
- include/axel/math/EdgeEdgeDistance.h +31 -0
- include/axel/math/MeshHoleFilling.h +117 -0
- include/axel/math/PointTriangleProjection.h +34 -0
- include/axel/math/PointTriangleProjectionDefinitions.h +209 -0
- include/axel/math/RayTriangleIntersection.h +36 -0
- include/momentum/character/blend_shape.h +97 -0
- include/momentum/character/blend_shape_base.h +86 -0
- include/momentum/character/blend_shape_skinning.h +96 -0
- include/momentum/character/character.h +272 -0
- include/momentum/character/character_state.h +108 -0
- include/momentum/character/character_utility.h +128 -0
- include/momentum/character/collision_geometry.h +80 -0
- include/momentum/character/collision_geometry_state.h +130 -0
- include/momentum/character/fwd.h +262 -0
- include/momentum/character/inverse_parameter_transform.h +58 -0
- include/momentum/character/joint.h +82 -0
- include/momentum/character/joint_state.h +241 -0
- include/momentum/character/linear_skinning.h +139 -0
- include/momentum/character/locator.h +94 -0
- include/momentum/character/locator_state.h +43 -0
- include/momentum/character/marker.h +48 -0
- include/momentum/character/mesh_state.h +71 -0
- include/momentum/character/parameter_limits.h +144 -0
- include/momentum/character/parameter_transform.h +207 -0
- include/momentum/character/pose_shape.h +65 -0
- include/momentum/character/skeleton.h +85 -0
- include/momentum/character/skeleton_state.h +227 -0
- include/momentum/character/skeleton_utility.h +38 -0
- include/momentum/character/skin_weights.h +67 -0
- include/momentum/character/skinned_locator.h +80 -0
- include/momentum/character/types.h +202 -0
- include/momentum/character_sequence_solver/fwd.h +200 -0
- include/momentum/character_sequence_solver/model_parameters_sequence_error_function.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver.h +65 -0
- include/momentum/character_sequence_solver/multipose_solver_function.h +82 -0
- include/momentum/character_sequence_solver/sequence_error_function.h +104 -0
- include/momentum/character_sequence_solver/sequence_solver.h +155 -0
- include/momentum/character_sequence_solver/sequence_solver_function.h +158 -0
- include/momentum/character_sequence_solver/state_sequence_error_function.h +117 -0
- include/momentum/character_sequence_solver/vertex_sequence_error_function.h +123 -0
- include/momentum/character_solver/aim_error_function.h +112 -0
- include/momentum/character_solver/collision_error_function.h +92 -0
- include/momentum/character_solver/collision_error_function_stateless.h +75 -0
- include/momentum/character_solver/constraint_error_function-inl.h +324 -0
- include/momentum/character_solver/constraint_error_function.h +248 -0
- include/momentum/character_solver/distance_error_function.h +77 -0
- include/momentum/character_solver/error_function_utils.h +60 -0
- include/momentum/character_solver/fixed_axis_error_function.h +139 -0
- include/momentum/character_solver/fwd.h +943 -0
- include/momentum/character_solver/gauss_newton_solver_qr.h +64 -0
- include/momentum/character_solver/height_error_function.h +176 -0
- include/momentum/character_solver/joint_to_joint_distance_error_function.h +111 -0
- include/momentum/character_solver/limit_error_function.h +57 -0
- include/momentum/character_solver/model_parameters_error_function.h +64 -0
- include/momentum/character_solver/normal_error_function.h +73 -0
- include/momentum/character_solver/orientation_error_function.h +74 -0
- include/momentum/character_solver/plane_error_function.h +102 -0
- include/momentum/character_solver/point_triangle_vertex_error_function.h +141 -0
- include/momentum/character_solver/pose_prior_error_function.h +80 -0
- include/momentum/character_solver/position_error_function.h +75 -0
- include/momentum/character_solver/projection_error_function.h +93 -0
- include/momentum/character_solver/simd_collision_error_function.h +99 -0
- include/momentum/character_solver/simd_normal_error_function.h +157 -0
- include/momentum/character_solver/simd_plane_error_function.h +164 -0
- include/momentum/character_solver/simd_position_error_function.h +165 -0
- include/momentum/character_solver/skeleton_error_function.h +151 -0
- include/momentum/character_solver/skeleton_solver_function.h +94 -0
- include/momentum/character_solver/skinned_locator_error_function.h +166 -0
- include/momentum/character_solver/skinned_locator_triangle_error_function.h +146 -0
- include/momentum/character_solver/skinning_weight_iterator.h +80 -0
- include/momentum/character_solver/state_error_function.h +119 -0
- include/momentum/character_solver/transform_pose.h +80 -0
- include/momentum/character_solver/trust_region_qr.h +80 -0
- include/momentum/character_solver/vertex_error_function.h +155 -0
- include/momentum/character_solver/vertex_projection_error_function.h +117 -0
- include/momentum/character_solver/vertex_vertex_distance_error_function.h +147 -0
- include/momentum/common/aligned.h +155 -0
- include/momentum/common/checks.h +27 -0
- include/momentum/common/exception.h +70 -0
- include/momentum/common/filesystem.h +20 -0
- include/momentum/common/fwd.h +27 -0
- include/momentum/common/log.h +173 -0
- include/momentum/common/log_channel.h +17 -0
- include/momentum/common/memory.h +71 -0
- include/momentum/common/profile.h +79 -0
- include/momentum/common/progress_bar.h +37 -0
- include/momentum/common/string.h +52 -0
- include/momentum/diff_ik/ceres_utility.h +73 -0
- include/momentum/diff_ik/fully_differentiable_body_ik.h +58 -0
- include/momentum/diff_ik/fully_differentiable_distance_error_function.h +69 -0
- include/momentum/diff_ik/fully_differentiable_motion_error_function.h +46 -0
- include/momentum/diff_ik/fully_differentiable_orientation_error_function.h +114 -0
- include/momentum/diff_ik/fully_differentiable_pose_prior_error_function.h +76 -0
- include/momentum/diff_ik/fully_differentiable_position_error_function.h +138 -0
- include/momentum/diff_ik/fully_differentiable_projection_error_function.h +65 -0
- include/momentum/diff_ik/fully_differentiable_skeleton_error_function.h +160 -0
- include/momentum/diff_ik/fully_differentiable_state_error_function.h +54 -0
- include/momentum/diff_ik/fwd.h +385 -0
- include/momentum/diff_ik/union_error_function.h +67 -0
- include/momentum/gui/rerun/eigen_adapters.h +70 -0
- include/momentum/gui/rerun/logger.h +102 -0
- include/momentum/gui/rerun/logging_redirect.h +27 -0
- include/momentum/io/character_io.h +98 -0
- include/momentum/io/common/gsl_utils.h +50 -0
- include/momentum/io/common/stream_utils.h +65 -0
- include/momentum/io/fbx/fbx_io.h +135 -0
- include/momentum/io/fbx/fbx_memory_stream.h +70 -0
- include/momentum/io/fbx/openfbx_loader.h +62 -0
- include/momentum/io/fbx/polygon_data.h +60 -0
- include/momentum/io/file_save_options.h +107 -0
- include/momentum/io/gltf/gltf_builder.h +141 -0
- include/momentum/io/gltf/gltf_io.h +149 -0
- include/momentum/io/gltf/utils/accessor_utils.h +299 -0
- include/momentum/io/gltf/utils/coordinate_utils.h +60 -0
- include/momentum/io/gltf/utils/json_utils.h +102 -0
- include/momentum/io/legacy_json/legacy_json_io.h +70 -0
- include/momentum/io/marker/c3d_io.h +30 -0
- include/momentum/io/marker/conversions.h +57 -0
- include/momentum/io/marker/coordinate_system.h +30 -0
- include/momentum/io/marker/marker_io.h +56 -0
- include/momentum/io/marker/trc_io.h +27 -0
- include/momentum/io/motion/mmo_io.h +97 -0
- include/momentum/io/shape/blend_shape_io.h +82 -0
- include/momentum/io/shape/pose_shape_io.h +21 -0
- include/momentum/io/skeleton/locator_io.h +41 -0
- include/momentum/io/skeleton/mppca_io.h +26 -0
- include/momentum/io/skeleton/parameter_limits_io.h +38 -0
- include/momentum/io/skeleton/parameter_transform_io.h +80 -0
- include/momentum/io/skeleton/parameters_io.h +20 -0
- include/momentum/io/skeleton/utility.h +67 -0
- include/momentum/io/urdf/urdf_io.h +26 -0
- include/momentum/io/usd/usd_io.h +36 -0
- include/momentum/marker_tracking/app_utils.h +64 -0
- include/momentum/marker_tracking/marker_tracker.h +221 -0
- include/momentum/marker_tracking/process_markers.h +58 -0
- include/momentum/marker_tracking/tracker_utils.h +99 -0
- include/momentum/math/constants.h +82 -0
- include/momentum/math/covariance_matrix.h +84 -0
- include/momentum/math/fmt_eigen.h +23 -0
- include/momentum/math/fwd.h +132 -0
- include/momentum/math/generalized_loss.h +61 -0
- include/momentum/math/intersection.h +32 -0
- include/momentum/math/mesh.h +84 -0
- include/momentum/math/mppca.h +67 -0
- include/momentum/math/online_householder_qr.h +516 -0
- include/momentum/math/random-inl.h +404 -0
- include/momentum/math/random.h +310 -0
- include/momentum/math/simd_generalized_loss.h +40 -0
- include/momentum/math/transform.h +229 -0
- include/momentum/math/types.h +461 -0
- include/momentum/math/utility.h +324 -0
- include/momentum/rasterizer/camera.h +453 -0
- include/momentum/rasterizer/fwd.h +102 -0
- include/momentum/rasterizer/geometry.h +83 -0
- include/momentum/rasterizer/image.h +18 -0
- include/momentum/rasterizer/rasterizer.h +583 -0
- include/momentum/rasterizer/tensor.h +140 -0
- include/momentum/rasterizer/text_rasterizer.h +89 -0
- include/momentum/rasterizer/utility.h +268 -0
- include/momentum/simd/simd.h +221 -0
- include/momentum/solver/fwd.h +131 -0
- include/momentum/solver/gauss_newton_solver.h +136 -0
- include/momentum/solver/gradient_descent_solver.h +65 -0
- include/momentum/solver/solver.h +155 -0
- include/momentum/solver/solver_function.h +126 -0
- include/momentum/solver/subset_gauss_newton_solver.h +109 -0
- include/rerun/archetypes/annotation_context.hpp +157 -0
- include/rerun/archetypes/arrows2d.hpp +271 -0
- include/rerun/archetypes/arrows3d.hpp +257 -0
- include/rerun/archetypes/asset3d.hpp +262 -0
- include/rerun/archetypes/asset_video.hpp +275 -0
- include/rerun/archetypes/bar_chart.hpp +261 -0
- include/rerun/archetypes/boxes2d.hpp +293 -0
- include/rerun/archetypes/boxes3d.hpp +369 -0
- include/rerun/archetypes/capsules3d.hpp +333 -0
- include/rerun/archetypes/clear.hpp +180 -0
- include/rerun/archetypes/depth_image.hpp +425 -0
- include/rerun/archetypes/ellipsoids3d.hpp +384 -0
- include/rerun/archetypes/encoded_image.hpp +250 -0
- include/rerun/archetypes/geo_line_strings.hpp +166 -0
- include/rerun/archetypes/geo_points.hpp +177 -0
- include/rerun/archetypes/graph_edges.hpp +152 -0
- include/rerun/archetypes/graph_nodes.hpp +206 -0
- include/rerun/archetypes/image.hpp +434 -0
- include/rerun/archetypes/instance_poses3d.hpp +221 -0
- include/rerun/archetypes/line_strips2d.hpp +289 -0
- include/rerun/archetypes/line_strips3d.hpp +270 -0
- include/rerun/archetypes/mesh3d.hpp +387 -0
- include/rerun/archetypes/pinhole.hpp +385 -0
- include/rerun/archetypes/points2d.hpp +333 -0
- include/rerun/archetypes/points3d.hpp +369 -0
- include/rerun/archetypes/recording_properties.hpp +132 -0
- include/rerun/archetypes/scalar.hpp +170 -0
- include/rerun/archetypes/scalars.hpp +153 -0
- include/rerun/archetypes/segmentation_image.hpp +305 -0
- include/rerun/archetypes/series_line.hpp +274 -0
- include/rerun/archetypes/series_lines.hpp +271 -0
- include/rerun/archetypes/series_point.hpp +265 -0
- include/rerun/archetypes/series_points.hpp +251 -0
- include/rerun/archetypes/tensor.hpp +213 -0
- include/rerun/archetypes/text_document.hpp +200 -0
- include/rerun/archetypes/text_log.hpp +211 -0
- include/rerun/archetypes/transform3d.hpp +925 -0
- include/rerun/archetypes/video_frame_reference.hpp +295 -0
- include/rerun/archetypes/view_coordinates.hpp +393 -0
- include/rerun/archetypes.hpp +43 -0
- include/rerun/arrow_utils.hpp +32 -0
- include/rerun/as_components.hpp +90 -0
- include/rerun/blueprint/archetypes/background.hpp +113 -0
- include/rerun/blueprint/archetypes/container_blueprint.hpp +259 -0
- include/rerun/blueprint/archetypes/dataframe_query.hpp +178 -0
- include/rerun/blueprint/archetypes/entity_behavior.hpp +130 -0
- include/rerun/blueprint/archetypes/force_center.hpp +115 -0
- include/rerun/blueprint/archetypes/force_collision_radius.hpp +141 -0
- include/rerun/blueprint/archetypes/force_link.hpp +136 -0
- include/rerun/blueprint/archetypes/force_many_body.hpp +124 -0
- include/rerun/blueprint/archetypes/force_position.hpp +132 -0
- include/rerun/blueprint/archetypes/line_grid3d.hpp +178 -0
- include/rerun/blueprint/archetypes/map_background.hpp +104 -0
- include/rerun/blueprint/archetypes/map_zoom.hpp +103 -0
- include/rerun/blueprint/archetypes/near_clip_plane.hpp +109 -0
- include/rerun/blueprint/archetypes/panel_blueprint.hpp +95 -0
- include/rerun/blueprint/archetypes/plot_legend.hpp +118 -0
- include/rerun/blueprint/archetypes/scalar_axis.hpp +116 -0
- include/rerun/blueprint/archetypes/tensor_scalar_mapping.hpp +146 -0
- include/rerun/blueprint/archetypes/tensor_slice_selection.hpp +167 -0
- include/rerun/blueprint/archetypes/tensor_view_fit.hpp +95 -0
- include/rerun/blueprint/archetypes/view_blueprint.hpp +170 -0
- include/rerun/blueprint/archetypes/view_contents.hpp +142 -0
- include/rerun/blueprint/archetypes/viewport_blueprint.hpp +200 -0
- include/rerun/blueprint/archetypes/visible_time_ranges.hpp +116 -0
- include/rerun/blueprint/archetypes/visual_bounds2d.hpp +109 -0
- include/rerun/blueprint/archetypes/visualizer_overrides.hpp +113 -0
- include/rerun/blueprint/archetypes.hpp +29 -0
- include/rerun/blueprint/components/active_tab.hpp +82 -0
- include/rerun/blueprint/components/apply_latest_at.hpp +79 -0
- include/rerun/blueprint/components/auto_layout.hpp +77 -0
- include/rerun/blueprint/components/auto_views.hpp +77 -0
- include/rerun/blueprint/components/background_kind.hpp +66 -0
- include/rerun/blueprint/components/column_share.hpp +78 -0
- include/rerun/blueprint/components/component_column_selector.hpp +81 -0
- include/rerun/blueprint/components/container_kind.hpp +65 -0
- include/rerun/blueprint/components/corner2d.hpp +64 -0
- include/rerun/blueprint/components/enabled.hpp +77 -0
- include/rerun/blueprint/components/filter_by_range.hpp +74 -0
- include/rerun/blueprint/components/filter_is_not_null.hpp +77 -0
- include/rerun/blueprint/components/force_distance.hpp +82 -0
- include/rerun/blueprint/components/force_iterations.hpp +82 -0
- include/rerun/blueprint/components/force_strength.hpp +82 -0
- include/rerun/blueprint/components/grid_columns.hpp +78 -0
- include/rerun/blueprint/components/grid_spacing.hpp +78 -0
- include/rerun/blueprint/components/included_content.hpp +86 -0
- include/rerun/blueprint/components/lock_range_during_zoom.hpp +82 -0
- include/rerun/blueprint/components/map_provider.hpp +64 -0
- include/rerun/blueprint/components/near_clip_plane.hpp +82 -0
- include/rerun/blueprint/components/panel_state.hpp +61 -0
- include/rerun/blueprint/components/query_expression.hpp +89 -0
- include/rerun/blueprint/components/root_container.hpp +77 -0
- include/rerun/blueprint/components/row_share.hpp +78 -0
- include/rerun/blueprint/components/selected_columns.hpp +76 -0
- include/rerun/blueprint/components/tensor_dimension_index_slider.hpp +90 -0
- include/rerun/blueprint/components/timeline_name.hpp +76 -0
- include/rerun/blueprint/components/view_class.hpp +76 -0
- include/rerun/blueprint/components/view_fit.hpp +61 -0
- include/rerun/blueprint/components/view_maximized.hpp +79 -0
- include/rerun/blueprint/components/view_origin.hpp +81 -0
- include/rerun/blueprint/components/viewer_recommendation_hash.hpp +82 -0
- include/rerun/blueprint/components/visible_time_range.hpp +77 -0
- include/rerun/blueprint/components/visual_bounds2d.hpp +74 -0
- include/rerun/blueprint/components/visualizer_override.hpp +86 -0
- include/rerun/blueprint/components/zoom_level.hpp +78 -0
- include/rerun/blueprint/components.hpp +41 -0
- include/rerun/blueprint/datatypes/component_column_selector.hpp +61 -0
- include/rerun/blueprint/datatypes/filter_by_range.hpp +59 -0
- include/rerun/blueprint/datatypes/filter_is_not_null.hpp +61 -0
- include/rerun/blueprint/datatypes/selected_columns.hpp +62 -0
- include/rerun/blueprint/datatypes/tensor_dimension_index_slider.hpp +63 -0
- include/rerun/blueprint/datatypes.hpp +9 -0
- include/rerun/c/arrow_c_data_interface.h +111 -0
- include/rerun/c/compiler_utils.h +10 -0
- include/rerun/c/rerun.h +627 -0
- include/rerun/c/sdk_info.h +28 -0
- include/rerun/collection.hpp +496 -0
- include/rerun/collection_adapter.hpp +43 -0
- include/rerun/collection_adapter_builtins.hpp +138 -0
- include/rerun/compiler_utils.hpp +61 -0
- include/rerun/component_batch.hpp +163 -0
- include/rerun/component_column.hpp +111 -0
- include/rerun/component_descriptor.hpp +142 -0
- include/rerun/component_type.hpp +35 -0
- include/rerun/components/aggregation_policy.hpp +76 -0
- include/rerun/components/albedo_factor.hpp +74 -0
- include/rerun/components/annotation_context.hpp +102 -0
- include/rerun/components/axis_length.hpp +74 -0
- include/rerun/components/blob.hpp +73 -0
- include/rerun/components/class_id.hpp +71 -0
- include/rerun/components/clear_is_recursive.hpp +75 -0
- include/rerun/components/color.hpp +99 -0
- include/rerun/components/colormap.hpp +99 -0
- include/rerun/components/depth_meter.hpp +84 -0
- include/rerun/components/draw_order.hpp +79 -0
- include/rerun/components/entity_path.hpp +83 -0
- include/rerun/components/fill_mode.hpp +72 -0
- include/rerun/components/fill_ratio.hpp +79 -0
- include/rerun/components/gamma_correction.hpp +80 -0
- include/rerun/components/geo_line_string.hpp +63 -0
- include/rerun/components/graph_edge.hpp +75 -0
- include/rerun/components/graph_node.hpp +79 -0
- include/rerun/components/graph_type.hpp +57 -0
- include/rerun/components/half_size2d.hpp +91 -0
- include/rerun/components/half_size3d.hpp +95 -0
- include/rerun/components/image_buffer.hpp +86 -0
- include/rerun/components/image_format.hpp +84 -0
- include/rerun/components/image_plane_distance.hpp +77 -0
- include/rerun/components/interactive.hpp +76 -0
- include/rerun/components/keypoint_id.hpp +74 -0
- include/rerun/components/lat_lon.hpp +89 -0
- include/rerun/components/length.hpp +77 -0
- include/rerun/components/line_strip2d.hpp +73 -0
- include/rerun/components/line_strip3d.hpp +73 -0
- include/rerun/components/magnification_filter.hpp +63 -0
- include/rerun/components/marker_shape.hpp +82 -0
- include/rerun/components/marker_size.hpp +74 -0
- include/rerun/components/media_type.hpp +157 -0
- include/rerun/components/name.hpp +83 -0
- include/rerun/components/opacity.hpp +77 -0
- include/rerun/components/pinhole_projection.hpp +94 -0
- include/rerun/components/plane3d.hpp +75 -0
- include/rerun/components/pose_rotation_axis_angle.hpp +73 -0
- include/rerun/components/pose_rotation_quat.hpp +71 -0
- include/rerun/components/pose_scale3d.hpp +102 -0
- include/rerun/components/pose_transform_mat3x3.hpp +87 -0
- include/rerun/components/pose_translation3d.hpp +96 -0
- include/rerun/components/position2d.hpp +86 -0
- include/rerun/components/position3d.hpp +90 -0
- include/rerun/components/radius.hpp +98 -0
- include/rerun/components/range1d.hpp +75 -0
- include/rerun/components/resolution.hpp +88 -0
- include/rerun/components/rotation_axis_angle.hpp +72 -0
- include/rerun/components/rotation_quat.hpp +71 -0
- include/rerun/components/scalar.hpp +76 -0
- include/rerun/components/scale3d.hpp +102 -0
- include/rerun/components/series_visible.hpp +76 -0
- include/rerun/components/show_labels.hpp +79 -0
- include/rerun/components/stroke_width.hpp +74 -0
- include/rerun/components/tensor_data.hpp +94 -0
- include/rerun/components/tensor_dimension_index_selection.hpp +77 -0
- include/rerun/components/tensor_height_dimension.hpp +71 -0
- include/rerun/components/tensor_width_dimension.hpp +71 -0
- include/rerun/components/texcoord2d.hpp +101 -0
- include/rerun/components/text.hpp +83 -0
- include/rerun/components/text_log_level.hpp +110 -0
- include/rerun/components/timestamp.hpp +76 -0
- include/rerun/components/transform_mat3x3.hpp +92 -0
- include/rerun/components/transform_relation.hpp +66 -0
- include/rerun/components/translation3d.hpp +96 -0
- include/rerun/components/triangle_indices.hpp +85 -0
- include/rerun/components/value_range.hpp +78 -0
- include/rerun/components/vector2d.hpp +92 -0
- include/rerun/components/vector3d.hpp +96 -0
- include/rerun/components/video_timestamp.hpp +120 -0
- include/rerun/components/view_coordinates.hpp +346 -0
- include/rerun/components/visible.hpp +74 -0
- include/rerun/components.hpp +77 -0
- include/rerun/config.hpp +52 -0
- include/rerun/datatypes/angle.hpp +76 -0
- include/rerun/datatypes/annotation_info.hpp +76 -0
- include/rerun/datatypes/blob.hpp +67 -0
- include/rerun/datatypes/bool.hpp +57 -0
- include/rerun/datatypes/channel_datatype.hpp +87 -0
- include/rerun/datatypes/class_description.hpp +92 -0
- include/rerun/datatypes/class_description_map_elem.hpp +69 -0
- include/rerun/datatypes/class_id.hpp +62 -0
- include/rerun/datatypes/color_model.hpp +68 -0
- include/rerun/datatypes/dvec2d.hpp +76 -0
- include/rerun/datatypes/entity_path.hpp +60 -0
- include/rerun/datatypes/float32.hpp +62 -0
- include/rerun/datatypes/float64.hpp +62 -0
- include/rerun/datatypes/image_format.hpp +107 -0
- include/rerun/datatypes/keypoint_id.hpp +63 -0
- include/rerun/datatypes/keypoint_pair.hpp +65 -0
- include/rerun/datatypes/mat3x3.hpp +105 -0
- include/rerun/datatypes/mat4x4.hpp +119 -0
- include/rerun/datatypes/pixel_format.hpp +142 -0
- include/rerun/datatypes/plane3d.hpp +60 -0
- include/rerun/datatypes/quaternion.hpp +110 -0
- include/rerun/datatypes/range1d.hpp +59 -0
- include/rerun/datatypes/range2d.hpp +55 -0
- include/rerun/datatypes/rgba32.hpp +94 -0
- include/rerun/datatypes/rotation_axis_angle.hpp +67 -0
- include/rerun/datatypes/tensor_buffer.hpp +529 -0
- include/rerun/datatypes/tensor_data.hpp +100 -0
- include/rerun/datatypes/tensor_dimension_index_selection.hpp +58 -0
- include/rerun/datatypes/tensor_dimension_selection.hpp +56 -0
- include/rerun/datatypes/time_int.hpp +62 -0
- include/rerun/datatypes/time_range.hpp +55 -0
- include/rerun/datatypes/time_range_boundary.hpp +175 -0
- include/rerun/datatypes/uint16.hpp +62 -0
- include/rerun/datatypes/uint32.hpp +62 -0
- include/rerun/datatypes/uint64.hpp +62 -0
- include/rerun/datatypes/utf8.hpp +76 -0
- include/rerun/datatypes/utf8pair.hpp +62 -0
- include/rerun/datatypes/uuid.hpp +60 -0
- include/rerun/datatypes/uvec2d.hpp +76 -0
- include/rerun/datatypes/uvec3d.hpp +80 -0
- include/rerun/datatypes/uvec4d.hpp +59 -0
- include/rerun/datatypes/vec2d.hpp +76 -0
- include/rerun/datatypes/vec3d.hpp +80 -0
- include/rerun/datatypes/vec4d.hpp +84 -0
- include/rerun/datatypes/video_timestamp.hpp +67 -0
- include/rerun/datatypes/view_coordinates.hpp +87 -0
- include/rerun/datatypes/visible_time_range.hpp +57 -0
- include/rerun/datatypes.hpp +51 -0
- include/rerun/demo_utils.hpp +75 -0
- include/rerun/entity_path.hpp +20 -0
- include/rerun/error.hpp +180 -0
- include/rerun/half.hpp +10 -0
- include/rerun/image_utils.hpp +187 -0
- include/rerun/indicator_component.hpp +59 -0
- include/rerun/loggable.hpp +54 -0
- include/rerun/recording_stream.hpp +960 -0
- include/rerun/rerun_sdk_export.hpp +25 -0
- include/rerun/result.hpp +86 -0
- include/rerun/rotation3d.hpp +33 -0
- include/rerun/sdk_info.hpp +20 -0
- include/rerun/spawn.hpp +21 -0
- include/rerun/spawn_options.hpp +57 -0
- include/rerun/string_utils.hpp +16 -0
- include/rerun/third_party/cxxopts.hpp +2198 -0
- include/rerun/time_column.hpp +288 -0
- include/rerun/timeline.hpp +38 -0
- include/rerun/type_traits.hpp +40 -0
- include/rerun.hpp +86 -0
- lib/cmake/axel/axel-config.cmake +45 -0
- lib/cmake/axel/axelTargets-release.cmake +19 -0
- lib/cmake/axel/axelTargets.cmake +108 -0
- lib/cmake/momentum/FindFbxSdk.cmake +115 -0
- lib/cmake/momentum/Findre2.cmake +52 -0
- lib/cmake/momentum/momentum-config.cmake +67 -0
- lib/cmake/momentum/momentumTargets-release.cmake +259 -0
- lib/cmake/momentum/momentumTargets.cmake +385 -0
- lib/cmake/rerun_sdk/rerun_sdkConfig.cmake +70 -0
- lib/cmake/rerun_sdk/rerun_sdkConfigVersion.cmake +83 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets-release.cmake +19 -0
- lib/cmake/rerun_sdk/rerun_sdkTargets.cmake +108 -0
- lib/libarrow.a +0 -0
- lib/libarrow_bundled_dependencies.a +0 -0
- lib/libaxel.a +0 -0
- lib/libmomentum_app_utils.a +0 -0
- lib/libmomentum_character.a +0 -0
- lib/libmomentum_character_sequence_solver.a +0 -0
- lib/libmomentum_character_solver.a +0 -0
- lib/libmomentum_common.a +0 -0
- lib/libmomentum_diff_ik.a +0 -0
- lib/libmomentum_io.a +0 -0
- lib/libmomentum_io_common.a +0 -0
- lib/libmomentum_io_fbx.a +0 -0
- lib/libmomentum_io_gltf.a +0 -0
- lib/libmomentum_io_legacy_json.a +0 -0
- lib/libmomentum_io_marker.a +0 -0
- lib/libmomentum_io_motion.a +0 -0
- lib/libmomentum_io_shape.a +0 -0
- lib/libmomentum_io_skeleton.a +0 -0
- lib/libmomentum_io_urdf.a +0 -0
- lib/libmomentum_marker_tracker.a +0 -0
- lib/libmomentum_math.a +0 -0
- lib/libmomentum_online_qr.a +0 -0
- lib/libmomentum_process_markers.a +0 -0
- lib/libmomentum_rerun.a +0 -0
- lib/libmomentum_simd_constraints.a +0 -0
- lib/libmomentum_simd_generalized_loss.a +0 -0
- lib/libmomentum_skeleton.a +0 -0
- lib/libmomentum_solver.a +0 -0
- lib/librerun_c__macos_arm64.a +0 -0
- lib/librerun_sdk.a +0 -0
- pymomentum/axel.cpython-312-darwin.so +0 -0
- pymomentum/backend/__init__.py +16 -0
- pymomentum/backend/skel_state_backend.py +631 -0
- pymomentum/backend/trs_backend.py +889 -0
- pymomentum/backend/utils.py +224 -0
- pymomentum/geometry.cpython-312-darwin.so +0 -0
- pymomentum/marker_tracking.cpython-312-darwin.so +0 -0
- pymomentum/quaternion.py +740 -0
- pymomentum/skel_state.py +514 -0
- pymomentum/solver.cpython-312-darwin.so +0 -0
- pymomentum/solver2.cpython-312-darwin.so +0 -0
- pymomentum/torch/character.py +868 -0
- pymomentum/torch/parameter_limits.py +494 -0
- pymomentum/torch/utility.py +20 -0
- pymomentum/trs.py +535 -0
- pymomentum_cpu-0.1.93.post0.dist-info/METADATA +126 -0
- pymomentum_cpu-0.1.93.post0.dist-info/RECORD +517 -0
- pymomentum_cpu-0.1.93.post0.dist-info/WHEEL +5 -0
- pymomentum_cpu-0.1.93.post0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/math/types.h>
|
|
11
|
+
#include <momentum/solver/fwd.h>
|
|
12
|
+
|
|
13
|
+
#include <string>
|
|
14
|
+
#include <unordered_map>
|
|
15
|
+
|
|
16
|
+
namespace momentum {
|
|
17
|
+
|
|
18
|
+
/// Common options for numerical optimization solvers.
|
|
19
|
+
struct SolverOptions {
|
|
20
|
+
/// Minimum number of iterations before checking convergence criteria
|
|
21
|
+
size_t minIterations = 1;
|
|
22
|
+
|
|
23
|
+
/// Maximum number of iterations before terminating
|
|
24
|
+
size_t maxIterations = 2;
|
|
25
|
+
|
|
26
|
+
/// Convergence threshold for relative error change
|
|
27
|
+
float threshold = 1.0f;
|
|
28
|
+
|
|
29
|
+
/// Enable detailed logging during optimization
|
|
30
|
+
bool verbose = false;
|
|
31
|
+
|
|
32
|
+
/// Virtual destructor for polymorphic behavior
|
|
33
|
+
virtual ~SolverOptions() = default;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
/// Base class for numerical optimization solvers.
|
|
37
|
+
///
|
|
38
|
+
/// Provides common functionality for iterative optimization algorithms
|
|
39
|
+
/// including parameter management, convergence checking, and history tracking.
|
|
40
|
+
template <typename T>
|
|
41
|
+
class SolverT {
|
|
42
|
+
public:
|
|
43
|
+
/// Constructor with solver options and function to optimize
|
|
44
|
+
SolverT(const SolverOptions& options, SolverFunctionT<T>* solver);
|
|
45
|
+
|
|
46
|
+
virtual ~SolverT() = default;
|
|
47
|
+
|
|
48
|
+
/// Returns the name of the solver implementation
|
|
49
|
+
[[nodiscard]] virtual std::string_view getName() const = 0;
|
|
50
|
+
|
|
51
|
+
/// Updates solver configuration with new options
|
|
52
|
+
virtual void setOptions(const SolverOptions& options);
|
|
53
|
+
|
|
54
|
+
/// Solves the optimization problem
|
|
55
|
+
///
|
|
56
|
+
/// @param[in,out] params Vector of initial guess, updated with the optimized solution
|
|
57
|
+
/// @return Final objective function value after optimization
|
|
58
|
+
double solve(Eigen::VectorX<T>& params);
|
|
59
|
+
|
|
60
|
+
/// Specifies which parameters should be optimized
|
|
61
|
+
///
|
|
62
|
+
/// @param parameters Bitset where each bit indicates if the corresponding parameter is enabled
|
|
63
|
+
virtual void setEnabledParameters(const ParameterSet& parameters);
|
|
64
|
+
|
|
65
|
+
/// Returns the current set of enabled parameters
|
|
66
|
+
[[nodiscard]] const ParameterSet& getActiveParameters() const;
|
|
67
|
+
|
|
68
|
+
/// Sets the current parameter values without solving
|
|
69
|
+
void setParameters(const Eigen::VectorX<T>& params);
|
|
70
|
+
|
|
71
|
+
/// Controls whether to store iteration history for debugging and analysis
|
|
72
|
+
void setStoreHistory(bool b);
|
|
73
|
+
|
|
74
|
+
/// Returns the history of the solver's iterations
|
|
75
|
+
///
|
|
76
|
+
/// The history contains matrices for parameters, errors, and other solver-specific data
|
|
77
|
+
[[nodiscard]] const std::unordered_map<std::string, Eigen::MatrixX<T>>& getHistory() const;
|
|
78
|
+
|
|
79
|
+
/// Returns the minimum number of iterations before checking convergence
|
|
80
|
+
[[nodiscard]] size_t getMinIterations() const;
|
|
81
|
+
|
|
82
|
+
/// Returns the maximum number of iterations before terminating
|
|
83
|
+
[[nodiscard]] size_t getMaxIterations() const;
|
|
84
|
+
|
|
85
|
+
[[nodiscard]] size_t getNumParameters() const {
|
|
86
|
+
return numParameters_;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/// Returns the history of objective function values over the iterations of the solve
|
|
90
|
+
[[nodiscard]] const std::vector<double>& getErrorHistory() const {
|
|
91
|
+
return errorHistory_;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
protected:
|
|
95
|
+
/// Initializes solver state before optimization begins
|
|
96
|
+
virtual void initializeSolver() = 0;
|
|
97
|
+
|
|
98
|
+
/// Performs a single iteration of the optimization algorithm
|
|
99
|
+
virtual void doIteration() = 0;
|
|
100
|
+
|
|
101
|
+
protected:
|
|
102
|
+
/// Total number of parameters in the optimization problem
|
|
103
|
+
size_t numParameters_;
|
|
104
|
+
|
|
105
|
+
/// Function to be optimized
|
|
106
|
+
SolverFunctionT<T>* solverFunction_;
|
|
107
|
+
|
|
108
|
+
/// Current parameter values
|
|
109
|
+
Eigen::VectorX<T> parameters_;
|
|
110
|
+
|
|
111
|
+
/// Bitset indicating which parameters are enabled for optimization
|
|
112
|
+
ParameterSet activeParameters_;
|
|
113
|
+
|
|
114
|
+
/// Number of parameters currently enabled for optimization
|
|
115
|
+
int actualParameters_;
|
|
116
|
+
|
|
117
|
+
/// Flag indicating parameter structure has changed
|
|
118
|
+
///
|
|
119
|
+
/// Used to trigger reinitialization of solver data structures
|
|
120
|
+
bool newParameterPattern_;
|
|
121
|
+
|
|
122
|
+
/// Current iteration count
|
|
123
|
+
size_t iteration_{};
|
|
124
|
+
|
|
125
|
+
/// Current objective function value
|
|
126
|
+
double error_{};
|
|
127
|
+
|
|
128
|
+
/// Previous iteration's objective function value
|
|
129
|
+
double lastError_{};
|
|
130
|
+
|
|
131
|
+
/// Whether to record optimization progress for analysis
|
|
132
|
+
bool storeHistory = false;
|
|
133
|
+
|
|
134
|
+
/// Recorded data from optimization process
|
|
135
|
+
///
|
|
136
|
+
/// Contains matrices for parameters, errors, and other solver-specific data
|
|
137
|
+
std::unordered_map<std::string, Eigen::MatrixX<T>> iterationHistory_;
|
|
138
|
+
/// History of objective function values over the iterations
|
|
139
|
+
std::vector<double> errorHistory_;
|
|
140
|
+
|
|
141
|
+
/// Whether to output detailed progress information
|
|
142
|
+
bool verbose_ = false;
|
|
143
|
+
|
|
144
|
+
private:
|
|
145
|
+
/// Minimum iterations before checking convergence criteria
|
|
146
|
+
size_t minIterations_{};
|
|
147
|
+
|
|
148
|
+
/// Maximum iterations before terminating optimization
|
|
149
|
+
size_t maxIterations_{};
|
|
150
|
+
|
|
151
|
+
/// Relative error change threshold for convergence
|
|
152
|
+
float threshold_{};
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
} // namespace momentum
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/math/types.h>
|
|
11
|
+
#include <momentum/solver/fwd.h>
|
|
12
|
+
|
|
13
|
+
#include <unordered_map>
|
|
14
|
+
|
|
15
|
+
namespace momentum {
|
|
16
|
+
|
|
17
|
+
/// Abstract base class for optimization objective functions
|
|
18
|
+
///
|
|
19
|
+
/// Provides the interface for computing objective function values, gradients,
|
|
20
|
+
/// and other derivatives needed by numerical optimization algorithms.
|
|
21
|
+
template <typename T>
|
|
22
|
+
class SolverFunctionT {
|
|
23
|
+
public:
|
|
24
|
+
virtual ~SolverFunctionT() = default;
|
|
25
|
+
|
|
26
|
+
/// Evaluates the objective function at the given parameter values
|
|
27
|
+
///
|
|
28
|
+
/// @param parameters Current parameter values
|
|
29
|
+
/// @return Objective function value (typically sum of squared errors)
|
|
30
|
+
virtual double getError(const VectorX<T>& parameters) = 0;
|
|
31
|
+
|
|
32
|
+
/// Computes the gradient of the objective function
|
|
33
|
+
///
|
|
34
|
+
/// @param parameters Current parameter values
|
|
35
|
+
/// @param[out] gradient Computed gradient vector
|
|
36
|
+
/// @return Objective function value
|
|
37
|
+
virtual double getGradient(const VectorX<T>& parameters, VectorX<T>& gradient) = 0;
|
|
38
|
+
|
|
39
|
+
/// Computes the Jacobian matrix for least squares problems
|
|
40
|
+
///
|
|
41
|
+
/// @param parameters Current parameter values
|
|
42
|
+
/// @param[out] jacobian Jacobian matrix (m×n for m residuals and n parameters)
|
|
43
|
+
/// @param[out] residual Vector of residual values
|
|
44
|
+
/// @param[out] actualRows Number of active residual rows
|
|
45
|
+
/// @return Objective function value
|
|
46
|
+
virtual double getJacobian(
|
|
47
|
+
const VectorX<T>& parameters,
|
|
48
|
+
MatrixX<T>& jacobian,
|
|
49
|
+
VectorX<T>& residual,
|
|
50
|
+
size_t& actualRows) = 0;
|
|
51
|
+
|
|
52
|
+
/// Computes the Hessian matrix of second derivatives
|
|
53
|
+
///
|
|
54
|
+
/// Default implementation throws an exception as this is rarely needed
|
|
55
|
+
/// @param parameters Current parameter values
|
|
56
|
+
/// @param[out] hessian Computed Hessian matrix
|
|
57
|
+
virtual void getHessian(const VectorX<T>& parameters, MatrixX<T>& hessian);
|
|
58
|
+
|
|
59
|
+
/// Computes JᵀJ and JᵀR for Gauss-Newton optimization
|
|
60
|
+
///
|
|
61
|
+
/// Default implementation computes these from the Jacobian
|
|
62
|
+
/// @param parameters Current parameter values
|
|
63
|
+
/// @param[out] jtj Approximated Hessian matrix (JᵀJ)
|
|
64
|
+
/// @param[out] jtr Gradient vector (JᵀR)
|
|
65
|
+
/// @return Objective function value
|
|
66
|
+
virtual double getJtJR(const VectorX<T>& parameters, MatrixX<T>& jtj, VectorX<T>& jtr);
|
|
67
|
+
|
|
68
|
+
/// Computes sparse JᵀJ and JᵀR for large-scale problems
|
|
69
|
+
///
|
|
70
|
+
/// Default implementation returns 0.0 and must be overridden for sparse optimization
|
|
71
|
+
/// @param parameters Current parameter values
|
|
72
|
+
/// @param[out] jtj Sparse approximated Hessian matrix
|
|
73
|
+
/// @param[out] jtr Gradient vector
|
|
74
|
+
/// @return Objective function value
|
|
75
|
+
virtual double
|
|
76
|
+
getJtJR_Sparse(const VectorX<T>& parameters, SparseMatrix<T>& jtj, VectorX<T>& jtr);
|
|
77
|
+
|
|
78
|
+
/// Computes derivatives needed by the solver
|
|
79
|
+
///
|
|
80
|
+
/// Default implementation calls getJtJR
|
|
81
|
+
/// @param parameters Current parameter values
|
|
82
|
+
/// @param[out] hess Hessian matrix or approximation
|
|
83
|
+
/// @param[out] grad Gradient vector
|
|
84
|
+
/// @return Objective function value
|
|
85
|
+
virtual double
|
|
86
|
+
getSolverDerivatives(const VectorX<T>& parameters, MatrixX<T>& hess, VectorX<T>& grad);
|
|
87
|
+
|
|
88
|
+
/// Updates parameters using the computed step direction
|
|
89
|
+
///
|
|
90
|
+
/// @param[in,out] parameters Current parameters, updated in-place
|
|
91
|
+
/// @param gradient Step direction (typically the negative gradient)
|
|
92
|
+
virtual void updateParameters(VectorX<T>& parameters, const VectorX<T>& gradient) = 0;
|
|
93
|
+
|
|
94
|
+
/// Specifies which parameters should be optimized
|
|
95
|
+
///
|
|
96
|
+
/// Default implementation does nothing
|
|
97
|
+
/// @param parameterSet Bitset where each bit indicates if the corresponding parameter is enabled
|
|
98
|
+
virtual void setEnabledParameters(const ParameterSet& parameterSet);
|
|
99
|
+
|
|
100
|
+
/// Returns the total number of parameters in the optimization problem
|
|
101
|
+
[[nodiscard]] size_t getNumParameters() const;
|
|
102
|
+
|
|
103
|
+
/// Returns the number of parameters currently enabled for optimization
|
|
104
|
+
[[nodiscard]] size_t getActualParameters() const;
|
|
105
|
+
|
|
106
|
+
/// Records solver state for debugging and analysis
|
|
107
|
+
///
|
|
108
|
+
/// @param[in,out] history Map to store iteration data
|
|
109
|
+
/// @param iteration Current iteration number
|
|
110
|
+
/// @param maxIterations Maximum number of iterations
|
|
111
|
+
virtual void storeHistory(
|
|
112
|
+
std::unordered_map<std::string, MatrixX<T>>& history,
|
|
113
|
+
size_t iteration,
|
|
114
|
+
size_t maxIterations_);
|
|
115
|
+
|
|
116
|
+
protected:
|
|
117
|
+
/// Total number of parameters in the optimization problem
|
|
118
|
+
size_t numParameters_{};
|
|
119
|
+
|
|
120
|
+
/// Number of parameters currently enabled for optimization
|
|
121
|
+
///
|
|
122
|
+
/// Always less than or equal to numParameters_
|
|
123
|
+
size_t actualParameters_{};
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
} // namespace momentum
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
3
|
+
*
|
|
4
|
+
* This source code is licensed under the MIT license found in the
|
|
5
|
+
* LICENSE file in the root directory of this source tree.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
#pragma once
|
|
9
|
+
|
|
10
|
+
#include <momentum/solver/fwd.h>
|
|
11
|
+
#include <momentum/solver/solver.h>
|
|
12
|
+
|
|
13
|
+
namespace momentum {
|
|
14
|
+
|
|
15
|
+
/// Extended options for the Subset Gauss-Newton optimization algorithm
|
|
16
|
+
///
|
|
17
|
+
/// Provides configuration specific to the subset-based Gauss-Newton solver
|
|
18
|
+
/// that optimizes only a selected subset of parameters
|
|
19
|
+
struct SubsetGaussNewtonSolverOptions : SolverOptions {
|
|
20
|
+
/// Damping parameter added to Hessian diagonal for numerical stability; see
|
|
21
|
+
/// https://en.wikipedia.org/wiki/Levenberg%E2%80%93Marquardt_algorithm
|
|
22
|
+
///
|
|
23
|
+
/// Higher values improve stability but may slow convergence
|
|
24
|
+
float regularization = 0.05f;
|
|
25
|
+
|
|
26
|
+
/// Enables backtracking line search to ensure error reduction at each step
|
|
27
|
+
bool doLineSearch = false;
|
|
28
|
+
|
|
29
|
+
/// Default constructor
|
|
30
|
+
SubsetGaussNewtonSolverOptions() = default;
|
|
31
|
+
|
|
32
|
+
/// Construct from base solver options while preserving Subset Gauss-Newton defaults
|
|
33
|
+
/* implicit */ SubsetGaussNewtonSolverOptions(const SolverOptions& baseOptions)
|
|
34
|
+
: SolverOptions(baseOptions) {}
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/// Gauss-Newton solver that optimizes only a selected subset of parameters
|
|
38
|
+
///
|
|
39
|
+
/// This specialized solver efficiently handles cases where only some parameters
|
|
40
|
+
/// need to be optimized while others remain fixed. It remaps the active parameters
|
|
41
|
+
/// to a smaller optimization problem, reducing computational cost.
|
|
42
|
+
template <typename T>
|
|
43
|
+
class SubsetGaussNewtonSolverT : public SolverT<T> {
|
|
44
|
+
public:
|
|
45
|
+
/// Creates a solver with the specified options and function to optimize
|
|
46
|
+
SubsetGaussNewtonSolverT(const SolverOptions& options, SolverFunctionT<T>* solver);
|
|
47
|
+
|
|
48
|
+
/// Returns "SubsetGaussNewton" as the solver name
|
|
49
|
+
[[nodiscard]] std::string_view getName() const override;
|
|
50
|
+
|
|
51
|
+
/// Updates solver configuration, handling both base and Subset Gauss-Newton specific options
|
|
52
|
+
void setOptions(const SolverOptions& options) final;
|
|
53
|
+
|
|
54
|
+
/// Specifies which parameters should be optimized
|
|
55
|
+
///
|
|
56
|
+
/// Updates the internal mapping between full parameter space and optimization subset
|
|
57
|
+
void setEnabledParameters(const ParameterSet& parameters) final;
|
|
58
|
+
|
|
59
|
+
protected:
|
|
60
|
+
/// Performs one iteration of the Subset Gauss-Newton algorithm
|
|
61
|
+
///
|
|
62
|
+
/// Computes the Jacobian, forms a reduced optimization problem for the enabled parameters,
|
|
63
|
+
/// solves it, and updates the full parameter vector
|
|
64
|
+
void doIteration() final;
|
|
65
|
+
|
|
66
|
+
/// Initializes solver state before optimization begins
|
|
67
|
+
void initializeSolver() final;
|
|
68
|
+
|
|
69
|
+
private:
|
|
70
|
+
/// Whether the solver has been initialized
|
|
71
|
+
bool initialized_{};
|
|
72
|
+
|
|
73
|
+
/// Jacobian matrix for the full parameter space
|
|
74
|
+
Eigen::MatrixX<T> jacobian_;
|
|
75
|
+
|
|
76
|
+
/// Residual vector
|
|
77
|
+
Eigen::VectorX<T> residual_;
|
|
78
|
+
|
|
79
|
+
/// Hessian approximation (JᵀJ) for the subset of enabled parameters
|
|
80
|
+
Eigen::MatrixX<T> subsetHessian_;
|
|
81
|
+
|
|
82
|
+
/// Gradient vector (JᵀR) for the subset of enabled parameters
|
|
83
|
+
Eigen::VectorX<T> subsetGradient_;
|
|
84
|
+
|
|
85
|
+
/// Cholesky factorization solver for the subset problem
|
|
86
|
+
Eigen::LLT<Eigen::MatrixX<T>> llt_;
|
|
87
|
+
|
|
88
|
+
/// Regularization parameter for numerical stability
|
|
89
|
+
float regularization_;
|
|
90
|
+
|
|
91
|
+
/// Whether to perform line search during parameter updates
|
|
92
|
+
bool doLineSearch_;
|
|
93
|
+
|
|
94
|
+
/// Step direction in the full parameter space
|
|
95
|
+
Eigen::VectorX<T> delta_;
|
|
96
|
+
|
|
97
|
+
/// Step direction in the reduced parameter space
|
|
98
|
+
Eigen::VectorX<T> subsetDelta_;
|
|
99
|
+
|
|
100
|
+
/// Mapping from subset parameter indices to full parameter indices
|
|
101
|
+
std::vector<int> enabledParameters_;
|
|
102
|
+
|
|
103
|
+
/// Updates the mapping between full and subset parameter spaces
|
|
104
|
+
///
|
|
105
|
+
/// Called when the set of enabled parameters changes
|
|
106
|
+
void updateEnabledParameters();
|
|
107
|
+
};
|
|
108
|
+
|
|
109
|
+
} // namespace momentum
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
// DO NOT EDIT! This file was auto-generated by crates/build/re_types_builder/src/codegen/cpp/mod.rs
|
|
2
|
+
// Based on "crates/store/re_types/definitions/rerun/archetypes/annotation_context.fbs".
|
|
3
|
+
|
|
4
|
+
#pragma once
|
|
5
|
+
|
|
6
|
+
#include "../collection.hpp"
|
|
7
|
+
#include "../component_batch.hpp"
|
|
8
|
+
#include "../component_column.hpp"
|
|
9
|
+
#include "../components/annotation_context.hpp"
|
|
10
|
+
#include "../indicator_component.hpp"
|
|
11
|
+
#include "../result.hpp"
|
|
12
|
+
|
|
13
|
+
#include <cstdint>
|
|
14
|
+
#include <optional>
|
|
15
|
+
#include <utility>
|
|
16
|
+
#include <vector>
|
|
17
|
+
|
|
18
|
+
namespace rerun::archetypes {
|
|
19
|
+
/// **Archetype**: The annotation context provides additional information on how to display entities.
|
|
20
|
+
///
|
|
21
|
+
/// Entities can use `components::ClassId`s and `components::KeypointId`s to provide annotations, and
|
|
22
|
+
/// the labels and colors will be looked up in the appropriate
|
|
23
|
+
/// annotation context. We use the *first* annotation context we find in the
|
|
24
|
+
/// path-hierarchy when searching up through the ancestors of a given entity
|
|
25
|
+
/// path.
|
|
26
|
+
///
|
|
27
|
+
/// See also `datatypes::ClassDescription`.
|
|
28
|
+
///
|
|
29
|
+
/// ## Example
|
|
30
|
+
///
|
|
31
|
+
/// ### Segmentation
|
|
32
|
+
/// 
|
|
33
|
+
///
|
|
34
|
+
/// ```cpp
|
|
35
|
+
/// #include <rerun.hpp>
|
|
36
|
+
///
|
|
37
|
+
/// #include <algorithm> // fill_n
|
|
38
|
+
/// #include <vector>
|
|
39
|
+
///
|
|
40
|
+
/// int main() {
|
|
41
|
+
/// const auto rec = rerun::RecordingStream("rerun_example_annotation_context_segmentation");
|
|
42
|
+
/// rec.spawn().exit_on_failure();
|
|
43
|
+
///
|
|
44
|
+
/// // create an annotation context to describe the classes
|
|
45
|
+
/// rec.log_static(
|
|
46
|
+
/// "segmentation",
|
|
47
|
+
/// rerun::AnnotationContext({
|
|
48
|
+
/// rerun::AnnotationInfo(1, "red", rerun::Rgba32(255, 0, 0)),
|
|
49
|
+
/// rerun::AnnotationInfo(2, "green", rerun::Rgba32(0, 255, 0)),
|
|
50
|
+
/// })
|
|
51
|
+
/// );
|
|
52
|
+
///
|
|
53
|
+
/// // create a segmentation image
|
|
54
|
+
/// const int HEIGHT = 200;
|
|
55
|
+
/// const int WIDTH = 300;
|
|
56
|
+
/// std::vector<uint8_t> data(WIDTH * HEIGHT, 0);
|
|
57
|
+
/// for (auto y = 50; y <100; ++y) {
|
|
58
|
+
/// std::fill_n(data.begin() + y * WIDTH + 50, 70, static_cast<uint8_t>(1));
|
|
59
|
+
/// }
|
|
60
|
+
/// for (auto y = 100; y <180; ++y) {
|
|
61
|
+
/// std::fill_n(data.begin() + y * WIDTH + 130, 150, static_cast<uint8_t>(2));
|
|
62
|
+
/// }
|
|
63
|
+
///
|
|
64
|
+
/// rec.log("segmentation/image", rerun::SegmentationImage(data.data(), {WIDTH, HEIGHT}));
|
|
65
|
+
/// }
|
|
66
|
+
/// ```
|
|
67
|
+
///
|
|
68
|
+
/// ⚠ **This type is _unstable_ and may change significantly in a way that the data won't be backwards compatible.**
|
|
69
|
+
///
|
|
70
|
+
struct AnnotationContext {
|
|
71
|
+
/// List of class descriptions, mapping class indices to class names, colors etc.
|
|
72
|
+
std::optional<ComponentBatch> context;
|
|
73
|
+
|
|
74
|
+
public:
|
|
75
|
+
static constexpr const char IndicatorComponentName[] =
|
|
76
|
+
"rerun.components.AnnotationContextIndicator";
|
|
77
|
+
|
|
78
|
+
/// Indicator component, used to identify the archetype when converting to a list of components.
|
|
79
|
+
using IndicatorComponent = rerun::components::IndicatorComponent<IndicatorComponentName>;
|
|
80
|
+
/// The name of the archetype as used in `ComponentDescriptor`s.
|
|
81
|
+
static constexpr const char ArchetypeName[] = "rerun.archetypes.AnnotationContext";
|
|
82
|
+
|
|
83
|
+
/// `ComponentDescriptor` for the `context` field.
|
|
84
|
+
static constexpr auto Descriptor_context = ComponentDescriptor(
|
|
85
|
+
ArchetypeName, "context",
|
|
86
|
+
Loggable<rerun::components::AnnotationContext>::Descriptor.component_name
|
|
87
|
+
);
|
|
88
|
+
|
|
89
|
+
public:
|
|
90
|
+
AnnotationContext() = default;
|
|
91
|
+
AnnotationContext(AnnotationContext&& other) = default;
|
|
92
|
+
AnnotationContext(const AnnotationContext& other) = default;
|
|
93
|
+
AnnotationContext& operator=(const AnnotationContext& other) = default;
|
|
94
|
+
AnnotationContext& operator=(AnnotationContext&& other) = default;
|
|
95
|
+
|
|
96
|
+
explicit AnnotationContext(rerun::components::AnnotationContext _context)
|
|
97
|
+
: context(ComponentBatch::from_loggable(std::move(_context), Descriptor_context)
|
|
98
|
+
.value_or_throw()) {}
|
|
99
|
+
|
|
100
|
+
/// Update only some specific fields of a `AnnotationContext`.
|
|
101
|
+
static AnnotationContext update_fields() {
|
|
102
|
+
return AnnotationContext();
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/// Clear all the fields of a `AnnotationContext`.
|
|
106
|
+
static AnnotationContext clear_fields();
|
|
107
|
+
|
|
108
|
+
/// List of class descriptions, mapping class indices to class names, colors etc.
|
|
109
|
+
AnnotationContext with_context(const rerun::components::AnnotationContext& _context) && {
|
|
110
|
+
context = ComponentBatch::from_loggable(_context, Descriptor_context).value_or_throw();
|
|
111
|
+
return std::move(*this);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/// This method makes it possible to pack multiple `context` in a single component batch.
|
|
115
|
+
///
|
|
116
|
+
/// This only makes sense when used in conjunction with `columns`. `with_context` should
|
|
117
|
+
/// be used when logging a single row's worth of data.
|
|
118
|
+
AnnotationContext with_many_context(
|
|
119
|
+
const Collection<rerun::components::AnnotationContext>& _context
|
|
120
|
+
) && {
|
|
121
|
+
context = ComponentBatch::from_loggable(_context, Descriptor_context).value_or_throw();
|
|
122
|
+
return std::move(*this);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/// Partitions the component data into multiple sub-batches.
|
|
126
|
+
///
|
|
127
|
+
/// Specifically, this transforms the existing `ComponentBatch` data into `ComponentColumn`s
|
|
128
|
+
/// instead, via `ComponentBatch::partitioned`.
|
|
129
|
+
///
|
|
130
|
+
/// This makes it possible to use `RecordingStream::send_columns` to send columnar data directly into Rerun.
|
|
131
|
+
///
|
|
132
|
+
/// The specified `lengths` must sum to the total length of the component batch.
|
|
133
|
+
Collection<ComponentColumn> columns(const Collection<uint32_t>& lengths_);
|
|
134
|
+
|
|
135
|
+
/// Partitions the component data into unit-length sub-batches.
|
|
136
|
+
///
|
|
137
|
+
/// This is semantically similar to calling `columns` with `std::vector<uint32_t>(n, 1)`,
|
|
138
|
+
/// where `n` is automatically guessed.
|
|
139
|
+
Collection<ComponentColumn> columns();
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
} // namespace rerun::archetypes
|
|
143
|
+
|
|
144
|
+
namespace rerun {
|
|
145
|
+
/// \private
|
|
146
|
+
template <typename T>
|
|
147
|
+
struct AsComponents;
|
|
148
|
+
|
|
149
|
+
/// \private
|
|
150
|
+
template <>
|
|
151
|
+
struct AsComponents<archetypes::AnnotationContext> {
|
|
152
|
+
/// Serialize all set component batches.
|
|
153
|
+
static Result<Collection<ComponentBatch>> as_batches(
|
|
154
|
+
const archetypes::AnnotationContext& archetype
|
|
155
|
+
);
|
|
156
|
+
};
|
|
157
|
+
} // namespace rerun
|