|
1 | 1 | # Deformation Engine
|
2 | 2 |
|
3 |
| -> [!WARNING] |
4 |
| -> This wiki page is under construction |
| 3 | +<center> |
| 4 | +<img src="..//media/deformation_engine_img/deformation.png" width=500> |
| 5 | +</center> |
5 | 6 |
|
6 | 7 | Here, the docs gives a brief explanation of deformation engine plugin. \
|
7 | 8 | In hydra cfg file (see `cfg/environment/**.yaml`), you have specific lines for terrain deformation.
|
8 | 9 |
|
9 | 10 | ```yaml
|
10 | 11 | deformation_engine:
|
11 | 12 | enable: True
|
12 |
| - render_deform_inv: 10 |
| 13 | + delay: 2.0 # how many frames to hold before you apply deformation |
13 | 14 | terrain_width: ${....lunaryard_settings.lab_width}
|
14 | 15 | terrain_height: ${....lunaryard_settings.lab_length}
|
15 | 16 | terrain_resolution: ${....lunaryard_settings.resolution}
|
16 |
| - gravity: [0, 0, -49.0] #mg |
17 |
| - force_depth_slope: 0.00014 |
18 |
| - force_depth_intercept: 0.008 |
19 |
| - wheel_params: |
20 |
| - wheel_width: 0.09 |
21 |
| - wheel_radius: 0.1 |
22 |
| - deform_constraint: |
23 |
| - deform_offset: 0.0 |
| 17 | + num_links: 4 # num_robots * num_target_links |
| 18 | + footprint: |
| 19 | + width: 0.25 |
| 20 | + height: 0.1 |
| 21 | + deform_constrain: |
| 22 | + x_deform_offset: 0.0 |
| 23 | + y_deform_offset: 0.0 |
24 | 24 | deform_decay_ratio: 0.01
|
25 |
| - force_distribution: |
| 25 | + depth_distribution: |
26 | 26 | distribution: sinusoidal
|
27 |
| - wave_frequency: 2.0 |
| 27 | + wave_frequency: 4.14 # num_grouser/pi (no slip) |
28 | 28 | boundary_distribution:
|
29 | 29 | distribution: trapezoidal
|
30 |
| - angle_of_repose: 1.047 |
| 30 | + angle_of_repose: 1.047 #pi/3 |
| 31 | + force_depth_regression: |
| 32 | + amplitude_slope: 0.00006 |
| 33 | + amplitude_intercept: 0.008 |
| 34 | + mean_slope: -0.00046 |
| 35 | + mean_intercept: -0.0013 |
31 | 36 | ```
|
32 | 37 |
|
33 |
| -## Wheel parameters |
34 |
| -
|
35 |
| -You must specify the dimension of your wheels in meter. |
| 38 | +## Footprint |
| 39 | +This configuration specifies the dimensions of the robot's footprint. \ |
| 40 | +For now, we assume the footprint is rectangular since we are primarily focused on wheeled robots. \ |
| 41 | +Height and width correspond to the dimensions along the x and y axes (the robot's forward direction is along the x-axis). |
36 | 42 | ```yaml
|
37 |
| -wheel_params: |
38 |
| - wheel_width: 0.09 |
39 |
| - wheel_radius: 0.1 |
| 43 | +footprint: |
| 44 | + width: 0.25 |
| 45 | + height: 0.1 |
40 | 46 | ```
|
41 | 47 |
|
42 |
| -### Deformation Constraint |
43 |
| -Here you will specify parameter for constraint. \ |
44 |
| -`deform_offsest` is the distance between wheel origin and the center of deformation profile. \ |
45 |
| -`deform_decay_ratio` is decaying parameter of deformation. \ |
46 |
| -This is to limit deformation depth as rover traverse the same place many times. |
| 48 | +### Deform Constraint |
| 49 | +Here, you will specify the parameters for the constraint. \ |
| 50 | +`*_deform_offsest` refers to the distance between the projected wheel origin and the center of the deformation profile. \ |
| 51 | +`deform_decay_ratio` is the decay parameter for deformation. \ |
| 52 | +This is used to limit the deformation depth as the rover traverses the same location multiple times. \ |
| 53 | +Given the number of traversals $t$, the actual deformation value will be multiplied by scale factor $\text{ratio}^t$. |
47 | 54 | ```yaml
|
48 |
| -deform_constraint: |
49 |
| - deform_offset: 0.0 |
| 55 | +deform_constrain: |
| 56 | + x_deform_offset: 0.0 |
| 57 | + y_deform_offset: 0.0 |
50 | 58 | deform_decay_ratio: 0.01
|
51 | 59 | ```
|
52 | 60 |
|
53 |
| -## Force Distribution |
54 |
| -Controls distribution of force over wheel footprint. |
55 |
| -You have two options for this. |
| 61 | +## Depth Distribution |
| 62 | +This controls the xz distribution of the deformation profile.\ |
| 63 | +You have three options: uniform, sinusoidal, and trapezoidal.\ |
| 64 | +Typically, if your wheel has grousers, the wheel trace will exhibit a sinusoidal pattern.\ |
| 65 | +If your wheel has no grousers, the wheel trace is usually uniform.\ |
| 66 | +If the sand is cohesive, the trace tends to resemble a trapezoidal shape. |
56 | 67 |
|
57 | 68 | ```yaml
|
58 | 69 | force_distribution:
|
59 | 70 | distribution: uniform
|
60 |
| -``` |
61 |
| - |
62 |
| -```yaml |
| 71 | +--- |
63 | 72 | force_distribution:
|
64 | 73 | distribution: sinusoidal
|
65 | 74 | wave_frequency: 2.0
|
| 75 | +--- |
| 76 | +force_distribution: |
| 77 | + distribution: trapezoidal |
| 78 | + wave_frequency: 2.0 |
66 | 79 | ```
|
67 | 80 |
|
68 | 81 | ## Boundary Distribution
|
69 |
| -Controls boundary shape (y axis vs z axis with FLU convention). |
| 82 | +This controls the yz distribution of the deformation profile.\ |
| 83 | +The angle of repose is determined by the type of sand being used. |
70 | 84 |
|
71 | 85 | ```yaml
|
72 | 86 | boundary_distribution:
|
73 | 87 | distribution: uniform
|
74 |
| -``` |
75 |
| - |
76 |
| -```yaml |
| 88 | +--- |
77 | 89 | boundary_distribution:
|
78 | 90 | distribution: parabolic
|
79 |
| -``` |
80 |
| - |
81 |
| -```yaml |
| 91 | +--- |
82 | 92 | boundary_distribution:
|
83 | 93 | distribution: trapezoidal
|
84 | 94 | angle_of_repose: 1.047
|
| 95 | +``` |
| 96 | + |
| 97 | +## Force depth regression |
| 98 | +To compute deformation depth from the contact force, we use a linear model.\ |
| 99 | +Each coefficient is determined by linear regression using DEM simulation data.\ |
| 100 | +Note that this model is quite simple, and it will be necessary to develop a higher-dimensional model for more accurate depth computation. |
| 101 | + |
| 102 | +```yaml |
| 103 | +force_depth_regression: |
| 104 | + amplitude_slope: 0.00006 |
| 105 | + amplitude_intercept: 0.008 |
| 106 | + mean_slope: -0.00046 |
| 107 | + mean_intercept: -0.0013 |
85 | 108 | ```
|
0 commit comments