What can words tell us about primitives?

Chris Atkeson,


Under Construction


One way to generate primitives is to look at words.
Each of these words could be a different primitive.
Here are some examples from WordNet, dictionaries, and thesauruses.
For those of you who know other languages, think about how many
words (or characters) there are for these basic acts.

******************

Let's begin to create a hierarchy for verbs involving actions a physical
robot can do (acts)

A middle-down approach would define a hierarchy of primitives rooted
in an "API", which is a list of basic acts. The API might look like:

1 MOVE X
  displace, propel, ease, translate, rotate
1.1 MOVE SELF
1.1.1 MOVE SELF TO CHANGE LOCATION
      [not considering flying or moving on or under water.]
      locomote, crawl, walk, creep, run, scramble, slither, slide,
      wheel, roll, glide, go, come, travel, wend, wander, wind,
      thread, meander, weave, stray, err, drift, rise, move up,
      ascend, descend, zigzag, jump, sashay, trot, sidle, careen,
      steal, dance, whirl, stumble, trip, mill about, turn, climb,
      leap, bound, spring, bolt, enter, come in, arrive, exit, go out,
      get out, leave, bustle, linger, dawdle, lunge, swoop, flurry,
      crash, thunder, hop, leap, sneak
1.1.2 MOVE SELF TO REORIENT/CHANGE POSTURE/POSE
      reorient, look at, gaze at, pay attention to, turn, step, avoid,
      circle, fall, lie down, sit, get up, duck, bob, wallow, writhe,
      wriggle, worm, squirm, twist, wobble, waggle, nod, pulsate,
      quiver, tremble, teeter, tilt, lean, slant, pitch, roll, yaw,
      cant, twitch, falter, waver, undulate, flap, wave, startle,
      start, jump, mope, hop, get down, assume/take/strike a pose,
      tumble, hug, fidget, flinch, cringe, wince, recoil, heave,
      fling, dodge

1.2 MOVE OBJECT
    displace, shift, manipulate, carry, transport, put, set, place,
    pose, position, lay, center, align, even, pour, spill, slop,
    splatter, separate, sort, divide, part, transfer, throw, wrestle
1.2.1 MOVE TO ORIENT TO OBJECT
      pre-grasp
1.2.2 MOVE WHILE TOUCHING OBJECT
      compliant move, press, depress
1.2.2.1 MOVE OBJECT WHILE HOLDING IT
1.2.2.2 MOVE OBJECT NOT HOLDING IT (NON-PREHENSILE MANIPULATION)

1.3 MAINTAIN POSTURE (NOT MOVE)
    stand still, hold still, freeze

2 FIND X (which may involve moving)
  seek
2.1 FIND AN OBJECT
2.1.1 FIND A SPECIFIED OBJECT
2.1.2 FIND AN OBJECT THAT OPTIMIZES CRITERION AND SATISFIES CONSTRAINTS
2.2 FIND A LOCATION
2.2.1 FIND A SPECIFIED LOCATION
2.3.2 FIND A LOCATION THAT OPTIMIZES CRITERION AND SATISFIES CONSTRAINTS

3 CONTACT/ATTACH/ACQUIRE X
3.1 MOVE TO TOUCH OBJECT
    guarded move, move until contact, make contact, reach
    catch
3.2 CONTACT X
3.3 GRASP X
    grab

4 RELEASE X
  put, drop, expell, slip, throw, ungrasp

5 TRANSFORM X
  change, alter, modify, affect
5.1 TRANSFORM SELF
5.2 TRANSFORM OBJECT
    some examples:
    shape, mold
    break, crush, pulverize, liquify
    stir, mix, churn, roil, agitate, shake, vibrate, jerk,
    sweep, brush, collect
    stretch, compress
    tear, rip
    heat, cool, boil
    clean, wash
    sand, smooth, polish, even, coarsen
    sharpen, flatten, dull
    tighten, loosen
    open, close
    lock, unlock
    engage, mesh, interlock, disengage
    join, glue
    roll, unroll
    ruffle, riffle
    arrange, straighten, string, thread
    cut, slice, dice, whittle, chop, saw
    drill, dig, carve, whittle

*****************************************************************

