Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wip #443

Draft
wants to merge 236 commits into
base: main
Choose a base branch
from
Draft

Wip #443

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
236 commits
Select commit Hold shift + click to select a range
725bb42
First try at robot.py
yck011522 May 10, 2024
11816ef
type hint for Robot Time Constraints and Trajectory
yck011522 May 10, 2024
85f7b8b
All the other type hints in the /robots folder
yck011522 May 10, 2024
8422ac0
Merge branch 'feature-multiple-targets-waypoints' into feature_type_hint
yck011522 May 10, 2024
989998d
hints for the Waypoints
yck011522 May 10, 2024
5581556
type checking header for backend features.
yck011522 May 10, 2024
c94ffa7
Type hints for utilities.filesystem and utilities.numbers
yck011522 May 29, 2024
41c08d7
Found error in PyBullet _accurate_inverse_kinematics when comparing t…
yck011522 May 30, 2024
e82b723
Fixed error in PyBulletForwardKinematics.forward_kinematics where fun…
yck011522 May 30, 2024
4ed1f6c
Added `PyBulletClient.load_existing_robot`
yck011522 May 30, 2024
03d0a16
Added notes in docstring of `get_link_names_with_collision_geometry`
yck011522 May 30, 2024
4f83af7
Added unit test for `PyBulletClient` and `PyBulletPlanner`
yck011522 May 30, 2024
a73481c
Merge branch 'compas-dev_main' into feature_type_hint
yck011522 May 30, 2024
5a065f6
Merge remote-tracking branch 'compas-dev/feature_plan_c_motion_uses_w…
yck011522 Jun 6, 2024
60eab6f
Fixed some merge problems with robot.py
yck011522 Jun 6, 2024
99feea4
Merge issues on targets.py
yck011522 Jun 6, 2024
103d9b7
Remove pybullet client test with GUI
yck011522 Jun 6, 2024
514d2e9
Changed the default inverse kinematic high_accuracy threshold to 0.1m…
yck011522 Jun 13, 2024
c0bf89f
lint
yck011522 Jun 13, 2024
c975804
Lets see what happens if we also import PyBullet stuff in IPY environ…
yck011522 Jun 13, 2024
9c62178
Improve angle comparison at PyBullet Planner Test
yck011522 Jun 13, 2024
ee08aee
Better error message
yck011522 Jun 13, 2024
3db9aa7
Exclude PyBullet tests in Iron Python environment
yck011522 Jun 13, 2024
20d947f
Put the IPY guard back in backends import
yck011522 Jun 13, 2024
c433476
Merge branch 'remove_planner_call_magic' into tests_pybullet_client_a…
yck011522 Jun 13, 2024
459c70d
Merge branch 'feature_plan_c_motion_uses_waypoints' into feature_type…
yck011522 Jun 13, 2024
dbae37d
Merge branch 'feature_plan_c_motion_uses_waypoints' into feature_type…
yck011522 Jun 13, 2024
5dff981
Merge branch 'compas-dev_main' into wip
yck011522 Jun 14, 2024
63fefa8
Merge branch 'compas-dev_main' into wip
yck011522 Jun 14, 2024
520daa5
remove name parameter from convert_mesh_to_body
yck011522 Jun 14, 2024
49e8229
pybullet type hint stub
yck011522 Jun 14, 2024
31dbaee
Many minor refactor inside PyBulletBase and PyBulletClient
yck011522 Jun 14, 2024
ab42aa7
Refactored robot.from_urdf from RobotLibrary to Robot
yck011522 Jun 14, 2024
b73faa0
lint
yck011522 Jun 14, 2024
0959558
changelog
yck011522 Jun 14, 2024
9065ce3
Merge branch 'refactor/robot_from_urdf' into wip
yck011522 Jun 14, 2024
4c13be2
lint
yck011522 Jun 14, 2024
58acdf9
wip - planner.ik with target and start_state
yck011522 Jun 20, 2024
6fb586a
improve group and full configuration docs
yck011522 Jun 21, 2024
f356b4a
WIP for setting robot cell and cell state
yck011522 Jun 27, 2024
adb3782
set_robot_cell_state is working in PyBullet
yck011522 Jun 28, 2024
0fd0816
Introduced RobotCell to Pybullet and add ACM CM are not obsolete
yck011522 Jul 10, 2024
475595c
Temp Disable API stability test
yck011522 Jul 10, 2024
5aad8d3
Pybullet IK and FK examples
yck011522 Jul 18, 2024
41eb47f
Refactor kinematics module structure and add AnalyticalKinematics class
yck011522 Jul 18, 2024
9991ef8
Pybullet Tests ok
yck011522 Jul 18, 2024
cf557ae
Fixing some IK tests for AnalyticalKinematicPlanner
yck011522 Jul 18, 2024
e0a43d4
things
yck011522 Jul 18, 2024
3c3b3ef
Testing AnalyticalKinematicPlanner
yck011522 Jul 19, 2024
0d7aa7c
Moved Collision Error
yck011522 Jul 20, 2024
c7a0c89
Check Collision Backend Feature
yck011522 Jul 20, 2024
7974c13
Things
yck011522 Jul 20, 2024
177e672
Removed all cached_robot_model
yck011522 Jul 20, 2024
19463fe
compas_viewer example
yck011522 Jul 21, 2024
dd2ffa7
mesh join precision
yck011522 Jul 21, 2024
5fbc587
Two more Robots in Robot Library
yck011522 Jul 21, 2024
0e1b9e0
More examples in the description models
yck011522 Jul 28, 2024
1ddb0e4
remove print outs
yck011522 Jul 29, 2024
8246587
Fix missing root link puid reference -1
yck011522 Jul 29, 2024
2057ca0
One smaller gripper and new robot cell with ur10e
yck011522 Jul 29, 2024
c9ebf47
PyBullet Check Collision Function - Not Tested
yck011522 Jul 29, 2024
831e62f
Polishing the CC backend
yck011522 Jul 30, 2024
d478e94
Preparing for PybulletPlanCartesianMotion
yck011522 Jul 30, 2024
7ede682
change IK signature from start_state to robot_cell_state
yck011522 Aug 6, 2024
3c66faa
IK Examples with tools
yck011522 Aug 6, 2024
8784e0a
Fix FK bug using wrong from_t0cf_to_tcf
yck011522 Aug 6, 2024
f8a9aaa
Fix incorrect cone tool direction
yck011522 Aug 8, 2024
e7dc804
New Exceptions
yck011522 Aug 8, 2024
659f709
Missing PybulletPlanner robot_cell_state redirect
yck011522 Aug 8, 2024
9573e5a
to and from_tcf_to_pcf as standard function for planner api
yck011522 Aug 8, 2024
6071d21
Big Bag of stuff for FK, IK and Planning CM.
yck011522 Aug 8, 2024
78ef37b
IK with tools example showing the non moving tip
yck011522 Aug 8, 2024
3360137
Planning example moving in three directions
yck011522 Aug 8, 2024
3e229fd
Unify one type of CollisionCheckError
yck011522 Aug 8, 2024
6128721
lint docs
yck011522 Aug 9, 2024
69ee552
lint
yck011522 Aug 9, 2024
2c1a52b
Clean up tool_coordinate_frame
yck011522 Aug 9, 2024
4bff860
chore: Remove unused code and update planner API in Robot class
yck011522 Aug 9, 2024
9dc577d
clean up examples
yck011522 Aug 9, 2024
f8345e5
Fix robot_model_to_urdf urdf prettyfy problem
yck011522 Aug 16, 2024
fa6ea4e
_build_configuration() from Robot to BackendFeature
yck011522 Aug 16, 2024
99613e0
chore: Add check_collisions method to PlannerInterface
yck011522 Aug 16, 2024
1a68fc6
IK returns Configuration instead of tuple
yck011522 Aug 16, 2024
d2f7cb9
Fix existing PyBullet Planner Tests
yck011522 Aug 16, 2024
4e65e25
Pybullet get_pose support mimic joint
yck011522 Aug 19, 2024
1c0d119
pybullet set_robot_configuration support mimic joint
yck011522 Aug 19, 2024
bee1fe5
Removed _sc links in Panda robot in library
yck011522 Aug 19, 2024
8a9e037
Added default material to pybullet rhinos in gui
yck011522 Aug 19, 2024
768ab68
Added uniqueness_thresholds to pybullet PyBulletInverseKinematics
yck011522 Aug 19, 2024
0716010
PyBullet IK handles return_full_configuration
yck011522 Aug 19, 2024
e5c961a
IK check_collision defaults to true
yck011522 Aug 21, 2024
9cf4195
test to check pybullet respect group
yck011522 Aug 21, 2024
1543914
chore: Refactor PyBulletClient to support mimic joint in set_robot_co…
yck011522 Aug 21, 2024
e4a56c9
chore: Fix incorrect docstring in Robot get_configurable_joints and z…
yck011522 Aug 21, 2024
b6158c2
Pybullet Plan Cartesian Motion options: max_step and min_step now dis…
yck011522 Aug 21, 2024
ceefad0
IPY compatibility
yck011522 Aug 22, 2024
6755fb5
improve IK with verbose function
yck011522 Aug 22, 2024
bf70adf
Checks for non-supported planning groups
yck011522 Aug 22, 2024
751fcdc
note
yck011522 Aug 22, 2024
72d706b
docstring for plan_cartesian_motion_point_axis_waypoints
yck011522 Aug 22, 2024
5aca706
chore: example typo
yck011522 Aug 28, 2024
5f275fb
Change set_robot_cell_state so that it can accept state without robot…
yck011522 Aug 30, 2024
a61fba8
Function to check collision for specific planning group
yck011522 Aug 30, 2024
67304b6
plan_cartesian_motion_frame_waypoints now performs a preplanning targ…
yck011522 Aug 30, 2024
db7b06d
Refactor planning function docstring for planning function with Point…
yck011522 Aug 30, 2024
3c71c9b
Implemented TargetMode class
yck011522 Sep 3, 2024
c9ab625
targetmode init
yck011522 Sep 3, 2024
24a4498
Planner function that supports converting ocf and checking TargetMode
yck011522 Sep 3, 2024
5df3269
Separate client and planner files, minor fixes
yck011522 Sep 3, 2024
aea9f69
Pybullet IK and Cartesian Motion Supports target_mode
yck011522 Sep 3, 2024
4710105
Fix broken tool_frame in set_robot_cell_state
yck011522 Sep 3, 2024
b6734df
docstring for iter_inverse_kinematics_point_axis_target
yck011522 Sep 3, 2024
6a2ee4d
Fixes outdated assumption that rigidbodies must have visual meshes. V…
yck011522 Sep 5, 2024
8592e11
PyBulletClient add_rigid_body now adds both visual and collision mesh…
yck011522 Sep 5, 2024
d69654a
RigidBodyLibrary and TargetMarker Object
yck011522 Sep 5, 2024
85097da
Example for pybullet semi-constrained mode
yck011522 Sep 5, 2024
fdfe918
Change existing Premade RigidBody to have visual and collision geometry
yck011522 Sep 6, 2024
986f06a
Place TargetMode input in Target classes
yck011522 Sep 9, 2024
37c6be4
Refactor PYB checking IK solution uniqueness
yck011522 Sep 9, 2024
37d6d1f
Update PyBulletSetRobotCell to remove tools and rigid bodies individu…
yck011522 Sep 9, 2024
07decdb
RigidBody constructor to accept lists of meshes for visualization and…
yck011522 Sep 9, 2024
740a913
New Printing Tool in Library
yck011522 Sep 9, 2024
4ab6d5e
chore: Refactor PointAxisTarget class to use Point and Vector classes
yck011522 Sep 9, 2024
d1d5b18
IK with PointAxisTarget
yck011522 Sep 9, 2024
f02376d
Remove .client from Robot class
yck011522 Sep 12, 2024
b3ca934
No more client input when creating RobotLibrary objects
yck011522 Sep 12, 2024
8ce297a
Add inverse kinematics tests to use frame and point-axis targets
yck011522 Sep 12, 2024
9f4cf80
some followup update of type string
yck011522 Sep 12, 2024
0677459
Add group value assert check to the internal IK functions
yck011522 Sep 12, 2024
b3741f9
Ability to remove_rigid body from PyBullet Backend and to set_robot_c…
yck011522 Sep 12, 2024
439b948
Refactor PyBulletInverseKinematics to make a copy of options before m…
yck011522 Sep 12, 2024
1b3b3af
New example file to demonstrate collision_avoidance and non-determini…
yck011522 Sep 12, 2024
b40cb01
making the data serialization process happy by allowing a name setter.
yck011522 Sep 12, 2024
1669b90
Remove robot_model from RobotSemantics
yck011522 Sep 12, 2024
01e02be
Refactor test_pybullet_planner_inverse_kinematics.py to use TOL.is_al…
yck011522 Sep 13, 2024
c56e280
Deep and data.copy support for RobotCell
yck011522 Sep 13, 2024
ab29b38
test Robot cell and state
yck011522 Sep 13, 2024
77aa24f
Update compas requirements to 2.3, drop python 3.8
yck011522 Sep 16, 2024
197a5fd
WIP for plan_cartesian_motion_point_axis_waypoints inc dfs code
yck011522 Sep 17, 2024
d28d787
New exception from MPNoPlanFoundError and short-circuiting reachabili…
yck011522 Sep 19, 2024
18d6b05
Better example for planning point_axis_waypoints
yck011522 Sep 19, 2024
525025b
Add tolerance_orientation to PointAxisTarget class.
yck011522 Sep 19, 2024
53ec9b1
Remove the high_accuracy mode from PyBullet IK
yck011522 Sep 19, 2024
9b15219
PyBullet IK to respect Target Tolerance for Position and Orientation
yck011522 Sep 20, 2024
3dc91bf
Tidy Pybullet pytests
yck011522 Sep 20, 2024
4d4d599
Embed target_scale in Target Classes
yck011522 Sep 21, 2024
1b30933
Changed all scaling function calls related to old robot.scal_factor t…
yck011522 Sep 21, 2024
07fee75
Move robot_cell and robot_cell_state to BackendClient
yck011522 Sep 21, 2024
e2db647
Fix AnalyticalKinematicsPlanner to work with latest Targets
yck011522 Sep 21, 2024
0b225c6
planner.forward_kinematics and planner.forward_kinematics_to_link
yck011522 Sep 23, 2024
60e8b55
Fixed a bunch of test errors including the nasty {} in RobotCellState…
yck011522 Sep 24, 2024
ba854fe
Organize imports, Fix Lint, Fix Init files
yck011522 Sep 25, 2024
634be7a
Change all the `if not compas.IPY:` to `if not IPY:`
yck011522 Sep 25, 2024
0150b53
Pin compas_robot requirement to unreleased commit for testing
yck011522 Sep 25, 2024
056c216
Fix things that would break IPY tests
yck011522 Sep 25, 2024
f23acda
Update docker compose command from docker-compose to `docker compose`
yck011522 Sep 25, 2024
e6e8f36
mesh_folder does not want compas_fab.get
yck011522 Sep 25, 2024
0454594
update ipy workflow
gonzalocasas Sep 27, 2024
5c35cd7
WIP to set robot cell
yck011522 Oct 3, 2024
d93ec87
Temp Fix of PlanCMotion
yck011522 Oct 3, 2024
ed2ab5f
Test files that demonstrate the separated CO and ACO manpulation
yck011522 Oct 5, 2024
bbe1afe
Diff with hash in set_robot_cell
yck011522 Oct 10, 2024
6d11a3b
Set robot cell and state for MoveIt Planner. Including kinematic tool…
yck011522 Oct 12, 2024
2e6e8ef
Kinematic Tool in the ToolLibrary
yck011522 Oct 12, 2024
b9db804
Moved the target transformation functions from PlannerInterface to Ro…
yck011522 Oct 12, 2024
25aa67e
Splitting RobotCell and RigidBody and other state classes into multip…
yck011522 Oct 12, 2024
94ff019
not keeping ros planning scene anymore.
yck011522 Oct 12, 2024
90b03cf
lint import
yck011522 Oct 12, 2024
c012810
Fixed some ROS examples
yck011522 Oct 12, 2024
dcde5db
Filtering out rigid bodies without collision geometry
yck011522 Oct 12, 2024
6ade458
minor stuff
yck011522 Oct 12, 2024
2cabded
wip MoveIt Planning Features
yck011522 Oct 12, 2024
9fb86a0
Add example output to RobotSemantics
yck011522 Oct 17, 2024
be6a678
Remove Add / append / remove CollisionMesh and AttachedCollisionMesh …
yck011522 Oct 17, 2024
3b7d121
Remove Tool Class
yck011522 Oct 17, 2024
ea51cd3
docstring update for BackendFeature
yck011522 Oct 17, 2024
8b919b5
Migrated Robot Functions to RobotCell
yck011522 Oct 19, 2024
a31b63a
Remove file io and transformation functions from utilities
yck011522 Oct 19, 2024
8afc2fc
Remove planning_scene.py including AttachedCollisionMesh, CollisionMe…
yck011522 Oct 19, 2024
f1ce5df
Removing RobotLibrary , only RobotCellLibrary Exists
yck011522 Oct 19, 2024
c652a39
WIP Migration to RobotCell
yck011522 Oct 19, 2024
a062e61
More WIP migrating robot to robot_cell
yck011522 Oct 20, 2024
d1b7b57
Last bit of replacing "robot ="
yck011522 Oct 21, 2024
a14983d
Clean up all Robot imports
yck011522 Oct 21, 2024
e656a5f
fixing tests
yck011522 Oct 21, 2024
099a877
some lint
yck011522 Oct 21, 2024
2dc34b9
test for states and robot_cell
yck011522 Oct 22, 2024
3cac8bb
more tests on robot_cell
yck011522 Oct 22, 2024
aa84624
if TYPE_CHECKING: # pragma: no cover
yck011522 Oct 23, 2024
6959af0
A few more tests
yck011522 Oct 23, 2024
bc31aa7
Adding Scale in RigidBody
yck011522 Oct 29, 2024
1127b91
Restructure SceneObjects for GH and add RigidBodyObject
yck011522 Oct 29, 2024
e48fdb0
GH SceneObject for RigidBody, RobotModel and RobotCell
yck011522 Oct 29, 2024
c320ec4
Refactored extraction of Link geometry to compas_robots
yck011522 Oct 30, 2024
8b2d1d4
ToolModel Creation for ROS backend will use tool_model.get_link_colli…
yck011522 Oct 30, 2024
a5fa287
Fixing the scaling in RobotCell
yck011522 Oct 30, 2024
37e7000
Finalizing the attributes in the SceneObjects
yck011522 Oct 30, 2024
98c1ed4
Function in RobotCell to `compute_attach_objects_frames`
yck011522 Oct 31, 2024
a54e9cf
Remove robot_flange_frame from RobotCellState
yck011522 Oct 31, 2024
5486b14
Fix State constructor to have fewer arguments, pass test
yck011522 Oct 31, 2024
86b15a2
lint
yck011522 Oct 31, 2024
ef7c22d
Make some PyBulletClient functions private
yck011522 Nov 1, 2024
dca5679
More functions private in PyBulletClient
yck011522 Nov 1, 2024
8dee467
Changed all `scale` attribute to `native_scale` attribute
yck011522 Nov 1, 2024
7eeff81
Rhino visualization with Eto Form
yck011522 Nov 1, 2024
b35d624
release note and update changelog
yck011522 Nov 1, 2024
d4f4472
Refactored Pybullet Inverse Kinematic Function
yck011522 Nov 1, 2024
6c5431c
Change two internal iter_ik methods to private
yck011522 Nov 1, 2024
0e05d00
MoveIt Inverse Kinematics Checked
yck011522 Nov 1, 2024
8b4cf38
change log update
yck011522 Nov 1, 2024
9488711
Fix Moveit FK Example and Verbose print in the backend feature
yck011522 Nov 4, 2024
34074a1
Added some checks in the example file
yck011522 Nov 4, 2024
98dd481
ROS Error codes to compas_fab exceptions
yck011522 Nov 4, 2024
8529997
Move It IK returns configurations
yck011522 Nov 4, 2024
9a37950
Ros Plan Motion
yck011522 Nov 5, 2024
6546f4e
RobotCell.default_cell_state()
yck011522 Nov 5, 2024
2393472
Fix Iter IK bug
yck011522 Nov 6, 2024
84cbf3e
Fix incorrect Docstring in PlanMotion
yck011522 Nov 6, 2024
ccae36c
pybullet FK should not accept group
yck011522 Nov 8, 2024
db65fc6
Refactor check_max_jump
yck011522 Nov 9, 2024
7202b76
Tidy all three FK function to return based on WCF.
yck011522 Nov 16, 2024
4adc54e
Pretty print in Targets
yck011522 Nov 16, 2024
699ab14
Convert Validation Error to compasfab error.
yck011522 Nov 16, 2024
a3e6a77
Add InverseKinematicsError for NO_IK_SOLUTION response
yck011522 Nov 16, 2024
172464c
robot cell print info improvement
yck011522 Nov 17, 2024
627433e
Ros example 01 and 02
yck011522 Nov 17, 2024
946fd85
Add documentation and examples for forward kinematics with MoveIt! pl…
yck011522 Nov 18, 2024
0e11728
Add documentation and examples for planning groups in COMPAS FAB
yck011522 Nov 18, 2024
5732023
Add examples for inverse kinematics with various configurations and c…
yck011522 Nov 19, 2024
6ec8bb2
Add motion planning examples with obstacles, attachments, and toleran…
yck011522 Nov 19, 2024
a0f1b0d
Add documentation and examples for Cartesian motion planning with Mov…
yck011522 Nov 19, 2024
2426876
Add PyBullet examples for forward and inverse kinematics, including m…
yck011522 Nov 19, 2024
0c51ab8
Add new examples and documentation for basic concepts
yck011522 Nov 19, 2024
bee5ae2
bunch of bug fixes while fixing example files
yck011522 Nov 19, 2024
197b3fc
Enhance documentation structure by adding concepts and frontends sect…
yck011522 Nov 19, 2024
57c04d7
Unfinished doc migration
yck011522 Nov 19, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python: ['3.8', '3.9', '3.10']
python: ['3.9', '3.10', '3.11']

