MCPcopy Create free account
hub / github.com/Robotics-STAR-Lab/RACER / getCostMatrix

Method getCostMatrix

swarm_exploration/active_perception/src/hgrid.cpp:277–338  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

275}
276
277void HGrid::getCostMatrix(const vector<Eigen::Vector3d>& positions,
278 const vector<Eigen::Vector3d>& velocities, const vector<vector<int>>& first_ids,
279 const vector<vector<int>>& second_ids, const vector<int>& grid_ids, Eigen::MatrixXd& mat) {
280 // first_ids and second_ids are drone_num x 1-4 vectors
281
282 // Fill the cost matrix
283 const int drone_num = positions.size();
284 const int grid_num = grid_ids.size();
285 const int dimen = 1 + drone_num + grid_num;
286 mat = Eigen::MatrixXd::Zero(dimen, dimen);
287
288 // std::cout << "First id: ";
289 // for (auto ids : first_ids)
290 // for (auto id : ids)
291 // std::cout << id << ", ";
292 // std::cout << "" << std::endl;
293
294 // std::cout << "Second id: ";
295 // for (auto ids : second_ids)
296 // for (auto id : ids)
297 // std::cout << id << ", ";
298 // std::cout << "" << std::endl;
299
300 // Virtual depot to drones
301 for (int i = 0; i < drone_num; ++i) {
302 mat(0, 1 + i) = -1000;
303 mat(1 + i, 0) = 1000;
304 }
305 // Virtual depot to grid
306 for (int i = 0; i < grid_num; ++i) {
307 mat(0, 1 + drone_num + i) = 1000;
308 mat(1 + drone_num + i, 0) = 0;
309 }
310 // Costs between drones
311 for (int i = 0; i < drone_num; ++i) {
312 for (int j = 0; j < drone_num; ++j) {
313 mat(1 + i, 1 + j) = 10000;
314 }
315 }
316
317 // Costs from drones to grid
318 for (int i = 0; i < drone_num; ++i) {
319 for (int j = 0; j < grid_num; ++j) {
320 double cost = getCostDroneToGrid(positions[i], grid_ids[j], first_ids[i]);
321 mat(1 + i, 1 + drone_num + j) = cost;
322 mat(1 + drone_num + j, 1 + i) = 0;
323 }
324 }
325 // Costs between grid
326 for (int i = 0; i < grid_num; ++i) {
327 for (int j = i + 1; j < grid_num; ++j) {
328 double cost = getCostGridToGrid(grid_ids[i], grid_ids[j], first_ids, second_ids, drone_num);
329 mat(1 + drone_num + i, 1 + drone_num + j) = cost;
330 mat(1 + drone_num + j, 1 + drone_num + i) = cost;
331 }
332 }
333
334 // Diag

Callers 2

allocateGridsMethod · 0.45
findGlobalTourOfGridMethod · 0.45

Calls 1

sizeMethod · 0.45

Tested by

no test coverage detected