The mapping package handles importing the pointcloud generated by the iPhone/iPad mapping app and flattening it to an occupancy grid.
The mapping.launch
launch files launches 2 ROS nodes
Accepts a .ply
file generated by the mapping app and publishes the associated pointcloud to the /cloud topic.
Listens to the pointcloud published by point_cloud_io and flattens it down to a 2D occupancy grid. Requires the transform from the /map frame to the /cloud frame to be defined.
We opted to use octomap package because it was the easiest to implement. However, this is definitely not the best package to use. This is because it treats the point_cloud as a laser scan. Therefore, it marks all of the grid cells between the robot and the pointcloud points as free, even though they may not be. Consequently, the package also requires the transform from the /map to /base_link frame to be defined. This is a problem because the localization package requires the map to be published because it can publish the robot pose. This circular dependency makes it difficult to start the autonomous software.
- Unity uses a left-hand coordinate frame, which is not convention in ROS. Therefore, the pointcloud in the
ply
file is upside down. The coordinate frame needs to be changed to right-hand. - As mentioned previously,
octomap_server
needs to be replaced.grid_map
may be an effective alternative.