Использование OMPL с Drake

Я пытаюсь работать с ompl на drake, и у меня возникают проблемы с использованием заголовков ompl в drake. Я установил ompl, используя путь установки по умолчанию, и внес следующие изменения в drake:

В рабочую область добавлено следующее:

new_local_repository(
    name = "ompl",
    path = "/usr/local/include/ompl-1.5/ompl",
    build_file = "ompl.BUILD",
)

ompl.BUILD:

cc_library(
    name = "ompl",
    hdrs = glob(["**"]),
    includes = ["include"],
    visibility = ["//visibility:public"], 
    linkstatic = 1,
)

В моем репозитории BUILD.bazel:

drake_cc_binary(
    name = "ompl_ex",
    srcs = ["src/ompl_ex.cc"],
    data = [],
    test_rule_args = ["--target_realtime_rate=0.0"],
    deps = [
        "@gflags",
        "@ompl//:ompl",
    ],
)

ompl_ex.cc

#include <memory>

#include <limits.h>
#include <unistd.h>
#include <fstream>
#include <string>
#include <gflags/gflags.h>
#include <iostream>

#include <ompl/config.h>
#include <vector>

namespace drake {
namespace ompl {

int DoMain(){
    std::cout<<"the function is working"<<std::endl;
    return 0;
}

}  // namespace examples
}  // namespace drake

int main(int argc, char* argv[]) {
  gflags::ParseCommandLineFlags(&argc, &argv, true);
  return drake::ompl::DoMain();
}

Я получаю ошибку:

infinite_horizon_ltl/src/ompl_ex.cc:10:10: fatal error: ompl/config.h: No such file or directory
 #include <ompl/config.h>

Я использую точечные библиотеки аналогичным образом, и, похоже, они работают нормально. Не уверен, что я ошибаюсь в случае OMPL. Я проверил проблемы с drakes git и обнаружил, что была попытка интеграции, но ветка сейчас удалена, а предложенное решение, похоже, не работает в моей системе.

1 ответ

Я обнаружил, что проще всего работать с drake как внешняя библиотека в cmakeпроект. Это хорошо работает с ompl. Вот быстрый пример, который импортирует оба drake и ompl как внешние библиотеки и решает простую задачу планирования.

https://github.com/DexaiRobotics/drake-torch/tree/master/examples/drake-ompl

Вывод и видео были сделаны с использованием dexai2/drake-torch/cpu-nightly-rosdocker, который доступен здесь: https://hub.docker.com/r/dexai2/drake-torch/tags

Кроме того, в зависимости от того, какую версию Ubuntu вы используете, вам может потребоваться изменить версию gcc - например, вам нужно gcc-9 и g++-9 указано в CMakeLists.txt для Ubuntu 20.04 и gcc-7 и g++-718.04. См. Примечания здесь: https://drake.mit.edu/developers.html#id10

Другие вопросы по тегам