Humanoid Path Planner Florent Lamiraux and Joseph Mirabel - - PowerPoint PPT Presentation

humanoid path planner
SMART_READER_LITE
LIVE PREVIEW

Humanoid Path Planner Florent Lamiraux and Joseph Mirabel - - PowerPoint PPT Presentation

Introduction Description of the software Manipulation planning Humanoid Path Planner Florent Lamiraux and Joseph Mirabel CNRS-LAAS, Toulouse, France HPP Introduction Description of the software Manipulation planning Humanoid Path Planner


slide-1
SLIDE 1

Introduction Description of the software Manipulation planning

Humanoid Path Planner

Florent Lamiraux and Joseph Mirabel

CNRS-LAAS, Toulouse, France

HPP

slide-2
SLIDE 2

Introduction Description of the software Manipulation planning

Humanoid Path Planner

Introduction Description of the software Manipulation planning

HPP

slide-3
SLIDE 3

Introduction Description of the software Manipulation planning

Outline

Introduction Description of the software Manipulation planning

HPP

slide-4
SLIDE 4

Introduction Description of the software Manipulation planning

Path Planning

Given

◮ A robot (kinematic chain), ◮ obstacles, ◮ constraints (non-holonomic, manipulation), ◮ an initial configuration and ◮ goal configurations,

Compute a collision-free path satisfying the constraints from the initial configuration to a goal configuration.

HPP

slide-5
SLIDE 5

Introduction Description of the software Manipulation planning

Path Planning

Given

◮ A robot (kinematic chain), ◮ obstacles, ◮ constraints (non-holonomic, manipulation), ◮ an initial configuration and ◮ goal configurations,

Compute a collision-free path satisfying the constraints from the initial configuration to a goal configuration.

HPP

slide-6
SLIDE 6

Introduction Description of the software Manipulation planning

Path Planning

Given

◮ A robot (kinematic chain), ◮ obstacles, ◮ constraints (non-holonomic, manipulation), ◮ an initial configuration and ◮ goal configurations,

Compute a collision-free path satisfying the constraints from the initial configuration to a goal configuration.

HPP

slide-7
SLIDE 7

Introduction Description of the software Manipulation planning

Path Planning

Given

◮ A robot (kinematic chain), ◮ obstacles, ◮ constraints (non-holonomic, manipulation), ◮ an initial configuration and ◮ goal configurations,

Compute a collision-free path satisfying the constraints from the initial configuration to a goal configuration.

HPP

slide-8
SLIDE 8

Introduction Description of the software Manipulation planning

Path Planning

Given

◮ A robot (kinematic chain), ◮ obstacles, ◮ constraints (non-holonomic, manipulation), ◮ an initial configuration and ◮ goal configurations,

Compute a collision-free path satisfying the constraints from the initial configuration to a goal configuration.

HPP

slide-9
SLIDE 9

Introduction Description of the software Manipulation planning

Historical perspective

◮ 1998: Move3D, ◮ 2001: Creation of Kineo-CAM, transfer of Move3D, ◮ 2006: Release of KineoWorks-2, development of HPP

based on KineoWorks-2,

◮ 2013: kineo-CAM is bought by Siemens, ◮ December 2013: development of HPP open-source.

HPP

slide-10
SLIDE 10

Introduction Description of the software Manipulation planning

Historical perspective

◮ 1998: Move3D, ◮ 2001: Creation of Kineo-CAM, transfer of Move3D, ◮ 2006: Release of KineoWorks-2, development of HPP

based on KineoWorks-2,

◮ 2013: kineo-CAM is bought by Siemens, ◮ December 2013: development of HPP open-source.

HPP

slide-11
SLIDE 11

Introduction Description of the software Manipulation planning

Historical perspective

◮ 1998: Move3D, ◮ 2001: Creation of Kineo-CAM, transfer of Move3D, ◮ 2006: Release of KineoWorks-2, development of HPP