steps:
- uses: compas-dev/compas-actions.build@v3
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,17 @@ on:

jobs:
build:
name: ubuntu-py38-integration
name: ubuntu-py39-integration
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.8
- name: Set up Python 3.9
uses: actions/setup-python@v2
with:
python-version: '3.8'
python-version: '3.9'
- name: Set up docker containers
run: |
docker-compose -f "tests/integration_setup/docker-compose.yml" up -d --build
docker compose -f "tests/integration_setup/docker-compose.yml" up -d --build
docker ps -a
- name: Install dependencies
run: |
Expand All @@ -34,4 +34,4 @@ jobs:
pytest docs
- name: Tear down docker containers
run: |
docker-compose -f "tests/integration_setup/docker-compose.yml" down
docker compose -f "tests/integration_setup/docker-compose.yml" down
59 changes: 28 additions & 31 deletions .github/workflows/ironpython.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,51 +13,48 @@ jobs:
runs-on: windows-latest
steps:
- uses: actions/checkout@v2
- name: Install dependencies
- name: "Set up CPython 3.9"
uses: actions/setup-python@v2
with:
python-version: 3.9
- name: Install CPython dependencies"
run: |
python -m pip install --upgrade pip

- name: "Install COMPAS Fab on CPython First"
run: |
pip install --no-cache-dir .

