| 51 | } |
| 52 | |
| 53 | PYBIND11_MODULE(map_closures_pybind, m) { |
| 54 | auto vector3dvector = pybind_eigen_vector_of_vector<Eigen::Vector3d>( |
| 55 | m, "_Vector3dVector", "std::vector<Eigen::Vector3d>", |
| 56 | py::py_array_to_vectors_double<Eigen::Vector3d>); |
| 57 | |
| 58 | py::class_<ClosureCandidate> closure_candidate(m, "_ClosureCandidate"); |
| 59 | closure_candidate.def(py::init<>()) |
| 60 | .def_readwrite("source_id", &ClosureCandidate::source_id) |
| 61 | .def_readwrite("target_id", &ClosureCandidate::target_id) |
| 62 | .def_readwrite("pose", &ClosureCandidate::pose) |
| 63 | .def_readwrite("number_of_inliers", &ClosureCandidate::number_of_inliers); |
| 64 | |
| 65 | py::class_<MapClosures, std::shared_ptr<MapClosures>> map_closures(m, "_MapClosures", ""); |
| 66 | map_closures |
| 67 | .def(py::init([](const py::dict &cfg) { |
| 68 | auto config = GetConfigFromYAML(cfg); |
| 69 | return std::make_shared<MapClosures>(config); |
| 70 | }), |
| 71 | "config"_a) |
| 72 | .def("_getDensityMapFromId", |
| 73 | [](MapClosures &self, const int &map_id) { |
| 74 | const auto &density_map = self.getDensityMapFromId(map_id); |
| 75 | Eigen::MatrixXf density_map_eigen; |
| 76 | cv::cv2eigen(density_map.grid, density_map_eigen); |
| 77 | return density_map_eigen; |
| 78 | }) |
| 79 | .def("_getGroundAlignmentFromId", &MapClosures::getGroundAlignmentFromId, "map_id"_a) |
| 80 | .def("_GetBestClosure", &MapClosures::GetBestClosure, "query_id"_a, "local_map"_a) |
| 81 | .def("_GetTopKClosures", &MapClosures::GetTopKClosures, "query_id"_a, "local_map"_a, "k"_a) |
| 82 | .def("_GetClosures", &MapClosures::GetClosures, "query_id"_a, "local_map"_a) |
| 83 | .def("_SaveHbstDatabase", &MapClosures::SaveHbstDatabase, "database_path"_a); |
| 84 | |
| 85 | py::class_<VoxelMap> internal_map(m, "_VoxelMap", "Don't use this"); |
| 86 | internal_map.def(py::init<double, double>(), "voxel_size"_a, "max_distance"_a) |
| 87 | .def("_clear", &VoxelMap::Clear) |
| 88 | .def("_num_voxels", &VoxelMap::NumVoxels) |
| 89 | .def("_add_points", &VoxelMap::AddPoints, "points"_a) |
| 90 | .def("_integrate_frame", &VoxelMap::IntegrateFrame, "points"_a, "pose"_a) |
| 91 | .def("_point_cloud", &VoxelMap::Pointcloud) |
| 92 | .def("_per_voxel_mean_and_normal", &VoxelMap::PerVoxelMeanAndNormal) |
| 93 | .def("_remove_far_away_points", &VoxelMap::RemovePointsFarFromLocation, "origin"_a); |
| 94 | } |
| 95 | } // namespace map_closures |
nothing calls this directly
no test coverage detected