based on KineoWorks-2,

◮ 2013: kineo-CAM is bought by Siemens, ◮ December 2013: development of HPP open-source.

HPP

slide-12
SLIDE 12

Introduction Description of the software Manipulation planning

Historical perspective

◮ 1998: Move3D, ◮ 2001: Creation of Kineo-CAM, transfer of Move3D, ◮ 2006: Release of KineoWorks-2, development of HPP

based on KineoWorks-2,

◮ 2013: kineo-CAM is bought by Siemens, ◮ December 2013: development of HPP open-source.

HPP

slide-13
SLIDE 13

Introduction Description of the software Manipulation planning

Historical perspective

◮ 1998: Move3D, ◮ 2001: Creation of Kineo-CAM, transfer of Move3D, ◮ 2006: Release of KineoWorks-2, development of HPP

based on KineoWorks-2,

◮ 2013: kineo-CAM is bought by Siemens, ◮ December 2013: development of HPP open-source.

HPP

slide-14
SLIDE 14

Introduction Description of the software Manipulation planning

Main features

◮ Numerical constraints at the core of the model

◮ quasi-static equilibrium ◮ object grasp and placement

◮ no a priori discretization of paths

◮ evaluation calls constraint projection ◮ constrained path need to be checked for continuity (class

hpp::core::PathProjector)

HPP

slide-15
SLIDE 15

Introduction Description of the software Manipulation planning

Main features

◮ Numerical constraints at the core of the model

◮ quasi-static equilibrium ◮ object grasp and placement

◮ no a priori discretization of paths

◮ evaluation calls constraint projection ◮ constrained path need to be checked for continuity (class

hpp::core::PathProjector)

HPP

slide-16
SLIDE 16

Introduction Description of the software Manipulation planning

Outline

Introduction Description of the software Manipulation planning

HPP

slide-17
SLIDE 17

Introduction Description of the software Manipulation planning

Overview of the architecture

Modular: collection of packages

◮ package dependencies tracked by pkg-config, ◮ installation managed by cmake and a git submodule:

git://github.com/jrl-umi3218/jrl-cmakemodules.git,

◮ programmed in C++, ◮ controlled via python

HPP

slide-18
SLIDE 18

Introduction Description of the software Manipulation planning

Overview of the architecture

Modular: collection of packages

◮ package dependencies tracked by pkg-config, ◮ installation managed by cmake and a git submodule:

git://github.com/jrl-umi3218/jrl-cmakemodules.git,

◮ programmed in C++, ◮ controlled via python

HPP

slide-19
SLIDE 19

Introduction Description of the software Manipulation planning

Overview of the architecture

Modular: collection of packages

◮ package dependencies tracked by pkg-config, ◮ installation managed by cmake and a git submodule:

git://github.com/jrl-umi3218/jrl-cmakemodules.git,

◮ programmed in C++, ◮ controlled via python

HPP

slide-20
SLIDE 20

Introduction Description of the software Manipulation planning

Overview of the architecture

Modular: collection of packages

◮ package dependencies tracked by pkg-config, ◮ installation managed by cmake and a git submodule:

git://github.com/jrl-umi3218/jrl-cmakemodules.git,

◮ programmed in C++, ◮ controlled via python

HPP

slide-21
SLIDE 21

Introduction Description of the software Manipulation planning

Overview of the architecture

Modular: collection of packages

◮ package dependencies tracked by pkg-config, ◮ installation managed by cmake and a git submodule:

git://github.com/jrl-umi3218/jrl-cmakemodules.git,

◮ programmed in C++, ◮ controlled via python

HPP

slide-22
SLIDE 22

Introduction Description of the software Manipulation planning

Overview of the architecture

HPP

slide-23
SLIDE 23

Introduction Description of the software Manipulation planning

Software Development Kit

Packages implementing the core infrastructure

◮ Kinematic chain with geometry