Behaviors built out of these primitives:
Travel/go/locomote = MOVE SELF
Put = FIND/ATTACH/MOVE/RELEASE OBJECT
Open door by pulling = FIND handle and hinges, ATTACH handle, MOVE handle,
                       RELEASE handle
Swap X and Y = FIND X, ATTACH X, MOVE X, FIND Y, RELEASE X, ATTACH Y,
               MOVE Y, RELEASE Y (may need to go back and reposition X
               exactly where Y was).
Make the bed
Set the table
Clear the table
tidy up, clean up, neaten, straighten
wash, clean
disentangle, unsnarl, loosen, unravel
pack, bundle, wrap, drape
pile, heap
...

and so on.

*****************************************************************

How many PUSH primitives are there?

Let's look in detail at
PUSH - "apply force into the interior of a surface of an object"
(CGA's definition)
or
"generate force on an object not towards an agent (force is away from
or to the side of the agent)" This definition handles forces like gravity
and magnetism that don't act at a contact point or on a surface.
The object may or may not move or change as a result of the push.
In robotics pushing is a form of nonprehensile manipulation (no grasping).

* Vary speed, force, and amount and type of movement  (with some
  suggestion of tool):
touch, contact (to make contact without much force)
nudge, bump (to push against gently)
shift, dislodge, reposition, displace (push to get something to move)
jostle, jar (push or shake strongly enough to induce some movement
             or vibration)
jog (give a slight push to)
stroke, brush, skim, skim over, graze (touch while moving)
feel, palpate (push for sensing)
jerk, flick, snap (throw or toss with a quick motion)
budge (move a small amount)
thrust (push forcefully)
shove, bulldoze, manhandle (push roughly)
shoot (push fast)
propel, impel (push as if providing a motor)
tap (push quickly but lightly)
hit, whack, punch, knock, strike, jolt, stamp, kick
   (a very forceful and fast push)
drive (having been pushed hard: "The nail was driven deeply into the wood")
pound, beat, thump (repeated hits)
rock, sway, oscillate, move back and forth
fluctuate
pulse
glide
flex, bend
spread

* Vary direction
push out, thrust out (push to thrust outward)
push aside, push away, thrust aside (push out of the way)
lift, raise, elevate, bring up (push upward)
lower, take down, let down, bring down

* Vary body part
elbow (push with an elbow)
shoulder (push with a shoulder)
lean (typically with shoulder or hands, using gravity to generate force)
toe (push with the front of the foot)
nose (push or move with the nose (quadrupeds do this))
slap (forcefull hit with open hand)
punch (forcefull hit with knuckles of a closed hand)
butt (push or hit with head (quadrupeds do this))
stamp (hit downward with foot)
choke, strangle (compress neck with hands)
puff, blow (use mouth)
extend (muscle movement or force to extend a limb)

* Vary tool and scale
prod, goad (push gently with a stick-like object or finger)
poke, stab, jab, stick, prick, plunge, dig (push with a sharp stick-like
 object or finger)
ram (poke at forcefully with a large pole-like object or vehicle)

* Specify something about the object or what happens to it.
topple, tumble, tip, tip over, overturn, roll, upset, knock over, bowl
   over, (cause to topple or tumble by pushing)