- name: Install Ironpython and ironpython-pytest
run: |
echo "Installing IronPython..."
choco install ironpython --version=2.7.8.1

echo "Downloading ironpython-pytest..."
curl -o ironpython-pytest.tar.gz -LJO https://pypi.debian.net/ironpython-pytest/latest

echo "Downloading COMPAS..."
curl -o compas.tar.gz -LJO https://pypi.debian.net/COMPAS/COMPAS-2.1.0.tar.gz

echo "Downloading roslibpy..."
curl -o roslibpy.tar.gz -LJO https://pypi.debian.net/roslibpy/latest

echo "Downloading compas_robots..."
curl -o compas_robots.tar.gz -LJO https://pypi.debian.net/compas_robots/latest

echo "Setting up IronPython environment..."
echo "Ensure pip on IronPython and install pytest..."
ipy -X:Frames -m ensurepip

echo "Installing ironpython-pytest..."
ipy -X:Frames -m pip install --no-deps ironpython-pytest.tar.gz

echo "Installing COMPAS..."
ipy -X:Frames -m pip install --no-deps compas.tar.gz

echo "Installing roslibpy..."
ipy -X:Frames -m pip install --no-deps roslibpy.tar.gz

echo "Installing compas_robots..."
ipy -X:Frames -m pip install --no-deps compas_robots.tar.gz
- uses: NuGet/[email protected]
- uses: compas-dev/compas-actions.ghpython_components@v5
with:
source: src/compas_fab/ghpython/components
target: src/compas_fab/ghpython/components/ghuser
- name: Test import

