0% found this document useful (0 votes)
6 views

04399227

This paper discusses a method for robotic grasping that utilizes dimensionality reduction techniques inspired by human hand control, specifically through the concept of eigengrasps. By applying this approach, the authors demonstrate the ability to create stable grasping algorithms across various robotic hand models, significantly simplifying the control process. The proposed grasp planner optimizes hand postures in a reduced dimensional space, allowing for effective grasping of complex objects.

Uploaded by

animeaddictab23
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
6 views

04399227

This paper discusses a method for robotic grasping that utilizes dimensionality reduction techniques inspired by human hand control, specifically through the concept of eigengrasps. By applying this approach, the authors demonstrate the ability to create stable grasping algorithms across various robotic hand models, significantly simplifying the control process. The proposed grasp planner optimizes hand postures in a reduced dimensional space, allowing for effective grasping of complex objects.

Uploaded by

animeaddictab23
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 6

Proceedings of the 2007 IEEE/RSJ International ThB4.

1
Conference on Intelligent Robots and Systems
San Diego, CA, USA, Oct 29 - Nov 2, 2007

Dimensionality reduction for hand-independent


dexterous robotic grasping
Matei Ciocarlie Corey Goldfeder Peter Allen

Abstract— In this paper, we build upon recent advances subjects during grasping tasks. Their results suggest that a
in neuroscience research which have shown that control of continuous subspace, rather then a finite number of discrete
the human hand during grasping is dominated by movement postures, can be used to approximate human hand control
in a configuration space of highly reduced dimensionality.
We extend this concept to robotic hands and show how a during grasping. We will expand upon this topic later in
similar dimensionality reduction can be defined for a number this paper. Peters and Jenkins [5] compared a number of
of different hand models. This framework can be used to dimensionality reduction techniques used to extract relevant
derive planning algorithms that produce stable grasps even for two-dimensional manifolds from datasets recorded from hu-
highly complex hand designs. Furthermore, it offers a unified man operators. Tsoli and Jenkins [6] showed that, once such
approach for controlling different hands, even if the kinematic
structures of the models are significantly different. We illustrate a manifold is obtained, two dimensional control is sufficient
these concepts by building a comprehensive grasp planner that for teleoperation involving tasks such as power and precision
can be used on a large variety of robotic hands under various grasps and tapping motion.
constraints. The body of work exploring human hand control has also
been applied to the problem of automatic grasp planning.
I. INTRODUCTION AND RELATED WORK Miller et al. [7] used the grasp taxonomy concept to define
One of the hardest problems in robotic grasping is the a number of starting positions, or pre-grasps, when searching
creation of control algorithms for new hand designs that are for good grasps of a given object using a robotic hand. Aleotti
beginning to rival the human hand in complexity. Researchers and Caselli [8] used a Cyberglove to record grasp trajectories
studying robotic grasping have struggled to at least partially and postures used by test subjects on a set of example objects
replicate human versatility when designing artificial counter- and replicated those trajectories on the same objects using
parts. However, if we wish to reproduce human-like grasping NURBS. Li and Pollard [9] used a shape matching approach,
it would seems natural to draw inspiration not only from the sampling an object into a dense cloud of oriented points and
hardware of the human hand, but also from the software; matching against a small database of known human hand
that is, the way the hand is controlled by the brain. This poses. For a general review of the robotic grasp planning
may initially sound like an overly lofty goal: a large part of problem we also refer the reader to [10], [11].
the human cortex is dedicated to grasping and manipulation, In the work presented in this paper, we build upon
and it would seem reasonable to assume that all of this cog- Santello’s analysis of human hand motion during grasping
nitive machinery is dedicated to finely controlling individual to produce control algorithms for robotic hands. We show
joints and generating highly flexible hand postures. However, how using this approach reduces the dimensionality of the
results in both robotics and neuroscience research point to problem to the point where it is reasonable to search the
the contrary, emphasizing that a majority of the human hand hand configuration space for good grasps of a given object.
control during common grasping tasks lacks individuation in The resulting grasp planner can be applied to a number of
finger movements. different hand designs, including a model of the human hand.
Attempts to formalize human tendency to simplify the
II. EIGENGRASPS
space of possible grasps can be traced back to Napier’s pio-
neering grasp taxonomy [1], updated later by Cutkosky [2]. Any hand posture is fully specified by its joint values, and
In [3], Iberall reviewed a large field of work on grasp can therefore be thought of as a point in a high-dimensional
taxonomies, from areas such as anthropology, medical, reha- joint space. If d is the number of degrees of freedom (DOF)
bilitation and robotics. These studies suggest that, while the of the hand, than a posture p can be defined as
configuration space of dexterous hands is high-dimensional p = [θ1 θ2 . . . θd ] ∈ Rd (1)
and very difficult to search directly, most useful grasps can
be found in the vicinity of a small number of discrete points. where θi is the value of i-th degree of freedom.
Santello et al. [4] tested this hypothesis by using a As we have discussed in our literature review, previous
Cyberglove to record joint angle information from human research suggests that most human grasping postures derive
from a relatively small set of discrete pregrasp shapes. This
This work was funded in part by NIH BRP grant 1RO1 NS 050256-01A2 would imply that the range of postures used in everyday
and a National Defense Science and Engineering Graduate Fellowship. grasping tasks will exhibit significant clustering in the d-
All authors are with the Department of Computer Science, Columbia
University, NY 10027, USA dimensional DOF space. Santello et al. [4] verified this hy-
E-mail: {cmatei, coreyg, allen}@cs.columbia.edu potheses by collecting a large set of data containing grasping

