Robotic fabrication package for the COMPAS Framework
Project description
Robotic fabrication package for the COMPAS Framework that facilitates the planning and execution of robotic fabrication processes. It provides interfaces to existing software libraries and tools available in the field of robotics (e.g. OMPL, ROS) and makes them accessible from within the parametric design environment. The package builds upon COMPAS, an open-source Python-based framework for collaboration and research in architecture, engineering and digital fabrication.
Main features
Multiple backends for simulation and execution (e.g. ROS: Robot Operating System)
Planning tools: kinematic solvers, path planning, etc.
Execution tools: feedback loops, robot control, etc.
COMPAS FAB runs on Python 3.x and IronPython 2.7.
Getting Started
The recommended way to install COMPAS FAB is to use Anaconda/conda:
conda install -c conda-forge compas_fab
But it can also be installed using pip:
pip install compas_fab
Once the installation is completed, you can verify your setup. Start Python from the command prompt and run the following:
>>> import compas_fab
First Steps
Questions and feedback
We encourage the use of the COMPAS framework forum for questions and discussions.
Contributing
We love contributions!
Check the Contributor’s Guide for more details.
Releasing this project
Ready to release a new version of COMPAS FAB? Here’s how to do it:
We use semver, i.e. we bump versions as follows:
patch: bugfixes.
minor: backwards-compatible features added.
major: backwards-incompatible changes.
Update the CHANGELOG.rst with all novelty!
Ready? Release everything in one command:
invoke release [patch|minor|major]
Celebrate! 💃
Credits
This package is maintained by Gramazio Kohler Research @gramaziokohler and a long list of contributors
Changelog
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.
0.21.1
Added
Changed
Changed default wire visibility to hidden in some GH components for cleaner Grasshopper files.
Fixed
Deprecated
Removed
0.21.0
Added
Added a new backend: analytical kinematics for spherical-wrist and offset-wrist robots.
Fixed
Consider AttachedCollisionMesh in AnalyticalInverseKinematics.
0.20.1
Removed
Removed the bundled binary files for the VrepClient remote API. To use V-REP, use the remoteApi binaries provided with the software.
0.20.0
Added
Added PoseArray, MultiArrayDimension, MultiArrayLayout, Int8MultiArray, Float32MultiArray, Int32 to compas_fab.backends.ros.messages
Added unordered_disabled_collisions attribute to PyBulletClient and RobotSemantics
Added better support for concave meshes in the PyBulletClient
Added Robot.iter_inverse_kinematics to allow iterating over all IK solutions provided by a solver
Changed
Changed the backend feature InverseKinematics.inverse_kinematics to be a generator. As a consequence of this, ClientInterface.inverse_kinematics and PlannerInterface.inverse_kinematics have changed to generators as well
Standardized the yielded type of InverseKinematics.inverse_kinematics across the PyBullet, MoveIt and V-REP planners
Added iterative accurate IK resolution for PyBullet
Fixed
Fixed UnsupportedOperation error when using PyBulletClient in Jupyter notebook (raised by redirect_stdout)
Fixed JointTrajectoryPoint.from_data to be backward-compatible with JSON data generated before compas_fab 0.18
Fixed JointTrajectory.from_data to be backward-compatible with JSON data generated before compas_fab 0.17
Deprecated
Removed
0.19.1
Added
Changed
Fixed
Fixed bundling of ghuser components
Deprecated
Removed
0.19.0
Added
Added documentation for Grasshopper components.
Added Grasshopper components to publish and subscribe to ROS topics.
Changed
Updated build-ghuser-components task
Updated to COMPAS 1.7
Fixed
Deprecated
Removed
0.18.3
Added
Changed
Made consistent use of repr in nested objects
Fixed
Fixed bug in compas.backends.PyBulletClient.convert_mesh_to_body circumventing PyBullet’s propensity to cache
Deprecated
Removed
0.18.2
Added
Changed
Fixed
Deprecated
Removed
0.18.1
Fixed
Fix error message during uninstall of Grasshopper components
0.18.0
Added
Grasshopper components now also for Mac
Added support for MoveIt on ROS Noetic
Added support for Python 3.9
Changed
The Configuration class has moved to compas.robots, but is still aliased within compas_fab.robots
Lazily load V-REP remoteApi library
Fixed
Fixed repr() of ROSmsg class
Fixed data type of secs and nsecs in Time ROS message
Fixed CollisionObject.to_collision_meshes
Fixed serialization of joint names for compas_fab.robots.JointTrajectoryPoint
Fixed deserialization of AttachedCollisionMesh
Deprecated
compas_fab.robots.Configuration is being deprecated in favor of compas.robots.Configuration
0.17.0
Added
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.CollisionMesh and compas_fab.robots.AttachedCollisionMesh
Added attached_collision_meshes attribute to compas_fab.robots.JointTrajectory
Added compas_fab.backends.ros.PlanningSceneComponents.__ne__
Added dictionary behavior to compas_fab.robots.JointTrajectoryPoint.merge
Added length limitations to attributes of compas_fab.robots.JointTrajectoryPoint.merge
Changed
Updated to COMPAS 1.1
Configuration & JointTrajectoryPoint: the attributes values and types changed to joint_values and joint_types respectively.
Fixed
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_mesh added collision objects to the scene, but did not attached them to the robot
Fixed bug when keys with None values were passed to the planner.
Deprecated
Removed
Remove compas_fab.robots.JointTrajectoryPoint.merge
0.16.0
Changed
Updated to COMPAS 1.0
0.15.0
Added
Changed
Updated to COMPAS 0.19
Fixed
Deprecated
Removed
0.14.0
Added
Added new backend feature ResetPlanningScene
Added MoveItResetPlanningScene
Changed
Updated to COMPAS 0.18
Use compas.IPY to check for IronPython
Fixed
Fixed bug in remove_attached_tool of PlanningScene
0.13.1
Added
Added name property to Tool class.
Fixed
Fixed bug in add_attached_tool of PlanningScene
Fixed frame_id generation when tool name changes
Fixed freeze with some sync planning scene methods on Grasshopper/IronPython
0.13.0
Changed
Updated to COMPAS 0.17
0.12.0
Added
PyBullet integration: added support for PyBullet client and forward/inverse kinematic solver
Added ClientInterface, PlannerInterface and various backend feature interfaces
Added implementations of these interfaces for ROS and V-REP
Added attributes dictionary to Robot class
Added compas_fab.robots.Tool.from_t0cf_to_tcf
Added compas_fab.robots.Tool.from_tcf_to_t0cf
Added joint_names as optional parameter for all compas_fab.robots.Configuration constructors
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
Changed
Updated to COMPAS 0.16.9
Renamed compas_fab.robots.Robot.to_local_coords to compas_fab.robots.Robot.to_local_coordinates
Renamed compas_fab.robots.Robot.to_world_coords to compas_fab.robots.Robot.to_world_coordinates
Backend clients have been restructured according to the new interfaces
Parameter backend of forward kinematics has been renamed to solver
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.install will also detect and install COMPAS FAB and its dependencies.
Renamed all RobotArtist implementations to RobotModelArtist to reflect the fact they depend on compas.robots.RobotModel.
Renamed compas_fab.robots.Robot.from_tool0_to_attached_tool to compas_fab.robots.Robot.from_t0cf_to_tcf
Renamed compas_fab.robots.Robot.from_attached_tool_to_tool0 to compas_fab.robots.Robot.from_tcf_to_t0cf
Changed ROS planning scene methods to be synchronous.
Fixed
Attached collision meshes are included in inverse kinematics calculations in ROS
Deprecated
The methods forward_kinematics, inverse_kinematics, plan_cartesian_motion and plan_motion of Robot class have been refactored, but a backwards-compatible deprecated version with the old signatures still exists suffixed by _deprecated, e.g. forward_kinematics_deprecated.
RobotArtist are deprecated in favor of RobotModelArtist.
Removed
0.11.0
Added
Added optional joint_names to Configuration
Added Configuration.scaled
Added full_joint_state to Robot.inverse_kinematics
Added Semantics.get_all_configurable_joints
Changed
Updated to COMPAS 0.15
Construct full_configuration with values, types, joint_names in Robot rather than in MoveItPlanner
MoveItPlanner returns start_configuration with set joint_names
Removed parameter names from RobotArtist.update
Updated Grasshopper examples
Robot: forward_kinematics returns now frame_WCF
MoveItPlanner: forward_kinematics takes now instance of Configuration and robot
MoveItPlanner: inverse_kinematics takes now instance of Configuration and robot
Property compas_fab.robots.Robot.artist does not try to scale robot geometry if links and/or joints are not defined.
In compas_fab.robots.constraints.JointConstraint, added tolerance_above and tolerance_below for allowing asymmetrical constraints.
In compas_fab.robots.Robot, changed the constraints_from_configuration function with tolerances_above and tolerances_below.
compas_fab.robots.CollisionMesh.scale now takes a scale factor instead of a compas.geometry.Scale instance as an argument.
Fixed
Convert constraints on inverse kinematics and cartesian planner to ROS messages
Fix support for trajectory constraints on kinematic planner
0.10.2
Added
Added Python 3.8 support
Changed
Updated to COMPAS 0.13
0.10.1
Fixed
Fix DAE parser to handle polylist meshes
Bumped roslibpy dependency to 0.7.1 to fix blocking service call issue on Mac OS
0.10.0
Added
Added attach_tool, detach_tool, draw_attached_tool, from_tool0_to_attached_tool and from_attached_tool_to_tool0 to Robot
Added attach_tool and detach_tool to Artist
Added add_attached_tool and remove_attached_tool to PlanningScene
Added redraw/clear layer support to compas_fab.rhino.RobotArtist for Rhino
Added material/color support for DAE files on ROS file loader
Changed
Changed inverse_kinematics, plan_cartesian_motion and plan_motion to use the attached_tool’s AttachedCollisionMesh if set
Fixed
Fixed mutable init parameters of Configuration, JointTrajectoryPoint, JointTrajectory and Robot.basic.
Fixed interface of compas_fab.blender.RobotArtist for Blender
Fixed DAE parsing of meshes with multiple triangle sets
0.9.0
Added
Added load_robot method 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
Changed
Updated to COMPAS 0.11
0.8.0
Changed
Updated to COMPAS 0.10
Add better support for passive joints on IK, Cartesian and Kinematic planning
Fixed
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
0.7.0
Changed
Fixed Python 2 vs Python 3 incompatibilities in compas_fab.sensors module
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.CancellableTask to compas_fab.backends.CancellableFutureResult
ROS client: changed joint trajectory follower (follow_joint_trajectory) to support generic JointTrajectory arguments.
ROS client: changed return type of trajectory execution methods to CancellableFutureResult
Added
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.FutureResult class to deal with long-running async tasks
Removed
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
Fixed missing planner initialization when used without context manager.
0.6.0
Changed
Updated COMPAS dependency to 0.8.1
Base robot artist functionality moved to compas.robots.RobotModel
Robot: inverse_kinematics returns now group configuration
Robot: forward_kinematics has new parameter backend to select either client FK or model FK.
Robot: forward_kinematics returns now frame_RCF
Robot: forward_kinematics doesn’t need full configuration anymore
Fixed delays when modifying the planning scene of ROS.
Added
Added jump_threshold parameter to plan_cartesian_motion
Added action_name parameter to reconfigure joint trajectory follower action.
Added support to retrieve the full planning scene.
Removed
Removed compas_fab.Robot.get_configuration
0.5.0
Changed
ROS Client: renamed compute_cartesian_path to plan_cartesian_motion
ROS Client: renamed motion_plan_goal_frame and motion_plan_goal_configuration to plan_motion
ROS Client: removed methods from Robot that are now handled with PlanningScene, e.g. add_collision_mesh and add_attached_collision_mesh
ROS Client: change the return type of plan_motion and plan_cartesian_motion to the new trajectory classes.
ROS File Server Loader: moved to compas_fab.backends package
ROS File Server Loader: renamed load to load_urdf and sync’d API to other loaders.
V-REP Client: renamed get_end_effector_pose to forward_kinematics
V-REP Client: renamed find_robot_states to inverse_kinematics
V-REP Client: renamed find_path_plan_to_config to plan_motion_to_config
V-REP Client: renamed find_path_plan to plan_motion
V-REP Client: changed is_connected to become a property
Made robot_artist default None on Robot constructor
Changed PathPlan class to use the new trajectory classes
Added
Added scale method to Configuration
Implemented Constraints (OrientationConstraint, PositionConstraint, JointConstraint) to use with plan_motion
Implemented PlanningScene, CollisionMesh and AttachedCollisionMesh
Added generic representations for motion planning requests (JointTrajectory, JointTrajectoryPoint, Duration)
Added UR5 robot model data for example purposes
Added several doc examples
Removed
Aliases for Frame and Transformation. Import from compas.geometry instead.
0.4.1
Fixed
Fixed missing library for V-REP on macOS
Deprecated
The aliases for Frame and Transformation will be removed, in the future, import directly from compas core.
0.4.0
Added
Color parameter to Rhino robot artist
Changed
Updated to COMPAS 0.4.10
0.3.0
Added
Deeper integration with MoveIt! motion planning services
Added sync and async versions of many ROS service calls
Added support for cancellable tasks/actions
Changed
Renamed UrdfImporter to RosFileServerLoader
Updated to COMPAS 0.4.8
0.2.1
Added
Robot artist for Blender
0.2.0
Added
First open source release!
V-REP and ROS clients
Updated to COMPAS 0.3.2
0.1.0
Added
Initial version
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for compas_fab-0.21.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 13bb8aa68a507d180d336b33ea06fbbefcb369e8d666c8d97994820109dcec42 |
|
MD5 | 4d0472b5a021c2b26ad4870e457cd58f |
|
BLAKE2b-256 | e1c0fdd56b68bb5b232be783320223c432209a40ff94011ae0a6a201f8b2d300 |