forked from pz4kybsvg/Conception
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
2.9 KiB
70 lines
2.9 KiB
2 years ago
|
Simple Gripper Simulation
|
||
|
=========================
|
||
|
|
||
|
This simple gripper demo is used to exercise MultibodyPlant's contact modeling
|
||
|
in a gripping scenario. SceneGraph is used for both visualization and contact
|
||
|
handling.
|
||
|
|
||
|
This example models a gripper with two fingers. The right finger is fixed to the
|
||
|
main body of the gripper, while the left finger has a prismatic joint to allow
|
||
|
opening and closing the grip. The grip force can be specified with the command
|
||
|
line option `--gripper_force`, which defaults to 10 Newtons of force. If we
|
||
|
provide a value of exactly zero, the fingers of the gripper will be set to be at
|
||
|
`--grip_width` distance (in meters) from each other. When `--gripper_force > 0`,
|
||
|
`--grip_width` specifies the initial condition for the fingers position.
|
||
|
|
||
|
The demo also permits specifying a vertical harmonic motion of the gripper to
|
||
|
evaluate the performance of the grip when the gripper is undergoing forced
|
||
|
motions. The parameters controlling this motion are `--amplitude`, to specify
|
||
|
the amplitude of the oscillations in meters and, `--frequency` to specify the
|
||
|
frequency of the oscillations in Hertz. Additionally, the user might like to
|
||
|
change the direction of the forced oscillations to either be in the horizontal
|
||
|
or vertical direction. This can be accomplished by changing the `<axis>`
|
||
|
specified for the `<joint>` named "translate_joint" in the SDF for the gripper
|
||
|
model, `simple_gripper.sdf`. Only vertical or horizontal forced motions are
|
||
|
supported in this example and thus the axis must either be the x-axis or the
|
||
|
z-axis. Otherwise an exception is thrown communicating this fact. There is no
|
||
|
gravity for the forced vertical oscillations case.
|
||
|
|
||
|
Fixed Gripper with Gravity
|
||
|
--------------------------
|
||
|
To run a case with gravity but no forced oscillations, set the `<joint>` axis
|
||
|
for the joint named "translate_joint" to be the x-axis in the SDF file.
|
||
|
The parameter `--gripper_force` specifies the grip force while `--grip_width`
|
||
|
specifies the initial condition for the position of the fingers.
|
||
|
If the gripper force is set to zero, the fingers will be placed at a fixed
|
||
|
`--grip_width` distance apart. The latter is an important test case since it
|
||
|
eliminates the additional complexity introduced by having moving fingers.
|
||
|
|
||
|
Prerequisites
|
||
|
-------------
|
||
|
|
||
|
From your `drake` workspace directory you first need to build this example and
|
||
|
the visualizer.
|
||
|
|
||
|
Open a visualizer window
|
||
|
```
|
||
|
bazel run //tools:meldis -- --open-window &
|
||
|
```
|
||
|
|
||
|
Build this example with
|
||
|
```
|
||
|
bazel build //examples/simple_gripper
|
||
|
```
|
||
|
|
||
|
Running the Example
|
||
|
-------------------
|
||
|
|
||
|
Launch the simulation with
|
||
|
```
|
||
|
./bazel-bin/examples/simple_gripper/simple_gripper --simulation_time=10.0 \
|
||
|
--simulator_target_realtime_rate=1.0
|
||
|
```
|
||
|
where for this particular invocation example we are specifying the simulation
|
||
|
time in seconds as a command line option. To get a list of command line options
|
||
|
for this example run
|
||
|
```
|
||
|
./bazel-bin/examples/simple_gripper/simple_gripper --help
|
||
|
```
|
||
|
which will also provide a description for each option.
|