GithubHelp home page GithubHelp logo

sea-bass / pyroboplan Goto Github PK

View Code? Open in Web Editor NEW
199.0 199.0 18.0 23.73 MB

Educational Python library for manipulator motion planning

Home Page: https://pyroboplan.readthedocs.io

License: MIT License

Shell 0.57% Python 99.43%
manipulator planning python

pyroboplan's Introduction

Hi everyone ๐Ÿ‘‹

I'm a robotics engineer and applied scientist working at The AI Institute.

Previously, I was at:

On my spare time, I like to teach things related to robotics, AI, and software development. Learn more at https://roboticseabass.com/.

pyroboplan's People

Contributors

eholum avatar pac48 avatar sea-bass avatar skwarson96 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

pyroboplan's Issues

`max_angle_step` parameter is not necessarily an angle

There are several functions with a max_angle_step parameter described as:

max_angle_step : float
            Maximum angle step, in radians, for collision checking along path segments.

However, this is not necessarily an angle or in radians, as joints can also be prismatic.

Making this issue to do a sweep over all the instances of this.

Show motion planning while avoiding Octrees

Pinocchio already supports Octrees in HPP-FCL (for collision checking) and Meshcat (for visualization).

It would be nice to have official support, and an example, of motion planning with an Octree representing a custom collision geometry.

Create mobile base IK example

I think all these planners / IK solvers should be able to handle whole-body IK.

It would be nice to have a model of an arm on a mobile base (3DOF is okay), and also adding weighted pseudoinverses to the IK solver to balance between base and arm motion.

Implement basic graph search algorithms

You mention them in the docs, and they'll be useful for future search algorithm implementations. I think a basic A* implementation for the graph class would be generally useful. As part of this, there are some improvements/modifications to the Graph interface that we might need to consider.

For instance, providing access to node objects through robot configurations may be necessary. As it currently stands, it is non-trivial to get access to a nodes neighbors without already having a pointer. Things like the following will be necessary:

>>> g = Graph()
>>> g.add_node(Node([0,0]))
>>> Node([0,0]) in g.nodes
False

I think adding some basic hashing and equality checks to the node classes will probably be worth it, and then maybe storing neighbors in a hashmap instead of sets to allow external consumers of the class to access them.

Once those are in place a basic A* is straightforward.

Upgrade to Pinocchio 3.x

Once Pinocchio 3.0 is out (which I believe is pending the release of HPP-FCL 3.0 as well), we should switch this library over.

This should give us the ability to get nearest/witness points from the CollisionRequest objects which should help with the collision-aware IK / trajectory optimization... I hope.

Support planning with joint groups

Right now, all planning is happening with the entire URDF; meaning all joints are accounted for in planning.

To be more in accordance with most motion planning frameworks, it would be nice to have this concept of "joint groups" so that planning can be done by fixing a subset of joint values and only planning for the desired joints.

At its core, this will require a wrapper class around the Pinocchio models, which can contain these joint groups as well as the model data. It will look closer to, e.g., a MoveIt planning scene or a Drake scene graph.

Support setting / getting named joint states

There should be an API to set/get joint states by name by storing them in dictionaries.

Additionally, this could support different groups, as well as loading the states from SRDF (which Pinocchio sort of already has).

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.