All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added
compas_fab.robots.Waypointsclass to represent a sequence of targets. It has two child classes:FrameWaypointsandPointAxisWaypoints. - Added
compas_fab.robots.Targetclass to represent a motion planning target. - Added also child classes
FrameTarget,PointAxisTarget,ConfigurationTarget,ConstraintSetTarget - Unlike previous constraints,
Targetsdo not containgroupas parameter. Instead, group parameter is passed to the planning call. - Target scaling function is now embeded in the code for Targets.
scaled()should be called by the user before passing the target to theplan_motionfunction.
- Renamed
PybulletClient.get_cached_robottoPybulletClient.get_cached_robot_modelto avoid confusion between theRobotModelandRobotclass. - Renamed
PybulletClient.ensure_cached_robottoPybulletClient.ensure_cached_robot_model. - Renamed
PybulletClient.ensure_cached_robot_geometrytoPybulletClient.ensure_cached_robot_model_geometry. - Renamed
PybulletClient.cache_robottoPybulletClient.cache_robot_model. - Backend planners now use multi-inherence instead of
__call__to include the backend functions. This allows for better generated documentation. Robot.plan_carteisan_motion()now acceptsWaypointsas target. Implementation forFrameWaypointsis supported with same functionality as before. Simply wrapFrameobjects usingFrameWaypoints(frames).- Changed
BoundingVolume,Constraint,JointConstraint,OrientationConstraint,PositionConstraintto inherit fromcompas.data.Dataclass. - Change the signature of
plan_motion()to usetarget(Targetclass) instead ofgoal_constraints. Only one target is accepted. Users who wish to compose their own constraint sets can still useConstraintSetTarget. - Moved
Robot.orientation_constraint_from_frame()toOrientationConstraint.from_frame(), as constraints are no longer intended for users to use directly. - Moved
Robot.position_constraint_from_frame()toPositionConstraint.from_frame(), as constraints are no longer intended for users to use directly. - Moved
Robot.constraints_from_frame()to ros.backend_features and is handled byconvert_target_to_goal_constraints(). Users who wish to use a frame as target should use aFrameTargetinstead. - Changed the behavior of Duration class when accepting both seconds (float) and nanoseconds (int) where the decimal point of seconds and the nanoseconds add up to more than 1 second.
- Changed GH Component
ConstraintsFromPlanetoFrameTargetFromPlane. - Changed GH Component
ConstraintsFromTargetConfigurationtoConfigurationTarget. - Changed
RosClientconstructor to take a type for planner backend instead of a string. This also changes the name of the argument fromplanner_backendtoplanner_type.
- Removed
plan_cartesian_motion_deprecatedandplan_motion_deprecatedmethods fromRobotclass - Removed
forward_kinematics_deprecatedandinverse_kinematics_deprecatedmethod fromRobotclass
- Raise
BackendFeatureNotSupportedErrorexceptions when a features is not supported by the planner, instead of genericException.
- Add parameter to control which link the tool is connected to in Grasshopper.
- Introduced
compas_fab.robots.RobotLibraryclass with 4 built-in robots. - Added a script to extract URDF, SRDF and meshes from a Docker MoveIt instance.
- Changed
CollisionMeshinherit fromcompas.data.Data - Changed
AttachedCollisionMeshto inherit fromcompas.data.Data - Changed
Robotinherit fromcompas.data.Data - Changed
RobotSemanticsinherit fromcompas.data.Data - Changed
Toolto inherit fromcompas.data.Data - Renamed
Tool.link_nametoTool.connected_to - Migrate to COMPAS 2.x: add dependency to
compas_robots - Migrate to COMPAS 2.x: use
compas.tolerancemodule instead ofcompas.PRECISION - Add
attributestoTrajectoryclass. - Fixed
dataserialization API to comply withCOMPAS 2.0private data API. - Use the tool's
connected_tolink when showing end-effector frames in Grasshopper. - Change default end-effector link name from
ee_linktotool0.
- Removed V-Rep backend.
- Removed outdated
PathPlanclass. - Removed outdated rfl demo class.
- Remove deprecated aliases for artists (currently on
compas_robots). - Removed
compas_fab.robots.ur5because it is now part ofcompas_fab.robots.RobotLibrary. - Removed data files of ur5 and ur10e from
src/compas_fab/data/universal_robotsbecause they are now in ofsrc/compas_fab/data/robot_library.
- Added
Forward KinematicsGH component.
- Updated install process of GH components.
- Added caching to the GH component that visualizes scene, to avoid retrieving the whole scene too often.
- Fixed pre-Noetic support on the MoveIt planner when a tool is attached to the robot.
- Added support for attached and non-attached collision mesh visualization to the
Robot VisualizeGH component. - Added a prefix to all GH components.
- Added
appendto the operations of theCollision MeshGH component.
- Changed behavior of
Attach ToolGH component to only attach the tool but not add it to the planning scene state. - Duration class takes floats as
secvariable. - Changed the behavior of
forward_kinematics,inverse_kinematics,iter_inverse_kinematics,plan_cartesian_motionand constraints construction methods (orientation_constraint_from_frame,position_constraint_from_frame,constraints_from_frame) inRobotclass to use the frame of the attached tool if a tool is attached. This behavior can be reverted back (ie. only calculate T0CF) using the flaguse_attached_tool_frameof all these methods. - Fixed usage of
tangent_points_to_circle_xyin Spherical Wrist solver to work with COMPAS v1.16 and older.
- Fixed DH params for analytical IK solver of UR3e and UR10e.
- Fixed Kinetic support on IK, FK, and motion planning calls.
- Fixed
Publish to topicGrasshopper component when theros_clienthas been replaced (eg. disconnected and reconnected).
- Added a new GH component -
ConstraintsFromTargetConfiguration - Added some missing information to GH and V-REP docs.
- Added a
Robot().attached_toolsproperty to allow attaching tools to multiple planning groups simultaneously.
- Replaced icon for GH component -
ConstraintsFromPlane Robot().attached_toolnow points to the tool attached to therobot.main_group_name.- Added parameter
groupto theAttachToolComponent
- Attaching a tool to a planning group doesn't overwrite the tool attached to other groups.
- Changed
Trajectoryto inherit fromcompas.data.Dataclass to fix a serialization error that expects guid to be present.
- Changed Grasshopper components to default to icon display.
- Changed to use
compas_rhino.conversionsto coerce frames.
- Fixed link parameter name when doing FK inside the GH component to display attached collision meshes.
- Fixed transform of the attached collision mesh frame inside the GH component.
- Fixed uninstall process not removing GH components.
- Added
compas_fab.robots.ReachabilityMap - Added
compas_fab.robots.DeviationVectorsGenerator - Added
compas_fab.robots.OrthonormalVectorsFromAxisGenerator
- Fixed
ROSmsgimport on GH components for publish/subscribe.
- Added
compas_fab.backends.PyBulletClient.load_ur5()method to simplify some examples. - Added Grasshopper components to get a zero configuration and to merge two configurations.
- Moved all public API classes in
compas_fab.backendsto second-level imports. - Updated to COMPAS 1.14.
- Simplified call to remove an attached tool by also removing the remaining collision mesh from the world automatically.
- Fixed PyBullet loading of meshes.
- Fixed missing flag in reset planning scene call.
- Fixed issue on cartesian and kinematic planning when model contains passive joints.
- Fixed pose of collision mesh in ROS Noetic being ignored.
- Deprecated
compas_fab.utilities.write_data_to_jsonin favor ofcompas.data.json_dump. - Deprecated
compas_fab.utilities.read_data_from_jsonin favor ofcompas.data.json_load.
- Added
Attach ToolGH component: crowd-coded at McNeel's Robotic Fabrication Workshop!
- Changed default wire visibility to hidden in some GH components for cleaner Grasshopper files.
- Added a new backend: analytical kinematics for spherical-wrist and offset-wrist robots.
- Consider
AttachedCollisionMeshinAnalyticalInverseKinematics.
- Removed the bundled binary files for the
VrepClientremote API. To use V-REP, use theremoteApibinaries provided with the software.
- Added
PoseArray,MultiArrayDimension,MultiArrayLayout,Int8MultiArray,Float32MultiArray,Int32tocompas_fab.backends.ros.messages - Added
unordered_disabled_collisionsattribute toPyBulletClientandRobotSemantics - Added better support for concave meshes in the
PyBulletClient - Added
Robot.iter_inverse_kinematicsto allow iterating over all IK solutions provided by a solver
- Changed the backend feature
InverseKinematics.inverse_kinematicsto be a generator. As a consequence of this,ClientInterface.inverse_kinematicsandPlannerInterface.inverse_kinematicshave changed to generators as well - Standardized the yielded type of
InverseKinematics.inverse_kinematicsacross the PyBullet, MoveIt and V-REP planners - Added iterative accurate IK resolution for PyBullet
- Fixed
UnsupportedOperationerror when usingPyBulletClientin Jupyter notebook (raised byredirect_stdout) - Fixed
JointTrajectoryPoint.from_datato be backward-compatible with JSON data generated beforecompas_fab0.18 - Fixed
JointTrajectory.from_datato be backward-compatible with JSON data generated beforecompas_fab0.17
- Fixed bundling of ghuser components
- Added documentation for Grasshopper components.
- Added Grasshopper components to publish and subscribe to ROS topics.
- Updated
build-ghuser-componentstask - Updated to COMPAS 1.7
- Made consistent use of
reprin nested objects
- Fixed bug in
compas.backends.PyBulletClient.convert_mesh_to_bodycircumventing PyBullet's propensity to cache
- Fix error message during uninstall of Grasshopper components
- Grasshopper components now also for Mac
- Added support for MoveIt on ROS Noetic
- Added support for Python 3.9
- The
Configurationclass has moved tocompas.robots, but is still aliased withincompas_fab.robots - Lazily load
V-REP remoteApilibrary
- Fixed
repr()ofROSmsgclass - Fixed data type of secs and nsecs in
TimeROS message - Fixed
CollisionObject.to_collision_meshes - Fixed serialization of joint names for
compas_fab.robots.JointTrajectoryPoint - Fixed deserialization of
AttachedCollisionMesh
compas_fab.robots.Configurationis being deprecated in favor ofcompas.robots.Configuration
- Added python components library for Grasshopper
- Added
compas_fab.robots.PyBulletClient.get_robot_configuration - Added
compas_fab.robots.Robot.ensure_geometry - Added serialization methods to
compas_fab.robots.CollisionMeshandcompas_fab.robots.AttachedCollisionMesh - Added
attached_collision_meshesattribute tocompas_fab.robots.JointTrajectory - Added
compas_fab.backends.PlanningSceneComponents.__ne__ - Added dictionary behavior to
compas_fab.robots.JointTrajectoryPoint.merge - Added length limitations to attributes of
compas_fab.robots.JointTrajectoryPoint.merge
- Updated to
COMPAS 1.1 Configuration&JointTrajectoryPoint: the attributesvaluesandtypeschanged tojoint_valuesandjoint_typesrespectively.
- Fixed bug in the PyBullet client where one could not update the configuration of a robot with an attached collision mesh
- Fixed bug existing since version 0.12 where
compas_fab.backends.RosClient.add_attached_collision_meshadded collision objects to the scene, but did not attached them to the robot - Fixed bug when keys with
Nonevalues were passed to the planner.
- Remove
compas_fab.robots.JointTrajectoryPoint.merge
- Updated to
COMPAS 1.0
- Updated to
COMPAS 0.19
- Added new backend feature
ResetPlanningScene - Added
MoveItResetPlanningScene
- Updated to
COMPAS 0.18 - Use
compas.IPYto check for IronPython
- Fixed bug in
remove_attached_toolofPlanningScene
- Added
nameproperty toToolclass.
- Fixed bug in
add_attached_toolofPlanningScene - Fixed
frame_idgeneration when tool name changes - Fixed freeze with some sync planning scene methods on Grasshopper/IronPython
- Updated to
COMPAS 0.17
- PyBullet integration: added support for PyBullet client and forward/inverse kinematic solver
- Added
ClientInterface,PlannerInterfaceand various backend feature interfaces - Added implementations of these interfaces for ROS and V-REP
- Added
attributesdictionary toRobotclass - Added
compas_fab.robots.Tool.from_t0cf_to_tcf - Added
compas_fab.robots.Tool.from_tcf_to_t0cf - Added
joint_namesas optional parameter for allcompas_fab.robots.Configurationconstructors - Added
compas_fab.robots.Configuration.iter_differences - Added
compas_fab.robots.Configuration.max_difference - Added
compas_fab.robots.Configuration.close_to - Added
compas_fab.robots.Configuration.merge - Added
compas_fab.robots.JointTrajectoryPoint.merge - Added
compas_fab.robots.Semantics.group_states - Added
compas_fab.robots.Robot.get_configuration_from_group_state
- Updated to
COMPAS 0.16.9 - Renamed
compas_fab.robots.Robot.to_local_coordstocompas_fab.robots.Robot.to_local_coordinates - Renamed
compas_fab.robots.Robot.to_world_coordstocompas_fab.robots.Robot.to_world_coordinates - Backend clients have been restructured according to the new interfaces
- Parameter
backendof forward kinematics has been renamed tosolver - The signatures of all kinematics, motion planning and planning scene management methods have been homogenized across backend clients and within
Robot - All examples have been updated to reflect these changes
- The installer to Rhino has been unified with COMPAS core. Now running
python -m compas_rhino.installwill also detect and install COMPAS FAB and its dependencies. - Renamed all
RobotArtistimplementations toRobotModelArtistto reflect the fact they depend oncompas.robots.RobotModel. - Renamed
compas_fab.robots.Robot.from_tool0_to_attached_tooltocompas_fab.robots.Robot.from_t0cf_to_tcf - Renamed
compas_fab.robots.Robot.from_attached_tool_to_tool0tocompas_fab.robots.Robot.from_tcf_to_t0cf - Changed ROS planning scene methods to be synchronous.
- Attached collision meshes are included in inverse kinematics calculations in ROS
- The methods
forward_kinematics,inverse_kinematics,plan_cartesian_motionandplan_motionofRobotclass have been refactored, but a backwards-compatible deprecated version with the old signatures still exists suffixed by_deprecated, e.g.forward_kinematics_deprecated. RobotArtistare deprecated in favor ofRobotModelArtist.
- Added optional
joint_namestoConfiguration - Added
Configuration.scaled - Added
full_joint_statetoRobot.inverse_kinematics - Added
Semantics.get_all_configurable_joints
- Updated to
COMPAS 0.15 - Construct
full_configurationwithvalues,types,joint_namesinRobotrather than inMoveItPlanner MoveItPlannerreturnsstart_configurationwith setjoint_names- Removed parameter
namesfromRobotArtist.update - Updated Grasshopper examples
Robot:forward_kinematicsreturns nowframe_WCFMoveItPlanner:forward_kinematicstakes now instance ofConfigurationandrobotMoveItPlanner:inverse_kinematicstakes now instance ofConfigurationandrobot- Property :class:
compas_fab.robots.Robot.artistdoes not try to scale robot geometry if links and/or joints are not defined. - In :class:
compas_fab.robots.constraints.JointConstraint, addedtolerance_aboveandtolerance_belowfor allowing asymmetrical constraints. - In :class:
compas_fab.robots.Robot, changed theconstraints_from_configurationfunction withtolerances_aboveandtolerances_below. - :meth:
compas_fab.robots.CollisionMesh.scalenow takes a scale factor instead of a :class:compas.geometry.Scaleinstance as an argument.
- Convert constraints on inverse kinematics and cartesian planner to ROS messages
- Fix support for trajectory constraints on kinematic planner
- Added Python 3.8 support
- Updated to
COMPAS 0.13
- Fix DAE parser to handle
polylistmeshes - Bumped
roslibpydependency to0.7.1to fix blocking service call issue on Mac OS
- Added
attach_tool,detach_tool,draw_attached_tool,from_tool0_to_attached_toolandfrom_attached_tool_to_tool0toRobot - Added
attach_toolanddetach_tooltoArtist - Added
add_attached_toolandremove_attached_tooltoPlanningScene - Added redraw/clear layer support to :class:
~compas_fab.rhino.RobotArtistfor Rhino - Added material/color support for DAE files on ROS file loader
- Changed
inverse_kinematics,plan_cartesian_motionandplan_motionto use the attached_tool'sAttachedCollisionMeshif set
- Fixed mutable init parameters of
Configuration,JointTrajectoryPoint,JointTrajectoryandRobot.basic. - Fixed interface of :class:
~compas_fab.blender.RobotArtistfor Blender - Fixed DAE parsing of meshes with multiple triangle sets
- Added
load_robotmethod to ROS client to simplify loading robots from running ROS setup. - Added
compas_fab.robots.Wrench: a Wrench class representing force in free space, separated into its linear (force) and angular (torque) parts. - Added
compas_fab.robots.Inertia: a Inertia class representing spatial distribution of mass in a rigid body
- Updated to
COMPAS 0.11
- Updated to
COMPAS 0.10 - Add better support for passive joints on IK, Cartesian and Kinematic planning
- Use WorldXY's origin as default for robots that are have no parent join on their base
- Fixed parsing of semantics (SRDF) containing nested groups
- Fixed DAE support on ROS File loader
- Fixed Python 2 vs Python 3 incompatibilities in
compas_fab.sensorsmodule - Changed example for loading PosConCM (includes parity argument, differs from PosCon3D)
- Changed format
compas_fab.sensors.baumer.PosConCM.set_flex_mount() - Changed tasks.py to run
invoke test - Renamed
compas_fab.backends.CancellableTasktocompas_fab.backends.CancellableFutureResult - ROS client: changed joint trajectory follower (
follow_joint_trajectory) to support genericJointTrajectoryarguments. - ROS client: changed return type of trajectory execution methods to
CancellableFutureResult
- Added
compas_fab.sensors.baumer.PosCon3D.reset() - Added
compas_fab.sensors.baumer.PosConCM.reset() - ROS client: added support for MoveIt! execution action via
client.execute_joint_trajectory. - Added
compas_fab.backends.FutureResultclass to deal with long-running async tasks
- Removed
compas_fab.sensors.baumer.PosConCM.get_live_monitor_data() - Removed non-implemented methods from
compas_fab.robots.Robot:send_frame,send_configuration,send_trajectory
- Fixed missing planner initialization when used without context manager.
- Updated
COMPASdependency to0.8.1 - Base robot artist functionality moved to
compas.robots.RobotModel Robot:inverse_kinematicsreturns now group configurationRobot:forward_kinematicshas new parameterbackendto select eitherclientFK ormodelFK.Robot:forward_kinematicsreturns nowframe_RCFRobot:forward_kinematicsdoesn't need full configuration anymore- Fixed delays when modifying the planning scene of ROS.
- Added
jump_thresholdparameter toplan_cartesian_motion - Added
action_nameparameter to reconfigure joint trajectory follower action. - Added support to retrieve the full planning scene.
- Removed
compas_fab.Robot.get_configuration
- ROS Client: renamed
compute_cartesian_pathtoplan_cartesian_motion - ROS Client: renamed
motion_plan_goal_frameandmotion_plan_goal_configurationtoplan_motion - ROS Client: removed methods from
Robotthat are now handled withPlanningScene, e.g.add_collision_meshandadd_attached_collision_mesh - ROS Client: change the return type of
plan_motionandplan_cartesian_motionto the new trajectory classes. - ROS File Server Loader: moved to
compas_fab.backendspackage - ROS File Server Loader: renamed
loadtoload_urdfand sync'd API to other loaders. - V-REP Client: renamed
get_end_effector_posetoforward_kinematics - V-REP Client: renamed
find_robot_statestoinverse_kinematics - V-REP Client: renamed
find_path_plan_to_configtoplan_motion_to_config - V-REP Client: renamed
find_path_plantoplan_motion - V-REP Client: changed
is_connectedto become a property - Made
robot_artistdefaultNoneonRobotconstructor - Changed
PathPlanclass to use the new trajectory classes
- Added
scalemethod toConfiguration - Implemented Constraints (
OrientationConstraint,PositionConstraint,JointConstraint) to use withplan_motion - Implemented
PlanningScene,CollisionMeshandAttachedCollisionMesh - Added generic representations for motion planning requests (
JointTrajectory,JointTrajectoryPoint,Duration) - Added UR5 robot model data for example purposes
- Added several doc examples
- Aliases for
FrameandTransformation. Import fromcompas.geometryinstead.
- Fixed missing library for V-REP on macOS
- The aliases for
FrameandTransformationwill be removed, in the future, import directly fromcompascore.
- Color parameter to Rhino robot artist
- Updated to
COMPAS 0.4.10
- Deeper integration with MoveIt! motion planning services
- Added sync and async versions of many ROS service calls
- Added support for cancellable tasks/actions
- Renamed
UrdfImportertoRosFileServerLoader - Updated to
COMPAS 0.4.8
- Robot artist for Blender
- First open source release!
- V-REP and ROS clients
- Updated to
COMPAS 0.3.2
- Initial version