1-4244-0912-8/07/$25.00 ©2007 IEEE. 3270


poses from subjects that were asked to shape their hands as if can be seen as a pregrasp or grasp planning space, as we shall
they were grasping a familiar object. Principal Component expand upon below. Finally, complex manipulation tasks are
Analysis of this data revealed that the first two principal also likely to require usage of the entire range of motion of
components account for more than 80% of the variance, the hand.
suggesting that a very good characterization of the recorded B. Application for Robotic Hand Models
data can be obtained using a much lower dimensionality
approximation of the joint space. Although the work of Santello et al. is centered on the
In our work, we will refer to the Principal Components study of the human hand, we have found this approach
of these postures as eigengrasps. The implication is that to be extremely useful for robotic hands as well. In our
they form a low-dimensionality basis for grasp postures, study, we have applied the eigengrasp concept to a total of
and can be linearly combined to closely approximate most 5 hand models: a simple gripper, the Barrett hand, the DLR
common grasping positions. Each eigengrasp ei is a d- hand [12], the Robonaut hand [13] and finally a human hand
dimensional vector and can also be thought of as direction of model. All our hand models, as well as the eigengrasps used
motion in joint space. Motion along one eigengrasp direction in each case, are presented in table I.
For the human hand we have chosen eigengrasp directions
will usually imply motion along all (or most) degrees of
based on the published results in [4], taking advantage of
freedom of the hand.
the fact that they have been derived through rigorous study
ei = [ei,1 ei,2 . . . ei,d ] (2) over a large number of recorded samples. Since such data
is not available for robotic hand models, we have derived
By choosing a basis comprising b eigengrasps, a hand eigengrasps attempting to define grasp subspaces similar to
posture placed in the subspace defined by this basis can the one obtained using human hand eigengrasps. In most
be expressed as a function of the amplitudes ai along each cases, such decisions could be made based directly on the
eigengrasp direction: similarities with the human hand. For example, the MCP and

