Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion include/configwidget.h
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,8 @@ class ConfigWidget : public VarTreeView
DEF_FIELD_VALUE(double,Double,Field_Penalty_Width)
DEF_FIELD_VALUE(double,Double,Field_Penalty_Depth)
DEF_FIELD_VALUE(double,Double,Field_Penalty_Point)
DEF_FIELD_VALUE(double,Double,Field_Margin)
DEF_FIELD_VALUE(double,Double,Field_Margin_Touch_Line)
DEF_FIELD_VALUE(double,Double,Field_Margin_Goal_Line)
DEF_FIELD_VALUE(double,Double,Field_Referee_Margin)
DEF_FIELD_VALUE(double,Double,Wall_Thickness)
DEF_FIELD_VALUE(double,Double,Goal_Thickness)
Expand Down
6 changes: 4 additions & 2 deletions src/configwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,8 @@ ConfigWidget::ConfigWidget() {
ADD_VALUE(div_a_vars, Double, DivA_Field_Penalty_Width,3.60,"Penalty width")
ADD_VALUE(div_a_vars, Double, DivA_Field_Penalty_Depth,1.80,"Penalty depth")
ADD_VALUE(div_a_vars, Double, DivA_Field_Penalty_Point,8.00,"Penalty point")
ADD_VALUE(div_a_vars, Double, DivA_Field_Margin,0.3,"Margin")
ADD_VALUE(div_a_vars, Double, DivA_Field_Margin_Touch_Line,0.3,"Margin along the touch lines")
ADD_VALUE(div_a_vars, Double, DivA_Field_Margin_Goal_Line,0.6,"Margin behind the goal lines")
ADD_VALUE(div_a_vars, Double, DivA_Field_Referee_Margin,0.0,"Referee margin")
ADD_VALUE(div_a_vars, Double, DivA_Wall_Thickness,0.050,"Wall thickness")
ADD_VALUE(div_a_vars, Double, DivA_Goal_Thickness,0.020,"Goal thickness")
Expand All @@ -80,7 +81,8 @@ ConfigWidget::ConfigWidget() {
ADD_VALUE(div_b_vars, Double, DivB_Field_Penalty_Width,2.00,"Penalty width")
ADD_VALUE(div_b_vars, Double, DivB_Field_Penalty_Depth,1.0,"Penalty depth")
ADD_VALUE(div_b_vars, Double, DivB_Field_Penalty_Point,6.00,"Penalty point")
ADD_VALUE(div_b_vars, Double, DivB_Field_Margin,0.30,"Margin")
ADD_VALUE(div_a_vars, Double, DivB_Field_Margin_Touch_Line,0.3,"Margin along the touch lines")
ADD_VALUE(div_a_vars, Double, DivB_Field_Margin_Goal_Line,0.3,"Margin behind the goal lines")
Comment thread
g3force marked this conversation as resolved.
Outdated
ADD_VALUE(div_b_vars, Double, DivB_Field_Referee_Margin,0.0,"Referee margin")
ADD_VALUE(div_b_vars, Double, DivB_Wall_Thickness,0.050,"Wall thickness")
ADD_VALUE(div_b_vars, Double, DivB_Goal_Thickness,0.020,"Goal thickness")
Expand Down
8 changes: 4 additions & 4 deletions src/glwidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -415,17 +415,17 @@ void GLWidget::changeCameraMode()
cammode = static_cast<CameraMode>(static_cast<int>(cammode)%(static_cast<int>(CameraMode::MAX_ACTIVE_MODE_FOR_CHANGEMODE)+1));

if (cammode==CameraMode::BIRDS_EYE_FROM_TOUCH_LINE)
ssl->g->setViewpoint(0,-(cfg->Field_Width()+cfg->Field_Margin()*2.0f)/2.0f,3,90,-45,0);
ssl->g->setViewpoint(0,-(cfg->Field_Width()+cfg->Field_Margin_Touch_Line()*2.0f)/2.0f,3,90,-45,0);
else if (cammode==CameraMode::CURRENT_ROBOT_VIEW)
ssl->g->getViewpoint(xyz,hpr);
else if (cammode==CameraMode::TOP_VIEW)
ssl->g->setViewpoint(0,0,5,0,-90,0);
else if (cammode==CameraMode::BIRDS_EYE_FROM_OPPOSITE_TOUCH_LINE)
ssl->g->setViewpoint(0, (cfg->Field_Width()+cfg->Field_Margin()*2.0f)/2.0f,3,270,-45,0);
ssl->g->setViewpoint(0, (cfg->Field_Width()+cfg->Field_Margin_Touch_Line()*2.0f)/2.0f,3,270,-45,0);
else if (cammode==CameraMode::BIRDS_EYE_FROM_BLUE)
ssl->g->setViewpoint(-(cfg->Field_Length()+cfg->Field_Margin()*2.0f)/2.0f,0,3,0,-45,0);
ssl->g->setViewpoint(-(cfg->Field_Length()+cfg->Field_Margin_Goal_Line()*2.0f)/2.0f,0,3,0,-45,0);
else if (cammode==CameraMode::BIRDS_EYE_FROM_YELLOW)
ssl->g->setViewpoint((cfg->Field_Length()+cfg->Field_Margin()*2.0f)/2.0f,0,3,180,-45,0);
ssl->g->setViewpoint((cfg->Field_Length()+cfg->Field_Margin_Goal_Line()*2.0f)/2.0f,0,3,180,-45,0);
}

void GLWidget::putBall(dReal x,dReal y)
Expand Down
6 changes: 4 additions & 2 deletions src/mainwindow.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -234,7 +234,8 @@ MainWindow::MainWindow(QWidget *parent)
QObject::connect(configwidget->v_DivA_Field_Penalty_Width.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Field_Penalty_Depth.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Field_Penalty_Point.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Field_Margin.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Field_Margin_Touch_Line.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Field_Margin_Goal_Line.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Field_Referee_Margin.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Wall_Thickness.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivA_Goal_Thickness.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
Expand All @@ -250,7 +251,8 @@ MainWindow::MainWindow(QWidget *parent)
QObject::connect(configwidget->v_DivB_Field_Penalty_Width.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Field_Penalty_Depth.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Field_Penalty_Point.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Field_Margin.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Field_Margin_Touch_Line.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Field_Margin_Goal_Line.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Field_Referee_Margin.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Wall_Thickness.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
QObject::connect(configwidget->v_DivB_Goal_Thickness.get(), SIGNAL(wasEdited(VarPtr)), this, SLOT(restartSimulator()));
Expand Down
43 changes: 32 additions & 11 deletions src/sslworld.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ SSLWorld::SSLWorld(QGLWidget* parent, ConfigWidget* _cfg, RobotsFormation *form1
last_dt = -1;
g = new CGraphics(parent);
g->setSphereQuality(1);
g->setViewpoint(0,-(cfg->Field_Width()+cfg->Field_Margin()*2.0f)/2.0f,3,90,-45,0);
g->setViewpoint(0,-(cfg->Field_Width()+cfg->Field_Margin_Touch_Line()*2.0f)/2.0f,3,90,-45,0);
p = new PWorld(0.05,9.81f,g,cfg->Robots_Count());
ball = new PBall (0,0,0.5,cfg->BallRadius(),cfg->BallMass(), 1,0.7,0);

Expand All @@ -157,15 +157,22 @@ SSLWorld::SSLWorld(QGLWidget* parent, ConfigWidget* _cfg, RobotsFormation *form1
// Bounding walls

const double thick = cfg->Wall_Thickness();
const double increment = cfg->Field_Margin() + cfg->Field_Referee_Margin() + thick / 2;
const double pos_x = cfg->Field_Length() / 2.0 + increment;
const double pos_y = cfg->Field_Width() / 2.0 + increment;
const double increment_x = cfg->Field_Margin_Goal_Line() + cfg->Field_Referee_Margin() + thick / 2;
const double increment_y = cfg->Field_Margin_Touch_Line() + cfg->Field_Referee_Margin() + thick / 2;
const double pos_x = cfg->Field_Length() / 2.0 + increment_x;
const double pos_y = cfg->Field_Width() / 2.0 + increment_y;
const double pos_z = 0.0;
const double siz_x = 2.0 * pos_x;
const double siz_y = 2.0 * pos_y;
const double siz_z = 0.4;
const double tone = 1.0;

// Bounding walls placement
// |-----[0]----
// | |
// [3] [2]
// | |
// -----[1]----|
walls[0] = new PFixedBox(thick/2, pos_y, pos_z,
siz_x, thick, siz_z,
tone, tone, tone);
Expand All @@ -182,17 +189,24 @@ SSLWorld::SSLWorld(QGLWidget* parent, ConfigWidget* _cfg, RobotsFormation *form1
thick, siz_y, siz_z,
tone, tone, tone);

// Goal walls
// Goal walls, side walls extend to the outside wall

const double gthick = cfg->Goal_Thickness();
const double gpos_x = (cfg->Field_Length() + gthick) / 2.0 + cfg->Goal_Depth();
const double gpos_y = (cfg->Goal_Width() + gthick) / 2.0;
const double gpos_z = cfg->Goal_Height() / 2.0;
const double gsiz_x = cfg->Goal_Depth() + gthick;
const double gsiz_x = cfg->Field_Margin_Goal_Line();
const double gsiz_y = cfg->Goal_Width();
const double gsiz_z = cfg->Goal_Height();
const double gpos2_x = (cfg->Field_Length() + gsiz_x) / 2.0;

const double gpos2_x = (cfg->Field_Length() + cfg->Field_Margin_Goal_Line() + cfg->Field_Line_Width()) / 2.0;
Comment thread
g3force marked this conversation as resolved.
Outdated

// Yellow side
// (margin) │
// ─[6]┬────│
// │ │
// [4] │ outside of wall
Comment thread
g3force marked this conversation as resolved.
// │ │
// ─[5]┴────|
walls[4] = new PFixedBox(gpos_x, 0.0, gpos_z,
gthick, gsiz_y, gsiz_z,
tone, tone, tone);
Expand All @@ -205,6 +219,13 @@ SSLWorld::SSLWorld(QGLWidget* parent, ConfigWidget* _cfg, RobotsFormation *form1
gsiz_x, gthick, gsiz_z,
tone, tone, tone);

// Blue side
// │(margin)
// │────┬[9]─
// │ │
// outside of wall │ [7]
// │ │
Comment thread
g3force marked this conversation as resolved.
// |────┴[8]─
walls[7] = new PFixedBox(-gpos_x, 0.0, gpos_z,
gthick, gsiz_y, gsiz_z,
tone, tone, tone);
Expand Down Expand Up @@ -1011,7 +1032,7 @@ SSL_WrapperPacket* SSLWorld::generatePacket(int cam_id) {
// Field general info
field->set_field_length(CONVUNIT(cfg->Field_Length()));
field->set_field_width(CONVUNIT(cfg->Field_Width()));
field->set_boundary_width(CONVUNIT(cfg->Field_Margin()));
field->set_boundary_width(CONVUNIT(cfg->Field_Margin_Touch_Line()));
Comment thread
g3force marked this conversation as resolved.
field->set_goal_width(CONVUNIT(cfg->Goal_Width()));
field->set_goal_depth(CONVUNIT(cfg->Goal_Depth()));

Expand Down Expand Up @@ -1204,7 +1225,7 @@ void RobotsFormation::setAll(const dReal* xx, const dReal *yy)
RobotsFormation::RobotsFormation(E_FORMATION type, ConfigWidget* _cfg) : cfg(_cfg) {
switch (type) {
case FORMATION_OUTSIDE: {
double yv = -(_cfg->Field_Width() / 2 + _cfg->Field_Margin() / 2);
double yv = -(_cfg->Field_Width() / 2 + _cfg->Field_Margin_Touch_Line() / 2);
dReal teamPosX[MAX_ROBOT_COUNT] = {0.40, 0.80, 1.20, 1.60, 2.00, 2.40,
2.80, 3.20, 3.60, 4.00, 4.40, 4.80,
0.40, 0.80, 1.20, 1.60};
Expand Down Expand Up @@ -1233,7 +1254,7 @@ RobotsFormation::RobotsFormation(E_FORMATION type, ConfigWidget* _cfg) : cfg(_cf
break;
}
case FORMATION_OUTSIDE_FIELD: {
double yv = -(_cfg->Field_Width() / 2 + _cfg->Field_Margin() + _cfg->Field_Referee_Margin() + 0.5);
double yv = -(_cfg->Field_Width() / 2 + _cfg->Field_Margin_Touch_Line() + _cfg->Field_Referee_Margin() + 0.5);
dReal teamPosX[MAX_ROBOT_COUNT] = { 0.40, 0.80, 1.20, 1.60, 2.00, 2.40,
2.80, 3.20, 3.60, 4.00, 4.40, 4.80,
0.40, 0.80, 1.20, 1.60};
Expand Down
Loading