- name: Test import compas_fab
run: |
$Env:IRONPYTHONPATH = python -c "import sysconfig; print(sysconfig.get_path('purelib'))"
echo "Setting IRONPYTHONPATH to $Env:IRONPYTHONPATH"
echo "Testing import of compas_fab..."
ipy -m compas_fab
env:
IRONPYTHONPATH: ./src
- name: Run tests

- name: Run ipy tests
run: |
$Env:IRONPYTHONPATH = python -c "import sysconfig; print(sysconfig.get_path('purelib'))"
echo "Setting IRONPYTHONPATH to $Env:IRONPYTHONPATH"
echo "Running tests..."
ipy tests/ipy_test_runner.py
env:
IRONPYTHONPATH: ./src

- uses: compas-dev/compas-actions.ghpython_components@v5
with:
source: src/compas_fab/ghpython/components
target: src/compas_fab/ghpython/components/ghuser

2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
python: ['3.8', '3.9', '3.10']
python: ['3.9', '3.10', '3.11']

steps:
- uses: compas-dev/compas-actions.build@v3
Expand Down
181 changes: 160 additions & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,32 +9,171 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

* Added `compas_fab.robots.Waypoints` class to represent a sequence of targets. It has two child classes: `FrameWaypoints` and `PointAxisWaypoints`.
* Added `compas_fab.robots.Target` class to represent a motion planning target.
* Added also child classes `FrameTarget`, `PointAxisTarget`, `ConfigurationTarget`, `ConstraintSetTarget`
* Unlike previous constraints, `Targets` do not contain `group` as 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 the `plan_motion` function.