b IP joints can be mapped to the proximal and distal joints of
p= ai ei (3) robotic fingers. In the case of the Barrett hand, changes in the
i=1 spread angle DOF were mapped to human finger abduction.
and is therefore completely defined by the amplitudes vector While we found our choices to produce good results, the
a = [a1 . . . ab ] ∈ Rb . optimal choice of eigengrasps for non-human hands, as well
as the choice of which eigengrasps to use for a particular
A. Effective Degrees of Freedom task, are open questions and interesting directions for future
An important question to consider is how many eigen- research.
The eigengrasp concept allows us to design flexible control
grasps need to be used so that the subspace that they define
algorithms that operate identically across all the presented
closely approximates the required range of hand postures.
hand models. The key to our approach is that the eigen-
Based on the results of Santello et al. discussed above,
grasps encapsulate the kinematic characteristics of each
we have used the two dominant eigengrasps of the human
hand design. This enables control algorithms that operate
hand in our work, and will show how they produce good
on eigengrasp amplitudes to ignore low-level operations
results. It is important to note that our study is primarily
and concentrate on the high-level task. We believe this
concerned with grasp synthesis for common everyday objects
method to be similar in spirit to certain aspects of human
and that another choice of eigengrasps might be necessary
brain operation, with individual function grouped together
in a different problem domain such as object manipulation
in control synergies. Another advantage is the significant
or with another dataset, containing unusually complex or
dimensionality reduction (by as much as a factor of 10 for
difficult to grasp objects.
complex hands) obtained by operating in the reduced basis
An intriguing corollary question is whether the results
eigengrasp space as opposed to the full joint space. In the
obtained using such a small set of eigengrasps imply that
next section we will derive a grasp planning algorithm that
the other DOF’s of the hand are useless. We can provide
makes use of both these concepts.
a number of arguments to the contrary: as shown in [4],
eigengrasps 3 through 6 (in decreasing order of importance), III. GRASP PLANNING USING EIGENGRASPS
while accounting for less than 20% of the variance in hand In essence, the grasp planning task can be thought of as
posture, do not represent noise and are shown to be related an optimization problem in a high-dimensional space that
to the object to be grasped. Furthermore, the study presented describes both hand posture (intrinsic DOF’s) and position
by Santello et al. was performed in the absence of the real (extrinsic DOF’s). Consider the goal of minimizing an energy
object, as subjects reproduced grasps from memory. This function of the form:
suggests that initial grasp planning stages do indeed take
E = f (p, w) (4)
place in a low dimensional space, but during the final stages
the shape of the object forces the hand to deviate from If d is the number of intrinsic hand DOF’s then p ∈ Rd
eigengrasp space in order to conform to the object surface. represents the hand posture and w ∈ R6 contains the
From this perspective the space defined through eigengrasps position and orientation of the wrist.

3271
Eigengrasp 1 Eigengrasp 2
Model DOFs
Description min max Description min max

Gripper 4 Prox. joints flexion Dist. joints flexion

Barrett 4 Spread angle opening Finger flexion

Prox. joints flexion Dist. joints flexion


DLR 12 Finger abduction Thumb flexion

Thumb flexion Thumb flexion


Robonaut 14 MCP flexion MCP extension
Index abduction PIP flexion

Thumb rotation
Thumb flexion
Thumb flexion
Human 20 MCP flexion
MCP extension
PIP flexion
Index abduction

TABLE I
E IGENGRASPS DEFINED FOR THE ROBOTIC HAND MODELS USED IN THIS PAPER .

Intuitively, this energy function has to be related to the


quality of the grasp, and we will review a number of
possible formulations later in this section. However, most
formulations pose a number of problems. First, it can be
very difficult, or even impossible, to compute an analytical
gradient. Second, such functions are highly non-linear, as
small changes in both finger posture and wrist position can
Fig. 1. Desired contact locations for DLR, Robonaut and Human hands
drastically alter the quality of the resulting grasp. Finally, the
legal parameter space is complex, having to satisfy multiple
eigengrasp space, as opposed to DOF space. The energy
constraints: prevent inter-penetration with the object to be
function takes the form
grasped as well as potential obstacles, and maintain joint
values within their acceptable ranges. E = f (a, w) (5)
A. Optimization Algorithm where a ∈ R2 is the vector of eigengrasp amplitudes. This
We directly address all of these problems by using sim- effectively reduces the parameter space to 8 dimensions (2
ulated annealing as the preferred optimization method (for eigengrasp amplitudes plus 6 extrinsic DOF’s) from as high
a general review of the simulated annealing algorithm we as 26 dimensions in the case of the human hand.
refer the reader to [14]). Its stochastic nature makes it
a particularly good choice for our task: since new states B. Energy Function
are generated as random neighbors of the current state, The first energy function formulation that we propose
computation of the energy gradient is not necessary, and the simply attempts to bring a number of pre-selected contact
algorithm works well on non-linear functions. Furthermore, points on the robotic hand in contact with the object (figure
the possibility of an “uphill move” to a state of higher 1). The energy contains two terms: the first one sums the
energy allows it to escape local minima which can trap distances between the desired contact points and the object
greedier methods such as gradient descent. However, the surface while the second one sums the angular differences
random exploration of the input domain means that high between the orientation of the surface normals at the contact
dimensionality of the parameter space will severely affect locations and the closest point on the object. By sampling
the computational efficiency of this algorithm. the palm and all the links of the robotic hand, as in figure
We therefore propose performing the optimization in 1, we expect the energy function to be minimized when the

