Skip to content

Commit 0bd6578

Browse files
committed
Merge remote-tracking branch 'origin/master' into feature/generic_object_tsr
2 parents d1ff1ba + aa63713 commit 0bd6578

40 files changed

+2424
-989
lines changed

CHANGELOG.rst

Lines changed: 258 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,264 @@
22
Changelog for package prpy
33
^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
1.1.0 (2015-06-01)
6+
------------------
7+
* Adding tags for capturing trajectory timing data
8+
* Update README.md
9+
Added enum34 dependency instructions into README
10+
* Contributors: Jennifer King, Michael Koval, Stefanos Nikolaidis
11+
12+
1.0.0 (2015-05-01)
13+
------------------
14+
* Adding planner and planning_method and trajectory tag constants
15+
* Removing smooth tag from SBPL trajectory
16+
* Adding helper function for finding catkin resources
17+
* Fixing bug in name of returned variable from Rotate and Forward
18+
* Simplified logic in PostProcessPath.
19+
* Removing need for ExecuteBasePath. Instead base planning now uses ExecutePath.
20+
* Removing unecessary logging
21+
* Various fixes/enhancements: 1. Base planners no longer add non-PlanningMethod functions as attributes to robot, 2. Removed double call to SimplifyTrajectory in retimer.py, 3. Changed default smoother to HauserParabolicSmoother, 4. Changed default simplifier to None
22+
* Fixing format error when raising value error. Fixing logic error in handling defer flag.
23+
* Restructured defer fixes to raise exception.
24+
Instead of printing a warning, this restructures the `defer` argument
25+
checking to raise an exception if an invalid value has been provided.
26+
* Print a warning if defer is not a boolean.
27+
* Print a warning if GetTrajectoryTags is not JSON.
28+
* Mico Refactor
29+
* Changed defer checks to use explicit `is True`.
30+
Using `if defer is True:` for checks instead of `if defer:` catches a
31+
lot of weird errors that can occur if the positional args to any of the
32+
reflected planning-method functions are shifted by one.
33+
The previous check would return a Future if an extra argument got
34+
passed, which concealed exceptions indicating that the arguments made
35+
no sense, and would be passed to subsequent code until something
36+
actually tried to query a Trajectory method on the Future.
37+
* Changed GetTrajectoryTags() to EAFP-style.
38+
Instead of using an if-check, GetTrajectoryTags() now just tries
39+
JSON deserialization and catches a ValueError. This is more robust as
40+
it also catches situations where the deserialization fails due to the
41+
trajectory description being invalid or whitespace, but not None.
42+
* added kwargs to ExecuteTrajectory and PostProcessPath
43+
* Switched to emprical acceleration limits.
44+
* CBiRRT and OpenRAVERetimer now use CO_ActiveOnly
45+
* increased the accelearation limtis
46+
* Clear UserData in prpy.Clone (fixes `#111 <https://github.com/personalrobotics/prpy/issues/111>`_ and `#114 <https://github.com/personalrobotics/prpy/issues/114>`_)
47+
* Convert CBiRRT "direction" to a NumPy array.
48+
* Removed references to numpy.isclose (`#63 <https://github.com/personalrobotics/prpy/issues/63>`_).
49+
* Added `releasegil` flags to every FindIKSolution(s) call in prpy.
50+
* Released GIL during TSR Planner.
51+
This prevents unnecessary hangs during planning when using python
52+
threads. I see no cases where this would not be necessary.
53+
* Contributors: ADA Demo, Jennifer King, Michael Koval, Pras, Pras Velagapudi, Rachel Holladay, Stefanos Nikolaidis
54+
55+
0.5.1 (2015-04-15)
56+
------------------
57+
* Merge branch 'feature/MICORefactor' of github.com:personalrobotics/prpy into feature/MICORefactor
58+
* Fixed ParabolicSmoother bug (thanks @rdiankov)
59+
* added code to cleanup ik solver, changed acceleration to 1.5
60+
* Added some hacks for ParabolicSmoother.
61+
* More retiming fixes.
62+
* Added a few useful log messages.
63+
* Cleaned up wrappers for OpenRAVE retimers.
64+
* Fixed Open/Close/CloseTight functions on MicoHand.
65+
* Set acceleration limits by default.
66+
* Convert CBiRRT "direction" to a NumPy array.
67+
* Merge branch 'master' into feature/MICORefactor
68+
Conflicts:
69+
src/prpy/base/robot.py
70+
* Merge pull request `#95 <https://github.com/personalrobotics/prpy/issues/95>`_ from personalrobotics/feature/SmoothingRefactor2
71+
Trajectory timing/smoothing refactor 2.0.
72+
* Merge pull request `#108 <https://github.com/personalrobotics/prpy/issues/108>`_ from personalrobotics/bugfix/issue99
73+
Fixed two bugs in vectorfield planner.
74+
* Made robot.simplifier optional.
75+
* Load an IdealController in simulation.
76+
* Fixed two bugs in planner
77+
Fixed two bugs:
78+
1. Missing `abs`
79+
2. Changed default `dt_multiplier` to 1.01 so that `numsteps` floors to 1 by default.
80+
* Fixed weird superclass issue.
81+
* Removed multi-controller references from Mico.
82+
* More MicoHand cleanup.
83+
* Started removing BH-specific code from MicoHand
84+
* Removed MICORobot, since it does nothing.
85+
* Load or_nlopt_ik by default.
86+
* PEP-8 fixes.
87+
* Removed more dead code from Mico.
88+
* Rearranged Mico file.
89+
* Removed PlanToNamedConfiguration from Mico.
90+
* Removed OWD-specific code from the Mico.
91+
* Documented ExecutePath and ExecuteTrajectory.
92+
* Simplified PostProcessPath with defer=True.
93+
* Rough PostProcessPath function.
94+
* Contributors: Michael Koval, Siddhartha Srinivasa, Stefanos Nikolaidis
95+
96+
0.5.0 (2015-04-07)
97+
------------------
98+
* Fixed the OMPL planner creation test.
99+
* Modified CBiRRT to output linear interpolation.
100+
* Fixed __getattr__ and __dir__ on Manipulator (`#89 <https://github.com/personalrobotics/prpy/issues/89>`_)
101+
* Fixed infinite recursion in `#89 <https://github.com/personalrobotics/prpy/issues/89>`_
102+
robot.planner or robot.actions not being defined caused infinite
103+
recursion in __getattr__. This patch explicitly checks for those
104+
attributes before querying them.
105+
* Added robot_name pass-through argument.
106+
* Various fixes: Added logic to catch openrave excpetion and reraise as planning exception in CHOMP. Added PlanToConfiguration to BiRRT. Changed SetTrajectoryTags to util.SetTrajectoryTags in vectorfield planner.
107+
* Feature/action library
108+
* Changed RenderPose to RenderPoses. Made RenderTSRChains call RenderPoses. Added render flag to RenderTSRChains, RenderPoses and RenderVector so that they can be used optionally.
109+
* Adding RenderPose function to allow rendering an axis from a with block
110+
* for servo simulation, sleep time takes into account how much time already was spend on computation
111+
* Merge pull request `#81 <https://github.com/personalrobotics/prpy/issues/81>`_ from personalrobotics/feature/PlanningRefactor
112+
Added new MethodMask and FirstSupported meta-planners
113+
* Disabled PlanToIK on TSRPlanner.
114+
* Renamed new meta-planners.
115+
- Only to MethodMask
116+
- Fallback to FirstSupported
117+
* made default quadraticObjective, changed to allow you to specify arguments for joint limit avoidance
118+
* Tag trajectories with information necessary to control smoothing.
119+
* Moved common tags into an Enum.
120+
* Switched from XML to JSON to trajectory tagging.
121+
* Added python-enum dependency.
122+
* Added PlanToIK to TSRPlanner.
123+
* Added new MetaPlanners and refactored planning.
124+
- Added the Fallback meta-planner. This meta-planner operates on a list
125+
of planners and calls the first planner in the list that supports the
126+
desired planning method.
127+
- Added the Only meta-planner. This meta-planner operates on a single
128+
planner by only allowing access to a subset of its planning methods.
129+
- Added support for explicitly passing a delegate planner to:
130+
- IKPlanner
131+
- NamedPlanner
132+
- TSRPlanner
133+
- Modified TSRPlanner to raise an UnsupportedPlanningError when it
134+
receives unsupported TSRs. This is necessary to trigger the fallback
135+
behavior implemented in the Fallback meta-planner.
136+
* feature added to avoid joint limit with ComputeJointVelocityFromTwist
137+
* Cleaned up CloneBindings functions
138+
- Reference the TSRLibrary from the parent environment.
139+
- Reference the NamedConfigurations from the parent environment.
140+
- Don't load ServoSimulatored in cloned environments.
141+
- Don't load any controllers in cloned environments.
142+
- Avoid calling __init__ to prevent future nasty surprises.
143+
- NOTE: This fixes a memory leak caught by Pras.
144+
* Merge pull request `#76 <https://github.com/personalrobotics/prpy/issues/76>`_ from personalrobotics/feature/vector_field_planner_timestepping
145+
Added variable time steps for vector field planner
146+
* Hide IK log spam when cloning environments.
147+
* Tag trajectories with constrained and optimized
148+
* More CHOMP module refactoring.
149+
* Cleaned up CHOPM file.
150+
* Added variable time steps for vector field planner
151+
* Tag trajectories with planner and planning method.
152+
* Renaming robot.actionlibrary to robot.actions
153+
* Adding logic to explicitely clear handles arrays in visualization helper functions
154+
* Fixing logic that adds actions as methods on robot. Adding logic to add actions as methods on manipulator. Updating visualization of TSR lists to have parameter for axis length. Removing reference to push_grasp from prpy/action init.
155+
* Adding logic to expose actions as methods on robot
156+
* Initial action library implementation
157+
* Contributors: Jennifer King, Michael Koval, Shervin Javdani, Siddhartha Srinivasa
158+
159+
0.4.0 (2015-03-30)
160+
------------------
161+
* Planning with vector fields.
162+
* Documentation update
163+
* Go as fast as possible!
164+
* Fixed status logic bug
165+
* Added caching
166+
* Added exception handling for min distance
167+
* More code refactoring and testing of end effector offset
168+
* First pass at plan to end effector offset
169+
* Added termination function
170+
* Trajectory execution refactor
171+
* Modify OptimizeTrajectory in chomp to catch generic exceptions and raise them as PlanningError
172+
* Adding support for execution of base trajectories
173+
* Fixing two typos in cbirrt that cause failures
174+
* Changing parabolic smoother to use HauserParabolicSmoother by default
175+
* Adding logic to clone the environment eshen simplifying and smoothing a path. This allows us to set the dofs in the trajectory as active.
176+
* Refactored vectorfield planner to input function pointer
177+
* Implemented defer=True on ExecuteTrajectory.
178+
* Eat kwargs in OMPLSimplifier.
179+
* Added defer=True support to ExecutePath.
180+
* Fixed typo in vectorfield planner
181+
* Fixed bug when getting DOF resolutions
182+
* Added a few cleanups for syntax and simplicity.
183+
* First pass at vector field planner to end effector transform
184+
* Cleaned up optimized joint velocity computation
185+
* Added gradient for objective function
186+
* Implemented and tested ComputeJointVelocityFromTwist in util
187+
* Added workspace planner to prpy.planning __init__.py
188+
* Fixed a number of bugs related to workspace planner.
189+
This commit addresses several major bugs unmasked by the workspace planner.
190+
1) Fixed a bug in cloning an environment into itself
191+
(needed for recursive `@PlanningMethod`s)
192+
2) Fixed a bug in incorrect formatting of RetimeTrajectory error messages.
193+
3) Fixed numerous small issues in the workspace planner:
194+
a) Returning a 1-waypoint trajectory when started in-contact with an object.
195+
b) Fixed max_distance calculation error from missing `numpy.copy()`
196+
c) Simplified some of the workspace planning logic.
197+
* Changed Clone() to lock by default.
198+
This emulates the functions of `with env:` more closely,
199+
which is useful because the call `with Clone(env):` looks
200+
extremely similar.
201+
* Added workspace planner to prpy.planning init.py
202+
This just adds the new workspace planner to __init__.py so it can be imported from `prpy.planning`.
203+
* Bugfixes for SimplifyTrajectory and NominalConfiguration.
204+
- SimplifyTrajectory has been modified to gracefully return if passed a trajectory with only one waypoint.
205+
- NominalConfiguration optionally takes a maximum allowable DOF range, which allows robots with fully redundant configurations (i.e. multiple rotation joints) to ignore IK configurations for which a closer solution must exist.
206+
* Changed default chunksize of tsr_planner to be 1.
207+
* Added PlanToEndEffectorOffset method. Untested.
208+
* Added fix to make ik_ranking default to ignoring multirotation IK solutions.
209+
* Added fix for SimplifyTrajectory to handle 1-waypoint trajectories.
210+
* Added patch for correctly cloning grabbed objects.
211+
Due to a bug in OpenRAVE, cloned grabbed objects may have incorrect
212+
adjacency properties, causing them to not be evaluated correctly
213+
for self collisions (with the robot). This bugfix forces cloned
214+
environments to regrab all objects, which resets these incorrect links.
215+
* Added PlanToEndEffectorPose method that creates a geodesic workspace trajectory from start to goal and sends it off to PlanWorkspacePath
216+
* Added default 1 rotation offset to nominal configuration.
217+
* Fixed missing and child-referencing constructors in CloneBindings.
218+
* Changed Cloned(clone_env=...) to Cloned(into=...). Also added docs.
219+
* Enabled syntax highlighting.
220+
* Added a new subsection.
221+
* Added InstanceDeduplicator examples.
222+
* Improved the planning README (thanks @cdellin).
223+
* First pass at greedy IK planner
224+
* Added numerous bugfixes for cloning and deferred planning.
225+
* Deferred planning now consistently returns trollius.futures.Future
226+
* Fixed bug in robot PlanWrapper that caused deferred planning to terminate early.
227+
* Cloned() references are now explicitly passed their clone environment.
228+
* .Cloned() helper method added to environments created by Clone(env)
229+
* Existing clone references consolidated to minimize Cloned() lookups.
230+
* Stripped WAMRobot to the bare basics.
231+
* Fixed indexing bug in IK ranking function.
232+
* Generalized the nominalconfiguration ranker to accept angle bounds.
233+
* Adjusted default chunk size for tsr sampler and removed unused param.
234+
* Added multirotation filtering to nominal configuration IK ranker.
235+
* Added a MacSmoother test.
236+
* Simplify the trajectory in MacSmoother.
237+
* Made the Timer log message optional.
238+
* Fixed the ParabolicSmoother wrapper class.
239+
* Call SimplifyTrajectory before an OpenRAVE retimer.
240+
* Fixed argument names in robot.SimplifyPath.
241+
* Modified _PlanWrapper to set linear interpolation.
242+
* Added MacSmoother to wrap or_pr_spline.
243+
* Update README.md
244+
* More planner documentation.
245+
* Switched fallback retimer from linear to parabolic.
246+
* Added env lock to get active manipulator and DOF values at start.
247+
* Fixed incorrect swapping between Arm DOF Indices and Robot DOF Indices.
248+
* Implemented TsrPlanner as standalone from IkPlanner.
249+
* Added explicit chunk size parameter.
250+
* Added restructured IK and TSR planners that can do multiple goals.
251+
* Wrapped OpenRAVE retimers in the planning pipeline.
252+
* Added SimplifyPath tests.
253+
* Added SimplifyPath method using OMPL.
254+
* Fixed NamedPlanner in cloned environments.
255+
* Added PlanToEndEffectorPose tests.
256+
* Added more PlanToConfiguration tests.
257+
* Strip extraneous groups from the CBiRRT output.
258+
* Added basic planning unit tests.
259+
* Disabled smoothing in OMPL.
260+
* Disabled smoothing in CBiRRT.
261+
* Contributors: Jennifer King, Michael Koval, Pras, Pras Velagapudi, Siddhartha Srinivasa, Stefanos Nikolaidis
262+
5263
0.3.1 (2015-02-10)
6264
------------------
7265
* Added fix for error caused by clone_env being set to None.

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ Additionally, PrPy provides several simple planners of its own:
6565
workspace trajectories
6666
- `SnapPlanner`: attempts to execute a straight-line joint-space trajectory to
6767
the goal
68+
- `GreedyIKPlanner`: follows a workspace path by greedily picking IK solutions
69+
- `VectorFieldPlanner`: follows any custom cspace vector field until a custom termination
6870

