Comments (6)
OMPL supports this and has a set of APIs associated with constrained planning. Will go ahead and hook it up soon.
from mplib.
Also, add the ability to fix some joints during planning.
from mplib.
To support this there are some issues:
-
How do you pass the constraint function and its jacobian from python to c++? There are some ways to do it but might be very involved
-
If we only support certain types of constraints, then we can have two types of constraints:
- rotation lock on some particular joints individually
- end effector rotation lock
The first is easy to implement, but the second might be involved. In particular, we would first turn the joint values to end effector pose with FK. Then, we multiply it some matrix to remove the translation. Now, suppose we want to make the hand level, we are basically allowing it to rotate only about a single axis. To describe such a constraint, we need to extract its coordinate frame and require one axis to have a certain dot product with some world axis. Finally, we need to hand-calculate the jacobian. The part that worries me is the to rotation matrix part. Need to discuss this
from mplib.
Constrained planning does not support compound state space, which is what we are using. In order to proceed, need more pointers from @Colin97 how to convert our current state space into a constraint-compatible one.
The OMPL is not the easiest to use either, but one guy added general constraint planning to moveit in summer 2020 so can take a look at how they support it.
from mplib.
Design of the API:
Users probably don't want constrained planning all the time. For example, when the robot is not holding anything. As such, the constraint should be on a per-planning basis. For now, let's support this level constraint only.
For the public-facing plan API in planner.py, user can optionally supply a vector they want the end effector to align with and the angle of alignment. If these two parameters are both present, pass them in and the corresponding c++ plan will make new constrained space.
from mplib.
Todo:
change to not full jacobian
optimize the traj
expose general constraints to python
learn how ompl does constraint planning
from mplib.
Related Issues (20)
- Investigate Continuous Joint HOT 1
- Put documentation in the pybinding
- Sapien to Planning World HOT 2
- Question for the Motion Planner
- Fail to completely execute the desirable action in sapien env using mplib.Planner HOT 7
- Demos for new features
- MPlib uses capsule to represent a cylinder
- Expose Path Simplification HOT 1
- urdf relative path not working when `./` not provided for a single level dir
- assimp not scaling correctly
- Sphinx not parsing docstring correctly in stub files HOT 2
- Transition to Sphinx HOT 1
- Planner init bug HOT 1
- Swap out FCL for HPPFCL HOT 2
- Wrapper for a set of collision objects associated with a single link HOT 1
- Collisions not correctly disabled when no srdf file is passed in
- Merge KolinGuo/MPlib to haosulab/MPlib
- Add support for Halfspace distance function call
- Wrapper to allow multiple collision geometries in a collision object
- Support PhysxCollisionShapeTriangleMesh with FCL
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mplib.