3272
hand is wrapped around the object generating a large contact
area.
In most cases, the resulting hand posture creates an
enveloping grasp of the object, especially for complex hand
models grasping objects similar in size to the hand. However,
there exist cases where the desired contact locations are
all very close to the object surface without generating a k = 5000 k = 15000 k = 25000 k = 29000
stable grasp. Furthermore, small objects might be impossible
to completely wrap the hand around, and an acceptable
minimum of the energy function will not exist. To address
this problem we also propose a modified version of the
energy function that includes a built-in notion of grasp
quality as described below.
While a number of grasp quality metrics have been pre-
sented in the literature, our context is somewhat different: k = 30000 k = 40000 k = 60000 k = 10000
we require a metric that can take into account not only Fig. 2. Simulated annealing example over 100,000 iterations. Each image
existing contacts between the hand and the object, but also shows the best state found until iteration k.
potential contacts that can be realized by small changes
in the current state. In this sense, the ideal metric would For each state generated during the annealing schedule,
assess the potential of a hand posture, and determine whether GraspIt! uses forward kinematics to place the robotic hand
the annealing algorithm will search its neighborhood for model in the correct posture and checks for collisions against
progressively better states. the object to be grasped as well as other obstacles. If the
One possible quality metric that can be modified according state is found to be legal, the corresponding energy function
to these requirements is the one described by Ferrari and is computed and the annealing algorithm continues. This
Canny [15]. In its original form, the process involves building process can be repeatead until a satisfactory energy level
the space of wrenches that can be applied by a grasp (the has been reached, or a pre-specified number of iterations
grasp wrench space, or GWS) by taking the convex hull of has been exceeded.
the wrenches that can be applied through each contact. If Before presenting an extensive test of this optimization
the origin is not contained in this space, the grasp does not method, involving multiple hand models as well as different
have force-closure (F-C) and the quality is 0. Otherwise, objects, we will discuss a typical example, in order to
the quality of the grasp is is equal to the distance from analyze the behavior of the simulated annealing algorithm
the origin to the closest boundary of the GWS. In our in more detail. This example involves the Robonaut hand
implementation, object contacts are replaced by the desired grasping a glass. The optimization was performed over
contact locations exemplified in figure 1. When computing 100,000 iterations, which is the case for all examples shown
the GWS, we scale the wrenches that can be applied at each in this paper. Figure 2 shows the temporary solution (best
desired contact location depending on the distance between state found so far) at various points during the optimization.
the desired contact and the object surface. Thus, if this We can observe what is considered typical behavior for
distance is small, the contact will have a positive contribution a simulated annealing implementation: at first, the search
to the grasp, and states that bring it closer to the object goes through random states, accepting bad positions as well
surface will be rewarded by a higher quality value. If, on the as good positions. As the annealing schedule progresses,
contrary, the desired contact is far from the object, it will the search space is sampled more often in the vicinity of
not significantly affect the grasp quality measurement. the good states, while bad states are no longer accepted.
Once the grasp quality term is computed, it is included in Finally, in the later stages, the search is confined in a small
the energy function in negated form, as the annealing algo- neighborhood around the best state, which is progressively
rithm attempts to minimize the energy value. Its contribution refined. The total time required for the optimization was 173
biases the search algorithm toward states that not only bring seconds, or 1.73 milliseconds / iteration. The most significant
the hand in contact with the object, but also create stable amount of computation was spent checking the feasibility of
grasping postures. We have found that these formulations each generated state (i.e. checking for collisions and inter-
work well in practice, as shown in the following sections. penetrations).
However the ideal energy function formulation, which would
IV. GRASP PLANNING EXAMPLES
guarantee stable grasps and eliminate the need to pre-specify
desired contact locations on the hand, is the subject of further In order to test the effectiveness of our framework, we
research. have applied the eigengrasp planning algorithm using all five
previously discussed robotic hand models on a set of six
C. Simulated Annealing example objects. Figure 3 shows the result of the annealing search
We have implemented the simulated annealing approach for each hand-object combination. In order to allow a direct
using the publicly available GraspIt! simulation engine [16]. assessment of the planning method through visual inspection