6971
Finally, PrPy provides several meta-planners for combining the above
7072
planners:
@@ -413,6 +415,9 @@ object is referenced.
413415

414416
See the classes in `prpy.base` for example implementations of `CloneBindings`.
415417

418+
## Dependencies
419+
To run prpy, you will need to have installed the pacakge enum34. To do that, go to a local directory and run
420+
``sudo pip install enum34``
416421

417422
## License
418423

package.xml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0"?>
22
<package>
33
<name>prpy</name>
4-
<version>0.3.1</version>
4+
<version>1.1.0</version>
55
<description>
66
Python utilities used by the Personal Robotics Laboratory.
77
</description>
@@ -10,12 +10,14 @@
1010
<license>BSD</license>
1111
<buildtool_depend>catkin</buildtool_depend>
1212
<build_depend>python</build_depend>
13-
<run_depend>openrave</run_depend>
14-
<run_depend>manipulation2</run_depend>
1513
<run_depend>python</run_depend>
1614
<run_depend>python-catkin-pkg</run_depend>
15+
<run_depend>python-enum</run_depend>
1716
<run_depend>python-numpy</run_depend>
17+
<run_depend>manipulation2</run_depend>
18+
<run_depend>openrave</run_depend>
1819
<run_depend>python-scipy</run_depend>
19-
<test_depend>unittest</test_depend>
20+
<run_depend>python-termcolor</run_depend>
2021
<test_depend>python-nose</test_depend>
22+
<test_depend>unittest</test_depend>
2123
</package>