◮ pinocchio: implementation of kinematic chain with

geometry,

◮ tree of joints (Rotation, Translation, SE3: vector +

unit-quaternions),

◮ moving fcl::CollisionObjects, ◮ forward kinematics, ◮ joint Jacobians, ◮ center of mass and Jacobian, ◮ URDF parser.

◮ Numerical constraints

◮ hpp-constraints: numerical constraints ◮ implicit f(q) = (≤)0, ◮ explicit qout = f(qin), ◮ numerical solvers based on Newton-Raphson. HPP

slide-24
SLIDE 24

Introduction Description of the software Manipulation planning

Software Development Kit

Packages implementing the core infrastructure

◮ Kinematic chain with geometry

◮ pinocchio: implementation of kinematic chain with

geometry,

◮ tree of joints (Rotation, Translation, SE3: vector +

unit-quaternions),

◮ moving fcl::CollisionObjects, ◮ forward kinematics, ◮ joint Jacobians, ◮ center of mass and Jacobian, ◮ URDF parser.

◮ Numerical constraints

◮ hpp-constraints: numerical constraints ◮ implicit f(q) = (≤)0, ◮ explicit qout = f(qin), ◮ numerical solvers based on Newton-Raphson. HPP

slide-25
SLIDE 25

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Goal: Generate a configuration satisfying the constraints.

HPP

slide-26
SLIDE 26

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Shoot random configuration

HPP

slide-27
SLIDE 27

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Solve linearized system

HPP

slide-28
SLIDE 28

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Solve linearized system

HPP

slide-29
SLIDE 29

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Solve linearized system

HPP

slide-30
SLIDE 30

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Solve linearized system

HPP

slide-31
SLIDE 31

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Solve linearized system

HPP

slide-32
SLIDE 32

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Solve linearized system

HPP

slide-33
SLIDE 33

Introduction Description of the software Manipulation planning

Newton-Raphson algorithm

Constraints

◮ quasi-static

equilibrium (15)

◮ both hands hold the

placard (10) Result: a configuration that satisfies the constraints.

HPP

slide-34
SLIDE 34

Introduction Description of the software Manipulation planning

Software Development Kit

Packages implementing the core infrastructure

◮ Path planning

◮ hpp-core: definition of basic classes, ◮ path planning problems, ◮ path planning solvers (RRT), ◮ constraints (locked dofs, numerical constraints) ◮ path optimizers (random shortcut), ◮ steering methods (straight interpolation) HPP

slide-35
SLIDE 35

Introduction Description of the software Manipulation planning

Extensions

Packages implementing other algorithms

◮ hpp-wholebody-step: whole-body and walk planning

using sliding path approximation,

◮ hpp-manipulation: manipulation planning (see next

section),

◮ any extension for a given application.

HPP

slide-36
SLIDE 36

Introduction Description of the software Manipulation planning

Extensions

Packages implementing other algorithms

◮ hpp-wholebody-step: whole-body and walk planning

using sliding path approximation,

◮ hpp-manipulation: manipulation planning (see next

section),

◮ any extension for a given application.

HPP

slide-37
SLIDE 37

Introduction Description of the software Manipulation planning

Extensions

Packages implementing other algorithms

◮ hpp-wholebody-step: whole-body and walk planning

using sliding path approximation,

◮ hpp-manipulation: manipulation planning (see next

section),

◮ any extension for a given application.

HPP

slide-38
SLIDE 38

Introduction Description of the software Manipulation planning

Python control

hpp-corbaserver: python scripting through CORBA

◮ embed hpp-core into a CORBA server and expose

services through 3 idl interfaces:

◮ Robot load and initializes robot, ◮ Obstacle load and build obstacles, ◮ Problem define and solve problem.

◮ Implement python classes to help user call CORBA

services

◮ Robot automatize robot loading, ◮ ProblemSolver definition problem helper. HPP

slide-39
SLIDE 39