3273
Gripper
4 DOF
Barrett
4 DOF
12 DOF
DLR
Robonaut
14 DOF
Human
20 DOF

Fig. 3. Eigengrasp planner test using 5 hand models to grasp each of 6 objects

of the results, figure 3 presents the best hand posture found to find good manipulation grasps and, especially in the case
by the planner without any additional refinements. We note of robotic hands equipped with human-like fingertips, it
that, in most cases, planning in the reduced space spanned produces stable results. Examples are shown in figure 4.a.
by only two eigengrasps does not result in a posture where for the DLR, Robonaut and Human hand models, with the
the robotic hand conforms perfectly to the surface of the note that all presented grasps have force-closure.
object. However, the result is often close enough to such a Finally, we have used the method presented in this paper
posture that a stable grasp can be obtained by using simple to plan grasps in the presence of obstacles. Figure 4.b. shows
heuristics. One possible heuristic involves closing each finger a situation in which a table surface prevents the execution of
until contact with either the object or another finger prevents the best grasps, thus forcing the algorithm to find alternative
further motion. This method produces a force-closure grasp solutions. The only additional cost incurred by the grasp
in 23 out of the 30 cases presented in figure 3. planner is that of collision detection against the obstacle for
For the results presented in figure 3, we have specified each newly generated state. Again, all the grasps presented
desired contact locations on the entire surface of the robotic in the image have force-closure.
palm. However, it is also possible to use only a subset of One object in our test set that requires additional consider-
these. For example, we can choose to use only the fingertip ation is the toy airplane model. It differs from the rest of the
contacts, thus removing the requirement of wrapping the set in the sense that it can not be well approximated using
hand around the object. In this case, the grasp quality a single convex component, as it is the sum of a number of
component of our energy function (section III-B) takes vital dominant shapes (fuselage, wings, etc.). The grasp planner
importance, as it is generally easy to simply place the that we have presented poses no hard convexity constraint on
fingertips on the object surface without necessarily creating the object, and it produces a number of convincing grasps on
a strong grasp. This approach can be regarded as an attempt the airplane model. However, an intuitive method to simplify