### Changed


* Renamed `PybulletClient.get_cached_robot` to `PybulletClient.get_cached_robot_model` to avoid confusion between the `RobotModel` and `Robot` class.
* Renamed `PybulletClient.ensure_cached_robot` to `PybulletClient.ensure_cached_robot_model`.
* Renamed `PybulletClient.ensure_cached_robot_geometry` to `PybulletClient.ensure_cached_robot_model_geometry`.
* Renamed `PybulletClient.cache_robot` to `PybulletClient.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 accepts `Waypoints` as target. Implementation for `FrameWaypoints` is supported with same functionality as before. Simply wrap `Frame` objects using `FrameWaypoints(frames)`.
* Changed `BoundingVolume`, `Constraint`, `JointConstraint`, `OrientationConstraint`, `PositionConstraint` to inherit from `compas.data.Data` class.
* Change the signature of `plan_motion()` to use `target` (`Target` class) instead of `goal_constraints`. Only one target is accepted. Users who wish to compose their own constraint sets can still use `ConstraintSetTarget`.
* Moved `Robot.orientation_constraint_from_frame()` to `OrientationConstraint.from_frame()`, as constraints are no longer intended for users to use directly.
* Moved `Robot.position_constraint_from_frame()` to `PositionConstraint.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 by `convert_target_to_goal_constraints()`. Users who wish to use a frame as target should use a `FrameTarget` instead.
* 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.
* Added `compas_fab.robots.RobotCell` class.
* Added `compas_fab.robots.RobotCellLibrary` class.
* Added `compas_fab.backends.BackendTargetNotSupportedError`.
* Added `compas_fab.backends.TargetModeMismatchError`.
* Added `compas_fab.backends.PlanningGroupNotExistsError`.
* Added `compas_fab.backends.CollisionCheckError`.
* Added `compas_fab.backends.MotionPlanningError`.
* Added `compas_fab.backends.MPStartStateInCollisionError`.
* Added `compas_fab.backends.MPTargetInCollisionError`.
* Added `compas_fab.backends.MPInterpolationInCollisionError`.
* Added `compas_fab.backends.MPSearchTimeOutError`.
* Added `compas_fab.backends.MPNoIKSolutionError`.
* Added `compas_fab.backends.MPNoPlanFoundError`.
* Added `compas_fab.backends.MPMaxJumpError`.
* Added `compas_fab.backends.AnalyticalKinematicsClient`.
* Added `compas_fab.backends.AnalyticalKinematicsPlanner`.
* Added `compas_fab.backends.AnalyticalPyBulletPlanner`.
* Added `compas_fab.backends.CollisionCheckError`.
* Added `compas_fab.backends.PlanningGroupNotSupported`.
* Added `message` and `target_pcf` attributes to `InverseKinematicsError`.
* Added `compas_fab.backends.CheckCollision` to backend features.
* Added `compas_fab.backends.SetRobotCell` to backend features.
* Added `compas_fab.backends.SetRobotCellState` to backend features.
* Added `compas_fab.backends.ClientInterface.robot_cell` as read-only property.
* Added `compas_fab.backends.ClientInterface.robot_cell_state` as read-only property.
* Added `compas_fab.backends.ClientInterface.robot_model` as read-only property.
* Added `compas_fab.backends.ClientInterface.robot_semantics` as read-only property.
* Added `compas_fab.backends.PlannerInterface.set_robot_cell()` as a possible mix-in method.
* Added `compas_fab.backends.PlannerInterface.set_robot_cell_state()` as a possible mix-in method.
* Added `compas_fab.backends.PlannerInterface.check_collisions()` as a possible mix-in method.
* Added `compas_fab.backends.PlannerInterface.iter_inverse_kinematics()` as a possible mix-in method.
* Added `compas_fab.backends.kinematics.backend_features.AnalyticalPlanCartesianMotion` for `AnalyticalKinematicsPlanner`.
* Added `compas_fab.backends.kinematics.backend_features.AnalyticalForwardKinematics` for `AnalyticalKinematicsPlanner`.
* Added `compas_fab.backends.kinematics.backend_features.AnalyticalInverseKinematics` for `AnalyticalKinematicsPlanner`.
* Added `compas_fab.backends.kinematics.backend_features.AnalyticalSetRobotCell` for `AnalyticalKinematicsPlanner`.
* Added `compas_fab.backends.kinematics.backend_features.AnalyticalSetRobotCellState` for `AnalyticalKinematicsPlanner`.
* Added `compas_fab.backends.kinematics.backend_features.AnalyticalPybulletInverseKinematics` for `AnalyticalPyBulletPlanner`.
* Added `compas_fab.backends.pybullet.backend_features.PyBulletCheckCollision` for `PyBulletPlanner`.
* Added `compas_fab.backends.pybullet.backend_features.PyBulletPlanCartesianMotion` for `PyBulletPlanner`.
* Added `compas_fab.backends.pybullet.backend_features.PyBulletSetRobotCell` for `PyBulletPlanner`.
* Added `compas_fab.backends.pybullet.backend_features.PyBulletSetRobotCellState` for `PyBulletPlanner`.
* Added `compas_fab.backends.pybullet.backend_features.MoveItSetRobotCell` for `MoveItPlanner`.
* Added `compas_fab.backends.pybullet.backend_features.MoveItSetRobotCellState` for `MoveItPlanner`.
* Added `compas_fab.backends.ForwardKinematics.forward_kinematics_to_link()`.
* Added `compas_fab.robots.ToolLibrary` class.
* Added `compas_fab.robots.ToolLibrary.cone()`.
* Added `compas_fab.robots.ToolLibrary.printing_tool()`.
* Added `compas_fab.robots.ToolLibrary.static_gripper()`.
* Added `compas_fab.robots.ToolLibrary.static_gripper_small()`.
* Added `compas_fab.robots.ToolLibrary.kinematic_gripper()`. (example of a kinematic tool)
* Added `compas_fab.robots.RigidBodyLibrary` class.
* Added `compas_fab.robots.RigidBodyLibrary.target_marker()`.
* Added `compas_fab.robots.RobotCellLibrary` class.
* Added `compas_fab.robots.RobotCellLibrary.rfl()`.
* Added `compas_fab.robots.RobotCellLibrary.ur5()`.
* Added `compas_fab.robots.RobotCellLibrary.ur10e()`.
* Added `compas_fab.robots.RobotCellLibrary.abb_irb4600_40_255()`.
* Added `compas_fab.robots.RobotCellLibrary.abb_irb120_3_58()`.
* Added `compas_fab.robots.RobotCellLibrary.panda()`.
* Added `compas_fab.robots.RobotCellLibrary.ur5_cone_tool()`.
* Added `compas_fab.robots.RobotCellLibrary.abb_irb4600_40_255_gripper_one_beam()`.
* Added `compas_fab.robots.RobotCellLibrary.ur10e_gripper_one_beam()`.
* Added `compas_fab.robots.RobotCellLibrary.abb_irb4600_40_255_printing_tool()`.
* Added `compas_fab.robots.RigidBody` class.
* Added `compas_fab.robots.RigidBodyState` class.
* Added `compas_fab.robots.RobotCell` class.
* Added `compas_fab.robots.RobotCellState` class.
* Added `compas_fab.robots.ToolState` class.
* Added `compas_fab.robots.RobotCell.from_urdf_and_srdf()`
* Added `compas_fab.robots.Target` class.
* Added `compas_fab.robots.ConfigurationTarget` class.
* Added `compas_fab.robots.ConstraintSetTarget` class.
* Added `compas_fab.robots.FrameTarget` class.
* Added `compas_fab.robots.PointAxisTarget` class.
* Added `compas_fab.robots.TargetMode` class.
* Added `compas_fab.robots.Waypoints` class.
* Added `compas_fab.robots.FrameWaypoints` class.
* Added `compas_fab.robots.PointAxisWaypoints` class.
* Added `compas_fab.robots.FrameWaypoints` class.
* Added docker file for UR5-demo with GUI turned on by default.
* Added various example files (detailed list to be added later).
* Added `pragma: no cover` to all type-checking imports for better coverage report accuracy.
* Added support for python '3.11'.
* Added tests for `PyBulletClient` and `PyBulletPlanner` backend features, including Ik and FK agreement tests.