slide, slip, glide (push resulting in the object sliding)
stab, jab, pierce (attempt to pierce an object with or without a sharp tool)
press (object doesn't move or moves in a prefined way (button))
bear down (on), press down on, weigh down, knuckle, load
 (force is needed for push)
send (object moves)
boost (lift another agent)
force (significant force is/was needed to move an object)
sweep (move typically small or granular materials, or liquids with a surface)
squeeze, squash, crush, mash, mash, crunch, flattened
 (material is crushed or flattened)
scrape
squeegie
tighten
compress
constrict
saltate

Specify situation or task
move, displace (object actually moves)
place, position, locate (move to a specified location or pose)
slot (move object into a slot)
jam, ram, thrust, stuff, shove, squeeze, insert, fit
 (press or force an object into a constrained space with multiple contacts,
  robotics term is peg-in-hole)
wedge, lodge, work, tuck, pop
 (move object where supported by mechanical constraints)

******************

How many PULL primitives are there?

PULL - "apply force on an object that points outward at the point of
contact" (CGA's definition)
or
"generate force on an object towards an agent" (Wordnet)
This second definition handles forces like gravity and magnetism that
don't act at a contact point or on a surface, but attract an object.

In robotics pulling is a form of nonprehensile manipulation (no grasping).

The object may or may not move or change as a result of the pull.
Note that WordNet defines pull as relative to an agent, while push is defined
relative to an object's surface. With that definition, push and pull are
not quite opposites. An agent can pull on an object by pushing on its
surface on the far side from the agent (granted, this is an unusual case).
One fires a gun by pulling the trigger, which actually involves pushing
the trigger towards the hand.

you could do these with a rope:
 stretch, tug, haul, drag, draw, tow, heave, lug, strain, strain at, jerk
 yank

here we are using a mechanical lever
 lever, pry, prise

These involve twisting
 wrench, wrest, twist

These suggest removing an object from a group, a container, or other
constraints
 remove, extract, pick, take, take away, take out, withdraw

These suggest making a group (pull things together)
 gather, attract

These removing objects from a surface
 uproot, weed, pluck, pick at, pull at

These involve subdividing or breaking an object
 rip, rend, tear, pull apart, dislocate

These suggest particular objects or tools
 winch, rake, comb, brush, unsheath

These suggest a limb
 retract, flex (muscle movement or force to retract a limb)

These suggest clothes or cloth
 hike up, hitch up, strip, undress, unveil

A wind can push (blow) and pull (suck)

******************

How many PUT primitives are there?

PUT - move object to a specific location or to satisfy a constraint
 position

Put something on another object, resulting in the object being supported
 lay, plant, pile, set, place, seat, stand, rest, load

Put something inside another object or group
 put in, insert, enclose, stick in, introduce, plug, inset, intersperse,
 interleave, slip, inject, shoot, pigeonhole, shelve, cram, stuff, jam,
 ram, wad, overstuff

Put something inside another object or group continuously
 feed

Put something next to another object
 nestle, snuggle, butt, juxtapose

Put something in a geometric relationship with another object or context
 align, line up, parallelize, aim, point, level

Put something over something else
 cover

Put something under something else
 underlay

Put parts of a movable object in an arrangement
 pose

Put parts of a group somewhere
 arrange, set up

Discard something
 throw away, discard

Put something in a previous location
 replace, put back, reposition, relocate

Put something in the wrong place
 misplace

Put something in a position so another act can be performed
 tee, rack up

******************

SET

******************

GET

******************

HOLD

******************

GRASP
grip
clutch
clasp
hold
clench
lay hold of
catch
seize
grab
snatch
latch onto
catch at
grapple
crush
put/get hands on
clinch
clamp

******************

DROP
let go
let fall
let go (of)
fail to hold
lose one's grip on
release
unhand
relinquish
put
place
rest
deposit
set
set down
lay
leave
settle
shove
pop
plonk
drip
fall in drops
fall
dribble
trickle
drizzle
flow
run
plop
leak
come/go down
descend
sink
plunge
plummet
tumble
pitch

*****************************************************************

CUT

*****************************************************************

OTHER MOVEMENTS

swing, sling

throw, launch

*****************************************************************
*****************************************************************
*****************************************************************
Under construction:

distinctive actions
wring (twist)

use of tools or other object (wrapping paper, rope, ...)
wiping
sweeping
sponging
combing
brushing
rake
whisk
stir, mix
slash
stab
sift
funnel
guide
wind (a string)
unwind
wrap
unwrap
tie, untie
tangle, disentangle
lasso
grind
pump
row
paddle
pass around, pass on
cinch
...

MULTIPLE MOVERS
follow
lead
pass
chase, pursue
capture
evade
maneuver
race
formation
drive
herd
crowd
guard
move over, give way, yield, ease up
hop on, mount, mount up, get on, jump on, climb on, bestride

LIQUIDS AND GRANULAR MATERIALS
pour
ladle

 A way to describe primitives is phrases:
verb - grasp
verb object - open door
verb object-v preposition1 object-p1 preposition2 object-p2 ...
  - insert peg into hole by rotating it
...