1 #ifndef JSK_FOOTSTEP_PLANNER_GRID_GRAPH_H_ 2 #define JSK_FOOTSTEP_PLANNER_GRID_GRAPH_H_ 9 template <
class GStateT>
24 inline virtual StatePtr
getState(
int ix,
int iy)
28 inline virtual bool setCost(std::vector<float> in)
31 for(
int i = 0; i < cnt; i++) {
35 inline virtual bool setCost(
int ix,
int iy,
float cost = 0.0)
37 return getState(ix, iy)->setCost(cost);
42 for(
int i = 0; i < cnt; i++) {
46 inline virtual bool setOccupancy(
int ix,
int iy,
int occupancy = 0)
48 return getState(ix, iy)->setOccupancy(occupancy);
52 return getState(ix, iy)->getOccupancy();
54 inline virtual float getCost(
int ix,
int iy)
58 inline virtual bool isValid(
int ix,
int iy)
65 inline virtual int index(
int ix,
int iy) {
return ((
size_x_ * iy) + ix); }
66 inline virtual int inRange(
int ix,
int iy) {
return (ix >= 0 && ix < size_x_ && iy >= 0 && iy <
size_y_ ); }
83 template <
class GStateT>
99 if(gridmap_->inRange(ix, iy)) {
100 return gridmap_->getState(ix, iy);
109 std::vector<StatePtr> ret;
110 int x_offset = target_state->indexX();
111 int y_offset = target_state->indexY();
112 for (
int x = -1;
x < 2;
x++) {
113 for (
int y = -1;
y < 2;
y++) {
114 if (
x != 0 ||
y != 0) {
129 return (state == goal_state_);
135 double gx = from->indexX() - to->indexX();
136 double gy = from->indexY() - to->indexY();
137 return prev_cost + std::sqrt(gx * gx + gy * gy) + to->getCost();