3274
on five robotic hands, with the number of intrinsic DOF’s
ranging between 4 and 20. The results show that it is indeed
possible to apply an identical control algorithm to all of these
hand models and obtain consistent results. Furthermore, the
eigengrasp planning method we have presented can be used
to find both power and manipulation grasps, and can take
a) Planning results using only fingertip contacts into account the presence of external obstacles.
While this work has been focused on the task of grasping
everyday objects, we believe that eigengrasp-like control syn-
ergies can be found for many other domains. Since the pub-
lished experimental data we draw upon was collected under
such assumptions, we found it unjustified to generalize our
particular choices of eigengrasps without further analysis.
However, the effectiveness of the grasp planning algorithm
based on relatively few eigenvectors of hand motion suggests
b) Planning results with external obstacles, such as a table surface
that identifying similar dimensionality reduction strategies
Fig. 4. Grasps planning with additional constraints for other domains (such as manipulation) will prove a fruitful
area of future research.
the search would be to decompose the object into dominant
convex sub-parts and plan individually on each of these. R EFERENCES
In previous work we showed how approximating an object [1] J. R. Napier, “The prehensile movements of the human hand,” Journal
of Bone and Joint Surgery, vol. 38, pp. 902–913, 1956.
with smooth convex primitives can be used to reduce the [2] M. R. Cutkosky, “On grasp choice, grasp models, and the design of
complexity of the grasp search space [17]. Psychological hands for manufacturing tasks,” IEEE Transactions on Robotics and
research [18] suggests that such ”grasping by parts” is similar Automation, vol. 5, pp. 269–279, 1989.
[3] T. Iberall, “Human prehension and dexterous robot hands,” Interna-
to the cognitive approach humans use for grasping, and as tional Journal of Robotics Research, vol. 16, pp. 285–299, 1997.
such we are interested as future work in combining this type [4] M. Santello, M. Flanders, and J. F. Soechting, “Postural hand synergies
of humanlike cognitive modeling with our humanlike hand for tool use,” Journal of Neuroscience, vol. 18, no. 23, pp. 10 105–
10 115, 1998.
control. [5] R. A. Peters and O. C. Jenkins, “Uncovering manifold structures
in robonaut’s sensory-data state space,” in IEEE-RAS Intl. Conf. on
V. CONCLUSIONS Humanoid Robots, 2005, pp. 369–374.
[6] A. Tsoli and O. C. Jenkins, “2d subspaces for user-driven robot
In this paper we have built upon recent results in neu- grasping,” in Robotics, Science and Systems Conference: Workshop
roscience research, which show that human hand control on Robot Manipulation, 2007.
for common grasping tasks mostly takes place in a space [7] A. T. Miller, S. Knoop, H. I. Christensen, and P. K. Allen, “Automatic
grasp planning using shape primitives,” IEEE Intl. Conf. on Robotics
of much lower dimensionality than the number of degrees and Automation, vol. 2, pp. 1824–1829, 2003.
of freedom of the human hand. We have extended this [8] J. Aleotti and S. Caselli, “Grasp recognition in virtual reality for robot
concept for a number of robotic hands, ranging from a simple pregrasp planning by demonstration,” in IEEE Intl. Conf. on Robotics
and Automation, Orlando, FL, May 2006.
gripper to highly anthropomorphic models. For each model, [9] Y. Li and N. S. Pollard, “A shape matching algorithm for synthesizing
we have defined a low dimensional subspace of the degrees humanlike enveloping grasps,” in IEEE-RAS International Conference
of freedom space, determined by a number of basis vectors on Humanoid Robots, Tsukuba, JP, December 2005, pp. 442–449.
[10] K. B. Shimoga, “Robot grasp synthesis algorithms: a survey,” Intl. J.
which we call eigengrasps. of Robotics Research, vol. 15, pp. 230–266, 1996.
As long as the eigengrasp space provides a good approxi- [11] A. Bicchi and V. Kumar, “Robotic grasping and contact: A review,”
mation of the hand motion required for a given task, control IEEE Intl. Conf. on Robotics and Automation, pp. 348–353, 2000.
[12] C. S. Lovchik and M. A. Diftler, “The robonaut hand: A dextrous robot
algorithms can be designed to operate in this space and hand for space,” in IEEE Intl. Conf. on Robotics and Automation, 1998,
take advantage of the dimensionality reduction. In the case pp. 907–912.
of human grasping, data collected through user studies has [13] J. Butterfass, G. Hirzinger, S. Knoch, and H. Liu, “Dlr’s articulated
hand, part i: Hard- and software architecture,” in IEEE Intl. Conf. on
shown that this is indeed the case. In this paper we show Robotics and Automation, 1998, pp. 2081–2086.
that this is also the case for complex robotic hands: we have [14] L. Ingber, “Very fast simulated re-annealing,” J. Mathl. Comput.
built an automated grasp planner that can find stable grasps Modelling, vol. 12, no. 8, pp. 967–973, December 1989.
[15] C. Ferrari and J. Canny, “Planning optimal grasps,” in IEEE Intl. Conf.
for complex hand models that have traditionally been very on Robotics and Automation, 1992, pp. 2290–2295.
difficult to plan for. [16] A. Miller and P. K. Allen, “Graspit!: A versatile simulator for robotic
The eigengrasp space acts not only to reduce control grasping,” IEEE Robotics and Automation Magazine, vol. 11, no. 4,
pp. 110–122, December 2004.
complexity, but also as an interface between the kinematic [17] C. Goldfeder, P. Allen, C. Lackner, and R. Pelossof, “Grasp plan-
structure of the hand and higher-level task planning. There- ning via decomposition trees,” in IEEE Intl. Conf. on Robotics and
fore, for a given task, it is possible to use a unified treatment Automation, Rome, Italy, April 2007.
[18] I. Biederman, “Recognition-by-components: A theory of human image
for a number of robotic hand models, even though the understanding,” Psychological Review, vol. 94(2), pp. 115–147, 1987.
kinematic specifications may be significantly different. We
have illustrated this concept by using the eigengrasp planner

3275

You might also like