Get the SoR Robotics Android App on Android Market for FREE. See this forum post for details.
0 Members and 1 Guest are viewing this topic.
Clearly what you mention doesn't make sense.
and don't mark the cell as fully blocked until you get N positive confirmations that it's blocked
You can either clear the whole stored array of "blocked" cells before you update
you can build in a "clear any point not written this cycle" into your sub-function, or you can use a "forgetting factor" where you decrement the values of each cell over time as JWatte suggests.
Each time you take a reading, you update the value for all the tiles that the measurement spans.The data for tiles between the robot and the detected blocker is "0" and the data for the tile that the block is detected into is "1."So, run measurement, update tiles, repeat forever.
First, if the robot is 1x1 meter, using a smaller grid than about 25x25 cm is a total waste of RAM, and a 50x50 cm cell size is probably more reasonable.
Second, you can use a hash grid rather than a dense array, just like I suggested above.
Third, the self-driving cars use high-capacity computers similar to those used for servers in data centers; RAM for the area you can reasonably cover with scanning is not a problem there.
Fourth, more modern approaches to SLAM create and track estimates of "blockers" and "objects" rather than using an "occupancy grid." "objects" are discovered and estimated using sensor fusion, rather than single discrete measurements.
First, with the Markov update that you suggest, the update of a cell would be incremental, not forcing it to 1.And, if that cell would become unblocked, then further sweeps across that cell would pass through that cell, and start marking the cell as unoccupied.This is why I explicitly suggested you update *all cells* that a sweep goes through (in a line) with the first N-1 cells being updated as "unoccupied" and the last cell updated as "occupied.""Update" probably means re-evaluate the Markov estimation, rather than just slamming the value to 1/0.
the path will be a list of cells
Storing the safety margin in the grid is less optimal because it doesn't allow you to run different kinds of searches on the same grid