### Changed

* Changed CI workflow for IronPython.
* Updated compas requirement to > 2.3
* Changed `client` parameter in `PlannerInterface(client)` to default to `None`.
* Changed `PlannerInterface.client` to a read-only property.
* Moved `PlannerInterface` from `backends/interfaces/client.py` to `backends/interfaces/planner.py`
* Moved `AnalyticalInverseKinematics` to be a backend feature of `AnalyticalKinematicsPlanner`.
* Moved `AnalyticalPlanCartesianMotion` to be a backend feature of `AnalyticalKinematicsPlanner`.
* Change backend features to use multi-inherence instead of `__call__` to include the backend functions.
* Changed parameters of `compas_fab.backends.SetRobotCell.set_robot_cell()` to accept `RobotCell` and `RobotCellState`.
* Changed parameters of `compas_fab.backends.SetRobotCellState.set_robot_cell_state()` to accept `RobotCellState`.
* Changed parameters of `compas_fab.backends.ForwardKinematics.forward_kinematics()` to accept `RobotCellState`, `TargetMode` and `scale`.
* Changed parameters of `compas_fab.backends.InverseKinematics.inverse_kinematics()` to accept `Target` and `RobotCellState`.
* Changed parameters of `compas_fab.backends.InverseKinematics.iter_inverse_kinematics()` to accept `Target` and `RobotCellState`.
* Changed parameters of `compas_fab.backends.PlanMotion.plan_motion()` to accept `Target` and `RobotCellState`.
* Changed parameters of `compas_fab.backends.PlanCartesianMotion.plan_cartesian_motion()` to accept `Waypoints` and `RobotCellState`.
* Changed `compas_fab.robots.BoundingVolume` to inherit from `compas.data.Data`.
* Changed `compas_fab.robots.Constraint` to inherit from `compas.data.Data`.
* Changed `compas_fab.robots.JointConstraint` to inherit from `compas.data.Data`.
* Changed `compas_fab.robots.OrientationConstraint` to inherit from `compas.data.Data`.
* Changed `compas_fab.robots.PositionConstraint` to inherit from `compas.data.Data`.
* Moved `Robot.orientation_constraint_from_frame()` to `OrientationConstraint.from_frame()`.
* Moved `Robot.position_constraint_from_frame()` to `PositionConstraint.from_frame()`.
* Moved `Robot.constraints_from_frame()` to non-exposed `compas_fab.backends.ros.backend_features.convert_target_to_goal_constraints()`.
* Changed `avoid_collisions` parameter in `plan_motion` to `allow_collisions` parameter.
* Fixed error in `PyBulletForwardKinematics.forward_kinematics` where function would crash if `options` was not passed.
* Fixed error in `PyBulletInverseKinematics._accurate_inverse_kinematics` where threshold was not squared for comparison.
* 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 `ConstraintsFromPlane` to `FrameTargetFromPlane`.
* Changed GH Component `ConstraintsFromTargetConfiguration` to `ConfigurationTarget`.

