Skip to content

Releases: adamheins/pyb_utils

v2.2.1

27 Apr 14:22
Compare
Choose a tag to compare

This hotfix release fixes a bug where ghost objects' orientation was not being updated properly, thanks to @blooop.

v2.2.0

27 Dec 21:35
Compare
Choose a tag to compare

Additions

  • Add a dedicated GhostObject.box constructor (thanks to @ags-dy).
  • Add client_id argument to GhostObject.
  • Add FrameRecorder class, which is an alternative way to record videos of the simulation as a sequence of frames (images).
  • Add principal rotation matrix functions rotx, roty, rotz, as well as rot2d for 2D rotation matrices. This was added because scipy is now used internally for rotations, and it does not provide these functions directly.

Changes

  • Internal: use scipy for rotation math instead of spatialmath.

v2.1.0

04 Nov 23:57
Compare
Choose a tag to compare

This release adds contact wrench and more quaternion utility functions.

Contact wrench utilities

  • The functions get_point_contact_wrench, get_points_contact_wrench, and get_total_contact_wrench have been added for computing the contact wrench exerted on one object through contact with another.

Quaternion utilities

  • The functions quatx, quaty, and quatz have been added to construct quaternions representing rotations about the major axes.
  • Under the hood, the quaternion functions have all been rewritten to use spatialmath.UnitQuaternion.

Future

  • The field localInerialPos of the DynamicsInfo named tuple is misspelled; this will be fixed in a future major release.

v2.0

20 Oct 20:54
Compare
Choose a tag to compare

A new major release! (which means breaking changes!)

Breaking Changes

Robot

  • The robot class now distinguishes between three sets of joints: all joints (including all fixed joints), moveable joints (excludes fixed joints), and actuated joints (the ones that the user actually wants to control). There are corresponding properties num_total_joints, num_moveable_joints, and num_actuated_joints, as well as all_joint_names, moveable_joint_names, and actuated_joint_names. The previous attribute num_joints has been removed, with num_moveable_joints being its replacement.
  • The constructor argument tool_joint_name has been removed and is replaced with tool_link_name to be more intuitive: the end effector/tool is a link.

Collision Detector

The collision detector API has been revised to be simpler and less verbose, which also means that every method of the CollisionDetector class now has a slightly different signature.

  • Collision pairs are now specified as plain tuples, each a pair of collision objects. A collision object is either a single int representing a body UID, a tuple (body_uid, link_uid), or a tuple (body_uid, link_name). This also means the verbose NamedCollisionObject dataclass is no longer with us.
  • The CollisionDetector no longer takes a dictionary mapping body names to indices anymore; this was cumbersome.
  • The CollisionDetector no longer knows anything about commanding robots. This should be handled by the user outside of the detector (see the updated example script).

Other Changes

  • The Robot class now has the convenience methods get_link_index and get_joint_index for convenient look-up by name.
  • The Robot class now has the property link_names, a list of all its link names.
  • Added the as_rotation_matrix parameter to BulletBody.get_pose.
  • Some additional tests and typo fixes.

v1.3.1

05 Oct 15:21
Compare
Choose a tag to compare

This minor release upgrades the Pillow dependency to 10.0.1 to fix some vulnerabilities and also removes an incorrect transpose in the segmentation mask in the camera example script.

v1.3.0

03 Oct 18:00
Compare
Choose a tag to compare

This release primarily focuses on improving the Robot class:

  • Only parse the non-fixed joints of the robot by default.
  • Allow manually specifying which joints are actuated.
  • Add the set_joint_friction_force method to enable free-moving joints.
  • Add the command_effort method for torque joint.
  • Add the as_rotation_matrix argument to the get_link_pose methods to automatically convert the quaternion to a rotation matrix before returning it.

Two new examples have also been added: an under-actuated 2-link planar pendulum and a task-space robot arm control demo.

Finally, the function get_urdf_path has also been added to obtain URDFs packaged with pyb_utils (currently only the two-link pendulum mentioned above).

v1.2.0

19 Sep 23:02
Compare
Choose a tag to compare

This release adds significantly more functionality to the Robot class, including task-space pose and velocity and Jacobian computations. New named tuples for getJointState(s) and getLinkState(s) have also been added.

v1.1.0

06 Sep 23:23
Compare
Choose a tag to compare

This release add documentation generated with sphinx and hosted on readthedocs, which can be found here.

v1.0.0

12 Aug 22:30
Compare
Choose a tag to compare

This major version release introduces a number of additions and some API changes.

  • Python 3.11 is now supported, while Python 3.7 support has been dropped.
  • The array of points returned from Camera.get_point_cloud now has dimensions (height, width, 3) rather than (width, height, 3), to match the other parts of the Camera API.
  • The CollisionDetector API has now been changed so that an articulated robot is not required.
  • A getJointInfo function wrapper has been added to the set of wrapped functions returning named tuples.
  • Some minor bug fixes to the camera and ghost object examples.
  • A number of tests have been added, and tox can be used to run them against the supported Python versions.

v0.3.1

04 Aug 19:47
Compare
Choose a tag to compare

This minor release fixes a bug with the named tuples, where not passing the physicsClientId argument by name to the underlying PyBullet functions caused unexpected behaviour. All arguments in the named tuple wrapper functions are now passed by name (i.e., as keyword arguments) to avoid this.