Announcements
- Our recommended tactics for looping over
MultibodyPlantelements have changed:MultibodyPlantnow offers methods to remove elements:- After removal of an element, the set of valid indices is no longer
contiguous from
0tonum_joints()ornum_joint_actuators(). - Typically, legacy code used integer-range loops to cover all elements:
for (JointIndex i{0}; i < plant.num_joints(); ++i) ...for i in range(plant.num_joints()): ...
- Now that removals are possible, we instead recommend using the accessors to
provide the list of indices:
for (JointIndex i : plant.GetJointIndices()) ...for i in plant.GetJointIndices(): ...
- Drake’s supported version of Clang is now Clang 15 (#21339)
Breaking changes since v1.28.0
- On macOS x86_64 builds, IPOPT is now disabled by default and unsupported (#21346)
Refer to our Drake Stability Guidelines for our policy on API changes.
Changes since v1.28.0
Dynamical Systems
New features
- Add
plant_contextargument toInverseDynamicsandInverseDynamicsController(#21287)
Fixes
- None
Mathematical Program
New features
- Add perspective of positive semidefinite constraint (#21296)
- Convex set projection (#21113)
- Choose the transcription for adding (nonconvex) constraints (#21179)
- Add
MathematicalProgram::RemoveDecisionVariable(#21392) - Add
MathematicalProgram::RemoveVisualizationCallback(#21399)
Fixes
- Fall Back To Indefinite Hessian when LDLT fails (#21411)
Multibody Dynamics and Geometry
New features
- Add
MultibodyPlant::RemoveJoint()(#21397)
Fixes
- Fix signed-distance gradients of touching (zero distance) boxes (#21266)
- Meshcat has a default recording (#21360)
Planning
New features
- Moves ZmpPlanner to planning directory (#21305)
Fixes
- Fix GetQuaternionDofStartIndices to loop over joints, not bodies (#21308)
Tutorials and examples
- None
Miscellaneous features and fixes
ModelVisualizerdraw allMultibodyPlantframes when requested (#21318)- Add
RigidTransform(etc.) factory methods without checks (#21393) - Add
DRAKE_DECLARE_COPY_AND_MOVE_AND_ASSIGNmacro (#21419)
pydrake bindings
New features
- Add python bindings for ExponentialPlusPiecewisePolynomial (#21304)
- Add python bindings for MultibodyPlant.CalcRelativeRotationMatrix (#21426)
- Add python bindings for ZmpPlanner (#21305)
Fixes
- None
Build system
- On Ubuntu, source prereqs now uses bazelisk.deb instead of bazel.deb (#21321)
- Upgrade Bazel to latest release 7.1.1 (#21123)
- Upgrade supported Clang to version 15 (#21339)
Build dependencies
- Disable IPOPT on macOS x86_64 (#21346)
- Upgrade abseil_cpp_internal to latest commit (#21385)
- Upgrade bazel_skylib to latest release 1.6.1 (#21385)
- Upgrade buildifier to latest release 7.1.1 (#21385)
- Upgrade Clarabel.rs to latest release 0.7.1 (#21053)
- Upgrade coinutils_internal to latest release 2.11.11 (#21385)
- Upgrade crate_universe to latest versions (#21306, #21385)
- Upgrade dm_control_internal to latest release 1.0.18 (#21385)
- Upgrade drake_models to latest commit (#21285, #21310, #21410)
- Upgrade ipopt_internal_fromsource to latest release 3.14.16 (#21385)
- Upgrade meshcat to latest commit (#21313, #21327)
- Upgrade mypy_internal to latest release 1.10.0 (#21385)
- Upgrade openusd_internal to latest release 24.05 (#21340)
- Upgrade platforms to latest release 0.0.10 (#21385)
- Upgrade rules_rust to latest release 0.42.1 (#21391, #21277)
- Upgrade rust_toolchain to latest versions (#21277)
- Upgrade sdformat_internal to latest commit (#21390)
- Upgrade stable_baselines3_internal to latest release 2.3.2 (#21385)
- Upgrade typing_extensions_internal to latest release 4.11.0 (#21385)
- Upgrade vtk_internal to latest commit (#21275, #21387)
Newly-deprecated APIs
drake::geometry::optimization::AffineSubspace::Project()(#21113)drake::multibody::MultibodyPlant::SetFreeBodyRandomPositionDistribution()(#21169)drake::multibody::QuaternionFloatingJoint::get_default_pose()(#21169)drake::multibody::QuaternionFloatingJoint::get_default_position()(#21169)drake::multibody::QuaternionFloatingJoint::get_pose()(#21169)drake::multibody::QuaternionFloatingJoint::get_position()(#21169)drake::multibody::QuaternionFloatingJoint::set_default_position()(#21169)drake::multibody::QuaternionFloatingJoint::SetFromRotationMatrix()(#21169)drake::multibody::QuaternionFloatingJoint::set_pose()(#21169)drake::multibody::QuaternionFloatingJoint::set_position()(#21169)drake::multibody::QuaternionFloatingJoint::set_quaternion()(#21169)drake::multibody::QuaternionFloatingJoint::set_random_position_distribution()(#21169)drake::multibody::RpyFloatingJoint::set_translation()(#21169)drake::systems::controllers::ZmpPlanner(#21305)pydrake.multibody.tree.QuaternionFloatingJoint.get_default_pose()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.get_default_position()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.get_pose()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.get_position()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.set_default_position()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.SetFromRotationMatrix()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.set_pose()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.set_position()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.set_quaternion()(#21169)pydrake.multibody.tree.QuaternionFloatingJoint.set_random_position_distribution()(#21169)pydrake.multibody.tree.RpyFloatingJoint.set_translation()(#21169)
Removal of deprecated items
- Calling
drake::schema::Transform::Sample()when it has a non-null, non-worldbase_framebecomes an error. (The returned value would be misleading because it doesn’t incorporate the base frame.) (#21373) drake::geometry::render::RenderEngine::GetColorDFromLabel()(#21373)drake::geometry::render::RenderEngine::GetColorIFromLabel()(#21373)drake::geometry::render::RenderEngine::LabelFromColor()(#21373)drake::systems::analysis::kNoConcurrency(#21373)drake::systems::analysis::kUseHardwareConcurrency(#21373)drake::systems::analysis::MonteCarloSimulation()withnum_parallel_executionsargument (#21373)drake::systems::sensors::Color(#21373)drake::systems::sensors::ColorD(#21373)drake::systems::sensors::ColorI(#21373)drake::systems::sensors::ColorPalette(#21373)geometry/render/color_deprecated.h(#21373)pydrake.geometry.optimization.FindSeparationCertificateOptions.num_threads(#21373)pydrake.geometry.RenderEngine.GetColorDFromLabel()(#21373)pydrake.geometry.RenderEngine.GetColorIFromLabel()(#21373)pydrake.geometry.RenderEngine.LabelFromColor()(#21373)systems/sensors/color_palette.h(#21373)
Notes
This release provides pre-compiled binaries named
drake-1.29.0-{jammy|mac-arm64}.tar.gz. See Stable Releases for instructions on how to use them.
Drake binary releases incorporate a pre-compiled version of SNOPT as part of the Mathematical Program toolbox. Thanks to Philip E. Gill and Elizabeth Wong for their kind support.