Использование 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-ros
docker, который доступен здесь: https://hub.docker.com/r/dexai2/drake-torch/tags
Кроме того, в зависимости от того, какую версию Ubuntu вы используете, вам может потребоваться изменить версию gcc - например, вам нужно
gcc-9
и
g++-9
указано в
CMakeLists.txt
для Ubuntu 20.04 и
gcc-7
и
g++-7
18.04. См. Примечания здесь: https://drake.mit.edu/developers.html#id10