I understand that inscribed_radius of a robot is calculated solely based on the robot footprint.

You are absolutly right the `inscribed_radius`

is calculated in the function `calculateMinAndMaxDistances`

that you linked. The part about the `inscribed_radius`

initialized at `0.1`

is correct too but it's just in order to have a default value in case you don't call `calculateMinAndMaxDistances`

.

then inscribed_radius will be minimum of itself and the footprint calculation

You've missed something in the function , the first instruction is :

```
min_dist = std::numeric_limits<double>::max();
```

So the inscribed_radius isn't equal to `0.1`

anymore (`std::numeric_limits<double>::max()`

returns `DBL_MAX`

which is the maximum possible value for a `double`

: `1.79769e+308`

, check here for more details). It's set to this value in order to make sure that when you call :

```
min_dist = std::min(min_dist, std::min(vertex_dist, edge_dist));
```

`min_dist`

can only be equal to `std::min(vertex_dist, edge_dist)`

(or `DBL_MAX`

), since `vertex_dist`

and `edge_dist`

are calculated from the footprint the `inscribed_radius`

changes according to the footprint.

This is consistent with what I have seen in my testing as well

You might not have changed the footprint (or just a little bit) when testing this, I tried with a circular footprint and I got these results :

```
robot_radius = 0.14 >> inscribed_radius = 0.13731
robot_radius = 1.14 >> inscribed_radius = 1.1181
```