Skip to content

Commit 0783762

Browse files
authored
Merge branch 'main' into direct_optimizer_python
2 parents 6b6b9ff + a8bdcc1 commit 0783762

File tree

3 files changed

+25
-5
lines changed

3 files changed

+25
-5
lines changed

mjpc/tasks/cube/solve.cc

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,11 @@ void CubeSolve::ResidualFn::Residual(const mjModel* model, const mjData* data,
115115
mju_copy(residual + counter, data->qvel + 97, 24);
116116
counter += 24;
117117

118+
// ---------- Residual (6) ----------
119+
residual[counter++] =
120+
goal_index_ * 12; // each face has ~12 cost to unscramble based on
121+
// current weights, settings, etc.
122+
118123
// sensor dim sanity check
119124
CheckSensorDim(model, counter);
120125
}
@@ -215,6 +220,11 @@ void CubeSolve::TransitionLocked(mjModel* model, mjData* data) {
215220
mju_zero(data->qvel, 6);
216221
}
217222

223+
// check goal index
224+
if (residual_.goal_index_ != goal_index_) {
225+
residual_.goal_index_ = goal_index_;
226+
}
227+
218228
// check for mode change
219229
if (residual_.current_mode_ != mode) {
220230
// update mode for residual

mjpc/tasks/cube/solve.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,14 +32,18 @@ class CubeSolve : public Task {
3232

3333
class ResidualFn : public BaseResidualFn {
3434
public:
35-
explicit ResidualFn(const CubeSolve* task, int current_mode = 0)
36-
: BaseResidualFn(task), current_mode_(current_mode) {}
35+
explicit ResidualFn(const CubeSolve* task, int current_mode = 0,
36+
int goal_index = 0)
37+
: BaseResidualFn(task),
38+
current_mode_(current_mode),
39+
goal_index_(goal_index) {}
3740
void Residual(const mjModel* model, const mjData* data,
3841
double* residual) const override;
3942

4043
private:
4144
friend class CubeSolve;
4245
int current_mode_ = 0;
46+
int goal_index_ = 0;
4347
};
4448

4549
CubeSolve();
@@ -57,7 +61,8 @@ class CubeSolve : public Task {
5761

5862
protected:
5963
std::unique_ptr<mjpc::ResidualFn> ResidualLocked() const override {
60-
return std::make_unique<ResidualFn>(this, residual_.current_mode_);
64+
return std::make_unique<ResidualFn>(this, residual_.current_mode_,
65+
residual_.goal_index_);
6166
}
6267
ResidualFn* InternalResidual() override { return &residual_; }
6368

mjpc/tasks/cube/task.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
<mujoco model="Cube Solving Manipulation">
22
<include file="../common.xml"/>
33

4+
<statistic extent="0.4" center="0.3 0.1 0"/>
45
<size memory="1M"/>
56

67
<custom>
8+
<!-- agent/planner settings -->
79
<numeric name="agent_planner" data="0" />
810
<numeric name="agent_horizon" data="0.25" />
911
<numeric name="agent_timestep" data="0.01" />
@@ -12,19 +14,19 @@
1214
<numeric name="sampling_exploration" data="0.1" />
1315
<numeric name="sampling_trajectories" data="20" />
1416
<numeric name="sampling_representation" data="0" />
17+
<!-- manual face goals -->
1518
<numeric name="residual_Red" data="0 -3.14 3.14"/>
1619
<numeric name="residual_Orange" data="0 -3.14 3.14"/>
1720
<numeric name="residual_Blue" data="0 -3.14 3.14"/>
1821
<numeric name="residual_Green" data="0 -3.14 3.14"/>
1922
<numeric name="residual_White" data="0 -3.14 3.14"/>
2023
<numeric name="residual_Yellow" data="0 -3.14 3.14"/>
24+
<!-- GUI elements -->
2125
<text name="task_transition" data="Scramble|Solve|Wait|Manual"/>
2226
<numeric name="residual_select_Scramble" data="3"/>
2327
<text name="residual_list_Scramble" data="1|2|3|4|5|6|7|8|9|10"/>
2428
</custom>
2529

26-
<statistic extent="0.4" center="0.3 0.1 0"/>
27-
2830
<visual>
2931
<quality shadowsize="8192"/>
3032
<global azimuth="180" elevation="-30"/>
@@ -45,6 +47,7 @@
4547
</worldbody>
4648

4749
<sensor>
50+
<!-- cost terms -->
4851
<user name="In Hand" dim="3" user="1 50 0 100 0.02 2"/>
4952
<user name="Orientation" dim="3" user="0 0 0 10" />
5053
<user name="Cube Vel." dim="3" user="0 2.5 0 20" />
@@ -57,6 +60,8 @@
5760
<user name="Yellow" dim="1" user="0 10.0 0.0 25.0"/>
5861
<user name="Grasp" dim="24" user="0 1.0 0.0 10.0" />
5962
<user name="Joint Vel." dim="24" user="0 0.0 0.0 1.0e-1" />
63+
<user name="Remaining" dim="1" user="-1 1.0 0.0 1.0" />
64+
<!-- sensors -->
6065
<framepos name="palm_position" objtype="site" objname="grasp_site"/>
6166
<framequat name="cube_goal_orientation" objtype="body" objname="goal"/>
6267
</sensor>

0 commit comments

Comments
 (0)