src/prpy/action/__init__.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/usr/bin/env python
2+
3+
from actionlibrary import ActionLibrary, ActionMethod

src/prpy/action/actionlibrary.py

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
#!/usr/bin/env python
2+
3+
class ActionMethod(object):
4+
5+
def __init__(self, func):
6+
"""
7+
Register this action with the action library
8+
"""
9+
self.func = func
10+
ActionLibrary.add_action(func)
11+
12+
def __call__(self, instance, robot, *args, **kw_args):
13+
self.func(instance, robot, *args, **kw_args)
14+
15+
class ActionLibrary(object):
16+
actions = []
17+
18+
def has_action(self, name):
19+
all_actions = self.get_actions()
20+
return name in all_actions
21+
22+
def get_action(self, name):
23+
for a in self.actions:
24+
if a.__name__ == name:
25+
return a
26+
return None
27+
28+
def get_actions(self):
29+
"""
30+
Return all the action names registered
31+
"""
32+
return [action.__name__ for action in self.actions]
33+
34+
@classmethod
35+
def add_action(cls, func):
36+
"""
37+
@param func The action method to register
38+
"""
39+
cls.actions.append(func)
40+

src/prpy/base/endeffector.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ def __init__(self, manipulator):
3737

3838
def CloneBindings(self, parent):
3939
from ..clone import Cloned
40-
EndEffector.__init__(self, Cloned(parent.manipulator,
41-
into=self.GetParent().GetEnv()))
40+
41+
self.manipulator = Cloned(parent.manipulator,
42+
into=self.GetParent().GetEnv())
4243

4344
def GetIndices(self):
4445
"""Gets the DOF indicies associated with this end-effector.

0 commit comments

Comments
 (0)