### Removed

* Removed support for Python '3.8'.
* Removed `compas_fab.backends.CollisionError`.
* Removed `compas_fab.backends.AddCollisionMesh` from backend features.
* Removed `compas_fab.backends.AppendCollisionMesh` from backend features.
* Removed `compas_fab.backends.RemoveCollisionMesh` from backend features.
* Removed `compas_fab.backends.AddAttachedCollisionMesh` from backend features.
* Removed `compas_fab.backends.RemoveAttachedCollisionMesh` from backend features.
* Removed `compas_fab.backends.ClientInterface.planner` attribute.
* Removed `compas_fab.backends.ClientInterface.inverse_kinematics()`.
* Removed `compas_fab.backends.ClientInterface.forward_kinematics()`.
* Removed `compas_fab.backends.ClientInterface.plan_cartesian_motion()`.
* Removed `compas_fab.backends.ClientInterface.plan_motion()`.
* Removed `compas_fab.backends.ClientInterface.get_planning_scene()`.
* Removed `compas_fab.backends.ClientInterface.reset_planning_scene()`.
* Removed `compas_fab.backends.ClientInterface.add_collision_mesh()`.
* Removed `compas_fab.backends.ClientInterface.remove_collision_mesh()`.
* Removed `compas_fab.backends.ClientInterface.append_collision_mesh()`.
* Removed `compas_fab.backends.ClientInterface.add_attached_collision_mesh()`.
* Removed `compas_fab.backends.ClientInterface.remove_attached_collision_mesh()`.
* Removed `compas_fab.backends.pybullet.backend_features.PyBulletAddAttachedCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.PyBulletAddCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.PyBulletAppendCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.PyBulletRemoveAttachedCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.PyBulletRemoveCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.MoveItAddAttachedCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.MoveItAddCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.MoveItAppendCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.MoveItRemoveAttachedCollisionMesh`.
* Removed `compas_fab.backends.pybullet.backend_features.MoveItRemoveCollisionMesh`.
* Removed `compas_fab.backends.PyBulletClient.collision_objects` attribute.
* Removed `compas_fab.backends.PyBulletClient.attached_collision_objects` attribute.
* Removed `compas_fab.backends.PyBulletClient.load_ur5()`.
* Removed `compas_fab.backends.PyBulletClient.load_robot()`.
* Removed `compas_fab.robots.AttachedCollisionMesh`.
* Removed `compas_fab.robots.CollisionMesh`.
* Removed `compas_fab.robots.PlanningScene`.
* Removed `compas_fab.robots.Robot`. (Use `RobotCell` instead)
* Removed `compas_fab.robots.RobotLibrary`. (Use `RobotCellLibrary` instead)
* Removed `compas_fab.robots.Tool`. (Use `ToolModel` directly in `RobotCell` instead)
* Removed `compas_fab.robots.Robot.transformed_frames`. (use the one in `RobotModel` instead)
* Removed `compas_fab.robots.Robot.transformed_axes`. (use the one in `RobotModel` instead)
* Removed `compas_fab.robots.Robot.merge_group_with_full_configuration` as it can be covered by `Configuration.merged`.
* Removed `compas_fab.robots.Robot.get_position_by_joint_name` as Configuration class can now be directly accessed by joint name.
* Removed `compas_fab.robots.Robot.get_group_names_from_link_name` as it is too oddly specific.
* Removed `compas_fab.robots.JointTrajectory.attached_collision_meshes` attribute from `` class.
* Removed `inverse_kinematics`, `plan_cartesian_motion`, and `plan_motion` methods from Robot, access them using the planner instead.
* Removed `plan_cartesian_motion_deprecated` and `plan_motion_deprecated` methods from `Robot` class
* Removed `forward_kinematics_deprecated` and `inverse_kinematics_deprecated` method from `Robot` class

Expand Down
4 changes: 2 additions & 2 deletions CONTRIBUTING.rst
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ We love pull requests from everyone! Here's a quick guide to improve the code:

::

docker-compose -f "tests/integration_setup/docker-compose.yml" up -d --build
docker compose -f "tests/integration_setup/docker-compose.yml" up -d --build

5. Make sure all tests pass:

Expand All @@ -41,7 +41,7 @@ We love pull requests from everyone! Here's a quick guide to improve the code:

::

docker-compose -f "tests/integration_setup/docker-compose.yml"" down
docker compose -f "tests/integration_setup/docker-compose.yml" down

9. Check there are no linter errors:

Expand Down
Loading
Loading