Introduction Description of the software Manipulation planning

Python control

hpp-corbaserver: python scripting through CORBA

◮ embed hpp-core into a CORBA server and expose

services through 3 idl interfaces:

◮ Robot load and initializes robot, ◮ Obstacle load and build obstacles, ◮ Problem define and solve problem.

◮ Implement python classes to help user call CORBA

services

◮ Robot automatize robot loading, ◮ ProblemSolver definition problem helper. HPP

slide-40
SLIDE 40

Introduction Description of the software Manipulation planning

Python control

Extensions through plugins in hpp-corbaserver

◮ hpp-manipulation-corba: control of manipulation

planning specific classes and algorithms.

HPP

slide-41
SLIDE 41

Introduction Description of the software Manipulation planning

Visualization through gepetto-gui

Implemented by package hpp-gepetto-viewer.

HPP

slide-42
SLIDE 42

Introduction Description of the software Manipulation planning

Outline

Introduction Description of the software Manipulation planning

HPP

slide-43
SLIDE 43

Introduction Description of the software Manipulation planning

Manipulation

Class of problem containing:

◮ A robot: actuated DOFs ◮ Objects: unactuated DOFs

A solution will be a succession of motion of two types:

◮ The robot moves without constraints. Objects do not move. ◮ The robot moves while grasping the object.

HPP

slide-44
SLIDE 44

Introduction Description of the software Manipulation planning

Manipulation

Class of problem containing:

◮ A robot: actuated DOFs ◮ Objects: unactuated DOFs

A solution will be a succession of motion of two types:

◮ The robot moves without constraints. Objects do not move. ◮ The robot moves while grasping the object.

HPP

slide-45
SLIDE 45

Introduction Description of the software Manipulation planning

Manipulation

2 states:

Not holding Holding

HPP

slide-46
SLIDE 46

Introduction Description of the software Manipulation planning

Manipulation

4 transitions:

Not holding

Object fixed

Holding

Grasp Ungrasp Keep the grasp

HPP

slide-47
SLIDE 47

Introduction Description of the software Manipulation planning

Manipulation

4 transitions:

Not holding

Object fixed

Holding

Grasp Ungrasp Keep the grasp

HPP

slide-48
SLIDE 48

Introduction Description of the software Manipulation planning

Manipulation

4 transitions:

Not holding

Object fixed

Holding

Grasp Ungrasp Keep the grasp

HPP

slide-49
SLIDE 49

Introduction Description of the software Manipulation planning

Constraint

Definition

A function f ∈ D1(C, Rm).

Foliation

A leaf of a constraint f is defined by: Lf0(f) = {q ∈ C|f(q) = f0} where f0 is called the right hand side of the constraint.

Projection

Using a Newton Descent algorithm: qrand|f(qrand) = f0 ⇒ qproj|f(qproj) = f0

HPP

slide-50
SLIDE 50

Introduction Description of the software Manipulation planning

Constraint

Definition

A function f ∈ D1(C, Rm).

Foliation

A leaf of a constraint f is defined by: Lf0(f) = {q ∈ C|f(q) = f0} where f0 is called the right hand side of the constraint.

Projection

Using a Newton Descent algorithm: qrand|f(qrand) = f0 ⇒ qproj|f(qproj) = f0

HPP

slide-51
SLIDE 51

Introduction Description of the software Manipulation planning

Constraint

Definition

A function f ∈ D1(C, Rm).

Foliation

A leaf of a constraint f is defined by: Lf0(f) = {q ∈ C|f(q) = f0} where f0 is called the right hand side of the constraint.

Projection

Using a Newton Descent algorithm: qrand|f(qrand) = f0 ⇒ qproj|f(qproj) = f0

HPP

slide-52
SLIDE 52

Introduction Description of the software Manipulation planning

Constraint

Two types of constraints:

Configuration

Only one leaf is interesting: L0(f).

Motion

A leaf also represents reachability space.

HPP

slide-53
SLIDE 53

Introduction Description of the software Manipulation planning

Foliation

In the configuration space:

2 constraints on motion

◮ f: position of the object. ◮ g: grasp of the object.

HPP

slide-54
SLIDE 54

Introduction Description of the software Manipulation planning

Constraint graph

Lf Lg

HPP

slide-55
SLIDE 55

Introduction Description of the software Manipulation planning

Constraint graph

Lf

f

Lg

f f g

HPP

slide-56
SLIDE 56

Introduction Description of the software Manipulation planning

Rapidly exploring Random Tree

qrand = shoot random config() qnear = nearest neighbor(qrand, tree) fe, fp = select next state(qnear) qproj = project(qrand, fe) qnew = extend(qnear, qproj, fp) tree.insert node( (qnear, qnew, fp) )

HPP

slide-57
SLIDE 57

Introduction Description of the software Manipulation planning

Rapidly exploring Random Tree

qrand = shoot random config() qnear = nearest neighbor(qrand, tree) fe, fp = select next state(qnear) qproj = project(qrand, fe) qnew = extend(qnear, qproj, fp) tree.insert node( (qnear, qnew, fp) )

HPP

slide-58
SLIDE 58

Introduction Description of the software Manipulation planning

Rapidly exploring Random Tree

qrand = shoot random config() qnear = nearest neighbor(qrand, tree) fe, fp = select next state(qnear) qproj = project(qrand, fe) qnew = extend(qnear, qproj, fp) tree.insert node( (qnear, qnew, fp) )

HPP

slide-59
SLIDE 59

Introduction Description of the software Manipulation planning

Rapidly exploring Random Tree

qrand = shoot random config() qnear = nearest neighbor(qrand, tree) fe, fp = select next state(qnear) qproj = project(qrand, fe) qnew = extend(qnear, qproj, fp) tree.insert node( (qnear, qnew, fp) )

HPP

slide-60
SLIDE 60

Introduction Description of the software Manipulation planning

Rapidly exploring Random Tree

qrand = shoot random config() qnear = nearest neighbor(qrand, tree) fe, fp = select next state(qnear) qproj = project(qrand, fe) qnew = extend(qnear, qproj, fp) tree.insert node( (qnear, qnew, fp) )

HPP

slide-61
SLIDE 61

Introduction Description of the software Manipulation planning

Rapidly exploring Random Tree

qrand = shoot random config() qnear = nearest neighbor(qrand, tree) fe, fp = select next state(qnear) qproj = project(qrand, fe) qnew = extend(qnear, qproj, fp) tree.insert node( (qnear, qnew, fp) )

HPP

slide-62
SLIDE 62

Introduction Description of the software Manipulation planning

hpp-manipulation-corba

Provides tools to:

◮ read URDF files of robots and objects; ◮ create grasp contraints between a end-effector (robot) and

a handle (object);

◮ build the graph of constraints;

HPP

slide-63
SLIDE 63

Introduction Description of the software Manipulation planning

hpp-manipulation-corba

Provides tools to:

◮ read URDF files of robots and objects; ◮ create grasp contraints between a end-effector (robot) and

a handle (object);

◮ build the graph of constraints;

HPP

slide-64
SLIDE 64

Introduction Description of the software Manipulation planning

hpp-manipulation-corba

Provides tools to:

◮ read URDF files of robots and objects; ◮ create grasp contraints between a end-effector (robot) and

a handle (object);

◮ build the graph of constraints;

HPP

slide-65
SLIDE 65

Introduction Description of the software Manipulation planning

Installation and documentation

Everything in https://humanoid-path-planner.github.io/hpp-doc

HPP

slide-66
SLIDE 66

Introduction Description of the software Manipulation planning

Keep informed

◮ Mailing list hpp@laas.fr to discuss issues related to the

software,

◮ github notifications for issues related to individual

packages

HPP