diff --git a/.bazelrc b/.bazelrc index a84a73227e2..b668bb5f378 100644 --- a/.bazelrc +++ b/.bazelrc @@ -2,3 +2,5 @@ # as recommended in https://github.com/bazelbuild/bazel/issues/6319 try-import %workspace%/tools/bazel.rc try-import %workspace%/.apollo.bazelrc + +# build --remote_cache="http://localhost:8080/ diff --git a/.clang-format b/.clang-format index 29f7e487b96..8621a6b3b0a 100644 --- a/.clang-format +++ b/.clang-format @@ -10,7 +10,7 @@ IncludeCategories: # Note that the "main" header is priority 0 # The priority is assigned to first match in the ordered list # Miscelaneous system libraries - - Regex: '<(immintrin.h|malloc.h|wait.h|x86intrin.h|cuda.*)>' + - Regex: '<(cxxabi.h|immintrin.h|malloc.h|wait.h|x86intrin.h|cuda.*)>' Priority: 3 # third-party libraries - Regex: '<(tinyxml2.h)>' diff --git a/cyber/BUILD b/cyber/BUILD index 889fb315a08..0f6d9012b1e 100755 --- a/cyber/BUILD +++ b/cyber/BUILD @@ -1,230 +1,64 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "cyber", - linkstatic = False, - deps = [ - ":cyber_core", - ], -) - -# install( -# name = "install", -# data = [ -# ":.release.bash", -# ":cyber_conf", -# #"//cyber/python/cyber_py3:runtime_files", -# "//cyber/proto:runtime_files", -# ":cyberfile.xml", -# "cyber.BUILD", -# ], -# data_dest = "cyber", -# library_dest = "cyber/lib", -# rename = { -# "cyber/.release.bash": "setup.bash", -# #"cyber/python/cyber_py3/cyber_py3.BUILD": "BUILD", -# "cyber/proto/py_pb2.BUILD": "BUILD", -# }, -# targets = [ -# ":libcyber_core.so", -# ], -# deps = [ -# "//cyber/mainboard:install", -# "//cyber/plugin_manager:install", -# "//cyber/proto:cyber_proto_hdrs", -# "//cyber/proto:cyber_proto_so", -# "//cyber/proto:pb_cyber", -# "//cyber/python/cyber_py3:cyber_python_library", -# "//cyber/python/internal:install", -# "//cyber/tools:install", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_cyber_hdrs", -# ":install_cyber_src", -# ], -# ) - -# install_src_files( -# name = "install_cyber_src", -# dest = "cyber/src", -# filter = "*", -# src_dir = ["."], -# ) - -# install_src_files( -# name = "install_cyber_hdrs", -# dest = "cyber/include", -# filter = "*.h", -# src_dir = ["."], -# ) - -cc_library( - name = "binary", - srcs = ["binary.cc"], - hdrs = ["binary.h"], +apollo_cc_library( + name = "cyber_binary", + srcs = ["binary.cc",], + hdrs = ["binary.h",], ) -cc_library( - name = "state", - srcs = ["state.cc"], - hdrs = ["state.h"], - deps = [ - "//cyber/common", - ], +apollo_cc_library( + name = "cyber_state", + srcs = ["state.cc",], + hdrs = ["state.h",], + deps = ["//cyber/common:cyber_common",], ) -cc_library( - name = "init", - srcs = ["init.cc"], - hdrs = ["init.h"], - deps = [ - "//cyber:binary", - "//cyber:state", - "//cyber/common:file", - "//cyber/logger:async_logger", - "//cyber/node", - "//cyber/proto:clock_cc_proto", - "//cyber/sysmo", - "//cyber/time:clock", - "//cyber/timer:timing_wheel", - ], - alwayslink = True, -) - -cc_binary( - name = "libcyber_core.so", - srcs = glob([ +apollo_cc_library( + name = "cyber", + srcs = [ "cyber.cc", + "init.cc", + ], + hdrs = [ "cyber.h", - ]), - linkopts = ["-lrt"], - linkshared = True, - linkstatic = True, - visibility = ["//visibility:public"], - deps = [ - "//cyber:binary", - "//cyber:init", - "//cyber:state", - "//cyber/base", - "//cyber/blocker:blocker_manager", - "//cyber/class_loader", - "//cyber/class_loader:class_loader_manager", - "//cyber/common", - "//cyber/component", - "//cyber/component:timer_component", - "//cyber/croutine", - "//cyber/data", - "//cyber/event:perf_event_cache", - "//cyber/io", - "//cyber/logger", - "//cyber/logger:async_logger", - "//cyber/message:message_traits", - "//cyber/message:protobuf_traits", - "//cyber/message:py_message_traits", - "//cyber/message:raw_message_traits", - "//cyber/node", - "//cyber/parameter:parameter_client", - "//cyber/parameter:parameter_server", - "//cyber/plugin_manager", - "//cyber/profiler", - "//cyber/proto:run_mode_conf_cc_proto", - "//cyber/record", - "//cyber/scheduler", - "//cyber/scheduler:scheduler_factory", - "//cyber/service", - "//cyber/service:client", - "//cyber/service_discovery:topology_manager", - "//cyber/sysmo", - "//cyber/task", - "//cyber/time", - "//cyber/time:clock", - "//cyber/time:duration", - "//cyber/time:rate", - "//cyber/timer", - "//cyber/transport", - "//cyber/transport/rtps:participant", - "//cyber/transport/rtps:sub_listener", - "@com_github_google_glog//:glog", - "@com_google_protobuf//:protobuf", - "@fastrtps", + "init.h", ], -) - -cc_library( - name = "cyber_core", - srcs = ["libcyber_core.so"], - hdrs = ["cyber.h"], includes = ["."], linkopts = ["-lrt"], visibility = ["//visibility:public"], deps = [ - "//cyber:binary", - "//cyber:init", - "//cyber:state", - "//cyber/base", - "//cyber/blocker:blocker_manager", - "//cyber/class_loader", - "//cyber/class_loader:class_loader_manager", - "//cyber/common", - "//cyber/component", - "//cyber/component:timer_component", - "//cyber/croutine", - "//cyber/data", - "//cyber/event:perf_event_cache", - "//cyber/io", - "//cyber/logger", - "//cyber/logger:async_logger", - "//cyber/message:message_traits", - "//cyber/message:protobuf_traits", - "//cyber/message:py_message_traits", - "//cyber/message:raw_message_traits", - "//cyber/node", - "//cyber/parameter:parameter_client", - "//cyber/parameter:parameter_server", - "//cyber/plugin_manager", - "//cyber/profiler", - "//cyber/proto:choreography_conf_cc_proto", - "//cyber/proto:classic_conf_cc_proto", + ":cyber_binary", + ":cyber_state", + "//cyber/base:cyber_base", + "//cyber/blocker:cyber_blocker", + "//cyber/class_loader:cyber_class_loader", + "//cyber/common:cyber_common", + "//cyber/component:cyber_component", + "//cyber/croutine:cyber_croutine", + "//cyber/data:cyber_data", + "//cyber/event:cyber_event", + "//cyber/io:cyber_io", + "//cyber/logger:cyber_logger", + "//cyber/message:cyber_message", + "//cyber/node:cyber_node", + "//cyber/parameter:cyber_parameter", + "//cyber/plugin_manager:cyber_plugin_manager", + "//cyber/profiler:cyber_profiler", "//cyber/proto:clock_cc_proto", - "//cyber/proto:component_conf_cc_proto", - "//cyber/proto:cyber_conf_cc_proto", - "//cyber/proto:parameter_cc_proto", - "//cyber/proto:perf_conf_cc_proto", - "//cyber/proto:proto_desc_cc_proto", - "//cyber/proto:qos_profile_cc_proto", - "//cyber/proto:record_cc_proto", - "//cyber/proto:role_attributes_cc_proto", "//cyber/proto:run_mode_conf_cc_proto", - "//cyber/proto:scheduler_conf_cc_proto", - "//cyber/proto:topology_change_cc_proto", - "//cyber/proto:transport_conf_cc_proto", - "//cyber/record", - "//cyber/scheduler", - "//cyber/scheduler:scheduler_factory", - "//cyber/service", - "//cyber/service:client", - "//cyber/service_discovery:topology_manager", - "//cyber/sysmo", - "//cyber/task", - "//cyber/time", - "//cyber/time:clock", - "//cyber/time:duration", - "//cyber/time:rate", - "//cyber/timer", - "//cyber/transport", - "//cyber/transport/rtps:participant", - "//cyber/transport/rtps:sub_listener", - "@com_github_gflags_gflags//:gflags", + "//cyber/record:cyber_record", + "//cyber/scheduler:cyber_scheduler", + "//cyber/service:cyber_service", + "//cyber/service_discovery:cyber_service_discovery", + "//cyber/service_discovery:cyber_service_discovery_role", + "//cyber/sysmo:cyber_sysmo", + "//cyber/task:cyber_task", + "//cyber/time:cyber_time", + "//cyber/timer:cyber_timer", + "//cyber/transport:cyber_transport", "@com_github_google_glog//:glog", "@com_google_protobuf//:protobuf", "@fastrtps", @@ -239,4 +73,5 @@ filegroup( ) apollo_package() + cpplint() diff --git a/cyber/base/BUILD b/cyber/base/BUILD index 241e3bd91db..d05d55fc82b 100644 --- a/cyber/base/BUILD +++ b/cyber/base/BUILD @@ -1,130 +1,69 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_base_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "base", - deps = [ - "//cyber/base:atomic_hash_map", - "//cyber/base:atomic_rw_lock", - "//cyber/base:bounded_queue", - "//cyber/base:concurrent_object_pool", - "//cyber/base:for_each", - "//cyber/base:macros", - "//cyber/base:object_pool", - "//cyber/base:reentrant_rw_lock", - "//cyber/base:rw_lock_guard", - "//cyber/base:signal", - "//cyber/base:thread_pool", - "//cyber/base:thread_safe_queue", - "//cyber/base:unbounded_queue", - "//cyber/base:wait_strategy", +apollo_cc_library( + name = "cyber_base", + hdrs = [ + "atomic_hash_map.h", + "atomic_rw_lock.h", + "bounded_queue.h", + "concurrent_object_pool.h", + "for_each.h", + "macros.h", + "object_pool.h", + "reentrant_rw_lock.h", + "rw_lock_guard.h", + "signal.h", + "thread_pool.h", + "thread_safe_queue.h", + "unbounded_queue.h", + "wait_strategy.h", ], ) -cc_library( - name = "atomic_hash_map", - hdrs = ["atomic_hash_map.h"], -) - -cc_test( +apollo_cc_test( name = "atomic_hash_map_test", size = "small", srcs = ["atomic_hash_map_test.cc"], deps = [ - "//cyber/base:atomic_hash_map", + ":cyber_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "atomic_rw_lock", - hdrs = ["atomic_rw_lock.h"], - deps = [ - "//cyber/base:rw_lock_guard", - ], -) - -cc_test( +apollo_cc_test( name = "atomic_rw_lock_test", size = "small", srcs = ["atomic_rw_lock_test.cc"], deps = [ - "//cyber/base:atomic_rw_lock", - "//cyber/base:reentrant_rw_lock", + ":cyber_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "bounded_queue", - hdrs = ["bounded_queue.h"], - deps = [ - "//cyber/base:macros", - "//cyber/base:wait_strategy", - ], -) - -cc_test( +apollo_cc_test( name = "bounded_queue_test", size = "small", srcs = ["bounded_queue_test.cc"], deps = [ - "//cyber/base:bounded_queue", + ":cyber_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "concurrent_object_pool", - hdrs = ["concurrent_object_pool.h"], - deps = [ - "//cyber/base:for_each", - ], -) - -cc_library( - name = "for_each", - hdrs = ["for_each.h"], - deps = [ - "//cyber/base:macros", - ], -) - -cc_test( +apollo_cc_test( name = "for_each_test", size = "small", srcs = ["for_each_test.cc"], deps = [ - "//cyber/base:for_each", + "cyber_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "macros", - hdrs = ["macros.h"], -) - -cc_library( - name = "object_pool", - hdrs = ["object_pool.h"], - deps = [ - "//cyber/base:for_each", - "//cyber/base:macros", - ], -) - -cc_test( +apollo_cc_test( name = "object_pool_test", size = "small", srcs = ["object_pool_test.cc"], @@ -132,66 +71,30 @@ cc_test( "-latomic", ], deps = [ - "//cyber/base:concurrent_object_pool", - "//cyber/base:object_pool", + ":cyber_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "reentrant_rw_lock", - hdrs = ["reentrant_rw_lock.h"], -) - -cc_library( - name = "rw_lock_guard", - hdrs = ["rw_lock_guard.h"], -) - -cc_library( - name = "signal", - hdrs = ["signal.h"], -) - -cc_test( +apollo_cc_test( name = "signal_test", size = "small", srcs = ["signal_test.cc"], deps = [ - "//cyber/base:signal", + ":cyber_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "thread_pool", - hdrs = ["thread_pool.h"], -) - -cc_library( - name = "thread_safe_queue", - hdrs = ["thread_safe_queue.h"], -) - -cc_library( - name = "unbounded_queue", - hdrs = ["unbounded_queue.h"], -) - cc_test( name = "unbounded_queue_test", size = "small", srcs = ["unbounded_queue_test.cc"], deps = [ - "//cyber/base:unbounded_queue", + ":cyber_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "wait_strategy", - hdrs = ["wait_strategy.h"], -) - apollo_package() cpplint() diff --git a/cyber/blocker/BUILD b/cyber/blocker/BUILD index 7edaae2666c..93d820a8cdf 100644 --- a/cyber/blocker/BUILD +++ b/cyber/blocker/BUILD @@ -1,26 +1,22 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_blocker_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "blocker_manager", - srcs = ["blocker_manager.cc"], - hdrs = ["blocker_manager.h"], - deps = [ - ":blocker", +apollo_cc_library( + name = "cyber_blocker", + srcs = [ + "blocker_manager.cc", + ], + hdrs = [ + "blocker_manager.h", + "blocker.h", + "intra_reader.h", + "intra_writer.h", ], ) -cc_test( +apollo_cc_test( name = "blocker_manager_test", size = "small", srcs = ["blocker_manager_test.cc"], @@ -31,12 +27,7 @@ cc_test( ], ) -cc_library( - name = "blocker", - hdrs = ["blocker.h"], -) - -cc_test( +apollo_cc_test( name = "blocker_test", size = "small", srcs = ["blocker_test.cc"], @@ -47,21 +38,5 @@ cc_test( ], ) -cc_library( - name = "intra_reader", - hdrs = ["intra_reader.h"], - deps = [ - ":blocker_manager", - ], -) - -cc_library( - name = "intra_writer", - hdrs = ["intra_writer.h"], - deps = [ - ":blocker_manager", - ], -) - apollo_package() cpplint() diff --git a/cyber/class_loader/BUILD b/cyber/class_loader/BUILD index 12ace1f4f7e..a359262227c 100644 --- a/cyber/class_loader/BUILD +++ b/cyber/class_loader/BUILD @@ -1,49 +1,28 @@ load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_class_loader_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "class_loader", - srcs = ["class_loader.cc"], - hdrs = ["class_loader.h"], - alwayslink = True, - deps = [ - ":class_loader_register_macro", - "//cyber/class_loader/shared_library", - "//cyber/class_loader/utility:class_factory", - "//cyber/class_loader/utility:class_loader_utility", - "//cyber/common:log", +apollo_cc_library( + name = "cyber_class_loader", + srcs = [ + "class_loader.cc", + "class_loader_manager.cc" ], -) - -cc_library( - name = "class_loader_register_macro", - hdrs = ["class_loader_register_macro.h"], - deps = [ - "//cyber/class_loader/utility:class_loader_utility", + hdrs = [ + "class_loader.h", + "class_loader_register_macro.h", + "class_loader_manager.h" ], -) - -cc_library( - name = "class_loader_manager", - srcs = ["class_loader_manager.cc"], - hdrs = ["class_loader_manager.h"], - alwayslink = True, deps = [ - ":class_loader", + "//cyber/class_loader/shared_library", + "//cyber/class_loader/utility:class_loader_utility", + "//cyber/common:cyber_common", ], ) -cc_test( +apollo_cc_test( name = "class_loader_test", size = "small", srcs = ["class_loader_test.cc"], diff --git a/cyber/class_loader/class_loader.h b/cyber/class_loader/class_loader.h index 863ee9b5b77..ba90a90c4e2 100644 --- a/cyber/class_loader/class_loader.h +++ b/cyber/class_loader/class_loader.h @@ -100,8 +100,8 @@ void ClassLoader::OnClassObjDeleter(Base* obj) { return; } - std::lock_guard lck(classobj_ref_count_mutex_); delete obj; + std::lock_guard lck(classobj_ref_count_mutex_); --classobj_ref_count_; } diff --git a/cyber/class_loader/shared_library/BUILD b/cyber/class_loader/shared_library/BUILD index ec249fba6dc..33cf674a24b 100644 --- a/cyber/class_loader/shared_library/BUILD +++ b/cyber/class_loader/shared_library/BUILD @@ -1,32 +1,18 @@ load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_class_loader_shared_library_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) -cc_library( +apollo_cc_library( name = "shared_library", srcs = ["shared_library.cc"], - hdrs = ["shared_library.h"], + hdrs = ["shared_library.h", "exceptions.h"], linkopts = ["-ldl"], - deps = [ - ":exceptions", - ], -) - -cc_library( - name = "exceptions", - hdrs = ["exceptions.h"], ) cc_binary( - name = "libsample.so", + name = "libcyber_sample.so", testonly = True, linkshared = True, linkstatic = False, @@ -50,7 +36,7 @@ cc_test( size = "small", srcs = ["shared_library_test.cc"], data = [ - ":libsample.so", + ":libcyber_sample.so", ], deps = [ ":shared_library", diff --git a/cyber/class_loader/test/BUILD b/cyber/class_loader/test/BUILD index f5d37227452..4c1c0a01ee9 100644 --- a/cyber/class_loader/test/BUILD +++ b/cyber/class_loader/test/BUILD @@ -16,7 +16,7 @@ cc_library( srcs = ["plugin1.cc"], deps = [ ":base", - "//cyber/class_loader:class_loader_manager", + "//cyber/class_loader:cyber_class_loader", ], ) @@ -26,7 +26,7 @@ cc_library( srcs = ["plugin2.cc"], deps = [ ":base", - "//cyber/class_loader:class_loader_manager", + "//cyber/class_loader:cyber_class_loader", ], ) diff --git a/cyber/class_loader/utility/BUILD b/cyber/class_loader/utility/BUILD index cb848dc61ef..364d63e4342 100644 --- a/cyber/class_loader/utility/BUILD +++ b/cyber/class_loader/utility/BUILD @@ -1,33 +1,16 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_class_loader_utility_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "class_factory", - srcs = ["class_factory.cc"], - hdrs = ["class_factory.h"], - alwayslink = True, -) - -cc_library( +apollo_cc_library( name = "class_loader_utility", - srcs = ["class_loader_utility.cc"], - hdrs = ["class_loader_utility.h"], + srcs = ["class_loader_utility.cc", "class_factory.cc"], + hdrs = ["class_loader_utility.h", "class_factory.h"], deps = [ - ":class_factory", "//cyber/class_loader/shared_library", - "//cyber/common:log", + "//cyber/common:cyber_common", ], - alwayslink = True, ) apollo_package() diff --git a/cyber/common/BUILD b/cyber/common/BUILD index f9fdba0fbcf..5d9031d616f 100644 --- a/cyber/common/BUILD +++ b/cyber/common/BUILD @@ -1,35 +1,38 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "common", - deps = [ - "//cyber/common:environment", - "//cyber/common:file", - "//cyber/common:global_data", - "//cyber/common:log", - "//cyber/common:macros", - "//cyber/common:time_conversion", - "//cyber/common:types", - "//cyber/common:util", +apollo_cc_library( + name = "cyber_common", + srcs = [ + "global_data.cc", + "file.cc", + ], + data = [ + "//cyber:cyber_conf", + ], + hdrs = [ + "environment.h", + "file.h", + "global_data.h", + "log.h", + "macros.h", + "time_conversion.h", + "types.h", + "util.h", ], -) - -cc_library( - name = "file", - srcs = ["file.cc"], - hdrs = ["file.h"], deps = [ - "//cyber/common:log", - "@com_google_protobuf//:protobuf", + "//cyber:cyber_binary", + "//cyber/base:cyber_base", + "//cyber/proto:cyber_conf_cc_proto", "@com_github_nlohmann_json//:json", + "@com_google_protobuf//:protobuf", + "@com_github_google_glog//:glog", ], ) -cc_test( +apollo_cc_test( name = "file_test", size = "small", srcs = ["file_test.cc"], @@ -40,63 +43,28 @@ cc_test( ], ) -cc_library( - name = "log", - hdrs = ["log.h"], - deps = [ - "//cyber:binary", - "@com_github_google_glog//:glog", - ], -) - -cc_test( +apollo_cc_test( name = "log_test", size = "small", srcs = ["log_test.cc"], + linkstatic = True, deps = [ "//cyber", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_library( - name = "environment", - hdrs = ["environment.h"], - deps = [ - "//cyber/common:log", - ], -) - -cc_test( +apollo_cc_test( name = "environment_test", size = "small", srcs = ["environment_test.cc"], deps = [ - ":environment", + ":cyber_common", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "global_data", - srcs = ["global_data.cc"], - hdrs = ["global_data.h"], - data = [ - "//cyber:cyber_conf", - ], - deps = [ - "//cyber/base:atomic_hash_map", - "//cyber/base:atomic_rw_lock", - "//cyber/common:environment", - "//cyber/common:file", - "//cyber/common:macros", - "//cyber/common:util", - "//cyber/proto:cyber_conf_cc_proto", - ], -) - -cc_test( +apollo_cc_test( name = "macros_test", size = "small", srcs = ["macros_test.cc"], @@ -106,28 +74,6 @@ cc_test( ], ) -cc_library( - name = "macros", - hdrs = ["macros.h"], - deps = [ - "//cyber/base:macros", - ], -) - -cc_library( - name = "time_conversion", - hdrs = ["time_conversion.h"], -) - -cc_library( - name = "types", - hdrs = ["types.h"], -) - -cc_library( - name = "util", - hdrs = ["util.h"], -) - apollo_package() + cpplint() diff --git a/cyber/component/BUILD b/cyber/component/BUILD index ccfe45a6946..7962d0cb48f 100644 --- a/cyber/component/BUILD +++ b/cyber/component/BUILD @@ -1,26 +1,31 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_component_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "component", - hdrs = ["component.h"], +apollo_cc_library( + name = "cyber_component", + hdrs = [ + "component.h", + "timer_component.h", + "component_base.h", + ], + srcs = [ + "timer_component.cc" + ], deps = [ - ":component_base", - "//cyber/scheduler", + "//cyber/scheduler:cyber_scheduler", + "//cyber/blocker:cyber_blocker", + "//cyber/timer:cyber_timer", + "//cyber/transport:cyber_transport", + "//cyber/base:cyber_base", + "//cyber/class_loader:cyber_class_loader", + "//cyber/node:cyber_node", + "@com_github_gflags_gflags//:gflags", ], ) -cc_test( +apollo_cc_test( name = "component_test", size = "small", srcs = ["component_test.cc"], @@ -31,21 +36,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "timer_component", - srcs = ["timer_component.cc"], - hdrs = ["timer_component.h"], - deps = [ - ":component_base", - "//cyber/blocker:blocker_manager", - "//cyber/timer", - "//cyber/transport/message:history", - "//cyber/transport/transmitter", - ], - alwayslink = True, -) - -cc_test( +apollo_cc_test( name = "timer_component_test", size = "small", srcs = ["timer_component_test.cc"], @@ -56,17 +47,5 @@ cc_test( linkstatic = True, ) -cc_library( - name = "component_base", - hdrs = ["component_base.h"], - deps = [ - "//cyber/base:signal", - "//cyber/base:thread_pool", - "//cyber/class_loader", - "//cyber/node", - "@com_github_gflags_gflags//:gflags", - ], -) - apollo_package() cpplint() diff --git a/cyber/croutine/BUILD b/cyber/croutine/BUILD index e0b86b22380..51ff8490320 100644 --- a/cyber/croutine/BUILD +++ b/cyber/croutine/BUILD @@ -1,72 +1,33 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_croutine_hdrs", -# srcs = glob([ -# "*.h", -# "detail/*.h" -# ]), -# ) - -cc_library( - name = "croutine", - srcs = ["croutine.cc"], - hdrs = ["croutine.h"], - linkopts = ["-latomic"], - deps = [ - "//cyber/base:atomic_hash_map", - "//cyber/base:atomic_rw_lock", - "//cyber/base:bounded_queue", - "//cyber/base:concurrent_object_pool", - "//cyber/base:macros", - "//cyber/base:wait_strategy", - "//cyber/common", - "//cyber/croutine:routine_context", - "//cyber/croutine:routine_factory", - "//cyber/croutine:swap", - "//cyber/event:perf_event_cache", - "//cyber/time", - ], -) - -cc_library( - name = "routine_context", - srcs = ["detail/routine_context.cc"], - hdrs = ["detail/routine_context.h"], - deps = [ - "//cyber/common", +apollo_cc_library( + name = "cyber_croutine", + srcs = [ + "croutine.cc", + "detail/routine_context.cc", + ] + select( + {"@platforms//cpu:x86_64": ["detail/swap_x86_64.S"], + "@platforms//cpu:aarch64": ["detail/swap_aarch64.S"],}, + no_match_error = "Please Build with a Linux aarch64 or x86_64 platform", + ), + hdrs = [ + "croutine.h", + "routine_factory.h", + "detail/routine_context.h", ], -) - -cc_library( - name = "routine_factory", - hdrs = ["routine_factory.h"], + linkopts = ["-latomic"], deps = [ - "//cyber/common", - "//cyber/event:perf_event_cache", + "//cyber/base:cyber_base", + "//cyber/common:cyber_common", + "//cyber/event:cyber_event", + "//cyber/time:cyber_time", ], ) -cc_library( - name = "swap", - srcs = select( - { - "@platforms//cpu:x86_64": [ - "detail/swap_x86_64.S", - ], - "@platforms//cpu:aarch64": [ - "detail/swap_aarch64.S", - ], - }, - no_match_error = "Please Build with a Linux aarch64 or x86_64 platform", - ), -) - -cc_test( +apollo_cc_test( name = "croutine_test", size = "small", srcs = ["croutine_test.cc"], diff --git a/cyber/cyber.BUILD b/cyber/cyber.BUILD deleted file mode 100644 index 16cfd405c7f..00000000000 --- a/cyber/cyber.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "cyber", - includes = ["include"], - hdrs = glob(["include/**/*"]), - srcs = glob(["lib/**/lib*.so*"]), - include_prefix = "cyber", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/cyber/data/BUILD b/cyber/data/BUILD index 60a7f309c0d..419c2962bbc 100644 --- a/cyber/data/BUILD +++ b/cyber/data/BUILD @@ -1,70 +1,36 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_data_hdrs", -# srcs = glob([ -# "*.h", -# "fusion/*.h" -# ]), -# ) - - -cc_library( - name = "data", +apollo_cc_library( + name = "cyber_data", + hdrs = [ + "cache_buffer.h", + "channel_buffer.h", + "data_dispatcher.h", + "data_notifier.h", + "data_visitor.h", + "data_visitor_base.h", + "fusion/all_latest.h", + "fusion/data_fusion.h", + ], deps = [ - ":all_latest", - ":cache_buffer", - ":channel_buffer", - ":data_dispatcher", - ":data_fusion", - ":data_notifier", - ":data_visitor", - ":data_visitor_base", + "//cyber/proto:component_conf_cc_proto", ], ) -cc_library( - name = "cache_buffer", - srcs = ["cache_buffer.h"], -) - -cc_test( +apollo_cc_test( name = "cache_buffer_test", size = "small", srcs = ["cache_buffer_test.cc"], deps = [ - ":cache_buffer", + ":cyber_data", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "channel_buffer", - hdrs = ["channel_buffer.h"], - deps = [ - ":data_notifier", - "//cyber/proto:component_conf_cc_proto", - ], -) - -cc_library( - name = "data_dispatcher", - hdrs = ["data_dispatcher.h"], - deps = [ - ":channel_buffer", - ], -) - -cc_library( - name = "data_visitor", - hdrs = ["data_visitor.h"], -) - -cc_test( +apollo_cc_test( name = "data_visitor_test", size = "small", srcs = ["data_visitor_test.cc"], @@ -74,20 +40,7 @@ cc_test( ], ) -cc_library( - name = "data_visitor_base", - hdrs = ["data_visitor_base.h"], -) - -cc_library( - name = "data_notifier", - hdrs = ["data_notifier.h"], - deps = [ - ":cache_buffer", - ], -) - -cc_test( +apollo_cc_test( name = "data_dispatcher_test", size = "small", srcs = ["data_dispatcher_test.cc"], @@ -97,7 +50,7 @@ cc_test( ], ) -cc_test( +apollo_cc_test( name = "channel_buffer_test", size = "small", srcs = ["channel_buffer_test.cc"], @@ -107,21 +60,7 @@ cc_test( ], ) -cc_library( - name = "data_fusion", - hdrs = ["fusion/data_fusion.h"], -) - -cc_library( - name = "all_latest", - hdrs = ["fusion/all_latest.h"], - deps = [ - ":channel_buffer", - ":data_fusion", - ], -) - -cc_test( +apollo_cc_test( name = "all_latest_test", size = "small", srcs = ["fusion/all_latest_test.cc"], diff --git a/cyber/event/BUILD b/cyber/event/BUILD index edbd2107b49..65158453f47 100644 --- a/cyber/event/BUILD +++ b/cyber/event/BUILD @@ -1,36 +1,17 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_event_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "perf_event_cache", +apollo_cc_library( + name = "cyber_event", srcs = ["perf_event_cache.cc"], - hdrs = ["perf_event_cache.h"], - deps = [ - ":perf_event", - "//cyber:state", - "//cyber/base:bounded_queue", - "//cyber/common:global_data", - "//cyber/common:log", - "//cyber/common:macros", - "//cyber/time", - ], -) - -cc_library( - name = "perf_event", - hdrs = ["perf_event.h"], + hdrs = ["perf_event_cache.h", "perf_event.h"], deps = [ - "//cyber/common:global_data", + "//cyber:cyber_state", + "//cyber/base:cyber_base", + "//cyber/common:cyber_common", + "//cyber/time:cyber_time", ], ) diff --git a/cyber/examples/BUILD b/cyber/examples/BUILD index 3fb2a40d16a..d930dfb10fd 100644 --- a/cyber/examples/BUILD +++ b/cyber/examples/BUILD @@ -1,11 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -cc_binary( +apollo_cc_binary( name = "talker", srcs = ["talker.cc"], deps = [ @@ -14,7 +12,7 @@ cc_binary( ], ) -cc_binary( +apollo_cc_binary( name = "listener", srcs = ["listener.cc"], deps = [ @@ -23,22 +21,7 @@ cc_binary( ], ) -# install( -# name = "install", -# targets = [ -# ":talker", -# ":listener", -# ], -# runtime_dest = "cyber/examples", -# deps = [ -# "//cyber/examples/common_component_example:install", -# "//cyber/examples/timer_component_example:install", -# "//cyber/examples/proto:cyber_examples_proto_hdrs", -# "//cyber/examples/proto:cyber_examples_proto_so", -# ], -# ) - -cc_binary( +apollo_cc_binary( name = "paramserver", srcs = ["paramserver.cc"], deps = [ @@ -46,7 +29,7 @@ cc_binary( ], ) -cc_binary( +apollo_cc_binary( name = "service", srcs = ["service.cc"], deps = [ @@ -55,7 +38,7 @@ cc_binary( ], ) -cc_binary( +apollo_cc_binary( name = "record", srcs = ["record.cc"], deps = [ diff --git a/cyber/examples/common_component_example/BUILD b/cyber/examples/common_component_example/BUILD index de9fcaa3ba9..aa95875db39 100644 --- a/cyber/examples/common_component_example/BUILD +++ b/cyber/examples/common_component_example/BUILD @@ -1,30 +1,20 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_binary", "apollo_component") package(default_visibility = ["//visibility:public"]) -cc_binary( +apollo_component( name = "libcommon_component_example.so", - linkshared = True, - linkstatic = True, - deps = [":common_component_example_lib"], -) - -cc_library( - name = "common_component_example_lib", srcs = ["common_component_example.cc"], hdrs = ["common_component_example.h"], visibility = ["//visibility:private"], - alwayslink = True, deps = [ "//cyber", "//cyber/examples/proto:examples_cc_proto", ], ) -cc_binary( +apollo_cc_binary( name = "channel_test_writer", srcs = ["channel_test_writer.cc"], deps = [ @@ -33,7 +23,7 @@ cc_binary( ], ) -cc_binary( +apollo_cc_binary( name = "channel_prediction_writer", srcs = ["channel_prediction_writer.cc"], deps = [ @@ -50,21 +40,6 @@ filegroup( ], ) -# install( -# name = "install", -# data = [ -# ":conf", -# ], -# # We want to install channel_*_writer into runtime_dest -# # rather than bin/ -# runtime_dest = "cyber/examples/common_component_example", -# targets = [ -# ":channel_prediction_writer", -# ":channel_test_writer", -# ":libcommon_component_example.so", -# ], -# ) - apollo_package() cpplint() diff --git a/cyber/examples/proto/BUILD b/cyber/examples/proto/BUILD index 621e613fad4..e2c9150a583 100644 --- a/cyber/examples/proto/BUILD +++ b/cyber/examples/proto/BUILD @@ -1,47 +1,12 @@ ## Auto generated by `proto_build_generator.py` -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@rules_cc//cc:defs.bzl", "cc_proto_library") -load("//tools:python_rules.bzl", "py_proto_library") -# load("//tools:cc_so_proto_rules.bzl", "cc_so_proto_library") -# load("//tools/install:install.bzl", "install", "install_files") +load("//tools/proto:proto.bzl", "proto_library") load("//tools:apollo_package.bzl", "apollo_package") package(default_visibility = ["//visibility:public"]) - -# install_files( -# name = "cyber_examples_proto_hdrs", -# dest = "cyber/include/proto", -# files = [ -# ":examples_cc_proto_hdrs", -# ], -# ) - -# install( -# name = "cyber_examples_proto_so", -# library_dest = "cyber/lib", -# targets = [ -# ":libexamples_cc_proto.so", -# ], -# ) - -cc_proto_library( - name = "examples_cc_proto", - deps = [ - ":examples_proto", - ], -) - proto_library( name = "examples_proto", srcs = ["examples.proto"], ) -py_proto_library( - name = "examples_py_pb2", - deps = [ - ":examples_proto", - ], -) - apollo_package() \ No newline at end of file diff --git a/cyber/examples/timer_component_example/BUILD b/cyber/examples/timer_component_example/BUILD index 543d1ebc2d5..328a06ddafa 100644 --- a/cyber/examples/timer_component_example/BUILD +++ b/cyber/examples/timer_component_example/BUILD @@ -1,27 +1,16 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") package(default_visibility = ["//visibility:public"]) - -cc_binary( +apollo_component( name = "libtimer_component_example.so", - linkshared = True, - linkstatic = True, - deps = [":timer_component_example_lib"], -) - -cc_library( - name = "timer_component_example_lib", srcs = ["timer_component_example.cc"], hdrs = ["timer_component_example.h"], deps = [ "//cyber", "//cyber/examples/proto:examples_cc_proto", ], - alwayslink = True, visibility = ["//visibility:private"], ) @@ -33,15 +22,5 @@ filegroup( ], ) -# install( -# name = "install", -# data = [ -# ":conf", -# ], -# targets = [ -# ":libtimer_component_example.so", -# ], -# ) - apollo_package() cpplint() diff --git a/cyber/io/BUILD b/cyber/io/BUILD index 5302e161d21..f34627255aa 100644 --- a/cyber/io/BUILD +++ b/cyber/io/BUILD @@ -1,109 +1,65 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_io_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "io", - deps = [ - ":poll_data", - ":poll_handler", - ":poller", - ":session", - ], - alwayslink = True, -) - -cc_library( - name = "poll_data", - hdrs = ["poll_data.h"], -) - -cc_library( - name = "poll_handler", - srcs = ["poll_handler.cc"], - hdrs = ["poll_handler.h"], - deps = [ - ":poll_data", - ":poller", - "//cyber/common:log", - "//cyber/croutine", +apollo_cc_library( + name = "cyber_io", + hdrs = [ + "poll_data.h", + "poll_handler.h", + "poller.h", + "session.h", ], -) - -cc_library( - name = "poller", - srcs = ["poller.cc"], - hdrs = ["poller.h"], + srcs = ["poll_handler.cc", "poller.cc", "session.cc"], deps = [ - ":poll_data", - "//cyber/base:atomic_rw_lock", - "//cyber/common:log", - "//cyber/common:macros", - "//cyber/scheduler:scheduler_factory", - "//cyber/time", + "//cyber/common:cyber_common", + "//cyber/croutine:cyber_croutine", + "//cyber/base:cyber_base", + "//cyber/scheduler:cyber_scheduler", + "//cyber/time:cyber_time", ], ) -cc_test( +apollo_cc_test( name = "poller_test", size = "small", srcs = ["poller_test.cc"], deps = [ - ":poller", - "//cyber:cyber_core", + "//cyber", "@com_google_googletest//:gtest", ], ) -cc_library( - name = "session", - srcs = ["session.cc"], - hdrs = ["session.h"], - deps = [ - ":poll_handler", - "//cyber/common:log", - ], - alwayslink = True, -) - -cc_binary( +apollo_cc_binary( name = "tcp_echo_client", srcs = ["example/tcp_echo_client.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", ], ) -cc_binary( +apollo_cc_binary( name = "tcp_echo_server", srcs = ["example/tcp_echo_server.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", ], ) -cc_binary( +apollo_cc_binary( name = "udp_echo_client", srcs = ["example/udp_echo_client.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", ], ) -cc_binary( +apollo_cc_binary( name = "udp_echo_server", srcs = ["example/udp_echo_server.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", ], ) diff --git a/cyber/logger/BUILD b/cyber/logger/BUILD index cddfc751300..318d659977d 100644 --- a/cyber/logger/BUILD +++ b/cyber/logger/BUILD @@ -1,28 +1,30 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_logger_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "logger", - srcs = ["logger.cc"], - hdrs = ["logger.h"], +apollo_cc_library( + name = "cyber_logger", + srcs = [ + "async_logger.cc", + "log_file_object.cc", + "logger_util.cc", + "logger.cc", + ], + hdrs = [ + "async_logger.h", + "log_file_object.h", + "logger.h", + "logger_util.h", + ], deps = [ - "//cyber/common", - "//cyber/logger:log_file_object", + "//cyber:cyber_binary", + "//cyber/common:cyber_common", + "//cyber/base:cyber_base", ], - alwayslink =True, ) -cc_test( +apollo_cc_test( name = "logger_test", size = "small", srcs = ["logger_test.cc"], @@ -33,18 +35,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "async_logger", - srcs = ["async_logger.cc"], - hdrs = ["async_logger.h"], - deps = [ - "//cyber/base:macros", - "//cyber/common", - "//cyber/logger:log_file_object", - ], -) - -cc_test( +apollo_cc_test( name = "async_logger_test", size = "small", srcs = ["async_logger_test.cc"], @@ -55,18 +46,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "log_file_object", - srcs = ["log_file_object.cc"], - hdrs = ["log_file_object.h"], - deps = [ - "//cyber:binary", - "//cyber/common:log", - "//cyber/logger:logger_util", - ], -) - -cc_test( +apollo_cc_test( name = "log_file_object_test", size = "small", srcs = ["log_file_object_test.cc"], @@ -77,16 +57,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "logger_util", - srcs = ["logger_util.cc"], - hdrs = ["logger_util.h"], - deps = [ - "//cyber/common:global_data", - ], -) - -cc_test( +apollo_cc_test( name = "logger_util_test", size = "small", srcs = ["logger_util_test.cc"], diff --git a/cyber/mainboard/BUILD b/cyber/mainboard/BUILD index 55261f2c944..7ae3f857678 100644 --- a/cyber/mainboard/BUILD +++ b/cyber/mainboard/BUILD @@ -1,11 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -cc_binary( +apollo_cc_binary( name = "mainboard", srcs = [ "mainboard.cc", @@ -16,17 +14,11 @@ cc_binary( ], linkopts = ["-pthread"], deps = [ - "//cyber:cyber_core", - "//cyber/plugin_manager", + "//cyber", + "//cyber/plugin_manager:cyber_plugin_manager", "//cyber/proto:dag_conf_cc_proto", ], ) -# install( -# name = "install", -# runtime_dest = "cyber/bin", -# targets = [":mainboard"], -# ) - apollo_package() cpplint() diff --git a/cyber/message/BUILD b/cyber/message/BUILD index ddf8ef5d63f..e12d0607c91 100644 --- a/cyber/message/BUILD +++ b/cyber/message/BUILD @@ -1,22 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_message_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "message_header", - hdrs = ["message_header.h"], -) - -cc_test( +apollo_cc_test( name = "message_header_test", size = "small", srcs = ["message_header_test.cc"], @@ -26,19 +13,28 @@ cc_test( ], ) -cc_library( - name = "message_traits", - hdrs = ["message_traits.h"], +apollo_cc_library( + name = "cyber_message", + hdrs = [ + "message_header.h", + "message_traits.h", + "protobuf_factory.h", + "protobuf_traits.h", + "py_message.h", + "py_message_traits.h", + "raw_message.h", + "raw_message_traits.h", + ], + srcs = [ + "protobuf_factory.cc", + ], deps = [ - ":message_header", - ":protobuf_traits", - ":py_message_traits", - ":raw_message_traits", - "//cyber/base:macros", + "//cyber/common:cyber_common", + "//cyber/proto:proto_desc_cc_proto", ], ) -cc_test( +apollo_cc_test( name = "message_traits_test", size = "small", srcs = ["message_traits_test.cc"], @@ -49,51 +45,7 @@ cc_test( ], ) -cc_library( - name = "protobuf_factory", - srcs = ["protobuf_factory.cc"], - hdrs = ["protobuf_factory.h"], - deps = [ - "//cyber/common:log", - "//cyber/common:macros", - "//cyber/proto:proto_desc_cc_proto", - ], -) - -cc_library( - name = "protobuf_traits", - hdrs = ["protobuf_traits.h"], - deps = [ - ":protobuf_factory", - ], -) - -cc_library( - name = "py_message", - hdrs = ["py_message.h"], - deps = [ - ":protobuf_factory", - ], -) - -cc_library( - name = "py_message_traits", - hdrs = ["py_message_traits.h"], - deps = [ - ":protobuf_factory", - ":py_message", - ], -) - -cc_library( - name = "raw_message", - hdrs = ["raw_message.h"], - deps = [ - ":protobuf_factory", - ], -) - -cc_test( +apollo_cc_test( name = "raw_message_test", size = "small", srcs = ["raw_message_test.cc"], @@ -103,7 +55,7 @@ cc_test( ], ) -cc_test( +apollo_cc_test( name = "protobuf_factory_test", size = "small", srcs = ["protobuf_factory_test.cc"], @@ -114,14 +66,5 @@ cc_test( ], ) -cc_library( - name = "raw_message_traits", - hdrs = ["raw_message_traits.h"], - deps = [ - ":protobuf_factory", - ":raw_message", - ], -) - apollo_package() cpplint() diff --git a/cyber/node/BUILD b/cyber/node/BUILD index 3154f375398..366d6b03e4c 100644 --- a/cyber/node/BUILD +++ b/cyber/node/BUILD @@ -1,41 +1,41 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_node_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "node", - srcs = ["node.cc"], - hdrs = ["node.h"], - deps = [ - ":node_channel_impl", - ":node_service_impl", +apollo_cc_library( + name = "cyber_node", + srcs = [ + "node.cc", + ], + hdrs = [ + "node.h", + "node_channel_impl.h", + "node_service_impl.h", + "reader.h", + "reader_base.h", + "writer.h", + "writer_base.h", ], -) - -cc_library( - name = "node_channel_impl", - hdrs = ["node_channel_impl.h"], deps = [ - ":reader", - ":writer", - "//cyber/blocker:intra_reader", - "//cyber/blocker:intra_writer", - "//cyber/common:global_data", - "//cyber/message:message_traits", + "//cyber/blocker:cyber_blocker", + "//cyber/common:cyber_common", + "//cyber/message:cyber_message", "//cyber/proto:run_mode_conf_cc_proto", + "//cyber/service:cyber_service", + "//cyber/service_discovery:cyber_service_discovery", + "//cyber/croutine:cyber_croutine", + "//cyber/data:cyber_data", + "//cyber/proto:topology_change_cc_proto", + "//cyber/scheduler:cyber_scheduler", + "//cyber/time:cyber_time", + "//cyber/transport:cyber_transport", + "//cyber/event:cyber_event", + "//cyber/proto:role_attributes_cc_proto", ], ) -cc_test( +apollo_cc_test( name = "node_channel_impl_test", size = "small", srcs = ["node_channel_impl_test.cc"], @@ -47,20 +47,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "node_service_impl", - hdrs = ["node_service_impl.h"], - deps = [ - ":reader", - ":writer", - "//cyber/common:global_data", - "//cyber/service", - "//cyber/service:client", - "//cyber/service_discovery:topology_manager", - ], -) - -cc_test( +apollo_cc_test( name = "node_test", size = "small", srcs = ["node_test.cc"], @@ -72,33 +59,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "reader", - hdrs = ["reader.h"], - deps = [ - ":reader_base", - "//cyber/blocker", - "//cyber/common:global_data", - "//cyber/croutine:routine_factory", - "//cyber/data:data_visitor", - "//cyber/proto:topology_change_cc_proto", - "//cyber/scheduler", - "//cyber/service_discovery:topology_manager", - "//cyber/time", - "//cyber/transport", - ], -) - -cc_library( - name = "reader_base", - hdrs = ["reader_base.h"], - deps = [ - "//cyber/event:perf_event_cache", - "//cyber/transport", - ], -) - -cc_test( +apollo_cc_test( name = "reader_test", size = "small", srcs = ["reader_test.cc"], @@ -110,29 +71,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "writer", - hdrs = ["writer.h"], - deps = [ - ":writer_base", - "//cyber/common:log", - "//cyber/proto:topology_change_cc_proto", - "//cyber/service_discovery:topology_manager", - "//cyber/transport", - ], -) - -cc_library( - name = "writer_base", - hdrs = ["writer_base.h"], - deps = [ - "//cyber/common:macros", - "//cyber/common:util", - "//cyber/proto:role_attributes_cc_proto", - ], -) - -cc_test( +apollo_cc_test( name = "writer_reader_test", size = "small", srcs = ["writer_reader_test.cc"], @@ -144,13 +83,12 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "writer_test", size = "small", srcs = ["writer_test.cc"], deps = [ "//cyber", - "//cyber/node:writer_base", "//cyber/proto:unit_test_cc_proto", "@com_google_googletest//:gtest", ], diff --git a/cyber/parameter/BUILD b/cyber/parameter/BUILD index 5c14d3ff4c7..d4868ac4a99 100644 --- a/cyber/parameter/BUILD +++ b/cyber/parameter/BUILD @@ -1,28 +1,31 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_parameter_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "parameter", - srcs = ["parameter.cc"], - hdrs = ["parameter.h"], +apollo_cc_library( + name = "cyber_parameter", + srcs = [ + "parameter.cc", + "parameter_client.cc", + "parameter_server.cc", + ], + hdrs = [ + "parameter.h", + "parameter_client.h", + "parameter_server.h", + "parameter_service_names.h", + ], deps = [ - "//cyber/message:protobuf_factory", + "//cyber/message:cyber_message", "//cyber/proto:parameter_cc_proto", + "//cyber/node:cyber_node", + "//cyber/service:cyber_service", + "@fastrtps", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "parameter_test", size = "small", srcs = ["parameter_test.cc"], @@ -33,21 +36,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "parameter_client", - srcs = ["parameter_client.cc"], - hdrs = ["parameter_client.h"], - deps = [ - ":parameter", - ":parameter_service_names", - "//cyber/node", - "//cyber/service:client", - "@fastrtps", - ], - alwayslink = True, -) - -cc_test( +apollo_cc_test( name = "parameter_client_test", size = "small", srcs = ["parameter_client_test.cc"], @@ -58,21 +47,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "parameter_server", - srcs = ["parameter_server.cc"], - hdrs = ["parameter_server.h"], - deps = [ - ":parameter", - ":parameter_service_names", - "//cyber/node", - "//cyber/service", - "@fastrtps", - ], - alwayslink = True, -) - -cc_test( +apollo_cc_test( name = "parameter_server_test", size = "small", srcs = ["parameter_server_test.cc"], @@ -83,10 +58,5 @@ cc_test( linkstatic = True, ) -cc_library( - name = "parameter_service_names", - hdrs = ["parameter_service_names.h"], -) - apollo_package() cpplint() diff --git a/cyber/plugin_manager/BUILD b/cyber/plugin_manager/BUILD index a31eb487b85..cf526e6ac2a 100644 --- a/cyber/plugin_manager/BUILD +++ b/cyber/plugin_manager/BUILD @@ -1,45 +1,25 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# library_dest = "cyber/lib", -# targets = [ -# ":libplugin_manager.so", -# ], -# ) - -cc_binary( - name = "libplugin_manager.so", +apollo_cc_library( + name = "cyber_plugin_manager", srcs = [ - "plugin_description.h", + "plugin_description.cc", "plugin_manager.cc", - "plugin_manager.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//cyber/class_loader:class_loader_manager", - "//cyber/common", - "@tinyxml2", - ], -) - -cc_library( - name = "plugin_manager", - srcs = [ - ":libplugin_manager.so", ], hdrs = [ "plugin_description.h", "plugin_manager.h", ], - alwayslink = True, + deps = [ + "//cyber/class_loader:cyber_class_loader", + "//cyber/common:cyber_common", + "@tinyxml2", + ], ) apollo_package() + cpplint() diff --git a/cyber/plugin_manager/plugin_description.cc b/cyber/plugin_manager/plugin_description.cc new file mode 100644 index 00000000000..0851359bb5e --- /dev/null +++ b/cyber/plugin_manager/plugin_description.cc @@ -0,0 +1,131 @@ +/****************************************************************************** + * Copyright 2023 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ +#include "cyber/plugin_manager/plugin_description.h" + +#include +#include +#include +#include +#include + +#include + +#include "cyber/common/environment.h" +#include "cyber/common/file.h" +#include "cyber/common/log.h" + +namespace apollo { +namespace cyber { +namespace plugin_manager { + +PluginDescription::PluginDescription() {} + +PluginDescription::PluginDescription(const std::string& name) : name_(name) {} + +PluginDescription::PluginDescription(const std::string& name, + const std::string& description_index_path, + const std::string& description_path, + const std::string& actual_description_path, + const std::string& library_path, + const std::string& actual_library_path) + : name_(name), + description_index_path_(description_index_path), + description_path_(description_path), + actual_description_path_(actual_description_path), + library_path_(library_path), + actual_library_path_(actual_library_path) {} + +bool PluginDescription::ParseFromIndexFile(const std::string& file_path) { + this->description_index_path_ = file_path; + this->name_ = apollo::cyber::common::GetFileName(file_path); + + if (!apollo::cyber::common::GetContent(file_path, &this->description_path_)) { + AWARN << "plugin index[" << file_path << "] name[" << this->name_ + << "] invalid, read index file failed"; + return false; + } + return ParseFromDescriptionFile(this->description_path_); +} + +bool PluginDescription::ParseFromDescriptionFile(const std::string& file_path) { + if (this->description_path_.empty()) { + this->description_path_ = file_path; + } + + if (!apollo::cyber::common::GetFilePathWithEnv( + this->description_path_, "APOLLO_PLUGIN_DESCRIPTION_PATH", + &this->actual_description_path_)) { + AWARN << "plugin index[" << file_path << "] name[" << this->name_ + << "] invalid, description[" << this->description_path_ + << "] file not found"; + return false; + } + + tinyxml2::XMLDocument doc; + if (doc.LoadFile(this->actual_description_path_.c_str()) != + tinyxml2::XML_SUCCESS) { + AWARN << "plugin description[" << file_path << "] name[" << this->name_ + << "] invalid, parse description file failed"; + return false; + } + const tinyxml2::XMLElement* root = doc.RootElement(); + this->library_path_ = root->Attribute("path"); + + std::string plugin_name = + std::regex_replace(this->library_path_, std::regex("/"), "__"); + if (this->name_.empty()) { + this->name_ = plugin_name; + } + + // process class name and base class name from description file, this will be + // used to build index fo lazy load + for (const tinyxml2::XMLElement* class_element = + root->FirstChildElement("class"); + class_element != nullptr; + class_element = class_element->NextSiblingElement("class")) { + std::string class_name = class_element->Attribute("type"); + std::string base_class_name = class_element->Attribute("base_class"); + + if (this->class_name_base_class_name_map_.find(class_name) != + this->class_name_base_class_name_map_.end()) { + AWARN << "plugin description[" << file_path << "] name[" << this->name_ + << "] invalid, class name[" << class_name << "] duplicated"; + continue; + } + + if (class_name.empty() || base_class_name.empty()) { + AWARN << "plugin description[" << file_path << "] name[" << this->name_ + << "] invalid, class name[" << class_name << "] base class name[" + << base_class_name << "] invalid"; + continue; + } + this->class_name_base_class_name_map_[class_name] = base_class_name; + } + + if (!apollo::cyber::common::GetFilePathWithEnv(this->library_path_, + "APOLLO_PLUGIN_LIB_PATH", + &this->actual_library_path_)) { + AWARN << "plugin description[" << file_path << "] name[" << this->name_ + << "] invalid, library[" << this->library_path_ << "] file not found"; + return false; + } + + return true; +} + +} // namespace plugin_manager +} // namespace cyber +} // namespace apollo diff --git a/cyber/plugin_manager/plugin_description.h b/cyber/plugin_manager/plugin_description.h index b2e0789db1c..e8f860f5d05 100644 --- a/cyber/plugin_manager/plugin_description.h +++ b/cyber/plugin_manager/plugin_description.h @@ -14,6 +14,7 @@ * limitations under the License. *****************************************************************************/ #pragma once +#include #include namespace apollo { @@ -26,15 +27,36 @@ class PluginDescription { std::string name_; std::string description_index_path_; std::string description_path_; + std::string actual_description_path_; std::string library_path_; + std::string actual_library_path_; + + std::map class_name_base_class_name_map_; + + PluginDescription(); + explicit PluginDescription(const std::string& name); PluginDescription(const std::string& name, const std::string& description_index_path, const std::string& description_path, - const std::string& library_path) - : name_(name), - description_index_path_(description_index_path), - description_path_(description_path), - library_path_(library_path) {} + const std::string& actual_description_path, + const std::string& library_path, + const std::string& actual_library_path); + + /** + * @brief parse plugin description metadata from plugin index file + * + * @param file_path plugin index file path + * @return true if parse success + */ + bool ParseFromIndexFile(const std::string& file_path); + + /** + * @brief parse plugin description metadata from plugin description file + * + * @param file_path plugin description file path + * @return true if parse success + */ + bool ParseFromDescriptionFile(const std::string& file_path); }; } // namespace plugin_manager diff --git a/cyber/plugin_manager/plugin_manager.cc b/cyber/plugin_manager/plugin_manager.cc index aa6d5321522..b0f64d538f6 100644 --- a/cyber/plugin_manager/plugin_manager.cc +++ b/cyber/plugin_manager/plugin_manager.cc @@ -21,6 +21,8 @@ #include #include +#include +#include #include #include @@ -57,44 +59,33 @@ bool PluginManager::LoadPlugin( const std::string& plugin_description_file_path) { AINFO << "loading plugin from description[" << plugin_description_file_path << "]"; - // load plugin without name, use library path as name - - std::string library_path = ""; - if (!ProcessPluginDescriptionFile(plugin_description_file_path, - &library_path)) { - // invalid description file - AWARN << "plugin load failed, description[" << plugin_description_file_path - << "] invalid"; + + auto description = + std::make_shared(); + if (!description->ParseFromDescriptionFile(plugin_description_file_path)) { return false; } - std::string plugin_name = - std::regex_replace(library_path, std::regex("/"), std::string("__")); - if (plugin_description_map_.find(plugin_name) != + + if (plugin_description_map_.find(description->name_) != plugin_description_map_.end()) { - // already loaded - AWARN << "plugin name[" << plugin_name << "] already loaded"; + AWARN << "plugin [" << description->name_ << "] already loaded"; return true; } - // try to detect the real path - std::string actual_library_path = ""; - if (!apollo::cyber::common::GetFilePathWithEnv( - library_path, "APOLLO_PLUGIN_LIB_PATH", &actual_library_path)) { + + if (!LoadLibrary(description->actual_library_path_)) { AWARN << "plugin description[" << plugin_description_file_path << "] name[" - << plugin_name << "] load failed, library[" << library_path - << "] not found"; + << description->name_ << "] load failed, library[" + << description->actual_library_path_ << "] invalid"; return false; } - if (!class_loader_manager_.LoadLibrary(actual_library_path)) { - AWARN << "plugin description[" << plugin_description_file_path << "] name[" - << plugin_name << "] load failed, library[" << actual_library_path - << "] invalid"; - return false; + + plugin_loaded_map_[description->name_] = true; + plugin_description_map_[description->name_] = description; + for (auto& class_name_pair : description->class_name_base_class_name_map_) { + plugin_class_plugin_name_map_[class_name_pair] = description->name_; } - plugin_description_map_[plugin_name] = - std::make_shared(PluginDescription( - plugin_name, "", plugin_description_file_path, actual_library_path)); AINFO << "plugin description[" << plugin_description_file_path << "] name[" - << plugin_name << "] load success"; + << description->name_ << "] load success"; return true; } @@ -127,52 +118,29 @@ bool PluginManager::FindPluginIndexAndLoad( AWARN << "plugin [" << plugin_name << "] already loaded"; continue; } - std::string plugin_description_file_path = ""; - if (!apollo::cyber::common::GetContent(plugin_index, - &plugin_description_file_path)) { - AWARN << "plugin index[" << plugin_index << "] name[" << plugin_name - << "] load failed, can not read index file"; - continue; - } - std::string actual_description_file_path = ""; - if (!apollo::cyber::common::GetFilePathWithEnv( - plugin_description_file_path, "APOLLO_PLUGIN_DESCRIPTION_PATH", - &actual_description_file_path)) { - AWARN << "plugin index[" << plugin_index << "] name[" << plugin_name - << "] load failed, description[" << plugin_description_file_path - << "] not found"; - continue; - } - std::string library_path = ""; - if (!ProcessPluginDescriptionFile(actual_description_file_path, - &library_path)) { - success = false; - // invalid description file - AWARN << "plugin index[" << plugin_index << "] name[" << plugin_name - << "] load failed, description[" << actual_description_file_path - << "] invalid"; - continue; - } - // try to detect the real path - std::string actual_library_path = ""; - if (!apollo::cyber::common::GetFilePathWithEnv( - library_path, "APOLLO_PLUGIN_LIB_PATH", &actual_library_path)) { + + auto description = std::make_shared(plugin_name); + if (!description->ParseFromIndexFile(plugin_index)) { success = false; - AWARN << "plugin index[" << plugin_index << "] name[" << plugin_name - << "] load failed, library[" << library_path << "] not found"; + // invalid index file continue; } - if (!class_loader_manager_.LoadLibrary(actual_library_path)) { - success = false; - AWARN << "plugin index[" << plugin_index << "] name[" << plugin_name - << "] load failed, library[" << actual_library_path << "] invalid"; - continue; + + // if (!class_loader_manager_.LoadLibrary(actual_library_path)) { + // success = false; + // AWARN << "plugin index[" << plugin_index << "] name[" << plugin_name + // << "] load failed, library[" << actual_library_path << "] + // invalid"; + // continue; + // } + // lazy load + plugin_loaded_map_[description->name_] = false; + plugin_description_map_[description->name_] = description; + for (auto& class_name_pair : description->class_name_base_class_name_map_) { + plugin_class_plugin_name_map_[class_name_pair] = description->name_; } - plugin_description_map_[plugin_name] = std::make_shared( - PluginDescription(plugin_name, plugin_index, - actual_description_file_path, actual_library_path)); - AINFO << "plugin index[" << plugin_index << "] name[" << plugin_name - << "] load success"; + AINFO << "plugin index[" << plugin_index << "] name[" << description->name_ + << "] lazy load success"; } return success; } @@ -224,6 +192,14 @@ bool PluginManager::LoadInstalledPlugins() { return true; } +bool PluginManager::LoadLibrary(const std::string& library_path) { + if (!class_loader_manager_.LoadLibrary(library_path)) { + AWARN << "plugin library[" << library_path << "] load failed"; + return false; + } + return true; +} + PluginManager* PluginManager::Instance() { return instance_; } PluginManager* PluginManager::instance_ = new PluginManager; diff --git a/cyber/plugin_manager/plugin_manager.h b/cyber/plugin_manager/plugin_manager.h index fc75d7087f1..85236874cd5 100644 --- a/cyber/plugin_manager/plugin_manager.h +++ b/cyber/plugin_manager/plugin_manager.h @@ -18,8 +18,12 @@ #include #include #include +#include + +#include #include "cyber/class_loader/class_loader_manager.h" +#include "cyber/common/environment.h" #include "cyber/common/file.h" #include "cyber/common/log.h" #include "cyber/common/macros.h" @@ -90,10 +94,46 @@ class PluginManager { template std::string GetPluginClassHomePath(const std::string& class_name); + /** + * @brief get plugin configuration file location + * @param class_name derived class name + * @param conf_name configuration file name + * @return location of plugin configuration file + */ + template + std::string GetPluginConfPath(const std::string& class_name, + const std::string& conf_name); + + /** + * @brief load library of plugin + * @param library_path library path + * @return result of loading library, true for success + */ + bool LoadLibrary(const std::string& library_path); + + /** + * @brief check if library of plugin is loaded + * @param class_name derived class name of plugin + * @return result of checking, true for loaded + */ + template + bool IsLibraryLoaded(const std::string& class_name); + + /** + * @brief check if library of plugin is loaded, and load it if not + * @param class_name derived class name of plugin + * @return result of checking, true for loaded + */ + template + bool CheckAndLoadPluginLibrary(const std::string& class_name); + private: apollo::cyber::class_loader::ClassLoaderManager class_loader_manager_; std::map> plugin_description_map_; + std::map plugin_loaded_map_; + std::map, std::string> + plugin_class_plugin_name_map_; static PluginManager* instance_; }; @@ -102,26 +142,109 @@ template std::shared_ptr PluginManager::CreateInstance( const std::string& derived_class) { AINFO << "creating plugin instance of " << derived_class; + if (!CheckAndLoadPluginLibrary(derived_class)) { + AERROR << "plugin of class " << derived_class << " have not been loaded"; + return nullptr; + } return class_loader_manager_.CreateClassObj(derived_class); } template std::string PluginManager::GetPluginClassHomePath( const std::string& class_name) { + if (!CheckAndLoadPluginLibrary(class_name)) { + AERROR << "plugin of class " << class_name << " have not been loaded"; + return ""; + } std::string library_path = class_loader_manager_.GetClassValidLibrary(class_name); if (library_path == "") { AWARN << "plugin of class " << class_name << " not found"; - return "."; + return ""; } for (auto it = plugin_description_map_.begin(); it != plugin_description_map_.end(); ++it) { - if (it->second->library_path_ == library_path) { - return apollo::cyber::common::GetDirName(it->second->description_path_); + if (it->second->actual_library_path_ == library_path) { + // TODO(liangjinping): remove hard code of relative prefix + std::string relative_prefix = "share/"; + std::string relative_plugin_home_path = + apollo::cyber::common::GetDirName(it->second->description_path_); + if (relative_plugin_home_path.rfind(relative_prefix, 0) == 0) { + relative_plugin_home_path = + relative_plugin_home_path.substr(relative_prefix.size()); + } + return relative_plugin_home_path; } } // not found - return "."; + return ""; +} + +template +std::string PluginManager::GetPluginConfPath(const std::string& class_name, + const std::string& conf_name) { + std::string plugin_home_path = GetPluginClassHomePath(class_name); + if (apollo::cyber::common::PathIsAbsolute(plugin_home_path)) { + // can not detect the plugin relative path + AWARN << "plugin of class " << class_name << " load from absolute path, " + << "conf path will be relative to it's description file"; + } + + std::string relative_conf_path = plugin_home_path + "/" + conf_name; + std::string actual_conf_path; + if (apollo::cyber::common::GetFilePathWithEnv( + relative_conf_path, "APOLLO_CONF_PATH", &actual_conf_path)) { + return actual_conf_path; + } + return plugin_home_path + "/" + conf_name; +} + +template +bool PluginManager::IsLibraryLoaded(const std::string& class_name) { + int status = 0; + std::string base_class_name = + abi::__cxa_demangle(typeid(Base).name(), 0, 0, &status); + if (plugin_class_plugin_name_map_.find({class_name, base_class_name}) == + plugin_class_plugin_name_map_.end()) { + // not found + return false; + } + std::string plugin_name = + plugin_class_plugin_name_map_[{class_name, base_class_name}]; + if (plugin_loaded_map_.find(plugin_name) == plugin_loaded_map_.end()) { + // not found + return false; + } + + return plugin_loaded_map_[plugin_name]; +} + +template +bool PluginManager::CheckAndLoadPluginLibrary(const std::string& class_name) { + if (IsLibraryLoaded(class_name)) { + return true; + } + int status = 0; + std::string base_class_name = + abi::__cxa_demangle(typeid(Base).name(), 0, 0, &status); + if (plugin_class_plugin_name_map_.find({class_name, base_class_name}) == + plugin_class_plugin_name_map_.end()) { + // not found + AWARN << "plugin of class " << class_name << " not found, " + << "please check if it's registered"; + return false; + } + std::string plugin_name = + plugin_class_plugin_name_map_[{class_name, base_class_name}]; + if (plugin_description_map_.find(plugin_name) == + plugin_description_map_.end()) { + // not found + AWARN << "plugin description of class " << class_name << " not found, " + << "please check if it's loaded"; + return false; + } + auto plugin_description = plugin_description_map_[plugin_name]; + return LoadLibrary(plugin_description->actual_library_path_); } #define CYBER_PLUGIN_MANAGER_REGISTER_PLUGIN(name, base) \ diff --git a/cyber/profiler/BUILD b/cyber/profiler/BUILD index 28cd4bcc49c..24ab2be341c 100644 --- a/cyber/profiler/BUILD +++ b/cyber/profiler/BUILD @@ -1,43 +1,33 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools/platform:build_defs.bzl", "if_profiler") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "block_manager", - srcs = [ - "block_manager.cc", - "block.cc", - "frame.cc", - ], +apollo_cc_library( + name = "cyber_profiler", hdrs = [ + "profiler.h", "block_manager.h", "block.h", "frame.h", ], - deps = [ - "//cyber/common", - "//cyber/croutine", + srcs = [ + "block_manager.cc", + "block.cc", + "frame.cc", ], -) - -cc_library( - name = "profiler", - hdrs = ["profiler.h"], deps = [ - ":block_manager", + "//cyber/common:cyber_common", + "//cyber/croutine:cyber_croutine", ], ) -cc_test( +apollo_cc_test( name = "profiler_test", size = "small", srcs = ["profiler_test.cc"], - copts = if_profiler(), deps = [ - ":profiler", + ":cyber_profiler", "@com_google_googletest//:gtest_main", ], linkstatic = True, diff --git a/cyber/proto/BUILD b/cyber/proto/BUILD index 8db5409c86e..118fb163568 100644 --- a/cyber/proto/BUILD +++ b/cyber/proto/BUILD @@ -111,4 +111,4 @@ proto_library( srcs = ["clock.proto"], ) -apollo_package() \ No newline at end of file +apollo_package() diff --git a/cyber/python/cyber_py3/cyber.py b/cyber/python/cyber_py3/cyber.py index 355776b522f..3d74d37c29e 100644 --- a/cyber/python/cyber_py3/cyber.py +++ b/cyber/python/cyber_py3/cyber.py @@ -32,12 +32,14 @@ PY_CALLBACK_TYPE_T = ctypes.CFUNCTYPE(ctypes.c_int, ctypes.c_char_p) # init vars -APOLLO_DISTRIBUTION_HOME = os.environ.get('APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') -wrapper_lib_path = os.path.abspath(os.path.join(os.path.dirname(__file__), - '../internal')) +APOLLO_DISTRIBUTION_HOME = os.environ.get( + 'APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') +wrapper_lib_path = os.path.abspath( + os.path.join(os.path.abspath(os.path.dirname(__file__)), '../internal')) + if not os.path.exists(wrapper_lib_path): wrapper_lib_path = wrapper_lib_path.replace( - os.path.join(APOLLO_DISTRIBUTION_HOME, "python"), "") + os.path.join(APOLLO_DISTRIBUTION_HOME, "python/"), "") wrapper_lib_path = os.path.join( APOLLO_DISTRIBUTION_HOME, "lib", wrapper_lib_path) diff --git a/cyber/python/cyber_py3/cyber_time.py b/cyber/python/cyber_py3/cyber_time.py index 130686f1fc2..564eb090799 100644 --- a/cyber/python/cyber_py3/cyber_time.py +++ b/cyber/python/cyber_py3/cyber_time.py @@ -24,12 +24,14 @@ # init vars -APOLLO_DISTRIBUTION_HOME = os.environ.get('APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') -wrapper_lib_path = os.path.abspath(os.path.join(os.path.dirname(__file__), - '../internal')) +APOLLO_DISTRIBUTION_HOME = os.environ.get( + 'APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') +wrapper_lib_path = os.path.abspath( + os.path.join(os.path.abspath(os.path.dirname(__file__)), '../internal')) + if not os.path.exists(wrapper_lib_path): wrapper_lib_path = wrapper_lib_path.replace( - os.path.join(APOLLO_DISTRIBUTION_HOME, "python"), "") + os.path.join(APOLLO_DISTRIBUTION_HOME, "python/"), "") wrapper_lib_path = os.path.join( APOLLO_DISTRIBUTION_HOME, "lib", wrapper_lib_path) diff --git a/cyber/python/cyber_py3/cyber_timer.py b/cyber/python/cyber_py3/cyber_timer.py index a18860d43ef..0c665c7d002 100644 --- a/cyber/python/cyber_py3/cyber_timer.py +++ b/cyber/python/cyber_py3/cyber_timer.py @@ -27,12 +27,14 @@ PY_TIMER_CB_TYPE = ctypes.CFUNCTYPE(ctypes.c_void_p) # init vars -APOLLO_DISTRIBUTION_HOME = os.environ.get('APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') -wrapper_lib_path = os.path.abspath(os.path.join(os.path.dirname(__file__), - '../internal')) +APOLLO_DISTRIBUTION_HOME = os.environ.get( + 'APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') +wrapper_lib_path = os.path.abspath( + os.path.join(os.path.abspath(os.path.dirname(__file__)), '../internal')) + if not os.path.exists(wrapper_lib_path): wrapper_lib_path = wrapper_lib_path.replace( - os.path.join(APOLLO_DISTRIBUTION_HOME, "python"), "") + os.path.join(APOLLO_DISTRIBUTION_HOME, "python/"), "") wrapper_lib_path = os.path.join( APOLLO_DISTRIBUTION_HOME, "lib", wrapper_lib_path) diff --git a/cyber/python/cyber_py3/parameter.py b/cyber/python/cyber_py3/parameter.py index 0580432a123..947a9883a09 100644 --- a/cyber/python/cyber_py3/parameter.py +++ b/cyber/python/cyber_py3/parameter.py @@ -26,12 +26,14 @@ # init vars CYBER_PATH = os.environ.get('CYBER_PATH', '/apollo/cyber') CYBER_DIR = os.path.split(CYBER_PATH)[0] -APOLLO_DISTRIBUTION_HOME = os.environ.get('APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') -wrapper_lib_path = os.path.abspath(os.path.join(os.path.dirname(__file__), - '../internal')) +APOLLO_DISTRIBUTION_HOME = os.environ.get( + 'APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') +wrapper_lib_path = os.path.abspath( + os.path.join(os.path.abspath(os.path.dirname(__file__)), '../internal')) + if not os.path.exists(wrapper_lib_path): wrapper_lib_path = wrapper_lib_path.replace( - os.path.join(APOLLO_DISTRIBUTION_HOME, "python"), "") + os.path.join(APOLLO_DISTRIBUTION_HOME, "python/"), "") wrapper_lib_path = os.path.join( APOLLO_DISTRIBUTION_HOME, "lib", wrapper_lib_path) diff --git a/cyber/python/cyber_py3/record.py b/cyber/python/cyber_py3/record.py index d47bb1b93b9..cfc87bdba44 100644 --- a/cyber/python/cyber_py3/record.py +++ b/cyber/python/cyber_py3/record.py @@ -27,12 +27,14 @@ # Refer to the _cyber_record_wrapper.so with relative path so that it can be # always addressed as a part of the runfiles. -APOLLO_DISTRIBUTION_HOME = os.environ.get('APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') -wrapper_lib_path = os.path.abspath(os.path.join(os.path.dirname(__file__), - '../internal')) +APOLLO_DISTRIBUTION_HOME = os.environ.get( + 'APOLLO_DISTRIBUTION_HOME', '/opt/apollo/neo') +wrapper_lib_path = os.path.abspath( + os.path.join(os.path.abspath(os.path.dirname(__file__)), '../internal')) + if not os.path.exists(wrapper_lib_path): wrapper_lib_path = wrapper_lib_path.replace( - os.path.join(APOLLO_DISTRIBUTION_HOME, "python"), "") + os.path.join(APOLLO_DISTRIBUTION_HOME, "python/"), "") wrapper_lib_path = os.path.join( APOLLO_DISTRIBUTION_HOME, "lib", wrapper_lib_path) diff --git a/cyber/python/internal/BUILD b/cyber/python/internal/BUILD index cf32f234361..45e5266ea47 100644 --- a/cyber/python/internal/BUILD +++ b/cyber/python/internal/BUILD @@ -43,7 +43,7 @@ cc_library( hdrs = ["py_cyber.h"], #alwayslink = True, deps = [ - "//cyber:cyber_core", + "//cyber", "@local_config_python//:python_headers", "@local_config_python//:python_lib", ], @@ -77,8 +77,8 @@ cc_library( hdrs = ["py_record.h"], #alwayslink = True, deps = [ - "//cyber:cyber_core", - "//cyber/message:py_message", + "//cyber", + "//cyber/message:cyber_message", "@local_config_python//:python_headers", "@local_config_python//:python_lib", ], @@ -113,7 +113,7 @@ cc_library( hdrs = ["py_time.h"], #alwayslink = True, deps = [ - "//cyber:cyber_core", + "//cyber", "@fastrtps", "@local_config_python//:python_headers", "@local_config_python//:python_lib", @@ -136,7 +136,7 @@ cc_library( hdrs = ["py_timer.h"], #alwayslink = True, deps = [ - "//cyber:cyber_core", + "//cyber", "@local_config_python//:python_headers", "@local_config_python//:python_lib", ], @@ -159,7 +159,7 @@ cc_library( #alwayslink = True, deps = [ ":py_cyber", - "//cyber:cyber_core", + "//cyber", "@local_config_python//:python_headers", "@local_config_python//:python_lib", ], diff --git a/cyber/record/BUILD b/cyber/record/BUILD index 66fbe73fb18..cfd0737b0b7 100644 --- a/cyber/record/BUILD +++ b/cyber/record/BUILD @@ -1,61 +1,42 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "record", - deps = [ - ":record_reader", - ":record_viewer", - ":record_writer", - ], - alwayslink = True, -) - -cc_library( - name = "record_file_base", - srcs = ["file/record_file_base.cc"], - hdrs = ["file/record_file_base.h"], - deps = [ - "//cyber/common:log", - "//cyber/proto:record_cc_proto", +apollo_cc_library( + name = "cyber_record", + srcs = [ + "header_builder.cc", + "record_reader.cc", + "record_viewer.cc", + "record_writer.cc", + "file/record_file_base.cc", + "file/record_file_reader.cc", + "file/record_file_writer.cc", ], -) - -cc_library( - name = "record_file_reader", - srcs = ["file/record_file_reader.cc"], - hdrs = ["file/record_file_reader.h"], - deps = [ - ":record_file_base", - ":section", - "//cyber/common:file", - "//cyber/time", - "@com_google_protobuf//:protobuf", + hdrs = [ + "header_builder.h", + "record_base.h", + "record_message.h", + "record_reader.h", + "record_viewer.h", + "record_writer.h", + "file/record_file_base.h", + "file/record_file_reader.h", + "file/record_file_writer.h", + "file/section.h", ], -) - -cc_library( - name = "record_file_writer", - srcs = ["file/record_file_writer.cc"], - hdrs = ["file/record_file_writer.h"], deps = [ - ":record_file_base", - ":section", - "//cyber/common:file", - "//cyber/time", + "//cyber/common:cyber_common", + "//cyber/proto:record_cc_proto", + "//cyber/time:cyber_time", "@com_google_protobuf//:protobuf", + "//cyber/message:cyber_message", ], ) -cc_library( - name = "section", - hdrs = ["file/section.h"], -) -cc_test( +apollo_cc_test( name = "record_file_test", size = "small", srcs = ["file/record_file_test.cc"], @@ -66,7 +47,7 @@ cc_test( ], ) -cc_test( +apollo_cc_test( name = "record_file_integration_test", size = "small", srcs = ["file/record_file_integration_test.cc"], @@ -82,41 +63,7 @@ cc_test( ], ) -cc_library( - name = "header_builder", - srcs = ["header_builder.cc"], - hdrs = ["header_builder.h"], - deps = [ - "//cyber/proto:record_cc_proto", - ], -) - -cc_library( - name = "record_base", - hdrs = ["record_base.h"], - deps = [ - "//cyber/proto:record_cc_proto", - ], -) - -cc_library( - name = "record_message", - hdrs = ["record_message.h"], -) - -cc_library( - name = "record_reader", - srcs = ["record_reader.cc"], - hdrs = ["record_reader.h"], - deps = [ - ":record_base", - ":record_file_reader", - ":record_message", - ], - alwayslink = True, -) - -cc_test( +apollo_cc_test( name = "record_reader_test", size = "small", srcs = ["record_reader_test.cc"], @@ -127,18 +74,7 @@ cc_test( ], ) -cc_library( - name = "record_viewer", - srcs = ["record_viewer.cc"], - hdrs = ["record_viewer.h"], - deps = [ - ":record_message", - ":record_reader", - ], - alwayslink = True, -) - -cc_test( +apollo_cc_test( name = "record_viewer_test", size = "small", srcs = ["record_viewer_test.cc"], @@ -149,20 +85,5 @@ cc_test( ], ) -cc_library( - name = "record_writer", - srcs = ["record_writer.cc"], - hdrs = ["record_writer.h"], - deps = [ - ":header_builder", - ":record_base", - ":record_file_writer", - "//cyber/message:message_traits", - "//cyber/message:raw_message", - "//cyber/proto:record_cc_proto", - ], - alwayslink = True, -) - apollo_package() cpplint() diff --git a/cyber/scheduler/BUILD b/cyber/scheduler/BUILD index a01c224fc13..31f59697263 100644 --- a/cyber/scheduler/BUILD +++ b/cyber/scheduler/BUILD @@ -1,125 +1,47 @@ load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_scheduler_hdrs", -# srcs = glob([ -# "*.h", -# "**/*.h" -# ]), -# ) - -cc_library( - name = "processor", - srcs = ["processor.cc"], - hdrs = ["processor.h"], - deps = [ - "//cyber/data", - "//cyber/scheduler:processor_context", +apollo_cc_library( + name = "cyber_scheduler", + srcs = [ + "processor.cc", + "processor_context.cc", + "scheduler.cc", + "scheduler_factory.cc", + "common/pin_thread.cc", + "policy/choreography_context.cc", + "policy/classic_context.cc", + "policy/scheduler_choreography.cc", + "policy/scheduler_classic.cc", ], -) - -cc_library( - name = "processor_context", - srcs = ["processor_context.cc"], - hdrs = ["processor_context.h"], - deps = [ - "//cyber/croutine", - "//cyber/data", - ], -) - -cc_library( - name = "scheduler", - srcs = ["scheduler.cc"], - hdrs = ["scheduler.h"], - deps = [ - "//cyber/croutine", - "//cyber/scheduler:mutex_wrapper", - "//cyber/scheduler:pin_thread", - "//cyber/scheduler:processor", + hdrs = [ + "processor.h", + "processor_context.h", + "scheduler.h", + "scheduler_factory.h", + "common/cv_wrapper.h", + "common/mutex_wrapper.h", + "common/pin_thread.h", + "policy/choreography_context.h", + "policy/classic_context.h", + "policy/scheduler_choreography.h", + "policy/scheduler_classic.h", ], -) - -cc_library( - name = "mutex_wrapper", - hdrs = ["common/mutex_wrapper.h"], -) - -cc_library( - name = "cv_wrapper", - hdrs = ["common/cv_wrapper.h"], -) - -cc_library( - name = "pin_thread", - srcs = ["common/pin_thread.cc"], - hdrs = ["common/pin_thread.h"], - deps = [ - "//cyber/common:log", - ], -) - -cc_library( - name = "scheduler_factory", - srcs = ["scheduler_factory.cc"], - hdrs = ["scheduler_factory.h"], deps = [ + "//cyber/croutine:cyber_croutine", + "//cyber/data:cyber_data", + "//cyber/common:cyber_common", + "//cyber/time:cyber_time", "//cyber/proto:component_conf_cc_proto", - "//cyber/scheduler:scheduler_choreography", - "//cyber/scheduler:scheduler_classic", - ], -) - -cc_library( - name = "scheduler_choreography", - srcs = ["policy/scheduler_choreography.cc"], - hdrs = ["policy/scheduler_choreography.h"], - deps = [ - "//cyber/scheduler", - "//cyber/scheduler:choreography_context", - "//cyber/scheduler:classic_context", - ], -) - -cc_library( - name = "scheduler_classic", - srcs = ["policy/scheduler_classic.cc"], - hdrs = ["policy/scheduler_classic.h"], - deps = [ - "//cyber/scheduler", - "//cyber/scheduler:classic_context", - ], -) - -cc_library( - name = "choreography_context", - srcs = ["policy/choreography_context.cc"], - hdrs = ["policy/choreography_context.h"], - deps = [ - "//cyber/croutine", "//cyber/proto:choreography_conf_cc_proto", - "//cyber/scheduler:processor", - ], -) - -cc_library( - name = "classic_context", - srcs = ["policy/classic_context.cc"], - hdrs = ["policy/classic_context.h"], - deps = [ - "//cyber/croutine", "//cyber/proto:classic_conf_cc_proto", - "//cyber/scheduler:cv_wrapper", - "//cyber/scheduler:mutex_wrapper", - "//cyber/scheduler:processor", ], ) -cc_test( +apollo_cc_test( name = "scheduler_test", size = "small", srcs = ["scheduler_test.cc"], @@ -130,7 +52,7 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "scheduler_classic_test", size = "small", srcs = ["scheduler_classic_test.cc"], @@ -141,7 +63,7 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "scheduler_choreo_test", size = "small", srcs = ["scheduler_choreo_test.cc"], @@ -152,7 +74,7 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "processor_test", size = "small", srcs = ["processor_test.cc"], @@ -163,7 +85,7 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "pin_thread_test", size = "small", srcs = ["common/pin_thread_test.cc"], diff --git a/cyber/service/BUILD b/cyber/service/BUILD index 753627a712e..4856752b499 100644 --- a/cyber/service/BUILD +++ b/cyber/service/BUILD @@ -1,42 +1,22 @@ load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_service_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "client", - hdrs = ["client.h"], - deps = [ - ":client_base", +apollo_cc_library( + name = "cyber_service", + hdrs = [ + "client.h", + "service.h", + "service_base.h", + "client_base.h" ], -) - -cc_library( - name = "client_base", - hdrs = ["client_base.h"], -) - -cc_library( - name = "service", - hdrs = ["service.h"], deps = [ - ":service_base", - "//cyber/scheduler", + "//cyber/scheduler:cyber_scheduler", ], ) -cc_library( - name = "service_base", - hdrs = ["service_base.h"], -) - apollo_package() + cpplint() diff --git a/cyber/service_discovery/BUILD b/cyber/service_discovery/BUILD index 39adbb03764..aa8ccb42c4b 100644 --- a/cyber/service_discovery/BUILD +++ b/cyber/service_discovery/BUILD @@ -1,31 +1,62 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_service_discovery_hdrs", -# srcs = glob([ -# "*.h", -# "**/*.h", -# ]), -# ) +apollo_cc_library( + name = "cyber_service_discovery", + srcs = [ + "topology_manager.cc", + "communication/participant_listener.cc", + "communication/subscriber_listener.cc", + "container/graph.cc", + "container/multi_value_warehouse.cc", + "container/single_value_warehouse.cc", + "specific_manager/channel_manager.cc", + "specific_manager/manager.cc", + "specific_manager/node_manager.cc", + "specific_manager/service_manager.cc", + ], + hdrs = [ + "topology_manager.h", + "communication/participant_listener.h", + "communication/subscriber_listener.h", + "container/graph.h", + "container/multi_value_warehouse.h", + "container/single_value_warehouse.h", + "container/warehouse_base.h", + "specific_manager/channel_manager.h", + "specific_manager/manager.h", + "specific_manager/node_manager.h", + "specific_manager/service_manager.h", + ], + deps = [ + "//cyber/transport:cyber_transport", + "//cyber/base:cyber_base", + "//cyber/common:cyber_common", + "//cyber:cyber_binary", + "//cyber/proto:role_attributes_cc_proto", + "@fastrtps", + "//cyber:cyber_state", + "//cyber/message:cyber_message", + "//cyber/proto:proto_desc_cc_proto", + "//cyber/proto:topology_change_cc_proto", + "//cyber/time:cyber_time", + ], +) -cc_library( - name = "topology_manager", - srcs = ["topology_manager.cc"], - hdrs = ["topology_manager.h"], +apollo_cc_library( + name = "cyber_service_discovery_role", + srcs = ["role/role.cc"], + hdrs = ["role/role.h"], deps = [ - ":channel_manager", - ":node_manager", - ":service_manager", - "//cyber/service_discovery/communication:participant_listener", - "//cyber/transport/rtps:participant", + "//cyber:cyber_binary", + "//cyber/common:cyber_common", + "//cyber/proto:role_attributes_cc_proto", ], ) -cc_test( +apollo_cc_test( name = "topology_manager_test", size = "small", srcs = ["topology_manager_test.cc"], @@ -35,14 +66,7 @@ cc_test( ], ) -cc_library( - name = "graph", - srcs = ["container/graph.cc"], - hdrs = ["container/graph.h"], - deps = ["//cyber/base:atomic_rw_lock"], -) - -cc_test( +apollo_cc_test( name = "graph_test", size = "small", srcs = ["container/graph_test.cc"], @@ -53,65 +77,27 @@ cc_test( linkstatic = True, ) -cc_library( - name = "multi_value_warehouse", - srcs = ["container/multi_value_warehouse.cc"], - hdrs = ["container/multi_value_warehouse.h"], - deps = [ - ":warehouse_base", - "//cyber/base:atomic_rw_lock", - ], -) - -cc_test( +apollo_cc_test( name = "multi_value_warehouse_test", size = "small", srcs = ["container/multi_value_warehouse_test.cc"], deps = [ - ":multi_value_warehouse", + ":cyber_service_discovery", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "single_value_warehouse", - srcs = ["container/single_value_warehouse.cc"], - hdrs = ["container/single_value_warehouse.h"], - deps = [ - ":warehouse_base", - "//cyber/base:atomic_rw_lock", - ], -) - -cc_test( +apollo_cc_test( name = "single_value_warehouse_test", size = "small", srcs = ["container/single_value_warehouse_test.cc"], deps = [ - ":single_value_warehouse", + ":cyber_service_discovery", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "warehouse_base", - hdrs = ["container/warehouse_base.h"], - deps = ["role"], -) - -cc_library( - name = "role", - srcs = ["role/role.cc"], - hdrs = ["role/role.h"], - deps = [ - "//cyber:binary", - "//cyber/common:log", - "//cyber/common:types", - "//cyber/proto:role_attributes_cc_proto", - ], -) - -cc_test( +apollo_cc_test( name = "role_test", size = "small", srcs = ["role/role_test.cc"], @@ -121,40 +107,7 @@ cc_test( ], ) -cc_library( - name = "manager", - srcs = ["specific_manager/manager.cc"], - hdrs = ["specific_manager/manager.h"], - deps = [ - "//cyber:state", - "//cyber/base:signal", - "//cyber/message:message_traits", - "//cyber/message:protobuf_factory", - "//cyber/proto:proto_desc_cc_proto", - "//cyber/proto:role_attributes_cc_proto", - "//cyber/proto:topology_change_cc_proto", - "//cyber/service_discovery/communication:subscriber_listener", - "//cyber/time", - "//cyber/transport/qos", - "//cyber/transport/rtps:attributes_filler", - "//cyber/transport/rtps:underlay_message_type", - "@fastrtps", - ], -) - -cc_library( - name = "channel_manager", - srcs = ["specific_manager/channel_manager.cc"], - hdrs = ["specific_manager/channel_manager.h"], - deps = [ - ":graph", - ":manager", - ":multi_value_warehouse", - ":single_value_warehouse", - ], -) - -cc_test( +apollo_cc_test( name = "channel_manager_test", size = "small", srcs = ["specific_manager/channel_manager_test.cc"], @@ -166,18 +119,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "node_manager", - srcs = ["specific_manager/node_manager.cc"], - hdrs = ["specific_manager/node_manager.h"], - deps = [ - ":manager", - ":multi_value_warehouse", - ":single_value_warehouse", - ], -) - -cc_test( +apollo_cc_test( name = "node_manager_test", size = "small", srcs = ["specific_manager/node_manager_test.cc"], @@ -188,18 +130,7 @@ cc_test( linkstatic = True, ) -cc_library( - name = "service_manager", - srcs = ["specific_manager/service_manager.cc"], - hdrs = ["specific_manager/service_manager.h"], - deps = [ - ":manager", - ":multi_value_warehouse", - ":single_value_warehouse", - ], -) - -cc_test( +apollo_cc_test( name = "service_manager_test", size = "small", srcs = ["specific_manager/service_manager_test.cc"], diff --git a/cyber/service_discovery/communication/BUILD b/cyber/service_discovery/communication/BUILD deleted file mode 100644 index 80bff15c644..00000000000 --- a/cyber/service_discovery/communication/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_service_discovery_communication_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "participant_listener", - srcs = ["participant_listener.cc"], - hdrs = ["participant_listener.h"], - deps = [ - "//cyber/common:log", - "@fastrtps", - ], -) - -cc_library( - name = "subscriber_listener", - srcs = ["subscriber_listener.cc"], - hdrs = ["subscriber_listener.h"], - deps = [ - "//cyber/common:log", - "//cyber/transport/rtps:underlay_message", - "//cyber/transport/rtps:underlay_message_type", - "@fastrtps", - ], -) - -apollo_package() -cpplint() diff --git a/cyber/sysmo/BUILD b/cyber/sysmo/BUILD index 4f9893f1594..9cbc0c5ab09 100644 --- a/cyber/sysmo/BUILD +++ b/cyber/sysmo/BUILD @@ -1,33 +1,25 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_sysmo_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_test( +apollo_cc_test( name = "sysmo_test", size = "small", srcs = ["sysmo_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "@com_google_googletest//:gtest_main", ], linkstatic = True, ) -cc_library( - name = "sysmo", +apollo_cc_library( + name = "cyber_sysmo", srcs = ["sysmo.cc"], hdrs = ["sysmo.h"], deps = [ - "//cyber/scheduler:scheduler_factory", + "//cyber/scheduler:cyber_scheduler", ], ) diff --git a/cyber/task/BUILD b/cyber/task/BUILD index 930b2046370..86a8c008f27 100644 --- a/cyber/task/BUILD +++ b/cyber/task/BUILD @@ -1,44 +1,28 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_task_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "task", - hdrs = ["task.h"], +apollo_cc_library( + name = "cyber_task", + hdrs = ["task.h", "task_manager.h"], + srcs = ["task_manager.cc"], + copts = ["-faligned-new"], deps = [ - ":task_manager", + "//cyber/scheduler:cyber_scheduler", ], ) -cc_test( +apollo_cc_test( name = "task_test", size = "small", srcs = ["task_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "@com_google_googletest//:gtest_main", ], linkstatic = True, ) -cc_library( - name = "task_manager", - srcs = ["task_manager.cc"], - hdrs = ["task_manager.h"], - copts = ["-faligned-new"], - deps = [ - "//cyber/scheduler:scheduler_factory", - ], -) - apollo_package() cpplint() diff --git a/cyber/time/BUILD b/cyber/time/BUILD index 921241df4d6..132576b3ddf 100644 --- a/cyber/time/BUILD +++ b/cyber/time/BUILD @@ -1,84 +1,55 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_time_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "time", - srcs = ["time.cc"], - hdrs = ["time.h"], +apollo_cc_library( + name = "cyber_time", + srcs = [ + "clock.cc", + "duration.cc", + "rate.cc", + "time.cc", + ], + hdrs = [ + "clock.h", + "duration.h", + "rate.h", + "time.h", + ], deps = [ - ":duration", + "//cyber/common:cyber_common", + "//cyber/base:cyber_base", + "//cyber/proto:run_mode_conf_cc_proto", ], ) -cc_test( +apollo_cc_test( name = "time_test", size = "small", srcs = ["time_test.cc"], deps = [ - ":time", + ":cyber_time", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "rate", - srcs = ["rate.cc"], - hdrs = ["rate.h"], - deps = [ - ":duration", - ":time", - "//cyber/common:log", - ], -) - -cc_library( - name = "duration", - srcs = ["duration.cc"], - hdrs = ["duration.h"], -) - -cc_test( +apollo_cc_test( name = "duration_test", size = "small", srcs = ["duration_test.cc"], deps = [ - ":duration", - ":time", + ":cyber_time", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "clock", - srcs = ["clock.cc"], - hdrs = ["clock.h"], - deps = [ - ":time", - "//cyber/base:atomic_rw_lock", - "//cyber/common:global_data", - "//cyber/common:log", - "//cyber/common:macros", - "//cyber/common:util", - "//cyber/proto:run_mode_conf_cc_proto", - ], -) - -cc_test( +apollo_cc_test( name = "clock_test", size = "small", srcs = ["clock_test.cc"], deps = [ - ":clock", + ":cyber_time", "@com_google_googletest//:gtest_main", ], ) diff --git a/cyber/timer/BUILD b/cyber/timer/BUILD index 0e71f441273..38fea06924b 100644 --- a/cyber/timer/BUILD +++ b/cyber/timer/BUILD @@ -1,58 +1,33 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_timer_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "timer", - srcs = ["timer.cc"], - hdrs = ["timer.h"], - deps = [ - ":timing_wheel", - "//cyber/common:global_data", +apollo_cc_library( + name = "cyber_timer", + srcs = [ + "timer.cc", + "timing_wheel.cc", ], -) - -cc_library( - name = "timer_task", - hdrs = ["timer_task.h"], -) - -cc_library( - name = "timer_bucket", - hdrs = ["timer_bucket.h"], - deps = [ - ":timer_task", + hdrs = [ + "timer.h", + "timer_task.h", + "timer_bucket.h", + "timing_wheel.h" ], -) - -cc_library( - name = "timing_wheel", - srcs = ["timing_wheel.cc"], - hdrs = ["timing_wheel.h"], deps = [ - ":timer_bucket", - "//cyber/task", - "//cyber/time", - "//cyber/time:duration", - "//cyber/time:rate", + "//cyber/common:cyber_common", + "//cyber/task:cyber_task", + "//cyber/time:cyber_time", ], ) -cc_test( +apollo_cc_test( name = "timer_test", size = "small", srcs = ["timer_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "@com_google_googletest//:gtest_main", ], linkstatic = True, diff --git a/cyber/tools/BUILD b/cyber/tools/BUILD index 5b0edf99f61..49a06be7f19 100644 --- a/cyber/tools/BUILD +++ b/cyber/tools/BUILD @@ -1,20 +1,7 @@ -# load("//tools/install:install.bzl", "install") load("//tools:apollo_package.bzl", "apollo_package") package( default_visibility = ["//visibility:public"], ) -# install( -# name = "install", -# deps = [ -# "//cyber/tools/cyber_launch:install", -# "//cyber/tools/cyber_monitor:install", -# "//cyber/tools/cyber_recorder:install", -# "//cyber/tools/cyber_channel:install", -# "//cyber/tools/cyber_node:install", -# "//cyber/tools/cyber_service:install", -# ], -# ) - apollo_package() \ No newline at end of file diff --git a/cyber/tools/cyber_monitor/BUILD b/cyber/tools/cyber_monitor/BUILD index c171fba5b3d..0eb42142e08 100644 --- a/cyber/tools/cyber_monitor/BUILD +++ b/cyber/tools/cyber_monitor/BUILD @@ -1,19 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "cyber/bin", -# targets = [ -# ":cyber_monitor", -# ], -# ) -cc_binary( +apollo_cc_binary( name = "cyber_monitor", srcs = [ "cyber_topology_message.cc", @@ -23,69 +14,19 @@ cc_binary( "main.cc", "renderable_message.cc", "screen.cc", + "cyber_topology_message.h", + "general_channel_message.h", + "general_message.h", + "general_message_base.h", + "renderable_message.h", + "screen.h", ], linkopts = ["-pthread"], deps = [ - ":cyber_topology_message", - ":general_channel_message", - ":screen", - "//cyber:init", - "//cyber/service_discovery:topology_manager", - "@ncurses5", - ], -) - -cc_library( - name = "cyber_topology_message", - hdrs = ["cyber_topology_message.h"], - deps = [ - ":renderable_message", - ], -) - -cc_library( - name = "general_channel_message", - hdrs = ["general_channel_message.h"], - deps = [ - ":general_message", - ":general_message_base", - ":screen", "//cyber", - "//cyber/message:raw_message", - "//cyber/record:record_message", - ], -) - -cc_library( - name = "general_message", - hdrs = ["general_message.h"], - deps = [ - ":general_message_base", - "//cyber", - "//cyber/message:raw_message", - ], -) - -cc_library( - name = "general_message_base", - hdrs = ["general_message_base.h"], - deps = [ - ":renderable_message", - ], -) - -cc_library( - name = "renderable_message", - hdrs = ["renderable_message.h"], - deps = [ - ":screen", + "@ncurses5", ], ) -cc_library( - name = "screen", - hdrs = ["screen.h"], -) - apollo_package() cpplint() diff --git a/cyber/tools/cyber_monitor/general_message.cc b/cyber/tools/cyber_monitor/general_message.cc index 4ebbb391ee8..79b5e9f0afb 100644 --- a/cyber/tools/cyber_monitor/general_message.cc +++ b/cyber/tools/cyber_monitor/general_message.cc @@ -16,8 +16,11 @@ #include "cyber/tools/cyber_monitor/general_message.h" +#include #include #include +#include +#include #include #include diff --git a/cyber/tools/cyber_monitor/screen.cc b/cyber/tools/cyber_monitor/screen.cc index ecce8f6c3fb..114bb0f3422 100644 --- a/cyber/tools/cyber_monitor/screen.cc +++ b/cyber/tools/cyber_monitor/screen.cc @@ -18,11 +18,13 @@ #include +#include #include #include #include #include #include +#include #include "cyber/tools/cyber_monitor/cyber_topology_message.h" #include "cyber/tools/cyber_monitor/general_channel_message.h" diff --git a/cyber/tools/cyber_recorder/BUILD b/cyber/tools/cyber_recorder/BUILD index 1ce0a5b28d0..e589b41f820 100644 --- a/cyber/tools/cyber_recorder/BUILD +++ b/cyber/tools/cyber_recorder/BUILD @@ -1,84 +1,39 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_binary") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "cyber/bin", -# targets = [ -# ":cyber_recorder", -# ], -# ) - -cc_binary( +apollo_cc_binary( name = "cyber_recorder", - srcs = ["main.cc"], + srcs = [ + "main.cc", "info.cc", "info.h", "recoverer.cc", + "recoverer.h", "spliter.cc", "spliter.h", + "player/play_task.cc", "player/play_task_buffer.cc", + "player/play_task_consumer.cc", "player/play_task_producer.cc", + "player/player.cc", "player/play_param.h", "player/play_task.h", + "player/play_task_buffer.h", "player/play_task_consumer.h", + "player/play_task_producer.h", "player/player.h", + ], linkopts = ["-pthread"], deps = [ - ":info", ":recorder", - ":recoverer", - ":spliter", - "//cyber:init", - "//cyber/common:file", - "//cyber/common:time_conversion", - "//cyber/tools/cyber_recorder/player", - ], -) - -cc_library( - name = "info", - srcs = ["info.cc"], - hdrs = ["info.h"], - deps = [ - "//cyber/common:time_conversion", + "//cyber", "//cyber/proto:record_cc_proto", - "//cyber/record:record_file_reader", - "//cyber/record:record_message", ], ) -cc_library( +apollo_cc_library( name = "recorder", srcs = ["recorder.cc"], hdrs = ["recorder.h"], deps = [ "//cyber", - "//cyber/common:log", + "//cyber/common:cyber_common", "//cyber/proto:record_cc_proto", "@fastrtps", ], ) -cc_library( - name = "recoverer", - srcs = ["recoverer.cc"], - hdrs = ["recoverer.h"], - deps = [ - "//cyber/base:for_each", - "//cyber/common:log", - "//cyber/proto:record_cc_proto", - "//cyber/record:header_builder", - "//cyber/record:record_file_reader", - "//cyber/record:record_writer", - ], -) - -cc_library( - name = "spliter", - srcs = ["spliter.cc"], - hdrs = ["spliter.h"], - deps = [ - "//cyber/common:log", - "//cyber/proto:record_cc_proto", - "//cyber/record:header_builder", - "//cyber/record:record_file_reader", - "//cyber/record:record_writer", - ], -) - apollo_package() + cpplint() diff --git a/cyber/tools/cyber_recorder/player/BUILD b/cyber/tools/cyber_recorder/player/BUILD deleted file mode 100644 index 071542a9e5b..00000000000 --- a/cyber/tools/cyber_recorder/player/BUILD +++ /dev/null @@ -1,75 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "play_param", - hdrs = ["play_param.h"], -) - -cc_library( - name = "play_task", - srcs = ["play_task.cc"], - hdrs = ["play_task.h"], - deps = [ - "//cyber/common:log", - "//cyber/message:raw_message", - "//cyber/node:writer", - ], -) - -cc_library( - name = "play_task_buffer", - srcs = ["play_task_buffer.cc"], - hdrs = ["play_task_buffer.h"], - deps = [ - ":play_task", - ], -) - -cc_library( - name = "play_task_consumer", - srcs = ["play_task_consumer.cc"], - hdrs = ["play_task_consumer.h"], - deps = [ - ":play_task_buffer", - "//cyber/common:log", - "//cyber/time", - ], -) - -cc_library( - name = "play_task_producer", - srcs = ["play_task_producer.cc"], - hdrs = ["play_task_producer.h"], - deps = [ - ":play_param", - ":play_task_buffer", - "//cyber", - "//cyber/common:log", - "//cyber/message:protobuf_factory", - "//cyber/message:raw_message", - "//cyber/node", - "//cyber/node:writer", - "//cyber/record:record_reader", - "//cyber/record:record_viewer", - ], -) - -cc_library( - name = "player", - srcs = ["player.cc"], - hdrs = ["player.h"], - deps = [ - ":play_param", - ":play_task_buffer", - ":play_task_consumer", - ":play_task_producer", - "//cyber:init", - ], -) - -apollo_package() -cpplint() diff --git a/cyber/transport/BUILD b/cyber/transport/BUILD index af59468c1e4..fdacc69f3c3 100644 --- a/cyber/transport/BUILD +++ b/cyber/transport/BUILD @@ -1,49 +1,176 @@ load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# filegroup( -# name = "cyber_transport_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "transport", - srcs = ["transport.cc"], - hdrs = ["transport.h"], - deps = [ - "//cyber/service_discovery:role", - "//cyber/task", - "//cyber/transport/dispatcher:intra_dispatcher", - "//cyber/transport/dispatcher:rtps_dispatcher", - "//cyber/transport/dispatcher:shm_dispatcher", - "//cyber/transport/message:history", - "//cyber/transport/qos", - "//cyber/transport/receiver", - "//cyber/transport/rtps:attributes_filler", - "//cyber/transport/rtps:participant", - "//cyber/transport/rtps:sub_listener", - "//cyber/transport/rtps:underlay_message", - "//cyber/transport/rtps:underlay_message_type", - "//cyber/transport/transmitter", +apollo_cc_library( + name = "cyber_transport", + srcs = [ + 'transport.cc', 'shm/segment.cc', 'shm/condition_notifier.cc', + 'shm/segment_factory.cc', 'shm/posix_segment.cc', 'shm/state.cc', + 'shm/multicast_notifier.cc', 'shm/block.cc', 'shm/shm_conf.cc', + 'shm/xsi_segment.cc', 'shm/readable_info.cc', 'shm/notifier_factory.cc', + 'qos/qos_profile_conf.cc', 'common/identity.cc', 'common/endpoint.cc', + 'dispatcher/intra_dispatcher.cc', 'dispatcher/shm_dispatcher.cc', + 'dispatcher/rtps_dispatcher.cc', 'dispatcher/dispatcher.cc', + 'message/message_info.cc', 'rtps/participant.cc', 'rtps/attributes_filler.cc', + 'rtps/sub_listener.cc', 'rtps/underlay_message_type.cc', + 'rtps/underlay_message.cc' + ], + hdrs = [ + 'transport.h', 'shm/state.h', 'shm/xsi_segment.h', + 'shm/notifier_factory.h', 'shm/block.h', 'shm/shm_conf.h', + 'shm/readable_info.h', 'shm/posix_segment.h', 'shm/segment_factory.h', + 'shm/multicast_notifier.h', 'shm/segment.h', 'shm/notifier_base.h', + 'shm/condition_notifier.h', 'qos/qos_profile_conf.h', 'common/identity.h', + 'common/endpoint.h', 'receiver/hybrid_receiver.h', 'receiver/shm_receiver.h', + 'receiver/receiver.h', 'receiver/intra_receiver.h', 'receiver/rtps_receiver.h', + 'transmitter/rtps_transmitter.h', 'transmitter/transmitter.h', + 'transmitter/shm_transmitter.h', 'transmitter/hybrid_transmitter.h', + 'transmitter/intra_transmitter.h', 'dispatcher/dispatcher.h', + 'dispatcher/intra_dispatcher.h', 'dispatcher/rtps_dispatcher.h', + 'dispatcher/shm_dispatcher.h', 'message/history.h', 'message/listener_handler.h', + 'message/history_attributes.h', 'message/message_info.h', + 'rtps/attributes_filler.h', 'rtps/underlay_message.h', 'rtps/participant.h', + 'rtps/sub_listener.h', 'rtps/underlay_message_type.h' + ], + linkopts = ["-lrt"], + deps = [ "@fastrtps", + "@uuid", + "//cyber/service_discovery:cyber_service_discovery_role", + "//cyber/task:cyber_task", + "//cyber/common:cyber_common", + "//cyber/proto:role_attributes_cc_proto", + "//cyber/message:cyber_message", + "//cyber/proto:proto_desc_cc_proto", + "//cyber/scheduler:cyber_scheduler", + "//cyber/proto:qos_profile_cc_proto", + "//cyber/base:cyber_base", + "//cyber/event:cyber_event", + ], +) + +apollo_cc_test( + name = "condition_notifier_test", + size = "small", + srcs = ["shm/condition_notifier_test.cc"], + tags = ["exclusive"], + deps = [ + "//cyber", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "rtps_test", + size = "small", + srcs = ["rtps/rtps_test.cc"], + deps = [ + "//cyber", + "@com_google_googletest//:gtest_main", + "@fastrtps", + ], +) + +apollo_cc_test( + name = "message_info_test", + size = "small", + srcs = ["message/message_info_test.cc"], + deps = [ + "//cyber", + "@com_google_googletest//:gtest_main", ], + linkstatic = True, ) -cc_test( +apollo_cc_test( + name = "message_test", + size = "small", + srcs = ["message/message_test.cc"], + deps = [ + "//cyber", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "endpoint_test", + size = "small", + srcs = ["common/endpoint_test.cc"], + deps = [ + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "identity_test", + size = "small", + srcs = ["common/identity_test.cc"], + deps = [ + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( name = "transport_test", size = "small", srcs = ["transport_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "//cyber/proto:unit_test_cc_proto", "@com_google_googletest//:gtest", ], ) +apollo_cc_test( + name = "dispatcher_test", + size = "small", + srcs = ["dispatcher/dispatcher_test.cc"], + deps = [ + "//cyber", + "//cyber/proto:unit_test_cc_proto", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "intra_dispatcher_test", + size = "small", + srcs = ["dispatcher/intra_dispatcher_test.cc"], + deps = [ + "//cyber", + "//cyber/proto:unit_test_cc_proto", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "rtps_dispatcher_test", + size = "small", + srcs = ["dispatcher/rtps_dispatcher_test.cc"], + deps = [ + "//cyber", + "//cyber/proto:unit_test_cc_proto", + "@com_google_googletest//:gtest", + ], +) + +apollo_cc_test( + name = "shm_dispatcher_test", + size = "small", + srcs = ["dispatcher/shm_dispatcher_test.cc"], + deps = [ + "//cyber", + "//cyber/proto:unit_test_cc_proto", + "@com_google_googletest//:gtest_main", + ], +) + apollo_package() cpplint() diff --git a/cyber/transport/common/BUILD b/cyber/transport/common/BUILD deleted file mode 100644 index 3014848fcfd..00000000000 --- a/cyber/transport/common/BUILD +++ /dev/null @@ -1,56 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_transport_common_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "endpoint", - srcs = ["endpoint.cc"], - hdrs = ["endpoint.h"], - deps = [ - ":identity", - "//cyber/common:global_data", - "//cyber/proto:role_attributes_cc_proto", - ], -) - -cc_test( - name = "endpoint_test", - size = "small", - srcs = ["endpoint_test.cc"], - deps = [ - "//cyber:cyber_core", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "identity", - srcs = ["identity.cc"], - hdrs = ["identity.h"], - deps = [ - "//cyber/common:util", - "@uuid", - ], -) - -cc_test( - name = "identity_test", - size = "small", - srcs = ["identity_test.cc"], - deps = [ - "//cyber:cyber_core", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/cyber/transport/dispatcher/BUILD b/cyber/transport/dispatcher/BUILD deleted file mode 100644 index 1d2343b1488..00000000000 --- a/cyber/transport/dispatcher/BUILD +++ /dev/null @@ -1,112 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_transport_dispatcher_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "dispatcher", - srcs = ["dispatcher.cc"], - hdrs = ["dispatcher.h"], - deps = [ - "//cyber/common", - "//cyber/message:message_traits", - "//cyber/proto:role_attributes_cc_proto", - "//cyber/transport/message:listener_handler", - "//cyber/transport/message:message_info", - ], -) - -cc_test( - name = "dispatcher_test", - size = "small", - srcs = ["dispatcher_test.cc"], - deps = [ - "//cyber:cyber_core", - "//cyber/proto:unit_test_cc_proto", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "intra_dispatcher", - srcs = ["intra_dispatcher.cc"], - hdrs = ["intra_dispatcher.h"], - deps = [ - ":dispatcher", - "//cyber/message:message_traits", - "//cyber/proto:role_attributes_cc_proto", - ], -) - -cc_test( - name = "intra_dispatcher_test", - size = "small", - srcs = ["intra_dispatcher_test.cc"], - deps = [ - "//cyber:cyber_core", - "//cyber/proto:unit_test_cc_proto", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "rtps_dispatcher", - srcs = ["rtps_dispatcher.cc"], - hdrs = ["rtps_dispatcher.h"], - deps = [ - ":dispatcher", - "//cyber/message:message_traits", - "//cyber/proto:role_attributes_cc_proto", - "//cyber/transport/rtps:attributes_filler", - "//cyber/transport/rtps:participant", - "//cyber/transport/rtps:sub_listener", - ], -) - -cc_test( - name = "rtps_dispatcher_test", - size = "small", - srcs = ["rtps_dispatcher_test.cc"], - deps = [ - "//cyber:cyber_core", - "//cyber/proto:unit_test_cc_proto", - "@com_google_googletest//:gtest", - ], -) - -cc_library( - name = "shm_dispatcher", - srcs = ["shm_dispatcher.cc"], - hdrs = ["shm_dispatcher.h"], - deps = [ - ":dispatcher", - "//cyber/message:message_traits", - "//cyber/proto:proto_desc_cc_proto", - "//cyber/scheduler:scheduler_factory", - "//cyber/transport/shm:notifier_factory", - "//cyber/transport/shm:readable_info", - "//cyber/transport/shm:segment_factory", - ], -) - -cc_test( - name = "shm_dispatcher_test", - size = "small", - srcs = ["shm_dispatcher_test.cc"], - deps = [ - "//cyber:cyber_core", - "//cyber/proto:unit_test_cc_proto", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/cyber/transport/integration_test/BUILD b/cyber/transport/integration_test/BUILD index 5ce54095989..4375fe5feb0 100644 --- a/cyber/transport/integration_test/BUILD +++ b/cyber/transport/integration_test/BUILD @@ -1,46 +1,46 @@ load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_test") -cc_test( +apollo_cc_test( name = "hybrid_transceiver_test", size = "small", srcs = ["hybrid_transceiver_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "//cyber/proto:unit_test_cc_proto", "@com_google_googletest//:gtest", ], ) -cc_test( +apollo_cc_test( name = "intra_transceiver_test", size = "small", srcs = ["intra_transceiver_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "//cyber/proto:unit_test_cc_proto", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "rtps_transceiver_test", size = "small", srcs = ["rtps_transceiver_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "//cyber/proto:unit_test_cc_proto", "@com_google_googletest//:gtest", ], ) -cc_test( +apollo_cc_test( name = "shm_transceiver_test", size = "small", srcs = ["shm_transceiver_test.cc"], deps = [ - "//cyber:cyber_core", + "//cyber", "//cyber/proto:unit_test_cc_proto", "@com_google_googletest//:gtest", ], diff --git a/cyber/transport/message/BUILD b/cyber/transport/message/BUILD deleted file mode 100644 index 67f8bd9f1a9..00000000000 --- a/cyber/transport/message/BUILD +++ /dev/null @@ -1,74 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_transport_message_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "history_attributes", - hdrs = ["history_attributes.h"], - deps = [ - "//cyber/proto:qos_profile_cc_proto", - ], -) - -cc_library( - name = "history", - hdrs = ["history.h"], - deps = [ - ":history_attributes", - ], -) - -cc_library( - name = "listener_handler", - hdrs = ["listener_handler.h"], - deps = [ - ":message_info", - "//cyber/base:signal", - "//cyber/message:message_traits", - "//cyber/message:raw_message", - ], -) - -cc_library( - name = "message_info", - srcs = ["message_info.cc"], - hdrs = ["message_info.h"], - deps = [ - "//cyber/common:log", - "//cyber/transport/common:identity", - ], -) - -cc_test( - name = "message_info_test", - size = "small", - srcs = ["message_info_test.cc"], - deps = [ - "//cyber:cyber_core", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "message_test", - size = "small", - srcs = ["message_test.cc"], - deps = [ - "//cyber:cyber_core", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/cyber/transport/qos/BUILD b/cyber/transport/qos/BUILD deleted file mode 100644 index 48f25ddd06e..00000000000 --- a/cyber/transport/qos/BUILD +++ /dev/null @@ -1,31 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -# filegroup( -# name = "cyber_transport_qos_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# visibility = ["//visibility:public"], -# ) - -cc_library( - name = "qos", - visibility = ["//visibility:public"], - deps = [ - ":qos_profile_conf", - ], -) - -cc_library( - name = "qos_profile_conf", - srcs = ["qos_profile_conf.cc"], - hdrs = ["qos_profile_conf.h"], - deps = [ - "//cyber/proto:qos_profile_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/cyber/transport/receiver/BUILD b/cyber/transport/receiver/BUILD deleted file mode 100644 index ac7ddb7f196..00000000000 --- a/cyber/transport/receiver/BUILD +++ /dev/null @@ -1,68 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_transport_receiver_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "receiver", - deps = [ - ":hybrid_receiver", - ":intra_receiver", - ":rtps_receiver", - ":shm_receiver", - ], -) - -cc_library( - name = "receiver_interface", - hdrs = ["receiver.h"], - deps = [ - "//cyber/transport/common:endpoint", - "//cyber/transport/message:history", - "//cyber/transport/message:message_info", - ], -) - -cc_library( - name = "hybrid_receiver", - hdrs = ["hybrid_receiver.h"], - deps = [ - ":receiver_interface", - ], -) - -cc_library( - name = "intra_receiver", - hdrs = ["intra_receiver.h"], - deps = [ - ":receiver_interface", - ], -) - -cc_library( - name = "rtps_receiver", - hdrs = ["rtps_receiver.h"], - deps = [ - ":receiver_interface", - ], -) - -cc_library( - name = "shm_receiver", - hdrs = ["shm_receiver.h"], - deps = [ - ":receiver_interface", - "//cyber/transport/shm:readable_info", - ], -) - -apollo_package() -cpplint() diff --git a/cyber/transport/rtps/BUILD b/cyber/transport/rtps/BUILD deleted file mode 100644 index 0c3dd193784..00000000000 --- a/cyber/transport/rtps/BUILD +++ /dev/null @@ -1,79 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_transport_rtps_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "attributes_filler", - srcs = ["attributes_filler.cc"], - hdrs = ["attributes_filler.h"], - deps = [ - "//cyber/common:log", - "//cyber/transport/qos", - "@fastrtps", - ], -) - -cc_library( - name = "underlay_message", - srcs = ["underlay_message.cc"], - hdrs = ["underlay_message.h"], - deps = [ - "//cyber/common:log", - "@fastrtps", - ], -) - -cc_library( - name = "participant", - srcs = ["participant.cc"], - hdrs = ["participant.h"], - deps = [ - ":underlay_message", - ":underlay_message_type", - "//cyber/common:global_data", - ], -) - -cc_library( - name = "sub_listener", - srcs = ["sub_listener.cc"], - hdrs = ["sub_listener.h"], - deps = [ - ":underlay_message", - ":underlay_message_type", - "//cyber/transport/message:message_info", - ], -) - -cc_library( - name = "underlay_message_type", - srcs = ["underlay_message_type.cc"], - hdrs = ["underlay_message_type.h"], - deps = [ - ":underlay_message", - "@fastrtps", - ], -) - -cc_test( - name = "rtps_test", - size = "small", - srcs = ["rtps_test.cc"], - deps = [ - "//cyber:cyber_core", - "@com_google_googletest//:gtest_main", - "@fastrtps", - ], -) - -apollo_package() -cpplint() diff --git a/cyber/transport/shm/BUILD b/cyber/transport/shm/BUILD deleted file mode 100644 index 20b0a851a04..00000000000 --- a/cyber/transport/shm/BUILD +++ /dev/null @@ -1,154 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_transport_shm_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "block", - srcs = ["block.cc"], - hdrs = ["block.h"], - deps = [ - "//cyber/base:atomic_rw_lock", - "//cyber/common:log", - ], -) - -cc_library( - name = "condition_notifier", - srcs = ["condition_notifier.cc"], - hdrs = ["condition_notifier.h"], - deps = [ - ":notifier_base", - "//cyber/common:global_data", - "//cyber/common:log", - "//cyber/common:util", - ], -) - -cc_library( - name = "multicast_notifier", - srcs = ["multicast_notifier.cc"], - hdrs = ["multicast_notifier.h"], - deps = [ - ":notifier_base", - "//cyber/common:global_data", - "//cyber/common:log", - "//cyber/common:macros", - ], -) - -cc_library( - name = "notifier_base", - hdrs = ["notifier_base.h"], - deps = [ - ":readable_info", - ], -) - -cc_library( - name = "notifier_factory", - srcs = ["notifier_factory.cc"], - hdrs = ["notifier_factory.h"], - deps = [ - ":condition_notifier", - ":multicast_notifier", - ":notifier_base", - "//cyber/common:global_data", - "//cyber/common:log", - ], -) - -cc_library( - name = "readable_info", - srcs = ["readable_info.cc"], - hdrs = ["readable_info.h"], - deps = [ - "//cyber/common:log", - ], -) - -cc_library( - name = "xsi_segment", - srcs = ["xsi_segment.cc"], - hdrs = ["xsi_segment.h"], - deps = [ - ":segment", - "//cyber/common:log", - "//cyber/common:util", - ], -) - -cc_library( - name = "posix_segment", - srcs = ["posix_segment.cc"], - hdrs = ["posix_segment.h"], - deps = [ - ":segment", - "//cyber/common:log", - "//cyber/common:util", - ], -) - -cc_library( - name = "segment", - srcs = ["segment.cc"], - hdrs = ["segment.h"], - deps = [ - ":block", - ":shm_conf", - ":state", - "//cyber/common:log", - "//cyber/common:util", - ], -) - -cc_library( - name = "segment_factory", - srcs = ["segment_factory.cc"], - hdrs = ["segment_factory.h"], - deps = [ - ":posix_segment", - ":segment", - ":xsi_segment", - "//cyber/common:global_data", - "//cyber/common:log", - ], -) - -cc_library( - name = "shm_conf", - srcs = ["shm_conf.cc"], - hdrs = ["shm_conf.h"], - deps = [ - "//cyber/common:log", - ], -) - -cc_library( - name = "state", - srcs = ["state.cc"], - hdrs = ["state.h"], -) - -cc_test( - name = "condition_notifier_test", - size = "small", - srcs = ["condition_notifier_test.cc"], - tags = ["exclusive"], - deps = [ - "//cyber:cyber_core", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/cyber/transport/transmitter/BUILD b/cyber/transport/transmitter/BUILD deleted file mode 100644 index 6f6dc225b51..00000000000 --- a/cyber/transport/transmitter/BUILD +++ /dev/null @@ -1,67 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# filegroup( -# name = "cyber_transport_transmitter_hdrs", -# srcs = glob([ -# "*.h", -# ]), -# ) - -cc_library( - name = "transmitter", - deps = [ - ":hybrid_transmitter", - ":intra_transmitter", - ":rtps_transmitter", - ":shm_transmitter", - ], - ) - -cc_library( - name = "hybrid_transmitter", - hdrs = ["hybrid_transmitter.h"], - deps = [ - ":transmitter_interface", - ], -) - -cc_library( - name = "intra_transmitter", - hdrs = ["intra_transmitter.h"], - deps = [ - ":transmitter_interface", - ], -) - -cc_library( - name = "transmitter_interface", - hdrs = ["transmitter.h"], - deps = [ - "//cyber/event:perf_event_cache", - "//cyber/transport/common:endpoint", - "//cyber/transport/message:message_info", - ], -) - -cc_library( - name = "rtps_transmitter", - hdrs = ["rtps_transmitter.h"], - deps = [ - ":transmitter_interface", - ], -) - -cc_library( - name = "shm_transmitter", - hdrs = ["shm_transmitter.h"], - deps = [ - ":transmitter_interface", - ], -) - -apollo_package() -cpplint() diff --git a/docker/scripts/docker_base.sh b/docker/scripts/docker_base.sh index 090cd06983e..d761706ff72 100755 --- a/docker/scripts/docker_base.sh +++ b/docker/scripts/docker_base.sh @@ -62,7 +62,7 @@ function determine_gpu_use_host() { local nv_docker_doc="https://github.com/NVIDIA/nvidia-docker/blob/master/README.md" if [[ "${USE_GPU_HOST}" -eq 1 ]]; then - if [[ -x "$(which nvidia-container-toolkit)" ]]; then + if [[ -x "$(which nvidia-container-toolkit)" || -x "$(which nvidia-container-runtime)" ]]; then local docker_version docker_version="$(docker version --format '{{.Server.Version}}')" if dpkg --compare-versions "${docker_version}" "ge" "19.03"; then @@ -108,7 +108,7 @@ function postrun_cross_platfrom_download() { local flag="$2" if [[ "$flag" -eq 1 ]]; then download_tegra_lib "${container}" - fi + fi } function download_tegra_lib() { @@ -116,7 +116,7 @@ function download_tegra_lib() { local tegra_lib_url="https://apollo-pkg-beta.cdn.bcebos.com/archive/tegra.tar.gz" info "download external library for cross-compilation..." docker exec -u root "${container}" \ - bash -c "cd ~ && wget -nv ${tegra_lib_url} && tar -xzvf ~/tegra.tar.gz -C /usr/lib/aarch64-linux-gnu/ > /dev/null" + bash -c "cd ~ && wget -nv ${tegra_lib_url} && tar -xzvf ~/tegra.tar.gz -C /usr/lib/aarch64-linux-gnu/ > /dev/null" } function stop_all_apollo_containers() { diff --git a/modules/audio/BUILD b/modules/audio/BUILD index 41ed9c28051..9f2f93beb1b 100644 --- a/modules/audio/BUILD +++ b/modules/audio/BUILD @@ -1,12 +1,43 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "audio_component_lib", +apollo_cc_library( + name = "apollo_audio", + srcs = [ + "common/audio_gflags.cc", + "common/audio_info.cc", + "common/message_process.cc", + "inference/direction_detection.cc", + "inference/moving_detection.cc", + "inference/siren_detection.cc", + ], + hdrs = [ + "common/audio_gflags.h", + "common/audio_info.h", + "common/message_process.h", + "inference/direction_detection.h", + "inference/moving_detection.h", + "inference/siren_detection.h", + ], + deps = [ + "@fftw3", + "@libtorch_gpu", + "@eigen", + "@com_github_jbeder_yaml_cpp//:yaml-cpp", + "@com_github_gflags_gflags//:gflags", + "//cyber", + "//modules/common/math", + "//modules/drivers/microphone/proto:audio_cc_proto", + "//modules/drivers/microphone/proto:microphone_config_cc_proto", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/audio_msgs:audio_cc_proto", + ] +) + +apollo_component( + name = "libaudio_component.so", srcs = ["audio_component.cc"], hdrs = ["audio_component.h"], copts = [ @@ -14,20 +45,12 @@ cc_library( ], deps = [ "//cyber", - "//modules/audio/common:message_process", + ":apollo_audio", "//modules/audio/proto:audio_conf_cc_proto", "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", "//modules/common/util:util_tool", ], - alwayslink = True, -) - -cc_binary( - name = "libaudio_component.so", - linkshared = True, - linkstatic = True, - deps = [":audio_component_lib"], ) filegroup( @@ -39,57 +62,25 @@ filegroup( ]), ) -# Data->Models: -# modules/audio/data/torch_siren_detection_model.pt - -# install( -# name = "install", -# library_dest = "audio/lib", -# data_dest = "audio", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":audio.BUILD", -# ], -# targets = [ -# ":libaudio_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# "//modules/audio/tools:install", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "audio/include", -# data = [ -# "//modules/audio/proto:audio_conf_cc_proto", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_audio_src", -# ":install_audio_hdrs", -# "//modules/audio/proto:py_pb_audio", -# ], -# ) - -# install_src_files( -# name = "install_audio_src", -# src_dir = ["."], -# dest = "audio/src", -# filter = "*", -# ) +apollo_cc_test( + name = "moving_detection_test", + size = "small", + srcs = ["inference/moving_detection_test.cc"], + deps = [ + ":apollo_audio", + "@com_google_googletest//:gtest_main", + ], +) -# install_src_files( -# name = "install_audio_hdrs", -# src_dir = ["."], -# dest = "audio/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "siren_detection_test", + size = "small", + srcs = ["inference/siren_detection_test.cc"], + deps = [ + ":apollo_audio", + "@com_google_googletest//:gtest_main", + ], +) apollo_package() diff --git a/modules/audio/README_cn.md b/modules/audio/README_cn.md new file mode 100644 index 00000000000..cf13bd73343 --- /dev/null +++ b/modules/audio/README_cn.md @@ -0,0 +1,72 @@ +Audio {#apollo-packages-audio} +============ + +## 简介 + +`Audio` 模块可检测活动应急车辆发出的警报声。它能检测并输出警报器的开/关状态、移动状态以及警报器的相对位置。当检测到活动的紧急车辆时,您还可以在 `Dreamview` 上看到警报提示 + +## 目录结构 + +```shell + +modules/audio/ +├── audio_component.cc // 组件实现的代码文件 +├── audio_component.h // 组件实现的代码文件 +├── BUILD // 构建规则文件 +├── common // flag定义,数据处理方法等通用代码 +├── conf // 模块配置文件,参数文件目录 +├── cyberfile.xml // 包管理配置文件 +├── dag // 模块启动文件(mainboard) +├── launch // 模块启动文件(cyber_launch) +├── data // 存放模型文件 +├── inference // 检测逻辑的代码实现 +├── proto // 组件配置文件结构定义 +└── README_cn.md // 说明文档 + +``` + +## 模块 + +### AudioComponent 组件 + +#### 输入 + +| Channel 名 | 类型 | 描述 | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/sensor/microphone` | [apollo::drivers::microphone::config::AudioData](#AudioData) | 麦克风数据,可通过 `modules/audio/dag/audio.dag` 启动文件修改channel名 | +| `/apollo/localization/pose` | [apollo::localization::LocalizationEstimate](#LocalizationEstimate) | 定位信息,可通过 `modules/audio/conf/audio_conf.pb.txt` 配置文件修改 channel 名 | + +#### 输出 + +| Channel 名 | 类型 | 描述 | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/audio_detection` | [apollo::audio::AudioDetection](#AudioDetection) | 检测结果,包括警报器的状态和位置 | + +#### 配置 + +| 文件路径 | 类型/结构 | 说明 | +| -------- | --------- | ---- | +| `modules/audio/conf/audio_conf.pb.txt` | [apollo::audio::AudioConf](#AudioConf) | [AudioComponent](#AudioComponent) 的配置文件 | +| `modules/audio/conf/respeaker_extrinsics.yaml` | `yaml` | 麦克风的外参配置文件 | +| `modules/audio/conf/audio.conf` | `command line flags` | 命令行参数配置 | + +#### Flags + +| flag | 类型 | 默认值 | 描述 | +| ---- | ---- | ------ | ---- | +| `--cache_signal_time` | `int32` | `3` | 缓存的信号时长 | +| `--touch_siren_detection_model` | `string` | `/apollo/modules/audio/data/torch_siren_detection_model.pt` | 检测模型的路径 | + +#### 使用方式 + +##### 使用 mainboard 启动 + +```shell +mainboard -d modules/audio/dag/audio.dag +``` + +##### 使用 cyber_launch 启动 + +```shell +cyber_launch start modules/audio/launch/audio.launch +``` diff --git a/modules/audio/audio.BUILD b/modules/audio/audio.BUILD deleted file mode 100644 index efc983e1408..00000000000 --- a/modules/audio/audio.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "audio", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/audio", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/audio/common/BUILD b/modules/audio/common/BUILD deleted file mode 100644 index caeb874df67..00000000000 --- a/modules/audio/common/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "audio_gflags", - srcs = ["audio_gflags.cc"], - hdrs = ["audio_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "audio_info", - srcs = ["audio_info.cc"], - hdrs = ["audio_info.h"], - deps = [ - ":audio_gflags", - "//modules/drivers/microphone/proto:audio_cc_proto", - "//modules/drivers/microphone/proto:microphone_config_cc_proto", - ], -) - -cc_library( - name = "message_process", - srcs = ["message_process.cc"], - hdrs = ["message_process.h"], - deps = [ - ":audio_info", - "//modules/audio/inference:direction_detection", - "//modules/audio/inference:moving_detection", - "//modules/audio/inference:siren_detection", - "//modules/common_msgs/audio_msgs:audio_cc_proto", - "//modules/drivers/microphone/proto:audio_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/audio/inference/BUILD b/modules/audio/inference/BUILD deleted file mode 100644 index 255052165b1..00000000000 --- a/modules/audio/inference/BUILD +++ /dev/null @@ -1,69 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "moving_detection", - srcs = ["moving_detection.cc"], - hdrs = ["moving_detection.h"], - deps = [ - "//modules/common_msgs/audio_msgs:audio_cc_proto", - "@fftw3", - ], -) - -cc_library( - name = "direction_detection", - srcs = ["direction_detection.cc"], - hdrs = ["direction_detection.h"], - deps = [ - "//cyber", - "//modules/common/math", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - "@com_github_jbeder_yaml_cpp//:yaml-cpp", - "@eigen", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_library( - name = "siren_detection", - srcs = ["siren_detection.cc"], - hdrs = ["siren_detection.h"], - deps = [ - "//cyber", - "//modules/audio/common:audio_gflags", - #"//third_party/libtorch", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -# cc_test( -# name = "siren_detection_test", -# size = "small", -# srcs = ["siren_detection_test.cc"], -# deps = [ -# ":siren_detection", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -cc_test( - name = "moving_detection_test", - size = "small", - srcs = ["moving_detection_test.cc"], - deps = [ - ":moving_detection", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/audio/tools/BUILD b/modules/audio/tools/BUILD index 805956c397e..7268b571bde 100644 --- a/modules/audio/tools/BUILD +++ b/modules/audio/tools/BUILD @@ -1,20 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools:cpplint.bzl", "cpplint") load("@rules_python//python:defs.bzl", "py_binary") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "audio/bin", -# targets = [ -# ":audio_offline_processing", -# ], -# visibility = ["//visibility:public"], -# ) - # py_binary( # name = "audiosaver", # srcs = ["audiosaver.py"], @@ -27,7 +16,7 @@ package(default_visibility = ["//visibility:public"]) # tags = ["exclude"] # ) -cc_binary( +apollo_cc_binary( name = "audio_offline_processing", srcs = ["audio_offline_processing.cc"], copts = [ @@ -38,8 +27,7 @@ cc_binary( ], deps = [ "//cyber", - "//modules/audio/common:audio_gflags", - "//modules/audio/common:message_process", + "//modules/audio:apollo_audio", "//modules/audio/proto:audio_conf_cc_proto", "//modules/common_msgs/audio_msgs:audio_event_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", diff --git a/modules/bridge/BUILD b/modules/bridge/BUILD index 9b258e068af..c77386e89ec 100644 --- a/modules/bridge/BUILD +++ b/modules/bridge/BUILD @@ -1,6 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -16,141 +14,113 @@ filegroup( ]), ) -# install( -# name = "install", -# library_dest = "bridge/lib", -# data_dest = "bridge", -# data = [ -# ":runtime_data", -# "cyberfile.xml", -# "bridge.BUILD" -# ], -# targets = [ -# ":libudp_bridge_sender_component.so", -# ":libudp_bridge_receiver_component.so", -# ":libudp_bridge_multi_receiver_component.so", -# ], -# deps = [ -# "//modules/bridge/test:install", -# "//modules/bridge/proto:py_pb_bridge", -# "//modules/bridge/common:install", -# ], -# ) -# install( -# name = "pb_hdrs", -# data_dest = "bridge/include", -# data = [ -# "//modules/bridge/proto:udp_bridge_remote_info_cc_proto", -# ], -# ) - -cc_library( - name = "udp_bridge", - copts = BRIDGE_COPTS, - deps = [ - "//cyber", - "//modules/bridge/common:bridge_gflags", - "//modules/bridge/common:bridge_header", - "//modules/bridge/common:bridge_proto_diser_buf_factory", - "//modules/bridge/common:bridge_proto_diserialized_buf", - "//modules/bridge/common:bridge_proto_serialized_buf", - "//modules/bridge/common:macro", - "//modules/bridge/common:util", - "//modules/bridge/proto:udp_bridge_remote_info_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/common/monitor_log", - "//modules/common/util", +apollo_cc_library( + name = "apollo_bridge_common", + srcs = [ + "common/bridge_buffer.cc", + "common/bridge_gflags.cc", + "common/bridge_header.cc", + "common/util.cc" ], + hdrs = [ + "common/bridge_buffer.h", + "common/bridge_gflags.h", + "common/bridge_header.h", + "common/bridge_header_item.h", + "common/bridge_proto_diser_buf_factory.h", + "common/bridge_proto_diserialized_buf.h", + "common/bridge_proto_serialized_buf.h", + "common/macro.h", + "common/udp_listener.h", + "common/util.h", + ], + deps = [ + "@com_github_gflags_gflags//:gflags", + "//modules/common/adapters:adapter_gflags", + ] ) -cc_library( - name = "udp_bridge_sender", - srcs = ["udp_bridge_sender_component.cc"], - hdrs = ["udp_bridge_sender_component.h"], - copts = BRIDGE_COPTS, - alwayslink = True, +apollo_cc_test( + name = "bridge_buffer_test", + size = "small", + srcs = ["common/bridge_buffer_test.cc"], deps = [ - ":udp_bridge", + ":apollo_bridge_common", + "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "udp_bridge_receiver", - srcs = ["udp_bridge_receiver_component.cc"], - hdrs = ["udp_bridge_receiver_component.h"], - copts = BRIDGE_COPTS, - alwayslink = True, +apollo_cc_test( + name = "bridge_proto_buf_test", + size = "small", + srcs = ["common/bridge_proto_buf_test.cc"], deps = [ - ":udp_bridge", - "//modules/bridge/common:udp_listener", + "//modules/bridge:apollo_udp_bridge", + "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "udp_bridge_multi_receiver", - srcs = ["udp_bridge_multi_receiver_component.cc"], - hdrs = ["udp_bridge_multi_receiver_component.h"], +apollo_cc_library( + name = "apollo_udp_bridge", copts = BRIDGE_COPTS, - alwayslink = True, deps = [ - ":udp_bridge", - "//modules/bridge/common:udp_listener", + "//cyber", + ":apollo_bridge_common", + "//modules/bridge/proto:udp_bridge_remote_info_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/common/monitor_log", + "//modules/common/util:common_util", ], ) -cc_binary( +apollo_component( name = "libudp_bridge_sender_component.so", - linkshared = True, - linkstatic = True, - deps = [":udp_bridge_sender"], + srcs = [ + "udp_bridge_sender_component.cc", + ], + hdrs = [ + "udp_bridge_sender_component.h", + ], + deps = [":apollo_udp_bridge"], ) -cc_binary( +apollo_component( name = "libudp_bridge_receiver_component.so", - linkshared = True, - linkstatic = True, - deps = [":udp_bridge_receiver"], + srcs = [ + "udp_bridge_receiver_component.cc", + ], + hdrs = [ + "udp_bridge_receiver_component.h", + ], + deps = [":apollo_udp_bridge"], ) -cc_binary( +apollo_component( name = "libudp_bridge_multi_receiver_component.so", - linkshared = True, - linkstatic = True, - deps = [":udp_bridge_multi_receiver"], + srcs = [ + "udp_bridge_multi_receiver_component.cc" + ], + hdrs = [ + "udp_bridge_multi_receiver_component.h" + ], + deps = [":apollo_udp_bridge"], ) -cc_test( +apollo_cc_test( name = "udp_bridge_component_test", size = "small", srcs = ["udp_bridge_component_test.cc"], deps = [ - ":udp_bridge_sender", + ":apollo_udp_bridge", "@com_google_googletest//:gtest_main", + # internal component library if you really need these component depends + ":udp_bridge_multi_receiver_component_lib", + ":udp_bridge_receiver_component_lib", + ":udp_bridge_sender_component_lib", ], linkstatic = True, ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_bridge_src", -# ":install_bridge_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_bridge_src", -# src_dir = ["."], -# dest = "bridge/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_bridge_hdrs", -# src_dir = ["."], -# dest = "bridge/include", -# filter = "*.h", -# ) apollo_package() cpplint() diff --git a/modules/bridge/bridge.BUILD b/modules/bridge/bridge.BUILD deleted file mode 100644 index 5bf875efc39..00000000000 --- a/modules/bridge/bridge.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "bridge", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/bridge", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/bridge/common/BUILD b/modules/bridge/common/BUILD deleted file mode 100644 index d8612d3ec37..00000000000 --- a/modules/bridge/common/BUILD +++ /dev/null @@ -1,108 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# targets = ["libbridge_gflags.so"], -# library_dest = "bridge/lib", -# ) - -cc_library( - name = "bridge_buffer", - srcs = ["bridge_buffer.cc"], - hdrs = ["bridge_buffer.h"], -) - -cc_binary( - name = "libbridge_gflags.so", - srcs = ["bridge_gflags.cc", "bridge_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], - linkshared = True, - linkstatic = True, -) - -cc_library( - name = "bridge_gflags", - srcs = [":libbridge_gflags.so"], - hdrs = ["bridge_gflags.h"], - alwayslink = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "util", - srcs = ["util.cc"], - hdrs = ["util.h"], - deps = [ - ":bridge_buffer", - ":macro", - ], -) - -cc_library( - name = "macro", - hdrs = ["macro.h"], -) - -cc_library( - name = "bridge_proto_serialized_buf", - hdrs = ["bridge_proto_serialized_buf.h"], -) - -cc_library( - name = "bridge_proto_diserialized_buf", - hdrs = ["bridge_proto_diserialized_buf.h"], -) - -cc_library( - name = "bridge_proto_diser_buf_factory", - hdrs = ["bridge_proto_diser_buf_factory.h"], - deps = [ - "//modules/common/adapters:adapter_gflags", - ], -) - -cc_library( - name = "udp_listener", - hdrs = ["udp_listener.h"], -) - -cc_library( - name = "bridge_header", - srcs = ["bridge_header.cc"], - hdrs = [ - "bridge_header.h", - "bridge_header_item.h", - ], -) - -cc_test( - name = "bridge_buffer_test", - size = "small", - srcs = ["bridge_buffer_test.cc"], - deps = [ - ":bridge_buffer", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "bridge_proto_buf_test", - size = "small", - srcs = ["bridge_proto_buf_test.cc"], - deps = [ - "//modules/bridge:udp_bridge", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/bridge/test/BUILD b/modules/bridge/test/BUILD index d57a65eedc3..69ba5926da1 100644 --- a/modules/bridge/test/BUILD +++ b/modules/bridge/test/BUILD @@ -1,36 +1,24 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") +load("//tools:apollo_package.bzl", "apollo_cc_binary") load("//tools:apollo_package.bzl", "apollo_package") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "bridge/bin", -# targets = [ -# ":bridge_receiver_test", -# ":bridge_sender_test", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( +apollo_cc_binary( name = "bridge_receiver_test", srcs = ["bridge_receiver_test.cc"], deps = [ "//cyber", - "//modules/bridge:udp_bridge", - "//modules/bridge/common:udp_listener", + "//modules/bridge:apollo_udp_bridge", ], ) -cc_binary( +apollo_cc_binary( name = "bridge_sender_test", srcs = ["bridge_sender_test.cc"], deps = [ "//cyber", - "//modules/bridge:udp_bridge", + "//modules/bridge:apollo_udp_bridge", ], ) diff --git a/modules/calibration/BUILD b/modules/calibration/BUILD index b5e5c7f7dbc..cabb2d170fd 100644 --- a/modules/calibration/BUILD +++ b/modules/calibration/BUILD @@ -1,39 +1,7 @@ -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") load("//tools:apollo_package.bzl", "apollo_package") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# data_dest = "calibration", -# data = [ -# ":calibrated_vehicles", -# ":cyberfile.xml", -# ":calibration.BUILD", -# ], -# ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_calibration_src", -# ":install_calibration_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_calibration_src", -# src_dir = ["."], -# dest = "calibration/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_calibration_hdrs", -# src_dir = ["."], -# dest = "calibration/include", -# filter = "*.h", -# ) - filegroup( name = "calibrated_vehicles", srcs = glob([ diff --git a/modules/calibration/cyberfile.xml b/modules/calibration/cyberfile.xml index c5f67495837..6179d1f758c 100644 --- a/modules/calibration/cyberfile.xml +++ b/modules/calibration/cyberfile.xml @@ -13,5 +13,11 @@ module //modules/calibration + bazel-extend-tools + 3rd-rules-python + 3rd-grpc + 3rd-rules-proto + 3rd-py + 3rd-bazel-skylib diff --git a/modules/canbus/BUILD b/modules/canbus/BUILD index da6e55b693c..5bdf7fd8154 100644 --- a/modules/canbus/BUILD +++ b/modules/canbus/BUILD @@ -1,32 +1,40 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "canbus_component_lib", - srcs = ["canbus_component.cc"], - hdrs = ["canbus_component.h"], - copts = CANBUS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_canbus", + srcs = [ + "common/canbus_gflags.cc", + "vehicle/abstract_vehicle_factory.cc", + ], + hdrs = [ + "common/canbus_gflags.h", + "vehicle/abstract_vehicle_factory.h", + "vehicle/vehicle_controller.h", + ], deps = [ "//cyber", - "//modules/canbus/common:canbus_gflags", - "//modules/canbus/vehicle:abstract_vehicle_factory", + "//modules/canbus/proto:canbus_conf_cc_proto", + "//modules/canbus/proto:vehicle_parameter_cc_proto", "//modules/common/adapters:adapter_gflags", + "//modules/common/configs:vehicle_config_helper", "//modules/common/monitor_log", "//modules/common/status", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "//modules/common_msgs/external_command_msgs:chassis_command_cc_proto", "//modules/common_msgs/guardian_msgs:guardian_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", "@com_github_gflags_gflags//:gflags", ], ) -cc_test( +apollo_cc_test( name = "canbus_test", size = "small", srcs = ["canbus_test.cc"], @@ -37,61 +45,23 @@ cc_test( ], ) -cc_binary( +apollo_component( name = "libcanbus_component.so", - linkshared = True, - linkstatic = True, + srcs = ["canbus_component.cc"], + hdrs = ["canbus_component.h"], + copts = CANBUS_COPTS, deps = [ - ":canbus_component_lib", + ":apollo_canbus", + "//cyber", + "//modules/common/adapters:adapter_gflags", + "//modules/common/monitor_log", + "//modules/common/status", + "//modules/common_msgs/guardian_msgs:guardian_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", + "@com_github_gflags_gflags//:gflags", ], ) -# install( -# name = "testdata", -# data_dest = "canbus/addition_data", -# data = [ -# ":test_data", -# ], -# ) - -# install( -# name = "install", -# library_dest = "canbus/lib", -# data_dest = "canbus", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus.BUILD", -# ], -# targets = [ -# ":libcanbus_component.so", -# ], -# deps = [ -# ":pb_canbus", -# ":pb_hdrs", -# ":testdata", -# "//modules/canbus/common:install", -# "//modules/canbus/tools:install", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus/include", -# data = [ -# "//modules/canbus/proto:canbus_conf_cc_proto", -# "//modules/canbus/proto:vehicle_parameter_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_canbus", -# dest = "canbus", -# files = [ -# "//modules/common_msgs/chassis_msgs:chassis_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -108,27 +78,5 @@ filegroup( srcs = glob(["testdata/**"]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_canbus_src", -# ":install_canbus_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_canbus_src", -# src_dir = ["."], -# dest = "canbus/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_canbus_hdrs", -# src_dir = ["."], -# dest = "canbus/include", -# filter = "*.h", -# ) - apollo_package() cpplint() diff --git a/modules/canbus/README_cn.md b/modules/canbus/README_cn.md index 40e2964220f..6b8fa000897 100644 --- a/modules/canbus/README_cn.md +++ b/modules/canbus/README_cn.md @@ -1,21 +1,78 @@ -# CAN总线 +# CANBUS组件 -## 引言 -CAN总线接受并执行控制命令,并收集底盘状态作为给控制模块的反馈。 +## 介绍 -## 输入 -* 控制命令 +- CANBUS组件主要目的是解析底盘CAN总线数据,获取车辆的信息(如车辆速度、档位、方向盘转角、运行状态、安全等信息);接收控制模块指令,将控制指令解析成底盘CAN总线数据,发送至车辆进行运动控制;执行底盘交互逻辑,使能或退出自动驾驶;进行底盘安全监控,对底盘故障或接管等情况进行监控。 -## 输出 -* 底盘状态 -* 底盘细节状态 +![canbus_structure](./docs/images/canbus_structure.png) -## 实现 -CAN总线模块的主要部件有: -* 包括车辆控制器和消息管理器的车辆 +- Canbus组件主要实现流程创建基于车型的工厂对象,通过调用车型工厂的接口方法,实现初始化,实现处理控制指令[ControlCommand](./../common_msgs/control_msgs/control_cmd.proto),实现解析底盘数据并将底盘数据写入到[chassis.proto](./../common_msgs/chassis_msgs/chassis.proto)。在车型工厂类[AbstractVehicleFactory](./vehicle/abstract_vehicle_factory.h)内,定义了初始化,启动和关闭,解析控制指令,解析底盘命令,发布底盘消息,发布底盘报文解析数据,更新心跳等方法,这些方法调用了车辆控制器的对象进行实现。车辆控制器[VehicleController](./vehicle/vehicle_controller.h)定义了初始化,启动和关闭,通过底盘反馈报文更新chassis数据,处理控制指令方法,处理底盘命令方法,车辆使能方法,实现油门、刹车、转向,档位、驻车、灯光等车辆的控制逻辑。 -* (客户端可以移动到‘/modules/drivers/canbus’,因为它是被不同的使用CAN总线协议的传感器共享的) +- 每一类车型,继承车型工厂类[AbstractVehicleFactory](./vehicle/abstract_vehicle_factory.h)和车辆控制器类[VehicleController](./vehicle/vehicle_controller.h),创建CanClient客户端,创建CanSender、CanReceiver对象,实现相应的初始化、更新chassis、处理控制指令等方法。,创建消息管理器[MessageManager](./../drivers/canbus/can_comm/message_manager.h)对象,对该车型的发送/接收报文进行管理。车型的每一条报文数据格式定义继承[ProtocolData](./../drivers/canbus/can_comm/protocol_data.h),并实现报文协议解析。每一类车型代码通过包管理的方式进行组织,具体车型实现可移动到`/modules/canbus_vehicle`进行查看。 -您自己的CAN客户端可以通过继承“CanClient”类在*can_client*的文件夹中实现。记得在“CanClientFactory”注册你的客户机客户端。 +- CanClient客户端是CAN卡硬件驱动的实例,它是被不同的使用CAN总线协议的传感器共享的。如果现有的CAN卡驱动不满足使用,可以通过继承[CanClient](./../drivers/canbus/can_client.h)类在*drivers/canbus/can_client*的文件夹中实现新的CAN卡驱动。CanClient客户端实现可以移动到`/modules/drivers/canbus/client`进行查看。 -您自己的车辆控制器和消息管理器可以通过“VehicleController”和“MessageManager”的继承在“vehicle”的文件夹中实现。记得在“VehicleFactory”注册你的车辆。 + +## 文件组织结构及说明 +```shell +modules/canbus +├── common // 模块全局gflag定义 +├── conf // 模块配置文件,参数文件目录 +├── dag // 模块启动文件(mainboard) +├── launch // 模块启动文件(cyber_launch) +├── proto // 组件定义的配置文件 +├── testdata // 单元测试的数据文件 +├── tools // 调试工具teleop等 +├── vehicle // 车辆底盘(canbus_vehicle)组件的基类代码文件 +├── BUILD // 构建规则文件 +├── canbus_component.cc // 组件实现的代码文件 +├── canbus_component.h // 组件实现的代码文件 +├── canbus_test.cc // 组件单元测试文件 +├── cyberfile.xml // 包管理配置文件 +├── README_cn.md // 说明文档 +└── README.md // 说明文档 +``` + + +## 模块输入输出与配置 + +### CANBUS组件 + +#### 输入 +| Channel名称 | 类型 | 描述 | +| ---- | ---- | ---- | +| `/apollo/control` | [apollo::control::ControlCommand](./../common_msgs/control_msgs/control_cmd.proto) | 控制指令 | +| `/apollo/guardian` | [apollo::GuardianCommand](./../common_msgs/guardian_msgs/guardian.proto) | 安全指令 | +| `/apollo/chassis_control`| [apollo::ChassisCommand](./../common_msgs/external_command_msgs/chassis_command.proto) | 外部底盘命令 | + +#### 输出 +| Channel名称 | 类型 | 描述 | +| ---- | ---- | ---- | +| `/apollo/chassis` | [apollo::Chassis](./../common_msgs/chassis_msgs/chassis.proto) | 车辆底盘信息接口数据,包括车辆速度、方向盘转角、档位、底盘状态等信息 | +| `/apollo/chassis_detail` | [apollo::${Vehicle_Type}](#Vehicle_type) | 车辆底盘详细信息,展示发送和接收底盘报文解析数据 | + +#### 配置文件 +| 文件路径 | 类型/结构 | 说明 | +| ---- | ---- | ---- | +| [`modules/canbus/conf/canbus_conf.pb.txt`](./conf/canbus_conf.pb.txt) | [apollo::canbus::CanbusConf](./proto/canbus_conf.proto) | [CanbusComponent](./canbus_component.cc) 的配置文件 | +| [`modules/canbus/conf/canbus.conf`](./conf/canbus.conf) | `command line flags` | 命令行参数配置 | + +#### Flags +| flagfile | 类型 | 描述 | +| ---- | ---- | ------ | +| `canbus_gflags.cc` | `flags` | Canbus组件flags变量定义文件 | +| `canbus_gflags.h` | `declare` | Canbus组件flags声明文件 | + +#### 使用方式 + +##### 使用 mainboard 启动 + +```shell +mainboard -d modules/canbus/dag/canbus.dag +``` + +##### 使用 cyber_launch 启动 + +```shell +cyber_launch start modules/canbus/launch/canbus.launch +``` diff --git a/modules/canbus/common/BUILD b/modules/canbus/common/BUILD deleted file mode 100644 index d53e4af0489..00000000000 --- a/modules/canbus/common/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -# install( -# name = "install", -# library_dest = "canbus/lib", -# targets = [":libcanbus_gflags.so"], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libcanbus_gflags.so", - srcs = [ - "canbus_gflags.cc", - "canbus_gflags.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "canbus_gflags", - srcs = ["libcanbus_gflags.so"], - hdrs = ["canbus_gflags.h"], - alwayslink = True, - copts = CANBUS_COPTS, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/canbus/docs/images/canbus_structure.png b/modules/canbus/docs/images/canbus_structure.png new file mode 100644 index 00000000000..a24db15e1d4 Binary files /dev/null and b/modules/canbus/docs/images/canbus_structure.png differ diff --git a/modules/canbus/tools/BUILD b/modules/canbus/tools/BUILD index a2f4a9bc2df..2509fb3c617 100644 --- a/modules/canbus/tools/BUILD +++ b/modules/canbus/tools/BUILD @@ -1,38 +1,26 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "canbus/bin", -# targets = [ -# ":canbus_tester", -# ":teleop", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( +apollo_cc_binary( name = "canbus_tester", srcs = ["canbus_tester.cc"], deps = [ "//cyber", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", "//modules/common/adapters:adapter_gflags", "@com_github_gflags_gflags//:gflags", ], ) -cc_binary( +apollo_cc_binary( name = "teleop", srcs = ["teleop.cc"], deps = [ "//cyber", - "//modules/canbus/vehicle:vehicle_controller_base", + "//modules/canbus:apollo_canbus", "//modules/common_msgs/chassis_msgs:chassis_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", "//modules/common/adapters:adapter_gflags", diff --git a/modules/canbus/tools/teleop.cc b/modules/canbus/tools/teleop.cc index c4c5a82dd1d..e44839ca0fc 100644 --- a/modules/canbus/tools/teleop.cc +++ b/modules/canbus/tools/teleop.cc @@ -23,6 +23,7 @@ #include "modules/common_msgs/chassis_msgs/chassis.pb.h" #include "modules/common_msgs/control_msgs/control_cmd.pb.h" + #include "cyber/common/log.h" #include "cyber/common/macros.h" #include "cyber/cyber.h" @@ -114,7 +115,7 @@ class Teleop { printf(" 1 START ACTION\n"); printf(" 2 VIN_REQ ACTION\n"); printf("\n-----------------------------------------------------------\n"); - printf("Set Gear: [%c]+Num\n", KEYCODE_SETG1); + printf("Set Gear: [%c]+Num\n", KEYCODE_SETG2); printf(" 0 GEAR_NEUTRAL\n"); printf(" 1 GEAR_DRIVE\n"); printf(" 2 GEAR_REVERSE\n"); @@ -123,14 +124,14 @@ class Teleop { printf(" 5 GEAR_INVALID\n"); printf(" 6 GEAR_NONE\n"); printf("\n-----------------------------------------------------------\n"); - printf("Throttle/Speed up: [%c] | \n", KEYCODE_UP1); - printf("Brake/Speed down: [%c] | \n", KEYCODE_DN1); + printf("Throttle/Speed up: [%c] | \n", KEYCODE_UP2); + printf("Brake/Speed down: [%c] | \n", KEYCODE_DN2); printf("Steer LEFT: [%c] | Steer RIGHT: [%c]\n", - KEYCODE_LF1, KEYCODE_RT1); + KEYCODE_LF2, KEYCODE_RT2); printf("Parking Brake: [%c] | Emergency Stop [%c]\n", - KEYCODE_PKBK1, KEYCODE_ESTOP1); + KEYCODE_PKBK2, KEYCODE_ESTOP2); printf("Left/Right Lamp: [%c] | Low beam [%c]\n", - KEYCODE_SETQ1, KEYCODE_SETL1); + KEYCODE_SETQ2, KEYCODE_SETL2); printf("\n-----------------------------------------------------------\n"); printf("Exit: Ctrl + C, then press enter to normal terminal\n"); printf("===========================================================\n"); @@ -262,18 +263,18 @@ class Teleop { control_command_.set_brake(50.0); AINFO << "Estop Brake : " << control_command_.brake(); break; - case KEYCODE_SETT1: // set throttle 0-50 - case KEYCODE_SETT2: - // read keyboard again - if (read(kfd_, &c, 1) < 0) { - exit(-1); - } - level = c - KEYCODE_ZERO; - control_command_.set_throttle(level * 5.0); - control_command_.set_brake(0.0); - AINFO << "Throttle = " << control_command_.throttle() - << ", Brake = " << control_command_.brake(); - break; + // case KEYCODE_SETT1: // set throttle 0-50 + // case KEYCODE_SETT2: + // // read keyboard again + // if (read(kfd_, &c, 1) < 0) { + // exit(-1); + // } + // level = c - KEYCODE_ZERO; + // control_command_.set_throttle(level * 5.0); + // control_command_.set_brake(0.0); + // AINFO << "Throttle = " << control_command_.throttle() + // << ", Brake = " << control_command_.brake(); + // break; case KEYCODE_SETG1: // set gear case KEYCODE_SETG2: // read keyboard again @@ -285,18 +286,18 @@ class Teleop { control_command_.set_gear_location(gear); AINFO << "Gear set to : " << level; break; - case KEYCODE_SETB1: // set brake 0-50 - case KEYCODE_SETB2: - // read keyboard again - if (read(kfd_, &c, 1) < 0) { - exit(-1); - } - level = c - KEYCODE_ZERO; - control_command_.set_throttle(0.0); - control_command_.set_brake(level * 5.0); - AINFO << "Throttle = " << control_command_.throttle() - << ", Brake = " << control_command_.brake(); - break; + // case KEYCODE_SETB1: // set brake 0-50 + // case KEYCODE_SETB2: + // // read keyboard again + // if (read(kfd_, &c, 1) < 0) { + // exit(-1); + // } + // level = c - KEYCODE_ZERO; + // control_command_.set_throttle(0.0); + // control_command_.set_brake(level * 5.0); + // AINFO << "Throttle = " << control_command_.throttle() + // << ", Brake = " << control_command_.brake(); + // break; case KEYCODE_SETQ1: // set turn signal case KEYCODE_SETQ2: static int cnt = 0; diff --git a/modules/canbus/vehicle/BUILD b/modules/canbus/vehicle/BUILD deleted file mode 100644 index de09f1a0f17..00000000000 --- a/modules/canbus/vehicle/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "vehicle_controller_base", - hdrs = ["vehicle_controller.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus/proto:canbus_conf_cc_proto", - "//modules/canbus/proto:vehicle_parameter_cc_proto", - "//modules/common/configs:vehicle_config_helper", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/common_msgs/external_command_msgs:chassis_command_cc_proto", - "//modules/drivers/canbus:sensor_canbus_lib", - ], -) - -cc_library( - name = "abstract_vehicle_factory", - srcs = ["abstract_vehicle_factory.cc"], - hdrs = ["abstract_vehicle_factory.h"], - copts = CANBUS_COPTS, - deps = [ - "//cyber", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/ch/BUILD b/modules/canbus_vehicle/ch/BUILD index 7980370fc43..95d46373ac8 100644 --- a/modules/canbus_vehicle/ch/BUILD +++ b/modules/canbus_vehicle/ch/BUILD @@ -1,133 +1,112 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "ch_vehicle_factory", - srcs = ["ch_vehicle_factory.cc"], - hdrs = ["ch_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, - deps = [ - ":ch_controller", - ":ch_message_manager", - "//modules/canbus/common:canbus_gflags", - "//modules/common/adapters:adapter_gflags", - "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", +apollo_cc_library( + name = "apollo_canbus_vehicle_ch", + srcs = [ + "ch_controller.cc", + "ch_message_manager.cc", + "ch_vehicle_factory.cc", + "protocol/brake_command_111.cc", + "protocol/brake_status__511.cc", + "protocol/ecu_status_1_515.cc", + "protocol/ecu_status_2_516.cc", + "protocol/ecu_status_3_517.cc", + "protocol/ecu_status_4_518.cc", + "protocol/gear_command_114.cc", + "protocol/gear_status_514.cc", + "protocol/steer_command_112.cc", + "protocol/steer_status__512.cc", + "protocol/throttle_command_110.cc", + "protocol/throttle_status__510.cc", + "protocol/turnsignal_command_113.cc", + "protocol/turnsignal_status__513.cc", + "protocol/vehicle_mode_command_116.cc", + "protocol/vin_resp1_51b.cc", + "protocol/vin_resp2_51c.cc", + "protocol/vin_resp3_51d.cc", + "protocol/wheelspeed_report_51e.cc", ], -) - -cc_binary( - name = "libch_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":ch_vehicle_factory"], -) - -cc_library( - name = "ch_message_manager", - srcs = ["ch_message_manager.cc"], - hdrs = ["ch_message_manager.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + hdrs = [ + "ch_controller.h", + "ch_message_manager.h", + "ch_vehicle_factory.h", + "protocol/brake_command_111.h", + "protocol/brake_status__511.h", + "protocol/ecu_status_1_515.h", + "protocol/ecu_status_2_516.h", + "protocol/ecu_status_3_517.h", + "protocol/ecu_status_4_518.h", + "protocol/gear_command_114.h", + "protocol/gear_status_514.h", + "protocol/steer_command_112.h", + "protocol/steer_status__512.h", + "protocol/throttle_command_110.h", + "protocol/throttle_status__510.h", + "protocol/turnsignal_command_113.h", + "protocol/turnsignal_status__513.h", + "protocol/vehicle_mode_command_116.h", + "protocol/vin_resp1_51b.h", + "protocol/vin_resp2_51c.h", + "protocol/vin_resp3_51d.h", + "protocol/wheelspeed_report_51e.h", ], -) - -cc_library( - name = "ch_controller", - srcs = ["ch_controller.cc"], - hdrs = ["ch_controller.h"], - copts = CANBUS_COPTS, deps = [ - ":ch_message_manager", + "//modules/canbus:apollo_canbus", "//modules/canbus/proto:canbus_conf_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", "//modules/canbus/proto:vehicle_parameter_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", + "//modules/canbus_vehicle/ch/proto:ch_cc_proto", + "//modules/common/adapters:adapter_gflags", + "//modules/common/status", "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_test( +apollo_component( + name = "libch_vehicle_factory_lib.so", + deps = [":apollo_canbus_vehicle_ch"], +) + +apollo_cc_test( name = "ch_controller_test", size = "small", srcs = ["ch_controller_test.cc"], data = ["//modules/canbus:test_data"], deps = [ - ":ch_controller", + ":apollo_canbus_vehicle_ch", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "ch_message_manager_test", size = "small", srcs = ["ch_message_manager_test.cc"], deps = [ - ":ch_message_manager", + ":apollo_canbus_vehicle_ch", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "ch_vehicle_factory_test", size = "small", srcs = ["ch_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":ch_vehicle_factory", + ":apollo_canbus_vehicle_ch", "@com_google_googletest//:gtest_main", ], ) -# install( -# name = "install", -# library_dest = "canbus-vehicle-ch/lib", -# data_dest = "canbus-vehicle-ch", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-ch.BUILD", -# ], -# targets = [ -# ":libch_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_ch", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-ch/include", -# data = [ -# "//modules/canbus_vehicle/ch/proto:ch_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_ch", -# dest = "canbus-vehicle-ch", -# files = [ -# "//modules/canbus_vehicle/ch/proto:ch_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -135,27 +114,127 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_ch_src", -# ":install_ch_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_ch_src", -# src_dir = ["."], -# dest = "canbus-vehicle-ch/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_ch_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-ch/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "brake_status__511_test", + size = "small", + srcs = ["protocol/brake_status__511_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ecu_status_1_515_test", + size = "small", + srcs = ["protocol/ecu_status_1_515_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ecu_status_2_516_test", + size = "small", + srcs = ["protocol/ecu_status_2_516_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ecu_status_3_517_test", + size = "small", + srcs = ["protocol/ecu_status_3_517_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "gear_command_114_test", + size = "small", + srcs = ["protocol/gear_command_114_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "gear_status_514_test", + size = "small", + srcs = ["protocol/gear_status_514_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "steer_command_112_test", + size = "small", + srcs = ["protocol/steer_command_112_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "steer_status__512_test", + size = "small", + srcs = ["protocol/steer_status__512_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "throttle_command_110_test", + size = "small", + srcs = ["protocol/throttle_command_110_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "throttle_status__510_test", + size = "small", + srcs = ["protocol/throttle_status__510_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "turnsignal_command_113_test", + size = "small", + srcs = ["protocol/turnsignal_command_113_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "turnsignal_status__513_test", + size = "small", + srcs = ["protocol/turnsignal_status__513_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ch", + "@com_google_googletest//:gtest_main", + ], +) apollo_package() + cpplint() diff --git a/modules/canbus_vehicle/ch/canbus-vehicle-ch.BUILD b/modules/canbus_vehicle/ch/canbus-vehicle-ch.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/ch/ch_controller.cc b/modules/canbus_vehicle/ch/ch_controller.cc index c1cad552de5..1ddba1bbf29 100644 --- a/modules/canbus_vehicle/ch/ch_controller.cc +++ b/modules/canbus_vehicle/ch/ch_controller.cc @@ -330,6 +330,13 @@ Chassis ChController::chassis() { chassis_detail.throttle_status__510().throttle_pedal_en_sts() == 1); } + if (CheckChassisError()) { + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "Chassis has some fault, please check the chassis_detail."); + } + return chassis_; } @@ -565,9 +572,14 @@ bool ChController::CheckChassisError() { Ch chassis_detail; message_manager_->GetSensorData(&chassis_detail); if (!chassis_detail.has_check_response()) { - AERROR_EVERY(100) << "ChassisDetail has NO ch vehicle info." - << chassis_detail.DebugString(); + AERROR_EVERY(100) << "ChassisDetail has no ch vehicle info."; + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "ChassisDetail has no ch vehicle info."); return false; + } else { + chassis_.clear_engage_advice(); } // steer motor fault if (chassis_detail.has_steer_status__512()) { @@ -632,7 +644,7 @@ void ChController::SecurityDogThreadFunc() { ++horizontal_ctrl_fail; if (horizontal_ctrl_fail >= kMaxFailAttempt) { emergency_mode = true; - AINFO << "Driving_mode is into emergency by steer manual intervention"; + AERROR << "Driving_mode is into emergency by steer manual intervention"; set_chassis_error_code(Chassis::MANUAL_INTERVENTION); } } else { @@ -646,12 +658,14 @@ void ChController::SecurityDogThreadFunc() { ++vertical_ctrl_fail; if (vertical_ctrl_fail >= kMaxFailAttempt) { emergency_mode = true; - AINFO << "Driving_mode is into emergency by speed manual intervention"; + AERROR << "Driving_mode is into emergency by speed manual intervention"; set_chassis_error_code(Chassis::MANUAL_INTERVENTION); } } else { vertical_ctrl_fail = 0; } + + // 3. chassis fault check if (CheckChassisError()) { set_chassis_error_code(Chassis::CHASSIS_ERROR); emergency_mode = true; diff --git a/modules/canbus_vehicle/ch/protocol/BUILD b/modules/canbus_vehicle/ch/protocol/BUILD deleted file mode 100644 index 4cbecb989cd..00000000000 --- a/modules/canbus_vehicle/ch/protocol/BUILD +++ /dev/null @@ -1,394 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "canbus_ch_protocol", - deps = [ - ":brake_command_111", - ":brake_status__511", - ":ecu_status_1_515", - ":ecu_status_2_516", - ":ecu_status_3_517", - ":ecu_status_4_518", - ":gear_command_114", - ":gear_status_514", - ":steer_command_112", - ":steer_status__512", - ":throttle_command_110", - ":throttle_status__510", - ":turnsignal_command_113", - ":turnsignal_status__513", - ":vehicle_mode_command_116", - ":vin_resp1_51b", - ":vin_resp2_51c", - ":vin_resp3_51d", - ":wheelspeed_report_51e", - ], -) - -cc_library( - name = "brake_command_111", - srcs = ["brake_command_111.cc"], - hdrs = ["brake_command_111.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "brake_command_111_test", - size = "small", - srcs = ["brake_command_111_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "brake_status__511", - srcs = ["brake_status__511.cc"], - hdrs = ["brake_status__511.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "brake_status__511_test", - size = "small", - srcs = ["brake_status__511_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ecu_status_1_515", - srcs = ["ecu_status_1_515.cc"], - hdrs = ["ecu_status_1_515.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ecu_status_1_515_test", - size = "small", - srcs = ["ecu_status_1_515_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ecu_status_2_516", - srcs = ["ecu_status_2_516.cc"], - hdrs = ["ecu_status_2_516.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ecu_status_2_516_test", - size = "small", - srcs = ["ecu_status_2_516_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ecu_status_3_517", - srcs = ["ecu_status_3_517.cc"], - hdrs = ["ecu_status_3_517.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ecu_status_3_517_test", - size = "small", - srcs = ["ecu_status_3_517_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ecu_status_4_518", - srcs = ["ecu_status_4_518.cc"], - hdrs = ["ecu_status_4_518.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "gear_command_114", - srcs = ["gear_command_114.cc"], - hdrs = ["gear_command_114.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "gear_command_114_test", - size = "small", - srcs = ["gear_command_114_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "gear_status_514", - srcs = ["gear_status_514.cc"], - hdrs = ["gear_status_514.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "gear_status_514_test", - size = "small", - srcs = ["gear_status_514_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "steer_command_112", - srcs = ["steer_command_112.cc"], - hdrs = ["steer_command_112.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "steer_command_112_test", - size = "small", - srcs = ["steer_command_112_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "steer_status__512", - srcs = ["steer_status__512.cc"], - hdrs = ["steer_status__512.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "steer_status__512_test", - size = "small", - srcs = ["steer_status__512_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "throttle_command_110", - srcs = ["throttle_command_110.cc"], - hdrs = ["throttle_command_110.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "throttle_command_110_test", - size = "small", - srcs = ["throttle_command_110_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "throttle_status__510", - srcs = ["throttle_status__510.cc"], - hdrs = ["throttle_status__510.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "throttle_status__510_test", - size = "small", - srcs = ["throttle_status__510_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "turnsignal_command_113", - srcs = ["turnsignal_command_113.cc"], - hdrs = ["turnsignal_command_113.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "turnsignal_command_113_test", - size = "small", - srcs = ["turnsignal_command_113_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "turnsignal_status__513", - srcs = ["turnsignal_status__513.cc"], - hdrs = ["turnsignal_status__513.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "turnsignal_status__513_test", - size = "small", - srcs = ["turnsignal_status__513_test.cc"], - deps = [ - "//modules/canbus_vehicle/ch/protocol:canbus_ch_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "vehicle_mode_command_116", - srcs = ["vehicle_mode_command_116.cc"], - hdrs = ["vehicle_mode_command_116.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "vin_resp1_51b", - srcs = ["vin_resp1_51b.cc"], - hdrs = ["vin_resp1_51b.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "vin_resp2_51c", - srcs = ["vin_resp2_51c.cc"], - hdrs = ["vin_resp2_51c.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "vin_resp3_51d", - srcs = ["vin_resp3_51d.cc"], - hdrs = ["vin_resp3_51d.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "wheelspeed_report_51e", - srcs = ["wheelspeed_report_51e.cc"], - hdrs = ["wheelspeed_report_51e.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ch/proto:ch_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/devkit/BUILD b/modules/canbus_vehicle/devkit/BUILD index f2c89ede9c1..664632fc250 100755 --- a/modules/canbus_vehicle/devkit/BUILD +++ b/modules/canbus_vehicle/devkit/BUILD @@ -1,137 +1,296 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "devkit_vehicle_factory", +apollo_cc_library( + name = "apollo_canbus_vehicle_devkit", srcs = [ + "devkit_controller.cc", + "devkit_message_manager.cc", "devkit_vehicle_factory.cc", + "protocol/bms_report_512.cc", + "protocol/brake_command_101.cc", + "protocol/brake_report_501.cc", + "protocol/gear_command_103.cc", + "protocol/gear_report_503.cc", + "protocol/park_command_104.cc", + "protocol/park_report_504.cc", + "protocol/steering_command_102.cc", + "protocol/steering_report_502.cc", + "protocol/throttle_command_100.cc", + "protocol/throttle_report_500.cc", + "protocol/ultr_sensor_1_507.cc", + "protocol/ultr_sensor_2_508.cc", + "protocol/ultr_sensor_3_509.cc", + "protocol/ultr_sensor_4_510.cc", + "protocol/ultr_sensor_5_511.cc", + "protocol/vcu_report_505.cc", + "protocol/vehicle_mode_command_105.cc", + "protocol/vin_resp1_514.cc", + "protocol/vin_resp2_515.cc", + "protocol/vin_resp3_516.cc", + "protocol/wheelspeed_report_506.cc", ], hdrs = [ + "devkit_controller.h", + "devkit_message_manager.h", "devkit_vehicle_factory.h", + "protocol/bms_report_512.h", + "protocol/brake_command_101.h", + "protocol/brake_report_501.h", + "protocol/gear_command_103.h", + "protocol/gear_report_503.h", + "protocol/park_command_104.h", + "protocol/park_report_504.h", + "protocol/steering_command_102.h", + "protocol/steering_report_502.h", + "protocol/throttle_command_100.h", + "protocol/throttle_report_500.h", + "protocol/ultr_sensor_1_507.h", + "protocol/ultr_sensor_2_508.h", + "protocol/ultr_sensor_3_509.h", + "protocol/ultr_sensor_4_510.h", + "protocol/ultr_sensor_5_511.h", + "protocol/vcu_report_505.h", + "protocol/vehicle_mode_command_105.h", + "protocol/vin_resp1_514.h", + "protocol/vin_resp2_515.h", + "protocol/vin_resp3_516.h", + "protocol/wheelspeed_report_506.h", ], - copts = CANBUS_COPTS, - alwayslink = True, deps = [ - ":devkit_controller", - ":devkit_message_manager", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", + "//modules/canbus/proto:canbus_conf_cc_proto", + "//modules/canbus/proto:vehicle_parameter_cc_proto", + "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_binary( +apollo_component( name = "libdevkit_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":devkit_vehicle_factory"], + deps = [":apollo_canbus_vehicle_devkit"], ) -cc_test( +apollo_cc_test( name = "devkit_vehicle_factory_test", size = "small", srcs = ["devkit_vehicle_factory_test.cc"], linkstatic = True, deps = [ - ":devkit_vehicle_factory", + ":apollo_canbus_vehicle_devkit", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "devkit_message_manager", - srcs = ["devkit_message_manager.cc"], - hdrs = ["devkit_message_manager.h"], - copts = CANBUS_COPTS, +apollo_cc_test( + name = "devkit_message_manager_test", + size = "small", + srcs = ["devkit_message_manager_test.cc"], deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", ], ) -cc_test( - name = "devkit_message_manager_test", +apollo_cc_test( + name = "devkit_controller_test", size = "small", - srcs = ["devkit_message_manager_test.cc"], + srcs = ["devkit_controller_test.cc"], + data = ["//modules/canbus:test_data"], deps = [ - ":devkit_message_manager", + ":apollo_canbus_vehicle_devkit", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "devkit_controller", - srcs = ["devkit_controller.cc"], - hdrs = ["devkit_controller.h"], - copts = CANBUS_COPTS, +apollo_cc_test( + name = "bms_report_512_test", + size = "small", + srcs = ["protocol/bms_report_512_test.cc"], deps = [ - ":devkit_message_manager", - "//modules/canbus/common:canbus_gflags", - "//modules/canbus/proto:canbus_conf_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/canbus/proto:vehicle_parameter_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", ], ) -cc_test( - name = "devkit_controller_test", +apollo_cc_test( + name = "brake_command_101_test", size = "small", - srcs = ["devkit_controller_test.cc"], - data = ["//modules/canbus:test_data"], + srcs = ["protocol/brake_command_101_test.cc"], deps = [ - ":devkit_controller", - "@com_google_googletest//:gtest_main", - ], -) - -# install( -# name = "install", -# library_dest = "canbus-vehicle-devkit/lib", -# data_dest = "canbus-vehicle-devkit", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-devkit.BUILD", -# ], -# targets = [ -# ":libdevkit_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_devkit", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-devkit/include", -# data = [ -# "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_devkit", -# dest = "canbus-vehicle-devkit", -# files = [ -# "//modules/canbus_vehicle/devkit/proto:devkit_py_pb2", -# ], -# ) + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "brake_report_501_test", + size = "small", + srcs = ["protocol/brake_report_501_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "gear_command_103_test", + size = "small", + srcs = ["protocol/gear_command_103_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "gear_report_503_test", + size = "small", + srcs = ["protocol/gear_report_503_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "park_command_104_test", + size = "small", + srcs = ["protocol/park_command_104_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "park_report_504_test", + size = "small", + srcs = ["protocol/park_report_504_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "steering_command_102_test", + size = "small", + srcs = ["protocol/steering_command_102_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "steering_report_502_test", + size = "small", + srcs = ["protocol/steering_report_502_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "throttle_command_100_test", + size = "small", + srcs = ["protocol/throttle_command_100_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "throttle_report_500_test", + size = "small", + srcs = ["protocol/throttle_report_500_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ultr_sensor_1_507_test", + size = "small", + srcs = ["protocol/ultr_sensor_1_507_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ultr_sensor_2_508_test", + size = "small", + srcs = ["protocol/ultr_sensor_2_508_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ultr_sensor_3_509_test", + size = "small", + srcs = ["protocol/ultr_sensor_3_509_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ultr_sensor_4_510_test", + size = "small", + srcs = ["protocol/ultr_sensor_4_510_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ultr_sensor_5_511_test", + size = "small", + srcs = ["protocol/ultr_sensor_5_511_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "vcu_report_505_test", + size = "small", + srcs = ["protocol/vcu_report_505_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "wheelspeed_report_506_test", + size = "small", + srcs = ["protocol/wheelspeed_report_506_test.cc"], + deps = [ + ":apollo_canbus_vehicle_devkit", + "@com_google_googletest//:gtest_main", + ], +) filegroup( name = "runtime_data", @@ -140,27 +299,6 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_devkit_src", -# ":install_devkit_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_devkit_src", -# src_dir = ["."], -# dest = "canbus-vehicle-devkit/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_devkit_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-devkit/include", -# filter = "*.h", -# ) - apollo_package() + cpplint() diff --git a/modules/canbus_vehicle/devkit/canbus-vehicle-devkit.BUILD b/modules/canbus_vehicle/devkit/canbus-vehicle-devkit.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/devkit/devkit_controller.cc b/modules/canbus_vehicle/devkit/devkit_controller.cc index 30f12337db2..1c20f5ec9d1 100644 --- a/modules/canbus_vehicle/devkit/devkit_controller.cc +++ b/modules/canbus_vehicle/devkit/devkit_controller.cc @@ -436,6 +436,13 @@ Chassis DevkitController::chassis() { chassis_detail.throttle_report_500().throttle_en_state() == 1); } + if (CheckChassisError()) { + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "Chassis has some fault, please check the chassis_detail."); + } + return chassis_; } @@ -718,9 +725,14 @@ bool DevkitController::CheckChassisError() { Devkit chassis_detail; message_manager_->GetSensorData(&chassis_detail); if (!chassis_detail.has_check_response()) { - AERROR_EVERY(100) << "ChassisDetail has no devkit vehicle info." - << chassis_detail.DebugString(); + AERROR_EVERY(100) << "ChassisDetail has no devkit vehicle info."; + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "ChassisDetail has no devkit vehicle info."); return false; + } else { + chassis_.clear_engage_advice(); } // steer fault @@ -803,7 +815,7 @@ void DevkitController::SecurityDogThreadFunc() { ++horizontal_ctrl_fail; if (horizontal_ctrl_fail >= kMaxFailAttempt) { emergency_mode = true; - AINFO << "Driving_mode is into emergency by steer manual intervention"; + AERROR << "Driving_mode is into emergency by steer manual intervention"; set_chassis_error_code(Chassis::MANUAL_INTERVENTION); } } else { @@ -817,12 +829,14 @@ void DevkitController::SecurityDogThreadFunc() { ++vertical_ctrl_fail; if (vertical_ctrl_fail >= kMaxFailAttempt) { emergency_mode = true; - AINFO << "Driving_mode is into emergency by speed manual intervention"; + AERROR << "Driving_mode is into emergency by speed manual intervention"; set_chassis_error_code(Chassis::MANUAL_INTERVENTION); } } else { vertical_ctrl_fail = 0; } + + // 3. chassis fault check if (CheckChassisError()) { set_chassis_error_code(Chassis::CHASSIS_ERROR); emergency_mode = true; diff --git a/modules/canbus_vehicle/devkit/protocol/BUILD b/modules/canbus_vehicle/devkit/protocol/BUILD deleted file mode 100755 index 5fb01876317..00000000000 --- a/modules/canbus_vehicle/devkit/protocol/BUILD +++ /dev/null @@ -1,482 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "canbus_devkit_protocol", - deps = [ - ":bms_report_512", - ":brake_command_101", - ":brake_report_501", - ":gear_command_103", - ":gear_report_503", - ":park_command_104", - ":park_report_504", - ":steering_command_102", - ":steering_report_502", - ":throttle_command_100", - ":throttle_report_500", - ":ultr_sensor_1_507", - ":ultr_sensor_2_508", - ":ultr_sensor_3_509", - ":ultr_sensor_4_510", - ":ultr_sensor_5_511", - ":vcu_report_505", - ":vehicle_mode_command_105", - ":vin_resp1_514", - ":vin_resp2_515", - ":vin_resp3_516", - ":wheelspeed_report_506", - ], -) - -cc_library( - name = "bms_report_512", - srcs = ["bms_report_512.cc"], - hdrs = ["bms_report_512.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "bms_report_512_test", - size = "small", - srcs = ["bms_report_512_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "brake_command_101", - srcs = ["brake_command_101.cc"], - hdrs = ["brake_command_101.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "brake_command_101_test", - size = "small", - srcs = ["brake_command_101_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "brake_report_501", - srcs = ["brake_report_501.cc"], - hdrs = ["brake_report_501.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "brake_report_501_test", - size = "small", - srcs = ["brake_report_501_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "gear_command_103", - srcs = ["gear_command_103.cc"], - hdrs = ["gear_command_103.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "gear_command_103_test", - size = "small", - srcs = ["gear_command_103_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "gear_report_503", - srcs = ["gear_report_503.cc"], - hdrs = ["gear_report_503.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "gear_report_503_test", - size = "small", - srcs = ["gear_report_503_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "park_command_104", - srcs = ["park_command_104.cc"], - hdrs = ["park_command_104.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "park_command_104_test", - size = "small", - srcs = ["park_command_104_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "park_report_504", - srcs = ["park_report_504.cc"], - hdrs = ["park_report_504.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "park_report_504_test", - size = "small", - srcs = ["park_report_504_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "steering_command_102", - srcs = ["steering_command_102.cc"], - hdrs = ["steering_command_102.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "steering_command_102_test", - size = "small", - srcs = ["steering_command_102_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "steering_report_502", - srcs = ["steering_report_502.cc"], - hdrs = ["steering_report_502.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "steering_report_502_test", - size = "small", - srcs = ["steering_report_502_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "throttle_command_100", - srcs = ["throttle_command_100.cc"], - hdrs = ["throttle_command_100.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "throttle_command_100_test", - size = "small", - srcs = ["throttle_command_100_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "throttle_report_500", - srcs = ["throttle_report_500.cc"], - hdrs = ["throttle_report_500.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "throttle_report_500_test", - size = "small", - srcs = ["throttle_report_500_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ultr_sensor_1_507", - srcs = ["ultr_sensor_1_507.cc"], - hdrs = ["ultr_sensor_1_507.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ultr_sensor_1_507_test", - size = "small", - srcs = ["ultr_sensor_1_507_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ultr_sensor_2_508", - srcs = ["ultr_sensor_2_508.cc"], - hdrs = ["ultr_sensor_2_508.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ultr_sensor_2_508_test", - size = "small", - srcs = ["ultr_sensor_2_508_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ultr_sensor_3_509", - srcs = ["ultr_sensor_3_509.cc"], - hdrs = ["ultr_sensor_3_509.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ultr_sensor_3_509_test", - size = "small", - srcs = ["ultr_sensor_3_509_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ultr_sensor_4_510", - srcs = ["ultr_sensor_4_510.cc"], - hdrs = ["ultr_sensor_4_510.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ultr_sensor_4_510_test", - size = "small", - srcs = ["ultr_sensor_4_510_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ultr_sensor_5_511", - srcs = ["ultr_sensor_5_511.cc"], - hdrs = ["ultr_sensor_5_511.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ultr_sensor_5_511_test", - size = "small", - srcs = ["ultr_sensor_5_511_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "vcu_report_505", - srcs = ["vcu_report_505.cc"], - hdrs = ["vcu_report_505.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "vcu_report_505_test", - size = "small", - srcs = ["vcu_report_505_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "vehicle_mode_command_105", - srcs = ["vehicle_mode_command_105.cc"], - hdrs = ["vehicle_mode_command_105.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "vin_resp1_514", - srcs = ["vin_resp1_514.cc"], - hdrs = ["vin_resp1_514.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "vin_resp2_515", - srcs = ["vin_resp2_515.cc"], - hdrs = ["vin_resp2_515.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "vin_resp3_516", - srcs = ["vin_resp3_516.cc"], - hdrs = ["vin_resp3_516.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "wheelspeed_report_506", - srcs = ["wheelspeed_report_506.cc"], - hdrs = ["wheelspeed_report_506.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/devkit/proto:devkit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "wheelspeed_report_506_test", - size = "small", - srcs = ["wheelspeed_report_506_test.cc"], - deps = [ - "//modules/canbus_vehicle/devkit/protocol:canbus_devkit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/ge3/BUILD b/modules/canbus_vehicle/ge3/BUILD index 39c3cc80972..89759c89c17 100644 --- a/modules/canbus_vehicle/ge3/BUILD +++ b/modules/canbus_vehicle/ge3/BUILD @@ -1,133 +1,103 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "ge3_vehicle_factory", - srcs = ["ge3_vehicle_factory.cc"], - hdrs = ["ge3_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_canbus_vehicle_ge3", + srcs = [ + "ge3_controller.cc", + "ge3_message_manager.cc", + "ge3_vehicle_factory.cc", + "protocol/pc_bcm_201.cc", + "protocol/pc_bcs_202.cc", + "protocol/pc_epb_203.cc", + "protocol/pc_eps_204.cc", + "protocol/pc_vcu_205.cc", + "protocol/scu_1_301.cc", + "protocol/scu_2_302.cc", + "protocol/scu_3_303.cc", + "protocol/scu_bcm_304.cc", + "protocol/scu_bcs_1_306.cc", + "protocol/scu_bcs_2_307.cc", + "protocol/scu_bcs_3_308.cc", + "protocol/scu_epb_310.cc", + "protocol/scu_eps_311.cc", + "protocol/scu_vcu_1_312.cc", + "protocol/scu_vcu_2_313.cc", + ], + hdrs = [ + "ge3_controller.h", + "ge3_message_manager.h", + "ge3_vehicle_factory.h", + "protocol/pc_bcm_201.h", + "protocol/pc_bcs_202.h", + "protocol/pc_epb_203.h", + "protocol/pc_eps_204.h", + "protocol/pc_vcu_205.h", + "protocol/scu_1_301.h", + "protocol/scu_2_302.h", + "protocol/scu_3_303.h", + "protocol/scu_bcm_304.h", + "protocol/scu_bcs_1_306.h", + "protocol/scu_bcs_2_307.h", + "protocol/scu_bcs_3_308.h", + "protocol/scu_epb_310.h", + "protocol/scu_eps_311.h", + "protocol/scu_vcu_1_312.h", + "protocol/scu_vcu_2_313.h", + ], deps = [ - ":ge3_controller", - ":ge3_message_manager", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", + "//modules/canbus/proto:vehicle_parameter_cc_proto", + "//modules/canbus_vehicle/ge3/proto:ge3_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/status", - "//modules/canbus/proto:vehicle_parameter_cc_proto", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_binary( +apollo_component( name = "libge3_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":ge3_vehicle_factory"], + deps = [":apollo_canbus_vehicle_ge3"], ) -cc_test( +apollo_cc_test( name = "ge3_vehicle_factory_test", size = "small", srcs = ["ge3_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":ge3_vehicle_factory", + ":apollo_canbus_vehicle_ge3", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "ge3_message_manager", - srcs = ["ge3_message_manager.cc"], - hdrs = ["ge3_message_manager.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/ge3/proto:ge3_cc_proto", - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( +apollo_cc_test( name = "ge3_message_manager_test", size = "small", srcs = ["ge3_message_manager_test.cc"], deps = [ - ":ge3_message_manager", + ":apollo_canbus_vehicle_ge3", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "ge3_controller", - srcs = ["ge3_controller.cc"], - hdrs = ["ge3_controller.h"], - copts = CANBUS_COPTS, - deps = [ - ":ge3_message_manager", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( +apollo_cc_test( name = "ge3_controller_test", size = "small", srcs = ["ge3_controller_test.cc"], data = ["//modules/canbus:test_data"], deps = [ - ":ge3_controller", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -# install( -# name = "install", -# library_dest = "canbus-vehicle-ge3/lib", -# data_dest = "canbus-vehicle-ge3", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-ge3.BUILD", -# ], -# targets = [ -# ":libge3_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_ge3", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-ge3/include", -# data = [ -# "//modules/canbus_vehicle/ge3/proto:ge3_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_ge3", -# dest = "canbus-vehicle-ge3", -# files = [ -# "//modules/canbus_vehicle/ge3/proto:ge3_py_pb2", -# ], -# ) + ":apollo_canbus_vehicle_ge3", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) filegroup( name = "runtime_data", @@ -136,27 +106,183 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_ge3_src", -# ":install_ge3_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_ge3_src", -# src_dir = ["."], -# dest = "canbus-vehicle-ge3/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_ge3_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-ge3/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "pc_bcm_201_test", + size = "small", + srcs = ["protocol/pc_bcm_201_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "pc_bcs_202_test", + size = "small", + srcs = ["protocol/pc_bcs_202_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "pc_epb_203_test", + size = "small", + srcs = ["protocol/pc_epb_203_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "pc_eps_204_test", + size = "small", + srcs = ["protocol/pc_eps_204_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "pc_vcu_205_test", + size = "small", + srcs = ["protocol/pc_vcu_205_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_1_301_test", + size = "small", + srcs = ["protocol/scu_1_301_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_2_302_test", + size = "small", + srcs = ["protocol/scu_2_302_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_3_303_test", + size = "small", + srcs = ["protocol/scu_3_303_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_bcm_304_test", + size = "small", + srcs = ["protocol/scu_bcm_304_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_bcs_1_306_test", + size = "small", + srcs = ["protocol/scu_bcs_1_306_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_bcs_2_307_test", + size = "small", + srcs = ["protocol/scu_bcs_2_307_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_bcs_3_308_test", + size = "small", + srcs = ["protocol/scu_bcs_3_308_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_epb_310_test", + size = "small", + srcs = ["protocol/scu_epb_310_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_eps_311_test", + size = "small", + srcs = ["protocol/scu_eps_311_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_vcu_1_312_test", + size = "small", + srcs = ["protocol/scu_vcu_1_312_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scu_vcu_2_313_test", + size = "small", + srcs = ["protocol/scu_vcu_2_313_test.cc"], + deps = [ + ":apollo_canbus_vehicle_ge3", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) apollo_package() + cpplint() + diff --git a/modules/canbus_vehicle/ge3/canbus-vehicle-ge3.BUILD b/modules/canbus_vehicle/ge3/canbus-vehicle-ge3.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/ge3/protocol/BUILD b/modules/canbus_vehicle/ge3/protocol/BUILD deleted file mode 100644 index 5e7f92d078a..00000000000 --- a/modules/canbus_vehicle/ge3/protocol/BUILD +++ /dev/null @@ -1,229 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "canbus_ge3_protocol_pc_bcm_201", - srcs = [ - "pc_bcm_201.cc", - "pc_bcs_202.cc", - "pc_epb_203.cc", - "pc_eps_204.cc", - "pc_vcu_205.cc", - "scu_1_301.cc", - "scu_2_302.cc", - "scu_3_303.cc", - "scu_bcm_304.cc", - "scu_bcs_1_306.cc", - "scu_bcs_2_307.cc", - "scu_bcs_3_308.cc", - "scu_epb_310.cc", - "scu_eps_311.cc", - "scu_vcu_1_312.cc", - "scu_vcu_2_313.cc", - ], - hdrs = [ - "pc_bcm_201.h", - "pc_bcs_202.h", - "pc_epb_203.h", - "pc_eps_204.h", - "pc_vcu_205.h", - "scu_1_301.h", - "scu_2_302.h", - "scu_3_303.h", - "scu_bcm_304.h", - "scu_bcs_1_306.h", - "scu_bcs_2_307.h", - "scu_bcs_3_308.h", - "scu_epb_310.h", - "scu_eps_311.h", - "scu_vcu_1_312.h", - "scu_vcu_2_313.h", - ], - deps = [ - "//modules/canbus_vehicle/ge3/proto:ge3_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "pc_bcm_201_test", - size = "small", - srcs = ["pc_bcm_201_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "pc_bcs_202_test", - size = "small", - srcs = ["pc_bcs_202_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "pc_epb_203_test", - size = "small", - srcs = ["pc_epb_203_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "pc_eps_204_test", - size = "small", - srcs = ["pc_eps_204_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "pc_vcu_205_test", - size = "small", - srcs = ["pc_vcu_205_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_1_301_test", - size = "small", - srcs = ["scu_1_301_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_2_302_test", - size = "small", - srcs = ["scu_2_302_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_3_303_test", - size = "small", - srcs = ["scu_3_303_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_bcm_304_test", - size = "small", - srcs = ["scu_bcm_304_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_bcs_1_306_test", - size = "small", - srcs = ["scu_bcs_1_306_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_bcs_2_307_test", - size = "small", - srcs = ["scu_bcs_2_307_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_bcs_3_308_test", - size = "small", - srcs = ["scu_bcs_3_308_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_epb_310_test", - size = "small", - srcs = ["scu_epb_310_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_eps_311_test", - size = "small", - srcs = ["scu_eps_311_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_vcu_1_312_test", - size = "small", - srcs = ["scu_vcu_1_312_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "scu_vcu_2_313_test", - size = "small", - srcs = ["scu_vcu_2_313_test.cc"], - deps = [ - "//modules/canbus_vehicle/ge3/protocol:canbus_ge3_protocol_pc_bcm_201", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/gem/BUILD b/modules/canbus_vehicle/gem/BUILD index 25d61d5ed19..7208ba0ecb3 100644 --- a/modules/canbus_vehicle/gem/BUILD +++ b/modules/canbus_vehicle/gem/BUILD @@ -1,133 +1,278 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "gem_vehicle_factory", - srcs = ["gem_vehicle_factory.cc"], - hdrs = ["gem_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_canbus_vehicle_gem", + srcs = [ + "gem_controller.cc", + "gem_message_manager.cc", + "gem_vehicle_factory.cc", + "protocol/accel_cmd_67.cc", + "protocol/accel_rpt_68.cc", + "protocol/brake_cmd_6b.cc", + "protocol/brake_motor_rpt_1_70.cc", + "protocol/brake_motor_rpt_2_71.cc", + "protocol/brake_motor_rpt_3_72.cc", + "protocol/brake_rpt_6c.cc", + "protocol/date_time_rpt_83.cc", + "protocol/global_cmd_69.cc", + "protocol/global_rpt_6a.cc", + "protocol/headlight_cmd_76.cc", + "protocol/headlight_rpt_77.cc", + "protocol/horn_cmd_78.cc", + "protocol/horn_rpt_79.cc", + "protocol/lat_lon_heading_rpt_82.cc", + "protocol/parking_brake_status_rpt_80.cc", + "protocol/shift_cmd_65.cc", + "protocol/shift_rpt_66.cc", + "protocol/steering_cmd_6d.cc", + "protocol/steering_motor_rpt_1_73.cc", + "protocol/steering_motor_rpt_2_74.cc", + "protocol/steering_motor_rpt_3_75.cc", + "protocol/steering_rpt_1_6e.cc", + "protocol/turn_cmd_63.cc", + "protocol/turn_rpt_64.cc", + "protocol/vehicle_speed_rpt_6f.cc", + "protocol/wheel_speed_rpt_7a.cc", + "protocol/wiper_cmd_90.cc", + "protocol/wiper_rpt_91.cc", + "protocol/yaw_rate_rpt_81.cc", + ], + hdrs = [ + "gem_controller.h", + "gem_message_manager.h", + "gem_vehicle_factory.h", + "protocol/accel_cmd_67.h", + "protocol/accel_rpt_68.h", + "protocol/brake_cmd_6b.h", + "protocol/brake_motor_rpt_1_70.h", + "protocol/brake_motor_rpt_2_71.h", + "protocol/brake_motor_rpt_3_72.h", + "protocol/brake_rpt_6c.h", + "protocol/date_time_rpt_83.h", + "protocol/global_cmd_69.h", + "protocol/global_rpt_6a.h", + "protocol/headlight_cmd_76.h", + "protocol/headlight_rpt_77.h", + "protocol/horn_cmd_78.h", + "protocol/horn_rpt_79.h", + "protocol/lat_lon_heading_rpt_82.h", + "protocol/parking_brake_status_rpt_80.h", + "protocol/shift_cmd_65.h", + "protocol/shift_rpt_66.h", + "protocol/steering_cmd_6d.h", + "protocol/steering_motor_rpt_1_73.h", + "protocol/steering_motor_rpt_2_74.h", + "protocol/steering_motor_rpt_3_75.h", + "protocol/steering_rpt_1_6e.h", + "protocol/turn_cmd_63.h", + "protocol/turn_rpt_64.h", + "protocol/vehicle_speed_rpt_6f.h", + "protocol/wheel_speed_rpt_7a.h", + "protocol/wiper_cmd_90.h", + "protocol/wiper_rpt_91.h", + "protocol/yaw_rate_rpt_81.h", + ], deps = [ - ":gem_controller", - ":gem_message_manager", + "//modules/canbus:apollo_canbus", + "//modules/canbus_vehicle/gem/proto:gem_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_binary( +apollo_component( name = "libgem_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":gem_vehicle_factory"], + deps = [":apollo_canbus_vehicle_gem"], ) - -cc_test( +apollo_cc_test( name = "gem_vehicle_factory_test", size = "small", srcs = ["gem_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":gem_vehicle_factory", + ":apollo_canbus_vehicle_gem", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "gem_message_manager", - srcs = ["gem_message_manager.cc"], - hdrs = ["gem_message_manager.h"], - copts = CANBUS_COPTS, +apollo_cc_test( + name = "gem_message_manager_test", + size = "small", + srcs = ["gem_message_manager_test.cc"], deps = [ - "//modules/canbus_vehicle/gem/proto:gem_cc_proto", - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", ], ) -cc_test( - name = "gem_message_manager_test", +apollo_cc_test( + name = "gem_controller_test", size = "small", - srcs = ["gem_message_manager_test.cc"], + srcs = ["gem_controller_test.cc"], + data = ["//modules/canbus:test_data"], deps = [ - ":gem_message_manager", + ":apollo_canbus_vehicle_gem", + "//modules/common/util:common_util", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "gem_controller", - srcs = ["gem_controller.cc"], - hdrs = ["gem_controller.h"], - copts = CANBUS_COPTS, +apollo_cc_test( + name = "accel_rpt_68_test", + size = "small", + srcs = ["protocol/accel_rpt_68_test.cc"], deps = [ - ":gem_message_manager", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus_vehicle/gem/proto:gem_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", ], + linkstatic = True, ) -cc_test( - name = "gem_controller_test", +apollo_cc_test( + name = "brake_rpt_6c_test", size = "small", - srcs = ["gem_controller_test.cc"], - data = ["//modules/canbus:test_data"], + srcs = ["protocol/brake_rpt_6c_test.cc"], deps = [ - ":gem_controller", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -# install( -# name = "install", -# library_dest = "canbus-vehicle-gem/lib", -# data_dest = "canbus-vehicle-gem", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-gem.BUILD", -# ], -# targets = [ -# ":libgem_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_gem", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-gem/include", -# data = [ -# "//modules/canbus_vehicle/gem/proto:gem_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_gem", -# dest = "canbus-vehicle-gem", -# files = [ -# "//modules/canbus_vehicle/gem/proto:gem_py_pb2", -# ], -# ) + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "wheel_speed_rpt_7a_test", + size = "small", + srcs = ["protocol/wheel_speed_rpt_7a_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "yaw_rate_rpt_81_test", + size = "small", + srcs = ["protocol/yaw_rate_rpt_81_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "wiper_rpt_91_test", + size = "small", + srcs = ["protocol/wiper_rpt_91_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "brake_motor_rpt_1_70_test", + size = "small", + srcs = ["protocol/brake_motor_rpt_1_70_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "brake_motor_rpt_2_71_test", + size = "small", + srcs = ["protocol/brake_motor_rpt_2_71_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "brake_motor_rpt_3_72_test", + size = "small", + srcs = ["protocol/brake_motor_rpt_3_72_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "date_time_rpt_83_test", + size = "small", + srcs = ["protocol/date_time_rpt_83_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "global_rpt_6a_test", + size = "small", + srcs = ["protocol/global_rpt_6a_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "lat_lon_heading_rpt_82_test", + size = "small", + srcs = ["protocol/lat_lon_heading_rpt_82_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "steering_motor_rpt_1_73_test", + size = "small", + srcs = ["protocol/steering_motor_rpt_1_73_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "steering_motor_rpt_2_74_test", + size = "small", + srcs = ["protocol/steering_motor_rpt_2_74_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "steering_motor_rpt_3_75_test", + size = "small", + srcs = ["protocol/steering_motor_rpt_3_75_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) filegroup( name = "runtime_data", @@ -136,27 +281,28 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_gem_src", -# ":install_gem_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_gem_src", -# src_dir = ["."], -# dest = "canbus-vehicle-gem/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_gem_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-gem/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "steering_rpt_1_6e_test", + size = "small", + srcs = ["protocol/steering_rpt_1_6e_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "accel_cmd_67_test", + size = "small", + srcs = ["protocol/accel_cmd_67_test.cc"], + deps = [ + ":apollo_canbus_vehicle_gem", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) apollo_package() + cpplint() diff --git a/modules/canbus_vehicle/gem/canbus-vehicle-gem.BUILD b/modules/canbus_vehicle/gem/canbus-vehicle-gem.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/gem/protocol/BUILD b/modules/canbus_vehicle/gem/protocol/BUILD deleted file mode 100644 index 741c5b823b4..00000000000 --- a/modules/canbus_vehicle/gem/protocol/BUILD +++ /dev/null @@ -1,254 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "canbus_gem_protocol", - srcs = [ - "accel_cmd_67.cc", - "accel_rpt_68.cc", - "brake_cmd_6b.cc", - "brake_motor_rpt_1_70.cc", - "brake_motor_rpt_2_71.cc", - "brake_motor_rpt_3_72.cc", - "brake_rpt_6c.cc", - "date_time_rpt_83.cc", - "global_cmd_69.cc", - "global_rpt_6a.cc", - "headlight_cmd_76.cc", - "headlight_rpt_77.cc", - "horn_cmd_78.cc", - "horn_rpt_79.cc", - "lat_lon_heading_rpt_82.cc", - "parking_brake_status_rpt_80.cc", - "shift_cmd_65.cc", - "shift_rpt_66.cc", - "steering_cmd_6d.cc", - "steering_motor_rpt_1_73.cc", - "steering_motor_rpt_2_74.cc", - "steering_motor_rpt_3_75.cc", - "steering_rpt_1_6e.cc", - "turn_cmd_63.cc", - "turn_rpt_64.cc", - "vehicle_speed_rpt_6f.cc", - "wheel_speed_rpt_7a.cc", - "wiper_cmd_90.cc", - "wiper_rpt_91.cc", - "yaw_rate_rpt_81.cc", - ], - hdrs = [ - "accel_cmd_67.h", - "accel_rpt_68.h", - "brake_cmd_6b.h", - "brake_motor_rpt_1_70.h", - "brake_motor_rpt_2_71.h", - "brake_motor_rpt_3_72.h", - "brake_rpt_6c.h", - "date_time_rpt_83.h", - "global_cmd_69.h", - "global_rpt_6a.h", - "headlight_cmd_76.h", - "headlight_rpt_77.h", - "horn_cmd_78.h", - "horn_rpt_79.h", - "lat_lon_heading_rpt_82.h", - "parking_brake_status_rpt_80.h", - "shift_cmd_65.h", - "shift_rpt_66.h", - "steering_cmd_6d.h", - "steering_motor_rpt_1_73.h", - "steering_motor_rpt_2_74.h", - "steering_motor_rpt_3_75.h", - "steering_rpt_1_6e.h", - "turn_cmd_63.h", - "turn_rpt_64.h", - "vehicle_speed_rpt_6f.h", - "wheel_speed_rpt_7a.h", - "wiper_cmd_90.h", - "wiper_rpt_91.h", - "yaw_rate_rpt_81.h", - ], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/gem/proto:gem_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "accel_rpt_68_test", - size = "small", - srcs = ["accel_rpt_68_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "brake_rpt_6c_test", - size = "small", - srcs = ["brake_rpt_6c_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "wheel_speed_rpt_7a_test", - size = "small", - srcs = ["wheel_speed_rpt_7a_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "yaw_rate_rpt_81_test", - size = "small", - srcs = ["yaw_rate_rpt_81_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "wiper_rpt_91_test", - size = "small", - srcs = ["wiper_rpt_91_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "brake_motor_rpt_1_70_test", - size = "small", - srcs = ["brake_motor_rpt_1_70_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "brake_motor_rpt_2_71_test", - size = "small", - srcs = ["brake_motor_rpt_2_71_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "brake_motor_rpt_3_72_test", - size = "small", - srcs = ["brake_motor_rpt_3_72_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "date_time_rpt_83_test", - size = "small", - srcs = ["date_time_rpt_83_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "global_rpt_6a_test", - size = "small", - srcs = ["global_rpt_6a_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "lat_lon_heading_rpt_82_test", - size = "small", - srcs = ["lat_lon_heading_rpt_82_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "steering_motor_rpt_1_73_test", - size = "small", - srcs = ["steering_motor_rpt_1_73_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "steering_motor_rpt_2_74_test", - size = "small", - srcs = ["steering_motor_rpt_2_74_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "steering_motor_rpt_3_75_test", - size = "small", - srcs = ["steering_motor_rpt_3_75_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "steering_rpt_1_6e_test", - size = "small", - srcs = ["steering_rpt_1_6e_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "accel_cmd_67_test", - size = "small", - srcs = ["accel_cmd_67_test.cc"], - deps = [ - "//modules/canbus_vehicle/gem/protocol:canbus_gem_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/lexus/BUILD b/modules/canbus_vehicle/lexus/BUILD index f5ac3a5b2f3..ef421534197 100644 --- a/modules/canbus_vehicle/lexus/BUILD +++ b/modules/canbus_vehicle/lexus/BUILD @@ -1,123 +1,60 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "lexus_vehicle_factory", - srcs = ["lexus_vehicle_factory.cc"], - hdrs = ["lexus_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_canbus_vehicle_lexus", + srcs = [ + "lexus_controller.cc", + "lexus_message_manager.cc", + "lexus_vehicle_factory.cc", + ] + glob(["protocol/*.cc"]), + hdrs = [ + "lexus_controller.h", + "lexus_message_manager.h", + "lexus_vehicle_factory.h", + ] + glob(["protocol/*.h"]), deps = [ - ":lexus_controller", - ":lexus_message_manager", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", + "//modules/canbus_vehicle/lexus/proto:lexus_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_binary( +apollo_component( name = "liblexus_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":lexus_vehicle_factory"], + deps = [":apollo_canbus_vehicle_lexus"], ) -cc_library( - name = "lexus_message_manager", - srcs = ["lexus_message_manager.cc"], - hdrs = ["lexus_message_manager.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/lexus/proto:lexus_cc_proto", - "//modules/canbus_vehicle/lexus/protocol:canbus_lexus_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "lexus_controller", - srcs = ["lexus_controller.cc"], - hdrs = ["lexus_controller.h"], - copts = CANBUS_COPTS, - deps = [ - ":lexus_message_manager", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus_vehicle/lexus/proto:lexus_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/lexus/protocol:canbus_lexus_protocol", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( +apollo_cc_test( name = "lexus_controller_test", size = "small", srcs = ["lexus_controller_test.cc"], data = ["//modules/canbus:test_data"], deps = [ - "//modules/canbus_vehicle/lexus:lexus_controller", + ":apollo_canbus_vehicle_lexus", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "lexus_vehicle_factory_test", size = "small", srcs = ["lexus_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":lexus_vehicle_factory", + ":apollo_canbus_vehicle_lexus", "@com_google_googletest//:gtest_main", ], ) -# install( -# name = "install", -# library_dest = "canbus-vehicle-lexus/lib", -# data_dest = "canbus-vehicle-lexus", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-lexus.BUILD", -# ], -# targets = [ -# ":liblexus_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_lexus", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-lexus/include", -# data = [ -# "//modules/canbus_vehicle/lexus/proto:lexus_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_lexus", -# dest = "canbus-vehicle-lexus", -# files = [ -# "//modules/canbus_vehicle/lexus/proto:lexus_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -125,27 +62,6 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_lexus_src", -# ":install_lexus_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_lexus_src", -# src_dir = ["."], -# dest = "canbus-vehicle-lexus/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_lexus_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-lexus/include", -# filter = "*.h", -# ) - apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/canbus_vehicle/lexus/canbus-vehicle-lexus.BUILD b/modules/canbus_vehicle/lexus/canbus-vehicle-lexus.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/lexus/protocol/BUILD b/modules/canbus_vehicle/lexus/protocol/BUILD deleted file mode 100644 index beb9c51546e..00000000000 --- a/modules/canbus_vehicle/lexus/protocol/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "canbus_lexus_protocol", - srcs = glob([ - "*.cc", - ]), - hdrs = glob([ - "*.h", - ]), - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/lexus/proto:lexus_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/lincoln/BUILD b/modules/canbus_vehicle/lincoln/BUILD index fec73fc2790..744e67947f7 100644 --- a/modules/canbus_vehicle/lincoln/BUILD +++ b/modules/canbus_vehicle/lincoln/BUILD @@ -1,134 +1,117 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "lincoln_vehicle_factory", - srcs = ["lincoln_vehicle_factory.cc"], - hdrs = ["lincoln_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, - deps = [ - ":lincoln_controller", - ":lincoln_message_manager", - "//modules/canbus/common:canbus_gflags", - "//modules/common/adapters:adapter_gflags", - "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", +apollo_cc_library( + name = "apollo_canbus_vehicle_lincoln", + srcs = [ + "lincoln_controller.cc", + "lincoln_message_manager.cc", + "lincoln_vehicle_factory.cc", + "protocol/accel_6b.cc", + "protocol/brake_60.cc", + "protocol/brake_61.cc", + "protocol/brakeinfo_74.cc", + "protocol/fuellevel_72.cc", + "protocol/gear_66.cc", + "protocol/gear_67.cc", + "protocol/gps_6d.cc", + "protocol/gps_6e.cc", + "protocol/gps_6f.cc", + "protocol/gyro_6c.cc", + "protocol/license_7e.cc", + "protocol/misc_69.cc", + "protocol/steering_64.cc", + "protocol/steering_65.cc", + "protocol/surround_73.cc", + "protocol/throttle_62.cc", + "protocol/throttle_63.cc", + "protocol/throttleinfo_75.cc", + "protocol/tirepressure_71.cc", + "protocol/turnsignal_68.cc", + "protocol/version_7f.cc", + "protocol/wheelspeed_6a.cc", ], -) - -cc_binary( - name = "liblincoln_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":lincoln_vehicle_factory"], -) - -cc_library( - name = "lincoln_message_manager", - srcs = ["lincoln_message_manager.cc"], - hdrs = ["lincoln_message_manager.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/lincoln/proto:lincoln_cc_proto", - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + hdrs = [ + "lincoln_controller.h", + "lincoln_message_manager.h", + "lincoln_vehicle_factory.h", + "protocol/accel_6b.h", + "protocol/brake_60.h", + "protocol/brake_61.h", + "protocol/brakeinfo_74.h", + "protocol/fuellevel_72.h", + "protocol/gear_66.h", + "protocol/gear_67.h", + "protocol/gps_6d.h", + "protocol/gps_6e.h", + "protocol/gps_6f.h", + "protocol/gyro_6c.h", + "protocol/license_7e.h", + "protocol/misc_69.h", + "protocol/steering_64.h", + "protocol/steering_65.h", + "protocol/surround_73.h", + "protocol/throttle_62.h", + "protocol/throttle_63.h", + "protocol/throttleinfo_75.h", + "protocol/tirepressure_71.h", + "protocol/turnsignal_68.h", + "protocol/version_7f.h", + "protocol/wheelspeed_6a.h", ], -) - -cc_library( - name = "lincoln_controller", - srcs = ["lincoln_controller.cc"], - hdrs = ["lincoln_controller.h"], - copts = CANBUS_COPTS, deps = [ - ":lincoln_message_manager", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/canbus:apollo_canbus", "//modules/canbus_vehicle/lincoln/proto:lincoln_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", + "//modules/common/adapters:adapter_gflags", "//modules/common/kv_db", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + "//modules/common/status", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", "@com_google_googletest//:gtest", ], ) -cc_test( +apollo_component( + name = "liblincoln_vehicle_factory_lib.so", + deps = [":apollo_canbus_vehicle_lincoln"], +) + +apollo_cc_test( name = "lincoln_controller_test", size = "small", srcs = ["lincoln_controller_test.cc"], data = ["//modules/canbus:test_data"], deps = [ - "//modules/canbus_vehicle/lincoln:lincoln_controller", + ":apollo_canbus_vehicle_lincoln", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "lincoln_message_manager_test", size = "small", srcs = ["lincoln_message_manager_test.cc"], deps = [ - "//modules/canbus_vehicle/lincoln:lincoln_message_manager", + ":apollo_canbus_vehicle_lincoln", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "lincoln_vehicle_factory_test", size = "small", srcs = ["lincoln_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":lincoln_vehicle_factory", - "@com_google_googletest//:gtest_main", - ], -) - -# install( -# name = "install", -# library_dest = "canbus-vehicle-lincoln/lib", -# data_dest = "canbus-vehicle-lincoln", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-lincoln.BUILD", -# ], -# targets = [ -# ":liblincoln_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_lincoln", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-lincoln/include", -# data = [ -# "//modules/canbus_vehicle/lincoln/proto:lincoln_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_lincoln", -# dest = "canbus-vehicle-lincoln", -# files = [ -# "//modules/canbus_vehicle/lincoln/proto:lincoln_py_pb2", -# ], -# ) + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], +) filegroup( name = "runtime_data", @@ -137,27 +120,247 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_lincoln_src", -# ":install_lincoln_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_lincoln_src", -# src_dir = ["."], -# dest = "canbus-vehicle-lincoln/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_lincoln_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-lincoln/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "accel_6b_test", + size = "small", + srcs = ["protocol/accel_6b_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "brake_60_test", + size = "small", + srcs = ["protocol/brake_60_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "brake_61_test", + size = "small", + srcs = ["protocol/brake_61_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "brakeinfo_74_test", + size = "small", + srcs = ["protocol/brakeinfo_74_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "fuellevel_72_test", + size = "small", + srcs = ["protocol/fuellevel_72_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "gear_66_test", + size = "small", + srcs = ["protocol/gear_66_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "gear_67_test", + size = "small", + srcs = ["protocol/gear_67_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "gps_6d_test", + size = "small", + srcs = ["protocol/gps_6d_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "gps_6e_test", + size = "small", + srcs = ["protocol/gps_6e_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "gps_6f_test", + size = "small", + srcs = ["protocol/gps_6f_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "gyro_6c_test", + size = "small", + srcs = ["protocol/gyro_6c_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "misc_69_test", + size = "small", + srcs = ["protocol/misc_69_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "steering_64_test", + size = "small", + srcs = ["protocol/steering_64_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "steering_65_test", + size = "small", + srcs = ["protocol/steering_65_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "throttle_62_test", + size = "small", + srcs = ["protocol/throttle_62_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "throttle_63_test", + size = "small", + srcs = ["protocol/throttle_63_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "throttleinfo_75_test", + size = "small", + srcs = ["protocol/throttleinfo_75_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "tirepressure_71_test", + size = "small", + srcs = ["protocol/tirepressure_71_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "turnsignal_68_test", + size = "small", + srcs = ["protocol/turnsignal_68_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "version_7f_test", + size = "small", + srcs = ["protocol/version_7f_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "wheelspeed_6a_test", + size = "small", + srcs = ["protocol/wheelspeed_6a_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "surround_73_test", + size = "small", + srcs = ["protocol/surround_73_test.cc"], + deps = [ + ":apollo_canbus_vehicle_lincoln", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) apollo_package() diff --git a/modules/canbus_vehicle/lincoln/canbus-vehicle-lincoln.BUILD b/modules/canbus_vehicle/lincoln/canbus-vehicle-lincoln.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/lincoln/protocol/BUILD b/modules/canbus_vehicle/lincoln/protocol/BUILD deleted file mode 100644 index b8a2573f19d..00000000000 --- a/modules/canbus_vehicle/lincoln/protocol/BUILD +++ /dev/null @@ -1,312 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "canbus_lincoln_protocol", - srcs = [ - "accel_6b.cc", - "brake_60.cc", - "brake_61.cc", - "brakeinfo_74.cc", - "fuellevel_72.cc", - "gear_66.cc", - "gear_67.cc", - "gps_6d.cc", - "gps_6e.cc", - "gps_6f.cc", - "gyro_6c.cc", - "license_7e.cc", - "misc_69.cc", - "steering_64.cc", - "steering_65.cc", - "surround_73.cc", - "throttle_62.cc", - "throttle_63.cc", - "throttleinfo_75.cc", - "tirepressure_71.cc", - "turnsignal_68.cc", - "version_7f.cc", - "wheelspeed_6a.cc", - ], - hdrs = [ - "accel_6b.h", - "brake_60.h", - "brake_61.h", - "brakeinfo_74.h", - "fuellevel_72.h", - "gear_66.h", - "gear_67.h", - "gps_6d.h", - "gps_6e.h", - "gps_6f.h", - "gyro_6c.h", - "license_7e.h", - "misc_69.h", - "steering_64.h", - "steering_65.h", - "surround_73.h", - "throttle_62.h", - "throttle_63.h", - "throttleinfo_75.h", - "tirepressure_71.h", - "turnsignal_68.h", - "version_7f.h", - "wheelspeed_6a.h", - ], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/lincoln/proto:lincoln_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "accel_6b_test", - size = "small", - srcs = ["accel_6b_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "brake_60_test", - size = "small", - srcs = ["brake_60_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "brake_61_test", - size = "small", - srcs = ["brake_61_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "brakeinfo_74_test", - size = "small", - srcs = ["brakeinfo_74_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "fuellevel_72_test", - size = "small", - srcs = ["fuellevel_72_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "gear_66_test", - size = "small", - srcs = ["gear_66_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "gear_67_test", - size = "small", - srcs = ["gear_67_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "gps_6d_test", - size = "small", - srcs = ["gps_6d_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "gps_6e_test", - size = "small", - srcs = ["gps_6e_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "gps_6f_test", - size = "small", - srcs = ["gps_6f_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "gyro_6c_test", - size = "small", - srcs = ["gyro_6c_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "misc_69_test", - size = "small", - srcs = ["misc_69_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "steering_64_test", - size = "small", - srcs = ["steering_64_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "steering_65_test", - size = "small", - srcs = ["steering_65_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "throttle_62_test", - size = "small", - srcs = ["throttle_62_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "throttle_63_test", - size = "small", - srcs = ["throttle_63_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "throttleinfo_75_test", - size = "small", - srcs = ["throttleinfo_75_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "tirepressure_71_test", - size = "small", - srcs = ["tirepressure_71_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "turnsignal_68_test", - size = "small", - srcs = ["turnsignal_68_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "version_7f_test", - size = "small", - srcs = ["version_7f_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "wheelspeed_6a_test", - size = "small", - srcs = ["wheelspeed_6a_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "surround_73_test", - size = "small", - srcs = ["surround_73_test.cc"], - deps = [ - "//modules/canbus_vehicle/lincoln/protocol:canbus_lincoln_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/neolix_edu/BUILD b/modules/canbus_vehicle/neolix_edu/BUILD index 4373d7809c5..0290bb8cca7 100644 --- a/modules/canbus_vehicle/neolix_edu/BUILD +++ b/modules/canbus_vehicle/neolix_edu/BUILD @@ -1,143 +1,328 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "neolix_edu_vehicle_factory", +apollo_cc_library( + name = "apollo_canbus_vehicle_neolix_edu", srcs = [ + "neolix_edu_controller.cc", + "neolix_edu_message_manager.cc", "neolix_edu_vehicle_factory.cc", + "protocol/ads_brake_command_46.cc", + "protocol/ads_diagnosis_628.cc", + "protocol/ads_drive_command_50.cc", + "protocol/ads_eps_command_56.cc", + "protocol/ads_light_horn_command_310.cc", + "protocol/aeb_diagnosis1_626.cc", + "protocol/aeb_diagresp_718.cc", + "protocol/aeb_frontwheelspeed_353.cc", + "protocol/aeb_rearwheelspeed_354.cc", + "protocol/aeb_systemstate_11.cc", + "protocol/aeb_wheelimpulse_355.cc", + "protocol/pas_1st_data_311.cc", + "protocol/pas_2nd_data_312.cc", + "protocol/vcu_brake_report_47.cc", + "protocol/vcu_drive_report_52.cc", + "protocol/vcu_eps_report_57.cc", + "protocol/vcu_nm_401.cc", + "protocol/vcu_powerstatus_214.cc", + "protocol/vcu_vehicle_fault_response_201.cc", + "protocol/vcu_vehicle_info_response_502.cc", + "protocol/vcu_vehicle_status_report_101.cc", ], hdrs = [ + "neolix_edu_controller.h", + "neolix_edu_message_manager.h", "neolix_edu_vehicle_factory.h", + "protocol/ads_brake_command_46.h", + "protocol/ads_diagnosis_628.h", + "protocol/ads_drive_command_50.h", + "protocol/ads_eps_command_56.h", + "protocol/ads_light_horn_command_310.h", + "protocol/aeb_diagnosis1_626.h", + "protocol/aeb_diagresp_718.h", + "protocol/aeb_frontwheelspeed_353.h", + "protocol/aeb_rearwheelspeed_354.h", + "protocol/aeb_systemstate_11.h", + "protocol/aeb_wheelimpulse_355.h", + "protocol/pas_1st_data_311.h", + "protocol/pas_2nd_data_312.h", + "protocol/vcu_brake_report_47.h", + "protocol/vcu_drive_report_52.h", + "protocol/vcu_eps_report_57.h", + "protocol/vcu_nm_401.h", + "protocol/vcu_powerstatus_214.h", + "protocol/vcu_vehicle_fault_response_201.h", + "protocol/vcu_vehicle_info_response_502.h", + "protocol/vcu_vehicle_status_report_101.h", ], - copts = CANBUS_COPTS, - alwayslink = True, deps = [ - ":neolix_edu_controller", - ":neolix_edu_message_manager", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", + "//modules/canbus_vehicle/neolix_edu/proto:neolix_edu_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_binary( +apollo_component( name = "libneolix_edu_vehicle_factory_lib.so", - linkshared = True, + deps = [":apollo_canbus_vehicle_neolix_edu"], +) + +apollo_cc_test( + name = "neolix_edu_controller_test", + size = "small", + srcs = ["neolix_edu_controller_test.cc"], + data = ["//modules/canbus:test_data"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "neolix_edu_message_manager_test", + size = "small", + srcs = ["neolix_edu_message_manager_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "neolix_edu_vehicle_factory_test", + size = "small", + srcs = ["neolix_edu_vehicle_factory_test.cc"], + data = ["//modules/canbus:test_data"], linkstatic = True, - deps = [":neolix_edu_vehicle_factory"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], ) -cc_library( - name = "neolix_edu_message_manager", - srcs = [ - "neolix_edu_message_manager.cc", +apollo_cc_test( + name = "ads_brake_command_46_test", + size = "small", + srcs = ["protocol/ads_brake_command_46_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", ], - hdrs = [ - "neolix_edu_message_manager.h", +) + +apollo_cc_test( + name = "ads_eps_command_56_test", + size = "small", + srcs = ["protocol/ads_eps_command_56_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", ], - copts = CANBUS_COPTS, +) + +apollo_cc_test( + name = "aeb_diagresp_718_test", + size = "small", + srcs = ["protocol/aeb_diagresp_718_test.cc"], deps = [ - "//modules/canbus_vehicle/neolix_edu/proto:neolix_edu_cc_proto", - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "neolix_edu_controller", - srcs = [ - "neolix_edu_controller.cc", +apollo_cc_test( + name = "aeb_systemstate_11_test", + size = "small", + srcs = ["protocol/aeb_systemstate_11_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", ], - hdrs = [ - "neolix_edu_controller.h", +) + +apollo_cc_test( + name = "pas_2nd_data_312_test", + size = "small", + srcs = ["protocol/pas_2nd_data_312_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", ], - copts = CANBUS_COPTS, +) + +apollo_cc_test( + name = "vcu_eps_report_57_test", + size = "small", + srcs = ["protocol/vcu_eps_report_57_test.cc"], deps = [ - ":neolix_edu_message_manager", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", ], ) -cc_test( - name = "neolix_edu_controller_test", +apollo_cc_test( + name = "vcu_vehicle_fault_response_201_test", size = "small", - srcs = ["neolix_edu_controller_test.cc"], - data = ["//modules/canbus:test_data"], + srcs = ["protocol/vcu_vehicle_fault_response_201_test.cc"], deps = [ - ":neolix_edu_controller", + ":apollo_canbus_vehicle_neolix_edu", "@com_google_googletest//:gtest_main", ], + linkstatic = True, ) -cc_test( - name = "neolix_edu_message_manager_test", +apollo_cc_test( + name = "ads_diagnosis_628_test", size = "small", - srcs = ["neolix_edu_message_manager_test.cc"], + srcs = ["protocol/ads_diagnosis_628_test.cc"], deps = [ - ":neolix_edu_message_manager", + ":apollo_canbus_vehicle_neolix_edu", "@com_google_googletest//:gtest_main", ], ) -cc_test( - name = "neolix_edu_vehicle_factory_test", +apollo_cc_test( + name = "ads_light_horn_command_310_test", size = "small", - srcs = ["neolix_edu_vehicle_factory_test.cc"], - data = ["//modules/canbus:test_data"], + srcs = ["protocol/ads_light_horn_command_310_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], linkstatic = True, +) + +apollo_cc_test( + name = "aeb_frontwheelspeed_353_test", + size = "small", + srcs = ["protocol/aeb_frontwheelspeed_353_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "aeb_wheelimpulse_355_test", + size = "small", + srcs = ["protocol/aeb_wheelimpulse_355_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "vcu_brake_report_47_test", + size = "small", + srcs = ["protocol/vcu_brake_report_47_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "vcu_nm_401_test", + size = "small", + srcs = ["protocol/vcu_nm_401_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "vcu_vehicle_info_response_502_test", + size = "small", + srcs = ["protocol/vcu_vehicle_info_response_502_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "ads_drive_command_50_test", + size = "small", + srcs = ["protocol/ads_drive_command_50_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "aeb_diagnosis1_626_test", + size = "small", + srcs = ["protocol/aeb_diagnosis1_626_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "aeb_rearwheelspeed_354_test", + size = "small", + srcs = ["protocol/aeb_rearwheelspeed_354_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "pas_1st_data_311_test", + size = "small", + srcs = ["protocol/pas_1st_data_311_test.cc"], deps = [ - ":neolix_edu_vehicle_factory", - "@com_google_googletest//:gtest_main", - ], -) - -# install( -# name = "install", -# library_dest = "canbus-vehicle-neolix-edu/lib", -# data_dest = "canbus-vehicle-neolix-edu", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-neolix-edu.BUILD", -# ], -# targets = [ -# ":libneolix_edu_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_neolix_edu", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-neolix-edu/include", -# data = [ -# "//modules/canbus_vehicle/neolix_edu/proto:neolix_edu_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_neolix_edu", -# dest = "canbus-vehicle-neolix-edu", -# files = [ -# "//modules/canbus_vehicle/neolix_edu/proto:neolix_edu_py_pb2", -# ], -# ) + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "vcu_drive_report_52_test", + size = "small", + srcs = ["protocol/vcu_drive_report_52_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "vcu_powerstatus_214_test", + size = "small", + srcs = ["protocol/vcu_powerstatus_214_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "vcu_vehicle_status_report_101_test", + size = "small", + srcs = ["protocol/vcu_vehicle_status_report_101_test.cc"], + deps = [ + ":apollo_canbus_vehicle_neolix_edu", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) filegroup( name = "runtime_data", @@ -146,27 +331,6 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_neolix_edu_src", -# ":install_neolix_edu_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_neolix_edu_src", -# src_dir = ["."], -# dest = "canbus-vehicle-neolix-edu/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_neolix_edu_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-neolix-edu/include", -# filter = "*.h", -# ) - apollo_package() + cpplint() diff --git a/modules/canbus_vehicle/neolix_edu/canbus-vehicle-neolix-edu.BUILD b/modules/canbus_vehicle/neolix_edu/canbus-vehicle-neolix-edu.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/neolix_edu/neolix_edu_controller.cc b/modules/canbus_vehicle/neolix_edu/neolix_edu_controller.cc index f29eae33c47..1eded60f83a 100644 --- a/modules/canbus_vehicle/neolix_edu/neolix_edu_controller.cc +++ b/modules/canbus_vehicle/neolix_edu/neolix_edu_controller.cc @@ -286,6 +286,13 @@ Chassis Neolix_eduController::chassis() { chassis_detail.vcu_eps_report_57().drive_enable_resp() == 1); } + if (CheckChassisError()) { + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "Chassis has some fault, please check the chassis_detail."); + } + return chassis_; } @@ -485,6 +492,20 @@ void Neolix_eduController::ResetProtocol() { } bool Neolix_eduController::CheckChassisError() { + Neolix_edu chassis_detail; + if (message_manager_->GetSensorData(&chassis_detail) != ErrorCode::OK) { + AERROR_EVERY(100) << "Get chassis detail failed."; + } + if (!chassis_.has_check_response()) { + AERROR_EVERY(100) << "ChassisDetail has no neolix vehicle info."; + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "ChassisDetail has no neolix vehicle info."); + return false; + } else { + chassis_.clear_engage_advice(); + } /* ADD YOUR OWN CAR CHASSIS OPERATION */ return false; @@ -518,7 +539,7 @@ void Neolix_eduController::SecurityDogThreadFunc() { ++horizontal_ctrl_fail; if (horizontal_ctrl_fail >= kMaxFailAttempt) { emergency_mode = true; - AINFO << "Driving_mode is into emergency by steer manual intervention"; + AERROR << "Driving_mode is into emergency by steer manual intervention"; set_chassis_error_code(Chassis::MANUAL_INTERVENTION); } } else { @@ -532,12 +553,14 @@ void Neolix_eduController::SecurityDogThreadFunc() { ++vertical_ctrl_fail; if (vertical_ctrl_fail >= kMaxFailAttempt) { emergency_mode = true; - AINFO << "Driving_mode is into emergency by speed manual intervention"; + AERROR << "Driving_mode is into emergency by speed manual intervention"; set_chassis_error_code(Chassis::MANUAL_INTERVENTION); } } else { vertical_ctrl_fail = 0; } + + // 3. chassis fault check if (CheckChassisError()) { set_chassis_error_code(Chassis::CHASSIS_ERROR); emergency_mode = true; diff --git a/modules/canbus_vehicle/neolix_edu/protocol/BUILD b/modules/canbus_vehicle/neolix_edu/protocol/BUILD deleted file mode 100644 index c2b7090f9e9..00000000000 --- a/modules/canbus_vehicle/neolix_edu/protocol/BUILD +++ /dev/null @@ -1,280 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "canbus_neolix_edu_protocol", - srcs = [ - "ads_brake_command_46.cc", - "ads_diagnosis_628.cc", - "ads_drive_command_50.cc", - "ads_eps_command_56.cc", - "ads_light_horn_command_310.cc", - "aeb_diagnosis1_626.cc", - "aeb_diagresp_718.cc", - "aeb_frontwheelspeed_353.cc", - "aeb_rearwheelspeed_354.cc", - "aeb_systemstate_11.cc", - "aeb_wheelimpulse_355.cc", - "pas_1st_data_311.cc", - "pas_2nd_data_312.cc", - "vcu_brake_report_47.cc", - "vcu_drive_report_52.cc", - "vcu_eps_report_57.cc", - "vcu_nm_401.cc", - "vcu_powerstatus_214.cc", - "vcu_vehicle_fault_response_201.cc", - "vcu_vehicle_info_response_502.cc", - "vcu_vehicle_status_report_101.cc", - ], - hdrs = [ - "ads_brake_command_46.h", - "ads_diagnosis_628.h", - "ads_drive_command_50.h", - "ads_eps_command_56.h", - "ads_light_horn_command_310.h", - "aeb_diagnosis1_626.h", - "aeb_diagresp_718.h", - "aeb_frontwheelspeed_353.h", - "aeb_rearwheelspeed_354.h", - "aeb_systemstate_11.h", - "aeb_wheelimpulse_355.h", - "pas_1st_data_311.h", - "pas_2nd_data_312.h", - "vcu_brake_report_47.h", - "vcu_drive_report_52.h", - "vcu_eps_report_57.h", - "vcu_nm_401.h", - "vcu_powerstatus_214.h", - "vcu_vehicle_fault_response_201.h", - "vcu_vehicle_info_response_502.h", - "vcu_vehicle_status_report_101.h", - ], - deps = [ - "//modules/canbus_vehicle/neolix_edu/proto:neolix_edu_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ads_brake_command_46_test", - size = "small", - srcs = ["ads_brake_command_46_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "ads_eps_command_56_test", - size = "small", - srcs = ["ads_eps_command_56_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "aeb_diagresp_718_test", - size = "small", - srcs = ["aeb_diagresp_718_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "aeb_systemstate_11_test", - size = "small", - srcs = ["aeb_systemstate_11_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "pas_2nd_data_312_test", - size = "small", - srcs = ["pas_2nd_data_312_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "vcu_eps_report_57_test", - size = "small", - srcs = ["vcu_eps_report_57_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "vcu_vehicle_fault_response_201_test", - size = "small", - srcs = ["vcu_vehicle_fault_response_201_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "ads_diagnosis_628_test", - size = "small", - srcs = ["ads_diagnosis_628_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "ads_light_horn_command_310_test", - size = "small", - srcs = ["ads_light_horn_command_310_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "aeb_frontwheelspeed_353_test", - size = "small", - srcs = ["aeb_frontwheelspeed_353_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "aeb_wheelimpulse_355_test", - size = "small", - srcs = ["aeb_wheelimpulse_355_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "vcu_brake_report_47_test", - size = "small", - srcs = ["vcu_brake_report_47_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "vcu_nm_401_test", - size = "small", - srcs = ["vcu_nm_401_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "vcu_vehicle_info_response_502_test", - size = "small", - srcs = ["vcu_vehicle_info_response_502_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "ads_drive_command_50_test", - size = "small", - srcs = ["ads_drive_command_50_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "aeb_diagnosis1_626_test", - size = "small", - srcs = ["aeb_diagnosis1_626_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "aeb_rearwheelspeed_354_test", - size = "small", - srcs = ["aeb_rearwheelspeed_354_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "pas_1st_data_311_test", - size = "small", - srcs = ["pas_1st_data_311_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "vcu_drive_report_52_test", - size = "small", - srcs = ["vcu_drive_report_52_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "vcu_powerstatus_214_test", - size = "small", - srcs = ["vcu_powerstatus_214_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "vcu_vehicle_status_report_101_test", - size = "small", - srcs = ["vcu_vehicle_status_report_101_test.cc"], - deps = [ - "//modules/canbus_vehicle/neolix_edu/protocol:canbus_neolix_edu_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/transit/BUILD b/modules/canbus_vehicle/transit/BUILD index ce2e12633ee..6e851fa0b24 100644 --- a/modules/canbus_vehicle/transit/BUILD +++ b/modules/canbus_vehicle/transit/BUILD @@ -1,123 +1,89 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "transit_vehicle_factory", - srcs = ["transit_vehicle_factory.cc"], - hdrs = ["transit_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_canbus_vehicle_transit", + srcs = [ + "protocol/adc_auxiliarycontrol_110.cc", + "protocol/adc_motioncontrol1_10.cc", + "protocol/adc_motioncontrollimits1_12.cc", + "protocol/llc_auxiliaryfeedback_120.cc", + "protocol/llc_diag_brakecontrol_721.cc", + "protocol/llc_diag_fault_620.cc", + "protocol/llc_diag_steeringcontrol_722.cc", + "protocol/llc_motioncommandfeedback1_22.cc", + "protocol/llc_motionfeedback1_20.cc", + "protocol/llc_motionfeedback2_21.cc", + "protocol/llc_vehiclelimits_24.cc", + "protocol/llc_vehiclestatus_25.cc", + "transit_controller.cc", + "transit_message_manager.cc", + "transit_vehicle_factory.cc", + ], + hdrs = [ + "protocol/adc_auxiliarycontrol_110.h", + "protocol/adc_motioncontrol1_10.h", + "protocol/adc_motioncontrollimits1_12.h", + "protocol/llc_auxiliaryfeedback_120.h", + "protocol/llc_diag_brakecontrol_721.h", + "protocol/llc_diag_fault_620.h", + "protocol/llc_diag_steeringcontrol_722.h", + "protocol/llc_motioncommandfeedback1_22.h", + "protocol/llc_motionfeedback1_20.h", + "protocol/llc_motionfeedback2_21.h", + "protocol/llc_vehiclelimits_24.h", + "protocol/llc_vehiclestatus_25.h", + "transit_controller.h", + "transit_message_manager.h", + "transit_vehicle_factory.h", + ], deps = [ - ":transit_controller", - ":transit_message_manager", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", + "//modules/canbus_vehicle/transit/proto:transit_cc_proto", "//modules/common/adapters:adapter_gflags", + "//modules/common/kv_db", "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", + "@com_google_googletest//:gtest", ], ) -cc_binary( - name = "libtransit_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":transit_vehicle_factory"], -) - -cc_library( - name = "transit_message_manager", - srcs = ["transit_message_manager.cc"], - hdrs = ["transit_message_manager.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) -cc_library( - name = "transit_controller", - srcs = ["transit_controller.cc"], - hdrs = ["transit_controller.h"], - copts = CANBUS_COPTS, - deps = [ - ":transit_message_manager", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/common/kv_db", - "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/common:canbus_common", - ], +apollo_component( + name = "libtransit_vehicle_factory_lib.so", + deps = [":apollo_canbus_vehicle_transit"], ) -cc_test( +apollo_cc_test( name = "transit_vehicle_factory_test", size = "small", srcs = ["transit_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":transit_vehicle_factory", + ":apollo_canbus_vehicle_transit", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "transit_controller_test", size = "small", srcs = ["transit_controller_test.cc"], data = ["//modules/canbus:test_data"], deps = [ - ":transit_controller", - "//modules/common/util", + ":apollo_canbus_vehicle_transit", + "//modules/common/util:common_util", "@com_google_googletest//:gtest_main", ], ) -# install( -# name = "install", -# library_dest = "canbus-vehicle-transit/lib", -# data_dest = "canbus-vehicle-transit", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-transit.BUILD", -# ], -# targets = [ -# ":libtransit_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_transit", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-transit/include", -# data = [ -# "//modules/canbus_vehicle/transit/proto:transit_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_transit", -# dest = "canbus-vehicle-transit", -# files = [ -# "//modules/canbus_vehicle/transit/proto:transit_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -125,27 +91,134 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_transit_src", -# ":install_transit_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_transit_src", -# src_dir = ["."], -# dest = "canbus-vehicle-transit/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_transit_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-transit/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "Auxiliarycontrol_110_test", + size = "small", + srcs = ["protocol/adc_auxiliarycontrol_110_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "adc_motioncontrol1_10_test", + size = "small", + srcs = ["protocol/adc_motioncontrol1_10_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "Motioncontrollimits1_12", + size = "small", + srcs = ["protocol/adc_motioncontrollimits1_12_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "llc_auxiliaryfeedback_120_test", + size = "small", + srcs = ["protocol/llc_auxiliaryfeedback_120_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "llc_diag_brakecontrol_721_test", + size = "small", + srcs = ["protocol/llc_diag_brakecontrol_721_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "Diag_fault_620_test", + size = "small", + srcs = ["protocol/llc_diag_fault_620_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "llc_diag_steeringcontrol_722_test", + size = "small", + srcs = ["protocol/llc_diag_steeringcontrol_722_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "Motioncommandfeedback1_22_test", + size = "small", + srcs = ["protocol/llc_motioncommandfeedback1_22_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "Motionfeedback1_20_test", + size = "small", + srcs = ["protocol/llc_motionfeedback1_20_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "llc_motionfeedback2_21_test", + size = "small", + srcs = ["protocol/llc_motionfeedback2_21_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "Vehiclelimits_24_test", + size = "small", + srcs = ["protocol/llc_vehiclelimits_24_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "llc_vehiclestatus_25_test", + size = "small", + srcs = ["protocol/llc_vehiclestatus_25_test.cc"], + deps = [ + ":apollo_canbus_vehicle_transit", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) apollo_package() + cpplint() diff --git a/modules/canbus_vehicle/transit/canbus-vehicle-transit.BUILD b/modules/canbus_vehicle/transit/canbus-vehicle-transit.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/transit/protocol/BUILD b/modules/canbus_vehicle/transit/protocol/BUILD deleted file mode 100644 index 594ec50574f..00000000000 --- a/modules/canbus_vehicle/transit/protocol/BUILD +++ /dev/null @@ -1,324 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "canbus_transit_protocol", - deps = [ - ":adc_auxiliarycontrol_110", - ":adc_motioncontrol1_10", - ":adc_motioncontrollimits1_12", - ":llc_auxiliaryfeedback_120", - ":llc_diag_brakecontrol_721", - ":llc_diag_fault_620", - ":llc_diag_steeringcontrol_722", - ":llc_motioncommandfeedback1_22", - ":llc_motionfeedback1_20", - ":llc_motionfeedback2_21", - ":llc_vehiclelimits_24", - ":llc_vehiclestatus_25", - ], -) - -cc_library( - name = "adc_auxiliarycontrol_110", - srcs = ["adc_auxiliarycontrol_110.cc"], - hdrs = ["adc_auxiliarycontrol_110.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "Auxiliarycontrol_110_test", - size = "small", - srcs = ["adc_auxiliarycontrol_110_test.cc"], - deps = [ - ":adc_auxiliarycontrol_110", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "adc_motioncontrol1_10", - srcs = ["adc_motioncontrol1_10.cc"], - hdrs = ["adc_motioncontrol1_10.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "adc_motioncontrol1_10_test", - size = "small", - srcs = ["adc_motioncontrol1_10_test.cc"], - deps = [ - ":adc_motioncontrol1_10", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "adc_motioncontrollimits1_12", - srcs = ["adc_motioncontrollimits1_12.cc"], - hdrs = ["adc_motioncontrollimits1_12.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "Motioncontrollimits1_12", - size = "small", - srcs = ["adc_motioncontrollimits1_12_test.cc"], - deps = [ - ":adc_motioncontrollimits1_12", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "llc_auxiliaryfeedback_120", - srcs = ["llc_auxiliaryfeedback_120.cc"], - hdrs = ["llc_auxiliaryfeedback_120.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "llc_auxiliaryfeedback_120_test", - size = "small", - srcs = ["llc_auxiliaryfeedback_120_test.cc"], - deps = [ - ":llc_auxiliaryfeedback_120", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "llc_diag_brakecontrol_721", - srcs = ["llc_diag_brakecontrol_721.cc"], - hdrs = ["llc_diag_brakecontrol_721.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "llc_diag_brakecontrol_721_test", - size = "small", - srcs = ["llc_diag_brakecontrol_721_test.cc"], - deps = [ - ":llc_diag_brakecontrol_721", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "llc_diag_fault_620", - srcs = ["llc_diag_fault_620.cc"], - hdrs = ["llc_diag_fault_620.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "Diag_fault_620_test", - size = "small", - srcs = ["llc_diag_fault_620_test.cc"], - deps = [ - ":llc_diag_fault_620", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "llc_diag_steeringcontrol_722", - srcs = ["llc_diag_steeringcontrol_722.cc"], - hdrs = ["llc_diag_steeringcontrol_722.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "llc_diag_steeringcontrol_722_test", - size = "small", - srcs = ["llc_diag_steeringcontrol_722_test.cc"], - deps = [ - ":llc_diag_steeringcontrol_722", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "llc_motioncommandfeedback1_22", - srcs = ["llc_motioncommandfeedback1_22.cc"], - hdrs = ["llc_motioncommandfeedback1_22.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "Motioncommandfeedback1_22_test", - size = "small", - srcs = ["llc_motioncommandfeedback1_22_test.cc"], - deps = [ - ":llc_motioncommandfeedback1_22", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "llc_motionfeedback1_20", - srcs = ["llc_motionfeedback1_20.cc"], - hdrs = ["llc_motionfeedback1_20.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "Motionfeedback1_20_test", - size = "small", - srcs = ["llc_motionfeedback1_20_test.cc"], - deps = [ - ":llc_motionfeedback1_20", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "llc_motionfeedback2_21", - srcs = ["llc_motionfeedback2_21.cc"], - hdrs = ["llc_motionfeedback2_21.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "llc_motionfeedback2_21_test", - size = "small", - srcs = ["llc_motionfeedback2_21_test.cc"], - deps = [ - ":llc_motionfeedback2_21", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "llc_vehiclelimits_24", - srcs = ["llc_vehiclelimits_24.cc"], - hdrs = ["llc_vehiclelimits_24.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "Vehiclelimits_24_test", - size = "small", - srcs = ["llc_vehiclelimits_24_test.cc"], - deps = [ - ":llc_vehiclelimits_24", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "llc_vehiclestatus_25", - srcs = ["llc_vehiclestatus_25.cc"], - hdrs = ["llc_vehiclestatus_25.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/transit/proto:transit_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "llc_vehiclestatus_25_test", - size = "small", - srcs = ["llc_vehiclestatus_25_test.cc"], - deps = [ - ":llc_vehiclestatus_25", - "//modules/canbus_vehicle/transit/protocol:canbus_transit_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/wey/BUILD b/modules/canbus_vehicle/wey/BUILD index c641f5f5d64..b2bd050c3b5 100644 --- a/modules/canbus_vehicle/wey/BUILD +++ b/modules/canbus_vehicle/wey/BUILD @@ -1,133 +1,257 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "wey_vehicle_factory", - srcs = ["wey_vehicle_factory.cc"], - hdrs = ["wey_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_canbus_vehicle_wey", + srcs = [ + "protocol/ads1_111.cc", + "protocol/ads3_38e.cc", + "protocol/ads_eps_113.cc", + "protocol/ads_req_vin_390.cc", + "protocol/ads_shifter_115.cc", + "protocol/fail_241.cc", + "protocol/fbs1_243.cc", + "protocol/fbs2_240.cc", + "protocol/fbs3_237.cc", + "protocol/fbs4_235.cc", + "protocol/status_310.cc", + "protocol/vin_resp1_391.cc", + "protocol/vin_resp2_392.cc", + "protocol/vin_resp3_393.cc", + "wey_controller.cc", + "wey_message_manager.cc", + "wey_vehicle_factory.cc", + ], + hdrs = [ + "protocol/ads1_111.h", + "protocol/ads3_38e.h", + "protocol/ads_eps_113.h", + "protocol/ads_req_vin_390.h", + "protocol/ads_shifter_115.h", + "protocol/fail_241.h", + "protocol/fbs1_243.h", + "protocol/fbs2_240.h", + "protocol/fbs3_237.h", + "protocol/fbs4_235.h", + "protocol/status_310.h", + "protocol/vin_resp1_391.h", + "protocol/vin_resp2_392.h", + "protocol/vin_resp3_393.h", + "wey_controller.h", + "wey_message_manager.h", + "wey_vehicle_factory.h", + ], deps = [ - ":wey_controller", - ":wey_message_manager", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", + "//modules/canbus/proto:canbus_conf_cc_proto", + "//modules/canbus/proto:vehicle_parameter_cc_proto", + "//modules/canbus_vehicle/wey/proto:wey_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_binary( + +apollo_component( name = "libwey_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":wey_vehicle_factory"], + deps = [":apollo_canbus_vehicle_wey"], ) -cc_test( +apollo_cc_test( name = "wey_vehicle_factory_test", size = "small", srcs = ["wey_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":wey_vehicle_factory", + ":apollo_canbus_vehicle_wey", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "wey_message_manager", - srcs = ["wey_message_manager.cc"], - hdrs = ["wey_message_manager.h"], - copts = CANBUS_COPTS, +apollo_cc_test( + name = "wey_message_manager_test", + size = "small", + srcs = ["wey_message_manager_test.cc"], deps = [ - "//modules/canbus_vehicle/wey/proto:wey_cc_proto", - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", + ":apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", ], ) -cc_test( - name = "wey_message_manager_test", +apollo_cc_test( + name = "wey_controller_test", size = "small", - srcs = ["wey_message_manager_test.cc"], + srcs = ["wey_controller_test.cc"], + data = ["//modules/canbus:test_data"], deps = [ - ":wey_message_manager", + ":apollo_canbus_vehicle_wey", + "//modules/common/util:common_util", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "wey_controller", - srcs = ["wey_controller.cc"], - hdrs = ["wey_controller.h"], - copts = CANBUS_COPTS, +apollo_cc_test( + name = "ads1_111_test", + size = "small", + srcs = ["protocol/ads1_111_test.cc"], deps = [ - ":wey_message_manager", - "//modules/canbus/proto:canbus_conf_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus/proto:vehicle_parameter_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", ], + linkstatic = True, ) -cc_test( - name = "wey_controller_test", +apollo_cc_test( + name = "ads3_38e_test", size = "small", - srcs = ["wey_controller_test.cc"], - data = ["//modules/canbus:test_data"], + srcs = ["protocol/ads3_38e_test.cc"], deps = [ - ":wey_controller", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -# install( -# name = "install", -# library_dest = "canbus-vehicle-wey/lib", -# data_dest = "canbus-vehicle-wey", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-wey.BUILD", -# ], -# targets = [ -# ":libwey_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_wey", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-wey/include", -# data = [ -# "//modules/canbus_vehicle/wey/proto:wey_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_wey", -# dest = "canbus-vehicle-wey", -# files = [ -# "//modules/canbus_vehicle/wey/proto:wey_py_pb2", -# ], -# ) + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "ads_eps_113_test", + size = "small", + srcs = ["protocol/ads_eps_113_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "ads_req_vin_390_test", + size = "small", + srcs = ["protocol/ads_req_vin_390_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "ads_shifter_115_test", + size = "small", + srcs = ["protocol/ads_shifter_115_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "fail_241_test", + size = "small", + srcs = ["protocol/fail_241_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "fbs1_243_test", + size = "small", + srcs = ["protocol/fbs1_243_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "fbs2_240_test", + size = "small", + srcs = ["protocol/fbs2_240_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "fbs3_237_test", + size = "small", + srcs = ["protocol/fbs3_237_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "fbs4_235_test", + size = "small", + srcs = ["protocol/fbs4_235_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "status_310_test", + size = "small", + srcs = ["protocol/status_310_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "vin_resp1_391_test", + size = "small", + srcs = ["protocol/vin_resp1_391_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "vin_resp2_392_test", + size = "small", + srcs = ["protocol/vin_resp2_392_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "vin_resp3_393_test", + size = "small", + srcs = ["protocol/vin_resp3_393_test.cc"], + deps = [ + "apollo_canbus_vehicle_wey", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) filegroup( name = "runtime_data", @@ -136,27 +260,6 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_wey_src", -# ":install_wey_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_wey_src", -# src_dir = ["."], -# dest = "canbus-vehicle-wey/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_wey_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-wey/include", -# filter = "*.h", -# ) - apollo_package() + cpplint() diff --git a/modules/canbus_vehicle/wey/canbus-vehicle-wey.BUILD b/modules/canbus_vehicle/wey/canbus-vehicle-wey.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/wey/protocol/BUILD b/modules/canbus_vehicle/wey/protocol/BUILD deleted file mode 100644 index f01b24d7fd9..00000000000 --- a/modules/canbus_vehicle/wey/protocol/BUILD +++ /dev/null @@ -1,203 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "canbus_wey_protocol", - srcs = [ - "ads1_111.cc", - "ads3_38e.cc", - "ads_eps_113.cc", - "ads_req_vin_390.cc", - "ads_shifter_115.cc", - "fail_241.cc", - "fbs1_243.cc", - "fbs2_240.cc", - "fbs3_237.cc", - "fbs4_235.cc", - "status_310.cc", - "vin_resp1_391.cc", - "vin_resp2_392.cc", - "vin_resp3_393.cc", - ], - hdrs = [ - "ads1_111.h", - "ads3_38e.h", - "ads_eps_113.h", - "ads_req_vin_390.h", - "ads_shifter_115.h", - "fail_241.h", - "fbs1_243.h", - "fbs2_240.h", - "fbs3_237.h", - "fbs4_235.h", - "status_310.h", - "vin_resp1_391.h", - "vin_resp2_392.h", - "vin_resp3_393.h", - ], - deps = [ - "//modules/canbus_vehicle/wey/proto:wey_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "ads1_111_test", - size = "small", - srcs = ["ads1_111_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "ads3_38e_test", - size = "small", - srcs = ["ads3_38e_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "ads_eps_113_test", - size = "small", - srcs = ["ads_eps_113_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "ads_req_vin_390_test", - size = "small", - srcs = ["ads_req_vin_390_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "ads_shifter_115_test", - size = "small", - srcs = ["ads_shifter_115_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "fail_241_test", - size = "small", - srcs = ["fail_241_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "fbs1_243_test", - size = "small", - srcs = ["fbs1_243_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "fbs2_240_test", - size = "small", - srcs = ["fbs2_240_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "fbs3_237_test", - size = "small", - srcs = ["fbs3_237_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "fbs4_235_test", - size = "small", - srcs = ["fbs4_235_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "status_310_test", - size = "small", - srcs = ["status_310_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "vin_resp1_391_test", - size = "small", - srcs = ["vin_resp1_391_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "vin_resp2_392_test", - size = "small", - srcs = ["vin_resp2_392_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "vin_resp3_393_test", - size = "small", - srcs = ["vin_resp3_393_test.cc"], - deps = [ - "//modules/canbus_vehicle/wey/protocol:canbus_wey_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/canbus_vehicle/zhongyun/BUILD b/modules/canbus_vehicle/zhongyun/BUILD index 7a98ab81880..0cc474fac50 100644 --- a/modules/canbus_vehicle/zhongyun/BUILD +++ b/modules/canbus_vehicle/zhongyun/BUILD @@ -1,134 +1,91 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] -cc_library( - name = "zhongyun_vehicle_factory", - srcs = ["zhongyun_vehicle_factory.cc"], - hdrs = ["zhongyun_vehicle_factory.h"], - copts = CANBUS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_canbus_vehicle_zhongyun", + srcs = [ + "protocol/brake_control_a4.cc", + "protocol/enable_state_feedback_c3.cc", + "protocol/error_state_e1.cc", + "protocol/gear_control_a1.cc", + "protocol/parking_control_a5.cc", + "protocol/steering_control_a2.cc", + "protocol/torque_control_a3.cc", + "protocol/vehicle_state_feedback_2_c4.cc", + "protocol/vehicle_state_feedback_c1.cc", + "zhongyun_controller.cc", + "zhongyun_message_manager.cc", + "zhongyun_vehicle_factory.cc", + ], + hdrs = [ + "protocol/brake_control_a4.h", + "protocol/enable_state_feedback_c3.h", + "protocol/error_state_e1.h", + "protocol/gear_control_a1.h", + "protocol/parking_control_a5.h", + "protocol/steering_control_a2.h", + "protocol/torque_control_a3.h", + "protocol/vehicle_state_feedback_2_c4.h", + "protocol/vehicle_state_feedback_c1.h", + "zhongyun_controller.h", + "zhongyun_message_manager.h", + "zhongyun_vehicle_factory.h", + ], deps = [ - ":zhongyun_controller", - ":zhongyun_message_manager", - "//modules/canbus/common:canbus_gflags", + "//modules/canbus:apollo_canbus", + "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/status", - "//modules/canbus/vehicle:abstract_vehicle_factory", - "//modules/drivers/canbus:sensor_canbus_lib", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", ], ) -cc_binary( - name = "libzhongyun_vehicle_factory_lib.so", - linkshared = True, - linkstatic = True, - deps = [":zhongyun_vehicle_factory"], -) -cc_library( - name = "zhongyun_message_manager", - srcs = ["zhongyun_message_manager.cc"], - hdrs = ["zhongyun_message_manager.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/canbus_vehicle/zhongyun/protocol:canbus_zhongyun_protocol", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_library( - name = "zhongyun_controller", - srcs = ["zhongyun_controller.cc"], - hdrs = ["zhongyun_controller.h"], - copts = CANBUS_COPTS, - deps = [ - ":zhongyun_message_manager", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/canbus/vehicle:vehicle_controller_base", - "//modules/canbus_vehicle/zhongyun/protocol:canbus_zhongyun_protocol", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], +apollo_component( + name = "libzhongyun_vehicle_factory_lib.so", + deps = [":apollo_canbus_vehicle_zhongyun"], ) -cc_test( +apollo_cc_test( name = "zhongyun_message_manager_test", size = "small", srcs = ["zhongyun_message_manager_test.cc"], data = ["//modules/canbus:test_data"], deps = [ - ":zhongyun_message_manager", + ":apollo_canbus_vehicle_zhongyun", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "zhongyun_vehicle_factory_test", size = "small", srcs = ["zhongyun_vehicle_factory_test.cc"], data = ["//modules/canbus:test_data"], linkstatic = True, deps = [ - ":zhongyun_vehicle_factory", + ":apollo_canbus_vehicle_zhongyun", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "zhongyun_controller_test", size = "small", srcs = ["zhongyun_controller_test.cc"], data = ["//modules/canbus:test_data"], deps = [ - ":zhongyun_controller", - "//modules/common/util", + ":apollo_canbus_vehicle_zhongyun", + "//modules/common/util:common_util", "@com_google_googletest//:gtest_main", ], ) -# install( -# name = "install", -# library_dest = "canbus-vehicle-zhongyun/lib", -# data_dest = "canbus-vehicle-zhongyun", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":canbus-vehicle-zhongyun.BUILD", -# ], -# targets = [ -# ":libzhongyun_vehicle_factory_lib.so", -# ], -# deps = [ -# ":pb_zhongyun", -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "canbus-vehicle-zhongyun/include", -# data = [ -# "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_zhongyun", -# dest = "canbus-vehicle-zhongyun", -# files = [ -# "//modules/canbus_vehicle/zhongyun/proto:zhongyun_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -136,27 +93,99 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_zhongyun_src", -# ":install_zhongyun_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_zhongyun_src", -# src_dir = ["."], -# dest = "canbus-vehicle-zhongyun/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_zhongyun_hdrs", -# src_dir = ["."], -# dest = "canbus-vehicle-zhongyun/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "brake_control_a4_test", + size = "small", + srcs = ["protocol/brake_control_a4_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "enable_state_feedback_c3_test", + size = "small", + srcs = ["protocol/enable_state_feedback_c3_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "error_state_e1_test", + size = "small", + srcs = ["protocol/error_state_e1_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "gear_control_a1_test", + size = "small", + srcs = ["protocol/gear_control_a1_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "parking_control_a5_test", + size = "small", + srcs = ["protocol/parking_control_a5_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "steering_control_a2_test", + size = "small", + srcs = ["protocol/steering_control_a2_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "torque_control_a3_test", + size = "small", + srcs = ["protocol/torque_control_a3_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "vehicle_state_feedback_2_c4_test", + size = "small", + srcs = ["protocol/vehicle_state_feedback_2_c4_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "vehicle_state_feedback_c1_test", + size = "small", + srcs = ["protocol/vehicle_state_feedback_c1_test.cc"], + deps = [ + ":apollo_canbus_vehicle_zhongyun", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/canbus_vehicle/zhongyun/canbus-vehicle-zhongyun.BUILD b/modules/canbus_vehicle/zhongyun/canbus-vehicle-zhongyun.BUILD deleted file mode 100644 index e69de29bb2d..00000000000 diff --git a/modules/canbus_vehicle/zhongyun/protocol/BUILD b/modules/canbus_vehicle/zhongyun/protocol/BUILD deleted file mode 100644 index 984177e9dc8..00000000000 --- a/modules/canbus_vehicle/zhongyun/protocol/BUILD +++ /dev/null @@ -1,226 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CANBUS_COPTS = ["-DMODULE_NAME=\\\"canbus\\\""] - -cc_library( - name = "canbus_zhongyun_protocol", - deps = [ - "brake_control_a4", - "enable_state_feedback_c3", - "error_state_e1", - "gear_control_a1", - "parking_control_a5", - "steering_control_a2", - "torque_control_a3", - "vehicle_state_feedback_2_c4", - "vehicle_state_feedback_c1", - ], -) - -cc_library( - name = "brake_control_a4", - srcs = ["brake_control_a4.cc"], - hdrs = ["brake_control_a4.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "brake_control_a4_test", - size = "small", - srcs = ["brake_control_a4_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "enable_state_feedback_c3", - srcs = ["enable_state_feedback_c3.cc"], - hdrs = ["enable_state_feedback_c3.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "enable_state_feedback_c3_test", - size = "small", - srcs = ["enable_state_feedback_c3_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "error_state_e1", - srcs = ["error_state_e1.cc"], - hdrs = ["error_state_e1.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "error_state_e1_test", - size = "small", - srcs = ["error_state_e1_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "gear_control_a1", - srcs = ["gear_control_a1.cc"], - hdrs = ["gear_control_a1.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "gear_control_a1_test", - size = "small", - srcs = ["gear_control_a1_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "parking_control_a5", - srcs = ["parking_control_a5.cc"], - hdrs = ["parking_control_a5.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "parking_control_a5_test", - size = "small", - srcs = ["parking_control_a5_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "steering_control_a2", - srcs = ["steering_control_a2.cc"], - hdrs = ["steering_control_a2.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "steering_control_a2_test", - size = "small", - srcs = ["steering_control_a2_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "torque_control_a3", - srcs = ["torque_control_a3.cc"], - hdrs = ["torque_control_a3.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "torque_control_a3_test", - size = "small", - srcs = ["torque_control_a3_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "vehicle_state_feedback_2_c4", - srcs = ["vehicle_state_feedback_2_c4.cc"], - hdrs = ["vehicle_state_feedback_2_c4.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "vehicle_state_feedback_2_c4_test", - size = "small", - srcs = ["vehicle_state_feedback_2_c4_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "vehicle_state_feedback_c1", - srcs = ["vehicle_state_feedback_c1.cc"], - hdrs = ["vehicle_state_feedback_c1.h"], - copts = CANBUS_COPTS, - deps = [ - "//modules/canbus_vehicle/zhongyun/proto:zhongyun_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "vehicle_state_feedback_c1_test", - size = "small", - srcs = ["vehicle_state_feedback_c1_test.cc"], - deps = [ - ":canbus_zhongyun_protocol", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/common/adapters/BUILD b/modules/common/adapters/BUILD index 57869757c91..aa02a66375d 100644 --- a/modules/common/adapters/BUILD +++ b/modules/common/adapters/BUILD @@ -1,30 +1,13 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") -cc_binary( - name = "libadapter_gflags.so", - srcs = [ - "adapter_gflags.cc", - "adapter_gflags.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( +apollo_cc_library( name = "adapter_gflags", - srcs = ["libadapter_gflags.so"], + srcs = ["adapter_gflags.cc"], hdrs = ["adapter_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], - alwayslink = True, - visibility = ["//visibility:public"], + deps = ["@com_github_gflags_gflags//:gflags"], ) apollo_package() + cpplint() diff --git a/modules/common/adapters/adapter_gflags.cc b/modules/common/adapters/adapter_gflags.cc index 2e478558dd2..52bb9744298 100644 --- a/modules/common/adapters/adapter_gflags.cc +++ b/modules/common/adapters/adapter_gflags.cc @@ -42,7 +42,7 @@ DEFINE_string(pad_topic, "/apollo/control/pad", "control pad message topic name"); DEFINE_string(control_command_topic, "/apollo/control", "control command topic name"); -DEFINE_string(chassis_command_topic, "/apollo/canbus/chassis_control", +DEFINE_string(chassis_command_topic, "/apollo/chassis_control", "chassis command topic name"); DEFINE_string(control_preprocessor_topic, "/apollo/control/preprocessor", "control preprocessor topic name"); diff --git a/modules/common/adapters/adapter_gflags.h b/modules/common/adapters/adapter_gflags.h index 39acd9954c3..60293c817fe 100644 --- a/modules/common/adapters/adapter_gflags.h +++ b/modules/common/adapters/adapter_gflags.h @@ -25,7 +25,6 @@ DECLARE_string(raw_imu_topic); DECLARE_string(audio_detection_topic); DECLARE_string(chassis_topic); DECLARE_string(chassis_detail_topic); -DECLARE_string(chassis_command_topic); DECLARE_string(localization_topic); DECLARE_string(planning_learning_data_topic); DECLARE_string(planning_trajectory_topic); diff --git a/modules/common/common.BUILD b/modules/common/common.BUILD deleted file mode 100644 index d21bba6d050..00000000000 --- a/modules/common/common.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "common", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/common", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/common/configs/BUILD b/modules/common/configs/BUILD index 98083795836..d568a0e4165 100644 --- a/modules/common/configs/BUILD +++ b/modules/common/configs/BUILD @@ -1,86 +1,27 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# targets = [ -# ":libconfig_gflags.so", -# ":libvehicle_config_helper.so", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libconfig_gflags.so", - srcs = [ - "config_gflags.cc", - "config_gflags.h", - ], - linkshared = True, - linkstatic = True, - data = [ - "//modules/common/data:global_flagfile", - ], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( +apollo_cc_library( name = "config_gflags", - srcs = ["libconfig_gflags.so"], + srcs = ["config_gflags.cc"], hdrs = ["config_gflags.h"], - data = [ - "//modules/common/data:global_flagfile", - ], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], - visibility = ["//visibility:public"], + deps = ["@com_github_gflags_gflags//:gflags"], ) -cc_binary( - name = "libvehicle_config_helper.so", - srcs = [ - "vehicle_config_helper.cc", - "vehicle_config_helper.h", - ], - linkshared = True, - linkstatic = True, - data = [ - "//modules/common/data:vehicle_config_data", - ], - deps = [ - ":config_gflags", - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common/math", - ], -) - -cc_library( +apollo_cc_library( name = "vehicle_config_helper", - srcs = ["libvehicle_config_helper.so"], + srcs = ["vehicle_config_helper.cc"], hdrs = ["vehicle_config_helper.h"], - data = [ - "//modules/common/data:vehicle_config_data", - ], deps = [ ":config_gflags", "//cyber", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common/math", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", ], - visibility = ["//visibility:public"], ) -cc_test( +apollo_cc_test( name = "vehicle_config_helper_test", size = "small", srcs = ["vehicle_config_helper_test.cc"], @@ -91,4 +32,5 @@ cc_test( ) apollo_package() + cpplint() diff --git a/modules/common/configs/config_gflags.cc b/modules/common/configs/config_gflags.cc index 7102526886c..a63d93d0979 100644 --- a/modules/common/configs/config_gflags.cc +++ b/modules/common/configs/config_gflags.cc @@ -86,11 +86,3 @@ DEFINE_bool(multithread_run, false, // localization DEFINE_bool(enable_map_reference_unify, true, "enable IMU data convert to map reference"); - -// planning -DEFINE_double(replan_lateral_distance_threshold, 0.5, - "The lateral distance threshold of replan"); -DEFINE_double(replan_longitudinal_distance_threshold, 2.5, - "The longitudinal distance threshold of replan"); -DEFINE_double(replan_time_threshold, 7.0, - "The time threshold of replan"); diff --git a/modules/common/configs/config_gflags.h b/modules/common/configs/config_gflags.h index 6396ceef1c3..7040d0ba961 100644 --- a/modules/common/configs/config_gflags.h +++ b/modules/common/configs/config_gflags.h @@ -56,9 +56,3 @@ DECLARE_bool(multithread_run); // localizaiton DECLARE_bool(enable_map_reference_unify); - -// planning -// parameters for trajectory stitching and reinit planning starting point. -DECLARE_double(replan_lateral_distance_threshold); -DECLARE_double(replan_longitudinal_distance_threshold); -DECLARE_double(replan_time_threshold); diff --git a/modules/common/data/BUILD b/modules/common/data/BUILD index 8b18449b949..572441d2723 100644 --- a/modules/common/data/BUILD +++ b/modules/common/data/BUILD @@ -1,4 +1,3 @@ -# load("//tools/install:install.bzl", "install") load("//tools:apollo_package.bzl", "apollo_package") package(default_visibility = ["//visibility:public"]) @@ -13,13 +12,4 @@ filegroup( srcs = ["global_flagfile.txt"], ) -# install( -# name = "install", -# data_dest = "common/data", -# data = [ -# ":global_flagfile", -# ":vehicle_config_data", -# ], -# ) - apollo_package() \ No newline at end of file diff --git a/modules/common/data/vehicle_param.pb.txt b/modules/common/data/vehicle_param.pb.txt index 4ff6a29d2b2..8f3494dcb0e 100644 --- a/modules/common/data/vehicle_param.pb.txt +++ b/modules/common/data/vehicle_param.pb.txt @@ -1,50 +1,25 @@ vehicle_param { - brand: NEOLIX + brand: LINCOLN_MKZ vehicle_id { - other_unique_id: "NEOLIX_EDU" + other_unique_id: "mkz" } - front_edge_to_center: 2.151 - back_edge_to_center: 0.624 - left_edge_to_center: 0.505 - right_edge_to_center: 0.505 + front_edge_to_center: 3.89 + back_edge_to_center: 1.043 + left_edge_to_center: 1.055 + right_edge_to_center: 1.055 - length: 2.775 - width: 1.01 - height: 1.672 - min_turn_radius: 2.50 - max_acceleration: 2.3 - max_deceleration: -7.0 - max_steer_angle: 6.2491 + length: 4.933 + width: 2.11 + height: 1.48 + min_turn_radius: 5.05386147161 + max_acceleration: 2.0 + max_deceleration: -6.0 + max_steer_angle: 8.20304748437 max_steer_angle_rate: 6.98131700798 - min_steer_angle_rate:0 - steer_ratio: 10.85 - wheel_base: 1.73 - wheel_rolling_radius: 0.286 - max_abs_speed_when_stopped: 0.03 - brake_deadzone: 0.1 - throttle_deadzone: 0.1 - - steering_latency_param - { - dead_time: 0.0 - rise_time: 0.0 - peak_time: 0.0 - settling_time: 0.0 - } - - throttle_latency_param - { - dead_time: 0.0 - rise_time: 0.0 - peak_time: 0.0 - settling_time: 0.0 - } - - brake_latency_param - { - dead_time: 0.0 - rise_time: 0.0 - peak_time: 0.0 - settling_time: 0.0 - } -} + steer_ratio: 16 + wheel_base: 2.8448 + wheel_rolling_radius: 0.335 + max_abs_speed_when_stopped: 0.2 + brake_deadzone: 14.5 + throttle_deadzone: 15.7 +} \ No newline at end of file diff --git a/modules/common/filters/BUILD b/modules/common/filters/BUILD index 56df27e4db2..1c81fcc35a8 100644 --- a/modules/common/filters/BUILD +++ b/modules/common/filters/BUILD @@ -1,102 +1,55 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# targets = [ -# ":libfilters.so", -# ], -# visibility = ["//visibility:public"], -# ) - - -cc_binary( - name = "libfilters.so", - linkshared = True, - linkstatic = True, - deps = [ - ":digital_filter_coefficients", - ":digital_filter", - ":mean_filter", - ], -) - -cc_library( +apollo_cc_library( name = "filters", - srcs = ["libfilters.so"], hdrs = [ - "digital_filter_coefficients.h", "digital_filter.h", + "digital_filter_coefficients.h", "mean_filter.h", ], - visibility = ["//visibility:public"], -) - -cc_library( - name = "digital_filter", - srcs = ["digital_filter.cc"], - hdrs = ["digital_filter.h"], - alwayslink = True, - deps = [ - "//cyber:cyber", + srcs = [ + "digital_filter.cc", + "digital_filter_coefficients.cc", + "mean_filter.cc", ], -) - -cc_library( - name = "mean_filter", - srcs = ["mean_filter.cc"], - hdrs = ["mean_filter.h"], - alwayslink = True, - deps = [ - "//cyber:cyber", - ], -) - -cc_library( - name = "digital_filter_coefficients", - srcs = ["digital_filter_coefficients.cc"], - hdrs = ["digital_filter_coefficients.h"], - alwayslink = True, deps = [ - "//cyber:cyber", + "//cyber", ], ) -cc_test( +apollo_cc_test( name = "digital_filter_test", size = "small", srcs = ["digital_filter_test.cc"], + linkstatic = True, deps = [ - ":digital_filter", + ":filters", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_test( +apollo_cc_test( name = "mean_filter_test", size = "small", srcs = ["mean_filter_test.cc"], + linkstatic = True, deps = [ - ":mean_filter", + ":filters", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_test( +apollo_cc_test( name = "digital_filter_coefficients_test", size = "small", srcs = ["digital_filter_coefficients_test.cc"], deps = [ - ":digital_filter_coefficients", + ":filters", "@com_google_googletest//:gtest_main", ], ) apollo_package() + cpplint() diff --git a/modules/common/kv_db/BUILD b/modules/common/kv_db/BUILD index ed2ebfcd3b3..37a80e7ecaa 100644 --- a/modules/common/kv_db/BUILD +++ b/modules/common/kv_db/BUILD @@ -1,54 +1,21 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test", "apollo_cc_binary") -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# runtime_dest = "common/bin", -# targets = [ -# ":libkv_db.so", -# ":kv_db_tool", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libkv_db.so", - srcs = [ - "kv_db.cc", - "kv_db.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//cyber:cyber", - "//modules/common/util", - "//modules/common/util:util_tool", - "@com_github_gflags_gflags//:gflags", - "@com_google_absl//:absl", - "@sqlite3", - ], -) - -cc_library( +apollo_cc_library( name = "kv_db", - srcs = ["libkv_db.so"], + srcs = ["kv_db.cc"], hdrs = ["kv_db.h"], deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/util:util_tool", "@com_github_gflags_gflags//:gflags", "@com_google_absl//:absl", "@sqlite3", ], - visibility = ["//visibility:public"], ) -cc_test( +apollo_cc_test( name = "kv_db_test", size = "small", srcs = ["kv_db_test.cc"], @@ -58,7 +25,7 @@ cc_test( ], ) -cc_binary( +apollo_cc_binary( name = "kv_db_tool", srcs = ["kv_db_tool.cc"], deps = [ @@ -69,4 +36,5 @@ cc_binary( ) apollo_package() + cpplint() diff --git a/modules/common/latency_recorder/BUILD b/modules/common/latency_recorder/BUILD index ed49f5d3437..8bbcf2b4acf 100644 --- a/modules/common/latency_recorder/BUILD +++ b/modules/common/latency_recorder/BUILD @@ -1,39 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# runtime_dest = "common/bin", -# targets = [ -# ":liblatency_recorder.so", -# ], -# visibility = ["//visibility:public"], -# ) - - -cc_binary( - name = "liblatency_recorder.so", - srcs = [ - "latency_recorder.cc", - "latency_recorder.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/latency_recorder/proto:latency_record_cc_proto", - "//modules/common/util:util_tool", - ], -) - -cc_library( +apollo_cc_library( name = "latency_recorder", - srcs = ["liblatency_recorder.so"], + srcs = ["latency_recorder.cc"], hdrs = ["latency_recorder.h"], deps = [ "//cyber", @@ -41,8 +11,8 @@ cc_library( "//modules/common/latency_recorder/proto:latency_record_cc_proto", "//modules/common/util:util_tool", ], - visibility = ["//visibility:public"], ) apollo_package() + cpplint() diff --git a/modules/common/math/BUILD b/modules/common/math/BUILD index 6eaebb406a7..a652498922d 100644 --- a/modules/common/math/BUILD +++ b/modules/common/math/BUILD @@ -1,223 +1,76 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# runtime_dest = "common/bin", -# targets = [ -# ":libmath.so", -# ], -# visibility = ["//visibility:public"], -# ) - - -cc_binary( - name = "libmath.so", - linkshared = True, - linkstatic = True, - deps = [ - ":angle", - ":cartesian_frenet_conversion", - ":curve_fitting", - ":euler_angles_zxy", - ":factorial", - ":geometry", - ":integral", - ":kalman_filter", - ":linear_interpolation", - ":lqr", - ":matrix_operations", - ":mpc_osqp", - ":path_matcher", - ":quaternion", - ":search", - ":sin_table", - "//modules/common/math/qp_solver", - ], -) - -cc_library( +apollo_cc_library( name = "math", - srcs = ["libmath.so"], - hdrs = glob(["*.h"]), - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/util:util_tool", - "@com_google_absl//:absl", - "@eigen", - "@osqp", - ], - visibility = ["//visibility:public"], -) - -cc_library( - name = "math_utils", - srcs = ["math_utils.cc"], - hdrs = ["math_utils.h"], - alwayslink = True, - linkopts = ["-lm"], - deps = [ - ":vec2d", - "@eigen", - ], -) - -cc_library( - name = "vec2d", - srcs = ["vec2d.cc"], - hdrs = ["vec2d.h"], - alwayslink = True, - linkopts = ["-lm"], - deps = [ - "//cyber", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "geometry", srcs = [ "aabox2d.cc", + "angle.cc", "box2d.cc", + "cartesian_frenet_conversion.cc", + "integral.cc", "line_segment2d.cc", + "linear_interpolation.cc", + "linear_quadratic_regulator.cc", + "math_utils.cc", + "matrix_operations.cc", + "mpc_osqp.cc", + "path_matcher.cc", "polygon2d.cc", + "search.cc", + "sin_table.cc", + "vec2d.cc", ], hdrs = [ "aabox2d.h", "aaboxkdtree2d.h", + "angle.h", "box2d.h", + "cartesian_frenet_conversion.h", + "curve_fitting.h", + "euler_angles_zxy.h", + "factorial.h", + "hermite_spline.h", + "integral.h", + "kalman_filter.h", "line_segment2d.h", + "linear_interpolation.h", + "linear_quadratic_regulator.h", + "math_utils.h", + "matrix_operations.h", + "mpc_osqp.h", + "path_matcher.h", "polygon2d.h", + "quaternion.h", + "search.h", + "sin_table.h", + "vec2d.h", ], - alwayslink = True, linkopts = ["-lm"], deps = [ - ":math_utils", "//cyber", "//modules/common/util:util_tool", - "@com_google_absl//:absl", - "@osqp", - ], -) - -cc_library( - name = "sin_table", - srcs = ["sin_table.cc"], - hdrs = ["sin_table.h"], - alwayslink = True, -) - -cc_library( - name = "angle", - srcs = ["angle.cc"], - hdrs = ["angle.h"], - alwayslink = True, - deps = [ - ":sin_table", - ], -) - -cc_library( - name = "euler_angles_zxy", - hdrs = ["euler_angles_zxy.h"], - alwayslink = True, - deps = [ - ":geometry", - "@eigen", - ], -) - -cc_library( - name = "quaternion", - hdrs = ["quaternion.h"], - alwayslink = True, - deps = [ - ":euler_angles_zxy", - ":geometry", + "//modules/common/math/qp_solver", "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", + "@com_google_absl//:absl", "@eigen", + "@osqp", ], ) -cc_library( - name = "curve_fitting", - hdrs = ["curve_fitting.h"], - alwayslink = True, - deps = [ - ":matrix_operations", - "@eigen", - ], -) - -cc_library( - name = "matrix_operations", - srcs = ["matrix_operations.cc"], - hdrs = ["matrix_operations.h"], - alwayslink = True, - deps = [ - "//cyber", - "@eigen", - ], -) - -cc_test( +apollo_cc_test( name = "matrix_operations_test", size = "small", srcs = ["matrix_operations_test.cc"], linkopts = ["-lm"], deps = [ - ":matrix_operations", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "kalman_filter", - hdrs = ["kalman_filter.h"], - alwayslink = True, - deps = [ - "//cyber", - ":matrix_operations", - "@eigen", - ], -) - -cc_library( - name = "factorial", - hdrs = ["factorial.h"], - alwayslink = True, -) - -cc_library( - name = "path_matcher", - srcs = ["path_matcher.cc"], - hdrs = ["path_matcher.h"], - deps = [ - ":linear_interpolation", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "mpc_osqp", - srcs = ["mpc_osqp.cc"], - hdrs = ["mpc_osqp.h"], - alwayslink = True, - deps = [ - "//cyber", - "@eigen", - "@osqp", - ], -) - -cc_test( +apollo_cc_test( name = "angle_test", size = "small", srcs = ["angle_test.cc"], @@ -225,105 +78,45 @@ cc_test( "-lm", ], deps = [ - ":angle", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "search", - srcs = ["search.cc"], - hdrs = ["search.h"], - alwayslink = True, -) - -cc_library( - name = "linear_interpolation", - srcs = ["linear_interpolation.cc"], - hdrs = ["linear_interpolation.h"], - alwayslink = True, - deps = [ - ":geometry", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - ], -) - -cc_library( - name = "integral", - srcs = ["integral.cc"], - hdrs = ["integral.h"], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -cc_library( - name = "lqr", - srcs = ["linear_quadratic_regulator.cc"], - hdrs = ["linear_quadratic_regulator.h"], - alwayslink = True, - deps = [ - "//cyber", - "@eigen", - ], -) - -cc_library( - name = "cartesian_frenet_conversion", - srcs = ["cartesian_frenet_conversion.cc"], - hdrs = ["cartesian_frenet_conversion.h"], - alwayslink = True, - deps = [ - ":geometry", - "//cyber", - "@eigen", - ], -) - -cc_library( - name = "hermite_spline", - hdrs = ["hermite_spline.h"], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -cc_test( +apollo_cc_test( name = "mpc_osqp_test", size = "small", srcs = ["mpc_osqp_test.cc"], deps = [ - ":mpc_osqp", + ":math", "//cyber", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "math_utils_test", size = "small", srcs = ["math_utils_test.cc"], deps = [ - ":geometry", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "linear_interpolation_test", size = "small", srcs = ["linear_interpolation_test.cc"], deps = [ - ":linear_interpolation", + ":math", "//cyber", "@com_google_googletest//:gtest_main", "@eigen", ], ) -cc_test( +apollo_cc_test( name = "search_test", size = "small", srcs = ["search_test.cc"], @@ -331,128 +124,129 @@ cc_test( "-lm", ], deps = [ - ":search", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "integral_test", size = "small", srcs = ["integral_test.cc"], linkopts = [ "-lm", ], + linkstatic = True, deps = [ - ":integral", + ":math", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_test( +apollo_cc_test( name = "vec2d_test", size = "small", srcs = ["vec2d_test.cc"], deps = [ - ":geometry", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "quaternion_test", size = "small", srcs = ["quaternion_test.cc"], deps = [ - ":quaternion", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "euler_angles_zxy_test", size = "small", srcs = ["euler_angles_zxy_test.cc"], + linkstatic = True, deps = [ - ":euler_angles_zxy", + ":math", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_test( +apollo_cc_test( name = "aabox2d_test", size = "small", srcs = ["aabox2d_test.cc"], deps = [ - ":geometry", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "aaboxkdtree2d_test", size = "small", srcs = ["aaboxkdtree2d_test.cc"], deps = [ - ":geometry", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "box2d_test", size = "small", srcs = ["box2d_test.cc"], deps = [ - ":geometry", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "polygon2d_test", size = "small", srcs = ["polygon2d_test.cc"], deps = [ - ":geometry", + ":math", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "line_segment2d_test", size = "small", srcs = ["line_segment2d_test.cc"], + linkstatic = True, deps = [ - ":geometry", + ":math", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_test( +apollo_cc_test( name = "kalman_filter_test", size = "small", srcs = ["kalman_filter_test.cc"], linkopts = ["-lm"], + linkstatic = True, deps = [ - ":kalman_filter", + ":math", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_test( +apollo_cc_test( name = "cartesian_frenet_conversion_test", size = "small", srcs = ["cartesian_frenet_conversion_test.cc"], deps = [ - ":cartesian_frenet_conversion", + ":math", "@com_google_googletest//:gtest_main", ], ) apollo_package() + cpplint() diff --git a/modules/common/math/polygon2d.cc b/modules/common/math/polygon2d.cc index 8fa7bb779fc..fb9ad940305 100644 --- a/modules/common/math/polygon2d.cc +++ b/modules/common/math/polygon2d.cc @@ -147,11 +147,26 @@ bool Polygon2d::IsPointIn(const Vec2d &point) const { bool Polygon2d::HasOverlap(const Polygon2d &polygon) const { CHECK_GE(points_.size(), 3U); + CHECK_GE(polygon.num_points(), 3); if (polygon.max_x() < min_x() || polygon.min_x() > max_x() || polygon.max_y() < min_y() || polygon.min_y() > max_y()) { return false; } - return DistanceTo(polygon) <= kMathEpsilon; + + if (IsPointIn(polygon.points()[0])) { + return true; + } + + if (polygon.IsPointIn(points_[0])) { + return true; + } + + for (int i = 0; i < polygon.num_points(); ++i) { + if (HasOverlap(polygon.line_segments()[i])) { + return true; + } + } + return false; } bool Polygon2d::Contains(const LineSegment2d &line_segment) const { @@ -364,9 +379,14 @@ bool Polygon2d::HasOverlap(const LineSegment2d &line_segment) const { (line_segment.start().y() > max_y_ && line_segment.end().y() > max_y_)) { return false; } - Vec2d first; - Vec2d last; - return GetOverlap(line_segment, &first, &last); + + if (std::any_of(line_segments_.begin(), line_segments_.end(), + [&](const LineSegment2d &poly_seg) { + return poly_seg.HasIntersect(line_segment); + })) { + return true; + } + return false; } bool Polygon2d::GetOverlap(const LineSegment2d &line_segment, diff --git a/modules/common/math/polygon2d_test.cc b/modules/common/math/polygon2d_test.cc index 9e205c82ccf..27b23268231 100644 --- a/modules/common/math/polygon2d_test.cc +++ b/modules/common/math/polygon2d_test.cc @@ -443,6 +443,18 @@ TEST(Polygon2dTest, Overlap) { const Polygon2d poly5( {{0, 0}, {4, 0}, {4, 2}, {3, 2}, {2, 1}, {1, 2}, {0, 2}}); + const Polygon2d poly6( + {{-3, 2}, {-3, 3}, {0, 3}, {0, 2.5}}); + + EXPECT_FALSE(poly5.HasOverlap(poly6)); + for (size_t i = 0; i < poly6.line_segments().size(); i++) { + EXPECT_FALSE(poly5.HasOverlap(poly6.line_segments()[i])) + << poly6.line_segments()[i].start().x() + << ", " << poly6.line_segments()[i].start().y() + << " " << poly6.line_segments()[i].end().x() + << ", " << poly6.line_segments()[i].end().y(); + } + std::vector overlap_line_segments = poly5.GetAllOverlaps(LineSegment2d({-10, 1.5}, {10, 1.5})); EXPECT_EQ(2, overlap_line_segments.size()); diff --git a/modules/common/math/qp_solver/BUILD b/modules/common/math/qp_solver/BUILD index abd88aaf818..33d06c6d58a 100644 --- a/modules/common/math/qp_solver/BUILD +++ b/modules/common/math/qp_solver/BUILD @@ -1,18 +1,17 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "qp_solver", srcs = ["qp_solver.cc"], hdrs = ["qp_solver.h"], - alwayslink = True, deps = [ "@eigen", ], ) apollo_package() + cpplint() diff --git a/modules/common/monitor_log/BUILD b/modules/common/monitor_log/BUILD index 5902c099c6d..5f98419c614 100644 --- a/modules/common/monitor_log/BUILD +++ b/modules/common/monitor_log/BUILD @@ -1,75 +1,26 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# runtime_dest = "common/bin", -# targets = [ -# ":libmonitor_log.so", -# ], -# visibility = ["//visibility:public"], -# ) - - -cc_binary( - name = "libmonitor_log.so", - linkshared = True, - linkstatic = True, - deps = [ - ":monitor_log_buffer", - ":monitor_logger", - "//modules/common_msgs/monitor_msgs:monitor_log_cc_proto", - ], -) - -cc_library( +apollo_cc_library( name = "monitor_log", - srcs = ["libmonitor_log.so"], + srcs = [ + "monitor_log_buffer.cc", + "monitor_logger.cc", + ], hdrs = [ "monitor_log_buffer.h", "monitor_logger.h", ], deps = [ "//cyber", - "//modules/common_msgs/monitor_msgs:monitor_log_cc_proto", "//modules/common/util:util_tool", - "@com_google_googletest//:gtest", - "@com_google_absl//:absl", - ], - visibility = ["//visibility:public"], -) - -cc_library( - name = "monitor_logger", - srcs = ["monitor_logger.cc"], - hdrs = ["monitor_logger.h"], - alwayslink = True, - deps = [ - "//cyber", "//modules/common_msgs/monitor_msgs:monitor_log_cc_proto", - "//modules/common/util:util_tool", "@com_google_absl//:absl", - ], -) - -cc_library( - name = "monitor_log_buffer", - srcs = ["monitor_log_buffer.cc"], - hdrs = ["monitor_log_buffer.h"], - alwayslink = True, - deps = [ - ":monitor_logger", - "//cyber", - "//modules/common_msgs/monitor_msgs:monitor_log_cc_proto", "@com_google_googletest//:gtest", ], ) -cc_test( +apollo_cc_test( name = "monitor_log_buffer_test", size = "small", srcs = ["monitor_log_buffer_test.cc"], @@ -79,7 +30,7 @@ cc_test( ], ) -# cc_test( +# apollo_cc_test( # name = "monitor_logger_test", # size = "small", # srcs = ["monitor_logger_test.cc"], @@ -90,4 +41,5 @@ cc_test( # ) apollo_package() + cpplint() diff --git a/modules/common/service_wrapper/BUILD b/modules/common/service_wrapper/BUILD index c9b574d564f..00fae710bd0 100644 --- a/modules/common/service_wrapper/BUILD +++ b/modules/common/service_wrapper/BUILD @@ -1,16 +1,16 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "client_wrapper", hdrs = ["client_wrapper.h"], deps = [ - "//cyber/service:client", + "//cyber", ], ) cpplint() + apollo_package() diff --git a/modules/common/status/BUILD b/modules/common/status/BUILD index 6d067b3f325..21ed06ecf42 100644 --- a/modules/common/status/BUILD +++ b/modules/common/status/BUILD @@ -1,46 +1,21 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package( default_visibility = ["//visibility:public"], ) -# install( -# name = "install", -# library_dest = "common/lib", -# targets = [ -# ":libstatus.so", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_library( +apollo_cc_library( name = "status", hdrs = ["status.h"], - srcs = ["libstatus.so"], deps = [ - "//modules/common_msgs/basic_msgs:error_code_cc_proto", "//modules/common/util:util_tool", - "@com_google_protobuf//:protobuf", - ], - alwayslink = True, -) - -cc_binary( - name = "libstatus.so", - srcs = ["status.h"], - deps = [ "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common/util:util_tool", "@com_google_protobuf//:protobuf", ], - linkshared = True, - linkstatic = True, ) -cc_test( +apollo_cc_test( name = "status_test", size = "small", srcs = ["status_test.cc"], @@ -51,4 +26,5 @@ cc_test( ) apollo_package() + cpplint() diff --git a/modules/common/util/BUILD b/modules/common/util/BUILD index b32a879d390..9f9fe079e1f 100644 --- a/modules/common/util/BUILD +++ b/modules/common/util/BUILD @@ -1,32 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# runtime_dest = "common/bin", -# targets = [ -# ":libutil_tool.so", -# ":libapolloutil.so", -# ], -# deps = [":util_testdata"], -# visibility = ["//visibility:public"], -# ) - -# install( -# name = "util_testdata", -# data_dest = "common/addition_data/util", -# data = [ -# ":util_test_data", -# ], -# ) - filegroup( name = "util_test_data", srcs = glob([ @@ -34,54 +10,42 @@ filegroup( ]), ) - -cc_binary( - name = "libutil_tool.so", - linkshared = True, - linkstatic = True, - deps = [ - ":color", - ":data_extraction", - ":eigen_defs", - ":factory", - ":future", - ":json_util", - ":lru_cache", - ":map_util", - ":message_util", - ":perf_util", - ":string_util", - ":time_util", - ], -) - -cc_library( +apollo_cc_library( name = "util_tool", - srcs = ["libutil_tool.so"], - hdrs = glob( - ["*.h"], - exclude = [ - "point_factory.h", - "points_downsampler.h", - "util.h", - ], - ), + srcs = [ + "data_extraction.cc", + "json_util.cc", + "perf_util.cc", + "string_util.cc", + ], + hdrs = [ + "color.h", + "eigen_defs.h", + "data_extraction.h", + "factory.h", + "future.h", + "json_util.h", + "lru_cache.h", + "map_util.h", + "perf_util.h", + "string_util.h", + "time_util.h", + ], deps = [ "//cyber", + ":message_util", "@boost", + "@eigen", "@com_github_nlohmann_json//:json", "@com_google_absl//:absl", "@com_google_protobuf//:protobuf", - "@eigen", ], - visibility = ["//visibility:public"], ) -cc_library( +apollo_cc_library( name = "util_lib", srcs = ["util.cc"], hdrs = ["util.h"], - alwayslink = True, deps = [ "//cyber", "//modules/common/configs:config_gflags", @@ -92,26 +56,7 @@ cc_library( ], ) -cc_library( - name = "future", - hdrs = ["future.h"], - alwayslink = True, - deps = [ - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "point_factory", - hdrs = ["point_factory.h"], - alwayslink = True, - deps = [ - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - ], -) - -cc_test( +apollo_cc_test( name = "util_test", size = "small", srcs = ["util_test.cc"], @@ -122,53 +67,18 @@ cc_test( ], ) -cc_library( - name = "lru_cache", - hdrs = ["lru_cache.h"], - alwayslink = True, -) - -cc_library( - name = "color", - hdrs = ["color.h"], - alwayslink = True, -) - -cc_library( - name = "data_extraction", - srcs = ["data_extraction.cc"], - hdrs = ["data_extraction.h"], - alwayslink = True, - deps = [ - "//cyber", - "@boost", - ], -) - -cc_library( - name = "string_util", - srcs = ["string_util.cc"], - hdrs = ["string_util.h"], - alwayslink = True, - deps = [ - ":future", - "@com_google_absl//:absl", - ], -) - -cc_library( +apollo_cc_library( name = "message_util", hdrs = ["message_util.h"], - alwayslink = True, + visibility = ["//visibility:public"], deps = [ "//cyber", "@com_google_absl//:absl", "@com_google_protobuf//:protobuf", ], - visibility = ["//visibility:public"], ) -cc_test( +apollo_cc_test( name = "message_util_test", size = "small", srcs = ["message_util_test.cc"], @@ -182,173 +92,98 @@ cc_test( ], ) -cc_test( +apollo_cc_test( name = "string_util_test", size = "small", srcs = ["string_util_test.cc"], deps = [ - ":string_util", + ":util_tool", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "time_util", - hdrs = ["time_util.h"], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -cc_test( +apollo_cc_test( name = "time_util_test", size = "small", srcs = ["time_util_test.cc"], deps = [ - ":time_util", + ":util_tool", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "map_util", - hdrs = ["map_util.h"], - alwayslink = True, - deps = [ - "@com_google_protobuf//:protobuf", - ], -) - -cc_library( - name = "factory", - hdrs = ["factory.h"], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -cc_test( +apollo_cc_test( name = "factory_test", size = "small", srcs = ["factory_test.cc"], deps = [ - ":factory", + ":util_tool", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "lru_cache_test", size = "small", srcs = ["lru_cache_test.cc"], deps = [ - ":lru_cache", + ":util_tool", "@com_google_googletest//:gtest_main", ], ) -cc_binary( - name = "libapolloutil.so", - linkshared = True, - linkstatic = True, - deps = [ - ":point_factory", - ":points_downsampler", - ":util_lib", - ], -) - -cc_library( - name = "util", - srcs = ["libapolloutil.so"], +apollo_cc_library( + name = "common_util", hdrs = [ "point_factory.h", "points_downsampler.h", "util.h", ], - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/configs:config_gflags", - "//modules/common/math", - "@com_github_gflags_gflags//:gflags", + srcs = [ + "util.cc", ], visibility = ["//visibility:public"], -) - -cc_library( - name = "points_downsampler", - hdrs = ["points_downsampler.h"], - alwayslink = True, deps = [ "//cyber", + "//modules/common/configs:config_gflags", "//modules/common/math", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", + "@com_github_gflags_gflags//:gflags", ], ) -cc_test( +apollo_cc_test( name = "points_downsampler_test", size = "small", srcs = ["points_downsampler_test.cc"], deps = [ - ":points_downsampler", + ":common_util", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "json_util", - srcs = ["json_util.cc"], - hdrs = ["json_util.h"], - alwayslink = True, - deps = [ - "//cyber", - "@com_github_nlohmann_json//:json", - "@com_google_protobuf//:protobuf", - ], -) - -cc_test( +apollo_cc_test( name = "json_util_test", size = "small", srcs = ["json_util_test.cc"], deps = [ - ":json_util", + ":util_tool", "//modules/common_msgs/basic_msgs:error_code_cc_proto", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "eigen_defs", - hdrs = ["eigen_defs.h"], - alwayslink = True, - deps = ["@eigen"], -) - -cc_library( - name = "perf_util", - srcs = ["perf_util.cc"], - hdrs = ["perf_util.h"], - alwayslink = True, - deps = [ - "//cyber", - "@com_google_absl//:absl", - ], -) - -cc_test( +apollo_cc_test( name = "perf_util_test", size = "small", srcs = ["perf_util_test.cc"], deps = [ - ":perf_util", + ":util_tool", "@com_google_googletest//:gtest_main", ], ) apollo_package() + cpplint() diff --git a/modules/common/vehicle_model/BUILD b/modules/common/vehicle_model/BUILD index df98b444373..6ec725bee34 100644 --- a/modules/common/vehicle_model/BUILD +++ b/modules/common/vehicle_model/BUILD @@ -1,27 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -# install( -# name = "install", -# library_dest = "common/lib", -# runtime_dest = "common/bin", -# targets = [ -# ":libvehicle_model.so", -# ], -# deps = ["vehicle_model_data"], -# visibility = ["//visibility:public"], -# ) - -# install( -# name = "vehicle_model_data", -# data_dest = "common/addition_data/vehicle_model", -# data = [ -# ":vehicle_model_config_data", -# ":vehicle_model_test_data" -# ], -# ) +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") filegroup( name = "vehicle_model_test_data", @@ -30,27 +8,9 @@ filegroup( ]), ) - -cc_binary( - name = "libvehicle_model.so", - srcs = [ - "vehicle_model.cc", - "vehicle_model.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//cyber", - "//modules/common/configs:config_gflags", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/vehicle_model/proto:vehicle_model_config_cc_proto", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - ], -) - -cc_library( +apollo_cc_library( name = "vehicle_model", - srcs = ["libvehicle_model.so"], + srcs = ["vehicle_model.cc"], hdrs = ["vehicle_model.h"], deps = [ "//cyber", @@ -62,7 +22,7 @@ cc_library( visibility = ["//visibility:public"], ) -cc_test( +apollo_cc_test( name = "vehicle_model_test", size = "small", srcs = ["vehicle_model_test.cc"], diff --git a/modules/common/vehicle_state/BUILD b/modules/common/vehicle_state/BUILD index 158f7da4a0e..e76de688ba1 100644 --- a/modules/common/vehicle_state/BUILD +++ b/modules/common/vehicle_state/BUILD @@ -1,59 +1,26 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -# install( -# name = "install", -# library_dest = "common/lib", -# data_dest = "common", -# runtime_dest = "common/bin", -# targets = [ -# ":libvehicle_state_provider.so", -# ], -# visibility = ["//visibility:public"], -# ) +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_binary( - name = "libvehicle_state_provider.so", - srcs = [ - "vehicle_state_provider.cc", - "vehicle_state_provider.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common/configs:config_gflags", - "//modules/common/math", - "//modules/common/status", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "@eigen", - "@com_google_absl//:absl", - ], -) -cc_library( +apollo_cc_library( name = "vehicle_state_provider", - srcs = ["libvehicle_state_provider.so"], + srcs = ["vehicle_state_provider.cc"], hdrs = ["vehicle_state_provider.h"], deps = [ "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", "//modules/common/configs:config_gflags", "//modules/common/math", "//modules/common/status", "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "@eigen", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", "@com_google_absl//:absl", + "@eigen", ], ) -cc_test( +apollo_cc_test( name = "vehicle_state_provider_test", size = "small", srcs = ["vehicle_state_provider_test.cc"], @@ -63,11 +30,11 @@ cc_test( deps = [ ":vehicle_state_provider", "//cyber", + "//modules/common/configs:config_gflags", "//modules/common_msgs/chassis_msgs:chassis_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common/configs:config_gflags", - "@eigen", "@com_google_googletest//:gtest_main", + "@eigen", ], ) diff --git a/modules/common_msgs/cyberfile.xml b/modules/common_msgs/cyberfile.xml index 8cc5c6ad036..d09da3da2b1 100644 --- a/modules/common_msgs/cyberfile.xml +++ b/modules/common_msgs/cyberfile.xml @@ -18,6 +18,7 @@ 3rd-grpc 3rd-gpus 3rd-rules-proto + 3rd-py bazel-extend-tools 3rd-bazel-skylib diff --git a/modules/common_msgs/drivers_msgs/can_card_parameter.proto b/modules/common_msgs/drivers_msgs/can_card_parameter.proto index c855c54ddbe..b8645f9bfe1 100644 --- a/modules/common_msgs/drivers_msgs/can_card_parameter.proto +++ b/modules/common_msgs/drivers_msgs/can_card_parameter.proto @@ -40,10 +40,16 @@ message CANCardParameter { BCAN_BAUDRATE_NUM = 4; } + // CAN卡驱动类型配置 | 根据所用的CAN卡硬件型号或驱动类型配置 optional CANCardBrand brand = 1; + // CAN卡硬件接口类型配置 | 根据所用的CAN卡硬件接口类型或驱动类型配置 optional CANCardType type = 2; + // CAN卡端口号配置 | 根据所连接的CAN卡端口号配置 optional CANChannelId channel_id = 3; + // CAN卡软件接口配置 | 默认配置为NATIVE optional CANInterface interface = 4; + // CAN卡端口数量配置 | 默认数量为4,最多支持8个,默认可不配置 optional uint32 num_ports = 5 [default = 4]; + // HERMES CAN卡波特率配置 | 只针对选择HERMES CAN卡时设置波特率,默认不配置 optional HERMES_BAUDRATE hermes_baudrate = 6 [default = BCAN_BAUDRATE_500K]; } diff --git a/modules/common_msgs/external_command_msgs/free_space_command.proto b/modules/common_msgs/external_command_msgs/free_space_command.proto index 8ed0195b86c..e22b9abbf63 100644 --- a/modules/common_msgs/external_command_msgs/free_space_command.proto +++ b/modules/common_msgs/external_command_msgs/free_space_command.proto @@ -12,12 +12,13 @@ message FreeSpaceCommand { // Pose of the parking spot. required Pose parking_spot_pose = 3; // Region where openspace trajectory will be searched. Junction containing - // "parking_spot_pose" will be searched on map if "parking_roi" is not given. - //polygon points should be clockwise if outer polygon can drive. + // "non_drivable_roi" should be contained by "drivable_roi" + // polygon points should be clockwise if outer polygon can drive. // otherwise polygon points should be counter-clockwise if inner polygon can drive - repeated RoiPolygon parking_roi = 4; + repeated RoiPolygon non_drivable_roi = 4; + required RoiPolygon drivable_roi = 5; // Expected speed when executing this command. If "target_speed" > maximum // speed of the vehicle, use maximum speed of the vehicle instead. If it is // not given, the default target speed of system will be used. - optional double target_speed = 5; + optional double target_speed = 6; } diff --git a/modules/common_msgs/perception_msgs/perception_obstacle.proto b/modules/common_msgs/perception_msgs/perception_obstacle.proto index a71a47c1896..f99920aa4d0 100644 --- a/modules/common_msgs/perception_msgs/perception_obstacle.proto +++ b/modules/common_msgs/perception_msgs/perception_obstacle.proto @@ -126,6 +126,9 @@ message PerceptionObstacle { ST_TRICYCLIST = 9; ST_PEDESTRIAN = 10; ST_TRAFFICCONE = 11; + ST_SMALLMOT = 12; + ST_BIGMOT = 13; + ST_NONMOT = 14; }; optional SubType sub_type = 19; // obstacle sub_type diff --git a/modules/common_msgs/planning_msgs/planning.proto b/modules/common_msgs/planning_msgs/planning.proto index bc846814212..95308a6941e 100644 --- a/modules/common_msgs/planning_msgs/planning.proto +++ b/modules/common_msgs/planning_msgs/planning.proto @@ -106,6 +106,7 @@ message ADCTrajectory { PATH_FALLBACK = 2; SPEED_FALLBACK = 3; PATH_REUSED = 4; + OPEN_SPACE = 5; } optional TrajectoryType trajectory_type = 21 [default = UNKNOWN]; diff --git a/modules/common_msgs/planning_msgs/planning_internal.proto b/modules/common_msgs/planning_msgs/planning_internal.proto index 217e9b2baf6..c663a4b9b8e 100644 --- a/modules/common_msgs/planning_msgs/planning_internal.proto +++ b/modules/common_msgs/planning_msgs/planning_internal.proto @@ -132,9 +132,15 @@ message DpPolyGraphDebug { } message ScenarioDebug { - optional string scenario_type = 1; - optional string stage_type = 2; + // "scenario_type" is deprecated because scenario is designed as plugin and + // "scenario_plugin_type" will be used instead. + optional int32 scenario_type = 1 [deprecated=true]; + // "stage_type" is deprecated because scenario is designed as plugin and + // "stage_plugin_type" will be used instead. + optional int32 stage_type = 2 [deprecated=true]; optional string msg = 3; + optional string scenario_plugin_type = 4; + optional string stage_plugin_type = 5; } message Trajectories { diff --git a/modules/contrib/cyber_bridge/BUILD b/modules/contrib/cyber_bridge/BUILD index 538ac8fe599..3388a670424 100644 --- a/modules/contrib/cyber_bridge/BUILD +++ b/modules/contrib/cyber_bridge/BUILD @@ -1,99 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package", "apollo_cc_binary") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# data_dest = "cyber-bridge", -# data = [ -# ":cyberfile.xml", -# ":cyber-bridge.BUILD", -# ], -# targets = [ -# ":cyber_bridge", -# ], -# runtime_dest = "cyber-bridge/bin", -# deps = [ -# "//cyber:install", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_cyber-bridge_src", -# ":install_cyber-bridge_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_cyber-bridge_src", -# src_dir = ["."], -# dest = "cyber-bridge/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_cyber-bridge_hdrs", -# src_dir = ["."], -# dest = "cyber-bridge/include", -# filter = "*.h", -# ) - -cc_binary( +apollo_cc_binary( name = "cyber_bridge", srcs = ["bridge.cc"], deps = [ - ":bridge_server", + ":contrib_cyber_bridge", "@boost", "@com_github_gflags_gflags//:gflags", ], ) -cc_library( - name = "bridge_server", - srcs = ["server.cc"], - hdrs = ["server.h"], - deps = [ - ":bridge_client", +apollo_cc_library( + name = "contrib_cyber_bridge", + srcs = [ + "client.cc", + "clients.cc", + "node.cc", + "server.cc", ], -) - -cc_library( - name = "bridge_client", - srcs = ["client.cc"], - deps = [ - ":bridge_clients", - ":bridge_node", - "@boost", + hdrs = [ + "client.h", + "clients.h", + "node.h", + "server.h", ], -) - -cc_library( - name = "bridge_clients", - srcs = ["clients.cc"], - hdrs = ["clients.h"], - deps = [ - ":bridge_client_header", - "@boost", - ], -) - -cc_library( - name = "bridge_node", - srcs = ["node.cc"], - hdrs = ["node.h"], - deps = [ - ":bridge_client_header", - ], -) - -cc_library( - name = "bridge_client_header", - hdrs = ["client.h"], deps = [ "//cyber", "@boost", @@ -101,4 +34,5 @@ cc_library( ) apollo_package() + cpplint() diff --git a/modules/control/control_component/BUILD b/modules/control/control_component/BUILD index cfeb6d3fa52..cf90793f298 100644 --- a/modules/control/control_component/BUILD +++ b/modules/control/control_component/BUILD @@ -1,140 +1,46 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] -cc_library( - name = "control_lib", +apollo_cc_library( + name = "apollo_control_lib", copts = CONTROL_COPTS, deps = [ "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", "//modules/common/adapters:adapter_gflags", "//modules/common/latency_recorder", "//modules/common/monitor_log", - "//modules/common/util", + "//modules/common/util:common_util", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", - "//modules/control/control_component/proto:preprocessor_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/planning_msgs:planning_cc_proto", "//modules/control/control_component/proto:pipeline_cc_proto", + "//modules/control/control_component/proto:preprocessor_cc_proto", "//modules/control/control_component/submodules:lat_lon_controller_submodule_lib", "//modules/control/control_component/submodules:mpc_controller_submodule_lib", "//modules/control/control_component/submodules:postprocessor_submodule_lib", "//modules/control/control_component/submodules:preprocessor_submodule_lib", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", "@com_github_gflags_gflags//:gflags", ], - alwayslink = True ) -cc_library( - name = "control_component_lib", +apollo_component( + name = "libcontrol_component.so", srcs = ["control_component.cc"], hdrs = ["control_component.h"], copts = CONTROL_COPTS, deps = [ - ":control_lib", - "//modules/control/controllers/control_task_base/common:dependency_injector", - "//modules/control/controllers/control_task_base:control_task_agent", + ":apollo_control_lib", + "//modules/control/control_component/controller_task_base:control_task_agent", + "//modules/control/control_component/controller_task_base/common:dependency_injector", ], - alwayslink = True ) -cc_binary( - name = "libcontrol_component.so", - linkshared = True, - linkstatic = True, - deps = [ - ":control_component_lib", - - ], -) - -# install( -# name = "testdata", -# data_dest = "control/addition_data", -# data = [ -# ":test_data", -# ], -# ) - -# install( -# name = "install", -# library_dest = "control/lib", -# data_dest = "control", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# "control.BUILD", -# ], -# targets = [ -# ":libcontrol_component.so", -# ], -# deps = [ -# ":pb_control", -# ":pb_hdrs", -# ":testdata", -# "//modules/control/submodules:install", -# "//modules/control/tools:install", -# "//modules/control/proto:py_pb_control", -# "//modules/control/common:install" -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "control/include", -# data = [ -# "//modules/control/proto:calibration_table_cc_proto", -# "//modules/control/proto:control_common_conf_cc_proto", -# "//modules/control/proto:control_conf_cc_proto", -# "//modules/control/proto:gain_scheduler_conf_cc_proto", -# "//modules/control/proto:lat_controller_conf_cc_proto", -# "//modules/control/proto:leadlag_conf_cc_proto", -# "//modules/control/proto:local_view_cc_proto", -# "//modules/control/proto:lon_controller_conf_cc_proto", -# "//modules/control/proto:mpc_controller_conf_cc_proto", -# "//modules/control/proto:mrac_conf_cc_proto", -# "//modules/control/proto:pid_conf_cc_proto", -# "//modules/control/proto:preprocessor_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_control", -# dest = "control", -# files = [ -# "//modules/common_msgs/control_msgs:control_pad_msg_py_pb2", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_control_src", -# ":install_control_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_control_src", -# src_dir = ["."], -# dest = "control/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_control_hdrs", -# src_dir = ["."], -# dest = "control/include", -# filter = "*.h", -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -145,16 +51,16 @@ filegroup( ]), ) -cc_test( +apollo_cc_test( name = "control_component_test", size = "small", srcs = ["control_component_test.cc"], data = ["//modules/control/control_component:test_data"], + linkstatic = True, deps = [ ":control_component_lib", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) # TODO(storypku): split test_data @@ -166,4 +72,5 @@ filegroup( ) apollo_package() + cpplint() diff --git a/modules/control/control_component/common/BUILD b/modules/control/control_component/common/BUILD index c912229129c..d3813d78a89 100644 --- a/modules/control/control_component/common/BUILD +++ b/modules/control/control_component/common/BUILD @@ -1,33 +1,17 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] -cc_binary( - name = "libcontrol_gflags.so", - linkshared = True, - linkstatic = True, - srcs = [ - "control_gflags.cc", - "control_gflags.h", - ], - copts = CONTROL_COPTS, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( +apollo_cc_library( name = "control_gflags", - srcs = ["libcontrol_gflags.so"], + srcs = ["control_gflags.cc"], hdrs = ["control_gflags.h"], - copts = CONTROL_COPTS, - alwayslink = True, - deps = [], + deps = ["@com_github_gflags_gflags//:gflags"], ) apollo_package() -cpplint() \ No newline at end of file + +cpplint() diff --git a/modules/control/control_component/common/control_gflags.cc b/modules/control/control_component/common/control_gflags.cc index cf51c22b774..6d1946a2538 100644 --- a/modules/control/control_component/common/control_gflags.cc +++ b/modules/control/control_component/common/control_gflags.cc @@ -41,10 +41,7 @@ DEFINE_string(calibration_table_file, "/apollo/modules/control/conf/calibration_table.pb.txt", "calibration table file"); -DEFINE_double(control_test_duration, - -1.0, - "control test duration"); - +DEFINE_double(control_test_duration, -1.0, "control test duration"); DEFINE_bool(enable_csv_debug, false, "True to write out csv debug file."); @@ -93,14 +90,11 @@ DEFINE_bool(use_control_submodules, false, DEFINE_bool(enable_input_timestamp_check, false, "enable input timestamp check"); -DEFINE_int32(max_localization_miss_num, 20, - "max localization miss num"); +DEFINE_int32(max_localization_miss_num, 20, "max localization miss num"); -DEFINE_int32(max_chassis_miss_num, 20, - "max chassis miss num"); +DEFINE_int32(max_chassis_miss_num, 20, "max chassis miss num"); -DEFINE_int32(max_planning_miss_num, 20, - "max planning miss num"); +DEFINE_int32(max_planning_miss_num, 20, "max planning miss num"); DEFINE_double(max_acceleration_when_stopped, 0.01, "max acceleration when stopped."); @@ -108,32 +102,22 @@ DEFINE_double(max_acceleration_when_stopped, 0.01, DEFINE_double(max_path_remain_when_stopped, 0.3, "max path remain when stopped."); -DEFINE_bool(enable_persistent_estop, true, - "enable persistent estop"); +DEFINE_bool(enable_persistent_estop, true, "enable persistent estop"); -DEFINE_double(control_period, 0.01, - "control period"); +DEFINE_double(control_period, 0.01, "control period"); -DEFINE_double(soft_estop_brake, 50.0, - "soft estop brake."); +DEFINE_double(soft_estop_brake, 50.0, "soft estop brake."); -DEFINE_double(trajectory_period, 0.1, - "trajectory period."); +DEFINE_double(trajectory_period, 0.1, "trajectory period."); -DEFINE_double(chassis_period, 0.01, - "chassis period."); +DEFINE_double(chassis_period, 0.01, "chassis period."); -DEFINE_double(localization_period, 0.01, - "localization period."); +DEFINE_double(localization_period, 0.01, "localization period."); -DEFINE_double(minimum_speed_resolution, 0.2, - "minimum speed resolution."); +DEFINE_double(minimum_speed_resolution, 0.2, "minimum speed resolution."); -DEFINE_double(minimum_speed_protection, 0.1, - "minimum speed protection."); +DEFINE_double(minimum_speed_protection, 0.1, "minimum speed protection."); -DEFINE_int32(action, 1, - "START = 1; RESET = 2; VIN_REQ = 3"); +DEFINE_int32(action, 1, "START = 1; RESET = 2; VIN_REQ = 3"); -DEFINE_bool(enable_epb_brake, false, - "enable brake for anti-slip in slope"); +DEFINE_bool(enable_epb_brake, false, "enable brake for anti-slip in slope"); diff --git a/modules/control/control_component/conf/control.conf b/modules/control/control_component/conf/control.conf index cd995162e86..32d50c5c1ce 100644 --- a/modules/control/control_component/conf/control.conf +++ b/modules/control/control_component/conf/control.conf @@ -3,7 +3,7 @@ --mpc_controller_conf_file=/apollo/modules/control/conf/mpc_controller_conf.pb.txt --lateral_controller_conf_file=/apollo/modules/control/conf/lateral_controller_conf.pb.txt --longitudinal_controller_conf_file=/apollo/modules/control/conf/longitudinal_controller_conf.pb.txt ---calibration_table_file=/apollo/modules/control/controllers/control_task_base/conf/calibration_table.pb.txt +--calibration_table_file=/apollo/modules/control/control_component/controller_task_base/conf/calibration_table.pb.txt --control_test_duration=-1 --enable_csv_debug=false --preprocessor_submodule_name=PreprocessorSubmodule diff --git a/modules/control/control_component/control-component.BUILD b/modules/control/control_component/control-component.BUILD deleted file mode 100644 index 5c578a2d9b3..00000000000 --- a/modules/control/control_component/control-component.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "control_component", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/lib*.so*"]), - include_prefix = "modules/control/control_component", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) diff --git a/modules/control/control_component/control_component.h b/modules/control/control_component/control_component.h index ca17683ff55..33453f45acc 100644 --- a/modules/control/control_component/control_component.h +++ b/modules/control/control_component/control_component.h @@ -19,21 +19,20 @@ #include #include -#include "cyber/class_loader/class_loader.h" -#include "cyber/component/timer_component.h" -#include "cyber/time/time.h" - #include "modules/common_msgs/chassis_msgs/chassis.pb.h" -#include "modules/common/monitor_log/monitor_log_buffer.h" #include "modules/common_msgs/control_msgs/control_cmd.pb.h" #include "modules/common_msgs/control_msgs/pad_msg.pb.h" #include "modules/common_msgs/localization_msgs/localization.pb.h" #include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/control_component/proto/preprocessor.pb.h" +#include "cyber/class_loader/class_loader.h" +#include "cyber/component/timer_component.h" +#include "cyber/time/time.h" +#include "modules/common/monitor_log/monitor_log_buffer.h" #include "modules/common/util/util.h" -#include "modules/control/controllers/control_task_base/common/dependency_injector.h" -#include "modules/control/controllers/control_task_base/control_task_agent.h" -#include "modules/control/control_component/proto/preprocessor.pb.h" +#include "modules/control/control_component/controller_task_base/common/dependency_injector.h" +#include "modules/control/control_component/controller_task_base/control_task_agent.h" #include "modules/control/control_component/submodules/preprocessor_submodule.h" /** diff --git a/modules/control/control_component/control_component_test.cc b/modules/control/control_component/control_component_test.cc index 5bb9f7e9b69..f021b819e8d 100644 --- a/modules/control/control_component/control_component_test.cc +++ b/modules/control/control_component/control_component_test.cc @@ -18,11 +18,11 @@ #include +#include "gtest/gtest.h" + #include "cyber/common/file.h" #include "cyber/common/log.h" #include "cyber/cyber.h" -#include "gtest/gtest.h" - #include "modules/common/adapters/adapter_gflags.h" #include "modules/control/control_component/common/control_gflags.h" diff --git a/modules/control/control_component/controller_task_base/BUILD b/modules/control/control_component/controller_task_base/BUILD new file mode 100644 index 00000000000..bd6ae74db98 --- /dev/null +++ b/modules/control/control_component/controller_task_base/BUILD @@ -0,0 +1,45 @@ +load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") + +package(default_visibility = ["//visibility:public"]) + +CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] + +apollo_cc_library( + name = "control_task_agent", + srcs = ["control_task_agent.cc"], + hdrs = ["control_task_agent.h"], + deps = [ + "control_task", + "//cyber", + "//modules/common/util:util_tool", + "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/control/control_component/common:control_gflags", + "//modules/control/control_component/proto:pipeline_cc_proto", + "//modules/control/control_component/controller_task_base/common:controllers_control_task_base_common", + "@osqp", + ], +) + +apollo_cc_library( + name = "control_task", + srcs = [], + hdrs = ["control_task.h"], + deps = [ + "//cyber", + "//modules/control/control_component/controller_task_base/common:controllers_control_task_base_common", + "//modules/control/control_component/controller_task_base/proto:calibration_table_cc_proto", + ], +) + +filegroup( + name = "runtime_data", + srcs = glob([ + "conf/*.txt", + ]), +) + +apollo_package() + +cpplint() diff --git a/modules/control/controllers/control_task_base/common/BUILD b/modules/control/control_component/controller_task_base/common/BUILD similarity index 71% rename from modules/control/controllers/control_task_base/common/BUILD rename to modules/control/control_component/controller_task_base/common/BUILD index de86dcb8032..0aabc0ae100 100644 --- a/modules/control/controllers/control_task_base/common/BUILD +++ b/modules/control/control_component/controller_task_base/common/BUILD @@ -1,15 +1,14 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] -cc_binary( - name = "libcommon.so", - linkshared = True, - linkstatic = True, +apollo_cc_library( + name = "controllers_control_task_base_common", + hdrs = glob(["*.h"]), + visibility = ["//visibility:public"], deps = [ ":dependency_injector", ":hysteresis_filter", @@ -17,75 +16,41 @@ cc_binary( ":interpolation_2d", ":leadlag_controller", ":mrac_controller", - ":pid_controller", ":pid_BC_controller", ":pid_IC_controller", + ":pid_controller", ":trajectory_analyzer", - ], -) - -cc_library( - name = "common", - srcs = ["libcommon.so"], - hdrs = glob(["*.h"]), - deps = [ - ":hysteresis_filter", "//cyber", - "//modules/control/controllers/control_task_base/proto:leadlag_conf_cc_proto", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common/math", "//modules/common/status", - "//modules/control/controllers/control_task_base/proto:mrac_conf_cc_proto", - "//modules/control/controllers/control_task_base/proto:pid_conf_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/control/control_component/controller_task_base/proto:leadlag_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:mrac_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:pid_conf_cc_proto", "@com_google_absl//:absl", "@eigen", - ":dependency_injector", - ":interpolation_1d", - ":interpolation_2d", - ":leadlag_controller", - ":mrac_controller", - ":pid_controller", - ":pid_BC_controller", - ":pid_IC_controller", - ":trajectory_analyzer", ], - visibility = ["//visibility:public"], - alwayslink = True, ) -cc_library( +apollo_cc_library( name = "dependency_injector", hdrs = ["dependency_injector.h"], deps = [ "//modules/common/vehicle_state:vehicle_state_provider", ], - alwayslink = True, ) -cc_library( +apollo_cc_library( name = "hysteresis_filter", - srcs = ["libhysteresis_filter.so"], + srcs = ["hysteresis_filter.cc"], hdrs = ["hysteresis_filter.h"], copts = CONTROL_COPTS, - alwayslink = True, -) - -cc_binary( - name = "libhysteresis_filter.so", - srcs = [ - "hysteresis_filter.cc", - "hysteresis_filter.h", - ], - linkshared = True, - linkstatic = True, - #copts = CONTROL_COPTS, ) -cc_library( +apollo_cc_library( name = "interpolation_1d", srcs = ["interpolation_1d.cc"], hdrs = ["interpolation_1d.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ "//cyber", @@ -93,104 +58,97 @@ cc_library( ], ) -cc_library( +apollo_cc_library( name = "interpolation_2d", srcs = ["interpolation_2d.cc"], hdrs = ["interpolation_2d.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ "//cyber", ], ) -cc_library( +apollo_cc_library( name = "leadlag_controller", srcs = ["leadlag_controller.cc"], hdrs = ["leadlag_controller.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ "//cyber", - "//modules/control/controllers/control_task_base/proto:leadlag_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:leadlag_conf_cc_proto", ], ) -cc_library( +apollo_cc_library( name = "mrac_controller", srcs = ["mrac_controller.cc"], hdrs = ["mrac_controller.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ "//cyber", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common/math", "//modules/common/status", - "//modules/control/controllers/control_task_base/proto:mrac_conf_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/control/control_component/controller_task_base/proto:mrac_conf_cc_proto", "@com_google_absl//:absl", "@eigen", ], ) -cc_library( +apollo_cc_library( name = "pid_controller", srcs = ["pid_controller.cc"], hdrs = ["pid_controller.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ "//cyber", - "//modules/control/controllers/control_task_base/proto:pid_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:pid_conf_cc_proto", ], ) -cc_library( +apollo_cc_library( name = "pid_BC_controller", srcs = ["pid_BC_controller.cc"], hdrs = ["pid_BC_controller.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ ":pid_controller", "//cyber", "//modules/common/math", - "//modules/control/controllers/control_task_base/proto:pid_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:pid_conf_cc_proto", ], ) -cc_library( +apollo_cc_library( name = "pid_IC_controller", srcs = ["pid_IC_controller.cc"], hdrs = ["pid_IC_controller.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ ":pid_controller", "//cyber", "//modules/common/math", - "//modules/control/controllers/control_task_base/proto:pid_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:pid_conf_cc_proto", ], ) -cc_library( +apollo_cc_library( name = "trajectory_analyzer", srcs = ["trajectory_analyzer.cc"], hdrs = ["trajectory_analyzer.h"], - alwayslink = True, copts = CONTROL_COPTS, deps = [ - "//modules/control/control_component/common:control_gflags", "//cyber", "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common/vehicle_state:vehicle_state_provider", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/control/control_component/common:control_gflags", "@eigen", ], ) -cc_test( +apollo_cc_test( name = "hysteresis_filter_test", size = "small", srcs = ["hysteresis_filter_test.cc"], @@ -200,7 +158,7 @@ cc_test( ], ) -cc_test( +apollo_cc_test( name = "interpolation_1d_test", size = "small", srcs = ["interpolation_1d_test.cc"], @@ -213,7 +171,7 @@ cc_test( ], ) -cc_test( +apollo_cc_test( name = "interpolation_2d_test", size = "small", srcs = ["interpolation_2d_test.cc"], @@ -221,12 +179,12 @@ cc_test( deps = [ ":interpolation_2d", "//cyber", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", + "//modules/control/control_component/controller_task_base/proto:calibration_table_cc_proto", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "leadlag_controller_test", size = "small", srcs = ["leadlag_controller_test.cc"], @@ -234,13 +192,13 @@ cc_test( deps = [ ":leadlag_controller", "//cyber", + "//modules/control/control_component/controller_task_base/proto:leadlag_conf_cc_proto", "//modules/control/controllers/lon_based_pid_controller/proto:lon_based_pid_controller_conf_cc_proto", - "//modules/control/controllers/control_task_base/proto:leadlag_conf_cc_proto", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "mrac_controller_test", size = "small", srcs = ["mrac_controller_test.cc"], @@ -249,13 +207,13 @@ cc_test( ":mrac_controller", "//cyber", "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/control/control_component/controller_task_base/proto:mrac_conf_cc_proto", "//modules/control/controllers/lat_based_lqr_controller/proto:lat_based_lqr_controller_conf_cc_proto", - "//modules/control/controllers/control_task_base/proto:mrac_conf_cc_proto", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "pid_controller_test", size = "small", srcs = ["pid_controller_test.cc"], @@ -263,8 +221,8 @@ cc_test( deps = [ ":pid_controller", "//cyber", + "//modules/control/control_component/controller_task_base/proto:pid_conf_cc_proto", "//modules/control/controllers/lon_based_pid_controller/proto:lon_based_pid_controller_conf_cc_proto", - "//modules/control/controllers/control_task_base/proto:pid_conf_cc_proto", "@com_google_googletest//:gtest_main", ], ) @@ -277,13 +235,13 @@ cc_test( deps = [ ":pid_BC_controller", "//cyber", + "//modules/control/control_component/controller_task_base/proto:pid_conf_cc_proto", "//modules/control/controllers/lon_based_pid_controller/proto:lon_based_pid_controller_conf_cc_proto", - "//modules/control/controllers/control_task_base/proto:pid_conf_cc_proto", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "pid_IC_controller_test", size = "small", srcs = ["pid_IC_controller_test.cc"], @@ -291,13 +249,13 @@ cc_test( deps = [ ":pid_IC_controller", "//cyber", + "//modules/control/control_component/controller_task_base/proto:pid_conf_cc_proto", "//modules/control/controllers/lon_based_pid_controller/proto:lon_based_pid_controller_conf_cc_proto", - "//modules/control/controllers/control_task_base/proto:pid_conf_cc_proto", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "trajectory_analyzer_test", size = "small", srcs = ["trajectory_analyzer_test.cc"], diff --git a/modules/control/controllers/control_task_base/common/dependency_injector.h b/modules/control/control_component/controller_task_base/common/dependency_injector.h similarity index 100% rename from modules/control/controllers/control_task_base/common/dependency_injector.h rename to modules/control/control_component/controller_task_base/common/dependency_injector.h diff --git a/modules/control/controllers/control_task_base/common/hysteresis_filter.cc b/modules/control/control_component/controller_task_base/common/hysteresis_filter.cc similarity index 94% rename from modules/control/controllers/control_task_base/common/hysteresis_filter.cc rename to modules/control/control_component/controller_task_base/common/hysteresis_filter.cc index d438480524e..c412512e399 100644 --- a/modules/control/controllers/control_task_base/common/hysteresis_filter.cc +++ b/modules/control/control_component/controller_task_base/common/hysteresis_filter.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/hysteresis_filter.h" +#include "modules/control/control_component/controller_task_base/common/hysteresis_filter.h" namespace apollo { namespace control { diff --git a/modules/control/controllers/control_task_base/common/hysteresis_filter.h b/modules/control/control_component/controller_task_base/common/hysteresis_filter.h similarity index 100% rename from modules/control/controllers/control_task_base/common/hysteresis_filter.h rename to modules/control/control_component/controller_task_base/common/hysteresis_filter.h diff --git a/modules/control/controllers/control_task_base/common/hysteresis_filter_test.cc b/modules/control/control_component/controller_task_base/common/hysteresis_filter_test.cc similarity index 97% rename from modules/control/controllers/control_task_base/common/hysteresis_filter_test.cc rename to modules/control/control_component/controller_task_base/common/hysteresis_filter_test.cc index 2938491dbf9..c14d8a87335 100644 --- a/modules/control/controllers/control_task_base/common/hysteresis_filter_test.cc +++ b/modules/control/control_component/controller_task_base/common/hysteresis_filter_test.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/hysteresis_filter.h" +#include "modules/control/control_component/controller_task_base/common/hysteresis_filter.h" #include #include diff --git a/modules/control/controllers/control_task_base/common/interpolation_1d.cc b/modules/control/control_component/controller_task_base/common/interpolation_1d.cc similarity index 96% rename from modules/control/controllers/control_task_base/common/interpolation_1d.cc rename to modules/control/control_component/controller_task_base/common/interpolation_1d.cc index 937fbe244f2..7d26618e4e3 100644 --- a/modules/control/controllers/control_task_base/common/interpolation_1d.cc +++ b/modules/control/control_component/controller_task_base/common/interpolation_1d.cc @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/interpolation_1d.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_1d.h" #include diff --git a/modules/control/controllers/control_task_base/common/interpolation_1d.h b/modules/control/control_component/controller_task_base/common/interpolation_1d.h similarity index 100% rename from modules/control/controllers/control_task_base/common/interpolation_1d.h rename to modules/control/control_component/controller_task_base/common/interpolation_1d.h diff --git a/modules/control/controllers/control_task_base/common/interpolation_1d_test.cc b/modules/control/control_component/controller_task_base/common/interpolation_1d_test.cc similarity index 90% rename from modules/control/controllers/control_task_base/common/interpolation_1d_test.cc rename to modules/control/control_component/controller_task_base/common/interpolation_1d_test.cc index de6ecff962f..4c7651959fe 100644 --- a/modules/control/controllers/control_task_base/common/interpolation_1d_test.cc +++ b/modules/control/control_component/controller_task_base/common/interpolation_1d_test.cc @@ -14,16 +14,18 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/interpolation_1d.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_1d.h" #include #include -#include "cyber/common/file.h" -#include "cyber/common/log.h" #include "gmock/gmock.h" + #include "modules/control/controllers/lat_based_lqr_controller/proto/lat_based_lqr_controller_conf.pb.h" +#include "cyber/common/file.h" +#include "cyber/common/log.h" + using ::testing::ElementsAre; namespace apollo { @@ -33,10 +35,10 @@ class Interpolation1DTest : public ::testing::Test { public: virtual void SetUp() { std::string controllers_dir = "/apollo/modules/control/controllers/"; - std::string control_conf_file = controllers_dir + + std::string control_conf_file = + controllers_dir + "lat_based_lqr_controller/conf/controller_conf.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile( - control_conf_file, &control_conf_)); + ACHECK(cyber::common::GetProtoFromFile(control_conf_file, &control_conf_)); } protected: @@ -75,8 +77,7 @@ TEST_F(Interpolation1DTest, unordered) { } TEST_F(Interpolation1DTest, gain_scheduler) { - const auto& gain_scheduler = - control_conf_.lat_err_gain_scheduler(); + const auto& gain_scheduler = control_conf_.lat_err_gain_scheduler(); AINFO << "Lateral Error Gain Scheduler:" << gain_scheduler.DebugString(); Interpolation1D::DataType xy; diff --git a/modules/control/controllers/control_task_base/common/interpolation_2d.cc b/modules/control/control_component/controller_task_base/common/interpolation_2d.cc similarity index 97% rename from modules/control/controllers/control_task_base/common/interpolation_2d.cc rename to modules/control/control_component/controller_task_base/common/interpolation_2d.cc index cdb15de3c0c..b16e267f9c7 100644 --- a/modules/control/controllers/control_task_base/common/interpolation_2d.cc +++ b/modules/control/control_component/controller_task_base/common/interpolation_2d.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/interpolation_2d.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_2d.h" #include diff --git a/modules/control/controllers/control_task_base/common/interpolation_2d.h b/modules/control/control_component/controller_task_base/common/interpolation_2d.h similarity index 100% rename from modules/control/controllers/control_task_base/common/interpolation_2d.h rename to modules/control/control_component/controller_task_base/common/interpolation_2d.h diff --git a/modules/control/controllers/control_task_base/common/interpolation_2d_test.cc b/modules/control/control_component/controller_task_base/common/interpolation_2d_test.cc similarity index 85% rename from modules/control/controllers/control_task_base/common/interpolation_2d_test.cc rename to modules/control/control_component/controller_task_base/common/interpolation_2d_test.cc index 815a32563c3..490440aecf4 100644 --- a/modules/control/controllers/control_task_base/common/interpolation_2d_test.cc +++ b/modules/control/control_component/controller_task_base/common/interpolation_2d_test.cc @@ -14,15 +14,17 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/interpolation_2d.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_2d.h" #include #include +#include "gtest/gtest.h" + +#include "modules/control/control_component/controller_task_base/proto/calibration_table.pb.h" + #include "cyber/common/file.h" #include "cyber/common/log.h" -#include "gtest/gtest.h" -#include "modules/control/controllers/control_task_base/proto/calibration_table.pb.h" namespace apollo { namespace control { @@ -31,11 +33,11 @@ class Interpolation2DTest : public ::testing::Test { public: virtual void SetUp() { std::string control_base_dir = - "/apollo/modules/control/controllers/control_task_base/"; - std::string control_conf_file = control_base_dir + - "conf/calibration_table.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile( - control_conf_file, &calibration_table_)); + "/apollo/modules/control/control_component/controller_task_base/"; + std::string control_conf_file = + control_base_dir + "conf/calibration_table.pb.txt"; + ACHECK(cyber::common::GetProtoFromFile(control_conf_file, + &calibration_table_)); } protected: @@ -74,8 +76,7 @@ TEST_F(Interpolation2DTest, normal) { } TEST_F(Interpolation2DTest, calibration_table) { - const auto &calibration_table = - calibration_table_; + const auto &calibration_table = calibration_table_; AINFO << "Throttle calibration table:" << calibration_table.DebugString(); Interpolation2D::DataType xyz; diff --git a/modules/control/controllers/control_task_base/common/leadlag_controller.cc b/modules/control/control_component/controller_task_base/common/leadlag_controller.cc similarity index 97% rename from modules/control/controllers/control_task_base/common/leadlag_controller.cc rename to modules/control/control_component/controller_task_base/common/leadlag_controller.cc index c5a37dfd6ed..dcdde32fee8 100644 --- a/modules/control/controllers/control_task_base/common/leadlag_controller.cc +++ b/modules/control/control_component/controller_task_base/common/leadlag_controller.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/leadlag_controller.h" +#include "modules/control/control_component/controller_task_base/common/leadlag_controller.h" #include diff --git a/modules/control/controllers/control_task_base/common/leadlag_controller.h b/modules/control/control_component/controller_task_base/common/leadlag_controller.h similarity index 97% rename from modules/control/controllers/control_task_base/common/leadlag_controller.h rename to modules/control/control_component/controller_task_base/common/leadlag_controller.h index d811460761f..4cde7640567 100644 --- a/modules/control/controllers/control_task_base/common/leadlag_controller.h +++ b/modules/control/control_component/controller_task_base/common/leadlag_controller.h @@ -21,7 +21,7 @@ #pragma once -#include "modules/control/controllers/control_task_base/proto/leadlag_conf.pb.h" +#include "modules/control/control_component/controller_task_base/proto/leadlag_conf.pb.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/control_task_base/common/leadlag_controller_test.cc b/modules/control/control_component/controller_task_base/common/leadlag_controller_test.cc similarity index 75% rename from modules/control/controllers/control_task_base/common/leadlag_controller_test.cc rename to modules/control/control_component/controller_task_base/common/leadlag_controller_test.cc index f1b06a2cf68..bafe34deb64 100644 --- a/modules/control/controllers/control_task_base/common/leadlag_controller_test.cc +++ b/modules/control/control_component/controller_task_base/common/leadlag_controller_test.cc @@ -14,15 +14,16 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/leadlag_controller.h" +#include "modules/control/control_component/controller_task_base/common/leadlag_controller.h" #include #include -#include "cyber/common/file.h" #include "gtest/gtest.h" -#include "modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.pb.h" -#include "modules/control/controllers/control_task_base/proto/leadlag_conf.pb.h" + +#include "modules/control/control_component/controller_task_base/proto/leadlag_conf.pb.h" + +#include "cyber/common/file.h" namespace apollo { namespace control { @@ -30,21 +31,19 @@ namespace control { class LeadlagControllerTest : public ::testing::Test { public: virtual void SetUp() { - std::string controllers_dir = "/apollo/modules/control/controllers/"; - std::string control_conf_file = controllers_dir + - "lon_based_pid_controller/conf/controller_conf.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile( - control_conf_file, &lon_controller_conf_)); + std::string controllers_dir = + "/apollo/modules/control/control_component/testdata/conf/"; + std::string control_conf_file = controllers_dir + "leadlag_conf.pb.txt"; + ACHECK(cyber::common::GetProtoFromFile(control_conf_file, &leadlag_conf_)); } protected: - LonBasedPidControllerConf lon_controller_conf_; + LeadlagConf leadlag_conf_; }; TEST_F(LeadlagControllerTest, StationLeadlagController) { double dt = 0.01; - LeadlagConf leadlag_conf = - lon_controller_conf_.reverse_station_leadlag_conf(); + LeadlagConf leadlag_conf = leadlag_conf_; LeadlagController leadlag_controller; leadlag_controller.Init(leadlag_conf, dt); leadlag_controller.Reset(); @@ -60,7 +59,7 @@ TEST_F(LeadlagControllerTest, StationLeadlagController) { TEST_F(LeadlagControllerTest, SpeedLeadlagController) { double dt = 0.01; - LeadlagConf leadlag_conf = lon_controller_conf_.reverse_speed_leadlag_conf(); + LeadlagConf leadlag_conf = leadlag_conf_; LeadlagController leadlag_controller; leadlag_controller.Init(leadlag_conf, dt); leadlag_controller.Reset(); diff --git a/modules/control/controllers/control_task_base/common/mrac_controller.cc b/modules/control/control_component/controller_task_base/common/mrac_controller.cc similarity index 99% rename from modules/control/controllers/control_task_base/common/mrac_controller.cc rename to modules/control/control_component/controller_task_base/common/mrac_controller.cc index cfd7ea77cf6..28bd2df5b2f 100644 --- a/modules/control/controllers/control_task_base/common/mrac_controller.cc +++ b/modules/control/control_component/controller_task_base/common/mrac_controller.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/mrac_controller.h" +#include "modules/control/control_component/controller_task_base/common/mrac_controller.h" #include #include @@ -22,8 +22,8 @@ #include "Eigen/Dense" #include "Eigen/LU" - #include "absl/strings/str_cat.h" + #include "cyber/common/log.h" #include "modules/common/math/matrix_operations.h" diff --git a/modules/control/controllers/control_task_base/common/mrac_controller.h b/modules/control/control_component/controller_task_base/common/mrac_controller.h similarity index 99% rename from modules/control/controllers/control_task_base/common/mrac_controller.h rename to modules/control/control_component/controller_task_base/common/mrac_controller.h index fd72bbd2d55..8aa5fcb869a 100644 --- a/modules/control/controllers/control_task_base/common/mrac_controller.h +++ b/modules/control/control_component/controller_task_base/common/mrac_controller.h @@ -26,8 +26,9 @@ #include "Eigen/Core" #include "modules/common_msgs/config_msgs/vehicle_config.pb.h" +#include "modules/control/control_component/controller_task_base/proto/mrac_conf.pb.h" + #include "modules/common/status/status.h" -#include "modules/control/controllers/control_task_base/proto/mrac_conf.pb.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/control_task_base/common/mrac_controller_test.cc b/modules/control/control_component/controller_task_base/common/mrac_controller_test.cc similarity index 90% rename from modules/control/controllers/control_task_base/common/mrac_controller_test.cc rename to modules/control/control_component/controller_task_base/common/mrac_controller_test.cc index 5a54f8d76fb..842a349727f 100644 --- a/modules/control/controllers/control_task_base/common/mrac_controller_test.cc +++ b/modules/control/control_component/controller_task_base/common/mrac_controller_test.cc @@ -14,16 +14,17 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/mrac_controller.h" +#include "modules/control/control_component/controller_task_base/common/mrac_controller.h" #include #include -#include "cyber/common/file.h" #include "gtest/gtest.h" + #include "modules/common_msgs/config_msgs/vehicle_config.pb.h" -#include "modules/control/controllers/lat_based_lqr_controller/proto/lat_based_lqr_controller_conf.pb.h" -#include "modules/control/controllers/control_task_base/proto/mrac_conf.pb.h" +#include "modules/control/control_component/controller_task_base/proto/mrac_conf.pb.h" + +#include "cyber/common/file.h" namespace apollo { namespace control { @@ -34,11 +35,10 @@ using Matrix = Eigen::MatrixXd; class MracControllerTest : public ::testing::Test { public: virtual void SetUp() { - std::string controllers_dir = "/apollo/modules/control/controllers/"; - std::string control_conf_file = controllers_dir + - "lat_based_lqr_controller/conf/controller_conf.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile( - control_conf_file, &lat_controller_conf_)); + std::string controllers_dir = + "/apollo/modules/control/control_component/testdata/conf/"; + std::string control_conf_file = controllers_dir + "mrac_conf.pb.txt"; + ACHECK(cyber::common::GetProtoFromFile(control_conf_file, &mrac_conf_)); steering_latency_param_.set_dead_time(0.0); steering_latency_param_.set_rise_time(0.0); steering_latency_param_.set_peak_time(0.0); @@ -46,7 +46,7 @@ class MracControllerTest : public ::testing::Test { } protected: - LatBaseLqrControllerConf lat_controller_conf_; + MracConf mrac_conf_; LatencyParam steering_latency_param_; }; @@ -54,7 +54,7 @@ class MracControllerTest : public ::testing::Test { TEST_F(MracControllerTest, MracControl) { double dt = 0.01; Matrix state = Matrix::Zero(1, 1); - MracConf mrac_conf = lat_controller_conf_.steer_mrac_conf(); + MracConf mrac_conf = mrac_conf_; MracController mrac_controller; mrac_controller.Init(mrac_conf, steering_latency_param_, dt); mrac_controller.SetInitialInputAdaptionGain(0.0); @@ -114,7 +114,7 @@ TEST_F(MracControllerTest, HighOrderMracControl) { Matrix action_init = Matrix::Zero(2, 1); double command_init = 10.0; // Re-design the 2nd order model parameters - MracConf mrac_conf = lat_controller_conf_.steer_mrac_conf(); + MracConf mrac_conf = mrac_conf_; MracController mrac_controller; mrac_conf.set_mrac_model_order(2); mrac_conf.clear_adaption_state_gain(); @@ -161,7 +161,7 @@ TEST_F(MracControllerTest, HighOrderMracControl) { // Lyapunov equation TEST_F(MracControllerTest, CheckLyapunovPD) { double dt = 0.01; - MracConf mrac_conf = lat_controller_conf_.steer_mrac_conf(); + MracConf mrac_conf = mrac_conf_; MracController mrac_controller; mrac_controller.Init(mrac_conf, steering_latency_param_, dt); // test on 1st order adaption dynamics diff --git a/modules/control/controllers/control_task_base/common/pid_BC_controller.cc b/modules/control/control_component/controller_task_base/common/pid_BC_controller.cc similarity index 95% rename from modules/control/controllers/control_task_base/common/pid_BC_controller.cc rename to modules/control/control_component/controller_task_base/common/pid_BC_controller.cc index 680622a8a72..4e2d93d9da2 100644 --- a/modules/control/controllers/control_task_base/common/pid_BC_controller.cc +++ b/modules/control/control_component/controller_task_base/common/pid_BC_controller.cc @@ -14,12 +14,11 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/pid_BC_controller.h" +#include "modules/control/control_component/controller_task_base/common/pid_BC_controller.h" #include #include "cyber/common/log.h" - #include "modules/common/math/math_utils.h" namespace apollo { diff --git a/modules/control/controllers/control_task_base/common/pid_BC_controller.h b/modules/control/control_component/controller_task_base/common/pid_BC_controller.h similarity index 90% rename from modules/control/controllers/control_task_base/common/pid_BC_controller.h rename to modules/control/control_component/controller_task_base/common/pid_BC_controller.h index ab7ae590d08..b8fd2f64217 100644 --- a/modules/control/controllers/control_task_base/common/pid_BC_controller.h +++ b/modules/control/control_component/controller_task_base/common/pid_BC_controller.h @@ -21,8 +21,9 @@ #pragma once -#include "modules/control/controllers/control_task_base/common/pid_controller.h" -#include "modules/control/controllers/control_task_base/proto/pid_conf.pb.h" +#include "modules/control/control_component/controller_task_base/proto/pid_conf.pb.h" + +#include "modules/control/control_component/controller_task_base/common/pid_controller.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/control_task_base/common/pid_BC_controller_test.cc b/modules/control/control_component/controller_task_base/common/pid_BC_controller_test.cc similarity index 73% rename from modules/control/controllers/control_task_base/common/pid_BC_controller_test.cc rename to modules/control/control_component/controller_task_base/common/pid_BC_controller_test.cc index ab80195e473..b4ecef17665 100644 --- a/modules/control/controllers/control_task_base/common/pid_BC_controller_test.cc +++ b/modules/control/control_component/controller_task_base/common/pid_BC_controller_test.cc @@ -14,14 +14,15 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/pid_BC_controller.h" +#include "modules/control/control_component/controller_task_base/common/pid_BC_controller.h" #include -#include "cyber/common/file.h" #include "gtest/gtest.h" -#include "modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.pb.h" -#include "modules/control/controllers/control_task_base/proto/pid_conf.pb.h" + +#include "modules/control/control_component/controller_task_base/proto/pid_conf.pb.h" + +#include "cyber/common/file.h" namespace apollo { namespace control { @@ -29,19 +30,24 @@ namespace control { class PidBCControllerTest : public ::testing::Test { public: virtual void SetUp() { - std::string controllers_dir = "/apollo/modules/control/controllers/"; - std::string control_conf_file = controllers_dir + - "lon_based_pid_controller/conf/controller_conf.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile( - control_conf_file, &lon_controller_conf_)); + std::string controllers_dir = + "/apollo/modules/control/control_component/testdata/conf/"; + std::string station_pid_conf_file = + controllers_dir + "station_pid_conf.pb.txt"; + std::string speed_pid_conf_file = controllers_dir + "speed_pid_conf.pb.txt"; + ACHECK(cyber::common::GetProtoFromFile(station_pid_conf_file, + &station_pid_conf_)); + ACHECK( + cyber::common::GetProtoFromFile(speed_pid_conf_file, &speed_pid_conf_)); } protected: - LonBasedPidControllerConf lon_controller_conf_; + PidConf station_pid_conf_; + PidConf speed_pid_conf_; }; TEST_F(PidBCControllerTest, StationPidController) { - PidConf pid_conf = lon_controller_conf_.station_pid_conf(); + PidConf pid_conf = station_pid_conf_; PIDBCController pid_BC_controller; pid_BC_controller.Init(pid_conf); pid_BC_controller.Reset(); @@ -57,7 +63,7 @@ TEST_F(PidBCControllerTest, StationPidController) { } TEST_F(PidBCControllerTest, SpeedPidController) { - PidConf pid_conf = lon_controller_conf_.low_speed_pid_conf(); + PidConf pid_conf = speed_pid_conf_; PIDBCController pid_BC_controller; pid_BC_controller.Init(pid_conf); pid_BC_controller.Reset(); diff --git a/modules/control/controllers/control_task_base/common/pid_IC_controller.cc b/modules/control/control_component/controller_task_base/common/pid_IC_controller.cc similarity index 96% rename from modules/control/controllers/control_task_base/common/pid_IC_controller.cc rename to modules/control/control_component/controller_task_base/common/pid_IC_controller.cc index 3519edf4ee8..e60c604d030 100644 --- a/modules/control/controllers/control_task_base/common/pid_IC_controller.cc +++ b/modules/control/control_component/controller_task_base/common/pid_IC_controller.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/pid_IC_controller.h" +#include "modules/control/control_component/controller_task_base/common/pid_IC_controller.h" #include #include diff --git a/modules/control/controllers/control_task_base/common/pid_IC_controller.h b/modules/control/control_component/controller_task_base/common/pid_IC_controller.h similarity index 90% rename from modules/control/controllers/control_task_base/common/pid_IC_controller.h rename to modules/control/control_component/controller_task_base/common/pid_IC_controller.h index 155c5f020a1..2fe533e7143 100644 --- a/modules/control/controllers/control_task_base/common/pid_IC_controller.h +++ b/modules/control/control_component/controller_task_base/common/pid_IC_controller.h @@ -21,8 +21,9 @@ #pragma once -#include "modules/control/controllers/control_task_base/common/pid_controller.h" -#include "modules/control/controllers/control_task_base/proto/pid_conf.pb.h" +#include "modules/control/control_component/controller_task_base/proto/pid_conf.pb.h" + +#include "modules/control/control_component/controller_task_base/common/pid_controller.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/control_task_base/common/pid_IC_controller_test.cc b/modules/control/control_component/controller_task_base/common/pid_IC_controller_test.cc similarity index 73% rename from modules/control/controllers/control_task_base/common/pid_IC_controller_test.cc rename to modules/control/control_component/controller_task_base/common/pid_IC_controller_test.cc index 58477b4ff10..e8adab6ab92 100644 --- a/modules/control/controllers/control_task_base/common/pid_IC_controller_test.cc +++ b/modules/control/control_component/controller_task_base/common/pid_IC_controller_test.cc @@ -14,14 +14,15 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/pid_IC_controller.h" +#include "modules/control/control_component/controller_task_base/common/pid_IC_controller.h" #include -#include "cyber/common/file.h" #include "gtest/gtest.h" -#include "modules/control/controllers/control_task_base/proto/pid_conf.pb.h" -#include "modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.pb.h" + +#include "modules/control/control_component/controller_task_base/proto/pid_conf.pb.h" + +#include "cyber/common/file.h" namespace apollo { namespace control { @@ -29,19 +30,24 @@ namespace control { class PidICControllerTest : public ::testing::Test { public: virtual void SetUp() { - std::string controllers_dir = "/apollo/modules/control/controllers/"; - std::string control_conf_file = controllers_dir + - "lon_based_pid_controller/conf/controller_conf.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile( - control_conf_file, &lon_controller_conf_)); + std::string controllers_dir = + "/apollo/modules/control/control_component/testdata/conf/"; + std::string station_pid_conf_file = + controllers_dir + "station_pid_conf.pb.txt"; + std::string speed_pid_conf_file = controllers_dir + "speed_pid_conf.pb.txt"; + ACHECK(cyber::common::GetProtoFromFile(station_pid_conf_file, + &station_pid_conf_)); + ACHECK( + cyber::common::GetProtoFromFile(speed_pid_conf_file, &speed_pid_conf_)); } protected: - LonBasedPidControllerConf lon_controller_conf_; + PidConf station_pid_conf_; + PidConf speed_pid_conf_; }; TEST_F(PidICControllerTest, StationPidController) { - PidConf pid_conf = lon_controller_conf_.station_pid_conf(); + PidConf pid_conf = station_pid_conf_; PIDICController pid_IC_controller; pid_IC_controller.Init(pid_conf); pid_IC_controller.Reset(); @@ -56,7 +62,7 @@ TEST_F(PidICControllerTest, StationPidController) { EXPECT_EQ(pid_IC_controller.Control(100, dt), control_value); } TEST_F(PidICControllerTest, SpeedPidController) { - PidConf pid_conf = lon_controller_conf_.low_speed_pid_conf(); + PidConf pid_conf = speed_pid_conf_; PIDICController pid_IC_controller; pid_IC_controller.Init(pid_conf); pid_IC_controller.Reset(); diff --git a/modules/control/controllers/control_task_base/common/pid_controller.cc b/modules/control/control_component/controller_task_base/common/pid_controller.cc similarity index 97% rename from modules/control/controllers/control_task_base/common/pid_controller.cc rename to modules/control/control_component/controller_task_base/common/pid_controller.cc index abeecd31622..8205a32e67a 100644 --- a/modules/control/controllers/control_task_base/common/pid_controller.cc +++ b/modules/control/control_component/controller_task_base/common/pid_controller.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/pid_controller.h" +#include "modules/control/control_component/controller_task_base/common/pid_controller.h" #include diff --git a/modules/control/controllers/control_task_base/common/pid_controller.h b/modules/control/control_component/controller_task_base/common/pid_controller.h similarity index 97% rename from modules/control/controllers/control_task_base/common/pid_controller.h rename to modules/control/control_component/controller_task_base/common/pid_controller.h index 143bc005fe7..389a7531405 100644 --- a/modules/control/controllers/control_task_base/common/pid_controller.h +++ b/modules/control/control_component/controller_task_base/common/pid_controller.h @@ -21,7 +21,7 @@ #pragma once -#include "modules/control/controllers/control_task_base/proto/pid_conf.pb.h" +#include "modules/control/control_component/controller_task_base/proto/pid_conf.pb.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/control_task_base/common/pid_controller_test.cc b/modules/control/control_component/controller_task_base/common/pid_controller_test.cc similarity index 74% rename from modules/control/controllers/control_task_base/common/pid_controller_test.cc rename to modules/control/control_component/controller_task_base/common/pid_controller_test.cc index fb538a8e732..bde0ba59a04 100644 --- a/modules/control/controllers/control_task_base/common/pid_controller_test.cc +++ b/modules/control/control_component/controller_task_base/common/pid_controller_test.cc @@ -14,15 +14,16 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/pid_controller.h" +#include "modules/control/control_component/controller_task_base/common/pid_controller.h" #include #include -#include "cyber/common/file.h" #include "gtest/gtest.h" -#include "modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.pb.h" -#include "modules/control/controllers/control_task_base/proto/pid_conf.pb.h" + +#include "modules/control/control_component/controller_task_base/proto/pid_conf.pb.h" + +#include "cyber/common/file.h" namespace apollo { namespace control { @@ -30,19 +31,24 @@ namespace control { class PidControllerTest : public ::testing::Test { public: virtual void SetUp() { - std::string controllers_dir = "/apollo/modules/control/controllers/"; - std::string control_conf_file = controllers_dir + - "lon_based_pid_controller/conf/controller_conf.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile( - control_conf_file, &lon_controller_conf_)); + std::string controllers_dir = + "/apollo/modules/control/control_component/testdata/conf/"; + std::string station_pid_conf_file = + controllers_dir + "station_pid_conf.pb.txt"; + std::string speed_pid_conf_file = controllers_dir + "speed_pid_conf.pb.txt"; + ACHECK(cyber::common::GetProtoFromFile(station_pid_conf_file, + &station_pid_conf_)); + ACHECK( + cyber::common::GetProtoFromFile(speed_pid_conf_file, &speed_pid_conf_)); } protected: - LonBasedPidControllerConf lon_controller_conf_; + PidConf station_pid_conf_; + PidConf speed_pid_conf_; }; TEST_F(PidControllerTest, StationPidController) { - PidConf pid_conf = lon_controller_conf_.station_pid_conf(); + PidConf pid_conf = station_pid_conf_; PIDController pid_controller; pid_controller.Init(pid_conf); pid_controller.Reset(); @@ -59,7 +65,7 @@ TEST_F(PidControllerTest, StationPidController) { } TEST_F(PidControllerTest, SpeedPidController) { - PidConf pid_conf = lon_controller_conf_.low_speed_pid_conf(); + PidConf pid_conf = speed_pid_conf_; PIDController pid_controller; pid_controller.Init(pid_conf); pid_controller.Reset(); diff --git a/modules/control/controllers/control_task_base/common/trajectory_analyzer.cc b/modules/control/control_component/controller_task_base/common/trajectory_analyzer.cc similarity index 99% rename from modules/control/controllers/control_task_base/common/trajectory_analyzer.cc rename to modules/control/control_component/controller_task_base/common/trajectory_analyzer.cc index b0d408655df..5acc315f95d 100644 --- a/modules/control/controllers/control_task_base/common/trajectory_analyzer.cc +++ b/modules/control/control_component/controller_task_base/common/trajectory_analyzer.cc @@ -14,7 +14,7 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/trajectory_analyzer.h" +#include "modules/control/control_component/controller_task_base/common/trajectory_analyzer.h" #include #include diff --git a/modules/control/controllers/control_task_base/common/trajectory_analyzer.h b/modules/control/control_component/controller_task_base/common/trajectory_analyzer.h similarity index 100% rename from modules/control/controllers/control_task_base/common/trajectory_analyzer.h rename to modules/control/control_component/controller_task_base/common/trajectory_analyzer.h diff --git a/modules/control/controllers/control_task_base/common/trajectory_analyzer_test.cc b/modules/control/control_component/controller_task_base/common/trajectory_analyzer_test.cc similarity index 98% rename from modules/control/controllers/control_task_base/common/trajectory_analyzer_test.cc rename to modules/control/control_component/controller_task_base/common/trajectory_analyzer_test.cc index 4b53e859584..4dfb3865c68 100644 --- a/modules/control/controllers/control_task_base/common/trajectory_analyzer_test.cc +++ b/modules/control/control_component/controller_task_base/common/trajectory_analyzer_test.cc @@ -14,11 +14,12 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/common/trajectory_analyzer.h" +#include "modules/control/control_component/controller_task_base/common/trajectory_analyzer.h" + +#include "gtest/gtest.h" #include "cyber/common/log.h" #include "cyber/time/clock.h" -#include "gtest/gtest.h" using apollo::common::PathPoint; using apollo::common::TrajectoryPoint; diff --git a/modules/control/controllers/control_task_base/conf/calibration_table.pb.txt b/modules/control/control_component/controller_task_base/conf/calibration_table.pb.txt similarity index 100% rename from modules/control/controllers/control_task_base/conf/calibration_table.pb.txt rename to modules/control/control_component/controller_task_base/conf/calibration_table.pb.txt diff --git a/modules/control/controllers/control_task_base/control_task.h b/modules/control/control_component/controller_task_base/control_task.h similarity index 77% rename from modules/control/controllers/control_task_base/control_task.h rename to modules/control/control_component/controller_task_base/control_task.h index 950f817b437..b0e036bfd31 100644 --- a/modules/control/controllers/control_task_base/control_task.h +++ b/modules/control/control_component/controller_task_base/control_task.h @@ -23,16 +23,18 @@ #include #include + #include -#include "cyber/common/file.h" -#include "modules/common/status/status.h" -#include "modules/control/controllers/control_task_base/common/dependency_injector.h" #include "modules/common_msgs/control_msgs/control_cmd.pb.h" #include "modules/common_msgs/localization_msgs/localization.pb.h" #include "modules/common_msgs/planning_msgs/planning.pb.h" -#include "modules/control/controllers/control_task_base/proto/calibration_table.pb.h" +#include "modules/control/control_component/controller_task_base/proto/calibration_table.pb.h" + +#include "cyber/common/file.h" #include "cyber/plugin_manager/plugin_manager.h" +#include "modules/common/status/status.h" +#include "modules/control/control_component/controller_task_base/common/dependency_injector.h" /** * @namespace apollo::control @@ -98,18 +100,18 @@ class ControlTask { protected: template - bool LoadConfig(T* config); + bool LoadConfig(T *config); - bool LoadCalibrationTable(calibration_table* calibration_table_conf) { + bool LoadCalibrationTable(calibration_table *calibration_table_conf) { std::string control_base_dir = - "/apollo/modules/control/controllers/control_task_base/"; - std::string calibration_table_path = control_base_dir + - "conf/calibration_table.pb.txt"; - - if (!apollo::cyber::common::GetProtoFromFile( - calibration_table_path, calibration_table_conf)) { - AERROR << "Load calibration table failed!"; - return false; + "/apollo/modules/control/control_component/controller_task_base/"; + std::string calibration_table_path = + control_base_dir + "conf/calibration_table.pb.txt"; + + if (!apollo::cyber::common::GetProtoFromFile(calibration_table_path, + calibration_table_conf)) { + AERROR << "Load calibration table failed!"; + return false; } return true; @@ -117,16 +119,15 @@ class ControlTask { }; template -bool ControlTask::LoadConfig(T* config) { +bool ControlTask::LoadConfig(T *config) { int status; std::string class_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); // Generate the default task config path from PluginManager. - std::string config_dir_ = - apollo::cyber::plugin_manager::PluginManager::Instance()-> - GetPluginClassHomePath(class_name) + - "/conf"; - std::string config_path_ = config_dir_ + "/controller_conf.pb.txt"; + std::string config_path_ = + apollo::cyber::plugin_manager::PluginManager::Instance() + ->GetPluginConfPath(class_name, + "conf/controller_conf.pb.txt"); if (!apollo::cyber::common::GetProtoFromFile(config_path_, config)) { AERROR << "Load config of " << class_name << " failed!"; diff --git a/modules/control/controllers/control_task_base/control_task_agent.cc b/modules/control/control_component/controller_task_base/control_task_agent.cc similarity index 86% rename from modules/control/controllers/control_task_base/control_task_agent.cc rename to modules/control/control_component/controller_task_base/control_task_agent.cc index 172ba6935dd..4e17bcb2241 100644 --- a/modules/control/controllers/control_task_base/control_task_agent.cc +++ b/modules/control/control_component/controller_task_base/control_task_agent.cc @@ -14,10 +14,12 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/control_task_agent.h" +#include "modules/control/control_component/controller_task_base/control_task_agent.h" + #include -#include "cyber/plugin_manager/plugin_manager.h" + #include "cyber/common/log.h" +#include "cyber/plugin_manager/plugin_manager.h" #include "cyber/time/clock.h" #include "modules/control/control_component/common/control_gflags.h" @@ -30,7 +32,7 @@ using apollo::cyber::Clock; using apollo::cyber::plugin_manager::PluginManager; Status ControlTaskAgent::Init(std::shared_ptr injector, - const ControlPipeline& control_pipeline) { + const ControlPipeline &control_pipeline) { if (control_pipeline.controller_size() == 0) { AERROR << "control_pipeline is empty"; return Status(ErrorCode::CONTROL_INIT_ERROR, "Empty control_pipeline"); @@ -39,13 +41,12 @@ Status ControlTaskAgent::Init(std::shared_ptr injector, injector_ = injector; for (int i = 0; i < control_pipeline.controller_size(); i++) { auto controller = PluginManager::Instance()->CreateInstance( - "apollo::control::" + - control_pipeline.controller(i).type()); + "apollo::control::" + control_pipeline.controller(i).type()); if (!controller->Init(injector_).ok()) { - AERROR<< "Can not init controller" << controller->Name(); - return Status(ErrorCode::CONTROL_INIT_ERROR, - "Failed to init Controller:" + - control_pipeline.controller(i).name()); + AERROR << "Can not init controller" << controller->Name(); + return Status( + ErrorCode::CONTROL_INIT_ERROR, + "Failed to init Controller:" + control_pipeline.controller(i).name()); } controller_list_.push_back(controller); AINFO << "Controller <" << controller->Name() << "> init done!"; diff --git a/modules/control/controllers/control_task_base/control_task_agent.h b/modules/control/control_component/controller_task_base/control_task_agent.h similarity index 90% rename from modules/control/controllers/control_task_base/control_task_agent.h rename to modules/control/control_component/controller_task_base/control_task_agent.h index 8d602db88e1..600a65dba8d 100644 --- a/modules/control/controllers/control_task_base/control_task_agent.h +++ b/modules/control/control_component/controller_task_base/control_task_agent.h @@ -24,12 +24,13 @@ #include #include -#include "modules/common/util/factory.h" -#include "modules/control/controllers/control_task_base/common/dependency_injector.h" -#include "modules/control/controllers/control_task_base/control_task.h" #include "modules/common_msgs/control_msgs/control_cmd.pb.h" -#include "modules/control/control_component/proto/pipeline.pb.h" #include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/control_component/proto/pipeline.pb.h" + +#include "modules/common/util/factory.h" +#include "modules/control/control_component/controller_task_base/common/dependency_injector.h" +#include "modules/control/control_component/controller_task_base/control_task.h" /** * @namespace apollo::control @@ -51,7 +52,7 @@ class ControlTaskAgent { * @return Status initialization status */ common::Status Init(std::shared_ptr injector, - const ControlPipeline& control_pipeline); + const ControlPipeline &control_pipeline); /** * @brief compute control command based on current vehicle status diff --git a/modules/control/controllers/control_task_base/integration_tests/BUILD b/modules/control/control_component/controller_task_base/integration_tests/BUILD similarity index 83% rename from modules/control/controllers/control_task_base/integration_tests/BUILD rename to modules/control/control_component/controller_task_base/integration_tests/BUILD index 0c560b9d4c5..eaff3e474ba 100644 --- a/modules/control/controllers/control_task_base/integration_tests/BUILD +++ b/modules/control/control_component/controller_task_base/integration_tests/BUILD @@ -1,10 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "control_test_base", srcs = ["control_test_base.cc"], hdrs = ["control_test_base.h"], @@ -14,12 +13,12 @@ cc_library( "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/control/control_component:control_component_lib", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base:control_task_agent", + "//modules/control/control_component/controller_task_base:control_task_agent", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "simple_control_test", size = "small", srcs = ["simple_control_test.cc"], @@ -31,7 +30,7 @@ cc_test( ], ) -cc_test( +apollo_cc_test( name = "relative_position_test", size = "small", srcs = ["relative_position_test.cc"], diff --git a/modules/control/controllers/control_task_base/integration_tests/control_test_base.cc b/modules/control/control_component/controller_task_base/integration_tests/control_test_base.cc similarity index 97% rename from modules/control/controllers/control_task_base/integration_tests/control_test_base.cc rename to modules/control/control_component/controller_task_base/integration_tests/control_test_base.cc index 8c256a5551c..7c1f1fb0908 100644 --- a/modules/control/controllers/control_task_base/integration_tests/control_test_base.cc +++ b/modules/control/control_component/controller_task_base/integration_tests/control_test_base.cc @@ -14,16 +14,18 @@ * limitations under the License. *****************************************************************************/ -#include "modules/control/controllers/control_task_base/integration_tests/control_test_base.h" +#include "modules/control/control_component/controller_task_base/integration_tests/control_test_base.h" #include -#include "cyber/common/file.h" #include "google/protobuf/text_format.h" -#include "modules/common/util/util.h" -#include "modules/control/controllers/control_task_base/common/dependency_injector.h" + #include "modules/common_msgs/control_msgs/control_cmd.pb.h" +#include "cyber/common/file.h" +#include "modules/common/util/util.h" +#include "modules/control/control_component/controller_task_base/common/dependency_injector.h" + DEFINE_string(test_chassis_file, "", "chassis input file"); DEFINE_string(test_data_dir, "", "the test data folder"); DEFINE_string(test_localization_file, "", "localization input file"); diff --git a/modules/control/controllers/control_task_base/integration_tests/control_test_base.h b/modules/control/control_component/controller_task_base/integration_tests/control_test_base.h similarity index 99% rename from modules/control/controllers/control_task_base/integration_tests/control_test_base.h rename to modules/control/control_component/controller_task_base/integration_tests/control_test_base.h index 49ee1fe13c0..e97da04db3e 100644 --- a/modules/control/controllers/control_task_base/integration_tests/control_test_base.h +++ b/modules/control/control_component/controller_task_base/integration_tests/control_test_base.h @@ -19,9 +19,11 @@ #include #include "gtest/gtest.h" + +#include "modules/common_msgs/control_msgs/control_cmd.pb.h" + #include "modules/control/control_component/common/control_gflags.h" #include "modules/control/control_component/control_component.h" -#include "modules/common_msgs/control_msgs/control_cmd.pb.h" #define RUN_GOLDEN_TEST \ { \ diff --git a/modules/control/controllers/control_task_base/integration_tests/relative_position_test.cc b/modules/control/control_component/controller_task_base/integration_tests/relative_position_test.cc similarity index 94% rename from modules/control/controllers/control_task_base/integration_tests/relative_position_test.cc rename to modules/control/control_component/controller_task_base/integration_tests/relative_position_test.cc index add66f3d4bb..25f3eed683b 100644 --- a/modules/control/controllers/control_task_base/integration_tests/relative_position_test.cc +++ b/modules/control/control_component/controller_task_base/integration_tests/relative_position_test.cc @@ -14,15 +14,16 @@ * limitations under the License. *****************************************************************************/ -#include "cyber/common/log.h" #include "gmock/gmock.h" -#include "google/protobuf/text_format.h" #include "gtest/gtest.h" +#include "google/protobuf/text_format.h" + +#include "cyber/common/log.h" #include "cyber/time/clock.h" #include "modules/common/util/util.h" #include "modules/control/control_component/common/control_gflags.h" -#include "modules/control/controllers/control_task_base/integration_tests/control_test_base.h" +#include "modules/control/control_component/controller_task_base/integration_tests/control_test_base.h" namespace apollo { namespace control { diff --git a/modules/control/controllers/control_task_base/integration_tests/simple_control_test.cc b/modules/control/control_component/controller_task_base/integration_tests/simple_control_test.cc similarity index 96% rename from modules/control/controllers/control_task_base/integration_tests/simple_control_test.cc rename to modules/control/control_component/controller_task_base/integration_tests/simple_control_test.cc index 0c81ccfba0c..1fcbc12ab59 100644 --- a/modules/control/controllers/control_task_base/integration_tests/simple_control_test.cc +++ b/modules/control/control_component/controller_task_base/integration_tests/simple_control_test.cc @@ -14,15 +14,16 @@ * limitations under the License. *****************************************************************************/ -#include "cyber/common/log.h" #include "gmock/gmock.h" -#include "google/protobuf/text_format.h" #include "gtest/gtest.h" +#include "google/protobuf/text_format.h" + +#include "cyber/common/log.h" #include "cyber/time/clock.h" #include "modules/common/util/util.h" #include "modules/control/control_component/common/control_gflags.h" -#include "modules/control/controllers/control_task_base/integration_tests/control_test_base.h" +#include "modules/control/control_component/controller_task_base/integration_tests/control_test_base.h" namespace apollo { namespace control { diff --git a/modules/control/controllers/control_task_base/proto/BUILD b/modules/control/control_component/controller_task_base/proto/BUILD similarity index 100% rename from modules/control/controllers/control_task_base/proto/BUILD rename to modules/control/control_component/controller_task_base/proto/BUILD diff --git a/modules/control/controllers/control_task_base/proto/calibration_table.proto b/modules/control/control_component/controller_task_base/proto/calibration_table.proto similarity index 100% rename from modules/control/controllers/control_task_base/proto/calibration_table.proto rename to modules/control/control_component/controller_task_base/proto/calibration_table.proto diff --git a/modules/control/controllers/control_task_base/proto/gain_scheduler_conf.proto b/modules/control/control_component/controller_task_base/proto/gain_scheduler_conf.proto similarity index 100% rename from modules/control/controllers/control_task_base/proto/gain_scheduler_conf.proto rename to modules/control/control_component/controller_task_base/proto/gain_scheduler_conf.proto diff --git a/modules/control/controllers/control_task_base/proto/leadlag_conf.proto b/modules/control/control_component/controller_task_base/proto/leadlag_conf.proto similarity index 100% rename from modules/control/controllers/control_task_base/proto/leadlag_conf.proto rename to modules/control/control_component/controller_task_base/proto/leadlag_conf.proto diff --git a/modules/control/controllers/control_task_base/proto/mrac_conf.proto b/modules/control/control_component/controller_task_base/proto/mrac_conf.proto similarity index 100% rename from modules/control/controllers/control_task_base/proto/mrac_conf.proto rename to modules/control/control_component/controller_task_base/proto/mrac_conf.proto diff --git a/modules/control/controllers/control_task_base/proto/pid_conf.proto b/modules/control/control_component/controller_task_base/proto/pid_conf.proto similarity index 100% rename from modules/control/controllers/control_task_base/proto/pid_conf.proto rename to modules/control/control_component/controller_task_base/proto/pid_conf.proto diff --git a/modules/control/control_component/cyberfile.xml b/modules/control/control_component/cyberfile.xml index 3864c6a717a..b4c5f436ca3 100644 --- a/modules/control/control_component/cyberfile.xml +++ b/modules/control/control_component/cyberfile.xml @@ -13,10 +13,9 @@ https://github.com/ApolloAuto/apollo/issues module - //modules/control + //modules/control/control_component cyber - control-controllers-control-task-base common localization common-msgs diff --git a/modules/control/control_component/submodules/BUILD b/modules/control/control_component/submodules/BUILD index de061882d85..4c608ba2ae7 100644 --- a/modules/control/control_component/submodules/BUILD +++ b/modules/control/control_component/submodules/BUILD @@ -1,26 +1,11 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary", "apollo_cc_library") package(default_visibility = ["//visibility:public"]) PREPROCESS_SUB_COPTS = ["-DMODULE_NAME=\\\"preprocessor_submodule\\\""] -# install( -# name = "install", -# library_dest = "control/lib", -# targets = [ -# ":control_module.so", -# ":preprocessor_submodule.so", -# ":mpc_controller_submodule.so", -# ":lat_lon_controller_submodule.so", -# ":postprocessor_submodule.so", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_library( +apollo_cc_library( name = "control_module_lib", deps = [ ":lat_lon_controller_submodule_lib", @@ -28,17 +13,16 @@ cc_library( ":postprocessor_submodule_lib", ":preprocessor_submodule_lib", ], - alwayslink = True, ) -cc_binary( +apollo_cc_binary( name = "control_module.so", linkshared = True, linkstatic = True, deps = [":control_module_lib"], ) -cc_library( +apollo_cc_library( name = "preprocessor_submodule_lib", srcs = ["preprocessor_submodule.cc"], hdrs = ["preprocessor_submodule.h"], @@ -50,27 +34,26 @@ cc_library( "//modules/common/latency_recorder", "//modules/common/monitor_log", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state:vehicle_state_provider", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base/common:dependency_injector", + "//modules/control/control_component/controller_task_base/common:dependency_injector", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "//modules/control/control_component/proto:preprocessor_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", ], - alwayslink = True ) -cc_binary( +apollo_cc_binary( name = "preprocessor_submodule.so", linkshared = True, linkstatic = True, deps = [":preprocessor_submodule_lib"], ) -cc_library( +apollo_cc_library( name = "mpc_controller_submodule_lib", srcs = ["mpc_controller_submodule.cc"], hdrs = ["mpc_controller_submodule.h"], @@ -82,11 +65,11 @@ cc_library( "//modules/common/latency_recorder", "//modules/common/monitor_log", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state:vehicle_state_provider", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base:control_task", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", + "//modules/control/control_component/controller_task_base:control_task", + "//modules/control/control_component/controller_task_base/proto:calibration_table_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "//modules/control/control_component/proto:preprocessor_cc_proto", @@ -94,17 +77,16 @@ cc_library( "//modules/common_msgs/planning_msgs:planning_cc_proto", "@com_github_gflags_gflags//:gflags", ], - alwayslink = True, ) -cc_binary( +apollo_cc_binary( name = "mpc_controller_submodule.so", linkshared = True, linkstatic = True, deps = [":mpc_controller_submodule_lib"], ) -cc_library( +apollo_cc_library( name = "lat_lon_controller_submodule_lib", srcs = ["lat_lon_controller_submodule.cc"], hdrs = ["lat_lon_controller_submodule.h"], @@ -115,25 +97,24 @@ cc_library( "//modules/common/latency_recorder", "//modules/common/monitor_log", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state:vehicle_state_provider", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base:control_task", + "//modules/control/control_component/controller_task_base:control_task", "//modules/control/control_component/proto:local_view_cc_proto", "//modules/control/control_component/proto:preprocessor_cc_proto", ], - alwayslink = True, ) -cc_binary( +apollo_cc_binary( name = "lat_lon_controller_submodule.so", linkshared = True, linkstatic = True, deps = [":lat_lon_controller_submodule_lib"], ) -cc_library( +apollo_cc_library( name = "postprocessor_submodule_lib", srcs = ["postprocessor_submodule.cc"], hdrs = ["postprocessor_submodule.h"], @@ -144,21 +125,20 @@ cc_library( "//modules/common/latency_recorder", "//modules/common/monitor_log", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state:vehicle_state_provider", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base:control_task", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", + "//modules/control/control_component/controller_task_base:control_task", + "//modules/control/control_component/controller_task_base/proto:calibration_table_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "//modules/control/control_component/proto:preprocessor_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", "@com_github_gflags_gflags//:gflags", ], - alwayslink = True, ) -cc_binary( +apollo_cc_binary( name = "postprocessor_submodule.so", linkshared = True, linkstatic = True, diff --git a/modules/control/control_component/submodules/lat_lon_controller_submodule.cc b/modules/control/control_component/submodules/lat_lon_controller_submodule.cc index 7b204e1d9e1..f76aadb9c75 100644 --- a/modules/control/control_component/submodules/lat_lon_controller_submodule.cc +++ b/modules/control/control_component/submodules/lat_lon_controller_submodule.cc @@ -15,8 +15,8 @@ *****************************************************************************/ #include "modules/control/control_component/submodules/lat_lon_controller_submodule.h" -#include "cyber/plugin_manager/plugin_manager.h" +#include "cyber/plugin_manager/plugin_manager.h" #include "cyber/time/clock.h" #include "modules/common/adapters/adapter_gflags.h" #include "modules/common/latency_recorder/latency_recorder.h" @@ -46,7 +46,7 @@ bool LatLonControllerSubmodule::Init() { injector_ = std::make_shared(); lateral_controller_ = PluginManager::Instance()->CreateInstance( - "apollo::control::LatController"); + "apollo::control::LatController"); if (!lateral_controller_->Init(injector_).ok()) { monitor_logger_buffer_.ERROR( "Control init LAT controller failed! Stopping..."); @@ -55,7 +55,7 @@ bool LatLonControllerSubmodule::Init() { longitudinal_controller_ = PluginManager::Instance()->CreateInstance( - "apollo::control::LonController"); + "apollo::control::LonController"); if (!longitudinal_controller_->Init(injector_).ok()) { monitor_logger_buffer_.ERROR( "Control init LON controller failed! Stopping..."); diff --git a/modules/control/control_component/submodules/lat_lon_controller_submodule.h b/modules/control/control_component/submodules/lat_lon_controller_submodule.h index fc1273044e6..b3928622eb7 100644 --- a/modules/control/control_component/submodules/lat_lon_controller_submodule.h +++ b/modules/control/control_component/submodules/lat_lon_controller_submodule.h @@ -19,18 +19,19 @@ #include #include -#include "cyber/class_loader/class_loader.h" -#include "cyber/component/component.h" -#include "cyber/component/timer_component.h" #include "modules/common_msgs/chassis_msgs/chassis.pb.h" -#include "modules/common/monitor_log/monitor_log_buffer.h" -#include "modules/common/util/util.h" -#include "modules/control/controllers/control_task_base/control_task.h" #include "modules/common_msgs/control_msgs/control_cmd.pb.h" #include "modules/common_msgs/control_msgs/pad_msg.pb.h" -#include "modules/control/control_component/proto/preprocessor.pb.h" #include "modules/common_msgs/localization_msgs/localization.pb.h" #include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/control_component/proto/preprocessor.pb.h" + +#include "cyber/class_loader/class_loader.h" +#include "cyber/component/component.h" +#include "cyber/component/timer_component.h" +#include "modules/common/monitor_log/monitor_log_buffer.h" +#include "modules/common/util/util.h" +#include "modules/control/control_component/controller_task_base/control_task.h" namespace apollo { namespace control { diff --git a/modules/control/control_component/submodules/mpc_controller_submodule.cc b/modules/control/control_component/submodules/mpc_controller_submodule.cc index 5c95cad4a1b..355c9363ad9 100644 --- a/modules/control/control_component/submodules/mpc_controller_submodule.cc +++ b/modules/control/control_component/submodules/mpc_controller_submodule.cc @@ -15,8 +15,8 @@ *****************************************************************************/ #include "modules/control/control_component/submodules/mpc_controller_submodule.h" -#include "cyber/plugin_manager/plugin_manager.h" +#include "cyber/plugin_manager/plugin_manager.h" #include "cyber/time/clock.h" #include "modules/common/adapters/adapter_gflags.h" #include "modules/common/latency_recorder/latency_recorder.h" @@ -32,9 +32,9 @@ using apollo::common::Status; using apollo::common::StatusPb; using apollo::common::VehicleStateProvider; using apollo::cyber::Clock; +using apollo::cyber::plugin_manager::PluginManager; using apollo::localization::LocalizationEstimate; using apollo::planning::ADCTrajectory; -using apollo::cyber::plugin_manager::PluginManager; MPCControllerSubmodule::MPCControllerSubmodule() : monitor_logger_buffer_(common::monitor::MonitorMessageItem::CONTROL) {} @@ -49,7 +49,7 @@ bool MPCControllerSubmodule::Init() { injector_ = std::make_shared(); mpc_controller_ = PluginManager::Instance()->CreateInstance( - "apollo::control::MPCController"); + "apollo::control::MPCController"); if (!mpc_controller_->Init(injector_).ok()) { monitor_logger_buffer_.ERROR( diff --git a/modules/control/control_component/submodules/mpc_controller_submodule.h b/modules/control/control_component/submodules/mpc_controller_submodule.h index 9d16211bcb8..7f46a9cd6c5 100644 --- a/modules/control/control_component/submodules/mpc_controller_submodule.h +++ b/modules/control/control_component/submodules/mpc_controller_submodule.h @@ -19,20 +19,21 @@ #include #include -#include "cyber/class_loader/class_loader.h" -#include "cyber/component/component.h" -#include "cyber/component/timer_component.h" #include "modules/common_msgs/chassis_msgs/chassis.pb.h" -#include "modules/common/monitor_log/monitor_log_buffer.h" -#include "modules/common/util/util.h" -#include "modules/control/controllers/control_task_base/common/dependency_injector.h" -#include "modules/control/controllers/control_task_base/control_task.h" -#include "modules/control/controllers/control_task_base/proto/calibration_table.pb.h" #include "modules/common_msgs/control_msgs/control_cmd.pb.h" #include "modules/common_msgs/control_msgs/pad_msg.pb.h" -#include "modules/control/control_component/proto/preprocessor.pb.h" #include "modules/common_msgs/localization_msgs/localization.pb.h" #include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/control_component/controller_task_base/proto/calibration_table.pb.h" +#include "modules/control/control_component/proto/preprocessor.pb.h" + +#include "cyber/class_loader/class_loader.h" +#include "cyber/component/component.h" +#include "cyber/component/timer_component.h" +#include "modules/common/monitor_log/monitor_log_buffer.h" +#include "modules/common/util/util.h" +#include "modules/control/control_component/controller_task_base/common/dependency_injector.h" +#include "modules/control/control_component/controller_task_base/control_task.h" namespace apollo { namespace control { diff --git a/modules/control/control_component/submodules/postprocessor_submodule.cc b/modules/control/control_component/submodules/postprocessor_submodule.cc index 510c24bd2f3..ae407e0b19a 100644 --- a/modules/control/control_component/submodules/postprocessor_submodule.cc +++ b/modules/control/control_component/submodules/postprocessor_submodule.cc @@ -23,7 +23,6 @@ #include #include "cyber/time/clock.h" - #include "modules/common/adapters/adapter_gflags.h" #include "modules/common/latency_recorder/latency_recorder.h" #include "modules/control/control_component/common/control_gflags.h" diff --git a/modules/control/control_component/submodules/postprocessor_submodule.h b/modules/control/control_component/submodules/postprocessor_submodule.h index fd6d1ece469..60f518b7378 100644 --- a/modules/control/control_component/submodules/postprocessor_submodule.h +++ b/modules/control/control_component/submodules/postprocessor_submodule.h @@ -21,18 +21,19 @@ #include #include -#include "cyber/class_loader/class_loader.h" -#include "cyber/component/component.h" -#include "cyber/component/timer_component.h" #include "modules/common_msgs/chassis_msgs/chassis.pb.h" -#include "modules/common/monitor_log/monitor_log_buffer.h" -#include "modules/common/util/util.h" -#include "modules/control/controllers/control_task_base/control_task.h" #include "modules/common_msgs/control_msgs/control_cmd.pb.h" #include "modules/common_msgs/control_msgs/pad_msg.pb.h" -#include "modules/control/control_component/proto/preprocessor.pb.h" #include "modules/common_msgs/localization_msgs/localization.pb.h" #include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/control_component/proto/preprocessor.pb.h" + +#include "cyber/class_loader/class_loader.h" +#include "cyber/component/component.h" +#include "cyber/component/timer_component.h" +#include "modules/common/monitor_log/monitor_log_buffer.h" +#include "modules/common/util/util.h" +#include "modules/control/control_component/controller_task_base/control_task.h" namespace apollo { namespace control { diff --git a/modules/control/control_component/submodules/preprocessor_submodule.cc b/modules/control/control_component/submodules/preprocessor_submodule.cc index 2c1a791e49b..46384cad509 100644 --- a/modules/control/control_component/submodules/preprocessor_submodule.cc +++ b/modules/control/control_component/submodules/preprocessor_submodule.cc @@ -219,8 +219,7 @@ Status PreprocessorSubmodule::CheckInput(LocalView *local_view) { { std::lock_guard lock(mutex_); for (auto trajectory_point : local_view->trajectory().trajectory_point()) { - if (std::abs(trajectory_point.v()) < - FLAGS_minimum_speed_resolution && + if (std::abs(trajectory_point.v()) < FLAGS_minimum_speed_resolution && std::abs(trajectory_point.a()) < FLAGS_max_acceleration_when_stopped) { trajectory_point.set_v(0.0); @@ -235,8 +234,7 @@ Status PreprocessorSubmodule::CheckInput(LocalView *local_view) { } Status PreprocessorSubmodule::CheckTimestamp(const LocalView &local_view) { - if (!FLAGS_enable_input_timestamp_check || - FLAGS_is_control_test_mode) { + if (!FLAGS_enable_input_timestamp_check || FLAGS_is_control_test_mode) { ADEBUG << "Skip input timestamp check by gflags."; return Status::OK(); } @@ -245,8 +243,8 @@ Status PreprocessorSubmodule::CheckTimestamp(const LocalView &local_view) { double localization_diff = current_timestamp - local_view.localization().header().timestamp_sec(); - if (localization_diff > (FLAGS_max_localization_miss_num * - FLAGS_localization_period)) { + if (localization_diff > + (FLAGS_max_localization_miss_num * FLAGS_localization_period)) { AERROR << "Localization msg lost for " << std::setprecision(6) << localization_diff << "s"; monitor_logger_buffer_.ERROR("Localization msg lost"); @@ -256,8 +254,7 @@ Status PreprocessorSubmodule::CheckTimestamp(const LocalView &local_view) { double chassis_diff = current_timestamp - local_view.chassis().header().timestamp_sec(); - if (chassis_diff > (FLAGS_max_chassis_miss_num * - FLAGS_chassis_period)) { + if (chassis_diff > (FLAGS_max_chassis_miss_num * FLAGS_chassis_period)) { AERROR << "Chassis msg lost for " << std::setprecision(6) << chassis_diff << "s"; monitor_logger_buffer_.ERROR("Chassis msg lost"); @@ -267,8 +264,8 @@ Status PreprocessorSubmodule::CheckTimestamp(const LocalView &local_view) { double trajectory_diff = current_timestamp - local_view.trajectory().header().timestamp_sec(); - if (trajectory_diff > (FLAGS_max_planning_miss_num * - FLAGS_trajectory_period)) { + if (trajectory_diff > + (FLAGS_max_planning_miss_num * FLAGS_trajectory_period)) { AERROR << "Trajectory msg lost for " << std::setprecision(6) << trajectory_diff << "s"; monitor_logger_buffer_.ERROR("Trajectory msg lost"); diff --git a/modules/control/control_component/submodules/preprocessor_submodule.h b/modules/control/control_component/submodules/preprocessor_submodule.h index f76e8629e25..c0e18ae79ea 100644 --- a/modules/control/control_component/submodules/preprocessor_submodule.h +++ b/modules/control/control_component/submodules/preprocessor_submodule.h @@ -19,19 +19,20 @@ #include #include +#include "modules/common_msgs/chassis_msgs/chassis.pb.h" +#include "modules/common_msgs/control_msgs/control_cmd.pb.h" +#include "modules/common_msgs/control_msgs/pad_msg.pb.h" +#include "modules/common_msgs/localization_msgs/localization.pb.h" +#include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/control_component/proto/preprocessor.pb.h" + #include "cyber/class_loader/class_loader.h" #include "cyber/component/component.h" #include "cyber/component/timer_component.h" -#include "modules/common_msgs/chassis_msgs/chassis.pb.h" #include "modules/common/monitor_log/monitor_log_buffer.h" #include "modules/common/status/status.h" #include "modules/common/util/util.h" -#include "modules/control/controllers/control_task_base/common/dependency_injector.h" -#include "modules/common_msgs/control_msgs/control_cmd.pb.h" -#include "modules/common_msgs/control_msgs/pad_msg.pb.h" -#include "modules/control/control_component/proto/preprocessor.pb.h" -#include "modules/common_msgs/localization_msgs/localization.pb.h" -#include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/control_component/controller_task_base/common/dependency_injector.h" namespace apollo { namespace control { diff --git a/modules/control/control_component/testdata/conf/leadlag_conf.pb.txt b/modules/control/control_component/testdata/conf/leadlag_conf.pb.txt new file mode 100644 index 00000000000..26c709766ba --- /dev/null +++ b/modules/control/control_component/testdata/conf/leadlag_conf.pb.txt @@ -0,0 +1,4 @@ +innerstate_saturation_level: 1000 +alpha: 1.0 +beta: 0.8 +tau: 0.0 \ No newline at end of file diff --git a/modules/control/control_component/testdata/conf/mrac_conf.txt b/modules/control/control_component/testdata/conf/mrac_conf.txt new file mode 100644 index 00000000000..9aa50a54367 --- /dev/null +++ b/modules/control/control_component/testdata/conf/mrac_conf.txt @@ -0,0 +1,10 @@ +mrac_model_order: 1 +reference_time_constant: 0.01 +reference_natural_frequency: 10 +reference_damping_ratio: 0.9 +adaption_state_gain: 1.0 +adaption_desired_gain: 1.0 +adaption_nonlinear_gain: 1.0 +adaption_matrix_p: 1.0 +mrac_saturation_level: 1.0 +anti_windup_compensation_gain: 0.0 diff --git a/modules/control/control_component/testdata/conf/speed_pid_conf.txt b/modules/control/control_component/testdata/conf/speed_pid_conf.txt new file mode 100644 index 00000000000..006377e5638 --- /dev/null +++ b/modules/control/control_component/testdata/conf/speed_pid_conf.txt @@ -0,0 +1,5 @@ +integrator_enable: true +integrator_saturation_level: 0.3 +kp: 0.4 +ki: 0.2 +kd: 0.0 diff --git a/modules/control/control_component/testdata/conf/station_pid_conf.txt b/modules/control/control_component/testdata/conf/station_pid_conf.txt new file mode 100644 index 00000000000..cbcdc7e62f6 --- /dev/null +++ b/modules/control/control_component/testdata/conf/station_pid_conf.txt @@ -0,0 +1,5 @@ +integrator_enable: true +integrator_saturation_level: 0.3 +kp: 0.3 +ki: 0.0 +kd: 0.0 diff --git a/modules/control/control_component/tools/BUILD b/modules/control/control_component/tools/BUILD index e34639b6c68..cd37d68d346 100644 --- a/modules/control/control_component/tools/BUILD +++ b/modules/control/control_component/tools/BUILD @@ -1,27 +1,15 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -# load("//tools/install:install.bzl", "install") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "control/bin", -# targets = [ -# ":control_tester", -# ":pad_terminal", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( +apollo_cc_binary( name = "control_tester", srcs = ["control_tester.cc"], deps = [ "//cyber", "//modules/common/adapters:adapter_gflags", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/control/control_component/common:control_gflags", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "//modules/common_msgs/dreamview_msgs:chart_cc_proto", @@ -56,14 +44,14 @@ cc_binary( linkstatic = True, ) -cc_binary( +apollo_cc_binary( name = "pad_terminal", srcs = ["pad_terminal.cc"], deps = [ "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common/util:util_tool", - "//modules/control/controllers/control_task_base/common", + "//modules/control/control_component/controller_task_base/common:controllers_control_task_base_common", "//modules/control/control_component/common:control_gflags", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "//modules/common_msgs/chassis_msgs:chassis_proto", diff --git a/modules/control/control_component/tools/control_tester.cc b/modules/control/control_component/tools/control_tester.cc index f35f3f3b675..cd05b2e9f0e 100644 --- a/modules/control/control_component/tools/control_tester.cc +++ b/modules/control/control_component/tools/control_tester.cc @@ -16,19 +16,19 @@ #include "gflags/gflags.h" +#include "modules/common_msgs/chassis_msgs/chassis.pb.h" +#include "modules/common_msgs/control_msgs/pad_msg.pb.h" +#include "modules/common_msgs/localization_msgs/localization.pb.h" +#include "modules/common_msgs/planning_msgs/planning.pb.h" + #include "cyber/common/file.h" #include "cyber/common/log.h" #include "cyber/cyber.h" #include "cyber/init.h" #include "cyber/time/rate.h" #include "cyber/time/time.h" - -#include "modules/common_msgs/chassis_msgs/chassis.pb.h" #include "modules/common/adapters/adapter_gflags.h" #include "modules/control/control_component/common/control_gflags.h" -#include "modules/common_msgs/control_msgs/pad_msg.pb.h" -#include "modules/common_msgs/localization_msgs/localization.pb.h" -#include "modules/common_msgs/planning_msgs/planning.pb.h" DEFINE_string( chassis_test_file, diff --git a/modules/control/control_component/tools/pad_terminal.cc b/modules/control/control_component/tools/pad_terminal.cc index 774fc2ce3d6..6b5edd4976b 100644 --- a/modules/control/control_component/tools/pad_terminal.cc +++ b/modules/control/control_component/tools/pad_terminal.cc @@ -14,16 +14,15 @@ * limitations under the License. *****************************************************************************/ +#include "modules/common_msgs/chassis_msgs/chassis.pb.h" +#include "modules/common_msgs/control_msgs/pad_msg.pb.h" + #include "cyber/common/log.h" #include "cyber/common/macros.h" #include "cyber/cyber.h" #include "cyber/init.h" -#include "cyber/time/time.h" - -#include "modules/common_msgs/chassis_msgs/chassis.pb.h" -#include "modules/common_msgs/control_msgs/pad_msg.pb.h" - #include "cyber/time/clock.h" +#include "cyber/time/time.h" #include "modules/common/adapters/adapter_gflags.h" #include "modules/common/util/message_util.h" #include "modules/control/control_component/common/control_gflags.h" @@ -85,8 +84,7 @@ class PadTerminal { is_first_emergency_mode = false; AINFO << "detect emergency mode."; } else { - int64_t diff = - Clock::Now().ToNanosecond() / 1e3 - count_start; + int64_t diff = Clock::Now().ToNanosecond() / 1e3 - count_start; if (diff > EMERGENCY_MODE_HOLD_TIME) { count_start = Clock::Now().ToNanosecond() / 1e3; waiting_reset = true; diff --git a/modules/control/controllers/control_task_base/BUILD b/modules/control/controllers/control_task_base/BUILD deleted file mode 100644 index 307cd19e0c3..00000000000 --- a/modules/control/controllers/control_task_base/BUILD +++ /dev/null @@ -1,78 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools/platform:build_defs.bzl", "if_gpu") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] - -cc_binary( - name = "libcontrol_task_agent.so", - srcs = ["control_task_agent.cc", "control_task_agent.h"], - linkshared = True, - linkstatic = True, - deps = [ - "control_task", - "//cyber", - "//modules/common/util:util_tool", - "//modules/control/controllers/control_task_base/common", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/control/control_component/proto:pipeline_cc_proto", - "//modules/control/control_component/common:control_gflags", - "@osqp", - ], -) - -cc_library( - name = "control_task_agent", - srcs = ["libcontrol_task_agent.so"], - hdrs = ["control_task_agent.h"], - copts = CONTROL_COPTS, - deps = [ - "control_task", - "//cyber", - "//modules/common/util:util_tool", - "//modules/control/controllers/control_task_base/common", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/control/control_component/proto:pipeline_cc_proto", - "//modules/control/control_component/common:control_gflags", - "@osqp", - ], -) - -cc_binary( - name = "libcontrol_task.so", - srcs = ["control_task.h"], - linkshared = True, - linkstatic = True, - deps = [ - "//modules/control/controllers/control_task_base/common", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", - "//cyber/plugin_manager:plugin_manager", - ], -) - -cc_library( - name = "control_task", - srcs = ["libcontrol_task.so"], - hdrs = ["control_task.h"], - copts = CONTROL_COPTS, - deps = [ - "//modules/control/controllers/control_task_base/common", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", - "//cyber/plugin_manager:plugin_manager", - ], -) - -filegroup( - name = "runtime_data", - srcs = glob([ - "conf/*.txt", - ]), -) - -apollo_package() -cpplint() diff --git a/modules/control/controllers/control_task_base/control-task-base.BUILD b/modules/control/controllers/control_task_base/control-task-base.BUILD deleted file mode 100644 index 69826b9afec..00000000000 --- a/modules/control/controllers/control_task_base/control-task-base.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "control_task_base", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/control/controllers/control_task_base", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/control/controllers/control_task_base/cyberfile.xml b/modules/control/controllers/control_task_base/cyberfile.xml deleted file mode 100644 index dcb3f135889..00000000000 --- a/modules/control/controllers/control_task_base/cyberfile.xml +++ /dev/null @@ -1,25 +0,0 @@ - - control-controllers-control-task-base - local - - controllers' basic class - - - Apollo - Apache License 2.0 - https://www.apollo.auto/ - https://github.com/ApolloAuto/apollo - https://github.com/ApolloAuto/apollo/issues - - module - //modules/control/controllers/control_task_base - - common - cyber - bazel-extend-tools - 3rd-rules-python - 3rd-grpc - 3rd-bazel-skylib - 3rd-rules-proto - 3rd-py - \ No newline at end of file diff --git a/modules/control/controllers/demo_control_task/BUILD b/modules/control/controllers/demo_control_task/BUILD index 01166ed42bd..4b1fcfc9149 100644 --- a/modules/control/controllers/demo_control_task/BUILD +++ b/modules/control/controllers/demo_control_task/BUILD @@ -1,7 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -12,27 +10,13 @@ filegroup( srcs = glob(["conf/*"]) ) -cyber_plugin_description( - name = "plugin_demo_control_task_description", - description = ":plugins.xml", - plugin = ":libdemo_control_task.so", -) - -cc_binary( +apollo_plugin( name = "libdemo_control_task.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"control\\\""], - deps = [":demo_control_task_lib"], -) - -cc_library( - name = "demo_control_task_lib", srcs = ["demo_control_task.cc"], hdrs = ["demo_control_task.h"], - copts = CONTROL_COPTS, + description = ":plugins.xml", deps = [ - "//modules/control/controllers/control_task_base:control_task", + "//modules/control/control_component/controller_task_base:control_task", "//modules/control/control_component/common:control_gflags", "//cyber", "//modules/common/status", @@ -47,7 +31,6 @@ cc_library( "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "@eigen", ], - alwayslink = True, ) apollo_package() diff --git a/modules/control/controllers/demo_control_task/control-controller-demo-control-task.BUILD b/modules/control/controllers/demo_control_task/control-controller-demo-control-task.BUILD deleted file mode 100644 index 62358a4aa2c..00000000000 --- a/modules/control/controllers/demo_control_task/control-controller-demo-control-task.BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "control-controller-demo-control-task", - includes = [ - "include", - ], - srcs = glob(["lib/*.so*"]), - hdrs = glob(["include/**/*"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) - -cpplint() \ No newline at end of file diff --git a/modules/control/controllers/demo_control_task/cyberfile.xml b/modules/control/controllers/demo_control_task/cyberfile.xml index 12b13603438..6523efa0d4a 100644 --- a/modules/control/controllers/demo_control_task/cyberfile.xml +++ b/modules/control/controllers/demo_control_task/cyberfile.xml @@ -6,15 +6,14 @@ apollo-support@baidu.com module - //modules/control/controllers/demo-control-task + //modules/control/controllers/demo_control_task Apache License 2.0 Apollo bazel-extend-tools control - control-controllers-control-task-base common common-msgs 3rd-eigen3 3rd-absl bazel - \ No newline at end of file + diff --git a/modules/control/controllers/demo_control_task/demo_control_task.cc b/modules/control/controllers/demo_control_task/demo_control_task.cc index 15a1f165f0e..f3ff3772ade 100644 --- a/modules/control/controllers/demo_control_task/demo_control_task.cc +++ b/modules/control/controllers/demo_control_task/demo_control_task.cc @@ -35,8 +35,7 @@ DemoControlTask::DemoControlTask() : name_("demo control task") { DemoControlTask::~DemoControlTask() {} Status DemoControlTask::Init(std::shared_ptr injector) { - if (!ControlTask::LoadConfig( - &demo_control_task_conf_)) { + if (!ControlTask::LoadConfig(&demo_control_task_conf_)) { AERROR << "failed to load control conf"; return Status(ErrorCode::CONTROL_INIT_ERROR, "failed to load lat control_conf"); @@ -49,9 +48,7 @@ Status DemoControlTask::Init(std::shared_ptr injector) { void DemoControlTask::Stop() {} -Status DemoControlTask::Reset() { - return Status::OK(); -} +Status DemoControlTask::Reset() { return Status::OK(); } std::string DemoControlTask::Name() const { return name_; } @@ -63,12 +60,11 @@ Status DemoControlTask::ComputeControlCommand( auto debug = cmd->mutable_debug()->mutable_simple_lon_debug(); double controller_calculate_acceleration = cmd->acceleration(); - double command_acceleration = abs(controller_calculate_acceleration) < - low_bound_acceleration_ ? - controller_calculate_acceleration / - abs(controller_calculate_acceleration) * - low_bound_acceleration_ : - controller_calculate_acceleration; + double command_acceleration = + abs(controller_calculate_acceleration) < low_bound_acceleration_ + ? controller_calculate_acceleration / + abs(controller_calculate_acceleration) * low_bound_acceleration_ + : controller_calculate_acceleration; cmd->set_acceleration(command_acceleration); debug->set_acceleration_cmd(command_acceleration); diff --git a/modules/control/controllers/demo_control_task/demo_control_task.h b/modules/control/controllers/demo_control_task/demo_control_task.h index eeddee02d15..f7ccf52bb3d 100644 --- a/modules/control/controllers/demo_control_task/demo_control_task.h +++ b/modules/control/controllers/demo_control_task/demo_control_task.h @@ -24,11 +24,12 @@ #include #include #include + #include "modules/common_msgs/config_msgs/vehicle_config.pb.h" +#include "modules/control/controllers/demo_control_task/proto/demo_control_task_conf.pb.h" #include "cyber/plugin_manager/plugin_manager.h" -#include "modules/control/controllers/demo_control_task/proto/demo_control_task_conf.pb.h" -#include "modules/control/controllers/control_task_base/control_task.h" +#include "modules/control/control_component/controller_task_base/control_task.h" /** * @namespace apollo::control @@ -40,7 +41,8 @@ namespace control { /** * @class DemoControlTask * - * @brief DemoControlTask: Set the acceleration to 2 when the vehicle acceleration is less than 3. + * @brief DemoControlTask: Set the acceleration to 2 when the vehicle + * acceleration is less than 3. */ class DemoControlTask : public ControlTask { public: diff --git a/modules/control/controllers/lat_based_lqr_controller/BUILD b/modules/control/controllers/lat_based_lqr_controller/BUILD index 3dc5050cba4..0d87ddb16cf 100644 --- a/modules/control/controllers/lat_based_lqr_controller/BUILD +++ b/modules/control/controllers/lat_based_lqr_controller/BUILD @@ -1,34 +1,17 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_test", "apollo_plugin") package(default_visibility = ["//visibility:public"]) CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] - -cyber_plugin_description( - name = "plugin_lat_controller_description", - description = ":plugins.xml", - plugin = ":liblat_controller.so", -) - -cc_binary( +apollo_plugin( name = "liblat_controller.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"control\\\""], - deps = [":lat_controller_lib"], -) - -cc_library( - name = "lat_controller_lib", srcs = ["lat_controller.cc"], hdrs = ["lat_controller.h"], - copts = CONTROL_COPTS, + description = ":plugins.xml", deps = [ - "//modules/control/controllers/control_task_base:control_task", + "//modules/control/control_component/controller_task_base:control_task", "//cyber", "//modules/common/configs:config_gflags", "//modules/common/configs:vehicle_config_helper", @@ -36,24 +19,23 @@ cc_library( "//modules/common/math", "//modules/common/status", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base/common:interpolation_1d", - "//modules/control/controllers/control_task_base/common:leadlag_controller", - "//modules/control/controllers/control_task_base/common:mrac_controller", - "//modules/control/controllers/control_task_base/common:trajectory_analyzer", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", + "//modules/control/control_component/controller_task_base/common:interpolation_1d", + "//modules/control/control_component/controller_task_base/common:leadlag_controller", + "//modules/control/control_component/controller_task_base/common:mrac_controller", + "//modules/control/control_component/controller_task_base/common:trajectory_analyzer", + "//modules/control/control_component/controller_task_base/proto:calibration_table_cc_proto", "//modules/control/controllers/lat_based_lqr_controller/proto:lat_based_lqr_controller_conf_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/control/controllers/control_task_base/proto:gain_scheduler_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:gain_scheduler_conf_cc_proto", "//modules/common_msgs/control_msgs:input_debug_cc_proto", - "//modules/control/controllers/control_task_base/proto:mrac_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:mrac_conf_cc_proto", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "@com_google_absl//:absl", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "lat_controller_test", size = "small", srcs = ["lat_controller_test.cc"], @@ -62,10 +44,10 @@ cc_test( deps = [ ":lat_controller_lib", "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state:vehicle_state_provider", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base:control_task", + "//modules/control/control_component/controller_task_base:control_task", "//modules/common_msgs/planning_msgs:planning_cc_proto", "@com_google_googletest//:gtest_main", ], diff --git a/modules/control/controllers/lat_based_lqr_controller/control-controller-lat-based-lqr-controller.BUILD b/modules/control/controllers/lat_based_lqr_controller/control-controller-lat-based-lqr-controller.BUILD deleted file mode 100644 index bc42dfd9b67..00000000000 --- a/modules/control/controllers/lat_based_lqr_controller/control-controller-lat-based-lqr-controller.BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "control-controller-lat-based-lqr-controller", - includes = [ - "include", - ], - srcs = glob(["lib/*.so*"]), - hdrs = glob(["include/**/*"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) - -cpplint() \ No newline at end of file diff --git a/modules/control/controllers/lat_based_lqr_controller/cyberfile.xml b/modules/control/controllers/lat_based_lqr_controller/cyberfile.xml index 99001908a46..fe4631dbe17 100644 --- a/modules/control/controllers/lat_based_lqr_controller/cyberfile.xml +++ b/modules/control/controllers/lat_based_lqr_controller/cyberfile.xml @@ -11,10 +11,9 @@ Apollo bazel-extend-tools control - control-controllers-control-task-base common common-msgs 3rd-eigen3 3rd-absl bazel - \ No newline at end of file + diff --git a/modules/control/controllers/lat_based_lqr_controller/lat_controller.cc b/modules/control/controllers/lat_based_lqr_controller/lat_controller.cc index df954db5d36..faccfe77e06 100644 --- a/modules/control/controllers/lat_based_lqr_controller/lat_controller.cc +++ b/modules/control/controllers/lat_based_lqr_controller/lat_controller.cc @@ -115,8 +115,7 @@ bool LatController::LoadControlConf() { vehicle_param_.max_steer_angle() / M_PI * 180; max_lat_acc_ = lat_based_lqr_controller_conf_.max_lateral_acceleration(); low_speed_bound_ = lat_based_lqr_controller_conf_.switch_speed(); - low_speed_window_ = - lat_based_lqr_controller_conf_.switch_speed_window(); + low_speed_window_ = lat_based_lqr_controller_conf_.switch_speed_window(); const double mass_fl = lat_based_lqr_controller_conf_.mass_fl(); const double mass_fr = lat_based_lqr_controller_conf_.mass_fr(); @@ -174,8 +173,8 @@ void LatController::InitializeFilters() { // Low pass filter std::vector den(3, 0.0); std::vector num(3, 0.0); - common::LpfCoefficients( - ts_, lat_based_lqr_controller_conf_.cutoff_freq(), &den, &num); + common::LpfCoefficients(ts_, lat_based_lqr_controller_conf_.cutoff_freq(), + &den, &num); digital_filter_.set_coefficients(den, num); lateral_error_filter_ = common::MeanFilter(static_cast( lat_based_lqr_controller_conf_.mean_filter_window_size())); @@ -185,7 +184,7 @@ void LatController::InitializeFilters() { Status LatController::Init(std::shared_ptr injector) { if (!ControlTask::LoadConfig( - &lat_based_lqr_controller_conf_)) { + &lat_based_lqr_controller_conf_)) { AERROR << "failed to load control conf"; return Status(ErrorCode::CONTROL_INIT_ERROR, "failed to load lat control_conf"); @@ -259,15 +258,14 @@ Status LatController::Init(std::shared_ptr injector) { LoadLatGainScheduler(); LogInitParameters(); - enable_leadlag_ = lat_based_lqr_controller_conf_ - .enable_reverse_leadlag_compensation(); + enable_leadlag_ = + lat_based_lqr_controller_conf_.enable_reverse_leadlag_compensation(); if (enable_leadlag_) { leadlag_controller_.Init( lat_based_lqr_controller_conf_.reverse_leadlag_conf(), ts_); } - enable_mrac_ = - lat_based_lqr_controller_conf_.enable_steer_mrac_control(); + enable_mrac_ = lat_based_lqr_controller_conf_.enable_steer_mrac_control(); if (enable_mrac_) { mrac_controller_.Init(lat_based_lqr_controller_conf_.steer_mrac_conf(), vehicle_param_.steering_latency_param(), ts_); @@ -465,8 +463,7 @@ Status LatController::ComputeControlCommand( lat_based_lqr_controller_conf_.reverse_matrix_q_size(); if (injector_->vehicle_state()->gear() == canbus::Chassis::GEAR_REVERSE) { for (int i = 0; i < reverse_q_param_size; ++i) { - matrix_q_(i, i) = - lat_based_lqr_controller_conf_.reverse_matrix_q(i); + matrix_q_(i, i) = lat_based_lqr_controller_conf_.reverse_matrix_q(i); } } else { for (int i = 0; i < q_param_size; ++i) { @@ -505,7 +502,7 @@ Status LatController::ComputeControlCommand( // Augment the feedback control on lateral error at the desired speed domain if (enable_leadlag_) { if (lat_based_lqr_controller_conf_ - .enable_feedback_augment_on_high_speed() || + .enable_feedback_augment_on_high_speed() || std::fabs(vehicle_state->linear_velocity()) < low_speed_bound_) { steer_angle_feedback_augment = leadlag_controller_.Control(-matrix_state_(0, 0), ts_) * 180 / M_PI * @@ -544,9 +541,8 @@ Status LatController::ComputeControlCommand( // Re-compute the steering command if the MRAC control is enabled, with steer // angle limitation and steer rate limitation if (enable_mrac_) { - const int mrac_model_order = lat_based_lqr_controller_conf_ - .steer_mrac_conf() - .mrac_model_order(); + const int mrac_model_order = + lat_based_lqr_controller_conf_.steer_mrac_conf().mrac_model_order(); Matrix steer_state = Matrix::Zero(mrac_model_order, 1); steer_state(0, 0) = chassis->steering_percentage(); if (mrac_model_order > 1) { @@ -596,7 +592,7 @@ Status LatController::ComputeControlCommand( // Check if the steer is locked and hence the previous steer angle should be // executed if (std::abs(vehicle_state->linear_velocity()) < - lat_based_lqr_controller_conf_.lock_steer_speed() && + lat_based_lqr_controller_conf_.lock_steer_speed() && (vehicle_state->gear() == canbus::Chassis::GEAR_DRIVE || vehicle_state->gear() == canbus::Chassis::GEAR_REVERSE) && chassis->driving_mode() == canbus::Chassis::COMPLETE_AUTO_DRIVE) { @@ -779,7 +775,7 @@ void LatController::ComputeLateralErrors( } else { if (FLAGS_use_navigation_mode && !lat_based_lqr_controller_conf_ - .enable_navigation_mode_position_update()) { + .enable_navigation_mode_position_update()) { target_point = trajectory_analyzer.QueryNearestPointByAbsoluteTime( Clock::NowInSeconds() + query_relative_time_); } else { diff --git a/modules/control/controllers/lat_based_lqr_controller/lat_controller.h b/modules/control/controllers/lat_based_lqr_controller/lat_controller.h index d866186a7f7..2dfb9fe7edf 100644 --- a/modules/control/controllers/lat_based_lqr_controller/lat_controller.h +++ b/modules/control/controllers/lat_based_lqr_controller/lat_controller.h @@ -26,17 +26,19 @@ #include #include "Eigen/Core" -#include "cyber/plugin_manager/plugin_manager.h" + #include "modules/common_msgs/config_msgs/vehicle_config.pb.h" #include "modules/control/controllers/lat_based_lqr_controller/proto/lat_based_lqr_controller_conf.pb.h" + +#include "cyber/plugin_manager/plugin_manager.h" #include "modules/common/filters/digital_filter.h" #include "modules/common/filters/digital_filter_coefficients.h" #include "modules/common/filters/mean_filter.h" -#include "modules/control/controllers/control_task_base/common/interpolation_1d.h" -#include "modules/control/controllers/control_task_base/common/leadlag_controller.h" -#include "modules/control/controllers/control_task_base/common/mrac_controller.h" -#include "modules/control/controllers/control_task_base/common/trajectory_analyzer.h" -#include "modules/control/controllers/control_task_base/control_task.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_1d.h" +#include "modules/control/control_component/controller_task_base/common/leadlag_controller.h" +#include "modules/control/control_component/controller_task_base/common/mrac_controller.h" +#include "modules/control/control_component/controller_task_base/common/trajectory_analyzer.h" +#include "modules/control/control_component/controller_task_base/control_task.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/lat_based_lqr_controller/lat_controller_test.cc b/modules/control/controllers/lat_based_lqr_controller/lat_controller_test.cc index 2a0f6ac1510..4f7696a6db6 100644 --- a/modules/control/controllers/lat_based_lqr_controller/lat_controller_test.cc +++ b/modules/control/controllers/lat_based_lqr_controller/lat_controller_test.cc @@ -16,16 +16,17 @@ #include "modules/control/controllers/lat_based_lqr_controller/lat_controller.h" -#include "cyber/common/file.h" -#include "cyber/common/log.h" #include "gmock/gmock.h" #include "gtest/gtest.h" +#include "modules/common_msgs/planning_msgs/planning.pb.h" + +#include "cyber/common/file.h" +#include "cyber/common/log.h" #include "cyber/time/clock.h" +#include "modules/common/configs/config_gflags.h" #include "modules/common/vehicle_state/vehicle_state_provider.h" #include "modules/control/control_component/common/control_gflags.h" -#include "modules/common/configs/config_gflags.h" -#include "modules/common_msgs/planning_msgs/planning.pb.h" namespace apollo { namespace control { diff --git a/modules/control/controllers/lat_based_lqr_controller/proto/BUILD b/modules/control/controllers/lat_based_lqr_controller/proto/BUILD index c47cdaccbb8..ec8fb7706bc 100644 --- a/modules/control/controllers/lat_based_lqr_controller/proto/BUILD +++ b/modules/control/controllers/lat_based_lqr_controller/proto/BUILD @@ -7,9 +7,9 @@ proto_library( name = "lat_based_lqr_controller_conf_proto", srcs = ["lat_based_lqr_controller_conf.proto"], deps=[ - "//modules/control/controllers/control_task_base/proto:gain_scheduler_conf_proto", - "//modules/control/controllers/control_task_base/proto:leadlag_conf_proto", - "//modules/control/controllers/control_task_base/proto:mrac_conf_proto", + "//modules/control/control_component/controller_task_base/proto:gain_scheduler_conf_proto", + "//modules/control/control_component/controller_task_base/proto:leadlag_conf_proto", + "//modules/control/control_component/controller_task_base/proto:mrac_conf_proto", ], ) diff --git a/modules/control/controllers/lat_based_lqr_controller/proto/lat_based_lqr_controller_conf.proto b/modules/control/controllers/lat_based_lqr_controller/proto/lat_based_lqr_controller_conf.proto index dc521ac621b..900412010d1 100644 --- a/modules/control/controllers/lat_based_lqr_controller/proto/lat_based_lqr_controller_conf.proto +++ b/modules/control/controllers/lat_based_lqr_controller/proto/lat_based_lqr_controller_conf.proto @@ -2,9 +2,9 @@ syntax = "proto2"; package apollo.control; -import "modules/control/controllers/control_task_base/proto/gain_scheduler_conf.proto"; -import "modules/control/controllers/control_task_base/proto/leadlag_conf.proto"; -import "modules/control/controllers/control_task_base/proto/mrac_conf.proto"; +import "modules/control/control_component/controller_task_base/proto/gain_scheduler_conf.proto"; +import "modules/control/control_component/controller_task_base/proto/leadlag_conf.proto"; +import "modules/control/control_component/controller_task_base/proto/mrac_conf.proto"; message LatBaseLqrControllerConf{ optional double ts = 1; // sample time (dt) 0.01 now, configurable diff --git a/modules/control/controllers/lon_based_pid_controller/BUILD b/modules/control/controllers/lon_based_pid_controller/BUILD index 25c983d5660..dd22549096d 100644 --- a/modules/control/controllers/lon_based_pid_controller/BUILD +++ b/modules/control/controllers/lon_based_pid_controller/BUILD @@ -1,56 +1,39 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_test", "apollo_plugin") package(default_visibility = ["//visibility:public"]) +CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] - -cyber_plugin_description( - name = "plugin_lon_controller_description", - description = ":plugins.xml", - plugin = ":liblon_controller.so", -) - -cc_binary( +apollo_plugin( name = "liblon_controller.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"control\\\""], - deps = [":lon_controller_lib"], -) - -cc_library( - name = "lon_controller_lib", srcs = ["lon_controller.cc"], hdrs = ["lon_controller.h"], - copts = ["-DMODULE_NAME=\\\"control\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common/configs:vehicle_config_helper", "//modules/common/filters", "//modules/common/status", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base:control_task", - "//modules/control/controllers/control_task_base/common:interpolation_2d", - "//modules/control/controllers/control_task_base/common:leadlag_controller", - "//modules/control/controllers/control_task_base/common:pid_controller", - "//modules/control/controllers/control_task_base/common:trajectory_analyzer", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", + "//modules/control/control_component/controller_task_base:control_task", + "//modules/control/control_component/controller_task_base/common:interpolation_2d", + "//modules/control/control_component/controller_task_base/common:leadlag_controller", + "//modules/control/control_component/controller_task_base/common:pid_controller", + "//modules/control/control_component/controller_task_base/common:trajectory_analyzer", + "//modules/control/control_component/controller_task_base/proto:calibration_table_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/control/controllers/control_task_base/proto:gain_scheduler_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:gain_scheduler_conf_cc_proto", "//modules/common_msgs/control_msgs:input_debug_cc_proto", "//modules/control/controllers/lon_based_pid_controller/proto:lon_based_pid_controller_conf_cc_proto", - "//modules/control/controllers/control_task_base/proto:mrac_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:mrac_conf_cc_proto", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "//modules/localization/common:localization_gflags", "@com_google_absl//:absl", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "lon_controller_test", size = "small", srcs = ["lon_controller_test.cc"], @@ -59,10 +42,10 @@ cc_test( deps = [ ":lon_controller_lib", "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state:vehicle_state_provider", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base:control_task", + "//modules/control/control_component/controller_task_base:control_task", "//modules/common_msgs/planning_msgs:planning_cc_proto", "@com_google_googletest//:gtest_main", ], diff --git a/modules/control/controllers/lon_based_pid_controller/control-controller-lon-based-pid-controller.BUILD b/modules/control/controllers/lon_based_pid_controller/control-controller-lon-based-pid-controller.BUILD deleted file mode 100644 index 76e8c95eaf4..00000000000 --- a/modules/control/controllers/lon_based_pid_controller/control-controller-lon-based-pid-controller.BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "control-controller-lon-based-pid-controller", - includes = [ - "include", - ], - srcs = glob(["lib/*.so*"]), - hdrs = glob(["include/**/*"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) - -cpplint() \ No newline at end of file diff --git a/modules/control/controllers/lon_based_pid_controller/cyberfile.xml b/modules/control/controllers/lon_based_pid_controller/cyberfile.xml index 487d0711fa9..86c5818f6c5 100644 --- a/modules/control/controllers/lon_based_pid_controller/cyberfile.xml +++ b/modules/control/controllers/lon_based_pid_controller/cyberfile.xml @@ -12,10 +12,9 @@ bazel-extend-tools control common - control-controllers-control-task-base common-msgs localization 3rd-eigen3 3rd-absl bazel - \ No newline at end of file + diff --git a/modules/control/controllers/lon_based_pid_controller/lon_controller.cc b/modules/control/controllers/lon_based_pid_controller/lon_controller.cc index 644e9f77e39..8654cd453f5 100644 --- a/modules/control/controllers/lon_based_pid_controller/lon_controller.cc +++ b/modules/control/controllers/lon_based_pid_controller/lon_controller.cc @@ -36,6 +36,7 @@ using apollo::common::Status; using apollo::common::TrajectoryPoint; using apollo::common::VehicleStateProvider; using apollo::cyber::Time; +using apollo::planning::ADCTrajectory; using apollo::planning::StopReasonCode; constexpr double GRA_ACC = 9.8; @@ -322,7 +323,7 @@ Status LonController::ComputeControlCommand( FLAGS_max_acceleration_when_stopped) && std::fabs(debug->preview_speed_reference()) <= vehicle_param_.max_abs_speed_when_stopped() && - (chassis->gear_location() == canbus::Chassis::GEAR_DRIVE)) { + trajectory_message_->trajectory_type() != ADCTrajectory::OPEN_SPACE) { if (debug->is_stop_reason_by_destination() || debug->is_stop_reason_by_prdestrian()) { debug->set_is_full_stop(true); @@ -338,7 +339,7 @@ Status LonController::ComputeControlCommand( if (std::abs(debug->path_remain()) < FLAGS_max_path_remain_when_stopped) { if (debug->is_stop_reason_by_destination() || debug->is_stop_reason_by_prdestrian() || - (chassis->gear_location() == canbus::Chassis::GEAR_REVERSE)) { + trajectory_message_->trajectory_type() == ADCTrajectory::OPEN_SPACE) { debug->set_is_full_stop(true); ADEBUG << "Current path remain distance: " << debug->path_remain() << " is within max_path_remain threshold: " diff --git a/modules/control/controllers/lon_based_pid_controller/lon_controller.h b/modules/control/controllers/lon_based_pid_controller/lon_controller.h index 63c6e15b0e6..9f54e4c9919 100644 --- a/modules/control/controllers/lon_based_pid_controller/lon_controller.h +++ b/modules/control/controllers/lon_based_pid_controller/lon_controller.h @@ -25,16 +25,17 @@ #include #include -#include "cyber/plugin_manager/plugin_manager.h" #include "modules/common_msgs/config_msgs/vehicle_config.pb.h" #include "modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.pb.h" + +#include "cyber/plugin_manager/plugin_manager.h" #include "modules/common/filters/digital_filter.h" #include "modules/common/filters/digital_filter_coefficients.h" -#include "modules/control/controllers/control_task_base/common/interpolation_2d.h" -#include "modules/control/controllers/control_task_base/common/leadlag_controller.h" -#include "modules/control/controllers/control_task_base/common/pid_controller.h" -#include "modules/control/controllers/control_task_base/common/trajectory_analyzer.h" -#include "modules/control/controllers/control_task_base/control_task.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_2d.h" +#include "modules/control/control_component/controller_task_base/common/leadlag_controller.h" +#include "modules/control/control_component/controller_task_base/common/pid_controller.h" +#include "modules/control/control_component/controller_task_base/common/trajectory_analyzer.h" +#include "modules/control/control_component/controller_task_base/control_task.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/lon_based_pid_controller/lon_controller_test.cc b/modules/control/controllers/lon_based_pid_controller/lon_controller_test.cc index 77e020af524..85648d00530 100644 --- a/modules/control/controllers/lon_based_pid_controller/lon_controller_test.cc +++ b/modules/control/controllers/lon_based_pid_controller/lon_controller_test.cc @@ -16,18 +16,20 @@ #include "modules/control/controllers/lon_based_pid_controller/lon_controller.h" -#include "cyber/common/file.h" -#include "cyber/common/log.h" #include "gmock/gmock.h" -#include "google/protobuf/text_format.h" #include "gtest/gtest.h" +#include "google/protobuf/text_format.h" + +#include "modules/common_msgs/planning_msgs/planning.pb.h" +#include "modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.pb.h" + +#include "cyber/common/file.h" +#include "cyber/common/log.h" #include "cyber/time/time.h" +#include "modules/common/configs/config_gflags.h" #include "modules/common/vehicle_state/vehicle_state_provider.h" #include "modules/control/control_component/common/control_gflags.h" -#include "modules/common/configs/config_gflags.h" -#include "modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.pb.h" -#include "modules/common_msgs/planning_msgs/planning.pb.h" namespace apollo { namespace control { @@ -46,11 +48,12 @@ class LonControllerTest : public ::testing::Test, LonController { virtual void SetUp() { FLAGS_v = 3; std::string controllers_dir = "/apollo/modules/control/controllers/"; - std::string control_conf_file = controllers_dir + + std::string control_conf_file = + controllers_dir + "lon_based_pid_controller/conf/controller_conf.pb.txt"; - ACHECK(cyber::common::GetProtoFromFile - (control_conf_file, &longitudinal_conf_)); + ACHECK(cyber::common::GetProtoFromFile(control_conf_file, + &longitudinal_conf_)); timestamp_ = Time::Now().ToSecond(); @@ -65,9 +68,7 @@ class LonControllerTest : public ::testing::Test, LonController { debug); } - common::Status Init() { - return LonController::Init(injector_); - } + common::Status Init() { return LonController::Init(injector_); } protected: LocalizationPb LoadLocalizationPb(const std::string &filename) { diff --git a/modules/control/controllers/lon_based_pid_controller/proto/BUILD b/modules/control/controllers/lon_based_pid_controller/proto/BUILD index 1bc5951e193..0b5a5ad60fd 100644 --- a/modules/control/controllers/lon_based_pid_controller/proto/BUILD +++ b/modules/control/controllers/lon_based_pid_controller/proto/BUILD @@ -7,9 +7,9 @@ proto_library( name = "lon_based_pid_controller_conf_proto", srcs = ["lon_based_pid_controller_conf.proto"], deps = [ - "//modules/control/controllers/control_task_base/proto:gain_scheduler_conf_proto", - "//modules/control/controllers/control_task_base/proto:leadlag_conf_proto", - "//modules/control/controllers/control_task_base/proto:pid_conf_proto", + "//modules/control/control_component/controller_task_base/proto:gain_scheduler_conf_proto", + "//modules/control/control_component/controller_task_base/proto:leadlag_conf_proto", + "//modules/control/control_component/controller_task_base/proto:pid_conf_proto", ], ) diff --git a/modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.proto b/modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.proto index 3625daa9a79..eda8a5d7850 100644 --- a/modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.proto +++ b/modules/control/controllers/lon_based_pid_controller/proto/lon_based_pid_controller_conf.proto @@ -1,8 +1,8 @@ syntax = "proto2"; -import "modules/control/controllers/control_task_base/proto/gain_scheduler_conf.proto"; -import "modules/control/controllers/control_task_base/proto/leadlag_conf.proto"; -import "modules/control/controllers/control_task_base/proto/pid_conf.proto"; +import "modules/control/control_component/controller_task_base/proto/gain_scheduler_conf.proto"; +import "modules/control/control_component/controller_task_base/proto/leadlag_conf.proto"; +import "modules/control/control_component/controller_task_base/proto/pid_conf.proto"; package apollo.control; diff --git a/modules/control/controllers/mpc_controller/BUILD b/modules/control/controllers/mpc_controller/BUILD index 1538d1086e7..1abe190e13b 100644 --- a/modules/control/controllers/mpc_controller/BUILD +++ b/modules/control/controllers/mpc_controller/BUILD @@ -1,31 +1,17 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_test", "apollo_plugin") package(default_visibility = ["//visibility:public"]) -cyber_plugin_description( - name = "plugin_mpc_controller_description", - description = ":plugins.xml", - plugin = ":libmpc_controller.so", -) +CONTROL_COPTS = ['-DMODULE_NAME=\\"control\\"'] -cc_binary( +apollo_plugin( name = "libmpc_controller.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"control\\\""], - deps = [":mpc_controller_lib"], -) - -cc_library( - name = "mpc_controller_lib", srcs = ["mpc_controller.cc"], hdrs = ["mpc_controller.h"], - copts = ["-DMODULE_NAME=\\\"control\\\""], + description = ":plugins.xml", deps = [ - "//modules/control/controllers/control_task_base:control_task", + "//modules/control/control_component/controller_task_base:control_task", "//cyber", "//modules/common/configs:vehicle_config_helper", "//modules/common/filters", @@ -33,23 +19,22 @@ cc_library( "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common/status", "//modules/control/control_component/common:control_gflags", - "//modules/control/controllers/control_task_base/common:interpolation_1d", - "//modules/control/controllers/control_task_base/common:interpolation_2d", - "//modules/control/controllers/control_task_base/common:trajectory_analyzer", - "//modules/control/controllers/control_task_base/proto:calibration_table_cc_proto", + "//modules/control/control_component/controller_task_base/common:interpolation_1d", + "//modules/control/control_component/controller_task_base/common:interpolation_2d", + "//modules/control/control_component/controller_task_base/common:trajectory_analyzer", + "//modules/control/control_component/controller_task_base/proto:calibration_table_cc_proto", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/control/controllers/control_task_base/proto:gain_scheduler_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:gain_scheduler_conf_cc_proto", "//modules/common_msgs/control_msgs:input_debug_cc_proto", "//modules/control/controllers/mpc_controller/proto:mpc_controller_cc_proto", - "//modules/control/controllers/control_task_base/proto:mrac_conf_cc_proto", + "//modules/control/control_component/controller_task_base/proto:mrac_conf_cc_proto", "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", "@com_google_absl//:absl", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "mpc_controller_test", size = "small", srcs = ["mpc_controller_test.cc"], @@ -59,7 +44,7 @@ cc_test( ], deps = [ ":mpc_controller_lib", - "//modules/control/controllers/control_task_base:control_task", + "//modules/control/control_component/controller_task_base:control_task", "@com_google_googletest//:gtest_main", ], ) diff --git a/modules/control/controllers/mpc_controller/control-controller-mpc-controller.BUILD b/modules/control/controllers/mpc_controller/control-controller-mpc-controller.BUILD deleted file mode 100644 index bf443ce7ac7..00000000000 --- a/modules/control/controllers/mpc_controller/control-controller-mpc-controller.BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "control-controller-mpc-controller", - includes = [ - "include", - ], - srcs = glob(["lib/*.so*"]), - hdrs = glob(["include/**/*"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) - -cpplint() \ No newline at end of file diff --git a/modules/control/controllers/mpc_controller/cyberfile.xml b/modules/control/controllers/mpc_controller/cyberfile.xml index d2627ebc495..6f87366de9e 100644 --- a/modules/control/controllers/mpc_controller/cyberfile.xml +++ b/modules/control/controllers/mpc_controller/cyberfile.xml @@ -11,10 +11,9 @@ Apollo bazel-extend-tools control - control-controllers-control-task-base common common-msgs 3rd-eigen3 3rd-absl bazel - \ No newline at end of file + diff --git a/modules/control/controllers/mpc_controller/mpc_controller.cc b/modules/control/controllers/mpc_controller/mpc_controller.cc index 25584a836c5..9c9393310a0 100644 --- a/modules/control/controllers/mpc_controller/mpc_controller.cc +++ b/modules/control/controllers/mpc_controller/mpc_controller.cc @@ -24,6 +24,7 @@ #include "Eigen/LU" #include "absl/strings/str_cat.h" + #include "cyber/common/log.h" #include "cyber/time/clock.h" #include "modules/common/configs/vehicle_config_helper.h" @@ -112,19 +113,15 @@ bool MPCController::LoadControlConf() { mpc_eps_ = control_conf_.eps(); mpc_max_iteration_ = control_conf_.max_iteration(); - throttle_lowerbound_ = - std::max(vehicle_param_.throttle_deadzone(), - control_conf_.throttle_minimum_action()); - brake_lowerbound_ = - std::max(vehicle_param_.brake_deadzone(), - control_conf_.brake_minimum_action()); + throttle_lowerbound_ = std::max(vehicle_param_.throttle_deadzone(), + control_conf_.throttle_minimum_action()); + brake_lowerbound_ = std::max(vehicle_param_.brake_deadzone(), + control_conf_.brake_minimum_action()); minimum_speed_protection_ = FLAGS_minimum_speed_protection; - max_acceleration_when_stopped_ = - FLAGS_max_acceleration_when_stopped; + max_acceleration_when_stopped_ = FLAGS_max_acceleration_when_stopped; max_abs_speed_when_stopped_ = vehicle_param_.max_abs_speed_when_stopped(); - standstill_acceleration_ = - control_conf_.standstill_acceleration(); + standstill_acceleration_ = control_conf_.standstill_acceleration(); enable_mpc_feedforward_compensation_ = control_conf_.enable_mpc_feedforward_compensation(); @@ -155,13 +152,12 @@ void MPCController::InitializeFilters() { // Low pass filter std::vector den(3, 0.0); std::vector num(3, 0.0); - common::LpfCoefficients( - ts_, control_conf_.cutoff_freq(), &den, &num); + common::LpfCoefficients(ts_, control_conf_.cutoff_freq(), &den, &num); digital_filter_.set_coefficients(den, num); - lateral_error_filter_ = common::MeanFilter(static_cast( - control_conf_.mean_filter_window_size())); - heading_error_filter_ = common::MeanFilter(static_cast( - control_conf_.mean_filter_window_size())); + lateral_error_filter_ = common::MeanFilter( + static_cast(control_conf_.mean_filter_window_size())); + heading_error_filter_ = common::MeanFilter( + static_cast(control_conf_.mean_filter_window_size())); } Status MPCController::Init(std::shared_ptr injector) { @@ -264,8 +260,7 @@ void MPCController::Stop() { CloseLogFile(); } std::string MPCController::Name() const { return name_; } void MPCController::LoadMPCGainScheduler() { - const auto &lat_err_gain_scheduler = - control_conf_.lat_err_gain_scheduler(); + const auto &lat_err_gain_scheduler = control_conf_.lat_err_gain_scheduler(); const auto &heading_err_gain_scheduler = control_conf_.heading_err_gain_scheduler(); const auto &feedforwardterm_gain_scheduler = diff --git a/modules/control/controllers/mpc_controller/mpc_controller.h b/modules/control/controllers/mpc_controller/mpc_controller.h index c1d500b7b32..70389db92ae 100644 --- a/modules/control/controllers/mpc_controller/mpc_controller.h +++ b/modules/control/controllers/mpc_controller/mpc_controller.h @@ -26,17 +26,19 @@ #include #include "Eigen/Core" -#include "cyber/plugin_manager/plugin_manager.h" + #include "modules/common_msgs/config_msgs/vehicle_config.pb.h" #include "modules/control/controllers/mpc_controller/proto/mpc_controller.pb.h" + +#include "cyber/plugin_manager/plugin_manager.h" #include "modules/common/filters/digital_filter.h" #include "modules/common/filters/digital_filter_coefficients.h" #include "modules/common/filters/mean_filter.h" #include "modules/common/math/mpc_osqp.h" -#include "modules/control/controllers/control_task_base/common/interpolation_1d.h" -#include "modules/control/controllers/control_task_base/common/interpolation_2d.h" -#include "modules/control/controllers/control_task_base/common/trajectory_analyzer.h" -#include "modules/control/controllers/control_task_base/control_task.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_1d.h" +#include "modules/control/control_component/controller_task_base/common/interpolation_2d.h" +#include "modules/control/control_component/controller_task_base/common/trajectory_analyzer.h" +#include "modules/control/control_component/controller_task_base/control_task.h" /** * @namespace apollo::control diff --git a/modules/control/controllers/mpc_controller/mpc_controller_test.cc b/modules/control/controllers/mpc_controller/mpc_controller_test.cc index 7c5b3d7955a..b8b9abe740d 100644 --- a/modules/control/controllers/mpc_controller/mpc_controller_test.cc +++ b/modules/control/controllers/mpc_controller/mpc_controller_test.cc @@ -16,16 +16,17 @@ #include "modules/control/controllers/mpc_controller/mpc_controller.h" -#include "cyber/common/file.h" -#include "cyber/common/log.h" #include "gmock/gmock.h" #include "gtest/gtest.h" +#include "modules/common_msgs/planning_msgs/planning.pb.h" + +#include "cyber/common/file.h" +#include "cyber/common/log.h" #include "cyber/time/clock.h" +#include "modules/common/configs/config_gflags.h" #include "modules/common/vehicle_state/vehicle_state_provider.h" #include "modules/control/control_component/common/control_gflags.h" -#include "modules/common/configs/config_gflags.h" -#include "modules/common_msgs/planning_msgs/planning.pb.h" namespace apollo { namespace control { diff --git a/modules/control/controllers/mpc_controller/proto/BUILD b/modules/control/controllers/mpc_controller/proto/BUILD index 862c0316313..182b3bdaeb4 100644 --- a/modules/control/controllers/mpc_controller/proto/BUILD +++ b/modules/control/controllers/mpc_controller/proto/BUILD @@ -7,7 +7,7 @@ proto_library( name = "mpc_controller_proto", srcs = ["mpc_controller.proto"], deps = [ - "//modules/control/controllers/control_task_base/proto:gain_scheduler_conf_proto", + "//modules/control/control_component/controller_task_base/proto:gain_scheduler_conf_proto", ], ) diff --git a/modules/control/controllers/mpc_controller/proto/mpc_controller.proto b/modules/control/controllers/mpc_controller/proto/mpc_controller.proto index 1dcea39b04b..0fc8d19dcf0 100644 --- a/modules/control/controllers/mpc_controller/proto/mpc_controller.proto +++ b/modules/control/controllers/mpc_controller/proto/mpc_controller.proto @@ -1,6 +1,6 @@ syntax = "proto2"; -import "modules/control/controllers/control_task_base/proto/gain_scheduler_conf.proto"; +import "modules/control/control_component/controller_task_base/proto/gain_scheduler_conf.proto"; package apollo.control; diff --git a/modules/data/cyberfile.xml b/modules/data/cyberfile.xml index 16697e6f45b..98f13a231f2 100644 --- a/modules/data/cyberfile.xml +++ b/modules/data/cyberfile.xml @@ -16,6 +16,7 @@ cyber common + monitor dreamview 3rd-absl diff --git a/modules/data/tools/smart_recorder/BUILD b/modules/data/tools/smart_recorder/BUILD index a4fcbb23004..0415447d6d9 100644 --- a/modules/data/tools/smart_recorder/BUILD +++ b/modules/data/tools/smart_recorder/BUILD @@ -1,186 +1,73 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) filegroup( name = "conf", srcs = glob([ - "conf/*" + "conf/*", ]), ) -cc_binary( - name = "smart_recorder", - srcs = ["smart_recorder.cc"], - linkstatic = True, - deps = [ - ":post_record_processor", - ":realtime_record_processor", - ":smart_recorder_gflags", +apollo_cc_library( + name = "apollo_data_tools_smart_recorder", + srcs = [ + "bumper_crash_trigger.cc", + "channel_pool.cc", + "drive_event_trigger.cc", + "emergency_mode_trigger.cc", + "hard_brake_trigger.cc", + "interval_pool.cc", + "post_record_processor.cc", + "realtime_record_processor.cc", + "record_processor.cc", + "regular_interval_trigger.cc", + "small_topics_trigger.cc", + "smart_recorder_gflags.cc", + "swerve_trigger.cc", + "trigger_base.cc", ], -) - -cc_library( - name = "post_record_processor", - srcs = ["post_record_processor.cc"], - hdrs = ["post_record_processor.h"], - deps = [ - ":channel_pool", - ":record_processor", - "//cyber", + hdrs = [ + "bumper_crash_trigger.h", + "channel_pool.h", + "drive_event_trigger.h", + "emergency_mode_trigger.h", + "hard_brake_trigger.h", + "interval_pool.h", + "post_record_processor.h", + "realtime_record_processor.h", + "record_processor.h", + "regular_interval_trigger.h", + "small_topics_trigger.h", + "smart_recorder_gflags.h", + "swerve_trigger.h", + "trigger_base.h", ], -) - -cc_library( - name = "realtime_record_processor", - srcs = ["realtime_record_processor.cc"], - hdrs = ["realtime_record_processor.h"], deps = [ - ":channel_pool", - ":record_processor", "//cyber", "//cyber/tools/cyber_recorder:recorder", - "//modules/common_msgs/monitor_msgs:smart_recorder_status_cc_proto", - "//modules/monitor/common:monitor_manager", - ], -) - -cc_library( - name = "record_processor", - srcs = ["record_processor.cc"], - hdrs = ["record_processor.h"], - deps = [ - ":bumper_crash_trigger", - ":drive_event_trigger", - ":emergency_mode_trigger", - ":hard_brake_trigger", - ":interval_pool", - ":regular_interval_trigger", - ":small_topics_trigger", - ":swerve_trigger", - "//cyber", - "//modules/common/util", - ], -) - -cc_library( - name = "smart_recorder_gflags", - srcs = ["smart_recorder_gflags.cc"], - hdrs = ["smart_recorder_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "drive_event_trigger", - srcs = ["drive_event_trigger.cc"], - hdrs = ["drive_event_trigger.h"], - deps = [ - ":trigger_base", "//modules/common/adapters:adapter_gflags", + "//modules/common/util:common_util", "//modules/common_msgs/basic_msgs:drive_event_cc_proto", - ], -) - -cc_library( - name = "emergency_mode_trigger", - srcs = ["emergency_mode_trigger.cc"], - hdrs = ["emergency_mode_trigger.h"], - deps = [ - ":trigger_base", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - ], -) - -cc_library( - name = "bumper_crash_trigger", - srcs = ["bumper_crash_trigger.cc"], - hdrs = ["bumper_crash_trigger.h"], - deps = [ - ":trigger_base", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - ], -) - -cc_library( - name = "hard_brake_trigger", - srcs = ["hard_brake_trigger.cc"], - hdrs = ["hard_brake_trigger.h"], - deps = [ - ":trigger_base", "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - ], -) - -cc_library( - name = "small_topics_trigger", - srcs = ["small_topics_trigger.cc"], - hdrs = ["small_topics_trigger.h"], - deps = [ - ":channel_pool", - ":trigger_base", - ], -) - -cc_library( - name = "swerve_trigger", - srcs = ["swerve_trigger.cc"], - hdrs = ["swerve_trigger.h"], - deps = [ - ":trigger_base", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - ], -) - -cc_library( - name = "regular_interval_trigger", - srcs = ["regular_interval_trigger.cc"], - hdrs = ["regular_interval_trigger.h"], - deps = [ - ":trigger_base", - ], -) - -cc_library( - name = "trigger_base", - srcs = ["trigger_base.cc"], - hdrs = ["trigger_base.h"], - deps = [ - ":interval_pool", - "//cyber", + "//modules/common_msgs/monitor_msgs:smart_recorder_status_cc_proto", "//modules/data/tools/smart_recorder/proto:smart_recorder_triggers_cc_proto", - ], -) - -cc_library( - name = "interval_pool", - srcs = ["interval_pool.cc"], - hdrs = ["interval_pool.h"], - deps = [ - "//cyber", + "//modules/monitor:apollo_monitor", + "@com_github_gflags_gflags//:gflags", "@com_google_absl//:absl", ], ) -cc_library( - name = "channel_pool", - srcs = ["channel_pool.cc"], - hdrs = ["channel_pool.h"], +apollo_cc_binary( + name = "smart_recorder", + srcs = ["smart_recorder.cc"], deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", + ":apollo_data_tools_smart_recorder", ], ) apollo_package() + cpplint() diff --git a/modules/dreamview/BUILD b/modules/dreamview/BUILD index 6ea56da81fb..c30f7faf881 100644 --- a/modules/dreamview/BUILD +++ b/modules/dreamview/BUILD @@ -1,7 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools/platform:build_defs.bzl", "copts_if_teleop") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -13,7 +11,7 @@ filegroup( srcs = glob(["frontend/dist/**/*"]), ) -cc_binary( +apollo_cc_binary( name = "dreamview", srcs = ["main.cc"], copts = DREAMVIEW_COPTS + copts_if_teleop(), @@ -21,7 +19,8 @@ cc_binary( ":frontend", ], deps = [ - "//modules/dreamview/backend", + "//cyber", + "//modules/dreamview/backend:apollo_dreamview_backend", ], ) @@ -35,90 +34,6 @@ filegroup( ]), ) -# install( -# name = "dist", -# data = [":frontend"], -# data_dest = "dreamview/addition_data" -# ) - -# install( -# name = "install", -# library_dest = "dreamview/lib", -# data_dest = "dreamview", -# runtime_dest = "dreamview/bin", -# data = [ -# ":dreamview_conf", -# ":frontend", -# "cyberfile.xml", -# "dreamview.BUILD" -# ], -# targets = ["dreamview"], -# deps = [ -# ":pb_dreamview", -# ":pb_hdrs", -# ":dist", -# "//modules/dreamview/backend/common:install", -# "//modules/dreamview/backend/hmi:install", -# "//modules/dreamview/backend/map:install", -# "//modules/dreamview/backend:install", -# "//modules/dreamview/backend/sim_control_manager/common:install", -# "//modules/dreamview/proto:py_pb_dreamview" -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "dreamview/include", -# data = [ -# "//modules/dreamview/proto:camera_update_cc_proto", -# "//modules/dreamview/proto:hmi_config_cc_proto", -# "//modules/dreamview/proto:hmi_mode_cc_proto", -# "//modules/dreamview/proto:data_collection_table_cc_proto", -# "//modules/dreamview/proto:point_cloud_cc_proto", -# "//modules/dreamview/proto:preprocess_table_cc_proto", -# "//modules/dreamview/proto:simulation_world_cc_proto", -# "//modules/dreamview/proto:scenario_cc_proto", -# "//modules/dreamview/proto:record_cc_proto", -# "//modules/dreamview/proto:dv_plugin_msg_cc_proto", -# "//modules/dreamview/proto:plugin_config_cc_proto", -# "//modules/dreamview/backend/teleop/proto:daemon_cmd_cc_proto", -# "//modules/dreamview/backend/teleop/proto:daemon_rpt_cc_proto", -# "//modules/dreamview/backend/teleop/proto:modem_info_cc_proto", -# "//modules/dreamview/backend/sim_control_manager/proto:sim_control_internal_cc_proto", -# "//modules/dreamview/backend/sim_control_manager/proto:dynamic_model_conf_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_dreamview", -# dest = "dreamview", -# files = [ -# "//modules/common_msgs/dreamview_msgs:chart_py_pb2", -# "//modules/dreamview/proto:preprocess_table_py_pb2", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_dreamview_src", -# ":install_dreamview_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_dreamview_src", -# src_dir = ["."], -# dest = "dreamview/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_dreamview_hdrs", -# src_dir = ["."], -# dest = "dreamview/include", -# filter = "*.h", -# ) - apollo_package() + cpplint() diff --git a/modules/dreamview/backend/BUILD b/modules/dreamview/backend/BUILD index b942182862c..a3f11e52a7a 100644 --- a/modules/dreamview/backend/BUILD +++ b/modules/dreamview/backend/BUILD @@ -1,83 +1,259 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") load("//tools/platform:build_defs.bzl", "copts_if_teleop", "if_teleop") -load("//tools:apollo_package.bzl", "apollo_package") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) DREAMVIEW_COPTS = ['-DMODULE_NAME=\\"dreamview\\"'] -cc_library( - name = "backend", - srcs = ["libbackend.so"], - hdrs = ["dreamview.h"], - copts = DREAMVIEW_COPTS + copts_if_teleop(), - alwayslink = True, +apollo_cc_test( + name = "data_collection_monitor_test", + size = "small", + srcs = ["fuel_monitor/data_collection_monitor_test.cc"], + data = [ + "//modules/dreamview/backend/testdata", + ], deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common/status", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/handlers:image_handler", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/dreamview/backend/hmi", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/backend/perception_camera_updater", - "//modules/dreamview/backend/plugins:plugin_manager", - "//modules/dreamview/backend/point_cloud:point_cloud_updater", - "//modules/dreamview/backend/sim_control_manager", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_base", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_with_model_base", - "//modules/dreamview/backend/sim_control_manager/common:interpolation_2d", - "//modules/dreamview/backend/simulation_world:simulation_world_updater", - "//modules/dreamview/proto:simulation_world_cc_proto", - "//modules/dreamview/backend/sim_control_manager/proto:sim_control_internal_cc_proto", - "//modules/dreamview/backend/sim_control_manager/proto:dynamic_model_conf_cc_proto", - #"//modules/dreamview/backend/sim_control_manager/proto:fnn_model_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/map/pnc_map", - "//modules/common_msgs/planning_msgs:pad_msg_cc_proto", - "@civetweb//:civetweb++", - ] + if_teleop(["//modules/dreamview/backend/teleop"]), + ":apollo_dreamview_backend", + "//modules/common/util:util_tool", + "@boost", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, ) -cc_binary( - name = "libbackend.so", - srcs = ["dreamview.cc", "dreamview.h"], - copts = DREAMVIEW_COPTS + copts_if_teleop(), +apollo_cc_test( + name = "websocket_handler_test", + size = "small", + srcs = ["handlers/websocket_handler_test.cc"], + deps = [ + ":apollo_dreamview_backend", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_binary( + name = "vehicle_manager_main", + srcs = ["hmi/vehicle_manager_main.cc"], + copts = DREAMVIEW_COPTS, + deps = [ + ":apollo_dreamview_backend", + "//cyber", + "@com_github_gflags_gflags//:gflags", + ], +) + +apollo_cc_test( + name = "vehicle_manager_test", + size = "small", + srcs = ["hmi/vehicle_manager_test.cc"], + data = glob(["testdata/**"]), + deps = [ + ":apollo_dreamview_backend", + "//cyber", + "@com_github_gflags_gflags//:gflags", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "sim_control_test", + size = "small", + srcs = ["sim_control/sim_control_test.cc"], + data = [ + "//modules/dreamview/backend/testdata", + ], + deps = [ + ":apollo_dreamview_backend", + "//cyber", + "@com_google_googletest//:gtest_main", + ], linkstatic = True, - linkshared = True, +) + +apollo_cc_test( + name = "map_service_test", + size = "small", + srcs = ["map/map_service_test.cc"], + data = [ + "//modules/dreamview/backend/testdata", + ], + deps = [ + ":apollo_dreamview_backend", + "//modules/common_msgs/routing_msgs:routing_cc_proto", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "simulation_world_service_test", + size = "small", + srcs = ["simulation_world/simulation_world_service_test.cc"], + data = [ + "//modules/dreamview/backend/testdata", + ], deps = [ + ":apollo_dreamview_backend", + "//modules/common/math", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "teleop_test", + size = "small", + srcs = if_teleop( + ["teleop/teleop_test.cc"], + ), + data = [ + "//modules/dreamview/backend/testdata", + ], + deps = [ + ":apollo_dreamview_backend", + "@boost", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_library( + name = "apollo_dreamview_backend", + copts = DREAMVIEW_COPTS + copts_if_teleop(), + srcs = [ + "dreamview.cc", + "common/dreamview_gflags.cc", + "fuel_monitor/data_collection_monitor.cc", + "fuel_monitor/fuel_monitor_gflags.cc", + "fuel_monitor/fuel_monitor_manager.cc", + "fuel_monitor/preprocess_monitor.cc", + "handlers/image_handler.cc", + "handlers/websocket_handler.cc", + "hmi/hmi.cc", + "hmi/hmi_worker.cc", + "hmi/vehicle_manager.cc", + "map/map_service.cc", + "perception_camera_updater/perception_camera_updater.cc", + "plugins/plugin_manager.cc", + "point_cloud/point_cloud_updater.cc", + "sim_control/sim_control.cc", + "sim_control_manager/common/interpolation_2d.cc", + "sim_control_manager/common/sim_control_gflags.cc", + "sim_control_manager/common/sim_control_util.cc", + "sim_control_manager/core/dynamic_model_factory.cc", + "sim_control_manager/core/sim_control_base.cc", + "sim_control_manager/core/sim_control_with_model_base.cc", + "sim_control_manager/dynamic_model/perfect_control/sim_perfect_control.cc", + "sim_control_manager/sim_control_manager.cc", + "simulation_world/simulation_world_service.cc", + "simulation_world/simulation_world_updater.cc", + ] + if_teleop(["teleop.cc"]), + hdrs = [ + "dreamview.h", + "common/dreamview_gflags.h", + "fuel_monitor/data_collection_monitor.h", + "fuel_monitor/fuel_monitor.h", + "fuel_monitor/fuel_monitor_gflags.h", + "fuel_monitor/fuel_monitor_manager.h", + "fuel_monitor/preprocess_monitor.h", + "handlers/image_handler.h", + "handlers/websocket_handler.h", + "hmi/hmi.h", + "hmi/hmi_worker.h", + "hmi/vehicle_manager.h", + "map/map_service.h", + "perception_camera_updater/perception_camera_updater.h", + "plugins/plugin_manager.h", + "point_cloud/point_cloud_updater.h", + "sim_control/sim_control.h", + "sim_control/sim_control_interface.h", + "sim_control_manager/common/interpolation_2d.h", + "sim_control_manager/common/sim_control_gflags.h", + "sim_control_manager/common/sim_control_util.h", + "sim_control_manager/core/dynamic_model_factory.h", + "sim_control_manager/core/sim_control_base.h", + "sim_control_manager/core/sim_control_with_model_base.h", + "sim_control_manager/dynamic_model/perfect_control/sim_perfect_control.h", + "sim_control_manager/sim_control_manager.h", + "simulation_world/simulation_world_service.h", + "simulation_world/simulation_world_updater.h", + ] + if_teleop(["teleop.h"]), + deps = [ + "//cyber", + "//cyber/proto:dag_conf_cc_proto", "//modules/common/configs:vehicle_config_helper", "//modules/common/status", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/handlers:image_handler", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/dreamview/backend/hmi", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/backend/perception_camera_updater", - "//modules/dreamview/backend/plugins:plugin_manager", - "//modules/dreamview/backend/point_cloud:point_cloud_updater", - "//modules/dreamview/backend/sim_control_manager", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_base", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_with_model_base", - "//modules/dreamview/backend/sim_control_manager/common:interpolation_2d", - "//modules/dreamview/backend/simulation_world:simulation_world_updater", - "//modules/dreamview/proto:simulation_world_cc_proto", - "//modules/dreamview/backend/sim_control_manager/proto:sim_control_internal_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/map/pnc_map", + "//modules/common/kv_db", + "//modules/map:apollo_map", + "//modules/common/adapters:adapter_gflags", + "//modules/common/math", + "//modules/common/monitor_log", + "//modules/transform:apollo_transform", + "//modules/common/configs:config_gflags", + "//modules/common_msgs/transform_msgs:transform_cc_proto", + "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "//modules/common_msgs/planning_msgs:navigation_cc_proto", + "//modules/common_msgs/prediction_msgs:scenario_cc_proto", + "//modules/common_msgs/planning_msgs:planning_command_cc_proto", + "//modules/common_msgs/basic_msgs:drive_event_cc_proto", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "//modules/common_msgs/localization_msgs:gps_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", + "//modules/common_msgs/storytelling_msgs:story_cc_proto", + "//modules/common_msgs/simulation_msgs:scenario_cc_proto", + "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", + "//modules/common_msgs/monitor_msgs:system_status_cc_proto", + "//modules/common/util:common_util", + "//modules/common/util:util_tool", + "//modules/common_msgs/routing_msgs:poi_cc_proto", + "//modules/common_msgs/task_manager_msgs:task_manager_cc_proto", "//modules/common_msgs/planning_msgs:pad_msg_cc_proto", + "//modules/common_msgs/routing_msgs:routing_cc_proto", + "//modules/common_msgs/external_command_msgs:lane_follow_command_cc_proto", + "//modules/common_msgs/external_command_msgs:valet_parking_command_cc_proto", + "//modules/common_msgs/external_command_msgs:action_command_cc_proto", + "//modules/common_msgs/external_command_msgs:command_status_cc_proto", + "//modules/common_msgs/audio_msgs:audio_cc_proto", + "//modules/common_msgs/audio_msgs:audio_event_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/dreamview/backend/sim_control_manager/proto:dynamic_model_conf_cc_proto", + "//modules/dreamview/backend/sim_control_manager/proto:sim_control_internal_cc_proto", + "//modules/dreamview/proto:camera_update_cc_proto", + "//modules/dreamview/proto:data_collection_table_cc_proto", + "//modules/dreamview/proto:dv_plugin_msg_cc_proto", + "//modules/dreamview/proto:hmi_config_cc_proto", + "//modules/dreamview/proto:hmi_mode_cc_proto", + "//modules/dreamview/proto:plugin_config_cc_proto", + "//modules/dreamview/proto:point_cloud_cc_proto", + "//modules/dreamview/proto:preprocess_table_cc_proto", + "//modules/dreamview/proto:record_cc_proto", + "//modules/dreamview/proto:scenario_cc_proto", + "//modules/dreamview/proto:simulation_world_cc_proto", + "@boost", "@civetweb//:civetweb++", - ] + if_teleop(["//modules/dreamview/backend/teleop"]), + "@com_github_gflags_gflags//:gflags", + "@com_github_google_glog//:glog", + "@com_github_jbeder_yaml_cpp//:yaml-cpp", + "@com_github_nlohmann_json//:json", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest", + "@com_google_protobuf//:protobuf", + "@eigen", + "@local_config_pcl//:pcl", + "@opencv//:imgcodecs", + ] + if_teleop([ + "//modules/teleop/modem/proto:modem_info_cc_proto", + "//modules/teleop/daemon/proto:daemon_cmd_cc_proto", + "//modules/teleop/daemon/proto:daemon_rpt_cc_proto", + ]), ) -# install( -# name = "install", -# library_dest = "dreamview/lib", -# data_dest = "dreamview/addition_data/backend", -# data = ["//modules/dreamview/backend/testdata:testdata"], -# targets = [":libbackend.so"] -# ) apollo_package() + cpplint() diff --git a/modules/dreamview/backend/common/BUILD b/modules/dreamview/backend/common/BUILD deleted file mode 100644 index 7c605ad0b3e..00000000000 --- a/modules/dreamview/backend/common/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# library_dest = "dreamview/lib", -# targets = [":libdreamview_gflags.so"], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libdreamview_gflags.so", - srcs = [ - "dreamview_gflags.cc", - "dreamview_gflags.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "dreamview_gflags", - srcs = ["libdreamview_gflags.so"], - hdrs = ["dreamview_gflags.h"], - alwayslink = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/fuel_monitor/BUILD b/modules/dreamview/backend/fuel_monitor/BUILD deleted file mode 100644 index 524a777aeff..00000000000 --- a/modules/dreamview/backend/fuel_monitor/BUILD +++ /dev/null @@ -1,98 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -DREAMVIEW_COPTS = ['-DMODULE_NAME=\\"dreamview\\"'] - -cc_library( - name = "fuel_monitor", - hdrs = ["fuel_monitor.h"], - deps = [ - "@com_github_nlohmann_json//:json", - ], -) - -cc_library( - name = "data_collection_monitor", - srcs = ["data_collection_monitor.cc"], - hdrs = ["data_collection_monitor.h"], - copts = DREAMVIEW_COPTS, - deps = [ - ":fuel_monitor", - ":fuel_monitor_gflags", - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:vehicle_config_helper", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/hmi:vehicle_manager", - "//modules/dreamview/proto:data_collection_table_cc_proto", - "@com_github_gflags_gflags//:gflags", - "@com_github_nlohmann_json//:json", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "data_collection_monitor_test", - size = "small", - srcs = ["data_collection_monitor_test.cc"], - data = [ - "//modules/dreamview/backend/testdata", - ], - deps = [ - ":data_collection_monitor", - "//modules/common/util:util_tool", - "@boost", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "preprocess_monitor", - srcs = ["preprocess_monitor.cc"], - hdrs = ["preprocess_monitor.h"], - copts = DREAMVIEW_COPTS, - deps = [ - ":fuel_monitor", - ":fuel_monitor_gflags", - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:vehicle_config_helper", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/hmi:vehicle_manager", - "//modules/dreamview/proto:preprocess_table_cc_proto", - "@com_github_gflags_gflags//:gflags", - "@com_github_nlohmann_json//:json", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "fuel_monitor_gflags", - srcs = ["fuel_monitor_gflags.cc"], - hdrs = ["fuel_monitor_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "fuel_monitor_manager", - srcs = ["fuel_monitor_manager.cc"], - hdrs = ["fuel_monitor_manager.h"], - copts = DREAMVIEW_COPTS, - deps = [ - ":fuel_monitor", - "//cyber", - "//modules/common/util:util_tool", - "@boost", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/handlers/BUILD b/modules/dreamview/backend/handlers/BUILD deleted file mode 100644 index 5dffcc662fc..00000000000 --- a/modules/dreamview/backend/handlers/BUILD +++ /dev/null @@ -1,50 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -DREAMVIEW_COPTS = ['-DMODULE_NAME=\\"dreamview\\"'] - -cc_library( - name = "websocket_handler", - srcs = ["websocket_handler.cc"], - hdrs = ["websocket_handler.h"], - copts = DREAMVIEW_COPTS, - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "@civetweb//:civetweb++", - "@com_github_nlohmann_json//:json", - ], -) - -cc_library( - name = "image_handler", - srcs = ["image_handler.cc"], - hdrs = ["image_handler.h"], - copts = DREAMVIEW_COPTS, - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:config_gflags", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "@civetweb//:civetweb++", - "@opencv//:imgcodecs", - ], -) - -cc_test( - name = "websocket_handler_test", - size = "small", - srcs = ["websocket_handler_test.cc"], - deps = [ - ":websocket_handler", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/hmi/BUILD b/modules/dreamview/backend/hmi/BUILD deleted file mode 100644 index b4eec8f1d8f..00000000000 --- a/modules/dreamview/backend/hmi/BUILD +++ /dev/null @@ -1,177 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -DREAMVIEW_COPTS = ['-DMODULE_NAME=\\"dreamview\\"'] - -# install( -# name = "install", -# library_dest = "dreamview/lib", -# runtime_dest = "dreamview/bin", -# targets = [ -# ":libhmi_worker.so", -# ":vehicle_manager_main", -# ], -# visibility = ["//visibility:public"], -# ) - -filegroup( - name = "testdata", - srcs = glob([ - "testdata/**/*", - ]), -) - -cc_library( - name = "vehicle_manager", - srcs = ["vehicle_manager.cc"], - hdrs = ["vehicle_manager.h"], - copts = DREAMVIEW_COPTS, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/dreamview/proto:hmi_config_cc_proto", - "//modules/dreamview/backend/common:dreamview_gflags", - "@com_github_gflags_gflags//:gflags", - "@com_google_absl//:absl", - ], -) - -cc_binary( - name = "vehicle_manager_main", - srcs = ["vehicle_manager_main.cc"], - copts = DREAMVIEW_COPTS, - deps = [ - ":vehicle_manager", - "//cyber", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_test( - name = "vehicle_manager_test", - size = "small", - srcs = ["vehicle_manager_test.cc"], - data = glob(["testdata/**"]), - deps = [ - ":vehicle_manager", - "//cyber", - "@com_github_gflags_gflags//:gflags", - "@com_google_absl//:absl", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "hmi", - srcs = ["hmi.cc"], - hdrs = ["hmi.h"], - copts = DREAMVIEW_COPTS, - alwayslink = True, - deps = [ - ":hmi_worker", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/monitor_log", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/fuel_monitor:fuel_monitor_manager", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/backend/point_cloud:point_cloud_updater", - "//modules/dreamview/proto:preprocess_table_cc_proto", - ], -) - -cc_binary( - name = "libhmi_worker.so", - srcs = [ - "hmi_worker.cc", - "hmi_worker.h", - ], - linkshared = True, - linkstatic = True, - copts = DREAMVIEW_COPTS, - deps = [ - ":vehicle_manager", - "//cyber", - "//cyber/proto:dag_conf_cc_proto", - "//modules/common_msgs/audio_msgs:audio_event_cc_proto", - "//modules/common_msgs/basic_msgs:drive_event_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", - "//modules/common_msgs/external_command_msgs:action_command_cc_proto", - "//modules/common_msgs/external_command_msgs:command_status_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/monitor_msgs:system_status_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:config_gflags", - "//modules/common/kv_db", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/fuel_monitor:data_collection_monitor", - "//modules/dreamview/backend/fuel_monitor:fuel_monitor_gflags", - "//modules/dreamview/backend/fuel_monitor:fuel_monitor_manager", - "//modules/dreamview/backend/fuel_monitor:preprocess_monitor", - "//modules/dreamview/proto:hmi_config_cc_proto", - "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", - "//modules/dreamview/proto:scenario_cc_proto", - "//modules/dreamview/proto:record_cc_proto", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "@boost", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "hmi_worker", - srcs = ["libhmi_worker.so"], - hdrs = ["hmi_worker.h"], - copts = DREAMVIEW_COPTS, - deps = [ - ":vehicle_manager", - "//cyber", - "//cyber/proto:dag_conf_cc_proto", - "//modules/common_msgs/audio_msgs:audio_event_cc_proto", - "//modules/common_msgs/basic_msgs:drive_event_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/control_msgs:control_pad_msg_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/monitor_msgs:system_status_cc_proto", - "//modules/common_msgs/external_command_msgs:action_command_cc_proto", - "//modules/common_msgs/external_command_msgs:command_status_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:config_gflags", - "//modules/common/kv_db", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/fuel_monitor:data_collection_monitor", - "//modules/dreamview/backend/fuel_monitor:fuel_monitor_gflags", - "//modules/dreamview/backend/fuel_monitor:fuel_monitor_manager", - "//modules/dreamview/backend/fuel_monitor:preprocess_monitor", - "//modules/dreamview/proto:hmi_config_cc_proto", - "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", - "//modules/dreamview/proto:scenario_cc_proto", - "//modules/dreamview/proto:record_cc_proto", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "@boost", - "@com_google_absl//:absl", - ], -) - -cc_test( - name = "hmi_worker_test", - size = "small", - srcs = ["hmi_worker_test.cc"], - deps = [ - ":hmi_worker", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/hmi/hmi_worker.cc b/modules/dreamview/backend/hmi/hmi_worker.cc index 2675120db1a..a4427f42c14 100644 --- a/modules/dreamview/backend/hmi/hmi_worker.cc +++ b/modules/dreamview/backend/hmi/hmi_worker.cc @@ -66,11 +66,13 @@ using apollo::cyber::proto::DagConfig; using apollo::dreamview::SimTicket; using apollo::dreamview::UserAdsGroup; using apollo::external_command::ActionCommand; +using apollo::external_command::LaneFollowCommand; using apollo::external_command::CommandStatus; using apollo::localization::LocalizationEstimate; using apollo::monitor::ComponentStatus; using apollo::monitor::SystemStatus; using google::protobuf::Map; +using google::protobuf::util::JsonStringToMessage; using RLock = boost::shared_lock; using WLock = boost::unique_lock; using Json = nlohmann::json; @@ -282,6 +284,9 @@ void HMIWorker::InitReadersAndWriters() { status_writer_ = node_->CreateWriter(FLAGS_hmi_status_topic); action_command_client_ = node_->CreateClient( FLAGS_action_command_topic); + lane_follow_command_client_ = + node_->CreateClient( + FLAGS_lane_follow_command_topic); audio_event_writer_ = node_->CreateWriter(FLAGS_audio_event_topic); drive_event_writer_ = @@ -940,6 +945,46 @@ bool HMIWorker::ResetSimObstacle(const std::string &scenario_id) { } } + // wait simcontrol restart + std::this_thread::sleep_for(std::chrono::milliseconds(300)); + + apollo::simulation::Scenario scenario; + std::ifstream ifs(scenario_path); + CHECK(ifs.is_open()) << "Failed to open file: " << scenario_path; + Json json; + ifs >> json; + ifs.close(); + google::protobuf::util::JsonParseOptions options; + options.ignore_unknown_fields = true; + google::protobuf::util::Status dump_status; + if (!JsonStringToMessage(json["scenario"].dump(), &scenario, options).ok()) { + AERROR << "Failed to parse json string to Scenario"; + return false; + } + + // send lane_follow_command when change scenario + auto lane_follow_command = std::make_shared(); + auto waypoint = lane_follow_command->mutable_way_point(); + auto *pose = waypoint->Add(); + pose->set_x(scenario.start().x()); + pose->set_y(scenario.start().y()); + if (scenario.start().has_heading()) { + pose->set_heading(scenario.start().heading()); + } + + auto end_pose = lane_follow_command->mutable_end_pose(); + end_pose->set_x(scenario.end().x()); + end_pose->set_y(scenario.end().y()); + if (scenario.end().has_heading()) { + pose->set_heading(scenario.end().heading()); + } + + apollo::common::util::FillHeader(FLAGS_dreamview_module_name, + lane_follow_command.get()); + AINFO << "Constructed LaneFollowCommand to be sent:\n" + << lane_follow_command->DebugString(); + lane_follow_command_client_->SendRequest(lane_follow_command); + return true; } diff --git a/modules/dreamview/backend/hmi/hmi_worker.h b/modules/dreamview/backend/hmi/hmi_worker.h index bcabbdf13c2..1b4cdfce930 100644 --- a/modules/dreamview/backend/hmi/hmi_worker.h +++ b/modules/dreamview/backend/hmi/hmi_worker.h @@ -27,6 +27,7 @@ #include #include "nlohmann/json.hpp" +#include "google/protobuf/util/json_util.h" #include "modules/common_msgs/audio_msgs/audio_event.pb.h" #include "modules/common_msgs/basic_msgs/drive_event.pb.h" @@ -36,6 +37,8 @@ #include "modules/common_msgs/localization_msgs/localization.pb.h" #include "modules/common_msgs/external_command_msgs/action_command.pb.h" #include "modules/common_msgs/external_command_msgs/command_status.pb.h" +#include "modules/common_msgs/external_command_msgs/lane_follow_command.pb.h" +#include "modules/common_msgs/simulation_msgs/scenario.pb.h" #include "modules/dreamview/proto/hmi_config.pb.h" #include "modules/dreamview/proto/hmi_mode.pb.h" @@ -178,6 +181,10 @@ class HMIWorker { apollo::cyber::Client> action_command_client_; + std::shared_ptr< + apollo::cyber::Client> + lane_follow_command_client_; std::shared_ptr> audio_event_writer_; std::shared_ptr> drive_event_writer_; diff --git a/modules/dreamview/backend/map/BUILD b/modules/dreamview/backend/map/BUILD deleted file mode 100644 index 89815060d66..00000000000 --- a/modules/dreamview/backend/map/BUILD +++ /dev/null @@ -1,66 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# library_dest = "dreamview/lib", -# targets = [":libmap_service.so"], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libmap_service.so", - srcs = [ - "map_service.cc", - "map_service.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//modules/common/util:util_tool", - "//modules/dreamview/proto:simulation_world_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/map/pnc_map", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "@boost", - "@com_github_nlohmann_json//:json", - "@com_github_google_glog//:glog", - ], -) - -cc_library( - name = "map_service", - srcs = ["libmap_service.so"], - hdrs = ["map_service.h"], - alwayslink = True, - deps = [ - "//modules/common/util:util_tool", - "//modules/dreamview/proto:simulation_world_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/map/pnc_map", - "@boost", - "@com_github_nlohmann_json//:json", - "@com_github_google_glog//:glog", - ], -) - -cc_test( - name = "map_service_test", - size = "small", - srcs = ["map_service_test.cc"], - data = [ - "//modules/dreamview/backend/testdata", - ], - deps = [ - ":map_service", - "@com_google_googletest//:gtest_main", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/perception_camera_updater/BUILD b/modules/dreamview/backend/perception_camera_updater/BUILD deleted file mode 100644 index d3ac3d47bd5..00000000000 --- a/modules/dreamview/backend/perception_camera_updater/BUILD +++ /dev/null @@ -1,29 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "perception_camera_updater", - srcs = ["perception_camera_updater.cc"], - hdrs = ["perception_camera_updater.h"], - copts = ['-DMODULE_NAME=\\"dreamview\\"'], - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/dreamview/proto:camera_update_cc_proto", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/transform:buffer", - "//modules/common_msgs/transform_msgs:transform_cc_proto", - "@eigen", - "@opencv//:imgcodecs", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/plugins/BUILD b/modules/dreamview/backend/plugins/BUILD deleted file mode 100644 index 58f6960a0af..00000000000 --- a/modules/dreamview/backend/plugins/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "plugin_manager", - srcs = ["plugin_manager.cc"], - hdrs = ["plugin_manager.h"], - alwayslink = True, - copts = ['-DMODULE_NAME=\\"dreamview\\"'], - deps = [ - "//cyber", - "//modules/dreamview/proto:dv_plugin_msg_cc_proto", - "//modules/dreamview/proto:plugin_config_cc_proto", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/point_cloud/BUILD b/modules/dreamview/backend/point_cloud/BUILD deleted file mode 100644 index 8ae920298c7..00000000000 --- a/modules/dreamview/backend/point_cloud/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "point_cloud_updater", - srcs = ["point_cloud_updater.cc"], - hdrs = ["point_cloud_updater.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/math", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/dreamview/backend/simulation_world:simulation_world_updater", - "//modules/dreamview/proto:point_cloud_cc_proto", - "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "@boost", - "@com_github_jbeder_yaml_cpp//:yaml-cpp", - "@com_github_nlohmann_json//:json", - "@com_google_protobuf//:protobuf", - "@local_config_pcl//:pcl", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/sim_control/BUILD b/modules/dreamview/backend/sim_control/BUILD deleted file mode 100644 index a9c6b755d6d..00000000000 --- a/modules/dreamview/backend/sim_control/BUILD +++ /dev/null @@ -1,47 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "sim_control", - srcs = ["sim_control.cc"], - hdrs = [ - "sim_control.h", - "sim_control_interface.h", - ], - alwayslink = True, - copts = ['-DMODULE_NAME=\\"dreamview\\"'], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/map:map_service", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common_msgs/prediction_msgs:scenario_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "sim_control_test", - size = "small", - srcs = ["sim_control_test.cc"], - data = [ - "//modules/dreamview/backend/testdata", - ], - deps = [ - ":sim_control", - "//cyber", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/sim_control_manager/BUILD b/modules/dreamview/backend/sim_control_manager/BUILD deleted file mode 100644 index a156f8f91d3..00000000000 --- a/modules/dreamview/backend/sim_control_manager/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "sim_control_manager", - srcs = ["sim_control_manager.cc"], - hdrs = [ - "sim_control_manager.h", - ], - alwayslink = True, - copts = ['-DMODULE_NAME=\\"dreamview\\"'], - deps = [ - "//modules/dreamview/backend/sim_control_manager/common:sim_control_gflags", - "//cyber", - "//modules/dreamview/backend/sim_control_manager/core:dynamic_model_factory", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_base", - "//modules/common/configs:config_gflags", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "@com_github_nlohmann_json//:json", - ], -) - -# todo: add test file -# cc_test( -# name = "sim_control_test", -# size = "small", -# srcs = ["sim_control_test.cc"], -# data = [ -# "//modules/dreamview/backend/testdata", -# ], -# deps = [ -# ":sim_control", -# "//cyber", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/sim_control_manager/common/BUILD b/modules/dreamview/backend/sim_control_manager/common/BUILD deleted file mode 100644 index ba6579ebae9..00000000000 --- a/modules/dreamview/backend/sim_control_manager/common/BUILD +++ /dev/null @@ -1,63 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# library_dest = "dreamview/lib", -# targets = [":libsim_control_gflags.so"], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libsim_control_gflags.so", - srcs = [ - "sim_control_gflags.cc", - "sim_control_gflags.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "sim_control_gflags", - srcs = ["libsim_control_gflags.so"], - hdrs = ["sim_control_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "interpolation_2d", - srcs = [ - "interpolation_2d.cc", - ], - hdrs = [ - "interpolation_2d.h", - ], - alwayslink = True, -) - -cc_library( - name = "sim_control_util", - srcs = [ - "sim_control_util.cc", - ], - hdrs = [ - "sim_control_util.h", - ], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -apollo_package() -cpplint() \ No newline at end of file diff --git a/modules/dreamview/backend/sim_control_manager/core/BUILD b/modules/dreamview/backend/sim_control_manager/core/BUILD deleted file mode 100644 index e86a678b6b6..00000000000 --- a/modules/dreamview/backend/sim_control_manager/core/BUILD +++ /dev/null @@ -1,77 +0,0 @@ -load("//tools:cpplint.bzl", "cpplint") -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "sim_control_base", - srcs = [ - "sim_control_base.cc", - ], - hdrs = [ - "sim_control_base.h", - ], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/status", - "//modules/common/util:message_util", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common_msgs/prediction_msgs:scenario_cc_proto", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/backend/sim_control_manager/common:sim_control_gflags", - "//modules/dreamview/backend/sim_control_manager/common:sim_control_util", - "//modules/dreamview/backend/sim_control_manager/proto:sim_control_internal_cc_proto", - "@com_github_nlohmann_json//:json", - ], -) - -cc_library( - name = "sim_control_with_model_base", - srcs = [ - "sim_control_with_model_base.cc", - ], - hdrs = [ - "sim_control_with_model_base.h", - ], - deps = [ - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/status", - "//modules/common/util", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/sim_control_manager/common:sim_control_gflags", - "//modules/dreamview/backend/sim_control_manager/common:sim_control_util", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_base", - "//modules/dreamview/backend/sim_control_manager/dynamic_model/perfect_control:sim_perfect_control", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "dynamic_model_factory", - srcs = [ - "dynamic_model_factory.cc", - ], - hdrs = [ - "dynamic_model_factory.h", - ], - deps = [ - "//modules/common/status", - "//modules/common/util", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_base", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_with_model_base", - "//modules/dreamview/backend/sim_control_manager/proto:dynamic_model_conf_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/sim_control_manager/dynamic_model/perfect_control/BUILD b/modules/dreamview/backend/sim_control_manager/dynamic_model/perfect_control/BUILD deleted file mode 100644 index fb168e9a70b..00000000000 --- a/modules/dreamview/backend/sim_control_manager/dynamic_model/perfect_control/BUILD +++ /dev/null @@ -1,46 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "sim_perfect_control", - srcs = ["sim_perfect_control.cc"], - hdrs = [ - "sim_perfect_control.h", - ], - copts = ['-DMODULE_NAME=\\"dreamview\\"'], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/backend/sim_control_manager/core:sim_control_base", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common_msgs/prediction_msgs:scenario_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "@com_google_googletest//:gtest", - ], -) - -# cc_test( -# name = "sim_control_test", -# size = "small", -# srcs = ["sim_control_test.cc"], -# data = [ -# "//modules/dreamview/backend/testdata", -# ], -# deps = [ -# ":sim_perfect_control", -# "//cyber", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/simulation_world/BUILD b/modules/dreamview/backend/simulation_world/BUILD deleted file mode 100644 index b0f1ee1b4d4..00000000000 --- a/modules/dreamview/backend/simulation_world/BUILD +++ /dev/null @@ -1,94 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -DREAMVIEW_COPTS = ['-DMODULE_NAME=\\"dreamview\\"'] - -cc_library( - name = "simulation_world_service", - srcs = ["simulation_world_service.cc"], - hdrs = ["simulation_world_service.h"], - copts = DREAMVIEW_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/audio_msgs:audio_cc_proto", - "//modules/common_msgs/audio_msgs:audio_event_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/monitor_log", - "//modules/common_msgs/basic_msgs:drive_event_cc_proto", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/proto:simulation_world_cc_proto", - "//modules/common_msgs/localization_msgs:gps_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common_msgs/storytelling_msgs:story_cc_proto", - "//modules/common_msgs/task_manager_msgs:task_manager_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/external_command_msgs:lane_follow_command_cc_proto", - "//modules/common_msgs/external_command_msgs:command_status_cc_proto", - "//modules/common_msgs/external_command_msgs:valet_parking_command_cc_proto", - "//modules/common_msgs/external_command_msgs:action_command_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "@com_github_nlohmann_json//:json", - "@com_google_absl//:absl", - ], -) - -cc_test( - name = "simulation_world_service_test", - size = "small", - srcs = ["simulation_world_service_test.cc"], - data = [ - "//modules/dreamview/backend/testdata", - ], - deps = [ - ":simulation_world_service", - "//modules/common/math", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "simulation_world_updater", - srcs = ["simulation_world_updater.cc"], - hdrs = ["simulation_world_updater.h"], - copts = DREAMVIEW_COPTS, - alwayslink = True, - deps = [ - ":simulation_world_service", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/fuel_monitor:fuel_monitor_manager", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/dreamview/backend/map:map_service", - "//modules/dreamview/backend/perception_camera_updater", - "//modules/common_msgs/routing_msgs:poi_cc_proto", - "//modules/common_msgs/task_manager_msgs:task_manager_cc_proto", - "//modules/dreamview/backend/plugins:plugin_manager", - "//modules/dreamview/backend/sim_control_manager:sim_control_manager", - "//modules/dreamview/backend/sim_control", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/external_command_msgs:lane_follow_command_cc_proto", - "//modules/common_msgs/external_command_msgs:valet_parking_command_cc_proto", - "//modules/common_msgs/external_command_msgs:action_command_cc_proto", - "//modules/common_msgs/external_command_msgs:command_status_cc_proto", - "@boost", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/simulation_world/simulation_world_service.cc b/modules/dreamview/backend/simulation_world/simulation_world_service.cc index 9c95dfaa72d..fb768771648 100644 --- a/modules/dreamview/backend/simulation_world/simulation_world_service.cc +++ b/modules/dreamview/backend/simulation_world/simulation_world_service.cc @@ -1156,7 +1156,7 @@ void SimulationWorldService::UpdateSimulationWorld( { boost::shared_lock reader_lock(route_paths_mutex_); if (world_.has_routing_time() && - world_.routing_time() == routing_response.header().timestamp_sec()) { + world_.routing_time() == planning_command.header().timestamp_sec()) { // This routing response has been processed. return; } @@ -1193,7 +1193,7 @@ void SimulationWorldService::UpdateSimulationWorld( { boost::unique_lock writer_lock(route_paths_mutex_); std::swap(route_paths, route_paths_); - world_.set_routing_time(routing_response.header().timestamp_sec()); + world_.set_routing_time(planning_command.header().timestamp_sec()); } } diff --git a/modules/dreamview/backend/simulation_world/simulation_world_updater.cc b/modules/dreamview/backend/simulation_world/simulation_world_updater.cc index 0a3825e3001..e96a413946e 100644 --- a/modules/dreamview/backend/simulation_world/simulation_world_updater.cc +++ b/modules/dreamview/backend/simulation_world/simulation_world_updater.cc @@ -173,11 +173,14 @@ void SimulationWorldUpdater::RegisterMessageHandlers() { } sim_control_manager_->ReSetPoinstion(point["x"], point["y"], point["heading"]); + // Send a ActionCommand to clear the trajectory of planning. - auto action_command = std::make_shared(); - action_command->set_command_id(++command_id_); - action_command->set_command(ActionCommandType::CLEAR_PLANNING); - sim_world_service_.PublishActionCommand(action_command); + if (isProcessRunning("planning.dag")) { + auto action_command = std::make_shared(); + action_command->set_command_id(++command_id_); + action_command->set_command(ActionCommandType::CLEAR_PLANNING); + sim_world_service_.PublishActionCommand(action_command); + } } }); @@ -730,6 +733,26 @@ bool SimulationWorldUpdater::LoadPOI() { return false; } +bool SimulationWorldUpdater::isProcessRunning(const std::string &process_name) { + std::stringstream commandStream; + commandStream << "pgrep -f " << process_name; + std::string command = commandStream.str(); + + FILE *fp = popen(command.c_str(), "r"); + if (fp) { + char result[128]; + if (fgets(result, sizeof(result), fp) != nullptr) { + AINFO << process_name << " is running"; + pclose(fp); + return true; + } else { + AINFO << process_name << " is not running"; + } + pclose(fp); + } + return false; +} + bool SimulationWorldUpdater::LoadUserDefinedRoutings( const std::string &file_name, google::protobuf::Message *message) { if (GetProtoFromASCIIFile(file_name, message)) { diff --git a/modules/dreamview/backend/simulation_world/simulation_world_updater.h b/modules/dreamview/backend/simulation_world/simulation_world_updater.h index 72138077870..6fdb3bcbdef 100644 --- a/modules/dreamview/backend/simulation_world/simulation_world_updater.h +++ b/modules/dreamview/backend/simulation_world/simulation_world_updater.h @@ -132,6 +132,12 @@ class SimulationWorldUpdater { bool ConstructLaneWayPoint(const nlohmann::json &point, apollo::routing::LaneWaypoint *laneWayPoint, std::string description); + /** + * @brief Check if a process exists + * @param process_name The name of the process to check + * @return True if the process exists + */ + bool isProcessRunning(const std::string &process_name); bool ValidateCoordinate(const nlohmann::json &json); diff --git a/modules/dreamview/backend/teleop/BUILD b/modules/dreamview/backend/teleop/BUILD deleted file mode 100644 index bbd53228374..00000000000 --- a/modules/dreamview/backend/teleop/BUILD +++ /dev/null @@ -1,49 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools/platform:build_defs.bzl", "copts_if_teleop", "if_teleop") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "teleop", - srcs = if_teleop(["teleop.cc"]), - hdrs = if_teleop(["teleop.h"]), - copts = ['-DMODULE_NAME=\\"dreamview\\"'] + copts_if_teleop(), - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/monitor_log", - "//modules/common_msgs/basic_msgs:drive_event_cc_proto", - "//modules/common/util", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/handlers:websocket_handler", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/common_msgs/external_command_msgs:action_command_cc_proto", - "//modules/common_msgs/external_command_msgs:command_status_cc_proto", - "@com_github_nlohmann_json//:json", - ] + if_teleop([ - "//modules/teleop/modem/proto:modem_info_cc_proto", - "//modules/teleop/daemon/proto:daemon_cmd_cc_proto", - "//modules/teleop/daemon/proto:daemon_rpt_cc_proto", - ]), -) - -cc_test( - name = "teleop_test", - size = "small", - srcs = if_teleop( - ["teleop_test.cc"], - ), - data = [ - "//modules/dreamview/backend/testdata", - ], - deps = [ - ":teleop", - "@boost", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/dreamview/backend/teleop/teleop.cc b/modules/dreamview/backend/teleop/teleop.cc index e8cf035f5bd..f8dbeb1b5c2 100644 --- a/modules/dreamview/backend/teleop/teleop.cc +++ b/modules/dreamview/backend/teleop/teleop.cc @@ -501,7 +501,7 @@ void TeleopService::UpdatePlanning(const std::shared_ptr &msg) { if (count % 10 == 0) { AINFO << "Update Planning"; } - auto scenario_type = msg->debug().planning_data().scenario().scenario_type(); + auto scenario_type = msg->debug().planning_data().scenario().scenario_plugin_type(); bool pulled_over = scenario_type == "PULL_OVER"; bool autonomy_resumed = scenario_type == "PARK_AND_GO"; diff --git a/modules/drivers/BUILD b/modules/drivers/BUILD deleted file mode 100644 index 1d6f917cf92..00000000000 --- a/modules/drivers/BUILD +++ /dev/null @@ -1,137 +0,0 @@ -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") - -package( - default_visibility = ["//visibility:public"], -) - -# install( -# name = "install", -# data_dest = "drivers", -# data = [ -# ":cyberfile.xml", -# ":drivers.BUILD", -# ], -# deps = [ -# ":pb_drivers", -# ":pb_hdrs", -# "//modules/drivers/canbus:install", -# "//modules/drivers/camera:install", -# "//modules/drivers/gnss:install", -# "//modules/drivers/lidar:install", -# "//modules/drivers/microphone:install", -# "//modules/drivers/radar:install", -# "//modules/drivers/smartereye:install", -# "//modules/drivers/tools/image_decompress:install", -# "//modules/drivers/video:install", -# "//modules/drivers/canbus/can_client:install", -# "//modules/drivers/canbus/common:install", -# "//modules/drivers/gnss/test:install", -# "//modules/drivers/lidar/hesai:install", -# "//modules/drivers/lidar/robosense:install", -# "//modules/drivers/lidar/velodyne/compensator:install", -# "//modules/drivers/lidar/velodyne/driver:install", -# "//modules/drivers/lidar/velodyne/fusion:install", -# "//modules/drivers/lidar/velodyne/parser:install", -# "//modules/drivers/lidar/velodyne:install", -# "//modules/drivers/radar/conti_radar:install", -# "//modules/drivers/radar/racobit_radar:install", -# "//modules/drivers/radar/ultrasonic_radar:install", -# "//modules/drivers/video/tools/decode_video:install", -# ":pb_drivers_py" -# ], -# ) - -# install_files( -# name = "pb_drivers", -# dest = "drivers", -# files = [ -# "//modules/common_msgs/sensor_msgs:ins_py_pb2", -# "//modules/common_msgs/sensor_msgs:conti_radar_py_pb2", -# "//modules/common_msgs/sensor_msgs:pointcloud_py_pb2", -# "//modules/common_msgs/sensor_msgs:sensor_image_py_pb2", -# "//modules/drivers/radar/conti_radar/proto:conti_radar_conf_py_pb2", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers/include", -# data = [ -# "//modules/drivers/camera/proto:config_cc_proto", -# "//modules/drivers/canbus/proto:sensor_canbus_conf_py_pb2", -# "//modules/drivers/gnss/proto:config_cc_proto", -# "//modules/drivers/gnss/proto:gnss_status_cc_proto", -# "//modules/drivers/lidar/proto:config_cc_proto", -# "//modules/drivers/lidar/proto:hesai_config_cc_proto", -# "//modules/drivers/lidar/proto:hesai_cc_proto", -# "//modules/drivers/lidar/proto:lidar_parameter_cc_proto", -# "//modules/drivers/lidar/proto:robosense_config_cc_proto", -# "//modules/drivers/lidar/proto:robosense_cc_proto", -# "//modules/drivers/lidar/proto:velodyne_config_cc_proto", -# "//modules/drivers/lidar/proto:velodyne_cc_proto", -# "//modules/drivers/microphone/proto:audio_cc_proto", -# "//modules/drivers/microphone/proto:microphone_config_cc_proto", -# "//modules/drivers/radar/conti_radar/proto:conti_radar_conf_cc_proto", -# "//modules/drivers/radar/racobit_radar/proto:racobit_radar_conf_cc_proto", -# "//modules/drivers/radar/ultrasonic_radar/proto:ultrasonic_radar_conf_cc_proto", -# "//modules/drivers/smartereye/proto:config_cc_proto", -# "//modules/drivers/tools/image_decompress/proto:config_cc_proto", -# "//modules/drivers/video/proto:video_h265cfg_cc_proto", - -# ], -# ) - -# install_files( -# name = "pb_drivers_py", -# dest = "drivers/python/modules/drivers", -# files = [ -# "//modules/drivers/camera/proto:config_py_pb2", -# "//modules/drivers/canbus/proto:sensor_canbus_conf_py_pb2", -# "//modules/drivers/gnss/proto:config_py_pb2", -# "//modules/drivers/gnss/proto:gnss_status_py_pb2", -# "//modules/drivers/lidar/proto:config_py_pb2", -# "//modules/drivers/lidar/proto:hesai_config_py_pb2", -# "//modules/drivers/lidar/proto:hesai_py_pb2", -# "//modules/drivers/lidar/proto:lidar_parameter_py_pb2", -# "//modules/drivers/lidar/proto:robosense_config_py_pb2", -# "//modules/drivers/lidar/proto:robosense_py_pb2", -# "//modules/drivers/lidar/proto:velodyne_py_pb2", -# "//modules/drivers/lidar/proto:velodyne_config_py_pb2", -# #"//modules/drivers/lidar/robosense/proto:lidars_filter_config_py_pb2", -# #"//modules/drivers/lidar/robosense/proto:sensor_suteng_conf_py_pb2", -# #"//modules/drivers/lidar/robosense/proto:sensor_suteng_py_pb2", -# "//modules/drivers/microphone/proto:microphone_config_py_pb2", -# "//modules/drivers/microphone/proto:audio_py_pb2", -# "//modules/drivers/radar/conti_radar/proto:conti_radar_conf_py_pb2", -# "//modules/drivers/radar/racobit_radar/proto:racobit_radar_conf_py_pb2", -# "//modules/drivers/radar/ultrasonic_radar/proto:ultrasonic_radar_conf_py_pb2", -# "//modules/drivers/smartereye/proto:config_py_pb2", -# "//modules/drivers/tools/image_decompress/proto:config_py_pb2", -# "//modules/drivers/video/proto:video_h265cfg_py_pb2" -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_src", -# ":install_drivers_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_src", -# src_dir = ["."], -# dest = "drivers/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_hdrs", -# src_dir = ["."], -# dest = "drivers/include", -# filter = "*.h", -# ) - -apollo_package() \ No newline at end of file diff --git a/modules/drivers/camera/BUILD b/modules/drivers/camera/BUILD index 6562fbc071a..8cfe4bc806e 100644 --- a/modules/drivers/camera/BUILD +++ b/modules/drivers/camera/BUILD @@ -1,6 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_x86_64", "if_aarch64", "if_gpu") @@ -8,65 +6,41 @@ package(default_visibility = ["//visibility:public"]) CAMERA_COPTS = ['-DMODULE_NAME=\\"camera\\"'] -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_camera_src", -# ":install_drivers_camera_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_camera_src", -# src_dir = ["."], -# dest = "drivers-camera/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_camera_hdrs", -# src_dir = ["."], -# dest = "drivers-camera/include", -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-camera/include", -# data = [ -# "//modules/drivers/camera/proto:config_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_camera_py", -# dest = "drivers-camera/python/modules/drivers/camera", -# files = [ -# "//modules/drivers/camera/proto:config_py_pb2", -# ], -# ) - -cc_binary( +apollo_component( name = "libcamera_component.so", + srcs = ["camera_component.cc"], + hdrs = ["camera_component.h"], + copts = CAMERA_COPTS, linkopts = [ "-latomic", ], - linkshared = True, - linkstatic = True, deps = [ - ":camera_component_lib", + ":apollo_camera_util", + "//cyber", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/basic_msgs:header_cc_proto", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", "@ffmpeg//:avcodec", "@ffmpeg//:avformat", "@ffmpeg//:swscale", ], ) -cc_binary( +apollo_component( name = "libcamera_compress_component.so", - linkshared = True, - linkstatic = True, + srcs = ["compress_component.cc"], + hdrs = ["compress_component.h"], + copts = CAMERA_COPTS, deps = [ - ":compress_component_lib", + "//cyber", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/basic_msgs:header_cc_proto", + "//modules/drivers/camera/proto:config_cc_proto", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "@opencv//:core", + "@opencv//:highgui", + "@opencv//:imgcodecs", + "@opencv//:imgproc", ], ) @@ -79,79 +53,8 @@ filegroup( ]), ) -# filegroup( -# name = "package_data", -# srcs = [ -# ":cyberfile.xml", -# ":drivers-camera.BUILD", -# ], -# ) - -# install( -# name = "install_package_data", -# data_dest = "drivers-camera", -# data = ["package_data"], -# ) - -# install( -# name = "install", -# data_dest = "drivers-camera/addition_data", -# library_dest = "drivers-camera/lib", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libcamera_component.so", -# ":libcamera_compress_component.so" -# ], -# deps = [ -# ":pb_hdrs", -# ":pb_drivers_camera_py", -# "install_package_data" -# ] -# ) - -cc_library( - name = "camera_component_lib", - srcs = ["camera_component.cc"], - hdrs = ["camera_component.h"], - alwayslink = True, - copts = CAMERA_COPTS, - deps = [ - ":camera", - "//cyber", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - ], -) - -cc_library( - name = "compress_component_lib", - srcs = ["compress_component.cc"], - hdrs = ["compress_component.h"], - copts = CAMERA_COPTS, - alwayslink = True, - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/drivers/camera/proto:config_cc_proto", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - ] + if_aarch64( - [ - "@nvjpeg//:nvjpeg" - ], [ - "@opencv//:core", - "@opencv//:highgui", - "@opencv//:imgcodecs", - "@opencv//:imgproc", - ], - ), -) - -cc_library( - name = "camera", +apollo_cc_library( + name = "apollo_camera_util", srcs = select( { "@platforms//cpu:x86_64": [ @@ -183,12 +86,7 @@ cc_library( "@ffmpeg//:avcodec", ] + if_x86_64( ["@adv_plat"], - ) + if_aarch64( - ["//modules/drivers/camera/format:convert",] ), - copts = [ - '-fopenmp', - ], ) apollo_package() diff --git a/modules/drivers/camera/compress_component.cc b/modules/drivers/camera/compress_component.cc index a421977f97e..00ba8fe5c5a 100644 --- a/modules/drivers/camera/compress_component.cc +++ b/modules/drivers/camera/compress_component.cc @@ -17,19 +17,12 @@ #include "modules/drivers/camera/compress_component.h" #include +#include +#include - -#ifdef __aarch64__ -#include "NvBufSurface.h" -#else #include "opencv2/core/core.hpp" #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" -#endif - -#include -#include - namespace apollo { namespace drivers { @@ -56,42 +49,6 @@ bool CompressComponent::Init() { writer_ = node_->CreateWriter( config_.compress_conf().output_channel()); -#ifdef __aarch64__ - buffer_size_ = config_.compress_conf().width() * - config_.compress_conf().height() * 3 / 2; - try { - nvbuffer_pool_.reset(new CCObjectPool( - config_.compress_conf().image_pool_size())); - nvbuffer_pool_->ConstructAll( - V4L2_PIX_FMT_YUV420M, config_.compress_conf().width(), - config_.compress_conf().height(), 0); - for (size_t i = 0; i < config_.compress_conf().image_pool_size(); i++) { - nvbuffer_pool_->GetObject()->allocateMemory(); - } - } catch (const std::bad_alloc& e) { - AERROR << e.what(); - return false; - } - - try { - downsampled_image_pool_.reset( - new CCObjectPool, - std::vector>>( - config_.compress_conf().image_pool_size())); - downsampled_image_pool_->ConstructAll(); - for (size_t i = 0; i < config_.compress_conf().image_pool_size(); i++) { - (downsampled_image_pool_->GetObject()->first).reserve(buffer_size_); - (downsampled_image_pool_->GetObject()->second).reserve(buffer_size_); - } - } catch (const std::bad_alloc& e) { - AERROR << e.what(); - return false; - } - - jpegenc_ = NvJPEGEncoder::createJPEGEncoder("jpegenc"); - jpegenc_->setCropRect(0, 0, 0, 0); -#endif - return true; } @@ -110,32 +67,6 @@ bool CompressComponent::Proc(const std::shared_ptr& image) { compressed_image->set_height(height_); compressed_image->set_width(width_); -#ifdef __aarch64__ - compressed_image->set_format(image->encoding() + "; jpeg compressed"); - auto nvbuffer = nvbuffer_pool_->GetObject(); - auto downsampled_image = downsampled_image_pool_->GetObject(); - if (cyber_unlikely(YUV422ToYUV420( - const_cast(image->data().data()), - (downsampled_image->first).data()) != 0)) { - AERROR << "Failed to downsample image"; - return false; - } - if (cyber_unlikely(ReadBuffer( - (downsampled_image->first).data(), &(*nvbuffer)) != 0)) { - AERROR << "Failed to convert image to nvbuffer"; - return false; - } - auto out_buffer = (downsampled_image->second).data(); - auto buffer_size = static_cast(buffer_size_); - - auto ret = jpegenc_->encodeFromBuffer(*nvbuffer, JCS_YCbCr, - &out_buffer, buffer_size, 95); - if (cyber_unlikely(ret != 0)) { - AERROR << "nvjpeg failed to compress image"; - } - compressed_image->set_data((downsampled_image->second).data(), - buffer_size); -#else compressed_image->set_format(image->encoding() + "; jpeg compressed bgr8"); std::vector params; @@ -158,70 +89,11 @@ bool CompressComponent::Proc(const std::shared_ptr& image) { AERROR << "cv::imencode (jpeg) exception :" << e.what(); return false; } -#endif + writer_->Write(compressed_image); return true; } -#ifdef __aarch64__ -int CompressComponent::YUV422ToYUV420(char* src, char* dst) { - static uint line_length = width_ * 2; - static uint y_num = width_ * height_; - static uint cb_start = y_num; - static uint cr_start = cb_start + cb_start / 4; - uint i, j, k = 0; - - if (cyber_unlikely(!src || !dst)) - return -1; - - // Pick up y component - for (i = 0; i < y_num; i++) - dst[i] = src[i*2]; - - // Interlaced scanning for picking up cb component - for (i = 0; i < height_; i = i+2) { - int offset = i*line_length; - for (j = 1; j < line_length; j = j+4) { - dst[cb_start+k] = src[offset+j]; - k++; - } - } - - // Interlaced scanning for picking up cr component - k = 0; - for (i = 1; i < height_; i = i+2) { - int offset = i*line_length; - for (j = 3; j < width_*2; j = j+4) { - dst[cr_start+k] = src[offset+j]; - k++; - } - } - - return 0; -} - -int CompressComponent::ReadBuffer(char* file_buffer, NvBuffer* buffer) { - uint32_t i, j; - char* data; - - for (i = 0; i < buffer->n_planes; i++) { - NvBuffer::NvBufferPlane &plane = buffer->planes[i]; - int bytes_to_read = - plane.fmt.bytesperpixel * plane.fmt.width; - - data = reinterpret_cast(plane.data); - plane.bytesused = 0; - for (j = 0; j < plane.fmt.height; j++) { - memcpy(data, file_buffer, bytes_to_read); - data += plane.fmt.stride; - file_buffer += bytes_to_read; - } - plane.bytesused = plane.fmt.stride * plane.fmt.height; - } - return 0; -} -#endif - } // namespace camera } // namespace drivers } // namespace apollo diff --git a/modules/drivers/camera/compress_component.h b/modules/drivers/camera/compress_component.h index 6bc5bda1f10..3917590be8b 100644 --- a/modules/drivers/camera/compress_component.h +++ b/modules/drivers/camera/compress_component.h @@ -25,12 +25,6 @@ #include "modules/drivers/camera/proto/config.pb.h" #include "modules/common_msgs/sensor_msgs/sensor_image.pb.h" -#ifdef __aarch64__ -#include "NvJpegEncoder.h" -#include "NvBuffer.h" -#include "NvUtils.h" -#endif - namespace apollo { namespace drivers { namespace camera { @@ -52,18 +46,6 @@ class CompressComponent : public Component { Config config_; uint width_; uint height_; - -#ifdef __aarch64__ - int YUV422ToYUV420(char* src, char* dst); - int ReadBuffer(char* file_buffer, NvBuffer* buffer); - - NvJPEGEncoder* jpegenc_; - int buffer_size_; - std::shared_ptr> nvbuffer_pool_; - std::shared_ptr< - CCObjectPool, std::vector>> - > downsampled_image_pool_; -#endif }; CYBER_REGISTER_COMPONENT(CompressComponent) diff --git a/modules/drivers/camera/drivers-camera.BUILD b/modules/drivers/camera/drivers-camera.BUILD deleted file mode 100644 index 54e113ab1b4..00000000000 --- a/modules/drivers/camera/drivers-camera.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "drivers-camera", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/*.so*"]), - include_prefix = "modules/drivers/camera", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/drivers/camera/usb_cam.cc b/modules/drivers/camera/usb_cam.cc index e84c58273cd..4307f6fc866 100644 --- a/modules/drivers/camera/usb_cam.cc +++ b/modules/drivers/camera/usb_cam.cc @@ -37,8 +37,10 @@ #include #include +#ifndef __aarch64__ #include "adv_trigger.h" #include "modules/drivers/camera/util.h" +#endif #include "modules/drivers/camera/usb_cam.h" @@ -431,6 +433,7 @@ bool UsbCam::init_device(void) { return true; } +#ifndef __aarch64__ bool UsbCam::set_adv_trigger() { AINFO << "Trigger enable, dev:" << config_->camera_dev() << ", fps:" << config_->trigger_fps() @@ -445,6 +448,7 @@ bool UsbCam::set_adv_trigger() { } return true; } +#endif int UsbCam::xioctl(int fd, int request, void* arg) { int r = 0; @@ -970,8 +974,14 @@ bool UsbCam::process_image(void* src, int len, CameraImagePtr dest) { if (config_->output_type() == YUYV) { memcpy(dest->image, src, dest->width * dest->height * 2); } else if (config_->output_type() == RGB) { +#ifndef __aarch64__ yuyv2rgb_avx((unsigned char*)src, (unsigned char*)dest->image, dest->width * dest->height); +#else + convert_yuv_to_rgb_buffer((unsigned char*)src, + (unsigned char*)dest->image, dest->width, + dest->height); +#endif } else { AERROR << "unsupported output format:" << config_->output_type(); return false; @@ -1084,6 +1094,61 @@ bool UsbCam::wait_for_device() { return true; } +#ifdef __aarch64__ +int UsbCam::convert_yuv_to_rgb_pixel(int y, int u, int v) { + unsigned int pixel32 = 0; + unsigned char* pixel = (unsigned char*)&pixel32; + int r, g, b; + r = (int)((double)y + (1.370705 * ((double)v - 128.0))); + g = (int)((double)y - (0.698001 * ((double)v - 128.0)) - + (0.337633 * ((double)u - 128.0))); + b = (int)((double)y + (1.732446 * ((double)u - 128.0))); + if (r > 255) r = 255; + if (g > 255) g = 255; + if (b > 255) b = 255; + if (r < 0) r = 0; + if (g < 0) g = 0; + if (b < 0) b = 0; + pixel[0] = (unsigned char)r; + pixel[1] = (unsigned char)g; + pixel[2] = (unsigned char)b; + return pixel32; +} + +int UsbCam::convert_yuv_to_rgb_buffer(unsigned char* yuv, unsigned char* rgb, + unsigned int width, unsigned int height) { + unsigned int in, out = 0; + unsigned int pixel_16; + unsigned char pixel_24[3]; + unsigned int pixel32; + int y0, u, y1, v; + + for (in = 0; in < width * height * 2; in += 4) { + pixel_16 = + yuv[in + 3] << 24 | yuv[in + 2] << 16 | yuv[in + 1] << 8 | yuv[in + 0]; + y0 = (pixel_16 & 0x000000ff); + u = (pixel_16 & 0x0000ff00) >> 8; + y1 = (pixel_16 & 0x00ff0000) >> 16; + v = (pixel_16 & 0xff000000) >> 24; + pixel32 = convert_yuv_to_rgb_pixel(y0, u, v); + pixel_24[0] = (unsigned char)(pixel32 & 0x000000ff); + pixel_24[1] = (unsigned char)((pixel32 & 0x0000ff00) >> 8); + pixel_24[2] = (unsigned char)((pixel32 & 0x00ff0000) >> 16); + rgb[out++] = pixel_24[0]; + rgb[out++] = pixel_24[1]; + rgb[out++] = pixel_24[2]; + pixel32 = convert_yuv_to_rgb_pixel(y1, u, v); + pixel_24[0] = (unsigned char)(pixel32 & 0x000000ff); + pixel_24[1] = (unsigned char)((pixel32 & 0x0000ff00) >> 8); + pixel_24[2] = (unsigned char)((pixel32 & 0x00ff0000) >> 16); + rgb[out++] = pixel_24[0]; + rgb[out++] = pixel_24[1]; + rgb[out++] = pixel_24[2]; + } + return 0; +} +#endif + void UsbCam::reconnect() { stop_capturing(); uninit_device(); diff --git a/modules/drivers/camera/usb_cam.h b/modules/drivers/camera/usb_cam.h index 39c01e35e54..d3b452d67fa 100644 --- a/modules/drivers/camera/usb_cam.h +++ b/modules/drivers/camera/usb_cam.h @@ -41,8 +41,10 @@ #include #include +#ifndef __aarch64__ #include #include +#endif extern "C" { #include @@ -129,6 +131,11 @@ class UsbCam { int init_mjpeg_decoder(int image_width, int image_height); void mjpeg2rgb(char* mjepg_buffer, int len, char* rgb_buffer, int pixels); +#ifdef __aarch64__ + int convert_yuv_to_rgb_pixel(int y, int u, int v); + int convert_yuv_to_rgb_buffer(unsigned char* yuv, unsigned char* rgb, + unsigned int width, unsigned int height); +#endif bool init_read(unsigned int buffer_size); bool init_mmap(void); diff --git a/modules/drivers/canbus/BUILD b/modules/drivers/canbus/BUILD index 28b305d4390..acc15fb453b 100644 --- a/modules/drivers/canbus/BUILD +++ b/modules/drivers/canbus/BUILD @@ -1,115 +1,174 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools/platform:build_defs.bzl", "copts_if_esd_can", "if_esd_can") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_canbus_src", -# ":install_drivers_canbus_hdrs" -# ], -# ) +apollo_cc_library( + name = "apollo_drivers_canbus", + srcs = [ + "sensor_gflags.cc", + "can_client/can_client_factory.cc", + "can_client/fake/fake_can_client.cc", + "can_client/hermes_can/hermes_can_client.cc", + "can_client/socket/socket_can_client_raw.cc", + "common/byte.cc", + ] + if_esd_can(["can_client/esd/esd_can_client.cc",]), + hdrs = [ + "sensor_gflags.h", + "can_client/can_client.h", + "can_client/can_client_factory.h", + "can_client/fake/fake_can_client.h", + "can_client/hermes_can/bcan.h", + "can_client/hermes_can/bcan_defs.h", + "can_client/hermes_can/hermes_can_client.h", + "can_client/socket/socket_can_client_raw.h", + "can_comm/can_receiver.h", + "can_comm/can_sender.h", + "can_comm/message_manager.h", + "can_comm/protocol_data.h", + "common/byte.cc", + "common/byte.h", + "common/canbus_consts.h", + ] + if_esd_can(["can_client/esd/esd_can_client.h",]), + copts = copts_if_esd_can(), + deps = [ + "//cyber", + "//modules/common/util:common_util", + "//modules/common/monitor_log", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", + "//third_party/can_card_library/hermes_can", + "@com_github_gflags_gflags//:gflags", + "@com_google_googletest//:gtest", + ] + if_esd_can([ + "//third_party/can_card_library/esd_can", + ]), +) -# install_src_files( -# name = "install_drivers_canbus_src", -# src_dir = ["."], -# dest = "drivers-canbus/src", -# filter = "*", -# ) +apollo_cc_test( + name = "fake_can_client_test", + size = "small", + srcs = ["can_client/fake/fake_can_client_test.cc"], + deps = [ + "//cyber", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", + ], +) -# install_src_files( -# name = "install_drivers_canbus_hdrs", -# src_dir = ["."], -# dest = "drivers-canbus/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "hermes_can_client_test", + size = "small", + srcs = ["can_client/hermes_can/hermes_can_client_test.cc"], + deps = [ + "//cyber", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", + ], +) -# install( -# name = "pb_hdrs", -# data_dest = "drivers-canbus/include", -# data = [ -# "//modules/drivers/canbus/proto:sensor_canbus_conf_cc_proto", -# ], -# ) +apollo_cc_test( + name = "socket_can_client_raw_test", + size = "small", + srcs = ["can_client/socket/socket_can_client_raw_test.cc"], + deps = [ + "//cyber", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", + ], +) -# install_files( -# name = "pb_drivers_canbus_py", -# dest = "drivers-canbus/python/modules/drivers/canbus", -# files = [ -# "//modules/drivers/canbus/proto:sensor_canbus_conf_py_pb2", -# ], -# ) +apollo_cc_test( + name = "can_sender_test", + size = "small", + srcs = ["can_comm/can_sender_test.cc"], + deps = [ + "//cyber", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", + ], +) -# install( -# name = "install", -# library_dest = "drivers-canbus/lib", -# targets = [ -# ":libsensor_gflags.so", -# ":libsensor_canbus.so" -# ], -# data = [ -# ":cyberfile.xml", -# "drivers-canbus.BUILD", -# ], -# data_dest = "drivers-canbus", -# visibility = ["//visibility:public"], -# deps = [ -# ":pb_drivers_canbus_py", -# ":pb_hdrs", -# ] -# ) +apollo_cc_test( + name = "can_receiver_test", + size = "small", + srcs = ["can_comm/can_receiver_test.cc"], + linkstatic = True, + deps = [ + "//cyber", + "//modules/common_msgs/basic_msgs:drive_state_cc_proto", + "//modules/common_msgs/basic_msgs:header_cc_proto", + "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", + ], +) -cc_binary( - name = "libsensor_gflags.so", - srcs = ["sensor_gflags.cc", "sensor_gflags.h"], - linkshared = True, +apollo_cc_test( + name = "protocol_data_test", + size = "small", + srcs = ["can_comm/protocol_data_test.cc"], linkstatic = True, deps = [ - "@com_github_gflags_gflags//:gflags", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "sensor_gflags", - srcs = ["libsensor_gflags.so"], - hdrs = ["sensor_gflags.h"], - alwayslink = True, +apollo_cc_test( + name = "message_manager_test", + size = "small", + srcs = ["can_comm/message_manager_test.cc"], deps = [ - "@com_github_gflags_gflags//:gflags", + "//cyber", + "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "sensor_canbus_lib", - srcs = ["libsensor_canbus.so"], - alwayslink = True, +apollo_cc_test( + name = "esd_can_client_test", + size = "small", + srcs = if_esd_can(["can_client/esd/esd_can_client_test.cc"]), + deps = if_esd_can([ + ":apollo_drivers_canbus", + "//cyber", + ]) + [ + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_binary( + name = "can_client_tool", + srcs = ["can_client/can_client_tool.cc"], deps = [ - ":sensor_gflags", - "//modules/common/monitor_log", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_receiver", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//cyber", + "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", + ":apollo_drivers_canbus", + "@com_github_gflags_gflags//:gflags", ], ) -cc_binary( - name = "libsensor_canbus.so", - srcs = ["sensor_canbus.h"], - linkshared = True, - linkstatic = True, +apollo_cc_test( + name = "can_client_factory_test", + size = "small", + srcs = ["can_client/can_client_factory_test.cc"], deps = [ - ":sensor_gflags", - "//modules/common/monitor_log", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_receiver", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", + ":apollo_drivers_canbus", + "@com_google_googletest//:gtest_main", ], ) apollo_package() + cpplint() diff --git a/modules/drivers/canbus/can_client/BUILD b/modules/drivers/canbus/can_client/BUILD deleted file mode 100644 index 7efaf1a2701..00000000000 --- a/modules/drivers/canbus/can_client/BUILD +++ /dev/null @@ -1,71 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools/platform:build_defs.bzl", "copts_if_esd_can", "if_esd_can") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "drivers/bin", -# targets = [ -# ":can_client_tool", -# ], -# ) - -cc_library( - name = "can_client_factory", - srcs = ["can_client_factory.cc"], - hdrs = ["can_client_factory.h"], - alwayslink = True, - copts = copts_if_esd_can(), - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/drivers/canbus/can_client", - "//modules/drivers/canbus/can_client/fake:fake_can_client", - "//modules/drivers/canbus/can_client/hermes_can:hermes_can_client", - "//modules/drivers/canbus/can_client/socket:socket_can_client_raw", - "//modules/drivers/canbus/common:canbus_common", - "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", - ] + if_esd_can([ - "//modules/drivers/canbus/can_client/esd:esd_can_client", - ]), -) - -cc_library( - name = "can_client", - hdrs = ["can_client.h"], - alwayslink = True, - deps = [ - "//modules/common/util", - "//modules/drivers/canbus/common:canbus_common", - "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", - ], -) - -cc_binary( - name = "can_client_tool", - srcs = ["can_client_tool.cc"], - deps = [ - "//cyber", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_test( - name = "can_client_factory_test", - size = "small", - srcs = ["can_client_factory_test.cc"], - deps = [ - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/canbus/can_client/esd/BUILD b/modules/drivers/canbus/can_client/esd/BUILD deleted file mode 100644 index ac3e58361ed..00000000000 --- a/modules/drivers/canbus/can_client/esd/BUILD +++ /dev/null @@ -1,34 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools/platform:build_defs.bzl", "if_esd_can") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "esd_can_client", - srcs = if_esd_can(["esd_can_client.cc"]), - hdrs = if_esd_can(["esd_can_client.h"]), - deps = if_esd_can([ - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/drivers/canbus:sensor_gflags", - "//modules/drivers/canbus/can_client", - "//third_party/can_card_library/esd_can", - ]), -) - -cc_test( - name = "esd_can_client_test", - size = "small", - srcs = if_esd_can(["esd_can_client_test.cc"]), - deps = if_esd_can([ - ":esd_can_client", - "//cyber", - "//modules/drivers/canbus/common:canbus_common", - ]) + [ - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/canbus/can_client/fake/BUILD b/modules/drivers/canbus/can_client/fake/BUILD deleted file mode 100644 index 39a4d2939c8..00000000000 --- a/modules/drivers/canbus/can_client/fake/BUILD +++ /dev/null @@ -1,30 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "fake_can_client", - srcs = ["fake_can_client.cc"], - hdrs = ["fake_can_client.h"], - deps = [ - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/drivers/canbus/can_client", - ], -) - -cc_test( - name = "fake_can_client_test", - size = "small", - srcs = ["fake_can_client_test.cc"], - deps = [ - "//cyber", - "//modules/drivers/canbus/can_client/fake:fake_can_client", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/canbus/can_client/hermes_can/BUILD b/modules/drivers/canbus/can_client/hermes_can/BUILD deleted file mode 100644 index 84a8d85b95b..00000000000 --- a/modules/drivers/canbus/can_client/hermes_can/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "hermes_can_client", - srcs = ["hermes_can_client.cc"], - hdrs = [ - "bcan.h", - "bcan_defs.h", - "hermes_can_client.h", - ], - deps = [ - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/drivers/canbus/can_client", - "//third_party/can_card_library/hermes_can", - ], -) - -cc_test( - name = "hermes_can_client_test", - size = "small", - srcs = ["hermes_can_client_test.cc"], - deps = [ - "//cyber", - "//modules/drivers/canbus/can_client/hermes_can:hermes_can_client", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/canbus/can_client/socket/BUILD b/modules/drivers/canbus/can_client/socket/BUILD deleted file mode 100644 index 7c825349ac9..00000000000 --- a/modules/drivers/canbus/can_client/socket/BUILD +++ /dev/null @@ -1,30 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "socket_can_client_raw", - srcs = ["socket_can_client_raw.cc"], - hdrs = ["socket_can_client_raw.h"], - deps = [ - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/drivers/canbus/can_client", - ], -) - -cc_test( - name = "socket_can_client_raw_test", - size = "small", - srcs = ["socket_can_client_raw_test.cc"], - deps = [ - "//cyber", - "//modules/drivers/canbus/can_client/socket:socket_can_client_raw", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/canbus/can_client/socket/socket_can_client_raw.cc b/modules/drivers/canbus/can_client/socket/socket_can_client_raw.cc index ea1da5d3deb..a846ea57b4b 100644 --- a/modules/drivers/canbus/can_client/socket/socket_can_client_raw.cc +++ b/modules/drivers/canbus/can_client/socket/socket_can_client_raw.cc @@ -229,7 +229,7 @@ ErrorCode SocketCanClientRaw::Receive(std::vector *const frames, } else { cf.id = (recv_frames_[i].can_id & CAN_SFF_MASK); } - ADEBUG << "receive can id is " << cf.id; + ADEBUG << "Socket can receive can id is " << recv_frames_[i].can_id; cf.len = recv_frames_[i].can_dlc; std::memcpy(cf.data, recv_frames_[i].data, recv_frames_[i].can_dlc); frames->push_back(cf); diff --git a/modules/drivers/canbus/can_comm/BUILD b/modules/drivers/canbus/can_comm/BUILD deleted file mode 100644 index 36c5b3971c8..00000000000 --- a/modules/drivers/canbus/can_comm/BUILD +++ /dev/null @@ -1,102 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "can_receiver", - hdrs = ["can_receiver.h"], - deps = [ - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/drivers/canbus/can_client", - "//modules/drivers/canbus/can_comm:message_manager_base", - ], -) - -cc_library( - name = "can_sender", - hdrs = ["can_sender.h"], - deps = [ - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/drivers/canbus/can_client", - "//modules/drivers/canbus/can_comm:message_manager_base", - "@com_google_googletest//:gtest", - ], -) - -cc_library( - name = "message_manager_base", - hdrs = [ - "message_manager.h", - "protocol_data.h", - ], - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/drivers/canbus/common:canbus_common", - ], -) - -cc_test( - name = "can_sender_test", - size = "small", - srcs = ["can_sender_test.cc"], - deps = [ - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", - "//modules/drivers/canbus/can_client/fake:fake_can_client", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "can_receiver_test", - size = "small", - srcs = ["can_receiver_test.cc"], - deps = [ - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common_msgs/basic_msgs:drive_state_cc_proto", - "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", - "//modules/drivers/canbus/can_client/fake:fake_can_client", - "//modules/drivers/canbus/can_comm:can_receiver", - "//modules/drivers/canbus/common:canbus_common", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "protocol_data_test", - size = "small", - srcs = ["protocol_data_test.cc"], - deps = [ - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "message_manager_test", - size = "small", - srcs = ["message_manager_test.cc"], - deps = [ - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/canbus/can_comm/can_sender.h b/modules/drivers/canbus/can_comm/can_sender.h index 102414428f5..8d50d7944ee 100644 --- a/modules/drivers/canbus/can_comm/can_sender.h +++ b/modules/drivers/canbus/can_comm/can_sender.h @@ -299,6 +299,7 @@ int32_t SenderMessage::curr_period() const { template void CanSender::PowerSendThreadFunc() { CHECK_NOTNULL(can_client_); + CHECK_NOTNULL(pt_manager_); sched_param sch; sch.sched_priority = 99; pthread_setschedparam(pthread_self(), SCHED_FIFO, &sch); @@ -371,6 +372,10 @@ common::ErrorCode CanSender::Init( can_client_ = can_client; pt_manager_ = pt_manager; enable_log_ = enable_log; + if (pt_manager_ == nullptr) { + AERROR << "Invalid protocol manager."; + return ::apollo::common::ErrorCode::CANBUS_ERROR; + } return common::ErrorCode::OK; } diff --git a/modules/drivers/canbus/common/BUILD b/modules/drivers/canbus/common/BUILD deleted file mode 100644 index a29dfe60bf0..00000000000 --- a/modules/drivers/canbus/common/BUILD +++ /dev/null @@ -1,54 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# library_dest = "drivers/lib", -# targets = [ -# ":libcanbus_common.so", -# ], -# ) - -cc_binary( - name = "libcanbus_common.so", - srcs = [ - "byte.cc", - "byte.h", - "canbus_consts.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//modules/drivers/canbus:sensor_gflags", - ], -) - -cc_library( - name = "canbus_common", - srcs = ["libcanbus_common.so"], - hdrs = [ - "byte.cc", - "byte.h", - "canbus_consts.h", - ], - deps = [ - "//modules/drivers/canbus:sensor_gflags", - ], -) - -cc_test( - name = "byte_test", - size = "small", - srcs = ["byte_test.cc"], - deps = [ - ":canbus_common", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/canbus/drivers-canbus.BUILD b/modules/drivers/canbus/drivers-canbus.BUILD deleted file mode 100644 index 74a84d2a85f..00000000000 --- a/modules/drivers/canbus/drivers-canbus.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "drivers-canbus", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/*.so*"]), - include_prefix = "modules/drivers/canbus", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/drivers/cyberfile.xml b/modules/drivers/cyberfile.xml deleted file mode 100644 index b21207cd702..00000000000 --- a/modules/drivers/cyberfile.xml +++ /dev/null @@ -1,46 +0,0 @@ - - drivers - local - - Apollo drivers module. - - - Apollo - Apache License 2.0 - https://www.apollo.auto/ - https://github.com/ApolloAuto/apollo - https://github.com/ApolloAuto/apollo/issues - - cyber - common - common-msgs - transform - 3rd-gflags - 3rd-gtest - 3rd-proj - 3rd-eigen3 - 3rd-absl - 3rd-yaml-cpp - 3rd-boost - 3rd-opencv - 3rd-can-card-library - 3rd-camera-library - 3rd-rtklib - 3rd-portaudio - 3rd-ffmpeg - 3rd-adv-plat - - 3rd-pcl - libpcap-dev - - bazel-extend-tools - 3rd-rules-python - 3rd-grpc - 3rd-bazel-skylib - 3rd-rules-proto - 3rd-py - - module - //modules/drivers - - diff --git a/modules/drivers/drivers.BUILD b/modules/drivers/drivers.BUILD deleted file mode 100644 index 68db18f0e61..00000000000 --- a/modules/drivers/drivers.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "drivers", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/*.so*"], exclude=["lib/libsmartereye_component.so"]), - include_prefix = "modules/drivers", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/drivers/gnss/BUILD b/modules/drivers/gnss/BUILD index e866c3456fc..706118394aa 100644 --- a/modules/drivers/gnss/BUILD +++ b/modules/drivers/gnss/BUILD @@ -1,108 +1,86 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) GNSS_COPTS = ['-DMODULE_NAME=\\"gnss\\"'] -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_gnss_src", -# ":install_drivers_gnss_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_gnss_src", -# src_dir = ["."], -# dest = "drivers-gnss/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_gnss_hdrs", -# src_dir = ["."], -# dest = "drivers-gnss/include", -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-gnss/include", -# data = [ -# "//modules/drivers/gnss/proto:config_cc_proto", -# "//modules/drivers/gnss/proto:gnss_status_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_gnss_py", -# dest = "drivers-gnss/python/modules/drivers/gnss", -# files = [ -# "//modules/drivers/gnss/proto:config_py_pb2", -# "//modules/drivers/gnss/proto:gnss_status_py_pb2", -# ], -# ) - -cc_binary( - name = "libgnss_component.so", - linkshared = True, - linkstatic = True, - deps = [":gnss_component_lib"], -) - -cc_library( - name = "gnss_component_lib", - srcs = ["gnss_component.cc"], - hdrs = ["gnss_component.h"], - copts = GNSS_COPTS, - alwayslink = True, +apollo_cc_library( + name = "apollo_drivers_gnss", + srcs = [ + "parser/data_parser.cc", + "parser/novatel_parser.cc", + "parser/rtcm3_parser.cc", + "parser/rtcm_parser.cc", + "stream/ntrip_stream.cc", + "stream/raw_stream.cc", + "stream/serial_stream.cc", + "stream/tcp_stream.cc", + "stream/udp_stream.cc", + ], + hdrs = [ + "parser/data_parser.h", + "parser/novatel_messages.h", + "parser/parser.h", + "parser/rtcm3_parser.h", + "parser/rtcm_decode.h", + "parser/rtcm_parser.h", + "stream/raw_stream.h", + "stream/stream.h", + "stream/tcp_stream.h", + "util/macros.h", + "util/time_conversion.h", + ], deps = [ "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/common/adapters:adapter_gflags", + "//modules/common/math", "//modules/common/monitor_log", + "//modules/common/util:common_util", + "//modules/common/util:util_tool", "//modules/common_msgs/basic_msgs:drive_state_cc_proto", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/basic_msgs:header_cc_proto", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", - "//modules/drivers/gnss/proto:gnss_status_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/common_msgs/localization_msgs:gps_cc_proto", + "//modules/common_msgs/localization_msgs:imu_cc_proto", + "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", + "//modules/common_msgs/sensor_msgs:gnss_cc_proto", + "//modules/common_msgs/sensor_msgs:gnss_raw_observation_cc_proto", + "//modules/common_msgs/sensor_msgs:heading_cc_proto", + "//modules/common_msgs/sensor_msgs:imu_cc_proto", "//modules/common_msgs/sensor_msgs:ins_cc_proto", - "//modules/drivers/gnss/stream:gnss_stream", + "//modules/drivers/gnss/proto:config_cc_proto", + "//modules/drivers/gnss/proto:gnss_status_cc_proto", + "//modules/transform:apollo_transform", + "//third_party/rtklib", + "@com_google_absl//:absl", + "@eigen", + "@proj", ], ) -filegroup( - name = "package_data", - srcs = [ - ":cyberfile.xml", - ":drivers-gnss.BUILD", +apollo_cc_binary( + name = "parser_cli", + srcs = ["test/parser_cli.cc"], + deps = [ + "//cyber", + "//modules/drivers/gnss/proto:gnss_status_cc_proto", + ":apollo_drivers_gnss", + "@com_github_gflags_gflags//:gflags", ], ) -# install( -# name = "install_package_data", -# data_dest = "drivers-gnss", -# data = ["package_data"], -# ) - -# install( -# name = "install", -# data_dest = "drivers-gnss/addition_data", -# library_dest = "drivers-gnss/lib", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libgnss_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# ":pb_drivers_gnss_py", -# ":install_package_data", -# ] -# ) +apollo_component( + name = "libgnss_component.so", + srcs = ["gnss_component.cc",], + hdrs = ["gnss_component.h",], + deps = [":apollo_drivers_gnss"] +) filegroup( name = "runtime_data", @@ -114,4 +92,5 @@ filegroup( ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/drivers/gnss/drivers-gnss.BUILD b/modules/drivers/gnss/drivers-gnss.BUILD deleted file mode 100644 index 6181847167e..00000000000 --- a/modules/drivers/gnss/drivers-gnss.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "drivers-gnss", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/*.so*"]), - include_prefix = "modules/drivers/gnss", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/drivers/gnss/parser/BUILD b/modules/drivers/gnss/parser/BUILD deleted file mode 100644 index b3dad8e2869..00000000000 --- a/modules/drivers/gnss/parser/BUILD +++ /dev/null @@ -1,92 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "gnss_parser", - deps = [ - ":data_parser", - ":novatel_parser", - ":rtcm_parsers", - ], -) - -cc_library( - name = "data_parser", - srcs = ["data_parser.cc"], - hdrs = [ - "data_parser.h", - "parser.h", - ], - copts = ["-Ithird_party/rtklib"], - deps = [ - ":novatel_parser", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/util:util_tool", - "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", - "//modules/common_msgs/sensor_msgs:gnss_cc_proto", - "//modules/drivers/gnss/proto:gnss_status_cc_proto", - "//modules/drivers/gnss/util:gnss_util", - "//modules/common_msgs/localization_msgs:gps_cc_proto", - "//modules/common_msgs/localization_msgs:imu_cc_proto", - "//modules/transform:transform_broadcaster", - "@eigen", - "@proj", - ], -) - -cc_library( - name = "novatel_parser", - srcs = ["novatel_parser.cc"], - hdrs = [ - "novatel_messages.h", - "parser.h", - "rtcm_decode.h", - ], - copts = ["-Ithird_party/rtklib"], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/drivers/gnss/proto:config_cc_proto", - "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", - "//modules/common_msgs/sensor_msgs:gnss_cc_proto", - "//modules/common_msgs/sensor_msgs:gnss_raw_observation_cc_proto", - "//modules/common_msgs/sensor_msgs:heading_cc_proto", - "//modules/common_msgs/sensor_msgs:imu_cc_proto", - "//modules/common_msgs/sensor_msgs:ins_cc_proto", - "//modules/drivers/gnss/util:gnss_util", - "//third_party/rtklib", - ], -) - -cc_library( - name = "rtcm_parsers", - srcs = [ - "rtcm3_parser.cc", - "rtcm_parser.cc", - ], - hdrs = [ - "parser.h", - "rtcm3_parser.h", - "rtcm_decode.h", - "rtcm_parser.h", - ], - copts = ["-Ithird_party/rtklib"], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/drivers/gnss/proto:config_cc_proto", - "//modules/common_msgs/sensor_msgs:gnss_raw_observation_cc_proto", - "//modules/drivers/gnss/util:gnss_util", - "//third_party/rtklib", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/gnss/parser/rtcm_decode.h b/modules/drivers/gnss/parser/rtcm_decode.h index a697e2293aa..e78644f617b 100644 --- a/modules/drivers/gnss/parser/rtcm_decode.h +++ b/modules/drivers/gnss/parser/rtcm_decode.h @@ -16,7 +16,7 @@ #pragma once -#include +#include "third_party/rtklib/rtklib.h" #include "modules/common_msgs/sensor_msgs/gnss_raw_observation.pb.h" namespace apollo { diff --git a/modules/drivers/gnss/stream/BUILD b/modules/drivers/gnss/stream/BUILD deleted file mode 100644 index f49a1b81c36..00000000000 --- a/modules/drivers/gnss/stream/BUILD +++ /dev/null @@ -1,96 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "gnss_stream", - deps = [ - ":ntrip_stream", - ":raw_stream", - ":serial_stream", - ":tcp_stream", - ":udp_stream", - ], -) - -cc_library( - name = "ntrip_stream", - srcs = ["ntrip_stream.cc"], - hdrs = ["tcp_stream.h"], - deps = [ - ":stream", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/util", - ], -) - -cc_library( - name = "raw_stream", - srcs = ["raw_stream.cc"], - hdrs = ["raw_stream.h"], - deps = [ - ":ntrip_stream", - ":serial_stream", - ":stream", - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common_msgs/basic_msgs:drive_state_cc_proto", - "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", - "//modules/common/util:util_tool", - "//modules/drivers/gnss/parser:gnss_parser", - "//modules/drivers/gnss/proto:gnss_status_cc_proto", - "//modules/common_msgs/sensor_msgs:heading_cc_proto", - "//modules/common_msgs/localization_msgs:imu_cc_proto", - "//modules/drivers/gnss/util:gnss_util", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "serial_stream", - srcs = ["serial_stream.cc"], - deps = [ - ":stream", - "//cyber", - "//modules/drivers/gnss/util:gnss_util", - ], -) - -cc_library( - name = "tcp_stream", - srcs = ["tcp_stream.cc"], - hdrs = ["tcp_stream.h"], - deps = [ - ":stream", - "//cyber", - ], -) - -cc_library( - name = "udp_stream", - srcs = ["udp_stream.cc"], - deps = [ - ":stream", - "//cyber", - "//modules/drivers/gnss/util:gnss_util", - ], -) - -cc_library( - name = "stream", - hdrs = ["stream.h"], - deps = [ - "//cyber", - "//modules/drivers/gnss/util:gnss_util", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/gnss/test/BUILD b/modules/drivers/gnss/test/BUILD deleted file mode 100644 index 89df70c575f..00000000000 --- a/modules/drivers/gnss/test/BUILD +++ /dev/null @@ -1,28 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "drivers/bin", -# targets = [ -# ":parser_cli", -# ], -# ) - -cc_binary( - name = "parser_cli", - srcs = ["parser_cli.cc"], - deps = [ - "//cyber", - "//modules/drivers/gnss/proto:gnss_status_cc_proto", - "//modules/drivers/gnss/stream:gnss_stream", - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/gnss/util/BUILD b/modules/drivers/gnss/util/BUILD deleted file mode 100644 index b9f428e96f1..00000000000 --- a/modules/drivers/gnss/util/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "gnss_util", - srcs = [], - hdrs = [ - "macros.h", - "time_conversion.h", - ], -) - -apollo_package() -cpplint() diff --git a/modules/drivers/lidar/BUILD b/modules/drivers/lidar/BUILD index a08b787d25b..2367f93ad03 100644 --- a/modules/drivers/lidar/BUILD +++ b/modules/drivers/lidar/BUILD @@ -1,96 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_lidar_src", -# ":install_drivers_lidar_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_lidar_src", -# src_dir = ["."], -# dest = "drivers-lidar/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_lidar_hdrs", -# src_dir = ["."], -# dest = "drivers-lidar/include", -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-lidar/include", -# data = [ -# "//modules/drivers/lidar/proto:config_cc_proto", -# "//modules/drivers/lidar/proto:hesai_config_cc_proto", -# "//modules/drivers/lidar/proto:hesai_cc_proto", -# "//modules/drivers/lidar/proto:lidar_parameter_cc_proto", -# "//modules/drivers/lidar/proto:robosense_config_cc_proto", -# "//modules/drivers/lidar/proto:robosense_cc_proto", -# "//modules/drivers/lidar/proto:velodyne_config_cc_proto", -# "//modules/drivers/lidar/proto:velodyne_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_camera_py", -# dest = "drivers-lidar/python/modules/drivers/lidar", -# files = [ -# "//modules/drivers/lidar/proto:config_py_pb2", -# "//modules/drivers/lidar/proto:hesai_config_py_pb2", -# "//modules/drivers/lidar/proto:hesai_py_pb2", -# "//modules/drivers/lidar/proto:lidar_parameter_py_pb2", -# "//modules/drivers/lidar/proto:robosense_config_py_pb2", -# "//modules/drivers/lidar/proto:robosense_py_pb2", -# "//modules/drivers/lidar/proto:velodyne_py_pb2", -# "//modules/drivers/lidar/proto:velodyne_config_py_pb2", -# ], -# ) - -filegroup( - name = "package_data", - srcs = [ - ":cyberfile.xml", - ":drivers-lidar.BUILD", - ], -) - -# install( -# name = "install_package_data", -# data_dest = "drivers-lidar", -# data = ["package_data"], -# ) - -# install( -# name = "install", -# data_dest = "drivers-lidar/addition_data", -# library_dest = "drivers-lidar/lib", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# "liblidar_driver_component.so", -# ], -# deps = [ -# ":install_package_data", -# ":pb_hdrs", -# ":pb_drivers_camera_py", -# "//modules/drivers/lidar/hesai:install", -# "//modules/drivers/lidar/robosense:install", -# "//modules/drivers/lidar/velodyne:install", -# ] -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -101,11 +13,10 @@ filegroup( ]), ) -cc_library( - name = "lidar_driver_component_lib", +apollo_component( + name = "liblidar_driver_component.so", srcs = ["lidar_driver_component.cc"], hdrs = ["lidar_driver_component.h"], - alwayslink = True, deps = [ "//cyber", "//modules/drivers/lidar/common/driver_factory:lidar_driver_factory", @@ -113,12 +24,5 @@ cc_library( ], ) -cc_binary( - name = "liblidar_driver_component.so", - linkshared = True, - linkstatic = True, - deps = [":lidar_driver_component_lib"], -) - apollo_package() cpplint() diff --git a/modules/perception/common/lib/calibrator/BUILD b/modules/drivers/lidar/common/BUILD similarity index 69% rename from modules/perception/common/lib/calibrator/BUILD rename to modules/drivers/lidar/common/BUILD index 63f3f67669b..c38a300f025 100644 --- a/modules/perception/common/lib/calibrator/BUILD +++ b/modules/drivers/lidar/common/BUILD @@ -1,7 +1,6 @@ -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) +load("//tools:apollo_package.bzl", "apollo_package") apollo_package() + cpplint() diff --git a/modules/drivers/lidar/common/driver_factory/BUILD b/modules/drivers/lidar/common/driver_factory/BUILD index fcc1d3487e0..c61cc6c11af 100644 --- a/modules/drivers/lidar/common/driver_factory/BUILD +++ b/modules/drivers/lidar/common/driver_factory/BUILD @@ -1,30 +1,28 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "lidar_driver_factory", srcs = ["lidar_driver_factory.cc"], - hdrs = ["lidar_driver_factory.h"], + hdrs = ["lidar_driver_factory.h",], deps = [ - ":driver_base", "//cyber", "//modules/common/util:util_tool", - "//modules/drivers/lidar/hesai/driver", + "//modules/common/util:common_util", + "//modules/drivers/lidar/hesai/driver:apollo_hesai_driver", "//modules/drivers/lidar/proto:config_cc_proto", "//modules/drivers/lidar/proto:lidar_parameter_cc_proto", - # "//modules/drivers/lidar/robosense/driver", - "//modules/drivers/lidar/velodyne/driver", + "//modules/drivers/lidar/velodyne/driver:velodyne_driver_lib", ], ) -cc_library( - name = "driver_base", +apollo_cc_library( + name = "apollo_lidar_driver_base", hdrs = ["driver_base.h"], deps = [ - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/util:util_tool", ], ) diff --git a/modules/drivers/lidar/drivers-lidar.BUILD b/modules/drivers/lidar/drivers-lidar.BUILD deleted file mode 100644 index 733e8bd691a..00000000000 --- a/modules/drivers/lidar/drivers-lidar.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "drivers-lidar", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/*.so*"]), - include_prefix = "modules/drivers/lidar", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/drivers/lidar/hesai/BUILD b/modules/drivers/lidar/hesai/BUILD index bd414e0884c..720795e3b35 100644 --- a/modules/drivers/lidar/hesai/BUILD +++ b/modules/drivers/lidar/hesai/BUILD @@ -1,24 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) HESAI_COPTS = ['-DMODULE_NAME=\\"hesai\\"'] -# install( -# name = "install", -# data_dest = "drivers-lidar/addition_data/hesai", -# library_dest = "drivers-lidar/lib/lidar/hesai", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# "libhesai_driver_component.so", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -29,109 +15,45 @@ filegroup( ]), ) -cc_binary( +apollo_component( name = "libhesai_driver_component.so", - linkshared = True, - linkstatic = True, + srcs = ["parser/hesai_convert_component.cc",], + hdrs = ["parser/hesai_convert_component.h",], deps = [ ":hesai_convert_component", - "//modules/drivers/lidar/hesai/driver:hesai_component", ], ) -cc_library( +apollo_cc_library( name = "hesai_convert_component", - srcs = ["parser/hesai_convert_component.cc"], - hdrs = ["parser/hesai_convert_component.h"], - copts = HESAI_COPTS, - deps = [ - ":parser_factory", - "//cyber", - "//modules/drivers/lidar/hesai/driver", - "//modules/drivers/lidar/proto:hesai_config_cc_proto", + srcs = [ + "parser/parser_factory.cc", + "parser/hesai64_parser.cc", + "parser/hesai40_parser.cc", + "parser/parser.cc", + "input/udp_input.cc", + "parser/tcp_cmd_client.cc", ], - alwayslink = True, -) - -cc_library( - name = "parser_factory", - srcs = ["parser/parser_factory.cc"], - hdrs = ["parser/parser_factory.h"], - copts = HESAI_COPTS, - deps = [ - ":hesai40_parser", - ":hesai64_parser", - ":parser", - "//cyber", + hdrs = [ + "parser/parser_factory.h", + "parser/hesai64_parser.h", + "parser/hesai40_parser.h", + "parser/parser.h", + "input/udp_input.h", + "parser/tcp_cmd_client.h", + "common/type_defs.h", + "common/const_var.h", ], -) - -cc_library( - name = "hesai64_parser", - srcs = ["parser/hesai64_parser.cc"], - hdrs = ["parser/hesai64_parser.h"], copts = HESAI_COPTS, deps = [ - ":parser", - "//cyber", - ], -) - -cc_library( - name = "hesai40_parser", - srcs = ["parser/hesai40_parser.cc"], - hdrs = ["parser/hesai40_parser.h"], - copts = HESAI_COPTS, - deps = [ - ":parser", - "//cyber", - ], -) - -cc_library( - name = "parser", - srcs = ["parser/parser.cc"], - hdrs = ["parser/parser.h"], - copts = HESAI_COPTS, - deps = [ - ":tcp_cmd_client", - ":type_defs", "//cyber", "//modules/drivers/lidar/proto:hesai_cc_proto", "//modules/drivers/lidar/proto:hesai_config_cc_proto", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", + "//modules/drivers/lidar/common/driver_factory:apollo_lidar_driver_base", + "//modules/drivers/lidar/proto:config_cc_proto", ], ) -cc_library( - name = "udp_input", - srcs = ["input/udp_input.cc"], - hdrs = ["input/udp_input.h"], - copts = HESAI_COPTS, - deps = [ - ":type_defs", - "//cyber", - ], -) - -cc_library( - name = "tcp_cmd_client", - srcs = ["parser/tcp_cmd_client.cc"], - hdrs = ["parser/tcp_cmd_client.h"], - copts = HESAI_COPTS, - deps = ["//cyber"], -) - -cc_library( - name = "type_defs", - hdrs = ["common/type_defs.h"], - deps = [":const_var"], -) - -cc_library( - name = "const_var", - hdrs = ["common/const_var.h"], -) - apollo_package() cpplint() diff --git a/modules/drivers/lidar/hesai/driver/BUILD b/modules/drivers/lidar/hesai/driver/BUILD index 7cae0d9d6c6..8cebe275110 100644 --- a/modules/drivers/lidar/hesai/driver/BUILD +++ b/modules/drivers/lidar/hesai/driver/BUILD @@ -1,40 +1,35 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) HESAI_COPTS = ['-DMODULE_NAME=\\"hesai\\"'] -cc_library( +apollo_cc_library( name = "hesai_component", srcs = ["hesai_component.cc"], hdrs = ["hesai_component.h"], copts = HESAI_COPTS, deps = [ - ":driver", + ":apollo_hesai_driver", "//cyber", - "//modules/drivers/lidar/hesai:parser_factory", + "//modules/drivers/lidar/hesai:hesai_convert_component", "//modules/drivers/lidar/proto:hesai_config_cc_proto", ], - alwayslink = True, ) -cc_library( - name = "driver", +apollo_cc_library( + name = "apollo_hesai_driver", srcs = ["driver.cc"], hdrs = ["driver.h"], copts = HESAI_COPTS, deps = [ "//cyber", - "//modules/drivers/lidar/common/driver_factory:driver_base", - "//modules/drivers/lidar/hesai:parser", - "//modules/drivers/lidar/hesai:parser_factory", - "//modules/drivers/lidar/hesai:type_defs", - "//modules/drivers/lidar/hesai:udp_input", + "//modules/drivers/lidar/common/driver_factory:apollo_lidar_driver_base", + "//modules/drivers/lidar/hesai:hesai_convert_component", "//modules/drivers/lidar/proto:config_cc_proto", ], ) apollo_package() -cpplint() +cpplint() \ No newline at end of file diff --git a/modules/drivers/lidar/robosense/BUILD b/modules/drivers/lidar/robosense/BUILD index 44fb2a0a800..a10ef2b94e3 100755 --- a/modules/drivers/lidar/robosense/BUILD +++ b/modules/drivers/lidar/robosense/BUILD @@ -1,22 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# data = [ -# ":runtime_data", -# ], -# data_dest = "drivers-lidar/addition_data/robosense", -# library_dest = "drivers-lidar/lib/lidar/robosense", -# targets = [ -# "libsuteng_driver_component.so", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -28,15 +14,8 @@ filegroup( ]), ) -cc_binary( +apollo_component( name = "libsuteng_driver_component.so", - linkshared = True, - linkstatic = True, - deps = [":driver"], -) - -cc_library( - name = "driver", srcs = glob( ["**/*.cpp"], ), @@ -46,7 +25,7 @@ cc_library( copts = ['-DMODULE_NAME=\\"suteng\\"'], deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", "//modules/drivers/lidar/robosense/proto:sensor_suteng_cc_proto", "//modules/drivers/lidar/robosense/proto:lidars_filter_conf_proto", @@ -55,7 +34,6 @@ cc_library( "@eigen", "@local_config_pcl//:pcl", ], - alwayslink = True, ) apollo_package() diff --git a/modules/drivers/lidar/velodyne/BUILD b/modules/drivers/lidar/velodyne/BUILD index 5ead150cbdb..19af682930c 100644 --- a/modules/drivers/lidar/velodyne/BUILD +++ b/modules/drivers/lidar/velodyne/BUILD @@ -1,23 +1,7 @@ -# load("//tools/install:install.bzl", "install") load("//tools:apollo_package.bzl", "apollo_package") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# data_dest = "drivers-lidar/addition_data/velodyne", -# library_dest = "drivers-lidar/lib/lidar/velodyne", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# "//modules/drivers/lidar/velodyne/compensator:libvelodyne_compensator_component.so", -# "//modules/drivers/lidar/velodyne/driver:libvelodyne_driver_component.so", -# "//modules/drivers/lidar/velodyne/fusion:libvelodyne_fusion_component.so", -# "//modules/drivers/lidar/velodyne/parser:libvelodyne_convert_component.so", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ diff --git a/modules/drivers/lidar/velodyne/compensator/BUILD b/modules/drivers/lidar/velodyne/compensator/BUILD index 22f0f655f22..5ce2c1f4ecd 100644 --- a/modules/drivers/lidar/velodyne/compensator/BUILD +++ b/modules/drivers/lidar/velodyne/compensator/BUILD @@ -1,50 +1,22 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# library_dest = "drivers/lib/lidar/velodyne/compensator", -# targets = [ -# ":libvelodyne_compensator_component.so", -# ], -# ) - -cc_binary( +apollo_component( name = "libvelodyne_compensator_component.so", - linkshared = True, - linkstatic = True, - deps = [":compensator_component_lib"], -) - -cc_library( - name = "compensator_component_lib", - srcs = ["compensator_component.cc"], - hdrs = ["compensator_component.h"], + srcs = ["compensator_component.cc", "compensator.cc"], + hdrs = ["compensator_component.h", "compensator.h"], copts = ['-DMODULE_NAME=\\"velodyne\\"'], deps = [ "//cyber", + "@eigen", "//modules/common/adapters:adapter_gflags", "//modules/common/latency_recorder", "//modules/drivers/lidar/proto:velodyne_cc_proto", - "//modules/drivers/lidar/velodyne/compensator:compensator_lib", - ], - alwayslink = True, -) - -cc_library( - name = "compensator_lib", - srcs = ["compensator.cc"], - hdrs = ["compensator.h"], - copts = ['-DMODULE_NAME=\\"velodyne\\"'], - deps = [ "//modules/drivers/lidar/proto:velodyne_config_cc_proto", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/transform:buffer", - "@eigen", + "//modules/transform:apollo_transform", ], ) diff --git a/modules/drivers/lidar/velodyne/driver/BUILD b/modules/drivers/lidar/velodyne/driver/BUILD index 001dcb2b757..e63e1841b96 100644 --- a/modules/drivers/lidar/velodyne/driver/BUILD +++ b/modules/drivers/lidar/velodyne/driver/BUILD @@ -1,41 +1,17 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# library_dest = "drivers/lib/lidar/velodyne/driver", -# targets = [ -# ":libvelodyne_driver_component.so", -# ], -# ) - -cc_binary( +apollo_component( name = "libvelodyne_driver_component.so", - linkshared = True, - linkstatic = True, - deps = [":velodyne_driver_component_lib"], -) - -cc_library( - name = "velodyne_driver_component_lib", - srcs = ["velodyne_driver_component.cc"], - hdrs = ["velodyne_driver_component.h"], - copts = ['-DMODULE_NAME=\\"velodyne\\"'], - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/drivers/lidar/velodyne/driver", - ], - alwayslink = True + hdrs = ["velodyne_driver_component.h",], + srcs = ["velodyne_driver_component.cc",], + deps = [":velodyne_driver_lib"], ) -cc_library( - name = "driver", +apollo_cc_library( + name = "velodyne_driver_lib", srcs = [ "driver.cc", "driver64.cc", @@ -51,7 +27,7 @@ cc_library( deps = [ "//cyber", "//modules/common/util:util_tool", - "//modules/drivers/lidar/common/driver_factory:driver_base", + "//modules/drivers/lidar/common/driver_factory:apollo_lidar_driver_base", "//modules/drivers/lidar/proto:config_cc_proto", "//modules/drivers/lidar/proto:velodyne_config_cc_proto", ], diff --git a/modules/drivers/lidar/velodyne/fusion/BUILD b/modules/drivers/lidar/velodyne/fusion/BUILD index c69b26c9654..40f2f2f7caa 100644 --- a/modules/drivers/lidar/velodyne/fusion/BUILD +++ b/modules/drivers/lidar/velodyne/fusion/BUILD @@ -1,27 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# library_dest = "drivers/lib/lidar/velodyne/fusion", -# targets = [ -# ":libvelodyne_fusion_component.so", -# ], -# ) - -cc_binary( +apollo_component( name = "libvelodyne_fusion_component.so", - linkshared = True, - linkstatic = True, - deps = [":fusion_component_lib"], -) - -cc_library( - name = "fusion_component_lib", srcs = ["pri_sec_fusion_component.cc"], hdrs = ["pri_sec_fusion_component.h"], copts = ['-DMODULE_NAME=\\"velodyne\\"'], @@ -29,10 +12,9 @@ cc_library( "//cyber", "//modules/drivers/lidar/proto:velodyne_config_cc_proto", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/transform:buffer", + "//modules/transform:apollo_transform", "@eigen", ], - alwayslink = True, ) apollo_package() diff --git a/modules/drivers/lidar/velodyne/parser/BUILD b/modules/drivers/lidar/velodyne/parser/BUILD index db450a16a56..b29253be9d4 100644 --- a/modules/drivers/lidar/velodyne/parser/BUILD +++ b/modules/drivers/lidar/velodyne/parser/BUILD @@ -1,40 +1,12 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# library_dest = "drivers/lib/lidar/velodyne/parser", -# targets = [ -# ":libvelodyne_convert_component.so", -# ], -# ) - -cc_binary( +apollo_component( name = "libvelodyne_convert_component.so", - linkshared = True, - linkstatic = True, - deps = [":velodyne_convert_component_lib"], -) - -cc_library( - name = "velodyne_convert_component_lib", - srcs = ["velodyne_convert_component.cc"], - hdrs = ["velodyne_convert_component.h"], - copts = ['-DMODULE_NAME=\\"velodyne\\"'], - deps = [ - "//cyber", - "//modules/drivers/lidar/velodyne/parser:convert", - ], - alwayslink = True -) - -cc_library( - name = "convert", srcs = [ + "velodyne_convert_component.cc", "calibration.cc", "convert.cc", "online_calibration.cc", @@ -46,6 +18,7 @@ cc_library( "velodyne_parser.cc", ], hdrs = [ + "velodyne_convert_component.h", "calibration.h", "const_variables.h", "convert.h", diff --git a/modules/drivers/microphone/BUILD b/modules/drivers/microphone/BUILD index d0a512ef923..c67e097be3f 100644 --- a/modules/drivers/microphone/BUILD +++ b/modules/drivers/microphone/BUILD @@ -1,92 +1,24 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) MICROPHONE_COPTS = ['-DMODULE_NAME=\\"microphone\\"'] -cc_binary( +apollo_component( name = "libmicrophone_component.so", - linkshared = True, - linkstatic = True, + srcs = ["microphone_component.cc", "respeaker.cc"], + hdrs = ["microphone_component.h", "respeaker.h"], + copts = MICROPHONE_COPTS, deps = [ - ":microphone_component_lib", - ], -) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_microphone_src", -# ":install_drivers_microphone_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_microphone_src", -# src_dir = ["."], -# dest = "drivers-microphone/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_microphone_hdrs", -# src_dir = ["."], -# dest = "drivers-microphone/include", -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-microphone/include", -# data = [ -# "//modules/drivers/microphone/proto:audio_cc_proto", -# "//modules/drivers/microphone/proto:microphone_config_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_microphone_py", -# dest = "drivers-microphone/python/modules/drivers/microphone", -# files = [ -# "//modules/drivers/microphone/proto:microphone_config_py_pb2", -# "//modules/drivers/microphone/proto:audio_py_pb2", -# ], -# ) - -filegroup( - name = "package_data", - srcs = [ - ":cyberfile.xml", - ":drivers-microphone.BUILD", + "//cyber", + "//modules/common/util:util_tool", + "//modules/drivers/microphone/proto:audio_cc_proto", + "//modules/drivers/microphone/proto:microphone_config_cc_proto", + "@portaudio", ], ) -# install( -# name = "install_package_data", -# data_dest = "drivers-microphone", -# data = ["package_data"], -# ) - -# install( -# name = "install", -# data_dest = "drivers-microphone/addition_data", -# library_dest = "drivers-microphone/lib", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libmicrophone_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# ":pb_drivers_microphone_py", -# ":install_package_data", -# ] -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -96,32 +28,5 @@ filegroup( ]), ) -cc_library( - name = "microphone_component_lib", - srcs = ["microphone_component.cc"], - hdrs = ["microphone_component.h"], - copts = MICROPHONE_COPTS, - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/drivers/microphone:respeaker", - "//modules/drivers/microphone/proto:audio_cc_proto", - "//modules/drivers/microphone/proto:microphone_config_cc_proto", - ], -) - -cc_library( - name = "respeaker", - srcs = ["respeaker.cc"], - hdrs = ["respeaker.h"], - copts = MICROPHONE_COPTS, - deps = [ - "//cyber", - "//modules/drivers/microphone/proto:microphone_config_cc_proto", - "@portaudio", - ], -) - apollo_package() cpplint() diff --git a/modules/drivers/radar/conti_radar/BUILD b/modules/drivers/radar/conti_radar/BUILD index 06426df6570..8ea4fed3903 100644 --- a/modules/drivers/radar/conti_radar/BUILD +++ b/modules/drivers/radar/conti_radar/BUILD @@ -1,42 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# data_dest = "drivers-radar/addition_data/conti_radar", -# library_dest = "drivers-radar/lib/conti_radar", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libconti_radar.so", -# ], -# deps = [ -# "pb_hdrs", -# "pb_drivers_radar_py", -# ] -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-radar/include", -# data = [ -# "//modules/drivers/radar/conti_radar/proto:conti_radar_conf_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_radar_py", -# dest = "drivers-radar/python/modules/drivers/radar", -# files = [ -# "//modules/drivers/radar/conti_radar/proto:conti_radar_conf_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -47,33 +13,28 @@ filegroup( ]), ) -cc_library( +apollo_cc_library( name = "conti_radar_message_manager", srcs = ["conti_radar_message_manager.cc"], hdrs = ["conti_radar_message_manager.h"], deps = [ "//modules/common/util:util_tool", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/drivers/radar/conti_radar/protocol:drivers_conti_radar_protocol", ], ) -cc_library( - name = "conti_radar_canbus_lib", +apollo_component( + name = "libconti_radar.so", srcs = ["conti_radar_canbus_component.cc"], hdrs = ["conti_radar_canbus_component.h"], copts = ['-DMODULE_NAME=\\"conti_radar\\"'], - alwayslink = True, deps = [ ":conti_radar_message_manager", "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common/monitor_log", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_receiver", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/drivers/canbus/proto:sensor_canbus_conf_cc_proto", "//modules/drivers/radar/conti_radar/protocol:drivers_conti_radar_protocol", "//modules/common_msgs/localization_msgs:localization_cc_proto", @@ -82,12 +43,5 @@ cc_library( ], ) -cc_binary( - name = "libconti_radar.so", - linkshared = True, - linkstatic = True, - deps = [":conti_radar_canbus_lib"], -) - apollo_package() cpplint() diff --git a/modules/drivers/radar/conti_radar/protocol/BUILD b/modules/drivers/radar/conti_radar/protocol/BUILD index 650d731205f..3a84f36db5a 100644 --- a/modules/drivers/radar/conti_radar/protocol/BUILD +++ b/modules/drivers/radar/conti_radar/protocol/BUILD @@ -1,10 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "drivers_conti_radar_protocol", srcs = glob([ "*.cc", @@ -14,7 +13,7 @@ cc_library( ]), deps = [ "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", "//modules/drivers/radar/conti_radar/proto:conti_radar_conf_cc_proto", diff --git a/modules/drivers/radar/cyberfile.xml b/modules/drivers/radar/cyberfile.xml index 7941114edf1..23cf48769b0 100644 --- a/modules/drivers/radar/cyberfile.xml +++ b/modules/drivers/radar/cyberfile.xml @@ -15,6 +15,7 @@ common common-msgs transform + drivers-canbus 3rd-gflags 3rd-gtest 3rd-proj diff --git a/modules/drivers/radar/racobit_radar/BUILD b/modules/drivers/radar/racobit_radar/BUILD index 6bf85404980..4efdef55889 100644 --- a/modules/drivers/radar/racobit_radar/BUILD +++ b/modules/drivers/radar/racobit_radar/BUILD @@ -1,42 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# data_dest = "drivers-radar/addition_data/racobit_radar", -# library_dest = "drivers-radar/lib/racobit_radar", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libracobit_radar_canbus_component.so", -# ], -# deps = [ -# "pb_hdrs", -# "pb_drivers_radar_py", -# ] -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-radar/include", -# data = [ -# "//modules/drivers/radar/racobit_radar/proto:racobit_radar_conf_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_radar_py", -# dest = "drivers-radar/python/modules/drivers/radar", -# files = [ -# "//modules/drivers/radar/racobit_radar/proto:racobit_radar_conf_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -47,58 +13,34 @@ filegroup( ]), ) -cc_library( +apollo_cc_library( name = "racobit_radar_message_manager", srcs = ["racobit_radar_message_manager.cc"], hdrs = ["racobit_radar_message_manager.h"], deps = [ "//modules/common/util:util_tool", - "//modules/drivers/canbus:sensor_gflags", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/common_msgs/sensor_msgs:racobit_radar_cc_proto", "//modules/drivers/radar/racobit_radar/protocol:drivers_racobit_radar_protocol", ], ) -# cc_test( -# name = "racobit_radar_message_manager_test", -# size = "small", -# srcs = ["racobit_radar_message_manager_test.cc"], -# deps = [ -# "racobit_radar_message_manager", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -cc_library( - name = "racobit_radar_canbus_lib", +apollo_component( + name = "libracobit_radar_canbus_component.so", srcs = ["racobit_radar_canbus_component.cc"], hdrs = ["racobit_radar_canbus_component.h"], copts = ['-DMODULE_NAME=\\"racobit_radar_canbus\\"'], - alwayslink = True, deps = [ ":racobit_radar_message_manager", "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common/monitor_log", "//modules/common/status", - "//modules/drivers/canbus:sensor_gflags", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_receiver", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/drivers/canbus/proto:sensor_canbus_conf_cc_proto", "//modules/drivers/radar/racobit_radar/protocol:drivers_racobit_radar_protocol", ], ) -cc_binary( - name = "libracobit_radar_canbus_component.so", - linkshared = True, - linkstatic = True, - deps = [":racobit_radar_canbus_lib"], -) - apollo_package() cpplint() diff --git a/modules/drivers/radar/racobit_radar/protocol/BUILD b/modules/drivers/radar/racobit_radar/protocol/BUILD index 78b1efb5ac4..ac2c88513fd 100644 --- a/modules/drivers/radar/racobit_radar/protocol/BUILD +++ b/modules/drivers/radar/racobit_radar/protocol/BUILD @@ -1,10 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "drivers_racobit_radar_protocol", srcs = glob([ "*.cc", @@ -14,7 +13,7 @@ cc_library( ]), deps = [ "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/common_msgs/drivers_msgs:can_card_parameter_cc_proto", "//modules/common_msgs/sensor_msgs:racobit_radar_cc_proto", "//modules/drivers/radar/racobit_radar/proto:racobit_radar_conf_cc_proto", diff --git a/modules/drivers/radar/ultrasonic_radar/BUILD b/modules/drivers/radar/ultrasonic_radar/BUILD index c7e79ecf036..c17651bd056 100644 --- a/modules/drivers/radar/ultrasonic_radar/BUILD +++ b/modules/drivers/radar/ultrasonic_radar/BUILD @@ -1,42 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# data_dest = "drivers-radar/addition_data/ultrasonic_radar", -# library_dest = "drivers-radar/lib/ultrasonic_radar", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libultrasonic_radar_canbus_component.so", -# ], -# deps = [ -# "pb_hdrs", -# "pb_drivers_radar_py", -# ] -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-radar/include", -# data = [ -# "//modules/drivers/radar/ultrasonic_radar/proto:ultrasonic_radar_conf_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_radar_py", -# dest = "drivers-radar/python/modules/drivers/radar", -# files = [ -# "//modules/drivers/radar/ultrasonic_radar/proto:ultrasonic_radar_conf_py_pb2", -# ], -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -47,32 +13,19 @@ filegroup( ]), ) -cc_library( +apollo_cc_library( name = "ultrasonic_radar_message_manager", srcs = ["ultrasonic_radar_message_manager.cc"], hdrs = ["ultrasonic_radar_message_manager.h"], deps = [ "//modules/common_msgs/basic_msgs:header_cc_proto", "//modules/common/util:util_tool", - "//modules/drivers/canbus:sensor_gflags", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_sender", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/common_msgs/sensor_msgs:ultrasonic_radar_cc_proto", ], ) -# cc_test( -# name = "ultrasonic_radar_message_manager_test", -# size = "small", -# srcs = ["ultrasonic_radar_message_manager_test.cc"], -# deps = [ -# "ultrasonic_radar_message_manager", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -cc_library( +apollo_cc_library( name = "ultrasonic_radar_canbus_lib", srcs = ["ultrasonic_radar_canbus.cc"], hdrs = ["ultrasonic_radar_canbus.h"], @@ -80,32 +33,18 @@ cc_library( ":ultrasonic_radar_message_manager", "//modules/common/monitor_log", "//modules/common/status", - "//modules/drivers/canbus:sensor_gflags", - "//modules/drivers/canbus/can_client:can_client_factory", - "//modules/drivers/canbus/can_comm:can_receiver", - "//modules/drivers/canbus/can_comm:message_manager_base", + "//modules/drivers/canbus:apollo_drivers_canbus", "//modules/drivers/canbus/proto:sensor_canbus_conf_cc_proto", "//modules/drivers/radar/ultrasonic_radar/proto:ultrasonic_radar_conf_cc_proto", ], ) -# cc_test( -# name = "ultrasonic_radar_canbus_test", -# size = "small", -# srcs = ["ultrasonic_radar_canbus_test.cc"], -# deps = [ -# ":ultrasonic_radar_canbus_lib", -# ":ultrasonic_radar_message_manager", -# "@com_google_googletest//:gtest_main", -# ], -# ) -cc_library( - name = "ultrasonic_radar_canbus_component_lib", +apollo_component( + name = "libultrasonic_radar_canbus_component.so", srcs = ["ultrasonic_radar_canbus_component.cc"], hdrs = ["ultrasonic_radar_canbus_component.h"], copts = ['-DMODULE_NAME=\\"ultrasonic_radar_canbus\\"'], - alwayslink = True, deps = [ ":ultrasonic_radar_canbus_lib", "//modules/common/adapters:adapter_gflags", @@ -113,12 +52,5 @@ cc_library( ], ) -cc_binary( - name = "libultrasonic_radar_canbus_component.so", - linkshared = True, - linkstatic = True, - deps = [":ultrasonic_radar_canbus_component_lib"], -) - apollo_package() cpplint() diff --git a/modules/drivers/smartereye/BUILD b/modules/drivers/smartereye/BUILD index e36b017d45f..4a52d771281 100755 --- a/modules/drivers/smartereye/BUILD +++ b/modules/drivers/smartereye/BUILD @@ -1,80 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") package(default_visibility = ["//visibility:public"]) CAMERA_COPTS = ['-DMODULE_NAME=\\"camera\\"'] -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_smartereye_src", -# ":install_drivers_smartereye_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_smartereye_src", -# src_dir = ["."], -# dest = "drivers-smartereye/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_smartereye_hdrs", -# src_dir = ["."], -# dest = "drivers-smartereye/include", -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-smartereye/include", -# data = [ -# "//modules/drivers/smartereye/proto:config_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_smartereye_py", -# dest = "drivers-smartereye/python/modules/drivers/smartereye", -# files = [ -# "//modules/drivers/smartereye/proto:config_py_pb2", -# ], -# ) - -filegroup( - name = "package_data", - srcs = [ - ":cyberfile.xml", - ":drivers-smartereye.BUILD", - ], -) - -# install( -# name = "install_package_data", -# data_dest = "drivers-smartereye", -# data = ["package_data"], -# ) - -# install( -# name = "install", -# data_dest = "drivers-smartereye/addition_data", -# library_dest = "drivers-smartereye/lib", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libsmartereye_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# ":pb_drivers_smartereye_py", -# "install_package_data" -# ] -# ) filegroup( name = "runtime_data", @@ -85,21 +15,16 @@ filegroup( ]), ) -cc_binary( +apollo_component( name = "libsmartereye_component.so", - linkshared = True, - linkstatic = True, - deps = [ - ":compress_component_lib", - ":smartereye_component_lib", + srcs = [ + "compress_component.cc", + "smartereye_component.cc", + ], + hdrs = [ + "compress_component.h", + "smartereye_component.h", ], -) - -cc_library( - name = "smartereye_component_lib", - srcs = ["smartereye_component.cc"], - hdrs = ["smartereye_component.h"], - alwayslink = True, copts = CAMERA_COPTS, deps = [ ":smartereye_device", @@ -111,10 +36,12 @@ cc_library( "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", "//modules/common_msgs/sensor_msgs:smartereye_cc_proto", "//third_party/camera_library/smartereye", + "//modules/drivers/smartereye/proto:config_cc_proto", + "@opencv//:highgui", ], ) -cc_library( +apollo_cc_library( name = "smartereye_device", srcs = ["smartereye_device.cc"], hdrs = ["smartereye_device.h"], @@ -127,7 +54,7 @@ cc_library( ], ) -cc_library( +apollo_cc_library( name = "smartereye_handler", srcs = ["smartereye_handler.cc"], hdrs = ["smartereye_handler.h"], @@ -138,22 +65,5 @@ cc_library( ], ) -cc_library( - name = "compress_component_lib", - srcs = ["compress_component.cc"], - hdrs = ["compress_component.h"], - copts = CAMERA_COPTS, - alwayslink = True, - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/common_msgs/sensor_msgs:smartereye_cc_proto", - "//modules/drivers/smartereye/proto:config_cc_proto", - "@opencv//:highgui", - ], -) - apollo_package() cpplint() diff --git a/modules/drivers/tools/image_decompress/BUILD b/modules/drivers/tools/image_decompress/BUILD index 8dfa95b8777..5c89e91d7cf 100644 --- a/modules/drivers/tools/image_decompress/BUILD +++ b/modules/drivers/tools/image_decompress/BUILD @@ -1,79 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_src", -# ":install_drivers_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_src", -# src_dir = ["."], -# dest = "drivers-image-decompress/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_hdrs", -# src_dir = ["."], -# dest = "drivers-image-decompress/include", -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-image-decompress/include", -# data = [ -# "//modules/drivers/tools/image_decompress/proto:config_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_py", -# dest = "drivers-image-decompress/python/modules/drivers/tools/image_decompress", -# files = [ -# "//modules/drivers/tools/image_decompress/proto:config_py_pb2", -# ], -# ) - -filegroup( - name = "package_data", - srcs = [ - ":cyberfile.xml", - ":drivers-image-decompress.BUILD", - ], -) - -# install( -# name = "install_package_data", -# data_dest = "drivers-image-decompress", -# data = ["package_data"], -# ) - -# install( -# name = "install", -# library_dest = "drivers-image-decompress/lib", -# data_dest = "drivers-image-decompress/addition_data", -# data = [ -# ":runtime_data", -# ], -# targets = [ -# ":libimage_decompress.so", -# ], -# deps = [ -# ":pb_hdrs", -# ":pb_drivers_py", -# "install_package_data" -# ] -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -83,12 +12,21 @@ filegroup( ]), ) -cc_library( - name = "image_decompress_lib", +apollo_cc_test( + name = "image_decompress_test", + size = "small", + srcs = ["image_decompress_test.cc"], + deps = [ + ":image_decompress_lib", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_component( + name = "libimage_decompress.so", srcs = ["image_decompress.cc"], hdrs = ["image_decompress.h"], copts = ['-DMODULE_NAME=\\"image_decompress\\"'], - alwayslink = True, deps = [ "//cyber", "//modules/common_msgs/basic_msgs:error_code_cc_proto", @@ -99,22 +37,5 @@ cc_library( ], ) -cc_test( - name = "image_decompress_test", - size = "small", - srcs = ["image_decompress_test.cc"], - deps = [ - ":image_decompress_lib", - "@com_google_googletest//:gtest_main", - ], -) - -cc_binary( - name = "libimage_decompress.so", - linkshared = True, - linkstatic = True, - deps = [":image_decompress_lib"], -) - apollo_package() cpplint() diff --git a/modules/drivers/video/BUILD b/modules/drivers/video/BUILD index 3c22bd52887..7fe01081fb7 100644 --- a/modules/drivers/video/BUILD +++ b/modules/drivers/video/BUILD @@ -1,79 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_library") package(default_visibility = ["//visibility:public"]) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_drivers_video_src", -# ":install_drivers_video_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_drivers_video_src", -# src_dir = ["."], -# dest = "drivers-video/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_drivers_video_hdrs", -# src_dir = ["."], -# dest = "drivers-video/include", -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "drivers-video/include", -# data = [ -# "//modules/drivers/video/proto:video_h265cfg_cc_proto", -# ], -# ) - -# install_files( -# name = "pb_drivers_video_py", -# dest = "drivers-video/python/modules/drivers/video", -# files = [ -# "//modules/drivers/video/proto:video_h265cfg_py_pb2" -# ], -# ) - -filegroup( - name = "package_data", - srcs = [ - ":cyberfile.xml", - ":drivers-video.BUILD", - ], -) - -# install( -# name = "install_package_data", -# data_dest = "drivers-video", -# data = ["package_data"], -# ) - -# install( -# name = "install", -# data_dest = "drivers-video/addition_data", -# library_dest = "drivers-video/lib", -# data = [ -# ":runtime_files", -# ], -# targets = [ -# "libvideo_driver_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# ":pb_drivers_video_py", -# "install_package_data" -# ] -# ) - filegroup( name = "runtime_files", srcs = glob([ @@ -83,29 +12,21 @@ filegroup( ]) ) -cc_binary( +apollo_component( name = "libvideo_driver_component.so", - linkshared = True, - linkstatic = True, - deps = [":video_driver_component_lib"], -) - -cc_library( - name = "video_driver_component_lib", srcs = ["video_driver_component.cc"], hdrs = ["video_driver_component.h"], copts = ['-DMODULE_NAME=\\"video\\"'], - alwayslink = True, deps = [ "//cyber", "//modules/common/util:util_tool", - "//modules/drivers/video:driver", - "//modules/drivers/video:socket", + "//modules/drivers/video:apollo_video_driver", + "//modules/drivers/video:apollo_video_socket", ], ) -cc_library( - name = "driver", +apollo_cc_library( + name = "apollo_video_driver", srcs = ["driver.cc"], hdrs = [ "driver.h", @@ -118,8 +39,8 @@ cc_library( ], ) -cc_library( - name = "socket", +apollo_cc_library( + name = "apollo_video_socket", srcs = ["socket_input.cc"], hdrs = [ "input.h", @@ -129,7 +50,7 @@ cc_library( "//cyber", "//modules/common_msgs/basic_msgs:error_code_cc_proto", "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", ], ) diff --git a/modules/drivers/video/tools/decode_video/BUILD b/modules/drivers/video/tools/decode_video/BUILD index d9c21b5e94e..a97025f3dda 100644 --- a/modules/drivers/video/tools/decode_video/BUILD +++ b/modules/drivers/video/tools/decode_video/BUILD @@ -1,45 +1,22 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -# load("//tools/install:install.bzl", "install") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "drivers/bin", -# targets = [ -# ":video2jpg", -# ], -# ) - -cc_binary( +apollo_cc_binary( name = "video2jpg", - srcs = ["video2jpg.cc"], - deps = [ - ":frame_processor", - "@com_github_gflags_gflags//:gflags", - "@ffmpeg//:avutil", + srcs = [ + "video2jpg.cc", + "frame_processor.cc", + "frame_processor.h", + "h265_decoder.cc", + "h265_decoder.h", ], -) - -cc_library( - name = "frame_processor", - srcs = ["frame_processor.cc"], - hdrs = ["frame_processor.h"], deps = [ - ":h265_decoder", - "//modules/common/util", + "@com_github_gflags_gflags//:gflags", + "//modules/common/util:common_util", "@com_google_absl//:absl", - ], -) - -cc_library( - name = "h265_decoder", - srcs = ["h265_decoder.cc"], - hdrs = ["h265_decoder.h"], - deps = [ - "//cyber", + "@ffmpeg//:avutil", "@ffmpeg//:avcodec", ], ) diff --git a/modules/external_command/command_processor/action_command_processor/BUILD b/modules/external_command/command_processor/action_command_processor/BUILD index 171e1553aa0..3ee27d38878 100644 --- a/modules/external_command/command_processor/action_command_processor/BUILD +++ b/modules/external_command/command_processor/action_command_processor/BUILD @@ -1,29 +1,13 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) -cyber_plugin_description( - name = "plugin_action_command_processor_description", - description = ":plugins.xml", - plugin = ":libaction_command_processor.so", -) - -cc_binary( +apollo_plugin( name = "libaction_command_processor.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"external_command_process\\\""], - deps = [":action_command_processor_lib"], -) - -cc_library( - name = "action_command_processor_lib", srcs = ["action_command_processor.cc"], hdrs = ["action_command_processor.h"], - copts = ["-DMODULE_NAME=\\\"external_command_process\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/external_command/command_processor/command_processor_base:command_processor_base_lib", @@ -38,7 +22,6 @@ cc_library( "//modules/common_msgs/chassis_msgs:chassis_cc_proto", "//modules/common/util:message_util", ], - alwayslink = True, ) filegroup( diff --git a/modules/external_command/command_processor/action_command_processor/action_command_processor.cc b/modules/external_command/command_processor/action_command_processor/action_command_processor.cc index a248f7cb88c..dbe27d28076 100644 --- a/modules/external_command/command_processor/action_command_processor/action_command_processor.cc +++ b/modules/external_command/command_processor/action_command_processor/action_command_processor.cc @@ -20,8 +20,12 @@ #include "modules/external_command/command_processor/action_command_processor/action_command_processor.h" +#include + #include "modules/common_msgs/planning_msgs/planning.pb.h" #include "modules/external_command/command_processor/command_processor_base/proto/command_processor_config.pb.h" + +#include "cyber/plugin_manager/plugin_manager.h" #include "modules/common/util/message_util.h" #include "modules/external_command/command_processor/command_processor_base/util/message_reader.h" #include "modules/external_command/command_processor/command_processor_base/util/message_writer.h" @@ -36,8 +40,15 @@ bool ActionCommandProcessor::Init(const std::shared_ptr& node) { message_reader_ = MessageReader::Instance(); const auto& config = GetProcessorConfig(); // Get special config for ActionCommandProcessor. - std::string special_config_path = GetConfigDir() + "special_config.pb.txt"; - if (!cyber::common::GetProtoFromFile(special_config_path, &special_config_)) { + int status = 0; + std::string class_name = + abi::__cxa_demangle(typeid(*this).name(), nullptr, nullptr, &status); + std::string special_config_path = + cyber::plugin_manager::PluginManager::Instance() + ->GetPluginConfPath( + class_name, "conf/special_config.pb.txt"); + if (!cyber::common::LoadConfig(special_config_path, + &special_config_)) { AERROR << "Cannot get special config of ActionCommandProcessor"; return false; } @@ -337,7 +348,7 @@ void ActionCommandProcessor::CheckScenarioFinished( return; } const auto& scenario = debug.scenario(); - if (!scenario.has_scenario_type()) { + if (!scenario.has_scenario_plugin_type()) { return; } auto* latest_planning_command_status = @@ -348,7 +359,7 @@ void ActionCommandProcessor::CheckScenarioFinished( return; } status->set_message(""); - const auto& scenario_type = scenario.scenario_type(); + const auto& scenario_type = scenario.scenario_plugin_type(); if (scenario_type == scenario_name && latest_planning_command_status->status() == apollo::external_command::CommandStatusType::FINISHED) { diff --git a/modules/external_command/command_processor/action_command_processor/external-command-action.BUILD b/modules/external_command/command_processor/action_command_processor/external-command-action.BUILD deleted file mode 100644 index 1e6abe55cbd..00000000000 --- a/modules/external_command/command_processor/action_command_processor/external-command-action.BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "external-command-action", - includes = [ - "include", - ], - srcs = glob(["lib/*.so*"]), - hdrs = glob(["include/**/*"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) - -cpplint() diff --git a/modules/external_command/command_processor/command_processor_base/BUILD b/modules/external_command/command_processor/command_processor_base/BUILD index fbeb4800beb..dd3d0e8ecfd 100644 --- a/modules/external_command/command_processor/command_processor_base/BUILD +++ b/modules/external_command/command_processor/command_processor_base/BUILD @@ -1,52 +1,45 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") -package(default_visibility=["//visibility:public"]) +package(default_visibility = ["//visibility:public"]) -cc_library( - name="command_processor_base_lib", - srcs=["command_processor_base.cc"], - hdrs=["command_processor_base.h"], - deps=[ +apollo_cc_library( + name = "command_processor_base_lib", + srcs = ["command_processor_base.cc"], + hdrs = ["command_processor_base.h"], + deps = [ "//cyber", "//modules/common_msgs/external_command_msgs:command_status_cc_proto", "//modules/external_command/command_processor/command_processor_base/proto:command_processor_config_cc_proto", ], - alwayslink=True ) -cc_binary( - name="libcommand_processor_base.so", - linkshared=True, - linkstatic=True, - deps=[":command_processor_base_lib"], -) +# apollo_component( +# name = "libcommand_processor_base.so", +# deps = [":command_processor_base_lib"], +# ) -cc_library( - name="motion_command_processor_base_lib", - hdrs=["motion_command_processor_base.h"], - deps=[ +apollo_cc_library( + name = "motion_command_processor_base_lib", + hdrs = ["motion_command_processor_base.h"], + deps = [ + ":command_processor_base_lib", "//cyber", + "//modules/common/util:message_util", "//modules/common_msgs/external_command_msgs:command_status_cc_proto", + "//modules/common_msgs/planning_msgs:planning_command_cc_proto", "//modules/external_command/command_processor/command_processor_base/proto:command_processor_config_cc_proto", "//modules/external_command/command_processor/command_processor_base/util:lane_way_tool", "//modules/external_command/command_processor/command_processor_base/util:message_reader", "//modules/external_command/command_processor/command_processor_base/util:message_writer", - "//modules/routing:routing", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "//modules/common/util:message_util", - ":command_processor_base_lib", + "//modules/routing:apollo_routing", ], - alwayslink=True ) -cc_binary( - name="libmotion_command_processor_base.so", - linkshared=True, - linkstatic=True, - deps=[":motion_command_processor_base_lib"], -) +# apollo_component( +# name = "libmotion_command_processor_base.so", +# deps = [":motion_command_processor_base_lib"], +# ) filegroup( name = "conf", @@ -56,4 +49,5 @@ filegroup( ) cpplint() + apollo_package() diff --git a/modules/external_command/command_processor/command_processor_base/command_processor_base.cc b/modules/external_command/command_processor/command_processor_base/command_processor_base.cc index 2d540d49a64..f888681774c 100644 --- a/modules/external_command/command_processor/command_processor_base/command_processor_base.cc +++ b/modules/external_command/command_processor/command_processor_base/command_processor_base.cc @@ -18,12 +18,13 @@ * @file command_processor_base.cc */ -#include - #include "modules/external_command/command_processor/command_processor_base/command_processor_base.h" +#include + #include "modules/common_msgs/external_command_msgs/command_status.pb.h" #include "modules/external_command/command_processor/command_processor_base/proto/command_processor_config.pb.h" + #include "cyber/common/file.h" #include "cyber/plugin_manager/plugin_manager.h" @@ -41,11 +42,11 @@ bool CommandProcessorBase::Init(const std::shared_ptr& node) { int status; std::string class_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); - config_dir_ = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf/"; // Generate the default task config path from PluginManager. - std::string config_path = config_dir_ + "config.pb.txt"; + std::string config_path = + apollo::cyber::plugin_manager::PluginManager::Instance() + ->GetPluginConfPath(class_name, + "conf/config.pb.txt"); if (!cyber::common::GetProtoFromFile(config_path, processor_config_.get())) { AERROR << "Cannot get config of " << class_name; return false; diff --git a/modules/external_command/command_processor/command_processor_base/external-command-processor-base.BUILD b/modules/external_command/command_processor/command_processor_base/external-command-processor-base.BUILD deleted file mode 100644 index c54dffa53aa..00000000000 --- a/modules/external_command/command_processor/command_processor_base/external-command-processor-base.BUILD +++ /dev/null @@ -1,9 +0,0 @@ -cc_library( - name = "external_command_processor_base", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/lib*.so*"]), - include_prefix = "modules/external_command/command_processor/command_processor_base", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/external_command/command_processor/command_processor_base/motion_command_processor_base.h b/modules/external_command/command_processor/command_processor_base/motion_command_processor_base.h index 1d9859aa1e8..c67b1993f73 100644 --- a/modules/external_command/command_processor/command_processor_base/motion_command_processor_base.h +++ b/modules/external_command/command_processor/command_processor_base/motion_command_processor_base.h @@ -22,7 +22,7 @@ #include #include - +#include #include "modules/common_msgs/external_command_msgs/command_status.pb.h" #include "modules/common_msgs/planning_msgs/planning_command.pb.h" #include "modules/common_msgs/routing_msgs/routing.pb.h" @@ -84,9 +84,10 @@ class MotionCommandProcessorBase : public CommandProcessorBase { * @param routing_request RoutingRequest to be updated. * @return Return true if there is error occurs. */ + bool SetStartPose( + std::vector* lane_way_points) const; bool SetStartPose( std::shared_ptr& routing_request) const; - /** * @brief Process the incoming lane follow command. Search the routing to end * point and send to planning module. @@ -249,6 +250,18 @@ void MotionCommandProcessorBase::OnCommand( status->set_status(CommandStatusType::RUNNING); } +template +bool MotionCommandProcessorBase::SetStartPose( + std::vector* lane_way_points) const { + CHECK_NOTNULL(lane_way_points); + // Get the current vehicle pose as start pose. + if (!lane_way_tool_->GetVehicleLaneWayPoints(lane_way_points)) { + AERROR << "Get lane near start pose failed!"; + return false; + } + return true; +} + template bool MotionCommandProcessorBase::SetStartPose( std::shared_ptr& routing_request) const { diff --git a/modules/external_command/command_processor/command_processor_base/util/BUILD b/modules/external_command/command_processor/command_processor_base/util/BUILD index 967e3311075..b80ef8184de 100644 --- a/modules/external_command/command_processor/command_processor_base/util/BUILD +++ b/modules/external_command/command_processor/command_processor_base/util/BUILD @@ -1,30 +1,27 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) EXTERNAL_COMMAND_COPTS = ['-DMODULE_NAME=\\"external_command_process\\"'] -cc_library( +apollo_cc_library( name = "lane_way_tool", srcs = ["lane_way_tool.cc"], hdrs = ["lane_way_tool.h"], copts = EXTERNAL_COMMAND_COPTS, deps = [ "//cyber", - "//modules/map/hdmap:hdmap", - "//modules/map/hdmap:hdmap_util", - "//modules/common_msgs/external_command_msgs:external_geometry_cc_proto", "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/routing_msgs:routing_cc_proto", + "//modules/common_msgs/external_command_msgs:external_geometry_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/routing_msgs:routing_cc_proto", "//modules/external_command/command_processor/command_processor_base/util:message_reader", + "//modules/map:apollo_map", ], - alwayslink = True, ) -cc_library( +apollo_cc_library( name = "message_reader", srcs = ["message_reader.cc"], hdrs = ["message_reader.h"], @@ -32,10 +29,9 @@ cc_library( deps = [ "//cyber", ], - alwayslink = True, ) -cc_library( +apollo_cc_library( name = "message_writer", srcs = ["message_writer.cc"], hdrs = ["message_writer.h"], @@ -43,8 +39,8 @@ cc_library( deps = [ "//cyber", ], - alwayslink = True, ) cpplint() + apollo_package() diff --git a/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.cc b/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.cc index b1d88a44103..b492195a203 100644 --- a/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.cc +++ b/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.cc @@ -102,6 +102,44 @@ bool LaneWayTool::GetVehicleLaneWayPoint( return ConvertToLaneWayPoint(pose, lane_way_point); } +bool LaneWayTool::GetVehicleLaneWayPoints( + std::vector *lane_way_points) const { + CHECK_NOTNULL(lane_way_points); + // Get the current localization pose + auto *localization = + message_reader_->GetMessage( + FLAGS_localization_topic); + if (nullptr == localization) { + AERROR << "Cannot get vehicle location!"; + return false; + } + apollo::common::PointENU center_enu; + center_enu.set_x(localization->pose().position().x()); + center_enu.set_y(localization->pose().position().y()); + common::math::Vec2d center_point(center_enu.x(), center_enu.y()); + std::vector lanes; + static constexpr double kNearbyLaneDistance = 10.0; + if (hdmap_->GetLanes(center_enu, kNearbyLaneDistance, &lanes) < 0) { + AERROR << "get lanes failed" << center_enu.DebugString(); + return false; + } + for (const auto lane : lanes) { + double s, l; + if (!lane->GetProjection(center_point, &s, &l)) { + AERROR << "get projection failed"; + return false; + } + lane_way_points->emplace_back(); + auto &lane_way_point = lane_way_points->back(); + lane_way_point.mutable_pose()->set_x(center_point.x()); + lane_way_point.mutable_pose()->set_y(center_point.y()); + lane_way_point.set_id(lane->id().id()); + lane_way_point.set_s(s); + AINFO << "GET" << lane_way_point.DebugString(); + } + return true; +} + bool apollo::external_command::LaneWayTool::GetParkingLaneWayPoint( const std::string &parking_id, std::vector *lane_way_points) const { @@ -140,5 +178,29 @@ bool apollo::external_command::LaneWayTool::GetParkingLaneWayPoint( return true; } +bool apollo::external_command::LaneWayTool::IsParkandgoScenario() const { + auto *localization = + message_reader_->GetMessage( + FLAGS_localization_topic); + if (nullptr == localization) { + AERROR << "Cannot get vehicle location!"; + return false; + } + common::PointENU adc; + adc.set_x(localization->pose().position().x()); + adc.set_y(localization->pose().position().y()); + external_command::Pose pose; + double heading = localization->pose().heading(); + hdmap::LaneInfoConstPtr lane; + double s = 0.0; + double l = 0.0; + if (hdmap_->GetNearestLaneWithHeading(adc, 2.0, heading, M_PI / 3.0, &lane, + &s, &l) != 0 || + lane->lane().type() != hdmap::Lane::CITY_DRIVING) { + return true; + } + return false; +} + } // namespace external_command } // namespace apollo diff --git a/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.h b/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.h index f64ef290f6a..50516a5dd3f 100644 --- a/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.h +++ b/modules/external_command/command_processor/command_processor_base/util/lane_way_tool.h @@ -63,6 +63,8 @@ class LaneWayTool { */ bool GetVehicleLaneWayPoint( apollo::routing::LaneWaypoint *lane_way_point) const; + bool GetVehicleLaneWayPoints( + std::vector *lane_way_points) const; /** * @brief Get the parking space center point projected to lane way point * @param parking_id parking space id @@ -73,6 +75,8 @@ class LaneWayTool { const std::string &parking_id, std::vector *lane_way_points) const; + bool IsParkandgoScenario() const; + private: const hdmap::HDMap *hdmap_; MessageReader *message_reader_; diff --git a/modules/external_command/command_processor/command_processor_base/util/message_writer.h b/modules/external_command/command_processor/command_processor_base/util/message_writer.h index 20efc532739..1015ae892ed 100644 --- a/modules/external_command/command_processor/command_processor_base/util/message_writer.h +++ b/modules/external_command/command_processor/command_processor_base/util/message_writer.h @@ -82,14 +82,11 @@ std::shared_ptr> MessageWriter::RegisterMessage( writer_map_[channel_name] = writer; return writer; } - auto existing_writer_ptr = dynamic_cast*>( - existing_writer_iter->second.get()); - if (nullptr == existing_writer_ptr) { + if (nullptr == existing_writer_iter->second) { return nullptr; } - auto existing_writer = - std::shared_ptr>(existing_writer_ptr); - return existing_writer; + return std::dynamic_pointer_cast>( + existing_writer_iter->second); } template @@ -103,14 +100,11 @@ std::shared_ptr> MessageWriter::RegisterMessage( writer_map_[channel_name] = writer; return writer; } - auto existing_writer_ptr = dynamic_cast*>( - existing_writer_iter->second.get()); - if (nullptr == existing_writer_ptr) { + if (nullptr == existing_writer_iter->second) { return nullptr; } - auto existing_writer = - std::shared_ptr>(existing_writer_ptr); - return existing_writer; + return std::dynamic_pointer_cast>( + existing_writer_iter->second); } template diff --git a/modules/external_command/command_processor/lane_follow_command_processor/BUILD b/modules/external_command/command_processor/lane_follow_command_processor/BUILD index 47a8b3cb5fc..5ed9b14f09b 100644 --- a/modules/external_command/command_processor/lane_follow_command_processor/BUILD +++ b/modules/external_command/command_processor/lane_follow_command_processor/BUILD @@ -1,36 +1,19 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) -cyber_plugin_description( - name = "plugin_lane_follow_command_processor_description", - description = ":plugins.xml", - plugin = ":liblane_follow_command_processor.so", -) - -cc_binary( +apollo_plugin( name = "liblane_follow_command_processor.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"external_command_process\\\""], - deps = [":lane_follow_command_processor_lib"], -) - -cc_library( - name = "lane_follow_command_processor_lib", srcs = ["lane_follow_command_processor.cc"], hdrs = ["lane_follow_command_processor.h"], - copts = ["-DMODULE_NAME=\\\"external_command_process\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/external_command/command_processor/command_processor_base:motion_command_processor_base_lib", "//modules/common_msgs/external_command_msgs:lane_follow_command_cc_proto", "//modules/common_msgs/planning_msgs:planning_command_cc_proto", ], - alwayslink = True, ) filegroup( diff --git a/modules/external_command/command_processor/lane_follow_command_processor/external-command-lane-follow.BUILD b/modules/external_command/command_processor/lane_follow_command_processor/external-command-lane-follow.BUILD deleted file mode 100644 index 96f4109483f..00000000000 --- a/modules/external_command/command_processor/lane_follow_command_processor/external-command-lane-follow.BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "external-command-lane-follow", - includes = [ - "include", - ], - srcs = glob(["lib/*.so*"]), - hdrs = glob(["include/**/*"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) - -cpplint() diff --git a/modules/external_command/command_processor/lane_follow_command_processor/lane_follow_command_processor.cc b/modules/external_command/command_processor/lane_follow_command_processor/lane_follow_command_processor.cc index 4452a93865c..f9d136fed51 100644 --- a/modules/external_command/command_processor/lane_follow_command_processor/lane_follow_command_processor.cc +++ b/modules/external_command/command_processor/lane_follow_command_processor/lane_follow_command_processor.cc @@ -17,8 +17,11 @@ /** * @file lane_follow_command_processor.cc **/ - #include "modules/external_command/command_processor/lane_follow_command_processor/lane_follow_command_processor.h" + +#include +#include + #include "modules/external_command/command_processor/command_processor_base/util/lane_way_tool.h" namespace apollo { @@ -35,14 +38,61 @@ bool LaneFollowCommandProcessor::Convert( const std::shared_ptr& command, std::shared_ptr& routing_request) const { routing_request = std::make_shared(); + std::vector lane_way_points; + auto lane_way_tool = GetLaneWayTool(); if (!command->is_start_pose_set()) { - if (!SetStartPose(routing_request)) { - return false; + if (lane_way_tool->IsParkandgoScenario()) { + if (!SetStartPose(&lane_way_points)) { + return false; + } + apollo::routing::LaneWaypoint best_lane_way_point; + double min_distance = std::numeric_limits::max(); + AINFO << "lane_way_points.size()" << lane_way_points.size(); + for (const auto& lane_way_point : lane_way_points) { + auto tmp_routing_request = + std::make_shared(); + tmp_routing_request->CopyFrom(*routing_request); + tmp_routing_request->add_waypoint()->CopyFrom(lane_way_point); + for (const auto& way_point : command->way_point()) { + if (!lane_way_tool->ConvertToLaneWayPoint( + way_point, tmp_routing_request->add_waypoint())) { + AINFO << "Cannot convert the end pose to lane way point: " + << way_point.DebugString(); + return false; + } + } + if (!lane_way_tool->ConvertToLaneWayPoint( + command->end_pose(), tmp_routing_request->add_waypoint())) { + AERROR << "Cannot convert the end pose to lane way point: " + << command->end_pose().DebugString(); + return false; + } + auto routing_response = + std::make_shared(); + if (!routing_->Process(tmp_routing_request, routing_response.get())) { + AINFO << "routing_ error " << tmp_routing_request->DebugString(); + continue; + } + AINFO << routing_response->DebugString(); + if (routing_response->measurement().distance() < min_distance) { + min_distance = routing_response->measurement().distance(); + best_lane_way_point.Clear(); + best_lane_way_point.CopyFrom(lane_way_point); + } + } + if (min_distance >= std::numeric_limits::max()) { + AINFO << "can not find any valid lane waypoint near parking space"; + return false; + } + routing_request->add_waypoint()->CopyFrom(best_lane_way_point); + } else { + if (!SetStartPose(routing_request)) { + return false; + } } } else { routing_request->set_is_start_pose_set(true); } - auto lane_way_tool = GetLaneWayTool(); // Add the way points into RoutingRequest. for (const auto& way_point : command->way_point()) { if (!lane_way_tool->ConvertToLaneWayPoint( diff --git a/modules/external_command/command_processor/valet_parking_command_processor/BUILD b/modules/external_command/command_processor/valet_parking_command_processor/BUILD index be8fb8cb2b6..46c5712db00 100644 --- a/modules/external_command/command_processor/valet_parking_command_processor/BUILD +++ b/modules/external_command/command_processor/valet_parking_command_processor/BUILD @@ -1,36 +1,19 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") package(default_visibility = ["//visibility:public"]) -cyber_plugin_description( - name = "plugin_valet_parking_command_processor_description", - description = ":plugins.xml", - plugin = ":libvalet_parking_command_processor.so", -) - -cc_binary( +apollo_plugin( name = "libvalet_parking_command_processor.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"external_command_process\\\""], - deps = [":valet_parking_command_processor_lib"], -) - -cc_library( - name = "valet_parking_command_processor_lib", srcs = ["valet_parking_command_processor.cc"], hdrs = ["valet_parking_command_processor.h"], - copts = ["-DMODULE_NAME=\\\"external_command_process\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/external_command/command_processor/command_processor_base:motion_command_processor_base_lib", "//modules/common_msgs/external_command_msgs:valet_parking_command_cc_proto", "//modules/common_msgs/planning_msgs:planning_command_cc_proto", ], - alwayslink = True, ) filegroup( diff --git a/modules/external_command/command_processor/valet_parking_command_processor/external-command-valet-parking.BUILD b/modules/external_command/command_processor/valet_parking_command_processor/external-command-valet-parking.BUILD deleted file mode 100644 index 3876056b066..00000000000 --- a/modules/external_command/command_processor/valet_parking_command_processor/external-command-valet-parking.BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "external-command-valet-parking", - includes = [ - "include", - ], - srcs = glob(["lib/*.so*"]), - hdrs = glob(["include/**/*"]), - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) - -cpplint() diff --git a/modules/external_command/command_processor/valet_parking_command_processor/plugins.xml b/modules/external_command/command_processor/valet_parking_command_processor/plugins.xml index 243f75341a8..76f3f4b1a9b 100644 --- a/modules/external_command/command_processor/valet_parking_command_processor/plugins.xml +++ b/modules/external_command/command_processor/valet_parking_command_processor/plugins.xml @@ -1,3 +1,3 @@ - + \ No newline at end of file diff --git a/modules/external_command/external_command_demo/BUILD b/modules/external_command/external_command_demo/BUILD index 20534d81149..4560d04e981 100644 --- a/modules/external_command/external_command_demo/BUILD +++ b/modules/external_command/external_command_demo/BUILD @@ -1,15 +1,13 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "external_command_demo", +apollo_component( + name = "libexternal_command_demo_component.so", hdrs = ["external_command_demo.h"], srcs = ["external_command_demo.cc"], copts = ["-DMODULE_NAME=\\\"external_command_demo\\\""], - alwayslink = True, deps = [ "//cyber", "//modules/common/util:message_util", @@ -27,19 +25,11 @@ cc_library( ], ) -cc_binary( - name = "libexternal_command_demo_component.so", - linkshared = True, - linkstatic = True, - deps = [":external_command_demo"], -) - -cc_library( - name = "external_command_wrapper_demo", +apollo_component( + name = "libexternal_command_wrapper_demo_component.so", hdrs = ["external_command_wrapper_demo.h"], srcs = ["external_command_wrapper_demo.cc"], copts = ["-DMODULE_NAME=\\\"external_command_demo\\\""], - alwayslink = True, deps = [ "//cyber", "//modules/common/util:message_util", @@ -58,13 +48,6 @@ cc_library( ], ) -cc_binary( - name = "libexternal_command_wrapper_demo_component.so", - linkshared = True, - linkstatic = True, - deps = [":external_command_wrapper_demo"], -) - filegroup( name = "conf", srcs = glob([ diff --git a/modules/external_command/external_command_demo/external_command_wrapper_demo.cc b/modules/external_command/external_command_demo/external_command_wrapper_demo.cc index 02a51d75668..2c56cd2b901 100644 --- a/modules/external_command/external_command_demo/external_command_wrapper_demo.cc +++ b/modules/external_command/external_command_demo/external_command_wrapper_demo.cc @@ -158,6 +158,30 @@ bool ExternalCommandWrapperDemo::Proc() { command_id_string.end()); uint64_t id = std::atoi(command_id_string.c_str()); CheckCommandStatus(id); + } else if (input_command_string == "free1") { + apollo::external_command::Pose end_pose; + end_pose.set_x(437556.02); + end_pose.set_y(4432540.34); + end_pose.set_heading(1.8); + std::vector way_points; + apollo::external_command::Point point1; + apollo::external_command::Point point2; + apollo::external_command::Point point3; + apollo::external_command::Point point4; + point1.set_x(437536.29); + point1.set_y(4432560.69); + point2.set_x(437536.29); + point2.set_y(4432510.69); + point3.set_x(437576.29); + point3.set_y(4432510.69); + point4.set_x(437576.29); + point4.set_y(4432560.69); + way_points.emplace_back(point1); + way_points.emplace_back(point2); + way_points.emplace_back(point3); + way_points.emplace_back(point4); + + SendFreespaceCommand(way_points, end_pose); } else { std::cout << "Invalid input!" << std::endl; } @@ -349,6 +373,29 @@ void ExternalCommandWrapperDemo::SendLaneFollowCommand( } } +void ExternalCommandWrapperDemo::SendFreespaceCommand( + const std::vector& way_points, + const apollo::external_command::Pose& end) { + auto command = std::make_shared(); + FillCommandHeader(command); + // Copy way_points + auto roi_point = command->mutable_drivable_roi(); + for (const auto& point : way_points) { + roi_point->add_point()->CopyFrom(point); + } + // Copy end point + command->mutable_parking_spot_pose()->CopyFrom(end); + std::cout << "Sending lane follow command: " << command->DebugString() + << std::endl; + auto response = free_space_command_client_->SendRequest(command); + if (nullptr == response) { + std::cout << "Command sending failed, please check the service is on!\n" + << std::endl; + } else { + std::cout << "******Finish sending command.******\n" << std::endl; + } +} + void ExternalCommandWrapperDemo::SendValetParkingCommand( const std::string& parking_spot_id, double target_speed) { auto command = diff --git a/modules/external_command/external_command_demo/external_command_wrapper_demo.h b/modules/external_command/external_command_demo/external_command_wrapper_demo.h index afba160d19c..9c9c32f493f 100644 --- a/modules/external_command/external_command_demo/external_command_wrapper_demo.h +++ b/modules/external_command/external_command_demo/external_command_wrapper_demo.h @@ -72,6 +72,9 @@ class ExternalCommandWrapperDemo final : public apollo::cyber::TimerComponent { void CheckCommandStatus(const uint64_t command_id); + void SendFreespaceCommand( + const std::vector& way_points, + const apollo::external_command::Pose& end); static void ReadPathFromPathRecord( const std::string& record_file, google::protobuf::RepeatedPtrField* diff --git a/modules/external_command/old_routing_adapter/BUILD b/modules/external_command/old_routing_adapter/BUILD index a90fac91c0e..d3691c46336 100644 --- a/modules/external_command/old_routing_adapter/BUILD +++ b/modules/external_command/old_routing_adapter/BUILD @@ -1,11 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility=["//visibility:public"]) -cc_library( - name="old_routing_adapter_lib", +apollo_component( + name="libold_routing_adapter.so", srcs=["old_routing_adapter.cc"], hdrs=["old_routing_adapter.h"], copts = [ @@ -15,19 +14,11 @@ cc_library( "//cyber", "//modules/external_command/old_routing_adapter/proto:old_routing_adapter_cc_proto", "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/map/hdmap:hdmap_util", + "//modules/map:apollo_map", "//modules/common_msgs/external_command_msgs:lane_follow_command_cc_proto", "//modules/common_msgs/external_command_msgs:valet_parking_command_cc_proto", "//modules/common_msgs/external_command_msgs:command_status_cc_proto", ], - alwayslink=True, -) - -cc_binary( - name="libold_routing_adapter.so", - linkshared=True, - linkstatic=True, - deps=[":old_routing_adapter_lib"], ) filegroup( diff --git a/modules/external_command/process_component/BUILD b/modules/external_command/process_component/BUILD index 88d3bf0e880..d9227a2db66 100644 --- a/modules/external_command/process_component/BUILD +++ b/modules/external_command/process_component/BUILD @@ -1,11 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility=["//visibility:public"]) -cc_library( - name="external_command_process_component_lib", +apollo_component( + name="libexternal_command_process_component.so", srcs=["external_command_process_component.cc"], hdrs=["external_command_process_component.h"], copts = ["-DMODULE_NAME=\\\"external_command_process\\\""], @@ -16,14 +15,6 @@ cc_library( "//modules/external_command/command_processor/command_processor_base:command_processor_base_lib", "//modules/external_command/command_processor/command_processor_base/proto:command_processor_config_cc_proto", ], - alwayslink=True -) - -cc_binary( - name="libexternal_command_process_component.so", - linkshared=True, - linkstatic=True, - deps=[":external_command_process_component_lib"], ) filegroup( diff --git a/modules/external_command/process_component/external-command-process.BUILD b/modules/external_command/process_component/external-command-process.BUILD deleted file mode 100644 index 110cd208f81..00000000000 --- a/modules/external_command/process_component/external-command-process.BUILD +++ /dev/null @@ -1,9 +0,0 @@ -cc_library( - name = "external_command_process", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/lib*.so*"]), - include_prefix = "modules/external_command/process_component", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/guardian/BUILD b/modules/guardian/BUILD index ed8f4d0d151..1c56ae07db9 100644 --- a/modules/guardian/BUILD +++ b/modules/guardian/BUILD @@ -1,14 +1,12 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) GUARDIAN_COPTS = ['-DMODULE_NAME=\\"guardian\\"'] -cc_library( - name = "guardian_component_lib", +apollo_component( + name = "libguardian_component.so", srcs = ["guardian_component.cc"], hdrs = ["guardian_component.h"], copts = GUARDIAN_COPTS, @@ -22,66 +20,8 @@ cc_library( "//modules/guardian/proto:guardian_conf_cc_proto", "//modules/common_msgs/monitor_msgs:system_status_cc_proto", ], - alwayslink = True, -) - -cc_binary( - name = "libguardian_component.so", - linkshared = True, - linkstatic = True, - deps = [ - ":guardian_component_lib", - ], ) -# install( -# name = "install", -# library_dest = "guardian/lib", -# data_dest = "guardian", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":guardian.BUILD", -# ], -# targets = [ -# ":libguardian_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# "//modules/guardian/proto:py_pb_guardian" -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "guardian/include", -# data = [ -# "//modules/guardian/proto:guardian_conf_cc_proto", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_guardian_src", -# ":install_guardian_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_guardian_src", -# src_dir = ["."], -# dest = "guardian/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_guardian_hdrs", -# src_dir = ["."], -# dest = "guardian/include", -# filter = "*.h", -# ) - filegroup( name = "runtime_data", srcs = glob([ diff --git a/modules/guardian/guardian.BUILD b/modules/guardian/guardian.BUILD deleted file mode 100644 index 2c98b31e714..00000000000 --- a/modules/guardian/guardian.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "guardian", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/guardian", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/localization/common/BUILD b/modules/localization/common/BUILD index c4d24438dd2..a897e989774 100644 --- a/modules/localization/common/BUILD +++ b/modules/localization/common/BUILD @@ -1,11 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -# load("//tools/install:install.bzl", "install") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "gnss_compensator", srcs = [ "gnss_compensator.cc", @@ -14,41 +12,20 @@ cc_library( "gnss_compensator.h", ], deps = [ - "//cyber", ":localization_gflags", + "//cyber", ], ) -cc_library( +apollo_cc_library( name = "localization_gflags", - srcs = [ - "liblocalization_gflags.so", - ], + srcs = ["localization_gflags.cc"], hdrs = [ "localization_gflags.h", ], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], + deps = ["@com_github_gflags_gflags//:gflags"], ) -cc_binary( - name = "liblocalization_gflags.so", - srcs = ["localization_gflags.cc", "localization_gflags.h"], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -# install( -# name = "install", -# library_dest = "localization/lib", -# targets = [ -# ":liblocalization_gflags.so", -# ], -# ) - apollo_package() + cpplint() diff --git a/modules/localization/conf/rtk_localization.pb.txt b/modules/localization/conf/rtk_localization.pb.txt index 1f5f4269bd8..052b15bdd4d 100644 --- a/modules/localization/conf/rtk_localization.pb.txt +++ b/modules/localization/conf/rtk_localization.pb.txt @@ -5,6 +5,7 @@ gps_topic: "/apollo/sensor/gnss/odometry" gps_status_topic: "/apollo/sensor/gnss/ins_stat" broadcast_tf_frame_id: "world" broadcast_tf_child_frame_id: "localization" +imu_frame_id: "imu" imu_list_max_size: 20 gps_imu_time_diff_threshold: 0.02 map_offset_x: 0.0 diff --git a/modules/localization/localization.BUILD b/modules/localization/localization.BUILD deleted file mode 100644 index 44792dddc7e..00000000000 --- a/modules/localization/localization.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "localization", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/*.so*"]), - include_prefix = "modules/localization", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/localization/msf/BUILD b/modules/localization/msf/BUILD index 0d85e0bbbe5..652541d9000 100644 --- a/modules/localization/msf/BUILD +++ b/modules/localization/msf/BUILD @@ -1,17 +1,179 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) filegroup( name = "testdata", - srcs = glob(["local_map/test_data/**"]) + srcs = glob(["local_map/test_data/**"]), ) -cc_library( - name = "msf_localization_component_lib", +apollo_cc_library( + name = "apollo_localization_msf", + srcs = [ + "common/io/velodyne_utility.cc", + "common/util/compression.cc", + "common/util/file_utility.cc", + "common/util/frame_transform.cc", + "common/util/system_utility.cc", + "local_map/base_map/base_map.cc", + "local_map/base_map/base_map_config.cc", + "local_map/base_map/base_map_matrix.cc", + "local_map/base_map/base_map_node.cc", + "local_map/base_map/base_map_node_index.cc", + "local_map/base_map/base_map_pool.cc", + "local_map/lossless_map/lossless_map.cc", + "local_map/lossless_map/lossless_map_config.cc", + "local_map/lossless_map/lossless_map_matrix.cc", + "local_map/lossless_map/lossless_map_node.cc", + "local_map/lossless_map/lossless_map_pool.cc", + "local_map/lossy_map/lossy_map_2d.cc", + "local_map/lossy_map/lossy_map_config_2d.cc", + "local_map/lossy_map/lossy_map_matrix_2d.cc", + "local_map/lossy_map/lossy_map_pool_2d.cc", + "local_map/ndt_map/ndt_map.cc", + "local_map/ndt_map/ndt_map_config.cc", + "local_map/ndt_map/ndt_map_matrix.cc", + "local_map/ndt_map/ndt_map_node.cc", + "local_map/ndt_map/ndt_map_pool.cc", + "local_pyramid_map/base_map/base_map.cc", + "local_pyramid_map/base_map/base_map_config.cc", + "local_pyramid_map/base_map/base_map_matrix.cc", + "local_pyramid_map/base_map/base_map_node.cc", + "local_pyramid_map/base_map/base_map_node_config.cc", + "local_pyramid_map/base_map/base_map_node_index.cc", + "local_pyramid_map/base_map/base_map_pool.cc", + "local_pyramid_map/ndt_map/ndt_map.cc", + "local_pyramid_map/ndt_map/ndt_map_config.cc", + "local_pyramid_map/ndt_map/ndt_map_matrix.cc", + "local_pyramid_map/ndt_map/ndt_map_matrix_handler.cc", + "local_pyramid_map/ndt_map/ndt_map_node.cc", + "local_pyramid_map/ndt_map/ndt_map_node_config.cc", + "local_pyramid_map/ndt_map/ndt_map_pool.cc", + "local_pyramid_map/pyramid_map/pyramid_map.cc", + "local_pyramid_map/pyramid_map/pyramid_map_config.cc", + "local_pyramid_map/pyramid_map/pyramid_map_matrix.cc", + "local_pyramid_map/pyramid_map/pyramid_map_matrix_handler.cc", + "local_pyramid_map/pyramid_map/pyramid_map_node.cc", + "local_pyramid_map/pyramid_map/pyramid_map_node_config.cc", + "local_pyramid_map/pyramid_map/pyramid_map_pool.cc", + "local_tool/data_extraction/cyber_record_reader.cc", + "local_tool/data_extraction/location_exporter.cc", + "local_tool/data_extraction/pcd_exporter.cc", + "local_tool/local_visualization/engine/visualization_engine.cc", + "local_tool/local_visualization/engine/visualization_manager.cc", + "local_tool/local_visualization/offline_visual/offline_local_visualizer.cc", + "local_tool/map_creation/poses_interpolation/poses_interpolation.cc", + ] + glob(["local_integ/*.cc"]), + hdrs = [ + "common/io/velodyne_utility.h", + "common/io/pcl_point_types.h", + "common/util/base_map_cache.h", + "common/util/compression.h", + "common/util/extract_ground_plane.h", + "common/util/file_utility.h", + "common/util/frame_transform.h", + "common/util/math_util.h", + "common/util/rect2d.h", + "common/util/system_utility.h", + "common/util/time_conversion.h", + "common/util/voxel_grid_covariance_hdmap.h", + "local_map/base_map/base_map.h", + "local_map/base_map/base_map_fwd.h", + "local_map/base_map/base_map_config.h", + "local_map/base_map/base_map_matrix.h", + "local_map/base_map/base_map_node.h", + "local_map/base_map/base_map_node_index.h", + "local_map/base_map/base_map_pool.h", + "local_map/ndt_map/ndt_map.h", + "local_map/ndt_map/ndt_map_config.h", + "local_map/ndt_map/ndt_map_matrix.h", + "local_map/ndt_map/ndt_map_node.h", + "local_map/ndt_map/ndt_map_pool.h", + "local_map/lossless_map/lossless_map.h", + "local_map/lossless_map/lossless_map_config.h", + "local_map/lossless_map/lossless_map_matrix.h", + "local_map/lossless_map/lossless_map_node.h", + "local_map/lossless_map/lossless_map_pool.h", + "local_map/lossy_map/lossy_map_2d.h", + "local_map/lossy_map/lossy_map_config_2d.h", + "local_map/lossy_map/lossy_map_matrix_2d.h", + "local_map/lossy_map/lossy_map_pool_2d.h", + "local_map/lossy_map/lossy_map_node_2d.h", + "local_pyramid_map/base_map/base_map.h", + "local_pyramid_map/base_map/base_map_config.h", + "local_pyramid_map/base_map/base_map_fwd.h", + "local_pyramid_map/base_map/base_map_matrix.h", + "local_pyramid_map/base_map/base_map_matrix_handler.h", + "local_pyramid_map/base_map/base_map_node.h", + "local_pyramid_map/base_map/base_map_node_config.h", + "local_pyramid_map/base_map/base_map_node_index.h", + "local_pyramid_map/base_map/base_map_pool.h", + "local_pyramid_map/ndt_map/ndt_map.h", + "local_pyramid_map/ndt_map/ndt_map_config.h", + "local_pyramid_map/ndt_map/ndt_map_matrix.h", + "local_pyramid_map/ndt_map/ndt_map_matrix_handler.h", + "local_pyramid_map/ndt_map/ndt_map_node.h", + "local_pyramid_map/ndt_map/ndt_map_node_config.h", + "local_pyramid_map/ndt_map/ndt_map_pool.h", + "local_pyramid_map/pyramid_map/aligned_matrix.h", + "local_pyramid_map/pyramid_map/pyramid_map.h", + "local_pyramid_map/pyramid_map/pyramid_map_config.h", + "local_pyramid_map/pyramid_map/pyramid_map_matrix.h", + "local_pyramid_map/pyramid_map/pyramid_map_matrix_handler.h", + "local_pyramid_map/pyramid_map/pyramid_map_node.h", + "local_pyramid_map/pyramid_map/pyramid_map_node_config.h", + "local_pyramid_map/pyramid_map/pyramid_map_pool.h", + "local_tool/data_extraction/cyber_record_reader.h", + "local_tool/data_extraction/location_exporter.h", + "local_tool/data_extraction/pcd_exporter.h", + "local_tool/local_visualization/engine/visualization_engine.h", + "local_tool/local_visualization/engine/visualization_manager.h", + "local_tool/local_visualization/offline_visual/offline_local_visualizer.h", + "local_tool/map_creation/poses_interpolation/poses_interpolation.h", + ] + glob(["local_integ/*.h"]), + deps = [ + "//cyber", + "//modules/common/adapters:adapter_gflags", + "//modules/common/math", + "//modules/common/status", + "//modules/common/util:common_util", + "//modules/common/util:util_tool", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/localization_msgs:gps_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/localization_msgs:localization_status_cc_proto", + "//modules/common_msgs/localization_msgs:pose_cc_proto", + "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", + "//modules/common_msgs/sensor_msgs:gnss_cc_proto", + "//modules/common_msgs/sensor_msgs:gnss_raw_observation_cc_proto", + "//modules/common_msgs/sensor_msgs:heading_cc_proto", + "//modules/common_msgs/sensor_msgs:imu_cc_proto", + "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", + "//modules/localization/common:localization_gflags", + "//modules/localization/proto:gnss_pnt_result_cc_proto", + "//modules/localization/proto:localization_config_cc_proto", + "//modules/localization/proto:measure_cc_proto", + "//modules/localization/proto:sins_pva_cc_proto", + "@boost", + "@com_github_gflags_gflags//:gflags", + "@com_github_google_glog//:glog", + "@com_github_jbeder_yaml_cpp//:yaml-cpp", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest_main", + "@eigen", + "@fastrtps", + "@local_config_pcl//:pcl", + "@localization_msf", + "@opencv//:highgui", + "@opencv//:imgcodecs", + "@proj", + "@zlib", + ], +) + +apollo_component( + name = "libmsf_localization_component.so", srcs = [ "msf_localization.cc", "msf_localization_component.cc", @@ -24,47 +186,36 @@ cc_library( "-DMODULE_NAME=\\\"localization\\\"", ], deps = [ + ":apollo_localization_msf", "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common/math", "//modules/common/monitor_log", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/localization_msgs:gps_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/localization_msgs:localization_status_cc_proto", "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", "//modules/common_msgs/sensor_msgs:gnss_cc_proto", "//modules/common_msgs/sensor_msgs:heading_cc_proto", "//modules/common_msgs/sensor_msgs:imu_cc_proto", - "//modules/localization/common:localization_gflags", "//modules/localization/common:gnss_compensator", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_integ", - "//modules/localization/msf/local_pyramid_map/base_map", - "//modules/localization/msf/local_pyramid_map/pyramid_map", + "//modules/localization/common:localization_gflags", "//modules/localization/proto:gnss_pnt_result_cc_proto", - "//modules/common_msgs/localization_msgs:gps_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", "//modules/localization/proto:localization_config_cc_proto", - "//modules/common_msgs/localization_msgs:localization_status_cc_proto", "//modules/localization/proto:measure_cc_proto", "//modules/localization/proto:sins_pva_cc_proto", - "//modules/transform:transform_broadcaster", + "//modules/transform:apollo_transform", "@boost", "@com_github_google_glog//:glog", "@com_github_jbeder_yaml_cpp//:yaml-cpp", "@com_google_googletest//:gtest", ], - alwayslink = True, -) - -cc_binary( - name = "libmsf_localization_component.so", - linkshared = True, - linkstatic = True, - deps = [":msf_localization_component_lib"], ) -cc_test( +apollo_cc_test( name = "msf_localization_test", size = "enormous", srcs = ["msf_localization_test.cc"], @@ -74,29 +225,308 @@ cc_test( data = ["//modules/localization:localization_testdata"], deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/localization/msf:msf_localization_component_lib", "@com_google_googletest//:gtest_main", ], ) -# install( -# name = "install", -# library_dest = "localization/lib/msf", -# data = [":testdata"], -# data_dest = "localization/addition_data/msf", -# targets = [ -# ":libmsf_localization_component.so", -# ], -# deps = [ -# "//modules/localization/msf/local_tool/map_creation:install", -# "//modules/localization/msf/local_tool/data_extraction:install", -# "//modules/localization/msf/local_tool/local_visualization/offline_visual:install", -# "//modules/localization/msf/local_tool/local_visualization/online_visual:install", -# #"//modules/localization/msf/local_tool/ndt_mapping:install", -# "//modules/localization/msf/params:install", -# ], -# ) +apollo_cc_test( + name = "pyramid_map_config_test", + size = "medium", + timeout = "short", + srcs = ["local_pyramid_map/pyramid_map/pyramid_map_config_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pyramid_map_matrix_handler_test", + size = "medium", + timeout = "short", + srcs = ["local_pyramid_map/pyramid_map/pyramid_map_matrix_handler_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pyramid_map_matrix_test", + size = "medium", + timeout = "short", + srcs = ["local_pyramid_map/pyramid_map/pyramid_map_matrix_test.cc"], + copts = ["-fno-access-control"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pyramid_map_node_test", + size = "medium", + timeout = "short", + srcs = ["local_pyramid_map/pyramid_map/pyramid_map_node_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pyramid_map_pool_test", + size = "large", + timeout = "short", + srcs = ["local_pyramid_map/pyramid_map/pyramid_map_pool_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pyramid_map_test", + size = "large", + timeout = "short", + srcs = ["local_pyramid_map/pyramid_map/pyramid_map_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "map_pool_test", + size = "small", + srcs = ["local_map/lossless_map/map_pool_test.cc"], + copts = [ + "-fno-access-control", + ], + deps = [ + "//cyber", + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "map_node_index_test", + timeout = "short", + srcs = ["local_map/base_map/map_node_index_test.cc"], + deps = [ + ":apollo_localization_msf", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "lossless_map_config_test", + size = "small", + srcs = ["local_map/lossless_map/lossless_map_config_test.cc"], + data = [":testdata"], + deps = [ + "//cyber", + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "lossy_map_config_2d_test", + size = "medium", + timeout = "short", + srcs = ["local_map/lossy_map/lossy_map_config_2d_test.cc"], + data = [ + ":testdata", + ], + deps = [ + "//cyber", + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ndt_map_test", + size = "small", + timeout = "short", + srcs = ["local_pyramid_map/ndt_map/ndt_map_test.cc"], + data = [":testdata"], + deps = [ + "//cyber", + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ndt_map_config_test", + size = "small", + timeout = "short", + srcs = ["local_pyramid_map/ndt_map/ndt_map_config_test.cc"], + deps = [ + "//cyber", + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + "@eigen", + ], +) + +apollo_cc_test( + name = "local_map_ndt_map_test", + size = "small", + timeout = "short", + srcs = ["local_map/ndt_map/ndt_map_test.cc"], + data = [":testdata"], + deps = [ + ":apollo_localization_msf", + "//cyber", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "local_map_ndt_map_config_test", + size = "small", + timeout = "short", + srcs = ["local_map/ndt_map/ndt_map_config_test.cc"], + deps = [ + ":apollo_localization_msf", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_binary( + name = "lossless_map_creator", + srcs = ["local_tool/map_creation/lossless_map_creator.cc"], + deps = [ + "//cyber", + ":apollo_localization_msf", + "@boost", + "@com_google_absl//:absl", + ], +) + +apollo_cc_binary( + name = "lossless_map_to_lossy_map", + srcs = ["local_tool/map_creation/lossless_map_to_lossy_map.cc"], + deps = [ + ":apollo_localization_msf", + "@boost", + ], +) + +apollo_cc_binary( + name = "poses_interpolator", + srcs = ["local_tool/map_creation/poses_interpolator.cc"], + deps = [ + ":apollo_localization_msf", + ], +) + +apollo_cc_binary( + name = "offline_local_visualizer", + srcs = ["local_tool/local_visualization/offline_visual/offline_local_visualizer_main.cc"], + deps = [ + ":apollo_localization_msf", + "@boost", + ], +) + +apollo_cc_binary( + name = "cyber_record_parser", + srcs = ["local_tool/data_extraction/cyber_record_parser.cc"], + deps = [ + ":apollo_localization_msf", + "//cyber", + "@boost", + "@eigen", + "@local_config_pcl//:pcl", + ], +) + +apollo_cc_binary( + name = "compare_poses", + srcs = ["local_tool/data_extraction/compare_poses.cc"], + deps = [ + ":apollo_localization_msf", + "//cyber", + "@boost", + "@eigen", + ], +) + +apollo_cc_test( + name = "compression_test", + size = "small", + timeout = "short", + srcs = ["common/util/compression_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "rect2d_test", + size = "small", + timeout = "short", + srcs = ["common/util/rect2d_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +filegroup( + name = "common_test_data", + srcs = glob(["common/test_data/**"]), +) + +apollo_cc_test( + name = "system_utility_test", + size = "medium", + timeout = "short", + srcs = ["common/util/system_utility_test.cc"], + data = [":common_test_data"], + deps = [ + ":apollo_localization_msf", + "@boost", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "frame_transform_test", + size = "medium", + timeout = "short", + srcs = ["common/util/frame_transform_test.cc"], + deps = [ + ":apollo_localization_msf", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "base_map_cache_test", + srcs = ["common/util/base_map_cache_test.cc"], + deps = [ + ":apollo_localization_msf", + "//cyber", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) apollo_package() + cpplint() diff --git a/modules/localization/msf/common/BUILD b/modules/localization/msf/common/BUILD deleted file mode 100644 index 1fb0ce93c42..00000000000 --- a/modules/localization/msf/common/BUILD +++ /dev/null @@ -1,7 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() -cpplint() \ No newline at end of file diff --git a/modules/localization/msf/common/io/BUILD b/modules/localization/msf/common/io/BUILD deleted file mode 100644 index 9c2a75b6e82..00000000000 --- a/modules/localization/msf/common/io/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "common_io", - srcs = ["velodyne_utility.cc"], - hdrs = glob(["*.h"]), - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "@com_github_jbeder_yaml_cpp//:yaml-cpp", - "@local_config_pcl//:pcl", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/common/util/BUILD b/modules/localization/msf/common/util/BUILD deleted file mode 100644 index 4ac8f614d3f..00000000000 --- a/modules/localization/msf/common/util/BUILD +++ /dev/null @@ -1,146 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "compression", - srcs = ["compression.cc"], - hdrs = ["compression.h"], - deps = [ - "//cyber", - "@boost", - "@eigen", - ], -) - -cc_library( - name = "file_utility", - srcs = ["file_utility.cc"], - hdrs = ["file_utility.h"], - deps = [ - "//cyber", - "@boost", - "@com_github_google_glog//:glog", - "@eigen", - "@fastrtps", - ], -) - -cc_library( - name = "system_utility", - srcs = ["system_utility.cc"], - hdrs = ["system_utility.h"], - deps = [ - "//cyber", - "@boost", - "@eigen", - ], -) - -cc_library( - name = "frame_transform", - srcs = ["frame_transform.cc"], - hdrs = ["frame_transform.h"], - deps = [ - "//cyber", - "@com_google_absl//:absl", - "@eigen", - "@proj", - ], -) - -cc_library( - name = "util", - hdrs = [ - "extract_ground_plane.h", - "math_util.h", - "rect2d.h", - "time_conversion.h", - "voxel_grid_covariance_hdmap.h", - ], - deps = [ - "//cyber", - "@boost", - "@eigen", - ], -) - -cc_library( - name = "base_map_cache", - hdrs = [ - "base_map_cache.h", - ], - deps = [ - "//modules/common/util:util_tool", - ], -) - -cc_test( - name = "compression_test", - size = "small", - timeout = "short", - srcs = ["compression_test.cc"], - deps = [ - "//modules/localization/msf/common/util:compression", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "rect2d_test", - size = "small", - timeout = "short", - srcs = ["rect2d_test.cc"], - deps = [ - "//modules/localization/msf/common/util", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -filegroup( - name = "test_data", - srcs = glob(["common/test_data/**"]), -) - -cc_test( - name = "system_utility_test", - size = "medium", - timeout = "short", - srcs = ["system_utility_test.cc"], - data = [":test_data"], - deps = [ - "//modules/localization/msf/common/util:system_utility", - "@boost", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "frame_transform_test", - size = "medium", - timeout = "short", - srcs = ["frame_transform_test.cc"], - deps = [ - "//modules/localization/msf/common/util:frame_transform", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "base_map_cache_test", - srcs = ["base_map_cache_test.cc"], - deps = [ - ":base_map_cache", - "//cyber", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_integ/BUILD b/modules/localization/msf/local_integ/BUILD deleted file mode 100644 index c9b9163d053..00000000000 --- a/modules/localization/msf/local_integ/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "local_integ", - srcs = glob(["*.cc"]), - hdrs = glob(["*.h"]), - deps = [ - "//modules/common/math", - "//modules/common/status", - "//modules/common/util:util_tool", - "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", - "//modules/common_msgs/sensor_msgs:gnss_cc_proto", - "//modules/common_msgs/sensor_msgs:gnss_raw_observation_cc_proto", - "//modules/common_msgs/sensor_msgs:heading_cc_proto", - "//modules/common_msgs/sensor_msgs:imu_cc_proto", - "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/localization/common:localization_gflags", - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:frame_transform", - "//modules/localization/msf/local_pyramid_map/base_map", - "//modules/localization/msf/local_pyramid_map/pyramid_map", - "//modules/localization/msf/local_pyramid_map/pyramid_map:pyramid_map_pool", - "//modules/localization/proto:gnss_pnt_result_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/localization_msgs:localization_status_cc_proto", - "//modules/localization/proto:measure_cc_proto", - "//modules/common_msgs/localization_msgs:pose_cc_proto", - "//modules/localization/proto:sins_pva_cc_proto", - "@localization_msf//:localization_msf", - "@com_github_gflags_gflags//:gflags", - "@com_github_jbeder_yaml_cpp//:yaml-cpp", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_map/base_map/BUILD b/modules/localization/msf/local_map/base_map/BUILD deleted file mode 100644 index 84868b543a2..00000000000 --- a/modules/localization/msf/local_map/base_map/BUILD +++ /dev/null @@ -1,41 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_map", - srcs = [ - "base_map.cc", - "base_map_config.cc", - "base_map_matrix.cc", - "base_map_node.cc", - "base_map_node_index.cc", - "base_map_pool.cc", - ], - hdrs = glob(["*.h"]), - deps = [ - "//modules/common/util", - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:base_map_cache", - "//modules/localization/msf/common/util:compression", - "//modules/localization/msf/common/util:system_utility", - "@boost", - "@opencv//:imgcodecs", - ], -) - -cc_test( - name = "map_node_index_test", - timeout = "short", - srcs = ["map_node_index_test.cc"], - deps = [ - ":base_map", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_map/lossless_map/BUILD b/modules/localization/msf/local_map/lossless_map/BUILD deleted file mode 100644 index 37985d6d848..00000000000 --- a/modules/localization/msf/local_map/lossless_map/BUILD +++ /dev/null @@ -1,66 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "lossless_map", - srcs = [ - "lossless_map.cc", - "lossless_map_config.cc", - "lossless_map_matrix.cc", - "lossless_map_node.cc", - "lossless_map_pool.cc", - ], - hdrs = glob(["*.h"]), - deps = [ - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:base_map_cache", - "//modules/localization/msf/common/util:compression", - "//modules/localization/msf/local_map/base_map", - "@eigen", - ], -) - -filegroup( - name = "local_map_test_data", - srcs = glob([ - "modules/localization/msf/local_map/test_data/**", - ]), -) - -cc_test( - name = "map_pool_test", - size = "small", - srcs = ["map_pool_test.cc"], - copts = [ - "-fno-access-control", - ], - deps = [ - "//cyber", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_map/base_map", - "//modules/localization/msf/local_map/lossless_map", - "//modules/localization/msf/local_map/lossy_map", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "lossless_map_config_test", - size = "small", - srcs = ["lossless_map_config_test.cc"], - data = [":local_map_test_data"], - deps = [ - "//cyber", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_map/base_map", - "//modules/localization/msf/local_map/lossless_map", - "//modules/localization/msf/local_map/lossy_map", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_map/lossy_map/BUILD b/modules/localization/msf/local_map/lossy_map/BUILD deleted file mode 100644 index 40610416a31..00000000000 --- a/modules/localization/msf/local_map/lossy_map/BUILD +++ /dev/null @@ -1,50 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "lossy_map", - srcs = [ - "lossy_map_2d.cc", - "lossy_map_config_2d.cc", - "lossy_map_matrix_2d.cc", - "lossy_map_pool_2d.cc", - ], - hdrs = glob(["*.h"]), - deps = [ - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:compression", - "//modules/localization/msf/local_map/base_map", - "@eigen", - ], -) - -filegroup( - name = "test_data", - srcs = glob([ - "local_map/test_data/**", - ]), -) - -cc_test( - name = "lossy_map_config_2d_test", - size = "medium", - timeout = "short", - srcs = ["lossy_map_config_2d_test.cc"], - data = [ - ":test_data", - ], - deps = [ - "//cyber", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_map/base_map", - "//modules/localization/msf/local_map/lossless_map", - "//modules/localization/msf/local_map/lossy_map", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_map/ndt_map/BUILD b/modules/localization/msf/local_map/ndt_map/BUILD deleted file mode 100644 index 915dad4178b..00000000000 --- a/modules/localization/msf/local_map/ndt_map/BUILD +++ /dev/null @@ -1,61 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "ndt_map", - srcs = [ - "ndt_map.cc", - "ndt_map_config.cc", - "ndt_map_matrix.cc", - "ndt_map_node.cc", - "ndt_map_pool.cc", - ], - hdrs = glob(["*.h"]), - deps = [ - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:base_map_cache", - "//modules/localization/msf/common/util:compression", - "//modules/localization/msf/local_map/base_map", - "@eigen", - ], -) - -filegroup( - name = "test_data", - srcs = glob([ - "local_map/test_data/ndt_map/**", - ]), -) - -cc_test( - name = "ndt_map_test", - size = "small", - timeout = "short", - srcs = ["ndt_map_test.cc"], - data = [":test_data"], - deps = [ - ":ndt_map", - "//cyber", - "//modules/localization/msf/common/io:common_io", - "@com_google_absl//:absl", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "ndt_map_config_test", - size = "small", - timeout = "short", - srcs = ["ndt_map_config_test.cc"], - deps = [ - ":ndt_map", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_pyramid_map/base_map/BUILD b/modules/localization/msf/local_pyramid_map/base_map/BUILD deleted file mode 100644 index 6385912f7dd..00000000000 --- a/modules/localization/msf/local_pyramid_map/base_map/BUILD +++ /dev/null @@ -1,129 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_map_config", - srcs = ["base_map_config.cc"], - hdrs = [ - "base_map_config.h", - "base_map_fwd.h", - ], - deps = [ - "//cyber", - "//modules/common/util", - "//modules/localization/msf/common/util", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "base_map_matrix", - srcs = ["base_map_matrix.cc"], - hdrs = [ - "base_map_fwd.h", - "base_map_matrix.h", - ], - deps = [ - "//cyber", - "@com_github_google_glog//:glog", - "@eigen", - "@opencv//:imgcodecs", - "@zlib", - ], -) - -cc_library( - name = "base_map_node_index", - srcs = ["base_map_node_index.cc"], - hdrs = [ - "base_map_config.h", - "base_map_fwd.h", - "base_map_node_index.h", - ], - deps = [ - ":base_map_config", - "//cyber", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "base_map_node_config", - srcs = ["base_map_node_config.cc"], - hdrs = ["base_map_node_config.h"], - deps = [ - ":base_map_node_index", - "//cyber", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "base_map_node", - srcs = ["base_map_node.cc"], - hdrs = [ - "base_map_fwd.h", - "base_map_matrix_handler.h", - "base_map_node.h", - ], - deps = [ - ":base_map_config", - ":base_map_matrix", - ":base_map_node_config", - ":base_map_node_index", - "//cyber", - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:compression", - "//modules/localization/msf/common/util:file_utility", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "base_map_pool", - srcs = ["base_map_pool.cc"], - hdrs = [ - "base_map_fwd.h", - "base_map_pool.h", - ], - deps = [ - ":base_map_config", - ":base_map_node", - ":base_map_node_index", - "//cyber", - "//modules/localization/msf/common/util", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "base_map", - srcs = ["base_map.cc"], - hdrs = [ - "base_map.h", - "base_map_fwd.h", - ], - deps = [ - ":base_map_config", - ":base_map_node", - ":base_map_node_index", - ":base_map_pool", - "//cyber", - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:base_map_cache", - "//modules/localization/msf/common/util:file_utility", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_pyramid_map/ndt_map/BUILD b/modules/localization/msf/local_pyramid_map/ndt_map/BUILD deleted file mode 100644 index 9bbdeb538c9..00000000000 --- a/modules/localization/msf/local_pyramid_map/ndt_map/BUILD +++ /dev/null @@ -1,134 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "ndt_map_config", - srcs = ["ndt_map_config.cc"], - hdrs = ["ndt_map_config.h"], - deps = [ - "//modules/localization/msf/local_pyramid_map/base_map:base_map_config", - "@com_github_google_glog//:glog", - ], -) - -cc_library( - name = "ndt_map_matrix", - srcs = ["ndt_map_matrix.cc"], - hdrs = ["ndt_map_matrix.h"], - deps = [ - ":ndt_map_config", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_config", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_matrix", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "ndt_map_matrix_handler", - srcs = ["ndt_map_matrix_handler.cc"], - hdrs = ["ndt_map_matrix_handler.h"], - deps = [ - ":ndt_map_config", - ":ndt_map_matrix", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_node", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "ndt_map_node_config", - srcs = ["ndt_map_node_config.cc"], - hdrs = ["ndt_map_node_config.h"], - deps = [ - "//modules/localization/msf/local_pyramid_map/base_map:base_map_node_config", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "ndt_map_node", - srcs = ["ndt_map_node.cc"], - hdrs = ["ndt_map_node.h"], - deps = [ - ":ndt_map_config", - ":ndt_map_matrix", - ":ndt_map_matrix_handler", - ":ndt_map_node_config", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_node", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "ndt_map_pool", - srcs = ["ndt_map_pool.cc"], - hdrs = ["ndt_map_pool.h"], - deps = [ - ":ndt_map_matrix", - ":ndt_map_matrix_handler", - ":ndt_map_node", - ":ndt_map_node_config", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_config", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_pool", - ], -) - -cc_library( - name = "ndt_map", - srcs = ["ndt_map.cc"], - hdrs = ["ndt_map.h"], - deps = [ - ":ndt_map_config", - ":ndt_map_node", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/base_map", - ], -) - -filegroup( - name = "test_data", - srcs = glob([ - "local_map/test_data/ndt_map/**", - ]), -) - -cc_test( - name = "ndt_map_test", - size = "small", - timeout = "short", - srcs = ["ndt_map_test.cc"], - data = [":test_data"], - deps = [ - "//cyber", - "//modules/localization/msf/common/io:common_io", - "//modules/localization/msf/local_pyramid_map/ndt_map", - "//modules/localization/msf/local_pyramid_map/ndt_map:ndt_map_pool", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "ndt_map_config_test", - size = "small", - timeout = "short", - srcs = ["ndt_map_config_test.cc"], - deps = [ - "//cyber", - "//modules/localization/msf/local_pyramid_map/ndt_map:ndt_map_config", - "@com_google_googletest//:gtest_main", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_pyramid_map/pyramid_map/BUILD b/modules/localization/msf/local_pyramid_map/pyramid_map/BUILD deleted file mode 100644 index 04876b3fd9d..00000000000 --- a/modules/localization/msf/local_pyramid_map/pyramid_map/BUILD +++ /dev/null @@ -1,178 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "pyramid_map_config", - srcs = ["pyramid_map_config.cc"], - hdrs = ["pyramid_map_config.h"], - deps = [ - "//modules/localization/msf/local_pyramid_map/base_map:base_map_config", - "@com_github_google_glog//:glog", - ], -) - -cc_library( - name = "pyramid_map_matrix", - srcs = ["pyramid_map_matrix.cc"], - hdrs = [ - "aligned_matrix.h", - "pyramid_map_matrix.h", - ], - deps = [ - ":pyramid_map_config", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_config", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_matrix", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "pyramid_map_matrix_handler", - srcs = ["pyramid_map_matrix_handler.cc"], - hdrs = ["pyramid_map_matrix_handler.h"], - deps = [ - ":pyramid_map_config", - ":pyramid_map_matrix", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_node", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "pyramid_map_node_config", - srcs = ["pyramid_map_node_config.cc"], - hdrs = ["pyramid_map_node_config.h"], - deps = [ - "//modules/localization/msf/local_pyramid_map/base_map:base_map_node_config", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "pyramid_map_node", - srcs = ["pyramid_map_node.cc"], - hdrs = ["pyramid_map_node.h"], - deps = [ - ":pyramid_map_config", - ":pyramid_map_matrix", - ":pyramid_map_matrix_handler", - ":pyramid_map_node_config", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_node", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "pyramid_map_pool", - srcs = ["pyramid_map_pool.cc"], - hdrs = ["pyramid_map_pool.h"], - deps = [ - ":pyramid_map_matrix", - ":pyramid_map_matrix_handler", - ":pyramid_map_node", - ":pyramid_map_node_config", - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:base_map_cache", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_config", - "//modules/localization/msf/local_pyramid_map/base_map:base_map_pool", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "pyramid_map", - srcs = ["pyramid_map.cc"], - hdrs = ["pyramid_map.h"], - deps = [ - ":pyramid_map_config", - ":pyramid_map_node", - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:base_map_cache", - "//modules/localization/msf/local_pyramid_map/base_map", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_test( - name = "pyramid_map_config_test", - size = "medium", - timeout = "short", - srcs = ["pyramid_map_config_test.cc"], - deps = [ - ":pyramid_map_config", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "pyramid_map_matrix_handler_test", - size = "medium", - timeout = "short", - srcs = ["pyramid_map_matrix_handler_test.cc"], - deps = [ - ":pyramid_map_matrix_handler", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "pyramid_map_matrix_test", - size = "medium", - timeout = "short", - srcs = ["pyramid_map_matrix_test.cc"], - copts = ["-fno-access-control"], - deps = [ - ":pyramid_map_matrix", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "pyramid_map_node_test", - size = "medium", - timeout = "short", - srcs = ["pyramid_map_node_test.cc"], - deps = [ - ":pyramid_map_node", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "pyramid_map_pool_test", - size = "large", - timeout = "short", - srcs = ["pyramid_map_pool_test.cc"], - deps = [ - ":pyramid_map", - ":pyramid_map_pool", - "//modules/localization/msf/local_pyramid_map/base_map", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "pyramid_map_test", - size = "large", - timeout = "short", - srcs = ["pyramid_map_test.cc"], - deps = [ - ":pyramid_map", - ":pyramid_map_pool", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_tool/data_extraction/BUILD b/modules/localization/msf/local_tool/data_extraction/BUILD deleted file mode 100644 index 6ce507faaa4..00000000000 --- a/modules/localization/msf/local_tool/data_extraction/BUILD +++ /dev/null @@ -1,69 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "localization/bin", -# targets = [ -# ":compare_poses", -# ":cyber_record_parser", -# ], -# ) - -cc_library( - name = "data_extraction", - srcs = [ - "cyber_record_reader.cc", - "location_exporter.cc", - "pcd_exporter.cc", - ], - hdrs = [ - "cyber_record_reader.h", - "location_exporter.h", - "pcd_exporter.h", - ], - deps = [ - "//cyber", - "//modules/common/math", - "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/localization/msf/common/io:common_io", - "//modules/common_msgs/localization_msgs:gps_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/localization/proto:measure_cc_proto", - "@boost", - "@eigen", - "@local_config_pcl//:pcl", - ], -) - -cc_binary( - name = "cyber_record_parser", - srcs = ["cyber_record_parser.cc"], - linkstatic = True, - deps = [ - ":data_extraction", - "//cyber", - "@boost", - "@eigen", - "@local_config_pcl//:pcl", - ], -) - -cc_binary( - name = "compare_poses", - srcs = ["compare_poses.cc"], - linkstatic = True, - deps = [ - ":data_extraction", - "//cyber", - "@boost", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_tool/local_visualization/engine/BUILD b/modules/localization/msf/local_tool/local_visualization/engine/BUILD deleted file mode 100644 index abd77207ef6..00000000000 --- a/modules/localization/msf/local_tool/local_visualization/engine/BUILD +++ /dev/null @@ -1,33 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "engine", - srcs = [ - "visualization_engine.cc", - "visualization_manager.cc", - ], - hdrs = [ - "visualization_engine.h", - "visualization_manager.h", - ], - copts = [ - "-O2", - "-DMODULE_NAME=\\\"localization_visualizer\\\"", - ], - deps = [ - "//cyber", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/localization/msf/common/io:common_io", - "//modules/localization/msf/local_pyramid_map/base_map", - "@boost", - "@opencv//:highgui", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_tool/local_visualization/offline_visual/BUILD b/modules/localization/msf/local_tool/local_visualization/offline_visual/BUILD deleted file mode 100644 index 01f557e389d..00000000000 --- a/modules/localization/msf/local_tool/local_visualization/offline_visual/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "localization/bin", -# targets = [ -# ":offline_local_visualizer", -# ], -# ) - -cc_library( - name = "offline_local_visualizer_lib", - srcs = ["offline_local_visualizer.cc"], - hdrs = ["offline_local_visualizer.h"], - deps = [ - "//cyber", - "//modules/common/util", - "//modules/localization/msf/common/io:common_io", - "//modules/localization/msf/local_pyramid_map/base_map", - "//modules/localization/msf/local_tool/local_visualization/engine", - "@boost", - "@com_google_absl//:absl", - ], -) - -cc_binary( - name = "offline_local_visualizer", - srcs = ["offline_local_visualizer_main.cc"], - linkstatic = True, - deps = [ - ":offline_local_visualizer_lib", - "@boost", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_tool/local_visualization/online_visual/BUILD b/modules/localization/msf/local_tool/local_visualization/online_visual/BUILD index 00cab97fa7e..affca045db4 100644 --- a/modules/localization/msf/local_tool/local_visualization/online_visual/BUILD +++ b/modules/localization/msf/local_tool/local_visualization/online_visual/BUILD @@ -1,11 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_binary", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "online_visualizer_component_lib", srcs = ["online_visualizer_component.cc"], hdrs = ["online_visualizer_component.h"], @@ -15,35 +13,24 @@ cc_library( "//modules/common/math", "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", "//modules/localization/common:localization_gflags", - "//modules/localization/msf/common/io:common_io", - "//modules/localization/msf/local_pyramid_map/base_map", - "//modules/localization/msf/local_tool/local_visualization/engine", + "//modules/localization/msf:apollo_localization_msf", "//modules/common_msgs/localization_msgs:localization_cc_proto", "//modules/localization/proto:localization_config_cc_proto", "@boost", "@com_google_googletest//:gtest_main", "@local_config_pcl//:pcl", ], - alwayslink = True, ) -cc_binary( +apollo_cc_binary( name = "online_visualizer_compenont.so", linkshared = True, linkstatic = True, deps = [":online_visualizer_component_lib"], ) -# install( -# name = "install", -# library_dest = "localization/lib/msf/local_tool/local_visualization/online_visual", -# targets = [ -# ":online_visualizer_compenont.so", -# ], -# ) - apollo_package() cpplint() diff --git a/modules/localization/msf/local_tool/map_creation/BUILD b/modules/localization/msf/local_tool/map_creation/BUILD deleted file mode 100644 index fb1882c7a1d..00000000000 --- a/modules/localization/msf/local_tool/map_creation/BUILD +++ /dev/null @@ -1,56 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -# load("//tools/install:install.bzl", "install") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "localization/bin", -# targets = [ -# ":lossless_map_creator", -# ":lossless_map_to_lossy_map", -# ":poses_interpolator", -# ], -# ) - -cc_binary( - name = "lossless_map_creator", - srcs = ["lossless_map_creator.cc"], - linkstatic = True, - deps = [ - "//cyber", - "//modules/localization/msf/common/io:common_io", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/base_map", - "//modules/localization/msf/local_pyramid_map/pyramid_map", - "//modules/localization/msf/local_pyramid_map/pyramid_map:pyramid_map_pool", - "@boost", - "@com_google_absl//:absl", - ], -) - -cc_binary( - name = "lossless_map_to_lossy_map", - srcs = ["lossless_map_to_lossy_map.cc"], - linkstatic = True, - deps = [ - "//modules/localization/msf/local_pyramid_map/base_map", - "//modules/localization/msf/local_pyramid_map/pyramid_map", - "//modules/localization/msf/local_pyramid_map/pyramid_map:pyramid_map_pool", - "@boost", - ], -) - -cc_binary( - name = "poses_interpolator", - srcs = ["poses_interpolator.cc"], - linkstatic = True, - deps = [ - "//modules/localization/msf/local_tool/map_creation/poses_interpolation:poses_interpolation_lib", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/local_tool/map_creation/poses_interpolation/BUILD b/modules/localization/msf/local_tool/map_creation/poses_interpolation/BUILD deleted file mode 100644 index 28e9f42228c..00000000000 --- a/modules/localization/msf/local_tool/map_creation/poses_interpolation/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "poses_interpolation_lib", - srcs = ["poses_interpolation.cc"], - hdrs = ["poses_interpolation.h"], - deps = [ - "//modules/common/util:util_tool", - "//modules/localization/msf/common/io:common_io", - "@boost", - ], -) - -apollo_package() -cpplint() diff --git a/modules/localization/msf/params/imu_localization_extrinsics.yaml b/modules/localization/msf/params/imu_localization_extrinsics.yaml new file mode 100644 index 00000000000..8b488c8ef72 --- /dev/null +++ b/modules/localization/msf/params/imu_localization_extrinsics.yaml @@ -0,0 +1,17 @@ +child_frame_id: imu +transform: + translation: + x: 0.0 + y: 0.0 + z: 0.0 + rotation: + x: 0.0 + y: 0.0 + z: 0.0 + w: 1.0 +header: + seq: 0 + stamp: + secs: 1512689414 + nsecs: 0 + frame_id: localization diff --git a/modules/localization/ndt/BUILD b/modules/localization/ndt/BUILD index 1774e0ca49c..470b2cf43c2 100644 --- a/modules/localization/ndt/BUILD +++ b/modules/localization/ndt/BUILD @@ -1,12 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "ndt_localization_component_lib", +apollo_component( + name = "libndt_localization_component.so", srcs = [ "localization_pose_buffer.cc", "ndt_localization.cc", @@ -18,7 +16,6 @@ cc_library( "ndt_localization_component.h", ], copts = ["-DMODULE_NAME=\\\"NDTlocalization\\\""], - alwayslink = True, deps = [ "//cyber", "//modules/common/adapters:adapter_gflags", @@ -31,12 +28,11 @@ cc_library( "//modules/common_msgs/sensor_msgs:ins_cc_proto", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", "//modules/localization/common:localization_gflags", - "//modules/localization/msf/common/util", + "//modules/localization/msf:apollo_localization_msf", "//modules/localization/ndt/ndt_locator:ndt_lidar_locator", "//modules/common_msgs/localization_msgs:gps_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/transform:buffer", - "//modules/transform:transform_broadcaster", + "//modules/transform:apollo_transform", "@boost", "@com_github_jbeder_yaml_cpp//:yaml-cpp", "@com_github_google_glog//:glog", @@ -44,14 +40,7 @@ cc_library( ], ) -cc_binary( - name = "libndt_localization_component.so", - linkshared = True, - linkstatic = True, - deps = [":ndt_localization_component_lib"], -) - -cc_test( +apollo_cc_test( name = "ndt_localization_test", size = "small", timeout = "short", @@ -64,7 +53,7 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "ndt_localization_pose_buffer_test", size = "small", timeout = "short", @@ -77,13 +66,5 @@ cc_test( ], ) -# install( -# name = "install", -# library_dest = "localization/lib/ndt", -# targets = [ -# ":libndt_localization_component.so", -# ], -# ) - apollo_package() cpplint() diff --git a/modules/localization/ndt/map_creation/BUILD b/modules/localization/ndt/map_creation/BUILD index 8f94d9d52b4..16e1641b5c0 100644 --- a/modules/localization/ndt/map_creation/BUILD +++ b/modules/localization/ndt/map_creation/BUILD @@ -1,34 +1,19 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -cc_binary( +apollo_cc_binary( name = "ndt_map_creator", srcs = ["ndt_map_creator.cc"], deps = [ "//cyber", - "//modules/localization/msf/common/io:common_io", - "//modules/localization/msf/common/util", - "//modules/localization/msf/common/util:system_utility", - "//modules/localization/msf/local_pyramid_map/base_map", - "//modules/localization/msf/local_pyramid_map/ndt_map", - "//modules/localization/msf/local_pyramid_map/ndt_map:ndt_map_pool", + "//modules/localization/msf:apollo_localization_msf", "@boost", "@com_google_absl//:absl", "@eigen", ], ) -# install( -# name = "install", -# runtime_dest = "localization/bin", -# targets = [ -# ":ndt_map_creator", -# ], -# ) - apollo_package() cpplint() diff --git a/modules/localization/ndt/ndt_locator/BUILD b/modules/localization/ndt/ndt_locator/BUILD index 9a639daf271..c2fec57a27f 100644 --- a/modules/localization/ndt/ndt_locator/BUILD +++ b/modules/localization/ndt/ndt_locator/BUILD @@ -1,10 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "ndt_lidar_locator", srcs = ["lidar_locator_ndt.cc"], hdrs = [ @@ -20,9 +19,7 @@ cc_library( "//modules/common/monitor_log", "//modules/common/util:util_tool", "//modules/localization/common:localization_gflags", - "//modules/localization/msf/common/util", - "//modules/localization/msf/local_pyramid_map/ndt_map", - "//modules/localization/msf/local_pyramid_map/ndt_map:ndt_map_pool", + "//modules/localization/msf:apollo_localization_msf", "@com_github_jbeder_yaml_cpp//:yaml-cpp", "@com_github_google_glog//:glog", "@eigen", @@ -37,7 +34,7 @@ filegroup( ]), ) -cc_test( +apollo_cc_test( name = "ndt_lidar_locator_test", size = "large", timeout = "short", @@ -46,12 +43,12 @@ cc_test( deps = [ ":ndt_lidar_locator", "//cyber", - "//modules/localization/msf/common/io:common_io", + "//modules/localization/msf:apollo_localization_msf", "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "ndt_solver_test", size = "large", timeout = "short", @@ -60,7 +57,7 @@ cc_test( deps = [ ":ndt_lidar_locator", "//cyber", - "//modules/localization/msf/common/io:common_io", + "//modules/localization/msf:apollo_localization_msf", "@com_google_googletest//:gtest_main", ], ) diff --git a/modules/localization/proto/rtk_config.proto b/modules/localization/proto/rtk_config.proto index cddb8f82cd5..3dd67f86514 100644 --- a/modules/localization/proto/rtk_config.proto +++ b/modules/localization/proto/rtk_config.proto @@ -10,6 +10,7 @@ message Config { optional string gps_status_topic = 12; optional string broadcast_tf_frame_id = 4; optional string broadcast_tf_child_frame_id = 5; + optional string imu_frame_id = 13 [default = "imu"]; optional int32 imu_list_max_size = 6; optional double gps_imu_time_diff_threshold = 7; optional double map_offset_x = 8; diff --git a/modules/localization/rtk/BUILD b/modules/localization/rtk/BUILD index 3df126b3f53..07e0c7beef8 100644 --- a/modules/localization/rtk/BUILD +++ b/modules/localization/rtk/BUILD @@ -1,12 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component", "apollo_cc_test") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "rtk_localization_component_lib", +apollo_component( + name = "librtk_localization_component.so", srcs = [ "rtk_localization.cc", "rtk_localization_component.cc", @@ -16,13 +14,13 @@ cc_library( "rtk_localization_component.h", ], copts = ["-DMODULE_NAME=\\\"localization\\\""], - alwayslink = True, deps = [ "//cyber", "//modules/common/math", "//modules/common/monitor_log", "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common/util:util_tool", + "//modules/common_msgs/transform_msgs:transform_cc_proto", "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", "//modules/common_msgs/sensor_msgs:gnss_cc_proto", "//modules/common_msgs/sensor_msgs:ins_cc_proto", @@ -30,39 +28,24 @@ cc_library( "//modules/common_msgs/localization_msgs:imu_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", "//modules/localization/proto:rtk_config_cc_proto", - "//modules/transform:transform_broadcaster", + "//modules/transform:apollo_transform", "@com_google_googletest//:gtest", "@eigen", ], ) -cc_binary( - name = "librtk_localization_component.so", - linkshared = True, - linkstatic = True, - deps = [":rtk_localization_component_lib"], -) - -cc_test( +apollo_cc_test( name = "rtk_localization_test", size = "small", srcs = ["rtk_localization_test.cc"], data = ["//modules/localization:localization_testdata"], deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/localization/rtk:rtk_localization_component_lib", "@com_google_googletest//:gtest_main", ], ) -# install( -# name = "install", -# library_dest = "localization/lib/rtk", -# targets = [ -# ":librtk_localization_component.so", -# ], -# ) - apollo_package() cpplint() diff --git a/modules/localization/rtk/rtk_localization.cc b/modules/localization/rtk/rtk_localization.cc index 66895e0e681..7739f94f5b0 100644 --- a/modules/localization/rtk/rtk_localization.cc +++ b/modules/localization/rtk/rtk_localization.cc @@ -18,10 +18,11 @@ #include +#include "modules/common_msgs/sensor_msgs/gnss_best_pose.pb.h" + #include "cyber/time/clock.h" #include "modules/common/math/quaternion.h" #include "modules/common/util/string_util.h" -#include "modules/common_msgs/sensor_msgs/gnss_best_pose.pb.h" namespace apollo { namespace localization { @@ -211,10 +212,12 @@ void RTKLocalization::FillLocalizationStatusMsg( auto pos_type = static_cast(status.pos_type()); switch (pos_type) { + case drivers::gnss::SolutionType::NARROW_INT: case drivers::gnss::SolutionType::INS_RTKFIXED: localization_status->set_fusion_status(MeasureState::OK); localization_status->set_state_message(""); break; + case drivers::gnss::SolutionType::NARROW_FLOAT: case drivers::gnss::SolutionType::INS_RTKFLOAT: localization_status->set_fusion_status(MeasureState::WARNNING); localization_status->set_state_message( diff --git a/modules/localization/rtk/rtk_localization_component.cc b/modules/localization/rtk/rtk_localization_component.cc index c1e2cc1f992..f417a6131ca 100644 --- a/modules/localization/rtk/rtk_localization_component.cc +++ b/modules/localization/rtk/rtk_localization_component.cc @@ -15,7 +15,12 @@ *****************************************************************************/ #include "modules/localization/rtk/rtk_localization_component.h" + +#include "modules/common_msgs/transform_msgs/transform.pb.h" + #include "cyber/time/clock.h" +#include "cyber/time/duration.h" +#include "modules/transform/buffer.h" namespace apollo { namespace localization { @@ -35,6 +40,12 @@ bool RTKLocalizationComponent::Init() { return false; } + // get imu to localizaiton transform + if (!GetImuToLocalizationTF()) { + AERROR << "Get IMU to Localization tranform failed."; + return false; + } + return true; } @@ -53,6 +64,7 @@ bool RTKLocalizationComponent::InitConfig() { gps_status_topic_ = rtk_config.gps_status_topic(); broadcast_tf_frame_id_ = rtk_config.broadcast_tf_frame_id(); broadcast_tf_child_frame_id_ = rtk_config.broadcast_tf_child_frame_id(); + imu_frame_id_ = rtk_config.imu_frame_id(); localization_->InitConfig(rtk_config); @@ -80,6 +92,33 @@ bool RTKLocalizationComponent::InitIO() { return true; } +bool RTKLocalizationComponent::GetImuToLocalizationTF() { + transform::Buffer* tf2_buffer = transform::Buffer::Instance(); + transform::TransformStamped tf; + cyber::Duration duration(1.0); + for (uint8_t i = 0; i < 10; ++i) { + try { + tf = tf2_buffer->lookupTransform(broadcast_tf_child_frame_id_, + imu_frame_id_, cyber::Time(0)); + } catch (std::exception& ex) { + AERROR << ex.what(); + duration.Sleep(); + continue; + } + AINFO << "read imu to localization transform: " << tf.DebugString(); + imu_localization_trans_.reset(new Eigen::Affine3d); + *imu_localization_trans_ = + Eigen::Translation3d(tf.transform().translation().x(), + tf.transform().translation().y(), + tf.transform().translation().z()) * + Eigen::Quaterniond( + tf.transform().rotation().qw(), tf.transform().rotation().qx(), + tf.transform().rotation().qy(), tf.transform().rotation().qz()); + return true; + } + return false; +} + bool RTKLocalizationComponent::Proc( const std::shared_ptr& gps_msg) { localization_->GpsCallback(gps_msg); @@ -90,6 +129,14 @@ bool RTKLocalizationComponent::Proc( LocalizationStatus localization_status; localization_->GetLocalizationStatus(&localization_status); + // set localization pose + auto position = localization.mutable_pose()->mutable_position(); + Eigen::Vector3d pose(position->x(), position->y(), position->z()); + auto p = *imu_localization_trans_ * pose; + position->set_x(p[0]); + position->set_y(p[1]); + position->set_z(p[2]); + // publish localization messages PublishPoseBroadcastTopic(localization); PublishPoseBroadcastTF(localization); diff --git a/modules/localization/rtk/rtk_localization_component.h b/modules/localization/rtk/rtk_localization_component.h index c055acb3c57..aab156ed03d 100644 --- a/modules/localization/rtk/rtk_localization_component.h +++ b/modules/localization/rtk/rtk_localization_component.h @@ -19,16 +19,23 @@ #include #include -#include "cyber/class_loader/class_loader.h" -#include "cyber/component/component.h" -#include "cyber/cyber.h" -#include "cyber/message/raw_message.h" +#include "Eigen/Eigen" +// Eigen 3.3.7: #define ALIVE (0) +// fastrtps: enum ChangeKind_t { ALIVE, ... }; +#if defined(ALIVE) +#undef ALIVE +#endif -#include "modules/common_msgs/sensor_msgs/ins.pb.h" #include "modules/common_msgs/localization_msgs/gps.pb.h" #include "modules/common_msgs/localization_msgs/imu.pb.h" #include "modules/common_msgs/localization_msgs/localization.pb.h" +#include "modules/common_msgs/sensor_msgs/ins.pb.h" #include "modules/localization/proto/rtk_config.pb.h" + +#include "cyber/class_loader/class_loader.h" +#include "cyber/component/component.h" +#include "cyber/cyber.h" +#include "cyber/message/raw_message.h" #include "modules/localization/rtk/rtk_localization.h" #include "modules/transform/transform_broadcaster.h" @@ -48,6 +55,7 @@ class RTKLocalizationComponent final private: bool InitConfig(); bool InitIO(); + bool GetImuToLocalizationTF(); void PublishPoseBroadcastTF(const LocalizationEstimate &localization); void PublishPoseBroadcastTopic(const LocalizationEstimate &localization); @@ -72,7 +80,9 @@ class RTKLocalizationComponent final std::string broadcast_tf_frame_id_ = ""; std::string broadcast_tf_child_frame_id_ = ""; + std::string imu_frame_id_ = ""; std::unique_ptr tf2_broadcaster_; + std::unique_ptr imu_localization_trans_; std::unique_ptr localization_; }; diff --git a/modules/map/BUILD b/modules/map/BUILD index 95df1f6b58f..c97fc17a855 100644 --- a/modules/map/BUILD +++ b/modules/map/BUILD @@ -1,12 +1,95 @@ -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") +load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") package( default_visibility = ["//visibility:public"], ) +apollo_cc_library( + name = "apollo_map", + srcs = [ + "hdmap/adapter/opendrive_adapter.cc", + "hdmap/adapter/proto_organizer.cc", + "hdmap/adapter/xml_parser/coordinate_convert_tool.cc", + "hdmap/adapter/xml_parser/header_xml_parser.cc", + "hdmap/adapter/xml_parser/junctions_xml_parser.cc", + "hdmap/adapter/xml_parser/lanes_xml_parser.cc", + "hdmap/adapter/xml_parser/objects_xml_parser.cc", + "hdmap/adapter/xml_parser/roads_xml_parser.cc", + "hdmap/adapter/xml_parser/signals_xml_parser.cc", + "hdmap/adapter/xml_parser/util_xml_parser.cc", + "hdmap/hdmap.cc", + "hdmap/hdmap_common.cc", + "hdmap/hdmap_impl.cc", + "hdmap/hdmap_util.cc", + "pnc_map/path.cc", + "pnc_map/pnc_map_base.cc", + "pnc_map/route_segments.cc", + "relative_map/common/relative_map_gflags.cc", + "relative_map/navigation_lane.cc", + "relative_map/relative_map.cc", + ], + hdrs = [ + "hdmap/adapter/opendrive_adapter.h", + "hdmap/adapter/proto_organizer.h", + "hdmap/adapter/xml_parser/common_define.h", + "hdmap/adapter/xml_parser/coordinate_convert_tool.h", + "hdmap/adapter/xml_parser/header_xml_parser.h", + "hdmap/adapter/xml_parser/junctions_xml_parser.h", + "hdmap/adapter/xml_parser/lanes_xml_parser.h", + "hdmap/adapter/xml_parser/objects_xml_parser.h", + "hdmap/adapter/xml_parser/roads_xml_parser.h", + "hdmap/adapter/xml_parser/signals_xml_parser.h", + "hdmap/adapter/xml_parser/status.h", + "hdmap/adapter/xml_parser/util_xml_parser.h", + "hdmap/hdmap.h", + "hdmap/hdmap_common.h", + "hdmap/hdmap_impl.h", + "hdmap/hdmap_util.h", + "pnc_map/path.h", + "pnc_map/pnc_map_base.h", + "pnc_map/route_segments.h", + "relative_map/common/relative_map_gflags.h", + "relative_map/navigation_lane.h", + "relative_map/relative_map.h", + ], + deps = [ + "//cyber", + "//modules/common/adapters:adapter_gflags", + "//modules/common/configs:config_gflags", + "//modules/common/math", + "//modules/common/monitor_log", + "//modules/common/status", + "//modules/common/util:common_util", + "//modules/common/util:util_tool", + "//modules/common/vehicle_state:vehicle_state_provider", + "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/map_msgs:map_cc_proto", + "//modules/common_msgs/map_msgs:map_id_cc_proto", + "//modules/common_msgs/map_msgs:map_lane_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/planning_msgs:navigation_cc_proto", + "//modules/common_msgs/planning_msgs:planning_command_cc_proto", + "//modules/common_msgs/routing_msgs:routing_cc_proto", + "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", + "//modules/map/relative_map/proto:relative_map_config_cc_proto", + "@boost", + "@com_github_gflags_gflags//:gflags", + "@com_github_google_glog//:glog", + "@com_github_grpc_grpc//:grpc++", + "@com_github_jbeder_yaml_cpp//:yaml-cpp", + "@com_google_absl//:absl", + "@eigen", + "@proj", + "@tinyxml2", + ], +) + filegroup( - name = "testdata", + name = "map_testdata", srcs = glob([ "testdata/**/*", ]), @@ -19,89 +102,154 @@ filegroup( ]), ) -# install( -# name = "map_testdata", -# data_dest = "map/addition_data", -# data = [":testdata"], +# only test use +# cuda_library( +# name = "cuda_pnc_util", +# srcs = ["pnc_map/cuda_util.cu"], +# hdrs = ["pnc_map/cuda_util.h"], +# tags = ["exclude"], +# deps = [ +# "//cyber", +# "//modules/common/math", +# "@local_config_cuda//cuda:cudart", +# ], # ) -# install( -# name = "install", -# data_dest = "map", -# data = [ -# ":cyberfile.xml", -# ":map.BUILD", +# apollo_cc_test( +# name = "cuda_util_test", +# size = "small", +# srcs = [ +# "pnc_map/cuda_util.h", +# "pnc_map/cuda_util_test.cc", +# ":cuda_pnc_util", # ], +# linkstatic = True, +# tags = ["exclude"], # deps = [ -# ":pb_map", -# ":pb_hdrs", -# "//modules/map/data:install", -# "//modules/map/relative_map:install", -# "//modules/map/tools:install", -# "//modules/map/hdmap/adapter:install", -# "//modules/map/hdmap:install", -# "//modules/map/pnc_map:install", -# "//modules/map/relative_map/tools:install", -# ":map_testdata" +# "//modules/common/math", +# "@com_google_googletest//:gtest_main", +# "@local_config_cuda//cuda:cublas", +# "@local_config_cuda//cuda:cuda_headers", +# "@local_config_cuda//cuda:cudart", # ], # ) -# install( -# name = "pb_hdrs", -# data_dest = "map/include", -# data = [ -# "//modules/map/relative_map/proto:navigator_config_cc_proto", -# "//modules/map/relative_map/proto:relative_map_config_cc_proto", -# ], -# ) +apollo_cc_test( + name = "pnc_path_test", + size = "small", + srcs = ["pnc_map/path_test.cc"], + deps = [ + ":apollo_map", + "//modules/common/util:common_util", + "//modules/common_msgs/routing_msgs:routing_cc_proto", + "@com_google_googletest//:gtest_main", + ], +) -# install_files( -# name = "pb_map", -# dest = "map", -# files = [ -# "//modules/common_msgs/map_msgs:map_clear_area_py_pb2", -# "//modules/common_msgs/map_msgs:map_crosswalk_py_pb2", -# "//modules/common_msgs/map_msgs:map_geometry_py_pb2", -# "//modules/common_msgs/map_msgs:map_id_py_pb2", -# "//modules/common_msgs/map_msgs:map_junction_py_pb2", -# "//modules/common_msgs/map_msgs:map_lane_py_pb2", -# "//modules/common_msgs/map_msgs:map_overlap_py_pb2", -# "//modules/common_msgs/map_msgs:map_parking_space_py_pb2", -# "//modules/common_msgs/map_msgs:map_pnc_junction_py_pb2", -# "//modules/common_msgs/map_msgs:map_proto", -# "//modules/common_msgs/map_msgs:map_py_pb2", -# "//modules/common_msgs/map_msgs:map_road_py_pb2", -# "//modules/common_msgs/map_msgs:map_rsu_py_pb2", -# "//modules/common_msgs/map_msgs:map_signal_py_pb2", -# "//modules/common_msgs/map_msgs:map_speed_bump_py_pb2", -# "//modules/common_msgs/map_msgs:map_stop_sign_py_pb2", -# "//modules/common_msgs/map_msgs:map_yield_sign_py_pb2", -# "//modules/common_msgs/planning_msgs:navigation_py_pb2", -# "//modules/map/relative_map/proto:navigator_config_py_pb2", -# "//modules/map/relative_map/proto:relative_map_config_py_pb2", -# ], -# ) +apollo_cc_test( + name = "route_segments_test", + size = "small", + srcs = ["pnc_map/route_segments_test.cc"], + data = [ + ":pnc_testdata", + "//modules/map:map_data", + ], + deps = [ + ":apollo_map", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_map_src", -# ":install_map_hdrs" -# ], -# ) +apollo_cc_test( + name = "hdmap_map_test", + size = "small", + timeout = "short", + srcs = [ + "hdmap/hdmap_common_test.cc", + "hdmap/hdmap_impl_test.cc", + ], + data = [ + ":hd_testdata", + ], + tags = ["exclude"], + deps = [ + ":apollo_map", + "//cyber", + "@com_github_google_glog//:glog", + "@com_google_googletest//:gtest_main", + ], +) -# install_src_files( -# name = "install_map_src", -# src_dir = ["."], -# dest = "map/src", -# filter = "*", -# ) +apollo_cc_test( + name = "hdmap_util_test", + size = "small", + timeout = "short", + srcs = ["hdmap/hdmap_util_test.cc"], + data = [ + ":hd_testdata", + ], + linkstatic = True, + deps = [ + ":apollo_map", + "@com_github_google_glog//:glog", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest_main", + ], +) -# install_src_files( -# name = "install_map_hdrs", -# src_dir = ["."], -# dest = "map/include", -# filter = "*.h", -# ) +filegroup( + name = "relative_map_conf", + srcs = glob([ + "relative_map/conf/**", + "relative_map/dag/*.dag", + "relative_map/launch/*.launch", + ]), +) + +filegroup( + name = "rel_testdata", + srcs = glob([ + "relative_map/testdata/**", + ]), +) + +filegroup( + name = "hd_testdata", + srcs = glob([ + "hdmap/test-data/*", + ]), +) + +filegroup( + name = "pnc_testdata", + srcs = glob([ + "pnc_map/testdata/**", + ]), +) + +apollo_component( + name = "librelative_map_component.so", + srcs = ["relative_map/relative_map_component.cc",], + hdrs = ["relative_map/relative_map_component.h",], + deps = [":apollo_map"], +) + +apollo_cc_test( + name = "navigation_lane_test", + size = "small", + srcs = ["relative_map/navigation_lane_test.cc"], + data = [ + ":rel_testdata", + ":relative_map_conf", + ], + deps = [ + ":apollo_map", + "@com_github_nlohmann_json//:json", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_package() -apollo_package() \ No newline at end of file +cpplint() diff --git a/modules/map/cyberfile.xml b/modules/map/cyberfile.xml index b566a566590..d13585afcba 100644 --- a/modules/map/cyberfile.xml +++ b/modules/map/cyberfile.xml @@ -4,20 +4,18 @@ Apollo map module. - + Apollo Apache License 2.0 + module https://www.apollo.auto/ https://github.com/ApolloAuto/apollo https://github.com/ApolloAuto/apollo/issues - 3rd-rules-python - 3rd-grpc - 3rd-bazel-skylib - 3rd-rules-proto - 3rd-protobuf + common cyber common-msgs + 3rd-protobuf 3rd-proj libtinyxml2-dev 3rd-yaml-cpp @@ -28,15 +26,12 @@ 3rd-gflags 3rd-nlohmann-json 3rd-boost - - module 3rd-gpus 3rd-rules-python 3rd-grpc - 3rd-bazel-skylib + 3rd-bazel-skylib 3rd-rules-proto - common-msgs //modules/map diff --git a/modules/map/hdmap/BUILD b/modules/map/hdmap/BUILD deleted file mode 100644 index 8cbb9f9483a..00000000000 --- a/modules/map/hdmap/BUILD +++ /dev/null @@ -1,152 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") - -MAP_COPTS = ["-DMODULE_NAME=\\\"map\\\""] - -# install( -# name = "install", -# library_dest = "map/lib", -# targets = [ -# ":libhdmap.so", -# ":libhdmap_util.so" -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libhdmap.so", - srcs = [ - "hdmap.cc", - "hdmap_common.cc", - "hdmap_impl.cc", - "hdmap.h", - "hdmap_common.h", - "hdmap_impl.h", - "hdmap_util.h", - ], - linkshared = True, - linkstatic = True, - copts = MAP_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/map_msgs:map_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common/configs:config_gflags", - "//modules/common/math", - "//modules/common/util:util_tool", - "//modules/map/hdmap/adapter:opendrive_adapter", - "@com_google_absl//:absl", - "@com_github_google_glog//:glog", - "@eigen", - ], -) - -cc_library( - name = "hdmap", - srcs = ["libhdmap.so"], - hdrs = [ - "hdmap.h", - "hdmap_common.h", - "hdmap_impl.h", - "hdmap_util.h", - ], - copts = MAP_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/map_msgs:map_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common/configs:config_gflags", - "//modules/common/math", - "//modules/common/util:util_tool", - "//modules/map/hdmap/adapter:opendrive_adapter", - "@com_google_absl//:absl", - "@com_github_google_glog//:glog", - "@eigen", - ], - visibility = ["//visibility:public"], -) - -cc_binary( - name = "libhdmap_util.so", - srcs = [ - "hdmap_util.cc", - "hdmap_util.h", - ], - linkshared = True, - linkstatic = True, - copts = MAP_COPTS, - deps = [ - ":hdmap", - "//cyber", - "//modules/common_msgs/map_msgs:map_id_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common/configs:config_gflags", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "hdmap_util", - srcs = ["libhdmap_util.so"], - hdrs = ["hdmap_util.h"], - copts = MAP_COPTS, - deps = [ - ":hdmap", - "//cyber", - "//modules/common_msgs/map_msgs:map_id_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common/configs:config_gflags", - "@com_google_absl//:absl", - ], - visibility = ["//visibility:public"], -) - -filegroup( - name = "testdata", - srcs = glob([ - "test-data/*", - ]), -) - -cc_test( - name = "hdmap_map_test", - size = "small", - timeout = "short", - srcs = [ - "hdmap_common_test.cc", - "hdmap_impl_test.cc", - ], - tags = ["exclude"], - data = [ - ":testdata", - #"//modules/common/util", - ], - deps = [ - ":hdmap", - "//cyber", - "@com_github_google_glog//:glog", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "hdmap_util_test", - size = "small", - timeout = "short", - srcs = ["hdmap_util_test.cc"], - data = [ - ":testdata", - ], - deps = [ - ":hdmap_util", - "@com_google_absl//:absl", - "@com_github_google_glog//:glog", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/map/hdmap/adapter/BUILD b/modules/map/hdmap/adapter/BUILD deleted file mode 100644 index 2bc4f873bdb..00000000000 --- a/modules/map/hdmap/adapter/BUILD +++ /dev/null @@ -1,66 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -# load("//tools/install:install.bzl", "install") - -# install( -# name = "install", -# library_dest = "map/lib", -# targets = [":libopendrive_adapter.so"], -# visibility = ["//visibility:public"], -# ) -cc_binary( - name = "libopendrive_adapter.so", - srcs = [ - "opendrive_adapter.cc", - "opendrive_adapter.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - ":proto_organizer", - "//cyber", - "//modules/common_msgs/map_msgs:map_cc_proto", - "//modules/map/hdmap/adapter/xml_parser", - ], -) - -cc_library( - name = "opendrive_adapter", - srcs = ["libopendrive_adapter.so"], - hdrs = [ - "opendrive_adapter.h", - ], - deps = [ - "//cyber", - "//modules/common_msgs/map_msgs:map_cc_proto", - "//modules/common/math", - "//modules/common/status", - "//modules/common/util", - "//modules/map/hdmap/adapter/xml_parser", - "@com_google_absl//:absl", - "@proj", - "@tinyxml2", - ], - visibility = ["//visibility:public"], -) - -cc_library( - name = "proto_organizer", - srcs = ["proto_organizer.cc"], - hdrs = ["proto_organizer.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/math", - "//modules/common/util", - "//modules/map/hdmap/adapter/xml_parser", - "//modules/common_msgs/map_msgs:map_cc_proto", - "@com_google_absl//:absl", - ], - visibility = ["//visibility:private"], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/map/hdmap/adapter/xml_parser/BUILD b/modules/map/hdmap/adapter/xml_parser/BUILD deleted file mode 100644 index 5ff0c67dcf1..00000000000 --- a/modules/map/hdmap/adapter/xml_parser/BUILD +++ /dev/null @@ -1,152 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -cc_library( - name = "xml_parser", - deps = [ - ":common_define", - ":coordinate_convert_tool", - ":header_xml_parser", - ":junctions_xml_parser", - ":lanes_xml_parser", - ":objects_xml_parser", - ":roads_xml_parser", - ":signals_xml_parser", - ":status", - ], - visibility = [ - "//visibility:public", - ], -) - -cc_library( - name = "common_define", - hdrs = ["common_define.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/common_msgs/map_msgs:map_cc_proto", - ], -) - -cc_library( - name = "coordinate_convert_tool", - srcs = ["coordinate_convert_tool.cc"], - hdrs = ["coordinate_convert_tool.h"], - alwayslink = True, - deps = [ - ":status", - "@com_github_google_glog//:glog", - "@proj", - ], -) - -cc_library( - name = "header_xml_parser", - srcs = ["header_xml_parser.cc"], - hdrs = ["header_xml_parser.h"], - alwayslink = True, - deps = [ - ":common_define", - ":coordinate_convert_tool", - ":status", - ":util_xml_parser", - "@com_google_absl//:absl", - "@tinyxml2", - ], -) - -cc_library( - name = "junctions_xml_parser", - srcs = ["junctions_xml_parser.cc"], - hdrs = ["junctions_xml_parser.h"], - alwayslink = True, - deps = [ - ":common_define", - ":status", - ":util_xml_parser", - "@tinyxml2", - ], -) - -cc_library( - name = "lanes_xml_parser", - srcs = ["lanes_xml_parser.cc"], - hdrs = ["lanes_xml_parser.h"], - alwayslink = True, - deps = [ - ":common_define", - ":status", - ":util_xml_parser", - "@tinyxml2", - ], -) - -cc_library( - name = "objects_xml_parser", - srcs = ["objects_xml_parser.cc"], - hdrs = ["objects_xml_parser.h"], - alwayslink = True, - deps = [ - ":common_define", - ":status", - ":util_xml_parser", - "@tinyxml2", - ], -) - -cc_library( - name = "roads_xml_parser", - srcs = ["roads_xml_parser.cc"], - hdrs = ["roads_xml_parser.h"], - alwayslink = True, - deps = [ - ":common_define", - ":lanes_xml_parser", - ":objects_xml_parser", - ":signals_xml_parser", - ":status", - ":util_xml_parser", - "@tinyxml2", - ], -) - -cc_library( - name = "signals_xml_parser", - srcs = ["signals_xml_parser.cc"], - hdrs = ["signals_xml_parser.h"], - alwayslink = True, - deps = [ - ":common_define", - ":status", - ":util_xml_parser", - "@tinyxml2", - ], -) - -cc_library( - name = "status", - hdrs = ["status.h"], - alwayslink = True, - deps = [ - "//modules/common/status", - ], -) - -cc_library( - name = "util_xml_parser", - srcs = ["util_xml_parser.cc"], - hdrs = ["util_xml_parser.h"], - alwayslink = True, - deps = [ - ":common_define", - ":coordinate_convert_tool", - ":status", - "//cyber", - "@tinyxml2", - ], -) - -apollo_package() -cpplint() diff --git a/modules/map/map.BUILD b/modules/map/map.BUILD deleted file mode 100644 index eeb814ffba3..00000000000 --- a/modules/map/map.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "map", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/map", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/map/pnc_map/BUILD b/modules/map/pnc_map/BUILD deleted file mode 100644 index 14537132a49..00000000000 --- a/modules/map/pnc_map/BUILD +++ /dev/null @@ -1,186 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") - -package(default_visibility = ["//visibility:public"]) - -MAP_COPTS = ["-DMODULE_NAME=\\\"map\\\""] -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cuda_library( - name = "cuda_pnc_util", - srcs = ["cuda_util.cu"], - hdrs = ["cuda_util.h"], - deps = [ - "//cyber", - "//modules/common/math", - "@local_config_cuda//cuda:cudart", - ], - tags = ["exclude"] -) - -cc_test( - name = "cuda_util_test", - size = "small", - srcs = [ - "cuda_util.h", - "cuda_util_test.cc", - ":cuda_pnc_util", - ], - deps = [ - "//modules/common/math", - "@com_google_googletest//:gtest_main", - "@local_config_cuda//cuda:cublas", - "@local_config_cuda//cuda:cuda_headers", - "@local_config_cuda//cuda:cudart", - ], - tags = ["exclude"], - linkstatic = True, -) - -cc_library( - name = "path", - srcs = [":libpath.so"], - hdrs = ["path.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/map_msgs:map_lane_cc_proto", - "//modules/common/math", - "//modules/common/util:util_tool", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap", - "@com_google_absl//:absl", - ], -) - -cc_binary( - name = "libpath.so", - srcs = ["path.cc", "path.h"], - linkshared = True, - linkstatic = True, - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/map_msgs:map_lane_cc_proto", - "//modules/common/math", - "//modules/common/util:util_tool", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap", - "@com_google_absl//:absl", - ], -) - -cc_binary( - name = "libroute_segments.so", - srcs = ["route_segments.cc", "route_segments.h"], - linkshared = True, - linkstatic = True, - copts = MAP_COPTS, - deps = [ - ":path", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common/util", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/map/hdmap", - ], -) - -cc_library( - name = "route_segments", - srcs = [":libroute_segments.so"], - hdrs = ["route_segments.h"], - copts = MAP_COPTS, - alwayslink = True, - deps = [ - ":path", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common/util", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/map/hdmap", - ], -) - -cc_binary( - name = "libpnc_map.so", - srcs = [ - "pnc_map_base.cc", - "pnc_map_base.h", - "path.h", - ], - linkshared = True, - linkstatic = True, - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - ":route_segments", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "//modules/common/util", - "//modules/common/configs:config_gflags", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - ], -) - -cc_library( - name = "pnc_map", - srcs = [":libpnc_map.so"], - hdrs = [ - "pnc_map_base.h", - "path.h", - "route_segments.h", - ], - alwayslink = True, - linkstatic = True, - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - ":route_segments", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "//modules/common/util", - "//modules/common/configs:config_gflags", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - ], -) - -filegroup( - name = "testdata", - srcs = glob([ - "testdata/**", - ]), -) - -cc_test( - name = "pnc_path_test", - size = "small", - srcs = ["path_test.cc"], - deps = [ - ":path", - "//modules/common/util", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "route_segments_test", - size = "small", - srcs = ["route_segments_test.cc"], - data = [ - ":testdata", - "//modules/map:map_data", - ], - deps = [ - ":route_segments", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/map/relative_map/BUILD b/modules/map/relative_map/BUILD deleted file mode 100644 index 72cb99a8fa3..00000000000 --- a/modules/map/relative_map/BUILD +++ /dev/null @@ -1,121 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -MAP_COPTS = ["-DMODULE_NAME=\\\"map\\\""] - -# install( -# name = "install", -# data_dest = "map/addition_data/relative_map", -# library_dest = "map/lib", -# data = [ -# ":relative_map_conf", -# ":testdata", -# ], -# targets = [ -# ":librelative_map_component.so", -# ], -# deps = [ -# "//modules/map/relative_map/proto:py_pb_map" -# ] -# ) - -filegroup( - name = "relative_map_conf", - srcs = glob([ - "conf/**", - "dag/*.dag", - "launch/*.launch", - ]), -) - -cc_library( - name = "relative_map_lib", - srcs = ["relative_map.cc"], - hdrs = ["relative_map.h"], - copts = MAP_COPTS, - data = [ - ":relative_map_conf", - ], - deps = [ - ":navigation_lane_lib", - "//modules/common/math", - "//modules/common/monitor_log", - "//modules/common/status", - "//modules/common/util", - "//modules/map/relative_map/common:relative_map_gflags", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/map/relative_map/proto:relative_map_config_cc_proto", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - ], -) - -cc_library( - name = "navigation_lane_lib", - srcs = ["navigation_lane.cc"], - hdrs = ["navigation_lane.h"], - copts = MAP_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/map_msgs:map_lane_cc_proto", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common/math", - "//modules/common/util", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/map/relative_map/common:relative_map_gflags", - "//modules/map/relative_map/proto:relative_map_config_cc_proto", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "relative_map_component_lib", - srcs = ["relative_map_component.cc"], - hdrs = ["relative_map_component.h"], - copts = MAP_COPTS, - deps = [ - ":relative_map_lib", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_binary( - name = "librelative_map_component.so", - copts = MAP_COPTS, - linkshared = True, - linkstatic = True, - deps = [":relative_map_component_lib"], -) - -filegroup( - name = "testdata", - srcs = glob([ - "testdata/**", - ]), -) - -cc_test( - name = "navigation_lane_test", - size = "small", - srcs = ["navigation_lane_test.cc"], - data = [ - ":relative_map_conf", - ":testdata", - ], - deps = [ - ":relative_map_component_lib", - "@com_github_nlohmann_json//:json", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/map/relative_map/common/BUILD b/modules/map/relative_map/common/BUILD deleted file mode 100644 index 302648b7cb1..00000000000 --- a/modules/map/relative_map/common/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "relative_map_gflags", - srcs = ["relative_map_gflags.cc"], - hdrs = ["relative_map_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/map/relative_map/dag/relative_map.dag b/modules/map/relative_map/dag/relative_map.dag index 8b601ea6489..f4c4c7cfc33 100644 --- a/modules/map/relative_map/dag/relative_map.dag +++ b/modules/map/relative_map/dag/relative_map.dag @@ -1,5 +1,5 @@ module_config { - module_library : "modules/map/relative_map/librelative_map_component.so" + module_library : "modules/map/librelative_map_component.so" timer_components { class_name : "RelativeMapComponent" config { diff --git a/modules/map/relative_map/tools/BUILD b/modules/map/relative_map/tools/BUILD deleted file mode 100644 index 40edeb2e9b5..00000000000 --- a/modules/map/relative_map/tools/BUILD +++ /dev/null @@ -1,47 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -MAP_COPTS = ["-DMODULE_NAME=\\\"map\\\""] - -# install( -# name = "install", -# runtime_dest = "map/bin", -# targets = [ -# ":navigation_dummy", -# ":navigator", -# ], -# visibility = ["//visibility:public"], -# ) - -# cc_binary( -# name = "navigation_dummy", -# srcs = ["navigation_dummy.cc"], -# copts = MAP_COPTS, -# deps = [ -# "//cyber", -# "//modules/common/adapters:adapter_gflags", -# "//modules/common/util", -# "//modules/map/relative_map:relative_map_lib", -# ], -# ) - -# cc_binary( -# name = "navigator", -# srcs = ["navigator.cc"], -# copts = MAP_COPTS, -# deps = [ -# "//cyber", -# "//modules/common/adapters:adapter_gflags", -# "//modules/common/util", -# "//modules/map/relative_map:relative_map_lib", -# "//modules/map/relative_map/proto:navigator_config_cc_proto", -# "@com_github_nlohmann_json//:json", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/map/tools/BUILD b/modules/map/tools/BUILD index 4d3953fa7fd..6d31d5cb09a 100644 --- a/modules/map/tools/BUILD +++ b/modules/map/tools/BUILD @@ -1,105 +1,84 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -# load("//tools/install:install.bzl", "install") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# targets = [ -# ":map_tool", -# ":map_xysl", -# ":refresh_default_end_way_point", -# ":sim_map_generator", -# ":proto_map_generator", -# ":bin_map_generator", -# ":quaternion_euler", -# ], -# runtime_dest = "modules/map/tools", -# deps = [ -# "//modules/map/tools/map_datachecker/proto:py_pb_map_tool" -# ] -# ) - -cc_binary( +apollo_cc_binary( name = "map_tool", srcs = ["map_tool.cc"], deps = [ "//cyber", "//modules/common/configs:config_gflags", - "//modules/map/hdmap:hdmap_util", + "//modules/map:apollo_map", "//modules/common_msgs/map_msgs:map_cc_proto", "@com_github_gflags_gflags//:gflags", ], ) -cc_binary( +apollo_cc_binary( name = "map_xysl", srcs = ["map_xysl.cc"], deps = [ "//modules/common/configs:config_gflags", - "//modules/common/util", - "//modules/map/hdmap:hdmap_util", + "//modules/common/util:common_util", + "//modules/map:apollo_map", "@com_github_gflags_gflags//:gflags", ], ) -cc_binary( +apollo_cc_binary( name = "refresh_default_end_way_point", srcs = ["refresh_default_end_way_point.cc"], deps = [ "//cyber", - "//modules/map/hdmap:hdmap_util", + "//modules/map:apollo_map", "//modules/common_msgs/routing_msgs:poi_cc_proto", "//modules/common_msgs/routing_msgs:routing_cc_proto", ], ) -cc_binary( +apollo_cc_binary( name = "sim_map_generator", srcs = ["sim_map_generator.cc"], deps = [ "//cyber", "//modules/common_msgs/map_msgs:map_cc_proto", "//modules/common/configs:config_gflags", - "//modules/common/util", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap/adapter:opendrive_adapter", + "//modules/common/util:common_util", + "//modules/map:apollo_map", "@com_github_gflags_gflags//:gflags", "@com_google_absl//:absl", ], ) -cc_binary( +apollo_cc_binary( name = "proto_map_generator", srcs = ["proto_map_generator.cc"], deps = [ "//cyber", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap/adapter:opendrive_adapter", + "//modules/map:apollo_map", "//modules/common_msgs/map_msgs:map_cc_proto", "@com_github_gflags_gflags//:gflags", ], ) -cc_binary( +apollo_cc_binary( name = "bin_map_generator", srcs = ["bin_map_generator.cc"], deps = [ "//cyber", - "//modules/map/hdmap:hdmap_util", + "//modules/map:apollo_map", "//modules/common_msgs/map_msgs:map_cc_proto", "@com_github_gflags_gflags//:gflags", ], ) -cc_binary( +apollo_cc_binary( name = "quaternion_euler", srcs = ["quaternion_euler.cc"], deps = [ "//modules/common/math", - "//modules/common/util", + "//modules/common/util:common_util", "@com_github_gflags_gflags//:gflags", ], ) diff --git a/modules/map/tools/map_datachecker/client/BUILD b/modules/map/tools/map_datachecker/client/BUILD index 44db9c8f311..c7eb0a3ed69 100644 --- a/modules/map/tools/map_datachecker/client/BUILD +++ b/modules/map/tools/map_datachecker/client/BUILD @@ -1,101 +1,48 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) -cc_binary( +apollo_cc_binary( name = "map_datachecker_client", srcs = ["main.cc"], deps = [ - ":client", - ":client_gflags", + ":apollo_map_tools_map_datachecker_client", "@boost", "@com_github_grpc_grpc//:grpc++", ], ) -cc_library( - name = "client", - srcs = ["client.cc"], +apollo_cc_library( + name = "apollo_map_tools_map_datachecker_client", + srcs = [ + "client.cc", + "client_channel_checker.cc", + "client_common.cc", + "client_gflags.cc", + "client_loops_check.cc", + "exception_handler.cc", + ], hdrs = [ "client.h", "client_alignment.h", + "client_channel_checker.h", + "client_common.h", + "client_gflags.h", + "client_loops_check.h", + "exception_handler.h", ], deps = [ - ":client_channel_checker", - ":client_common", - ":client_gflags", - ":client_loops_check", - "//cyber", - "@boost", - "@com_github_grpc_grpc//:grpc++", - "@com_github_jbeder_yaml_cpp//:yaml-cpp", - ], -) - -cc_library( - name = "client_channel_checker", - srcs = ["client_channel_checker.cc"], - hdrs = ["client_channel_checker.h"], - deps = [ - ":client_common", - ":client_gflags", - ":exception_handler", "//cyber", + "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", "//modules/map/tools/map_datachecker/proto:collection_service_cc_grpc", "@boost", - "@com_github_grpc_grpc//:grpc++", - "@com_github_jbeder_yaml_cpp//:yaml-cpp", - ], -) - -cc_library( - name = "client_common", - srcs = ["client_common.cc"], - hdrs = ["client_common.h"], - deps = [ - "//cyber", - "@boost", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_library( - name = "client_gflags", - srcs = ["client_gflags.cc"], - hdrs = ["client_gflags.h"], - deps = [ "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "client_loops_check", - srcs = ["client_loops_check.cc"], - hdrs = ["client_loops_check.h"], - deps = [ - ":client_common", - ":client_gflags", - ":exception_handler", - "//cyber", - "//modules/map/tools/map_datachecker/proto:collection_service_cc_grpc", - "@boost", "@com_github_grpc_grpc//:grpc++", "@com_github_jbeder_yaml_cpp//:yaml-cpp", ], ) -cc_library( - name = "exception_handler", - srcs = ["exception_handler.cc"], - hdrs = ["exception_handler.h"], - deps = [ - ":client_common", - "//cyber", - "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", - ], -) - apollo_package() + cpplint() diff --git a/modules/map/tools/map_datachecker/proto/BUILD b/modules/map/tools/map_datachecker/proto/BUILD index 9275e43f560..7b43fd6b4a1 100644 --- a/modules/map/tools/map_datachecker/proto/BUILD +++ b/modules/map/tools/map_datachecker/proto/BUILD @@ -1,30 +1,10 @@ ## Auto generated by `proto_build_generator.py` -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@rules_cc//cc:defs.bzl", "cc_proto_library") -load("//tools:python_rules.bzl", "py_grpc_library", "py_proto_library") +load("//tools/proto:proto.bzl", "proto_library") load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") load("//tools:apollo_package.bzl", "apollo_package") -# load("//tools/install:install.bzl", "install", "install_files") package(default_visibility = ["//visibility:public"]) -# install_files( -# name = "py_pb_map_tool", -# dest = "map/python/modules/map/tools/map_datachecker/proto", -# files = [ -# ":collection_check_message_py_pb2", -# ":collection_error_code_py_pb2", -# ":collection_service_py_pb2" -# ] -# ) - -cc_proto_library( - name = "collection_check_message_cc_proto", - deps = [ - ":collection_check_message_proto", - ], -) - proto_library( name = "collection_check_message_proto", srcs = ["collection_check_message.proto"], @@ -33,32 +13,11 @@ proto_library( ], ) -py_proto_library( - name = "collection_check_message_py_pb2", - deps = [ - ":collection_check_message_proto", - ":collection_error_code_py_pb2", - ], -) - -cc_proto_library( - name = "collection_error_code_cc_proto", - deps = [ - ":collection_error_code_proto", - ], -) - proto_library( name = "collection_error_code_proto", srcs = ["collection_error_code.proto"], ) -py_proto_library( - name = "collection_error_code_py_pb2", - deps = [ - ":collection_error_code_proto", - ], -) cc_grpc_library( name = "collection_service_cc_grpc", srcs = [":collection_service_proto"], @@ -66,13 +25,6 @@ cc_grpc_library( deps = [":collection_service_cc_proto"], ) -cc_proto_library( - name = "collection_service_cc_proto", - deps = [ - ":collection_service_proto", - ], -) - proto_library( name = "collection_service_proto", srcs = ["collection_service.proto"], @@ -81,18 +33,4 @@ proto_library( ], ) -py_grpc_library( - name = "collection_service_py_pb2_grpc", - srcs = [":collection_service_proto"], - deps = [":collection_service_py_pb2"], -) - -py_proto_library( - name = "collection_service_py_pb2", - deps = [ - ":collection_service_proto", - ":collection_check_message_py_pb2", - ], -) - apollo_package() \ No newline at end of file diff --git a/modules/map/tools/map_datachecker/server/BUILD b/modules/map/tools/map_datachecker/server/BUILD index e4e6bb8f500..6cd64e66d6a 100644 --- a/modules/map/tools/map_datachecker/server/BUILD +++ b/modules/map/tools/map_datachecker/server/BUILD @@ -1,193 +1,65 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) -cc_binary( +apollo_cc_binary( name = "map_datachecker_server", srcs = ["main.cc"], deps = [ - ":worker", + ":apollo_map_tools_map_datachecker_server", "//cyber", ], ) -cc_library( - name = "channel_verify", - srcs = ["channel_verify.cc"], - hdrs = ["channel_verify.h"], - deps = [ - ":common", - "//cyber", - "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", - "@boost", - ], -) - -cc_library( - name = "channel_verify_agent", - srcs = ["channel_verify_agent.cc"], - hdrs = ["channel_verify_agent.h"], - deps = [ - ":channel_verify", - "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", - "//modules/map/tools/map_datachecker/proto:collection_service_cc_grpc", - "@com_github_grpc_grpc//:grpc++", +apollo_cc_library( + name = "apollo_map_tools_map_datachecker_server", + srcs = [ + "channel_verify.cc", + "channel_verify_agent.cc", + "common.cc", + "eight_route.cc", + "laps_checker.cc", + "loops_verify_agent.cc", + "pj_transformer.cc", + "pose_collection.cc", + "pose_collection_agent.cc", + "static_align.cc", + "worker.cc", + "worker_agent.cc", + "worker_cyber_node.cc", + "worker_gflags.cc", ], -) - -cc_library( - name = "common", - srcs = ["common.cc"], - hdrs = ["common.h"], - deps = [ - "//cyber", - "@boost", - ], -) - -cc_library( - name = "eight_route", - srcs = ["eight_route.cc"], hdrs = [ "alignment.h", + "alignment_agent.h", + "channel_verify.h", + "channel_verify_agent.h", + "common.h", "eight_route.h", - ], - deps = [ - ":common", - ":worker_gflags", - "//cyber", - "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_library( - name = "laps_checker", - srcs = ["laps_checker.cc"], - hdrs = ["laps_checker.h"], - deps = [ - ":common", - "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", - "@boost", - ], -) - -cc_library( - name = "loops_verify_agent", - srcs = ["loops_verify_agent.cc"], - hdrs = ["loops_verify_agent.h"], - deps = [ - ":laps_checker", - ":pose_collection_agent", - "//modules/map/tools/map_datachecker/proto:collection_service_cc_grpc", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_library( - name = "pj_transformer", - srcs = ["pj_transformer.cc"], - hdrs = ["pj_transformer.h"], - deps = [ - "//cyber", - "@proj", - ], -) - -cc_library( - name = "pose_collection", - srcs = ["pose_collection.cc"], - hdrs = ["pose_collection.h"], - deps = [ - ":common", - ], -) - -cc_library( - name = "pose_collection_agent", - srcs = ["pose_collection_agent.cc"], - hdrs = ["pose_collection_agent.h"], - deps = [ - ":common", - ":pj_transformer", - ":pose_collection", - "//cyber", - "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", - ], -) - -cc_library( - name = "static_align", - srcs = ["static_align.cc"], - hdrs = [ - "alignment.h", + "laps_checker.h", + "loops_verify_agent.h", + "pj_transformer.h", + "pose_collection.h", + "pose_collection_agent.h", "static_align.h", - ], - deps = [ - ":common", - "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", - ], -) - -cc_library( - name = "worker", - srcs = ["worker.cc"], - hdrs = ["worker.h"], - deps = [ - ":eight_route", - ":static_align", - ":worker_agent", - ":worker_cyber_node", - ":worker_gflags", - "//cyber", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_library( - name = "worker_agent", - srcs = ["worker_agent.cc"], - hdrs = [ - "alignment_agent.h", + "worker.h", "worker_agent.h", + "worker_cyber_node.h", + "worker_gflags.h", ], deps = [ - ":channel_verify_agent", - ":common", - ":eight_route", - ":loops_verify_agent", - ":pose_collection", - ":static_align", - "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", - "//modules/map/tools/map_datachecker/proto:collection_service_cc_grpc", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_library( - name = "worker_cyber_node", - srcs = ["worker_cyber_node.cc"], - hdrs = ["worker_cyber_node.h"], - deps = [ - ":worker_agent", - ":worker_gflags", "//cyber", "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", "//modules/map/tools/map_datachecker/proto:collection_error_code_cc_proto", "//modules/map/tools/map_datachecker/proto:collection_service_cc_grpc", - ], -) - -cc_library( - name = "worker_gflags", - srcs = ["worker_gflags.cc"], - hdrs = ["worker_gflags.h"], - deps = [ + "@boost", "@com_github_gflags_gflags//:gflags", + "@com_github_grpc_grpc//:grpc++", + "@proj", ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/monitor/BUILD b/modules/monitor/BUILD index 36bfe4dbc63..5a1f98a7c6c 100644 --- a/modules/monitor/BUILD +++ b/modules/monitor/BUILD @@ -1,46 +1,103 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) MONITOR_COPTS = ['-DMODULE_NAME=\\"monitor\\"'] -cc_binary( - name = "libmonitor.so", - linkshared = True, - linkstatic = True, - deps = [ - ":monitor_lib", +apollo_cc_library( + name = "apollo_monitor", + srcs = [ + "common/recurrent_runner.cc", + "common/monitor_manager.cc", + "hardware/gps_monitor.cc", + "hardware/resource_monitor.cc", + "hardware/esdcan_monitor.cc", + "hardware/socket_can_monitor.cc", + "software/process_monitor.cc", + "software/module_monitor.cc", + "software/camera_monitor.cc", + "software/channel_monitor.cc", + "software/localization_monitor.cc", + "software/functional_safety_monitor.cc", + "software/summary_monitor.cc", + "software/recorder_monitor.cc", + "software/latency_monitor.cc", ], + hdrs = [ + "common/recurrent_runner.h", + "common/monitor_manager.h", + "hardware/gps_monitor.h", + "hardware/resource_monitor.h", + "hardware/esdcan_monitor.h", + "hardware/socket_can_monitor.h", + "software/process_monitor.h", + "software/module_monitor.h", + "software/camera_monitor.h", + "software/channel_monitor.h", + "software/localization_monitor.h", + "software/functional_safety_monitor.h", + "software/summary_monitor.h", + "software/recorder_monitor.h", + "software/latency_monitor.h" + ], + deps = [ + "//cyber", + "//modules/common_msgs/basic_msgs:drive_event_cc_proto", + "//modules/common/util:common_util", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", + "//modules/common_msgs/control_msgs:control_cmd_cc_proto", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "//modules/common_msgs/localization_msgs:pose_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", + "//modules/common_msgs/monitor_msgs:system_status_cc_proto", + "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/dreamview/proto:hmi_mode_cc_proto", + "//modules/common_msgs/planning_msgs:navigation_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common/adapters:adapter_gflags", + "//modules/common/latency_recorder/proto:latency_record_cc_proto", + "//modules/common/monitor_log", + "//modules/dreamview/proto:hmi_config_cc_proto", + "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", + "//modules/dreamview/backend:apollo_dreamview_backend", + "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", + "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", + "//modules/common/util:util_tool", + "//modules/common_msgs/monitor_msgs:smart_recorder_status_cc_proto", + "//modules/drivers/canbus:apollo_drivers_canbus", + "@boost", + "@com_google_absl//:absl", + "@com_github_gflags_gflags//:gflags", + ] ) -cc_library( - name = "monitor_lib", +apollo_component( + name = "libmonitor.so", srcs = ["monitor.cc"], hdrs = ["monitor.h"], copts = MONITOR_COPTS, visibility = ["//visibility:private"], deps = [ + ":apollo_monitor", "//cyber", "//modules/common/util:util_tool", - "//modules/monitor/common:recurrent_runner", - "//modules/monitor/hardware:esdcan_monitor", - "//modules/monitor/hardware:gps_monitor", - "//modules/monitor/hardware:resource_monitor", - "//modules/monitor/hardware:socket_can_monitor", - "//modules/monitor/software:camera_monitor", - "//modules/monitor/software:channel_monitor", - "//modules/monitor/software:functional_safety_monitor", - "//modules/monitor/software:latency_monitor", - "//modules/monitor/software:localization_monitor", - "//modules/monitor/software:module_monitor", - "//modules/monitor/software:process_monitor", - "//modules/monitor/software:recorder_monitor", - "//modules/monitor/software:summary_monitor", ], - alwayslink = True, +) + +apollo_cc_test( + name = "recurrent_runner_test", + size = "small", + srcs = ["common/recurrent_runner_test.cc"], + copts = MONITOR_COPTS, + linkstatic = True, + deps = [ + ":apollo_monitor", + "@com_google_googletest//:gtest_main", + ], ) filegroup( @@ -51,41 +108,5 @@ filegroup( ]), ) -# install( -# name = "install", -# library_dest = "monitor/lib", -# data_dest = "monitor", -# targets = [ -# ":libmonitor.so", -# ], -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":monitor.BUILD", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_monitor_src", -# ":install_monitor_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_monitor_src", -# src_dir = ["."], -# dest = "monitor/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_monitor_hdrs", -# src_dir = ["."], -# dest = "monitor/include", -# filter = "*.h", -# ) - apollo_package() cpplint() diff --git a/modules/monitor/common/BUILD b/modules/monitor/common/BUILD deleted file mode 100644 index 98a324375c9..00000000000 --- a/modules/monitor/common/BUILD +++ /dev/null @@ -1,82 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -MONITOR_COPTS = ['-DMODULE_NAME=\\"monitor\\"'] - -cc_library( - name = "recurrent_runner", - srcs = ["recurrent_runner.cc"], - hdrs = ["recurrent_runner.h"], - copts = MONITOR_COPTS, - deps = [ - "//cyber", - ], -) - -cc_test( - name = "recurrent_runner_test", - size = "small", - srcs = ["recurrent_runner_test.cc"], - copts = MONITOR_COPTS, - deps = [ - ":recurrent_runner", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "monitor_manager", - srcs = [":libmonitor_manager.so"], - hdrs = ["monitor_manager.h"], - alwayslink = True, - copts = MONITOR_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/monitor_log", - "//modules/common_msgs/basic_msgs:drive_event_cc_proto", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/hmi:hmi_worker", - "//modules/dreamview/proto:hmi_config_cc_proto", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", - "//modules/common_msgs/localization_msgs:pose_cc_proto", - "//modules/common_msgs/monitor_msgs:system_status_cc_proto", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_binary( - name = "libmonitor_manager.so", - srcs = ["monitor_manager.cc", "monitor_manager.h"], - linkshared = True, - linkstatic = True, - copts = MONITOR_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/monitor_log", - "//modules/common_msgs/basic_msgs:drive_event_cc_proto", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/dreamview/backend/common:dreamview_gflags", - "//modules/dreamview/backend/hmi:hmi_worker", - "//modules/dreamview/proto:hmi_config_cc_proto", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", - "//modules/common_msgs/localization_msgs:pose_cc_proto", - "//modules/common_msgs/monitor_msgs:system_status_cc_proto", - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/monitor/cyberfile.xml b/modules/monitor/cyberfile.xml index 7893bc07818..a8090aa1db6 100644 --- a/modules/monitor/cyberfile.xml +++ b/modules/monitor/cyberfile.xml @@ -15,6 +15,7 @@ module cyber common + drivers-canbus common-msgs 3rd-gflags diff --git a/modules/monitor/hardware/BUILD b/modules/monitor/hardware/BUILD deleted file mode 100644 index 037560f7839..00000000000 --- a/modules/monitor/hardware/BUILD +++ /dev/null @@ -1,68 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "copts_if_esd_can", "if_esd_can") - -package(default_visibility = ["//visibility:public"]) - -MONITOR_COPTS = ['-DMODULE_NAME=\\"monitor\\"'] - -cc_library( - name = "gps_monitor", - srcs = ["gps_monitor.cc"], - hdrs = ["gps_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/sensor_msgs:gnss_best_pose_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "//modules/monitor/software:summary_monitor", - ], -) - -cc_library( - name = "resource_monitor", - srcs = ["resource_monitor.cc"], - hdrs = ["resource_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - "//modules/common/util", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "//modules/monitor/software:summary_monitor", - "@boost", - ], -) - -cc_library( - name = "esdcan_monitor", - srcs = ["esdcan_monitor.cc"], - hdrs = ["esdcan_monitor.h"], - copts = MONITOR_COPTS + copts_if_esd_can(), - deps = [ - "//modules/common/util", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "//modules/monitor/software:summary_monitor", - ] + if_esd_can([ - "//modules/drivers/canbus/can_client/esd:esd_can_client", - ]), -) - -cc_library( - name = "socket_can_monitor", - srcs = ["socket_can_monitor.cc"], - hdrs = ["socket_can_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - "//modules/common/util", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "//modules/monitor/software:summary_monitor", - ], -) - -apollo_package() -cpplint() diff --git a/modules/monitor/monitor.BUILD b/modules/monitor/monitor.BUILD deleted file mode 100644 index 761f1c10058..00000000000 --- a/modules/monitor/monitor.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "monitor", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/monitor", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/monitor/software/BUILD b/modules/monitor/software/BUILD deleted file mode 100644 index c2aac766ede..00000000000 --- a/modules/monitor/software/BUILD +++ /dev/null @@ -1,146 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -MONITOR_COPTS = ['-DMODULE_NAME=\\"monitor\\"'] - -cc_library( - name = "process_monitor", - srcs = ["process_monitor.cc"], - hdrs = ["process_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - ":summary_monitor", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "module_monitor", - srcs = ["module_monitor.cc"], - hdrs = ["module_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - ":summary_monitor", - "//cyber", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "camera_monitor", - srcs = ["camera_monitor.cc"], - hdrs = ["camera_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - ":summary_monitor", - "//cyber", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "channel_monitor", - srcs = ["channel_monitor.cc"], - hdrs = ["channel_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - ":latency_monitor", - ":summary_monitor", - "//modules/common/latency_recorder/proto:latency_record_cc_proto", - "//modules/common_msgs/chassis_msgs:chassis_detail_cc_proto", - "//modules/common_msgs/control_msgs:control_cmd_cc_proto", - "//modules/dreamview/proto:hmi_mode_cc_proto", - "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", - "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/common_msgs/localization_msgs:pose_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "localization_monitor", - srcs = ["localization_monitor.cc"], - hdrs = ["localization_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - ":summary_monitor", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - ], -) - -cc_library( - name = "functional_safety_monitor", - srcs = ["functional_safety_monitor.cc"], - hdrs = ["functional_safety_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - ], -) - -cc_library( - name = "summary_monitor", - srcs = ["summary_monitor.cc"], - hdrs = ["summary_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - "//modules/common/adapters:adapter_gflags", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "recorder_monitor", - srcs = ["recorder_monitor.cc"], - hdrs = ["recorder_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - ":summary_monitor", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/monitor_msgs:smart_recorder_status_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - ], -) - -cc_library( - name = "latency_monitor", - srcs = ["latency_monitor.cc"], - hdrs = ["latency_monitor.h"], - copts = MONITOR_COPTS, - deps = [ - ":summary_monitor", - "//modules/common/adapters:adapter_gflags", - "//modules/common/latency_recorder/proto:latency_record_cc_proto", - "//modules/monitor/common:monitor_manager", - "//modules/monitor/common:recurrent_runner", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_detection_2d/BUILD b/modules/perception/camera_detection_2d/BUILD index 23b9636f391..1e84f84dd95 100644 --- a/modules/perception/camera_detection_2d/BUILD +++ b/modules/perception/camera_detection_2d/BUILD @@ -1,6 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") load("//tools/platform:build_defs.bzl", "if_profiler") package(default_visibility = ["//visibility:public"]) @@ -12,18 +12,66 @@ filegroup( srcs = glob([ "conf/**", "dag/**", - ]) + ]), ) -cc_binary( - name = "libcamera_detection_2d_component_camera.so", - linkshared = True, - linkstatic = True, - deps = [":camera_detection_2d_component"], +apollo_cc_library( + name = "apollo_perception_camera_detection_2d", + srcs = [ + "detector/yolo/postprocess.cc", + "detector/yolo/yolo_obstacle_detector.cc", + "detector/yolov3/postprocess.cc", + "detector/yolov3/yolov3_obstacle_detector.cc", + ], + hdrs = [ + "detector/yolo/postprocess.h", + "detector/yolo/yolo_obstacle_detector.h", + "detector/yolov3/postprocess.h", + "detector/yolov3/yolov3_obstacle_detector.h", + ], + copts = PERCEPTION_COPTS + if_profiler(), + deps = [ + "//cyber", + ":yolo_postprocess_cuda", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "//modules/perception/camera_detection_2d/detector/yolov3/proto:yolo_model_param_cc_proto", + "//modules/perception/camera_detection_2d/proto:camera_detection_2d_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/proto:model_info_cc_proto", + "//modules/perception/common/interface:base_obstacle_detector", + "@com_google_protobuf//:protobuf", + "@eigen", + "@local_config_cuda//cuda:cudart", + "@opencv//:imgproc", + ], ) -cc_library( - name = "camera_detection_2d_component", +cuda_library( + name = "yolo_postprocess_cuda", + srcs = [ + "detector/yolo/postprocess.cu", + "detector/yolo/object_maintainer.cc", + ], + hdrs = [ + "detector/yolo/postprocess.h", + "detector/yolo/object_maintainer.h", + ], + deps = [ + "//modules/perception/camera_detection_2d/detector/yolo/proto:model_param_cc_proto", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/proto:model_info_cc_proto", + "@local_config_cuda//cuda:cudart", + ], +) + +apollo_component( + name = "libcamera_detection_2d_component_camera.so", srcs = [ "camera_detection_2d_component.cc", ], @@ -31,23 +79,19 @@ cc_library( "camera_detection_2d_component.h", ], copts = PERCEPTION_COPTS + if_profiler(), - alwayslink = True, deps = [ "//cyber", - "//modules/perception/common:util", + ":apollo_perception_camera_detection_2d", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/perception/camera_detection_2d/detector/yolo:yolo_obstacle_detector", - "//modules/perception/camera_detection_2d/detector/yolov3:yolov3_obstacle_detector", - "//modules/perception/camera_detection_2d/interface:base_obstacle_detector", "//modules/perception/camera_detection_2d/proto:camera_detection_2d_cc_proto", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/onboard/transform_wrapper", - "//modules/perception/common/camera/common:data_provider", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/common/proto:model_info_cc_proto", - ] + ], ) apollo_package() + cpplint() diff --git a/modules/perception/camera_detection_2d/README.md b/modules/perception/camera_detection_2d/README.md index e69de29bb2d..b94d4a4d4a3 100644 --- a/modules/perception/camera_detection_2d/README.md +++ b/modules/perception/camera_detection_2d/README.md @@ -0,0 +1,43 @@ +# Module Name +camera_detection_2d + +# Introduction +The camera 2D object detection module is a multitask model developed based on early `yolo`, which can simultaneously output dozens of dimensional information such as `2d` ,`3d`, and vehicle turn signals. This module completes operations such as image data preprocessing, detection, result post-processing and so on. + +# Directory Structure +``` +├── camera_detection_2d // camera detect 2d module + ├── conf // module configuration files + ├── dag // dag files + ├── data // model params + ├── detector // main part for detector + │ ├── yolo // YoloObstacleDetector + │ └── ... + ├── interface // function interface folder + ├── proto // proto files + ├── camera_detection_2d_component.cc // component interface + ├── camera_detection_2d_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `msg` | `apollo::drivers::Image` | camera sensor image | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::CameraFrame` | camera frame message | + +# How to Launch +```bash +cyber_launch start modules/perception/launch/perception_camera_2d.launch +``` + +# Reference +1. [YOLO: Real-Time Object Detection](https://pjreddie.com/darknet/yolo/) +2. [3D Bounding Box Estimation Using Deep Learning and Geometry](https://arxiv.org/abs/1612.00496) \ No newline at end of file diff --git a/modules/perception/camera_detection_2d/camera_detection_2d_component.h b/modules/perception/camera_detection_2d/camera_detection_2d_component.h index e48c6715e3f..70698d75252 100644 --- a/modules/perception/camera_detection_2d/camera_detection_2d_component.h +++ b/modules/perception/camera_detection_2d/camera_detection_2d_component.h @@ -22,7 +22,7 @@ #include "modules/perception/camera_detection_2d/proto/camera_detection_2d.pb.h" #include "cyber/cyber.h" -#include "modules/perception/camera_detection_2d/interface/base_obstacle_detector.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" #include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" #include "modules/perception/common/onboard/transform_wrapper/transform_wrapper.h" diff --git a/modules/perception/camera_detection_2d/data/yolov3.pb.txt b/modules/perception/camera_detection_2d/data/yolov3.pb.txt index d07ce96ec6a..6786725da1d 100644 --- a/modules/perception/camera_detection_2d/data/yolov3.pb.txt +++ b/modules/perception/camera_detection_2d/data/yolov3.pb.txt @@ -45,4 +45,53 @@ nms_param { type: "NormalNMS" threshold: 0.5 sigma: 0.1 +} +info_3d{ + info { + name: "yolov3" + version: "2023-06-27" + dataset: "L4" + task_type: Detection3D + sensor_type: Camera + framework: PyTorch + + proto_file { + file: "yolo_libtorch_model_3d.pth" + } + weight_file { + file: "yolo_libtorch_model_3d.pth" + } + inputs { + name: "image" + shape: 1 + shape: 3 + shape: 224 + shape: 224 + } + outputs { + name: "orient" + shape: 1 + shape: 2 + shape: 2 + shape: 1 + } + outputs { + name: "conf" + shape: 1 + shape: 2 + shape: 1 + shape: 1 + } + outputs { + name: "dim" + shape: 1 + shape: 3 + shape: 1 + shape: 1 + } + } + resize { + width: 224 + height: 224 + } } \ No newline at end of file diff --git a/modules/perception/camera_detection_2d/detector/BUILD b/modules/perception/camera_detection_2d/detector/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/camera_detection_2d/detector/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/camera_detection_2d/detector/yolo/BUILD b/modules/perception/camera_detection_2d/detector/yolo/BUILD deleted file mode 100644 index bc8ec6fb8e2..00000000000 --- a/modules/perception/camera_detection_2d/detector/yolo/BUILD +++ /dev/null @@ -1,65 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_profiler") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -cc_library( - name = "object_maintainer", - srcs = ["object_maintainer.cc"], - hdrs = ["object_maintainer.h"], - deps = [ - "//modules/perception/common/base", - ], -) - -cuda_library( - name = "postprocess_cuda", - srcs = ["postprocess.cu"], - hdrs = ["postprocess.h"], - deps = [ - ":object_maintainer", - "//modules/perception/common/base", - "//modules/perception/common/proto:model_info_cc_proto", - "//modules/perception/camera_detection_2d/detector/yolo/proto:model_param_cc_proto", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "postprocess", - srcs = [ - "postprocess.cc", - ], - hdrs = ["postprocess.h"], - deps = [ - ":object_maintainer", - ":postprocess_cuda", - "//cyber", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "yolo_obstacle_detector", - srcs = ["yolo_obstacle_detector.cc"], - hdrs = ["yolo_obstacle_detector.h"], - copts = PERCEPTION_COPTS + if_profiler(), - deps = [ - ":postprocess", - "//cyber", - "//modules/perception/camera_detection_2d/interface:base_obstacle_detector", - "//modules/perception/common:util", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/inference/utils:inference_resize_cuda_lib", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_detection_2d/detector/yolo/yolo_obstacle_detector.h b/modules/perception/camera_detection_2d/detector/yolo/yolo_obstacle_detector.h index 3555440a53b..5c35c1825cf 100644 --- a/modules/perception/camera_detection_2d/detector/yolo/yolo_obstacle_detector.h +++ b/modules/perception/camera_detection_2d/detector/yolo/yolo_obstacle_detector.h @@ -22,7 +22,7 @@ #include "modules/perception/camera_detection_2d/detector/yolo/proto/model_param.pb.h" #include "modules/perception/camera_detection_2d/detector/yolo/postprocess.h" -#include "modules/perception/camera_detection_2d/interface/base_obstacle_detector.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" #include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" namespace apollo { diff --git a/modules/perception/camera_detection_2d/detector/yolov3/BUILD b/modules/perception/camera_detection_2d/detector/yolov3/BUILD deleted file mode 100644 index 67cbdc0dc7a..00000000000 --- a/modules/perception/camera_detection_2d/detector/yolov3/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_profiler") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -cc_library( - name = "postprocess", - srcs = ["postprocess.cc"], - hdrs = ["postprocess.h"], - deps = [ - "//cyber", - "//modules/perception/camera_detection_2d/detector/yolov3/proto:yolo_model_param_cc_proto", - "//modules/perception/common/base", - ], -) - -cc_library( - name = "yolov3_obstacle_detector", - srcs = ["yolov3_obstacle_detector.cc"], - hdrs = ["yolov3_obstacle_detector.h"], - copts = PERCEPTION_COPTS + if_profiler(), - deps = [ - ":postprocess", - "//cyber", - "//modules/perception/camera_detection_2d/interface:base_obstacle_detector", - "//modules/perception/common:util", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "@opencv//:imgproc", - "@local_config_cuda//cuda:cudart", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_detection_2d/detector/yolov3/proto/model_param.proto b/modules/perception/camera_detection_2d/detector/yolov3/proto/model_param.proto index 6d835abc1be..facf92567fe 100644 --- a/modules/perception/camera_detection_2d/detector/yolov3/proto/model_param.proto +++ b/modules/perception/camera_detection_2d/detector/yolov3/proto/model_param.proto @@ -16,6 +16,7 @@ message ModelParam { optional bool with_box3d = 7; optional float border_ratio = 8; optional NMSParam nms_param = 9; + optional Model3DParam info_3d = 10; } message NMSParam { @@ -25,3 +26,9 @@ message NMSParam { optional float inter_cls_conf_thresh = 4 [default = 0.1]; optional float inter_cls_nms_thresh = 5 [default = 1.0]; } + +// add 3d proto +message Model3DParam { + optional common.ModelInfo info = 1; + optional common.Resize resize = 2; +} \ No newline at end of file diff --git a/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.cc b/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.cc index 464750dfa51..4b46b7617d5 100644 --- a/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.cc +++ b/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.cc @@ -20,6 +20,7 @@ #include "cyber/common/file.h" #include "cyber/common/log.h" #include "modules/perception/camera_detection_2d/detector/yolov3/postprocess.h" +#include "modules/perception/common/inference/inference_factory.h" #include "modules/perception/common/util.h" namespace apollo { @@ -53,6 +54,170 @@ void Yolov3ObstacleDetector::LoadParam(const yolov3::ModelParam &model_param) { nms_.set_threshold(nms_param.threshold()); } +void AddShape3D( + std::map> *shape_map, + const google::protobuf::RepeatedPtrField &model_blobs) { + for (const auto &blob : model_blobs) { + std::vector shape(blob.shape().begin(), blob.shape().end()); + shape_map->insert(std::make_pair(blob.name(), shape)); + } +} + +std::vector GetBlobNames3D( + const google::protobuf::RepeatedPtrField &model_blobs) { + std::vector blob_names; + for (const auto &blob : model_blobs) { + blob_names.push_back(blob.name()); + } + return blob_names; +} + +bool Yolov3ObstacleDetector::Init3DNetwork(const common::ModelInfo &model_info, + const std::string &model_path) { + // Network files + std::string proto_file = + GetModelFile(model_path, model_info.proto_file().file()); + std::string weight_file = + GetModelFile(model_path, model_info.weight_file().file()); + + // Network input and output names + std::vector input_names = GetBlobNames3D(model_info.inputs()); + std::vector output_names = GetBlobNames3D(model_info.outputs()); + + // Network type + const auto &framework = model_info.framework(); + + net_3D_.reset(inference::CreateInferenceByName(framework, proto_file, + weight_file, output_names, + input_names, model_path)); + + ACHECK(net_3D_ != nullptr); + net_3D_->set_gpu_id(gpu_id_); + + std::map> shape_map; + AddShape3D(&shape_map, model_info.inputs()); + AddShape3D(&shape_map, model_info.outputs()); + + if (!net_3D_->Init(shape_map)) { + AERROR << model_info.name() << "init failed!"; + return false; + } + return true; +} + +void Yolov3ObstacleDetector::Yolo3DInference(const base::Image8U *image, + base::ObjectPtr obj) { + ACHECK(image != nullptr); + + cv::Mat img = cv::Mat(image->rows(), image->cols(), CV_8UC3); + + cv::cvtColor(img, img, cv::COLOR_BGR2RGB); + + memcpy(img.data, image->cpu_data(), + image->rows() * image->cols() * image->channels() * sizeof(uint8_t)); + + // get left top and right bottom point + float left_x = clamp(obj->camera_supplement.box.xmin, 0.f, + static_cast(image->cols())); + float left_y = clamp(obj->camera_supplement.box.ymin, 0.f, + static_cast(image->rows())); + float right_x = clamp(obj->camera_supplement.box.xmax, 0.f, + static_cast(image->cols())); + float right_y = clamp(obj->camera_supplement.box.ymax, 0.f, + static_cast(image->rows())); + + float width = right_x - left_x; + float height = right_y - left_y; + + cv::Rect object_roi(left_x, left_y, width, height); + cv::Mat cropped_obj = img(object_roi); + // cv::Mat show = cropped_obj; + + // generate new pure black bg as same size as ratio + float ratio = std::max(width, height); + int dim_diff = std::abs(height - width); + int pad1 = std::floor(static_cast(dim_diff) / 2.0); + cv::Mat out(ratio, ratio, CV_8UC3, {0, 0, 0}); // helps to clear noisy + + // if h < w : add img to middle of bg + // else : add img to left of bg + if (width > height) { + cropped_obj.copyTo( + out(cv::Rect(0, pad1, cropped_obj.cols, cropped_obj.rows))); + } else { + cropped_obj.copyTo( + out(cv::Rect(pad1, 0, cropped_obj.cols, cropped_obj.rows))); + } + + cv::resize(out, out, cv::Size(224, 224), cv::INTER_CUBIC); + + out.convertTo(cropped_obj, CV_32F, 1.0 / 255, 0); + + std::vector mean_values{0.485, 0.456, 0.406}; + std::vector std_values{0.229, 0.224, 0.225}; + + // normallize channel value from 0~255 to 0~1 and change it to float type + std::vector rgbChannels(3); + cv::split(cropped_obj, rgbChannels); + for (int i = 0; i < 3; ++i) { + rgbChannels[i].convertTo(rgbChannels[i], CV_32FC1, 1 / std_values[i], + (0.0 - mean_values[i]) / std_values[i]); + } + cv::Mat dst; + cv::merge(rgbChannels, dst); + cropped_obj = dst; + + auto model_inputs = model_param_.info_3d().info().inputs(); + + auto input_blob_3d = net_3D_->get_blob(model_inputs[0].name()); + ACHECK(input_blob_3d != nullptr); + + int model_input_rows = cropped_obj.rows; + int model_input_cols = cropped_obj.cols; + int model_input_chs = cropped_obj.channels(); + float *input_data = input_blob_3d->mutable_cpu_data(); + + input_blob_3d->Reshape( + {1, model_input_chs, model_input_rows, model_input_cols}); + for (int i = 0; i < model_input_chs; ++i) { + // put img model_input_chs i data to input_blob + cv::extractChannel( + cropped_obj, + cv::Mat(model_input_rows, model_input_cols, CV_32FC1, + input_data + i * model_input_rows * model_input_cols), + i); + } + + net_3D_->Infer(); + + auto model_outputs = model_param_.info_3d().info().outputs(); + auto blob_orient = net_3D_->get_blob(model_outputs[0].name()); + auto blob_conf = net_3D_->get_blob(model_outputs[1].name()); + auto blob_dim = net_3D_->get_blob(model_outputs[2].name()); + + ACHECK(blob_orient != nullptr); + ACHECK(blob_conf != nullptr); + ACHECK(blob_dim != nullptr); + + const float *orient_data = blob_orient->cpu_data(); + const float *conf_data = blob_conf->cpu_data(); + + float alpha = 0.f; + if (conf_data[0] - conf_data[1] >= 0.f) { + float cos_result = orient_data[0]; + float sin_result = orient_data[1]; + alpha = std::atan2(sin_result, cos_result) + 1.57 - 3.14159; + } else { + float cos_result = orient_data[2]; + float sin_result = orient_data[3]; + alpha = std::atan2(sin_result, cos_result) + 4.71 - 3.14159; + } + obj->camera_supplement.alpha = alpha; + // cv::imwrite("pics/yolov3_image_" + std::to_string(alpha) + ".png", show); + + return; +} + bool Yolov3ObstacleDetector::Init(const ObstacleDetectorInitOptions &options) { options_ = options; @@ -77,6 +242,15 @@ bool Yolov3ObstacleDetector::Init(const ObstacleDetectorInitOptions &options) { return false; } AERROR << "[INFO] yolov3 2D model init success"; + + const auto &model_info_3d = model_param_.info_3d().info(); + std::string model_path_3d = GetModelPath(model_info_3d.name()); + if (!Init3DNetwork(model_info_3d, model_path_3d)) { + AERROR << "Init network failed!"; + return false; + } + AERROR << "[INFO] yolov3 3D model init success"; + return true; } @@ -173,6 +347,8 @@ bool Yolov3ObstacleDetector::Detect(onboard::CameraFrame *frame) { for (auto &obj : frame->detected_objects) { obj->camera_supplement.area_id = 1; + Yolo3DInference(&image, obj); + // clear cut off ratios auto &box = obj->camera_supplement.box; if (box.xmin >= left_boundary) { diff --git a/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.h b/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.h index 75bff9d9232..cd2996db3bf 100644 --- a/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.h +++ b/modules/perception/camera_detection_2d/detector/yolov3/yolov3_obstacle_detector.h @@ -15,13 +15,18 @@ *****************************************************************************/ #pragma once -#include #include +#include +#include +#include +#include +#include #include "modules/perception/camera_detection_2d/detector/yolov3/proto/model_param.pb.h" -#include "modules/perception/common/base/blob.h" -#include "modules/perception/camera_detection_2d/interface/base_obstacle_detector.h" +#include "modules/perception/common/base/blob.h" +#include "modules/perception/common/inference/inference.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" #include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" namespace apollo { @@ -80,12 +85,31 @@ class Yolov3ObstacleDetector : public BaseObstacleDetector { * @return None */ void LoadParam(const yolov3::ModelParam &model_param); + /** + * @brief Load yolo3D libtorch model params from model file + * + * @param image + * @param obj + */ + void Yolo3DInference(const base::Image8U *image, base::ObjectPtr obj); + /** + * @brief Init model inference + * + * @param model_info + * @param model_path + * @return true + * @return false + */ + bool Init3DNetwork(const common::ModelInfo &model_info, + const std::string &model_path); private: ObstacleDetectorInitOptions options_; yolov3::ModelParam model_param_; yolov3::NMSParam nms_; + std::shared_ptr net_3D_; + int gpu_id_ = 0; cudaStream_t stream_ = nullptr; diff --git a/modules/perception/camera_detection_2d/interface/BUILD b/modules/perception/camera_detection_2d/interface/BUILD deleted file mode 100644 index 65a21ab5610..00000000000 --- a/modules/perception/camera_detection_2d/interface/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -cc_library( - name = "base_obstacle_detector", - srcs = [ - "base_obstacle_detector.cc", - ], - hdrs = [ - "base_obstacle_detector.h", - ], - deps = [ - "//cyber", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "//modules/perception/common/proto:model_info_cc_proto", - "@eigen", - "@com_google_protobuf//:protobuf", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_detection_3d/BUILD b/modules/perception/camera_detection_3d/BUILD index f218d9d3f7c..7e05d1476ad 100644 --- a/modules/perception/camera_detection_3d/BUILD +++ b/modules/perception/camera_detection_3d/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -12,18 +11,11 @@ filegroup( srcs = glob([ "conf/**", "dag/**", - ]) + ]), ) -cc_binary( +apollo_component( name = "libcamera_detection_3d_component_camera.so", - linkshared = True, - linkstatic = True, - deps = [":camera_detection_3d_component"], -) - -cc_library( - name = "camera_detection_3d_component", srcs = [ "camera_detection_3d_component.cc", ], @@ -31,24 +23,20 @@ cc_library( "camera_detection_3d_component.h", ], copts = PERCEPTION_COPTS + if_profiler(), - alwayslink = True, deps = [ "//cyber", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/camera_detection_3d/interface:base_obstacle_detector", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/base", - "//modules/perception/common:util", - "//modules/perception/common/camera/common:data_provider", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/onboard/transform_wrapper", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/perception/camera_detection_3d/proto:camera_detection_3d_cc_proto", - "//modules/perception/camera_detection_3d/detector/smoke:smoke_obstacle_detector", "//modules/perception/camera_detection_3d/detector/caddn:caddn_obstacle_detector", - ] + "//modules/perception/camera_detection_3d/detector/smoke:smoke_obstacle_detector", + "//modules/perception/camera_detection_3d/proto:camera_detection_3d_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ], ) apollo_package() + cpplint() diff --git a/modules/perception/camera_detection_3d/README.md b/modules/perception/camera_detection_3d/README.md index e69de29bb2d..9e89fada127 100644 --- a/modules/perception/camera_detection_3d/README.md +++ b/modules/perception/camera_detection_3d/README.md @@ -0,0 +1,43 @@ +# Module Name +camera_detection_3d + +# Introduction +The camera 3D object detection module includes two models: `caddn` and `smoke`, which can simultaneously output `2d` and `3d` information at the same time. This module completes operations such as image data preprocessing, detection, and result postprocessing. This module can directly transfer the results to `camera_tracking` component. + +# Directory Structure +``` +├── camera_detection_3d // camera detect 3d module + ├── conf // module configuration files + ├── dag // dag files + ├── data // model params + ├── detector // main part for 3d detector + │ ├── SMOKE // SmokeObstacleDetector + │ └── ... + ├── interface // function interface folder + ├── proto // proto files + ├── camera_detection_3d_component.cc // component interface + ├── camera_detection_3d_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `msg` | `apollo::drivers::Image` | camera sensor image | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::CameraFrame` | camera frame message | + +# How to Launch +```bash +cyber_launch start modules/perception/launch/perception_camera_3d.launch +``` + +# Reference +1. [SMOKE: Single-Stage Monocular 3D Object Detection via Keypoint Estimation](https://arxiv.org/pdf/2002.10111.pdf) +2. [CADDN](https://arxiv.org/abs/2103.01100) \ No newline at end of file diff --git a/modules/perception/camera_detection_3d/camera_detection_3d_component.h b/modules/perception/camera_detection_3d/camera_detection_3d_component.h index 1a52bd9fcc0..03979e8ed65 100644 --- a/modules/perception/camera_detection_3d/camera_detection_3d_component.h +++ b/modules/perception/camera_detection_3d/camera_detection_3d_component.h @@ -22,7 +22,7 @@ #include "modules/perception/camera_detection_3d/proto/camera_detection_3d.pb.h" #include "cyber/cyber.h" -#include "modules/perception/camera_detection_3d/interface/base_obstacle_detector.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" #include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" #include "modules/perception/common/onboard/transform_wrapper/transform_wrapper.h" diff --git a/modules/perception/camera_detection_3d/detector/caddn/BUILD b/modules/perception/camera_detection_3d/detector/caddn/BUILD index 8d9263aa152..5be640dfcab 100644 --- a/modules/perception/camera_detection_3d/detector/caddn/BUILD +++ b/modules/perception/camera_detection_3d/detector/caddn/BUILD @@ -1,37 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "postprocess", - srcs = ["postprocess.cc"], - hdrs = ["postprocess.h"], - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/camera_detection_3d/detector/caddn/proto:model_param_cc_proto", - ] -) - -cc_library( +apollo_cc_library( name = "caddn_obstacle_detector", - srcs = ["caddn_obstacle_detector.cc"], - hdrs = ["caddn_obstacle_detector.h"], + srcs = [ + "caddn_obstacle_detector.cc", + "postprocess.cc", + ], + hdrs = [ + "caddn_obstacle_detector.h", + "postprocess.h", + ], deps = [ - ":postprocess", "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "//modules/perception/camera_detection_3d/interface:base_obstacle_detector", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:util", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/interface:base_obstacle_detector", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/camera_detection_3d/detector/caddn/proto:model_param_cc_proto", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "@eigen", "@opencv//:imgproc", - ] + ], ) apollo_package() + cpplint() diff --git a/modules/perception/camera_detection_3d/detector/caddn/caddn_obstacle_detector.h b/modules/perception/camera_detection_3d/detector/caddn/caddn_obstacle_detector.h index 8378195cc06..af877d02b2f 100644 --- a/modules/perception/camera_detection_3d/detector/caddn/caddn_obstacle_detector.h +++ b/modules/perception/camera_detection_3d/detector/caddn/caddn_obstacle_detector.h @@ -20,7 +20,7 @@ #include "modules/perception/camera_detection_3d/detector/caddn/proto/model_param.pb.h" -#include "modules/perception/camera_detection_3d/interface/base_obstacle_detector.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" #include "modules/perception/common/base/blob.h" #include "modules/perception/common/base/image_8u.h" #include "modules/perception/common/base/object_types.h" diff --git a/modules/perception/camera_detection_3d/detector/smoke/BUILD b/modules/perception/camera_detection_3d/detector/smoke/BUILD index 7f6aaf6341a..d299fbbaf60 100644 --- a/modules/perception/camera_detection_3d/detector/smoke/BUILD +++ b/modules/perception/camera_detection_3d/detector/smoke/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -7,34 +6,24 @@ package(default_visibility = ["//visibility:public"]) PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] -cc_library( - name = "postprocess", - srcs = ["postprocess.cc"], - hdrs = ["postprocess.h"], - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/camera_detection_3d/detector/smoke/proto:model_param_cc_proto", - ], -) - -cc_library( +apollo_cc_library( name = "smoke_obstacle_detector", - srcs = ["smoke_obstacle_detector.cc"], - hdrs = ["smoke_obstacle_detector.h"], - alwayslink = True, + srcs = ["smoke_obstacle_detector.cc", "postprocess.cc"], + hdrs = ["smoke_obstacle_detector.h", "postprocess.h"], copts = PERCEPTION_COPTS + if_profiler(), deps = [ - ":postprocess", "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "//modules/perception/camera_detection_3d/interface:base_obstacle_detector", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:util", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/interface:base_obstacle_detector", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/camera_detection_3d/detector/smoke/proto:model_param_cc_proto", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "@opencv//:imgproc", ], ) apollo_package() + cpplint() diff --git a/modules/perception/camera_detection_3d/detector/smoke/smoke_obstacle_detector.h b/modules/perception/camera_detection_3d/detector/smoke/smoke_obstacle_detector.h index 865e6fda2ed..77a5a26cb51 100644 --- a/modules/perception/camera_detection_3d/detector/smoke/smoke_obstacle_detector.h +++ b/modules/perception/camera_detection_3d/detector/smoke/smoke_obstacle_detector.h @@ -21,7 +21,7 @@ #include "modules/perception/camera_detection_3d/detector/smoke/proto/model_param.pb.h" -#include "modules/perception/camera_detection_3d/interface/base_obstacle_detector.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" #include "modules/perception/common/base/blob.h" #include "modules/perception/common/base/image_8u.h" #include "modules/perception/common/base/object_types.h" diff --git a/modules/perception/camera_detection_3d/interface/BUILD b/modules/perception/camera_detection_3d/interface/BUILD deleted file mode 100644 index 65a21ab5610..00000000000 --- a/modules/perception/camera_detection_3d/interface/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -cc_library( - name = "base_obstacle_detector", - srcs = [ - "base_obstacle_detector.cc", - ], - hdrs = [ - "base_obstacle_detector.h", - ], - deps = [ - "//cyber", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "//modules/perception/common/proto:model_info_cc_proto", - "@eigen", - "@com_google_protobuf//:protobuf", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_detection_3d/interface/base_obstacle_detector.cc b/modules/perception/camera_detection_3d/interface/base_obstacle_detector.cc deleted file mode 100644 index 451bb79b53d..00000000000 --- a/modules/perception/camera_detection_3d/interface/base_obstacle_detector.cc +++ /dev/null @@ -1,67 +0,0 @@ -/****************************************************************************** - * Copyright 2023 The Apollo Authors. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ -#include "modules/perception/camera_detection_3d/interface/base_obstacle_detector.h" - -#include -#include - -#include "google/protobuf/repeated_field.h" - -#include "cyber/common/file.h" -#include "cyber/common/log.h" -#include "modules/perception/common/inference/inference_factory.h" -#include "modules/perception/common/inference/model_util.h" - -namespace apollo { -namespace perception { -namespace camera { - -bool BaseObstacleDetector::InitNetwork(const common::ModelInfo &model_info, - const std::string &model_root) { - // Network files - std::string proto_file = cyber::common::GetAbsolutePath( - model_root, model_info.proto_file().file()); - std::string weight_file = cyber::common::GetAbsolutePath( - model_root, model_info.weight_file().file()); - - // Network input and output names - std::vector input_names = - inference::GetBlobNames(model_info.inputs()); - std::vector output_names = - inference::GetBlobNames(model_info.outputs()); - - // Network type - const auto &framework = model_info.framework(); - net_.reset(inference::CreateInferenceByName(framework, proto_file, - weight_file, output_names, - input_names, model_root)); - ACHECK(net_ != nullptr); - net_->set_gpu_id(gpu_id_); - - std::map> shape_map; - inference::AddShape(&shape_map, model_info.inputs()); - inference::AddShape(&shape_map, model_info.outputs()); - - if (!net_->Init(shape_map)) { - AERROR << model_info.name() << "init failed!"; - return false; - } - return true; -} - -} // namespace camera -} // namespace perception -} // namespace apollo diff --git a/modules/perception/camera_detection_3d/interface/base_obstacle_detector.h b/modules/perception/camera_detection_3d/interface/base_obstacle_detector.h deleted file mode 100644 index 973f7f1bb15..00000000000 --- a/modules/perception/camera_detection_3d/interface/base_obstacle_detector.h +++ /dev/null @@ -1,93 +0,0 @@ -/****************************************************************************** - * Copyright 2023 The Apollo Authors. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the License); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an AS IS BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ -#pragma once - -#include -#include - -#include "Eigen/Core" - -#include "modules/perception/common/proto/model_info.pb.h" - -#include "cyber/common/macros.h" -#include "modules/perception/common/inference/inference.h" -#include "modules/perception/common/lib/interface/base_init_options.h" -#include "modules/perception/common/lib/registerer/registerer.h" -#include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" - -namespace apollo { -namespace perception { -namespace camera { - -struct ObstacleDetectorInitOptions : public BaseInitOptions { - int image_height; - int image_width; - Eigen::Matrix3f intrinsic; -}; - -class BaseObstacleDetector { - public: - BaseObstacleDetector() = default; - - virtual ~BaseObstacleDetector() = default; - /** - * @brief Interface for loading obstacle detector config files - * - * @param options - * @return true - * @return false - */ - virtual bool Init(const ObstacleDetectorInitOptions &options) = 0; - /** - * @brief Interface for obstacle detector main part - * - * @param frame obstacle type and 2D bbox should be filled, required, 3D - * information of obstacle can be filled, optional. - * @return true - * @return false - */ - virtual bool Detect(onboard::CameraFrame *frame) = 0; - /** - * @brief Interface for obstacle detector name - * - * @return std::string - */ - virtual std::string Name() const = 0; - /** - * @brief Interface for network initialization - * - * @param model_info network config - * @param model_root root path of network model - * @return true - * @return false - */ - virtual bool InitNetwork(const common::ModelInfo &model_info, - const std::string &model_root); - - protected: - int gpu_id_ = 0; - std::shared_ptr net_; - - DISALLOW_COPY_AND_ASSIGN(BaseObstacleDetector); -}; // class BaseObstacleDetector - -PERCEPTION_REGISTER_REGISTERER(BaseObstacleDetector); -#define REGISTER_OBSTACLE_DETECTOR(name) \ - PERCEPTION_REGISTER_CLASS(BaseObstacleDetector, name) - -} // namespace camera -} // namespace perception -} // namespace apollo diff --git a/modules/perception/camera_detection_bev/BUILD b/modules/perception/camera_detection_bev/BUILD index 190f33326c4..9641155ed23 100644 --- a/modules/perception/camera_detection_bev/BUILD +++ b/modules/perception/camera_detection_bev/BUILD @@ -1,23 +1,45 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] -cc_library( - name = "camera_frame", +apollo_cc_library( + name = "apollo_perception_camera_detection_bev", + srcs = [ + "detector/petr/bev_obstacle_detector.cc", + "detector/petr/postprocess.cc", + "detector/petr/preprocess.cc", + "interface/base_obstacle_detector.cc", + ], hdrs = [ "camera_frame.h", + "detector/petr/bev_obstacle_detector.h", + "detector/petr/postprocess.h", + "detector/petr/preprocess.h", + "interface/base_obstacle_detector.h", ], deps = [ - "//modules/perception/common/base", - "//modules/perception/common/camera/common:data_provider", - ] + "//cyber", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "//modules/perception/camera_detection_bev/proto:camera_detection_bev_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/camera_detection_bev/detector/petr/proto:model_param_cc_proto", + "//modules/perception/common/proto:model_process_cc_proto", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/proto:model_info_cc_proto", + "@com_google_protobuf//:protobuf", + "@eigen", + "@opencv//:imgproc", + ], ) -cc_library( +apollo_cc_library( name = "camera_detection_bev_component", srcs = [ "camera_detection_bev_component.cc", @@ -27,18 +49,17 @@ cc_library( ], copts = PERCEPTION_COPTS, deps = [ - ":camera_frame", + ":apollo_perception_camera_detection_bev", "//cyber", - "//modules/perception/common:util", - "//modules/perception/camera_detection_bev/interface:base_obstacle_detector", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:data_provider", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/onboard/transform_wrapper", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", "//modules/perception/camera_detection_bev/proto:camera_detection_bev_cc_proto", - ] + "//modules/perception/common:perception_common_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ], ) apollo_package() + cpplint() diff --git a/modules/perception/camera_detection_bev/README.md b/modules/perception/camera_detection_bev/README.md index e69de29bb2d..1a24fcfd6b8 100644 --- a/modules/perception/camera_detection_bev/README.md +++ b/modules/perception/camera_detection_bev/README.md @@ -0,0 +1,36 @@ + +# Module Name +camera_detection_bev + +# Introduction +The BEV object detection module is a multi camera `transformer` model trained using `Nuscenes` datasets under the `paddlepaddle` framework, which can complete the inference of multiple camera data to obtain obstacle targets. + +# Directory Structure +``` +├── camera_detection_bev // camera bev detector module + ├── detector // main part for detector + │ ├── petr // BEVObstacleDetector + │ └── ... + ├── interface // function interface folder + ├── proto // proto files + ├── camera_detection_bev_component.cc // component interface + ├── camera_detection_bev_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `msg` | `apollo::drivers::Image` | camera sensor image | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::CameraFrame` | camera frame message | + + +# Reference +1. [PETR: Position Embedding Transformation for Multi-View 3D Object Detection](https://arxiv.org/abs/2203.05625) \ No newline at end of file diff --git a/modules/perception/camera_detection_bev/detector/BUILD b/modules/perception/camera_detection_bev/detector/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/camera_detection_bev/detector/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/camera_detection_bev/detector/petr/BUILD b/modules/perception/camera_detection_bev/detector/petr/BUILD deleted file mode 100644 index 2b9cb067215..00000000000 --- a/modules/perception/camera_detection_bev/detector/petr/BUILD +++ /dev/null @@ -1,51 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "postprocess", - srcs = ["postprocess.cc"], - hdrs = ["postprocess.h"], - deps = [ - "//cyber", - "//modules/perception/common/base", - ] -) - -cc_library( - name = "preprocess", - srcs = ["preprocess.cc"], - hdrs = ["preprocess.h"], - deps = [ - "//cyber", - "@opencv//:imgproc", - ] -) - -cc_library( - name = "bev_obstacle_detector", - srcs = ["bev_obstacle_detector.cc"], - hdrs = ["bev_obstacle_detector.h"], - deps = [ - ":postprocess", - ":preprocess", - "//cyber", - "//modules/perception/common:util", - "//modules/perception/camera_detection_bev:camera_frame", - "//modules/perception/camera_detection_bev/interface:base_obstacle_detector", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:util", - "//modules/perception/camera_detection_bev/detector/petr/proto:model_param_cc_proto", - "@eigen", - "@opencv//:imgproc", - ] + select({ - "@platforms//cpu:x86_64": ["@paddleinference-x86_64//:paddleinference_lib"], - "@platforms//cpu:aarch64": ["@paddleinference-aarch64//:paddleinference_lib"] - }), -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_location_estimation/BUILD b/modules/perception/camera_location_estimation/BUILD index 2b143ff07bb..5d5b2198de3 100644 --- a/modules/perception/camera_location_estimation/BUILD +++ b/modules/perception/camera_location_estimation/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -12,18 +11,38 @@ filegroup( srcs = glob([ "conf/**", "dag/**", - ]) + ]), ) -cc_binary( - name = "libcamera_location_estimation_component_camera.so", - linkshared = True, - linkstatic = True, - deps = [":camera_location_estimation_component"], +apollo_cc_library( + name = "apollo_perception_camera_location_estimation", + srcs = [ + "transformer/multicue/multicue_transformer.cc", + "transformer/multicue/obj_mapper.cc", + "transformer/singlestage/singlestage_transformer.cc", + ], + hdrs = [ + "interface/base_transformer.h", + "transformer/multicue/multicue_transformer.h", + "transformer/multicue/obj_mapper.h", + "transformer/singlestage/singlestage_transformer.h", + ], + deps = [ + "//cyber", + "//modules/perception/camera_location_estimation/proto:camera_location_estimation_cc_proto", + "//modules/perception/camera_location_estimation/transformer/multicue/proto:multicue_cc_proto", + "//modules/perception/camera_location_estimation/transformer/singlestage/proto:singlestage_cc_proto", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "@eigen", + ], ) -cc_library( - name = "camera_location_estimation_component", + +apollo_component( + name = "libcamera_location_estimation_component_camera.so", srcs = [ "camera_location_estimation_component.cc", ], @@ -31,17 +50,14 @@ cc_library( "camera_location_estimation_component.h", ], copts = PERCEPTION_COPTS + if_profiler(), - alwayslink = True, deps = [ "//cyber", - "//modules/perception/camera_location_estimation/interface:base_transformer", - "//modules/perception/camera_location_estimation/proto:camera_location_estimation_cc_proto", - "//modules/perception/camera_location_estimation/transformer/multicue:multicue_transformer", - "//modules/perception/camera_location_estimation/transformer/singlestage:singlestage_transformer", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - ] + "apollo_perception_camera_location_estimation", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ], ) apollo_package() + cpplint() diff --git a/modules/perception/camera_location_estimation/README.md b/modules/perception/camera_location_estimation/README.md index e69de29bb2d..8cdf03d6340 100644 --- a/modules/perception/camera_location_estimation/README.md +++ b/modules/perception/camera_location_estimation/README.md @@ -0,0 +1,38 @@ +# Module Name +camera_location_estimation + +# Introduction +The current module is able to calculate the rotation angle of the target in the camera coordinate system based on the network predicted 2D target box information, 3D observation angle information, 3D dimension information, and camera internal parameters Then, combined with the obstacle size template, the module solves the target 3dbbox, and converts the coordinates to the world coordinate system. + +# Directory Structure +``` +├── camera_location_estimation // camera location estimate module + ├── conf // module configuration files + ├── dag // dag files + ├── data // model params + ├── interface // function interface folder + ├── proto // proto files + ├── transformer // implementation of position estimation algorithm + │ ├── multicue + │ └── ... + ├── camera_location_estimation_component.cc // component interface + ├── camera_location_estimation_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::CameraFrame` | camera frame message | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::CameraFrame` | camera frame message | + + +# Reference +1. [3D Bounding Box Estimation Using Deep Learning and Geometry](https://arxiv.org/abs/1612.00496) \ No newline at end of file diff --git a/modules/perception/camera_location_estimation/interface/BUILD b/modules/perception/camera_location_estimation/interface/BUILD deleted file mode 100644 index 0d84437775d..00000000000 --- a/modules/perception/camera_location_estimation/interface/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -cc_library( - name = "base_transformer", - hdrs = [ - "base_transformer.h", - ], - deps = [ - "//cyber", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/onboard/inner_component_messages", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_location_estimation/transformer/BUILD b/modules/perception/camera_location_estimation/transformer/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/camera_location_estimation/transformer/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/camera_location_estimation/transformer/multicue/BUILD b/modules/perception/camera_location_estimation/transformer/multicue/BUILD deleted file mode 100644 index 3a3898cda99..00000000000 --- a/modules/perception/camera_location_estimation/transformer/multicue/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "obj_mapper", - srcs = ["obj_mapper.cc"], - hdrs = ["obj_mapper.h"], - deps = [ - "//cyber", - "//modules/perception/common/camera/common", - "@eigen", - ], -) - -cc_library( - name = "multicue_transformer", - srcs = ["multicue_transformer.cc"], - hdrs = ["multicue_transformer.h"], - deps = [ - ":obj_mapper", - "//cyber", - "//modules/perception/camera_location_estimation/interface:base_transformer", - "//modules/perception/camera_location_estimation/transformer/multicue/proto:multicue_cc_proto", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_location_estimation/transformer/singlestage/BUILD b/modules/perception/camera_location_estimation/transformer/singlestage/BUILD deleted file mode 100644 index 8b5ffecc11b..00000000000 --- a/modules/perception/camera_location_estimation/transformer/singlestage/BUILD +++ /dev/null @@ -1,22 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "singlestage_transformer", - srcs = ["singlestage_transformer.cc"], - hdrs = ["singlestage_transformer.h"], - deps = [ - "//cyber", - "//modules/perception/camera_location_estimation/interface:base_transformer", - "//modules/perception/camera_location_estimation/transformer/singlestage/proto:singlestage_cc_proto", - "//modules/perception/common/camera/common", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_location_refinement/BUILD b/modules/perception/camera_location_refinement/BUILD index 1f689749bd1..cec85830394 100644 --- a/modules/perception/camera_location_refinement/BUILD +++ b/modules/perception/camera_location_refinement/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -12,18 +11,37 @@ filegroup( srcs = glob([ "conf/**", "dag/**", - ]) + ]), ) -cc_binary( - name = "libcamera_location_refinement_component_camera.so", - linkshared = True, - linkstatic = True, - deps = [":camera_location_refinement_component"], +apollo_cc_library( + name = "apollo_perception_camera_location_refinement", + srcs = [ + "location_refiner/location_refiner_postprocessor.cc", + "location_refiner/obj_postprocessor.cc", + ], + hdrs = [ + "interface/base_postprocessor.h", + "location_refiner/location_refiner_postprocessor.h", + "location_refiner/obj_postprocessor.h", + ], + deps = [ + "//cyber", + "//modules/common/util:util_tool", + "//modules/perception/camera_location_refinement/location_refiner/proto:location_refiner_cc_proto", + "//modules/perception/camera_location_refinement/proto:camera_location_refinement_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ], ) -cc_library( - name = "camera_location_refinement_component", + +apollo_component( + name = "libcamera_location_refinement_component_camera.so", srcs = [ "camera_location_refinement_component.cc", ], @@ -31,22 +49,19 @@ cc_library( "camera_location_refinement_component.h", ], copts = PERCEPTION_COPTS + if_profiler(), - alwayslink = True, deps = [ "//cyber", "//modules/common/util:util_tool", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/camera_location_refinement/interface:base_postprocessor", - "//modules/perception/camera_location_refinement/location_refiner:location_refiner_postprocessor", - "//modules/perception/camera_location_refinement/proto:camera_location_refinement_cc_proto", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/lib/calibration_service/online_calibration_service", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - ] + ":apollo_perception_camera_location_refinement", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ], ) apollo_package() + cpplint() diff --git a/modules/perception/camera_location_refinement/README.md b/modules/perception/camera_location_refinement/README.md index e69de29bb2d..3436d23044c 100644 --- a/modules/perception/camera_location_refinement/README.md +++ b/modules/perception/camera_location_refinement/README.md @@ -0,0 +1,31 @@ +# Module Name +camera_location_refinement + +# Introduction +Post process the obstacles detected in the previous stage. It mainly calculates the relative position and height of the tuning target and the camera by fitting the ground plane in the camera plane + +# Directory Structure +``` +├── camera_location_refinement // object location refinement module + ├── conf // module configuration files + ├── dag // dag files + ├── data // model params + ├── interface // function interface folder + ├── proto // proto files + ├── location_refiner // implementation of algorithm + ├── camera_location_refinement_component.cc // component interface + ├── camera_location_refinement_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::CameraFrame` | camera frame message | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::CameraFrame` | camera frame message | \ No newline at end of file diff --git a/modules/perception/camera_location_refinement/interface/BUILD b/modules/perception/camera_location_refinement/interface/BUILD deleted file mode 100644 index 3d14659d5d1..00000000000 --- a/modules/perception/camera_location_refinement/interface/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -cc_library( - name = "base_postprocessor", - hdrs = [ - "base_postprocessor.h", - ], - deps = [ - "//cyber", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_location_refinement/location_refiner/BUILD b/modules/perception/camera_location_refinement/location_refiner/BUILD deleted file mode 100644 index 9f0bc081807..00000000000 --- a/modules/perception/camera_location_refinement/location_refiner/BUILD +++ /dev/null @@ -1,34 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "location_refiner_postprocessor", - srcs = ["location_refiner_postprocessor.cc"], - hdrs = ["location_refiner_postprocessor.h"], - deps = [ - ":obj_postprocessor", - "//cyber", - "//modules/perception/camera_location_refinement/interface:base_postprocessor", - "//modules/perception/camera_location_refinement/location_refiner/proto:location_refiner_cc_proto", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/camera/common:global_config", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - ], - alwayslink = True, -) - -cc_library( - name = "obj_postprocessor", - srcs = ["obj_postprocessor.cc"], - hdrs = ["obj_postprocessor.h"], - deps = [ - "//modules/perception/common/camera/common:twod_threed_util", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_overlap_filter/README.md b/modules/perception/camera_overlap_filter/README.md index e69de29bb2d..f6844361b44 100644 --- a/modules/perception/camera_overlap_filter/README.md +++ b/modules/perception/camera_overlap_filter/README.md @@ -0,0 +1,8 @@ +# Introduction +The camera overlap filter module used to fuse detection results from multiple cameras. + +1. overlap area +We split car area as 9 blocks, the overlap area is left front, left rear, +right front, right rear. + +After indexing, judge whether it is the same car according to the overlap rate. diff --git a/modules/perception/camera_overlap_filter/docs/overlap_filter.md b/modules/perception/camera_overlap_filter/docs/overlap_filter.md deleted file mode 100644 index ca5db498215..00000000000 --- a/modules/perception/camera_overlap_filter/docs/overlap_filter.md +++ /dev/null @@ -1,12 +0,0 @@ -## module name - -## Features - -## Design -1. overlap area -We split car area as 9 blocks, the overlap area is left front, left rear, -right front, right rear. - -After indexing, judge whether it is the same car according to the overlap rate. - -## Testcase diff --git a/modules/perception/camera_tracking/BUILD b/modules/perception/camera_tracking/BUILD index 70815ffeb8b..2bb27ab2763 100644 --- a/modules/perception/camera_tracking/BUILD +++ b/modules/perception/camera_tracking/BUILD @@ -1,6 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") load("//tools/platform:build_defs.bzl", "if_profiler") package(default_visibility = ["//visibility:public"]) @@ -12,18 +12,71 @@ filegroup( srcs = glob([ "conf/**", "dag/**", - ]) + ]), ) -cc_binary( - name = "libcamera_tracking_component_camera.so", - linkshared = True, - linkstatic = True, - deps = [":camera_tracking_component"], +cuda_library( + name = "similar_cuda", + srcs = ["common/similar.cu"], + hdrs = ["common/similar.h", "common/camera_tracking_frame.h"], + deps = [ + "//cyber", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/inference:apollo_perception_common_inference", + "@local_config_cuda//cuda:cudart", + ], ) -cc_library( - name = "camera_tracking_component", + +apollo_cc_library( + name = "apollo_perception_camera_tracking", + srcs = [ + "base/obstacle_reference.cc", + "base/target.cc", + "common/kalman_filter.cc", + "common/similar.cc", + "feature_extract/external_feature_extractor.cc", + "feature_extract/project_feature.cc", + "feature_extract/tracking_feat_extractor.cc", + "tracking/omt_obstacle_tracker.cc", + ], + hdrs = [ + "base/frame_list.h", + "base/obstacle_reference.h", + "base/target.h", + "base/track_object.h", + "common/kalman_filter.h", + "feature_extract/external_feature_extractor.h", + "feature_extract/project_feature.h", + "feature_extract/tracking_feat_extractor.h", + "interface/base_feature_extractor.h", + "interface/base_obstacle_tracker.h", + "tracking/omt_obstacle_tracker.h", + ], + deps = [ + "//cyber", + ":similar_cuda", + "//modules/common/util:util_tool", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/perception/camera_tracking/feature_extract/proto:model_param_cc_proto", + "//modules/perception/camera_tracking/proto:camera_tracking_component_cc_proto", + "//modules/perception/camera_tracking/proto:omt_cc_proto", + "//modules/perception/camera_tracking/proto:tracking_feature_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "@eigen", + ], +) + +apollo_component( + name = "libcamera_tracking_component_camera.so", srcs = [ "camera_tracking_component.cc", ], @@ -33,23 +86,18 @@ cc_library( copts = PERCEPTION_COPTS + if_profiler(), deps = [ "//cyber", + ":apollo_perception_camera_tracking", "//modules/common/util:util_tool", - "//modules/perception/common:util", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/perception/camera_tracking/base", - "//modules/perception/camera_tracking/common", - "//modules/perception/camera_tracking/feature_extract:tracking_feat_extractor", - "//modules/perception/camera_tracking/interface", "//modules/perception/camera_tracking/proto:camera_tracking_component_cc_proto", "//modules/perception/camera_tracking/proto:omt_cc_proto", "//modules/perception/camera_tracking/proto:tracking_feature_cc_proto", - "//modules/perception/camera_tracking/tracking:omt_obstacle_tracker", - "//modules/perception/common/onboard/inner_component_messages", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "//modules/perception/common/algorithm/sensor_manager:sensor_manager", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/onboard:apollo_perception_common_onboard", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/camera_tracking/README.md b/modules/perception/camera_tracking/README.md index e69de29bb2d..9bf22d73c3b 100644 --- a/modules/perception/camera_tracking/README.md +++ b/modules/perception/camera_tracking/README.md @@ -0,0 +1,51 @@ +# module name +camera_tracking + +## function +The function of camera tracking module is to process the camera detection obstacles by using the omt obstacle tracker, and output the tracked obstacles for following multi sensor fusion. + +## directory structure +``` +├── camera_tracking // camera object tracking module + ├── base // definition of tracked_target, frame_list, etc. + ├── common // common used functions + ├── conf // module configuration files + ├── dag // dag files + ├── data // tracker configuration files + ├── feature_extract // feature extractor for camera tracking + ├── interface // function interface files + ├── proto // proto files + ├── tracking // omt obstacle tracker + ├── camera_tracking_component.cc + ├── camera_tracking_component.h // component interface + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +## module input and output +### input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `onboard::CameraFrame` | camera detection frame | + +### output +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `frame` | `onboard::SensorFrameMessage` | camera tracked obstacles | + +## how to launch module + +1. modify the file: modules/perception/camera_tracking/dag/camera_tracking.dag +- config_file_path: the path of module config files +- reader channel: the channel name of input message + +2. modify the file: modules/perception/camera_tracking/conf/camera_tracking_config.pb.txt +- output_channel_name: the channel name of output message +- image_width and image height: the size of input images +- gpu_id: the gpu id +- plugin_param.name: the name of used camera tracker +- plugin_param.config_path: the config path of used camera tracker +- plugin_param.config_file: the config name of used camera tracker + +3. run "mainboard -d modules/perception/camera_tracking/dag/camera_tracking.dag" diff --git a/modules/perception/camera_tracking/base/BUILD b/modules/perception/camera_tracking/base/BUILD deleted file mode 100644 index 7b3a19c6376..00000000000 --- a/modules/perception/camera_tracking/base/BUILD +++ /dev/null @@ -1,65 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "frame_list", - hdrs = ["frame_list.h"], - deps = [ - "//cyber", - "//modules/perception/camera_tracking/common:camera_tracking_frame", - "//modules/perception/common/inference/utils:inference_cuda_util_cuda_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - ], -) - -cc_library( - name = "track_object", - hdrs = ["track_object.h"], - deps = [ - "//modules/perception/camera_tracking/base:frame_list", - ], -) - -cc_library( - name = "target", - srcs = ["target.cc"], - hdrs = ["target.h"], - deps = [ - "//modules/perception/camera_tracking/base:frame_list", - ":track_object", - "//modules/perception/common/algorithm/geometry:basic", - "//modules/perception/common/camera/common", - "//modules/perception/camera_tracking/common:kalman_filter", - "//modules/perception/camera_tracking/proto:omt_cc_proto", - ], -) - -cc_library( - name = "obstacle_reference", - srcs = ["obstacle_reference.cc"], - hdrs = ["obstacle_reference.h"], - deps = [ - "//cyber", - "//modules/perception/camera_tracking/base:frame_list", - "//modules/perception/camera_tracking/base:target", - "//modules/perception/common/camera/common", - "//modules/perception/camera_tracking/proto:omt_cc_proto", - "//modules/perception/common/lib/interface:base_calibration_service", - ], -) - -cc_library( - name = "base", - deps = [ - ":frame_list", - ":track_object", - ":target", - ":obstacle_reference", - ], -) - -apollo_package() -cpplint() \ No newline at end of file diff --git a/modules/perception/camera_tracking/common/BUILD b/modules/perception/camera_tracking/common/BUILD deleted file mode 100644 index 6233caaad00..00000000000 --- a/modules/perception/camera_tracking/common/BUILD +++ /dev/null @@ -1,68 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cuda_library( - name = "similar_cuda", - srcs = ["similar.cu"], - hdrs = ["similar.h"], - deps = [ - ":camera_tracking_frame", - "//cyber", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/inference/utils:inference_gemm_lib", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "similar", - srcs = [ - "similar.cc", - ":similar_cuda", - ], - hdrs = ["similar.h"], - deps = [ - ":camera_tracking_frame", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "@eigen", - ], -) - -cc_library( - name = "kalman_filter", - srcs = ["kalman_filter.cc"], - hdrs = ["kalman_filter.h"], - deps = [ - "//cyber", - "@eigen", - "//modules/common/util:util_tool" - ], -) - -cc_library( - name = "common", - deps = [ - ":similar", - ":kalman_filter", - ], -) - -cc_library( - name = "camera_tracking_frame", - hdrs = ["camera_tracking_frame.h"], - deps = [ - "@eigen", - "//modules/perception/common/base:blob", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:data_provider", - "//modules/perception/common/lib/interface:base_calibration_service", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_tracking/feature_extract/BUILD b/modules/perception/camera_tracking/feature_extract/BUILD deleted file mode 100644 index 8098087bc5a..00000000000 --- a/modules/perception/camera_tracking/feature_extract/BUILD +++ /dev/null @@ -1,64 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - - -cc_library( - name = "external_feature_extractor", - srcs = ["external_feature_extractor.cc"], - hdrs = ["external_feature_extractor.h"], - deps = [ - "//cyber", - "//modules/perception/camera_tracking/feature_extract/proto:model_param_cc_proto", - "//modules/perception/camera_tracking/interface:base_feature_extractor", - "//modules/perception/common/camera/common", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/inference/utils:inference_gemm_lib", - "//modules/perception/common/inference/utils:inference_resize_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - ], - alwayslink = True, -) - -cc_library( - name = "project_feature", - srcs = ["project_feature.cc"], - hdrs = ["project_feature.h"], - deps = [ - "//cyber", - "//modules/perception/camera_tracking/feature_extract/proto:model_param_cc_proto", - "//modules/perception/camera_tracking/interface:base_feature_extractor", - "//modules/perception/common/camera/common", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/inference/utils:inference_gemm_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - ], - alwayslink = True, -) - -cc_library( - name = "tracking_feat_extractor", - srcs = ["tracking_feat_extractor.cc"], - hdrs = ["tracking_feat_extractor.h"], - deps = [ - "//cyber", - "//modules/perception/camera_tracking/interface:base_feature_extractor", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/inference/utils:inference_gemm_lib", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference/operators:perception_inference_operators", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/common/lib/registerer:registerer", - "//modules/perception/camera_tracking/proto:tracking_feature_cc_proto", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_tracking/interface/BUILD b/modules/perception/camera_tracking/interface/BUILD deleted file mode 100644 index 73a95c5a204..00000000000 --- a/modules/perception/camera_tracking/interface/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_obstacle_tracker", - hdrs = ["base_obstacle_tracker.h"], - deps = [ - "//modules/perception/camera_tracking/common:camera_tracking_frame", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - ], -) - -cc_library( - name = "base_feature_extractor", - hdrs = ["base_feature_extractor.h"], - deps = [ - "//modules/perception/camera_tracking/common:camera_tracking_frame", - "//modules/perception/common/base:camera", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - ], -) - -cc_library( - name = "interface", - deps = [ - ":base_feature_extractor", - ":base_obstacle_tracker", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/camera_tracking/tracking/BUILD b/modules/perception/camera_tracking/tracking/BUILD deleted file mode 100644 index ddadd2e4440..00000000000 --- a/modules/perception/camera_tracking/tracking/BUILD +++ /dev/null @@ -1,31 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "omt_obstacle_tracker", - srcs = ["omt_obstacle_tracker.cc"], - hdrs = ["omt_obstacle_tracker.h"], - deps = [ - "//cyber", - "//modules/perception/camera_tracking/common:similar", - "//modules/perception/camera_tracking/base:frame_list", - "//modules/perception/camera_tracking/base:target", - "//modules/perception/camera_tracking/base:obstacle_reference", - "//modules/perception/common/camera/common", - "//modules/perception/common:util", - # "//modules/perception/camera/lib/interface", - # "//modules/perception/camera/lib/obstacle/tracker/common", - # "//modules/perception/common/sensor_manager", - "//modules/perception/camera_tracking/proto:omt_cc_proto", - "//modules/perception/camera_tracking/interface:base_feature_extractor", - "//modules/perception/camera_tracking/feature_extract:tracking_feat_extractor", - "//modules/perception/camera_tracking/interface:base_obstacle_tracker", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/BUILD b/modules/perception/common/BUILD index 8a0223ed854..2e6e1dce082 100644 --- a/modules/perception/common/BUILD +++ b/modules/perception/common/BUILD @@ -1,216 +1,20 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "perception_gflags", - srcs = ["libperception_gflags.so"], + srcs = ["perception_gflags.cc"], hdrs = ["perception_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], + deps = ["@com_github_gflags_gflags//:gflags"], ) -cc_binary( - name = "libperception_gflags.so", - srcs = [ - "perception_gflags.cc", - "perception_gflags.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "util", - srcs = ["lib_util.so"], +apollo_cc_library( + name = "perception_common_util", + srcs = ["util.cc"], hdrs = ["util.h"], - deps = [ - "//cyber", - ], -) - -cc_binary( - name = "lib_util.so", - srcs = [ - "util.cc", - "util.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - "//cyber", - ], -) - -cc_binary( - name = "libperception_common.so", - linkshared = True, - linkstatic = True, - visibility = ["//visibility:public"], - deps = [ - "//modules/perception/common/algorithm/geometry:basic", - "//modules/perception/common/algorithm/geometry:camera_homography", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/common/algorithm/geometry:convex_hull_2d", - "//modules/perception/common/algorithm/geometry:roi_filter", - "//modules/perception/common/algorithm/graph:conditional_clustering", - "//modules/perception/common/algorithm/graph:connected_component_analysis", - "//modules/perception/common/algorithm/graph:disjoint_set", - "//modules/perception/common/algorithm/graph:gated_hungarian_bigraph_matcher", - "//modules/perception/common/algorithm/graph:graph", - "//modules/perception/common/algorithm/graph:graph_segmentor", - "//modules/perception/common/algorithm/graph:hungarian_optimizer", - "//modules/perception/common/algorithm/graph:secure_matrix", - "//modules/perception/common/algorithm/i_lib:i_lib", - "//modules/perception/common/algorithm/i_lib/algorithm:i_sort", - "//modules/perception/common/algorithm/i_lib/core:core", - "//modules/perception/common/algorithm/i_lib/da:i_ransac", - "//modules/perception/common/algorithm/i_lib/geometry:i_plane", - "//modules/perception/common/algorithm/i_lib/pc:i_ground", - "//modules/perception/common/algorithm/i_lib/pc:i_struct_s", - "//modules/perception/common/algorithm/i_lib/pc:i_util", - "//modules/perception/common/algorithm/image_processing:hough_transfer", - "//modules/perception/common/algorithm/io:io_util", - "//modules/perception/common/algorithm/point_cloud_processing:point_cloud_processing", - "//modules/perception/common/algorithm/point_cloud_processing:point_cloud_processing_test", - "//modules/perception/common/algorithm/sensor_manager:sensor_manager", - "//modules/perception/common/base:base", - "//modules/perception/common/base:base_type", - "//modules/perception/common/base:blob", - "//modules/perception/common/base:box", - "//modules/perception/common/base:camera", - "//modules/perception/common/base:common", - "//modules/perception/common/base:distortion_model", - "//modules/perception/common/base:frame", - "//modules/perception/common/base:image", - "//modules/perception/common/base:impending_collision_edge", - "//modules/perception/common/base:nms", - "//modules/perception/common/base:object", - "//modules/perception/common/base:object_pool", - "//modules/perception/common/base:object_pool_types", - "//modules/perception/common/base:omnidirectional_model", - "//modules/perception/common/base:point", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/base:point_cloud_util", - "//modules/perception/common/base:polynomial", - "//modules/perception/common/base:syncedmem", - "//modules/perception/common/base:traffic_light", - "//modules/perception/common/base/test:test_helper", - "//modules/perception/common/camera/common:camera_frame", - "//modules/perception/common/camera/common:camera_ground_plane", - "//modules/perception/common/camera/common:camera_preprocess_general_util", - "//modules/perception/common/camera/common:cipv_camera", - "//modules/perception/common/camera/common:common", - "//modules/perception/common/camera/common:data_provider", - "//modules/perception/common/camera/common:global_config", - "//modules/perception/common/camera/common:lane_object", - "//modules/perception/common/camera/common:math_functions", - "//modules/perception/common/camera/common:object_template_manager", - "//modules/perception/common/camera/common:pose", - "//modules/perception/common/camera/common:timer", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/camera/common:twod_threed_util", - "//modules/perception/common/camera/common:undistortion_handler", - "//modules/perception/common/camera/common:util", - "//modules/perception/common/hdmap:hdmap_input", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:layer_lib", - "//modules/perception/common/inference/libtorch:torch_net", - "//modules/perception/common/inference/onnx:libtorch_obstacle_detector", - "//modules/perception/common/inference/onnx:onnx_obstacle_detector", - "//modules/perception/common/inference/operators:perception_inference_operators", - "//modules/perception/common/inference/operators:perception_inference_operators_cuda", - "//modules/perception/common/inference/paddlepaddle:paddle_net", - "//modules/perception/common/inference/tensorrt:batch_stream", - "//modules/perception/common/inference/tensorrt:entropy_calibrator", - "//modules/perception/common/inference/tensorrt:rt_common", - "//modules/perception/common/inference/tensorrt:rt_legacy", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/tensorrt:rt_utils", - "//modules/perception/common/inference/tensorrt/plugins:dfmb_psroi_align_plugin", - "//modules/perception/common/inference/tensorrt/plugins:kernels_cuda", - "//modules/perception/common/inference/tensorrt/plugins:perception_inference_tensorrt_plugins", - "//modules/perception/common/inference/tensorrt/plugins:perception_inference_tensorrt_plugins_argmax_cuda", - "//modules/perception/common/inference/tensorrt/plugins:perception_inference_tensorrt_plugins_leakyrelu_cuda", - "//modules/perception/common/inference/tensorrt/plugins:perception_inference_tensorrt_plugins_slice_cuda", - "//modules/perception/common/inference/tensorrt/plugins:perception_inference_tensorrt_plugins_softmax_cuda", - "//modules/perception/common/inference/tensorrt/plugins:rcnn_proposal_plugin", - "//modules/perception/common/inference/tensorrt/plugins:rpn_proposal_ssd_plugin", - "//modules/perception/common/inference/utils:inference_binary_data_lib", - "//modules/perception/common/inference/utils:inference_cuda_util_cuda_lib", - "//modules/perception/common/inference/utils:inference_cuda_util_lib", - "//modules/perception/common/inference/utils:inference_gemm_cuda_lib", - "//modules/perception/common/inference/utils:inference_gemm_lib", - "//modules/perception/common/inference/utils:inference_resize_cuda_lib", - "//modules/perception/common/inference/utils:inference_resize_lib", - "//modules/perception/common/inference/utils:inference_util_cuda_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/common/lib/calibration_service/online_calibration_service:online_calibration_service", - "//modules/perception/common/lib/calibrator/common:histogram_estimator", - "//modules/perception/common/lib/calibrator/laneline:lane_based_calibrator", - "//modules/perception/common/lib/calibrator/laneline:lane_struct_for_calib", - "//modules/perception/common/lib/calibrator/laneline:laneline_calibrator", - "//modules/perception/common/lib/config_manager:config_manager", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/common/lib/interface:base_calibrator", - "//modules/perception/common/lib/interface:base_cipv", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer:registerer", - "//modules/perception/common/lib/thread:concurrent_queue", - "//modules/perception/common/lib/thread:thread", - "//modules/perception/common/lidar/common:cloud_mask", - "//modules/perception/common/lidar/common:common", - "//modules/perception/common/lidar/common:config_util", - "//modules/perception/common/lidar/common:feature_descriptor", - "//modules/perception/common/lidar/common:lidar_error_code", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lidar/common:lidar_log", - "//modules/perception/common/lidar/common:lidar_object_util", - "//modules/perception/common/lidar/common:lidar_point_label", - "//modules/perception/common/lidar/common:lidar_timer", - "//modules/perception/common/lidar/common:object_sequence", - "//modules/perception/common/lidar/common:pcl_util", - "//modules/perception/common/lidar/common:pointcloud__util", - "//modules/perception/common/lidar/scene_manager:scene_manager", - "//modules/perception/common/lidar/scene_manager:scene_service", - "//modules/perception/common/lidar/scene_manager/ground_service:ground_service", - "//modules/perception/common/lidar/scene_manager/ground_service:ground_struct", - "//modules/perception/common/lidar/scene_manager/roi_service:roi_service", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "//modules/perception/common/onboard/inner_component_messages:camera_inner_component_messages", - "//modules/perception/common/onboard/inner_component_messages:inner_component_messages", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", - "//modules/perception/common/onboard/inner_component_messages:traffic_inner_component_messages", - "//modules/perception/common/onboard/msg_buffer:msg_buffer", - "//modules/perception/common/onboard/msg_serializer:msg_serializer", - - "//modules/perception/common/proto:perception_config_schema_cc_proto", - "//modules/perception/common/proto:model_info_cc_proto", - "//modules/perception/common/proto:sensor_meta_schema_cc_proto", - "//modules/perception/common/proto:motion_service_cc_proto", - # "//modules/perception/common/proto:tracker_config_cc_proto", - "//modules/perception/common/proto:rt_cc_proto", - "//modules/perception/common/proto:perception_ultrasonic_cc_proto", - "//modules/perception/common/proto:model_process_cc_proto", - # "//modules/perception/common/proto:perception_config_cc_proto", - # "//modules/perception/common/onboard/proto:lane_perception_component_cc_proto", - # "//modules/perception/common/onboard/proto:radar_component_config_cc_proto", - # "//modules/perception/common/onboard/proto:fusion_camera_detection_component_cc_proto", - # "//modules/perception/common/onboard/proto:trafficlights_perception_component_cc_proto", - # "//modules/perception/common/onboard/proto:fusion_component_config_cc_proto", - # "//modules/perception/common/onboard/proto:lidar_component_config_cc_proto", - "//modules/perception/common/onboard/transform_wrapper", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/onboard/common_flags:common_flags", - "//modules/perception/common:util", - ], + deps = ["//cyber"], ) apollo_package() diff --git a/modules/perception/common/algorithm/BUILD b/modules/perception/common/algorithm/BUILD index 63f3f67669b..2141bdecd24 100644 --- a/modules/perception/common/algorithm/BUILD +++ b/modules/perception/common/algorithm/BUILD @@ -1,7 +1,210 @@ -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") +load("//tools/platform:build_defs.bzl", "if_aarch64") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) +apollo_cc_library( + name = "apollo_perception_common_algorithm", + srcs = [ + "geometry/camera_homography.cc", + "geometry/roi_filter.cc", + "graph/connected_component_analysis.cc", + "graph/disjoint_set.cc", + "graph/graph_segmentor.cc", + "i_lib/pc/i_ground.cc", + "image_processing/hough_transfer.cc", + "io/io_util.cc", + "sensor_manager/sensor_manager.cc", + ], + hdrs = [ + "geometry/basic.h", + "geometry/camera_homography.h", + "geometry/common.h", + "geometry/convex_hull_2d.h", + "geometry/roi_filter.h", + "graph/conditional_clustering.h", + "graph/connected_component_analysis.h", + "graph/disjoint_set.h", + "graph/gated_hungarian_bigraph_matcher.h", + "graph/graph_segmentor.h", + "graph/hungarian_optimizer.h", + "graph/secure_matrix.h", + "i_lib/algorithm/i_sort.h", + "i_lib/core/i_alloc.h", + "i_lib/core/i_basic.h", + "i_lib/core/i_blas.h", + "i_lib/core/i_constant.h", + "i_lib/core/i_rand.h", + "i_lib/da/i_ransac.h", + "i_lib/geometry/i_line.h", + "i_lib/geometry/i_plane.h", + "i_lib/geometry/i_util.h", + "i_lib/pc/i_ground.h", + "i_lib/pc/i_struct_s.h", + "i_lib/pc/i_util.h", + "image_processing/hough_transfer.h", + "io/io_util.h", + "point_cloud_processing/common.h", + "point_cloud_processing/downsampling.h", + "sensor_manager/sensor_manager.h", + ] + if_aarch64(["i_lib/pc/sse2neon.h",]), + deps = [ + "//cyber", + "//modules/common/util:util_tool", + "//modules/perception/common:perception_common_util", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/proto:sensor_meta_schema_cc_proto", + "@boost", + "@com_github_jbeder_yaml_cpp//:yaml-cpp", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest_main", + "@eigen", + ], +) + +apollo_cc_test( + name = "basic_test", + size = "small", + srcs = ["geometry/basic_test.cc"], + linkopts = ["-lm"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "camera_homography_test", + size = "small", + srcs = ["geometry/camera_homography_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "roi_filter_test", + size = "small", + srcs = ["geometry/roi_filter_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "convex_hull_2d_test", + size = "small", + srcs = ["geometry/convex_hull_2d_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "gated_hungarian_bigraph_matcher_test", + size = "small", + srcs = ["graph/gated_hungarian_bigraph_matcher_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "conditional_clustering_test", + size = "small", + srcs = ["graph/conditional_clustering_test.cc"], + linkopts = ["-lm"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "connected_component_analysis_test", + size = "small", + srcs = ["graph/connected_component_analysis_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + "@eigen", + ], +) + +apollo_cc_test( + name = "hungarian_optimizer_test", + size = "small", + srcs = ["graph/hungarian_optimizer_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "secure_matrix_test", + size = "small", + srcs = ["graph/secure_matrix_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + "@eigen", + ], +) + +apollo_cc_test( + name = "disjoint_set_test", + size = "small", + srcs = ["graph/disjoint_set_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "graph_segmentor_test", + size = "small", + srcs = ["graph/graph_segmentor_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "hough_transfer_test", + size = "small", + srcs = ["image_processing/hough_transfer_test.cc"], + deps = [ + ":apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +# apollo_cc_test( +# name = "io_util_test", +# size = "small", +# srcs = ["io/io_util_test.cc"], +# copts = ["-fno-access-control"], +# data = [ +# "//modules/perception/data:perception_testdata", +# ], +# deps = [ +# ":apollo_perception_common_algorithm", +# "@com_google_googletest//:gtest_main", +# ], +# ) + apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/perception/common/algorithm/geometry/BUILD b/modules/perception/common/algorithm/geometry/BUILD deleted file mode 100644 index 3df059e0c0e..00000000000 --- a/modules/perception/common/algorithm/geometry/BUILD +++ /dev/null @@ -1,106 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "basic", - hdrs = ["basic.h"], - alwayslink = True, - deps = [ - ":common", - "@eigen", - ], -) - -cc_library( - name = "common", - hdrs = ["common.h"], - alwayslink = True, - deps = [ - "//modules/common/util:util_tool", - "//modules/perception/common/base:box", - "//modules/perception/common/base:point_cloud", - ], -) - -cc_library( - name = "convex_hull_2d", - hdrs = ["convex_hull_2d.h"], - alwayslink = True, - deps = [ - "@eigen", - ], -) - -cc_library( - name = "roi_filter", - srcs = ["roi_filter.cc"], - hdrs = ["roi_filter.h"], - alwayslink = True, - deps = [ - ":common", - "//modules/perception/common/base:base_type", - "//modules/perception/common/base:object", - "//modules/perception/common/base:point_cloud", - "@eigen", - ], -) - -cc_library( - name = "camera_homography", - srcs = ["camera_homography.cc"], - alwayslink = True, - hdrs = ["camera_homography.h"], - deps = [ - "//modules/perception/common/base:camera", - "@eigen", - ], -) - -cc_test( - name = "basic_test", - size = "small", - srcs = ["basic_test.cc"], - linkopts = ["-lm"], - deps = [ - ":basic", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "camera_homography_test", - size = "small", - srcs = ["camera_homography_test.cc"], - deps = [ - ":camera_homography", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "roi_filter_test", - size = "small", - srcs = ["roi_filter_test.cc"], - deps = [ - ":roi_filter", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "convex_hull_2d_test", - size = "small", - srcs = ["convex_hull_2d_test.cc"], - deps = [ - ":convex_hull_2d", - "//modules/perception/common/base:point_cloud", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/graph/BUILD b/modules/perception/common/algorithm/graph/BUILD deleted file mode 100644 index 7719ec608d9..00000000000 --- a/modules/perception/common/algorithm/graph/BUILD +++ /dev/null @@ -1,166 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "graph", - alwayslink = True, - deps = [ - ":conditional_clustering", - ":connected_component_analysis", - ":disjoint_set", - ":gated_hungarian_bigraph_matcher", - ":graph_segmentor", - ":hungarian_optimizer", - ":secure_matrix", - ], -) - -cc_library( - name = "disjoint_set", - srcs = ["disjoint_set.cc"], - alwayslink = True, - hdrs = ["disjoint_set.h"], -) - -cc_test( - name = "disjoint_set_test", - size = "small", - srcs = ["disjoint_set_test.cc"], - deps = [ - ":disjoint_set", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "graph_segmentor", - srcs = ["graph_segmentor.cc"], - alwayslink = True, - hdrs = ["graph_segmentor.h"], - deps = [ - ":disjoint_set", - "//cyber", - ], -) - -cc_test( - name = "graph_segmentor_test", - size = "small", - srcs = ["graph_segmentor_test.cc"], - deps = [ - ":graph_segmentor", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "secure_matrix", - hdrs = ["secure_matrix.h"], - alwayslink = True, - deps = [ - "@eigen", - ], -) - -cc_test( - name = "secure_matrix_test", - size = "small", - srcs = ["secure_matrix_test.cc"], - deps = [ - ":secure_matrix", - "@com_google_googletest//:gtest_main", - "@eigen", - ], -) - -cc_library( - name = "hungarian_optimizer", - hdrs = ["hungarian_optimizer.h"], - alwayslink = True, - deps = [ - "@eigen", - ], -) - -cc_test( - name = "hungarian_optimizer_test", - size = "small", - srcs = ["hungarian_optimizer_test.cc"], - deps = [ - ":hungarian_optimizer", - ":secure_matrix", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "connected_component_analysis", - srcs = ["connected_component_analysis.cc"], - alwayslink = True, - hdrs = ["connected_component_analysis.h"], - deps = [ - "//cyber", - ], -) - -cc_test( - name = "connected_component_analysis_test", - size = "small", - srcs = ["connected_component_analysis_test.cc"], - deps = [ - ":connected_component_analysis", - "@com_google_googletest//:gtest_main", - "@eigen", - ], -) - -cc_library( - name = "conditional_clustering", - hdrs = ["conditional_clustering.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/algorithm/geometry:basic", - "@eigen", - ], -) - -cc_test( - name = "conditional_clustering_test", - size = "small", - srcs = ["conditional_clustering_test.cc"], - linkopts = ["-lm"], - deps = [ - ":conditional_clustering", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "gated_hungarian_bigraph_matcher", - hdrs = ["gated_hungarian_bigraph_matcher.h"], - alwayslink = True, - deps = [ - ":connected_component_analysis", - ":hungarian_optimizer", - ":secure_matrix", - "//cyber", - ], -) - -cc_test( - name = "gated_hungarian_bigraph_matcher_test", - size = "small", - srcs = ["gated_hungarian_bigraph_matcher_test.cc"], - deps = [ - ":gated_hungarian_bigraph_matcher", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/i_lib/BUILD b/modules/perception/common/algorithm/i_lib/BUILD deleted file mode 100644 index 11942793a2a..00000000000 --- a/modules/perception/common/algorithm/i_lib/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "i_lib", - deps = [ - "//modules/perception/common/algorithm/i_lib/algorithm:i_sort", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/algorithm/i_lib/da:i_ransac", - "//modules/perception/common/algorithm/i_lib/geometry:i_plane", - "//modules/perception/common/algorithm/i_lib/pc:i_ground", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/i_lib/algorithm/BUILD b/modules/perception/common/algorithm/i_lib/algorithm/BUILD deleted file mode 100644 index 0e897cf449c..00000000000 --- a/modules/perception/common/algorithm/i_lib/algorithm/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "i_sort", - hdrs = ["i_sort.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/algorithm/i_lib/core", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/i_lib/core/BUILD b/modules/perception/common/algorithm/i_lib/core/BUILD deleted file mode 100644 index 193c492e620..00000000000 --- a/modules/perception/common/algorithm/i_lib/core/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "core", - alwayslink = True, - hdrs = [ - "i_alloc.h", - "i_basic.h", - "i_blas.h", - "i_constant.h", - "i_rand.h", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/i_lib/da/BUILD b/modules/perception/common/algorithm/i_lib/da/BUILD deleted file mode 100644 index 21302b171ad..00000000000 --- a/modules/perception/common/algorithm/i_lib/da/BUILD +++ /dev/null @@ -1,14 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "i_ransac", - alwayslink = True, - hdrs = ["i_ransac.h"], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/i_lib/geometry/BUILD b/modules/perception/common/algorithm/i_lib/geometry/BUILD deleted file mode 100644 index eeb6639c98a..00000000000 --- a/modules/perception/common/algorithm/i_lib/geometry/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "i_plane", - hdrs = [ - "i_line.h", - "i_plane.h", - "i_util.h", - ], - alwayslink = True, - deps = [ - "//modules/perception/common/algorithm/i_lib/algorithm:i_sort", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/algorithm/i_lib/da:i_ransac", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/i_lib/pc/BUILD b/modules/perception/common/algorithm/i_lib/pc/BUILD deleted file mode 100644 index 6152cbed300..00000000000 --- a/modules/perception/common/algorithm/i_lib/pc/BUILD +++ /dev/null @@ -1,54 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -PLATFORM_COPTS=["-D__AARCH64__=1"] - -cc_library( - name = "i_ground", - srcs = ["i_ground.cc"], - hdrs = ["i_ground.h"], - alwayslink = True, - deps = [ - ":i_struct_s", - ":i_util", - "//modules/perception/common/algorithm/i_lib/algorithm:i_sort", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/algorithm/i_lib/da:i_ransac", - "//modules/perception/common/algorithm/i_lib/geometry:i_plane", - ], -) - -cc_library( - name = "i_struct_s", - hdrs = ["i_struct_s.h"], - alwayslink = True, - deps = select( - { - "@platforms//cpu:x86_64": [], - "@platforms//cpu:aarch64": [ - "//third_party/intrinsics_translation", - ], - }, - no_match_error = "Please Build with an ARM or Linux x86_64 platform", - ), - # copts = select( - # { - # "@platforms//cpu:x86_64": [], - # "@platforms//cpu:aarch64": PLATFORM_COPTS, - # }, - # no_match_error = "Please Build with an ARM or Linux x86_64 platform", - # ), -) - -cc_library( - name = "i_util", - hdrs = ["i_util.h"], - alwayslink = True, -) - -apollo_package() -cpplint() - diff --git a/modules/perception/common/algorithm/i_lib/pc/i_struct_s.h b/modules/perception/common/algorithm/i_lib/pc/i_struct_s.h index eceb0c38ff3..d83e15e8b30 100644 --- a/modules/perception/common/algorithm/i_lib/pc/i_struct_s.h +++ b/modules/perception/common/algorithm/i_lib/pc/i_struct_s.h @@ -21,7 +21,7 @@ #if defined(__x86_64__) #include #elif defined(__aarch64__) && defined(__ARM_NEON) -#include "third_party/intrinsics_translation/sse2neon/sse2neon.h" +#include "sse2neon.h" // NOLINT #else #error "Processor architecture not supported!" #endif diff --git a/modules/perception/common/algorithm/i_lib/pc/sse2neon.h b/modules/perception/common/algorithm/i_lib/pc/sse2neon.h new file mode 100644 index 00000000000..0db48053576 --- /dev/null +++ b/modules/perception/common/algorithm/i_lib/pc/sse2neon.h @@ -0,0 +1,10101 @@ +#ifndef SSE2NEON_H +#define SSE2NEON_H + +// This header file provides a simple API translation layer +// between SSE intrinsics to their corresponding Arm/Aarch64 NEON versions +// +// Contributors to this work are: +// John W. Ratcliff +// Brandon Rowlett +// Ken Fast +// Eric van Beurden +// Alexander Potylitsin +// Hasindu Gamaarachchi +// Jim Huang +// Mark Cheng +// Malcolm James MacLeod +// Devin Hussey (easyaspi314) +// Sebastian Pop +// Developer Ecosystem Engineering +// Danila Kutenin +// François Turban (JishinMaster) +// Pei-Hsuan Hung +// Yang-Hao Yuan +// Syoyo Fujita +// Brecht Van Lommel +// Jonathan Hue +// Cuda Chen +// Aymen Qader + +/* + * sse2neon is freely redistributable under the MIT License. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +/* Tunable configurations */ + +/* Enable precise implementation of math operations + * This would slow down the computation a bit, but gives consistent result with + * x86 SSE. (e.g. would solve a hole or NaN pixel in the rendering result) + */ +/* _mm_min|max_ps|ss|pd|sd */ +#ifndef SSE2NEON_PRECISE_MINMAX +#define SSE2NEON_PRECISE_MINMAX (0) +#endif +/* _mm_rcp_ps and _mm_div_ps */ +#ifndef SSE2NEON_PRECISE_DIV +#define SSE2NEON_PRECISE_DIV (0) +#endif +/* _mm_sqrt_ps and _mm_rsqrt_ps */ +#ifndef SSE2NEON_PRECISE_SQRT +#define SSE2NEON_PRECISE_SQRT (0) +#endif +/* _mm_dp_pd */ +#ifndef SSE2NEON_PRECISE_DP +#define SSE2NEON_PRECISE_DP (0) +#endif + +/* compiler specific definitions */ +#if defined(__GNUC__) || defined(__clang__) +#pragma push_macro("FORCE_INLINE") +#pragma push_macro("ALIGN_STRUCT") +#define FORCE_INLINE static inline __attribute__((always_inline)) +#define ALIGN_STRUCT(x) __attribute__((aligned(x))) +#define _sse2neon_likely(x) __builtin_expect(!!(x), 1) +#define _sse2neon_unlikely(x) __builtin_expect(!!(x), 0) +#else /* non-GNU / non-clang compilers */ +#warning "Macro name collisions may happen with unsupported compiler." +#ifndef FORCE_INLINE +#define FORCE_INLINE static inline +#endif +#ifndef ALIGN_STRUCT +#define ALIGN_STRUCT(x) __declspec(align(x)) +#endif +#define _sse2neon_likely(x) (x) +#define _sse2neon_unlikely(x) (x) +#endif + +/* C language does not allow initializing a variable with a function call. */ +#ifdef __cplusplus +#define _sse2neon_const static const +#else +#define _sse2neon_const const +#endif + +#include +#include + +#if defined(_WIN32) +/* Definitions for _mm_{malloc,free} are provided by + * from both MinGW-w64 and MSVC. + */ +#define SSE2NEON_ALLOC_DEFINED +#endif + +/* If using MSVC */ +#ifdef _MSC_VER +#include +#if (defined(_M_AMD64) || defined(__x86_64__)) || \ + (defined(_M_ARM) || defined(__arm__)) +#define SSE2NEON_HAS_BITSCAN64 +#endif +#endif + +/* Compiler barrier */ +#define SSE2NEON_BARRIER() \ + do { \ + __asm__ __volatile__("" ::: "memory"); \ + (void) 0; \ + } while (0) + +/* Memory barriers + * __atomic_thread_fence does not include a compiler barrier; instead, + * the barrier is part of __atomic_load/__atomic_store's "volatile-like" + * semantics. + */ +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#include +#endif + +FORCE_INLINE void _sse2neon_smp_mb(void) +{ + SSE2NEON_BARRIER(); +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) && \ + !defined(__STDC_NO_ATOMICS__) + atomic_thread_fence(memory_order_seq_cst); +#elif defined(__GNUC__) || defined(__clang__) + __atomic_thread_fence(__ATOMIC_SEQ_CST); +#else + /* FIXME: MSVC support */ +#endif +} + +/* Architecture-specific build options */ +/* FIXME: #pragma GCC push_options is only available on GCC */ +#if defined(__GNUC__) +#if defined(__arm__) && __ARM_ARCH == 7 +/* According to ARM C Language Extensions Architecture specification, + * __ARM_NEON is defined to a value indicating the Advanced SIMD (NEON) + * architecture supported. + */ +#if !defined(__ARM_NEON) || !defined(__ARM_NEON__) +#error "You must enable NEON instructions (e.g. -mfpu=neon) to use SSE2NEON." +#endif +#if !defined(__clang__) +#pragma GCC push_options +#pragma GCC target("fpu=neon") +#endif +#elif defined(__aarch64__) +#if !defined(__clang__) +#pragma GCC push_options +#pragma GCC target("+simd") +#endif +#elif __ARM_ARCH == 8 +#if !defined(__ARM_NEON) || !defined(__ARM_NEON__) +#error \ + "You must enable NEON instructions (e.g. -mfpu=neon-fp-armv8) to use SSE2NEON." +#endif +#if !defined(__clang__) +#pragma GCC push_options +#endif +#else +#error "Unsupported target. Must be either ARMv7-A+NEON or ARMv8-A." +#endif +#endif + +#include +#if !defined(__aarch64__) && (__ARM_ARCH == 8) +#if defined __has_include && __has_include() +#include +#endif +#endif + +/* Apple Silicon cache lines are double of what is commonly used by Intel, AMD + * and other Arm microarchtectures use. + * From sysctl -a on Apple M1: + * hw.cachelinesize: 128 + */ +#if defined(__APPLE__) && (defined(__aarch64__) || defined(__arm64__)) +#define SSE2NEON_CACHELINE_SIZE 128 +#else +#define SSE2NEON_CACHELINE_SIZE 64 +#endif + +/* Rounding functions require either Aarch64 instructions or libm failback */ +#if !defined(__aarch64__) +#include +#endif + +/* On ARMv7, some registers, such as PMUSERENR and PMCCNTR, are read-only + * or even not accessible in user mode. + * To write or access to these registers in user mode, + * we have to perform syscall instead. + */ +#if !defined(__aarch64__) +#include +#endif + +/* "__has_builtin" can be used to query support for built-in functions + * provided by gcc/clang and other compilers that support it. + */ +#ifndef __has_builtin /* GCC prior to 10 or non-clang compilers */ +/* Compatibility with gcc <= 9 */ +#if defined(__GNUC__) && (__GNUC__ <= 9) +#define __has_builtin(x) HAS##x +#define HAS__builtin_popcount 1 +#define HAS__builtin_popcountll 1 + +// __builtin_shuffle introduced in GCC 4.7.0 +#if (__GNUC__ >= 5) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) +#define HAS__builtin_shuffle 1 +#else +#define HAS__builtin_shuffle 0 +#endif + +#define HAS__builtin_shufflevector 0 +#define HAS__builtin_nontemporal_store 0 +#else +#define __has_builtin(x) 0 +#endif +#endif + +/** + * MACRO for shuffle parameter for _mm_shuffle_ps(). + * Argument fp3 is a digit[0123] that represents the fp from argument "b" + * of mm_shuffle_ps that will be placed in fp3 of result. fp2 is the same + * for fp2 in result. fp1 is a digit[0123] that represents the fp from + * argument "a" of mm_shuffle_ps that will be places in fp1 of result. + * fp0 is the same for fp0 of result. + */ +#define _MM_SHUFFLE(fp3, fp2, fp1, fp0) \ + (((fp3) << 6) | ((fp2) << 4) | ((fp1) << 2) | ((fp0))) + +#if __has_builtin(__builtin_shufflevector) +#define _sse2neon_shuffle(type, a, b, ...) \ + __builtin_shufflevector(a, b, __VA_ARGS__) +#elif __has_builtin(__builtin_shuffle) +#define _sse2neon_shuffle(type, a, b, ...) \ + __extension__({ \ + type tmp = {__VA_ARGS__}; \ + __builtin_shuffle(a, b, tmp); \ + }) +#endif + +#ifdef _sse2neon_shuffle +#define vshuffle_s16(a, b, ...) _sse2neon_shuffle(int16x4_t, a, b, __VA_ARGS__) +#define vshuffleq_s16(a, b, ...) _sse2neon_shuffle(int16x8_t, a, b, __VA_ARGS__) +#define vshuffle_s32(a, b, ...) _sse2neon_shuffle(int32x2_t, a, b, __VA_ARGS__) +#define vshuffleq_s32(a, b, ...) _sse2neon_shuffle(int32x4_t, a, b, __VA_ARGS__) +#define vshuffle_s64(a, b, ...) _sse2neon_shuffle(int64x1_t, a, b, __VA_ARGS__) +#define vshuffleq_s64(a, b, ...) _sse2neon_shuffle(int64x2_t, a, b, __VA_ARGS__) +#endif + +/* Rounding mode macros. */ +#define _MM_FROUND_TO_NEAREST_INT 0x00 +#define _MM_FROUND_TO_NEG_INF 0x01 +#define _MM_FROUND_TO_POS_INF 0x02 +#define _MM_FROUND_TO_ZERO 0x03 +#define _MM_FROUND_CUR_DIRECTION 0x04 +#define _MM_FROUND_NO_EXC 0x08 +#define _MM_FROUND_RAISE_EXC 0x00 +#define _MM_FROUND_NINT (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_FLOOR (_MM_FROUND_TO_NEG_INF | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_CEIL (_MM_FROUND_TO_POS_INF | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_TRUNC (_MM_FROUND_TO_ZERO | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_RINT (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_RAISE_EXC) +#define _MM_FROUND_NEARBYINT (_MM_FROUND_CUR_DIRECTION | _MM_FROUND_NO_EXC) +#define _MM_ROUND_NEAREST 0x0000 +#define _MM_ROUND_DOWN 0x2000 +#define _MM_ROUND_UP 0x4000 +#define _MM_ROUND_TOWARD_ZERO 0x6000 +/* Flush zero mode macros. */ +#define _MM_FLUSH_ZERO_MASK 0x8000 +#define _MM_FLUSH_ZERO_ON 0x8000 +#define _MM_FLUSH_ZERO_OFF 0x0000 +/* Denormals are zeros mode macros. */ +#define _MM_DENORMALS_ZERO_MASK 0x0040 +#define _MM_DENORMALS_ZERO_ON 0x0040 +#define _MM_DENORMALS_ZERO_OFF 0x0000 + +/* indicate immediate constant argument in a given range */ +#define __constrange(a, b) const + +/* A few intrinsics accept traditional data types like ints or floats, but + * most operate on data types that are specific to SSE. + * If a vector type ends in d, it contains doubles, and if it does not have + * a suffix, it contains floats. An integer vector type can contain any type + * of integer, from chars to shorts to unsigned long longs. + */ +typedef int64x1_t __m64; +typedef float32x4_t __m128; /* 128-bit vector containing 4 floats */ +// On ARM 32-bit architecture, the float64x2_t is not supported. +// The data type __m128d should be represented in a different way for related +// intrinsic conversion. +#if defined(__aarch64__) +typedef float64x2_t __m128d; /* 128-bit vector containing 2 doubles */ +#else +typedef float32x4_t __m128d; +#endif +typedef int64x2_t __m128i; /* 128-bit vector containing integers */ + +// __int64 is defined in the Intrinsics Guide which maps to different datatype +// in different data model +#if !(defined(_WIN32) || defined(_WIN64) || defined(__int64)) +#if (defined(__x86_64__) || defined(__i386__)) +#define __int64 long long +#else +#define __int64 int64_t +#endif +#endif + +/* type-safe casting between types */ + +#define vreinterpretq_m128_f16(x) vreinterpretq_f32_f16(x) +#define vreinterpretq_m128_f32(x) (x) +#define vreinterpretq_m128_f64(x) vreinterpretq_f32_f64(x) + +#define vreinterpretq_m128_u8(x) vreinterpretq_f32_u8(x) +#define vreinterpretq_m128_u16(x) vreinterpretq_f32_u16(x) +#define vreinterpretq_m128_u32(x) vreinterpretq_f32_u32(x) +#define vreinterpretq_m128_u64(x) vreinterpretq_f32_u64(x) + +#define vreinterpretq_m128_s8(x) vreinterpretq_f32_s8(x) +#define vreinterpretq_m128_s16(x) vreinterpretq_f32_s16(x) +#define vreinterpretq_m128_s32(x) vreinterpretq_f32_s32(x) +#define vreinterpretq_m128_s64(x) vreinterpretq_f32_s64(x) + +#define vreinterpretq_f16_m128(x) vreinterpretq_f16_f32(x) +#define vreinterpretq_f32_m128(x) (x) +#define vreinterpretq_f64_m128(x) vreinterpretq_f64_f32(x) + +#define vreinterpretq_u8_m128(x) vreinterpretq_u8_f32(x) +#define vreinterpretq_u16_m128(x) vreinterpretq_u16_f32(x) +#define vreinterpretq_u32_m128(x) vreinterpretq_u32_f32(x) +#define vreinterpretq_u64_m128(x) vreinterpretq_u64_f32(x) + +#define vreinterpretq_s8_m128(x) vreinterpretq_s8_f32(x) +#define vreinterpretq_s16_m128(x) vreinterpretq_s16_f32(x) +#define vreinterpretq_s32_m128(x) vreinterpretq_s32_f32(x) +#define vreinterpretq_s64_m128(x) vreinterpretq_s64_f32(x) + +#define vreinterpretq_m128i_s8(x) vreinterpretq_s64_s8(x) +#define vreinterpretq_m128i_s16(x) vreinterpretq_s64_s16(x) +#define vreinterpretq_m128i_s32(x) vreinterpretq_s64_s32(x) +#define vreinterpretq_m128i_s64(x) (x) + +#define vreinterpretq_m128i_u8(x) vreinterpretq_s64_u8(x) +#define vreinterpretq_m128i_u16(x) vreinterpretq_s64_u16(x) +#define vreinterpretq_m128i_u32(x) vreinterpretq_s64_u32(x) +#define vreinterpretq_m128i_u64(x) vreinterpretq_s64_u64(x) + +#define vreinterpretq_f32_m128i(x) vreinterpretq_f32_s64(x) +#define vreinterpretq_f64_m128i(x) vreinterpretq_f64_s64(x) + +#define vreinterpretq_s8_m128i(x) vreinterpretq_s8_s64(x) +#define vreinterpretq_s16_m128i(x) vreinterpretq_s16_s64(x) +#define vreinterpretq_s32_m128i(x) vreinterpretq_s32_s64(x) +#define vreinterpretq_s64_m128i(x) (x) + +#define vreinterpretq_u8_m128i(x) vreinterpretq_u8_s64(x) +#define vreinterpretq_u16_m128i(x) vreinterpretq_u16_s64(x) +#define vreinterpretq_u32_m128i(x) vreinterpretq_u32_s64(x) +#define vreinterpretq_u64_m128i(x) vreinterpretq_u64_s64(x) + +#define vreinterpret_m64_s8(x) vreinterpret_s64_s8(x) +#define vreinterpret_m64_s16(x) vreinterpret_s64_s16(x) +#define vreinterpret_m64_s32(x) vreinterpret_s64_s32(x) +#define vreinterpret_m64_s64(x) (x) + +#define vreinterpret_m64_u8(x) vreinterpret_s64_u8(x) +#define vreinterpret_m64_u16(x) vreinterpret_s64_u16(x) +#define vreinterpret_m64_u32(x) vreinterpret_s64_u32(x) +#define vreinterpret_m64_u64(x) vreinterpret_s64_u64(x) + +#define vreinterpret_m64_f16(x) vreinterpret_s64_f16(x) +#define vreinterpret_m64_f32(x) vreinterpret_s64_f32(x) +#define vreinterpret_m64_f64(x) vreinterpret_s64_f64(x) + +#define vreinterpret_u8_m64(x) vreinterpret_u8_s64(x) +#define vreinterpret_u16_m64(x) vreinterpret_u16_s64(x) +#define vreinterpret_u32_m64(x) vreinterpret_u32_s64(x) +#define vreinterpret_u64_m64(x) vreinterpret_u64_s64(x) + +#define vreinterpret_s8_m64(x) vreinterpret_s8_s64(x) +#define vreinterpret_s16_m64(x) vreinterpret_s16_s64(x) +#define vreinterpret_s32_m64(x) vreinterpret_s32_s64(x) +#define vreinterpret_s64_m64(x) (x) + +#define vreinterpret_f32_m64(x) vreinterpret_f32_s64(x) + +#if defined(__aarch64__) +#define vreinterpretq_m128d_s32(x) vreinterpretq_f64_s32(x) +#define vreinterpretq_m128d_s64(x) vreinterpretq_f64_s64(x) + +#define vreinterpretq_m128d_u64(x) vreinterpretq_f64_u64(x) + +#define vreinterpretq_m128d_f32(x) vreinterpretq_f64_f32(x) +#define vreinterpretq_m128d_f64(x) (x) + +#define vreinterpretq_s64_m128d(x) vreinterpretq_s64_f64(x) + +#define vreinterpretq_u32_m128d(x) vreinterpretq_u32_f64(x) +#define vreinterpretq_u64_m128d(x) vreinterpretq_u64_f64(x) + +#define vreinterpretq_f64_m128d(x) (x) +#define vreinterpretq_f32_m128d(x) vreinterpretq_f32_f64(x) +#else +#define vreinterpretq_m128d_s32(x) vreinterpretq_f32_s32(x) +#define vreinterpretq_m128d_s64(x) vreinterpretq_f32_s64(x) + +#define vreinterpretq_m128d_u32(x) vreinterpretq_f32_u32(x) +#define vreinterpretq_m128d_u64(x) vreinterpretq_f32_u64(x) + +#define vreinterpretq_m128d_f32(x) (x) + +#define vreinterpretq_s64_m128d(x) vreinterpretq_s64_f32(x) + +#define vreinterpretq_u32_m128d(x) vreinterpretq_u32_f32(x) +#define vreinterpretq_u64_m128d(x) vreinterpretq_u64_f32(x) + +#define vreinterpretq_f32_m128d(x) (x) +#endif + +// A struct is defined in this header file called 'SIMDVec' which can be used +// by applications which attempt to access the contents of an __m128 struct +// directly. It is important to note that accessing the __m128 struct directly +// is bad coding practice by Microsoft: @see: +// https://docs.microsoft.com/en-us/cpp/cpp/m128 +// +// However, some legacy source code may try to access the contents of an __m128 +// struct directly so the developer can use the SIMDVec as an alias for it. Any +// casting must be done manually by the developer, as you cannot cast or +// otherwise alias the base NEON data type for intrinsic operations. +// +// union intended to allow direct access to an __m128 variable using the names +// that the MSVC compiler provides. This union should really only be used when +// trying to access the members of the vector as integer values. GCC/clang +// allow native access to the float members through a simple array access +// operator (in C since 4.6, in C++ since 4.8). +// +// Ideally direct accesses to SIMD vectors should not be used since it can cause +// a performance hit. If it really is needed however, the original __m128 +// variable can be aliased with a pointer to this union and used to access +// individual components. The use of this union should be hidden behind a macro +// that is used throughout the codebase to access the members instead of always +// declaring this type of variable. +typedef union ALIGN_STRUCT(16) SIMDVec { + float m128_f32[4]; // as floats - DON'T USE. Added for convenience. + int8_t m128_i8[16]; // as signed 8-bit integers. + int16_t m128_i16[8]; // as signed 16-bit integers. + int32_t m128_i32[4]; // as signed 32-bit integers. + int64_t m128_i64[2]; // as signed 64-bit integers. + uint8_t m128_u8[16]; // as unsigned 8-bit integers. + uint16_t m128_u16[8]; // as unsigned 16-bit integers. + uint32_t m128_u32[4]; // as unsigned 32-bit integers. + uint64_t m128_u64[2]; // as unsigned 64-bit integers. +} SIMDVec; + +// casting using SIMDVec +#define vreinterpretq_nth_u64_m128i(x, n) (((SIMDVec *) &x)->m128_u64[n]) +#define vreinterpretq_nth_u32_m128i(x, n) (((SIMDVec *) &x)->m128_u32[n]) +#define vreinterpretq_nth_u8_m128i(x, n) (((SIMDVec *) &x)->m128_u8[n]) + +/* SSE macros */ +#define _MM_GET_FLUSH_ZERO_MODE _sse2neon_mm_get_flush_zero_mode +#define _MM_SET_FLUSH_ZERO_MODE _sse2neon_mm_set_flush_zero_mode +#define _MM_GET_DENORMALS_ZERO_MODE _sse2neon_mm_get_denormals_zero_mode +#define _MM_SET_DENORMALS_ZERO_MODE _sse2neon_mm_set_denormals_zero_mode + +// Function declaration +// SSE +FORCE_INLINE unsigned int _MM_GET_ROUNDING_MODE(); +FORCE_INLINE __m128 _mm_move_ss(__m128, __m128); +FORCE_INLINE __m128 _mm_or_ps(__m128, __m128); +FORCE_INLINE __m128 _mm_set_ps1(float); +FORCE_INLINE __m128 _mm_setzero_ps(void); +// SSE2 +FORCE_INLINE __m128i _mm_and_si128(__m128i, __m128i); +FORCE_INLINE __m128i _mm_castps_si128(__m128); +FORCE_INLINE __m128i _mm_cmpeq_epi32(__m128i, __m128i); +FORCE_INLINE __m128i _mm_cvtps_epi32(__m128); +FORCE_INLINE __m128d _mm_move_sd(__m128d, __m128d); +FORCE_INLINE __m128i _mm_or_si128(__m128i, __m128i); +FORCE_INLINE __m128i _mm_set_epi32(int, int, int, int); +FORCE_INLINE __m128i _mm_set_epi64x(int64_t, int64_t); +FORCE_INLINE __m128d _mm_set_pd(double, double); +FORCE_INLINE __m128i _mm_set1_epi32(int); +FORCE_INLINE __m128i _mm_setzero_si128(); +// SSE4.1 +FORCE_INLINE __m128d _mm_ceil_pd(__m128d); +FORCE_INLINE __m128 _mm_ceil_ps(__m128); +FORCE_INLINE __m128d _mm_floor_pd(__m128d); +FORCE_INLINE __m128 _mm_floor_ps(__m128); +FORCE_INLINE __m128d _mm_round_pd(__m128d, int); +FORCE_INLINE __m128 _mm_round_ps(__m128, int); +// SSE4.2 +FORCE_INLINE uint32_t _mm_crc32_u8(uint32_t, uint8_t); + +/* Backwards compatibility for compilers with lack of specific type support */ + +// Older gcc does not define vld1q_u8_x4 type +#if defined(__GNUC__) && !defined(__clang__) && \ + ((__GNUC__ <= 12 && defined(__arm__)) || \ + (__GNUC__ == 10 && __GNUC_MINOR__ < 3 && defined(__aarch64__)) || \ + (__GNUC__ <= 9 && defined(__aarch64__))) +FORCE_INLINE uint8x16x4_t _sse2neon_vld1q_u8_x4(const uint8_t *p) +{ + uint8x16x4_t ret; + ret.val[0] = vld1q_u8(p + 0); + ret.val[1] = vld1q_u8(p + 16); + ret.val[2] = vld1q_u8(p + 32); + ret.val[3] = vld1q_u8(p + 48); + return ret; +} +#else +// Wraps vld1q_u8_x4 +FORCE_INLINE uint8x16x4_t _sse2neon_vld1q_u8_x4(const uint8_t *p) +{ + return vld1q_u8_x4(p); +} +#endif + +#if !defined(__aarch64__) +/* emulate vaddv u8 variant */ +FORCE_INLINE uint8_t _sse2neon_vaddv_u8(uint8x8_t v8) +{ + const uint64x1_t v1 = vpaddl_u32(vpaddl_u16(vpaddl_u8(v8))); + return vget_lane_u8(vreinterpret_u8_u64(v1), 0); +} +#else +// Wraps vaddv_u8 +FORCE_INLINE uint8_t _sse2neon_vaddv_u8(uint8x8_t v8) +{ + return vaddv_u8(v8); +} +#endif + +#if !defined(__aarch64__) +/* emulate vaddvq u8 variant */ +FORCE_INLINE uint8_t _sse2neon_vaddvq_u8(uint8x16_t a) +{ + uint8x8_t tmp = vpadd_u8(vget_low_u8(a), vget_high_u8(a)); + uint8_t res = 0; + for (int i = 0; i < 8; ++i) + res += tmp[i]; + return res; +} +#else +// Wraps vaddvq_u8 +FORCE_INLINE uint8_t _sse2neon_vaddvq_u8(uint8x16_t a) +{ + return vaddvq_u8(a); +} +#endif + +#if !defined(__aarch64__) +/* emulate vaddvq u16 variant */ +FORCE_INLINE uint16_t _sse2neon_vaddvq_u16(uint16x8_t a) +{ + uint32x4_t m = vpaddlq_u16(a); + uint64x2_t n = vpaddlq_u32(m); + uint64x1_t o = vget_low_u64(n) + vget_high_u64(n); + + return vget_lane_u32((uint32x2_t) o, 0); +} +#else +// Wraps vaddvq_u16 +FORCE_INLINE uint16_t _sse2neon_vaddvq_u16(uint16x8_t a) +{ + return vaddvq_u16(a); +} +#endif + +/* Function Naming Conventions + * The naming convention of SSE intrinsics is straightforward. A generic SSE + * intrinsic function is given as follows: + * _mm__ + * + * The parts of this format are given as follows: + * 1. describes the operation performed by the intrinsic + * 2. identifies the data type of the function's primary arguments + * + * This last part, , is a little complicated. It identifies the + * content of the input values, and can be set to any of the following values: + * + ps - vectors contain floats (ps stands for packed single-precision) + * + pd - vectors cantain doubles (pd stands for packed double-precision) + * + epi8/epi16/epi32/epi64 - vectors contain 8-bit/16-bit/32-bit/64-bit + * signed integers + * + epu8/epu16/epu32/epu64 - vectors contain 8-bit/16-bit/32-bit/64-bit + * unsigned integers + * + si128 - unspecified 128-bit vector or 256-bit vector + * + m128/m128i/m128d - identifies input vector types when they are different + * than the type of the returned vector + * + * For example, _mm_setzero_ps. The _mm implies that the function returns + * a 128-bit vector. The _ps at the end implies that the argument vectors + * contain floats. + * + * A complete example: Byte Shuffle - pshufb (_mm_shuffle_epi8) + * // Set packed 16-bit integers. 128 bits, 8 short, per 16 bits + * __m128i v_in = _mm_setr_epi16(1, 2, 3, 4, 5, 6, 7, 8); + * // Set packed 8-bit integers + * // 128 bits, 16 chars, per 8 bits + * __m128i v_perm = _mm_setr_epi8(1, 0, 2, 3, 8, 9, 10, 11, + * 4, 5, 12, 13, 6, 7, 14, 15); + * // Shuffle packed 8-bit integers + * __m128i v_out = _mm_shuffle_epi8(v_in, v_perm); // pshufb + * + * Data (Number, Binary, Byte Index): + +------+------+-------------+------+------+-------------+ + | 1 | 2 | 3 | 4 | Number + +------+------+------+------+------+------+------+------+ + | 0000 | 0001 | 0000 | 0010 | 0000 | 0011 | 0000 | 0100 | Binary + +------+------+------+------+------+------+------+------+ + | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Index + +------+------+------+------+------+------+------+------+ + + +------+------+------+------+------+------+------+------+ + | 5 | 6 | 7 | 8 | Number + +------+------+------+------+------+------+------+------+ + | 0000 | 0101 | 0000 | 0110 | 0000 | 0111 | 0000 | 1000 | Binary + +------+------+------+------+------+------+------+------+ + | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Index + +------+------+------+------+------+------+------+------+ + * Index (Byte Index): + +------+------+------+------+------+------+------+------+ + | 1 | 0 | 2 | 3 | 8 | 9 | 10 | 11 | + +------+------+------+------+------+------+------+------+ + + +------+------+------+------+------+------+------+------+ + | 4 | 5 | 12 | 13 | 6 | 7 | 14 | 15 | + +------+------+------+------+------+------+------+------+ + * Result: + +------+------+------+------+------+------+------+------+ + | 1 | 0 | 2 | 3 | 8 | 9 | 10 | 11 | Index + +------+------+------+------+------+------+------+------+ + | 0001 | 0000 | 0000 | 0010 | 0000 | 0101 | 0000 | 0110 | Binary + +------+------+------+------+------+------+------+------+ + | 256 | 2 | 5 | 6 | Number + +------+------+------+------+------+------+------+------+ + + +------+------+------+------+------+------+------+------+ + | 4 | 5 | 12 | 13 | 6 | 7 | 14 | 15 | Index + +------+------+------+------+------+------+------+------+ + | 0000 | 0011 | 0000 | 0111 | 0000 | 0100 | 0000 | 1000 | Binary + +------+------+------+------+------+------+------+------+ + | 3 | 7 | 4 | 8 | Number + +------+------+------+------+------+------+-------------+ + */ + +/* Constants for use with _mm_prefetch. */ +enum _mm_hint { + _MM_HINT_NTA = 0, /* load data to L1 and L2 cache, mark it as NTA */ + _MM_HINT_T0 = 1, /* load data to L1 and L2 cache */ + _MM_HINT_T1 = 2, /* load data to L2 cache only */ + _MM_HINT_T2 = 3, /* load data to L2 cache only, mark it as NTA */ +}; + +// The bit field mapping to the FPCR(floating-point control register) +typedef struct { + uint16_t res0; + uint8_t res1 : 6; + uint8_t bit22 : 1; + uint8_t bit23 : 1; + uint8_t bit24 : 1; + uint8_t res2 : 7; +#if defined(__aarch64__) + uint32_t res3; +#endif +} fpcr_bitfield; + +// Takes the upper 64 bits of a and places it in the low end of the result +// Takes the lower 64 bits of b and places it into the high end of the result. +FORCE_INLINE __m128 _mm_shuffle_ps_1032(__m128 a, __m128 b) +{ + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a32, b10)); +} + +// takes the lower two 32-bit values from a and swaps them and places in high +// end of result takes the higher two 32 bit values from b and swaps them and +// places in low end of result. +FORCE_INLINE __m128 _mm_shuffle_ps_2301(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32x2_t b23 = vrev64_f32(vget_high_f32(vreinterpretq_f32_m128(b))); + return vreinterpretq_m128_f32(vcombine_f32(a01, b23)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0321(__m128 a, __m128 b) +{ + float32x2_t a21 = vget_high_f32( + vextq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 3)); + float32x2_t b03 = vget_low_f32( + vextq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b), 3)); + return vreinterpretq_m128_f32(vcombine_f32(a21, b03)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2103(__m128 a, __m128 b) +{ + float32x2_t a03 = vget_low_f32( + vextq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 3)); + float32x2_t b21 = vget_high_f32( + vextq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b), 3)); + return vreinterpretq_m128_f32(vcombine_f32(a03, b21)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_1010(__m128 a, __m128 b) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a10, b10)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_1001(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a01, b10)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0101(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32x2_t b01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(b))); + return vreinterpretq_m128_f32(vcombine_f32(a01, b01)); +} + +// keeps the low 64 bits of b in the low and puts the high 64 bits of a in the +// high +FORCE_INLINE __m128 _mm_shuffle_ps_3210(__m128 a, __m128 b) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a10, b32)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0011(__m128 a, __m128 b) +{ + float32x2_t a11 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(a)), 1); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + return vreinterpretq_m128_f32(vcombine_f32(a11, b00)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_0022(__m128 a, __m128 b) +{ + float32x2_t a22 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 0); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + return vreinterpretq_m128_f32(vcombine_f32(a22, b00)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2200(__m128 a, __m128 b) +{ + float32x2_t a00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(a)), 0); + float32x2_t b22 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(b)), 0); + return vreinterpretq_m128_f32(vcombine_f32(a00, b22)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_3202(__m128 a, __m128 b) +{ + float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + float32x2_t a22 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 0); + float32x2_t a02 = vset_lane_f32(a0, a22, 1); /* TODO: use vzip ?*/ + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32(vcombine_f32(a02, b32)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_1133(__m128 a, __m128 b) +{ + float32x2_t a33 = + vdup_lane_f32(vget_high_f32(vreinterpretq_f32_m128(a)), 1); + float32x2_t b11 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 1); + return vreinterpretq_m128_f32(vcombine_f32(a33, b11)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2010(__m128 a, __m128 b) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32_t b2 = vgetq_lane_f32(vreinterpretq_f32_m128(b), 2); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + float32x2_t b20 = vset_lane_f32(b2, b00, 1); + return vreinterpretq_m128_f32(vcombine_f32(a10, b20)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2001(__m128 a, __m128 b) +{ + float32x2_t a01 = vrev64_f32(vget_low_f32(vreinterpretq_f32_m128(a))); + float32_t b2 = vgetq_lane_f32(b, 2); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + float32x2_t b20 = vset_lane_f32(b2, b00, 1); + return vreinterpretq_m128_f32(vcombine_f32(a01, b20)); +} + +FORCE_INLINE __m128 _mm_shuffle_ps_2032(__m128 a, __m128 b) +{ + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32_t b2 = vgetq_lane_f32(b, 2); + float32x2_t b00 = vdup_lane_f32(vget_low_f32(vreinterpretq_f32_m128(b)), 0); + float32x2_t b20 = vset_lane_f32(b2, b00, 1); + return vreinterpretq_m128_f32(vcombine_f32(a32, b20)); +} + +// Kahan summation for accurate summation of floating-point numbers. +// http://blog.zachbjornson.com/2019/08/11/fast-float-summation.html +FORCE_INLINE void _sse2neon_kadd_f32(float *sum, float *c, float y) +{ + y -= *c; + float t = *sum + y; + *c = (t - *sum) - y; + *sum = t; +} + +#if defined(__ARM_FEATURE_CRYPTO) && \ + (defined(__aarch64__) || __has_builtin(__builtin_arm_crypto_vmullp64)) +// Wraps vmull_p64 +FORCE_INLINE uint64x2_t _sse2neon_vmull_p64(uint64x1_t _a, uint64x1_t _b) +{ + poly64_t a = vget_lane_p64(vreinterpret_p64_u64(_a), 0); + poly64_t b = vget_lane_p64(vreinterpret_p64_u64(_b), 0); + return vreinterpretq_u64_p128(vmull_p64(a, b)); +} +#else // ARMv7 polyfill +// ARMv7/some A64 lacks vmull_p64, but it has vmull_p8. +// +// vmull_p8 calculates 8 8-bit->16-bit polynomial multiplies, but we need a +// 64-bit->128-bit polynomial multiply. +// +// It needs some work and is somewhat slow, but it is still faster than all +// known scalar methods. +// +// Algorithm adapted to C from +// https://www.workofard.com/2017/07/ghash-for-low-end-cores/, which is adapted +// from "Fast Software Polynomial Multiplication on ARM Processors Using the +// NEON Engine" by Danilo Camara, Conrado Gouvea, Julio Lopez and Ricardo Dahab +// (https://hal.inria.fr/hal-01506572) +static uint64x2_t _sse2neon_vmull_p64(uint64x1_t _a, uint64x1_t _b) +{ + poly8x8_t a = vreinterpret_p8_u64(_a); + poly8x8_t b = vreinterpret_p8_u64(_b); + + // Masks + uint8x16_t k48_32 = vcombine_u8(vcreate_u8(0x0000ffffffffffff), + vcreate_u8(0x00000000ffffffff)); + uint8x16_t k16_00 = vcombine_u8(vcreate_u8(0x000000000000ffff), + vcreate_u8(0x0000000000000000)); + + // Do the multiplies, rotating with vext to get all combinations + uint8x16_t d = vreinterpretq_u8_p16(vmull_p8(a, b)); // D = A0 * B0 + uint8x16_t e = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 1))); // E = A0 * B1 + uint8x16_t f = + vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 1), b)); // F = A1 * B0 + uint8x16_t g = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 2))); // G = A0 * B2 + uint8x16_t h = + vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 2), b)); // H = A2 * B0 + uint8x16_t i = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 3))); // I = A0 * B3 + uint8x16_t j = + vreinterpretq_u8_p16(vmull_p8(vext_p8(a, a, 3), b)); // J = A3 * B0 + uint8x16_t k = + vreinterpretq_u8_p16(vmull_p8(a, vext_p8(b, b, 4))); // L = A0 * B4 + + // Add cross products + uint8x16_t l = veorq_u8(e, f); // L = E + F + uint8x16_t m = veorq_u8(g, h); // M = G + H + uint8x16_t n = veorq_u8(i, j); // N = I + J + + // Interleave. Using vzip1 and vzip2 prevents Clang from emitting TBL + // instructions. +#if defined(__aarch64__) + uint8x16_t lm_p0 = vreinterpretq_u8_u64( + vzip1q_u64(vreinterpretq_u64_u8(l), vreinterpretq_u64_u8(m))); + uint8x16_t lm_p1 = vreinterpretq_u8_u64( + vzip2q_u64(vreinterpretq_u64_u8(l), vreinterpretq_u64_u8(m))); + uint8x16_t nk_p0 = vreinterpretq_u8_u64( + vzip1q_u64(vreinterpretq_u64_u8(n), vreinterpretq_u64_u8(k))); + uint8x16_t nk_p1 = vreinterpretq_u8_u64( + vzip2q_u64(vreinterpretq_u64_u8(n), vreinterpretq_u64_u8(k))); +#else + uint8x16_t lm_p0 = vcombine_u8(vget_low_u8(l), vget_low_u8(m)); + uint8x16_t lm_p1 = vcombine_u8(vget_high_u8(l), vget_high_u8(m)); + uint8x16_t nk_p0 = vcombine_u8(vget_low_u8(n), vget_low_u8(k)); + uint8x16_t nk_p1 = vcombine_u8(vget_high_u8(n), vget_high_u8(k)); +#endif + // t0 = (L) (P0 + P1) << 8 + // t1 = (M) (P2 + P3) << 16 + uint8x16_t t0t1_tmp = veorq_u8(lm_p0, lm_p1); + uint8x16_t t0t1_h = vandq_u8(lm_p1, k48_32); + uint8x16_t t0t1_l = veorq_u8(t0t1_tmp, t0t1_h); + + // t2 = (N) (P4 + P5) << 24 + // t3 = (K) (P6 + P7) << 32 + uint8x16_t t2t3_tmp = veorq_u8(nk_p0, nk_p1); + uint8x16_t t2t3_h = vandq_u8(nk_p1, k16_00); + uint8x16_t t2t3_l = veorq_u8(t2t3_tmp, t2t3_h); + + // De-interleave +#if defined(__aarch64__) + uint8x16_t t0 = vreinterpretq_u8_u64( + vuzp1q_u64(vreinterpretq_u64_u8(t0t1_l), vreinterpretq_u64_u8(t0t1_h))); + uint8x16_t t1 = vreinterpretq_u8_u64( + vuzp2q_u64(vreinterpretq_u64_u8(t0t1_l), vreinterpretq_u64_u8(t0t1_h))); + uint8x16_t t2 = vreinterpretq_u8_u64( + vuzp1q_u64(vreinterpretq_u64_u8(t2t3_l), vreinterpretq_u64_u8(t2t3_h))); + uint8x16_t t3 = vreinterpretq_u8_u64( + vuzp2q_u64(vreinterpretq_u64_u8(t2t3_l), vreinterpretq_u64_u8(t2t3_h))); +#else + uint8x16_t t1 = vcombine_u8(vget_high_u8(t0t1_l), vget_high_u8(t0t1_h)); + uint8x16_t t0 = vcombine_u8(vget_low_u8(t0t1_l), vget_low_u8(t0t1_h)); + uint8x16_t t3 = vcombine_u8(vget_high_u8(t2t3_l), vget_high_u8(t2t3_h)); + uint8x16_t t2 = vcombine_u8(vget_low_u8(t2t3_l), vget_low_u8(t2t3_h)); +#endif + // Shift the cross products + uint8x16_t t0_shift = vextq_u8(t0, t0, 15); // t0 << 8 + uint8x16_t t1_shift = vextq_u8(t1, t1, 14); // t1 << 16 + uint8x16_t t2_shift = vextq_u8(t2, t2, 13); // t2 << 24 + uint8x16_t t3_shift = vextq_u8(t3, t3, 12); // t3 << 32 + + // Accumulate the products + uint8x16_t cross1 = veorq_u8(t0_shift, t1_shift); + uint8x16_t cross2 = veorq_u8(t2_shift, t3_shift); + uint8x16_t mix = veorq_u8(d, cross1); + uint8x16_t r = veorq_u8(mix, cross2); + return vreinterpretq_u64_u8(r); +} +#endif // ARMv7 polyfill + +// C equivalent: +// __m128i _mm_shuffle_epi32_default(__m128i a, +// __constrange(0, 255) int imm) { +// __m128i ret; +// ret[0] = a[imm & 0x3]; ret[1] = a[(imm >> 2) & 0x3]; +// ret[2] = a[(imm >> 4) & 0x03]; ret[3] = a[(imm >> 6) & 0x03]; +// return ret; +// } +#define _mm_shuffle_epi32_default(a, imm) \ + __extension__({ \ + int32x4_t ret; \ + ret = vmovq_n_s32( \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), (imm) & (0x3))); \ + ret = vsetq_lane_s32( \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), ((imm) >> 2) & 0x3), \ + ret, 1); \ + ret = vsetq_lane_s32( \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), ((imm) >> 4) & 0x3), \ + ret, 2); \ + ret = vsetq_lane_s32( \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), ((imm) >> 6) & 0x3), \ + ret, 3); \ + vreinterpretq_m128i_s32(ret); \ + }) + +// Takes the upper 64 bits of a and places it in the low end of the result +// Takes the lower 64 bits of a and places it into the high end of the result. +FORCE_INLINE __m128i _mm_shuffle_epi_1032(__m128i a) +{ + int32x2_t a32 = vget_high_s32(vreinterpretq_s32_m128i(a)); + int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); + return vreinterpretq_m128i_s32(vcombine_s32(a32, a10)); +} + +// takes the lower two 32-bit values from a and swaps them and places in low end +// of result takes the higher two 32 bit values from a and swaps them and places +// in high end of result. +FORCE_INLINE __m128i _mm_shuffle_epi_2301(__m128i a) +{ + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + int32x2_t a23 = vrev64_s32(vget_high_s32(vreinterpretq_s32_m128i(a))); + return vreinterpretq_m128i_s32(vcombine_s32(a01, a23)); +} + +// rotates the least significant 32 bits into the most significant 32 bits, and +// shifts the rest down +FORCE_INLINE __m128i _mm_shuffle_epi_0321(__m128i a) +{ + return vreinterpretq_m128i_s32( + vextq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(a), 1)); +} + +// rotates the most significant 32 bits into the least significant 32 bits, and +// shifts the rest up +FORCE_INLINE __m128i _mm_shuffle_epi_2103(__m128i a) +{ + return vreinterpretq_m128i_s32( + vextq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(a), 3)); +} + +// gets the lower 64 bits of a, and places it in the upper 64 bits +// gets the lower 64 bits of a and places it in the lower 64 bits +FORCE_INLINE __m128i _mm_shuffle_epi_1010(__m128i a) +{ + int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); + return vreinterpretq_m128i_s32(vcombine_s32(a10, a10)); +} + +// gets the lower 64 bits of a, swaps the 0 and 1 elements, and places it in the +// lower 64 bits gets the lower 64 bits of a, and places it in the upper 64 bits +FORCE_INLINE __m128i _mm_shuffle_epi_1001(__m128i a) +{ + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + int32x2_t a10 = vget_low_s32(vreinterpretq_s32_m128i(a)); + return vreinterpretq_m128i_s32(vcombine_s32(a01, a10)); +} + +// gets the lower 64 bits of a, swaps the 0 and 1 elements and places it in the +// upper 64 bits gets the lower 64 bits of a, swaps the 0 and 1 elements, and +// places it in the lower 64 bits +FORCE_INLINE __m128i _mm_shuffle_epi_0101(__m128i a) +{ + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + return vreinterpretq_m128i_s32(vcombine_s32(a01, a01)); +} + +FORCE_INLINE __m128i _mm_shuffle_epi_2211(__m128i a) +{ + int32x2_t a11 = vdup_lane_s32(vget_low_s32(vreinterpretq_s32_m128i(a)), 1); + int32x2_t a22 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 0); + return vreinterpretq_m128i_s32(vcombine_s32(a11, a22)); +} + +FORCE_INLINE __m128i _mm_shuffle_epi_0122(__m128i a) +{ + int32x2_t a22 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 0); + int32x2_t a01 = vrev64_s32(vget_low_s32(vreinterpretq_s32_m128i(a))); + return vreinterpretq_m128i_s32(vcombine_s32(a22, a01)); +} + +FORCE_INLINE __m128i _mm_shuffle_epi_3332(__m128i a) +{ + int32x2_t a32 = vget_high_s32(vreinterpretq_s32_m128i(a)); + int32x2_t a33 = vdup_lane_s32(vget_high_s32(vreinterpretq_s32_m128i(a)), 1); + return vreinterpretq_m128i_s32(vcombine_s32(a32, a33)); +} + +// FORCE_INLINE __m128i _mm_shuffle_epi32_splat(__m128i a, __constrange(0,255) +// int imm) +#if defined(__aarch64__) +#define _mm_shuffle_epi32_splat(a, imm) \ + __extension__({ \ + vreinterpretq_m128i_s32( \ + vdupq_laneq_s32(vreinterpretq_s32_m128i(a), (imm))); \ + }) +#else +#define _mm_shuffle_epi32_splat(a, imm) \ + __extension__({ \ + vreinterpretq_m128i_s32( \ + vdupq_n_s32(vgetq_lane_s32(vreinterpretq_s32_m128i(a), (imm)))); \ + }) +#endif + +// NEON does not support a general purpose permute intrinsic +// Selects four specific single-precision, floating-point values from a and b, +// based on the mask i. +// +// C equivalent: +// __m128 _mm_shuffle_ps_default(__m128 a, __m128 b, +// __constrange(0, 255) int imm) { +// __m128 ret; +// ret[0] = a[imm & 0x3]; ret[1] = a[(imm >> 2) & 0x3]; +// ret[2] = b[(imm >> 4) & 0x03]; ret[3] = b[(imm >> 6) & 0x03]; +// return ret; +// } +// +// https://msdn.microsoft.com/en-us/library/vstudio/5f0858x0(v=vs.100).aspx +#define _mm_shuffle_ps_default(a, b, imm) \ + __extension__({ \ + float32x4_t ret; \ + ret = vmovq_n_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(a), (imm) & (0x3))); \ + ret = vsetq_lane_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(a), ((imm) >> 2) & 0x3), \ + ret, 1); \ + ret = vsetq_lane_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(b), ((imm) >> 4) & 0x3), \ + ret, 2); \ + ret = vsetq_lane_f32( \ + vgetq_lane_f32(vreinterpretq_f32_m128(b), ((imm) >> 6) & 0x3), \ + ret, 3); \ + vreinterpretq_m128_f32(ret); \ + }) + +// Shuffles the lower 4 signed or unsigned 16-bit integers in a as specified +// by imm. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/y41dkk37(v=vs.100) +// FORCE_INLINE __m128i _mm_shufflelo_epi16_function(__m128i a, +// __constrange(0,255) int +// imm) +#define _mm_shufflelo_epi16_function(a, imm) \ + __extension__({ \ + int16x8_t ret = vreinterpretq_s16_m128i(a); \ + int16x4_t lowBits = vget_low_s16(ret); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, (imm) & (0x3)), ret, 0); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 2) & 0x3), ret, \ + 1); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 4) & 0x3), ret, \ + 2); \ + ret = vsetq_lane_s16(vget_lane_s16(lowBits, ((imm) >> 6) & 0x3), ret, \ + 3); \ + vreinterpretq_m128i_s16(ret); \ + }) + +// Shuffles the upper 4 signed or unsigned 16-bit integers in a as specified +// by imm. +// https://msdn.microsoft.com/en-us/library/13ywktbs(v=vs.100).aspx +// FORCE_INLINE __m128i _mm_shufflehi_epi16_function(__m128i a, +// __constrange(0,255) int +// imm) +#define _mm_shufflehi_epi16_function(a, imm) \ + __extension__({ \ + int16x8_t ret = vreinterpretq_s16_m128i(a); \ + int16x4_t highBits = vget_high_s16(ret); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, (imm) & (0x3)), ret, 4); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 2) & 0x3), ret, \ + 5); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 4) & 0x3), ret, \ + 6); \ + ret = vsetq_lane_s16(vget_lane_s16(highBits, ((imm) >> 6) & 0x3), ret, \ + 7); \ + vreinterpretq_m128i_s16(ret); \ + }) + +/* MMX */ + +//_mm_empty is a no-op on arm +FORCE_INLINE void _mm_empty(void) {} + +/* SSE */ + +// Adds the four single-precision, floating-point values of a and b. +// +// r0 := a0 + b0 +// r1 := a1 + b1 +// r2 := a2 + b2 +// r3 := a3 + b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/c9848chc(v=vs.100).aspx +FORCE_INLINE __m128 _mm_add_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vaddq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// adds the scalar single-precision floating point values of a and b. +// https://msdn.microsoft.com/en-us/library/be94x2y6(v=vs.100).aspx +FORCE_INLINE __m128 _mm_add_ss(__m128 a, __m128 b) +{ + float32_t b0 = vgetq_lane_f32(vreinterpretq_f32_m128(b), 0); + float32x4_t value = vsetq_lane_f32(b0, vdupq_n_f32(0), 0); + // the upper values in the result must be the remnants of . + return vreinterpretq_m128_f32(vaddq_f32(a, value)); +} + +// Computes the bitwise AND of the four single-precision, floating-point values +// of a and b. +// +// r0 := a0 & b0 +// r1 := a1 & b1 +// r2 := a2 & b2 +// r3 := a3 & b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/73ck1xc5(v=vs.100).aspx +FORCE_INLINE __m128 _mm_and_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + vandq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); +} + +// Computes the bitwise AND-NOT of the four single-precision, floating-point +// values of a and b. +// +// r0 := ~a0 & b0 +// r1 := ~a1 & b1 +// r2 := ~a2 & b2 +// r3 := ~a3 & b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/68h7wd02(v=vs.100).aspx +FORCE_INLINE __m128 _mm_andnot_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + vbicq_s32(vreinterpretq_s32_m128(b), + vreinterpretq_s32_m128(a))); // *NOTE* argument swap +} + +// Average packed unsigned 16-bit integers in a and b, and store the results in +// dst. +// +// FOR j := 0 to 3 +// i := j*16 +// dst[i+15:i] := (a[i+15:i] + b[i+15:i] + 1) >> 1 +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_pu16 +FORCE_INLINE __m64 _mm_avg_pu16(__m64 a, __m64 b) +{ + return vreinterpret_m64_u16( + vrhadd_u16(vreinterpret_u16_m64(a), vreinterpret_u16_m64(b))); +} + +// Average packed unsigned 8-bit integers in a and b, and store the results in +// dst. +// +// FOR j := 0 to 7 +// i := j*8 +// dst[i+7:i] := (a[i+7:i] + b[i+7:i] + 1) >> 1 +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_avg_pu8 +FORCE_INLINE __m64 _mm_avg_pu8(__m64 a, __m64 b) +{ + return vreinterpret_m64_u8( + vrhadd_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); +} + +// Compares for equality. +// https://msdn.microsoft.com/en-us/library/vstudio/36aectz5(v=vs.100).aspx +FORCE_INLINE __m128 _mm_cmpeq_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compares for equality. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/k423z28e(v=vs.100) +FORCE_INLINE __m128 _mm_cmpeq_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpeq_ps(a, b)); +} + +// Compares for greater than or equal. +// https://msdn.microsoft.com/en-us/library/vstudio/fs813y2t(v=vs.100).aspx +FORCE_INLINE __m128 _mm_cmpge_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compares for greater than or equal. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/kesh3ddc(v=vs.100) +FORCE_INLINE __m128 _mm_cmpge_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpge_ps(a, b)); +} + +// Compares for greater than. +// +// r0 := (a0 > b0) ? 0xffffffff : 0x0 +// r1 := (a1 > b1) ? 0xffffffff : 0x0 +// r2 := (a2 > b2) ? 0xffffffff : 0x0 +// r3 := (a3 > b3) ? 0xffffffff : 0x0 +// +// https://msdn.microsoft.com/en-us/library/vstudio/11dy102s(v=vs.100).aspx +FORCE_INLINE __m128 _mm_cmpgt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compares for greater than. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/1xyyyy9e(v=vs.100) +FORCE_INLINE __m128 _mm_cmpgt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpgt_ps(a, b)); +} + +// Compares for less than or equal. +// +// r0 := (a0 <= b0) ? 0xffffffff : 0x0 +// r1 := (a1 <= b1) ? 0xffffffff : 0x0 +// r2 := (a2 <= b2) ? 0xffffffff : 0x0 +// r3 := (a3 <= b3) ? 0xffffffff : 0x0 +// +// https://msdn.microsoft.com/en-us/library/vstudio/1s75w83z(v=vs.100).aspx +FORCE_INLINE __m128 _mm_cmple_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compares for less than or equal. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/a7x0hbhw(v=vs.100) +FORCE_INLINE __m128 _mm_cmple_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmple_ps(a, b)); +} + +// Compares for less than +// https://msdn.microsoft.com/en-us/library/vstudio/f330yhc8(v=vs.100).aspx +FORCE_INLINE __m128 _mm_cmplt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32( + vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Compares for less than +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/fy94wye7(v=vs.100) +FORCE_INLINE __m128 _mm_cmplt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmplt_ps(a, b)); +} + +// Compares for inequality. +// https://msdn.microsoft.com/en-us/library/sf44thbx(v=vs.100).aspx +FORCE_INLINE __m128 _mm_cmpneq_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compares for inequality. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/ekya8fh4(v=vs.100) +FORCE_INLINE __m128 _mm_cmpneq_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpneq_ps(a, b)); +} + +// Compares for not greater than or equal. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/wsexys62(v=vs.100) +FORCE_INLINE __m128 _mm_cmpnge_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compares for not greater than or equal. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/fk2y80s8(v=vs.100) +FORCE_INLINE __m128 _mm_cmpnge_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpnge_ps(a, b)); +} + +// Compares for not greater than. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/d0xh7w0s(v=vs.100) +FORCE_INLINE __m128 _mm_cmpngt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compares for not greater than. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/z7x9ydwh(v=vs.100) +FORCE_INLINE __m128 _mm_cmpngt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpngt_ps(a, b)); +} + +// Compares for not less than or equal. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/6a330kxw(v=vs.100) +FORCE_INLINE __m128 _mm_cmpnle_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compares for not less than or equal. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/z7x9ydwh(v=vs.100) +FORCE_INLINE __m128 _mm_cmpnle_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpnle_ps(a, b)); +} + +// Compares for not less than. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/4686bbdw(v=vs.100) +FORCE_INLINE __m128 _mm_cmpnlt_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_u32(vmvnq_u32( + vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)))); +} + +// Compares for not less than. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/56b9z2wf(v=vs.100) +FORCE_INLINE __m128 _mm_cmpnlt_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpnlt_ps(a, b)); +} + +// Compares the four 32-bit floats in a and b to check if any values are NaN. +// Ordered compare between each value returns true for "orderable" and false for +// "not orderable" (NaN). +// https://msdn.microsoft.com/en-us/library/vstudio/0h9w00fx(v=vs.100).aspx see +// also: +// http://stackoverflow.com/questions/8627331/what-does-ordered-unordered-comparison-mean +// http://stackoverflow.com/questions/29349621/neon-isnanval-intrinsics +FORCE_INLINE __m128 _mm_cmpord_ps(__m128 a, __m128 b) +{ + // Note: NEON does not have ordered compare builtin + // Need to compare a eq a and b eq b to check for NaN + // Do AND of results to get final + uint32x4_t ceqaa = + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a)); + uint32x4_t ceqbb = + vceqq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_u32(vandq_u32(ceqaa, ceqbb)); +} + +// Compares for ordered. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/343t62da(v=vs.100) +FORCE_INLINE __m128 _mm_cmpord_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpord_ps(a, b)); +} + +// Compares for unordered. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/khy6fk1t(v=vs.100) +FORCE_INLINE __m128 _mm_cmpunord_ps(__m128 a, __m128 b) +{ + uint32x4_t f32a = + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a)); + uint32x4_t f32b = + vceqq_f32(vreinterpretq_f32_m128(b), vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_u32(vmvnq_u32(vandq_u32(f32a, f32b))); +} + +// Compares for unordered. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/2as2387b(v=vs.100) +FORCE_INLINE __m128 _mm_cmpunord_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_cmpunord_ps(a, b)); +} + +// Compares the lower single-precision floating point scalar values of a and b +// using an equality operation. : +// https://msdn.microsoft.com/en-us/library/93yx2h2b(v=vs.100).aspx +FORCE_INLINE int _mm_comieq_ss(__m128 a, __m128 b) +{ + uint32x4_t a_eq_b = + vceqq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_eq_b, 0) & 0x1; +} + +// Compares the lower single-precision floating point scalar values of a and b +// using a greater than or equal operation. : +// https://msdn.microsoft.com/en-us/library/8t80des6(v=vs.100).aspx +FORCE_INLINE int _mm_comige_ss(__m128 a, __m128 b) +{ + uint32x4_t a_ge_b = + vcgeq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_ge_b, 0) & 0x1; +} + +// Compares the lower single-precision floating point scalar values of a and b +// using a greater than operation. : +// https://msdn.microsoft.com/en-us/library/b0738e0t(v=vs.100).aspx +FORCE_INLINE int _mm_comigt_ss(__m128 a, __m128 b) +{ + uint32x4_t a_gt_b = + vcgtq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_gt_b, 0) & 0x1; +} + +// Compares the lower single-precision floating point scalar values of a and b +// using a less than or equal operation. : +// https://msdn.microsoft.com/en-us/library/1w4t7c57(v=vs.90).aspx +FORCE_INLINE int _mm_comile_ss(__m128 a, __m128 b) +{ + uint32x4_t a_le_b = + vcleq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_le_b, 0) & 0x1; +} + +// Compares the lower single-precision floating point scalar values of a and b +// using a less than operation. : +// https://msdn.microsoft.com/en-us/library/2kwe606b(v=vs.90).aspx Important +// note!! The documentation on MSDN is incorrect! If either of the values is a +// NAN the docs say you will get a one, but in fact, it will return a zero!! +FORCE_INLINE int _mm_comilt_ss(__m128 a, __m128 b) +{ + uint32x4_t a_lt_b = + vcltq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b)); + return vgetq_lane_u32(a_lt_b, 0) & 0x1; +} + +// Compares the lower single-precision floating point scalar values of a and b +// using an inequality operation. : +// https://msdn.microsoft.com/en-us/library/bafh5e0a(v=vs.90).aspx +FORCE_INLINE int _mm_comineq_ss(__m128 a, __m128 b) +{ + return !_mm_comieq_ss(a, b); +} + +// Convert packed signed 32-bit integers in b to packed single-precision +// (32-bit) floating-point elements, store the results in the lower 2 elements +// of dst, and copy the upper 2 packed elements from a to the upper elements of +// dst. +// +// dst[31:0] := Convert_Int32_To_FP32(b[31:0]) +// dst[63:32] := Convert_Int32_To_FP32(b[63:32]) +// dst[95:64] := a[95:64] +// dst[127:96] := a[127:96] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_pi2ps +FORCE_INLINE __m128 _mm_cvt_pi2ps(__m128 a, __m64 b) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vcvt_f32_s32(vreinterpret_s32_m64(b)), + vget_high_f32(vreinterpretq_f32_m128(a)))); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// +// FOR j := 0 to 1 +// i := 32*j +// dst[i+31:i] := Convert_FP32_To_Int32(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_ps2pi +FORCE_INLINE __m64 _mm_cvt_ps2pi(__m128 a) +{ +#if defined(__aarch64__) || defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vreinterpret_m64_s32( + vget_low_s32(vcvtnq_s32_f32(vrndiq_f32(vreinterpretq_f32_m128(a))))); +#else + return vreinterpret_m64_s32(vcvt_s32_f32(vget_low_f32( + vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION))))); +#endif +} + +// Convert the signed 32-bit integer b to a single-precision (32-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// +// dst[31:0] := Convert_Int32_To_FP32(b[31:0]) +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_si2ss +FORCE_INLINE __m128 _mm_cvt_si2ss(__m128 a, int b) +{ + return vreinterpretq_m128_f32( + vsetq_lane_f32((float) b, vreinterpretq_f32_m128(a), 0)); +} + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvt_ss2si +FORCE_INLINE int _mm_cvt_ss2si(__m128 a) +{ +#if defined(__aarch64__) || defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vgetq_lane_s32(vcvtnq_s32_f32(vrndiq_f32(vreinterpretq_f32_m128(a))), + 0); +#else + float32_t data = vgetq_lane_f32( + vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION)), 0); + return (int32_t) data; +#endif +} + +// Convert packed 16-bit integers in a to packed single-precision (32-bit) +// floating-point elements, and store the results in dst. +// +// FOR j := 0 to 3 +// i := j*16 +// m := j*32 +// dst[m+31:m] := Convert_Int16_To_FP32(a[i+15:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi16_ps +FORCE_INLINE __m128 _mm_cvtpi16_ps(__m64 a) +{ + return vreinterpretq_m128_f32( + vcvtq_f32_s32(vmovl_s16(vreinterpret_s16_m64(a)))); +} + +// Convert packed 32-bit integers in b to packed single-precision (32-bit) +// floating-point elements, store the results in the lower 2 elements of dst, +// and copy the upper 2 packed elements from a to the upper elements of dst. +// +// dst[31:0] := Convert_Int32_To_FP32(b[31:0]) +// dst[63:32] := Convert_Int32_To_FP32(b[63:32]) +// dst[95:64] := a[95:64] +// dst[127:96] := a[127:96] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32_ps +FORCE_INLINE __m128 _mm_cvtpi32_ps(__m128 a, __m64 b) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vcvt_f32_s32(vreinterpret_s32_m64(b)), + vget_high_f32(vreinterpretq_f32_m128(a)))); +} + +// Convert packed signed 32-bit integers in a to packed single-precision +// (32-bit) floating-point elements, store the results in the lower 2 elements +// of dst, then convert the packed signed 32-bit integers in b to +// single-precision (32-bit) floating-point element, and store the results in +// the upper 2 elements of dst. +// +// dst[31:0] := Convert_Int32_To_FP32(a[31:0]) +// dst[63:32] := Convert_Int32_To_FP32(a[63:32]) +// dst[95:64] := Convert_Int32_To_FP32(b[31:0]) +// dst[127:96] := Convert_Int32_To_FP32(b[63:32]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32x2_ps +FORCE_INLINE __m128 _mm_cvtpi32x2_ps(__m64 a, __m64 b) +{ + return vreinterpretq_m128_f32(vcvtq_f32_s32( + vcombine_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b)))); +} + +// Convert the lower packed 8-bit integers in a to packed single-precision +// (32-bit) floating-point elements, and store the results in dst. +// +// FOR j := 0 to 3 +// i := j*8 +// m := j*32 +// dst[m+31:m] := Convert_Int8_To_FP32(a[i+7:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi8_ps +FORCE_INLINE __m128 _mm_cvtpi8_ps(__m64 a) +{ + return vreinterpretq_m128_f32(vcvtq_f32_s32( + vmovl_s16(vget_low_s16(vmovl_s8(vreinterpret_s8_m64(a)))))); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 16-bit integers, and store the results in dst. Note: this intrinsic +// will generate 0x7FFF, rather than 0x8000, for input values between 0x7FFF and +// 0x7FFFFFFF. +// +// FOR j := 0 to 3 +// i := 16*j +// k := 32*j +// IF a[k+31:k] >= FP32(0x7FFF) && a[k+31:k] <= FP32(0x7FFFFFFF) +// dst[i+15:i] := 0x7FFF +// ELSE +// dst[i+15:i] := Convert_FP32_To_Int16(a[k+31:k]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi16 +FORCE_INLINE __m64 _mm_cvtps_pi16(__m128 a) +{ + return vreinterpret_m64_s16( + vqmovn_s32(vreinterpretq_s32_m128i(_mm_cvtps_epi32(a)))); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// +// FOR j := 0 to 1 +// i := 32*j +// dst[i+31:i] := Convert_FP32_To_Int32(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi32 +#define _mm_cvtps_pi32(a) _mm_cvt_ps2pi(a) + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 8-bit integers, and store the results in lower 4 elements of dst. +// Note: this intrinsic will generate 0x7F, rather than 0x80, for input values +// between 0x7F and 0x7FFFFFFF. +// +// FOR j := 0 to 3 +// i := 8*j +// k := 32*j +// IF a[k+31:k] >= FP32(0x7F) && a[k+31:k] <= FP32(0x7FFFFFFF) +// dst[i+7:i] := 0x7F +// ELSE +// dst[i+7:i] := Convert_FP32_To_Int8(a[k+31:k]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pi8 +FORCE_INLINE __m64 _mm_cvtps_pi8(__m128 a) +{ + return vreinterpret_m64_s8(vqmovn_s16( + vcombine_s16(vreinterpret_s16_m64(_mm_cvtps_pi16(a)), vdup_n_s16(0)))); +} + +// Convert packed unsigned 16-bit integers in a to packed single-precision +// (32-bit) floating-point elements, and store the results in dst. +// +// FOR j := 0 to 3 +// i := j*16 +// m := j*32 +// dst[m+31:m] := Convert_UInt16_To_FP32(a[i+15:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpu16_ps +FORCE_INLINE __m128 _mm_cvtpu16_ps(__m64 a) +{ + return vreinterpretq_m128_f32( + vcvtq_f32_u32(vmovl_u16(vreinterpret_u16_m64(a)))); +} + +// Convert the lower packed unsigned 8-bit integers in a to packed +// single-precision (32-bit) floating-point elements, and store the results in +// dst. +// +// FOR j := 0 to 3 +// i := j*8 +// m := j*32 +// dst[m+31:m] := Convert_UInt8_To_FP32(a[i+7:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpu8_ps +FORCE_INLINE __m128 _mm_cvtpu8_ps(__m64 a) +{ + return vreinterpretq_m128_f32(vcvtq_f32_u32( + vmovl_u16(vget_low_u16(vmovl_u8(vreinterpret_u8_m64(a)))))); +} + +// Convert the signed 32-bit integer b to a single-precision (32-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// +// dst[31:0] := Convert_Int32_To_FP32(b[31:0]) +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_ss +#define _mm_cvtsi32_ss(a, b) _mm_cvt_si2ss(a, b) + +// Convert the signed 64-bit integer b to a single-precision (32-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper 3 packed elements from a to the upper elements of dst. +// +// dst[31:0] := Convert_Int64_To_FP32(b[63:0]) +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_ss +FORCE_INLINE __m128 _mm_cvtsi64_ss(__m128 a, int64_t b) +{ + return vreinterpretq_m128_f32( + vsetq_lane_f32((float) b, vreinterpretq_f32_m128(a), 0)); +} + +// Copy the lower single-precision (32-bit) floating-point element of a to dst. +// +// dst[31:0] := a[31:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_f32 +FORCE_INLINE float _mm_cvtss_f32(__m128 a) +{ + return vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); +} + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer, and store the result in dst. +// +// dst[31:0] := Convert_FP32_To_Int32(a[31:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_si32 +#define _mm_cvtss_si32(a) _mm_cvt_ss2si(a) + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 64-bit integer, and store the result in dst. +// +// dst[63:0] := Convert_FP32_To_Int64(a[31:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_si64 +FORCE_INLINE int64_t _mm_cvtss_si64(__m128 a) +{ +#if defined(__aarch64__) || defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return (int64_t) vgetq_lane_f32(vrndiq_f32(vreinterpretq_f32_m128(a)), 0); +#else + float32_t data = vgetq_lane_f32( + vreinterpretq_f32_m128(_mm_round_ps(a, _MM_FROUND_CUR_DIRECTION)), 0); + return (int64_t) data; +#endif +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// +// FOR j := 0 to 1 +// i := 32*j +// dst[i+31:i] := Convert_FP32_To_Int32_Truncate(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_ps2pi +FORCE_INLINE __m64 _mm_cvtt_ps2pi(__m128 a) +{ + return vreinterpret_m64_s32( + vget_low_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a)))); +} + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer with truncation, and store the result in dst. +// +// dst[31:0] := Convert_FP32_To_Int32_Truncate(a[31:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtt_ss2si +FORCE_INLINE int _mm_cvtt_ss2si(__m128 a) +{ + return vgetq_lane_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a)), 0); +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// +// FOR j := 0 to 1 +// i := 32*j +// dst[i+31:i] := Convert_FP32_To_Int32_Truncate(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttps_pi32 +#define _mm_cvttps_pi32(a) _mm_cvtt_ps2pi(a) + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 32-bit integer with truncation, and store the result in dst. +// +// dst[31:0] := Convert_FP32_To_Int32_Truncate(a[31:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_si32 +#define _mm_cvttss_si32(a) _mm_cvtt_ss2si(a) + +// Convert the lower single-precision (32-bit) floating-point element in a to a +// 64-bit integer with truncation, and store the result in dst. +// +// dst[63:0] := Convert_FP32_To_Int64_Truncate(a[31:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttss_si64 +FORCE_INLINE int64_t _mm_cvttss_si64(__m128 a) +{ + return (int64_t) vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); +} + +// Divides the four single-precision, floating-point values of a and b. +// +// r0 := a0 / b0 +// r1 := a1 / b1 +// r2 := a2 / b2 +// r3 := a3 / b3 +// +// https://msdn.microsoft.com/en-us/library/edaw8147(v=vs.100).aspx +FORCE_INLINE __m128 _mm_div_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) && !SSE2NEON_PRECISE_DIV + return vreinterpretq_m128_f32( + vdivq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x4_t recip = vrecpeq_f32(vreinterpretq_f32_m128(b)); + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(b))); +#if SSE2NEON_PRECISE_DIV + // Additional Netwon-Raphson iteration for accuracy + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(b))); +#endif + return vreinterpretq_m128_f32(vmulq_f32(vreinterpretq_f32_m128(a), recip)); +#endif +} + +// Divides the scalar single-precision floating point value of a by b. +// https://msdn.microsoft.com/en-us/library/4y73xa49(v=vs.100).aspx +FORCE_INLINE __m128 _mm_div_ss(__m128 a, __m128 b) +{ + float32_t value = + vgetq_lane_f32(vreinterpretq_f32_m128(_mm_div_ps(a, b)), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); +} + +// Extract a 16-bit integer from a, selected with imm8, and store the result in +// the lower element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_pi16 +#define _mm_extract_pi16(a, imm) \ + (int32_t) vget_lane_u16(vreinterpret_u16_m64(a), (imm)) + +// Free aligned memory that was allocated with _mm_malloc. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_free +#if !defined(SSE2NEON_ALLOC_DEFINED) +FORCE_INLINE void _mm_free(void *addr) +{ + free(addr); +} +#endif + +// Macro: Get the flush zero bits from the MXCSR control and status register. +// The flush zero may contain any of the following flags: _MM_FLUSH_ZERO_ON or +// _MM_FLUSH_ZERO_OFF +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_GET_FLUSH_ZERO_MODE +FORCE_INLINE unsigned int _sse2neon_mm_get_flush_zero_mode() +{ + union { + fpcr_bitfield field; +#if defined(__aarch64__) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) + __asm__ __volatile__("mrs %0, FPCR" : "=r"(r.value)); /* read */ +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + return r.field.bit24 ? _MM_FLUSH_ZERO_ON : _MM_FLUSH_ZERO_OFF; +} + +// Macro: Get the rounding mode bits from the MXCSR control and status register. +// The rounding mode may contain any of the following flags: _MM_ROUND_NEAREST, +// _MM_ROUND_DOWN, _MM_ROUND_UP, _MM_ROUND_TOWARD_ZERO +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_GET_ROUNDING_MODE +FORCE_INLINE unsigned int _MM_GET_ROUNDING_MODE() +{ + union { + fpcr_bitfield field; +#if defined(__aarch64__) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) + __asm__ __volatile__("mrs %0, FPCR" : "=r"(r.value)); /* read */ +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + if (r.field.bit22) { + return r.field.bit23 ? _MM_ROUND_TOWARD_ZERO : _MM_ROUND_UP; + } else { + return r.field.bit23 ? _MM_ROUND_DOWN : _MM_ROUND_NEAREST; + } +} + +// Copy a to dst, and insert the 16-bit integer i into dst at the location +// specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_insert_pi16 +#define _mm_insert_pi16(a, b, imm) \ + __extension__({ \ + vreinterpret_m64_s16( \ + vset_lane_s16((b), vreinterpret_s16_m64(a), (imm))); \ + }) + +// Loads four single-precision, floating-point values. +// https://msdn.microsoft.com/en-us/library/vstudio/zzd50xxt(v=vs.100).aspx +FORCE_INLINE __m128 _mm_load_ps(const float *p) +{ + return vreinterpretq_m128_f32(vld1q_f32(p)); +} + +// Load a single-precision (32-bit) floating-point element from memory into all +// elements of dst. +// +// dst[31:0] := MEM[mem_addr+31:mem_addr] +// dst[63:32] := MEM[mem_addr+31:mem_addr] +// dst[95:64] := MEM[mem_addr+31:mem_addr] +// dst[127:96] := MEM[mem_addr+31:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_ps1 +#define _mm_load_ps1 _mm_load1_ps + +// Loads an single - precision, floating - point value into the low word and +// clears the upper three words. +// https://msdn.microsoft.com/en-us/library/548bb9h4%28v=vs.90%29.aspx +FORCE_INLINE __m128 _mm_load_ss(const float *p) +{ + return vreinterpretq_m128_f32(vsetq_lane_f32(*p, vdupq_n_f32(0), 0)); +} + +// Loads a single single-precision, floating-point value, copying it into all +// four words +// https://msdn.microsoft.com/en-us/library/vstudio/5cdkf716(v=vs.100).aspx +FORCE_INLINE __m128 _mm_load1_ps(const float *p) +{ + return vreinterpretq_m128_f32(vld1q_dup_f32(p)); +} + +// Sets the upper two single-precision, floating-point values with 64 +// bits of data loaded from the address p; the lower two values are passed +// through from a. +// +// r0 := a0 +// r1 := a1 +// r2 := *p0 +// r3 := *p1 +// +// https://msdn.microsoft.com/en-us/library/w92wta0x(v%3dvs.100).aspx +FORCE_INLINE __m128 _mm_loadh_pi(__m128 a, __m64 const *p) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vget_low_f32(a), vld1_f32((const float32_t *) p))); +} + +// Sets the lower two single-precision, floating-point values with 64 +// bits of data loaded from the address p; the upper two values are passed +// through from a. +// +// Return Value +// r0 := *p0 +// r1 := *p1 +// r2 := a2 +// r3 := a3 +// +// https://msdn.microsoft.com/en-us/library/s57cyak2(v=vs.100).aspx +FORCE_INLINE __m128 _mm_loadl_pi(__m128 a, __m64 const *p) +{ + return vreinterpretq_m128_f32( + vcombine_f32(vld1_f32((const float32_t *) p), vget_high_f32(a))); +} + +// Load 4 single-precision (32-bit) floating-point elements from memory into dst +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// +// dst[31:0] := MEM[mem_addr+127:mem_addr+96] +// dst[63:32] := MEM[mem_addr+95:mem_addr+64] +// dst[95:64] := MEM[mem_addr+63:mem_addr+32] +// dst[127:96] := MEM[mem_addr+31:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadr_ps +FORCE_INLINE __m128 _mm_loadr_ps(const float *p) +{ + float32x4_t v = vrev64q_f32(vld1q_f32(p)); + return vreinterpretq_m128_f32(vextq_f32(v, v, 2)); +} + +// Loads four single-precision, floating-point values. +// https://msdn.microsoft.com/en-us/library/x1b16s7z%28v=vs.90%29.aspx +FORCE_INLINE __m128 _mm_loadu_ps(const float *p) +{ + // for neon, alignment doesn't matter, so _mm_load_ps and _mm_loadu_ps are + // equivalent for neon + return vreinterpretq_m128_f32(vld1q_f32(p)); +} + +// Load unaligned 16-bit integer from memory into the first element of dst. +// +// dst[15:0] := MEM[mem_addr+15:mem_addr] +// dst[MAX:16] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si16 +FORCE_INLINE __m128i _mm_loadu_si16(const void *p) +{ + return vreinterpretq_m128i_s16( + vsetq_lane_s16(*(const int16_t *) p, vdupq_n_s16(0), 0)); +} + +// Load unaligned 64-bit integer from memory into the first element of dst. +// +// dst[63:0] := MEM[mem_addr+63:mem_addr] +// dst[MAX:64] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si64 +FORCE_INLINE __m128i _mm_loadu_si64(const void *p) +{ + return vreinterpretq_m128i_s64( + vcombine_s64(vld1_s64((const int64_t *) p), vdup_n_s64(0))); +} + +// Allocate aligned blocks of memory. +// https://software.intel.com/en-us/ +// cpp-compiler-developer-guide-and-reference-allocating-and-freeing-aligned-memory-blocks +#if !defined(SSE2NEON_ALLOC_DEFINED) +FORCE_INLINE void *_mm_malloc(size_t size, size_t align) +{ + void *ptr; + if (align == 1) + return malloc(size); + if (align == 2 || (sizeof(void *) == 8 && align == 4)) + align = sizeof(void *); + if (!posix_memalign(&ptr, align, size)) + return ptr; + return NULL; +} +#endif + +// Conditionally store 8-bit integer elements from a into memory using mask +// (elements are not stored when the highest bit is not set in the corresponding +// element) and a non-temporal memory hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskmove_si64 +FORCE_INLINE void _mm_maskmove_si64(__m64 a, __m64 mask, char *mem_addr) +{ + int8x8_t shr_mask = vshr_n_s8(vreinterpret_s8_m64(mask), 7); + __m128 b = _mm_load_ps((const float *) mem_addr); + int8x8_t masked = + vbsl_s8(vreinterpret_u8_s8(shr_mask), vreinterpret_s8_m64(a), + vreinterpret_s8_u64(vget_low_u64(vreinterpretq_u64_m128(b)))); + vst1_s8((int8_t *) mem_addr, masked); +} + +// Conditionally store 8-bit integer elements from a into memory using mask +// (elements are not stored when the highest bit is not set in the corresponding +// element) and a non-temporal memory hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_maskmovq +#define _m_maskmovq(a, mask, mem_addr) _mm_maskmove_si64(a, mask, mem_addr) + +// Compare packed signed 16-bit integers in a and b, and store packed maximum +// values in dst. +// +// FOR j := 0 to 3 +// i := j*16 +// dst[i+15:i] := MAX(a[i+15:i], b[i+15:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pi16 +FORCE_INLINE __m64 _mm_max_pi16(__m64 a, __m64 b) +{ + return vreinterpret_m64_s16( + vmax_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); +} + +// Computes the maximums of the four single-precision, floating-point values of +// a and b. +// https://msdn.microsoft.com/en-us/library/vstudio/ff5d607a(v=vs.100).aspx +FORCE_INLINE __m128 _mm_max_ps(__m128 a, __m128 b) +{ +#if SSE2NEON_PRECISE_MINMAX + float32x4_t _a = vreinterpretq_f32_m128(a); + float32x4_t _b = vreinterpretq_f32_m128(b); + return vreinterpretq_m128_f32(vbslq_f32(vcgtq_f32(_a, _b), _a, _b)); +#else + return vreinterpretq_m128_f32( + vmaxq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#endif +} + +// Compare packed unsigned 8-bit integers in a and b, and store packed maximum +// values in dst. +// +// FOR j := 0 to 7 +// i := j*8 +// dst[i+7:i] := MAX(a[i+7:i], b[i+7:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pu8 +FORCE_INLINE __m64 _mm_max_pu8(__m64 a, __m64 b) +{ + return vreinterpret_m64_u8( + vmax_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); +} + +// Computes the maximum of the two lower scalar single-precision floating point +// values of a and b. +// https://msdn.microsoft.com/en-us/library/s6db5esz(v=vs.100).aspx +FORCE_INLINE __m128 _mm_max_ss(__m128 a, __m128 b) +{ + float32_t value = vgetq_lane_f32(_mm_max_ps(a, b), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); +} + +// Compare packed signed 16-bit integers in a and b, and store packed minimum +// values in dst. +// +// FOR j := 0 to 3 +// i := j*16 +// dst[i+15:i] := MIN(a[i+15:i], b[i+15:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pi16 +FORCE_INLINE __m64 _mm_min_pi16(__m64 a, __m64 b) +{ + return vreinterpret_m64_s16( + vmin_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); +} + +// Computes the minima of the four single-precision, floating-point values of a +// and b. +// https://msdn.microsoft.com/en-us/library/vstudio/wh13kadz(v=vs.100).aspx +FORCE_INLINE __m128 _mm_min_ps(__m128 a, __m128 b) +{ +#if SSE2NEON_PRECISE_MINMAX + float32x4_t _a = vreinterpretq_f32_m128(a); + float32x4_t _b = vreinterpretq_f32_m128(b); + return vreinterpretq_m128_f32(vbslq_f32(vcltq_f32(_a, _b), _a, _b)); +#else + return vreinterpretq_m128_f32( + vminq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#endif +} + +// Compare packed unsigned 8-bit integers in a and b, and store packed minimum +// values in dst. +// +// FOR j := 0 to 7 +// i := j*8 +// dst[i+7:i] := MIN(a[i+7:i], b[i+7:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pu8 +FORCE_INLINE __m64 _mm_min_pu8(__m64 a, __m64 b) +{ + return vreinterpret_m64_u8( + vmin_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))); +} + +// Computes the minimum of the two lower scalar single-precision floating point +// values of a and b. +// https://msdn.microsoft.com/en-us/library/0a9y7xaa(v=vs.100).aspx +FORCE_INLINE __m128 _mm_min_ss(__m128 a, __m128 b) +{ + float32_t value = vgetq_lane_f32(_mm_min_ps(a, b), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(a), 0)); +} + +// Sets the low word to the single-precision, floating-point value of b +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/35hdzazd(v=vs.100) +FORCE_INLINE __m128 _mm_move_ss(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vsetq_lane_f32(vgetq_lane_f32(vreinterpretq_f32_m128(b), 0), + vreinterpretq_f32_m128(a), 0)); +} + +// Moves the upper two values of B into the lower two values of A. +// +// r3 := a3 +// r2 := a2 +// r1 := b3 +// r0 := b2 +FORCE_INLINE __m128 _mm_movehl_ps(__m128 __A, __m128 __B) +{ + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(__A)); + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(__B)); + return vreinterpretq_m128_f32(vcombine_f32(b32, a32)); +} + +// Moves the lower two values of B into the upper two values of A. +// +// r3 := b1 +// r2 := b0 +// r1 := a1 +// r0 := a0 +FORCE_INLINE __m128 _mm_movelh_ps(__m128 __A, __m128 __B) +{ + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(__A)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(__B)); + return vreinterpretq_m128_f32(vcombine_f32(a10, b10)); +} + +// Create mask from the most significant bit of each 8-bit element in a, and +// store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_pi8 +FORCE_INLINE int _mm_movemask_pi8(__m64 a) +{ + uint8x8_t input = vreinterpret_u8_m64(a); +#if defined(__aarch64__) + static const int8x8_t shift = {0, 1, 2, 3, 4, 5, 6, 7}; + uint8x8_t tmp = vshr_n_u8(input, 7); + return vaddv_u8(vshl_u8(tmp, shift)); +#else + // Refer the implementation of `_mm_movemask_epi8` + uint16x4_t high_bits = vreinterpret_u16_u8(vshr_n_u8(input, 7)); + uint32x2_t paired16 = + vreinterpret_u32_u16(vsra_n_u16(high_bits, high_bits, 7)); + uint8x8_t paired32 = + vreinterpret_u8_u32(vsra_n_u32(paired16, paired16, 14)); + return vget_lane_u8(paired32, 0) | ((int) vget_lane_u8(paired32, 4) << 4); +#endif +} + +// NEON does not provide this method +// Creates a 4-bit mask from the most significant bits of the four +// single-precision, floating-point values. +// https://msdn.microsoft.com/en-us/library/vstudio/4490ys29(v=vs.100).aspx +FORCE_INLINE int _mm_movemask_ps(__m128 a) +{ + uint32x4_t input = vreinterpretq_u32_m128(a); +#if defined(__aarch64__) + static const int32x4_t shift = {0, 1, 2, 3}; + uint32x4_t tmp = vshrq_n_u32(input, 31); + return vaddvq_u32(vshlq_u32(tmp, shift)); +#else + // Uses the exact same method as _mm_movemask_epi8, see that for details. + // Shift out everything but the sign bits with a 32-bit unsigned shift + // right. + uint64x2_t high_bits = vreinterpretq_u64_u32(vshrq_n_u32(input, 31)); + // Merge the two pairs together with a 64-bit unsigned shift right + add. + uint8x16_t paired = + vreinterpretq_u8_u64(vsraq_n_u64(high_bits, high_bits, 31)); + // Extract the result. + return vgetq_lane_u8(paired, 0) | (vgetq_lane_u8(paired, 8) << 2); +#endif +} + +// Multiplies the four single-precision, floating-point values of a and b. +// +// r0 := a0 * b0 +// r1 := a1 * b1 +// r2 := a2 * b2 +// r3 := a3 * b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/22kbk6t9(v=vs.100).aspx +FORCE_INLINE __m128 _mm_mul_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vmulq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Multiply the lower single-precision (32-bit) floating-point element in a and +// b, store the result in the lower element of dst, and copy the upper 3 packed +// elements from a to the upper elements of dst. +// +// dst[31:0] := a[31:0] * b[31:0] +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_ss +FORCE_INLINE __m128 _mm_mul_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_mul_ps(a, b)); +} + +// Multiply the packed unsigned 16-bit integers in a and b, producing +// intermediate 32-bit integers, and store the high 16 bits of the intermediate +// integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_pu16 +FORCE_INLINE __m64 _mm_mulhi_pu16(__m64 a, __m64 b) +{ + return vreinterpret_m64_u16(vshrn_n_u32( + vmull_u16(vreinterpret_u16_m64(a), vreinterpret_u16_m64(b)), 16)); +} + +// Computes the bitwise OR of the four single-precision, floating-point values +// of a and b. +// https://msdn.microsoft.com/en-us/library/vstudio/7ctdsyy0(v=vs.100).aspx +FORCE_INLINE __m128 _mm_or_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + vorrq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); +} + +// Average packed unsigned 8-bit integers in a and b, and store the results in +// dst. +// +// FOR j := 0 to 7 +// i := j*8 +// dst[i+7:i] := (a[i+7:i] + b[i+7:i] + 1) >> 1 +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pavgb +#define _m_pavgb(a, b) _mm_avg_pu8(a, b) + +// Average packed unsigned 16-bit integers in a and b, and store the results in +// dst. +// +// FOR j := 0 to 3 +// i := j*16 +// dst[i+15:i] := (a[i+15:i] + b[i+15:i] + 1) >> 1 +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pavgw +#define _m_pavgw(a, b) _mm_avg_pu16(a, b) + +// Extract a 16-bit integer from a, selected with imm8, and store the result in +// the lower element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pextrw +#define _m_pextrw(a, imm) _mm_extract_pi16(a, imm) + +// Copy a to dst, and insert the 16-bit integer i into dst at the location +// specified by imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=m_pinsrw +#define _m_pinsrw(a, i, imm) _mm_insert_pi16(a, i, imm) + +// Compare packed signed 16-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmaxsw +#define _m_pmaxsw(a, b) _mm_max_pi16(a, b) + +// Compare packed unsigned 8-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmaxub +#define _m_pmaxub(a, b) _mm_max_pu8(a, b) + +// Compare packed signed 16-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pminsw +#define _m_pminsw(a, b) _mm_min_pi16(a, b) + +// Compare packed unsigned 8-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pminub +#define _m_pminub(a, b) _mm_min_pu8(a, b) + +// Create mask from the most significant bit of each 8-bit element in a, and +// store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmovmskb +#define _m_pmovmskb(a) _mm_movemask_pi8(a) + +// Multiply the packed unsigned 16-bit integers in a and b, producing +// intermediate 32-bit integers, and store the high 16 bits of the intermediate +// integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pmulhuw +#define _m_pmulhuw(a, b) _mm_mulhi_pu16(a, b) + +// Fetch the line of data from memory that contains address p to a location in +// the cache heirarchy specified by the locality hint i. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_prefetch +FORCE_INLINE void _mm_prefetch(char const *p, int i) +{ + switch (i) { + case _MM_HINT_NTA: + __builtin_prefetch(p, 0, 0); + break; + case _MM_HINT_T0: + __builtin_prefetch(p, 0, 3); + break; + case _MM_HINT_T1: + __builtin_prefetch(p, 0, 2); + break; + case _MM_HINT_T2: + __builtin_prefetch(p, 0, 1); + break; + } +} + +// Compute the absolute differences of packed unsigned 8-bit integers in a and +// b, then horizontally sum each consecutive 8 differences to produce four +// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low +// 16 bits of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=m_psadbw +#define _m_psadbw(a, b) _mm_sad_pu8(a, b) + +// Shuffle 16-bit integers in a using the control in imm8, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_m_pshufw +#define _m_pshufw(a, imm) _mm_shuffle_pi16(a, imm) + +// Compute the approximate reciprocal of packed single-precision (32-bit) +// floating-point elements in a, and store the results in dst. The maximum +// relative error for this approximation is less than 1.5*2^-12. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp_ps +FORCE_INLINE __m128 _mm_rcp_ps(__m128 in) +{ + float32x4_t recip = vrecpeq_f32(vreinterpretq_f32_m128(in)); + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(in))); +#if SSE2NEON_PRECISE_DIV + // Additional Netwon-Raphson iteration for accuracy + recip = vmulq_f32(recip, vrecpsq_f32(recip, vreinterpretq_f32_m128(in))); +#endif + return vreinterpretq_m128_f32(recip); +} + +// Compute the approximate reciprocal of the lower single-precision (32-bit) +// floating-point element in a, store the result in the lower element of dst, +// and copy the upper 3 packed elements from a to the upper elements of dst. The +// maximum relative error for this approximation is less than 1.5*2^-12. +// +// dst[31:0] := (1.0 / a[31:0]) +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rcp_ss +FORCE_INLINE __m128 _mm_rcp_ss(__m128 a) +{ + return _mm_move_ss(a, _mm_rcp_ps(a)); +} + +// Computes the approximations of the reciprocal square roots of the four +// single-precision floating point values of in. +// The current precision is 1% error. +// https://msdn.microsoft.com/en-us/library/22hfsh53(v=vs.100).aspx +FORCE_INLINE __m128 _mm_rsqrt_ps(__m128 in) +{ + float32x4_t out = vrsqrteq_f32(vreinterpretq_f32_m128(in)); +#if SSE2NEON_PRECISE_SQRT + // Additional Netwon-Raphson iteration for accuracy + out = vmulq_f32( + out, vrsqrtsq_f32(vmulq_f32(vreinterpretq_f32_m128(in), out), out)); + out = vmulq_f32( + out, vrsqrtsq_f32(vmulq_f32(vreinterpretq_f32_m128(in), out), out)); +#endif + return vreinterpretq_m128_f32(out); +} + +// Compute the approximate reciprocal square root of the lower single-precision +// (32-bit) floating-point element in a, store the result in the lower element +// of dst, and copy the upper 3 packed elements from a to the upper elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_rsqrt_ss +FORCE_INLINE __m128 _mm_rsqrt_ss(__m128 in) +{ + return vsetq_lane_f32(vgetq_lane_f32(_mm_rsqrt_ps(in), 0), in, 0); +} + +// Compute the absolute differences of packed unsigned 8-bit integers in a and +// b, then horizontally sum each consecutive 8 differences to produce four +// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low +// 16 bits of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sad_pu8 +FORCE_INLINE __m64 _mm_sad_pu8(__m64 a, __m64 b) +{ + uint64x1_t t = vpaddl_u32(vpaddl_u16( + vpaddl_u8(vabd_u8(vreinterpret_u8_m64(a), vreinterpret_u8_m64(b))))); + return vreinterpret_m64_u16( + vset_lane_u16(vget_lane_u64(t, 0), vdup_n_u16(0), 0)); +} + +// Macro: Set the flush zero bits of the MXCSR control and status register to +// the value in unsigned 32-bit integer a. The flush zero may contain any of the +// following flags: _MM_FLUSH_ZERO_ON or _MM_FLUSH_ZERO_OFF +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_SET_FLUSH_ZERO_MODE +FORCE_INLINE void _sse2neon_mm_set_flush_zero_mode(unsigned int flag) +{ + // AArch32 Advanced SIMD arithmetic always uses the Flush-to-zero setting, + // regardless of the value of the FZ bit. + union { + fpcr_bitfield field; +#if defined(__aarch64__) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) + __asm__ __volatile__("mrs %0, FPCR" : "=r"(r.value)); /* read */ +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + r.field.bit24 = (flag & _MM_FLUSH_ZERO_MASK) == _MM_FLUSH_ZERO_ON; + +#if defined(__aarch64__) + __asm__ __volatile__("msr FPCR, %0" ::"r"(r)); /* write */ +#else + __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ +#endif +} + +// Sets the four single-precision, floating-point values to the four inputs. +// https://msdn.microsoft.com/en-us/library/vstudio/afh0zf75(v=vs.100).aspx +FORCE_INLINE __m128 _mm_set_ps(float w, float z, float y, float x) +{ + float ALIGN_STRUCT(16) data[4] = {x, y, z, w}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +} + +// Sets the four single-precision, floating-point values to w. +// https://msdn.microsoft.com/en-us/library/vstudio/2x1se8ha(v=vs.100).aspx +FORCE_INLINE __m128 _mm_set_ps1(float _w) +{ + return vreinterpretq_m128_f32(vdupq_n_f32(_w)); +} + +// Macro: Set the rounding mode bits of the MXCSR control and status register to +// the value in unsigned 32-bit integer a. The rounding mode may contain any of +// the following flags: _MM_ROUND_NEAREST, _MM_ROUND_DOWN, _MM_ROUND_UP, +// _MM_ROUND_TOWARD_ZERO +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_MM_SET_ROUNDING_MODE +FORCE_INLINE void _MM_SET_ROUNDING_MODE(int rounding) +{ + union { + fpcr_bitfield field; +#if defined(__aarch64__) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) + __asm__ __volatile__("mrs %0, FPCR" : "=r"(r.value)); /* read */ +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + switch (rounding) { + case _MM_ROUND_TOWARD_ZERO: + r.field.bit22 = 1; + r.field.bit23 = 1; + break; + case _MM_ROUND_DOWN: + r.field.bit22 = 0; + r.field.bit23 = 1; + break; + case _MM_ROUND_UP: + r.field.bit22 = 1; + r.field.bit23 = 0; + break; + default: //_MM_ROUND_NEAREST + r.field.bit22 = 0; + r.field.bit23 = 0; + } + +#if defined(__aarch64__) + __asm__ __volatile__("msr FPCR, %0" ::"r"(r)); /* write */ +#else + __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ +#endif +} + +// Copy single-precision (32-bit) floating-point element a to the lower element +// of dst, and zero the upper 3 elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_ss +FORCE_INLINE __m128 _mm_set_ss(float a) +{ + return vreinterpretq_m128_f32(vsetq_lane_f32(a, vdupq_n_f32(0), 0)); +} + +// Sets the four single-precision, floating-point values to w. +// +// r0 := r1 := r2 := r3 := w +// +// https://msdn.microsoft.com/en-us/library/vstudio/2x1se8ha(v=vs.100).aspx +FORCE_INLINE __m128 _mm_set1_ps(float _w) +{ + return vreinterpretq_m128_f32(vdupq_n_f32(_w)); +} + +// FIXME: _mm_setcsr() implementation supports changing the rounding mode only. +FORCE_INLINE void _mm_setcsr(unsigned int a) +{ + _MM_SET_ROUNDING_MODE(a); +} + +// FIXME: _mm_getcsr() implementation supports reading the rounding mode only. +FORCE_INLINE unsigned int _mm_getcsr() +{ + return _MM_GET_ROUNDING_MODE(); +} + +// Sets the four single-precision, floating-point values to the four inputs in +// reverse order. +// https://msdn.microsoft.com/en-us/library/vstudio/d2172ct3(v=vs.100).aspx +FORCE_INLINE __m128 _mm_setr_ps(float w, float z, float y, float x) +{ + float ALIGN_STRUCT(16) data[4] = {w, z, y, x}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +} + +// Clears the four single-precision, floating-point values. +// https://msdn.microsoft.com/en-us/library/vstudio/tk1t2tbz(v=vs.100).aspx +FORCE_INLINE __m128 _mm_setzero_ps(void) +{ + return vreinterpretq_m128_f32(vdupq_n_f32(0)); +} + +// Shuffle 16-bit integers in a using the control in imm8, and store the results +// in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pi16 +#ifdef _sse2neon_shuffle +#define _mm_shuffle_pi16(a, imm) \ + __extension__({ \ + vreinterpret_m64_s16(vshuffle_s16( \ + vreinterpret_s16_m64(a), vreinterpret_s16_m64(a), (imm & 0x3), \ + ((imm >> 2) & 0x3), ((imm >> 4) & 0x3), ((imm >> 6) & 0x3))); \ + }) +#else +#define _mm_shuffle_pi16(a, imm) \ + __extension__({ \ + int16x4_t ret; \ + ret = \ + vmov_n_s16(vget_lane_s16(vreinterpret_s16_m64(a), (imm) & (0x3))); \ + ret = vset_lane_s16( \ + vget_lane_s16(vreinterpret_s16_m64(a), ((imm) >> 2) & 0x3), ret, \ + 1); \ + ret = vset_lane_s16( \ + vget_lane_s16(vreinterpret_s16_m64(a), ((imm) >> 4) & 0x3), ret, \ + 2); \ + ret = vset_lane_s16( \ + vget_lane_s16(vreinterpret_s16_m64(a), ((imm) >> 6) & 0x3), ret, \ + 3); \ + vreinterpret_m64_s16(ret); \ + }) +#endif + +// Perform a serializing operation on all store-to-memory instructions that were +// issued prior to this instruction. Guarantees that every store instruction +// that precedes, in program order, is globally visible before any store +// instruction which follows the fence in program order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sfence +FORCE_INLINE void _mm_sfence(void) +{ + _sse2neon_smp_mb(); +} + +// Perform a serializing operation on all load-from-memory and store-to-memory +// instructions that were issued prior to this instruction. Guarantees that +// every memory access that precedes, in program order, the memory fence +// instruction is globally visible before any memory instruction which follows +// the fence in program order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mfence +FORCE_INLINE void _mm_mfence(void) +{ + _sse2neon_smp_mb(); +} + +// Perform a serializing operation on all load-from-memory instructions that +// were issued prior to this instruction. Guarantees that every load instruction +// that precedes, in program order, is globally visible before any load +// instruction which follows the fence in program order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_lfence +FORCE_INLINE void _mm_lfence(void) +{ + _sse2neon_smp_mb(); +} + +// FORCE_INLINE __m128 _mm_shuffle_ps(__m128 a, __m128 b, __constrange(0,255) +// int imm) +#ifdef _sse2neon_shuffle +#define _mm_shuffle_ps(a, b, imm) \ + __extension__({ \ + float32x4_t _input1 = vreinterpretq_f32_m128(a); \ + float32x4_t _input2 = vreinterpretq_f32_m128(b); \ + float32x4_t _shuf = \ + vshuffleq_s32(_input1, _input2, (imm) & (0x3), ((imm) >> 2) & 0x3, \ + (((imm) >> 4) & 0x3) + 4, (((imm) >> 6) & 0x3) + 4); \ + vreinterpretq_m128_f32(_shuf); \ + }) +#else // generic +#define _mm_shuffle_ps(a, b, imm) \ + __extension__({ \ + __m128 ret; \ + switch (imm) { \ + case _MM_SHUFFLE(1, 0, 3, 2): \ + ret = _mm_shuffle_ps_1032((a), (b)); \ + break; \ + case _MM_SHUFFLE(2, 3, 0, 1): \ + ret = _mm_shuffle_ps_2301((a), (b)); \ + break; \ + case _MM_SHUFFLE(0, 3, 2, 1): \ + ret = _mm_shuffle_ps_0321((a), (b)); \ + break; \ + case _MM_SHUFFLE(2, 1, 0, 3): \ + ret = _mm_shuffle_ps_2103((a), (b)); \ + break; \ + case _MM_SHUFFLE(1, 0, 1, 0): \ + ret = _mm_movelh_ps((a), (b)); \ + break; \ + case _MM_SHUFFLE(1, 0, 0, 1): \ + ret = _mm_shuffle_ps_1001((a), (b)); \ + break; \ + case _MM_SHUFFLE(0, 1, 0, 1): \ + ret = _mm_shuffle_ps_0101((a), (b)); \ + break; \ + case _MM_SHUFFLE(3, 2, 1, 0): \ + ret = _mm_shuffle_ps_3210((a), (b)); \ + break; \ + case _MM_SHUFFLE(0, 0, 1, 1): \ + ret = _mm_shuffle_ps_0011((a), (b)); \ + break; \ + case _MM_SHUFFLE(0, 0, 2, 2): \ + ret = _mm_shuffle_ps_0022((a), (b)); \ + break; \ + case _MM_SHUFFLE(2, 2, 0, 0): \ + ret = _mm_shuffle_ps_2200((a), (b)); \ + break; \ + case _MM_SHUFFLE(3, 2, 0, 2): \ + ret = _mm_shuffle_ps_3202((a), (b)); \ + break; \ + case _MM_SHUFFLE(3, 2, 3, 2): \ + ret = _mm_movehl_ps((b), (a)); \ + break; \ + case _MM_SHUFFLE(1, 1, 3, 3): \ + ret = _mm_shuffle_ps_1133((a), (b)); \ + break; \ + case _MM_SHUFFLE(2, 0, 1, 0): \ + ret = _mm_shuffle_ps_2010((a), (b)); \ + break; \ + case _MM_SHUFFLE(2, 0, 0, 1): \ + ret = _mm_shuffle_ps_2001((a), (b)); \ + break; \ + case _MM_SHUFFLE(2, 0, 3, 2): \ + ret = _mm_shuffle_ps_2032((a), (b)); \ + break; \ + default: \ + ret = _mm_shuffle_ps_default((a), (b), (imm)); \ + break; \ + } \ + ret; \ + }) +#endif + +// Computes the approximations of square roots of the four single-precision, +// floating-point values of a. First computes reciprocal square roots and then +// reciprocals of the four values. +// +// r0 := sqrt(a0) +// r1 := sqrt(a1) +// r2 := sqrt(a2) +// r3 := sqrt(a3) +// +// https://msdn.microsoft.com/en-us/library/vstudio/8z67bwwk(v=vs.100).aspx +FORCE_INLINE __m128 _mm_sqrt_ps(__m128 in) +{ +#if SSE2NEON_PRECISE_SQRT + float32x4_t recip = vrsqrteq_f32(vreinterpretq_f32_m128(in)); + + // Test for vrsqrteq_f32(0) -> positive infinity case. + // Change to zero, so that s * 1/sqrt(s) result is zero too. + const uint32x4_t pos_inf = vdupq_n_u32(0x7F800000); + const uint32x4_t div_by_zero = + vceqq_u32(pos_inf, vreinterpretq_u32_f32(recip)); + recip = vreinterpretq_f32_u32( + vandq_u32(vmvnq_u32(div_by_zero), vreinterpretq_u32_f32(recip))); + + // Additional Netwon-Raphson iteration for accuracy + recip = vmulq_f32( + vrsqrtsq_f32(vmulq_f32(recip, recip), vreinterpretq_f32_m128(in)), + recip); + recip = vmulq_f32( + vrsqrtsq_f32(vmulq_f32(recip, recip), vreinterpretq_f32_m128(in)), + recip); + + // sqrt(s) = s * 1/sqrt(s) + return vreinterpretq_m128_f32(vmulq_f32(vreinterpretq_f32_m128(in), recip)); +#elif defined(__aarch64__) + return vreinterpretq_m128_f32(vsqrtq_f32(vreinterpretq_f32_m128(in))); +#else + float32x4_t recipsq = vrsqrteq_f32(vreinterpretq_f32_m128(in)); + float32x4_t sq = vrecpeq_f32(recipsq); + return vreinterpretq_m128_f32(sq); +#endif +} + +// Computes the approximation of the square root of the scalar single-precision +// floating point value of in. +// https://msdn.microsoft.com/en-us/library/ahfsc22d(v=vs.100).aspx +FORCE_INLINE __m128 _mm_sqrt_ss(__m128 in) +{ + float32_t value = + vgetq_lane_f32(vreinterpretq_f32_m128(_mm_sqrt_ps(in)), 0); + return vreinterpretq_m128_f32( + vsetq_lane_f32(value, vreinterpretq_f32_m128(in), 0)); +} + +// Stores four single-precision, floating-point values. +// https://msdn.microsoft.com/en-us/library/vstudio/s3h4ay6y(v=vs.100).aspx +FORCE_INLINE void _mm_store_ps(float *p, __m128 a) +{ + vst1q_f32(p, vreinterpretq_f32_m128(a)); +} + +// Store the lower single-precision (32-bit) floating-point element from a into +// 4 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// +// MEM[mem_addr+31:mem_addr] := a[31:0] +// MEM[mem_addr+63:mem_addr+32] := a[31:0] +// MEM[mem_addr+95:mem_addr+64] := a[31:0] +// MEM[mem_addr+127:mem_addr+96] := a[31:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_ps1 +FORCE_INLINE void _mm_store_ps1(float *p, __m128 a) +{ + float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + vst1q_f32(p, vdupq_n_f32(a0)); +} + +// Stores the lower single - precision, floating - point value. +// https://msdn.microsoft.com/en-us/library/tzz10fbx(v=vs.100).aspx +FORCE_INLINE void _mm_store_ss(float *p, __m128 a) +{ + vst1q_lane_f32(p, vreinterpretq_f32_m128(a), 0); +} + +// Store the lower single-precision (32-bit) floating-point element from a into +// 4 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// +// MEM[mem_addr+31:mem_addr] := a[31:0] +// MEM[mem_addr+63:mem_addr+32] := a[31:0] +// MEM[mem_addr+95:mem_addr+64] := a[31:0] +// MEM[mem_addr+127:mem_addr+96] := a[31:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store1_ps +#define _mm_store1_ps _mm_store_ps1 + +// Stores the upper two single-precision, floating-point values of a to the +// address p. +// +// *p0 := a2 +// *p1 := a3 +// +// https://msdn.microsoft.com/en-us/library/a7525fs8(v%3dvs.90).aspx +FORCE_INLINE void _mm_storeh_pi(__m64 *p, __m128 a) +{ + *p = vreinterpret_m64_f32(vget_high_f32(a)); +} + +// Stores the lower two single-precision floating point values of a to the +// address p. +// +// *p0 := a0 +// *p1 := a1 +// +// https://msdn.microsoft.com/en-us/library/h54t98ks(v=vs.90).aspx +FORCE_INLINE void _mm_storel_pi(__m64 *p, __m128 a) +{ + *p = vreinterpret_m64_f32(vget_low_f32(a)); +} + +// Store 4 single-precision (32-bit) floating-point elements from a into memory +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// +// MEM[mem_addr+31:mem_addr] := a[127:96] +// MEM[mem_addr+63:mem_addr+32] := a[95:64] +// MEM[mem_addr+95:mem_addr+64] := a[63:32] +// MEM[mem_addr+127:mem_addr+96] := a[31:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storer_ps +FORCE_INLINE void _mm_storer_ps(float *p, __m128 a) +{ + float32x4_t tmp = vrev64q_f32(vreinterpretq_f32_m128(a)); + float32x4_t rev = vextq_f32(tmp, tmp, 2); + vst1q_f32(p, rev); +} + +// Stores four single-precision, floating-point values. +// https://msdn.microsoft.com/en-us/library/44e30x22(v=vs.100).aspx +FORCE_INLINE void _mm_storeu_ps(float *p, __m128 a) +{ + vst1q_f32(p, vreinterpretq_f32_m128(a)); +} + +// Stores 16-bits of integer data a at the address p. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si16 +FORCE_INLINE void _mm_storeu_si16(void *p, __m128i a) +{ + vst1q_lane_s16((int16_t *) p, vreinterpretq_s16_m128i(a), 0); +} + +// Stores 64-bits of integer data a at the address p. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si64 +FORCE_INLINE void _mm_storeu_si64(void *p, __m128i a) +{ + vst1q_lane_s64((int64_t *) p, vreinterpretq_s64_m128i(a), 0); +} + +// Store 64-bits of integer data from a into memory using a non-temporal memory +// hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_pi +FORCE_INLINE void _mm_stream_pi(__m64 *p, __m64 a) +{ + vst1_s64((int64_t *) p, vreinterpret_s64_m64(a)); +} + +// Store 128-bits (composed of 4 packed single-precision (32-bit) floating- +// point elements) from a into memory using a non-temporal memory hint. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_ps +FORCE_INLINE void _mm_stream_ps(float *p, __m128 a) +{ +#if __has_builtin(__builtin_nontemporal_store) + __builtin_nontemporal_store(a, (float32x4_t *) p); +#else + vst1q_f32(p, vreinterpretq_f32_m128(a)); +#endif +} + +// Subtracts the four single-precision, floating-point values of a and b. +// +// r0 := a0 - b0 +// r1 := a1 - b1 +// r2 := a2 - b2 +// r3 := a3 - b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/1zad2k61(v=vs.100).aspx +FORCE_INLINE __m128 _mm_sub_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_f32( + vsubq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +} + +// Subtract the lower single-precision (32-bit) floating-point element in b from +// the lower single-precision (32-bit) floating-point element in a, store the +// result in the lower element of dst, and copy the upper 3 packed elements from +// a to the upper elements of dst. +// +// dst[31:0] := a[31:0] - b[31:0] +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_ss +FORCE_INLINE __m128 _mm_sub_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_sub_ps(a, b)); +} + +// Macro: Transpose the 4x4 matrix formed by the 4 rows of single-precision +// (32-bit) floating-point elements in row0, row1, row2, and row3, and store the +// transposed matrix in these vectors (row0 now contains column 0, etc.). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=MM_TRANSPOSE4_PS +#define _MM_TRANSPOSE4_PS(row0, row1, row2, row3) \ + do { \ + float32x4x2_t ROW01 = vtrnq_f32(row0, row1); \ + float32x4x2_t ROW23 = vtrnq_f32(row2, row3); \ + row0 = vcombine_f32(vget_low_f32(ROW01.val[0]), \ + vget_low_f32(ROW23.val[0])); \ + row1 = vcombine_f32(vget_low_f32(ROW01.val[1]), \ + vget_low_f32(ROW23.val[1])); \ + row2 = vcombine_f32(vget_high_f32(ROW01.val[0]), \ + vget_high_f32(ROW23.val[0])); \ + row3 = vcombine_f32(vget_high_f32(ROW01.val[1]), \ + vget_high_f32(ROW23.val[1])); \ + } while (0) + +// according to the documentation, these intrinsics behave the same as the +// non-'u' versions. We'll just alias them here. +#define _mm_ucomieq_ss _mm_comieq_ss +#define _mm_ucomige_ss _mm_comige_ss +#define _mm_ucomigt_ss _mm_comigt_ss +#define _mm_ucomile_ss _mm_comile_ss +#define _mm_ucomilt_ss _mm_comilt_ss +#define _mm_ucomineq_ss _mm_comineq_ss + +// Return vector of type __m128i with undefined elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_undefined_si128 +FORCE_INLINE __m128i _mm_undefined_si128(void) +{ +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif + __m128i a; + return a; +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif +} + +// Return vector of type __m128 with undefined elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_undefined_ps +FORCE_INLINE __m128 _mm_undefined_ps(void) +{ +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif + __m128 a; + return a; +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif +} + +// Selects and interleaves the upper two single-precision, floating-point values +// from a and b. +// +// r0 := a2 +// r1 := b2 +// r2 := a3 +// r3 := b3 +// +// https://msdn.microsoft.com/en-us/library/skccxx7d%28v=vs.90%29.aspx +FORCE_INLINE __m128 _mm_unpackhi_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128_f32( + vzip2q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x2_t a1 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32x2_t b1 = vget_high_f32(vreinterpretq_f32_m128(b)); + float32x2x2_t result = vzip_f32(a1, b1); + return vreinterpretq_m128_f32(vcombine_f32(result.val[0], result.val[1])); +#endif +} + +// Selects and interleaves the lower two single-precision, floating-point values +// from a and b. +// +// r0 := a0 +// r1 := b0 +// r2 := a1 +// r3 := b1 +// +// https://msdn.microsoft.com/en-us/library/25st103b%28v=vs.90%29.aspx +FORCE_INLINE __m128 _mm_unpacklo_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128_f32( + vzip1q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x2_t a1 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t b1 = vget_low_f32(vreinterpretq_f32_m128(b)); + float32x2x2_t result = vzip_f32(a1, b1); + return vreinterpretq_m128_f32(vcombine_f32(result.val[0], result.val[1])); +#endif +} + +// Computes bitwise EXOR (exclusive-or) of the four single-precision, +// floating-point values of a and b. +// https://msdn.microsoft.com/en-us/library/ss6k3wk8(v=vs.100).aspx +FORCE_INLINE __m128 _mm_xor_ps(__m128 a, __m128 b) +{ + return vreinterpretq_m128_s32( + veorq_s32(vreinterpretq_s32_m128(a), vreinterpretq_s32_m128(b))); +} + +/* SSE2 */ + +// Adds the 8 signed or unsigned 16-bit integers in a to the 8 signed or +// unsigned 16-bit integers in b. +// https://msdn.microsoft.com/en-us/library/fceha5k4(v=vs.100).aspx +FORCE_INLINE __m128i _mm_add_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vaddq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Adds the 4 signed or unsigned 32-bit integers in a to the 4 signed or +// unsigned 32-bit integers in b. +// +// r0 := a0 + b0 +// r1 := a1 + b1 +// r2 := a2 + b2 +// r3 := a3 + b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/09xs4fkk(v=vs.100).aspx +FORCE_INLINE __m128i _mm_add_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vaddq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Adds the 4 signed or unsigned 64-bit integers in a to the 4 signed or +// unsigned 32-bit integers in b. +// https://msdn.microsoft.com/en-us/library/vstudio/09xs4fkk(v=vs.100).aspx +FORCE_INLINE __m128i _mm_add_epi64(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s64( + vaddq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +} + +// Adds the 16 signed or unsigned 8-bit integers in a to the 16 signed or +// unsigned 8-bit integers in b. +// https://technet.microsoft.com/en-us/subscriptions/yc7tcyzs(v=vs.90) +FORCE_INLINE __m128i _mm_add_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vaddq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Add packed double-precision (64-bit) floating-point elements in a and b, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_pd +FORCE_INLINE __m128d _mm_add_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vaddq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[2]; + c[0] = da[0] + db[0]; + c[1] = da[1] + db[1]; + return vld1q_f32((float32_t *) c); +#endif +} + +// Add the lower double-precision (64-bit) floating-point element in a and b, +// store the result in the lower element of dst, and copy the upper element from +// a to the upper element of dst. +// +// dst[63:0] := a[63:0] + b[63:0] +// dst[127:64] := a[127:64] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_sd +FORCE_INLINE __m128d _mm_add_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_add_pd(a, b)); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[2]; + c[0] = da[0] + db[0]; + c[1] = da[1]; + return vld1q_f32((float32_t *) c); +#endif +} + +// Add 64-bit integers a and b, and store the result in dst. +// +// dst[63:0] := a[63:0] + b[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_add_si64 +FORCE_INLINE __m64 _mm_add_si64(__m64 a, __m64 b) +{ + return vreinterpret_m64_s64( + vadd_s64(vreinterpret_s64_m64(a), vreinterpret_s64_m64(b))); +} + +// Adds the 8 signed 16-bit integers in a to the 8 signed 16-bit integers in b +// and saturates. +// +// r0 := SignedSaturate(a0 + b0) +// r1 := SignedSaturate(a1 + b1) +// ... +// r7 := SignedSaturate(a7 + b7) +// +// https://msdn.microsoft.com/en-us/library/1a306ef8(v=vs.100).aspx +FORCE_INLINE __m128i _mm_adds_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vqaddq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Add packed signed 8-bit integers in a and b using saturation, and store the +// results in dst. +// +// FOR j := 0 to 15 +// i := j*8 +// dst[i+7:i] := Saturate8( a[i+7:i] + b[i+7:i] ) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epi8 +FORCE_INLINE __m128i _mm_adds_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vqaddq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Add packed unsigned 16-bit integers in a and b using saturation, and store +// the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_adds_epu16 +FORCE_INLINE __m128i _mm_adds_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vqaddq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Adds the 16 unsigned 8-bit integers in a to the 16 unsigned 8-bit integers in +// b and saturates.. +// https://msdn.microsoft.com/en-us/library/9hahyddy(v=vs.100).aspx +FORCE_INLINE __m128i _mm_adds_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vqaddq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Compute the bitwise AND of packed double-precision (64-bit) floating-point +// elements in a and b, and store the results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// dst[i+63:i] := a[i+63:i] AND b[i+63:i] +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_and_pd +FORCE_INLINE __m128d _mm_and_pd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_s64( + vandq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); +} + +// Computes the bitwise AND of the 128-bit value in a and the 128-bit value in +// b. +// +// r := a & b +// +// https://msdn.microsoft.com/en-us/library/vstudio/6d1txsa8(v=vs.100).aspx +FORCE_INLINE __m128i _mm_and_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vandq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compute the bitwise NOT of packed double-precision (64-bit) floating-point +// elements in a and then AND with b, and store the results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// dst[i+63:i] := ((NOT a[i+63:i]) AND b[i+63:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_andnot_pd +FORCE_INLINE __m128d _mm_andnot_pd(__m128d a, __m128d b) +{ + // *NOTE* argument swap + return vreinterpretq_m128d_s64( + vbicq_s64(vreinterpretq_s64_m128d(b), vreinterpretq_s64_m128d(a))); +} + +// Computes the bitwise AND of the 128-bit value in b and the bitwise NOT of the +// 128-bit value in a. +// +// r := (~a) & b +// +// https://msdn.microsoft.com/en-us/library/vstudio/1beaceh8(v=vs.100).aspx +FORCE_INLINE __m128i _mm_andnot_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vbicq_s32(vreinterpretq_s32_m128i(b), + vreinterpretq_s32_m128i(a))); // *NOTE* argument swap +} + +// Computes the average of the 8 unsigned 16-bit integers in a and the 8 +// unsigned 16-bit integers in b and rounds. +// +// r0 := (a0 + b0) / 2 +// r1 := (a1 + b1) / 2 +// ... +// r7 := (a7 + b7) / 2 +// +// https://msdn.microsoft.com/en-us/library/vstudio/y13ca3c8(v=vs.90).aspx +FORCE_INLINE __m128i _mm_avg_epu16(__m128i a, __m128i b) +{ + return (__m128i) vrhaddq_u16(vreinterpretq_u16_m128i(a), + vreinterpretq_u16_m128i(b)); +} + +// Computes the average of the 16 unsigned 8-bit integers in a and the 16 +// unsigned 8-bit integers in b and rounds. +// +// r0 := (a0 + b0) / 2 +// r1 := (a1 + b1) / 2 +// ... +// r15 := (a15 + b15) / 2 +// +// https://msdn.microsoft.com/en-us/library/vstudio/8zwh554a(v%3dvs.90).aspx +FORCE_INLINE __m128i _mm_avg_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vrhaddq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Shift a left by imm8 bytes while shifting in zeros, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_bslli_si128 +#define _mm_bslli_si128(a, imm) _mm_slli_si128(a, imm) + +// Shift a right by imm8 bytes while shifting in zeros, and store the results in +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_bsrli_si128 +#define _mm_bsrli_si128(a, imm) _mm_srli_si128(a, imm) + +// Cast vector of type __m128d to type __m128. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castpd_ps +FORCE_INLINE __m128 _mm_castpd_ps(__m128d a) +{ + return vreinterpretq_m128_s64(vreinterpretq_s64_m128d(a)); +} + +// Cast vector of type __m128d to type __m128i. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castpd_si128 +FORCE_INLINE __m128i _mm_castpd_si128(__m128d a) +{ + return vreinterpretq_m128i_s64(vreinterpretq_s64_m128d(a)); +} + +// Cast vector of type __m128 to type __m128d. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castps_pd +FORCE_INLINE __m128d _mm_castps_pd(__m128 a) +{ + return vreinterpretq_m128d_s32(vreinterpretq_s32_m128(a)); +} + +// Applies a type cast to reinterpret four 32-bit floating point values passed +// in as a 128-bit parameter as packed 32-bit integers. +// https://msdn.microsoft.com/en-us/library/bb514099.aspx +FORCE_INLINE __m128i _mm_castps_si128(__m128 a) +{ + return vreinterpretq_m128i_s32(vreinterpretq_s32_m128(a)); +} + +// Cast vector of type __m128i to type __m128d. This intrinsic is only used for +// compilation and does not generate any instructions, thus it has zero latency. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_castsi128_pd +FORCE_INLINE __m128d _mm_castsi128_pd(__m128i a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vreinterpretq_f64_m128i(a)); +#else + return vreinterpretq_m128d_f32(vreinterpretq_f32_m128i(a)); +#endif +} + +// Applies a type cast to reinterpret four 32-bit integers passed in as a +// 128-bit parameter as packed 32-bit floating point values. +// https://msdn.microsoft.com/en-us/library/bb514029.aspx +FORCE_INLINE __m128 _mm_castsi128_ps(__m128i a) +{ + return vreinterpretq_m128_s32(vreinterpretq_s32_m128i(a)); +} + +// Invalidate and flush the cache line that contains p from all levels of the +// cache hierarchy. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_clflush +#if defined(__APPLE__) +#include +#endif +FORCE_INLINE void _mm_clflush(void const *p) +{ + (void) p; + + /* sys_icache_invalidate is supported since macOS 10.5. + * However, it does not work on non-jailbroken iOS devices, although the + * compilation is successful. + */ +#if defined(__APPLE__) + sys_icache_invalidate((void *) (uintptr_t) p, SSE2NEON_CACHELINE_SIZE); +#elif defined(__GNUC__) || defined(__clang__) + uintptr_t ptr = (uintptr_t) p; + __builtin___clear_cache((char *) ptr, + (char *) ptr + SSE2NEON_CACHELINE_SIZE); +#else + /* FIXME: MSVC support */ +#endif +} + +// Compares the 8 signed or unsigned 16-bit integers in a and the 8 signed or +// unsigned 16-bit integers in b for equality. +// https://msdn.microsoft.com/en-us/library/2ay060te(v=vs.100).aspx +FORCE_INLINE __m128i _mm_cmpeq_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vceqq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compare packed 32-bit integers in a and b for equality, and store the results +// in dst +FORCE_INLINE __m128i _mm_cmpeq_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vceqq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compares the 16 signed or unsigned 8-bit integers in a and the 16 signed or +// unsigned 8-bit integers in b for equality. +// https://msdn.microsoft.com/en-us/library/windows/desktop/bz5xk21a(v=vs.90).aspx +FORCE_INLINE __m128i _mm_cmpeq_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vceqq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for equality, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_pd +FORCE_INLINE __m128d _mm_cmpeq_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64( + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) + uint32x4_t cmp = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); + uint32x4_t swapped = vrev64q_u32(cmp); + return vreinterpretq_m128d_u32(vandq_u32(cmp, swapped)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for equality, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpeq_sd +FORCE_INLINE __m128d _mm_cmpeq_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpeq_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for greater-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_pd +FORCE_INLINE __m128d _mm_cmpge_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64( + vcgeq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) >= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = (*(double *) &a1) >= (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for greater-than-or-equal, store the result in the lower element of dst, +// and copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpge_sd +FORCE_INLINE __m128d _mm_cmpge_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_cmpge_pd(a, b)); +#else + // expand "_mm_cmpge_pd()" to reduce unnecessary operations + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) >= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compares the 8 signed 16-bit integers in a and the 8 signed 16-bit integers +// in b for greater than. +// +// r0 := (a0 > b0) ? 0xffff : 0x0 +// r1 := (a1 > b1) ? 0xffff : 0x0 +// ... +// r7 := (a7 > b7) ? 0xffff : 0x0 +// +// https://technet.microsoft.com/en-us/library/xd43yfsa(v=vs.100).aspx +FORCE_INLINE __m128i _mm_cmpgt_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vcgtq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compares the 4 signed 32-bit integers in a and the 4 signed 32-bit integers +// in b for greater than. +// https://msdn.microsoft.com/en-us/library/vstudio/1s9f2z0y(v=vs.100).aspx +FORCE_INLINE __m128i _mm_cmpgt_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vcgtq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compares the 16 signed 8-bit integers in a and the 16 signed 8-bit integers +// in b for greater than. +// +// r0 := (a0 > b0) ? 0xff : 0x0 +// r1 := (a1 > b1) ? 0xff : 0x0 +// ... +// r15 := (a15 > b15) ? 0xff : 0x0 +// +// https://msdn.microsoft.com/zh-tw/library/wf45zt2b(v=vs.100).aspx +FORCE_INLINE __m128i _mm_cmpgt_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vcgtq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for greater-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_pd +FORCE_INLINE __m128d _mm_cmpgt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64( + vcgtq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) > (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = (*(double *) &a1) > (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for greater-than, store the result in the lower element of dst, and copy +// the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpgt_sd +FORCE_INLINE __m128d _mm_cmpgt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_cmpgt_pd(a, b)); +#else + // expand "_mm_cmpge_pd()" to reduce unnecessary operations + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) > (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for less-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_pd +FORCE_INLINE __m128d _mm_cmple_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64( + vcleq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) <= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = (*(double *) &a1) <= (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for less-than-or-equal, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmple_sd +FORCE_INLINE __m128d _mm_cmple_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_cmple_pd(a, b)); +#else + // expand "_mm_cmpge_pd()" to reduce unnecessary operations + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) <= (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compares the 8 signed 16-bit integers in a and the 8 signed 16-bit integers +// in b for less than. +// +// r0 := (a0 < b0) ? 0xffff : 0x0 +// r1 := (a1 < b1) ? 0xffff : 0x0 +// ... +// r7 := (a7 < b7) ? 0xffff : 0x0 +// +// https://technet.microsoft.com/en-us/library/t863edb2(v=vs.100).aspx +FORCE_INLINE __m128i _mm_cmplt_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vcltq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + + +// Compares the 4 signed 32-bit integers in a and the 4 signed 32-bit integers +// in b for less than. +// https://msdn.microsoft.com/en-us/library/vstudio/4ak0bf5d(v=vs.100).aspx +FORCE_INLINE __m128i _mm_cmplt_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vcltq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compares the 16 signed 8-bit integers in a and the 16 signed 8-bit integers +// in b for lesser than. +// https://msdn.microsoft.com/en-us/library/windows/desktop/9s46csht(v=vs.90).aspx +FORCE_INLINE __m128i _mm_cmplt_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vcltq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for less-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_pd +FORCE_INLINE __m128d _mm_cmplt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64( + vcltq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) < (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = (*(double *) &a1) < (*(double *) &b1) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for less-than, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmplt_sd +FORCE_INLINE __m128d _mm_cmplt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_cmplt_pd(a, b)); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) < (*(double *) &b0) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_pd +FORCE_INLINE __m128d _mm_cmpneq_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_s32(vmvnq_s32(vreinterpretq_s32_u64( + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))))); +#else + // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) + uint32x4_t cmp = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); + uint32x4_t swapped = vrev64q_u32(cmp); + return vreinterpretq_m128d_u32(vmvnq_u32(vandq_u32(cmp, swapped))); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-equal, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpneq_sd +FORCE_INLINE __m128d _mm_cmpneq_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpneq_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-greater-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_pd +FORCE_INLINE __m128d _mm_cmpnge_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64(veorq_u64( + vcgeq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = + !((*(double *) &a0) >= (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = + !((*(double *) &a1) >= (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-greater-than-or-equal, store the result in the lower element of +// dst, and copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnge_sd +FORCE_INLINE __m128d _mm_cmpnge_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpnge_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-greater-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_cmpngt_pd +FORCE_INLINE __m128d _mm_cmpngt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64(veorq_u64( + vcgtq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = + !((*(double *) &a0) > (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = + !((*(double *) &a1) > (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-greater-than, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpngt_sd +FORCE_INLINE __m128d _mm_cmpngt_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpngt_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-less-than-or-equal, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_pd +FORCE_INLINE __m128d _mm_cmpnle_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64(veorq_u64( + vcleq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = + !((*(double *) &a0) <= (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = + !((*(double *) &a1) <= (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-less-than-or-equal, store the result in the lower element of dst, +// and copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnle_sd +FORCE_INLINE __m128d _mm_cmpnle_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpnle_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// for not-less-than, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_pd +FORCE_INLINE __m128d _mm_cmpnlt_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_u64(veorq_u64( + vcltq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)), + vdupq_n_u64(UINT64_MAX))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = + !((*(double *) &a0) < (*(double *) &b0)) ? ~UINT64_C(0) : UINT64_C(0); + d[1] = + !((*(double *) &a1) < (*(double *) &b1)) ? ~UINT64_C(0) : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b for not-less-than, store the result in the lower element of dst, and copy +// the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpnlt_sd +FORCE_INLINE __m128d _mm_cmpnlt_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_cmpnlt_pd(a, b)); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// to see if neither is NaN, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_pd +FORCE_INLINE __m128d _mm_cmpord_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + // Excluding NaNs, any two floating point numbers can be compared. + uint64x2_t not_nan_a = + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(a)); + uint64x2_t not_nan_b = + vceqq_f64(vreinterpretq_f64_m128d(b), vreinterpretq_f64_m128d(b)); + return vreinterpretq_m128d_u64(vandq_u64(not_nan_a, not_nan_b)); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = ((*(double *) &a0) == (*(double *) &a0) && + (*(double *) &b0) == (*(double *) &b0)) + ? ~UINT64_C(0) + : UINT64_C(0); + d[1] = ((*(double *) &a1) == (*(double *) &a1) && + (*(double *) &b1) == (*(double *) &b1)) + ? ~UINT64_C(0) + : UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b to see if neither is NaN, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpord_sd +FORCE_INLINE __m128d _mm_cmpord_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_cmpord_pd(a, b)); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t d[2]; + d[0] = ((*(double *) &a0) == (*(double *) &a0) && + (*(double *) &b0) == (*(double *) &b0)) + ? ~UINT64_C(0) + : UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b +// to see if either is NaN, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_pd +FORCE_INLINE __m128d _mm_cmpunord_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + // Two NaNs are not equal in comparison operation. + uint64x2_t not_nan_a = + vceqq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(a)); + uint64x2_t not_nan_b = + vceqq_f64(vreinterpretq_f64_m128d(b), vreinterpretq_f64_m128d(b)); + return vreinterpretq_m128d_s32( + vmvnq_s32(vreinterpretq_s32_u64(vandq_u64(not_nan_a, not_nan_b)))); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = ((*(double *) &a0) == (*(double *) &a0) && + (*(double *) &b0) == (*(double *) &b0)) + ? UINT64_C(0) + : ~UINT64_C(0); + d[1] = ((*(double *) &a1) == (*(double *) &a1) && + (*(double *) &b1) == (*(double *) &b1)) + ? UINT64_C(0) + : ~UINT64_C(0); + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b to see if either is NaN, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpunord_sd +FORCE_INLINE __m128d _mm_cmpunord_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_cmpunord_pd(a, b)); +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t d[2]; + d[0] = ((*(double *) &a0) == (*(double *) &a0) && + (*(double *) &b0) == (*(double *) &b0)) + ? UINT64_C(0) + : ~UINT64_C(0); + d[1] = a1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for greater-than-or-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comige_sd +FORCE_INLINE int _mm_comige_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vgetq_lane_u64(vcgeq_f64(a, b), 0) & 0x1; +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + + return (*(double *) &a0 >= *(double *) &b0); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for greater-than, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comigt_sd +FORCE_INLINE int _mm_comigt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vgetq_lane_u64(vcgtq_f64(a, b), 0) & 0x1; +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + + return (*(double *) &a0 > *(double *) &b0); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for less-than-or-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comile_sd +FORCE_INLINE int _mm_comile_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vgetq_lane_u64(vcleq_f64(a, b), 0) & 0x1; +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + + return (*(double *) &a0 <= *(double *) &b0); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for less-than, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comilt_sd +FORCE_INLINE int _mm_comilt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vgetq_lane_u64(vcltq_f64(a, b), 0) & 0x1; +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + + return (*(double *) &a0 < *(double *) &b0); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for equality, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comieq_sd +FORCE_INLINE int _mm_comieq_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vgetq_lane_u64(vceqq_f64(a, b), 0) & 0x1; +#else + uint32x4_t a_not_nan = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(a)); + uint32x4_t b_not_nan = + vceqq_u32(vreinterpretq_u32_m128d(b), vreinterpretq_u32_m128d(b)); + uint32x4_t a_and_b_not_nan = vandq_u32(a_not_nan, b_not_nan); + uint32x4_t a_eq_b = + vceqq_u32(vreinterpretq_u32_m128d(a), vreinterpretq_u32_m128d(b)); + uint64x2_t and_results = vandq_u64(vreinterpretq_u64_u32(a_and_b_not_nan), + vreinterpretq_u64_u32(a_eq_b)); + return vgetq_lane_u64(and_results, 0) & 0x1; +#endif +} + +// Compare the lower double-precision (64-bit) floating-point element in a and b +// for not-equal, and return the boolean result (0 or 1). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_comineq_sd +FORCE_INLINE int _mm_comineq_sd(__m128d a, __m128d b) +{ + return !_mm_comieq_sd(a, b); +} + +// Convert packed signed 32-bit integers in a to packed double-precision +// (64-bit) floating-point elements, and store the results in dst. +// +// FOR j := 0 to 1 +// i := j*32 +// m := j*64 +// dst[m+63:m] := Convert_Int32_To_FP64(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepi32_pd +FORCE_INLINE __m128d _mm_cvtepi32_pd(__m128i a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vcvtq_f64_s64(vmovl_s32(vget_low_s32(vreinterpretq_s32_m128i(a))))); +#else + double a0 = (double) vgetq_lane_s32(vreinterpretq_s32_m128i(a), 0); + double a1 = (double) vgetq_lane_s32(vreinterpretq_s32_m128i(a), 1); + return _mm_set_pd(a1, a0); +#endif +} + +// Converts the four signed 32-bit integer values of a to single-precision, +// floating-point values +// https://msdn.microsoft.com/en-us/library/vstudio/36bwxcx5(v=vs.100).aspx +FORCE_INLINE __m128 _mm_cvtepi32_ps(__m128i a) +{ + return vreinterpretq_m128_f32(vcvtq_f32_s32(vreinterpretq_s32_m128i(a))); +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// +// FOR j := 0 to 1 +// i := 32*j +// k := 64*j +// dst[i+31:i] := Convert_FP64_To_Int32(a[k+63:k]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_epi32 +FORCE_INLINE __m128i _mm_cvtpd_epi32(__m128d a) +{ +// vrnd32xq_f64 not supported on clang +#if defined(__ARM_FEATURE_FRINT) && !defined(__clang__) + float64x2_t rounded = vrnd32xq_f64(vreinterpretq_f64_m128d(a)); + int64x2_t integers = vcvtq_s64_f64(rounded); + return vreinterpretq_m128i_s32( + vcombine_s32(vmovn_s64(integers), vdup_n_s32(0))); +#else + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double d0 = ((double *) &rnd)[0]; + double d1 = ((double *) &rnd)[1]; + return _mm_set_epi32(0, 0, (int32_t) d1, (int32_t) d0); +#endif +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers, and store the results in dst. +// +// FOR j := 0 to 1 +// i := 32*j +// k := 64*j +// dst[i+31:i] := Convert_FP64_To_Int32(a[k+63:k]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_pi32 +FORCE_INLINE __m64 _mm_cvtpd_pi32(__m128d a) +{ + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double d0 = ((double *) &rnd)[0]; + double d1 = ((double *) &rnd)[1]; + int32_t ALIGN_STRUCT(16) data[2] = {(int32_t) d0, (int32_t) d1}; + return vreinterpret_m64_s32(vld1_s32(data)); +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed single-precision (32-bit) floating-point elements, and store the +// results in dst. +// +// FOR j := 0 to 1 +// i := 32*j +// k := 64*j +// dst[i+31:i] := Convert_FP64_To_FP32(a[k+64:k]) +// ENDFOR +// dst[127:64] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpd_ps +FORCE_INLINE __m128 _mm_cvtpd_ps(__m128d a) +{ +#if defined(__aarch64__) + float32x2_t tmp = vcvt_f32_f64(vreinterpretq_f64_m128d(a)); + return vreinterpretq_m128_f32(vcombine_f32(tmp, vdup_n_f32(0))); +#else + float a0 = (float) ((double *) &a)[0]; + float a1 = (float) ((double *) &a)[1]; + return _mm_set_ps(0, 0, a1, a0); +#endif +} + +// Convert packed signed 32-bit integers in a to packed double-precision +// (64-bit) floating-point elements, and store the results in dst. +// +// FOR j := 0 to 1 +// i := j*32 +// m := j*64 +// dst[m+63:m] := Convert_Int32_To_FP64(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtpi32_pd +FORCE_INLINE __m128d _mm_cvtpi32_pd(__m64 a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vcvtq_f64_s64(vmovl_s32(vreinterpret_s32_m64(a)))); +#else + double a0 = (double) vget_lane_s32(vreinterpret_s32_m64(a), 0); + double a1 = (double) vget_lane_s32(vreinterpret_s32_m64(a), 1); + return _mm_set_pd(a1, a0); +#endif +} + +// Converts the four single-precision, floating-point values of a to signed +// 32-bit integer values. +// +// r0 := (int) a0 +// r1 := (int) a1 +// r2 := (int) a2 +// r3 := (int) a3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/xdc42k5e(v=vs.100).aspx +// *NOTE*. The default rounding mode on SSE is 'round to even', which ARMv7-A +// does not support! It is supported on ARMv8-A however. +FORCE_INLINE __m128i _mm_cvtps_epi32(__m128 a) +{ +#if defined(__ARM_FEATURE_FRINT) + return vreinterpretq_m128i_s32(vcvtq_s32_f32(vrnd32xq_f32(a))); +#elif defined(__aarch64__) || defined(__ARM_FEATURE_DIRECTED_ROUNDING) + switch (_MM_GET_ROUNDING_MODE()) { + case _MM_ROUND_NEAREST: + return vreinterpretq_m128i_s32(vcvtnq_s32_f32(a)); + case _MM_ROUND_DOWN: + return vreinterpretq_m128i_s32(vcvtmq_s32_f32(a)); + case _MM_ROUND_UP: + return vreinterpretq_m128i_s32(vcvtpq_s32_f32(a)); + default: // _MM_ROUND_TOWARD_ZERO + return vreinterpretq_m128i_s32(vcvtq_s32_f32(a)); + } +#else + float *f = (float *) &a; + switch (_MM_GET_ROUNDING_MODE()) { + case _MM_ROUND_NEAREST: { + uint32x4_t signmask = vdupq_n_u32(0x80000000); + float32x4_t half = vbslq_f32(signmask, vreinterpretq_f32_m128(a), + vdupq_n_f32(0.5f)); /* +/- 0.5 */ + int32x4_t r_normal = vcvtq_s32_f32(vaddq_f32( + vreinterpretq_f32_m128(a), half)); /* round to integer: [a + 0.5]*/ + int32x4_t r_trunc = vcvtq_s32_f32( + vreinterpretq_f32_m128(a)); /* truncate to integer: [a] */ + int32x4_t plusone = vreinterpretq_s32_u32(vshrq_n_u32( + vreinterpretq_u32_s32(vnegq_s32(r_trunc)), 31)); /* 1 or 0 */ + int32x4_t r_even = vbicq_s32(vaddq_s32(r_trunc, plusone), + vdupq_n_s32(1)); /* ([a] + {0,1}) & ~1 */ + float32x4_t delta = vsubq_f32( + vreinterpretq_f32_m128(a), + vcvtq_f32_s32(r_trunc)); /* compute delta: delta = (a - [a]) */ + uint32x4_t is_delta_half = + vceqq_f32(delta, half); /* delta == +/- 0.5 */ + return vreinterpretq_m128i_s32( + vbslq_s32(is_delta_half, r_even, r_normal)); + } + case _MM_ROUND_DOWN: + return _mm_set_epi32(floorf(f[3]), floorf(f[2]), floorf(f[1]), + floorf(f[0])); + case _MM_ROUND_UP: + return _mm_set_epi32(ceilf(f[3]), ceilf(f[2]), ceilf(f[1]), + ceilf(f[0])); + default: // _MM_ROUND_TOWARD_ZERO + return _mm_set_epi32((int32_t) f[3], (int32_t) f[2], (int32_t) f[1], + (int32_t) f[0]); + } +#endif +} + +// Convert packed single-precision (32-bit) floating-point elements in a to +// packed double-precision (64-bit) floating-point elements, and store the +// results in dst. +// +// FOR j := 0 to 1 +// i := 64*j +// k := 32*j +// dst[i+63:i] := Convert_FP32_To_FP64(a[k+31:k]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtps_pd +FORCE_INLINE __m128d _mm_cvtps_pd(__m128 a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vcvt_f64_f32(vget_low_f32(vreinterpretq_f32_m128(a)))); +#else + double a0 = (double) vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + double a1 = (double) vgetq_lane_f32(vreinterpretq_f32_m128(a), 1); + return _mm_set_pd(a1, a0); +#endif +} + +// Copy the lower double-precision (64-bit) floating-point element of a to dst. +// +// dst[63:0] := a[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_f64 +FORCE_INLINE double _mm_cvtsd_f64(__m128d a) +{ +#if defined(__aarch64__) + return (double) vgetq_lane_f64(vreinterpretq_f64_m128d(a), 0); +#else + return ((double *) &a)[0]; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 32-bit integer, and store the result in dst. +// +// dst[31:0] := Convert_FP64_To_Int32(a[63:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si32 +FORCE_INLINE int32_t _mm_cvtsd_si32(__m128d a) +{ +#if defined(__aarch64__) + return (int32_t) vgetq_lane_f64(vrndiq_f64(vreinterpretq_f64_m128d(a)), 0); +#else + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double ret = ((double *) &rnd)[0]; + return (int32_t) ret; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer, and store the result in dst. +// +// dst[63:0] := Convert_FP64_To_Int64(a[63:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si64 +FORCE_INLINE int64_t _mm_cvtsd_si64(__m128d a) +{ +#if defined(__aarch64__) + return (int64_t) vgetq_lane_f64(vrndiq_f64(vreinterpretq_f64_m128d(a)), 0); +#else + __m128d rnd = _mm_round_pd(a, _MM_FROUND_CUR_DIRECTION); + double ret = ((double *) &rnd)[0]; + return (int64_t) ret; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer, and store the result in dst. +// +// dst[63:0] := Convert_FP64_To_Int64(a[63:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_si64x +#define _mm_cvtsd_si64x _mm_cvtsd_si64 + +// Convert the lower double-precision (64-bit) floating-point element in b to a +// single-precision (32-bit) floating-point element, store the result in the +// lower element of dst, and copy the upper 3 packed elements from a to the +// upper elements of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsd_ss +FORCE_INLINE __m128 _mm_cvtsd_ss(__m128 a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128_f32(vsetq_lane_f32( + vget_lane_f32(vcvt_f32_f64(vreinterpretq_f64_m128d(b)), 0), + vreinterpretq_f32_m128(a), 0)); +#else + return vreinterpretq_m128_f32(vsetq_lane_f32((float) ((double *) &b)[0], + vreinterpretq_f32_m128(a), 0)); +#endif +} + +// Copy the lower 32-bit integer in a to dst. +// +// dst[31:0] := a[31:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si32 +FORCE_INLINE int _mm_cvtsi128_si32(__m128i a) +{ + return vgetq_lane_s32(vreinterpretq_s32_m128i(a), 0); +} + +// Copy the lower 64-bit integer in a to dst. +// +// dst[63:0] := a[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64 +FORCE_INLINE int64_t _mm_cvtsi128_si64(__m128i a) +{ + return vgetq_lane_s64(vreinterpretq_s64_m128i(a), 0); +} + +// Copy the lower 64-bit integer in a to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64x +#define _mm_cvtsi128_si64x(a) _mm_cvtsi128_si64(a) + +// Convert the signed 32-bit integer b to a double-precision (64-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi32_sd +FORCE_INLINE __m128d _mm_cvtsi32_sd(__m128d a, int32_t b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vsetq_lane_f64((double) b, vreinterpretq_f64_m128d(a), 0)); +#else + double bf = (double) b; + return vreinterpretq_m128d_s64( + vsetq_lane_s64(*(int64_t *) &bf, vreinterpretq_s64_m128d(a), 0)); +#endif +} + +// Copy the lower 64-bit integer in a to dst. +// +// dst[63:0] := a[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi128_si64x +#define _mm_cvtsi128_si64x(a) _mm_cvtsi128_si64(a) + +// Moves 32-bit integer a to the least significant 32 bits of an __m128 object, +// zero extending the upper bits. +// +// r0 := a +// r1 := 0x0 +// r2 := 0x0 +// r3 := 0x0 +// +// https://msdn.microsoft.com/en-us/library/ct3539ha%28v=vs.90%29.aspx +FORCE_INLINE __m128i _mm_cvtsi32_si128(int a) +{ + return vreinterpretq_m128i_s32(vsetq_lane_s32(a, vdupq_n_s32(0), 0)); +} + +// Convert the signed 64-bit integer b to a double-precision (64-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64_sd +FORCE_INLINE __m128d _mm_cvtsi64_sd(__m128d a, int64_t b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vsetq_lane_f64((double) b, vreinterpretq_f64_m128d(a), 0)); +#else + double bf = (double) b; + return vreinterpretq_m128d_s64( + vsetq_lane_s64(*(int64_t *) &bf, vreinterpretq_s64_m128d(a), 0)); +#endif +} + +// Moves 64-bit integer a to the least significant 64 bits of an __m128 object, +// zero extending the upper bits. +// +// r0 := a +// r1 := 0x0 +FORCE_INLINE __m128i _mm_cvtsi64_si128(int64_t a) +{ + return vreinterpretq_m128i_s64(vsetq_lane_s64(a, vdupq_n_s64(0), 0)); +} + +// Copy 64-bit integer a to the lower element of dst, and zero the upper +// element. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64x_si128 +#define _mm_cvtsi64x_si128(a) _mm_cvtsi64_si128(a) + +// Convert the signed 64-bit integer b to a double-precision (64-bit) +// floating-point element, store the result in the lower element of dst, and +// copy the upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtsi64x_sd +#define _mm_cvtsi64x_sd(a, b) _mm_cvtsi64_sd(a, b) + +// Convert the lower single-precision (32-bit) floating-point element in b to a +// double-precision (64-bit) floating-point element, store the result in the +// lower element of dst, and copy the upper element from a to the upper element +// of dst. +// +// dst[63:0] := Convert_FP32_To_FP64(b[31:0]) +// dst[127:64] := a[127:64] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtss_sd +FORCE_INLINE __m128d _mm_cvtss_sd(__m128d a, __m128 b) +{ + double d = (double) vgetq_lane_f32(vreinterpretq_f32_m128(b), 0); +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vsetq_lane_f64(d, vreinterpretq_f64_m128d(a), 0)); +#else + return vreinterpretq_m128d_s64( + vsetq_lane_s64(*(int64_t *) &d, vreinterpretq_s64_m128d(a), 0)); +#endif +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttpd_epi32 +FORCE_INLINE __m128i _mm_cvttpd_epi32(__m128d a) +{ + double a0 = ((double *) &a)[0]; + double a1 = ((double *) &a)[1]; + return _mm_set_epi32(0, 0, (int32_t) a1, (int32_t) a0); +} + +// Convert packed double-precision (64-bit) floating-point elements in a to +// packed 32-bit integers with truncation, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttpd_pi32 +FORCE_INLINE __m64 _mm_cvttpd_pi32(__m128d a) +{ + double a0 = ((double *) &a)[0]; + double a1 = ((double *) &a)[1]; + int32_t ALIGN_STRUCT(16) data[2] = {(int32_t) a0, (int32_t) a1}; + return vreinterpret_m64_s32(vld1_s32(data)); +} + +// Converts the four single-precision, floating-point values of a to signed +// 32-bit integer values using truncate. +// https://msdn.microsoft.com/en-us/library/vstudio/1h005y6x(v=vs.100).aspx +FORCE_INLINE __m128i _mm_cvttps_epi32(__m128 a) +{ + return vreinterpretq_m128i_s32(vcvtq_s32_f32(vreinterpretq_f32_m128(a))); +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 32-bit integer with truncation, and store the result in dst. +// +// dst[63:0] := Convert_FP64_To_Int32_Truncate(a[63:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si32 +FORCE_INLINE int32_t _mm_cvttsd_si32(__m128d a) +{ + double ret = *((double *) &a); + return (int32_t) ret; +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer with truncation, and store the result in dst. +// +// dst[63:0] := Convert_FP64_To_Int64_Truncate(a[63:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si64 +FORCE_INLINE int64_t _mm_cvttsd_si64(__m128d a) +{ +#if defined(__aarch64__) + return vgetq_lane_s64(vcvtq_s64_f64(vreinterpretq_f64_m128d(a)), 0); +#else + double ret = *((double *) &a); + return (int64_t) ret; +#endif +} + +// Convert the lower double-precision (64-bit) floating-point element in a to a +// 64-bit integer with truncation, and store the result in dst. +// +// dst[63:0] := Convert_FP64_To_Int64_Truncate(a[63:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvttsd_si64x +#define _mm_cvttsd_si64x(a) _mm_cvttsd_si64(a) + +// Divide packed double-precision (64-bit) floating-point elements in a by +// packed elements in b, and store the results in dst. +// +// FOR j := 0 to 1 +// i := 64*j +// dst[i+63:i] := a[i+63:i] / b[i+63:i] +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_pd +FORCE_INLINE __m128d _mm_div_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vdivq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[2]; + c[0] = da[0] / db[0]; + c[1] = da[1] / db[1]; + return vld1q_f32((float32_t *) c); +#endif +} + +// Divide the lower double-precision (64-bit) floating-point element in a by the +// lower double-precision (64-bit) floating-point element in b, store the result +// in the lower element of dst, and copy the upper element from a to the upper +// element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_div_sd +FORCE_INLINE __m128d _mm_div_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + float64x2_t tmp = + vdivq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b)); + return vreinterpretq_m128d_f64( + vsetq_lane_f64(vgetq_lane_f64(vreinterpretq_f64_m128d(a), 1), tmp, 1)); +#else + return _mm_move_sd(a, _mm_div_pd(a, b)); +#endif +} + +// Extracts the selected signed or unsigned 16-bit integer from a and zero +// extends. +// https://msdn.microsoft.com/en-us/library/6dceta0c(v=vs.100).aspx +// FORCE_INLINE int _mm_extract_epi16(__m128i a, __constrange(0,8) int imm) +#define _mm_extract_epi16(a, imm) \ + vgetq_lane_u16(vreinterpretq_u16_m128i(a), (imm)) + +// Inserts the least significant 16 bits of b into the selected 16-bit integer +// of a. +// https://msdn.microsoft.com/en-us/library/kaze8hz1%28v=vs.100%29.aspx +// FORCE_INLINE __m128i _mm_insert_epi16(__m128i a, int b, +// __constrange(0,8) int imm) +#define _mm_insert_epi16(a, b, imm) \ + __extension__({ \ + vreinterpretq_m128i_s16( \ + vsetq_lane_s16((b), vreinterpretq_s16_m128i(a), (imm))); \ + }) + +// Loads two double-precision from 16-byte aligned memory, floating-point +// values. +// +// dst[127:0] := MEM[mem_addr+127:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_pd +FORCE_INLINE __m128d _mm_load_pd(const double *p) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vld1q_f64(p)); +#else + const float *fp = (const float *) p; + float ALIGN_STRUCT(16) data[4] = {fp[0], fp[1], fp[2], fp[3]}; + return vreinterpretq_m128d_f32(vld1q_f32(data)); +#endif +} + +// Load a double-precision (64-bit) floating-point element from memory into both +// elements of dst. +// +// dst[63:0] := MEM[mem_addr+63:mem_addr] +// dst[127:64] := MEM[mem_addr+63:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_pd1 +#define _mm_load_pd1 _mm_load1_pd + +// Load a double-precision (64-bit) floating-point element from memory into the +// lower of dst, and zero the upper element. mem_addr does not need to be +// aligned on any particular boundary. +// +// dst[63:0] := MEM[mem_addr+63:mem_addr] +// dst[127:64] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load_sd +FORCE_INLINE __m128d _mm_load_sd(const double *p) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vsetq_lane_f64(*p, vdupq_n_f64(0), 0)); +#else + const float *fp = (const float *) p; + float ALIGN_STRUCT(16) data[4] = {fp[0], fp[1], 0, 0}; + return vreinterpretq_m128d_f32(vld1q_f32(data)); +#endif +} + +// Loads 128-bit value. : +// https://msdn.microsoft.com/en-us/library/atzzad1h(v=vs.80).aspx +FORCE_INLINE __m128i _mm_load_si128(const __m128i *p) +{ + return vreinterpretq_m128i_s32(vld1q_s32((const int32_t *) p)); +} + +// Load a double-precision (64-bit) floating-point element from memory into both +// elements of dst. +// +// dst[63:0] := MEM[mem_addr+63:mem_addr] +// dst[127:64] := MEM[mem_addr+63:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_load1_pd +FORCE_INLINE __m128d _mm_load1_pd(const double *p) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vld1q_dup_f64(p)); +#else + return vreinterpretq_m128d_s64(vdupq_n_s64(*(const int64_t *) p)); +#endif +} + +// Load a double-precision (64-bit) floating-point element from memory into the +// upper element of dst, and copy the lower element from a to dst. mem_addr does +// not need to be aligned on any particular boundary. +// +// dst[63:0] := a[63:0] +// dst[127:64] := MEM[mem_addr+63:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadh_pd +FORCE_INLINE __m128d _mm_loadh_pd(__m128d a, const double *p) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vcombine_f64(vget_low_f64(vreinterpretq_f64_m128d(a)), vld1_f64(p))); +#else + return vreinterpretq_m128d_f32(vcombine_f32( + vget_low_f32(vreinterpretq_f32_m128d(a)), vld1_f32((const float *) p))); +#endif +} + +// Load 64-bit integer from memory into the first element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_epi64 +FORCE_INLINE __m128i _mm_loadl_epi64(__m128i const *p) +{ + /* Load the lower 64 bits of the value pointed to by p into the + * lower 64 bits of the result, zeroing the upper 64 bits of the result. + */ + return vreinterpretq_m128i_s32( + vcombine_s32(vld1_s32((int32_t const *) p), vcreate_s32(0))); +} + +// Load a double-precision (64-bit) floating-point element from memory into the +// lower element of dst, and copy the upper element from a to dst. mem_addr does +// not need to be aligned on any particular boundary. +// +// dst[63:0] := MEM[mem_addr+63:mem_addr] +// dst[127:64] := a[127:64] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadl_pd +FORCE_INLINE __m128d _mm_loadl_pd(__m128d a, const double *p) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vcombine_f64(vld1_f64(p), vget_high_f64(vreinterpretq_f64_m128d(a)))); +#else + return vreinterpretq_m128d_f32( + vcombine_f32(vld1_f32((const float *) p), + vget_high_f32(vreinterpretq_f32_m128d(a)))); +#endif +} + +// Load 2 double-precision (64-bit) floating-point elements from memory into dst +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// +// dst[63:0] := MEM[mem_addr+127:mem_addr+64] +// dst[127:64] := MEM[mem_addr+63:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadr_pd +FORCE_INLINE __m128d _mm_loadr_pd(const double *p) +{ +#if defined(__aarch64__) + float64x2_t v = vld1q_f64(p); + return vreinterpretq_m128d_f64(vextq_f64(v, v, 1)); +#else + int64x2_t v = vld1q_s64((const int64_t *) p); + return vreinterpretq_m128d_s64(vextq_s64(v, v, 1)); +#endif +} + +// Loads two double-precision from unaligned memory, floating-point values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_pd +FORCE_INLINE __m128d _mm_loadu_pd(const double *p) +{ + return _mm_load_pd(p); +} + +// Loads 128-bit value. : +// https://msdn.microsoft.com/zh-cn/library/f4k12ae8(v=vs.90).aspx +FORCE_INLINE __m128i _mm_loadu_si128(const __m128i *p) +{ + return vreinterpretq_m128i_s32(vld1q_s32((const int32_t *) p)); +} + +// Load unaligned 32-bit integer from memory into the first element of dst. +// +// dst[31:0] := MEM[mem_addr+31:mem_addr] +// dst[MAX:32] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loadu_si32 +FORCE_INLINE __m128i _mm_loadu_si32(const void *p) +{ + return vreinterpretq_m128i_s32( + vsetq_lane_s32(*(const int32_t *) p, vdupq_n_s32(0), 0)); +} + +// Multiplies the 8 signed 16-bit integers from a by the 8 signed 16-bit +// integers from b. +// +// r0 := (a0 * b0) + (a1 * b1) +// r1 := (a2 * b2) + (a3 * b3) +// r2 := (a4 * b4) + (a5 * b5) +// r3 := (a6 * b6) + (a7 * b7) +// https://msdn.microsoft.com/en-us/library/yht36sa6(v=vs.90).aspx +FORCE_INLINE __m128i _mm_madd_epi16(__m128i a, __m128i b) +{ + int32x4_t low = vmull_s16(vget_low_s16(vreinterpretq_s16_m128i(a)), + vget_low_s16(vreinterpretq_s16_m128i(b))); +#if defined(__aarch64__) + int32x4_t high = + vmull_high_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b)); + + return vreinterpretq_m128i_s32(vpaddq_s32(low, high)); +#else + int32x4_t high = vmull_s16(vget_high_s16(vreinterpretq_s16_m128i(a)), + vget_high_s16(vreinterpretq_s16_m128i(b))); + + int32x2_t low_sum = vpadd_s32(vget_low_s32(low), vget_high_s32(low)); + int32x2_t high_sum = vpadd_s32(vget_low_s32(high), vget_high_s32(high)); + + return vreinterpretq_m128i_s32(vcombine_s32(low_sum, high_sum)); +#endif +} + +// Conditionally store 8-bit integer elements from a into memory using mask +// (elements are not stored when the highest bit is not set in the corresponding +// element) and a non-temporal memory hint. mem_addr does not need to be aligned +// on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maskmoveu_si128 +FORCE_INLINE void _mm_maskmoveu_si128(__m128i a, __m128i mask, char *mem_addr) +{ + int8x16_t shr_mask = vshrq_n_s8(vreinterpretq_s8_m128i(mask), 7); + __m128 b = _mm_load_ps((const float *) mem_addr); + int8x16_t masked = + vbslq_s8(vreinterpretq_u8_s8(shr_mask), vreinterpretq_s8_m128i(a), + vreinterpretq_s8_m128(b)); + vst1q_s8((int8_t *) mem_addr, masked); +} + +// Computes the pairwise maxima of the 8 signed 16-bit integers from a and the 8 +// signed 16-bit integers from b. +// https://msdn.microsoft.com/en-us/LIBRary/3x060h7c(v=vs.100).aspx +FORCE_INLINE __m128i _mm_max_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vmaxq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Computes the pairwise maxima of the 16 unsigned 8-bit integers from a and the +// 16 unsigned 8-bit integers from b. +// https://msdn.microsoft.com/en-us/library/st6634za(v=vs.100).aspx +FORCE_INLINE __m128i _mm_max_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vmaxq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b, +// and store packed maximum values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_pd +FORCE_INLINE __m128d _mm_max_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) +#if SSE2NEON_PRECISE_MINMAX + float64x2_t _a = vreinterpretq_f64_m128d(a); + float64x2_t _b = vreinterpretq_f64_m128d(b); + return vreinterpretq_m128d_f64(vbslq_f64(vcgtq_f64(_a, _b), _a, _b)); +#else + return vreinterpretq_m128d_f64( + vmaxq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#endif +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) > (*(double *) &b0) ? a0 : b0; + d[1] = (*(double *) &a1) > (*(double *) &b1) ? a1 : b1; + + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b, store the maximum value in the lower element of dst, and copy the upper +// element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_sd +FORCE_INLINE __m128d _mm_max_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_max_pd(a, b)); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[2] = {da[0] > db[0] ? da[0] : db[0], da[1]}; + return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) c)); +#endif +} + +// Computes the pairwise minima of the 8 signed 16-bit integers from a and the 8 +// signed 16-bit integers from b. +// https://msdn.microsoft.com/en-us/library/vstudio/6te997ew(v=vs.100).aspx +FORCE_INLINE __m128i _mm_min_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vminq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Computes the pairwise minima of the 16 unsigned 8-bit integers from a and the +// 16 unsigned 8-bit integers from b. +// https://msdn.microsoft.com/ko-kr/library/17k8cf58(v=vs.100).aspxx +FORCE_INLINE __m128i _mm_min_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vminq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +// Compare packed double-precision (64-bit) floating-point elements in a and b, +// and store packed minimum values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_pd +FORCE_INLINE __m128d _mm_min_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) +#if SSE2NEON_PRECISE_MINMAX + float64x2_t _a = vreinterpretq_f64_m128d(a); + float64x2_t _b = vreinterpretq_f64_m128d(b); + return vreinterpretq_m128d_f64(vbslq_f64(vcltq_f64(_a, _b), _a, _b)); +#else + return vreinterpretq_m128d_f64( + vminq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#endif +#else + uint64_t a0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(a)); + uint64_t a1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(a)); + uint64_t b0 = (uint64_t) vget_low_u64(vreinterpretq_u64_m128d(b)); + uint64_t b1 = (uint64_t) vget_high_u64(vreinterpretq_u64_m128d(b)); + uint64_t d[2]; + d[0] = (*(double *) &a0) < (*(double *) &b0) ? a0 : b0; + d[1] = (*(double *) &a1) < (*(double *) &b1) ? a1 : b1; + return vreinterpretq_m128d_u64(vld1q_u64(d)); +#endif +} + +// Compare the lower double-precision (64-bit) floating-point elements in a and +// b, store the minimum value in the lower element of dst, and copy the upper +// element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_sd +FORCE_INLINE __m128d _mm_min_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_min_pd(a, b)); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[2] = {da[0] < db[0] ? da[0] : db[0], da[1]}; + return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) c)); +#endif +} + +// Copy the lower 64-bit integer in a to the lower element of dst, and zero the +// upper element. +// +// dst[63:0] := a[63:0] +// dst[127:64] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_epi64 +FORCE_INLINE __m128i _mm_move_epi64(__m128i a) +{ + return vreinterpretq_m128i_s64( + vsetq_lane_s64(0, vreinterpretq_s64_m128i(a), 1)); +} + +// Move the lower double-precision (64-bit) floating-point element from b to the +// lower element of dst, and copy the upper element from a to the upper element +// of dst. +// +// dst[63:0] := b[63:0] +// dst[127:64] := a[127:64] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_move_sd +FORCE_INLINE __m128d _mm_move_sd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_f32( + vcombine_f32(vget_low_f32(vreinterpretq_f32_m128d(b)), + vget_high_f32(vreinterpretq_f32_m128d(a)))); +} + +// NEON does not provide a version of this function. +// Creates a 16-bit mask from the most significant bits of the 16 signed or +// unsigned 8-bit integers in a and zero extends the upper bits. +// https://msdn.microsoft.com/en-us/library/vstudio/s090c8fk(v=vs.100).aspx +FORCE_INLINE int _mm_movemask_epi8(__m128i a) +{ + // Use increasingly wide shifts+adds to collect the sign bits + // together. + // Since the widening shifts would be rather confusing to follow in little + // endian, everything will be illustrated in big endian order instead. This + // has a different result - the bits would actually be reversed on a big + // endian machine. + + // Starting input (only half the elements are shown): + // 89 ff 1d c0 00 10 99 33 + uint8x16_t input = vreinterpretq_u8_m128i(a); + + // Shift out everything but the sign bits with an unsigned shift right. + // + // Bytes of the vector:: + // 89 ff 1d c0 00 10 99 33 + // \ \ \ \ \ \ \ \ high_bits = (uint16x4_t)(input >> 7) + // | | | | | | | | + // 01 01 00 01 00 00 01 00 + // + // Bits of first important lane(s): + // 10001001 (89) + // \______ + // | + // 00000001 (01) + uint16x8_t high_bits = vreinterpretq_u16_u8(vshrq_n_u8(input, 7)); + + // Merge the even lanes together with a 16-bit unsigned shift right + add. + // 'xx' represents garbage data which will be ignored in the final result. + // In the important bytes, the add functions like a binary OR. + // + // 01 01 00 01 00 00 01 00 + // \_ | \_ | \_ | \_ | paired16 = (uint32x4_t)(input + (input >> 7)) + // \| \| \| \| + // xx 03 xx 01 xx 00 xx 02 + // + // 00000001 00000001 (01 01) + // \_______ | + // \| + // xxxxxxxx xxxxxx11 (xx 03) + uint32x4_t paired16 = + vreinterpretq_u32_u16(vsraq_n_u16(high_bits, high_bits, 7)); + + // Repeat with a wider 32-bit shift + add. + // xx 03 xx 01 xx 00 xx 02 + // \____ | \____ | paired32 = (uint64x1_t)(paired16 + (paired16 >> + // 14)) + // \| \| + // xx xx xx 0d xx xx xx 02 + // + // 00000011 00000001 (03 01) + // \\_____ || + // '----.\|| + // xxxxxxxx xxxx1101 (xx 0d) + uint64x2_t paired32 = + vreinterpretq_u64_u32(vsraq_n_u32(paired16, paired16, 14)); + + // Last, an even wider 64-bit shift + add to get our result in the low 8 bit + // lanes. xx xx xx 0d xx xx xx 02 + // \_________ | paired64 = (uint8x8_t)(paired32 + (paired32 >> + // 28)) + // \| + // xx xx xx xx xx xx xx d2 + // + // 00001101 00000010 (0d 02) + // \ \___ | | + // '---. \| | + // xxxxxxxx 11010010 (xx d2) + uint8x16_t paired64 = + vreinterpretq_u8_u64(vsraq_n_u64(paired32, paired32, 28)); + + // Extract the low 8 bits from each 64-bit lane with 2 8-bit extracts. + // xx xx xx xx xx xx xx d2 + // || return paired64[0] + // d2 + // Note: Little endian would return the correct value 4b (01001011) instead. + return vgetq_lane_u8(paired64, 0) | ((int) vgetq_lane_u8(paired64, 8) << 8); +} + +// Set each bit of mask dst based on the most significant bit of the +// corresponding packed double-precision (64-bit) floating-point element in a. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movemask_pd +FORCE_INLINE int _mm_movemask_pd(__m128d a) +{ + uint64x2_t input = vreinterpretq_u64_m128d(a); + uint64x2_t high_bits = vshrq_n_u64(input, 63); + return vgetq_lane_u64(high_bits, 0) | (vgetq_lane_u64(high_bits, 1) << 1); +} + +// Copy the lower 64-bit integer in a to dst. +// +// dst[63:0] := a[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movepi64_pi64 +FORCE_INLINE __m64 _mm_movepi64_pi64(__m128i a) +{ + return vreinterpret_m64_s64(vget_low_s64(vreinterpretq_s64_m128i(a))); +} + +// Copy the 64-bit integer a to the lower element of dst, and zero the upper +// element. +// +// dst[63:0] := a[63:0] +// dst[127:64] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movpi64_epi64 +FORCE_INLINE __m128i _mm_movpi64_epi64(__m64 a) +{ + return vreinterpretq_m128i_s64( + vcombine_s64(vreinterpret_s64_m64(a), vdup_n_s64(0))); +} + +// Multiply the low unsigned 32-bit integers from each packed 64-bit element in +// a and b, and store the unsigned 64-bit results in dst. +// +// r0 := (a0 & 0xFFFFFFFF) * (b0 & 0xFFFFFFFF) +// r1 := (a2 & 0xFFFFFFFF) * (b2 & 0xFFFFFFFF) +FORCE_INLINE __m128i _mm_mul_epu32(__m128i a, __m128i b) +{ + // vmull_u32 upcasts instead of masking, so we downcast. + uint32x2_t a_lo = vmovn_u64(vreinterpretq_u64_m128i(a)); + uint32x2_t b_lo = vmovn_u64(vreinterpretq_u64_m128i(b)); + return vreinterpretq_m128i_u64(vmull_u32(a_lo, b_lo)); +} + +// Multiply packed double-precision (64-bit) floating-point elements in a and b, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_pd +FORCE_INLINE __m128d _mm_mul_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vmulq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[2]; + c[0] = da[0] * db[0]; + c[1] = da[1] * db[1]; + return vld1q_f32((float32_t *) c); +#endif +} + +// Multiply the lower double-precision (64-bit) floating-point element in a and +// b, store the result in the lower element of dst, and copy the upper element +// from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_mul_sd +FORCE_INLINE __m128d _mm_mul_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_mul_pd(a, b)); +} + +// Multiply the low unsigned 32-bit integers from a and b, and store the +// unsigned 64-bit result in dst. +// +// dst[63:0] := a[31:0] * b[31:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mul_su32 +FORCE_INLINE __m64 _mm_mul_su32(__m64 a, __m64 b) +{ + return vreinterpret_m64_u64(vget_low_u64( + vmull_u32(vreinterpret_u32_m64(a), vreinterpret_u32_m64(b)))); +} + +// Multiplies the 8 signed 16-bit integers from a by the 8 signed 16-bit +// integers from b. +// +// r0 := (a0 * b0)[31:16] +// r1 := (a1 * b1)[31:16] +// ... +// r7 := (a7 * b7)[31:16] +// +// https://msdn.microsoft.com/en-us/library/vstudio/59hddw1d(v=vs.100).aspx +FORCE_INLINE __m128i _mm_mulhi_epi16(__m128i a, __m128i b) +{ + /* FIXME: issue with large values because of result saturation */ + // int16x8_t ret = vqdmulhq_s16(vreinterpretq_s16_m128i(a), + // vreinterpretq_s16_m128i(b)); /* =2*a*b */ return + // vreinterpretq_m128i_s16(vshrq_n_s16(ret, 1)); + int16x4_t a3210 = vget_low_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b3210 = vget_low_s16(vreinterpretq_s16_m128i(b)); + int32x4_t ab3210 = vmull_s16(a3210, b3210); /* 3333222211110000 */ + int16x4_t a7654 = vget_high_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b7654 = vget_high_s16(vreinterpretq_s16_m128i(b)); + int32x4_t ab7654 = vmull_s16(a7654, b7654); /* 7777666655554444 */ + uint16x8x2_t r = + vuzpq_u16(vreinterpretq_u16_s32(ab3210), vreinterpretq_u16_s32(ab7654)); + return vreinterpretq_m128i_u16(r.val[1]); +} + +// Multiply the packed unsigned 16-bit integers in a and b, producing +// intermediate 32-bit integers, and store the high 16 bits of the intermediate +// integers in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhi_epu16 +FORCE_INLINE __m128i _mm_mulhi_epu16(__m128i a, __m128i b) +{ + uint16x4_t a3210 = vget_low_u16(vreinterpretq_u16_m128i(a)); + uint16x4_t b3210 = vget_low_u16(vreinterpretq_u16_m128i(b)); + uint32x4_t ab3210 = vmull_u16(a3210, b3210); +#if defined(__aarch64__) + uint32x4_t ab7654 = + vmull_high_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b)); + uint16x8_t r = vuzp2q_u16(vreinterpretq_u16_u32(ab3210), + vreinterpretq_u16_u32(ab7654)); + return vreinterpretq_m128i_u16(r); +#else + uint16x4_t a7654 = vget_high_u16(vreinterpretq_u16_m128i(a)); + uint16x4_t b7654 = vget_high_u16(vreinterpretq_u16_m128i(b)); + uint32x4_t ab7654 = vmull_u16(a7654, b7654); + uint16x8x2_t r = + vuzpq_u16(vreinterpretq_u16_u32(ab3210), vreinterpretq_u16_u32(ab7654)); + return vreinterpretq_m128i_u16(r.val[1]); +#endif +} + +// Multiplies the 8 signed or unsigned 16-bit integers from a by the 8 signed or +// unsigned 16-bit integers from b. +// +// r0 := (a0 * b0)[15:0] +// r1 := (a1 * b1)[15:0] +// ... +// r7 := (a7 * b7)[15:0] +// +// https://msdn.microsoft.com/en-us/library/vstudio/9ks1472s(v=vs.100).aspx +FORCE_INLINE __m128i _mm_mullo_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vmulq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Compute the bitwise OR of packed double-precision (64-bit) floating-point +// elements in a and b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_or_pd +FORCE_INLINE __m128d _mm_or_pd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_s64( + vorrq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); +} + +// Computes the bitwise OR of the 128-bit value in a and the 128-bit value in b. +// +// r := a | b +// +// https://msdn.microsoft.com/en-us/library/vstudio/ew8ty0db(v=vs.100).aspx +FORCE_INLINE __m128i _mm_or_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vorrq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Packs the 16 signed 16-bit integers from a and b into 8-bit integers and +// saturates. +// https://msdn.microsoft.com/en-us/library/k4y4f7w5%28v=vs.90%29.aspx +FORCE_INLINE __m128i _mm_packs_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vcombine_s8(vqmovn_s16(vreinterpretq_s16_m128i(a)), + vqmovn_s16(vreinterpretq_s16_m128i(b)))); +} + +// Packs the 8 signed 32-bit integers from a and b into signed 16-bit integers +// and saturates. +// +// r0 := SignedSaturate(a0) +// r1 := SignedSaturate(a1) +// r2 := SignedSaturate(a2) +// r3 := SignedSaturate(a3) +// r4 := SignedSaturate(b0) +// r5 := SignedSaturate(b1) +// r6 := SignedSaturate(b2) +// r7 := SignedSaturate(b3) +// +// https://msdn.microsoft.com/en-us/library/393t56f9%28v=vs.90%29.aspx +FORCE_INLINE __m128i _mm_packs_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vcombine_s16(vqmovn_s32(vreinterpretq_s32_m128i(a)), + vqmovn_s32(vreinterpretq_s32_m128i(b)))); +} + +// Packs the 16 signed 16 - bit integers from a and b into 8 - bit unsigned +// integers and saturates. +// +// r0 := UnsignedSaturate(a0) +// r1 := UnsignedSaturate(a1) +// ... +// r7 := UnsignedSaturate(a7) +// r8 := UnsignedSaturate(b0) +// r9 := UnsignedSaturate(b1) +// ... +// r15 := UnsignedSaturate(b7) +// +// https://msdn.microsoft.com/en-us/library/07ad1wx4(v=vs.100).aspx +FORCE_INLINE __m128i _mm_packus_epi16(const __m128i a, const __m128i b) +{ + return vreinterpretq_m128i_u8( + vcombine_u8(vqmovun_s16(vreinterpretq_s16_m128i(a)), + vqmovun_s16(vreinterpretq_s16_m128i(b)))); +} + +// Pause the processor. This is typically used in spin-wait loops and depending +// on the x86 processor typical values are in the 40-100 cycle range. The +// 'yield' instruction isn't a good fit because it's effectively a nop on most +// Arm cores. Experience with several databases has shown has shown an 'isb' is +// a reasonable approximation. +FORCE_INLINE void _mm_pause() +{ + __asm__ __volatile__("isb\n"); +} + +// Compute the absolute differences of packed unsigned 8-bit integers in a and +// b, then horizontally sum each consecutive 8 differences to produce two +// unsigned 16-bit integers, and pack these unsigned 16-bit integers in the low +// 16 bits of 64-bit elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sad_epu8 +FORCE_INLINE __m128i _mm_sad_epu8(__m128i a, __m128i b) +{ + uint16x8_t t = vpaddlq_u8(vabdq_u8((uint8x16_t) a, (uint8x16_t) b)); + return vreinterpretq_m128i_u64(vpaddlq_u32(vpaddlq_u16(t))); +} + +// Sets the 8 signed 16-bit integer values. +// https://msdn.microsoft.com/en-au/library/3e0fek84(v=vs.90).aspx +FORCE_INLINE __m128i _mm_set_epi16(short i7, + short i6, + short i5, + short i4, + short i3, + short i2, + short i1, + short i0) +{ + int16_t ALIGN_STRUCT(16) data[8] = {i0, i1, i2, i3, i4, i5, i6, i7}; + return vreinterpretq_m128i_s16(vld1q_s16(data)); +} + +// Sets the 4 signed 32-bit integer values. +// https://msdn.microsoft.com/en-us/library/vstudio/019beekt(v=vs.100).aspx +FORCE_INLINE __m128i _mm_set_epi32(int i3, int i2, int i1, int i0) +{ + int32_t ALIGN_STRUCT(16) data[4] = {i0, i1, i2, i3}; + return vreinterpretq_m128i_s32(vld1q_s32(data)); +} + +// Returns the __m128i structure with its two 64-bit integer values +// initialized to the values of the two 64-bit integers passed in. +// https://msdn.microsoft.com/en-us/library/dk2sdw0h(v=vs.120).aspx +FORCE_INLINE __m128i _mm_set_epi64(__m64 i1, __m64 i2) +{ + return _mm_set_epi64x((int64_t) i1, (int64_t) i2); +} + +// Returns the __m128i structure with its two 64-bit integer values +// initialized to the values of the two 64-bit integers passed in. +// https://msdn.microsoft.com/en-us/library/dk2sdw0h(v=vs.120).aspx +FORCE_INLINE __m128i _mm_set_epi64x(int64_t i1, int64_t i2) +{ + return vreinterpretq_m128i_s64( + vcombine_s64(vcreate_s64(i2), vcreate_s64(i1))); +} + +// Sets the 16 signed 8-bit integer values. +// https://msdn.microsoft.com/en-us/library/x0cx8zd3(v=vs.90).aspx +FORCE_INLINE __m128i _mm_set_epi8(signed char b15, + signed char b14, + signed char b13, + signed char b12, + signed char b11, + signed char b10, + signed char b9, + signed char b8, + signed char b7, + signed char b6, + signed char b5, + signed char b4, + signed char b3, + signed char b2, + signed char b1, + signed char b0) +{ + int8_t ALIGN_STRUCT(16) + data[16] = {(int8_t) b0, (int8_t) b1, (int8_t) b2, (int8_t) b3, + (int8_t) b4, (int8_t) b5, (int8_t) b6, (int8_t) b7, + (int8_t) b8, (int8_t) b9, (int8_t) b10, (int8_t) b11, + (int8_t) b12, (int8_t) b13, (int8_t) b14, (int8_t) b15}; + return (__m128i) vld1q_s8(data); +} + +// Set packed double-precision (64-bit) floating-point elements in dst with the +// supplied values. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_pd +FORCE_INLINE __m128d _mm_set_pd(double e1, double e0) +{ + double ALIGN_STRUCT(16) data[2] = {e0, e1}; +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vld1q_f64((float64_t *) data)); +#else + return vreinterpretq_m128d_f32(vld1q_f32((float32_t *) data)); +#endif +} + +// Broadcast double-precision (64-bit) floating-point value a to all elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_pd1 +#define _mm_set_pd1 _mm_set1_pd + +// Copy double-precision (64-bit) floating-point element a to the lower element +// of dst, and zero the upper element. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set_sd +FORCE_INLINE __m128d _mm_set_sd(double a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vsetq_lane_f64(a, vdupq_n_f64(0), 0)); +#else + return _mm_set_pd(0, a); +#endif +} + +// Sets the 8 signed 16-bit integer values to w. +// +// r0 := w +// r1 := w +// ... +// r7 := w +// +// https://msdn.microsoft.com/en-us/library/k0ya3x0e(v=vs.90).aspx +FORCE_INLINE __m128i _mm_set1_epi16(short w) +{ + return vreinterpretq_m128i_s16(vdupq_n_s16(w)); +} + +// Sets the 4 signed 32-bit integer values to i. +// +// r0 := i +// r1 := i +// r2 := i +// r3 := I +// +// https://msdn.microsoft.com/en-us/library/vstudio/h4xscxat(v=vs.100).aspx +FORCE_INLINE __m128i _mm_set1_epi32(int _i) +{ + return vreinterpretq_m128i_s32(vdupq_n_s32(_i)); +} + +// Sets the 2 signed 64-bit integer values to i. +// https://docs.microsoft.com/en-us/previous-versions/visualstudio/visual-studio-2010/whtfzhzk(v=vs.100) +FORCE_INLINE __m128i _mm_set1_epi64(__m64 _i) +{ + return vreinterpretq_m128i_s64(vdupq_n_s64((int64_t) _i)); +} + +// Sets the 2 signed 64-bit integer values to i. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_epi64x +FORCE_INLINE __m128i _mm_set1_epi64x(int64_t _i) +{ + return vreinterpretq_m128i_s64(vdupq_n_s64(_i)); +} + +// Sets the 16 signed 8-bit integer values to b. +// +// r0 := b +// r1 := b +// ... +// r15 := b +// +// https://msdn.microsoft.com/en-us/library/6e14xhyf(v=vs.100).aspx +FORCE_INLINE __m128i _mm_set1_epi8(signed char w) +{ + return vreinterpretq_m128i_s8(vdupq_n_s8(w)); +} + +// Broadcast double-precision (64-bit) floating-point value a to all elements of +// dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_set1_pd +FORCE_INLINE __m128d _mm_set1_pd(double d) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vdupq_n_f64(d)); +#else + return vreinterpretq_m128d_s64(vdupq_n_s64(*(int64_t *) &d)); +#endif +} + +// Sets the 8 signed 16-bit integer values in reverse order. +// +// Return Value +// r0 := w0 +// r1 := w1 +// ... +// r7 := w7 +FORCE_INLINE __m128i _mm_setr_epi16(short w0, + short w1, + short w2, + short w3, + short w4, + short w5, + short w6, + short w7) +{ + int16_t ALIGN_STRUCT(16) data[8] = {w0, w1, w2, w3, w4, w5, w6, w7}; + return vreinterpretq_m128i_s16(vld1q_s16((int16_t *) data)); +} + +// Sets the 4 signed 32-bit integer values in reverse order +// https://technet.microsoft.com/en-us/library/security/27yb3ee5(v=vs.90).aspx +FORCE_INLINE __m128i _mm_setr_epi32(int i3, int i2, int i1, int i0) +{ + int32_t ALIGN_STRUCT(16) data[4] = {i3, i2, i1, i0}; + return vreinterpretq_m128i_s32(vld1q_s32(data)); +} + +// Set packed 64-bit integers in dst with the supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_epi64 +FORCE_INLINE __m128i _mm_setr_epi64(__m64 e1, __m64 e0) +{ + return vreinterpretq_m128i_s64(vcombine_s64(e1, e0)); +} + +// Sets the 16 signed 8-bit integer values in reverse order. +// https://msdn.microsoft.com/en-us/library/2khb9c7k(v=vs.90).aspx +FORCE_INLINE __m128i _mm_setr_epi8(signed char b0, + signed char b1, + signed char b2, + signed char b3, + signed char b4, + signed char b5, + signed char b6, + signed char b7, + signed char b8, + signed char b9, + signed char b10, + signed char b11, + signed char b12, + signed char b13, + signed char b14, + signed char b15) +{ + int8_t ALIGN_STRUCT(16) + data[16] = {(int8_t) b0, (int8_t) b1, (int8_t) b2, (int8_t) b3, + (int8_t) b4, (int8_t) b5, (int8_t) b6, (int8_t) b7, + (int8_t) b8, (int8_t) b9, (int8_t) b10, (int8_t) b11, + (int8_t) b12, (int8_t) b13, (int8_t) b14, (int8_t) b15}; + return (__m128i) vld1q_s8(data); +} + +// Set packed double-precision (64-bit) floating-point elements in dst with the +// supplied values in reverse order. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setr_pd +FORCE_INLINE __m128d _mm_setr_pd(double e1, double e0) +{ + return _mm_set_pd(e0, e1); +} + +// Return vector of type __m128d with all elements set to zero. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_setzero_pd +FORCE_INLINE __m128d _mm_setzero_pd(void) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vdupq_n_f64(0)); +#else + return vreinterpretq_m128d_f32(vdupq_n_f32(0)); +#endif +} + +// Sets the 128-bit value to zero +// https://msdn.microsoft.com/en-us/library/vstudio/ys7dw0kh(v=vs.100).aspx +FORCE_INLINE __m128i _mm_setzero_si128(void) +{ + return vreinterpretq_m128i_s32(vdupq_n_s32(0)); +} + +// Shuffles the 4 signed or unsigned 32-bit integers in a as specified by imm. +// https://msdn.microsoft.com/en-us/library/56f67xbk%28v=vs.90%29.aspx +// FORCE_INLINE __m128i _mm_shuffle_epi32(__m128i a, +// __constrange(0,255) int imm) +#ifdef _sse2neon_shuffle +#define _mm_shuffle_epi32(a, imm) \ + __extension__({ \ + int32x4_t _input = vreinterpretq_s32_m128i(a); \ + int32x4_t _shuf = \ + vshuffleq_s32(_input, _input, (imm) & (0x3), ((imm) >> 2) & 0x3, \ + ((imm) >> 4) & 0x3, ((imm) >> 6) & 0x3); \ + vreinterpretq_m128i_s32(_shuf); \ + }) +#else // generic +#define _mm_shuffle_epi32(a, imm) \ + __extension__({ \ + __m128i ret; \ + switch (imm) { \ + case _MM_SHUFFLE(1, 0, 3, 2): \ + ret = _mm_shuffle_epi_1032((a)); \ + break; \ + case _MM_SHUFFLE(2, 3, 0, 1): \ + ret = _mm_shuffle_epi_2301((a)); \ + break; \ + case _MM_SHUFFLE(0, 3, 2, 1): \ + ret = _mm_shuffle_epi_0321((a)); \ + break; \ + case _MM_SHUFFLE(2, 1, 0, 3): \ + ret = _mm_shuffle_epi_2103((a)); \ + break; \ + case _MM_SHUFFLE(1, 0, 1, 0): \ + ret = _mm_shuffle_epi_1010((a)); \ + break; \ + case _MM_SHUFFLE(1, 0, 0, 1): \ + ret = _mm_shuffle_epi_1001((a)); \ + break; \ + case _MM_SHUFFLE(0, 1, 0, 1): \ + ret = _mm_shuffle_epi_0101((a)); \ + break; \ + case _MM_SHUFFLE(2, 2, 1, 1): \ + ret = _mm_shuffle_epi_2211((a)); \ + break; \ + case _MM_SHUFFLE(0, 1, 2, 2): \ + ret = _mm_shuffle_epi_0122((a)); \ + break; \ + case _MM_SHUFFLE(3, 3, 3, 2): \ + ret = _mm_shuffle_epi_3332((a)); \ + break; \ + case _MM_SHUFFLE(0, 0, 0, 0): \ + ret = _mm_shuffle_epi32_splat((a), 0); \ + break; \ + case _MM_SHUFFLE(1, 1, 1, 1): \ + ret = _mm_shuffle_epi32_splat((a), 1); \ + break; \ + case _MM_SHUFFLE(2, 2, 2, 2): \ + ret = _mm_shuffle_epi32_splat((a), 2); \ + break; \ + case _MM_SHUFFLE(3, 3, 3, 3): \ + ret = _mm_shuffle_epi32_splat((a), 3); \ + break; \ + default: \ + ret = _mm_shuffle_epi32_default((a), (imm)); \ + break; \ + } \ + ret; \ + }) +#endif + +// Shuffle double-precision (64-bit) floating-point elements using the control +// in imm8, and store the results in dst. +// +// dst[63:0] := (imm8[0] == 0) ? a[63:0] : a[127:64] +// dst[127:64] := (imm8[1] == 0) ? b[63:0] : b[127:64] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pd +#ifdef _sse2neon_shuffle +#define _mm_shuffle_pd(a, b, imm8) \ + vreinterpretq_m128d_s64( \ + vshuffleq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b), \ + imm8 & 0x1, ((imm8 & 0x2) >> 1) + 2)) +#else +#define _mm_shuffle_pd(a, b, imm8) \ + _mm_castsi128_pd(_mm_set_epi64x( \ + vgetq_lane_s64(vreinterpretq_s64_m128d(b), (imm8 & 0x2) >> 1), \ + vgetq_lane_s64(vreinterpretq_s64_m128d(a), imm8 & 0x1))) +#endif + +// FORCE_INLINE __m128i _mm_shufflehi_epi16(__m128i a, +// __constrange(0,255) int imm) +#ifdef _sse2neon_shuffle +#define _mm_shufflehi_epi16(a, imm) \ + __extension__({ \ + int16x8_t _input = vreinterpretq_s16_m128i(a); \ + int16x8_t _shuf = \ + vshuffleq_s16(_input, _input, 0, 1, 2, 3, ((imm) & (0x3)) + 4, \ + (((imm) >> 2) & 0x3) + 4, (((imm) >> 4) & 0x3) + 4, \ + (((imm) >> 6) & 0x3) + 4); \ + vreinterpretq_m128i_s16(_shuf); \ + }) +#else // generic +#define _mm_shufflehi_epi16(a, imm) _mm_shufflehi_epi16_function((a), (imm)) +#endif + +// FORCE_INLINE __m128i _mm_shufflelo_epi16(__m128i a, +// __constrange(0,255) int imm) +#ifdef _sse2neon_shuffle +#define _mm_shufflelo_epi16(a, imm) \ + __extension__({ \ + int16x8_t _input = vreinterpretq_s16_m128i(a); \ + int16x8_t _shuf = vshuffleq_s16( \ + _input, _input, ((imm) & (0x3)), (((imm) >> 2) & 0x3), \ + (((imm) >> 4) & 0x3), (((imm) >> 6) & 0x3), 4, 5, 6, 7); \ + vreinterpretq_m128i_s16(_shuf); \ + }) +#else // generic +#define _mm_shufflelo_epi16(a, imm) _mm_shufflelo_epi16_function((a), (imm)) +#endif + +// Shift packed 16-bit integers in a left by count while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// IF count[63:0] > 15 +// dst[i+15:i] := 0 +// ELSE +// dst[i+15:i] := ZeroExtend16(a[i+15:i] << count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi16 +FORCE_INLINE __m128i _mm_sll_epi16(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~15)) + return _mm_setzero_si128(); + + int16x8_t vc = vdupq_n_s16((int16_t) c); + return vreinterpretq_m128i_s16(vshlq_s16(vreinterpretq_s16_m128i(a), vc)); +} + +// Shift packed 32-bit integers in a left by count while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 3 +// i := j*32 +// IF count[63:0] > 31 +// dst[i+31:i] := 0 +// ELSE +// dst[i+31:i] := ZeroExtend32(a[i+31:i] << count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi32 +FORCE_INLINE __m128i _mm_sll_epi32(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~31)) + return _mm_setzero_si128(); + + int32x4_t vc = vdupq_n_s32((int32_t) c); + return vreinterpretq_m128i_s32(vshlq_s32(vreinterpretq_s32_m128i(a), vc)); +} + +// Shift packed 64-bit integers in a left by count while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// IF count[63:0] > 63 +// dst[i+63:i] := 0 +// ELSE +// dst[i+63:i] := ZeroExtend64(a[i+63:i] << count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sll_epi64 +FORCE_INLINE __m128i _mm_sll_epi64(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~63)) + return _mm_setzero_si128(); + + int64x2_t vc = vdupq_n_s64((int64_t) c); + return vreinterpretq_m128i_s64(vshlq_s64(vreinterpretq_s64_m128i(a), vc)); +} + +// Shift packed 16-bit integers in a left by imm8 while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// IF imm8[7:0] > 15 +// dst[i+15:i] := 0 +// ELSE +// dst[i+15:i] := ZeroExtend16(a[i+15:i] << imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi16 +FORCE_INLINE __m128i _mm_slli_epi16(__m128i a, int imm) +{ + if (_sse2neon_unlikely(imm & ~15)) + return _mm_setzero_si128(); + return vreinterpretq_m128i_s16( + vshlq_s16(vreinterpretq_s16_m128i(a), vdupq_n_s16(imm))); +} + +// Shift packed 32-bit integers in a left by imm8 while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 3 +// i := j*32 +// IF imm8[7:0] > 31 +// dst[i+31:i] := 0 +// ELSE +// dst[i+31:i] := ZeroExtend32(a[i+31:i] << imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi32 +FORCE_INLINE __m128i _mm_slli_epi32(__m128i a, int imm) +{ + if (_sse2neon_unlikely(imm & ~31)) + return _mm_setzero_si128(); + return vreinterpretq_m128i_s32( + vshlq_s32(vreinterpretq_s32_m128i(a), vdupq_n_s32(imm))); +} + +// Shift packed 64-bit integers in a left by imm8 while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// IF imm8[7:0] > 63 +// dst[i+63:i] := 0 +// ELSE +// dst[i+63:i] := ZeroExtend64(a[i+63:i] << imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_epi64 +FORCE_INLINE __m128i _mm_slli_epi64(__m128i a, int imm) +{ + if (_sse2neon_unlikely(imm & ~63)) + return _mm_setzero_si128(); + return vreinterpretq_m128i_s64( + vshlq_s64(vreinterpretq_s64_m128i(a), vdupq_n_s64(imm))); +} + +// Shift a left by imm8 bytes while shifting in zeros, and store the results in +// dst. +// +// tmp := imm8[7:0] +// IF tmp > 15 +// tmp := 16 +// FI +// dst[127:0] := a[127:0] << (tmp*8) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_slli_si128 +#define _mm_slli_si128(a, imm) \ + __extension__({ \ + int8x16_t ret; \ + if (_sse2neon_unlikely(imm == 0)) \ + ret = vreinterpretq_s8_m128i(a); \ + else if (_sse2neon_unlikely((imm) & ~15)) \ + ret = vdupq_n_s8(0); \ + else \ + ret = vextq_s8(vdupq_n_s8(0), vreinterpretq_s8_m128i(a), \ + ((imm <= 0 || imm > 15) ? 0 : (16 - imm))); \ + vreinterpretq_m128i_s8(ret); \ + }) + +// Compute the square root of packed double-precision (64-bit) floating-point +// elements in a, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_pd +FORCE_INLINE __m128d _mm_sqrt_pd(__m128d a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vsqrtq_f64(vreinterpretq_f64_m128d(a))); +#else + double a0 = sqrt(((double *) &a)[0]); + double a1 = sqrt(((double *) &a)[1]); + return _mm_set_pd(a1, a0); +#endif +} + +// Compute the square root of the lower double-precision (64-bit) floating-point +// element in b, store the result in the lower element of dst, and copy the +// upper element from a to the upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sqrt_sd +FORCE_INLINE __m128d _mm_sqrt_sd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return _mm_move_sd(a, _mm_sqrt_pd(b)); +#else + return _mm_set_pd(((double *) &a)[1], sqrt(((double *) &b)[0])); +#endif +} + +// Shift packed 16-bit integers in a right by count while shifting in sign bits, +// and store the results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// IF count[63:0] > 15 +// dst[i+15:i] := (a[i+15] ? 0xFFFF : 0x0) +// ELSE +// dst[i+15:i] := SignExtend16(a[i+15:i] >> count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sra_epi16 +FORCE_INLINE __m128i _mm_sra_epi16(__m128i a, __m128i count) +{ + int64_t c = (int64_t) vget_low_s64((int64x2_t) count); + if (_sse2neon_unlikely(c & ~15)) + return _mm_cmplt_epi16(a, _mm_setzero_si128()); + return vreinterpretq_m128i_s16(vshlq_s16((int16x8_t) a, vdupq_n_s16(-c))); +} + +// Shift packed 32-bit integers in a right by count while shifting in sign bits, +// and store the results in dst. +// +// FOR j := 0 to 3 +// i := j*32 +// IF count[63:0] > 31 +// dst[i+31:i] := (a[i+31] ? 0xFFFFFFFF : 0x0) +// ELSE +// dst[i+31:i] := SignExtend32(a[i+31:i] >> count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sra_epi32 +FORCE_INLINE __m128i _mm_sra_epi32(__m128i a, __m128i count) +{ + int64_t c = (int64_t) vget_low_s64((int64x2_t) count); + if (_sse2neon_unlikely(c & ~31)) + return _mm_cmplt_epi32(a, _mm_setzero_si128()); + return vreinterpretq_m128i_s32(vshlq_s32((int32x4_t) a, vdupq_n_s32(-c))); +} + +// Shift packed 16-bit integers in a right by imm8 while shifting in sign +// bits, and store the results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// IF imm8[7:0] > 15 +// dst[i+15:i] := (a[i+15] ? 0xFFFF : 0x0) +// ELSE +// dst[i+15:i] := SignExtend16(a[i+15:i] >> imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srai_epi16 +FORCE_INLINE __m128i _mm_srai_epi16(__m128i a, int imm) +{ + const int count = (imm & ~15) ? 15 : imm; + return (__m128i) vshlq_s16((int16x8_t) a, vdupq_n_s16(-count)); +} + +// Shift packed 32-bit integers in a right by imm8 while shifting in sign bits, +// and store the results in dst. +// +// FOR j := 0 to 3 +// i := j*32 +// IF imm8[7:0] > 31 +// dst[i+31:i] := (a[i+31] ? 0xFFFFFFFF : 0x0) +// ELSE +// dst[i+31:i] := SignExtend32(a[i+31:i] >> imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srai_epi32 +// FORCE_INLINE __m128i _mm_srai_epi32(__m128i a, __constrange(0,255) int imm) +#define _mm_srai_epi32(a, imm) \ + __extension__({ \ + __m128i ret; \ + if (_sse2neon_unlikely((imm) == 0)) { \ + ret = a; \ + } else if (_sse2neon_likely(0 < (imm) && (imm) < 32)) { \ + ret = vreinterpretq_m128i_s32( \ + vshlq_s32(vreinterpretq_s32_m128i(a), vdupq_n_s32(-(imm)))); \ + } else { \ + ret = vreinterpretq_m128i_s32( \ + vshrq_n_s32(vreinterpretq_s32_m128i(a), 31)); \ + } \ + ret; \ + }) + +// Shift packed 16-bit integers in a right by count while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// IF count[63:0] > 15 +// dst[i+15:i] := 0 +// ELSE +// dst[i+15:i] := ZeroExtend16(a[i+15:i] >> count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi16 +FORCE_INLINE __m128i _mm_srl_epi16(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~15)) + return _mm_setzero_si128(); + + int16x8_t vc = vdupq_n_s16(-(int16_t) c); + return vreinterpretq_m128i_u16(vshlq_u16(vreinterpretq_u16_m128i(a), vc)); +} + +// Shift packed 32-bit integers in a right by count while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 3 +// i := j*32 +// IF count[63:0] > 31 +// dst[i+31:i] := 0 +// ELSE +// dst[i+31:i] := ZeroExtend32(a[i+31:i] >> count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi32 +FORCE_INLINE __m128i _mm_srl_epi32(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~31)) + return _mm_setzero_si128(); + + int32x4_t vc = vdupq_n_s32(-(int32_t) c); + return vreinterpretq_m128i_u32(vshlq_u32(vreinterpretq_u32_m128i(a), vc)); +} + +// Shift packed 64-bit integers in a right by count while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// IF count[63:0] > 63 +// dst[i+63:i] := 0 +// ELSE +// dst[i+63:i] := ZeroExtend64(a[i+63:i] >> count[63:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srl_epi64 +FORCE_INLINE __m128i _mm_srl_epi64(__m128i a, __m128i count) +{ + uint64_t c = vreinterpretq_nth_u64_m128i(count, 0); + if (_sse2neon_unlikely(c & ~63)) + return _mm_setzero_si128(); + + int64x2_t vc = vdupq_n_s64(-(int64_t) c); + return vreinterpretq_m128i_u64(vshlq_u64(vreinterpretq_u64_m128i(a), vc)); +} + +// Shift packed 16-bit integers in a right by imm8 while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// IF imm8[7:0] > 15 +// dst[i+15:i] := 0 +// ELSE +// dst[i+15:i] := ZeroExtend16(a[i+15:i] >> imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi16 +#define _mm_srli_epi16(a, imm) \ + __extension__({ \ + __m128i ret; \ + if (_sse2neon_unlikely((imm) & ~15)) { \ + ret = _mm_setzero_si128(); \ + } else { \ + ret = vreinterpretq_m128i_u16( \ + vshlq_u16(vreinterpretq_u16_m128i(a), vdupq_n_s16(-(imm)))); \ + } \ + ret; \ + }) + +// Shift packed 32-bit integers in a right by imm8 while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 3 +// i := j*32 +// IF imm8[7:0] > 31 +// dst[i+31:i] := 0 +// ELSE +// dst[i+31:i] := ZeroExtend32(a[i+31:i] >> imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi32 +// FORCE_INLINE __m128i _mm_srli_epi32(__m128i a, __constrange(0,255) int imm) +#define _mm_srli_epi32(a, imm) \ + __extension__({ \ + __m128i ret; \ + if (_sse2neon_unlikely((imm) & ~31)) { \ + ret = _mm_setzero_si128(); \ + } else { \ + ret = vreinterpretq_m128i_u32( \ + vshlq_u32(vreinterpretq_u32_m128i(a), vdupq_n_s32(-(imm)))); \ + } \ + ret; \ + }) + +// Shift packed 64-bit integers in a right by imm8 while shifting in zeros, and +// store the results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// IF imm8[7:0] > 63 +// dst[i+63:i] := 0 +// ELSE +// dst[i+63:i] := ZeroExtend64(a[i+63:i] >> imm8[7:0]) +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_epi64 +#define _mm_srli_epi64(a, imm) \ + __extension__({ \ + __m128i ret; \ + if (_sse2neon_unlikely((imm) & ~63)) { \ + ret = _mm_setzero_si128(); \ + } else { \ + ret = vreinterpretq_m128i_u64( \ + vshlq_u64(vreinterpretq_u64_m128i(a), vdupq_n_s64(-(imm)))); \ + } \ + ret; \ + }) + +// Shift a right by imm8 bytes while shifting in zeros, and store the results in +// dst. +// +// tmp := imm8[7:0] +// IF tmp > 15 +// tmp := 16 +// FI +// dst[127:0] := a[127:0] >> (tmp*8) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_srli_si128 +#define _mm_srli_si128(a, imm) \ + __extension__({ \ + int8x16_t ret; \ + if (_sse2neon_unlikely((imm) & ~15)) \ + ret = vdupq_n_s8(0); \ + else \ + ret = vextq_s8(vreinterpretq_s8_m128i(a), vdupq_n_s8(0), \ + (imm > 15 ? 0 : imm)); \ + vreinterpretq_m128i_s8(ret); \ + }) + +// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point +// elements) from a into memory. mem_addr must be aligned on a 16-byte boundary +// or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_pd +FORCE_INLINE void _mm_store_pd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) + vst1q_f64((float64_t *) mem_addr, vreinterpretq_f64_m128d(a)); +#else + vst1q_f32((float32_t *) mem_addr, vreinterpretq_f32_m128d(a)); +#endif +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// 2 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_store_pd1 +FORCE_INLINE void _mm_store_pd1(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) + float64x1_t a_low = vget_low_f64(vreinterpretq_f64_m128d(a)); + vst1q_f64((float64_t *) mem_addr, + vreinterpretq_f64_m128d(vcombine_f64(a_low, a_low))); +#else + float32x2_t a_low = vget_low_f32(vreinterpretq_f32_m128d(a)); + vst1q_f32((float32_t *) mem_addr, + vreinterpretq_f32_m128d(vcombine_f32(a_low, a_low))); +#endif +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// memory. mem_addr does not need to be aligned on any particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_store_sd +FORCE_INLINE void _mm_store_sd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) + vst1_f64((float64_t *) mem_addr, vget_low_f64(vreinterpretq_f64_m128d(a))); +#else + vst1_u64((uint64_t *) mem_addr, vget_low_u64(vreinterpretq_u64_m128d(a))); +#endif +} + +// Stores four 32-bit integer values as (as a __m128i value) at the address p. +// https://msdn.microsoft.com/en-us/library/vstudio/edk11s13(v=vs.100).aspx +FORCE_INLINE void _mm_store_si128(__m128i *p, __m128i a) +{ + vst1q_s32((int32_t *) p, vreinterpretq_s32_m128i(a)); +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// 2 contiguous elements in memory. mem_addr must be aligned on a 16-byte +// boundary or a general-protection exception may be generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#expand=9,526,5601&text=_mm_store1_pd +#define _mm_store1_pd _mm_store_pd1 + +// Store the upper double-precision (64-bit) floating-point element from a into +// memory. +// +// MEM[mem_addr+63:mem_addr] := a[127:64] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeh_pd +FORCE_INLINE void _mm_storeh_pd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) + vst1_f64((float64_t *) mem_addr, vget_high_f64(vreinterpretq_f64_m128d(a))); +#else + vst1_f32((float32_t *) mem_addr, vget_high_f32(vreinterpretq_f32_m128d(a))); +#endif +} + +// Reads the lower 64 bits of b and stores them into the lower 64 bits of a. +// https://msdn.microsoft.com/en-us/library/hhwf428f%28v=vs.90%29.aspx +FORCE_INLINE void _mm_storel_epi64(__m128i *a, __m128i b) +{ + vst1_u64((uint64_t *) a, vget_low_u64(vreinterpretq_u64_m128i(b))); +} + +// Store the lower double-precision (64-bit) floating-point element from a into +// memory. +// +// MEM[mem_addr+63:mem_addr] := a[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storel_pd +FORCE_INLINE void _mm_storel_pd(double *mem_addr, __m128d a) +{ +#if defined(__aarch64__) + vst1_f64((float64_t *) mem_addr, vget_low_f64(vreinterpretq_f64_m128d(a))); +#else + vst1_f32((float32_t *) mem_addr, vget_low_f32(vreinterpretq_f32_m128d(a))); +#endif +} + +// Store 2 double-precision (64-bit) floating-point elements from a into memory +// in reverse order. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// +// MEM[mem_addr+63:mem_addr] := a[127:64] +// MEM[mem_addr+127:mem_addr+64] := a[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storer_pd +FORCE_INLINE void _mm_storer_pd(double *mem_addr, __m128d a) +{ + float32x4_t f = vreinterpretq_f32_m128d(a); + _mm_store_pd(mem_addr, vreinterpretq_m128d_f32(vextq_f32(f, f, 2))); +} + +// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point +// elements) from a into memory. mem_addr does not need to be aligned on any +// particular boundary. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_pd +FORCE_INLINE void _mm_storeu_pd(double *mem_addr, __m128d a) +{ + _mm_store_pd(mem_addr, a); +} + +// Stores 128-bits of integer data a at the address p. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si128 +FORCE_INLINE void _mm_storeu_si128(__m128i *p, __m128i a) +{ + vst1q_s32((int32_t *) p, vreinterpretq_s32_m128i(a)); +} + +// Stores 32-bits of integer data a at the address p. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_storeu_si32 +FORCE_INLINE void _mm_storeu_si32(void *p, __m128i a) +{ + vst1q_lane_s32((int32_t *) p, vreinterpretq_s32_m128i(a), 0); +} + +// Store 128-bits (composed of 2 packed double-precision (64-bit) floating-point +// elements) from a into memory using a non-temporal memory hint. mem_addr must +// be aligned on a 16-byte boundary or a general-protection exception may be +// generated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_pd +FORCE_INLINE void _mm_stream_pd(double *p, __m128d a) +{ +#if __has_builtin(__builtin_nontemporal_store) + __builtin_nontemporal_store(a, (float32x4_t *) p); +#elif defined(__aarch64__) + vst1q_f64(p, vreinterpretq_f64_m128d(a)); +#else + vst1q_s64((int64_t *) p, vreinterpretq_s64_m128d(a)); +#endif +} + +// Stores the data in a to the address p without polluting the caches. If the +// cache line containing address p is already in the cache, the cache will be +// updated. +// https://msdn.microsoft.com/en-us/library/ba08y07y%28v=vs.90%29.aspx +FORCE_INLINE void _mm_stream_si128(__m128i *p, __m128i a) +{ +#if __has_builtin(__builtin_nontemporal_store) + __builtin_nontemporal_store(a, p); +#else + vst1q_s64((int64_t *) p, vreinterpretq_s64_m128i(a)); +#endif +} + +// Store 32-bit integer a into memory using a non-temporal hint to minimize +// cache pollution. If the cache line containing address mem_addr is already in +// the cache, the cache will be updated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si32 +FORCE_INLINE void _mm_stream_si32(int *p, int a) +{ + vst1q_lane_s32((int32_t *) p, vdupq_n_s32(a), 0); +} + +// Store 64-bit integer a into memory using a non-temporal hint to minimize +// cache pollution. If the cache line containing address mem_addr is already in +// the cache, the cache will be updated. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_si64 +FORCE_INLINE void _mm_stream_si64(__int64 *p, __int64 a) +{ + vst1_s64((int64_t *) p, vdup_n_s64((int64_t) a)); +} + +// Subtract packed 16-bit integers in b from packed 16-bit integers in a, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi16 +FORCE_INLINE __m128i _mm_sub_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vsubq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Subtracts the 4 signed or unsigned 32-bit integers of b from the 4 signed or +// unsigned 32-bit integers of a. +// +// r0 := a0 - b0 +// r1 := a1 - b1 +// r2 := a2 - b2 +// r3 := a3 - b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/fhh866h0(v=vs.100).aspx +FORCE_INLINE __m128i _mm_sub_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vsubq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Subtract 2 packed 64-bit integers in b from 2 packed 64-bit integers in a, +// and store the results in dst. +// r0 := a0 - b0 +// r1 := a1 - b1 +FORCE_INLINE __m128i _mm_sub_epi64(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s64( + vsubq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +} + +// Subtract packed 8-bit integers in b from packed 8-bit integers in a, and +// store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_epi8 +FORCE_INLINE __m128i _mm_sub_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vsubq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Subtract packed double-precision (64-bit) floating-point elements in b from +// packed double-precision (64-bit) floating-point elements in a, and store the +// results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// dst[i+63:i] := a[i+63:i] - b[i+63:i] +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_sub_pd +FORCE_INLINE __m128d _mm_sub_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vsubq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[2]; + c[0] = da[0] - db[0]; + c[1] = da[1] - db[1]; + return vld1q_f32((float32_t *) c); +#endif +} + +// Subtract the lower double-precision (64-bit) floating-point element in b from +// the lower double-precision (64-bit) floating-point element in a, store the +// result in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_sd +FORCE_INLINE __m128d _mm_sub_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_sub_pd(a, b)); +} + +// Subtract 64-bit integer b from 64-bit integer a, and store the result in dst. +// +// dst[63:0] := a[63:0] - b[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sub_si64 +FORCE_INLINE __m64 _mm_sub_si64(__m64 a, __m64 b) +{ + return vreinterpret_m64_s64( + vsub_s64(vreinterpret_s64_m64(a), vreinterpret_s64_m64(b))); +} + +// Subtracts the 8 signed 16-bit integers of b from the 8 signed 16-bit integers +// of a and saturates. +// +// r0 := SignedSaturate(a0 - b0) +// r1 := SignedSaturate(a1 - b1) +// ... +// r7 := SignedSaturate(a7 - b7) +// +// https://technet.microsoft.com/en-us/subscriptions/3247z5b8(v=vs.90) +FORCE_INLINE __m128i _mm_subs_epi16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s16( + vqsubq_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +} + +// Subtracts the 16 signed 8-bit integers of b from the 16 signed 8-bit integers +// of a and saturates. +// +// r0 := SignedSaturate(a0 - b0) +// r1 := SignedSaturate(a1 - b1) +// ... +// r15 := SignedSaturate(a15 - b15) +// +// https://technet.microsoft.com/en-us/subscriptions/by7kzks1(v=vs.90) +FORCE_INLINE __m128i _mm_subs_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vqsubq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Subtracts the 8 unsigned 16-bit integers of bfrom the 8 unsigned 16-bit +// integers of a and saturates.. +// https://technet.microsoft.com/en-us/subscriptions/index/f44y0s19(v=vs.90).aspx +FORCE_INLINE __m128i _mm_subs_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vqsubq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Subtracts the 16 unsigned 8-bit integers of b from the 16 unsigned 8-bit +// integers of a and saturates. +// +// r0 := UnsignedSaturate(a0 - b0) +// r1 := UnsignedSaturate(a1 - b1) +// ... +// r15 := UnsignedSaturate(a15 - b15) +// +// https://technet.microsoft.com/en-us/subscriptions/yadkxc18(v=vs.90) +FORCE_INLINE __m128i _mm_subs_epu8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vqsubq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b))); +} + +#define _mm_ucomieq_sd _mm_comieq_sd +#define _mm_ucomige_sd _mm_comige_sd +#define _mm_ucomigt_sd _mm_comigt_sd +#define _mm_ucomile_sd _mm_comile_sd +#define _mm_ucomilt_sd _mm_comilt_sd +#define _mm_ucomineq_sd _mm_comineq_sd + +// Return vector of type __m128d with undefined elements. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_undefined_pd +FORCE_INLINE __m128d _mm_undefined_pd(void) +{ +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wuninitialized" +#endif + __m128d a; + return a; +#if defined(__GNUC__) || defined(__clang__) +#pragma GCC diagnostic pop +#endif +} + +// Interleaves the upper 4 signed or unsigned 16-bit integers in a with the +// upper 4 signed or unsigned 16-bit integers in b. +// +// r0 := a4 +// r1 := b4 +// r2 := a5 +// r3 := b5 +// r4 := a6 +// r5 := b6 +// r6 := a7 +// r7 := b7 +// +// https://msdn.microsoft.com/en-us/library/03196cz7(v=vs.100).aspx +FORCE_INLINE __m128i _mm_unpackhi_epi16(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_s16( + vzip2q_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +#else + int16x4_t a1 = vget_high_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b1 = vget_high_s16(vreinterpretq_s16_m128i(b)); + int16x4x2_t result = vzip_s16(a1, b1); + return vreinterpretq_m128i_s16(vcombine_s16(result.val[0], result.val[1])); +#endif +} + +// Interleaves the upper 2 signed or unsigned 32-bit integers in a with the +// upper 2 signed or unsigned 32-bit integers in b. +// https://msdn.microsoft.com/en-us/library/65sa7cbs(v=vs.100).aspx +FORCE_INLINE __m128i _mm_unpackhi_epi32(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_s32( + vzip2q_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +#else + int32x2_t a1 = vget_high_s32(vreinterpretq_s32_m128i(a)); + int32x2_t b1 = vget_high_s32(vreinterpretq_s32_m128i(b)); + int32x2x2_t result = vzip_s32(a1, b1); + return vreinterpretq_m128i_s32(vcombine_s32(result.val[0], result.val[1])); +#endif +} + +// Interleaves the upper signed or unsigned 64-bit integer in a with the +// upper signed or unsigned 64-bit integer in b. +// +// r0 := a1 +// r1 := b1 +FORCE_INLINE __m128i _mm_unpackhi_epi64(__m128i a, __m128i b) +{ + int64x1_t a_h = vget_high_s64(vreinterpretq_s64_m128i(a)); + int64x1_t b_h = vget_high_s64(vreinterpretq_s64_m128i(b)); + return vreinterpretq_m128i_s64(vcombine_s64(a_h, b_h)); +} + +// Interleaves the upper 8 signed or unsigned 8-bit integers in a with the upper +// 8 signed or unsigned 8-bit integers in b. +// +// r0 := a8 +// r1 := b8 +// r2 := a9 +// r3 := b9 +// ... +// r14 := a15 +// r15 := b15 +// +// https://msdn.microsoft.com/en-us/library/t5h7783k(v=vs.100).aspx +FORCE_INLINE __m128i _mm_unpackhi_epi8(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_s8( + vzip2q_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +#else + int8x8_t a1 = + vreinterpret_s8_s16(vget_high_s16(vreinterpretq_s16_m128i(a))); + int8x8_t b1 = + vreinterpret_s8_s16(vget_high_s16(vreinterpretq_s16_m128i(b))); + int8x8x2_t result = vzip_s8(a1, b1); + return vreinterpretq_m128i_s8(vcombine_s8(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave double-precision (64-bit) floating-point elements from +// the high half of a and b, and store the results in dst. +// +// DEFINE INTERLEAVE_HIGH_QWORDS(src1[127:0], src2[127:0]) { +// dst[63:0] := src1[127:64] +// dst[127:64] := src2[127:64] +// RETURN dst[127:0] +// } +// dst[127:0] := INTERLEAVE_HIGH_QWORDS(a[127:0], b[127:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpackhi_pd +FORCE_INLINE __m128d _mm_unpackhi_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vzip2q_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + return vreinterpretq_m128d_s64( + vcombine_s64(vget_high_s64(vreinterpretq_s64_m128d(a)), + vget_high_s64(vreinterpretq_s64_m128d(b)))); +#endif +} + +// Interleaves the lower 4 signed or unsigned 16-bit integers in a with the +// lower 4 signed or unsigned 16-bit integers in b. +// +// r0 := a0 +// r1 := b0 +// r2 := a1 +// r3 := b1 +// r4 := a2 +// r5 := b2 +// r6 := a3 +// r7 := b3 +// +// https://msdn.microsoft.com/en-us/library/btxb17bw%28v=vs.90%29.aspx +FORCE_INLINE __m128i _mm_unpacklo_epi16(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_s16( + vzip1q_s16(vreinterpretq_s16_m128i(a), vreinterpretq_s16_m128i(b))); +#else + int16x4_t a1 = vget_low_s16(vreinterpretq_s16_m128i(a)); + int16x4_t b1 = vget_low_s16(vreinterpretq_s16_m128i(b)); + int16x4x2_t result = vzip_s16(a1, b1); + return vreinterpretq_m128i_s16(vcombine_s16(result.val[0], result.val[1])); +#endif +} + +// Interleaves the lower 2 signed or unsigned 32 - bit integers in a with the +// lower 2 signed or unsigned 32 - bit integers in b. +// +// r0 := a0 +// r1 := b0 +// r2 := a1 +// r3 := b1 +// +// https://msdn.microsoft.com/en-us/library/x8atst9d(v=vs.100).aspx +FORCE_INLINE __m128i _mm_unpacklo_epi32(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_s32( + vzip1q_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +#else + int32x2_t a1 = vget_low_s32(vreinterpretq_s32_m128i(a)); + int32x2_t b1 = vget_low_s32(vreinterpretq_s32_m128i(b)); + int32x2x2_t result = vzip_s32(a1, b1); + return vreinterpretq_m128i_s32(vcombine_s32(result.val[0], result.val[1])); +#endif +} + +FORCE_INLINE __m128i _mm_unpacklo_epi64(__m128i a, __m128i b) +{ + int64x1_t a_l = vget_low_s64(vreinterpretq_s64_m128i(a)); + int64x1_t b_l = vget_low_s64(vreinterpretq_s64_m128i(b)); + return vreinterpretq_m128i_s64(vcombine_s64(a_l, b_l)); +} + +// Interleaves the lower 8 signed or unsigned 8-bit integers in a with the lower +// 8 signed or unsigned 8-bit integers in b. +// +// r0 := a0 +// r1 := b0 +// r2 := a1 +// r3 := b1 +// ... +// r14 := a7 +// r15 := b7 +// +// https://msdn.microsoft.com/en-us/library/xf7k860c%28v=vs.90%29.aspx +FORCE_INLINE __m128i _mm_unpacklo_epi8(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_s8( + vzip1q_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +#else + int8x8_t a1 = vreinterpret_s8_s16(vget_low_s16(vreinterpretq_s16_m128i(a))); + int8x8_t b1 = vreinterpret_s8_s16(vget_low_s16(vreinterpretq_s16_m128i(b))); + int8x8x2_t result = vzip_s8(a1, b1); + return vreinterpretq_m128i_s8(vcombine_s8(result.val[0], result.val[1])); +#endif +} + +// Unpack and interleave double-precision (64-bit) floating-point elements from +// the low half of a and b, and store the results in dst. +// +// DEFINE INTERLEAVE_QWORDS(src1[127:0], src2[127:0]) { +// dst[63:0] := src1[63:0] +// dst[127:64] := src2[63:0] +// RETURN dst[127:0] +// } +// dst[127:0] := INTERLEAVE_QWORDS(a[127:0], b[127:0]) +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_unpacklo_pd +FORCE_INLINE __m128d _mm_unpacklo_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vzip1q_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + return vreinterpretq_m128d_s64( + vcombine_s64(vget_low_s64(vreinterpretq_s64_m128d(a)), + vget_low_s64(vreinterpretq_s64_m128d(b)))); +#endif +} + +// Compute the bitwise XOR of packed double-precision (64-bit) floating-point +// elements in a and b, and store the results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// dst[i+63:i] := a[i+63:i] XOR b[i+63:i] +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_xor_pd +FORCE_INLINE __m128d _mm_xor_pd(__m128d a, __m128d b) +{ + return vreinterpretq_m128d_s64( + veorq_s64(vreinterpretq_s64_m128d(a), vreinterpretq_s64_m128d(b))); +} + +// Computes the bitwise XOR of the 128-bit value in a and the 128-bit value in +// b. https://msdn.microsoft.com/en-us/library/fzt08www(v=vs.100).aspx +FORCE_INLINE __m128i _mm_xor_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + veorq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +/* SSE3 */ + +// Alternatively add and subtract packed double-precision (64-bit) +// floating-point elements in a to/from packed elements in b, and store the +// results in dst. +// +// FOR j := 0 to 1 +// i := j*64 +// IF ((j & 1) == 0) +// dst[i+63:i] := a[i+63:i] - b[i+63:i] +// ELSE +// dst[i+63:i] := a[i+63:i] + b[i+63:i] +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_addsub_pd +FORCE_INLINE __m128d _mm_addsub_pd(__m128d a, __m128d b) +{ + _sse2neon_const __m128d mask = _mm_set_pd(1.0f, -1.0f); +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vfmaq_f64(vreinterpretq_f64_m128d(a), + vreinterpretq_f64_m128d(b), + vreinterpretq_f64_m128d(mask))); +#else + return _mm_add_pd(_mm_mul_pd(b, mask), a); +#endif +} + +// Alternatively add and subtract packed single-precision (32-bit) +// floating-point elements in a to/from packed elements in b, and store the +// results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=addsub_ps +FORCE_INLINE __m128 _mm_addsub_ps(__m128 a, __m128 b) +{ + _sse2neon_const __m128 mask = _mm_setr_ps(-1.0f, 1.0f, -1.0f, 1.0f); +#if defined(__aarch64__) || defined(__ARM_FEATURE_FMA) /* VFPv4+ */ + return vreinterpretq_m128_f32(vfmaq_f32(vreinterpretq_f32_m128(a), + vreinterpretq_f32_m128(mask), + vreinterpretq_f32_m128(b))); +#else + return _mm_add_ps(_mm_mul_ps(b, mask), a); +#endif +} + +// Horizontally add adjacent pairs of double-precision (64-bit) floating-point +// elements in a and b, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pd +FORCE_INLINE __m128d _mm_hadd_pd(__m128d a, __m128d b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vpaddq_f64(vreinterpretq_f64_m128d(a), vreinterpretq_f64_m128d(b))); +#else + double *da = (double *) &a; + double *db = (double *) &b; + double c[] = {da[0] + da[1], db[0] + db[1]}; + return vreinterpretq_m128d_u64(vld1q_u64((uint64_t *) c)); +#endif +} + +// Computes pairwise add of each argument as single-precision, floating-point +// values a and b. +// https://msdn.microsoft.com/en-us/library/yd9wecaa.aspx +FORCE_INLINE __m128 _mm_hadd_ps(__m128 a, __m128 b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128_f32( + vpaddq_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(b))); +#else + float32x2_t a10 = vget_low_f32(vreinterpretq_f32_m128(a)); + float32x2_t a32 = vget_high_f32(vreinterpretq_f32_m128(a)); + float32x2_t b10 = vget_low_f32(vreinterpretq_f32_m128(b)); + float32x2_t b32 = vget_high_f32(vreinterpretq_f32_m128(b)); + return vreinterpretq_m128_f32( + vcombine_f32(vpadd_f32(a10, a32), vpadd_f32(b10, b32))); +#endif +} + +// Horizontally subtract adjacent pairs of double-precision (64-bit) +// floating-point elements in a and b, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_pd +FORCE_INLINE __m128d _mm_hsub_pd(__m128d _a, __m128d _b) +{ +#if defined(__aarch64__) + float64x2_t a = vreinterpretq_f64_m128d(_a); + float64x2_t b = vreinterpretq_f64_m128d(_b); + return vreinterpretq_m128d_f64( + vsubq_f64(vuzp1q_f64(a, b), vuzp2q_f64(a, b))); +#else + double *da = (double *) &_a; + double *db = (double *) &_b; + double c[] = {da[0] - da[1], db[0] - db[1]}; + return vreinterpretq_m128d_u64(vld1q_u64((uint64_t *) c)); +#endif +} + +// Horizontally subtract adjacent pairs of single-precision (32-bit) +// floating-point elements in a and b, and pack the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_ps +FORCE_INLINE __m128 _mm_hsub_ps(__m128 _a, __m128 _b) +{ + float32x4_t a = vreinterpretq_f32_m128(_a); + float32x4_t b = vreinterpretq_f32_m128(_b); +#if defined(__aarch64__) + return vreinterpretq_m128_f32( + vsubq_f32(vuzp1q_f32(a, b), vuzp2q_f32(a, b))); +#else + float32x4x2_t c = vuzpq_f32(a, b); + return vreinterpretq_m128_f32(vsubq_f32(c.val[0], c.val[1])); +#endif +} + +// Load 128-bits of integer data from unaligned memory into dst. This intrinsic +// may perform better than _mm_loadu_si128 when the data crosses a cache line +// boundary. +// +// dst[127:0] := MEM[mem_addr+127:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_lddqu_si128 +#define _mm_lddqu_si128 _mm_loadu_si128 + +// Load a double-precision (64-bit) floating-point element from memory into both +// elements of dst. +// +// dst[63:0] := MEM[mem_addr+63:mem_addr] +// dst[127:64] := MEM[mem_addr+63:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_loaddup_pd +#define _mm_loaddup_pd _mm_load1_pd + +// Duplicate the low double-precision (64-bit) floating-point element from a, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movedup_pd +FORCE_INLINE __m128d _mm_movedup_pd(__m128d a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64( + vdupq_laneq_f64(vreinterpretq_f64_m128d(a), 0)); +#else + return vreinterpretq_m128d_u64( + vdupq_n_u64(vgetq_lane_u64(vreinterpretq_u64_m128d(a), 0))); +#endif +} + +// Duplicate odd-indexed single-precision (32-bit) floating-point elements +// from a, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_movehdup_ps +FORCE_INLINE __m128 _mm_movehdup_ps(__m128 a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128_f32( + vtrn2q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a))); +#elif defined(_sse2neon_shuffle) + return vreinterpretq_m128_f32(vshuffleq_s32( + vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 1, 1, 3, 3)); +#else + float32_t a1 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 1); + float32_t a3 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 3); + float ALIGN_STRUCT(16) data[4] = {a1, a1, a3, a3}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +#endif +} + +// Duplicate even-indexed single-precision (32-bit) floating-point elements +// from a, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_moveldup_ps +FORCE_INLINE __m128 _mm_moveldup_ps(__m128 a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128_f32( + vtrn1q_f32(vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a))); +#elif defined(_sse2neon_shuffle) + return vreinterpretq_m128_f32(vshuffleq_s32( + vreinterpretq_f32_m128(a), vreinterpretq_f32_m128(a), 0, 0, 2, 2)); +#else + float32_t a0 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 0); + float32_t a2 = vgetq_lane_f32(vreinterpretq_f32_m128(a), 2); + float ALIGN_STRUCT(16) data[4] = {a0, a0, a2, a2}; + return vreinterpretq_m128_f32(vld1q_f32(data)); +#endif +} + +/* SSSE3 */ + +// Compute the absolute value of packed signed 16-bit integers in a, and store +// the unsigned results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// dst[i+15:i] := ABS(a[i+15:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi16 +FORCE_INLINE __m128i _mm_abs_epi16(__m128i a) +{ + return vreinterpretq_m128i_s16(vabsq_s16(vreinterpretq_s16_m128i(a))); +} + +// Compute the absolute value of packed signed 32-bit integers in a, and store +// the unsigned results in dst. +// +// FOR j := 0 to 3 +// i := j*32 +// dst[i+31:i] := ABS(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi32 +FORCE_INLINE __m128i _mm_abs_epi32(__m128i a) +{ + return vreinterpretq_m128i_s32(vabsq_s32(vreinterpretq_s32_m128i(a))); +} + +// Compute the absolute value of packed signed 8-bit integers in a, and store +// the unsigned results in dst. +// +// FOR j := 0 to 15 +// i := j*8 +// dst[i+7:i] := ABS(a[i+7:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_epi8 +FORCE_INLINE __m128i _mm_abs_epi8(__m128i a) +{ + return vreinterpretq_m128i_s8(vabsq_s8(vreinterpretq_s8_m128i(a))); +} + +// Compute the absolute value of packed signed 16-bit integers in a, and store +// the unsigned results in dst. +// +// FOR j := 0 to 3 +// i := j*16 +// dst[i+15:i] := ABS(a[i+15:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi16 +FORCE_INLINE __m64 _mm_abs_pi16(__m64 a) +{ + return vreinterpret_m64_s16(vabs_s16(vreinterpret_s16_m64(a))); +} + +// Compute the absolute value of packed signed 32-bit integers in a, and store +// the unsigned results in dst. +// +// FOR j := 0 to 1 +// i := j*32 +// dst[i+31:i] := ABS(a[i+31:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi32 +FORCE_INLINE __m64 _mm_abs_pi32(__m64 a) +{ + return vreinterpret_m64_s32(vabs_s32(vreinterpret_s32_m64(a))); +} + +// Compute the absolute value of packed signed 8-bit integers in a, and store +// the unsigned results in dst. +// +// FOR j := 0 to 7 +// i := j*8 +// dst[i+7:i] := ABS(a[i+7:i]) +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_abs_pi8 +FORCE_INLINE __m64 _mm_abs_pi8(__m64 a) +{ + return vreinterpret_m64_s8(vabs_s8(vreinterpret_s8_m64(a))); +} + +// Concatenate 16-byte blocks in a and b into a 32-byte temporary result, shift +// the result right by imm8 bytes, and store the low 16 bytes in dst. +// +// tmp[255:0] := ((a[127:0] << 128)[255:0] OR b[127:0]) >> (imm8*8) +// dst[127:0] := tmp[127:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_epi8 +#define _mm_alignr_epi8(a, b, imm) \ + __extension__({ \ + uint8x16_t _a = vreinterpretq_u8_m128i(a); \ + uint8x16_t _b = vreinterpretq_u8_m128i(b); \ + __m128i ret; \ + if (_sse2neon_unlikely((imm) & ~31)) \ + ret = vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ + else if (imm >= 16) \ + ret = _mm_srli_si128(a, imm >= 16 ? imm - 16 : 0); \ + else \ + ret = \ + vreinterpretq_m128i_u8(vextq_u8(_b, _a, imm < 16 ? imm : 0)); \ + ret; \ + }) + +// Concatenate 8-byte blocks in a and b into a 16-byte temporary result, shift +// the result right by imm8 bytes, and store the low 8 bytes in dst. +// +// tmp[127:0] := ((a[63:0] << 64)[127:0] OR b[63:0]) >> (imm8*8) +// dst[63:0] := tmp[63:0] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_alignr_pi8 +#define _mm_alignr_pi8(a, b, imm) \ + __extension__({ \ + __m64 ret; \ + if (_sse2neon_unlikely((imm) >= 16)) { \ + ret = vreinterpret_m64_s8(vdup_n_s8(0)); \ + } else { \ + uint8x8_t tmp_low, tmp_high; \ + if ((imm) >= 8) { \ + const int idx = (imm) -8; \ + tmp_low = vreinterpret_u8_m64(a); \ + tmp_high = vdup_n_u8(0); \ + ret = vreinterpret_m64_u8(vext_u8(tmp_low, tmp_high, idx)); \ + } else { \ + const int idx = (imm); \ + tmp_low = vreinterpret_u8_m64(b); \ + tmp_high = vreinterpret_u8_m64(a); \ + ret = vreinterpret_m64_u8(vext_u8(tmp_low, tmp_high, idx)); \ + } \ + } \ + ret; \ + }) + +// Computes pairwise add of each argument as a 16-bit signed or unsigned integer +// values a and b. +FORCE_INLINE __m128i _mm_hadd_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); +#if defined(__aarch64__) + return vreinterpretq_m128i_s16(vpaddq_s16(a, b)); +#else + return vreinterpretq_m128i_s16( + vcombine_s16(vpadd_s16(vget_low_s16(a), vget_high_s16(a)), + vpadd_s16(vget_low_s16(b), vget_high_s16(b)))); +#endif +} + +// Computes pairwise add of each argument as a 32-bit signed or unsigned integer +// values a and b. +FORCE_INLINE __m128i _mm_hadd_epi32(__m128i _a, __m128i _b) +{ + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); +#if defined(__aarch64__) + return vreinterpretq_m128i_s32(vpaddq_s32(a, b)); +#else + return vreinterpretq_m128i_s32( + vcombine_s32(vpadd_s32(vget_low_s32(a), vget_high_s32(a)), + vpadd_s32(vget_low_s32(b), vget_high_s32(b)))); +#endif +} + +// Horizontally add adjacent pairs of 16-bit integers in a and b, and pack the +// signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pi16 +FORCE_INLINE __m64 _mm_hadd_pi16(__m64 a, __m64 b) +{ + return vreinterpret_m64_s16( + vpadd_s16(vreinterpret_s16_m64(a), vreinterpret_s16_m64(b))); +} + +// Horizontally add adjacent pairs of 32-bit integers in a and b, and pack the +// signed 32-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadd_pi32 +FORCE_INLINE __m64 _mm_hadd_pi32(__m64 a, __m64 b) +{ + return vreinterpret_m64_s32( + vpadd_s32(vreinterpret_s32_m64(a), vreinterpret_s32_m64(b))); +} + +// Computes saturated pairwise sub of each argument as a 16-bit signed +// integer values a and b. +FORCE_INLINE __m128i _mm_hadds_epi16(__m128i _a, __m128i _b) +{ +#if defined(__aarch64__) + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); + return vreinterpretq_s64_s16( + vqaddq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); +#else + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); + // Interleave using vshrn/vmovn + // [a0|a2|a4|a6|b0|b2|b4|b6] + // [a1|a3|a5|a7|b1|b3|b5|b7] + int16x8_t ab0246 = vcombine_s16(vmovn_s32(a), vmovn_s32(b)); + int16x8_t ab1357 = vcombine_s16(vshrn_n_s32(a, 16), vshrn_n_s32(b, 16)); + // Saturated add + return vreinterpretq_m128i_s16(vqaddq_s16(ab0246, ab1357)); +#endif +} + +// Horizontally add adjacent pairs of signed 16-bit integers in a and b using +// saturation, and pack the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hadds_pi16 +FORCE_INLINE __m64 _mm_hadds_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); +#if defined(__aarch64__) + return vreinterpret_s64_s16(vqadd_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); +#else + int16x4x2_t res = vuzp_s16(a, b); + return vreinterpret_s64_s16(vqadd_s16(res.val[0], res.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 16-bit integers in a and b, and pack +// the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_epi16 +FORCE_INLINE __m128i _mm_hsub_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); +#if defined(__aarch64__) + return vreinterpretq_m128i_s16( + vsubq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); +#else + int16x8x2_t c = vuzpq_s16(a, b); + return vreinterpretq_m128i_s16(vsubq_s16(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 32-bit integers in a and b, and pack +// the signed 32-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_epi32 +FORCE_INLINE __m128i _mm_hsub_epi32(__m128i _a, __m128i _b) +{ + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); +#if defined(__aarch64__) + return vreinterpretq_m128i_s32( + vsubq_s32(vuzp1q_s32(a, b), vuzp2q_s32(a, b))); +#else + int32x4x2_t c = vuzpq_s32(a, b); + return vreinterpretq_m128i_s32(vsubq_s32(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 16-bit integers in a and b, and pack +// the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsub_pi16 +FORCE_INLINE __m64 _mm_hsub_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); +#if defined(__aarch64__) + return vreinterpret_m64_s16(vsub_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); +#else + int16x4x2_t c = vuzp_s16(a, b); + return vreinterpret_m64_s16(vsub_s16(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of 32-bit integers in a and b, and pack +// the signed 32-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_hsub_pi32 +FORCE_INLINE __m64 _mm_hsub_pi32(__m64 _a, __m64 _b) +{ + int32x2_t a = vreinterpret_s32_m64(_a); + int32x2_t b = vreinterpret_s32_m64(_b); +#if defined(__aarch64__) + return vreinterpret_m64_s32(vsub_s32(vuzp1_s32(a, b), vuzp2_s32(a, b))); +#else + int32x2x2_t c = vuzp_s32(a, b); + return vreinterpret_m64_s32(vsub_s32(c.val[0], c.val[1])); +#endif +} + +// Computes saturated pairwise difference of each argument as a 16-bit signed +// integer values a and b. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsubs_epi16 +FORCE_INLINE __m128i _mm_hsubs_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); +#if defined(__aarch64__) + return vreinterpretq_m128i_s16( + vqsubq_s16(vuzp1q_s16(a, b), vuzp2q_s16(a, b))); +#else + int16x8x2_t c = vuzpq_s16(a, b); + return vreinterpretq_m128i_s16(vqsubq_s16(c.val[0], c.val[1])); +#endif +} + +// Horizontally subtract adjacent pairs of signed 16-bit integers in a and b +// using saturation, and pack the signed 16-bit results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_hsubs_pi16 +FORCE_INLINE __m64 _mm_hsubs_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); +#if defined(__aarch64__) + return vreinterpret_m64_s16(vqsub_s16(vuzp1_s16(a, b), vuzp2_s16(a, b))); +#else + int16x4x2_t c = vuzp_s16(a, b); + return vreinterpret_m64_s16(vqsub_s16(c.val[0], c.val[1])); +#endif +} + +// Vertically multiply each unsigned 8-bit integer from a with the corresponding +// signed 8-bit integer from b, producing intermediate signed 16-bit integers. +// Horizontally add adjacent pairs of intermediate signed 16-bit integers, +// and pack the saturated results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// dst[i+15:i] := Saturate_To_Int16( a[i+15:i+8]*b[i+15:i+8] + +// a[i+7:i]*b[i+7:i] ) +// ENDFOR +FORCE_INLINE __m128i _mm_maddubs_epi16(__m128i _a, __m128i _b) +{ +#if defined(__aarch64__) + uint8x16_t a = vreinterpretq_u8_m128i(_a); + int8x16_t b = vreinterpretq_s8_m128i(_b); + int16x8_t tl = vmulq_s16(vreinterpretq_s16_u16(vmovl_u8(vget_low_u8(a))), + vmovl_s8(vget_low_s8(b))); + int16x8_t th = vmulq_s16(vreinterpretq_s16_u16(vmovl_u8(vget_high_u8(a))), + vmovl_s8(vget_high_s8(b))); + return vreinterpretq_m128i_s16( + vqaddq_s16(vuzp1q_s16(tl, th), vuzp2q_s16(tl, th))); +#else + // This would be much simpler if x86 would choose to zero extend OR sign + // extend, not both. This could probably be optimized better. + uint16x8_t a = vreinterpretq_u16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); + + // Zero extend a + int16x8_t a_odd = vreinterpretq_s16_u16(vshrq_n_u16(a, 8)); + int16x8_t a_even = vreinterpretq_s16_u16(vbicq_u16(a, vdupq_n_u16(0xff00))); + + // Sign extend by shifting left then shifting right. + int16x8_t b_even = vshrq_n_s16(vshlq_n_s16(b, 8), 8); + int16x8_t b_odd = vshrq_n_s16(b, 8); + + // multiply + int16x8_t prod1 = vmulq_s16(a_even, b_even); + int16x8_t prod2 = vmulq_s16(a_odd, b_odd); + + // saturated add + return vreinterpretq_m128i_s16(vqaddq_s16(prod1, prod2)); +#endif +} + +// Vertically multiply each unsigned 8-bit integer from a with the corresponding +// signed 8-bit integer from b, producing intermediate signed 16-bit integers. +// Horizontally add adjacent pairs of intermediate signed 16-bit integers, and +// pack the saturated results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_maddubs_pi16 +FORCE_INLINE __m64 _mm_maddubs_pi16(__m64 _a, __m64 _b) +{ + uint16x4_t a = vreinterpret_u16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); + + // Zero extend a + int16x4_t a_odd = vreinterpret_s16_u16(vshr_n_u16(a, 8)); + int16x4_t a_even = vreinterpret_s16_u16(vand_u16(a, vdup_n_u16(0xff))); + + // Sign extend by shifting left then shifting right. + int16x4_t b_even = vshr_n_s16(vshl_n_s16(b, 8), 8); + int16x4_t b_odd = vshr_n_s16(b, 8); + + // multiply + int16x4_t prod1 = vmul_s16(a_even, b_even); + int16x4_t prod2 = vmul_s16(a_odd, b_odd); + + // saturated add + return vreinterpret_m64_s16(vqadd_s16(prod1, prod2)); +} + +// Multiply packed signed 16-bit integers in a and b, producing intermediate +// signed 32-bit integers. Shift right by 15 bits while rounding up, and store +// the packed 16-bit integers in dst. +// +// r0 := Round(((int32_t)a0 * (int32_t)b0) >> 15) +// r1 := Round(((int32_t)a1 * (int32_t)b1) >> 15) +// r2 := Round(((int32_t)a2 * (int32_t)b2) >> 15) +// ... +// r7 := Round(((int32_t)a7 * (int32_t)b7) >> 15) +FORCE_INLINE __m128i _mm_mulhrs_epi16(__m128i a, __m128i b) +{ + // Has issues due to saturation + // return vreinterpretq_m128i_s16(vqrdmulhq_s16(a, b)); + + // Multiply + int32x4_t mul_lo = vmull_s16(vget_low_s16(vreinterpretq_s16_m128i(a)), + vget_low_s16(vreinterpretq_s16_m128i(b))); + int32x4_t mul_hi = vmull_s16(vget_high_s16(vreinterpretq_s16_m128i(a)), + vget_high_s16(vreinterpretq_s16_m128i(b))); + + // Rounding narrowing shift right + // narrow = (int16_t)((mul + 16384) >> 15); + int16x4_t narrow_lo = vrshrn_n_s32(mul_lo, 15); + int16x4_t narrow_hi = vrshrn_n_s32(mul_hi, 15); + + // Join together + return vreinterpretq_m128i_s16(vcombine_s16(narrow_lo, narrow_hi)); +} + +// Multiply packed signed 16-bit integers in a and b, producing intermediate +// signed 32-bit integers. Truncate each intermediate integer to the 18 most +// significant bits, round by adding 1, and store bits [16:1] to dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mulhrs_pi16 +FORCE_INLINE __m64 _mm_mulhrs_pi16(__m64 a, __m64 b) +{ + int32x4_t mul_extend = + vmull_s16((vreinterpret_s16_m64(a)), (vreinterpret_s16_m64(b))); + + // Rounding narrowing shift right + return vreinterpret_m64_s16(vrshrn_n_s32(mul_extend, 15)); +} + +// Shuffle packed 8-bit integers in a according to shuffle control mask in the +// corresponding 8-bit element of b, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_epi8 +FORCE_INLINE __m128i _mm_shuffle_epi8(__m128i a, __m128i b) +{ + int8x16_t tbl = vreinterpretq_s8_m128i(a); // input a + uint8x16_t idx = vreinterpretq_u8_m128i(b); // input b + uint8x16_t idx_masked = + vandq_u8(idx, vdupq_n_u8(0x8F)); // avoid using meaningless bits +#if defined(__aarch64__) + return vreinterpretq_m128i_s8(vqtbl1q_s8(tbl, idx_masked)); +#elif defined(__GNUC__) + int8x16_t ret; + // %e and %f represent the even and odd D registers + // respectively. + __asm__ __volatile__( + "vtbl.8 %e[ret], {%e[tbl], %f[tbl]}, %e[idx]\n" + "vtbl.8 %f[ret], {%e[tbl], %f[tbl]}, %f[idx]\n" + : [ret] "=&w"(ret) + : [tbl] "w"(tbl), [idx] "w"(idx_masked)); + return vreinterpretq_m128i_s8(ret); +#else + // use this line if testing on aarch64 + int8x8x2_t a_split = {vget_low_s8(tbl), vget_high_s8(tbl)}; + return vreinterpretq_m128i_s8( + vcombine_s8(vtbl2_s8(a_split, vget_low_u8(idx_masked)), + vtbl2_s8(a_split, vget_high_u8(idx_masked)))); +#endif +} + +// Shuffle packed 8-bit integers in a according to shuffle control mask in the +// corresponding 8-bit element of b, and store the results in dst. +// +// FOR j := 0 to 7 +// i := j*8 +// IF b[i+7] == 1 +// dst[i+7:i] := 0 +// ELSE +// index[2:0] := b[i+2:i] +// dst[i+7:i] := a[index*8+7:index*8] +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_shuffle_pi8 +FORCE_INLINE __m64 _mm_shuffle_pi8(__m64 a, __m64 b) +{ + const int8x8_t controlMask = + vand_s8(vreinterpret_s8_m64(b), vdup_n_s8((int8_t) (0x1 << 7 | 0x07))); + int8x8_t res = vtbl1_s8(vreinterpret_s8_m64(a), controlMask); + return vreinterpret_m64_s8(res); +} + +// Negate packed 16-bit integers in a when the corresponding signed +// 16-bit integer in b is negative, and store the results in dst. +// Element in dst are zeroed out when the corresponding element +// in b is zero. +// +// for i in 0..7 +// if b[i] < 0 +// r[i] := -a[i] +// else if b[i] == 0 +// r[i] := 0 +// else +// r[i] := a[i] +// fi +// done +FORCE_INLINE __m128i _mm_sign_epi16(__m128i _a, __m128i _b) +{ + int16x8_t a = vreinterpretq_s16_m128i(_a); + int16x8_t b = vreinterpretq_s16_m128i(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFF : 0 + uint16x8_t ltMask = vreinterpretq_u16_s16(vshrq_n_s16(b, 15)); + // (b == 0) ? 0xFFFF : 0 +#if defined(__aarch64__) + int16x8_t zeroMask = vreinterpretq_s16_u16(vceqzq_s16(b)); +#else + int16x8_t zeroMask = vreinterpretq_s16_u16(vceqq_s16(b, vdupq_n_s16(0))); +#endif + + // bitwise select either a or negative 'a' (vnegq_s16(a) equals to negative + // 'a') based on ltMask + int16x8_t masked = vbslq_s16(ltMask, vnegq_s16(a), a); + // res = masked & (~zeroMask) + int16x8_t res = vbicq_s16(masked, zeroMask); + return vreinterpretq_m128i_s16(res); +} + +// Negate packed 32-bit integers in a when the corresponding signed +// 32-bit integer in b is negative, and store the results in dst. +// Element in dst are zeroed out when the corresponding element +// in b is zero. +// +// for i in 0..3 +// if b[i] < 0 +// r[i] := -a[i] +// else if b[i] == 0 +// r[i] := 0 +// else +// r[i] := a[i] +// fi +// done +FORCE_INLINE __m128i _mm_sign_epi32(__m128i _a, __m128i _b) +{ + int32x4_t a = vreinterpretq_s32_m128i(_a); + int32x4_t b = vreinterpretq_s32_m128i(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFFFFFF : 0 + uint32x4_t ltMask = vreinterpretq_u32_s32(vshrq_n_s32(b, 31)); + + // (b == 0) ? 0xFFFFFFFF : 0 +#if defined(__aarch64__) + int32x4_t zeroMask = vreinterpretq_s32_u32(vceqzq_s32(b)); +#else + int32x4_t zeroMask = vreinterpretq_s32_u32(vceqq_s32(b, vdupq_n_s32(0))); +#endif + + // bitwise select either a or negative 'a' (vnegq_s32(a) equals to negative + // 'a') based on ltMask + int32x4_t masked = vbslq_s32(ltMask, vnegq_s32(a), a); + // res = masked & (~zeroMask) + int32x4_t res = vbicq_s32(masked, zeroMask); + return vreinterpretq_m128i_s32(res); +} + +// Negate packed 8-bit integers in a when the corresponding signed +// 8-bit integer in b is negative, and store the results in dst. +// Element in dst are zeroed out when the corresponding element +// in b is zero. +// +// for i in 0..15 +// if b[i] < 0 +// r[i] := -a[i] +// else if b[i] == 0 +// r[i] := 0 +// else +// r[i] := a[i] +// fi +// done +FORCE_INLINE __m128i _mm_sign_epi8(__m128i _a, __m128i _b) +{ + int8x16_t a = vreinterpretq_s8_m128i(_a); + int8x16_t b = vreinterpretq_s8_m128i(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFF : 0 + uint8x16_t ltMask = vreinterpretq_u8_s8(vshrq_n_s8(b, 7)); + + // (b == 0) ? 0xFF : 0 +#if defined(__aarch64__) + int8x16_t zeroMask = vreinterpretq_s8_u8(vceqzq_s8(b)); +#else + int8x16_t zeroMask = vreinterpretq_s8_u8(vceqq_s8(b, vdupq_n_s8(0))); +#endif + + // bitwise select either a or negative 'a' (vnegq_s8(a) return negative 'a') + // based on ltMask + int8x16_t masked = vbslq_s8(ltMask, vnegq_s8(a), a); + // res = masked & (~zeroMask) + int8x16_t res = vbicq_s8(masked, zeroMask); + + return vreinterpretq_m128i_s8(res); +} + +// Negate packed 16-bit integers in a when the corresponding signed 16-bit +// integer in b is negative, and store the results in dst. Element in dst are +// zeroed out when the corresponding element in b is zero. +// +// FOR j := 0 to 3 +// i := j*16 +// IF b[i+15:i] < 0 +// dst[i+15:i] := -(a[i+15:i]) +// ELSE IF b[i+15:i] == 0 +// dst[i+15:i] := 0 +// ELSE +// dst[i+15:i] := a[i+15:i] +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi16 +FORCE_INLINE __m64 _mm_sign_pi16(__m64 _a, __m64 _b) +{ + int16x4_t a = vreinterpret_s16_m64(_a); + int16x4_t b = vreinterpret_s16_m64(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFF : 0 + uint16x4_t ltMask = vreinterpret_u16_s16(vshr_n_s16(b, 15)); + + // (b == 0) ? 0xFFFF : 0 +#if defined(__aarch64__) + int16x4_t zeroMask = vreinterpret_s16_u16(vceqz_s16(b)); +#else + int16x4_t zeroMask = vreinterpret_s16_u16(vceq_s16(b, vdup_n_s16(0))); +#endif + + // bitwise select either a or negative 'a' (vneg_s16(a) return negative 'a') + // based on ltMask + int16x4_t masked = vbsl_s16(ltMask, vneg_s16(a), a); + // res = masked & (~zeroMask) + int16x4_t res = vbic_s16(masked, zeroMask); + + return vreinterpret_m64_s16(res); +} + +// Negate packed 32-bit integers in a when the corresponding signed 32-bit +// integer in b is negative, and store the results in dst. Element in dst are +// zeroed out when the corresponding element in b is zero. +// +// FOR j := 0 to 1 +// i := j*32 +// IF b[i+31:i] < 0 +// dst[i+31:i] := -(a[i+31:i]) +// ELSE IF b[i+31:i] == 0 +// dst[i+31:i] := 0 +// ELSE +// dst[i+31:i] := a[i+31:i] +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi32 +FORCE_INLINE __m64 _mm_sign_pi32(__m64 _a, __m64 _b) +{ + int32x2_t a = vreinterpret_s32_m64(_a); + int32x2_t b = vreinterpret_s32_m64(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFFFFFFFF : 0 + uint32x2_t ltMask = vreinterpret_u32_s32(vshr_n_s32(b, 31)); + + // (b == 0) ? 0xFFFFFFFF : 0 +#if defined(__aarch64__) + int32x2_t zeroMask = vreinterpret_s32_u32(vceqz_s32(b)); +#else + int32x2_t zeroMask = vreinterpret_s32_u32(vceq_s32(b, vdup_n_s32(0))); +#endif + + // bitwise select either a or negative 'a' (vneg_s32(a) return negative 'a') + // based on ltMask + int32x2_t masked = vbsl_s32(ltMask, vneg_s32(a), a); + // res = masked & (~zeroMask) + int32x2_t res = vbic_s32(masked, zeroMask); + + return vreinterpret_m64_s32(res); +} + +// Negate packed 8-bit integers in a when the corresponding signed 8-bit integer +// in b is negative, and store the results in dst. Element in dst are zeroed out +// when the corresponding element in b is zero. +// +// FOR j := 0 to 7 +// i := j*8 +// IF b[i+7:i] < 0 +// dst[i+7:i] := -(a[i+7:i]) +// ELSE IF b[i+7:i] == 0 +// dst[i+7:i] := 0 +// ELSE +// dst[i+7:i] := a[i+7:i] +// FI +// ENDFOR +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_sign_pi8 +FORCE_INLINE __m64 _mm_sign_pi8(__m64 _a, __m64 _b) +{ + int8x8_t a = vreinterpret_s8_m64(_a); + int8x8_t b = vreinterpret_s8_m64(_b); + + // signed shift right: faster than vclt + // (b < 0) ? 0xFF : 0 + uint8x8_t ltMask = vreinterpret_u8_s8(vshr_n_s8(b, 7)); + + // (b == 0) ? 0xFF : 0 +#if defined(__aarch64__) + int8x8_t zeroMask = vreinterpret_s8_u8(vceqz_s8(b)); +#else + int8x8_t zeroMask = vreinterpret_s8_u8(vceq_s8(b, vdup_n_s8(0))); +#endif + + // bitwise select either a or negative 'a' (vneg_s8(a) return negative 'a') + // based on ltMask + int8x8_t masked = vbsl_s8(ltMask, vneg_s8(a), a); + // res = masked & (~zeroMask) + int8x8_t res = vbic_s8(masked, zeroMask); + + return vreinterpret_m64_s8(res); +} + +/* SSE4.1 */ + +// Blend packed 16-bit integers from a and b using control mask imm8, and store +// the results in dst. +// +// FOR j := 0 to 7 +// i := j*16 +// IF imm8[j] +// dst[i+15:i] := b[i+15:i] +// ELSE +// dst[i+15:i] := a[i+15:i] +// FI +// ENDFOR +// FORCE_INLINE __m128i _mm_blend_epi16(__m128i a, __m128i b, +// __constrange(0,255) int imm) +#define _mm_blend_epi16(a, b, imm) \ + __extension__({ \ + const uint16_t _mask[8] = {((imm) & (1 << 0)) ? (uint16_t) -1 : 0x0, \ + ((imm) & (1 << 1)) ? (uint16_t) -1 : 0x0, \ + ((imm) & (1 << 2)) ? (uint16_t) -1 : 0x0, \ + ((imm) & (1 << 3)) ? (uint16_t) -1 : 0x0, \ + ((imm) & (1 << 4)) ? (uint16_t) -1 : 0x0, \ + ((imm) & (1 << 5)) ? (uint16_t) -1 : 0x0, \ + ((imm) & (1 << 6)) ? (uint16_t) -1 : 0x0, \ + ((imm) & (1 << 7)) ? (uint16_t) -1 : 0x0}; \ + uint16x8_t _mask_vec = vld1q_u16(_mask); \ + uint16x8_t _a = vreinterpretq_u16_m128i(a); \ + uint16x8_t _b = vreinterpretq_u16_m128i(b); \ + vreinterpretq_m128i_u16(vbslq_u16(_mask_vec, _b, _a)); \ + }) + +// Blend packed double-precision (64-bit) floating-point elements from a and b +// using control mask imm8, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_pd +#define _mm_blend_pd(a, b, imm) \ + __extension__({ \ + const uint64_t _mask[2] = { \ + ((imm) & (1 << 0)) ? ~UINT64_C(0) : UINT64_C(0), \ + ((imm) & (1 << 1)) ? ~UINT64_C(0) : UINT64_C(0)}; \ + uint64x2_t _mask_vec = vld1q_u64(_mask); \ + uint64x2_t _a = vreinterpretq_u64_m128d(a); \ + uint64x2_t _b = vreinterpretq_u64_m128d(b); \ + vreinterpretq_m128d_u64(vbslq_u64(_mask_vec, _b, _a)); \ + }) + +// Blend packed single-precision (32-bit) floating-point elements from a and b +// using mask, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blend_ps +FORCE_INLINE __m128 _mm_blend_ps(__m128 _a, __m128 _b, const char imm8) +{ + const uint32_t ALIGN_STRUCT(16) + data[4] = {((imm8) & (1 << 0)) ? UINT32_MAX : 0, + ((imm8) & (1 << 1)) ? UINT32_MAX : 0, + ((imm8) & (1 << 2)) ? UINT32_MAX : 0, + ((imm8) & (1 << 3)) ? UINT32_MAX : 0}; + uint32x4_t mask = vld1q_u32(data); + float32x4_t a = vreinterpretq_f32_m128(_a); + float32x4_t b = vreinterpretq_f32_m128(_b); + return vreinterpretq_m128_f32(vbslq_f32(mask, b, a)); +} + +// Blend packed 8-bit integers from a and b using mask, and store the results in +// dst. +// +// FOR j := 0 to 15 +// i := j*8 +// IF mask[i+7] +// dst[i+7:i] := b[i+7:i] +// ELSE +// dst[i+7:i] := a[i+7:i] +// FI +// ENDFOR +FORCE_INLINE __m128i _mm_blendv_epi8(__m128i _a, __m128i _b, __m128i _mask) +{ + // Use a signed shift right to create a mask with the sign bit + uint8x16_t mask = + vreinterpretq_u8_s8(vshrq_n_s8(vreinterpretq_s8_m128i(_mask), 7)); + uint8x16_t a = vreinterpretq_u8_m128i(_a); + uint8x16_t b = vreinterpretq_u8_m128i(_b); + return vreinterpretq_m128i_u8(vbslq_u8(mask, b, a)); +} + +// Blend packed double-precision (64-bit) floating-point elements from a and b +// using mask, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_pd +FORCE_INLINE __m128d _mm_blendv_pd(__m128d _a, __m128d _b, __m128d _mask) +{ + uint64x2_t mask = + vreinterpretq_u64_s64(vshrq_n_s64(vreinterpretq_s64_m128d(_mask), 63)); +#if defined(__aarch64__) + float64x2_t a = vreinterpretq_f64_m128d(_a); + float64x2_t b = vreinterpretq_f64_m128d(_b); + return vreinterpretq_m128d_f64(vbslq_f64(mask, b, a)); +#else + uint64x2_t a = vreinterpretq_u64_m128d(_a); + uint64x2_t b = vreinterpretq_u64_m128d(_b); + return vreinterpretq_m128d_u64(vbslq_u64(mask, b, a)); +#endif +} + +// Blend packed single-precision (32-bit) floating-point elements from a and b +// using mask, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_blendv_ps +FORCE_INLINE __m128 _mm_blendv_ps(__m128 _a, __m128 _b, __m128 _mask) +{ + // Use a signed shift right to create a mask with the sign bit + uint32x4_t mask = + vreinterpretq_u32_s32(vshrq_n_s32(vreinterpretq_s32_m128(_mask), 31)); + float32x4_t a = vreinterpretq_f32_m128(_a); + float32x4_t b = vreinterpretq_f32_m128(_b); + return vreinterpretq_m128_f32(vbslq_f32(mask, b, a)); +} + +// Round the packed double-precision (64-bit) floating-point elements in a up +// to an integer value, and store the results as packed double-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_pd +FORCE_INLINE __m128d _mm_ceil_pd(__m128d a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vrndpq_f64(vreinterpretq_f64_m128d(a))); +#else + double *f = (double *) &a; + return _mm_set_pd(ceil(f[1]), ceil(f[0])); +#endif +} + +// Round the packed single-precision (32-bit) floating-point elements in a up to +// an integer value, and store the results as packed single-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_ps +FORCE_INLINE __m128 _mm_ceil_ps(__m128 a) +{ +#if defined(__aarch64__) || defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vreinterpretq_m128_f32(vrndpq_f32(vreinterpretq_f32_m128(a))); +#else + float *f = (float *) &a; + return _mm_set_ps(ceilf(f[3]), ceilf(f[2]), ceilf(f[1]), ceilf(f[0])); +#endif +} + +// Round the lower double-precision (64-bit) floating-point element in b up to +// an integer value, store the result as a double-precision floating-point +// element in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_sd +FORCE_INLINE __m128d _mm_ceil_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_ceil_pd(b)); +} + +// Round the lower single-precision (32-bit) floating-point element in b up to +// an integer value, store the result as a single-precision floating-point +// element in the lower element of dst, and copy the upper 3 packed elements +// from a to the upper elements of dst. +// +// dst[31:0] := CEIL(b[31:0]) +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_ceil_ss +FORCE_INLINE __m128 _mm_ceil_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_ceil_ps(b)); +} + +// Compare packed 64-bit integers in a and b for equality, and store the results +// in dst +FORCE_INLINE __m128i _mm_cmpeq_epi64(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_u64( + vceqq_u64(vreinterpretq_u64_m128i(a), vreinterpretq_u64_m128i(b))); +#else + // ARMv7 lacks vceqq_u64 + // (a == b) -> (a_lo == b_lo) && (a_hi == b_hi) + uint32x4_t cmp = + vceqq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b)); + uint32x4_t swapped = vrev64q_u32(cmp); + return vreinterpretq_m128i_u32(vandq_u32(cmp, swapped)); +#endif +} + +// Converts the four signed 16-bit integers in the lower 64 bits to four signed +// 32-bit integers. +FORCE_INLINE __m128i _mm_cvtepi16_epi32(__m128i a) +{ + return vreinterpretq_m128i_s32( + vmovl_s16(vget_low_s16(vreinterpretq_s16_m128i(a)))); +} + +// Converts the two signed 16-bit integers in the lower 32 bits two signed +// 32-bit integers. +FORCE_INLINE __m128i _mm_cvtepi16_epi64(__m128i a) +{ + int16x8_t s16x8 = vreinterpretq_s16_m128i(a); /* xxxx xxxx xxxx 0B0A */ + int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000x 000x 000B 000A */ + int64x2_t s64x2 = vmovl_s32(vget_low_s32(s32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_s64(s64x2); +} + +// Converts the two signed 32-bit integers in the lower 64 bits to two signed +// 64-bit integers. +FORCE_INLINE __m128i _mm_cvtepi32_epi64(__m128i a) +{ + return vreinterpretq_m128i_s64( + vmovl_s32(vget_low_s32(vreinterpretq_s32_m128i(a)))); +} + +// Converts the four unsigned 8-bit integers in the lower 16 bits to four +// unsigned 32-bit integers. +FORCE_INLINE __m128i _mm_cvtepi8_epi16(__m128i a) +{ + int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx DCBA */ + int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0D0C 0B0A */ + return vreinterpretq_m128i_s16(s16x8); +} + +// Converts the four unsigned 8-bit integers in the lower 32 bits to four +// unsigned 32-bit integers. +FORCE_INLINE __m128i _mm_cvtepi8_epi32(__m128i a) +{ + int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx DCBA */ + int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0D0C 0B0A */ + int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000D 000C 000B 000A */ + return vreinterpretq_m128i_s32(s32x4); +} + +// Converts the two signed 8-bit integers in the lower 32 bits to four +// signed 64-bit integers. +FORCE_INLINE __m128i _mm_cvtepi8_epi64(__m128i a) +{ + int8x16_t s8x16 = vreinterpretq_s8_m128i(a); /* xxxx xxxx xxxx xxBA */ + int16x8_t s16x8 = vmovl_s8(vget_low_s8(s8x16)); /* 0x0x 0x0x 0x0x 0B0A */ + int32x4_t s32x4 = vmovl_s16(vget_low_s16(s16x8)); /* 000x 000x 000B 000A */ + int64x2_t s64x2 = vmovl_s32(vget_low_s32(s32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_s64(s64x2); +} + +// Converts the four unsigned 16-bit integers in the lower 64 bits to four +// unsigned 32-bit integers. +FORCE_INLINE __m128i _mm_cvtepu16_epi32(__m128i a) +{ + return vreinterpretq_m128i_u32( + vmovl_u16(vget_low_u16(vreinterpretq_u16_m128i(a)))); +} + +// Converts the two unsigned 16-bit integers in the lower 32 bits to two +// unsigned 64-bit integers. +FORCE_INLINE __m128i _mm_cvtepu16_epi64(__m128i a) +{ + uint16x8_t u16x8 = vreinterpretq_u16_m128i(a); /* xxxx xxxx xxxx 0B0A */ + uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000x 000x 000B 000A */ + uint64x2_t u64x2 = vmovl_u32(vget_low_u32(u32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_u64(u64x2); +} + +// Converts the two unsigned 32-bit integers in the lower 64 bits to two +// unsigned 64-bit integers. +FORCE_INLINE __m128i _mm_cvtepu32_epi64(__m128i a) +{ + return vreinterpretq_m128i_u64( + vmovl_u32(vget_low_u32(vreinterpretq_u32_m128i(a)))); +} + +// Zero extend packed unsigned 8-bit integers in a to packed 16-bit integers, +// and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cvtepu8_epi16 +FORCE_INLINE __m128i _mm_cvtepu8_epi16(__m128i a) +{ + uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx HGFE DCBA */ + uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0H0G 0F0E 0D0C 0B0A */ + return vreinterpretq_m128i_u16(u16x8); +} + +// Converts the four unsigned 8-bit integers in the lower 32 bits to four +// unsigned 32-bit integers. +// https://msdn.microsoft.com/en-us/library/bb531467%28v=vs.100%29.aspx +FORCE_INLINE __m128i _mm_cvtepu8_epi32(__m128i a) +{ + uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx xxxx DCBA */ + uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0x0x 0x0x 0D0C 0B0A */ + uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000D 000C 000B 000A */ + return vreinterpretq_m128i_u32(u32x4); +} + +// Converts the two unsigned 8-bit integers in the lower 16 bits to two +// unsigned 64-bit integers. +FORCE_INLINE __m128i _mm_cvtepu8_epi64(__m128i a) +{ + uint8x16_t u8x16 = vreinterpretq_u8_m128i(a); /* xxxx xxxx xxxx xxBA */ + uint16x8_t u16x8 = vmovl_u8(vget_low_u8(u8x16)); /* 0x0x 0x0x 0x0x 0B0A */ + uint32x4_t u32x4 = vmovl_u16(vget_low_u16(u16x8)); /* 000x 000x 000B 000A */ + uint64x2_t u64x2 = vmovl_u32(vget_low_u32(u32x4)); /* 0000 000B 0000 000A */ + return vreinterpretq_m128i_u64(u64x2); +} + +// Conditionally multiply the packed double-precision (64-bit) floating-point +// elements in a and b using the high 4 bits in imm8, sum the four products, and +// conditionally store the sum in dst using the low 4 bits of imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_dp_pd +FORCE_INLINE __m128d _mm_dp_pd(__m128d a, __m128d b, const int imm) +{ + // Generate mask value from constant immediate bit value + const int64_t bit0Mask = imm & 0x01 ? UINT64_MAX : 0; + const int64_t bit1Mask = imm & 0x02 ? UINT64_MAX : 0; +#if !SSE2NEON_PRECISE_DP + const int64_t bit4Mask = imm & 0x10 ? UINT64_MAX : 0; + const int64_t bit5Mask = imm & 0x20 ? UINT64_MAX : 0; +#endif + // Conditional multiplication +#if !SSE2NEON_PRECISE_DP + __m128d mul = _mm_mul_pd(a, b); + const __m128d mulMask = + _mm_castsi128_pd(_mm_set_epi64x(bit5Mask, bit4Mask)); + __m128d tmp = _mm_and_pd(mul, mulMask); +#else +#if defined(__aarch64__) + double d0 = (imm & 0x10) ? vgetq_lane_f64(vreinterpretq_f64_m128d(a), 0) * + vgetq_lane_f64(vreinterpretq_f64_m128d(b), 0) + : 0; + double d1 = (imm & 0x20) ? vgetq_lane_f64(vreinterpretq_f64_m128d(a), 1) * + vgetq_lane_f64(vreinterpretq_f64_m128d(b), 1) + : 0; +#else + double d0 = (imm & 0x10) ? ((double *) &a)[0] * ((double *) &b)[0] : 0; + double d1 = (imm & 0x20) ? ((double *) &a)[1] * ((double *) &b)[1] : 0; +#endif + __m128d tmp = _mm_set_pd(d1, d0); +#endif + // Sum the products +#if defined(__aarch64__) + double sum = vpaddd_f64(vreinterpretq_f64_m128d(tmp)); +#else + double sum = *((double *) &tmp) + *(((double *) &tmp) + 1); +#endif + // Conditionally store the sum + const __m128d sumMask = + _mm_castsi128_pd(_mm_set_epi64x(bit1Mask, bit0Mask)); + __m128d res = _mm_and_pd(_mm_set_pd1(sum), sumMask); + return res; +} + +// Conditionally multiply the packed single-precision (32-bit) floating-point +// elements in a and b using the high 4 bits in imm8, sum the four products, +// and conditionally store the sum in dst using the low 4 bits of imm. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_dp_ps +FORCE_INLINE __m128 _mm_dp_ps(__m128 a, __m128 b, const int imm) +{ +#if defined(__aarch64__) + /* shortcuts */ + if (imm == 0xFF) { + return _mm_set1_ps(vaddvq_f32(_mm_mul_ps(a, b))); + } + if (imm == 0x7F) { + float32x4_t m = _mm_mul_ps(a, b); + m[3] = 0; + return _mm_set1_ps(vaddvq_f32(m)); + } +#endif + + float s = 0, c = 0; + float32x4_t f32a = vreinterpretq_f32_m128(a); + float32x4_t f32b = vreinterpretq_f32_m128(b); + + /* To improve the accuracy of floating-point summation, Kahan algorithm + * is used for each operation. + */ + if (imm & (1 << 4)) + _sse2neon_kadd_f32(&s, &c, f32a[0] * f32b[0]); + if (imm & (1 << 5)) + _sse2neon_kadd_f32(&s, &c, f32a[1] * f32b[1]); + if (imm & (1 << 6)) + _sse2neon_kadd_f32(&s, &c, f32a[2] * f32b[2]); + if (imm & (1 << 7)) + _sse2neon_kadd_f32(&s, &c, f32a[3] * f32b[3]); + s += c; + + float32x4_t res = { + (imm & 0x1) ? s : 0, + (imm & 0x2) ? s : 0, + (imm & 0x4) ? s : 0, + (imm & 0x8) ? s : 0, + }; + return vreinterpretq_m128_f32(res); +} + +// Extracts the selected signed or unsigned 32-bit integer from a and zero +// extends. +// FORCE_INLINE int _mm_extract_epi32(__m128i a, __constrange(0,4) int imm) +#define _mm_extract_epi32(a, imm) \ + vgetq_lane_s32(vreinterpretq_s32_m128i(a), (imm)) + +// Extracts the selected signed or unsigned 64-bit integer from a and zero +// extends. +// FORCE_INLINE __int64 _mm_extract_epi64(__m128i a, __constrange(0,2) int imm) +#define _mm_extract_epi64(a, imm) \ + vgetq_lane_s64(vreinterpretq_s64_m128i(a), (imm)) + +// Extracts the selected signed or unsigned 8-bit integer from a and zero +// extends. +// FORCE_INLINE int _mm_extract_epi8(__m128i a, __constrange(0,16) int imm) +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_extract_epi8 +#define _mm_extract_epi8(a, imm) vgetq_lane_u8(vreinterpretq_u8_m128i(a), (imm)) + +// Extracts the selected single-precision (32-bit) floating-point from a. +// FORCE_INLINE int _mm_extract_ps(__m128 a, __constrange(0,4) int imm) +#define _mm_extract_ps(a, imm) vgetq_lane_s32(vreinterpretq_s32_m128(a), (imm)) + +// Round the packed double-precision (64-bit) floating-point elements in a down +// to an integer value, and store the results as packed double-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_pd +FORCE_INLINE __m128d _mm_floor_pd(__m128d a) +{ +#if defined(__aarch64__) + return vreinterpretq_m128d_f64(vrndmq_f64(vreinterpretq_f64_m128d(a))); +#else + double *f = (double *) &a; + return _mm_set_pd(floor(f[1]), floor(f[0])); +#endif +} + +// Round the packed single-precision (32-bit) floating-point elements in a down +// to an integer value, and store the results as packed single-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_ps +FORCE_INLINE __m128 _mm_floor_ps(__m128 a) +{ +#if defined(__aarch64__) || defined(__ARM_FEATURE_DIRECTED_ROUNDING) + return vreinterpretq_m128_f32(vrndmq_f32(vreinterpretq_f32_m128(a))); +#else + float *f = (float *) &a; + return _mm_set_ps(floorf(f[3]), floorf(f[2]), floorf(f[1]), floorf(f[0])); +#endif +} + +// Round the lower double-precision (64-bit) floating-point element in b down to +// an integer value, store the result as a double-precision floating-point +// element in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_sd +FORCE_INLINE __m128d _mm_floor_sd(__m128d a, __m128d b) +{ + return _mm_move_sd(a, _mm_floor_pd(b)); +} + +// Round the lower single-precision (32-bit) floating-point element in b down to +// an integer value, store the result as a single-precision floating-point +// element in the lower element of dst, and copy the upper 3 packed elements +// from a to the upper elements of dst. +// +// dst[31:0] := FLOOR(b[31:0]) +// dst[127:32] := a[127:32] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_floor_ss +FORCE_INLINE __m128 _mm_floor_ss(__m128 a, __m128 b) +{ + return _mm_move_ss(a, _mm_floor_ps(b)); +} + +// Inserts the least significant 32 bits of b into the selected 32-bit integer +// of a. +// FORCE_INLINE __m128i _mm_insert_epi32(__m128i a, int b, +// __constrange(0,4) int imm) +#define _mm_insert_epi32(a, b, imm) \ + __extension__({ \ + vreinterpretq_m128i_s32( \ + vsetq_lane_s32((b), vreinterpretq_s32_m128i(a), (imm))); \ + }) + +// Inserts the least significant 64 bits of b into the selected 64-bit integer +// of a. +// FORCE_INLINE __m128i _mm_insert_epi64(__m128i a, __int64 b, +// __constrange(0,2) int imm) +#define _mm_insert_epi64(a, b, imm) \ + __extension__({ \ + vreinterpretq_m128i_s64( \ + vsetq_lane_s64((b), vreinterpretq_s64_m128i(a), (imm))); \ + }) + +// Inserts the least significant 8 bits of b into the selected 8-bit integer +// of a. +// FORCE_INLINE __m128i _mm_insert_epi8(__m128i a, int b, +// __constrange(0,16) int imm) +#define _mm_insert_epi8(a, b, imm) \ + __extension__({ \ + vreinterpretq_m128i_s8( \ + vsetq_lane_s8((b), vreinterpretq_s8_m128i(a), (imm))); \ + }) + +// Copy a to tmp, then insert a single-precision (32-bit) floating-point +// element from b into tmp using the control in imm8. Store tmp to dst using +// the mask in imm8 (elements are zeroed out when the corresponding bit is set). +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=insert_ps +#define _mm_insert_ps(a, b, imm8) \ + __extension__({ \ + float32x4_t tmp1 = \ + vsetq_lane_f32(vgetq_lane_f32(b, (imm8 >> 6) & 0x3), \ + vreinterpretq_f32_m128(a), 0); \ + float32x4_t tmp2 = \ + vsetq_lane_f32(vgetq_lane_f32(tmp1, 0), vreinterpretq_f32_m128(a), \ + ((imm8 >> 4) & 0x3)); \ + const uint32_t data[4] = {((imm8) & (1 << 0)) ? UINT32_MAX : 0, \ + ((imm8) & (1 << 1)) ? UINT32_MAX : 0, \ + ((imm8) & (1 << 2)) ? UINT32_MAX : 0, \ + ((imm8) & (1 << 3)) ? UINT32_MAX : 0}; \ + uint32x4_t mask = vld1q_u32(data); \ + float32x4_t all_zeros = vdupq_n_f32(0); \ + \ + vreinterpretq_m128_f32( \ + vbslq_f32(mask, all_zeros, vreinterpretq_f32_m128(tmp2))); \ + }) + +// epi versions of min/max +// Computes the pariwise maximums of the four signed 32-bit integer values of a +// and b. +// +// A 128-bit parameter that can be defined with the following equations: +// r0 := (a0 > b0) ? a0 : b0 +// r1 := (a1 > b1) ? a1 : b1 +// r2 := (a2 > b2) ? a2 : b2 +// r3 := (a3 > b3) ? a3 : b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/bb514055(v=vs.100).aspx +FORCE_INLINE __m128i _mm_max_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vmaxq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compare packed signed 8-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epi8 +FORCE_INLINE __m128i _mm_max_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vmaxq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed unsigned 16-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu16 +FORCE_INLINE __m128i _mm_max_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vmaxq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Compare packed unsigned 32-bit integers in a and b, and store packed maximum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu32 +FORCE_INLINE __m128i _mm_max_epu32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vmaxq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b))); +} + +// Computes the pariwise minima of the four signed 32-bit integer values of a +// and b. +// +// A 128-bit parameter that can be defined with the following equations: +// r0 := (a0 < b0) ? a0 : b0 +// r1 := (a1 < b1) ? a1 : b1 +// r2 := (a2 < b2) ? a2 : b2 +// r3 := (a3 < b3) ? a3 : b3 +// +// https://msdn.microsoft.com/en-us/library/vstudio/bb531476(v=vs.100).aspx +FORCE_INLINE __m128i _mm_min_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vminq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Compare packed signed 8-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epi8 +FORCE_INLINE __m128i _mm_min_epi8(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s8( + vminq_s8(vreinterpretq_s8_m128i(a), vreinterpretq_s8_m128i(b))); +} + +// Compare packed unsigned 16-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_min_epu16 +FORCE_INLINE __m128i _mm_min_epu16(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vminq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b))); +} + +// Compare packed unsigned 32-bit integers in a and b, and store packed minimum +// values in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_max_epu32 +FORCE_INLINE __m128i _mm_min_epu32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u32( + vminq_u32(vreinterpretq_u32_m128i(a), vreinterpretq_u32_m128i(b))); +} + +// Horizontally compute the minimum amongst the packed unsigned 16-bit integers +// in a, store the minimum and index in dst, and zero the remaining bits in dst. +// +// index[2:0] := 0 +// min[15:0] := a[15:0] +// FOR j := 0 to 7 +// i := j*16 +// IF a[i+15:i] < min[15:0] +// index[2:0] := j +// min[15:0] := a[i+15:i] +// FI +// ENDFOR +// dst[15:0] := min[15:0] +// dst[18:16] := index[2:0] +// dst[127:19] := 0 +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_minpos_epu16 +FORCE_INLINE __m128i _mm_minpos_epu16(__m128i a) +{ + __m128i dst; + uint16_t min, idx = 0; +#if defined(__aarch64__) + // Find the minimum value + min = vminvq_u16(vreinterpretq_u16_m128i(a)); + + // Get the index of the minimum value + static const uint16_t idxv[] = {0, 1, 2, 3, 4, 5, 6, 7}; + uint16x8_t minv = vdupq_n_u16(min); + uint16x8_t cmeq = vceqq_u16(minv, vreinterpretq_u16_m128i(a)); + idx = vminvq_u16(vornq_u16(vld1q_u16(idxv), cmeq)); +#else + // Find the minimum value + __m64 tmp; + tmp = vreinterpret_m64_u16( + vmin_u16(vget_low_u16(vreinterpretq_u16_m128i(a)), + vget_high_u16(vreinterpretq_u16_m128i(a)))); + tmp = vreinterpret_m64_u16( + vpmin_u16(vreinterpret_u16_m64(tmp), vreinterpret_u16_m64(tmp))); + tmp = vreinterpret_m64_u16( + vpmin_u16(vreinterpret_u16_m64(tmp), vreinterpret_u16_m64(tmp))); + min = vget_lane_u16(vreinterpret_u16_m64(tmp), 0); + // Get the index of the minimum value + int i; + for (i = 0; i < 8; i++) { + if (min == vgetq_lane_u16(vreinterpretq_u16_m128i(a), 0)) { + idx = (uint16_t) i; + break; + } + a = _mm_srli_si128(a, 2); + } +#endif + // Generate result + dst = _mm_setzero_si128(); + dst = vreinterpretq_m128i_u16( + vsetq_lane_u16(min, vreinterpretq_u16_m128i(dst), 0)); + dst = vreinterpretq_m128i_u16( + vsetq_lane_u16(idx, vreinterpretq_u16_m128i(dst), 1)); + return dst; +} + +// Compute the sum of absolute differences (SADs) of quadruplets of unsigned +// 8-bit integers in a compared to those in b, and store the 16-bit results in +// dst. Eight SADs are performed using one quadruplet from b and eight +// quadruplets from a. One quadruplet is selected from b starting at on the +// offset specified in imm8. Eight quadruplets are formed from sequential 8-bit +// integers selected from a starting at the offset specified in imm8. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_mpsadbw_epu8 +FORCE_INLINE __m128i _mm_mpsadbw_epu8(__m128i a, __m128i b, const int imm) +{ + uint8x16_t _a, _b; + + switch (imm & 0x4) { + case 0: + // do nothing + _a = vreinterpretq_u8_m128i(a); + break; + case 4: + _a = vreinterpretq_u8_u32(vextq_u32(vreinterpretq_u32_m128i(a), + vreinterpretq_u32_m128i(a), 1)); + break; + default: +#if defined(__GNUC__) || defined(__clang__) + __builtin_unreachable(); +#endif + break; + } + + switch (imm & 0x3) { + case 0: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 0))); + break; + case 1: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 1))); + break; + case 2: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 2))); + break; + case 3: + _b = vreinterpretq_u8_u32( + vdupq_n_u32(vgetq_lane_u32(vreinterpretq_u32_m128i(b), 3))); + break; + default: +#if defined(__GNUC__) || defined(__clang__) + __builtin_unreachable(); +#endif + break; + } + + int16x8_t c04, c15, c26, c37; + uint8x8_t low_b = vget_low_u8(_b); + c04 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a), low_b)); + uint8x16_t _a_1 = vextq_u8(_a, _a, 1); + c15 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_1), low_b)); + uint8x16_t _a_2 = vextq_u8(_a, _a, 2); + c26 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_2), low_b)); + uint8x16_t _a_3 = vextq_u8(_a, _a, 3); + c37 = vreinterpretq_s16_u16(vabdl_u8(vget_low_u8(_a_3), low_b)); +#if defined(__aarch64__) + // |0|4|2|6| + c04 = vpaddq_s16(c04, c26); + // |1|5|3|7| + c15 = vpaddq_s16(c15, c37); + + int32x4_t trn1_c = + vtrn1q_s32(vreinterpretq_s32_s16(c04), vreinterpretq_s32_s16(c15)); + int32x4_t trn2_c = + vtrn2q_s32(vreinterpretq_s32_s16(c04), vreinterpretq_s32_s16(c15)); + return vreinterpretq_m128i_s16(vpaddq_s16(vreinterpretq_s16_s32(trn1_c), + vreinterpretq_s16_s32(trn2_c))); +#else + int16x4_t c01, c23, c45, c67; + c01 = vpadd_s16(vget_low_s16(c04), vget_low_s16(c15)); + c23 = vpadd_s16(vget_low_s16(c26), vget_low_s16(c37)); + c45 = vpadd_s16(vget_high_s16(c04), vget_high_s16(c15)); + c67 = vpadd_s16(vget_high_s16(c26), vget_high_s16(c37)); + + return vreinterpretq_m128i_s16( + vcombine_s16(vpadd_s16(c01, c23), vpadd_s16(c45, c67))); +#endif +} + +// Multiply the low signed 32-bit integers from each packed 64-bit element in +// a and b, and store the signed 64-bit results in dst. +// +// r0 := (int64_t)(int32_t)a0 * (int64_t)(int32_t)b0 +// r1 := (int64_t)(int32_t)a2 * (int64_t)(int32_t)b2 +FORCE_INLINE __m128i _mm_mul_epi32(__m128i a, __m128i b) +{ + // vmull_s32 upcasts instead of masking, so we downcast. + int32x2_t a_lo = vmovn_s64(vreinterpretq_s64_m128i(a)); + int32x2_t b_lo = vmovn_s64(vreinterpretq_s64_m128i(b)); + return vreinterpretq_m128i_s64(vmull_s32(a_lo, b_lo)); +} + +// Multiplies the 4 signed or unsigned 32-bit integers from a by the 4 signed or +// unsigned 32-bit integers from b. +// https://msdn.microsoft.com/en-us/library/vstudio/bb531409(v=vs.100).aspx +FORCE_INLINE __m128i _mm_mullo_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_s32( + vmulq_s32(vreinterpretq_s32_m128i(a), vreinterpretq_s32_m128i(b))); +} + +// Packs the 8 unsigned 32-bit integers from a and b into unsigned 16-bit +// integers and saturates. +// +// r0 := UnsignedSaturate(a0) +// r1 := UnsignedSaturate(a1) +// r2 := UnsignedSaturate(a2) +// r3 := UnsignedSaturate(a3) +// r4 := UnsignedSaturate(b0) +// r5 := UnsignedSaturate(b1) +// r6 := UnsignedSaturate(b2) +// r7 := UnsignedSaturate(b3) +FORCE_INLINE __m128i _mm_packus_epi32(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u16( + vcombine_u16(vqmovun_s32(vreinterpretq_s32_m128i(a)), + vqmovun_s32(vreinterpretq_s32_m128i(b)))); +} + +// Round the packed double-precision (64-bit) floating-point elements in a using +// the rounding parameter, and store the results as packed double-precision +// floating-point elements in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_pd +FORCE_INLINE __m128d _mm_round_pd(__m128d a, int rounding) +{ +#if defined(__aarch64__) + switch (rounding) { + case (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC): + return vreinterpretq_m128d_f64(vrndnq_f64(vreinterpretq_f64_m128d(a))); + case (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC): + return _mm_floor_pd(a); + case (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC): + return _mm_ceil_pd(a); + case (_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC): + return vreinterpretq_m128d_f64(vrndq_f64(vreinterpretq_f64_m128d(a))); + default: //_MM_FROUND_CUR_DIRECTION + return vreinterpretq_m128d_f64(vrndiq_f64(vreinterpretq_f64_m128d(a))); + } +#else + double *v_double = (double *) &a; + + if (rounding == (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_NEAREST)) { + double res[2], tmp; + for (int i = 0; i < 2; i++) { + tmp = (v_double[i] < 0) ? -v_double[i] : v_double[i]; + double roundDown = floor(tmp); // Round down value + double roundUp = ceil(tmp); // Round up value + double diffDown = tmp - roundDown; + double diffUp = roundUp - tmp; + if (diffDown < diffUp) { + /* If it's closer to the round down value, then use it */ + res[i] = roundDown; + } else if (diffDown > diffUp) { + /* If it's closer to the round up value, then use it */ + res[i] = roundUp; + } else { + /* If it's equidistant between round up and round down value, + * pick the one which is an even number */ + double half = roundDown / 2; + if (half != floor(half)) { + /* If the round down value is odd, return the round up value + */ + res[i] = roundUp; + } else { + /* If the round up value is odd, return the round down value + */ + res[i] = roundDown; + } + } + res[i] = (v_double[i] < 0) ? -res[i] : res[i]; + } + return _mm_set_pd(res[1], res[0]); + } else if (rounding == (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_DOWN)) { + return _mm_floor_pd(a); + } else if (rounding == (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_UP)) { + return _mm_ceil_pd(a); + } + return _mm_set_pd(v_double[1] > 0 ? floor(v_double[1]) : ceil(v_double[1]), + v_double[0] > 0 ? floor(v_double[0]) : ceil(v_double[0])); +#endif +} + +// Round the packed single-precision (32-bit) floating-point elements in a using +// the rounding parameter, and store the results as packed single-precision +// floating-point elements in dst. +// software.intel.com/sites/landingpage/IntrinsicsGuide/#text=_mm_round_ps +FORCE_INLINE __m128 _mm_round_ps(__m128 a, int rounding) +{ +#if defined(__aarch64__) || defined(__ARM_FEATURE_DIRECTED_ROUNDING) + switch (rounding) { + case (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC): + return vreinterpretq_m128_f32(vrndnq_f32(vreinterpretq_f32_m128(a))); + case (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC): + return _mm_floor_ps(a); + case (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC): + return _mm_ceil_ps(a); + case (_MM_FROUND_TO_ZERO | _MM_FROUND_NO_EXC): + return vreinterpretq_m128_f32(vrndq_f32(vreinterpretq_f32_m128(a))); + default: //_MM_FROUND_CUR_DIRECTION + return vreinterpretq_m128_f32(vrndiq_f32(vreinterpretq_f32_m128(a))); + } +#else + float *v_float = (float *) &a; + + if (rounding == (_MM_FROUND_TO_NEAREST_INT | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_NEAREST)) { + uint32x4_t signmask = vdupq_n_u32(0x80000000); + float32x4_t half = vbslq_f32(signmask, vreinterpretq_f32_m128(a), + vdupq_n_f32(0.5f)); /* +/- 0.5 */ + int32x4_t r_normal = vcvtq_s32_f32(vaddq_f32( + vreinterpretq_f32_m128(a), half)); /* round to integer: [a + 0.5]*/ + int32x4_t r_trunc = vcvtq_s32_f32( + vreinterpretq_f32_m128(a)); /* truncate to integer: [a] */ + int32x4_t plusone = vreinterpretq_s32_u32(vshrq_n_u32( + vreinterpretq_u32_s32(vnegq_s32(r_trunc)), 31)); /* 1 or 0 */ + int32x4_t r_even = vbicq_s32(vaddq_s32(r_trunc, plusone), + vdupq_n_s32(1)); /* ([a] + {0,1}) & ~1 */ + float32x4_t delta = vsubq_f32( + vreinterpretq_f32_m128(a), + vcvtq_f32_s32(r_trunc)); /* compute delta: delta = (a - [a]) */ + uint32x4_t is_delta_half = + vceqq_f32(delta, half); /* delta == +/- 0.5 */ + return vreinterpretq_m128_f32( + vcvtq_f32_s32(vbslq_s32(is_delta_half, r_even, r_normal))); + } else if (rounding == (_MM_FROUND_TO_NEG_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_DOWN)) { + return _mm_floor_ps(a); + } else if (rounding == (_MM_FROUND_TO_POS_INF | _MM_FROUND_NO_EXC) || + (rounding == _MM_FROUND_CUR_DIRECTION && + _MM_GET_ROUNDING_MODE() == _MM_ROUND_UP)) { + return _mm_ceil_ps(a); + } + return _mm_set_ps(v_float[3] > 0 ? floorf(v_float[3]) : ceilf(v_float[3]), + v_float[2] > 0 ? floorf(v_float[2]) : ceilf(v_float[2]), + v_float[1] > 0 ? floorf(v_float[1]) : ceilf(v_float[1]), + v_float[0] > 0 ? floorf(v_float[0]) : ceilf(v_float[0])); +#endif +} + +// Round the lower double-precision (64-bit) floating-point element in b using +// the rounding parameter, store the result as a double-precision floating-point +// element in the lower element of dst, and copy the upper element from a to the +// upper element of dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_sd +FORCE_INLINE __m128d _mm_round_sd(__m128d a, __m128d b, int rounding) +{ + return _mm_move_sd(a, _mm_round_pd(b, rounding)); +} + +// Round the lower single-precision (32-bit) floating-point element in b using +// the rounding parameter, store the result as a single-precision floating-point +// element in the lower element of dst, and copy the upper 3 packed elements +// from a to the upper elements of dst. Rounding is done according to the +// rounding[3:0] parameter, which can be one of: +// (_MM_FROUND_TO_NEAREST_INT |_MM_FROUND_NO_EXC) // round to nearest, and +// suppress exceptions +// (_MM_FROUND_TO_NEG_INF |_MM_FROUND_NO_EXC) // round down, and +// suppress exceptions +// (_MM_FROUND_TO_POS_INF |_MM_FROUND_NO_EXC) // round up, and suppress +// exceptions +// (_MM_FROUND_TO_ZERO |_MM_FROUND_NO_EXC) // truncate, and suppress +// exceptions _MM_FROUND_CUR_DIRECTION // use MXCSR.RC; see +// _MM_SET_ROUNDING_MODE +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_round_ss +FORCE_INLINE __m128 _mm_round_ss(__m128 a, __m128 b, int rounding) +{ + return _mm_move_ss(a, _mm_round_ps(b, rounding)); +} + +// Load 128-bits of integer data from memory into dst using a non-temporal +// memory hint. mem_addr must be aligned on a 16-byte boundary or a +// general-protection exception may be generated. +// +// dst[127:0] := MEM[mem_addr+127:mem_addr] +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_stream_load_si128 +FORCE_INLINE __m128i _mm_stream_load_si128(__m128i *p) +{ +#if __has_builtin(__builtin_nontemporal_store) + return __builtin_nontemporal_load(p); +#else + return vreinterpretq_m128i_s64(vld1q_s64((int64_t *) p)); +#endif +} + +// Compute the bitwise NOT of a and then AND with a 128-bit vector containing +// all 1's, and return 1 if the result is zero, otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_all_ones +FORCE_INLINE int _mm_test_all_ones(__m128i a) +{ + return (uint64_t) (vgetq_lane_s64(a, 0) & vgetq_lane_s64(a, 1)) == + ~(uint64_t) 0; +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and +// mask, and return 1 if the result is zero, otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_test_all_zeros +FORCE_INLINE int _mm_test_all_zeros(__m128i a, __m128i mask) +{ + int64x2_t a_and_mask = + vandq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(mask)); + return !(vgetq_lane_s64(a_and_mask, 0) | vgetq_lane_s64(a_and_mask, 1)); +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and +// mask, and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute +// the bitwise NOT of a and then AND with mask, and set CF to 1 if the result is +// zero, otherwise set CF to 0. Return 1 if both the ZF and CF values are zero, +// otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=mm_test_mix_ones_zero +FORCE_INLINE int _mm_test_mix_ones_zeros(__m128i a, __m128i mask) +{ + uint64x2_t zf = + vandq_u64(vreinterpretq_u64_m128i(mask), vreinterpretq_u64_m128i(a)); + uint64x2_t cf = + vbicq_u64(vreinterpretq_u64_m128i(mask), vreinterpretq_u64_m128i(a)); + uint64x2_t result = vandq_u64(zf, cf); + return !(vgetq_lane_u64(result, 0) | vgetq_lane_u64(result, 1)); +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and b, +// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the +// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, +// otherwise set CF to 0. Return the CF value. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testc_si128 +FORCE_INLINE int _mm_testc_si128(__m128i a, __m128i b) +{ + int64x2_t s64 = + vbicq_s64(vreinterpretq_s64_m128i(b), vreinterpretq_s64_m128i(a)); + return !(vgetq_lane_s64(s64, 0) | vgetq_lane_s64(s64, 1)); +} + +// Compute the bitwise AND of 128 bits (representing integer data) in a and b, +// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the +// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, +// otherwise set CF to 0. Return 1 if both the ZF and CF values are zero, +// otherwise return 0. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testnzc_si128 +#define _mm_testnzc_si128(a, b) _mm_test_mix_ones_zeros(a, b) + +// Compute the bitwise AND of 128 bits (representing integer data) in a and b, +// and set ZF to 1 if the result is zero, otherwise set ZF to 0. Compute the +// bitwise NOT of a and then AND with b, and set CF to 1 if the result is zero, +// otherwise set CF to 0. Return the ZF value. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_testz_si128 +FORCE_INLINE int _mm_testz_si128(__m128i a, __m128i b) +{ + int64x2_t s64 = + vandq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b)); + return !(vgetq_lane_s64(s64, 0) | vgetq_lane_s64(s64, 1)); +} + +/* SSE4.2 */ + +const static uint16_t _sse2neon_cmpestr_mask16b[8] ALIGN_STRUCT(16) = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, +}; +const static uint8_t _sse2neon_cmpestr_mask8b[16] ALIGN_STRUCT(16) = { + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, +}; + +/* specify the source data format */ +#define _SIDD_UBYTE_OPS 0x00 /* unsigned 8-bit characters */ +#define _SIDD_UWORD_OPS 0x01 /* unsigned 16-bit characters */ +#define _SIDD_SBYTE_OPS 0x02 /* signed 8-bit characters */ +#define _SIDD_SWORD_OPS 0x03 /* signed 16-bit characters */ + +/* specify the comparison operation */ +#define _SIDD_CMP_EQUAL_ANY 0x00 /* compare equal any: strchr */ +#define _SIDD_CMP_RANGES 0x04 /* compare ranges */ +#define _SIDD_CMP_EQUAL_EACH 0x08 /* compare equal each: strcmp */ +#define _SIDD_CMP_EQUAL_ORDERED 0x0C /* compare equal ordered */ + +/* specify the polarity */ +#define _SIDD_POSITIVE_POLARITY 0x00 +#define _SIDD_MASKED_POSITIVE_POLARITY 0x20 +#define _SIDD_NEGATIVE_POLARITY 0x10 /* negate results */ +#define _SIDD_MASKED_NEGATIVE_POLARITY \ + 0x30 /* negate results only before end of string */ + +/* specify the output selection in _mm_cmpXstri */ +#define _SIDD_LEAST_SIGNIFICANT 0x00 +#define _SIDD_MOST_SIGNIFICANT 0x40 + +/* specify the output selection in _mm_cmpXstrm */ +#define _SIDD_BIT_MASK 0x00 +#define _SIDD_UNIT_MASK 0x40 + +/* Pattern Matching for C macros. + * https://github.com/pfultz2/Cloak/wiki/C-Preprocessor-tricks,-tips,-and-idioms + */ + +/* catenate */ +#define SSE2NEON_PRIMITIVE_CAT(a, ...) a##__VA_ARGS__ +#define SSE2NEON_CAT(a, b) SSE2NEON_PRIMITIVE_CAT(a, b) + +#define SSE2NEON_IIF(c) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_IIF_, c) +/* run the 2nd parameter */ +#define SSE2NEON_IIF_0(t, ...) __VA_ARGS__ +/* run the 1st parameter */ +#define SSE2NEON_IIF_1(t, ...) t + +#define SSE2NEON_COMPL(b) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_COMPL_, b) +#define SSE2NEON_COMPL_0 1 +#define SSE2NEON_COMPL_1 0 + +#define SSE2NEON_DEC(x) SSE2NEON_PRIMITIVE_CAT(SSE2NEON_DEC_, x) +#define SSE2NEON_DEC_1 0 +#define SSE2NEON_DEC_2 1 +#define SSE2NEON_DEC_3 2 +#define SSE2NEON_DEC_4 3 +#define SSE2NEON_DEC_5 4 +#define SSE2NEON_DEC_6 5 +#define SSE2NEON_DEC_7 6 +#define SSE2NEON_DEC_8 7 +#define SSE2NEON_DEC_9 8 +#define SSE2NEON_DEC_10 9 +#define SSE2NEON_DEC_11 10 +#define SSE2NEON_DEC_12 11 +#define SSE2NEON_DEC_13 12 +#define SSE2NEON_DEC_14 13 +#define SSE2NEON_DEC_15 14 +#define SSE2NEON_DEC_16 15 + +/* detection */ +#define SSE2NEON_CHECK_N(x, n, ...) n +#define SSE2NEON_CHECK(...) SSE2NEON_CHECK_N(__VA_ARGS__, 0, ) +#define SSE2NEON_PROBE(x) x, 1, + +#define SSE2NEON_NOT(x) SSE2NEON_CHECK(SSE2NEON_PRIMITIVE_CAT(SSE2NEON_NOT_, x)) +#define SSE2NEON_NOT_0 SSE2NEON_PROBE(~) + +#define SSE2NEON_BOOL(x) SSE2NEON_COMPL(SSE2NEON_NOT(x)) +#define SSE2NEON_IF(c) SSE2NEON_IIF(SSE2NEON_BOOL(c)) + +#define SSE2NEON_EAT(...) +#define SSE2NEON_EXPAND(...) __VA_ARGS__ +#define SSE2NEON_WHEN(c) SSE2NEON_IF(c)(SSE2NEON_EXPAND, SSE2NEON_EAT) + +/* recursion */ +/* deferred expression */ +#define SSE2NEON_EMPTY() +#define SSE2NEON_DEFER(id) id SSE2NEON_EMPTY() +#define SSE2NEON_OBSTRUCT(...) __VA_ARGS__ SSE2NEON_DEFER(SSE2NEON_EMPTY)() +#define SSE2NEON_EXPAND(...) __VA_ARGS__ + +#define SSE2NEON_EVAL(...) \ + SSE2NEON_EVAL1(SSE2NEON_EVAL1(SSE2NEON_EVAL1(__VA_ARGS__))) +#define SSE2NEON_EVAL1(...) \ + SSE2NEON_EVAL2(SSE2NEON_EVAL2(SSE2NEON_EVAL2(__VA_ARGS__))) +#define SSE2NEON_EVAL2(...) \ + SSE2NEON_EVAL3(SSE2NEON_EVAL3(SSE2NEON_EVAL3(__VA_ARGS__))) +#define SSE2NEON_EVAL3(...) __VA_ARGS__ + +#define SSE2NEON_REPEAT(count, macro, ...) \ + SSE2NEON_WHEN(count) \ + (SSE2NEON_OBSTRUCT(SSE2NEON_REPEAT_INDIRECT)()( \ + SSE2NEON_DEC(count), macro, \ + __VA_ARGS__) SSE2NEON_OBSTRUCT(macro)(SSE2NEON_DEC(count), \ + __VA_ARGS__)) +#define SSE2NEON_REPEAT_INDIRECT() SSE2NEON_REPEAT + +#define SSE2NEON_SIZE_OF_byte 8 +#define SSE2NEON_NUMBER_OF_LANES_byte 16 +#define SSE2NEON_SIZE_OF_word 16 +#define SSE2NEON_NUMBER_OF_LANES_word 8 + +#define SSE2NEON_COMPARE_EQUAL_THEN_FILL_LANE(i, type) \ + mtx[i] = vreinterpretq_m128i_##type(vceqq_##type( \ + vdupq_n_##type(vgetq_lane_##type(vreinterpretq_##type##_m128i(b), i)), \ + vreinterpretq_##type##_m128i(a))); + +#define SSE2NEON_FILL_LANE(i, type) \ + vec_b[i] = \ + vdupq_n_##type(vgetq_lane_##type(vreinterpretq_##type##_m128i(b), i)); + +#define PCMPSTR_RANGES(a, b, mtx, data_type_prefix, type_prefix, size, \ + number_of_lanes, byte_or_word) \ + do { \ + SSE2NEON_CAT( \ + data_type_prefix, \ + SSE2NEON_CAT(size, \ + SSE2NEON_CAT(x, SSE2NEON_CAT(number_of_lanes, _t)))) \ + vec_b[number_of_lanes]; \ + __m128i mask = SSE2NEON_IIF(byte_or_word)( \ + vreinterpretq_m128i_u16(vdupq_n_u16(0xff)), \ + vreinterpretq_m128i_u32(vdupq_n_u32(0xffff))); \ + SSE2NEON_EVAL(SSE2NEON_REPEAT(number_of_lanes, SSE2NEON_FILL_LANE, \ + SSE2NEON_CAT(type_prefix, size))) \ + for (int i = 0; i < number_of_lanes; i++) { \ + mtx[i] = SSE2NEON_CAT(vreinterpretq_m128i_u, \ + size)(SSE2NEON_CAT(vbslq_u, size)( \ + SSE2NEON_CAT(vreinterpretq_u, \ + SSE2NEON_CAT(size, _m128i))(mask), \ + SSE2NEON_CAT(vcgeq_, SSE2NEON_CAT(type_prefix, size))( \ + vec_b[i], \ + SSE2NEON_CAT( \ + vreinterpretq_, \ + SSE2NEON_CAT(type_prefix, \ + SSE2NEON_CAT(size, _m128i(a))))), \ + SSE2NEON_CAT(vcleq_, SSE2NEON_CAT(type_prefix, size))( \ + vec_b[i], \ + SSE2NEON_CAT( \ + vreinterpretq_, \ + SSE2NEON_CAT(type_prefix, \ + SSE2NEON_CAT(size, _m128i(a))))))); \ + } \ + } while (0) + +#define PCMPSTR_EQ(a, b, mtx, size, number_of_lanes) \ + do { \ + SSE2NEON_EVAL(SSE2NEON_REPEAT(number_of_lanes, \ + SSE2NEON_COMPARE_EQUAL_THEN_FILL_LANE, \ + SSE2NEON_CAT(u, size))) \ + } while (0) + +#define SSE2NEON_CMP_EQUAL_ANY_IMPL(type) \ + static int _sse2neon_cmp_##type##_equal_any(__m128i a, int la, __m128i b, \ + int lb) \ + { \ + __m128i mtx[16]; \ + PCMPSTR_EQ(a, b, mtx, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type)); \ + return SSE2NEON_CAT( \ + _sse2neon_aggregate_equal_any_, \ + SSE2NEON_CAT( \ + SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(x, SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, \ + type))))(la, lb, mtx); \ + } + +#define SSE2NEON_CMP_RANGES_IMPL(type, data_type, us, byte_or_word) \ + static int _sse2neon_cmp_##us##type##_ranges(__m128i a, int la, __m128i b, \ + int lb) \ + { \ + __m128i mtx[16]; \ + PCMPSTR_RANGES( \ + a, b, mtx, data_type, us, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type), byte_or_word); \ + return SSE2NEON_CAT( \ + _sse2neon_aggregate_ranges_, \ + SSE2NEON_CAT( \ + SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(x, SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, \ + type))))(la, lb, mtx); \ + } + +#define SSE2NEON_CMP_EQUAL_ORDERED_IMPL(type) \ + static int _sse2neon_cmp_##type##_equal_ordered(__m128i a, int la, \ + __m128i b, int lb) \ + { \ + __m128i mtx[16]; \ + PCMPSTR_EQ(a, b, mtx, SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type)); \ + return SSE2NEON_CAT( \ + _sse2neon_aggregate_equal_ordered_, \ + SSE2NEON_CAT( \ + SSE2NEON_CAT(SSE2NEON_SIZE_OF_, type), \ + SSE2NEON_CAT(x, \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type))))( \ + SSE2NEON_CAT(SSE2NEON_NUMBER_OF_LANES_, type), la, lb, mtx); \ + } + +static int _sse2neon_aggregate_equal_any_8x16(int la, int lb, __m128i mtx[16]) +{ + int res = 0; + int m = (1 << la) - 1; + uint8x8_t vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); + uint8x8_t t_lo = vtst_u8(vdup_n_u8(m & 0xff), vec_mask); + uint8x8_t t_hi = vtst_u8(vdup_n_u8(m >> 8), vec_mask); + uint8x16_t vec = vcombine_u8(t_lo, t_hi); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u8( + vandq_u8(vec, vreinterpretq_u8_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u8( + vshrq_n_u8(vreinterpretq_u8_m128i(mtx[j]), 7)); + int tmp = _sse2neon_vaddvq_u8(vreinterpretq_u8_m128i(mtx[j])) ? 1 : 0; + res |= (tmp << j); + } + return res; +} + +static int _sse2neon_aggregate_equal_any_16x8(int la, int lb, __m128i mtx[16]) +{ + int res = 0; + int m = (1 << la) - 1; + uint16x8_t vec = + vtstq_u16(vdupq_n_u16(m), vld1q_u16(_sse2neon_cmpestr_mask16b)); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u16( + vandq_u16(vec, vreinterpretq_u16_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u16( + vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 15)); + int tmp = _sse2neon_vaddvq_u16(vreinterpretq_u16_m128i(mtx[j])) ? 1 : 0; + res |= (tmp << j); + } + return res; +} + +/* clang-format off */ +#define SSE2NEON_GENERATE_CMP_EQUAL_ANY(prefix) \ + prefix##IMPL(byte) \ + prefix##IMPL(word) +/* clang-format on */ + +SSE2NEON_GENERATE_CMP_EQUAL_ANY(SSE2NEON_CMP_EQUAL_ANY_) + +static int _sse2neon_aggregate_ranges_16x8(int la, int lb, __m128i mtx[16]) +{ + int res = 0; + int m = (1 << la) - 1; + uint16x8_t vec = + vtstq_u16(vdupq_n_u16(m), vld1q_u16(_sse2neon_cmpestr_mask16b)); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u16( + vandq_u16(vec, vreinterpretq_u16_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u16( + vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 15)); + __m128i tmp = vreinterpretq_m128i_u32( + vshrq_n_u32(vreinterpretq_u32_m128i(mtx[j]), 16)); + uint32x4_t vec_res = vandq_u32(vreinterpretq_u32_m128i(mtx[j]), + vreinterpretq_u32_m128i(tmp)); +#if defined(__aarch64__) + int t = vaddvq_u32(vec_res) ? 1 : 0; +#else + uint64x2_t sumh = vpaddlq_u32(vec_res); + int t = vgetq_lane_u64(sumh, 0) + vgetq_lane_u64(sumh, 1); +#endif + res |= (t << j); + } + return res; +} + +static int _sse2neon_aggregate_ranges_8x16(int la, int lb, __m128i mtx[16]) +{ + int res = 0; + int m = (1 << la) - 1; + uint8x8_t vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); + uint8x8_t t_lo = vtst_u8(vdup_n_u8(m & 0xff), vec_mask); + uint8x8_t t_hi = vtst_u8(vdup_n_u8(m >> 8), vec_mask); + uint8x16_t vec = vcombine_u8(t_lo, t_hi); + for (int j = 0; j < lb; j++) { + mtx[j] = vreinterpretq_m128i_u8( + vandq_u8(vec, vreinterpretq_u8_m128i(mtx[j]))); + mtx[j] = vreinterpretq_m128i_u8( + vshrq_n_u8(vreinterpretq_u8_m128i(mtx[j]), 7)); + __m128i tmp = vreinterpretq_m128i_u16( + vshrq_n_u16(vreinterpretq_u16_m128i(mtx[j]), 8)); + uint16x8_t vec_res = vandq_u16(vreinterpretq_u16_m128i(mtx[j]), + vreinterpretq_u16_m128i(tmp)); + int t = _sse2neon_vaddvq_u16(vec_res) ? 1 : 0; + res |= (t << j); + } + return res; +} + +#define SSE2NEON_CMP_RANGES_IS_BYTE 1 +#define SSE2NEON_CMP_RANGES_IS_WORD 0 + +/* clang-format off */ +#define SSE2NEON_GENERATE_CMP_RANGES(prefix) \ + prefix##IMPL(byte, uint, u, prefix##IS_BYTE) \ + prefix##IMPL(byte, int, s, prefix##IS_BYTE) \ + prefix##IMPL(word, uint, u, prefix##IS_WORD) \ + prefix##IMPL(word, int, s, prefix##IS_WORD) +/* clang-format on */ + +SSE2NEON_GENERATE_CMP_RANGES(SSE2NEON_CMP_RANGES_) + +#undef SSE2NEON_CMP_RANGES_IS_BYTE +#undef SSE2NEON_CMP_RANGES_IS_WORD + +static int _sse2neon_cmp_byte_equal_each(__m128i a, int la, __m128i b, int lb) +{ + uint8x16_t mtx = + vceqq_u8(vreinterpretq_u8_m128i(a), vreinterpretq_u8_m128i(b)); + int m0 = (la < lb) ? 0 : ((1 << la) - (1 << lb)); + int m1 = 0x10000 - (1 << la); + int tb = 0x10000 - (1 << lb); + uint8x8_t vec_mask, vec0_lo, vec0_hi, vec1_lo, vec1_hi; + uint8x8_t tmp_lo, tmp_hi, res_lo, res_hi; + vec_mask = vld1_u8(_sse2neon_cmpestr_mask8b); + vec0_lo = vtst_u8(vdup_n_u8(m0), vec_mask); + vec0_hi = vtst_u8(vdup_n_u8(m0 >> 8), vec_mask); + vec1_lo = vtst_u8(vdup_n_u8(m1), vec_mask); + vec1_hi = vtst_u8(vdup_n_u8(m1 >> 8), vec_mask); + tmp_lo = vtst_u8(vdup_n_u8(tb), vec_mask); + tmp_hi = vtst_u8(vdup_n_u8(tb >> 8), vec_mask); + + res_lo = vbsl_u8(vec0_lo, vdup_n_u8(0), vget_low_u8(mtx)); + res_hi = vbsl_u8(vec0_hi, vdup_n_u8(0), vget_high_u8(mtx)); + res_lo = vbsl_u8(vec1_lo, tmp_lo, res_lo); + res_hi = vbsl_u8(vec1_hi, tmp_hi, res_hi); + res_lo = vand_u8(res_lo, vec_mask); + res_hi = vand_u8(res_hi, vec_mask); + + int res = _sse2neon_vaddv_u8(res_lo) + (_sse2neon_vaddv_u8(res_hi) << 8); + return res; +} + +static int _sse2neon_cmp_word_equal_each(__m128i a, int la, __m128i b, int lb) +{ + uint16x8_t mtx = + vceqq_u16(vreinterpretq_u16_m128i(a), vreinterpretq_u16_m128i(b)); + int m0 = (la < lb) ? 0 : ((1 << la) - (1 << lb)); + int m1 = 0x100 - (1 << la); + int tb = 0x100 - (1 << lb); + uint16x8_t vec_mask = vld1q_u16(_sse2neon_cmpestr_mask16b); + uint16x8_t vec0 = vtstq_u16(vdupq_n_u16(m0), vec_mask); + uint16x8_t vec1 = vtstq_u16(vdupq_n_u16(m1), vec_mask); + uint16x8_t tmp = vtstq_u16(vdupq_n_u16(tb), vec_mask); + mtx = vbslq_u16(vec0, vdupq_n_u16(0), mtx); + mtx = vbslq_u16(vec1, tmp, mtx); + mtx = vandq_u16(mtx, vec_mask); + return _sse2neon_vaddvq_u16(mtx); +} + +#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UBYTE 1 +#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UWORD 0 + +#define SSE2NEON_AGGREGATE_EQUAL_ORDER_IMPL(size, number_of_lanes, data_type) \ + static int _sse2neon_aggregate_equal_ordered_##size##x##number_of_lanes( \ + int bound, int la, int lb, __m128i mtx[16]) \ + { \ + int res = 0; \ + int m1 = SSE2NEON_IIF(data_type)(0x10000, 0x100) - (1 << la); \ + uint##size##x8_t vec_mask = SSE2NEON_IIF(data_type)( \ + vld1_u##size(_sse2neon_cmpestr_mask##size##b), \ + vld1q_u##size(_sse2neon_cmpestr_mask##size##b)); \ + uint##size##x##number_of_lanes##_t vec1 = SSE2NEON_IIF(data_type)( \ + vcombine_u##size(vtst_u##size(vdup_n_u##size(m1), vec_mask), \ + vtst_u##size(vdup_n_u##size(m1 >> 8), vec_mask)), \ + vtstq_u##size(vdupq_n_u##size(m1), vec_mask)); \ + uint##size##x##number_of_lanes##_t vec_minusone = vdupq_n_u##size(-1); \ + uint##size##x##number_of_lanes##_t vec_zero = vdupq_n_u##size(0); \ + for (int j = 0; j < lb; j++) { \ + mtx[j] = vreinterpretq_m128i_u##size(vbslq_u##size( \ + vec1, vec_minusone, vreinterpretq_u##size##_m128i(mtx[j]))); \ + } \ + for (int j = lb; j < bound; j++) { \ + mtx[j] = vreinterpretq_m128i_u##size( \ + vbslq_u##size(vec1, vec_minusone, vec_zero)); \ + } \ + unsigned SSE2NEON_IIF(data_type)(char, short) *ptr = \ + (unsigned SSE2NEON_IIF(data_type)(char, short) *) mtx; \ + for (int i = 0; i < bound; i++) { \ + int val = 1; \ + for (int j = 0, k = i; j < bound - i && k < bound; j++, k++) \ + val &= ptr[k * bound + j]; \ + res += val << i; \ + } \ + return res; \ + } + +/* clang-format off */ +#define SSE2NEON_GENERATE_AGGREGATE_EQUAL_ORDER(prefix) \ + prefix##IMPL(8, 16, prefix##IS_UBYTE) \ + prefix##IMPL(16, 8, prefix##IS_UWORD) +/* clang-format on */ + +SSE2NEON_GENERATE_AGGREGATE_EQUAL_ORDER(SSE2NEON_AGGREGATE_EQUAL_ORDER_) + +#undef SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UBYTE +#undef SSE2NEON_AGGREGATE_EQUAL_ORDER_IS_UWORD + +/* clang-format off */ +#define SSE2NEON_GENERATE_CMP_EQUAL_ORDERED(prefix) \ + prefix##IMPL(byte) \ + prefix##IMPL(word) +/* clang-format on */ + +SSE2NEON_GENERATE_CMP_EQUAL_ORDERED(SSE2NEON_CMP_EQUAL_ORDERED_) + +#define SSE2NEON_CMPESTR_LIST \ + _(CMP_UBYTE_EQUAL_ANY, cmp_byte_equal_any) \ + _(CMP_UWORD_EQUAL_ANY, cmp_word_equal_any) \ + _(CMP_SBYTE_EQUAL_ANY, cmp_byte_equal_any) \ + _(CMP_SWORD_EQUAL_ANY, cmp_word_equal_any) \ + _(CMP_UBYTE_RANGES, cmp_ubyte_ranges) \ + _(CMP_UWORD_RANGES, cmp_uword_ranges) \ + _(CMP_SBYTE_RANGES, cmp_sbyte_ranges) \ + _(CMP_SWORD_RANGES, cmp_sword_ranges) \ + _(CMP_UBYTE_EQUAL_EACH, cmp_byte_equal_each) \ + _(CMP_UWORD_EQUAL_EACH, cmp_word_equal_each) \ + _(CMP_SBYTE_EQUAL_EACH, cmp_byte_equal_each) \ + _(CMP_SWORD_EQUAL_EACH, cmp_word_equal_each) \ + _(CMP_UBYTE_EQUAL_ORDERED, cmp_byte_equal_ordered) \ + _(CMP_UWORD_EQUAL_ORDERED, cmp_word_equal_ordered) \ + _(CMP_SBYTE_EQUAL_ORDERED, cmp_byte_equal_ordered) \ + _(CMP_SWORD_EQUAL_ORDERED, cmp_word_equal_ordered) + +enum { +#define _(name, func_suffix) name, + SSE2NEON_CMPESTR_LIST +#undef _ +}; +typedef int (*cmpestr_func_t)(__m128i a, int la, __m128i b, int lb); +static cmpestr_func_t _sse2neon_cmpfunc_table[] = { +#define _(name, func_suffix) _sse2neon_##func_suffix, + SSE2NEON_CMPESTR_LIST +#undef _ +}; + +FORCE_INLINE int _sse2neon_sido_negative(int res, int lb, int imm8, int bound) +{ + switch (imm8 & 0x30) { + case _SIDD_NEGATIVE_POLARITY: + res ^= 0xffffffff; + break; + case _SIDD_MASKED_NEGATIVE_POLARITY: + res ^= (1 << lb) - 1; + break; + default: + break; + } + + return res & ((bound == 8) ? 0xFF : 0xFFFF); +} + +FORCE_INLINE int _sse2neon_clz(unsigned int x) +{ +#if _MSC_VER + DWORD cnt = 0; + if (_BitScanForward(&cnt, x)) + return cnt; + return 32; +#else + return x != 0 ? __builtin_clz(x) : 32; +#endif +} + +FORCE_INLINE int _sse2neon_ctz(unsigned int x) +{ +#if _MSC_VER + DWORD cnt = 0; + if (_BitScanReverse(&cnt, x)) + return 31 - cnt; + return 32; +#else + return x != 0 ? __builtin_ctz(x) : 32; +#endif +} + +FORCE_INLINE int _sse2neon_ctzll(unsigned long long x) +{ +#if _MSC_VER + unsigned long cnt; +#ifdef defined(SSE2NEON_HAS_BITSCAN64) + (defined(_M_AMD64) || defined(__x86_64__)) + if((_BitScanForward64(&cnt, x)) + return (int)(cnt); +#else + if (_BitScanForward(&cnt, (unsigned long) (x))) + return (int) cnt; + if (_BitScanForward(&cnt, (unsigned long) (x >> 32))) + return (int) (cnt + 32); +#endif + return 64; +#else + return x != 0 ? __builtin_ctzll(x) : 64; +#endif +} + +#define SSE2NEON_MIN(x, y) (x) < (y) ? (x) : (y) + +#define SSE2NEON_CMPSTR_SET_UPPER(var, imm) \ + const int var = (imm & 0x01) ? 8 : 16 + +#define SSE2NEON_CMPESTRX_LEN_PAIR(a, b, la, lb) \ + int tmp1 = la ^ (la >> 31); \ + la = tmp1 - (la >> 31); \ + int tmp2 = lb ^ (lb >> 31); \ + lb = tmp2 - (lb >> 31); \ + la = SSE2NEON_MIN(la, bound); \ + lb = SSE2NEON_MIN(lb, bound) + +// Compare all pairs of character in string a and b, +// then aggregate the result. +// As the only difference of PCMPESTR* and PCMPISTR* is the way to calculate the +// length of string, we use SSE2NEON_CMP{I,E}STRX_GET_LEN to get the length of +// string a and b. +#define SSE2NEON_COMP_AGG(a, b, la, lb, imm8, IE) \ + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); \ + SSE2NEON_##IE##_LEN_PAIR(a, b, la, lb); \ + int r2 = (_sse2neon_cmpfunc_table[imm8 & 0x0f])(a, la, b, lb); \ + r2 = _sse2neon_sido_negative(r2, lb, imm8, bound) + +#define SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8) \ + return (r2 == 0) ? bound \ + : ((imm8 & 0x40) ? (31 - _sse2neon_clz(r2)) \ + : _sse2neon_ctz(r2)) + +#define SSE2NEON_CMPSTR_GENERATE_MASK(dst) \ + __m128i dst = vreinterpretq_m128i_u8(vdupq_n_u8(0)); \ + if (imm8 & 0x40) { \ + if (bound == 8) { \ + uint16x8_t tmp = vtstq_u16(vdupq_n_u16(r2), \ + vld1q_u16(_sse2neon_cmpestr_mask16b)); \ + dst = vreinterpretq_m128i_u16(vbslq_u16( \ + tmp, vdupq_n_u16(-1), vreinterpretq_u16_m128i(dst))); \ + } else { \ + uint8x16_t vec_r2 = \ + vcombine_u8(vdup_n_u8(r2), vdup_n_u8(r2 >> 8)); \ + uint8x16_t tmp = \ + vtstq_u8(vec_r2, vld1q_u8(_sse2neon_cmpestr_mask8b)); \ + dst = vreinterpretq_m128i_u8( \ + vbslq_u8(tmp, vdupq_n_u8(-1), vreinterpretq_u8_m128i(dst))); \ + } \ + } else { \ + if (bound == 16) { \ + dst = vreinterpretq_m128i_u16( \ + vsetq_lane_u16(r2 & 0xffff, vreinterpretq_u16_m128i(dst), 0)); \ + } else { \ + dst = vreinterpretq_m128i_u8( \ + vsetq_lane_u8(r2 & 0xff, vreinterpretq_u8_m128i(dst), 0)); \ + } \ + } \ + return dst + +// Compare packed strings in a and b with lengths la and lb using the control +// in imm8, and returns 1 if b did not contain a null character and the +// resulting mask was zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestra +FORCE_INLINE int _mm_cmpestra(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + int lb_cpy = lb; + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + return !r2 & (lb_cpy > bound); +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns 1 if the resulting mask was non-zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrc +FORCE_INLINE int _mm_cmpestrc(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + return r2 != 0; +} + +// Compare packed strings in a and b with lengths la and lb using the control +// in imm8, and store the generated index in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestri +FORCE_INLINE int _mm_cmpestri(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8); +} + +// Compare packed strings in a and b with lengths la and lb using the control +// in imm8, and store the generated mask in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrm +FORCE_INLINE __m128i +_mm_cmpestrm(__m128i a, int la, __m128i b, int lb, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + SSE2NEON_CMPSTR_GENERATE_MASK(dst); +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns bit 0 of the resulting bit mask. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestro +FORCE_INLINE int _mm_cmpestro(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPESTRX); + return r2 & 1; +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns 1 if any character in a was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrs +FORCE_INLINE int _mm_cmpestrs(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + return la <= (bound - 1); +} + +// Compare packed strings in a and b with lengths la and lb using the control in +// imm8, and returns 1 if any character in b was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpestrz +FORCE_INLINE int _mm_cmpestrz(__m128i a, + int la, + __m128i b, + int lb, + const int imm8) +{ + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + return lb <= (bound - 1); +} + +#define SSE2NEON_CMPISTRX_LENGTH(str, len, imm8) \ + do { \ + if (imm8 & 0x01) { \ + uint16x8_t equal_mask_##str = \ + vceqq_u16(vreinterpretq_u16_m128i(str), vdupq_n_u16(0)); \ + uint8x8_t res_##str = vshrn_n_u16(equal_mask_##str, 4); \ + uint64_t matches_##str = \ + vget_lane_u64(vreinterpret_u64_u8(res_##str), 0); \ + len = _sse2neon_ctzll(matches_##str) >> 3; \ + } else { \ + uint16x8_t equal_mask_##str = vreinterpretq_u16_u8( \ + vceqq_u8(vreinterpretq_u8_m128i(str), vdupq_n_u8(0))); \ + uint8x8_t res_##str = vshrn_n_u16(equal_mask_##str, 4); \ + uint64_t matches_##str = \ + vget_lane_u64(vreinterpret_u64_u8(res_##str), 0); \ + len = _sse2neon_ctzll(matches_##str) >> 2; \ + } \ + } while (0) + +#define SSE2NEON_CMPISTRX_LEN_PAIR(a, b, la, lb) \ + int la, lb; \ + do { \ + SSE2NEON_CMPISTRX_LENGTH(a, la, imm8); \ + SSE2NEON_CMPISTRX_LENGTH(b, lb, imm8); \ + } while (0) + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if b did not contain a null character and the resulting +// mask was zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistra +FORCE_INLINE int _mm_cmpistra(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + return !r2 & (lb >= bound); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if the resulting mask was non-zero, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrc +FORCE_INLINE int _mm_cmpistrc(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + return r2 != 0; +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and store the generated index in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistri +FORCE_INLINE int _mm_cmpistri(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + SSE2NEON_CMPSTR_GENERATE_INDEX(r2, bound, imm8); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and store the generated mask in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrm +FORCE_INLINE __m128i _mm_cmpistrm(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + SSE2NEON_CMPSTR_GENERATE_MASK(dst); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns bit 0 of the resulting bit mask. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistro +FORCE_INLINE int _mm_cmpistro(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_COMP_AGG(a, b, la, lb, imm8, CMPISTRX); + return r2 & 1; +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if any character in a was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrs +FORCE_INLINE int _mm_cmpistrs(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + int la; + SSE2NEON_CMPISTRX_LENGTH(a, la, imm8); + return la <= (bound - 1); +} + +// Compare packed strings with implicit lengths in a and b using the control in +// imm8, and returns 1 if any character in b was null, and 0 otherwise. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_cmpistrz +FORCE_INLINE int _mm_cmpistrz(__m128i a, __m128i b, const int imm8) +{ + SSE2NEON_CMPSTR_SET_UPPER(bound, imm8); + int lb; + SSE2NEON_CMPISTRX_LENGTH(b, lb, imm8); + return lb <= (bound - 1); +} + +// Compares the 2 signed 64-bit integers in a and the 2 signed 64-bit integers +// in b for greater than. +FORCE_INLINE __m128i _mm_cmpgt_epi64(__m128i a, __m128i b) +{ +#if defined(__aarch64__) + return vreinterpretq_m128i_u64( + vcgtq_s64(vreinterpretq_s64_m128i(a), vreinterpretq_s64_m128i(b))); +#else + return vreinterpretq_m128i_s64(vshrq_n_s64( + vqsubq_s64(vreinterpretq_s64_m128i(b), vreinterpretq_s64_m128i(a)), + 63)); +#endif +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 16-bit integer v. +// https://msdn.microsoft.com/en-us/library/bb531411(v=vs.100) +FORCE_INLINE uint32_t _mm_crc32_u16(uint32_t crc, uint16_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32ch %w[c], %w[c], %w[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#elif (__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32) + crc = __crc32ch(crc, v); +#else + crc = _mm_crc32_u8(crc, v & 0xff); + crc = _mm_crc32_u8(crc, (v >> 8) & 0xff); +#endif + return crc; +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 32-bit integer v. +// https://msdn.microsoft.com/en-us/library/bb531394(v=vs.100) +FORCE_INLINE uint32_t _mm_crc32_u32(uint32_t crc, uint32_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32cw %w[c], %w[c], %w[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#elif (__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32) + crc = __crc32cw(crc, v); +#else + crc = _mm_crc32_u16(crc, v & 0xffff); + crc = _mm_crc32_u16(crc, (v >> 16) & 0xffff); +#endif + return crc; +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 64-bit integer v. +// https://msdn.microsoft.com/en-us/library/bb514033(v=vs.100) +FORCE_INLINE uint64_t _mm_crc32_u64(uint64_t crc, uint64_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32cx %w[c], %w[c], %x[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#else + crc = _mm_crc32_u32((uint32_t) (crc), v & 0xffffffff); + crc = _mm_crc32_u32((uint32_t) (crc), (v >> 32) & 0xffffffff); +#endif + return crc; +} + +// Starting with the initial value in crc, accumulates a CRC32 value for +// unsigned 8-bit integer v. +// https://msdn.microsoft.com/en-us/library/bb514036(v=vs.100) +FORCE_INLINE uint32_t _mm_crc32_u8(uint32_t crc, uint8_t v) +{ +#if defined(__aarch64__) && defined(__ARM_FEATURE_CRC32) + __asm__ __volatile__("crc32cb %w[c], %w[c], %w[v]\n\t" + : [c] "+r"(crc) + : [v] "r"(v)); +#elif (__ARM_ARCH == 8) && defined(__ARM_FEATURE_CRC32) + crc = __crc32cb(crc, v); +#else + crc ^= v; + for (int bit = 0; bit < 8; bit++) { + if (crc & 1) + crc = (crc >> 1) ^ UINT32_C(0x82f63b78); + else + crc = (crc >> 1); + } +#endif + return crc; +} + +/* AES */ + +#if !defined(__ARM_FEATURE_CRYPTO) +/* clang-format off */ +#define SSE2NEON_AES_SBOX(w) \ + { \ + w(0x63), w(0x7c), w(0x77), w(0x7b), w(0xf2), w(0x6b), w(0x6f), \ + w(0xc5), w(0x30), w(0x01), w(0x67), w(0x2b), w(0xfe), w(0xd7), \ + w(0xab), w(0x76), w(0xca), w(0x82), w(0xc9), w(0x7d), w(0xfa), \ + w(0x59), w(0x47), w(0xf0), w(0xad), w(0xd4), w(0xa2), w(0xaf), \ + w(0x9c), w(0xa4), w(0x72), w(0xc0), w(0xb7), w(0xfd), w(0x93), \ + w(0x26), w(0x36), w(0x3f), w(0xf7), w(0xcc), w(0x34), w(0xa5), \ + w(0xe5), w(0xf1), w(0x71), w(0xd8), w(0x31), w(0x15), w(0x04), \ + w(0xc7), w(0x23), w(0xc3), w(0x18), w(0x96), w(0x05), w(0x9a), \ + w(0x07), w(0x12), w(0x80), w(0xe2), w(0xeb), w(0x27), w(0xb2), \ + w(0x75), w(0x09), w(0x83), w(0x2c), w(0x1a), w(0x1b), w(0x6e), \ + w(0x5a), w(0xa0), w(0x52), w(0x3b), w(0xd6), w(0xb3), w(0x29), \ + w(0xe3), w(0x2f), w(0x84), w(0x53), w(0xd1), w(0x00), w(0xed), \ + w(0x20), w(0xfc), w(0xb1), w(0x5b), w(0x6a), w(0xcb), w(0xbe), \ + w(0x39), w(0x4a), w(0x4c), w(0x58), w(0xcf), w(0xd0), w(0xef), \ + w(0xaa), w(0xfb), w(0x43), w(0x4d), w(0x33), w(0x85), w(0x45), \ + w(0xf9), w(0x02), w(0x7f), w(0x50), w(0x3c), w(0x9f), w(0xa8), \ + w(0x51), w(0xa3), w(0x40), w(0x8f), w(0x92), w(0x9d), w(0x38), \ + w(0xf5), w(0xbc), w(0xb6), w(0xda), w(0x21), w(0x10), w(0xff), \ + w(0xf3), w(0xd2), w(0xcd), w(0x0c), w(0x13), w(0xec), w(0x5f), \ + w(0x97), w(0x44), w(0x17), w(0xc4), w(0xa7), w(0x7e), w(0x3d), \ + w(0x64), w(0x5d), w(0x19), w(0x73), w(0x60), w(0x81), w(0x4f), \ + w(0xdc), w(0x22), w(0x2a), w(0x90), w(0x88), w(0x46), w(0xee), \ + w(0xb8), w(0x14), w(0xde), w(0x5e), w(0x0b), w(0xdb), w(0xe0), \ + w(0x32), w(0x3a), w(0x0a), w(0x49), w(0x06), w(0x24), w(0x5c), \ + w(0xc2), w(0xd3), w(0xac), w(0x62), w(0x91), w(0x95), w(0xe4), \ + w(0x79), w(0xe7), w(0xc8), w(0x37), w(0x6d), w(0x8d), w(0xd5), \ + w(0x4e), w(0xa9), w(0x6c), w(0x56), w(0xf4), w(0xea), w(0x65), \ + w(0x7a), w(0xae), w(0x08), w(0xba), w(0x78), w(0x25), w(0x2e), \ + w(0x1c), w(0xa6), w(0xb4), w(0xc6), w(0xe8), w(0xdd), w(0x74), \ + w(0x1f), w(0x4b), w(0xbd), w(0x8b), w(0x8a), w(0x70), w(0x3e), \ + w(0xb5), w(0x66), w(0x48), w(0x03), w(0xf6), w(0x0e), w(0x61), \ + w(0x35), w(0x57), w(0xb9), w(0x86), w(0xc1), w(0x1d), w(0x9e), \ + w(0xe1), w(0xf8), w(0x98), w(0x11), w(0x69), w(0xd9), w(0x8e), \ + w(0x94), w(0x9b), w(0x1e), w(0x87), w(0xe9), w(0xce), w(0x55), \ + w(0x28), w(0xdf), w(0x8c), w(0xa1), w(0x89), w(0x0d), w(0xbf), \ + w(0xe6), w(0x42), w(0x68), w(0x41), w(0x99), w(0x2d), w(0x0f), \ + w(0xb0), w(0x54), w(0xbb), w(0x16) \ + } +#define SSE2NEON_AES_RSBOX(w) \ + { \ + w(0x52), w(0x09), w(0x6a), w(0xd5), w(0x30), w(0x36), w(0xa5), \ + w(0x38), w(0xbf), w(0x40), w(0xa3), w(0x9e), w(0x81), w(0xf3), \ + w(0xd7), w(0xfb), w(0x7c), w(0xe3), w(0x39), w(0x82), w(0x9b), \ + w(0x2f), w(0xff), w(0x87), w(0x34), w(0x8e), w(0x43), w(0x44), \ + w(0xc4), w(0xde), w(0xe9), w(0xcb), w(0x54), w(0x7b), w(0x94), \ + w(0x32), w(0xa6), w(0xc2), w(0x23), w(0x3d), w(0xee), w(0x4c), \ + w(0x95), w(0x0b), w(0x42), w(0xfa), w(0xc3), w(0x4e), w(0x08), \ + w(0x2e), w(0xa1), w(0x66), w(0x28), w(0xd9), w(0x24), w(0xb2), \ + w(0x76), w(0x5b), w(0xa2), w(0x49), w(0x6d), w(0x8b), w(0xd1), \ + w(0x25), w(0x72), w(0xf8), w(0xf6), w(0x64), w(0x86), w(0x68), \ + w(0x98), w(0x16), w(0xd4), w(0xa4), w(0x5c), w(0xcc), w(0x5d), \ + w(0x65), w(0xb6), w(0x92), w(0x6c), w(0x70), w(0x48), w(0x50), \ + w(0xfd), w(0xed), w(0xb9), w(0xda), w(0x5e), w(0x15), w(0x46), \ + w(0x57), w(0xa7), w(0x8d), w(0x9d), w(0x84), w(0x90), w(0xd8), \ + w(0xab), w(0x00), w(0x8c), w(0xbc), w(0xd3), w(0x0a), w(0xf7), \ + w(0xe4), w(0x58), w(0x05), w(0xb8), w(0xb3), w(0x45), w(0x06), \ + w(0xd0), w(0x2c), w(0x1e), w(0x8f), w(0xca), w(0x3f), w(0x0f), \ + w(0x02), w(0xc1), w(0xaf), w(0xbd), w(0x03), w(0x01), w(0x13), \ + w(0x8a), w(0x6b), w(0x3a), w(0x91), w(0x11), w(0x41), w(0x4f), \ + w(0x67), w(0xdc), w(0xea), w(0x97), w(0xf2), w(0xcf), w(0xce), \ + w(0xf0), w(0xb4), w(0xe6), w(0x73), w(0x96), w(0xac), w(0x74), \ + w(0x22), w(0xe7), w(0xad), w(0x35), w(0x85), w(0xe2), w(0xf9), \ + w(0x37), w(0xe8), w(0x1c), w(0x75), w(0xdf), w(0x6e), w(0x47), \ + w(0xf1), w(0x1a), w(0x71), w(0x1d), w(0x29), w(0xc5), w(0x89), \ + w(0x6f), w(0xb7), w(0x62), w(0x0e), w(0xaa), w(0x18), w(0xbe), \ + w(0x1b), w(0xfc), w(0x56), w(0x3e), w(0x4b), w(0xc6), w(0xd2), \ + w(0x79), w(0x20), w(0x9a), w(0xdb), w(0xc0), w(0xfe), w(0x78), \ + w(0xcd), w(0x5a), w(0xf4), w(0x1f), w(0xdd), w(0xa8), w(0x33), \ + w(0x88), w(0x07), w(0xc7), w(0x31), w(0xb1), w(0x12), w(0x10), \ + w(0x59), w(0x27), w(0x80), w(0xec), w(0x5f), w(0x60), w(0x51), \ + w(0x7f), w(0xa9), w(0x19), w(0xb5), w(0x4a), w(0x0d), w(0x2d), \ + w(0xe5), w(0x7a), w(0x9f), w(0x93), w(0xc9), w(0x9c), w(0xef), \ + w(0xa0), w(0xe0), w(0x3b), w(0x4d), w(0xae), w(0x2a), w(0xf5), \ + w(0xb0), w(0xc8), w(0xeb), w(0xbb), w(0x3c), w(0x83), w(0x53), \ + w(0x99), w(0x61), w(0x17), w(0x2b), w(0x04), w(0x7e), w(0xba), \ + w(0x77), w(0xd6), w(0x26), w(0xe1), w(0x69), w(0x14), w(0x63), \ + w(0x55), w(0x21), w(0x0c), w(0x7d) \ + } +/* clang-format on */ + +/* X Macro trick. See https://en.wikipedia.org/wiki/X_Macro */ +#define SSE2NEON_AES_H0(x) (x) +static const uint8_t _sse2neon_sbox[256] = SSE2NEON_AES_SBOX(SSE2NEON_AES_H0); +static const uint8_t _sse2neon_rsbox[256] = SSE2NEON_AES_RSBOX(SSE2NEON_AES_H0); +#undef SSE2NEON_AES_H0 + +/* x_time function and matrix multiply function */ +#if !defined(__aarch64__) +#define SSE2NEON_XT(x) (((x) << 1) ^ ((((x) >> 7) & 1) * 0x1b)) +#define SSE2NEON_MULTIPLY(x, y) \ + (((y & 1) * x) ^ ((y >> 1 & 1) * SSE2NEON_XT(x)) ^ \ + ((y >> 2 & 1) * SSE2NEON_XT(SSE2NEON_XT(x))) ^ \ + ((y >> 3 & 1) * SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(x)))) ^ \ + ((y >> 4 & 1) * SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(SSE2NEON_XT(x)))))) +#endif + +// In the absence of crypto extensions, implement aesenc using regular neon +// intrinsics instead. See: +// https://www.workofard.com/2017/01/accelerated-aes-for-the-arm64-linux-kernel/ +// https://www.workofard.com/2017/07/ghash-for-low-end-cores/ and +// https://github.com/ColinIanKing/linux-next-mirror/blob/b5f466091e130caaf0735976648f72bd5e09aa84/crypto/aegis128-neon-inner.c#L52 +// for more information Reproduced with permission of the author. +FORCE_INLINE __m128i _mm_aesenc_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t shift_rows[] = { + 0x0, 0x5, 0xa, 0xf, 0x4, 0x9, 0xe, 0x3, + 0x8, 0xd, 0x2, 0x7, 0xc, 0x1, 0x6, 0xb, + }; + static const uint8_t ror32by8[] = { + 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, + 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + /* shift rows */ + w = vqtbl1q_u8(w, vld1q_u8(shift_rows)); + + /* sub bytes */ + // Here, we separate the whole 256-bytes table into 4 64-bytes tables, and + // look up each of the table. After each lookup, we load the next table + // which locates at the next 64-bytes. In the meantime, the index in the + // table would be smaller than it was, so the index parameters of + // `vqtbx4q_u8()` need to be added the same constant as the loaded tables. + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), w); + // 'w-0x40' equals to 'vsubq_u8(w, vdupq_n_u8(0x40))' + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), w - 0xc0); + + /* mix columns */ + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); + w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); + + /* add round key */ + return vreinterpretq_m128i_u8(w) ^ RoundKey; + +#else /* ARMv7-A implementation for a table-based AES */ +#define SSE2NEON_AES_B2W(b0, b1, b2, b3) \ + (((uint32_t) (b3) << 24) | ((uint32_t) (b2) << 16) | \ + ((uint32_t) (b1) << 8) | (uint32_t) (b0)) +// muliplying 'x' by 2 in GF(2^8) +#define SSE2NEON_AES_F2(x) ((x << 1) ^ (((x >> 7) & 1) * 0x011b /* WPOLY */)) +// muliplying 'x' by 3 in GF(2^8) +#define SSE2NEON_AES_F3(x) (SSE2NEON_AES_F2(x) ^ x) +#define SSE2NEON_AES_U0(p) \ + SSE2NEON_AES_B2W(SSE2NEON_AES_F2(p), p, p, SSE2NEON_AES_F3(p)) +#define SSE2NEON_AES_U1(p) \ + SSE2NEON_AES_B2W(SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p), p, p) +#define SSE2NEON_AES_U2(p) \ + SSE2NEON_AES_B2W(p, SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p), p) +#define SSE2NEON_AES_U3(p) \ + SSE2NEON_AES_B2W(p, p, SSE2NEON_AES_F3(p), SSE2NEON_AES_F2(p)) + + // this generates a table containing every possible permutation of + // shift_rows() and sub_bytes() with mix_columns(). + static const uint32_t ALIGN_STRUCT(16) aes_table[4][256] = { + SSE2NEON_AES_SBOX(SSE2NEON_AES_U0), + SSE2NEON_AES_SBOX(SSE2NEON_AES_U1), + SSE2NEON_AES_SBOX(SSE2NEON_AES_U2), + SSE2NEON_AES_SBOX(SSE2NEON_AES_U3), + }; +#undef SSE2NEON_AES_B2W +#undef SSE2NEON_AES_F2 +#undef SSE2NEON_AES_F3 +#undef SSE2NEON_AES_U0 +#undef SSE2NEON_AES_U1 +#undef SSE2NEON_AES_U2 +#undef SSE2NEON_AES_U3 + + uint32_t x0 = _mm_cvtsi128_si32(a); // get a[31:0] + uint32_t x1 = + _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0x55)); // get a[63:32] + uint32_t x2 = + _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xAA)); // get a[95:64] + uint32_t x3 = + _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xFF)); // get a[127:96] + + // finish the modulo addition step in mix_columns() + __m128i out = _mm_set_epi32( + (aes_table[0][x3 & 0xff] ^ aes_table[1][(x0 >> 8) & 0xff] ^ + aes_table[2][(x1 >> 16) & 0xff] ^ aes_table[3][x2 >> 24]), + (aes_table[0][x2 & 0xff] ^ aes_table[1][(x3 >> 8) & 0xff] ^ + aes_table[2][(x0 >> 16) & 0xff] ^ aes_table[3][x1 >> 24]), + (aes_table[0][x1 & 0xff] ^ aes_table[1][(x2 >> 8) & 0xff] ^ + aes_table[2][(x3 >> 16) & 0xff] ^ aes_table[3][x0 >> 24]), + (aes_table[0][x0 & 0xff] ^ aes_table[1][(x1 >> 8) & 0xff] ^ + aes_table[2][(x2 >> 16) & 0xff] ^ aes_table[3][x3 >> 24])); + + return _mm_xor_si128(out, RoundKey); +#endif +} + +// Perform one round of an AES decryption flow on data (state) in a using the +// round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdec_si128 +FORCE_INLINE __m128i _mm_aesdec_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t inv_shift_rows[] = { + 0x0, 0xd, 0xa, 0x7, 0x4, 0x1, 0xe, 0xb, + 0x8, 0x5, 0x2, 0xf, 0xc, 0x9, 0x6, 0x3, + }; + static const uint8_t ror32by8[] = { + 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, + 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + // inverse shift rows + w = vqtbl1q_u8(w, vld1q_u8(inv_shift_rows)); + + // inverse sub bytes + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_rsbox), w); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0xc0), w - 0xc0); + + // inverse mix columns + // muliplying 'v' by 4 in GF(2^8) + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w = (w << 1) ^ (uint8x16_t) (((int8x16_t) w >> 7) & 0x1b); + v ^= w; + v ^= (uint8x16_t) vrev32q_u16((uint16x8_t) w); + + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & + 0x1b); // muliplying 'v' by 2 in GF(2^8) + w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); + w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); + + // add round key + return vreinterpretq_m128i_u8(w) ^ RoundKey; + +#else /* ARMv7-A NEON implementation */ + /* FIXME: optimized for NEON */ + uint8_t i, e, f, g, h, v[4][4]; + uint8_t *_a = (uint8_t *) &a; + for (i = 0; i < 16; ++i) { + v[((i / 4) + (i % 4)) % 4][i % 4] = _sse2neon_rsbox[_a[i]]; + } + + // inverse mix columns + for (i = 0; i < 4; ++i) { + e = v[i][0]; + f = v[i][1]; + g = v[i][2]; + h = v[i][3]; + + v[i][0] = SSE2NEON_MULTIPLY(e, 0x0e) ^ SSE2NEON_MULTIPLY(f, 0x0b) ^ + SSE2NEON_MULTIPLY(g, 0x0d) ^ SSE2NEON_MULTIPLY(h, 0x09); + v[i][1] = SSE2NEON_MULTIPLY(e, 0x09) ^ SSE2NEON_MULTIPLY(f, 0x0e) ^ + SSE2NEON_MULTIPLY(g, 0x0b) ^ SSE2NEON_MULTIPLY(h, 0x0d); + v[i][2] = SSE2NEON_MULTIPLY(e, 0x0d) ^ SSE2NEON_MULTIPLY(f, 0x09) ^ + SSE2NEON_MULTIPLY(g, 0x0e) ^ SSE2NEON_MULTIPLY(h, 0x0b); + v[i][3] = SSE2NEON_MULTIPLY(e, 0x0b) ^ SSE2NEON_MULTIPLY(f, 0x0d) ^ + SSE2NEON_MULTIPLY(g, 0x09) ^ SSE2NEON_MULTIPLY(h, 0x0e); + } + + return vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)) ^ RoundKey; +#endif +} + +// Perform the last round of an AES encryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesenclast_si128 +FORCE_INLINE __m128i _mm_aesenclast_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t shift_rows[] = { + 0x0, 0x5, 0xa, 0xf, 0x4, 0x9, 0xe, 0x3, + 0x8, 0xd, 0x2, 0x7, 0xc, 0x1, 0x6, 0xb, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + // shift rows + w = vqtbl1q_u8(w, vld1q_u8(shift_rows)); + + // sub bytes + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), w); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), w - 0xc0); + + // add round key + return vreinterpretq_m128i_u8(v) ^ RoundKey; + +#else /* ARMv7-A implementation */ + uint8_t v[16] = { + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 0)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 5)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 10)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 15)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 4)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 9)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 14)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 3)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 8)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 13)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 2)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 7)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 12)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 1)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 6)], + _sse2neon_sbox[vgetq_lane_u8(vreinterpretq_u8_m128i(a), 11)], + }; + + return vreinterpretq_m128i_u8(vld1q_u8(v)) ^ RoundKey; +#endif +} + +// Perform the last round of an AES decryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdeclast_si128 +FORCE_INLINE __m128i _mm_aesdeclast_si128(__m128i a, __m128i RoundKey) +{ +#if defined(__aarch64__) + static const uint8_t inv_shift_rows[] = { + 0x0, 0xd, 0xa, 0x7, 0x4, 0x1, 0xe, 0xb, + 0x8, 0x5, 0x2, 0xf, 0xc, 0x9, 0x6, 0x3, + }; + + uint8x16_t v; + uint8x16_t w = vreinterpretq_u8_m128i(a); + + // inverse shift rows + w = vqtbl1q_u8(w, vld1q_u8(inv_shift_rows)); + + // inverse sub bytes + v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_rsbox), w); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x40), w - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0x80), w - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_rsbox + 0xc0), w - 0xc0); + + // add round key + return vreinterpretq_m128i_u8(v) ^ RoundKey; + +#else /* ARMv7-A NEON implementation */ + /* FIXME: optimized for NEON */ + uint8_t v[4][4]; + uint8_t *_a = (uint8_t *) &a; + for (int i = 0; i < 16; ++i) { + v[((i / 4) + (i % 4)) % 4][i % 4] = _sse2neon_rsbox[_a[i]]; + } + + return vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)) ^ RoundKey; +#endif +} + +// Perform the InvMixColumns transformation on a and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesimc_si128 +FORCE_INLINE __m128i _mm_aesimc_si128(__m128i a) +{ +#if defined(__aarch64__) + static const uint8_t ror32by8[] = { + 0x1, 0x2, 0x3, 0x0, 0x5, 0x6, 0x7, 0x4, + 0x9, 0xa, 0xb, 0x8, 0xd, 0xe, 0xf, 0xc, + }; + uint8x16_t v = vreinterpretq_u8_m128i(a); + uint8x16_t w; + + // multiplying 'v' by 4 in GF(2^8) + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w = (w << 1) ^ (uint8x16_t) (((int8x16_t) w >> 7) & 0x1b); + v ^= w; + v ^= (uint8x16_t) vrev32q_u16((uint16x8_t) w); + + // multiplying 'v' by 2 in GF(2^8) + w = (v << 1) ^ (uint8x16_t) (((int8x16_t) v >> 7) & 0x1b); + w ^= (uint8x16_t) vrev32q_u16((uint16x8_t) v); + w ^= vqtbl1q_u8(v ^ w, vld1q_u8(ror32by8)); + return vreinterpretq_m128i_u8(w); + +#else /* ARMv7-A NEON implementation */ + uint8_t i, e, f, g, h, v[4][4]; + vst1q_u8((uint8_t *) v, vreinterpretq_u8_m128i(a)); + for (i = 0; i < 4; ++i) { + e = v[i][0]; + f = v[i][1]; + g = v[i][2]; + h = v[i][3]; + + v[i][0] = SSE2NEON_MULTIPLY(e, 0x0e) ^ SSE2NEON_MULTIPLY(f, 0x0b) ^ + SSE2NEON_MULTIPLY(g, 0x0d) ^ SSE2NEON_MULTIPLY(h, 0x09); + v[i][1] = SSE2NEON_MULTIPLY(e, 0x09) ^ SSE2NEON_MULTIPLY(f, 0x0e) ^ + SSE2NEON_MULTIPLY(g, 0x0b) ^ SSE2NEON_MULTIPLY(h, 0x0d); + v[i][2] = SSE2NEON_MULTIPLY(e, 0x0d) ^ SSE2NEON_MULTIPLY(f, 0x09) ^ + SSE2NEON_MULTIPLY(g, 0x0e) ^ SSE2NEON_MULTIPLY(h, 0x0b); + v[i][3] = SSE2NEON_MULTIPLY(e, 0x0b) ^ SSE2NEON_MULTIPLY(f, 0x0d) ^ + SSE2NEON_MULTIPLY(g, 0x09) ^ SSE2NEON_MULTIPLY(h, 0x0e); + } + + return vreinterpretq_m128i_u8(vld1q_u8((uint8_t *) v)); +#endif +} + +// Emits the Advanced Encryption Standard (AES) instruction aeskeygenassist. +// This instruction generates a round key for AES encryption. See +// https://kazakov.life/2017/11/01/cryptocurrency-mining-on-ios-devices/ +// for details. +// +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aeskeygenassist_si128 +FORCE_INLINE __m128i _mm_aeskeygenassist_si128(__m128i a, const int rcon) +{ +#if defined(__aarch64__) + uint8x16_t _a = vreinterpretq_u8_m128i(a); + uint8x16_t v = vqtbl4q_u8(_sse2neon_vld1q_u8_x4(_sse2neon_sbox), _a); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x40), _a - 0x40); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0x80), _a - 0x80); + v = vqtbx4q_u8(v, _sse2neon_vld1q_u8_x4(_sse2neon_sbox + 0xc0), _a - 0xc0); + + uint32x4_t select_mask = {0xffffffff, 0x0, 0xffffffff, 0x0}; + uint64x2_t v_mask = vshrq_n_u64(vreinterpretq_u64_u8(v), 32); + uint32x4_t x = vbslq_u32(select_mask, vreinterpretq_u32_u64(v_mask), + vreinterpretq_u32_u8(v)); + uint32x4_t ror_x = vorrq_u32(vshrq_n_u32(x, 8), vshlq_n_u32(x, 24)); + uint32x4_t ror_xor_x = veorq_u32(ror_x, vdupq_n_u32(rcon)); + + return vreinterpretq_m128i_u32(vbslq_u32(select_mask, x, ror_xor_x)); + +#else /* ARMv7-A NEON implementation */ + uint32_t X1 = _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0x55)); + uint32_t X3 = _mm_cvtsi128_si32(_mm_shuffle_epi32(a, 0xFF)); + for (int i = 0; i < 4; ++i) { + ((uint8_t *) &X1)[i] = _sse2neon_sbox[((uint8_t *) &X1)[i]]; + ((uint8_t *) &X3)[i] = _sse2neon_sbox[((uint8_t *) &X3)[i]]; + } + return _mm_set_epi32(((X3 >> 8) | (X3 << 24)) ^ rcon, X3, + ((X1 >> 8) | (X1 << 24)) ^ rcon, X1); +#endif +} +#undef SSE2NEON_AES_SBOX +#undef SSE2NEON_AES_RSBOX + +#if defined(__aarch64__) +#undef SSE2NEON_XT +#undef SSE2NEON_MULTIPLY +#endif + +#else /* __ARM_FEATURE_CRYPTO */ +// Implements equivalent of 'aesenc' by combining AESE (with an empty key) and +// AESMC and then manually applying the real key as an xor operation. This +// unfortunately means an additional xor op; the compiler should be able to +// optimize this away for repeated calls however. See +// https://blog.michaelbrase.com/2018/05/08/emulating-x86-aes-intrinsics-on-armv8-a +// for more details. +FORCE_INLINE __m128i _mm_aesenc_si128(__m128i a, __m128i b) +{ + return vreinterpretq_m128i_u8( + vaesmcq_u8(vaeseq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0))) ^ + vreinterpretq_u8_m128i(b)); +} + +// Perform one round of an AES decryption flow on data (state) in a using the +// round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdec_si128 +FORCE_INLINE __m128i _mm_aesdec_si128(__m128i a, __m128i RoundKey) +{ + return vreinterpretq_m128i_u8(veorq_u8( + vaesimcq_u8(vaesdq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), + vreinterpretq_u8_m128i(RoundKey))); +} + +// Perform the last round of an AES encryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesenclast_si128 +FORCE_INLINE __m128i _mm_aesenclast_si128(__m128i a, __m128i RoundKey) +{ + return _mm_xor_si128(vreinterpretq_m128i_u8(vaeseq_u8( + vreinterpretq_u8_m128i(a), vdupq_n_u8(0))), + RoundKey); +} + +// Perform the last round of an AES decryption flow on data (state) in a using +// the round key in RoundKey, and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesdeclast_si128 +FORCE_INLINE __m128i _mm_aesdeclast_si128(__m128i a, __m128i RoundKey) +{ + return vreinterpretq_m128i_u8( + vaesdq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0))) ^ + vreinterpretq_u8_m128i(RoundKey); +} + +// Perform the InvMixColumns transformation on a and store the result in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aesimc_si128 +FORCE_INLINE __m128i _mm_aesimc_si128(__m128i a) +{ + return vreinterpretq_m128i_u8(vaesimcq_u8(a)); +} + +// Assist in expanding the AES cipher key by computing steps towards generating +// a round key for encryption cipher using data from a and an 8-bit round +// constant specified in imm8, and store the result in dst." +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_aeskeygenassist_si128 +FORCE_INLINE __m128i _mm_aeskeygenassist_si128(__m128i a, const int rcon) +{ + // AESE does ShiftRows and SubBytes on A + uint8x16_t u8 = vaeseq_u8(vreinterpretq_u8_m128i(a), vdupq_n_u8(0)); + + uint8x16_t dest = { + // Undo ShiftRows step from AESE and extract X1 and X3 + u8[0x4], u8[0x1], u8[0xE], u8[0xB], // SubBytes(X1) + u8[0x1], u8[0xE], u8[0xB], u8[0x4], // ROT(SubBytes(X1)) + u8[0xC], u8[0x9], u8[0x6], u8[0x3], // SubBytes(X3) + u8[0x9], u8[0x6], u8[0x3], u8[0xC], // ROT(SubBytes(X3)) + }; + uint32x4_t r = {0, (unsigned) rcon, 0, (unsigned) rcon}; + return vreinterpretq_m128i_u8(dest) ^ vreinterpretq_m128i_u32(r); +} +#endif + +/* Others */ + +// Perform a carry-less multiplication of two 64-bit integers, selected from a +// and b according to imm8, and store the results in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_clmulepi64_si128 +FORCE_INLINE __m128i _mm_clmulepi64_si128(__m128i _a, __m128i _b, const int imm) +{ + uint64x2_t a = vreinterpretq_u64_m128i(_a); + uint64x2_t b = vreinterpretq_u64_m128i(_b); + switch (imm & 0x11) { + case 0x00: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_low_u64(a), vget_low_u64(b))); + case 0x01: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_high_u64(a), vget_low_u64(b))); + case 0x10: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_low_u64(a), vget_high_u64(b))); + case 0x11: + return vreinterpretq_m128i_u64( + _sse2neon_vmull_p64(vget_high_u64(a), vget_high_u64(b))); + default: + abort(); + } +} + +FORCE_INLINE unsigned int _sse2neon_mm_get_denormals_zero_mode() +{ + union { + fpcr_bitfield field; +#if defined(__aarch64__) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) + __asm__ __volatile__("mrs %0, FPCR" : "=r"(r.value)); /* read */ +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + return r.field.bit24 ? _MM_DENORMALS_ZERO_ON : _MM_DENORMALS_ZERO_OFF; +} + +// Count the number of bits set to 1 in unsigned 32-bit integer a, and +// return that count in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_popcnt_u32 +FORCE_INLINE int _mm_popcnt_u32(unsigned int a) +{ +#if defined(__aarch64__) +#if __has_builtin(__builtin_popcount) + return __builtin_popcount(a); +#else + return (int) vaddlv_u8(vcnt_u8(vcreate_u8((uint64_t) a))); +#endif +#else + uint32_t count = 0; + uint8x8_t input_val, count8x8_val; + uint16x4_t count16x4_val; + uint32x2_t count32x2_val; + + input_val = vld1_u8((uint8_t *) &a); + count8x8_val = vcnt_u8(input_val); + count16x4_val = vpaddl_u8(count8x8_val); + count32x2_val = vpaddl_u16(count16x4_val); + + vst1_u32(&count, count32x2_val); + return count; +#endif +} + +// Count the number of bits set to 1 in unsigned 64-bit integer a, and +// return that count in dst. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=_mm_popcnt_u64 +FORCE_INLINE int64_t _mm_popcnt_u64(uint64_t a) +{ +#if defined(__aarch64__) +#if __has_builtin(__builtin_popcountll) + return __builtin_popcountll(a); +#else + return (int64_t) vaddlv_u8(vcnt_u8(vcreate_u8(a))); +#endif +#else + uint64_t count = 0; + uint8x8_t input_val, count8x8_val; + uint16x4_t count16x4_val; + uint32x2_t count32x2_val; + uint64x1_t count64x1_val; + + input_val = vld1_u8((uint8_t *) &a); + count8x8_val = vcnt_u8(input_val); + count16x4_val = vpaddl_u8(count8x8_val); + count32x2_val = vpaddl_u16(count16x4_val); + count64x1_val = vpaddl_u32(count32x2_val); + vst1_u64(&count, count64x1_val); + return count; +#endif +} + +FORCE_INLINE void _sse2neon_mm_set_denormals_zero_mode(unsigned int flag) +{ + // AArch32 Advanced SIMD arithmetic always uses the Flush-to-zero setting, + // regardless of the value of the FZ bit. + union { + fpcr_bitfield field; +#if defined(__aarch64__) + uint64_t value; +#else + uint32_t value; +#endif + } r; + +#if defined(__aarch64__) + __asm__ __volatile__("mrs %0, FPCR" : "=r"(r.value)); /* read */ +#else + __asm__ __volatile__("vmrs %0, FPSCR" : "=r"(r.value)); /* read */ +#endif + + r.field.bit24 = (flag & _MM_DENORMALS_ZERO_MASK) == _MM_DENORMALS_ZERO_ON; + +#if defined(__aarch64__) + __asm__ __volatile__("msr FPCR, %0" ::"r"(r)); /* write */ +#else + __asm__ __volatile__("vmsr FPSCR, %0" ::"r"(r)); /* write */ +#endif +} + +// Return the current 64-bit value of the processor's time-stamp counter. +// https://www.intel.com/content/www/us/en/docs/intrinsics-guide/index.html#text=rdtsc + +FORCE_INLINE uint64_t _rdtsc(void) +{ +#if defined(__aarch64__) + uint64_t val; + + /* According to ARM DDI 0487F.c, from Armv8.0 to Armv8.5 inclusive, the + * system counter is at least 56 bits wide; from Armv8.6, the counter + * must be 64 bits wide. So the system counter could be less than 64 + * bits wide and it is attributed with the flag 'cap_user_time_short' + * is true. + */ + __asm__ __volatile__("mrs %0, cntvct_el0" : "=r"(val)); + + return val; +#else + uint32_t pmccntr, pmuseren, pmcntenset; + // Read the user mode Performance Monitoring Unit (PMU) + // User Enable Register (PMUSERENR) access permissions. + __asm__ __volatile__("mrc p15, 0, %0, c9, c14, 0" : "=r"(pmuseren)); + if (pmuseren & 1) { // Allows reading PMUSERENR for user mode code. + __asm__ __volatile__("mrc p15, 0, %0, c9, c12, 1" : "=r"(pmcntenset)); + if (pmcntenset & 0x80000000UL) { // Is it counting? + __asm__ __volatile__("mrc p15, 0, %0, c9, c13, 0" : "=r"(pmccntr)); + // The counter is set up to count every 64th cycle + return (uint64_t) (pmccntr) << 6; + } + } + + // Fallback to syscall as we can't enable PMUSERENR in user mode. + struct timeval tv; + gettimeofday(&tv, NULL); + return (uint64_t) (tv.tv_sec) * 1000000 + tv.tv_usec; +#endif +} + +#if defined(__GNUC__) || defined(__clang__) +#pragma pop_macro("ALIGN_STRUCT") +#pragma pop_macro("FORCE_INLINE") +#endif + +#if defined(__GNUC__) && !defined(__clang__) +#pragma GCC pop_options +#endif + +#endif diff --git a/modules/perception/common/algorithm/image_processing/BUILD b/modules/perception/common/algorithm/image_processing/BUILD deleted file mode 100644 index 406e36b9d56..00000000000 --- a/modules/perception/common/algorithm/image_processing/BUILD +++ /dev/null @@ -1,25 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "hough_transfer", - srcs = ["hough_transfer.cc"], - hdrs = ["hough_transfer.h"], - alwayslink = True, -) - -cc_test( - name = "hough_transfer_test", - size = "small", - srcs = ["hough_transfer_test.cc"], - deps = [ - ":hough_transfer", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/io/BUILD b/modules/perception/common/algorithm/io/BUILD deleted file mode 100644 index b1efb94637a..00000000000 --- a/modules/perception/common/algorithm/io/BUILD +++ /dev/null @@ -1,40 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "io_util", - srcs = ["io_util.cc"], - hdrs = ["io_util.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base:camera", - "//modules/perception/common/base:distortion_model", - "//modules/perception/common/base:omnidirectional_model", - "//modules/perception/common/algorithm/geometry:basic", - "@boost", - "@com_github_jbeder_yaml_cpp//:yaml-cpp", - "@com_google_absl//:absl", - "@eigen", - ], -) - -# cc_test( -# name = "io_util_test", -# size = "small", -# srcs = ["io_util_test.cc"], -# copts = ["-fno-access-control"], -# data = [ -# "//modules/perception/data:perception_testdata", -# ], -# deps = [ -# ":io_util", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/point_cloud_processing/BUILD b/modules/perception/common/algorithm/point_cloud_processing/BUILD deleted file mode 100644 index 6b137581778..00000000000 --- a/modules/perception/common/algorithm/point_cloud_processing/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "point_cloud_processing", - hdrs = [ - "common.h", - "downsampling.h", - ], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/algorithm/geometry:basic", - ], -) - -cc_library( - name = "point_cloud_processing_test", - srcs = [ - "common_test.cc", - "downsampling_test.cc", - ], - alwayslink = True, - deps = [ - ":point_cloud_processing", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/algorithm/sensor_manager/BUILD b/modules/perception/common/algorithm/sensor_manager/BUILD deleted file mode 100644 index f9568e9985f..00000000000 --- a/modules/perception/common/algorithm/sensor_manager/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "sensor_manager", - srcs = ["sensor_manager.cc"], - hdrs = ["sensor_manager.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common:perception_gflags", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/io:io_util", - "//modules/perception/common/base:base_type", - "//modules/perception/common/base:camera", - "//modules/perception/common/base:omnidirectional_model", - "//modules/perception/common/base:polynomial", - "//modules/perception/common/proto:sensor_meta_schema_cc_proto", - ], -) - -#cc_test( - # name = "sensor_manager_test", - # size = "small", - # srcs = ["sensor_manager_test.cc"], - # data = [ - # "//modules/perception/data:perception_testdata", - #], - #deps = [ - # ":sensor_manager", - # "@com_google_googletest//:gtest_main", - #], -#) - -apollo_package() -cpplint() diff --git a/modules/perception/common/base/BUILD b/modules/perception/common/base/BUILD index 8fc529604d4..f8c859c9a06 100644 --- a/modules/perception/common/base/BUILD +++ b/modules/perception/common/base/BUILD @@ -1,425 +1,215 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "base", - alwayslink = True, - deps = [ - ":base_type", - ":blob", - ":box", - ":camera", - ":common", - ":distortion_model", - ":frame", - ":image", - ":impending_collision_edge", - ":nms", - ":object_pool_types", - ":object_pool", - ":object", - ":omnidirectional_model", - ":point_cloud_util", - ":point_cloud", - ":polynomial", - ":syncedmem", - ":traffic_light", +apollo_cc_library( + name = "apollo_perception_common_base", + srcs = [ + "distortion_model.cc", + "omnidirectional_model.cc", + "point_cloud_util.cc", + "polynomial.cc", + "syncedmem.cc", + "object_pool_types.cc", + "blob.cc", + "object.cc", + "camera.cc", ], -) - -cc_library( - name = "base_type", - alwayslink = True, hdrs = [ + "box.h", + "comparison_traits.h", + "common.h", + "distortion_model.h", + "frame.h", + "point_cloud.h", + "frame_supplement.h", + "object_pool_types.h", + "image.h", + "image_8u.h", + "impending_collision_edge.h", + "nms.h", + "omnidirectional_model.h", + "point.h", + "point_cloud_util.h", + "polynomial.h", + "syncedmem.h", + "traffic_light.h", + "test/test_helper.h", + "concurrent_object_pool.h", + "light_object_pool.h", + "object_pool.h", "hdmap_struct.h", "landmark_struct.h", "lane_struct.h", "sensor_meta.h", + "blob.h", + "object.h", + "object_supplement.h", + "object_types.h", "vehicle_struct.h", + "camera.h", ], deps = [ - "//modules/common/util:util_tool", - ], -) - -cc_library( - name = "blob", - srcs = ["blob.cc"], - hdrs = ["blob.h"], - alwayslink = True, - deps = [ - ":common", - ":syncedmem", "//cyber", - "@com_google_absl//:absl", + "//modules/common/util:util_tool", + "@com_google_googletest//:gtest_main", + "@eigen", "@local_config_cuda//cuda:cuda_headers", + "@local_config_cuda//cuda:cudart", + "@opencv//:imgproc", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/basic_msgs:header_cc_proto", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", + "//modules/common_msgs/map_msgs:map_geometry_cc_proto", + "//modules/common_msgs/map_msgs:map_id_cc_proto", + "//modules/common_msgs/map_msgs:map_lane_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/prediction_msgs:feature_cc_proto", + "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", + "//modules/common_msgs/prediction_msgs:prediction_point_cc_proto", + "@boost", ], ) -cc_test( +apollo_cc_test( name = "blob_test", size = "small", srcs = ["blob_test.cc"], deps = [ - ":blob", - "//modules/perception/common/base/test:test_helper", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", "@local_config_cuda//cuda:cudart", ], ) -cc_library( - name = "box", - alwayslink = True, - hdrs = [ - "box.h", - "comparison_traits.h", - ], - deps = [ - ":point_cloud", - ], -) - -cc_test( +apollo_cc_test( name = "box_test", size = "small", srcs = ["box_test.cc"], - deps = [ - ":box", - "@com_google_googletest//:gtest_main", - ], linkstatic = True, -) - -cc_library( - name = "camera", - srcs = ["camera.cc"], - alwayslink = True, - hdrs = ["camera.h"], deps = [ - "@eigen", + ":apollo_perception_common_base", + "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "camera_test", size = "small", srcs = ["camera_test.cc"], linkopts = ["-lm"], deps = [ - ":camera", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "common", - hdrs = ["common.h"], - alwayslink = True, - deps = [ - "@local_config_cuda//cuda:cudart", - ], -) - -cc_test( +apollo_cc_test( name = "common_test", size = "small", srcs = ["common_test.cc"], deps = [ - ":common", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", "@local_config_cuda//cuda:cuda_headers", ], ) -cc_library( - name = "distortion_model", - srcs = ["distortion_model.cc"], - hdrs = ["distortion_model.h"], - alwayslink = True, - deps = [ - ":camera", - "//cyber", - "@eigen", - ], -) - -cc_test( +apollo_cc_test( name = "distortion_model_test", size = "small", srcs = ["distortion_model_test.cc"], deps = [ - ":distortion_model", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "frame", - hdrs = [ - "frame.h", - "frame_supplement.h", - ], - alwayslink = True, - deps = [ - ":base_type", - ":blob", - ":image", - ":impending_collision_edge", - "@eigen", - ], -) - -cc_library( - name = "image", - hdrs = [ - "image.h", - "image_8u.h", - ], - alwayslink = True, - deps = [ - ":base_type", - ":blob", - ], -) - -cc_test( +apollo_cc_test( name = "image_test", size = "small", - deps = [ - ":image", - "@com_google_googletest//:gtest_main", - ], linkstatic = True, -) - -cc_library( - name = "impending_collision_edge", - hdrs = ["impending_collision_edge.h"], - alwayslink = True, deps = [ - "//cyber", - "//modules/common/util:util_tool", - "@eigen", + ":apollo_perception_common_base", + "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "impending_collision_edge_test", size = "small", srcs = ["impending_collision_edge_test.cc"], deps = [ - ":impending_collision_edge", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "object", - srcs = ["object.cc"], - alwayslink = True, - hdrs = [ - "object.h", - "object_supplement.h", - "object_types.h", - "vehicle_struct.h", - ], - deps = [ - ":box", - ":point_cloud", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - "//modules/common_msgs/basic_msgs:header_cc_proto", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common_msgs/map_msgs:map_geometry_cc_proto", - "//modules/common_msgs/map_msgs:map_id_cc_proto", - "//modules/common_msgs/map_msgs:map_lane_cc_proto", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/prediction_msgs:feature_cc_proto", - "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_point_cc_proto", - "//modules/common/util", - "@boost", - "@eigen", - ], -) - -cc_test( +apollo_cc_test( name = "object_test", size = "small", srcs = ["object_test.cc"], deps = [ - ":object", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "object_pool", - hdrs = [ - "concurrent_object_pool.h", - "light_object_pool.h", - "object_pool.h", - ], - alwayslink = True, - deps = [ - ":base_type", - ], -) - -cc_test( +apollo_cc_test( name = "object_pool_test", size = "small", srcs = ["object_pool_test.cc"], deps = [ - ":frame", - ":object", - ":object_pool", - ":object_pool_types", - ":point_cloud", + ":apollo_perception_common_base", "//cyber", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "object_pool_types", - srcs = ["object_pool_types.cc"], - hdrs = ["object_pool_types.h"], - alwayslink = True, - deps = [ - ":frame", - ":object", - ":object_pool", - ":point_cloud", - "//cyber", - ], -) - -cc_library( - name = "nms", - hdrs = ["nms.h"], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -cc_library( - name = "omnidirectional_model", - srcs = ["omnidirectional_model.cc"], - hdrs = ["omnidirectional_model.h"], - alwayslink = True, - deps = [ - ":camera", - ":distortion_model", - ":polynomial", - "//cyber", - "@eigen", - ], -) - -cc_test( +apollo_cc_test( name = "omnidirectional_model_test", size = "small", srcs = ["omnidirectional_model_test.cc"], deps = [ - ":omnidirectional_model", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "point", - hdrs = ["point.h"], - alwayslink = True, -) - -cc_library( - name = "point_cloud", - hdrs = ["point_cloud.h"], - alwayslink = True, - deps = [ - ":point", - "//modules/common/util:util_tool", - "@eigen", - ], -) - -cc_library( - name = "point_cloud_util", - srcs = ["point_cloud_util.cc"], - hdrs = ["point_cloud_util.h"], - alwayslink = True, - deps = [ - ":point_cloud", - "//cyber", - "@eigen", - "@opencv//:imgproc", - ], -) - -cc_test( +apollo_cc_test( name = "point_cloud_test", size = "small", srcs = ["point_cloud_test.cc"], linkopts = ["-lm"], deps = [ - ":point_cloud", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "polynomial", - srcs = ["polynomial.cc"], - hdrs = ["polynomial.h"], -) - -cc_test( +apollo_cc_test( name = "polynomial_test", size = "small", srcs = ["polynomial_test.cc"], deps = [ - ":polynomial", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "syncedmem", - srcs = ["syncedmem.cc"], - hdrs = ["syncedmem.h"], - deps = [ - ":common", - "//cyber", - "@local_config_cuda//cuda:cuda_headers", - ], -) - -cc_test( +apollo_cc_test( name = "syncedmem_test", size = "small", srcs = ["syncedmem_test.cc"], deps = [ - ":syncedmem", - "//modules/perception/common/base/test:test_helper", + ":apollo_perception_common_base", "@com_google_googletest//:gtest_main", "@local_config_cuda//cuda:cudart", ], ) -cc_library( - name = "traffic_light", - hdrs = ["traffic_light.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/base:box", - ], -) - apollo_package() + cpplint() diff --git a/modules/perception/common/base/object_types.h b/modules/perception/common/base/object_types.h index 609f72677aa..859085ff7a7 100644 --- a/modules/perception/common/base/object_types.h +++ b/modules/perception/common/base/object_types.h @@ -76,7 +76,7 @@ enum class ObjectSubType { SMALLMOT = 12, BIGMOT = 13, NONMOT = 14, - MAX_OBJECT_TYPE = 12, + MAX_OBJECT_TYPE = 15, }; // @brief motion state diff --git a/modules/perception/common/base/test/BUILD b/modules/perception/common/base/test/BUILD deleted file mode 100644 index 9fe80262c90..00000000000 --- a/modules/perception/common/base/test/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "test_helper", - hdrs = ["test_helper.h"], - alwayslink = True, - deps = [ - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/camera/BUILD b/modules/perception/common/camera/BUILD index 63f3f67669b..350dfdf424b 100644 --- a/modules/perception/common/camera/BUILD +++ b/modules/perception/common/camera/BUILD @@ -1,7 +1,71 @@ -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) +apollo_cc_library( + name = "apollo_perception_common_camera_camera_frame", + hdrs = [ + "common/camera_frame.h", + "common/data_provider.h", + "common/undistortion_handler.h", + ], + srcs = [ + "common/data_provider.cc", + "common/undistortion_handler.cc", + ], + deps = [ + "//cyber", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "@npp", + ] +) + +apollo_cc_library( + name = "apollo_perception_common_camera", + srcs = [ + "common/camera_ground_plane.cc", + "common/camera_preprocess_general_util.cc", + "common/cipv_camera.cc", + "common/object_template_manager.cc", + "common/pose.cc", + "common/util.cc", + ], + hdrs = [ + "common/camera_ground_plane.h", + "common/camera_preprocess_general_util.h", + "common/cipv_camera.h", + "common/global_config.h", + "common/lane_object.h", + "common/math_functions.h", + "common/object_template_manager.h", + "common/pose.h", + "common/timer.h", + "common/trafficlight_frame.h", + "common/twod_threed_util.h", + "common/util.h", + ], + deps = [ + "//cyber", + ":apollo_perception_common_camera_camera_frame", + "//modules/common/configs:vehicle_config_helper", + "//modules/common/math", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/common/util:util_tool", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera/common/proto:object_template_meta_schema_cc_proto", + "@com_github_gflags_gflags//:gflags", + "@npp", + "@opencv//:core", + "@opencv//:highgui", + "@opencv//:imgcodecs", + "@opencv//:imgproc", + ], +) + apollo_package() + cpplint() diff --git a/modules/perception/common/camera/common/BUILD b/modules/perception/common/camera/common/BUILD deleted file mode 100644 index dcb7e39b4f9..00000000000 --- a/modules/perception/common/camera/common/BUILD +++ /dev/null @@ -1,196 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "camera_frame", - hdrs = [ - "camera_frame.h", - ], - alwayslink = True, - deps = [ - ":data_provider", - "//modules/perception/common/base", - ], -) - -cc_library( - name = "camera_ground_plane", - srcs = ["camera_ground_plane.cc"], - alwayslink = True, - hdrs = ["camera_ground_plane.h"], - deps = [ - "//cyber", - "//modules/perception/common/algorithm/i_lib/algorithm:i_sort", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/algorithm/i_lib/da:i_ransac", - "//modules/perception/common/algorithm/i_lib/geometry:i_plane", - ], -) - -cc_library( - name = "data_provider", - srcs = ["data_provider.cc"], - alwayslink = True, - hdrs = ["data_provider.h"], - deps = [ - ":undistortion_handler", - "//cyber", - "//modules/perception/common/base", - "@npp", - ], -) - -cc_library( - name = "global_config", - alwayslink = True, - hdrs = ["global_config.h"], -) - -cc_library( - name = "math_functions", - alwayslink = True, - hdrs = [ - "math_functions.h", - "//modules/perception/common/base:base", - ], -) - -cc_library( - name = "object_template_manager", - srcs = ["object_template_manager.cc"], - hdrs = ["object_template_manager.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common:perception_gflags", - "//modules/perception/common:util", - "//modules/perception/common/camera/common/proto:object_template_meta_schema_cc_proto", - "//modules/perception/common/algorithm/io:io_util", - "//modules/perception/common/lib/thread", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "timer", - hdrs = ["timer.h"], - alwayslink = True, -) - -cc_library( - name = "twod_threed_util", - hdrs = ["twod_threed_util.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/algorithm/i_lib/geometry:i_plane", - ], -) - -cc_library( - name = "undistortion_handler", - srcs = ["undistortion_handler.cc"], - hdrs = ["undistortion_handler.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/algorithm/sensor_manager", - "@npp", - ], -) - -cc_library( - name = "util", - srcs = ["util.cc"], - hdrs = ["util.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base", - ], -) - -cc_library( - name = "lane_object", - hdrs = ["lane_object.h"], - alwayslink = True, - deps = [ - "//modules/common/util:util_tool", - ], -) - -cc_library( - name = "common", - deps = [ - ":camera_frame", - ":camera_ground_plane", - ":data_provider", - ":global_config", - ":math_functions", - ":object_template_manager", - ":timer", - ":twod_threed_util", - ":undistortion_handler", - ":util", - ], - alwayslink = True, -) - -cc_library( - name = "trafficlight_frame", - hdrs = [ - "trafficlight_frame.h", - ], - alwayslink = True, - deps = [ - "//modules/perception/common/camera/common:data_provider", - "//modules/perception/common/base", - ], -) - -cc_library( - name = "pose", - srcs = ["pose.cc"], - alwayslink = True, - hdrs = ["pose.h"], - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/perception/common/base", - ], -) - -cc_library( - name = "camera_preprocess_general_util", - srcs = ["camera_preprocess_general_util.cc"], - hdrs = ["camera_preprocess_general_util.h"], - alwayslink = True, - deps = [ - "@opencv//:core", - "//cyber", - ], -) - -cc_library( - name = "cipv_camera", - srcs = ["cipv_camera.cc"], - hdrs = ["cipv_camera.h"], - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:lane_object", - "//modules/perception/common/lib/interface:base_cipv", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/cyberfile.xml b/modules/perception/common/cyberfile.xml index 57b21f51b04..2c5cdecbf45 100644 --- a/modules/perception/common/cyberfile.xml +++ b/modules/perception/common/cyberfile.xml @@ -41,6 +41,7 @@ 3rd-bazel-skylib 3rd-rules-proto 3rd-py + 3rd-mkl 3rd-gpus diff --git a/modules/perception/common/hdmap/BUILD b/modules/perception/common/hdmap/BUILD index d87c30cd918..43452a83dd7 100644 --- a/modules/perception/common/hdmap/BUILD +++ b/modules/perception/common/hdmap/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -8,37 +7,33 @@ filegroup( name = "hdmap_files", srcs = glob([ "conf/**", - ]) + ]), ) -cc_library( - name = "hdmap_input", +apollo_cc_library( + name = "apollo_perception_common_hdmap", srcs = ["hdmap_input.cc"], hdrs = ["hdmap_input.h"], - alwayslink = True, deps = [ "//cyber", "//modules/common/math", "//modules/common/util:util_tool", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap", + "//modules/map:apollo_map", "//modules/perception/common:perception_gflags", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/common/base", - "//modules/perception/common/lib/thread", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lib:apollo_perception_common_lib", ], ) -#cc_test( +#apollo_cc_test( # name = "hdmap_input_test", # size = "small", # srcs = ["hdmap_input_test.cc"], # deps = [ # ":hdmap_input", # "@com_google_googletest//:gtest_main", -# "//modules/perception/common/base:base_type", -# "//modules/perception/common/base:point_cloud", -# "//modules/perception/common/algorithm/geometry:common", +# "//modules/perception/common/base:apollo_perception_common_base", # ], #) diff --git a/modules/perception/common/inference/BUILD b/modules/perception/common/inference/BUILD index b1201ad83ae..cfb17b6f017 100644 --- a/modules/perception/common/inference/BUILD +++ b/modules/perception/common/inference/BUILD @@ -1,6 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") package(default_visibility = ["//visibility:public"]) @@ -8,91 +8,120 @@ filegroup( name = "inference_files", srcs = glob([ "inference_test_data/**", - ]) + ]), ) -cc_library( +apollo_cc_library( name = "layer_lib", srcs = ["layer.cc"], hdrs = ["layer.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/base:blob", - ], -) - -cc_test( - name = "layer_test", - size = "small", - srcs = ["layer_test.cc"], deps = [ - ":layer_lib", - "@com_google_googletest//:gtest_main", + "//modules/perception/common/base:apollo_perception_common_base", ], - linkstatic = True, ) -cc_library( +apollo_cc_library( name = "inference_lib", srcs = ["inference.cc"], hdrs = ["inference.h"], - alwayslink = True, deps = [ - "//modules/perception/common/base:blob", + "//modules/perception/common/base:apollo_perception_common_base", "@boost", ], ) -cc_test( - name = "inference_test", +apollo_cc_test( + name = "layer_test", size = "small", - srcs = ["inference_test.cc"], + srcs = ["layer_test.cc"], + linkstatic = True, deps = [ - ":inference_lib", + ":layer_lib", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_library( - name = "inference_factory", - srcs = ["inference_factory.cc"], - hdrs = ["inference_factory.h"], - alwayslink = True, +apollo_cc_test( + name = "inference_test", + size = "small", + srcs = ["inference_test.cc"], + linkstatic = True, deps = [ ":inference_lib", - "//modules/perception/common/inference/libtorch:torch_net", - "//modules/perception/common/inference/onnx:libtorch_obstacle_detector", - "//modules/perception/common/inference/paddlepaddle:paddle_net", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/common/proto:model_info_cc_proto", - "//modules/perception/common/inference/tensorrt:rt_legacy", - "@local_config_tensorrt//:tensorrt", + "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "inference_factory_test", size = "small", srcs = ["inference_factory_test.cc"], + linkstatic = True, deps = [ - ":inference_factory", + ":apollo_perception_common_inference", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_common", "@com_google_googletest//:gtest_main", - "//modules/perception/common/inference/tensorrt:rt_legacy", "@local_config_tensorrt//:tensorrt", ], - linkstatic = True, ) -cc_library( - name = "model_util", - srcs = ["model_util.cc"], - hdrs = ["model_util.h"], +cuda_library( + name = "perception_inference_operators_cuda", + srcs = ["operators/roipooling_layer.cu", "operators/roipooling_layer.cc",], + hdrs = ["operators/roipooling_layer.h",], + deps = [ + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/inference:layer_lib", + "@eigen", + "@local_config_cuda//cuda:cudart", + ], + alwayslink = True, +) + +apollo_cc_library( + name = "apollo_perception_common_inference", + srcs = [ + "model_util.cc", + "inference_factory.cc", + "libtorch/torch_net.cc", + "onnx/libtorch_obstacle_detector.cc", + "onnx/onnx_obstacle_detector.cc", + "paddlepaddle/paddle_net.cc", + ], + hdrs = [ + "model_util.h", + "inference_factory.h", + "libtorch/torch_net.h", + "onnx/libtorch_obstacle_detector.h", + "onnx/onnx_obstacle_detector.h", + "paddlepaddle/paddle_net.h", + ], deps = [ + ":inference_lib", + ":layer_lib", + ":perception_inference_operators_cuda", + "//cyber", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_net", + "//modules/perception/common/inference/utils:apollo_perception_common_utils", "//modules/perception/common/proto:model_info_cc_proto", + "//modules/perception/common/proto:rt_cc_proto", + "@com_google_absl//:absl", "@com_google_protobuf//:protobuf", - ], + "@libtorch_gpu", + "@local_config_cuda//cuda:cublas", + "@local_config_cuda//cuda:cuda_headers", + "@local_config_cuda//cuda:cudart", + "@local_config_cuda//cuda:cudnn", + "@local_config_cuda//cuda:cudnn_header", + "@local_config_tensorrt//:tensorrt", + "@opencv//:imgcodecs", + "@boost", + ] + select({ + "@platforms//cpu:x86_64": ["@paddleinference-x86_64//:paddleinference_lib"], + "@platforms//cpu:aarch64": ["@paddleinference-aarch64//:paddleinference_lib"] + }), ) filegroup( @@ -100,5 +129,20 @@ filegroup( srcs = glob(["inference_test_data/**"]), ) +filegroup( + name = "libtorch_test_files", + srcs = glob([ + "libtorch/test_data/**", + ]) +) + +filegroup( + name = "onnx_test_files", + srcs = glob([ + "onnx/testdata/**", + ]) +) + apollo_package() + cpplint() diff --git a/modules/perception/common/inference/libtorch/BUILD b/modules/perception/common/inference/libtorch/BUILD deleted file mode 100644 index 98623d1fa13..00000000000 --- a/modules/perception/common/inference/libtorch/BUILD +++ /dev/null @@ -1,29 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -filegroup( - name = "libtorch_test_files", - srcs = glob([ - "test_data/**", - ]) -) - -cc_library( - name = "torch_net", - srcs = ["torch_net.cc"], - hdrs = ["torch_net.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/inference:inference_lib", - "@libtorch_gpu", - "@com_google_protobuf//:protobuf", - "@opencv//:imgcodecs", - "@local_config_cuda//cuda:cudart", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/inference/onnx/BUILD b/modules/perception/common/inference/onnx/BUILD deleted file mode 100644 index 2b7991682bf..00000000000 --- a/modules/perception/common/inference/onnx/BUILD +++ /dev/null @@ -1,45 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -filegroup( - name = "onnx_test_files", - srcs = glob([ - "testdata/**", - ]) -) - -cc_library( - name = "onnx_obstacle_detector", - srcs = ["onnx_obstacle_detector.cc"], - alwayslink = True, - hdrs = [ - "onnx_obstacle_detector.h", - ], - deps = [ - "//modules/perception/common:perception_gflags", - "//modules/perception/common/inference:inference_lib", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - ], -) - -cc_library( - name = "libtorch_obstacle_detector", - srcs = ["libtorch_obstacle_detector.cc"], - alwayslink = True, - hdrs = [ - "libtorch_obstacle_detector.h", - ], - deps = [ - "//cyber", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/inference:inference_lib", - "@libtorch_gpu", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/inference/operators/BUILD b/modules/perception/common/inference/operators/BUILD deleted file mode 100644 index a182018c1fb..00000000000 --- a/modules/perception/common/inference/operators/BUILD +++ /dev/null @@ -1,48 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) - -cuda_library( - name = "perception_inference_operators_cuda", - srcs = ["roipooling_layer.cu"], - hdrs = ["roipooling_layer.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/base:blob", - "//modules/perception/common/inference:layer_lib", - "@eigen", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "perception_inference_operators", - srcs = [ - "roipooling_layer.cc", - ":perception_inference_operators_cuda", - ], - alwayslink = True, - hdrs = ["roipooling_layer.h"], - deps = [ - "//modules/perception/common/base:blob", - "//modules/perception/common/inference:layer_lib", - ], -) - -#cc_test( -# name = "perception_inference_operators_test", -# size = "small", -# srcs = ["roipooling_layer_test.cc"], -# deps = [ -# ":perception_inference_operators", -# "@com_google_googletest//:gtest_main", -# ], -#) - -apollo_package() -cpplint() diff --git a/modules/perception/common/inference/paddlepaddle/BUILD b/modules/perception/common/inference/paddlepaddle/BUILD deleted file mode 100644 index 536af006c9b..00000000000 --- a/modules/perception/common/inference/paddlepaddle/BUILD +++ /dev/null @@ -1,21 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "paddle_net", - srcs = ["paddle_net.cc"], - hdrs = ["paddle_net.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/inference:inference_lib", - ] + select({ - "@platforms//cpu:x86_64": ["@paddleinference-x86_64//:paddleinference_lib"], - "@platforms//cpu:aarch64": ["@paddleinference-aarch64//:paddleinference_lib"] - }), -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/inference/tensorrt/BUILD b/modules/perception/common/inference/tensorrt/BUILD index 2af8086fb3f..674e40cb9b3 100644 --- a/modules/perception/common/inference/tensorrt/BUILD +++ b/modules/perception/common/inference/tensorrt/BUILD @@ -1,123 +1,139 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_test") +load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "rt_legacy", - hdrs = ["rt_legacy.h"], - alwayslink = True, -) - -cc_library( - name = "rt_common", - srcs = ["rt_common.cc"], - hdrs = ["rt_common.h"], +cuda_library( + name = "apollo_perception_common_inference_tensorrt_plugins", alwayslink = True, + srcs = [ + "plugins/kernels.cu", + "plugins/nms_cuda.cu", + "plugins/dfmb_psroi_align_plugin.cu", + "plugins/rcnn_proposal_plugin.cu", + "plugins/rpn_proposal_ssd_plugin.cu", + "plugins/slice_plugin.cu", + "plugins/argmax_plugin.cu", + "plugins/softmax_plugin.cu", + "plugins/leakyReLU_plugin.cu" + ], + hdrs = [ + "plugins/kernels.h", + "plugins/dfmb_psroi_align_plugin.h", + "plugins/rcnn_proposal_plugin.h", + "plugins/rpn_proposal_ssd_plugin.h", + "plugins/slice_plugin.h", + "plugins/argmax_plugin.h", + "plugins/softmax_plugin.h", + "plugins/leakyReLU_plugin.h", + ], deps = [ - "//cyber", - "//modules/perception/common/base:common", - "//modules/perception/common/proto:rt_cc_proto", - "@com_google_absl//:absl", - "@local_config_cuda//cuda:cudnn_header", - "//modules/perception/common/inference/tensorrt:rt_legacy", + "@eigen", + "@local_config_cuda//cuda:cublas", + "@local_config_cuda//cuda:cudart", + "@local_config_cuda//cuda:cudnn", "@local_config_tensorrt//:tensorrt", + "//cyber", + "//modules/perception/common/base:apollo_perception_common_base", + ":apollo_perception_inference_rt_common", ], ) -cc_test( - name = "rt_common_test", +apollo_cc_test( + name = "slice_plugin_test", size = "small", - srcs = ["rt_common_test.cc"], + srcs = ["plugins/slice_plugin_test.cc"], deps = [ - ":rt_common", + ":apollo_perception_common_inference_tensorrt_plugins", "@com_google_googletest//:gtest_main", ], + linkstatic = True, ) -cc_library( - name = "rt_utils", - srcs = ["rt_utils.cc"], - hdrs = ["rt_utils.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/proto:rt_cc_proto", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cc_test( - name = "rt_utils_test", +apollo_cc_test( + name = "argmax_plugin_test", size = "small", - srcs = ["rt_utils_test.cc"], + srcs = ["plugins/argmax_plugin_test.cc"], deps = [ - ":rt_utils", + ":apollo_perception_common_inference_tensorrt_plugins", "@com_google_googletest//:gtest_main", + "@local_config_cuda//cuda:cublas", ], linkstatic = True, ) -cc_library( - name = "rt_net", - srcs = ["rt_net.cc"], - alwayslink = True, +apollo_cc_library( + name = "apollo_perception_inference_rt_common", hdrs = [ + "rt_legacy.h", + "rt_common.h", + "rt_utils.h", + "batch_stream.h", "entropy_calibrator.h", - "rt_net.h", + ], + srcs = [ + "rt_common.cc", + "batch_stream.cc", + "rt_utils.cc", + "entropy_calibrator.cc", ], deps = [ - ":batch_stream", - ":entropy_calibrator", - ":rt_common", - ":rt_utils", "//cyber", - "//modules/perception/common/base", + "//modules/perception/common/base:apollo_perception_common_base", + "@local_config_cuda//cuda:cudnn_header", + "@local_config_tensorrt//:tensorrt", + "//modules/perception/common/proto:rt_cc_proto", "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference/tensorrt/plugins:perception_inference_tensorrt_plugins", "@com_google_protobuf//:protobuf", - "@local_config_tensorrt//:tensorrt", + "@local_config_cuda//cuda:cudart", "@opencv//:imgcodecs", - "//modules/perception/common/inference/tensorrt:rt_legacy", + "@com_google_absl//:absl", + "@local_config_cuda//cuda:cuda_headers", + ] +) + +apollo_cc_library( + name = "apollo_perception_inference_rt_net", + hdrs = [ + "rt_net.h", + ], + srcs = [ + "rt_net.cc", ], + deps = [ + "//cyber", + ":apollo_perception_inference_rt_common", + ":apollo_perception_common_inference_tensorrt_plugins", + "//modules/perception/common/base:apollo_perception_common_base", + "@local_config_cuda//cuda:cudnn_header", + "@local_config_tensorrt//:tensorrt", + "//modules/perception/common/proto:rt_cc_proto", + "//modules/perception/common/inference:inference_lib", + "@com_google_protobuf//:protobuf", + "@local_config_cuda//cuda:cudart", + "@opencv//:imgcodecs", + "@com_google_absl//:absl", + "@local_config_cuda//cuda:cuda_headers", + ] ) -cc_test( - name = "rt_net_test", +apollo_cc_test( + name = "batch_stream_test", size = "small", - srcs = ["rt_net_test.cc"], + srcs = ["batch_stream_test.cc"], + copts = ["-fno-access-control"], data = [ "//modules/perception/common/inference:inference_test_data", ], - tags = ["exclude"], - deps = [ - ":rt_net", - "//modules/perception/common/inference/utils:inference_util_cuda_lib", - "@atlas//:cblas", - "@com_google_googletest//:gtest_main", - ], linkstatic = True, -) - -cc_library( - name = "entropy_calibrator", - srcs = ["entropy_calibrator.cc"], - hdrs = ["entropy_calibrator.h"], - alwayslink = True, deps = [ - ":batch_stream", - ":rt_utils", - "@com_google_protobuf//:protobuf", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - "@opencv//:imgcodecs", - "//modules/perception/common/inference/tensorrt:rt_legacy", + ":apollo_perception_inference_rt_common", + "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "entropy_calibrator_test", size = "small", srcs = ["entropy_calibrator_test.cc"], @@ -125,43 +141,49 @@ cc_test( data = [ "//modules/perception/common/inference:inference_test_data", ], + linkstatic = True, deps = [ - ":entropy_calibrator", + ":apollo_perception_inference_rt_common", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) -cc_library( - name = "batch_stream", - srcs = ["batch_stream.cc"], - hdrs = ["batch_stream.h"], - alwayslink = True, +apollo_cc_test( + name = "rt_net_test", + size = "small", + srcs = ["rt_net_test.cc"], + data = [ + "//modules/perception/common/inference:inference_test_data", + ], + linkstatic = True, + tags = ["exclude"], deps = [ - "//cyber", - "//modules/perception/common/proto:rt_cc_proto", - "@com_google_absl//:absl", - "@com_google_protobuf//:protobuf", - "@opencv//:imgcodecs", - "@local_config_cuda//cuda:cuda_headers", - "//modules/perception/common/inference/tensorrt:rt_legacy", - "@local_config_tensorrt//:tensorrt", + ":apollo_perception_inference_rt_net", + "//modules/perception/common/inference:apollo_perception_common_inference", + "@atlas//:cblas", + "@com_google_googletest//:gtest_main", ], ) -cc_test( - name = "batch_stream_test", +apollo_cc_test( + name = "rt_utils_test", size = "small", - srcs = ["batch_stream_test.cc"], - copts = ["-fno-access-control"], - data = [ - "//modules/perception/common/inference:inference_test_data", + srcs = ["rt_utils_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_inference_rt_common", + "@com_google_googletest//:gtest_main", ], +) + +apollo_cc_test( + name = "rt_common_test", + size = "small", + srcs = ["rt_common_test.cc"], deps = [ - ":batch_stream", + ":apollo_perception_inference_rt_common", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) apollo_package() diff --git a/modules/perception/common/inference/tensorrt/plugins/BUILD b/modules/perception/common/inference/tensorrt/plugins/BUILD deleted file mode 100644 index a90c99e5ef3..00000000000 --- a/modules/perception/common/inference/tensorrt/plugins/BUILD +++ /dev/null @@ -1,178 +0,0 @@ -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("@local_config_tensorrt//:build_defs.bzl", "if_tensorrt_version_8") -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -licenses(["notice"]) - -cc_library( - name = "perception_inference_tensorrt_plugins", - alwayslink = True, - srcs = [ - ":dfmb_psroi_align_plugin", - ":kernels_cuda", - ":rcnn_proposal_plugin", - ":rpn_proposal_ssd_plugin", - ":perception_inference_tensorrt_plugins_argmax_cuda", - ":perception_inference_tensorrt_plugins_leakyrelu_cuda", - ":perception_inference_tensorrt_plugins_slice_cuda", - ":perception_inference_tensorrt_plugins_softmax_cuda", - ], - hdrs = glob([ - "*.h", - ]), - linkstatic = True, - deps = [ - "@local_config_cuda//cuda:cublas", - "@local_config_cuda//cuda:cudart", - "@local_config_cuda//cuda:cudnn", - ], -) - - -cuda_library( - name = "kernels_cuda", - srcs = [ - "kernels.cu", - "nms_cuda.cu", - ], - hdrs = ["kernels.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/base:common", - "@local_config_cuda//cuda:cudart", - ], -) - -cuda_library( - name = "dfmb_psroi_align_plugin", - srcs = ["dfmb_psroi_align_plugin.cu"], - hdrs = ["dfmb_psroi_align_plugin.h"], - alwayslink = True, - deps = [ - ":kernels_cuda", - "//cyber", - "//modules/perception/common/inference/tensorrt:rt_common", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cuda_library( - name = "rcnn_proposal_plugin", - srcs = ["rcnn_proposal_plugin.cu"], - hdrs = ["rcnn_proposal_plugin.h"], - alwayslink = True, - deps = [ - ":kernels_cuda", - "//modules/perception/common/inference/tensorrt:rt_common", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cuda_library( - name = "rpn_proposal_ssd_plugin", - srcs = ["rpn_proposal_ssd_plugin.cu"], - hdrs = ["rpn_proposal_ssd_plugin.h"], - alwayslink = True, - deps = [ - ":kernels_cuda", - "//modules/perception/common/inference/tensorrt:rt_common", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cuda_library( - name = "perception_inference_tensorrt_plugins_slice_cuda", - srcs = ["slice_plugin.cu"], - hdrs = ["slice_plugin.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/inference/tensorrt:rt_common", - "@eigen", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cuda_library( - name = "perception_inference_tensorrt_plugins_argmax_cuda", - srcs = ["argmax_plugin.cu"], - hdrs = ["argmax_plugin.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/inference/tensorrt:rt_common", - "@eigen", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cuda_library( - name = "perception_inference_tensorrt_plugins_softmax_cuda", - srcs = ["softmax_plugin.cu"], - hdrs = ["softmax_plugin.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/inference/tensorrt:rt_common", - "@eigen", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cuda_library( - name = "perception_inference_tensorrt_plugins_leakyrelu_cuda", - srcs = ["leakyReLU_plugin.cu"], - hdrs = ["leakyReLU_plugin.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/inference/tensorrt:rt_common", - "@eigen", - "@local_config_cuda//cuda:cudart", - "@local_config_cuda//cuda:cudnn", - "@local_config_tensorrt//:tensorrt", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -cc_test( - name = "slice_plugin_test", - size = "small", - srcs = ["slice_plugin_test.cc"], - deps = [ - ":perception_inference_tensorrt_plugins", - "//modules/perception/common/inference/tensorrt:rt_common", - "@com_google_googletest//:gtest_main", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], - linkstatic = True, -) - -cc_test( - name = "argmax_plugin_test", - size = "small", - srcs = ["argmax_plugin_test.cc"], - deps = [ - ":perception_inference_tensorrt_plugins", - "//modules/perception/common/inference/tensorrt:rt_common", - "@com_google_googletest//:gtest_main", - "@local_config_cuda//cuda:cublas", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/inference/tools/BUILD b/modules/perception/common/inference/tools/BUILD index 5fb155da0da..413e9f35101 100644 --- a/modules/perception/common/inference/tools/BUILD +++ b/modules/perception/common/inference/tools/BUILD @@ -1,58 +1,49 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_binary( +apollo_cc_binary( name = "cal_table_generator", srcs = ["cal_table_generator.cc"], - linkstatic = False, deps = [ "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference/tensorrt:batch_stream", - "//modules/perception/common/inference/tensorrt:entropy_calibrator", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/utils:inference_util_lib", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_common", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_net", + "//modules/perception/common/inference/utils:apollo_perception_common_utils", ], ) -cc_binary( +apollo_cc_binary( name = "denseline_sample", srcs = ["denseline_sample.cc"], - linkstatic = False, deps = [ "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference/tensorrt:batch_stream", - "//modules/perception/common/inference/tensorrt:entropy_calibrator", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/utils:inference_util_lib", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_common", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_net", + "//modules/perception/common/inference/utils:apollo_perception_common_utils", ], ) -cc_binary( +apollo_cc_binary( name = "lane_sample", srcs = ["lane_sample.cc"], - linkstatic = False, deps = [ "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference/tensorrt:batch_stream", - "//modules/perception/common/inference/tensorrt:entropy_calibrator", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/utils:inference_util_lib", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_common", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_net", + "//modules/perception/common/inference/utils:apollo_perception_common_utils", ], ) -cc_binary( +apollo_cc_binary( name = "yolo_sample", srcs = ["yolo_sample.cc"], - linkstatic = False, deps = [ "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference/tensorrt:batch_stream", - "//modules/perception/common/inference/tensorrt:entropy_calibrator", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/utils:inference_util_lib", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_common", + "//modules/perception/common/inference/tensorrt:apollo_perception_inference_rt_net", + "//modules/perception/common/inference/utils:apollo_perception_common_utils", ], ) diff --git a/modules/perception/common/inference/utils/BUILD b/modules/perception/common/inference/utils/BUILD index cc246791e4b..e4fe0d2793d 100644 --- a/modules/perception/common/inference/utils/BUILD +++ b/modules/perception/common/inference/utils/BUILD @@ -1,159 +1,65 @@ load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) cuda_library( - name = "inference_cuda_util_cuda_lib", - srcs = ["cuda_util.cu"], - hdrs = ["cuda_util.h"], - alwayslink = True, - deps = [ - "//cyber", - "@boost", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "inference_cuda_util_lib", - srcs = [":inference_cuda_util_cuda_lib"], - hdrs = ["cuda_util.h"], - alwayslink = True, - linkstatic = 1, - deps = [ - "@local_config_tensorrt//:tensorrt", - "@opencv//:imgcodecs", - ], -) - -cuda_library( - name = "inference_util_cuda_lib", - srcs = ["util.cu"], - hdrs = ["util.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base", - "@eigen", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "inference_util_lib", + name = "apollo_perception_common_utils", srcs = [ + "cuda_util.cu", + "util.cu", "util.cc", - ":inference_util_cuda_lib", + "resize.cu", + "gemm.cu", + "binary_data.cc", ], - alwayslink = True, - hdrs = ["util.h"], - linkstatic = 1, - deps = [ - "//modules/perception/common/base:blob", - "//modules/perception/common/base:box", - "//modules/perception/common/base:image", - "//modules/perception/common/base:point_cloud", - "@local_config_tensorrt//:tensorrt", - "@opencv//:imgcodecs", + hdrs = [ + "cuda_util.h", + "util.h", + "resize.h", + "gemm.h", + "binary_data.h", ], -) - -cuda_library( - name = "inference_resize_cuda_lib", - srcs = ["resize.cu"], - hdrs = ["resize.h"], - alwayslink = True, deps = [ - ":inference_cuda_util_lib", - ":inference_util_lib", "//cyber", - "//modules/perception/common/base:blob", - "//modules/perception/common/base:image", - "@local_config_cuda//cuda:cublas", + "//modules/perception/common/base:apollo_perception_common_base", + "@eigen", + "@boost", "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "inference_resize_lib", - srcs = [":inference_resize_cuda_lib"], - hdrs = ["resize.h"], - alwayslink = True, - linkstatic = 1, - deps = [ + "@local_config_cuda//cuda:cublas", "@local_config_tensorrt//:tensorrt", "@opencv//:imgcodecs", ], -) - -cuda_library( - name = "inference_gemm_cuda_lib", - srcs = ["gemm.cu"], - hdrs = ["gemm.h"], alwayslink = True, - deps = [ - ":inference_cuda_util_lib", - ":inference_util_lib", - "//cyber", - "//modules/perception/common/base:blob", - "//modules/perception/common/base:image", - "@local_config_cuda//cuda:cudart", - ], ) -cc_library( - name = "inference_gemm_lib", - srcs = [":inference_gemm_cuda_lib"], - hdrs = ["gemm.h"], - alwayslink = True, - linkstatic = 1, - deps = [ - "@local_config_tensorrt//:tensorrt", - "@opencv//:imgcodecs", - ], -) - -cc_test( +apollo_cc_test( name = "inference_util_test", size = "small", srcs = ["util_test.cc"], data = [ "//modules/perception/common/inference:inference_test_data", ], - deps = [ - ":inference_util_lib", - "@com_google_googletest//:gtest_main", - ], linkstatic = True, -) - -cc_library( - name = "inference_binary_data_lib", - srcs = ["binary_data.cc"], - hdrs = ["binary_data.h"], - alwayslink = True, deps = [ - "//modules/perception/common/base:blob", - "@local_config_tensorrt//:tensorrt", - "@opencv//:imgcodecs", + ":apollo_perception_common_utils", + "@com_google_googletest//:gtest_main", ], ) -cc_test( +apollo_cc_test( name = "binary_data_test", size = "small", srcs = ["binary_data_test.cc"], data = [ "//modules/perception/common/inference:inference_test_data", ], + linkstatic = True, deps = [ - ":inference_binary_data_lib", + ":apollo_perception_common_utils", "@com_google_googletest//:gtest_main", ], - linkstatic = True, ) apollo_package() diff --git a/modules/perception/camera_detection_bev/interface/BUILD b/modules/perception/common/interface/BUILD similarity index 50% rename from modules/perception/camera_detection_bev/interface/BUILD rename to modules/perception/common/interface/BUILD index f4608ca5160..646fda215fe 100644 --- a/modules/perception/camera_detection_bev/interface/BUILD +++ b/modules/perception/common/interface/BUILD @@ -1,12 +1,11 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] -cc_library( +apollo_cc_library( name = "base_obstacle_detector", srcs = [ "base_obstacle_detector.cc", @@ -16,12 +15,9 @@ cc_library( ], deps = [ "//cyber", - "//modules/perception/camera_detection_bev:camera_frame", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/common/proto:model_info_cc_proto", "@eigen", "@com_google_protobuf//:protobuf", diff --git a/modules/perception/camera_detection_2d/interface/base_obstacle_detector.cc b/modules/perception/common/interface/base_obstacle_detector.cc similarity index 94% rename from modules/perception/camera_detection_2d/interface/base_obstacle_detector.cc rename to modules/perception/common/interface/base_obstacle_detector.cc index 795eb1d667b..b48cab94539 100644 --- a/modules/perception/camera_detection_2d/interface/base_obstacle_detector.cc +++ b/modules/perception/common/interface/base_obstacle_detector.cc @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. *****************************************************************************/ -#include "modules/perception/camera_detection_2d/interface/base_obstacle_detector.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" #include #include @@ -42,7 +42,7 @@ bool BaseObstacleDetector::InitNetwork(const common::ModelInfo& model_info, inference::GetBlobNames(model_info.outputs()); // Network type - const auto& framework = model_info.framework(); + const auto &framework = model_info.framework(); net_.reset(inference::CreateInferenceByName(framework, proto_file, weight_file, output_names, input_names, model_root)); diff --git a/modules/perception/camera_detection_2d/interface/base_obstacle_detector.h b/modules/perception/common/interface/base_obstacle_detector.h similarity index 100% rename from modules/perception/camera_detection_2d/interface/base_obstacle_detector.h rename to modules/perception/common/interface/base_obstacle_detector.h diff --git a/modules/perception/common/lib/BUILD b/modules/perception/common/lib/BUILD index 63f3f67669b..ce51a7baa66 100644 --- a/modules/perception/common/lib/BUILD +++ b/modules/perception/common/lib/BUILD @@ -1,7 +1,106 @@ -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) +apollo_cc_library( + name = "apollo_perception_common_lib", + srcs = [ + "calibration_service/online_calibration_service/online_calibration_service.cc", + "calibrator/common/histogram_estimator.cc", + "calibrator/laneline/lane_based_calibrator.cc", + "calibrator/laneline/laneline_calibrator.cc", + "config_manager/config_manager.cc", + "registerer/registerer.cc", + "thread/thread.cc", + "thread/thread_pool.cc", + "thread/thread_worker.cc", + ], + hdrs = [ + "calibration_service/online_calibration_service/online_calibration_service.h", + "calibrator/common/histogram_estimator.h", + "calibrator/laneline/lane_based_calibrator.h", + "calibrator/laneline/lane_struct_for_calib.h", + "calibrator/laneline/laneline_calibrator.h", + "config_manager/config_manager.h", + "interface/base_calibration_service.h", + "interface/base_calibrator.h", + "interface/base_cipv.h", + "interface/base_init_options.h", + "registerer/registerer.h", + "thread/concurrent_queue.h", + "thread/mutex.h", + "thread/thread.h", + "thread/thread_pool.h", + "thread/thread_worker.h", + ], + deps = [ + "//cyber", + "//modules/common/util:util_tool", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera_camera_frame", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/proto:perception_config_schema_cc_proto", + "@eigen", + ], +) + +apollo_cc_test( + name = "registerer_test", + size = "small", + srcs = ["registerer/registerer_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_common_lib", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "concurrent_queue_test", + size = "small", + srcs = ["thread/concurrent_queue_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_common_lib", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "thread_pool_test", + size = "small", + srcs = ["thread/thread_pool_test.cc"], + deps = [ + ":apollo_perception_common_lib", + "@com_google_googletest//:gtest_main", + "@com_google_protobuf//:protobuf", + ], +) + +apollo_cc_test( + name = "thread_test", + size = "small", + srcs = ["thread/thread_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_common_lib", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "thread_worker_test", + size = "small", + srcs = ["thread/thread_worker_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_common_lib", + "@com_google_googletest//:gtest_main", + ], +) + apollo_package() -cpplint() +cpplint() \ No newline at end of file diff --git a/modules/perception/common/lib/calibration_service/online_calibration_service/BUILD b/modules/perception/common/lib/calibration_service/online_calibration_service/BUILD deleted file mode 100644 index 5bbba5a1670..00000000000 --- a/modules/perception/common/lib/calibration_service/online_calibration_service/BUILD +++ /dev/null @@ -1,22 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "online_calibration_service", - srcs = ["online_calibration_service.cc"], - hdrs = ["online_calibration_service.h"], - deps = [ - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/algorithm/i_lib/geometry:i_plane", - "//modules/perception/common/lib/calibrator/laneline:laneline_calibrator", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/common/lib/interface:base_calibrator", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lib/calibrator/common/BUILD b/modules/perception/common/lib/calibrator/common/BUILD deleted file mode 100644 index 509609b1c83..00000000000 --- a/modules/perception/common/lib/calibrator/common/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "histogram_estimator", - srcs = ["histogram_estimator.cc"], - hdrs = ["histogram_estimator.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/algorithm/i_lib/core", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lib/calibrator/laneline/BUILD b/modules/perception/common/lib/calibrator/laneline/BUILD deleted file mode 100644 index e0f483c9202..00000000000 --- a/modules/perception/common/lib/calibrator/laneline/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "lane_based_calibrator", - srcs = ["lane_based_calibrator.cc"], - alwayslink = True, - hdrs = ["lane_based_calibrator.h"], - deps = [ - ":lane_struct_for_calib", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/lib/calibrator/common:histogram_estimator", - ], -) - -cc_library( - name = "lane_struct_for_calib", - hdrs = ["lane_struct_for_calib.h"], - alwayslink = True, - deps = [ - "//modules/common/util:util_tool", - "@eigen", - ], -) - -cc_library( - name = "laneline_calibrator", - srcs = ["laneline_calibrator.cc"], - hdrs = ["laneline_calibrator.h"], - deps = [ - ":lane_based_calibrator", - "//modules/perception/common/algorithm/i_lib/core", - "//modules/perception/common/lib/interface:base_calibrator", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lib/config_manager/BUILD b/modules/perception/common/lib/config_manager/BUILD deleted file mode 100644 index 12dae004846..00000000000 --- a/modules/perception/common/lib/config_manager/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "config_manager", - srcs = ["config_manager.cc"], - hdrs = ["config_manager.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/algorithm/io:io_util", - "//modules/perception/common/lib/thread", - "//modules/perception/common/proto:perception_config_schema_cc_proto", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lib/interface/BUILD b/modules/perception/common/lib/interface/BUILD deleted file mode 100644 index 5fa67c0bac3..00000000000 --- a/modules/perception/common/lib/interface/BUILD +++ /dev/null @@ -1,52 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_init_options", - hdrs = ["base_init_options.h"], - alwayslink = True, -) - -cc_library( - name = "base_calibrator", - hdrs = ["base_calibrator.h"], - alwayslink = True, - deps = [ - ":base_init_options", - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/lib/registerer", - "@eigen", - ], -) - -cc_library( - name = "base_calibration_service", - hdrs = ["base_calibration_service.h"], - alwayslink = True, - deps = [ - ":base_init_options", - "//modules/perception/common/camera/common:camera_frame", - "//modules/perception/common/lib/registerer:registerer", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - ], -) - -cc_library( - name = "base_cipv", - hdrs = ["base_cipv.h"], - alwayslink = True, - deps = [ - "//cyber", - ":base_init_options", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/registerer", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lib/registerer/BUILD b/modules/perception/common/lib/registerer/BUILD deleted file mode 100644 index 796b4f9335c..00000000000 --- a/modules/perception/common/lib/registerer/BUILD +++ /dev/null @@ -1,29 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "registerer", - srcs = ["registerer.cc"], - hdrs = ["registerer.h"], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -cc_test( - name = "registerer_test", - size = "small", - srcs = ["registerer_test.cc"], - deps = [ - ":registerer", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lib/thread/BUILD b/modules/perception/common/lib/thread/BUILD deleted file mode 100644 index b79757fd327..00000000000 --- a/modules/perception/common/lib/thread/BUILD +++ /dev/null @@ -1,78 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "thread", - srcs = [ - "thread.cc", - "thread_pool.cc", - "thread_worker.cc", - ], - alwayslink = True, - hdrs = [ - "concurrent_queue.h", - "mutex.h", - "thread.h", - "thread_pool.h", - "thread_worker.h", - ], - deps = [ - "//cyber", - ], -) - -cc_library( - name = "concurrent_queue", - hdrs = ["concurrent_queue.h"], - alwayslink = True, -) - -cc_test( - name = "concurrent_queue_test", - size = "small", - srcs = ["concurrent_queue_test.cc"], - deps = [ - ":thread", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "thread_pool_test", - size = "small", - srcs = ["thread_pool_test.cc"], - deps = [ - ":thread", - "@com_google_googletest//:gtest_main", - "@com_google_protobuf//:protobuf", - ], -) - -cc_test( - name = "thread_test", - size = "small", - srcs = ["thread_test.cc"], - deps = [ - ":thread", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "thread_worker_test", - size = "small", - srcs = ["thread_worker_test.cc"], - deps = [ - ":thread", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lidar/BUILD b/modules/perception/common/lidar/BUILD index 63f3f67669b..61480efd25b 100644 --- a/modules/perception/common/lidar/BUILD +++ b/modules/perception/common/lidar/BUILD @@ -1,7 +1,107 @@ -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -apollo_package() +apollo_cc_library( + name = "apollo_perception_common_lidar", + deps = [ + ":apollo_perception_common_lidar_common", + ":apollo_perception_common_lidar_scene_manager", + ] +) + +apollo_cc_library( + name = "apollo_perception_common_lidar_common", + srcs = [ + "common/cloud_mask.cc", + "common/config_util.cc", + "common/lidar_frame_pool.cc", + "common/lidar_object_util.cc", + "common/object_sequence.cc", + ], + hdrs = [ + "common/cloud_mask.h", + "common/config_util.h", + "common/feature_descriptor.h", + "common/lidar_error_code.h", + "common/lidar_frame.h", + "common/lidar_frame_pool.h", + "common/lidar_log.h", + "common/lidar_object_util.h", + "common/lidar_point_label.h", + "common/lidar_timer.h", + "common/object_sequence.h", + "common/pcl_util.h", + "common/pointcloud_util.h", + ], + deps = [ + "//cyber", + "//modules/common/util:common_util", + "//modules/perception/common:perception_common_util", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lidar/scene_manager/ground_service/proto:ground_service_config_cc_proto", + "//modules/perception/common/lidar/scene_manager/proto:scene_manager_config_cc_proto", + "//modules/perception/common/lidar/scene_manager/roi_service/proto:roi_service_cc_proto", + "//modules/perception/common/proto:perception_config_schema_cc_proto", + "@com_google_googletest//:gtest", + "@eigen", + "@local_config_pcl//:pcl", + ] +) + +apollo_cc_library( + name = "apollo_perception_common_lidar_scene_manager", + srcs = [ + "scene_manager/ground_service/ground_service.cc", + "scene_manager/roi_service/roi_service.cc", + "scene_manager/scene_manager.cc", + ], + hdrs = [ + "scene_manager/ground_service/ground_service.h", + "scene_manager/ground_service/ground_struct.h", + "scene_manager/roi_service/roi_service.h", + "scene_manager/scene_manager.h", + "scene_manager/scene_service.h", + ], + deps = [ + "//cyber", + "//modules/common/util:common_util", + "//modules/perception/common:perception_common_util", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/lidar/scene_manager/ground_service/proto:ground_service_config_cc_proto", + "//modules/perception/common/lidar/scene_manager/proto:scene_manager_config_cc_proto", + "//modules/perception/common/lidar/scene_manager/roi_service/proto:roi_service_cc_proto", + "//modules/perception/common/proto:perception_config_schema_cc_proto", + "@com_google_googletest//:gtest", + "@eigen", + "@local_config_pcl//:pcl", + ], +) + +apollo_cc_test( + name = "cloud_mask_test", + size = "small", + srcs = ["common/cloud_mask_test.cc"], + linkstatic = True, + deps = [ + ":apollo_perception_common_lidar", + "@com_google_googletest//:gtest_main", + ], +) + +filegroup( + name = "scene_manager_files", + srcs = glob([ + "scene_manager/conf/**", + "scene_manager/data/**", + ]), +) + cpplint() +apollo_package() \ No newline at end of file diff --git a/modules/perception/common/lidar/common/BUILD b/modules/perception/common/lidar/common/BUILD deleted file mode 100644 index 917121667da..00000000000 --- a/modules/perception/common/lidar/common/BUILD +++ /dev/null @@ -1,148 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "common", - alwayslink = True, - deps = [ - ":cloud_mask", - ":config_util", - ":lidar_error_code", - ":lidar_frame", - ":lidar_log", - ":lidar_object_util", - ":lidar_point_label", - ":lidar_timer", - ":pcl_util", - ], -) - -cc_library( - name = "cloud_mask", - srcs = ["cloud_mask.cc"], - alwayslink = True, - hdrs = ["cloud_mask.h"], - deps = [ - "//modules/perception/common/base:point_cloud", - ], -) - -cc_test( - name = "cloud_mask_test", - size = "small", - srcs = ["cloud_mask_test.cc"], - deps = [ - ":cloud_mask", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "config_util", - srcs = ["config_util.cc"], - alwayslink = True, - hdrs = ["config_util.h"], - deps = [], -) - -cc_library( - name = "lidar_log", - hdrs = ["lidar_log.h"], - alwayslink = True, - deps = [ - "//cyber", - ], -) - -cc_library( - name = "feature_descriptor", - hdrs = ["feature_descriptor.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base:point_cloud", - ], -) - -cc_library( - name = "lidar_frame", - srcs = ["lidar_frame_pool.cc"], - hdrs = [ - "lidar_frame.h", - "lidar_frame_pool.h", - ], - alwayslink = True, - deps = [ - ":lidar_log", - "//modules/perception/common/base", - ], -) - -cc_library( - name = "lidar_object_util", - srcs = ["lidar_object_util.cc"], - hdrs = ["lidar_object_util.h"], - alwayslink = True, - deps = [ - ":lidar_log", - "//modules/perception/common/base", - ], -) - -cc_library( - name = "lidar_point_label", - hdrs = ["lidar_point_label.h"], - alwayslink = True, -) - -cc_library( - name = "lidar_timer", - hdrs = ["lidar_timer.h"], - alwayslink = True, -) - -cc_library( - name = "lidar_error_code", - hdrs = ["lidar_error_code.h"], - alwayslink = True, -) - -cc_library( - name = "pcl_util", - hdrs = ["pcl_util.h"], - alwayslink = True, - deps = [ - ":lidar_log", - "//modules/perception/common/base", - "@local_config_pcl//:pcl", - ], -) - -cc_library( - name = "object_sequence", - srcs = ["object_sequence.cc"], - hdrs = ["object_sequence.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base:object", - "//modules/perception/common/lidar/common", - "@com_google_googletest//:gtest", - ], -) - -cc_library( - name = "pointcloud__util", - hdrs = ["pointcloud_util.h"], - alwayslink = True, - deps = [ - "@local_config_pcl//:pcl", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lidar/common/pcl_util.h b/modules/perception/common/lidar/common/pcl_util.h index ad588ebc420..8f169352bdf 100644 --- a/modules/perception/common/lidar/common/pcl_util.h +++ b/modules/perception/common/lidar/common/pcl_util.h @@ -23,6 +23,7 @@ #include "modules/perception/common/base/point_cloud.h" #include "modules/perception/common/lidar/common/lidar_log.h" +#include "modules/perception/common/lidar/common/lidar_point_label.h" namespace apollo { namespace perception { @@ -70,27 +71,30 @@ inline bool LoadPCLPCD(const std::string& file_path, return true; } -// static bool WritePcd(const std::string& file_path, -// const base::PointFCloud& cloud) { -// pcl::PointCloud pcl_cloud; -// for (size_t i = 0; i < cloud.size(); ++i) { -// PCLPointXYZL point; -// point.x = cloud[i].x; -// point.y = cloud[i].y; -// point.z = cloud[i].z; -// point.label = cloud.points_label().at(i); -// pcl_cloud.push_back(point); -// } -// try { -// pcl::PCDWriter writer; -// writer.writeBinaryCompressed(file_path, pcl_cloud); -// } catch (const pcl::IOException& ex) { -// AERROR << ex.detailedMessage(); -// return false; -// } -// return true; -// } -// +inline bool WritePcdByLabel(const std::string& file_path, + const base::PointFCloud& cloud, + const LidarPointLabel& label) { + pcl::PointCloud pcl_cloud; + for (size_t i = 0; i < cloud.size(); ++i) { + if (cloud.points_label().at(i) != static_cast(label)) + continue; + PCLPointXYZIT point; + point.x = cloud[i].x; + point.y = cloud[i].y; + point.z = cloud[i].z; + point.intensity = cloud[i].intensity; + point.timestamp = cloud.points_timestamp().at(i); + pcl_cloud.push_back(point); + } + try { + pcl::PCDWriter writer; + writer.writeBinaryCompressed(file_path, pcl_cloud); + } catch (const pcl::IOException& ex) { + AERROR << ex.detailedMessage(); + return false; + } + return true; +} template inline void TransformToPCLXYZI( @@ -141,5 +145,6 @@ POINT_CLOUD_REGISTER_POINT_STRUCT(apollo::perception::lidar::PCLPointXYZIT, intensity)(double, timestamp, timestamp)) POINT_CLOUD_REGISTER_POINT_STRUCT(apollo::perception::lidar::PCLPointXYZL, - (float, x, x)(float, y, y)(float, z, z)( - std::uint32_t, label, label)) + (float, x, x)(float, y, y)(float, z, + z)(std::uint32_t, + label, label)) diff --git a/modules/perception/common/lidar/scene_manager/BUILD b/modules/perception/common/lidar/scene_manager/BUILD deleted file mode 100644 index 441f0d6c992..00000000000 --- a/modules/perception/common/lidar/scene_manager/BUILD +++ /dev/null @@ -1,43 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -filegroup( - name = "scene_manager_files", - srcs = glob([ - "conf/**", - "data/**", - ]) -) - -cc_library( - name = "scene_manager", - srcs = ["scene_manager.cc"], - hdrs = ["scene_manager.h"], - alwayslink = True, - deps = [ - ":scene_service", - "//modules/common/util", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/lib/thread", - "//modules/perception/common/lidar/scene_manager/proto:scene_manager_config_cc_proto", - "//modules/perception/common/proto:perception_config_schema_cc_proto", - "//modules/perception/common:util", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -cc_library( - name = "scene_service", - hdrs = ["scene_service.h"], - alwayslink = True, - deps = [ - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lidar/scene_manager/ground_service/BUILD b/modules/perception/common/lidar/scene_manager/ground_service/BUILD deleted file mode 100644 index 493b4d8619b..00000000000 --- a/modules/perception/common/lidar/scene_manager/ground_service/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "ground_struct", - hdrs = ["ground_struct.h"], - alwayslink = True, - deps = [ - "@eigen", - ], -) - -cc_library( - name = "ground_service", - srcs = ["ground_service.cc"], - hdrs = ["ground_service.h"], - deps = [ - ":ground_struct", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/algorithm/i_lib", - "//modules/perception/common/lidar/scene_manager", - "//modules/perception/common/lidar/scene_manager/ground_service/proto:ground_service_config_cc_proto", - "//modules/perception/common:util", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/lidar/scene_manager/proto/BUILD b/modules/perception/common/lidar/scene_manager/proto/BUILD index 9fa5b1392f8..23c000be43e 100644 --- a/modules/perception/common/lidar/scene_manager/proto/BUILD +++ b/modules/perception/common/lidar/scene_manager/proto/BUILD @@ -9,4 +9,4 @@ proto_library( srcs = ["scene_manager_config.proto"], ) -apollo_package() +apollo_package() \ No newline at end of file diff --git a/modules/perception/common/lidar/scene_manager/roi_service/BUILD b/modules/perception/common/lidar/scene_manager/roi_service/BUILD deleted file mode 100644 index 6ca5beb1281..00000000000 --- a/modules/perception/common/lidar/scene_manager/roi_service/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "roi_service", - srcs = ["roi_service.cc"], - hdrs = ["roi_service.h"], - alwayslink = True, - deps = [ - "//modules/common/util", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/lidar/scene_manager:scene_service", - "//modules/perception/common/lidar/scene_manager/roi_service/proto:roi_service_cc_proto", - "//modules/perception/common:util", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/onboard/BUILD b/modules/perception/common/onboard/BUILD index 63f3f67669b..7db66192097 100644 --- a/modules/perception/common/onboard/BUILD +++ b/modules/perception/common/onboard/BUILD @@ -1,7 +1,45 @@ -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) +apollo_cc_library( + name = "apollo_perception_common_onboard", + srcs = [ + "common_flags/common_flags.cc", + "msg_buffer/msg_buffer.cc", + "msg_serializer/msg_serializer.cc", + "transform_wrapper/transform_wrapper.cc", + ], + hdrs = [ + "common_flags/common_flags.h", + "msg_buffer/msg_buffer.h", + "msg_serializer/msg_serializer.h", + "transform_wrapper/transform_wrapper.h", + "inner_component_messages/camera_detection_component_messages.h", + "inner_component_messages/camera_inner_component_messages.h", + "inner_component_messages/inner_component_messages.h", + "inner_component_messages/lidar_inner_component_messages.h", + "inner_component_messages/traffic_inner_component_messages.h", + ], + deps = [ + "//cyber", + "//modules/common/util:util_tool", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/perception_msgs:perception_benchmark_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/prediction_msgs:feature_cc_proto", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera_camera_frame", + "//modules/perception/common/lidar:apollo_perception_common_lidar_common", + "//modules/transform:apollo_transform", + "@boost", + "@com_github_gflags_gflags//:gflags", + "@eigen", + ], +) + apollo_package() + cpplint() diff --git a/modules/perception/common/onboard/common_flags/BUILD b/modules/perception/common/onboard/common_flags/BUILD deleted file mode 100644 index bd2179e4277..00000000000 --- a/modules/perception/common/onboard/common_flags/BUILD +++ /dev/null @@ -1,27 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_binary( - name = "libcommon_flags.so", - srcs = ["common_flags.cc", "common_flags.h"], - linkstatic = True, - linkshared = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "common_flags", - srcs = [":libcommon_flags.so"], - hdrs = ["common_flags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() \ No newline at end of file diff --git a/modules/perception/common/onboard/inner_component_messages/BUILD b/modules/perception/common/onboard/inner_component_messages/BUILD deleted file mode 100644 index c46a08234d5..00000000000 --- a/modules/perception/common/onboard/inner_component_messages/BUILD +++ /dev/null @@ -1,68 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "inner_component_messages", - hdrs = ["inner_component_messages.h"], - alwayslink = True, -) - -cc_library( - name = "lidar_inner_component_messages", - hdrs = [ - "lidar_inner_component_messages.h", - ], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/lidar/common", - "//modules/perception/common/onboard/inner_component_messages", - ], -) - -cc_library( - name = "traffic_inner_component_messages", - hdrs = [ - "traffic_inner_component_messages.h", - ], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/camera/common:pose", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/onboard/inner_component_messages:inner_component_messages", - "@boost", - ], -) - -cc_library( - name = "camera_inner_component_messages", - hdrs = [ - "camera_inner_component_messages.h", - ], - alwayslink = True, - deps = [ - "@eigen", - "//cyber", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/perception/common/camera/common:camera_frame", - ], -) - -cc_library( - name = "camera_detection_component_messages", - hdrs = [ - "camera_detection_component_messages.h", - ], - alwayslink = True, - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/camera/common:data_provider", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/onboard/msg_buffer/BUILD b/modules/perception/common/onboard/msg_buffer/BUILD deleted file mode 100644 index febe912d92a..00000000000 --- a/modules/perception/common/onboard/msg_buffer/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") -load("//tools:apollo_package.bzl", "apollo_package") - -# DO NOT MODIFY -# THIS FILE IS GENERATED AUTOMATICALLY TO HELP WRITE BUILD FILE -# DELETE THIS FILE WHEN YOU HAVE CREATED THE COMPLETE BUILD FILE -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_binary( - name = "libmsg_buffer.so", - srcs = ["msg_buffer.cc", "msg_buffer.h"], - linkstatic = True, - linkshared = True, - deps = [ - "//cyber", - "@boost", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "msg_buffer", - srcs = [":libmsg_buffer.so"], - hdrs = ["msg_buffer.h"], - deps = [ - "//cyber", - "@boost", - "@com_github_gflags_gflags//:gflags", - ], -) - - -apollo_package() -cpplint() diff --git a/modules/perception/common/onboard/msg_serializer/BUILD b/modules/perception/common/onboard/msg_serializer/BUILD deleted file mode 100644 index 6fadb70b106..00000000000 --- a/modules/perception/common/onboard/msg_serializer/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "msg_serializer", - srcs = ["msg_serializer.cc"], - hdrs = ["msg_serializer.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/onboard/common_flags", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/prediction_msgs:feature_cc_proto", - "//modules/common_msgs/perception_msgs:perception_benchmark_cc_proto", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/common/onboard/transform_wrapper/BUILD b/modules/perception/common/onboard/transform_wrapper/BUILD deleted file mode 100644 index 729170ad1f2..00000000000 --- a/modules/perception/common/onboard/transform_wrapper/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_binary( - name = "libtransform_wrapper.so", - srcs = ["transform_wrapper.cc", "transform_wrapper.h"], - linkstatic = True, - linkshared = True, - deps = [ - "//modules/common/util:util_tool", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/transform:buffer", - "@com_github_gflags_gflags//:gflags", - "@eigen", - ], -) - -cc_library( - name = "transform_wrapper", - hdrs = ["transform_wrapper.h"], - srcs = [":libtransform_wrapper.so"], - deps = [ - "//modules/common/util:util_tool", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/transform:buffer", - "@com_github_gflags_gflags//:gflags", - "@eigen" - ] -) - -apollo_package() -cpplint() - diff --git a/modules/perception/data/conf/sensor_meta.pb.txt b/modules/perception/data/conf/sensor_meta.pb.txt index 40d1e7e2e0a..a1c18054e63 100644 --- a/modules/perception/data/conf/sensor_meta.pb.txt +++ b/modules/perception/data/conf/sensor_meta.pb.txt @@ -20,12 +20,6 @@ sensor_meta { orientation: FRONT } -sensor_meta { - name: "radar_rear" - type: LONG_RANGE_RADAR - orientation: REAR -} - sensor_meta { name: "front_6mm" type: MONOCULAR_CAMERA @@ -37,15 +31,3 @@ sensor_meta { type: MONOCULAR_CAMERA orientation: FRONT } - -sensor_meta { - name: "camera_front" - type: MONOCULAR_CAMERA - orientation: FRONT -} - -sensor_meta { - name: "camera_rear" - type: MONOCULAR_CAMERA - orientation: REAR -} \ No newline at end of file diff --git a/modules/perception/hdmap_based_proposal/README.md b/modules/perception/hdmap_based_proposal/README.md index e69de29bb2d..ba9cf1b3f60 100644 --- a/modules/perception/hdmap_based_proposal/README.md +++ b/modules/perception/hdmap_based_proposal/README.md @@ -0,0 +1,2 @@ +# Introduction +The hdmap based proposal module used to generate traffic lights proposal. We know that the trafficlight region proposal module is very dependent on high-precision maps. Therefore, we consider other recommendation box methods. diff --git a/modules/perception/lane_detection/BUILD b/modules/perception/lane_detection/BUILD index 202e04d19b2..86170c4781d 100644 --- a/modules/perception/lane_detection/BUILD +++ b/modules/perception/lane_detection/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -13,18 +12,71 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "liblane_detection.so", - linkshared = True, - linkstatic = True, - deps = [":lane_detecton_component"], +apollo_cc_library( + name = "apollo_perception_lane_detection", + srcs = [ + "app/debug_info.cc", + "app/lane_camera_perception.cc", + "common/common_functions.cc", + "lib/detector/darkSCNN/darkSCNN_lane_detector.cc", + "lib/detector/denseline/denseline_lane_detector.cc", + "lib/postprocessor/darkSCNN/darkSCNN_lane_postprocessor.cc", + "lib/postprocessor/denseline/denseline_lane_postprocessor.cc", + ], + hdrs = [ + "app/debug_info.h", + "app/lane_camera_perception.h", + "common/common_functions.h", + "interface/base_camera_perception.h", + "interface/base_lane_detector.h", + "interface/base_lane_postprocessor.h", + "lib/detector/darkSCNN/darkSCNN_lane_detector.h", + "lib/detector/denseline/denseline_lane_detector.h", + "lib/postprocessor/darkSCNN/darkSCNN_lane_postprocessor.h", + "lib/postprocessor/denseline/denseline_lane_postprocessor.h", + ], + deps = [ + "//cyber", + "//modules/common/util:util_tool", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/basic_msgs:header_cc_proto", + "//modules/common_msgs/map_msgs:map_cc_proto", + "//modules/common_msgs/map_msgs:map_geometry_cc_proto", + "//modules/common_msgs/perception_msgs:perception_camera_cc_proto", + "//modules/common_msgs/perception_msgs:perception_lane_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "//modules/common_msgs/transform_msgs:transform_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/proto:motion_service_cc_proto", + "//modules/perception/lane_detection/proto:darkSCNN_cc_proto", + "//modules/perception/lane_detection/proto:darkSCNN_postprocessor_cc_proto", + "//modules/perception/lane_detection/proto:denseline_cc_proto", + "//modules/perception/lane_detection/proto:denseline_postprocessor_cc_proto", + "//modules/perception/lane_detection/proto:lane_perception_component_cc_proto", + "//modules/perception/lane_detection/proto:perception_cc_proto", + "//modules/perception/tools/offline:perception_transform_server", + "//modules/perception/tools/offline:perception_visualizer", + "@com_github_gflags_gflags//:gflags", + "@eigen", + "@opencv//:highgui", + ], ) -cc_library( - name = "lane_detecton_component", +apollo_component( + name = "liblane_detection.so", srcs = [ "lane_detection_component.cc", ], @@ -34,7 +86,8 @@ cc_library( copts = PERCEPTION_COPTS, deps = [ "//cyber", - "//modules/perception/common:util", + ":apollo_perception_lane_detection", + "//modules/common/util:util_tool", "//modules/common_msgs/basic_msgs:error_code_cc_proto", "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common_msgs/basic_msgs:header_cc_proto", @@ -46,27 +99,21 @@ cc_library( "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", "//modules/common_msgs/transform_msgs:transform_cc_proto", - "//modules/common/util:util_tool", + "//modules/perception/common:perception_common_util", "//modules/perception/common:perception_gflags", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:cipv_camera", - "//modules/perception/common/camera/common", - "//modules/perception/common/onboard/common_flags", - "//modules/perception/common/onboard/inner_component_messages", - "//modules/perception/common/onboard/msg_serializer", - "//modules/perception/common/onboard/transform_wrapper", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/common/proto:motion_service_cc_proto", - "//modules/perception/lane_detection/app:lane_camera_perception", - "//modules/perception/lane_detection/interface", "//modules/perception/lane_detection/proto:lane_perception_component_cc_proto", - "//modules/perception/tools/offline:transform_server", - "//modules/perception/tools/offline:visualizer", + "//modules/perception/tools/offline:perception_transform_server", + "//modules/perception/tools/offline:perception_visualizer", "@eigen", "@opencv//:highgui", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/lane_detection/README.md b/modules/perception/lane_detection/README.md index e69de29bb2d..40135515adb 100644 --- a/modules/perception/lane_detection/README.md +++ b/modules/perception/lane_detection/README.md @@ -0,0 +1,40 @@ +# Introduction +The lane detection module detects lane lines through the camera sensor. Lane lines can be used as an aid to other modules. + +# Directory Structure +``` +lane_detection +├── BUILD // bazel build file +├── README.md +├── app // main process +├── common // common functions +├── conf // dag config file +├── cyberfile.xml // package description file +├── dag +├── data // lib's configuration file +├── interface +├── lane_detection_component.cc // component +├── lane_detection_component.h +├── launch +├── lib // algorithm library +└── proto // proto file +``` + +# Input and Output +## Input +| Channel | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/sensor/camera/front_6mm/image` | `drivers::Image` | camera drive message | +| `/apollo/sensor/camera/front_12mm/image` | `drivers::Image` | camera drive message | +| `/apollo/perception/motion_service` | `MotionServiceMsgType` | motion service message | + +## Output +| Channel | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `/perception/lanes` | `PerceptionLanes` | lane line | + +# How to run +You can start the lane detection module with the following command. +``` +cyber_launch start modules/perception/launch/perception_lane.launch +``` diff --git a/modules/perception/lane_detection/app/BUILD b/modules/perception/lane_detection/app/BUILD deleted file mode 100644 index 310b2330a27..00000000000 --- a/modules/perception/lane_detection/app/BUILD +++ /dev/null @@ -1,48 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "debug_info", - srcs = ["debug_info.cc"], - hdrs = ["debug_info.h"], - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/interface:base_calibration_service", - ], -) - -cc_library( - name = "lane_camera_perception", - srcs = ["lane_camera_perception.cc"], - hdrs = ["lane_camera_perception.h"], - deps = [ - ":debug_info", - "//cyber", - "//modules/perception/common:util", - "//modules/common/util:util_tool", - "//modules/perception/common/base", - "//modules/perception/lane_detection/proto:perception_cc_proto", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/calibration_service/online_calibration_service", - "//modules/perception/lane_detection/interface", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/common/lib/interface:base_calibrator", - "//modules/perception/lane_detection/lib/detector/darkSCNN:darkSCNN_lane_detector", - "//modules/perception/lane_detection/lib/detector/denseline:denseline_lane_detector", - "//modules/perception/lane_detection/lib/postprocessor/darkSCNN:darkSCNN_lane_postprocessor", - "//modules/perception/lane_detection/lib/postprocessor/denseline:denseline_lane_postprocessor", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/inference/utils:inference_cuda_util_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - "@com_github_gflags_gflags//:gflags", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/lane_detection/common/BUILD b/modules/perception/lane_detection/common/BUILD deleted file mode 100644 index 6286df5878f..00000000000 --- a/modules/perception/lane_detection/common/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "common_functions", - srcs = ["common_functions.cc"], - hdrs = ["common_functions.h"], - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/perception/common/base", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lane_detection/dag/lane_detection.dag b/modules/perception/lane_detection/dag/lane_detection.dag index 8a9f0afa71c..e9828665918 100644 --- a/modules/perception/lane_detection/dag/lane_detection.dag +++ b/modules/perception/lane_detection/dag/lane_detection.dag @@ -6,9 +6,6 @@ module_config { config { name: "LaneComponent" config_file_path: "/apollo/modules/perception/lane_detection/conf/lane_detection_config.pb.txt" - readers { - channel: "/apollo/perception/lane_status" - } } } } diff --git a/modules/perception/lane_detection/interface/BUILD b/modules/perception/lane_detection/interface/BUILD deleted file mode 100644 index da03401808f..00000000000 --- a/modules/perception/lane_detection/interface/BUILD +++ /dev/null @@ -1,48 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_lane_postprocessor", - hdrs = ["base_lane_postprocessor.h"], - deps = [ - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/registerer", - ], -) - -cc_library( - name = "base_lane_detector", - hdrs = ["base_lane_detector.h"], - deps = [ - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/registerer", - ], -) - -cc_library( - name = "base_camera_perception", - hdrs = ["base_camera_perception.h"], - deps = [ - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/registerer", - ], -) - -cc_library( - name = "interface", - deps = [ - ":base_lane_detector", - ":base_lane_postprocessor", - ":base_camera_perception", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lane_detection/lib/BUILD b/modules/perception/lane_detection/lib/BUILD deleted file mode 100644 index ecbf63bbcc2..00000000000 --- a/modules/perception/lane_detection/lib/BUILD +++ /dev/null @@ -1,9 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -apollo_package() -cpplint() diff --git a/modules/perception/lane_detection/lib/detector/BUILD b/modules/perception/lane_detection/lib/detector/BUILD deleted file mode 100644 index ecbf63bbcc2..00000000000 --- a/modules/perception/lane_detection/lib/detector/BUILD +++ /dev/null @@ -1,9 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] - -apollo_package() -cpplint() diff --git a/modules/perception/lane_detection/lib/detector/darkSCNN/BUILD b/modules/perception/lane_detection/lib/detector/darkSCNN/BUILD deleted file mode 100644 index 6ca99a50242..00000000000 --- a/modules/perception/lane_detection/lib/detector/darkSCNN/BUILD +++ /dev/null @@ -1,27 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "darkSCNN_lane_detector", - srcs = ["darkSCNN_lane_detector.cc"], - hdrs = ["darkSCNN_lane_detector.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/lane_detection/interface:base_lane_detector", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference/utils:inference_resize_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/common/lib/registerer", - "//modules/perception/lane_detection/proto:darkSCNN_cc_proto", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], - alwayslink = True, -) - -apollo_package() -cpplint() \ No newline at end of file diff --git a/modules/perception/lane_detection/lib/detector/denseline/BUILD b/modules/perception/lane_detection/lib/detector/denseline/BUILD deleted file mode 100644 index bafd2157087..00000000000 --- a/modules/perception/lane_detection/lib/detector/denseline/BUILD +++ /dev/null @@ -1,28 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "denseline_lane_detector", - srcs = ["denseline_lane_detector.cc"], - hdrs = ["denseline_lane_detector.h"], - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/lane_detection/interface:base_lane_detector", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/utils:inference_resize_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/common/lib/registerer", - "//modules/perception/lane_detection/proto:denseline_cc_proto", - "//modules/perception/common/inference/tensorrt:rt_legacy", - ], -) - -apollo_package() -cpplint() \ No newline at end of file diff --git a/modules/perception/lane_detection/lib/postprocessor/BUILD b/modules/perception/lane_detection/lib/postprocessor/BUILD deleted file mode 100644 index 63f3f67669b..00000000000 --- a/modules/perception/lane_detection/lib/postprocessor/BUILD +++ /dev/null @@ -1,7 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() -cpplint() diff --git a/modules/perception/lane_detection/lib/postprocessor/darkSCNN/BUILD b/modules/perception/lane_detection/lib/postprocessor/darkSCNN/BUILD deleted file mode 100644 index 8f252b6eee9..00000000000 --- a/modules/perception/lane_detection/lib/postprocessor/darkSCNN/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "darkSCNN_lane_postprocessor", - srcs = ["darkSCNN_lane_postprocessor.cc"], - hdrs = ["darkSCNN_lane_postprocessor.h"], - deps = [ - "//modules/common/util:util_tool", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/lane_detection/interface:base_lane_postprocessor", - "//modules/perception/lane_detection/common:common_functions", - "//modules/perception/lane_detection/proto:darkSCNN_cc_proto", - "//modules/perception/common/lib/registerer", - "//modules/perception/lane_detection/proto:darkSCNN_postprocessor_cc_proto", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/lane_detection/lib/postprocessor/denseline/BUILD b/modules/perception/lane_detection/lib/postprocessor/denseline/BUILD deleted file mode 100644 index f81476260c6..00000000000 --- a/modules/perception/lane_detection/lib/postprocessor/denseline/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "denseline_lane_postprocessor", - srcs = ["denseline_lane_postprocessor.cc"], - hdrs = ["denseline_lane_postprocessor.h"], - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/interface:base_calibration_service", - "//modules/perception/lane_detection/interface:base_lane_postprocessor", - "//modules/perception/lane_detection/common:common_functions", - "//modules/perception/common/lib/registerer", - "//modules/perception/lane_detection/proto:denseline_cc_proto", - "//modules/perception/lane_detection/proto:denseline_postprocessor_cc_proto", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/launch/perception_all.launch b/modules/perception/launch/perception_all.launch index 3cd31d97bff..e089fec5d50 100644 --- a/modules/perception/launch/perception_all.launch +++ b/modules/perception/launch/perception_all.launch @@ -1,36 +1,30 @@ - - perception - perception - - /apollo/modules/perception/lidar_output/dag/lidar_fusion_output.dag - /apollo/modules/perception/camera_detection_2d/dag/camera_detection_2d_front.dag - /apollo/modules/perception/camera_location_estimation/dag/camera_location_estimation_front.dag - /apollo/modules/perception/camera_location_refinement/dag/camera_location_refinement_front.dag - /apollo/modules/perception/camera_tracking/dag/camera_tracking_front.dag - - /apollo/modules/perception/camera_detection_2d/dag/camera_detection_2d_rear.dag - /apollo/modules/perception/camera_location_estimation/dag/camera_location_estimation_rear.dag - /apollo/modules/perception/camera_location_refinement/dag/camera_location_refinement_rear.dag - /apollo/modules/perception/camera_tracking/dag/camera_tracking_rear.dag - - /apollo/modules/perception/radar_detection/dag/radar_detection_front.dag - - /apollo/modules/perception/multi_sensor_fusion/dag/multi_sensor_fusion.dag - - - - - - - - - - predict - predict - /apollo/modules/prediction/dag/prediction.dag - - + Apollo lidar 3d object detection + 1.0.0 + + perception + perception + + /apollo/modules/perception/camera_detection_2d/dag/camera_detection_2d_front.dag + /apollo/modules/perception/camera_location_estimation/dag/camera_location_estimation_front.dag + /apollo/modules/perception/camera_location_refinement/dag/camera_location_refinement_front.dag + /apollo/modules/perception/camera_tracking/dag/camera_tracking_front.dag + + /apollo/modules/perception/camera_detection_2d/dag/camera_detection_2d_rear.dag + /apollo/modules/perception/camera_location_estimation/dag/camera_location_estimation_rear.dag + /apollo/modules/perception/camera_location_refinement/dag/camera_location_refinement_rear.dag + /apollo/modules/perception/camera_tracking/dag/camera_tracking_rear.dag + + /apollo/modules/perception/pointcloud_preprocess/dag/pointcloud_preprocess.dag + /apollo/modules/perception/pointcloud_map_based_roi/dag/pointcloud_map_based_roi.dag + /apollo/modules/perception/pointcloud_ground_detection/dag/pointcloud_ground_detection.dag + /apollo/modules/perception/lidar_detection/dag/lidar_detection.dag + /apollo/modules/perception/lidar_segmentation/dag/lidar_segmentation.dag + /apollo/modules/perception/lidar_detection_filter/dag/lidar_detection_filter.dag + /apollo/modules/perception/lidar_tracking/dag/lidar_tracking.dag + + /apollo/modules/perception/radar_detection/dag/radar_detection_front.dag + + /apollo/modules/perception/multi_sensor_fusion/dag/multi_sensor_fusion.dag + diff --git a/modules/perception/launch/perception_lane.launch b/modules/perception/launch/perception_lane.launch new file mode 100644 index 00000000000..2c46a48deb9 --- /dev/null +++ b/modules/perception/launch/perception_lane.launch @@ -0,0 +1,11 @@ + + Apollo lane detection + 1.0.0 + + lane + /apollo/modules/perception/lane_detection/dag/lane_detection.dag + /apollo/modules/perception/motion_service/dag/motion_service.dag + lane + 1.0.0 + + diff --git a/modules/perception/lidar_detection/BUILD b/modules/perception/lidar_detection/BUILD index 0ce54d0d390..1aca33d1bb1 100644 --- a/modules/perception/lidar_detection/BUILD +++ b/modules/perception/lidar_detection/BUILD @@ -1,6 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") load("//tools/platform:build_defs.bzl", "if_profiler") package(default_visibility = ["//visibility:public"]) @@ -14,35 +14,208 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "liblidar_detection_component.so", - linkshared = True, - linkstatic = True, - deps = [":lidar_detection_component_lib"], +apollo_cc_library( + name = "point_pillars_common", + hdrs = ["detector/point_pillars_detection/common.h"], +) + +cuda_library( + name = "anchor_mask_cuda", + srcs = ["detector/point_pillars_detection/anchor_mask_cuda.cu"], + hdrs = ["detector/point_pillars_detection/anchor_mask_cuda.h"], + deps = [ + ":point_pillars_common", + "@local_config_cuda//cuda:cudart", + ], +) + +cuda_library( + name = "nms_cuda", + srcs = ["detector/point_pillars_detection/nms_cuda.cu"], + hdrs = ["detector/point_pillars_detection/nms_cuda.h"], + deps = [ + ":point_pillars_common", + "@local_config_cuda//cuda:cudart", + ], +) + +cuda_library( + name = "pfe_cuda", + srcs = ["detector/point_pillars_detection/pfe_cuda.cu"], + hdrs = ["detector/point_pillars_detection/pfe_cuda.h"], + deps = [ + ":point_pillars_common", + "@local_config_cuda//cuda:cudart", + ], +) + +cuda_library( + name = "point_pillars_postprocess_cuda", + srcs = ["detector/point_pillars_detection/postprocess_cuda.cu"], + hdrs = ["detector/point_pillars_detection/postprocess_cuda.h"], + deps = [ + ":point_pillars_common", + ":nms_cuda", + "@local_config_cuda//cuda:cudart", + ], +) + +cuda_library( + name = "preprocess_points_cuda", + srcs = ["detector/point_pillars_detection/preprocess_points_cuda.cu"], + hdrs = ["detector/point_pillars_detection/preprocess_points_cuda.h"], + deps = [ + ":point_pillars_common", + "@local_config_cuda//cuda:cudart", + ], +) + +cuda_library( + name = "scatter_cuda", + srcs = ["detector/point_pillars_detection/scatter_cuda.cu"], + hdrs = ["detector/point_pillars_detection/scatter_cuda.h"], + deps = [ + ":point_pillars_common", + "@local_config_cuda//cuda:cudart", + ], +) + +cuda_library( + name = "feature_generator_cuda", + srcs = ["detector/cnn_segmentation/feature_generator.cu"], + hdrs = ["detector/cnn_segmentation/feature_generator.h"], + deps = [ + ":cnn_segmentation_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/lidar_detection/detector/cnn_segmentation/proto:model_param_cc_proto", + "@com_google_googletest//:gtest", + "@eigen", + "@local_config_cuda//cuda:cudart", + ], +) + +apollo_cc_library( + name = "cnn_segmentation_util", + hdrs = ["detector/cnn_segmentation/util.h",] +) + +apollo_cc_library( + name = "apollo_perception_lidar_detection", + srcs = [ + "detector/center_point_detection/center_point_detection.cc", + "detector/cnn_segmentation/cnn_segmentation.cc", + "detector/cnn_segmentation/feature_generator.cc", + "detector/cnn_segmentation/spp_engine/spp_cluster_list.cc", + "detector/cnn_segmentation/spp_engine/spp_engine.cc", + "detector/cnn_segmentation/spp_engine/spp_label_image.cc", + "detector/cnn_segmentation/spp_engine/spp_pool_types.cc", + "detector/cnn_segmentation/spp_engine/spp_seg_cc_2d.cc", + "detector/cnn_segmentation/spp_engine/spp_struct.cc", + "detector/mask_pillars_detection/mask_pillars_detection.cc", + "detector/point_pillars_detection/point_pillars.cc", + "detector/point_pillars_detection/point_pillars_detection.cc", + "detector/point_pillars_detection/preprocess_points.cc", + "object_builder/object_builder.cc", + ], + hdrs = [ + "detector/center_point_detection/center_point_detection.h", + "detector/center_point_detection/params.h", + "detector/cnn_segmentation/cnn_segmentation.h", + "detector/cnn_segmentation/disjoint_set.h", + "detector/cnn_segmentation/feature_generator.h", + "detector/cnn_segmentation/spp_engine/spp_cluster.h", + "detector/cnn_segmentation/spp_engine/spp_cluster_list.h", + "detector/cnn_segmentation/spp_engine/spp_engine.h", + "detector/cnn_segmentation/spp_engine/spp_label_image.h", + "detector/cnn_segmentation/spp_engine/spp_pool_types.h", + "detector/cnn_segmentation/spp_engine/spp_seg_cc_2d.h", + "detector/cnn_segmentation/spp_engine/spp_struct.h", + "detector/mask_pillars_detection/mask_pillars_detection.h", + "detector/point_pillars_detection/params.h", + "detector/point_pillars_detection/point_pillars.h", + "detector/point_pillars_detection/point_pillars_detection.h", + "detector/point_pillars_detection/preprocess_points.h", + "interface/base_lidar_detector.h", + "object_builder/object_builder.h", + ], + deps = [ + "//cyber", + ":anchor_mask_cuda", + ":nms_cuda", + ":pfe_cuda", + ":point_pillars_postprocess_cuda", + ":preprocess_points_cuda", + ":scatter_cuda", + ":feature_generator_cuda", + "//modules/common/adapters:adapter_gflags", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/proto:perception_config_schema_cc_proto", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/lidar_detection/detector/center_point_detection/proto:center_point_model_param_cc_proto", + "//modules/perception/lidar_detection/detector/cnn_segmentation/proto:model_param_cc_proto", + "//modules/perception/lidar_detection/detector/mask_pillars_detection/proto:model_param_cc_proto", + "//modules/perception/lidar_detection/detector/point_pillars_detection/proto:model_param_cc_proto", + "//modules/perception/lidar_detection/proto:lidar_detection_component_config_cc_proto", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest", + "@eigen", + "@libtorch_gpu", + "@local_config_cuda//cuda:cudart", + "@local_config_pcl//:pcl", + "@local_config_tensorrt//:tensorrt", + ] + select({ + "@platforms//cpu:x86_64": ["@centerpoint_infer_op-x86_64//:centerpoint_infer_op"], + "@platforms//cpu:aarch64": ["@centerpoint_infer_op-aarch64//:centerpoint_infer_op"] + }) + select({ + "@platforms//cpu:x86_64": ["@paddleinference-x86_64//:paddleinference_lib"], + "@platforms//cpu:aarch64": ["@paddleinference-aarch64//:paddleinference_lib"] + }), ) -cc_library( - name = "lidar_detection_component_lib", +apollo_component( + name = "liblidar_detection_component.so", srcs = ["lidar_detection_component.cc"], hdrs = ["lidar_detection_component.h"], copts = PERCEPTION_COPTS + if_profiler(), linkopts = ["-lleveldb"], deps = [ "//cyber", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", + ":apollo_perception_lidar_detection", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/lidar_detection/proto:lidar_detection_component_config_cc_proto", - "//modules/perception/lidar_detection/interface:base_lidar_detector", - "//modules/perception/lidar_detection/object_builder:object_builder", - "//modules/perception/lidar_detection/detector/cnn_segmentation:cnn_segmentation", - "//modules/perception/lidar_detection/detector/center_point_detection:center_point_detection", - "//modules/perception/lidar_detection/detector/point_pillars_detection:point_pillars_detection", - "//modules/perception/lidar_detection/detector/mask_pillars_detection:mask_pillars_detection", ], - alwayslink = True, +) + +apollo_cc_test( + name = "cnn_segmentation_test", + size = "large", + srcs = ["detector/cnn_segmentation/cnn_segmentation_test.cc"], + deps = [ + ":apollo_perception_lidar_detection", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common:perception_gflags", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "spp_cluster_list_test", + size = "small", + srcs = ["detector/cnn_segmentation/spp_engine/spp_cluster_list_test.cc"], + deps = [ + ":apollo_perception_lidar_detection", + "@com_google_googletest//:gtest_main", + ], ) apollo_package() + cpplint() diff --git a/modules/perception/lidar_detection/README.md b/modules/perception/lidar_detection/README.md index e69de29bb2d..49ad90f334e 100644 --- a/modules/perception/lidar_detection/README.md +++ b/modules/perception/lidar_detection/README.md @@ -0,0 +1,70 @@ +# Component Name +lidar_detection + +## Introduction +Perform 3D object detection based on the point cloud, and output the position, size, and orientation of the detected objects. Apollo provides 4 lidar detection models: centerpoint, maskpillars, pointpillars, cnnseg. + +## Structure +``` +├── lidar_detection + ├── conf // component config file + ├── dag // component dag file + ├── data // model config files + ├── detector // lidar model + │ ├── center_point_detection // CenterPoint model code + │ ├── cnn_segmentation // CNNSeg model code + │ ├── mask_pillars_detection // MaskPillars model code + │ └── point_pillars_detection // PointPillars model code + ├── interface // definition of BaseLidarDetector + ├── proto // definition of data structure + ├── lidar_detection_component.cc // component inference + ├── lidar_detection_component.h + ├── cyberfile.xml // package configs + ├── README.md + └── BUILD +``` + +## Input and Output + +### Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `LidarFrameMessage` | lidar frame message | + +### Output +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `frame` | `LidarFrameMessage` | LidarFrame's segmented_objects | + +## How to use +1. Add vehicle params configs to modules/perception/data/params,keep frame_id and sensor_name consistent, start the tf +```bash +cyber_launch start modules/transform/launch/static_transform.launch +``` + +2. Select the lidar model,download the model files and put them into modules/perception/data/models using amodel tool. +```bash +amodel install https://xxx.zip +``` + +3. Modify the modules/perception/lidar_detection/dag/lidar_detection.dag +- config_file_path: path of config path +- reader channel: the name of input channel + +4. Modify modules/perception/lidar_detection/conf/lidar_detection_config.pb.txt +- output_channel_name: the name of output channel +- sensor_name: sensor name +- use_object_builder: whether use object builder +- plugin_param + - name: the name of lidar model + - config_path: the path of model config + - config_file: the name of model config + +5. start the lidar component +```bash +cyber_launch start modules/perception/launch/perception_lidar.launch +``` + +## Reference +1. [Center-based 3D Object Detection and Tracking](https://arxiv.org/abs/2006.11275) +2. [PointPillars: Fast Encoders for Object Detection from Point Clouds](https://arxiv.org/abs/1812.05784) \ No newline at end of file diff --git a/modules/perception/lidar_detection/detector/BUILD b/modules/perception/lidar_detection/detector/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/lidar_detection/detector/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/lidar_detection/detector/center_point_detection/BUILD b/modules/perception/lidar_detection/detector/center_point_detection/BUILD deleted file mode 100644 index 8e26916f7db..00000000000 --- a/modules/perception/lidar_detection/detector/center_point_detection/BUILD +++ /dev/null @@ -1,46 +0,0 @@ -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "center_point_detection", - srcs = [ - "center_point_detection.cc", - ], - hdrs = [ - "center_point_detection.h", - ], - deps = [ - ":params", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/lib/thread", - "//modules/perception/common/lidar/common", - "//modules/perception/lidar_detection/interface:base_lidar_detector", - "//modules/perception/lidar_detection/detector/center_point_detection/proto:model_param_cc_proto", - "@eigen", - "@local_config_pcl//:pcl", - "@local_config_tensorrt//:tensorrt", - ] + select({ - "@platforms//cpu:x86_64": ["@centerpoint_infer_op-x86_64//:centerpoint_infer_op"], - "@platforms//cpu:aarch64": ["@centerpoint_infer_op-aarch64//:centerpoint_infer_op"] - }) + select({ - "@platforms//cpu:x86_64": ["@paddleinference-x86_64//:paddleinference_lib"], - "@platforms//cpu:aarch64": ["@paddleinference-aarch64//:paddleinference_lib"] - }), - alwayslink = True, -) - -cc_library( - name = "params", - hdrs = ["params.h"], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection/detector/center_point_detection/proto/BUILD b/modules/perception/lidar_detection/detector/center_point_detection/proto/BUILD index 17df39b6c9c..e0753fc25b0 100644 --- a/modules/perception/lidar_detection/detector/center_point_detection/proto/BUILD +++ b/modules/perception/lidar_detection/detector/center_point_detection/proto/BUILD @@ -5,7 +5,7 @@ load("//tools/proto:proto.bzl", "proto_library") package(default_visibility = ["//visibility:public"]) proto_library( - name = "model_param_proto", + name = "center_point_model_param_proto", srcs = ["model_param.proto"], deps = [ "//modules/perception/common/proto:model_info_proto", diff --git a/modules/perception/lidar_detection/detector/cnn_segmentation/BUILD b/modules/perception/lidar_detection/detector/cnn_segmentation/BUILD deleted file mode 100644 index cb666cecc72..00000000000 --- a/modules/perception/lidar_detection/detector/cnn_segmentation/BUILD +++ /dev/null @@ -1,101 +0,0 @@ -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "cnn_segmentation", - srcs = ["cnn_segmentation.cc"], - hdrs = ["cnn_segmentation.h"], - deps = [ - ":disjoint_set", - ":feature_generator", - ":util", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/inference/tensorrt:rt_net", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/lidar_detection/detector/cnn_segmentation/proto:model_param_cc_proto", - "//modules/perception/lidar_detection/detector/cnn_segmentation/spp_engine", - "//modules/perception/lidar_detection/interface:base_lidar_detector", - "//modules/perception/common/proto:perception_config_schema_cc_proto", - "@com_google_absl//:absl", - ], - alwayslink = True, -) - -cc_library( - name = "disjoint_set", - hdrs = ["disjoint_set.h"], -) - -cc_library( - name = "feature_generator", - srcs = [ - "feature_generator.cc", - ":feature_generator_cuda", - ], - hdrs = ["feature_generator.h"], - deps = [ - ":util", - "//modules/perception/common/base", - "//modules/perception/lidar_detection/detector/cnn_segmentation/proto:model_param_cc_proto", - "@com_google_googletest//:gtest", - "@eigen", - ], -) - -cuda_library( - name = "feature_generator_cuda", - srcs = ["feature_generator.cu"], - hdrs = ["feature_generator.h"], - deps = [ - ":util", - "//modules/perception/common/base", - "//modules/perception/lidar_detection/detector/cnn_segmentation/proto:model_param_cc_proto", - "@com_google_googletest//:gtest", - "@eigen", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_library( - name = "util", - hdrs = ["util.h"], -) - -cc_test( - name = "cnn_segmentation_test", - size = "large", - srcs = ["cnn_segmentation_test.cc"], - deps = [ - ":cnn_segmentation", - "//modules/perception/common/algorithm/io:io_util", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -#cc_test( -# name = "feature_generator_test", -# size = "small", -# srcs = ["feature_generator_test.cc"], -# deps = [ -# ":feature_generator", -# "//modules/perception/common:perception_gflags", -# "//modules/perception/common/lidar/common:pcl_util", -# "@com_google_googletest//:gtest_main", -# "@opencv2//:core", -# "@opencv2//:highgui", -# ], -#) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection/detector/cnn_segmentation/spp_engine/BUILD b/modules/perception/lidar_detection/detector/cnn_segmentation/spp_engine/BUILD deleted file mode 100644 index e059329cbdf..00000000000 --- a/modules/perception/lidar_detection/detector/cnn_segmentation/spp_engine/BUILD +++ /dev/null @@ -1,102 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "spp_engine", - srcs = ["spp_engine.cc"], - hdrs = ["spp_engine.h"], - deps = [ - ":spp_cluster", - ":spp_cluster_list", - ":spp_label_image", - ":spp_seg_cc_2d", - ":spp_struct", - "//cyber", - "@com_google_googletest//:gtest", - "@eigen", - ], -) - -cc_library( - name = "spp_cluster", - hdrs = ["spp_cluster.h"], - deps = [ - "//modules/perception/common/base", - ], -) - -cc_library( - name = "spp_cluster_list", - srcs = ["spp_cluster_list.cc"], - hdrs = ["spp_cluster_list.h"], - deps = [ - ":spp_cluster", - ":spp_label_image", - ":spp_pool_types", - ], -) - -cc_test( - name = "spp_cluster_list_test", - size = "small", - srcs = ["spp_cluster_list_test.cc"], - deps = [ - ":spp_cluster_list", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "spp_label_image", - srcs = ["spp_label_image.cc"], - hdrs = ["spp_label_image.h"], - deps = [ - ":spp_cluster", - ":spp_pool_types", - "//modules/perception/common/base", - "//modules/perception/common/algorithm/i_lib", - "//modules/perception/common/lidar/common", - "@com_google_googletest//:gtest", - ], -) - -cc_library( - name = "spp_pool_types", - srcs = ["spp_pool_types.cc"], - hdrs = ["spp_pool_types.h"], - deps = [ - ":spp_cluster", - "//modules/perception/common/base", - "//modules/perception/common/lidar/common", - ], -) - -cc_library( - name = "spp_seg_cc_2d", - srcs = ["spp_seg_cc_2d.cc"], - hdrs = ["spp_seg_cc_2d.h"], - deps = [ - ":spp_label_image", - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/algorithm/i_lib", - "//modules/perception/common/lib/thread", - "//modules/perception/common/lidar/common", - "@com_google_googletest//:gtest", - ], -) - -cc_library( - name = "spp_struct", - srcs = ["spp_struct.cc"], - hdrs = ["spp_struct.h"], - deps = [ - "//modules/perception/common/base", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection/detector/mask_pillars_detection/BUILD b/modules/perception/lidar_detection/detector/mask_pillars_detection/BUILD deleted file mode 100644 index 8437f31cf85..00000000000 --- a/modules/perception/lidar_detection/detector/mask_pillars_detection/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "mask_pillars_detection", - srcs = [ - "mask_pillars_detection.cc", - ], - hdrs = [ - "mask_pillars_detection.h", - ], - deps = [ - "//cyber/common", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/lib/thread", - "//modules/perception/common/lidar/common", - "//modules/perception/lidar_detection/detector/point_pillars_detection:point_pillars", - "//modules/perception/lidar_detection/interface:base_lidar_detector", - "//modules/perception/lidar_detection/detector/mask_pillars_detection/proto:model_param_cc_proto", - "@eigen", - "@local_config_pcl//:pcl", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection/detector/point_pillars_detection/BUILD b/modules/perception/lidar_detection/detector/point_pillars_detection/BUILD deleted file mode 100644 index e530b646891..00000000000 --- a/modules/perception/lidar_detection/detector/point_pillars_detection/BUILD +++ /dev/null @@ -1,161 +0,0 @@ -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "params", - hdrs = ["params.h"], -) - -cc_library( - name = "point_pillars", - srcs = [ - "point_pillars.cc", - ], - hdrs = [ - "point_pillars.h", - ], - deps = [ - ":anchor_mask_cuda", - ":common", - ":nms_cuda", - ":params", - ":pfe_cuda", - ":postprocess_cuda", - ":preprocess_points", - ":scatter_cuda", - "//cyber/common", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:inference_factory", - "@libtorch_gpu", - "@local_config_cuda//cuda:cudart", - "@local_config_tensorrt//:tensorrt", - ], - alwayslink = True, -) - -cc_library( - name = "point_pillars_detection", - srcs = [ - "point_pillars_detection.cc", - ], - hdrs = [ - "point_pillars_detection.h", - ], - deps = [ - ":point_pillars", - "//cyber/common", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/lib/thread", - "//modules/perception/common/lidar/common", - "//modules/perception/lidar_detection/interface:base_lidar_detector", - "//modules/perception/lidar_detection/detector/point_pillars_detection/proto:model_param_cc_proto", - "@eigen", - "@local_config_pcl//:pcl", - ], - alwayslink = True, -) - -cc_library( - name = "preprocess_points", - srcs = [ - "preprocess_points.cc", - ], - hdrs = [ - "preprocess_points.h", - ], - deps = [ - ":common", - ":preprocess_points_cuda", - ], -) - -cc_library( - name = "common", - hdrs = ["common.h"], -) - -cuda_library( - name = "anchor_mask_cuda", - srcs = ["anchor_mask_cuda.cu"], - hdrs = ["anchor_mask_cuda.h"], - deps = [ - ":common", - "@local_config_cuda//cuda:cudart", - ], -) - -cuda_library( - name = "nms_cuda", - srcs = ["nms_cuda.cu"], - hdrs = ["nms_cuda.h"], - deps = [ - ":common", - "@local_config_cuda//cuda:cudart", - ], -) - -cuda_library( - name = "pfe_cuda", - srcs = ["pfe_cuda.cu"], - hdrs = ["pfe_cuda.h"], - deps = [ - ":common", - "@local_config_cuda//cuda:cudart", - ], -) - -cuda_library( - name = "postprocess_cuda", - srcs = ["postprocess_cuda.cu"], - hdrs = ["postprocess_cuda.h"], - deps = [ - ":common", - ":nms_cuda", - "@local_config_cuda//cuda:cudart", - ], -) - -cuda_library( - name = "preprocess_points_cuda", - srcs = ["preprocess_points_cuda.cu"], - hdrs = ["preprocess_points_cuda.h"], - deps = [ - ":common", - "@local_config_cuda//cuda:cudart", - ], -) - -cuda_library( - name = "scatter_cuda", - srcs = ["scatter_cuda.cu"], - hdrs = ["scatter_cuda.h"], - deps = [ - ":common", - "@local_config_cuda//cuda:cudart", - ], -) - -''' -cc_test( - name = "point_pillars_test", - size = "large", - srcs = ["point_pillars_test.cc"], - deps = [ - ":point_pillars", - ":preprocess_points", - "//modules/perception/common/tool/benchmark/lidar/util:benchmark_util", - "@boost", - "@com_google_googletest//:gtest_main", - "@eigen", - "@local_config_pcl//:pcl", - ], -) -''' - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection/interface/BUILD b/modules/perception/lidar_detection/interface/BUILD deleted file mode 100644 index 4b2036faa5a..00000000000 --- a/modules/perception/lidar_detection/interface/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_lidar_detector", - hdrs = ["base_lidar_detector.h"], - deps = [ - "//cyber", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection/object_builder/BUILD b/modules/perception/lidar_detection/object_builder/BUILD deleted file mode 100644 index ee37d6082a5..00000000000 --- a/modules/perception/lidar_detection/object_builder/BUILD +++ /dev/null @@ -1,21 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "object_builder", - srcs = ["object_builder.cc"], - hdrs = ["object_builder.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/common/algorithm/geometry:convex_hull_2d", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lidar/common:lidar_frame", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection/tools/BUILD b/modules/perception/lidar_detection/tools/BUILD new file mode 100644 index 00000000000..b4265755a83 --- /dev/null +++ b/modules/perception/lidar_detection/tools/BUILD @@ -0,0 +1,19 @@ +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_binary") +load("//tools:cpplint.bzl", "cpplint") + +package(default_visibility = ["//visibility:public"]) + +apollo_cc_binary( + name = "offline_lidar_detection", + srcs = ["offline_lidar_detection.cc"], + deps = [ + "//cyber", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/lidar_detection:apollo_perception_lidar_detection", + "@eigen", + ], +) + +apollo_package() +cpplint() diff --git a/modules/perception/lidar_detection/tools/offline_lidar_detection.cc b/modules/perception/lidar_detection/tools/offline_lidar_detection.cc new file mode 100644 index 00000000000..9fc2f8cc4de --- /dev/null +++ b/modules/perception/lidar_detection/tools/offline_lidar_detection.cc @@ -0,0 +1,226 @@ +/****************************************************************************** + * Copyright 2018 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include +#include + +#include "Eigen/Dense" +#include "gflags/gflags.h" + +#include "cyber/common/file.h" +#include "modules/perception/common/algorithm/io/io_util.h" +#include "modules/perception/common/base/object_pool_types.h" +#include "modules/perception/common/lidar/common/lidar_frame_pool.h" +#include "modules/perception/common/lidar/common/pcl_util.h" +#include "modules/perception/lidar_detection/interface/base_lidar_detector.h" +#include "modules/perception/lidar_detection/object_builder/object_builder.h" + +DEFINE_string(pcd_path, "./pcd/", "pcd path"); +DEFINE_string(output_path, "./output/", "output path"); +DEFINE_string(detector_name, "CNNSegmentation", "detector name"); +DEFINE_string(config_path, "perception/lidar_detection/data", "config path"); +DEFINE_string(config_file, "cnnseg16_param.pb.txt", "config file"); +DEFINE_string(sensor_name, "velodyne64", "sensor name"); + +namespace apollo { +namespace perception { +namespace lidar { + +class OfflineLidarDetection { + public: + OfflineLidarDetection() = default; + + ~OfflineLidarDetection() = default; + + bool Init() { + BaseLidarDetector* detector = + BaseLidarDetectorRegisterer::GetInstanceByName(FLAGS_detector_name); + CHECK_NOTNULL(detector); + detector_.reset(detector); + + LidarDetectorInitOptions detection_init_options; + detection_init_options.sensor_name = FLAGS_sensor_name; + detection_init_options.config_path = FLAGS_config_path; + detection_init_options.config_file = FLAGS_config_file; + ACHECK(detector_->Init(detection_init_options)) + << "lidar detector init error"; + + ObjectBuilderInitOptions builder_init_options; + builder_.reset(new ObjectBuilder); + ACHECK(builder_->Init(builder_init_options)); + + return true; + } + + bool TransformCloud(const base::PointFCloudPtr& local_cloud, + const Eigen::Affine3d& pose, + base::PointDCloudPtr world_cloud) const { + if (local_cloud == nullptr) { + return false; + } + world_cloud->clear(); + world_cloud->reserve(local_cloud->size()); + for (size_t i = 0; i < local_cloud->size(); ++i) { + auto& pt = local_cloud->at(i); + Eigen::Vector3d trans_point(pt.x, pt.y, pt.z); + trans_point = pose * trans_point; + base::PointD world_point; + world_point.x = trans_point(0); + world_point.y = trans_point(1); + world_point.z = trans_point(2); + world_point.intensity = pt.intensity; + world_cloud->push_back(world_point, local_cloud->points_timestamp(i), + std::numeric_limits::max(), + local_cloud->points_beam_id()[i], 0); + } + return true; + } + + bool Run() { + std::string pcd_folder = FLAGS_pcd_path; + std::vector pcd_file_names; + if (!algorithm::GetFileList(pcd_folder, ".pcd", &pcd_file_names)) { + AERROR << "pcd_folder: " << pcd_folder << " get file list error."; + return false; + } + + std::sort(pcd_file_names.begin(), pcd_file_names.end(), + [](const std::string& lhs, const std::string& rhs) { + if (lhs.length() != rhs.length()) { + return lhs.length() < rhs.length(); + } + return lhs <= rhs; + }); + + for (size_t i = 0; i < pcd_file_names.size(); ++i) { + AINFO << "***************** Frame " << i << " ******************"; + AINFO << pcd_file_names[i]; + + std::shared_ptr frame = LidarFramePool::Instance().Get(); + if (frame->cloud == nullptr) { + frame->cloud = base::PointFCloudPool::Instance().Get(); + } + if (frame->world_cloud == nullptr) { + frame->world_cloud = base::PointDCloudPool::Instance().Get(); + } + LoadPCLPCD(pcd_file_names[i], frame->cloud.get()); + // frame->lidar2world_pose is default identity matrix + TransformCloud(frame->cloud, frame->lidar2world_pose, frame->world_cloud); + AINFO << "Read point cloud from " << pcd_file_names[i] + << " with cloud size: " << frame->cloud->size(); + + LidarDetectorOptions detection_options; + if (!detector_->Detect(detection_options, frame.get())) { + AERROR << "Lidar detector detect error!"; + return false; + } + + ObjectBuilderOptions builder_options; + if (!builder_->Build(builder_options, frame.get())) { + AERROR << "Lidar detector, object builder error."; + return false; + } + + std::string output_path = FLAGS_output_path; + WriteObjectsForNewBenchmark(i, frame.get(), output_path); + } + + return true; + } + + bool WriteObjectsForNewBenchmark(size_t frame_id, LidarFrame* frame, + const std::string& path) { + if (!cyber::common::EnsureDirectory(path)) { + AERROR << "Failed to create: " << path; + return false; + } + std::ofstream fout; + fout.open(absl::StrCat(path, "/", frame_id, ".txt")); + fout << frame_id << " " << frame->segmented_objects.size() << std::endl; + + for (auto& object : frame->segmented_objects) { + fout << "velodyne_64" + << " " << object->id << " " << object->track_id << " " + << object->lidar_supplement.is_background << " " + << std::setprecision(8) << object->confidence << " "; + + std::string type = "unknow"; + if (object->type == base::ObjectType::UNKNOWN || + object->type == base::ObjectType::UNKNOWN_MOVABLE || + object->type == base::ObjectType::UNKNOWN_UNMOVABLE) { + // type is unknow in this case + } else if (object->type == base::ObjectType::PEDESTRIAN) { + type = "pedestrian"; + } else if (object->type == base::ObjectType::VEHICLE) { + type = "smallMot"; + } else if (object->type == base::ObjectType::BICYCLE) { + type = "nonMot"; + } + + double yaw = atan2(object->direction(1), object->direction(0)); + auto& object_cloud = object->lidar_supplement.cloud; + + fout << type << " " << object->center(0) << " " << object->center(1) + << " " << object->center(2) << " " << object->size(0) << " " + << object->size(1) << " " << object->size(2) << " " + << yaw /*yaw*/ << " " << 0 /*roll*/ << " " << 0 /*pitch*/ << " " + << 0 /*truncated*/ << " " << 0 /*occluded*/ << " " + << object->velocity(0) << " " << object->velocity(1) << " " + << object->velocity(2) << " "; + fout << object_cloud.size() << " "; + for (size_t i = 0; i < object_cloud.size(); ++i) { + auto& pt = object_cloud.at(i); + fout << std::setprecision(8) << pt.x << " " << pt.y << " " << pt.z + << " " << pt.intensity << " "; + } + // fout << 0/*#indices*/ << " "; + // we save polygon here for debug + int polygon_size = -static_cast(object->polygon.size()); + fout << polygon_size /*negative polygon size*/ << " "; + for (size_t i = 0; i < object->polygon.size(); ++i) { + const auto& pt = object->polygon[i]; + fout << std::setprecision(8) << pt.x << " " << pt.y << " " << pt.z + << " "; + } + fout << std::endl; + } + + fout.close(); + return true; + } + + protected: + std::unique_ptr detector_; + std::unique_ptr builder_; +}; + +} // namespace lidar +} // namespace perception +} // namespace apollo + +int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; + google::ParseCommandLineFlags(&argc, &argv, true); + google::InitGoogleLogging(argv[0]); + + // Todo(zero): core dump when rt_net is destructed! + apollo::perception::lidar::OfflineLidarDetection test; + if (!test.Init()) { + AINFO << "Failed to setup OfflineLidarDetection"; + return -1; + } + return test.Run() ? 0 : -1; +} diff --git a/modules/perception/lidar_detection/tools/offline_lidar_detection.sh b/modules/perception/lidar_detection/tools/offline_lidar_detection.sh new file mode 100644 index 00000000000..8cd569844f5 --- /dev/null +++ b/modules/perception/lidar_detection/tools/offline_lidar_detection.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +############################################################################## +# Copyright 2018 The Apollo Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################### + +pcd_path="./data/pcd/" +output_path="./data/output/" + +mkdir -p $output_path && rm -rf $output_path/* + +./bazel-bin/modules/perception/lidar_detection/tools/offline_lidar_detection \ + --pcd_path=$pcd_path \ + --output_path=$output_path \ + --detector_name=CNNSegmentation \ + --config_file=cnnseg16_param.pb.txt \ + --log_dir=./logs \ + 2>&1 | tee segment.log diff --git a/modules/perception/lidar_detection_filter/BUILD b/modules/perception/lidar_detection_filter/BUILD index 4971a7ee87f..00f4e98458b 100644 --- a/modules/perception/lidar_detection_filter/BUILD +++ b/modules/perception/lidar_detection_filter/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -14,29 +13,50 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "liblidar_detection_filter_component.so", - linkshared = True, - linkstatic = True, - deps = [":lidar_detection_filter_component_lib"], +apollo_cc_library( + name = "apollo_perception_lidar_detection_filter", + srcs = [ + "object_filter_bank/object_filter_bank.cc", + ], + hdrs = [ + "interface/base_object_filter.h", + "object_filter_bank/object_filter_bank.h", + ], + deps = [ + "//cyber", + "//modules/common/util:common_util", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/proto:perception_config_schema_cc_proto", + "//modules/perception/lidar_detection_filter/object_filter_bank/proto:background_filter_config_cc_proto", + "//modules/perception/lidar_detection_filter/object_filter_bank/proto:filter_bank_config_cc_proto", + "//modules/perception/lidar_detection_filter/object_filter_bank/proto:roi_boundary_filter_config_cc_proto", + "//modules/perception/lidar_detection_filter/proto:lidar_detection_filter_component_config_cc_proto", + "@com_google_googletest//:gtest", + "@eigen", + ], ) -cc_library( - name = "lidar_detection_filter_component_lib", +apollo_component( + name = "liblidar_detection_filter_component.so", srcs = ["lidar_detection_filter_component.cc"], hdrs = ["lidar_detection_filter_component.h"], copts = PERCEPTION_COPTS + if_profiler(), deps = [ "//cyber", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ":apollo_perception_lidar_detection_filter", "//modules/perception/lidar_detection_filter/proto:lidar_detection_filter_component_config_cc_proto", - "//modules/perception/lidar_detection_filter/object_filter_bank:object_filter_bank", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/lidar_detection_filter/README.md b/modules/perception/lidar_detection_filter/README.md index e69de29bb2d..6e000a91f90 100644 --- a/modules/perception/lidar_detection_filter/README.md +++ b/modules/perception/lidar_detection_filter/README.md @@ -0,0 +1,64 @@ +# Component Name +lidar_detection_filter + +## Introduction + +Filter foreground and background objects based on obejcts attributes, lane lines, ROI, etc. + +## Structure +``` +├── lidar_detection_filter + ├── conf // component config file + ├── dag // component dag file + ├── data // object filter config files + ├── object_filter_bank // object filter code + │ ├── object_filter_bank.cc // object filter inference + │ ├── object_filter_bank.h + │ ├── background_filter // filter algorithm based on lane + │ └── roi_boundary_filter // filter algorithm based on roi boundary + ├── interface // definition of BaseObjectFilter + ├── proto // definition of data structure + ├── lidar_detection_filter_component.cc // component inference + ├── lidar_detection_filter_component.h + ├── cyberfile.xml // package configs + ├── README.md + └── BUILD +``` + +## Input and Output + +### Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `LidarFrameMessage` | LidarFrame‘s segmented_objects | + +### Output +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `frame` | `LidarFrameMessage` | put the preserved objects into LidarFrame‘s segmented_objects | + +## How to use +1. Add vehicle params configs to modules/perception/data/params,keep frame_id and sensor_name consistent, start the tf +```bash +cyber_launch start modules/transform/launch/static_transform.launch +``` + +2. Select the lidar model,download the model files and put them into modules/perception/data/models using amodel tool. +```bash +amodel install https://xxx.zip +``` + +3. Modify the modules/perception/lidar_detection/dag/lidar_detection_filter.dag +- config_file_path: path of config path +- reader channel: the name of input channel + +4. Modify modules/perception/lidar_detection_filter/conf/lidar_detection_filter_config.pb.txt +- output_channel_name: the name of output channel +- use_object_filter_bank: whether use object filter +- config_path: the path of config +- config_file: the name of config + +5. start the lidar component +```bash +cyber_launch start modules/perception/launch/perception_lidar.launch +``` \ No newline at end of file diff --git a/modules/perception/lidar_detection_filter/interface/BUILD b/modules/perception/lidar_detection_filter/interface/BUILD deleted file mode 100644 index 8819380a2dd..00000000000 --- a/modules/perception/lidar_detection_filter/interface/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_object_filter", - hdrs = ["base_object_filter.h"], - deps = [ - "//cyber", - "//modules/perception/common/lidar/common:lidar_frame", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection_filter/object_filter_bank/BUILD b/modules/perception/lidar_detection_filter/object_filter_bank/BUILD deleted file mode 100644 index c530ff6a839..00000000000 --- a/modules/perception/lidar_detection_filter/object_filter_bank/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "object_filter_bank", - srcs = ["object_filter_bank.cc"], - hdrs = ["object_filter_bank.h"], - deps = [ - "//cyber", - "//modules/common/util", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/lidar/common", - "//modules/perception/common/proto:perception_config_schema_cc_proto", - "//modules/perception/lidar_detection_filter/interface:base_object_filter", - "//modules/perception/lidar_detection_filter/object_filter_bank/proto:filter_bank_config_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -# cc_test( -# name = "object_filter_bank_test", -# size = "small", -# srcs = ["object_filter_bank_test.cc"], -# deps = [ -# ":object_filter_bank", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_detection_filter/object_filter_bank/background_filter/BUILD b/modules/perception/lidar_detection_filter/object_filter_bank/background_filter/BUILD index 2e6efb9ebe5..20002c240d1 100644 --- a/modules/perception/lidar_detection_filter/object_filter_bank/background_filter/BUILD +++ b/modules/perception/lidar_detection_filter/object_filter_bank/background_filter/BUILD @@ -1,40 +1,23 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] -cyber_plugin_description( - name = "plugin_libbackground_filter_lib_description", - description = ":plugins.xml", - plugin = ":libbackground_filter.so", -) - -cc_binary( +apollo_plugin( name = "libbackground_filter.so", - linkshared = True, - linkstatic = True, - copts = PERCEPTION_COPTS, - deps = [":background_filter_lib"], -) - -cc_library( - name = "background_filter_lib", srcs = ["background_filter.cc"], hdrs = ["background_filter.h"], + description = ":plugins.xml", deps = [ "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/geometry:roi_filter", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/lidar_detection_filter/interface:base_object_filter", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/lidar_detection_filter:apollo_perception_lidar_detection_filter", "//modules/perception/lidar_detection_filter/object_filter_bank/proto:background_filter_config_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", + "//modules/perception/common/lib:apollo_perception_common_lib", ], - alwayslink = True, ) apollo_package() diff --git a/modules/perception/lidar_detection_filter/object_filter_bank/roi_boundary_filter/BUILD b/modules/perception/lidar_detection_filter/object_filter_bank/roi_boundary_filter/BUILD index 4551098756f..302d6e100fe 100644 --- a/modules/perception/lidar_detection_filter/object_filter_bank/roi_boundary_filter/BUILD +++ b/modules/perception/lidar_detection_filter/object_filter_bank/roi_boundary_filter/BUILD @@ -1,43 +1,26 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] -cyber_plugin_description( - name = "plugin_libroi_boundary_filter_lib_description", - description = ":plugins.xml", - plugin = ":libroi_boundary_filter.so", -) - -cc_binary( +apollo_plugin( name = "libroi_boundary_filter.so", - linkshared = True, - linkstatic = True, - copts = PERCEPTION_COPTS, - deps = [":roi_boundary_filter_lib"], -) - -cc_library( - name = "roi_boundary_filter_lib", srcs = ["roi_boundary_filter.cc"], hdrs = ["roi_boundary_filter.h"], + description = ":plugins.xml", deps = [ "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/lidar/common", - "//modules/perception/lidar_detection_filter/interface:base_object_filter", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/lidar_detection_filter:apollo_perception_lidar_detection_filter", "//modules/perception/lidar_detection_filter/object_filter_bank/proto:roi_boundary_filter_config_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", + "//modules/perception/common/lib:apollo_perception_common_lib", "@com_google_googletest//:gtest", "@eigen", ], - alwayslink = True, ) cc_test( diff --git a/modules/perception/lidar_output/BUILD b/modules/perception/lidar_output/BUILD index ad9110aaf26..c559c3d9f16 100644 --- a/modules/perception/lidar_output/BUILD +++ b/modules/perception/lidar_output/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -14,29 +13,20 @@ filegroup( ]) ) -cc_binary( +apollo_component( name = "liblidar_output_component.so", - linkshared = True, - linkstatic = True, - deps = [":lidar_output_component_lib"], -) - -cc_library( - name = "lidar_output_component_lib", srcs = ["lidar_output_component.cc"], hdrs = ["lidar_output_component.h"], copts = PERCEPTION_COPTS, linkopts = ["-lleveldb"], deps = [ "//cyber", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/lidar/common", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/lidar_output/proto:lidar_output_component_config_cc_proto", - "//modules/perception/common/onboard/msg_serializer:msg_serializer", "//modules/common_msgs/perception_msgs:perception_benchmark_cc_proto", ], - alwayslink = True, ) apollo_package() diff --git a/modules/perception/lidar_output/README.md b/modules/perception/lidar_output/README.md index e69de29bb2d..4c63f15b9e1 100644 --- a/modules/perception/lidar_output/README.md +++ b/modules/perception/lidar_output/README.md @@ -0,0 +1,53 @@ +# Component Name +lidar_output + +## Introduction +Convert the SensorFrameMessage to PerceptionObstacles. + +## Structure +``` +├── lidar_output + ├── conf // component config file + ├── dag // component dag file + ├── proto // definition of data structure + ├── lidar_output_component.cc // component inference + ├── lidar_output_component.h + ├── cyberfile.xml // package configs + ├── README.md + └── BUILD +``` + +## 模块输入输出 + +### 输入 +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `message` | `SensorFrameMessage` | sensor frame message | + +### 输出 +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `out_message` | `PerceptionObstacles` | /apollo/perception/obstacles | + +## How to use +1. Add vehicle params configs to modules/perception/data/params,keep frame_id and sensor_name consistent, start the tf +```bash +cyber_launch start modules/transform/launch/static_transform.launch +``` + +2. Select the lidar model,download the model files and put them into modules/perception/data/models using amodel tool. +```bash +amodel install https://xxx.zip +``` + +3. Modify modules/perception/lidar_output/dag/lidar_output.dag +- config_file_path: path of config path +- reader channel: the name of input channel + +4. Modify modules/perception/lidar_output/conf/lidar_output.pb.txt +- output_channel_name: the name of output channel + +5. start the lidar component +```bash +mainboard -d modules/perception/lidar_output/dag/lidar_output.dag +``` \ No newline at end of file diff --git a/modules/perception/lidar_tracking/BUILD b/modules/perception/lidar_tracking/BUILD index a2c2508cde5..8137ae22f13 100644 --- a/modules/perception/lidar_tracking/BUILD +++ b/modules/perception/lidar_tracking/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -14,31 +13,97 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "liblidar_tracking_component.so", - linkshared = True, - linkstatic = True, - deps = [":lidar_tracking_component_lib"], +apollo_cc_library( + name = "apollo_perception_lidar_tracking", + srcs = [ + "classifier/fused_classifier/ccrf_type_fusion.cc", + "classifier/fused_classifier/fused_classifier.cc", + "classifier/fused_classifier/fused_classifier_test.cc", + "classifier/fused_classifier/util.cc", + "tracker/association/distance_collection.cc", + "tracker/association/gnn_bipartite_graph_matcher.cc", + "tracker/association/multi_hm_bipartite_graph_matcher.cc", + "tracker/common/mlf_track_data.cc", + "tracker/common/track_data.cc", + "tracker/common/track_pool_types.cc", + "tracker/common/tracked_object.cc", + "tracker/measurement/measurement_collection.cc", + "tracker/multi_lidar_fusion/mlf_engine.cc", + "tracker/multi_lidar_fusion/mlf_motion_filter.cc", + "tracker/multi_lidar_fusion/mlf_motion_measurement.cc", + "tracker/multi_lidar_fusion/mlf_motion_refiner.cc", + "tracker/multi_lidar_fusion/mlf_shape_filter.cc", + "tracker/multi_lidar_fusion/mlf_track_object_distance.cc", + "tracker/multi_lidar_fusion/mlf_track_object_matcher.cc", + "tracker/multi_lidar_fusion/mlf_tracker.cc", + "tracker/semantic_map/evaluator_manager.cc", + ], + hdrs = [ + "classifier/fused_classifier/ccrf_type_fusion.h", + "classifier/fused_classifier/fused_classifier.h", + "classifier/fused_classifier/type_fusion_interface.h", + "classifier/fused_classifier/util.h", + "interface/base_bipartite_graph_matcher.h", + "interface/base_classifier.h", + "interface/base_multi_target_tracker.h", + "tracker/association/distance_collection.h", + "tracker/association/gnn_bipartite_graph_matcher.h", + "tracker/association/multi_hm_bipartite_graph_matcher.h", + "tracker/common/mlf_track_data.h", + "tracker/common/track_data.h", + "tracker/common/track_pool_types.h", + "tracker/common/tracked_object.h", + "tracker/measurement/measurement_collection.h", + "tracker/multi_lidar_fusion/mlf_base_filter.h", + "tracker/multi_lidar_fusion/mlf_engine.h", + "tracker/multi_lidar_fusion/mlf_motion_filter.h", + "tracker/multi_lidar_fusion/mlf_motion_measurement.h", + "tracker/multi_lidar_fusion/mlf_motion_refiner.h", + "tracker/multi_lidar_fusion/mlf_shape_filter.h", + "tracker/multi_lidar_fusion/mlf_track_object_distance.h", + "tracker/multi_lidar_fusion/mlf_track_object_matcher.h", + "tracker/multi_lidar_fusion/mlf_tracker.h", + "tracker/semantic_map/evaluator_manager.h", + ], + deps = [ + "//cyber", + "//modules/common/configs:vehicle_config_helper", + "//modules/common/math", + "//modules/common/util:util_tool", + "//modules/perception/common:perception_common_util", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/lidar_tracking/classifier/fused_classifier/proto:ccrf_type_fusion_config_cc_proto", + "//modules/perception/lidar_tracking/classifier/fused_classifier/proto:fused_classifier_config_cc_proto", + "//modules/perception/lidar_tracking/proto:lidar_tracking_component_config_cc_proto", + "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion/proto:multi_lidar_fusion_config_cc_proto", + "//modules/prediction:apollo_prediction", + "@com_google_googletest//:gtest_main", + "@eigen", + ], ) -cc_library( - name = "lidar_tracking_component_lib", +apollo_component( + name = "liblidar_tracking_component.so", srcs = ["lidar_tracking_component.cc"], hdrs = ["lidar_tracking_component.h"], copts = PERCEPTION_COPTS + if_profiler(), linkopts = ["-lleveldb"], deps = [ "//cyber", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", + ":apollo_perception_lidar_tracking", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/lidar_tracking/proto:lidar_tracking_component_config_cc_proto", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_engine", - "//modules/perception/lidar_tracking/classifier/fused_classifier:fused_classifier", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/lidar_tracking/README.md b/modules/perception/lidar_tracking/README.md index e69de29bb2d..b7f1a39e73b 100644 --- a/modules/perception/lidar_tracking/README.md +++ b/modules/perception/lidar_tracking/README.md @@ -0,0 +1,66 @@ +# Module Name +lidar_tracking + +# Introduction +The tracking module is to track the trajectory of obstacles, update their motion status and geometric shape, and assign tracking id. + +# Directory Structure +``` +├── lidar_tracking // tracking module + ├── classifier // classfier + ├── conf // configuration folder + ├── dag // module startup file + ├── data // module configuration parameters + ├── launch // launch file + ├── interface // interface + ├── proto // tracking module configuration proto file + ├── tracker // tracking functions + ├── lidar_tracking_component.cc // component entrance + ├── lidar_tracking_component.h + ├── cyberfile.xml // package management file + ├── README.md // readme file + └── BUILD // compile file +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `onboard::LidarFrameMessage` | lidar frame message | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `frame` | `onboard::SensorFrameMessage` | sensor frame message | + +SensorFrameMessage is used in multi sensor fusion. + +# How to Launch + +1. Add vehicle parameter configuration file to modules/perception/data/params, corresponding frame_id and sensor_name, launch transform +```bash +cyber_launch start modules/transform/launch/static_transform.launch +``` + +2. Modify modules/perception/launch/perception_lidar.launch +- select the dag file to start, use `lidar_tracking.dag` here +- modify msg_adapter. It is used to wrap messages sent by other steps as /apollo/perception/obstacles, this can be used for individual debugging. Modify relevant channel configurations in modules/perception/data/flag/perception_common.flag + +3. Modify parameter of modules/perception/lidar_tracking/conf/lidar_tracking_config.pb.txt +- main_sensor_name: main sensor name, same as pointcloud_preprocess component sensor_name +- output_channel_name: output channel name +- multi_target_tracker: multi target tracking function +- fusion_classifier: classification function +- multi_target_tracker_param: multi traget tracking parameters + - name: method name + - config_path: configuration path + - config_file: configuration file name +- fusion_classifier_param: classification parameters + - name: method name + - config_path: configuration folder + - config_file: configuration file name + +4. Launch tracking component +```bash +cyber_launch start modules/perception/lidar_tracking/launch/lidar_tracking.launch +``` diff --git a/modules/perception/lidar_tracking/classifier/BUILD b/modules/perception/lidar_tracking/classifier/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/lidar_tracking/classifier/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/lidar_tracking/classifier/fused_classifier/BUILD b/modules/perception/lidar_tracking/classifier/fused_classifier/BUILD deleted file mode 100644 index e4bdec39cd9..00000000000 --- a/modules/perception/lidar_tracking/classifier/fused_classifier/BUILD +++ /dev/null @@ -1,77 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "util", - srcs = ["util.cc"], - hdrs = ["util.h"], - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/perception/common/base:object", - "@eigen", - ], -) - -cc_library( - name = "type_fusion_interface", - hdrs = ["type_fusion_interface.h"], - deps = [ - "//modules/perception/common/base:object", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lidar/common", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -cc_library( - name = "ccrf_type_fusion", - srcs = ["ccrf_type_fusion.cc"], - hdrs = ["ccrf_type_fusion.h"], - deps = [ - ":type_fusion_interface", - ":util", - "//cyber", - "//modules/common/util:util_tool", - "//modules/perception/common:util", - "//modules/perception/common/base:object", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/lidar/common:object_sequence", - "//modules/perception/lidar_tracking/classifier/fused_classifier/proto:ccrf_type_fusion_config_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "fused_classifier", - srcs = ["fused_classifier.cc"], - hdrs = ["fused_classifier.h"], - deps = [ - ":type_fusion_interface", - "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lidar/common:object_sequence", - "//modules/perception/lidar_tracking/classifier/fused_classifier:ccrf_type_fusion", - "//modules/perception/lidar_tracking/interface:base_classifier", - "//modules/perception/lidar_tracking/classifier/fused_classifier/proto:fused_classifier_config_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "fused_classifier_test", - srcs = ["fused_classifier_test.cc"], - deps = [ - ":fused_classifier", - ":util", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_tracking/classifier/fused_classifier/fused_classifier_test.cc b/modules/perception/lidar_tracking/classifier/fused_classifier/fused_classifier_test.cc index b815b38c771..349d448e952 100644 --- a/modules/perception/lidar_tracking/classifier/fused_classifier/fused_classifier_test.cc +++ b/modules/perception/lidar_tracking/classifier/fused_classifier/fused_classifier_test.cc @@ -15,6 +15,7 @@ *****************************************************************************/ #include +#include #include "gtest/gtest.h" #include "modules/perception/common/base/object.h" diff --git a/modules/perception/lidar_tracking/interface/BUILD b/modules/perception/lidar_tracking/interface/BUILD deleted file mode 100644 index b112c60f2ac..00000000000 --- a/modules/perception/lidar_tracking/interface/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_bipartite_graph_matcher", - hdrs = ["base_bipartite_graph_matcher.h"], - deps = [ - "//modules/perception/common/algorithm/graph:secure_matrix", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lib/interface:base_init_options", - "@eigen", - ], -) - -cc_library( - name = "base_classifier", - hdrs = ["base_classifier.h"], - deps = [ - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -cc_library( - name = "base_multi_target_tracker", - hdrs = ["base_multi_target_tracker.h"], - deps = [ - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_tracking/tracker/BUILD b/modules/perception/lidar_tracking/tracker/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/lidar_tracking/tracker/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/lidar_tracking/tracker/association/BUILD b/modules/perception/lidar_tracking/tracker/association/BUILD deleted file mode 100644 index e12c5cacac4..00000000000 --- a/modules/perception/lidar_tracking/tracker/association/BUILD +++ /dev/null @@ -1,51 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "multi_hm_bipartite_graph_matcher", - srcs = ["multi_hm_bipartite_graph_matcher.cc"], - hdrs = ["multi_hm_bipartite_graph_matcher.h"], - deps = [ - "//cyber", - "//modules/perception/common/algorithm/graph:gated_hungarian_bigraph_matcher", - "//modules/perception/common/algorithm/graph:secure_matrix", - "//modules/perception/lidar_tracking/interface:base_bipartite_graph_matcher", - "@eigen", - ], - alwayslink = True, -) - -cc_library( - name = "gnn_bipartite_graph_matcher", - srcs = ["gnn_bipartite_graph_matcher.cc"], - hdrs = ["gnn_bipartite_graph_matcher.h"], - deps = [ - "//cyber", - "//modules/perception/common/algorithm/graph:gated_hungarian_bigraph_matcher", - "//modules/perception/common/algorithm/graph:secure_matrix", - "//modules/perception/lidar_tracking/interface:base_bipartite_graph_matcher", - ], - alwayslink = True, -) - -cc_library( - name = "distance_collection", - srcs = ["distance_collection.cc"], - hdrs = ["distance_collection.h"], - deps = [ - "//modules/common/math", - "//modules/perception/common/algorithm/geometry:basic", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/common/lidar/common:lidar_log", - "//modules/perception/lidar_tracking/tracker/common:mlf_track_data_with_track_pool_types", - "//modules/perception/lidar_tracking/tracker/common:track_data", - "//modules/perception/lidar_tracking/tracker/common:tracked_object", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_tracking/tracker/common/BUILD b/modules/perception/lidar_tracking/tracker/common/BUILD deleted file mode 100644 index 9662a402c81..00000000000 --- a/modules/perception/lidar_tracking/tracker/common/BUILD +++ /dev/null @@ -1,51 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "tracked_object", - srcs = ["tracked_object.cc"], - hdrs = ["tracked_object.h"], - deps = [ - "//cyber", - "//modules/perception/common/base:object", - "//modules/perception/common/base:object_pool_types", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/algorithm/point_cloud_processing", - "//modules/perception/common/lidar/common:feature_descriptor", - ], -) - -cc_library( - name = "track_data", - srcs = ["track_data.cc"], - hdrs = ["track_data.h"], - deps = [ - ":tracked_object", - "//cyber", - "//modules/perception/common/base:object_pool", - ], -) - -cc_library( - name = "mlf_track_data_with_track_pool_types", - srcs = [ - "mlf_track_data.cc", - "track_pool_types.cc", - ], - hdrs = [ - "mlf_track_data.h", - "track_pool_types.h", - ], - deps = [ - ":track_data", - "//cyber", - "//modules/perception/common/base:object_pool", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_tracking/tracker/measurement/BUILD b/modules/perception/lidar_tracking/tracker/measurement/BUILD deleted file mode 100644 index d49a444701b..00000000000 --- a/modules/perception/lidar_tracking/tracker/measurement/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "measurement_collection", - srcs = ["measurement_collection.cc"], - hdrs = ["measurement_collection.h"], - deps = [ - "//modules/perception/common/algorithm/geometry:basic", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/lidar_tracking/tracker/common:tracked_object", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_tracking/tracker/multi_lidar_fusion/BUILD b/modules/perception/lidar_tracking/tracker/multi_lidar_fusion/BUILD deleted file mode 100644 index 1799996ac4b..00000000000 --- a/modules/perception/lidar_tracking/tracker/multi_lidar_fusion/BUILD +++ /dev/null @@ -1,146 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "mlf_base_filter", - hdrs = ["mlf_base_filter.h"], - deps = [ - "//modules/perception/common/lib/registerer", - "//modules/perception/lidar_tracking/tracker/common:mlf_track_data_with_track_pool_types", - "//modules/perception/lidar_tracking/tracker/common:tracked_object", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -cc_library( - name = "mlf_engine", - srcs = ["mlf_engine.cc"], - hdrs = ["mlf_engine.h"], - deps = [ - "//cyber/common:file", - "//modules/perception/lidar_tracking/interface:base_multi_target_tracker", - "//modules/perception/lidar_tracking/tracker/common:mlf_track_data_with_track_pool_types", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_track_object_matcher", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_tracker", - "//modules/perception/lidar_tracking/tracker/semantic_map:perception_evaluator_manager", - "//modules/perception/common:util", - "//modules/perception/common/onboard/msg_serializer", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/container/pose:pose_container", - ], - alwayslink = True, -) - -cc_library( - name = "mlf_motion_filter", - srcs = ["mlf_motion_filter.cc"], - hdrs = ["mlf_motion_filter.h"], - deps = [ - "//cyber/common:file", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/geometry:basic", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_base_filter", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_motion_measurement", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_motion_refiner", - ], - alwayslink = True, -) - -cc_library( - name = "mlf_motion_measurement", - srcs = ["mlf_motion_measurement.cc"], - hdrs = ["mlf_motion_measurement.h"], - deps = [ - "//modules/perception/lidar_tracking/tracker/common:mlf_track_data_with_track_pool_types", - "//modules/perception/lidar_tracking/tracker/common:tracked_object", - "//modules/perception/lidar_tracking/tracker/measurement:measurement_collection", - ], - alwayslink = True, -) - -cc_library( - name = "mlf_motion_refiner", - srcs = ["mlf_motion_refiner.cc"], - hdrs = ["mlf_motion_refiner.h"], - deps = [ - "//cyber/common:file", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/geometry:basic", - "//modules/perception/lidar_tracking/tracker/common:mlf_track_data_with_track_pool_types", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion/proto:multi_lidar_fusion_config_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", - ], - alwayslink = True, -) - -cc_library( - name = "mlf_shape_filter", - srcs = ["mlf_shape_filter.cc"], - hdrs = ["mlf_shape_filter.h"], - deps = [ - "//cyber/common:file", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/geometry:convex_hull_2d", - "//modules/perception/common/lidar/common:lidar_object_util", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_base_filter", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion/proto:multi_lidar_fusion_config_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "mlf_track_object_distance", - srcs = ["mlf_track_object_distance.cc"], - hdrs = ["mlf_track_object_distance.h"], - deps = [ - "//cyber/common:file", - "//modules/perception/common:util", - "//modules/perception/lidar_tracking/tracker/association:distance_collection", - "//modules/perception/lidar_tracking/tracker/common:mlf_track_data_with_track_pool_types", - "//modules/perception/lidar_tracking/tracker/common:tracked_object", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion/proto:multi_lidar_fusion_config_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", - ], - alwayslink = True, -) - -cc_library( - name = "mlf_track_object_matcher", - srcs = ["mlf_track_object_matcher.cc"], - hdrs = ["mlf_track_object_matcher.h"], - deps = [ - "//cyber/common:file", - "//modules/perception/common/algorithm/graph:secure_matrix", - "//modules/perception/lidar_tracking/interface:base_bipartite_graph_matcher", - "//modules/perception/lidar_tracking/tracker/association:distance_collection", - "//modules/perception/lidar_tracking/tracker/association:gnn_bipartite_graph_matcher", - "//modules/perception/lidar_tracking/tracker/association:multi_hm_bipartite_graph_matcher", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_track_object_distance", - "//modules/perception/common/lib/interface:base_init_options", - ], - alwayslink = True, -) - -cc_library( - name = "mlf_tracker", - srcs = ["mlf_tracker.cc"], - hdrs = ["mlf_tracker.h"], - deps = [ - "//cyber/common:file", - "//modules/perception/common:util", - "//modules/perception/lidar_tracking/tracker/common:mlf_track_data_with_track_pool_types", - "//modules/perception/lidar_tracking/tracker/common:tracked_object", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_base_filter", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_shape_filter", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion:mlf_motion_filter", - "//modules/perception/lidar_tracking/tracker/multi_lidar_fusion/proto:multi_lidar_fusion_config_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/lidar_tracking/tracker/semantic_map/BUILD b/modules/perception/lidar_tracking/tracker/semantic_map/BUILD deleted file mode 100644 index 67cc964658d..00000000000 --- a/modules/perception/lidar_tracking/tracker/semantic_map/BUILD +++ /dev/null @@ -1,43 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "perception_evaluator_manager", - srcs = ["evaluator_manager.cc"], - hdrs = ["evaluator_manager.h"], - deps = [ - "//modules/common/configs:vehicle_config_helper", - "external_perception_evaluator_manager_lib", - ], -) - -cc_binary( - name = "libexternal_perception_evaluator_manager_lib.so", - deps = [ - "//modules/prediction/common:feature_output", - "//modules/prediction/common:semantic_map", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - "//modules/prediction/evaluator/vehicle:semantic_lstm_evaluator", - ], - linkshared = True, - linkstatic = True -) - -cc_library( - name = "external_perception_evaluator_manager_lib", - srcs = [":libexternal_perception_evaluator_manager_lib.so"], - deps = [ - "//modules/prediction/common:feature_output", - "//modules/prediction/common:semantic_map", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - "//modules/prediction/evaluator/vehicle:semantic_lstm_evaluator", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/motion_service/BUILD b/modules/perception/motion_service/BUILD index 5587749674f..da1b76cf81b 100644 --- a/modules/perception/motion_service/BUILD +++ b/modules/perception/motion_service/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_component") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -10,35 +9,40 @@ filegroup( "conf/**", "dag/**", "launch/**", - ]) + ]), ) -cc_binary( +apollo_component( name = "libmotion_service_component.so", - linkshared = True, - linkstatic = True, - deps = [":motion_service_component_lib"], -) - -cc_library( - name = "motion_service_component_lib", - srcs = ["motion_service_component.cc"], - hdrs = ["motion_service_component.h"], + srcs = ["motion_service_component.cc",], + hdrs = ["motion_service_component.h",], deps = [ "//cyber", + ":apollo_perception_motion_service", + "//modules/common/math", "//modules/common_msgs/localization_msgs:localization_cc_proto", "//modules/common_msgs/localization_msgs:localization_status_cc_proto", "//modules/common_msgs/localization_msgs:pose_cc_proto", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/common/math", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/lib:apollo_perception_common_lib", "//modules/perception/common/proto:motion_service_cc_proto", - "//modules/perception/motion_service/motion:plane_motion", "//modules/perception/motion_service/proto:motion_service_component_cc_proto", ], ) +apollo_cc_library( + name = "apollo_perception_motion_service", + srcs = ["motion/plane_motion.cc"], + hdrs = ["motion/plane_motion.h"], + copts = [ + "-Wno-deprecated", + ], + deps = [ + "//modules/perception/common/base:apollo_perception_common_base", + ] +) + apollo_package() + cpplint() diff --git a/modules/perception/motion_service/README.md b/modules/perception/motion_service/README.md new file mode 100644 index 00000000000..1131420143c --- /dev/null +++ b/modules/perception/motion_service/README.md @@ -0,0 +1,34 @@ +# Introduction +The motion service module provides current motion estimation. + +# Directory Structure +``` +motion_service +├── BUILD // bazel build file +├── README.md +├── conf // dag config file +├── cyberfile.xml // package description file +├── dag +├── launch +├── motion // main process +├── motion_service_component.cc // component +├── motion_service_component.h +└── proto // proto file +``` + +## Input +| Channel | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/sensor/camera/front_6mm/image` | `ImageMsgType` | camera drive message | +| `/apollo/localization/pose` | `LocalizationMsgType` | localization message | + +## Output +| Channel | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `/apollo/perception/motion_service` | `MotionService` | motion service message | + +# How to run +You can start the lane detection module with the following command. +``` +cyber_launch start modules/perception/motion_service/launch/motion_service.launch +``` diff --git a/modules/perception/motion_service/motion/BUILD b/modules/perception/motion_service/motion/BUILD deleted file mode 100644 index 11e7a7ae2b6..00000000000 --- a/modules/perception/motion_service/motion/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "plane_motion", - srcs = ["plane_motion.cc"], - hdrs = ["plane_motion.h"], - copts = [ - "-Wno-deprecated", - ], - deps = [ - "//modules/perception/common/base", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/msg_adapter/BUILD b/modules/perception/msg_adapter/BUILD index a2ba7d81b17..f4fd7360a66 100644 --- a/modules/perception/msg_adapter/BUILD +++ b/modules/perception/msg_adapter/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -9,36 +8,39 @@ filegroup( srcs = glob([ "dag/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libmsg_adapter_component.so", - linkshared = True, - linkstatic = True, - deps = [":msg_adapter_component_lib"], -) - -cc_library( - name = "msg_adapter_component_lib", - srcs = ["msg_adapter_component.cc"], - hdrs = ["msg_adapter_component.h"], +apollo_cc_library( + name = "apollo_perception_msg_adapter", + srcs = [ + "common/msg_adapter_gflags.cc", + ], + hdrs = [ + "common/msg_adapter_gflags.h", + "convert/common.h", + "convert/convert.h", + "msg_converter.h", + ], deps = [ - ":msg_converter", "//cyber", - "//modules/perception/msg_adapter/common:msg_adapter_gflags", - "//modules/perception/msg_adapter/convert", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "@com_github_gflags_gflags//:gflags", ], - alwayslink = True, ) -cc_library( - name = "msg_converter", - hdrs = ["msg_converter.h"], +apollo_component( + name = "libmsg_adapter_component.so", + srcs = ["msg_adapter_component.cc"], + hdrs = ["msg_adapter_component.h"], deps = [ "//cyber", - ] + ":apollo_perception_msg_adapter" + ], ) apollo_package() + cpplint() diff --git a/modules/perception/msg_adapter/README.md b/modules/perception/msg_adapter/README.md new file mode 100644 index 00000000000..dd5078cafa9 --- /dev/null +++ b/modules/perception/msg_adapter/README.md @@ -0,0 +1,52 @@ +# Introduction +The msg adapter module is used to forwarding message inside the perception module. + +Channel names for internal messages usually have an inner field `inner`. These messages are only passed between threads, not between processes, so you can't use `cyber_monitor` to view them. Because these messages are generally relatively large, such as image and point cloud data, in order to avoid copying, serialization and deserialization, we use the method of directly passing objects, so these messages can only be passed within the thread. + +For the convenience of debugging, you can use the msg adapter module to forward messages, so that you can view them through `cyber_monitor`. + +# Directory Structure +``` +msg_adapter +├── BUILD // bazel build file +├── README.md +├── common // gflags parameters +├── convert // convert functions +├── cyberfile.xml // package description file +├── dag +├── launch +├── msg_adapter_component.cc // component +├── msg_adapter_component.h +└── msg_converter.h +``` + +# Input and Output +## Input +| Channel | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `/perception/inner/location_refinement` | `onboard::CameraFrame` | camera detection message | +| `/perception/lidar/detection` | `onboard::LidarFrameMessage` | lidar detection message | +| `/perception/inner/PrefusedObjects` | `onboard::SensorFrameMessage` | camera/lidar/radar tracking message | + +Each of the above channels corresponds to a conversion function. It is best to enable only one at a time. If multiple channels are to be enabled, it is best to modify the output channel at the same time. + +## Output +| Channel | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `/apollo/perception/obstacles` | `PerceptionObstacles` | obstacles detected | + +# How to run +The msg adapter module is used with other modules to forward messages, so it is generally not started separately. + +## How to modify the input and output topics +You can modify input and output topics in `modules/perception/data/flag/perception_common.flag`. +``` +--cameraframe_to_obstacles_in=/perception/inner/location_refinement +# --lidarframe_to_obstacles_in=/perception/lidar/detection +--sensorframe_message_to_obstacles_in=/perception/inner/PrefusedObjects +``` + +## How to add my own convert function +You can follow below steps to add new convert. +1. Get the type of message to convert, typically including input and output messages. Add conversion function in `convert/convert.h`. +2. Register conversion function in `msg_adapter_component.cc`. And add input and output topics. diff --git a/modules/perception/msg_adapter/common/BUILD b/modules/perception/msg_adapter/common/BUILD deleted file mode 100644 index 090d59fe366..00000000000 --- a/modules/perception/msg_adapter/common/BUILD +++ /dev/null @@ -1,18 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - - -cc_library( - name = "msg_adapter_gflags", - srcs = ["msg_adapter_gflags.cc"], - hdrs = ["msg_adapter_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/msg_adapter/convert/BUILD b/modules/perception/msg_adapter/convert/BUILD deleted file mode 100644 index 9abf7e0c7d9..00000000000 --- a/modules/perception/msg_adapter/convert/BUILD +++ /dev/null @@ -1,34 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "convert", - hdrs = [ - "convert.h", - ], - deps = [ - ":common", - "//cyber", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/perception/common/onboard/inner_component_messages:camera_detection_component_messages", - "//modules/perception/common/onboard/inner_component_messages", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", - ] -) - -cc_library( - name = "common", - hdrs = [ - "common.h", - ], - deps = [ - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/perception/common/base", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/BUILD b/modules/perception/multi_sensor_fusion/BUILD index f397f380764..9387179a9ea 100644 --- a/modules/perception/multi_sensor_fusion/BUILD +++ b/modules/perception/multi_sensor_fusion/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -10,36 +9,349 @@ filegroup( "conf/**", "dag/**", "data/**", - ]) + ]), ) -cc_binary( - name = "libmulti_sensor_fusion.so", - linkshared = True, - linkstatic = True, - deps = [":multi_sensor_fusion_component"], +apollo_cc_library( + name = "apollo_perception_multi_sensor_fusion", + srcs = [ + "base/scene.cc", + "base/sensor.cc", + "base/sensor_data_manager.cc", + "base/sensor_frame.cc", + "base/sensor_object.cc", + "base/track.cc", + "base/track_pool_types.cc", + "common/camera_util.cc", + "common/dst_evidence.cc", + "common/information_filter.cc", + "common/kalman_filter.cc", + "fusion/data_association/hm_data_association/hm_tracks_objects_match.cc", + "fusion/data_association/hm_data_association/probabilities.cc", + "fusion/data_association/hm_data_association/track_object_distance.cc", + "fusion/data_association/hm_data_association/track_object_similarity.cc", + "fusion/data_fusion/existence_fusion/dst_existence_fusion/dst_existence_fusion.cc", + "fusion/data_fusion/motion_fusion/kalman_motion_fusion/kalman_motion_fusion.cc", + "fusion/data_fusion/shape_fusion/pbf_shape_fusion/pbf_shape_fusion.cc", + "fusion/data_fusion/tracker/pbf_tracker/pbf_tracker.cc", + "fusion/data_fusion/type_fusion/dst_type_fusion/dst_type_fusion.cc", + "fusion/dummy/dummy_algorithms.cc", + "fusion/fusion_system/probabilistic_fusion/probabilistic_fusion.cc", + "fusion/gatekeeper/pbf_gatekeeper/pbf_gatekeeper.cc", + ], + hdrs = [ + "base/base_forward_declaration.h", + "base/fusion_frame.h", + "base/fusion_log.h", + "base/scene.h", + "base/sensor.h", + "base/sensor_data_manager.h", + "base/sensor_frame.h", + "base/sensor_object.h", + "base/track.h", + "base/track_pool_types.h", + "common/base_filter.h", + "common/camera_util.h", + "common/dst_evidence.h", + "common/information_filter.h", + "common/kalman_filter.h", + "fusion/data_association/hm_data_association/chi_squared_cdf_1_0.0500_0.999900.h", + "fusion/data_association/hm_data_association/chi_squared_cdf_2_0.0500_0.999900.h", + "fusion/data_association/hm_data_association/hm_tracks_objects_match.h", + "fusion/data_association/hm_data_association/probabilities.h", + "fusion/data_association/hm_data_association/projection_cache.h", + "fusion/data_association/hm_data_association/track_object_distance.h", + "fusion/data_association/hm_data_association/track_object_similarity.h", + "fusion/data_fusion/existence_fusion/dst_existence_fusion/dst_existence_fusion.h", + "fusion/data_fusion/motion_fusion/kalman_motion_fusion/kalman_motion_fusion.h", + "fusion/data_fusion/shape_fusion/pbf_shape_fusion/pbf_shape_fusion.h", + "fusion/data_fusion/tracker/pbf_tracker/pbf_tracker.h", + "fusion/data_fusion/type_fusion/dst_type_fusion/dst_type_fusion.h", + "fusion/dummy/dummy_algorithms.h", + "fusion/fusion_system/probabilistic_fusion/probabilistic_fusion.h", + "fusion/gatekeeper/pbf_gatekeeper/pbf_gatekeeper.h", + "interface/base_data_association.h", + "interface/base_existence_fusion.h", + "interface/base_fusion_system.h", + "interface/base_gatekeeper.h", + "interface/base_motion_fusion.h", + "interface/base_shape_fusion.h", + "interface/base_tracker.h", + "interface/base_type_fusion.h", + ], + deps = [ + "//cyber", + "//modules/common/math", + "//modules/common/util:common_util", + "//modules/common/util:util_tool", + "//modules/perception/common:perception_common_util", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/hdmap:apollo_perception_common_hdmap", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/multi_sensor_fusion/proto:dst_existence_fusion_config_cc_proto", + "//modules/perception/multi_sensor_fusion/proto:dst_type_fusion_config_cc_proto", + "//modules/perception/multi_sensor_fusion/proto:fusion_component_config_cc_proto", + "//modules/perception/multi_sensor_fusion/proto:pbf_gatekeeper_config_cc_proto", + "//modules/perception/multi_sensor_fusion/proto:pbf_tracker_config_cc_proto", + "//modules/perception/multi_sensor_fusion/proto:probabilistic_fusion_config_cc_proto", + "@boost", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest", + "@com_google_googletest//:gtest_main", + "@eigen", + ], ) -cc_library( - name = "multi_sensor_fusion_component", +apollo_component( + name = "libmulti_sensor_fusion.so", srcs = ["multi_sensor_fusion_component.cc"], hdrs = ["multi_sensor_fusion_component.h"], deps = [ "//cyber", + ":apollo_perception_multi_sensor_fusion", "//modules/common/util:util_tool", - "//modules/perception/common/base", - "//modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion", - "//modules/perception/multi_sensor_fusion/interface", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/hdmap:hdmap_input", - "//modules/perception/common/onboard/common_flags", - "//modules/perception/common/onboard/inner_component_messages", - "//modules/perception/common/onboard/msg_serializer", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/hdmap:apollo_perception_common_hdmap", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/multi_sensor_fusion/proto:fusion_component_config_cc_proto", "@eigen", ], - alwayslink = True, ) +apollo_cc_test( + name = "sensor_frame_test", + size = "small", + srcs = ["base/sensor_frame_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "@com_google_googletest//:gtest_main", + ], +) + +# todo(zero): need fix +# apollo_cc_test( +# name = "sensor_test", +# size = "small", +# srcs = ["base/sensor_test.cc"], +# deps = [ +# ":apollo_perception_multi_sensor_fusion", +# "@com_google_googletest//:gtest_main", +# ], +# ) + +# todo(zero): need fix +# apollo_cc_test( +# name = "sensor_object_test", +# size = "small", +# srcs = ["base/sensor_object_test.cc"], +# deps = [ +# ":apollo_perception_multi_sensor_fusion", +# "@com_google_googletest//:gtest_main", +# ], +# ) + +# apollo_cc_test( +# name = "sensor_data_manager_test", +# size = "small", +# srcs = ["base/sensor_data_manager_test.cc"], +# data = [ +# "//modules/perception/data:perception_testdata", +# ], +# deps = [ +# ":apollo_perception_multi_sensor_fusion", +# "@com_google_googletest//:gtest_main", +# ], +# ) + +# todo(zero): need fix +# apollo_cc_test( +# name = "track_test", +# size = "small", +# srcs = ["base/track_test.cc"], +# deps = [ +# ":apollo_perception_multi_sensor_fusion", +# "@com_google_googletest//:gtest_main", +# ], +# ) + +apollo_cc_test( + name = "camera_util_test", + size = "small", + srcs = ["common/camera_util_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "dst_evidence_test", + size = "small", + srcs = ["common/dst_evidence_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "information_filter_test", + size = "small", + srcs = ["common/information_filter_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "kalman_filter_test", + size = "small", + srcs = ["common/kalman_filter_test.cc"], + copts = ["-fno-access-control"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "hm_data_association_test", + size = "small", + srcs = ["fusion/data_association/hm_data_association/hm_data_association_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "track_object_distance_test", + size = "small", + srcs = ["fusion/data_association/hm_data_association/track_object_distance_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "track_object_test", + size = "small", + srcs = ["fusion/data_association/hm_data_association/track_object_test.cc"], + copts = ["-fno-access-control"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "dst_existence_fusion_test", + size = "small", + srcs = ["fusion/data_fusion/existence_fusion/dst_existence_fusion/dst_existence_fusion_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "@com_google_googletest//:gtest_main", + ], +) + +# todo(zero): need fix +# apollo_cc_test( +# name = "kalman_motion_fusion_test", +# size = "small", +# srcs = ["fusion/data_fusion/motion_fusion/kalman_motion_fusion/kalman_motion_fusion_test.cc"], +# deps = [ +# ":apollo_perception_multi_sensor_fusion", +# "@com_google_googletest//:gtest_main", +# ], +# ) + +apollo_cc_test( + name = "pbf_shape_fusion_test", + size = "small", + srcs = ["fusion/data_fusion/shape_fusion/pbf_shape_fusion/pbf_shape_fusion_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common:perception_gflags", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pbf_tracker_test", + size = "small", + srcs = ["fusion/data_fusion/tracker/pbf_tracker/pbf_tracker_test.cc"], + copts = ["-fno-access-control"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "//modules/perception/common:perception_gflags", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "dst_type_fusion_test", + size = "small", + srcs = ["fusion/data_fusion/type_fusion/dst_type_fusion/dst_type_fusion_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common:perception_gflags", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "dummy_algorithms_test", + size = "small", + srcs = ["fusion/dummy/dummy_algorithms_test.cc"], + deps = [ + ":apollo_perception_multi_sensor_fusion", + "@com_google_googletest//:gtest_main", + ], +) + +# ignore temporarily TODO:// need fix logic + +# apollo_cc_test( +# name = "probabilistic_fusion_test", +# size = "small", +# srcs = ["fusion/fusion_system/probabilistic_fusion/probabilistic_fusion_test.cc"], +# copts = ["-fno-access-control"], +# deps = [ +# ":apollo_perception_multi_sensor_fusion", +# "@com_google_googletest//:gtest_main", +# ], +# linkstatic = True, +# ) + +# todo(zero) +# apollo_cc_test( +# name = "pbf_gatekeeper_test", +# size = "small", +# srcs = ["fusion/gatekeeper/pbf_gatekeeper/pbf_gatekeeper_test.cc"], +# deps = [ +# ":apollo_perception_multi_sensor_fusion", +# "//modules/perception/common/sensor_manager", +# "@com_google_googletest//:gtest_main", +# ], +# ) + + apollo_package() + cpplint() diff --git a/modules/perception/multi_sensor_fusion/README.md b/modules/perception/multi_sensor_fusion/README.md index e69de29bb2d..15706c851ee 100644 --- a/modules/perception/multi_sensor_fusion/README.md +++ b/modules/perception/multi_sensor_fusion/README.md @@ -0,0 +1,41 @@ +# Introduction +The multi-sensor fusion module fuses the output results of Lidar, Camera, and Radar multiple sensors to make the detection results more reliable. + +It uses post-processing technology, the algorithm used is probabilistic fusion. + +# Directory Structure +``` +multi_sensor_fusion +├── BUILD // bazel build file +├── README.md +├── base // base data structure +├── common // filter and utils +├── conf // dag config file +├── cyberfile.xml // package description file +├── dag +├── data // lib's configuration file +├── fusion // fusion function +├── interface +├── multi_sensor_fusion_component.cc // component +├── multi_sensor_fusion_component.h +└── proto // proto file +``` + +# Input and Output +## Input +| Channel | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `/perception/inner/PrefusedObjects` | `onboard::SensorFrameMessage` | frame contains object detection | + +## Output +| Channel | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `/apollo/perception/obstacles` | `PerceptionObstacles` | detection results after fusion | + +# How to run +The multi-sensor fusion module does not support running alone, it needs to run together with lidar, camera and radar detection modules. + +You can use the following command to start the whole perception function, including lidar, camera, and radar target detection, and output their results after fusion. +``` +cyber_launch start modules/perception/launch/perception_all.launch +``` diff --git a/modules/perception/multi_sensor_fusion/base/BUILD b/modules/perception/multi_sensor_fusion/base/BUILD deleted file mode 100644 index b8a4384a2e5..00000000000 --- a/modules/perception/multi_sensor_fusion/base/BUILD +++ /dev/null @@ -1,165 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base", - deps = [ - ":base_forward_declaration", - ":fusion_log", - ":scene", - ":sensor", - ":sensor_data_manager", - ":track", - ":track_pool_types", - ], -) - -cc_library( - name = "base_forward_declaration", - hdrs = ["base_forward_declaration.h"], -) - -cc_library( - name = "fusion_log", - hdrs = ["fusion_log.h"], -) - -cc_library( - name = "fusion_frame", - hdrs = [ - "fusion_frame.h", - ], - deps = [ - ":scene", - ":sensor", - "//modules/perception/common/base:frame", - "//modules/perception/common/base:object", - ], -) - -cc_library( - name = "scene", - srcs = ["scene.cc"], - hdrs = ["scene.h"], - deps = [ - ":track", - ], -) - -cc_library( - name = "sensor", - srcs = [ - "sensor.cc", - "sensor_frame.cc", - "sensor_object.cc", - ], - hdrs = [ - "sensor.h", - "sensor_frame.h", - "sensor_object.h", - ], - deps = [ - ":base_forward_declaration", - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/algorithm/sensor_manager", - "@com_google_googletest//:gtest_main", - "@eigen", - ], -) - -cc_test( - name = "sensor_frame_test", - size = "small", - srcs = ["sensor_frame_test.cc"], - deps = [ - ":sensor", - "@com_google_googletest//:gtest_main", - ], -) - -# todo(zero): need fix -# cc_test( -# name = "sensor_test", -# size = "small", -# srcs = ["sensor_test.cc"], -# deps = [ -# ":sensor", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -# todo(zero): need fix -# cc_test( -# name = "sensor_object_test", -# size = "small", -# srcs = ["sensor_object_test.cc"], -# deps = [ -# ":sensor", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -cc_library( - name = "sensor_data_manager", - srcs = ["sensor_data_manager.cc"], - hdrs = ["sensor_data_manager.h"], - deps = [ - ":sensor", - "//modules/perception/common/base:frame", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/lib/thread", - "@com_google_googletest//:gtest", - ], -) - -# cc_test( -# name = "sensor_data_manager_test", -# size = "small", -# srcs = ["sensor_data_manager_test.cc"], -# data = [ -# "//modules/perception/data:perception_testdata", -# ], -# deps = [ -# ":sensor_data_manager", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -cc_library( - name = "track", - srcs = ["track.cc"], - hdrs = ["track.h"], - deps = [ - ":sensor", - "//cyber", - "@com_google_googletest//:gtest", - ], -) - -# todo(zero): need fix -# cc_test( -# name = "track_test", -# size = "small", -# srcs = ["track_test.cc"], -# deps = [ -# ":track", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -cc_library( - name = "track_pool_types", - srcs = ["track_pool_types.cc"], - hdrs = ["track_pool_types.h"], - deps = [ - ":track", - "//modules/perception/common/base:object_pool", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/base/fusion_frame.h b/modules/perception/multi_sensor_fusion/base/fusion_frame.h index d1d865fc6f4..81e7e9d5b4b 100644 --- a/modules/perception/multi_sensor_fusion/base/fusion_frame.h +++ b/modules/perception/multi_sensor_fusion/base/fusion_frame.h @@ -28,12 +28,16 @@ namespace perception { namespace fusion { struct FusionFrame { + /// @brief Raw sensor input information base::FramePtr frame; + /// @brief Converted sensor input information std::vector sensor_frames; + /// @brief Obstacle information after fusion std::vector fused_objects; + /// @brief A container holds obstacles and their tracking information ScenePtr scene_ptr; }; diff --git a/modules/perception/multi_sensor_fusion/base/scene.h b/modules/perception/multi_sensor_fusion/base/scene.h index 0e114a371d8..c2db13a9cce 100644 --- a/modules/perception/multi_sensor_fusion/base/scene.h +++ b/modules/perception/multi_sensor_fusion/base/scene.h @@ -30,23 +30,54 @@ class Scene { Scene(); ~Scene(); + /** + * @brief Get the foreground track objects + * + * @return std::vector& + */ inline std::vector& GetForegroundTracks() { return foreground_tracks_; } + /** + * @brief Get the foreground track objects + * + * @return const std::vector& + */ inline const std::vector& GetForegroundTracks() const { return foreground_tracks_; } + /** + * @brief Get the background track objects + * + * @return std::vector& + */ inline std::vector& GetBackgroundTracks() { return background_tracks_; } + /** + * @brief Get the background track objects + * + * @return const std::vector& + */ inline const std::vector& GetBackgroundTracks() const { return background_tracks_; } + /** + * @brief Add a foreground track object + * + * @param track foreground track object + */ void AddForegroundTrack(TrackPtr track); + + /** + * @brief Add a background track object + * + * @param track background track object + */ void AddBackgroundTrack(TrackPtr track); protected: diff --git a/modules/perception/multi_sensor_fusion/base/sensor.h b/modules/perception/multi_sensor_fusion/base/sensor.h index 1c9ae82daf2..802a1e099c1 100644 --- a/modules/perception/multi_sensor_fusion/base/sensor.h +++ b/modules/perception/multi_sensor_fusion/base/sensor.h @@ -36,12 +36,22 @@ class Sensor { explicit Sensor(const base::SensorInfo& sensor_info) : sensor_info_(sensor_info) {} - // query frames whose time stamp is in range - // (_latest_fused_time_stamp, time_stamp] + /** + * @brief query frames whose time stamp is in range + * (_latest_fused_time_stamp, time_stamp] + * + * @param timestamp + * @param frames + */ void QueryLatestFrames(double timestamp, std::vector* frames); - // query latest frame whose time stamp is in range - // (_latest_fused_time_stamp, time_stamp] + /** + * @brief query latest frame whose time stamp is in range + * (_latest_fused_time_stamp, time_stamp] + * + * @param timestamp + * @return SensorFramePtr + */ SensorFramePtr QueryLatestFrame(double timestamp); bool GetPose(double timestamp, Eigen::Affine3d* pose) const; diff --git a/modules/perception/multi_sensor_fusion/base/sensor_data_manager.h b/modules/perception/multi_sensor_fusion/base/sensor_data_manager.h index 1c7ca75a8a5..2496cadceff 100644 --- a/modules/perception/multi_sensor_fusion/base/sensor_data_manager.h +++ b/modules/perception/multi_sensor_fusion/base/sensor_data_manager.h @@ -35,26 +35,92 @@ namespace fusion { class SensorDataManager { public: + /** + * @brief Initialization + * + * @return true + * @return false + */ bool Init(); + /** + * @brief Reset the data + * + */ void Reset(); + /** + * @brief Add the data frame, which contains the obstacles detected + * by the sensor + * + * @param frame_ptr Sensor detection input data frame + */ void AddSensorMeasurements(const base::FrameConstPtr& frame_ptr); + /** + * @brief Is the data frame detected by lidar + * + * @param frame_ptr + * @return true detected by lidar + * @return false not detected by lidar + */ bool IsLidar(const base::FrameConstPtr& frame_ptr); + + /** + * @brief Is the data frame detected by radar + * + * @param frame_ptr + * @return true detected by radar + * @return false not detected by radar + */ bool IsRadar(const base::FrameConstPtr& frame_ptr); + + /** + * @brief Is the data frame detected by camera + * + * @param frame_ptr + * @return true detected by camera + * @return false not detected by camera + */ bool IsCamera(const base::FrameConstPtr& frame_ptr); - // Getter + /** + * @brief Get the latest sensor frames + * + * @param timestamp + * @param sensor_id + * @param frames + */ void GetLatestSensorFrames(double timestamp, const std::string& sensor_id, std::vector* frames) const; + /** + * @brief Get the latest sensor frames + * + * @param timestamp + * @param frames + */ void GetLatestFrames(double timestamp, std::vector* frames) const; + /** + * @brief Get the Pose object + * + * @param sensor_id + * @param timestamp + * @param pose + * @return true + * @return false + */ bool GetPose(const std::string& sensor_id, double timestamp, Eigen::Affine3d* pose) const; + /** + * @brief Get the Camera Intrinsic object + * + * @param sensor_id + * @return base::BaseCameraModelPtr + */ base::BaseCameraModelPtr GetCameraIntrinsic( const std::string& sensor_id) const; diff --git a/modules/perception/multi_sensor_fusion/base/sensor_frame.h b/modules/perception/multi_sensor_fusion/base/sensor_frame.h index ada79133312..01c3aeefb2c 100644 --- a/modules/perception/multi_sensor_fusion/base/sensor_frame.h +++ b/modules/perception/multi_sensor_fusion/base/sensor_frame.h @@ -46,16 +46,43 @@ class SensorFrame { public: SensorFrame(); + /** + * @brief Construct a new Sensor Frame object + * + * @param base_frame_ptr + */ explicit SensorFrame(const base::FrameConstPtr& base_frame_ptr); + /** + * @brief Initialize sensor frame + * + * @param base_frame_ptr + */ void Initialize(const base::FrameConstPtr& base_frame_ptr); + /** + * @brief Initialize sensor frame + * + * @param base_frame_ptr + * @param sensor + */ void Initialize(const base::FrameConstPtr& base_frame_ptr, const SensorPtr& sensor); - // Getter + /** + * @brief Get the timestamp of the sensor frame + * + * @return double + */ inline double GetTimestamp() const { return header_->timestamp; } + /** + * @brief Get the pose of the sensor frame + * + * @param pose + * @return true + * @return false + */ inline bool GetPose(Eigen::Affine3d* pose) const { if (pose == nullptr) { AERROR << "pose is not available"; @@ -65,26 +92,61 @@ class SensorFrame { return true; } + /** + * @brief Get the Foreground Objects object + * + * @return std::vector& + */ inline std::vector& GetForegroundObjects() { return foreground_objects_; } + /** + * @brief Get the Foreground Objects object + * + * @return const std::vector& + */ inline const std::vector& GetForegroundObjects() const { return foreground_objects_; } + /** + * @brief Get the Background Objects object + * + * @return std::vector& + */ inline std::vector& GetBackgroundObjects() { return background_objects_; } + /** + * @brief Get the Background Objects object + * + * @return const std::vector& + */ inline const std::vector& GetBackgroundObjects() const { return background_objects_; } + /** + * @brief Get the sensor id + * + * @return std::string + */ std::string GetSensorId() const; + /** + * @brief Get the sensor type + * + * @return base::SensorType + */ base::SensorType GetSensorType() const; + /** + * @brief Get sensor frame header + * + * @return SensorFrameHeaderConstPtr + */ SensorFrameHeaderConstPtr GetHeader() const { return header_; } private: diff --git a/modules/perception/multi_sensor_fusion/base/track.h b/modules/perception/multi_sensor_fusion/base/track.h index 90a5706c801..5b9b7b8193b 100644 --- a/modules/perception/multi_sensor_fusion/base/track.h +++ b/modules/perception/multi_sensor_fusion/base/track.h @@ -34,98 +34,337 @@ class Track { Track(); virtual ~Track() = default; - // static members initialization + /** + * @brief Set the max lidar invisible period + * + * @param period + */ inline static void SetMaxLidarInvisiblePeriod(double period) { s_max_lidar_invisible_period_ = period; } + + /** + * @brief Set the max radar invisible period + * + * @param period + */ inline static void SetMaxRadarInvisiblePeriod(double period) { s_max_radar_invisible_period_ = period; } + + /** + * @brief Set the max camera invisible period + * + * @param period + */ inline static void SetMaxCameraInvisiblePeriod(double period) { s_max_camera_invisible_period_ = period; } + /** + * @brief Initialize + * + * @param obj + * @param is_background + * @return true + * @return false + */ bool Initialize(SensorObjectPtr obj, bool is_background = false); void Reset(); + /** + * @brief Get the sensor object object + * + * @param sensor_id + * @return SensorObjectConstPtr + */ SensorObjectConstPtr GetSensorObject(const std::string& sensor_id) const; + + /** + * @brief Get the latest lidar object object + * + * @return SensorObjectConstPtr + */ SensorObjectConstPtr GetLatestLidarObject() const; + + /** + * @brief Get the latest radar object object + * + * @return SensorObjectConstPtr + */ SensorObjectConstPtr GetLatestRadarObject() const; + + /** + * @brief Get the latest camera object object + * + * @return SensorObjectConstPtr + */ SensorObjectConstPtr GetLatestCameraObject() const; + /** + * @brief Get the fused object object + * + * @return FusedObjectPtr + */ inline FusedObjectPtr GetFusedObject() { return fused_object_; } + + /** + * @brief Get the lidar objects object + * + * @return SensorId2ObjectMap& + */ inline SensorId2ObjectMap& GetLidarObjects() { return lidar_objects_; } + /** + * @brief Get the lidar objects object + * + * @return const SensorId2ObjectMap& + */ inline const SensorId2ObjectMap& GetLidarObjects() const { return lidar_objects_; } + /** + * @brief Get the radar objects object + * + * @return SensorId2ObjectMap& + */ inline SensorId2ObjectMap& GetRadarObjects() { return radar_objects_; } + /** + * @brief Get the radar objects object + * + * @return const SensorId2ObjectMap& + */ inline const SensorId2ObjectMap& GetRadarObjects() const { return radar_objects_; } + /** + * @brief Get the camera objects object + * + * @return SensorId2ObjectMap& + */ inline SensorId2ObjectMap& GetCameraObjects() { return camera_objects_; } + /** + * @brief Get the camera objects object + * + * @return const SensorId2ObjectMap& + */ inline const SensorId2ObjectMap& GetCameraObjects() const { return camera_objects_; } + /** + * @brief Get the track id + * + * @return int + */ inline int GetTrackId() const { return fused_object_->GetBaseObject()->track_id; } + /** + * @brief Get the tracking period + * + * @return double + */ inline double GetTrackingPeriod() const { return tracking_period_; } + /** + * @brief Get the tracked times + * + * @return size_t + */ inline size_t GetTrackedTimes() const { return tracked_times_; } + /** + * @brief Add the tracked times + * + */ inline void AddTrackedTimes() { ++tracked_times_; } + /** + * @brief Get the Existence Prob object + * + * @return double + */ inline double GetExistenceProb() const { return existence_prob_; } + /** + * @brief Set the Existence Prob object + * + * @param prob + */ inline void SetExistenceProb(double prob) { existence_prob_ = prob; } + /** + * @brief Get the Toic Prob object + * + * @return double + */ inline double GetToicProb() const { return toic_prob_; } + /** + * @brief Set the Toic Prob object + * + * @param prob + */ inline void SetToicProb(double prob) { toic_prob_ = prob; } + + /** + * @brief Is background + * + * @return true + * @return false + */ inline bool IsBackground() const { return is_background_; } + /** + * @brief Is tracking lost + * + * @return true + * @return false + */ inline bool IsAlive() const { return is_alive_; } + /** + * @brief Is visible + * + * @param sensor_id + * @return true + * @return false + */ bool IsVisible(const std::string& sensor_id) const; + + /** + * @brief Is lidar visible + * + * @return true + * @return false + */ bool IsLidarVisible() const; + + /** + * @brief Is radar visible + * + * @return true + * @return false + */ bool IsRadarVisible() const; + + /** + * @brief Is camera visible + * + * @return true + * @return false + */ bool IsCameraVisible() const; + /** + * @brief Generate new track id + * + * @return size_t + */ static size_t GenerateNewTrackId(); + /** + * @brief Update by SensorObject + * + * @param obj + */ void UpdateWithSensorObject(const SensorObjectPtr& obj); + /** + * @brief Update without SensorObject + * + * @param sensor_id + * @param measurement_timestamp + */ void UpdateWithoutSensorObject(const std::string& sensor_id, double measurement_timestamp); + /** + * @brief Debug information + * + * @return std::string + */ std::string DebugString() const; protected: - // update state + /** + * @brief Update supplement state + * + * @param src_object + */ void UpdateSupplementState(const SensorObjectPtr& src_object = nullptr); + + /** + * @brief update no fusion state + * + * @param src_object + */ void UpdateUnfusedState(const SensorObjectPtr& src_object); + /** + * @brief Get the Latest Sensor Object object + * + * @param objects + * @return SensorObjectConstPtr + */ SensorObjectConstPtr GetLatestSensorObject( const SensorId2ObjectMap& objects) const; + + /** + * @brief + * + * @param objects + * @param obj + */ void UpdateSensorObject(SensorId2ObjectMap* objects, const SensorObjectPtr& obj); + + /** + * @brief + * + * @param objects + * @param sensor_id + * @param measurement_timestamp + * @param max_invisible_period + */ void UpdateSensorObjectWithoutMeasurement(SensorId2ObjectMap* objects, const std::string& sensor_id, double measurement_timestamp, double max_invisible_period); + + /** + * @brief + * + * @param objects + * @param sensor_id + * @param measurement_timestamp + * @param max_invisible_period + */ void UpdateSensorObjectWithMeasurement(SensorId2ObjectMap* objects, const std::string& sensor_id, double measurement_timestamp, double max_invisible_period); + + /** + * @brief + * + * @param obj + */ void UpdateWithSensorObjectForBackground(const SensorObjectPtr& obj); + + /** + * @brief + * + * @param sensor_id + * @param measurement_timestamp + */ void UpdateWithoutSensorObjectForBackground(const std::string& sensor_id, double measurement_timestamp); diff --git a/modules/perception/multi_sensor_fusion/common/BUILD b/modules/perception/multi_sensor_fusion/common/BUILD deleted file mode 100644 index 740be42c8b1..00000000000 --- a/modules/perception/multi_sensor_fusion/common/BUILD +++ /dev/null @@ -1,103 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_filter", - hdrs = ["base_filter.h"], - deps = [ - "@eigen", - ], -) - -cc_library( - name = "camera_util", - srcs = ["camera_util.cc"], - hdrs = ["camera_util.h"], - deps = [ - "//modules/perception/common/base:camera", - "//modules/perception/common/algorithm/geometry:common", - "//modules/perception/multi_sensor_fusion/base:sensor", - ], -) - -cc_test( - name = "camera_util_test", - size = "small", - srcs = ["camera_util_test.cc"], - deps = [ - ":camera_util", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/multi_sensor_fusion/base", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "dst_evidence", - srcs = ["dst_evidence.cc"], - hdrs = ["dst_evidence.h"], - deps = [ - "//cyber", - "@boost", - ], -) - -cc_test( - name = "dst_evidence_test", - size = "small", - srcs = ["dst_evidence_test.cc"], - deps = [ - ":dst_evidence", - "//modules/perception/multi_sensor_fusion/base", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "information_filter", - srcs = ["information_filter.cc"], - hdrs = ["information_filter.h"], - deps = [ - ":base_filter", - ], -) - -cc_test( - name = "information_filter_test", - size = "small", - srcs = ["information_filter_test.cc"], - deps = [ - ":information_filter", - "//modules/perception/multi_sensor_fusion/base", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "kalman_filter", - srcs = ["kalman_filter.cc"], - hdrs = ["kalman_filter.h"], - deps = [ - ":base_filter", - "//cyber", - ], -) - -cc_test( - name = "kalman_filter_test", - size = "small", - srcs = ["kalman_filter_test.cc"], - copts = ["-fno-access-control"], - deps = [ - ":kalman_filter", - "//modules/perception/multi_sensor_fusion/base", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/common/base_filter.h b/modules/perception/multi_sensor_fusion/common/base_filter.h index b98809256bb..4fcc190ae07 100644 --- a/modules/perception/multi_sensor_fusion/common/base_filter.h +++ b/modules/perception/multi_sensor_fusion/common/base_filter.h @@ -26,11 +26,18 @@ namespace fusion { // @brief base filter inference class BaseFilter { public: - // @brief constructor + /** + * @brief Construct a new Base Filter object + * + * @param name + */ explicit BaseFilter(const std::string name) : init_(false), name_(name), states_num_(0) {} - // @brief destructor + /** + * @brief Destroy the Base Filter object + * + */ virtual ~BaseFilter() {} // @brief filter initialized diff --git a/modules/perception/multi_sensor_fusion/common/camera_util.h b/modules/perception/multi_sensor_fusion/common/camera_util.h index 2679efd1edb..4bac1a54e04 100644 --- a/modules/perception/multi_sensor_fusion/common/camera_util.h +++ b/modules/perception/multi_sensor_fusion/common/camera_util.h @@ -35,6 +35,16 @@ void GetObjectEightVertices( std::shared_ptr obj, apollo::common::EigenVector* vertices); +/** + * @brief Is point lies in the frustum + * + * @tparam VectorType + * @param pt point + * @param width + * @param height + * @return true + * @return false + */ template bool IsPtInFrustum(const VectorType& pt, double width, double height) { if (pt[0] < 0 || pt[0] > width || pt[1] < 0 || pt[1] > height) { @@ -43,6 +53,15 @@ bool IsPtInFrustum(const VectorType& pt, double width, double height) { return true; } +/** + * @brief Calculate augmented IOU BBox + * + * @tparam Type + * @param box1 + * @param box2 + * @param augmented_buffer + * @return Type + */ template Type CalculateAugmentedIOUBBox(const base::BBox2D& box1, const base::BBox2D& box2, diff --git a/modules/perception/multi_sensor_fusion/common/dst_evidence.h b/modules/perception/multi_sensor_fusion/common/dst_evidence.h index 2d59d3e8acd..def62fc9d2d 100644 --- a/modules/perception/multi_sensor_fusion/common/dst_evidence.h +++ b/modules/perception/multi_sensor_fusion/common/dst_evidence.h @@ -53,6 +53,7 @@ class DstManager { static DstManager dst_manager; return &dst_manager; } + // brief: app initialization // param [in]: app_name // param [in]: fod_subsets, hypotheses sets @@ -61,23 +62,82 @@ class DstManager { const std::vector& fod_subsets, const std::vector& fod_subset_names = std::vector()); + + /** + * @brief Whether app added + * + * @param app_name + * @return true + * @return false + */ bool IsAppAdded(const std::string& app_name); + /** + * @brief Get the app data ptr object + * + * @param app_name + * @return DstCommonDataPtr + */ DstCommonDataPtr GetAppDataPtr(const std::string& app_name); + + /** + * @brief + * + * @param app_name + * @param fod_subset + * @return size_t + */ size_t FodSubsetToInd(const std::string& app_name, const uint64_t& fod_subset); + + /** + * @brief + * + * @param app_name + * @param ind + * @return uint64_t + */ uint64_t IndToFodSubset(const std::string& app_name, const size_t& ind); private: DstManager() {} + + /** + * @brief + * + * @param dst_data + */ void BuildSubsetsIndMap(DstCommonData* dst_data); - // fod check, put fod in fod_subsets to ensure BBA's validity after - // default construction. + + /** + * @brief fod check, put fod in fod_subsets to ensure BBA's validity after + * default construction. + * @param dst_data + */ void FodCheck(DstCommonData* dst_data); - // compute the cardinality of fod_subset which means counting set bits in - // an integer + + /** + * @brief compute the cardinality of fod_subset which means counting set bits in + * an integer + * @param st_data + */ void ComputeCardinalities(DstCommonData* st_data); + + /** + * @brief + * + * @param dst_data + * @return true + * @return false + */ bool ComputeRelations(DstCommonData* dst_data); + + /** + * @brief + * + * @param fod_subset_names + * @param dst_data + */ void BuildNamesMap(const std::vector& fod_subset_names, DstCommonData* dst_data); @@ -92,36 +152,143 @@ class Dst { public: explicit Dst(const std::string& app_name); - // setter + /** + * @brief Set the Bba Vec object + * + * @param bba_vec + * @return true + * @return false + */ bool SetBbaVec(const std::vector& bba_vec); - // strictly require the fod in bba_map is valid + + /** + * @brief Set the Bba object, strictly require the fod in bba_map is valid + * + * @param bba_map + * @return true + * @return false + */ bool SetBba(const std::map& bba_map); + /** + * @brief + * + */ void ComputeSptPlsUct() const; + + /** + * @brief + * + */ void ComputeProbability() const; - // getter + + /** + * @brief Get the Bba Vec object + * + * @return const std::vector& + */ const std::vector& GetBbaVec() const { return bba_vec_; } + + /** + * @brief Get the Bba Size object + * + * @return const size_t + */ const size_t GetBbaSize() const { return bba_vec_.size(); } + + /** + * @brief Get the Subset Bfmass object + * + * @param fod_subset + * @return double + */ double GetSubsetBfmass(uint64_t fod_subset) const; + + /** + * @brief Get the Ind Bfmass object + * + * @param ind + * @return double + */ double GetIndBfmass(size_t ind) const; + + /** + * @brief Get the Support Vec object + * + * @return const std::vector& + */ const std::vector& GetSupportVec() const { return support_vec_; } + + /** + * @brief Get the Plausibility Vec object + * + * @return const std::vector& + */ const std::vector& GetPlausibilityVec() const { return plausibility_vec_; } + + /** + * @brief Get the Uncertainty Vec object + * + * @return const std::vector& + */ const std::vector& GetUncertaintyVec() const { return uncertainty_vec_; } + + /** + * @brief Get the Probability Vec object + * + * @return const std::vector& + */ const std::vector& GetProbabilityVec() const { return probability_vec_; } + + /** + * @brief + * + * @return std::string + */ std::string PrintBba() const; + /** + * @brief + * + * @param lhs + * @param rhs + * @return Dst + */ friend Dst operator+(const Dst& lhs, const Dst& rhs); + + /** + * @brief + * + * @param dst_evidence + * @param w + * @return Dst + */ friend Dst operator*(const Dst& dst_evidence, double w); + + /** + * @brief + * + * @return std::string + */ std::string Name() const { return app_name_; } private: + /** + * @brief + * + */ void Normalize(); + + /** + * @brief + * + */ void SelfCheck() const; private: diff --git a/modules/perception/multi_sensor_fusion/common/information_filter.h b/modules/perception/multi_sensor_fusion/common/information_filter.h index dde6d283b2f..85b726bee38 100644 --- a/modules/perception/multi_sensor_fusion/common/information_filter.h +++ b/modules/perception/multi_sensor_fusion/common/information_filter.h @@ -26,6 +26,14 @@ class InformationFilter : public BaseFilter { InformationFilter(); ~InformationFilter() = default; + /** + * @brief + * + * @param global_states + * @param global_uncertainty + * @return true + * @return false + */ bool Init(const Eigen::VectorXd &global_states, const Eigen::MatrixXd &global_uncertainty); diff --git a/modules/perception/multi_sensor_fusion/common/kalman_filter.h b/modules/perception/multi_sensor_fusion/common/kalman_filter.h index 8775546255e..d4e5a2605bf 100644 --- a/modules/perception/multi_sensor_fusion/common/kalman_filter.h +++ b/modules/perception/multi_sensor_fusion/common/kalman_filter.h @@ -28,6 +28,14 @@ class KalmanFilter : public BaseFilter { KalmanFilter(); ~KalmanFilter() = default; + /** + * @brief + * + * @param initial_belief_states + * @param initial_uncertainty + * @return true + * @return false + */ bool Init(const Eigen::VectorXd &initial_belief_states, const Eigen::MatrixXd &initial_uncertainty); diff --git a/modules/perception/multi_sensor_fusion/fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_association/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_association/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_association/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/BUILD deleted file mode 100644 index dbbe7b2e15c..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/BUILD +++ /dev/null @@ -1,132 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "chi_squared_cdf", - hdrs = [ - "chi_squared_cdf_1_0.0500_0.999900.h", - "chi_squared_cdf_2_0.0500_0.999900.h", - ], -) - -cc_library( - name = "hm_tracks_objects_match", - srcs = ["hm_tracks_objects_match.cc"], - hdrs = ["hm_tracks_objects_match.h"], - deps = [ - ":track_object_distance", - "//modules/perception/common/algorithm/graph:gated_hungarian_bigraph_matcher", - "//modules/perception/common/algorithm/graph:secure_matrix", - "//modules/perception/multi_sensor_fusion/base:scene", - "//modules/perception/multi_sensor_fusion/interface", - ], - alwayslink = True, -) - -cc_library( - name = "probabilities", - srcs = ["probabilities.cc"], - hdrs = ["probabilities.h"], -) - -cc_library( - name = "projection_cache", - hdrs = ["projection_cache.h"], - deps = [ - "//modules/common/math", - ], -) - -cc_library( - name = "track_object_distance", - srcs = ["track_object_distance.cc"], - hdrs = ["track_object_distance.h"], - deps = [ - ":chi_squared_cdf", - ":probabilities", - ":projection_cache", - ":track_object_similarity", - "//modules/common/util:util_tool", - "//modules/perception/common/base:base_type", - "//modules/perception/common/base:camera", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/algorithm/geometry:camera_homography", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/multi_sensor_fusion/base:fusion_log", - "//modules/perception/multi_sensor_fusion/base:sensor", - "//modules/perception/multi_sensor_fusion/base:sensor_data_manager", - "//modules/perception/multi_sensor_fusion/base:track", - "//modules/perception/multi_sensor_fusion/common:camera_util", - ], -) - -cc_library( - name = "track_object_similarity", - srcs = ["track_object_similarity.cc"], - hdrs = ["track_object_similarity.h"], - deps = [ - ":chi_squared_cdf", - ":probabilities", - ":projection_cache", - "//modules/common/util:util_tool", - "//modules/perception/multi_sensor_fusion/base:fusion_log", - "//modules/perception/multi_sensor_fusion/base:sensor", - "//modules/perception/multi_sensor_fusion/common:camera_util", - ], -) - -cc_test( - name = "hm_data_association_test", - size = "small", - srcs = ["hm_data_association_test.cc"], - deps = [ - ":probabilities", - ":projection_cache", - ":track_object_distance", - ":track_object_similarity", - "//modules/perception/common/base:frame", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/multi_sensor_fusion/base:sensor", - "//modules/perception/multi_sensor_fusion/base:track", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "track_object_distance_test", - size = "small", - srcs = ["track_object_distance_test.cc"], - deps = [ - ":projection_cache", - ":track_object_distance", - ":track_object_similarity", - "//modules/perception/common/base:frame", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/multi_sensor_fusion/base:sensor", - "//modules/perception/multi_sensor_fusion/base:track", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "track_object_test", - size = "small", - srcs = ["track_object_test.cc"], - copts = ["-fno-access-control"], - deps = [ - ":hm_tracks_objects_match", - "//modules/perception/common/base:frame", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/multi_sensor_fusion/base:sensor", - "//modules/perception/multi_sensor_fusion/base:track", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/hm_tracks_objects_match.h b/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/hm_tracks_objects_match.h index d04b8307aea..e5e77459a6a 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/hm_tracks_objects_match.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/hm_tracks_objects_match.h @@ -32,12 +32,30 @@ class HMTrackersObjectsAssociation : public BaseDataAssociation { HMTrackersObjectsAssociation() = default; ~HMTrackersObjectsAssociation() = default; + /** + * @brief initialization + * + * @param options + * @return true + * @return false + */ bool Init(const AssociationInitOptions &options) override { track_object_distance_.set_distance_thresh( static_cast(s_match_distance_thresh_)); return true; } + /** + * @brief Associate the obstacles measured by the sensor with the obstacles + * tracked in current scene + * + * @param options + * @param sensor_measurements obstacles measured by the sensor + * @param scene obstacles tracked in current scene + * @param association_result association result + * @return true + * @return false + */ bool Associate(const AssociationOptions& options, SensorFramePtr sensor_measurements, ScenePtr scene, AssociationResult* association_result) override; @@ -45,6 +63,16 @@ class HMTrackersObjectsAssociation : public BaseDataAssociation { std::string Name() const override { return "HMTrackersObjectsAssociation"; } private: + /** + * @brief Calculate the association distance matrix + * + * @param fusion_tracks + * @param sensor_objects + * @param ref_point + * @param unassigned_tracks + * @param unassigned_measurements + * @param association_mat + */ void ComputeAssociationDistanceMat( const std::vector& fusion_tracks, const std::vector& sensor_objects, @@ -53,6 +81,17 @@ class HMTrackersObjectsAssociation : public BaseDataAssociation { const std::vector& unassigned_measurements, std::vector>* association_mat); + /** + * @brief + * + * @param fusion_tracks + * @param sensor_objects + * @param assignments + * @param unassigned_fusion_tracks + * @param unassigned_sensor_objects + * @param do_nothing + * @param post + */ void IdAssign(const std::vector& fusion_tracks, const std::vector& sensor_objects, std::vector* assignments, @@ -60,12 +99,33 @@ class HMTrackersObjectsAssociation : public BaseDataAssociation { std::vector* unassigned_sensor_objects, bool do_nothing = false, bool post = false); + /** + * @brief + * + * @param fusion_tracks + * @param sensor_objects + * @param unassigned_fusion_tracks + * @param unassigned_sensor_objects + * @param post_assignments + */ void PostIdAssign(const std::vector& fusion_tracks, const std::vector& sensor_objects, const std::vector& unassigned_fusion_tracks, const std::vector& unassigned_sensor_objects, std::vector* post_assignments); + /** + * @brief + * + * @param association_mat + * @param track_ind_l2g + * @param measurement_ind_l2g + * @param assignments + * @param unassigned_tracks + * @param unassigned_measurements + * @return true + * @return false + */ bool MinimizeAssignment( const std::vector>& association_mat, const std::vector& track_ind_l2g, @@ -74,6 +134,18 @@ class HMTrackersObjectsAssociation : public BaseDataAssociation { std::vector* unassigned_tracks, std::vector* unassigned_measurements); + /** + * @brief calculate distance + * + * @param fusion_tracks + * @param sensor_objects + * @param unassigned_fusion_track + * @param track_ind_g2l + * @param measurement_ind_g2l + * @param measurement_ind_l2g + * @param association_mat + * @param association_result + */ void ComputeDistance(const std::vector& fusion_tracks, const std::vector& sensor_objects, const std::vector& unassigned_fusion_track, @@ -83,6 +155,15 @@ class HMTrackersObjectsAssociation : public BaseDataAssociation { const std::vector>& association_mat, AssociationResult* association_result); + /** + * @brief Generate unmatched data + * + * @param track_num + * @param objects_num + * @param assignments + * @param unassigned_tracks + * @param unassigned_objects + */ void GenerateUnassignedData( size_t track_num, size_t objects_num, const std::vector& assignments, @@ -90,10 +171,16 @@ class HMTrackersObjectsAssociation : public BaseDataAssociation { std::vector* unassigned_objects); private: + /// @brief gated hungarian matcher algorithm::GatedHungarianMatcher optimizer_; + + /// @brief TrackObjectDistance TrackObjectDistance track_object_distance_; + /// @brief match distance thresh static double s_match_distance_thresh_; + /// @brief match distance bound static double s_match_distance_bound_; + /// @brief association center dist threshold static double s_association_center_dist_threshold_; DISALLOW_COPY_AND_ASSIGN(HMTrackersObjectsAssociation); diff --git a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_distance.h b/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_distance.h index 62384b9f3d0..bf562847360 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_distance.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_distance.h @@ -47,9 +47,21 @@ class TrackObjectDistance { TrackObjectDistance() = default; ~TrackObjectDistance() = default; + /** + * @brief Set the distance thresh + * + * @param distance_thresh + */ void set_distance_thresh(const float distance_thresh) { distance_thresh_ = distance_thresh; } + + /** + * @brief + * + * @param sensor_id + * @param timestamp + */ void ResetProjectionCache(std::string sensor_id, double timestamp) { projection_cache_.Reset(sensor_id, timestamp); } diff --git a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_similarity.h b/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_similarity.h index f0fe9320e33..16c0d92e6db 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_similarity.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association/track_object_similarity.h @@ -85,7 +85,7 @@ double ComputePtsBoxShapeSimilarity(const ProjectionCachePtr& cache, double ComputePtsBoxSimilarity(const ProjectionCachePtr& cache, const ProjectionCacheObject* object, const base::BBox2DF& camera_bbox); -// @brief: calculate the x/y/h/w/3d similarity between radar and camera +// @brief: calculate the x similarity between radar and camera // @return the similarity which belongs to [0, 1]. // @key idea: // 1. compute the difference on x/y/h/w/3d @@ -95,23 +95,68 @@ double ComputeRadarCameraXSimilarity(const double velo_ct_x, const double camera_ct_x, const double size_x, const XSimilarityParams& params); +/** + * @brief calculate the y similarity between radar and camera + * + * @param velo_ct_y + * @param camera_ct_y + * @param size_y + * @param params + * @return double + */ double ComputeRadarCameraYSimilarity(const double velo_ct_y, const double camera_ct_y, const double size_y, const YSimilarityParams& params); +/** + * @brief calculate the h similarity between radar and camera + * + * @param radar + * @param camera + * @param size_y + * @param radar_box2d_vertices + * @param params + * @return double + */ double ComputeRadarCameraHSimilarity( const SensorObjectConstPtr& radar, const SensorObjectConstPtr& camera, const double size_y, const EigenVector& radar_box2d_vertices, const HSimilarityParams& params); +/** + * @brief calculate the w similarity between radar and camera + * + * @param radar + * @param width + * @param size_x + * @param radar_box2d_vertices + * @param params + * @return double + */ double ComputeRadarCameraWSimilarity( const SensorObjectConstPtr& radar, const double width, const double size_x, const EigenVector& radar_box2d_vertices, const WSimilarityParams& params); +/** + * @brief calculate the loc similarity between radar and camera + * + * @param radar_ct + * @param camera + * @param world2camera_pose + * @param params + * @return double + */ double ComputeRadarCameraLocSimilarity(const Eigen::Vector3d& radar_ct, const SensorObjectConstPtr& camera, const Eigen::Matrix4d& world2camera_pose, const LocSimilarityParams& params); +/** + * @brief calculate the velocity similarity between radar and camera + * + * @param radar + * @param camera + * @return double + */ double ComputeRadarCameraVelocitySimilarity(const SensorObjectConstPtr& radar, const SensorObjectConstPtr& camera); diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion/BUILD deleted file mode 100644 index dacffd8b8ab..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "dst_existence_fusion", - srcs = ["dst_existence_fusion.cc"], - hdrs = ["dst_existence_fusion.h"], - deps = [ - "//modules/common/util", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/lib/registerer", - "//modules/perception/multi_sensor_fusion/base", - "//modules/perception/multi_sensor_fusion/common:camera_util", - "//modules/perception/multi_sensor_fusion/common:dst_evidence", - "//modules/perception/multi_sensor_fusion/interface", - "//modules/perception/multi_sensor_fusion/proto:dst_existence_fusion_config_cc_proto", - ], -) - -cc_test( - name = "dst_existence_fusion_test", - size = "small", - srcs = ["dst_existence_fusion_test.cc"], - deps = [ - ":dst_existence_fusion", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion/dst_existence_fusion.h b/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion/dst_existence_fusion.h index 6cbde7e9fce..e7f727adf75 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion/dst_existence_fusion.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion/dst_existence_fusion.h @@ -54,7 +54,13 @@ class DstExistenceFusion : public BaseExistenceFusion { explicit DstExistenceFusion(TrackPtr track); ~DstExistenceFusion() = default; - // @brief: add dst application + /** + * @brief add dst application + * + * @param options + * @return true + * @return false + */ static bool Init(const ExistenceFusionInitOptions &options); // @brief: update track state with measurement @@ -63,31 +69,99 @@ class DstExistenceFusion : public BaseExistenceFusion { void UpdateWithMeasurement(const SensorObjectPtr measurement, double target_timestamp, double match_dist) override; - + /** + * @brief update track state without measurement + * + * @param sensor_id + * @param measurement_timestamp + * @param target_timestamp + * @param min_match_dist + */ void UpdateWithoutMeasurement(const std::string &sensor_id, double measurement_timestamp, double target_timestamp, double min_match_dist) override; std::string Name() const; + + /** + * @brief Get toic score + * + * @return double + */ double GetToicScore() const { return toic_score_; } + + /** + * @brief Get existence probability + * + * @return double + */ double GetExistenceProbability() const; private: + /** + * @brief Update toic with camera measurement + * + * @param camera_obj + * @param match_dist + */ void UpdateToicWithCameraMeasurement(const SensorObjectPtr &camera_obj, double match_dist); + + /** + * @brief Update toic without camera measurement + * + * @param sensor_id + * @param measurement_timestamp + * @param match_dist + */ void UpdateToicWithoutCameraMeasurement(const std::string &sensor_id, double measurement_timestamp, double match_dist); + /** + * @brief compute distance decay + * + * @param obj + * @param sensor_id + * @param timestamp + * @return double + */ double ComputeDistDecay(base::ObjectConstPtr obj, const std::string &sensor_id, double timestamp); + + /** + * @brief Compute feature influence + * + * @param measurement + * @return double + */ double ComputeFeatureInfluence(const SensorObjectPtr measurement); + + /** + * @brief Get exist reliability + * + * @param measurement + * @return double + */ double GetExistReliability(const SensorObjectPtr measurement); + + /** + * @brief Get unexist reliability + * + * @param sensor_id + * @return double + */ double GetUnexistReliability(const std::string &sensor_id); + + /** + * @brief Get toic probability + * + * @return double + */ double GetToicProbability() const; - // Update state + /// @brief update existence state void UpdateExistenceState(); private: diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion/BUILD deleted file mode 100644 index a34bb0ca9c3..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "kalman_motion_fusion", - srcs = ["kalman_motion_fusion.cc"], - hdrs = ["kalman_motion_fusion.h"], - deps = [ - "//modules/common/util:util_tool", - "//modules/perception/common/base", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/algorithm/geometry:basic", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/multi_sensor_fusion/base", - "//modules/perception/multi_sensor_fusion/common:base_filter", - "//modules/perception/multi_sensor_fusion/common:kalman_filter", - "//modules/perception/multi_sensor_fusion/interface", - "//modules/perception/common/lib/registerer", - ], -) - -# todo(zero): need fix -# cc_test( -# name = "kalman_motion_fusion_test", -# size = "small", -# srcs = ["kalman_motion_fusion_test.cc"], -# deps = [ -# ":kalman_motion_fusion", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion/kalman_motion_fusion.h b/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion/kalman_motion_fusion.h index 364d56350c0..112525b24c8 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion/kalman_motion_fusion.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion/kalman_motion_fusion.h @@ -52,6 +52,12 @@ class KalmanMotionFusion : public BaseMotionFusion { std::string Name() const override { return "KalmamnMotionFusion"; } + /** + * @brief Get states + * + * @param anchor_point + * @param velocity + */ void GetStates(Eigen::Vector3d* anchor_point, Eigen::Vector3d* velocity); private: @@ -61,7 +67,7 @@ class KalmanMotionFusion : public BaseMotionFusion { void MotionFusionWithMeasurement(const SensorObjectConstPtr& measurement, double time_diff); - // Update state + /// @brief Update state void UpdateMotionState(); // @brief We use the history sensor information diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion/BUILD deleted file mode 100644 index e253112fa66..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion/BUILD +++ /dev/null @@ -1,33 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "pbf_shape_fusion", - srcs = ["pbf_shape_fusion.cc"], - hdrs = ["pbf_shape_fusion.h"], - deps = [ - "//modules/perception/multi_sensor_fusion/base:scene", - "//modules/perception/multi_sensor_fusion/base:sensor_data_manager", - "//modules/perception/multi_sensor_fusion/base:track", - "//modules/perception/multi_sensor_fusion/interface", - ], -) - -cc_test( - name = "pbf_shape_fusion_test", - size = "small", - srcs = ["pbf_shape_fusion_test.cc"], - deps = [ - ":pbf_shape_fusion", - "//modules/perception/common/base:base_type", - "//modules/perception/common/base:frame", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion/pbf_shape_fusion.h b/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion/pbf_shape_fusion.h index 02f42eee590..410685b5539 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion/pbf_shape_fusion.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion/pbf_shape_fusion.h @@ -31,23 +31,63 @@ class PbfShapeFusion : public BaseShapeFusion { explicit PbfShapeFusion(TrackPtr track) : BaseShapeFusion(track) {} virtual ~PbfShapeFusion() = default; + /** + * @brief + * + * @return true + * @return false + */ bool Init() override; + /** + * @brief Update with measurement + * + * @param measurement + * @param target_timestamp + */ void UpdateWithMeasurement(const SensorObjectPtr measurement, double target_timestamp) override; + /** + * @brief Update without measurement + * + * @param sensor_id + * @param measurement_timestamp + * @param target_timestamp + */ void UpdateWithoutMeasurement(const std::string& sensor_id, double measurement_timestamp, double target_timestamp) override; std::string Name() const override; + /** + * @brief Get the Track object + * + * @return TrackPtr + */ inline TrackPtr GetTrack() { return track_ref_; } private: - // Update state + /** + * @brief Update state + * + * @param measurement + */ void UpdateState(const SensorObjectConstPtr& measurement); + + /** + * @brief Update shape + * + * @param measurement + */ void UpdateShape(const SensorObjectConstPtr& measurement); + + /** + * @brief Update center + * + * @param measurement + */ void UpdateCenter(const SensorObjectConstPtr& measurement); static bool s_use_camera_3d_; diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker/BUILD deleted file mode 100644 index e995c342a07..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "pbf_tracker", - srcs = ["pbf_tracker.cc"], - hdrs = ["pbf_tracker.h"], - deps = [ - "//modules/common/util:util_tool", - "//modules/perception/common:util", - "//modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion", - "//modules/perception/multi_sensor_fusion/fusion/data_fusion/motion_fusion/kalman_motion_fusion", - "//modules/perception/multi_sensor_fusion/fusion/data_fusion/shape_fusion/pbf_shape_fusion", - "//modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion", - "//modules/perception/multi_sensor_fusion/interface", - "//modules/perception/multi_sensor_fusion/proto:pbf_tracker_config_cc_proto", - ], -) - -cc_test( - name = "pbf_tracker_test", - size = "small", - srcs = ["pbf_tracker_test.cc"], - copts = ["-fno-access-control"], - deps = [ - ":pbf_tracker", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker/pbf_tracker.h b/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker/pbf_tracker.h index aaae2940826..ba39db2bb7d 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker/pbf_tracker.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker/pbf_tracker.h @@ -36,14 +36,44 @@ class PbfTracker : public BaseTracker { PbfTracker() = default; virtual ~PbfTracker() = default; + /** + * @brief Init params + * + * @param options + * @return true + * @return false + */ static bool InitParams(const TrackerInitOptions &options); + /** + * @brief Init + * + * @param track + * @param measurement + * @return true + * @return false + */ bool Init(TrackPtr track, SensorObjectPtr measurement) override; + /** + * @brief Update with measurement + * + * @param options + * @param measurement + * @param target_timestamp + */ void UpdateWithMeasurement(const TrackerOptions& options, const SensorObjectPtr measurement, double target_timestamp) override; + /** + * @brief Update without measurement + * + * @param options + * @param sensor_id + * @param measurement_timestamp + * @param target_timestamp + */ void UpdateWithoutMeasurement(const TrackerOptions& options, const std::string& sensor_id, double measurement_timestamp, @@ -52,6 +82,12 @@ class PbfTracker : public BaseTracker { std::string Name() const override { return "PbfTracker"; } protected: + /** + * @brief Init fusion methods + * + * @return true + * @return false + */ bool InitMethods(); protected: diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion/BUILD deleted file mode 100644 index e3a086826c0..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion/BUILD +++ /dev/null @@ -1,40 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "dst_type_fusion", - srcs = ["dst_type_fusion.cc"], - hdrs = ["dst_type_fusion.h"], - deps = [ - "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/multi_sensor_fusion/base:scene", - "//modules/perception/multi_sensor_fusion/base:sensor_data_manager", - "//modules/perception/multi_sensor_fusion/base:track", - "//modules/perception/multi_sensor_fusion/common:camera_util", - "//modules/perception/multi_sensor_fusion/common:dst_evidence", - "//modules/perception/multi_sensor_fusion/interface", - "//modules/perception/multi_sensor_fusion/proto:dst_type_fusion_config_cc_proto", - "@com_google_absl//:absl", - ], -) - -cc_test( - name = "dst_type_fusion_test", - size = "small", - srcs = ["dst_type_fusion_test.cc"], - deps = [ - ":dst_type_fusion", - "//modules/perception/common/base:base_type", - "//modules/perception/common/base:frame", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion/dst_type_fusion.h b/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion/dst_type_fusion.h index 0556edfd9db..9036965414e 100644 --- a/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion/dst_type_fusion.h +++ b/modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion/dst_type_fusion.h @@ -114,6 +114,14 @@ class DstTypeFusion : public BaseTypeFusion { void UpdateWithMeasurement(const SensorObjectPtr measurement, double target_timestamp) override; + /** + * @brief update track state without measurement + * + * @param sensor_id + * @param measurement_timestamp + * @param target_timestamp + * @param min_match_dist + */ void UpdateWithoutMeasurement(const std::string &sensor_id, double measurement_timestamp, double target_timestamp, @@ -122,14 +130,53 @@ class DstTypeFusion : public BaseTypeFusion { std::string Name() const; private: + /** + * @brief + * + * @param object_type + * @param hypothesis_type + * @return true + * @return false + */ bool TypToHyp(size_t object_type, uint64_t *hypothesis_type) const; + + /** + * @brief + * + * @param hypothesis_type + * @param object_type + * @return true + * @return false + */ bool HypToTyp(uint64_t hypothesis_type, size_t *object_type) const; + + /** + * @brief Convert TypeProbs to distances + * + * @param type_probs + * @return Dst + */ Dst TypeProbsToDst(const std::vector &type_probs); + + /** + * @brief Get reliability + * + * @param sensor_id + * @return double + */ double GetReliability(const std::string &sensor_id) const; + + /** + * @brief Get reliability for unknown + * + * @param sensor_id + * @param measurement_timestamp + * @return double + */ double GetReliabilityForUnKnown(const std::string &sensor_id, double measurement_timestamp) const; - // Update state + /// @brief Update type state void UpdateTypeState(); private: diff --git a/modules/perception/multi_sensor_fusion/fusion/dummy/BUILD b/modules/perception/multi_sensor_fusion/fusion/dummy/BUILD deleted file mode 100644 index 2880d2b3023..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/dummy/BUILD +++ /dev/null @@ -1,33 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "dummy_algorithms", - srcs = ["dummy_algorithms.cc"], - hdrs = ["dummy_algorithms.h"], - deps = [ - "//cyber", - "//modules/perception/multi_sensor_fusion/base", - "//modules/perception/multi_sensor_fusion/interface", - "//modules/perception/multi_sensor_fusion/interface:base_fusion_system", - "@eigen", - ], - alwayslink = True, -) - -cc_test( - name = "dummy_algorithms_test", - size = "small", - srcs = ["dummy_algorithms_test.cc"], - deps = [ - ":dummy_algorithms", - "@com_google_googletest//:gtest_main", - "//modules/perception/multi_sensor_fusion/interface:base_fusion_system", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/fusion_system/BUILD b/modules/perception/multi_sensor_fusion/fusion/fusion_system/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/fusion_system/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion/BUILD b/modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion/BUILD deleted file mode 100644 index 31438313920..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion/BUILD +++ /dev/null @@ -1,53 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "probabilistic_fusion", - srcs = ["probabilistic_fusion.cc"], - hdrs = ["probabilistic_fusion.h"], - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/common/util", - "//modules/perception/common:perception_gflags", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/graph", - "//modules/perception/common/base", - "//modules/perception/common/lib/thread", - "//modules/perception/multi_sensor_fusion/base", - "//modules/perception/multi_sensor_fusion/common:camera_util", - "//modules/perception/multi_sensor_fusion/common:dst_evidence", - "//modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association:chi_squared_cdf", - "//modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association:hm_tracks_objects_match", - "//modules/perception/multi_sensor_fusion/fusion/data_association/hm_data_association:track_object_distance", - "//modules/perception/multi_sensor_fusion/fusion/data_fusion/existence_fusion/dst_existence_fusion", - "//modules/perception/multi_sensor_fusion/fusion/data_fusion/tracker/pbf_tracker", - "//modules/perception/multi_sensor_fusion/fusion/data_fusion/type_fusion/dst_type_fusion", - "//modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper", - "//modules/perception/multi_sensor_fusion/interface:base_fusion_system", - "//modules/perception/multi_sensor_fusion/interface", - "//modules/perception/multi_sensor_fusion/proto:probabilistic_fusion_config_cc_proto", - "@eigen", - ], - alwayslink = True, -) - -# ignore temporarily TODO:// need fix logic - -# cc_test( -# name = "probabilistic_fusion_test", -# size = "small", -# srcs = ["probabilistic_fusion_test.cc"], -# copts = ["-fno-access-control"], -# deps = [ -# ":probabilistic_fusion", -# "@com_google_googletest//:gtest_main", -# ], -# linkstatic = True, -# ) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion/probabilistic_fusion.h b/modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion/probabilistic_fusion.h index b27e0140c89..6bca699dd0a 100644 --- a/modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion/probabilistic_fusion.h +++ b/modules/perception/multi_sensor_fusion/fusion/fusion_system/probabilistic_fusion/probabilistic_fusion.h @@ -45,39 +45,117 @@ class ProbabilisticFusion : public BaseFusionSystem { ProbabilisticFusion() = default; ~ProbabilisticFusion() = default; + /** + * @brief Initialization + * + * @param options + * @return true + * @return false + */ bool Init(const FusionInitOptions& options) override; + /** + * @brief Probabilistic fusion of sensor data, the input is the detection + * results of different sensors, and the output is the result after fusion + * + * @param sensor_frame sensor data + * @param fused_objects objects after fusion + * @return true + * @return false + */ bool Fuse(const base::FrameConstPtr& sensor_frame, std::vector* fused_objects) override; std::string Name() const override { return "ProbabilisticFusion"; } private: + /** + * @brief Determine whether to send message, if it's the message from + * the main sensor, it will be publish + * + * @param sensor_frame + * @return true + * @return false + */ bool IsPublishSensor(const base::FrameConstPtr& sensor_frame) const; + /** + * @brief Fusion SensorFrame + * + * @param frame + */ void FuseFrame(const SensorFramePtr& frame); + /** + * @brief Collect the fused objects + * + * @param timestamp + * @param fused_objects + */ void CollectFusedObjects(double timestamp, std::vector* fused_objects); + /** + * @brief Fuse foreground track + * + * @param frame + */ void FuseForegroundTrack(const SensorFramePtr& frame); + + /** + * @brief Fuse background track + * + * @param frame + */ void FusebackgroundTrack(const SensorFramePtr& frame); + /// @brief delete lost tracker void RemoveLostTrack(); + /** + * @brief Update assigned tracks + * + * @param frame + * @param assignments + */ void UpdateAssignedTracks( const SensorFramePtr& frame, const std::vector& assignments); + /** + * @brief Update unassigned tracks + * + * @param frame + * @param unassigned_track_inds + */ void UpdateUnassignedTracks(const SensorFramePtr& frame, const std::vector& unassigned_track_inds); + /** + * @brief Create new tracks + * + * @param frame + * @param unassigned_obj_inds + */ void CreateNewTracks(const SensorFramePtr& frame, const std::vector& unassigned_obj_inds); + /** + * @brief Collect objects by track + * + * @param timestamp + * @param track + * @param fused_objects + */ void CollectObjectsByTrack(double timestamp, const TrackPtr& track, std::vector* fused_objects); + /** + * @brief Collect sensor measurement from object + * + * @param object + * @param measurement + */ void CollectSensorMeasurementFromObject( const SensorObjectConstPtr& object, base::SensorObjectMeasurement* measurement); diff --git a/modules/perception/multi_sensor_fusion/fusion/gatekeeper/BUILD b/modules/perception/multi_sensor_fusion/fusion/gatekeeper/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/gatekeeper/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper/BUILD b/modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper/BUILD deleted file mode 100644 index 33fe2cecc25..00000000000 --- a/modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "pbf_gatekeeper", - srcs = ["pbf_gatekeeper.cc"], - hdrs = ["pbf_gatekeeper.h"], - deps = [ - "//modules/common/util", - "//modules/perception/common:util", - "//modules/perception/multi_sensor_fusion/base:scene", - "//modules/perception/multi_sensor_fusion/base:track", - "//modules/perception/multi_sensor_fusion/proto:pbf_gatekeeper_config_cc_proto", - "//modules/perception/multi_sensor_fusion/interface", - ], - alwayslink = True, -) - -# todo(zero) -# cc_test( -# name = "pbf_gatekeeper_test", -# size = "small", -# srcs = ["pbf_gatekeeper_test.cc"], -# deps = [ -# ":pbf_gatekeeper", -# "//modules/perception/common/sensor_manager", -# "//modules/perception/fusion/base:sensor", -# "//modules/perception/fusion/base:track", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper/pbf_gatekeeper.h b/modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper/pbf_gatekeeper.h index 00b2f881950..1b438d17bde 100644 --- a/modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper/pbf_gatekeeper.h +++ b/modules/perception/multi_sensor_fusion/fusion/gatekeeper/pbf_gatekeeper/pbf_gatekeeper.h @@ -47,15 +47,54 @@ class PbfGatekeeper : public BaseGatekeeper { PbfGatekeeper(); ~PbfGatekeeper(); + /** + * @brief Initialize + * + * @param options + * @return true + * @return false + */ bool Init(const GatekeeperInitOptions &options) override; + /** + * @brief whether able to publish + * + * @param track + * @return true + * @return false + */ bool AbleToPublish(const TrackPtr& track) override; std::string Name() const override { return "PbfGatekeeper"; } private: + /** + * @brief whether lidar able to publish + * + * @param track + * @return true + * @return false + */ bool LidarAbleToPublish(const TrackPtr& track); + + /** + * @brief whether radar able to publish + * + * @param track + * @param is_night + * @return true + * @return false + */ bool RadarAbleToPublish(const TrackPtr& track, bool is_night); + + /** + * @brief whether camera able to publish + * + * @param track + * @param is_night + * @return true + * @return false + */ bool CameraAbleToPublish(const TrackPtr& track, bool is_night); PbfGatekeeperParams params_; diff --git a/modules/perception/multi_sensor_fusion/interface/BUILD b/modules/perception/multi_sensor_fusion/interface/BUILD deleted file mode 100644 index aa4b40d0f70..00000000000 --- a/modules/perception/multi_sensor_fusion/interface/BUILD +++ /dev/null @@ -1,40 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "interface", - hdrs = [ - "base_data_association.h", - "base_existence_fusion.h", - "base_gatekeeper.h", - "base_motion_fusion.h", - "base_shape_fusion.h", - "base_tracker.h", - "base_type_fusion.h", - ], - deps = [ - "//cyber", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - "//modules/perception/multi_sensor_fusion/base:base_forward_declaration", - "//modules/perception/multi_sensor_fusion/base:sensor", - ], -) - -cc_library( - name = "base_fusion_system", - hdrs = ["base_fusion_system.h"], - deps = [ - "//cyber", - "//modules/perception/common/base:frame", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - "//modules/perception/multi_sensor_fusion/base", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/pointcloud_ground_detection/BUILD b/modules/perception/pointcloud_ground_detection/BUILD index 89b73a55939..c95beca863b 100644 --- a/modules/perception/pointcloud_ground_detection/BUILD +++ b/modules/perception/pointcloud_ground_detection/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -14,30 +13,82 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libpointcloud_ground_detection_component.so", - linkshared = True, - linkstatic = True, - deps = [":pointcloud_ground_detection_component_lib"], +apollo_cc_library( + name = "apollo_perception_pointcloud_ground_detection", + srcs = [ + "ground_detector/ground_service_detector/ground_service_detector.cc", + "ground_detector/spatio_temporal_ground_detector/spatio_temporal_ground_detector.cc", + ], + hdrs = [ + "ground_detector/ground_service_detector/ground_service_detector.h", + "ground_detector/spatio_temporal_ground_detector/spatio_temporal_ground_detector.h", + "interface/base_ground_detector.h", + ], + copts = select( + { + "@platforms//cpu:x86_64": ["-msse4.1"], + "@platforms//cpu:aarch64": ["-march=armv8-a+fp+simd+crc"], + }, + no_match_error = "Please Build with an ARM or Linux x86_64 platform", + ), + deps = [ + "//cyber", + "//modules/common/util:common_util", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/proto:perception_config_schema_cc_proto", + "//modules/perception/pointcloud_ground_detection/ground_detector/proto:ground_service_detector_config_cc_proto", + "//modules/perception/pointcloud_ground_detection/ground_detector/proto:spatio_temporal_ground_detector_config_cc_proto", + "//modules/perception/pointcloud_ground_detection/proto:pointcloud_ground_detection_component_config_cc_proto", + "@eigen", + ], ) -cc_library( - name = "pointcloud_ground_detection_component_lib", +apollo_component( + name = "libpointcloud_ground_detection_component.so", srcs = ["pointcloud_ground_detection_component.cc"], hdrs = ["pointcloud_ground_detection_component.h"], copts = PERCEPTION_COPTS + if_profiler(), linkopts = ["-lleveldb"], deps = [ "//cyber", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ":apollo_perception_pointcloud_ground_detection", "//modules/perception/pointcloud_ground_detection/proto:pointcloud_ground_detection_component_config_cc_proto", - "//modules/perception/pointcloud_ground_detection/ground_detector/spatio_temporal_ground_detector:spatio_temporal_ground_detector", ], - alwayslink = True, ) +# apollo_cc_test( +# name = "ground_service_detector_test", +# size = "small", +# srcs = ["ground_detector/ground_service_detector/ground_service_detector_test.cc"], +# deps = [ +# ":apollo_perception_pointcloud_ground_detection", +# "//modules/perception/common:perception_gflags", +# "//modules/perception/common/algorithm:apollo_perception_common_algorithm", +# "@com_google_googletest//:gtest_main", +# ], +# ) + +# apollo_cc_test( +# name = "spatio_temporal_ground_detector_test", +# size = "small", +# srcs = ["ground_detector/spatio_temporal_ground_detector/spatio_temporal_ground_detector_test.cc"], +# copts = ["-msse4.1"], +# deps = [ +# ":apollo_perception_pointcloud_ground_detection", +# "@com_google_googletest//:gtest_main", +# "@local_config_pcl//:pcl", +# ], +# ) + apollo_package() + cpplint() diff --git a/modules/perception/pointcloud_ground_detection/README.md b/modules/perception/pointcloud_ground_detection/README.md index e69de29bb2d..240d5ed7c43 100644 --- a/modules/perception/pointcloud_ground_detection/README.md +++ b/modules/perception/pointcloud_ground_detection/README.md @@ -0,0 +1,56 @@ +# Module Name +pointcloud_ground_detection + +# Introduction +Point cloud ground detection, detecting ground point, and saving indices of all non ground points. + +# Directory Structure +``` +├── pointcloud_ground_detection // ground point detection component + ├── conf // configuration folder + ├── dag // module startup file + ├── data // module configuration parameters + ├── ground_detector // ground detection method + ├── launch // launch file + ├── interface // ground detection interface + ├── proto // ground detection module configuration proto file + ├── pointcloud_ground_detection_component.cc // component entrance + ├── pointcloud_ground_detection_component.h + ├── cyberfile.xml // package management file + ├── README.md // readme file + └── BUILD // compile file +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `onboard::LidarFrameMessage` | lidar frame message | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `frame` | `onboard::LidarFrameMessage` | lidar frame message | + +# How to Launch + +1. Add vehicle parameter configuration file to modules/perception/data/params, corresponding frame_id and sensor_name, launch transform +```bash +cyber_launch start modules/transform/launch/static_transform.launch +``` + +2. Modify modules/perception/launch/perception_lidar.launch +- select the dag file to start, use `pointcloud_ground_detection.dag` here +- modify msg_adapter. It is used to wrap messages sent by other steps as /apollo/perception/obstacles, this can be used for individual debugging. Modify relevant channel configurations in modules/perception/data/flag/perception_common.flag + +3. Modify parameters of modules/perception/pointcloud_ground_detection/conf/pointcloud_ground_detection_config.pb.txt +- output_channel_name: output channel name +- plugin_param: plugin parameters + - name: method name + - config_path: configuration path + - config_file: configuration file name + +4. Launch ground detection component +```bash +cyber_launch start modules/perception/pointcloud_ground_detection/launch/pointcloud_ground_detection.launch +``` diff --git a/modules/perception/pointcloud_ground_detection/ground_detector/BUILD b/modules/perception/pointcloud_ground_detection/ground_detector/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/pointcloud_ground_detection/ground_detector/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/pointcloud_ground_detection/ground_detector/ground_service_detector/BUILD b/modules/perception/pointcloud_ground_detection/ground_detector/ground_service_detector/BUILD deleted file mode 100644 index 26db1e410fb..00000000000 --- a/modules/perception/pointcloud_ground_detection/ground_detector/ground_service_detector/BUILD +++ /dev/null @@ -1,43 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "ground_service_detector", - srcs = ["ground_service_detector.cc"], - hdrs = ["ground_service_detector.h"], - deps = [ - "//cyber", - "//modules/common/util", - "//modules/perception/common:util", - "//modules/perception/common/base:base_type", - "//modules/perception/common/lib/thread", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lidar/common:lidar_point_label", - "//modules/perception/common/lidar/scene_manager", - "//modules/perception/common/lidar/scene_manager:scene_service", - "//modules/perception/common/lidar/scene_manager/ground_service", - "//modules/perception/common/lidar/scene_manager/ground_service:ground_struct", - "//modules/perception/common/proto:perception_config_schema_cc_proto", - "//modules/perception/pointcloud_ground_detection/ground_detector/proto:ground_service_detector_config_cc_proto", - "//modules/perception/pointcloud_ground_detection/interface:base_ground_detector", - "@eigen", - ], -) - -# cc_test( -# name = "ground_service_detector_test", -# size = "small", -# srcs = ["ground_service_detector_test.cc"], -# deps = [ -# ":ground_service_detector", -# "//modules/perception/common:perception_gflags", -# "//modules/perception/common/algorithm/io:io_util", -# "@com_google_googletest//:gtest_main", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/perception/pointcloud_ground_detection/ground_detector/spatio_temporal_ground_detector/BUILD b/modules/perception/pointcloud_ground_detection/ground_detector/spatio_temporal_ground_detector/BUILD deleted file mode 100644 index a61b5fc44a6..00000000000 --- a/modules/perception/pointcloud_ground_detection/ground_detector/spatio_temporal_ground_detector/BUILD +++ /dev/null @@ -1,52 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "spatio_temporal_ground_detector", - srcs = ["spatio_temporal_ground_detector.cc"], - hdrs = ["spatio_temporal_ground_detector.h"], - copts = select( - { - "@platforms//cpu:x86_64": ["-msse4.1"], - "@platforms//cpu:aarch64": ["-march=armv8-a+fp+simd+crc"], - }, - no_match_error = "Please Build with an ARM or Linux x86_64 platform", - ), - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/lib/registerer", - "@eigen", - "//modules/perception/common:util", - "//modules/perception/common/algorithm/i_lib", - "//modules/perception/common/algorithm/i_lib/pc:i_ground", - "//modules/perception/common/algorithm/i_lib/pc:i_struct_s", - "//modules/perception/common/algorithm/i_lib/pc:i_util", - "//modules/perception/common/algorithm/point_cloud_processing", - "//modules/perception/common/lidar/common", - "//modules/perception/common/lidar/scene_manager", - "//modules/perception/common/lidar/scene_manager/ground_service", - "//modules/perception/common/proto:perception_config_schema_cc_proto", - "//modules/perception/pointcloud_ground_detection/ground_detector/proto:spatio_temporal_ground_detector_config_cc_proto", - "//modules/perception/pointcloud_ground_detection/interface:base_ground_detector", - ], - alwayslink = True, -) - -# cc_test( -# name = "spatio_temporal_ground_detector_test", -# size = "small", -# srcs = ["spatio_temporal_ground_detector_test.cc"], -# copts = ["-msse4.1"], -# deps = [ -# ":spatio_temporal_ground_detector", -# "@com_google_googletest//:gtest_main", -# "@local_config_pcl//:pcl", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/perception/pointcloud_ground_detection/interface/BUILD b/modules/perception/pointcloud_ground_detection/interface/BUILD deleted file mode 100644 index d50a04cf5b6..00000000000 --- a/modules/perception/pointcloud_ground_detection/interface/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_ground_detector", - hdrs = ["base_ground_detector.h"], - deps = [ - "//cyber", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/pointcloud_ground_detection/tools/BUILD b/modules/perception/pointcloud_ground_detection/tools/BUILD new file mode 100644 index 00000000000..1df3d82c77d --- /dev/null +++ b/modules/perception/pointcloud_ground_detection/tools/BUILD @@ -0,0 +1,19 @@ +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_binary") +load("//tools:cpplint.bzl", "cpplint") + +package(default_visibility = ["//visibility:public"]) + +apollo_cc_binary( + name = "offline_pointcloud_ground_detection", + srcs = ["offline_pointcloud_ground_detection.cc"], + deps = [ + "//cyber", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/pointcloud_ground_detection:apollo_perception_pointcloud_ground_detection", + "@eigen", + ], +) + +apollo_package() +cpplint() diff --git a/modules/perception/pointcloud_ground_detection/tools/offline_pointcloud_ground_detection.cc b/modules/perception/pointcloud_ground_detection/tools/offline_pointcloud_ground_detection.cc new file mode 100644 index 00000000000..e40797fdc12 --- /dev/null +++ b/modules/perception/pointcloud_ground_detection/tools/offline_pointcloud_ground_detection.cc @@ -0,0 +1,167 @@ +/****************************************************************************** + * Copyright 2018 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include +#include + +#include "Eigen/Dense" +#include "gflags/gflags.h" + +#include "cyber/common/file.h" +#include "modules/perception/common/algorithm/io/io_util.h" +#include "modules/perception/common/base/object_pool_types.h" +#include "modules/perception/common/lidar/common/lidar_frame_pool.h" +#include "modules/perception/common/lidar/common/lidar_point_label.h" +#include "modules/perception/common/lidar/common/pcl_util.h" +#include "modules/perception/pointcloud_ground_detection/interface/base_ground_detector.h" + +DEFINE_string(pcd_path, "./pcd/", "pcd path"); +DEFINE_string(output_path, "./output/", "output path"); +DEFINE_string(ground_detector_name, "SpatioTemporalGroundDetector", + "ground detector name"); +DEFINE_string(config_path, "perception/pointcloud_ground_detection/data", + "config path"); +DEFINE_string(config_file, "spatio_temporal_ground_detector.pb.txt", + "config file"); + +namespace apollo { +namespace perception { +namespace lidar { + +class OfflinePointcloudGroundDetection { + public: + OfflinePointcloudGroundDetection() = default; + + ~OfflinePointcloudGroundDetection() = default; + + bool Init() { + BaseGroundDetector* ground_detector = + BaseGroundDetectorRegisterer::GetInstanceByName( + FLAGS_ground_detector_name); + CHECK_NOTNULL(ground_detector); + ground_detector_.reset(ground_detector); + + GroundDetectorInitOptions ground_detector_init_options; + ground_detector_init_options.config_path = FLAGS_config_path; + ground_detector_init_options.config_file = FLAGS_config_file; + ACHECK(ground_detector_->Init(ground_detector_init_options)) + << "Failed to init ground detection."; + + return true; + } + + bool TransformCloud(const base::PointFCloudPtr& local_cloud, + const Eigen::Affine3d& pose, + base::PointDCloudPtr world_cloud) const { + if (local_cloud == nullptr) { + return false; + } + world_cloud->clear(); + world_cloud->reserve(local_cloud->size()); + for (size_t i = 0; i < local_cloud->size(); ++i) { + auto& pt = local_cloud->at(i); + Eigen::Vector3d trans_point(pt.x, pt.y, pt.z); + trans_point = pose * trans_point; + base::PointD world_point; + world_point.x = trans_point(0); + world_point.y = trans_point(1); + world_point.z = trans_point(2); + world_point.intensity = pt.intensity; + world_cloud->push_back(world_point, local_cloud->points_timestamp(i), + std::numeric_limits::max(), + local_cloud->points_beam_id()[i], 0); + } + return true; + } + + bool Run() { + std::string pcd_folder = FLAGS_pcd_path; + std::vector pcd_file_names; + if (!algorithm::GetFileList(pcd_folder, ".pcd", &pcd_file_names)) { + AERROR << "pcd_folder: " << pcd_folder << " get file list error."; + return false; + } + + std::sort(pcd_file_names.begin(), pcd_file_names.end(), + [](const std::string& lhs, const std::string& rhs) { + if (lhs.length() != rhs.length()) { + return lhs.length() < rhs.length(); + } + return lhs <= rhs; + }); + + for (size_t i = 0; i < pcd_file_names.size(); ++i) { + AINFO << "***************** Frame " << i << " ******************"; + AINFO << pcd_file_names[i]; + + std::shared_ptr frame = LidarFramePool::Instance().Get(); + if (frame->cloud == nullptr) { + frame->cloud = base::PointFCloudPool::Instance().Get(); + } + if (frame->world_cloud == nullptr) { + frame->world_cloud = base::PointDCloudPool::Instance().Get(); + } + LoadPCLPCD(pcd_file_names[i], frame->cloud.get()); + // frame->lidar2world_pose is default identity matrix + TransformCloud(frame->cloud, frame->lidar2world_pose, frame->world_cloud); + AINFO << "Read point cloud from " << pcd_file_names[i] + << " with cloud size: " << frame->cloud->size(); + + GroundDetectorOptions ground_detector_options; + if (!ground_detector_->Detect(ground_detector_options, frame.get())) { + AERROR << "Ground detect error."; + return false; + } + + std::string output_path = FLAGS_output_path; + SavePCD(i, frame.get(), output_path); + } + + return true; + } + + bool SavePCD(size_t frame_id, LidarFrame* frame, const std::string& path) { + if (!cyber::common::EnsureDirectory(path)) { + AERROR << "Failed to create: " << path; + return false; + } + + std::string file_path = absl::StrCat(path, "/", frame_id, ".pcd"); + WritePcdByLabel(file_path, *(frame->cloud), LidarPointLabel::GROUND); + + return true; + } + + protected: + std::unique_ptr ground_detector_; +}; + +} // namespace lidar +} // namespace perception +} // namespace apollo + +int main(int argc, char** argv) { + FLAGS_alsologtostderr = 1; + google::ParseCommandLineFlags(&argc, &argv, true); + google::InitGoogleLogging(argv[0]); + + apollo::perception::lidar::OfflinePointcloudGroundDetection test; + if (!test.Init()) { + AINFO << "Failed to setup OfflinePointcloudGroundDetection"; + return -1; + } + return test.Run() ? 0 : -1; +} diff --git a/modules/perception/pointcloud_ground_detection/tools/offline_pointcloud_ground_detection.sh b/modules/perception/pointcloud_ground_detection/tools/offline_pointcloud_ground_detection.sh new file mode 100644 index 00000000000..b1879ba2c32 --- /dev/null +++ b/modules/perception/pointcloud_ground_detection/tools/offline_pointcloud_ground_detection.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash + +############################################################################## +# Copyright 2018 The Apollo Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################### + +pcd_path="./data/pcd/" +output_path="./data/output/" + +mkdir -p $output_path && rm -rf $output_path/* + +./bazel-bin/modules/perception/pointcloud_ground_detection/tools/offline_pointcloud_ground_detection \ + --pcd_path=$pcd_path \ + --output_path=$output_path \ + --ground_detector_name=SpatioTemporalGroundDetector \ + --config_file=spatio_temporal_ground_detector.pb.txt \ + 2>&1 | tee segment.log diff --git a/modules/perception/pointcloud_map_based_roi/BUILD b/modules/perception/pointcloud_map_based_roi/BUILD index 4cf42817b11..ccbfee9270e 100644 --- a/modules/perception/pointcloud_map_based_roi/BUILD +++ b/modules/perception/pointcloud_map_based_roi/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -14,32 +13,48 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libpointcloud_map_based_roi_component.so", - linkshared = True, - linkstatic = True, - deps = [":pointcloud_map_based_roi_component_lib"], +apollo_cc_library( + name = "apollo_perception_pointcloud_map_based_roi", + srcs = [ + "map_manager/map_manager.cc", + ], + hdrs = [ + "interface/base_roi_filter.h", + "map_manager/map_manager.h", + ], + deps = [ + "//cyber", + "//modules/common/math", + "//modules/map:apollo_map", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/hdmap:apollo_perception_common_hdmap", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/pointcloud_map_based_roi/map_manager/proto:map_manager_config_cc_proto", + "//modules/perception/pointcloud_map_based_roi/proto:pointcloud_map_based_roi_component_config_cc_proto", + "@com_google_googletest//:gtest", + ], ) -cc_library( - name = "pointcloud_map_based_roi_component_lib", +apollo_component( + name = "libpointcloud_map_based_roi_component.so", srcs = ["pointcloud_map_based_roi_component.cc"], hdrs = ["pointcloud_map_based_roi_component.h"], copts = PERCEPTION_COPTS + if_profiler(), deps = [ "//cyber", - "//modules/perception/common/lidar/common", - "//modules/perception/common/lidar/scene_manager", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", - "//modules/perception/pointcloud_map_based_roi/interface:base_roi_filter", - "//modules/perception/pointcloud_map_based_roi/map_manager:map_manager", + ":apollo_perception_pointcloud_map_based_roi", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/pointcloud_map_based_roi/proto:pointcloud_map_based_roi_component_config_cc_proto", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/pointcloud_map_based_roi/README.md b/modules/perception/pointcloud_map_based_roi/README.md index e69de29bb2d..d63733acfe8 100644 --- a/modules/perception/pointcloud_map_based_roi/README.md +++ b/modules/perception/pointcloud_map_based_roi/README.md @@ -0,0 +1,66 @@ +# Component Name +pointcloud_map_based_roi + +## Introduction +Filter the point cloud outside the ROI. + +The Region of Interest (ROI) specifies the drivable area that includes road surfaces and junctions that are retrieved from the HD (high-resolution) map. The HDMap ROI filter processes LiDAR points that are outside the ROI, removing background objects, e.g., buildings and trees around the road. What remains is the point cloud in the ROI for subsequent processing. + +Given an HDMap, the affiliation of each LiDAR point indicates whether it is inside or outside the ROI. Each LiDAR point can be queried with a lookup table (LUT) of 2D quantization of the region around the car. The input and output of the HDMap ROI filter module are summarized in the table below. + +## Structure +``` +├── pointcloud_map_based_roi + ├── conf // component config file + ├── dag // component dag file + ├── data // config of map_manager and roi_filter + ├── map_manager // Set the ROI based on the hdmap + ├── roi_filter // filter point cloud outside the ROI + ├── interface // definition of BaseROIFilter + ├── proto // definition of data structure + ├── pointcloud_map_based_roi_component.cc // omponent inference + ├── pointcloud_map_based_roi_component.h + ├── cyberfile.xml // package configs + ├── README.md + └── BUILD +``` + +## 模块输入输出 + +### 输入 +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `LidarFrameMessage` | lidar frame message | + +### 输出 +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `frame` | `LidarFrameMessage` | LidarFrame's roi_indices: save the indices of point inside the ROI | + +## How to use +1. Add vehicle params configs to modules/perception/data/params,keep frame_id and sensor_name consistent, start the tf +```bash +cyber_launch start modules/transform/launch/static_transform.launch +``` + +2. Select the lidar model,download the model files and put them into modules/perception/data/models using amodel tool. +```bash +amodel install https://xxx.zip +``` + +3. Modify modules/perception/pointcloud_map_based_roi/dag/pointcloud_map_based_roi.dag +- config_file_path: path of config path +- reader channel: the name of input channel + +4. Modify modules/perception/pointcloud_map_based_roi/conf/pointcloud_map_based_roi_config.pb.txt +- output_channel_name: the name of output channel +- use_map_manager: whether use map_manager +- enable_hdmap: whether has hdmap as input +- roi_filter: name of roi filter +- config_path: the path of config +- config_file: the name of config + +5. start the lidar component +```bash +cyber_launch start modules/perception/launch/perception_lidar.launch +``` \ No newline at end of file diff --git a/modules/perception/pointcloud_map_based_roi/interface/BUILD b/modules/perception/pointcloud_map_based_roi/interface/BUILD deleted file mode 100644 index fc532d6f538..00000000000 --- a/modules/perception/pointcloud_map_based_roi/interface/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_roi_filter", - hdrs = ["base_roi_filter.h"], - deps = [ - "//cyber", - "//modules/perception/common/lidar/common:lidar_frame", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/pointcloud_map_based_roi/map_manager/BUILD b/modules/perception/pointcloud_map_based_roi/map_manager/BUILD deleted file mode 100644 index 4abae96d4be..00000000000 --- a/modules/perception/pointcloud_map_based_roi/map_manager/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "map_manager", - srcs = ["map_manager.cc"], - hdrs = ["map_manager.h"], - deps = [ - "//cyber", - "//modules/common/math", - "//modules/map/hdmap", - "//modules/perception/common:util", - "//modules/perception/common/base:base_type", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/hdmap:hdmap_input", - "//modules/perception/pointcloud_map_based_roi/map_manager/proto:map_manager_config_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", - "@com_google_googletest//:gtest", - ], -) - -#cc_test( -# name = "map_manager_test", -# srcs = ["map_manager_test.cc"], -# deps = [ -# ":map_manager", -# "@com_google_googletest//:gtest_main", -# ], -#) - -apollo_package() -cpplint() diff --git a/modules/perception/pointcloud_map_based_roi/roi_filter/hdmap_roi_filter/BUILD b/modules/perception/pointcloud_map_based_roi/roi_filter/hdmap_roi_filter/BUILD index 06d3793656a..d7486461dbd 100644 --- a/modules/perception/pointcloud_map_based_roi/roi_filter/hdmap_roi_filter/BUILD +++ b/modules/perception/pointcloud_map_based_roi/roi_filter/hdmap_roi_filter/BUILD @@ -1,91 +1,46 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] -cc_library( - name = "bitmap2d", - srcs = ["bitmap2d.cc"], - hdrs = ["bitmap2d.h"], - deps = [ - "//cyber", - "//modules/perception/common/lidar/common:lidar_log", - "@boost", - "@eigen", +apollo_plugin( + name = "libhdmap_roi_filter.so", + srcs = [ + "bitmap2d.cc", + "hdmap_roi_filter.cc", + ], + hdrs = [ + "bitmap2d.h", + "hdmap_roi_filter.h", + "polygon_mask.h", + "polygon_scan_cvter.h" ], -) - -cyber_plugin_description( - name = "plugin_libhdmap_roi_filter_lib_description", description = ":plugins.xml", - plugin = ":libhdmap_roi_filter.so", -) - -cc_binary( - name = "libhdmap_roi_filter.so", - linkshared = True, - linkstatic = True, - copts = PERCEPTION_COPTS, - deps = [":hdmap_roi_filter_lib"], -) - -cc_library( - name = "hdmap_roi_filter_lib", - srcs = ["hdmap_roi_filter.cc"], - hdrs = ["hdmap_roi_filter.h"], deps = [ - ":bitmap2d", - ":polygon_mask", - ":polygon_scan_cvter", + "//modules/perception/pointcloud_map_based_roi:apollo_perception_pointcloud_map_based_roi", "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/base:point_cloud", - "//modules/perception/common/lidar/common:lidar_point_label", - "//modules/perception/common/lidar/scene_manager", - "//modules/perception/common/lidar/scene_manager/ground_service:ground_service", - "//modules/perception/common/lidar/scene_manager/roi_service:roi_service", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", - "//modules/perception/pointcloud_map_based_roi/interface:base_roi_filter", - "//modules/perception/pointcloud_map_based_roi/roi_filter/hdmap_roi_filter/proto:hdmap_roi_filter_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", - "@eigen", - ], - alwayslink = True, -) - -#cc_test( -# name = "hdmap_roi_filter_test", -# size = "small", -# srcs = ["hdmap_roi_filter_test.cc"], -# deps = [ -# ":hdmap_roi_filter", -# "@com_google_googletest//:gtest_main", -# ], -#) - -cc_library( - name = "polygon_mask", - hdrs = ["polygon_mask.h"], - deps = [ - ":bitmap2d", - ":polygon_scan_cvter", - "//modules/perception/common/lidar/common:lidar_log", + "@boost", "@eigen", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/pointcloud_map_based_roi/roi_filter/hdmap_roi_filter/proto:hdmap_roi_filter_cc_proto", + "//modules/perception/common/lib:apollo_perception_common_lib", ], ) -cc_library( - name = "polygon_scan_cvter", - hdrs = ["polygon_scan_cvter.h"], - deps = [ - "//modules/perception/common/lidar/common:lidar_log", - "@eigen", - ], -) +# apollo_cc_test( +# name = "hdmap_roi_filter_test", +# size = "small", +# srcs = ["hdmap_roi_filter_test.cc"], +# deps = [ +# ":hdmap_roi_filter_lib", +# "@com_google_googletest//:gtest_main", +# ], +# ) apollo_package() cpplint() diff --git a/modules/perception/pointcloud_map_based_roi/roi_filter/roi_service_filter/BUILD b/modules/perception/pointcloud_map_based_roi/roi_filter/roi_service_filter/BUILD index bf97cf511a6..55dd45d8e55 100644 --- a/modules/perception/pointcloud_map_based_roi/roi_filter/roi_service_filter/BUILD +++ b/modules/perception/pointcloud_map_based_roi/roi_filter/roi_service_filter/BUILD @@ -1,60 +1,45 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) PERCEPTION_COPTS = ['-DMODULE_NAME=\\"perception\\"'] -cyber_plugin_description( - name = "plugin_libroi_service_filter_lib_description", - description = ":plugins.xml", - plugin = ":libroi_service_filter.so", -) - -cc_binary( +apollo_plugin( name = "libroi_service_filter.so", - linkshared = True, - linkstatic = True, - copts = PERCEPTION_COPTS, - deps = [":roi_service_filter_lib"], -) - -cc_library( - name = "roi_service_filter_lib", - srcs = ["roi_service_filter.cc"], - hdrs = ["roi_service_filter.h"], + srcs = [ + "roi_service_filter.cc", + ], + hdrs = [ + "roi_service_filter.h", + ], + description = ":plugins.xml", deps = [ + "//modules/perception/pointcloud_map_based_roi:apollo_perception_pointcloud_map_based_roi", "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lidar/common:lidar_log", - "//modules/perception/common/lidar/common:lidar_point_label", - "//modules/perception/common/lidar/scene_manager", - "//modules/perception/common/lidar/scene_manager/roi_service", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", - "//modules/perception/pointcloud_map_based_roi/interface:base_roi_filter", - "//modules/perception/common/lib/interface:base_init_options", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/lib:apollo_perception_common_lib", "@eigen", ], ) -#cc_test( -# name = "roi_service_filter_test", -# size = "small", -# srcs = ["roi_service_filter_test.cc"], -# deps = [ -# ":roi_service_filter", -# "//modules/perception/common:perception_gflags", -# "//modules/perception/common/io:io_util", -# "//modules/perception/lidar/common:pcl_util", -# "//modules/perception/lidar/lib/roi_filter/hdmap_roi_filter", -# "//modules/perception/map/hdmap:hdmap_input", -# "//modules/perception/lidar/lib/scene_manager/ground_service:ground_service", -# "@com_google_googletest//:gtest_main", -# ], -#) +# apollo_cc_test( +# name = "roi_service_filter_test", +# size = "small", +# srcs = ["roi_service_filter_test.cc"], +# deps = [ +# ":roi_service_filter_lib", +# "//modules/perception/common:perception_gflags", +# "//modules/perception/common/io:io_util", +# "//modules/perception/lidar/common:pcl_util", +# "//modules/perception/lidar/lib/roi_filter/hdmap_roi_filter", +# "//modules/perception/map/hdmap:apollo_perception_common_hdmap", +# "//modules/perception/lidar/lib/scene_manager/ground_service:ground_service", +# "@com_google_googletest//:gtest_main", +# ], +# ) apollo_package() cpplint() diff --git a/modules/perception/pointcloud_preprocess/BUILD b/modules/perception/pointcloud_preprocess/BUILD index 4dfcbbef29b..6df8a1c9899 100644 --- a/modules/perception/pointcloud_preprocess/BUILD +++ b/modules/perception/pointcloud_preprocess/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") load("//tools/platform:build_defs.bzl", "if_profiler") @@ -14,34 +13,50 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libpointcloud_preprocess_component.so", - linkshared = True, - linkstatic = True, - deps = [":pointcloud_preprocess_component_lib"], +apollo_cc_library( + name = "apollo_perception_pointcloud_preprocess", + srcs = [ + "preprocessor/pointcloud_preprocessor.cc", + ], + hdrs = [ + "interface/base_pointcloud_preprocessor.h", + "preprocessor/pointcloud_preprocessor.h", + ], + deps = [ + "//cyber", + "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/pointcloud_preprocess/preprocessor/proto:pointcloud_preprocessor_config_cc_proto", + "//modules/perception/pointcloud_preprocess/proto:pointcloud_preprocess_component_config_cc_proto", + "@eigen", + ], ) -cc_library( - name = "pointcloud_preprocess_component_lib", +apollo_component( + name = "libpointcloud_preprocess_component.so", srcs = ["pointcloud_preprocess_component.cc"], hdrs = ["pointcloud_preprocess_component.h"], copts = PERCEPTION_COPTS + if_profiler(), linkopts = ["-lleveldb"], deps = [ "//cyber", + ":apollo_perception_pointcloud_preprocess", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/lidar/common", - "//modules/perception/common/onboard/transform_wrapper", - "//modules/perception/common/onboard/inner_component_messages:lidar_inner_component_messages", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/lidar:apollo_perception_common_lidar", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/pointcloud_preprocess/proto:pointcloud_preprocess_component_config_cc_proto", - "//modules/perception/pointcloud_preprocess/preprocessor:pointcloud_preprocessor", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/pointcloud_preprocess/README.md b/modules/perception/pointcloud_preprocess/README.md index e69de29bb2d..9a741e7440b 100644 --- a/modules/perception/pointcloud_preprocess/README.md +++ b/modules/perception/pointcloud_preprocess/README.md @@ -0,0 +1,61 @@ +# Module Name +pointcloud_preprocess + +# Introduction +The point cloud preprocessing module preprocesses the point cloud data output by the driver. Deleting nan value points, points that are too far away, points scanned onto the self vehicle, and point that are too high. + +# Directory Structure +``` +├── pointcloud_preprocess // point cloud preprocess component + ├── conf // configuration folder + ├── dag // module startup file + ├── data // module configuration parameters + ├── launch // launch file + ├── interface // preprocess interface + ├── proto // preprocess module configuration proto file + ├── preprocessor // preprocess method + ├── pointcloud_preprocess_component.cc // component entrance + ├── pointcloud_preprocess_component.h + ├── cyberfile.xml // package management file + ├── README.md // readme file + └── BUILD // compile file +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `msg` | `apollo::drivers::PointCloud` | point cloud message | + +Point cloud data from driver: If there is one lidar, output point cloud after motion compensation. If there are multiple lidars, concatenate the point clouds into one frame after motion compensation. + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | --------------- | +| `frame` | `onboard::LidarFrameMessage` | lidar frame message | + +# How to Launch + +1. Add vehicle parameter configuration file to modules/perception/data/params, corresponding frame_id and sensor_name, launch transform +```bash +cyber_launch start modules/transform/launch/static_transform.launch +``` + +2. Modify modules/perception/launch/perception_lidar.launch +- select the dag file to start, use `pointcloud_preprocess.dag` here +- modify msg_adapter. It is used to wrap messages sent by other steps as /apollo/perception/obstacles, this can be used for individual debugging. Modify relevant channel configurations in modules/perception/data/flag/perception_common.flag + +3. Modify parameters of modules/perception/pointcloud_preprocess/conf/pointcloud_preprocess_config.pb.txt +- sensor_name: sensor name +- lidar_query_tf_offset: tf time offset +- lidar2novatel_tf2_child_frame_id: point cloud sensor name +- output_channel_name: output channel name +- plugin_param: plugin parameters + - name: method name + - config_path: configuration file path + - config_file: configuration file name + +4. Launch point cloud preprocess component +```bash +cyber_launch start modules/perception/pointcloud_preprocess/launch/pointcloud_preprocess.launch +``` diff --git a/modules/perception/pointcloud_preprocess/interface/BUILD b/modules/perception/pointcloud_preprocess/interface/BUILD deleted file mode 100644 index 5315c7cd57d..00000000000 --- a/modules/perception/pointcloud_preprocess/interface/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_pointcloud_preprocessor", - hdrs = ["base_pointcloud_preprocessor.h"], - deps = [ - "//cyber", - "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/lidar/common:lidar_frame", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/pointcloud_preprocess/preprocessor/BUILD b/modules/perception/pointcloud_preprocess/preprocessor/BUILD deleted file mode 100644 index 0af10bac069..00000000000 --- a/modules/perception/pointcloud_preprocess/preprocessor/BUILD +++ /dev/null @@ -1,26 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "pointcloud_preprocessor", - srcs = ["pointcloud_preprocessor.cc"], - hdrs = ["pointcloud_preprocessor.h"], - deps = [ - "//cyber", - "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", - "//modules/perception/common/base", - "//modules/perception/common/lidar/common", - "//modules/perception/pointcloud_preprocess/preprocessor/proto:pointcloud_preprocessor_config_cc_proto", - "//modules/perception/pointcloud_preprocess/interface:base_pointcloud_preprocessor", - "//modules/perception/common/lib/registerer:registerer", - "//modules/perception/common:util", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/BUILD b/modules/perception/radar_detection/BUILD index ddb292281e9..0fb4340a0af 100644 --- a/modules/perception/radar_detection/BUILD +++ b/modules/perception/radar_detection/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -10,18 +9,70 @@ filegroup( "conf/**", "dag/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libradar_detection.so", - linkshared = True, - linkstatic = True, - deps = [":radar_detection_component"], +apollo_cc_library( + name = "apollo_perception_radar_detection", + srcs = [ + "app/radar_obstacle_perception.cc", + "common/radar_util.cc", + "interface/base_matcher.cc", + "lib/detector/conti_ars_detector/conti_ars_detector.cc", + "lib/dummy/dummy_algorithms.cc", + "lib/preprocessor/conti_ars_preprocessor/conti_ars_preprocessor.cc", + "lib/roi_filter/hdmap_radar_roi_filter/hdmap_radar_roi_filter.cc", + "lib/tracker/common/radar_track.cc", + "lib/tracker/common/radar_track_manager.cc", + "lib/tracker/conti_ars_tracker/conti_ars_tracker.cc", + "lib/tracker/filter/adaptive_kalman_filter.cc", + "lib/tracker/matcher/hm_matcher.cc", + ], + hdrs = [ + "app/radar_obstacle_perception.h", + "common/radar_util.h", + "common/types.h", + "interface/base_detector.h", + "interface/base_filter.h", + "interface/base_matcher.h", + "interface/base_preprocessor.h", + "interface/base_radar_obstacle_perception.h", + "interface/base_roi_filter.h", + "interface/base_tracker.h", + "lib/detector/conti_ars_detector/conti_ars_detector.h", + "lib/dummy/dummy_algorithms.h", + "lib/preprocessor/conti_ars_preprocessor/conti_ars_preprocessor.h", + "lib/roi_filter/hdmap_radar_roi_filter/hdmap_radar_roi_filter.h", + "lib/tracker/common/radar_track.h", + "lib/tracker/common/radar_track_manager.h", + "lib/tracker/conti_ars_tracker/conti_ars_tracker.h", + "lib/tracker/filter/adaptive_kalman_filter.h", + "lib/tracker/matcher/hm_matcher.h", + ], + deps = [ + "//cyber", + "//modules/common/util:util_tool", + "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common:perception_gflags", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/hdmap:apollo_perception_common_hdmap", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/radar_detection/proto:matcher_config_cc_proto", + "//modules/perception/radar_detection/proto:preprocessor_cc_proto", + "//modules/perception/radar_detection/proto:radar_component_config_cc_proto", + "//modules/perception/radar_detection/proto:radar_obstacle_perception_cc_proto", + "//modules/perception/radar_detection/proto:tracker_config_cc_proto", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest_main", + "@eigen", + ], ) -cc_library( - name = "radar_detection_component", +apollo_component( + name = "libradar_detection.so", srcs = [ "radar_detection_component.cc", ], @@ -30,32 +81,132 @@ cc_library( ], deps = [ "//cyber", + ":apollo_perception_radar_detection", "//modules/common/util:util_tool", - "//modules/perception/common/algorithm/sensor_manager", - "//modules/perception/common/base", - "//modules/perception/common/hdmap:hdmap_input", - "//modules/perception/common/lib/registerer", - "//modules/perception/common/onboard/common_flags", - "//modules/perception/common/onboard/inner_component_messages", - "//modules/perception/common/onboard/msg_buffer", - "//modules/perception/common/onboard/transform_wrapper", - "//modules/perception/radar_detection/app:radar_obstacle_perception", - "//modules/perception/radar_detection/common:radar_util", - "//modules/perception/radar_detection/interface:base_preprocessor", - "//modules/perception/radar_detection/interface:base_radar_obstacle_perception", - "//modules/perception/radar_detection/lib/detector/conti_ars_detector", - "//modules/perception/radar_detection/lib/dummy:dummy_algorithms", - "//modules/perception/radar_detection/lib/preprocessor/conti_ars_preprocessor", - "//modules/perception/radar_detection/lib/roi_filter/hdmap_radar_roi_filter", - "//modules/perception/radar_detection/lib/tracker/common:radar_track_manager", - "//modules/perception/radar_detection/lib/tracker/common:radar_track", - "//modules/perception/radar_detection/lib/tracker/conti_ars_tracker", - "//modules/perception/radar_detection/lib/tracker/filter:adaptive_kalman_filter", - "//modules/perception/radar_detection/lib/tracker/matcher:hm_matcher", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/hdmap:apollo_perception_common_hdmap", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/radar_detection/proto:radar_component_config_cc_proto", ], - alwayslink = True, +) + +apollo_cc_test( + name = "base_matcher_test", + size = "small", + srcs = ["interface/base_matcher_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "conti_ars_detector_test", + size = "small", + srcs = ["lib/detector/conti_ars_detector/conti_ars_detector_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "dummy_algorithms_test", + size = "small", + srcs = ["lib/dummy/dummy_algorithms_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "conti_ars_preprocessor_test", + size = "small", + srcs = ["lib/preprocessor/conti_ars_preprocessor/conti_ars_preprocessor_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "//modules/perception/common:perception_gflags", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "hdmap_radar_roi_filter_test", + size = "small", + srcs = ["lib/roi_filter/hdmap_radar_roi_filter/hdmap_radar_roi_filter_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "radar_track_manager_test", + size = "small", + srcs = ["lib/tracker/common/radar_track_manager_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "radar_track_test", + size = "small", + srcs = ["lib/tracker/common/radar_track_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "conti_ars_tracker_test", + size = "small", + srcs = ["lib/tracker/conti_ars_tracker/conti_ars_tracker_test.cc"], + copts = ["-fno-access-control"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "conti_ars_tracker_empty_test", + size = "small", + srcs = ["lib/tracker/conti_ars_tracker/conti_ars_tracker_empty_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "//modules/perception/common:perception_gflags", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "adaptive_kalman_filter_test", + size = "small", + srcs = ["lib/tracker/filter/adaptive_kalman_filter_test.cc"], + deps = [ + ":apollo_perception_radar_detection", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "hm_matcher_test", + size = "small", + srcs = ["lib/tracker/matcher/hm_matcher_test.cc"], + copts = ["-fno-access-control"], + deps = [ + ":apollo_perception_radar_detection", + "//modules/perception/common:perception_gflags", + "@com_google_googletest//:gtest_main", + ], ) apollo_package() + cpplint() diff --git a/modules/perception/radar_detection/README.md b/modules/perception/radar_detection/README.md index e69de29bb2d..f71783a4412 100644 --- a/modules/perception/radar_detection/README.md +++ b/modules/perception/radar_detection/README.md @@ -0,0 +1,42 @@ +# Introduction +The radar detection module detects and tracks obstacles through the radar sensor, then sends them to the multi-sensor fusion module. + +The radar detection module receives the radar drive message, which is already include the objects detected and tracked. Even so, the radar module has re-tracked the objects. + +# Directory Structure +``` +radar_detection +├── BUILD // bazel build file +├── README.md +├── app // main process +├── common // utils +├── conf // dag config file +├── cyberfile.xml // package description file +├── dag +├── data // lib's configuration file +├── interface +├── launch +├── lib // algorithm library +├── proto // proto file +├── radar_detection_component.cc // component +└── radar_detection_component.h +``` + +# Input and Output +## Input +| Channel | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/sensor/radar/front` | `ContiRadar` | radar drive message | + +## Output +| Channel | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `/perception/inner/PrefusedObjects` | `onboard::SensorFrameMessage` | frame contains object detection | + +# How to run +In most cases, the radar detection module needs to work with the multi-sensor fusion module. If you want to debug the radar module separately and view the detected obstacle information, you can combine the `msg_adapter` module. + +Run the command as follows. +``` +cyber_launch start modules/perception/launch/perception_radar.launch +``` diff --git a/modules/perception/radar_detection/app/BUILD b/modules/perception/radar_detection/app/BUILD deleted file mode 100644 index 231f460b0ba..00000000000 --- a/modules/perception/radar_detection/app/BUILD +++ /dev/null @@ -1,25 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "radar_obstacle_perception", - srcs = ["radar_obstacle_perception.cc"], - hdrs = ["radar_obstacle_perception.h"], - deps = [ - "//cyber", - "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", - "//modules/common/util:util_tool", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/interface:base_radar_obstacle_perception", - "//modules/perception/radar_detection/proto:radar_obstacle_perception_cc_proto" - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/common/BUILD b/modules/perception/radar_detection/common/BUILD deleted file mode 100644 index 741ed339975..00000000000 --- a/modules/perception/radar_detection/common/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "radar_util", - srcs = ["radar_util.cc"], - hdrs = ["radar_util.h"], - deps = [ - "//modules/perception/common/base", - "@eigen", - ], -) - -cc_library( - name = "types", - hdrs = ["types.h"], -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/interface/BUILD b/modules/perception/radar_detection/interface/BUILD deleted file mode 100644 index 44460d63208..00000000000 --- a/modules/perception/radar_detection/interface/BUILD +++ /dev/null @@ -1,90 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "base_matcher_test", - size = "small", - srcs = ["base_matcher_test.cc"], - deps = [ - ":base_matcher", - "//modules/perception/radar_detection/lib/tracker/common:radar_track_manager", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "base_matcher", - srcs = ["base_matcher.cc"], - hdrs = ["base_matcher.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/lib/tracker/common:radar_track", - "//modules/perception/radar_detection/proto:radar_obstacle_perception_cc_proto", - "@com_google_googletest//:gtest_main", - "@eigen", - ], -) - -cc_library( - name = "base_filter", - hdrs = ["base_filter.h"], - deps = [ - "@eigen", - ], -) - -cc_library( - name = "base_detector", - hdrs = ["base_detector.h"], - deps = [ - "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", - "//modules/perception/common/base:base_type", - "//modules/perception/common/lib/interface:base_init_options", - "@eigen", - ], -) - -cc_library( - name = "base_preprocessor", - hdrs = ["base_preprocessor.h"], - deps = [ - "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", - "//modules/perception/common/lib/interface:base_init_options", - ], -) - -cc_library( - name = "base_radar_obstacle_perception", - hdrs = ["base_radar_obstacle_perception.h"], - deps = [ - "base_detector", - "base_roi_filter", - "base_tracker", - "//modules/perception/common/lib/interface:base_init_options", - ] -) - -cc_library( - name = "base_roi_filter", - hdrs = ["base_roi_filter.h"], - deps = [ - "//modules/perception/common/algorithm/geometry:roi_filter", - "//modules/perception/common/lib/interface:base_init_options", - ] -) - -cc_library( - name = "base_tracker", - hdrs = ["base_tracker.h"], - deps = [ - "//modules/perception/common/lib/interface:base_init_options", - ] -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/BUILD b/modules/perception/radar_detection/lib/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/radar_detection/lib/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/radar_detection/lib/detector/BUILD b/modules/perception/radar_detection/lib/detector/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/radar_detection/lib/detector/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/radar_detection/lib/detector/conti_ars_detector/BUILD b/modules/perception/radar_detection/lib/detector/conti_ars_detector/BUILD deleted file mode 100644 index 60e464366dd..00000000000 --- a/modules/perception/radar_detection/lib/detector/conti_ars_detector/BUILD +++ /dev/null @@ -1,34 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "conti_ars_detector_test", - size = "small", - srcs = ["conti_ars_detector_test.cc"], - deps = [ - ":conti_ars_detector", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "conti_ars_detector", - srcs = ["conti_ars_detector.cc"], - hdrs = ["conti_ars_detector.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/algorithm/geometry:roi_filter", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/common:radar_util", - "//modules/perception/radar_detection/common:types", - "//modules/perception/radar_detection/interface:base_detector", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/dummy/BUILD b/modules/perception/radar_detection/lib/dummy/BUILD deleted file mode 100644 index 65db730feb1..00000000000 --- a/modules/perception/radar_detection/lib/dummy/BUILD +++ /dev/null @@ -1,33 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "dummy_algorithms_test", - size = "small", - srcs = ["dummy_algorithms_test.cc"], - deps = [ - ":dummy_algorithms", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "dummy_algorithms", - srcs = ["dummy_algorithms.cc"], - hdrs = ["dummy_algorithms.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/common:types", - "//modules/perception/radar_detection/interface:base_detector", - "//modules/perception/radar_detection/interface:base_preprocessor", - "//modules/perception/radar_detection/interface:base_roi_filter", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/preprocessor/BUILD b/modules/perception/radar_detection/lib/preprocessor/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/radar_detection/lib/preprocessor/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/radar_detection/lib/preprocessor/conti_ars_preprocessor/BUILD b/modules/perception/radar_detection/lib/preprocessor/conti_ars_preprocessor/BUILD deleted file mode 100644 index 554bc874aed..00000000000 --- a/modules/perception/radar_detection/lib/preprocessor/conti_ars_preprocessor/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "conti_ars_preprocessor_test", - size = "small", - srcs = ["conti_ars_preprocessor_test.cc"], - deps = [ - ":conti_ars_preprocessor", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "conti_ars_preprocessor", - srcs = ["conti_ars_preprocessor.cc"], - hdrs = ["conti_ars_preprocessor.h"], - deps = [ - "//cyber", - "//modules/common/util:util_tool", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/common:types", - "//modules/perception/radar_detection/interface:base_preprocessor", - "//modules/perception/radar_detection/proto:preprocessor_cc_proto", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/roi_filter/BUILD b/modules/perception/radar_detection/lib/roi_filter/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/radar_detection/lib/roi_filter/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/radar_detection/lib/roi_filter/hdmap_radar_roi_filter/BUILD b/modules/perception/radar_detection/lib/roi_filter/hdmap_radar_roi_filter/BUILD deleted file mode 100644 index 1cbe4f265ef..00000000000 --- a/modules/perception/radar_detection/lib/roi_filter/hdmap_radar_roi_filter/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "hdmap_radar_roi_filter_test", - size = "small", - srcs = ["hdmap_radar_roi_filter_test.cc"], - deps = [ - ":hdmap_radar_roi_filter", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "hdmap_radar_roi_filter", - srcs = ["hdmap_radar_roi_filter.cc"], - hdrs = ["hdmap_radar_roi_filter.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/algorithm/geometry:roi_filter", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/interface:base_roi_filter", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/tracker/BUILD b/modules/perception/radar_detection/lib/tracker/BUILD deleted file mode 100644 index 038af27b407..00000000000 --- a/modules/perception/radar_detection/lib/tracker/BUILD +++ /dev/null @@ -1,5 +0,0 @@ -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -apollo_package() diff --git a/modules/perception/radar_detection/lib/tracker/common/BUILD b/modules/perception/radar_detection/lib/tracker/common/BUILD deleted file mode 100644 index fe911d7dd3f..00000000000 --- a/modules/perception/radar_detection/lib/tracker/common/BUILD +++ /dev/null @@ -1,51 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "radar_track_manager_test", - size = "small", - srcs = ["radar_track_manager_test.cc"], - deps = [ - ":radar_track_manager", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "radar_track_test", - size = "small", - srcs = ["radar_track_test.cc"], - deps = [ - ":radar_track", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "radar_track_manager", - srcs = ["radar_track_manager.cc"], - hdrs = ["radar_track_manager.h"], - deps = [ - ":radar_track", - "@eigen", - ], -) - -cc_library( - name = "radar_track", - srcs = ["radar_track.cc"], - hdrs = ["radar_track.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/radar_detection/common:types", - "//modules/perception/radar_detection/interface:base_filter", - "//modules/perception/radar_detection/lib/tracker/filter:adaptive_kalman_filter", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/tracker/conti_ars_tracker/BUILD b/modules/perception/radar_detection/lib/tracker/conti_ars_tracker/BUILD deleted file mode 100644 index 9197512594b..00000000000 --- a/modules/perception/radar_detection/lib/tracker/conti_ars_tracker/BUILD +++ /dev/null @@ -1,51 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "conti_ars_tracker_test", - size = "small", - srcs = ["conti_ars_tracker_test.cc"], - copts = ["-fno-access-control"], - deps = [ - ":conti_ars_tracker", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "conti_ars_tracker_empty_test", - size = "small", - srcs = ["conti_ars_tracker_empty_test.cc"], - deps = [ - ":conti_ars_tracker", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "conti_ars_tracker", - srcs = ["conti_ars_tracker.cc"], - hdrs = ["conti_ars_tracker.h"], - deps = [ - "//cyber", - "//modules/perception/common:perception_gflags", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/common:types", - "//modules/perception/radar_detection/interface:base_matcher", - "//modules/perception/radar_detection/interface:base_tracker", - "//modules/perception/radar_detection/lib/tracker/common:radar_track_manager", - "//modules/perception/radar_detection/lib/tracker/matcher:hm_matcher", - "//modules/perception/radar_detection/proto:tracker_config_cc_proto", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/tracker/filter/BUILD b/modules/perception/radar_detection/lib/tracker/filter/BUILD deleted file mode 100644 index 88b70518ca8..00000000000 --- a/modules/perception/radar_detection/lib/tracker/filter/BUILD +++ /dev/null @@ -1,29 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "adaptive_kalman_filter_test", - size = "small", - srcs = ["adaptive_kalman_filter_test.cc"], - deps = [ - ":adaptive_kalman_filter", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "adaptive_kalman_filter", - srcs = ["adaptive_kalman_filter.cc"], - hdrs = ["adaptive_kalman_filter.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/radar_detection/interface:base_filter", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/radar_detection/lib/tracker/matcher/BUILD b/modules/perception/radar_detection/lib/tracker/matcher/BUILD deleted file mode 100644 index 94c310ad12a..00000000000 --- a/modules/perception/radar_detection/lib/tracker/matcher/BUILD +++ /dev/null @@ -1,41 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_test( - name = "hm_matcher_test", - size = "small", - srcs = ["hm_matcher_test.cc"], - copts = ["-fno-access-control"], - deps = [ - ":hm_matcher", - "//modules/perception/radar_detection/lib/tracker/common:radar_track_manager", - "//modules/perception/common:perception_gflags", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "hm_matcher", - srcs = ["hm_matcher.cc"], - hdrs = ["hm_matcher.h"], - deps = [ - "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/lib/registerer", - "//modules/perception/radar_detection/common:types", - "//modules/perception/radar_detection/interface:base_matcher", - "//modules/perception/radar_detection/lib/tracker/common:radar_track", - "//modules/perception/radar_detection/proto:matcher_config_cc_proto", - "//modules/perception/common/algorithm/graph", - "@com_google_absl//:absl", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/tools/common/BUILD b/modules/perception/tools/common/BUILD new file mode 100644 index 00000000000..28a2d3be3b2 --- /dev/null +++ b/modules/perception/tools/common/BUILD @@ -0,0 +1,28 @@ +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") +load("//tools:cpplint.bzl", "cpplint") + +package(default_visibility = ["//visibility:public"]) + +apollo_cc_library( + name = "apollo_perception_tools_common", + hdrs = [ + "ground_truth.h", + "util.h", + "visualizer.h", + ], + srcs = [ + "ground_truth.cc", + "util.cc", + "visualizer.cc", + ], + deps = [ + "@opencv//:imgproc", + "//cyber", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + ], +) + +apollo_package() +cpplint() diff --git a/modules/perception/tools/common/ground_truth.cc b/modules/perception/tools/common/ground_truth.cc new file mode 100644 index 00000000000..7307f0bc01e --- /dev/null +++ b/modules/perception/tools/common/ground_truth.cc @@ -0,0 +1,112 @@ +/****************************************************************************** + * Copyright 2022 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "modules/perception/tools/common/ground_truth.h" + +#include +#include +#include +#include +#include + +#include "cyber/common/log.h" + +namespace apollo { +namespace perception { +namespace camera { + +const std::map object_subtype_map = { + {"car", base::ObjectSubType::CAR}, + {"van", base::ObjectSubType::VAN}, + {"bus", base::ObjectSubType::BUS}, + {"truck", base::ObjectSubType::TRUCK}, + {"cyclist", base::ObjectSubType::CYCLIST}, + {"motorcyclist", base::ObjectSubType::MOTORCYCLIST}, + {"tricyclelist", base::ObjectSubType::TRICYCLIST}, + {"pedestrian", base::ObjectSubType::PEDESTRIAN}, + {"trafficcone", base::ObjectSubType::TRAFFICCONE}, +}; + +bool LoadKittiLabel(onboard::CameraFrame* frame, const std::string& kitti_path, + const std::string& dist_type) { + frame->detected_objects.clear(); + FILE *fp = fopen(kitti_path.c_str(), "r"); + if (fp == nullptr) { + AERROR << "Failed to load object file: " << kitti_path; + return false; + } + + while (!feof(fp)) { + base::ObjectPtr obj = nullptr; + obj.reset(new base::Object); + float trash = 0.0f; + float score = 0.0f; + char type[255]; + float x1 = 0.0f; + float y1 = 0.0f; + float x2 = 0.0f; + float y2 = 0.0f; + memset(type, 0, sizeof(type)); + + int ret = 0; + ret = fscanf(fp, "%254s %f %f %lf %f %f %f %f %f %f %f %lf %lf %lf %f %f", + type, &trash, &trash, &obj->camera_supplement.alpha, &x1, &y1, + &x2, &y2, &obj->size[2], &obj->size[1], &obj->size[0], + &obj->center[0], &obj->center[1], &obj->center[2], &obj->theta, + &score); + AINFO << "fscanf return: " << ret; + if (dist_type == "H-from-h") { + obj->size[0] = static_cast(obj->center[2]); + } else if (dist_type == "H-on-h") { + obj->size[0] = static_cast(obj->center[2]) * (y2 - y1); + } else { + AERROR << "Not supported dist type! " << dist_type; + return false; + } + obj->camera_supplement.box.xmin = std::max(x1, 0); + obj->camera_supplement.box.ymin = std::max(y1, 0); + obj->camera_supplement.box.xmax = + std::min( + x2, static_cast(frame->data_provider->src_width())); + obj->camera_supplement.box.ymax = + std::min( + y2, static_cast(frame->data_provider->src_height())); + obj->camera_supplement.area_id = 5; + + if (object_subtype_map.find(type) == object_subtype_map.end()) { + obj->sub_type = base::ObjectSubType::UNKNOWN; + } else { + obj->sub_type = object_subtype_map.at(type); + } + obj->type = base::kSubType2TypeMap.at(obj->sub_type); + obj->type_probs.assign( + static_cast(base::ObjectType::MAX_OBJECT_TYPE), 0); + obj->sub_type_probs.assign( + static_cast(base::ObjectSubType::MAX_OBJECT_TYPE), 0); + obj->sub_type_probs[static_cast(obj->sub_type)] = score; + obj->type_probs[static_cast(obj->type)] = score; + + frame->detected_objects.push_back(obj); + } + + fclose(fp); + return true; +} + + +} // namespace camera +} // namespace perception +} // namespace apollo diff --git a/modules/perception/tools/common/ground_truth.h b/modules/perception/tools/common/ground_truth.h new file mode 100644 index 00000000000..36618736c32 --- /dev/null +++ b/modules/perception/tools/common/ground_truth.h @@ -0,0 +1,41 @@ +/****************************************************************************** + * Copyright 2022 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#pragma once + +#include + +#include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" + +namespace apollo { +namespace perception { +namespace camera { + +/** + * @brief Read KITTI labels and fill to frame->detected_objects + * + * @param frame onboard::CameraFrame + * @param kitti_path kitti path include labels + * @param dist_type "H-from-h" or "H-on-h" + * @return true + * @return false + */ +bool LoadKittiLabel(onboard::CameraFrame *frame, const std::string& kitti_path, + const std::string& dist_type); + +} // namespace camera +} // namespace perception +} // namespace apollo diff --git a/modules/perception/tools/common/util.cc b/modules/perception/tools/common/util.cc new file mode 100644 index 00000000000..5186a0d3c05 --- /dev/null +++ b/modules/perception/tools/common/util.cc @@ -0,0 +1,126 @@ +/****************************************************************************** + * Copyright 2022 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "modules/perception/tools/common/util.h" + +#include + +#include "cyber/common/log.h" +#include "modules/perception/common/algorithm/io/io_util.h" + +namespace apollo { +namespace perception { +namespace camera { + +bool FillImage(onboard::CameraFrame* frame, const std::string& file_name) { + // Read image from file_name + cv::Mat image = cv::imread(file_name); + if (image.empty()) { + AERROR << "Read image failed! " << file_name; + return false; + } + + // Fill image to frame->data_provider + bool res = frame->data_provider->FillImageData(image.rows, image.cols, + image.data, "bgr8"); + if (!res) { + AERROR << "Fill image failed! " << file_name; + return false; + } + return true; +} + +bool RecoveryImage(onboard::CameraFrame* frame, cv::Mat* cv_img) { + DataProvider::ImageOptions image_options; + image_options.target_color = base::Color::BGR; + image_options.do_crop = false; + base::Image8U image(frame->data_provider->src_height(), + frame->data_provider->src_width(), base::Color::RGB); + frame->data_provider->GetImage(image_options, &image); + + memcpy(cv_img->data, image.cpu_data(), image.total() * sizeof(uint8_t)); + return true; +} + +bool GetFileListFromPath(const std::string& file_path, + std::vector* file_list) { + // todo(zero): need complete + return true; +} + +bool GetFileListFromFile(const std::string& file_name, + std::vector* file_list) { + std::ifstream in(file_name.c_str()); + + if (!in) { + AERROR << "Failed to open file: " << file_name; + return false; + } + + std::string line; + while (std::getline(in, line)) { + if (!line.empty()) { + file_list->push_back(line); + } + } + + in.close(); + return true; +} + +bool SaveCameraDetectionResult(onboard::CameraFrame* frame, + const std::string& file_name) { + FILE* fp = fopen(file_name.c_str(), "w"); + if (fp == nullptr) { + AERROR << "Failed to open result file: " << file_name; + return false; + } + + for (auto obj : frame->detected_objects) { + auto& supp = obj->camera_supplement; + fprintf(fp, + "%s 0 0 %6.3f %8.2f %8.2f %8.2f %8.2f %6.3f %6.3f %6.3f " + "%6.3f %6.3f %6.3f %6.3f %6.3f " + "%4d %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f %6.3f\n", + base::kSubType2NameMap.at(obj->sub_type).c_str(), supp.alpha, + supp.box.xmin, supp.box.ymin, supp.box.xmax, supp.box.ymax, + obj->size[2], obj->size[1], obj->size[0], obj->center[0], + obj->center[1] + obj->size[2] * .5, obj->center[2], + supp.alpha + atan2(obj->center[0], obj->center[2]), + obj->type_probs[static_cast(obj->type)], supp.area_id, + supp.visible_ratios[0], supp.visible_ratios[1], + supp.visible_ratios[2], supp.visible_ratios[3], + supp.cut_off_ratios[0], supp.cut_off_ratios[1], + supp.cut_off_ratios[2], supp.cut_off_ratios[3]); + } + + fclose(fp); + return true; +} + +bool SaveTfDetectionResult(onboard::CameraFrame* frame, + const std::string& file_name) { + return true; +} + +bool SaveLaneDetectionResult(onboard::CameraFrame* frame, + const std::string& file_name) { + return true; +} + +} // namespace camera +} // namespace perception +} // namespace apollo diff --git a/modules/perception/tools/common/util.h b/modules/perception/tools/common/util.h new file mode 100644 index 00000000000..0b796b501c6 --- /dev/null +++ b/modules/perception/tools/common/util.h @@ -0,0 +1,93 @@ +/****************************************************************************** + * Copyright 2022 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#pragma once + +#include +#include + +#include "opencv2/opencv.hpp" + +#include "modules/perception/common/base/distortion_model.h" +#include "modules/perception/common/base/object_types.h" +#include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" + +namespace apollo { +namespace perception { +namespace camera { + +/** + * @brief Read image from file_name and fill in frame->data_provider + * + * @param frame onboard::CameraFrame + * @param file_name image file + * @return true + * @return false + */ +bool FillImage(onboard::CameraFrame* frame, const std::string& file_name); + +/** + * @brief Recovery cv image from frame->data_provider + * + * @param frame onboard::CameraFrame + * @param cv_img cv image + * @return true + * @return false + */ +bool RecoveryImage(onboard::CameraFrame* frame, cv::Mat* cv_img); + +/** + * @brief Get the File List From Path object + * + * @param file_path A file path containing all filenames + * @param file_list Array of output filenames + * @return true success + * @return false fail + */ +bool GetFileListFromPath(const std::string& file_path, + std::vector* file_list); + +/** + * @brief Get the File List From File object + * + * @param file_name A file containing all filenames + * @param file_list Array of output filenames + * @return true success + * @return false fail + */ +bool GetFileListFromFile(const std::string& file_name, + std::vector* file_list); + +/** + * @brief Save detection result to file_name + * + * @param frame onboard::CameraFrame + * @param file_name result file + * @return true + * @return false + */ +bool SaveCameraDetectionResult(onboard::CameraFrame* frame, + const std::string& file_name); + +bool SaveTfDetectionResult(onboard::CameraFrame* frame, + const std::string& file_name); + +bool SaveLaneDetectionResult(onboard::CameraFrame* frame, + const std::string& file_name); + +} // namespace camera +} // namespace perception +} // namespace apollo diff --git a/modules/perception/tools/common/visualizer.cc b/modules/perception/tools/common/visualizer.cc new file mode 100644 index 00000000000..d3eecd28545 --- /dev/null +++ b/modules/perception/tools/common/visualizer.cc @@ -0,0 +1,126 @@ +/****************************************************************************** + * Copyright 2022 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include "modules/perception/tools/common/visualizer.h" + +#include +#include +#include +#include + +#include "opencv2/opencv.hpp" + +#include "cyber/common/log.h" +#include "modules/perception/tools/common/util.h" + +namespace apollo { +namespace perception { +namespace camera { + +static const cv::Scalar kFaceColors[] = { + cv::Scalar(255, 255, 255), // black + cv::Scalar(255, 0, 0), // blue + cv::Scalar(0, 255, 0), // green + cv::Scalar(0, 0, 255), // red +}; + +bool CameraVisualization(onboard::CameraFrame* frame, + const std::string& file_name) { + cv::Mat cv_img(frame->data_provider->src_height(), + frame->data_provider->src_width(), CV_8UC3, + cv::Scalar(0, 0, 0)); + + RecoveryImage(frame, &cv_img); + + int obj_id = 0; + for (auto obj : frame->detected_objects) { + auto& supp = obj->camera_supplement; + auto& box = supp.box; + auto area_id = supp.area_id; + + cv::rectangle( + cv_img, + cv::Point(static_cast(box.xmin), static_cast(box.ymin)), + cv::Point(static_cast(box.xmax), static_cast(box.ymax)), + cv::Scalar(0, 0, 0), 8); + float xmid = (box.xmin + box.xmax) / 2; + ACHECK(area_id > 0 && area_id < 9); + if (area_id & 1) { + cv::rectangle( + cv_img, + cv::Point(static_cast(box.xmin), static_cast(box.ymin)), + cv::Point(static_cast(box.xmax), static_cast(box.ymax)), + kFaceColors[area_id / 2], 2); + } else { + auto& tl = supp.cut_off_ratios[2]; + auto& tr = supp.cut_off_ratios[3]; + auto&& left_ratio = supp.visible_ratios[(area_id / 2) % 4]; + auto w = box.xmax - box.xmin; + auto x = box.xmin; + auto tm = std::max(tl, tr); + if (tm > 1e-2) { + if (tl > tr) { + xmid = (x - w * tl) + (w + w * tl) * left_ratio; + } else if (tl < tr) { + xmid = x + (w + w * tr) * left_ratio; + } + } else { + xmid = x + w * left_ratio; + } + cv::rectangle( + cv_img, + cv::Point(static_cast(box.xmin), static_cast(box.ymin)), + cv::Point(static_cast(xmid), static_cast(box.ymax)), + kFaceColors[(area_id / 2) % 4], 3); + cv::rectangle( + cv_img, cv::Point(static_cast(xmid), static_cast(box.ymin)), + cv::Point(static_cast(box.xmax), static_cast(box.ymax)), + kFaceColors[area_id / 2 - 1], 2); + } + fprintf(stderr, + "obj-%02d: %.3f %.3f %.3f %.3f -- %.3f %.3f %.3f %.3f " + "-- %.0f %.0f %.0f %d\n", + obj_id, supp.visible_ratios[0], supp.visible_ratios[1], + supp.visible_ratios[2], supp.visible_ratios[3], + supp.cut_off_ratios[0], supp.cut_off_ratios[1], + supp.cut_off_ratios[2], supp.cut_off_ratios[3], box.xmin, xmid, + box.xmax, area_id); + std::stringstream text; + auto& name = base::kSubType2NameMap.at(obj->sub_type); + text << name[0] << name[1] << name[2] << " - " << obj_id++; + cv::putText( + cv_img, text.str(), + cv::Point(static_cast(box.xmin), static_cast(box.ymin)), + cv::FONT_HERSHEY_PLAIN, 2, cv::Scalar(255, 0, 0), 2); + } + + cv::imwrite(file_name.c_str(), cv_img); + return true; +} + +bool TfVisualization(onboard::CameraFrame* frame, + const std::string& file_name) { + return true; +} + +bool LaneVisualization(onboard::CameraFrame* frame, + const std::string& file_name) { + return true; +} + +} // namespace camera +} // namespace perception +} // namespace apollo diff --git a/modules/perception/tools/common/visualizer.h b/modules/perception/tools/common/visualizer.h new file mode 100644 index 00000000000..57a771a8645 --- /dev/null +++ b/modules/perception/tools/common/visualizer.h @@ -0,0 +1,45 @@ +/****************************************************************************** + * Copyright 2022 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#pragma once + +#include + +#include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" + +namespace apollo { +namespace perception { +namespace camera { + +/** + * @brief Save visualization results to file_name(.jpg) + * + * @param frame CameraFrame + * @param file_name Image contains visualization results + * @return true + * @return false + */ +bool CameraVisualization(onboard::CameraFrame* frame, + const std::string& file_name); + +bool TfVisualization(onboard::CameraFrame* frame, const std::string& file_name); + +bool LaneVisualization(onboard::CameraFrame* frame, + const std::string& file_name); + +} // namespace camera +} // namespace perception +} // namespace apollo diff --git a/modules/perception/tools/cyberfile.xml b/modules/perception/tools/cyberfile.xml index 47490e58ebb..9a91f595c46 100644 --- a/modules/perception/tools/cyberfile.xml +++ b/modules/perception/tools/cyberfile.xml @@ -17,6 +17,7 @@ 3rd-absl common perception-common + perception-camera-detection-2d common-msgs 3rd-opencv 3rd-eigen3 diff --git a/modules/perception/tools/exporter/BUILD b/modules/perception/tools/exporter/BUILD index f772342d2d3..ef49c6a60dc 100644 --- a/modules/perception/tools/exporter/BUILD +++ b/modules/perception/tools/exporter/BUILD @@ -1,8 +1,7 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library", "apollo_cc_binary") load("//tools:cpplint.bzl", "cpplint") -cc_library( +apollo_cc_library( name = "msgexporterlib", srcs = ["msg_exporter.cc"], hdrs = ["msg_exporter.h"], @@ -10,8 +9,8 @@ cc_library( "//cyber", "//modules/common_msgs/sensor_msgs:pointcloud_cc_proto", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/perception/common/lidar/common:pcl_util", - "//modules/perception/common/onboard/transform_wrapper", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/common/lidar:apollo_perception_common_lidar", "@com_google_absl//:absl", "@opencv//:imgproc", "@opencv//:imgcodecs", @@ -19,7 +18,7 @@ cc_library( ], ) -cc_binary( +apollo_cc_binary( name = "msg_exporter", srcs = ["msg_exporter_main.cc"], deps = [ diff --git a/modules/perception/tools/offline/BUILD b/modules/perception/tools/offline/BUILD index bc0c56cb3c0..b1d2e17a763 100644 --- a/modules/perception/tools/offline/BUILD +++ b/modules/perception/tools/offline/BUILD @@ -1,67 +1,42 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "visualizer", - srcs = ["libvisualizer.so"], +apollo_cc_library( + name = "perception_visualizer", + srcs = ["visualizer.cc"], hdrs = [ "colormap.h", "keycode.h", "visualizer.h", ], - alwayslink = True, deps = [ - ":transform_server", + ":perception_transform_server", "//modules/common/util:util_tool", "//modules/perception/common:perception_gflags", - "//modules/perception/common/camera/common:cipv_camera", - "//modules/perception/common/camera/common", + "//modules/perception/common/camera:apollo_perception_common_camera", "//modules/perception/common/proto:motion_service_cc_proto", - "@opencv//:imgcodecs", - "@opencv//:imgproc", "@opencv//:highgui", - ], -) - -cc_binary( - name = "libvisualizer.so", - srcs = [ - "visualizer.cc", - "colormap.h", - "keycode.h", - "visualizer.h", - ], - deps = [ - ":transform_server", - "//modules/common/util:util_tool", - "//modules/perception/common:perception_gflags", - "//modules/perception/common/camera/common:cipv_camera", - "//modules/perception/common/camera/common", - "//modules/perception/common/proto:motion_service_cc_proto", "@opencv//:imgcodecs", "@opencv//:imgproc", - "@opencv//:highgui", ], - linkshared = True, - linkstatic = True, ) -cc_library( - name = "transform_server", +apollo_cc_library( + name = "perception_transform_server", srcs = ["transform_server.cc"], hdrs = ["transform_server.h"], deps = [ "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", "//modules/common/util:util_tool", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", "@com_github_jbeder_yaml_cpp//:yaml-cpp", "@eigen", ], ) apollo_package() + cpplint() diff --git a/modules/perception/tools/offline_camera_detection/BUILD b/modules/perception/tools/offline_camera_detection/BUILD new file mode 100644 index 00000000000..c0894933232 --- /dev/null +++ b/modules/perception/tools/offline_camera_detection/BUILD @@ -0,0 +1,22 @@ +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_package", "apollo_cc_binary") +load("//tools:cpplint.bzl", "cpplint") + +package(default_visibility = ["//visibility:public"]) + +apollo_cc_binary( + name = "offline_camera_detection", + srcs = ["offline_camera_detection.cc"], + deps = [ + "//cyber", + "//modules/perception/camera_detection_2d:apollo_perception_camera_detection_2d", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/interface:base_obstacle_detector", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/tools/common:apollo_perception_tools_common", + "@com_github_gflags_gflags//:gflags", + ], +) + +apollo_package() +cpplint() diff --git a/modules/perception/tools/offline_camera_detection/README.md b/modules/perception/tools/offline_camera_detection/README.md new file mode 100644 index 00000000000..232cd54b290 --- /dev/null +++ b/modules/perception/tools/offline_camera_detection/README.md @@ -0,0 +1,37 @@ +## offline_camera_detection +`offline_camera_detection` is Apollo's camera offline detection tool. + +## How to work +1. First, build the perception module +``` +./apollo.sh build perception +``` +2. Then run the tool +``` +bash modules/perception/tools/offline_camera_detection/offline_camera_detection.sh +``` +3. Finally, view the results in `/apollo/data` +``` +test.jpg test.txt +``` + +## Input +The input image data is in the `images` directory. You need to put the test pictures into this directory, and add the picture name in `images\image_test_list.txt`. + +The default test image is `images\test.jpg`, and `images\image_test_list.txt` contains the name **test** in it. + +## Output +The output data is in `/apollo/data`, Include text files and image files. + +The default test result is `test.jpg test.txt`. + +## Model config +The model config file is in `conf\camera_detection_pipeline.pb.txt`, which you can change the model. + +The default detection model is `SMOKE_OBSTACLE_DETECTION`. + +## Parameters +`offline_camera_detection` supports the following parameters +- height, Input image height +- width, Input image width +- image_ext, Input image format diff --git a/modules/perception/tools/offline_camera_detection/images/test.jpg b/modules/perception/tools/offline_camera_detection/images/test.jpg new file mode 100644 index 00000000000..fa3378cc5ca Binary files /dev/null and b/modules/perception/tools/offline_camera_detection/images/test.jpg differ diff --git a/modules/perception/tools/offline_camera_detection/offline_camera_detection.cc b/modules/perception/tools/offline_camera_detection/offline_camera_detection.cc new file mode 100644 index 00000000000..b9ef8451a88 --- /dev/null +++ b/modules/perception/tools/offline_camera_detection/offline_camera_detection.cc @@ -0,0 +1,158 @@ +/****************************************************************************** + * Copyright 2018 The Apollo Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an AS IS BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + *****************************************************************************/ + +#include +#include +#include + +#include "gflags/gflags.h" + +#include "cyber/common/file.h" +#include "modules/perception/common/algorithm/io/io_util.h" +#include "modules/perception/common/algorithm/sensor_manager/sensor_manager.h" +#include "modules/perception/common/camera/common/data_provider.h" +#include "modules/perception/common/interface/base_obstacle_detector.h" +#include "modules/perception/common/onboard/inner_component_messages/camera_detection_component_messages.h" +#include "modules/perception/tools/common/ground_truth.h" +#include "modules/perception/tools/common/util.h" +#include "modules/perception/tools/common/visualizer.h" + +DEFINE_int32(height, 1080, "image height"); +DEFINE_int32(width, 1920, "image width"); +DEFINE_int32(gpu_id, 0, "gpu id"); +DEFINE_string(dest_dir, "./data/output", "output dir"); +DEFINE_string(dist_type, "", "dist pred type: H-on-h, H-from-h"); +DEFINE_string(kitti_dir, "", "pre-detected obstacles (skip Detect)"); +DEFINE_string(root_dir, + "/apollo/modules/perception/tools/offline_camera_detection/", + "image root dir"); +DEFINE_string(image_ext, ".jpg", "extension of image name"); +DEFINE_string(config_path, "perception/camera_detection_2d/data", + "config path"); +DEFINE_string(config_file, "yolo.pb.txt", "config file"); +DEFINE_string(camera_name, "front_6mm", "camera name"); +DEFINE_string(detector_name, "YoloObstacleDetector", "detector name"); + +namespace apollo { +namespace perception { +namespace camera { + +bool InitDataProvider(onboard::CameraFrame* camera_frame) { + DataProvider::InitOptions init_options; + init_options.sensor_name = FLAGS_camera_name; + init_options.image_height = FLAGS_height; + init_options.image_width = FLAGS_width; + init_options.device_id = FLAGS_gpu_id; + + bool res = camera_frame->data_provider->Init(init_options); + return res; +} + +bool TestDetection() { + // Init frame + onboard::CameraFrame camera_frame; + camera_frame.data_provider.reset(new DataProvider()); + camera_frame.feature_blob.reset(new base::Blob()); + + // Init data + ACHECK(InitDataProvider(&camera_frame)); + + ObstacleDetectorInitOptions init_options; + // Init conf file + init_options.config_path = FLAGS_config_path; + init_options.config_file = FLAGS_config_file; + init_options.gpu_id = FLAGS_gpu_id; + + // Init camera params + std::string camera_name = FLAGS_camera_name; + base::BaseCameraModelPtr model = + algorithm::SensorManager::Instance()->GetUndistortCameraModel( + camera_name); + auto pinhole = static_cast(model.get()); + init_options.intrinsic = pinhole->get_intrinsic_params(); + camera_frame.camera_k_matrix = pinhole->get_intrinsic_params(); + init_options.image_height = model->get_height(); + init_options.image_width = model->get_width(); + // Init detection pipeline + std::shared_ptr detector; + detector.reset( + BaseObstacleDetectorRegisterer::GetInstanceByName(FLAGS_detector_name)); + detector->Init(init_options); + + // Load image list + std::string images_path = FLAGS_root_dir + "/images/"; + std::vector img_file_names; + if (!algorithm::GetFileList(images_path, ".jpg", &img_file_names)) { + AERROR << "images_path: " << images_path << " get file list error."; + return false; + } + + std::sort(img_file_names.begin(), img_file_names.end(), + [](const std::string& lhs, const std::string& rhs) { + if (lhs.length() != rhs.length()) { + return lhs.length() < rhs.length(); + } + return lhs <= rhs; + }); + + // Main process + for (const auto& img_file : img_file_names) { + AINFO << "img_file: " << img_file; + + std::string image_name = cyber::common::GetFileName(img_file, true); + + if (FLAGS_kitti_dir != "") { + std::string kitti_path = FLAGS_kitti_dir + "/" + image_name + ".txt"; + + if (!LoadKittiLabel(&camera_frame, kitti_path, FLAGS_dist_type)) { + AERROR << "Loading kitti result failed: " << kitti_path; + continue; + } + } else { + ACHECK(FillImage(&camera_frame, img_file)); + ACHECK(detector->Detect(&camera_frame)); + } + + // Results visualization + if (!cyber::common::EnsureDirectory(FLAGS_dest_dir)) { + AERROR << "Failed to create: " << FLAGS_dest_dir; + return false; + } + + std::string result_path = FLAGS_dest_dir + "/" + image_name + ".txt"; + ACHECK(SaveCameraDetectionResult(&camera_frame, result_path)); + + result_path = FLAGS_dest_dir + "/" + image_name + ".jpg"; + ACHECK(CameraVisualization(&camera_frame, result_path)); + } + + return true; +} + +} // namespace camera +} // namespace perception +} // namespace apollo + +int main(int argc, char* argv[]) { + FLAGS_alsologtostderr = 1; + google::ParseCommandLineFlags(&argc, &argv, true); + google::InitGoogleLogging(argv[0]); + google::SetUsageMessage( + "command line brew\n" + "Usage: camera_benchmark \n"); + apollo::perception::camera::TestDetection(); + return 0; +} diff --git a/modules/perception/tools/offline_camera_detection/offline_camera_detection.sh b/modules/perception/tools/offline_camera_detection/offline_camera_detection.sh new file mode 100644 index 00000000000..3765263edfe --- /dev/null +++ b/modules/perception/tools/offline_camera_detection/offline_camera_detection.sh @@ -0,0 +1,20 @@ +#!/usr/bin/env bash + +############################################################################### +# Copyright 2023 The Apollo Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +############################################################################### + + +/apollo/bazel-bin/modules/perception/tools/offline_camera_detection/offline_camera_detection "$@" diff --git a/modules/perception/traffic_light_detection/BUILD b/modules/perception/traffic_light_detection/BUILD index 1e9cbd2bccf..28b453b5531 100644 --- a/modules/perception/traffic_light_detection/BUILD +++ b/modules/perception/traffic_light_detection/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -13,18 +12,40 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libcomponent_traffic_light_detect.so", - linkshared = True, - linkstatic = True, - deps = [":perception_component_traffic_detect"], +apollo_cc_library( + name = "apollo_perception_traffic_light_detection", + srcs = [ + "detection/cropbox.cc", + "detection/detection.cc", + "detection/select.cc", + "traffic_light_detection_component.cc", + ], + hdrs = [ + "detection/cropbox.h", + "detection/detection.h", + "detection/select.h", + "interface/base_traffic_light_detector.h", + "traffic_light_detection_component.h", + ], + deps = [ + "//cyber", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/traffic_light_detection/detection/proto:model_param_cc_proto", + "//modules/perception/traffic_light_detection/proto:trafficlights_detection_component_cc_proto", + ], ) -cc_library( - name = "perception_component_traffic_detect", +apollo_component( + name = "libcomponent_traffic_light_detect.so", srcs = [ "traffic_light_detection_component.cc", ], @@ -34,14 +55,13 @@ cc_library( copts = PERCEPTION_COPTS, deps = [ "//cyber", - "//modules/perception/traffic_light_detection/interface:base_traffic_light_detector", - "//modules/perception/traffic_light_detection/detection:detection", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/onboard/inner_component_messages:traffic_inner_component_messages", + ":apollo_perception_traffic_light_detection", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/traffic_light_detection/proto:trafficlights_detection_component_cc_proto", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/traffic_light_detection/README.md b/modules/perception/traffic_light_detection/README.md index e69de29bb2d..3006b99bf71 100644 --- a/modules/perception/traffic_light_detection/README.md +++ b/modules/perception/traffic_light_detection/README.md @@ -0,0 +1,39 @@ +# Module Name +traffic_light_detection + +# Introduction +After the previous projection in the preprocessing stage, a projection frame is obtained on the picture, but the obtained projection frame is not completely reliable, so a larger region of interest (Region of Interest ROI) to be calculated by the projected signal light position is used. to determine the exact bounding box of the semaphore. Signal light detection (detect) is a conventional convolutional neural network detection task, which receives images with ROI information as input data and sequentially outputs bounding boxes. + +# Directory Structure +``` +├── traffic_light_detection // trafficlight detection module + ├── conf // module configuration files + ├── dag // dag files + ├── data // model params + ├── detection // main part for detect + ├── interface // function interface folder + ├── launch // launch files + ├── proto // proto files + ├── traffic_light_detection_component.cc // component interface + ├── traffic_light_detection_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `onboard::TrafficDetectMessage` | trafficlight message | + + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::TrafficDetectMessage` | trafficlight message | + +# How to Launch +```bash +cyber_launch start modules/perception/traffic_light_detection/launch/traffic_light_detection.launch +``` \ No newline at end of file diff --git a/modules/perception/traffic_light_detection/detection/BUILD b/modules/perception/traffic_light_detection/detection/BUILD deleted file mode 100644 index d121710d954..00000000000 --- a/modules/perception/traffic_light_detection/detection/BUILD +++ /dev/null @@ -1,54 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "detection", - srcs = ["detection.cc"], - hdrs = ["detection.h"], - deps = [ - ":cropbox", - ":select", - "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/base", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/camera/common", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/inference/utils:inference_resize_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/traffic_light_detection/detection/proto:model_param_cc_proto", - "//modules/perception/traffic_light_detection/interface:base_traffic_light_detector", - ], - alwayslink = True, -) - -cc_library( - name = "select", - srcs = ["select.cc"], - hdrs = ["select.h"], - deps = [ - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/algorithm/graph:hungarian_optimizer", - "//modules/perception/common/algorithm/graph:secure_matrix", - ], -) - -cc_library( - name = "cropbox", - srcs = ["cropbox.cc"], - hdrs = ["cropbox.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/traffic_light_detection/interface/BUILD b/modules/perception/traffic_light_detection/interface/BUILD deleted file mode 100644 index b0d0ad9e83a..00000000000 --- a/modules/perception/traffic_light_detection/interface/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_traffic_light_detector", - hdrs = ["base_traffic_light_detector.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/traffic_light_recognition/BUILD b/modules/perception/traffic_light_recognition/BUILD index b64783bd176..894b8e05555 100644 --- a/modules/perception/traffic_light_recognition/BUILD +++ b/modules/perception/traffic_light_recognition/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -13,18 +12,35 @@ filegroup( "dag/**", "data/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libcomponent_traffic_light_recognition.so", - linkshared = True, - linkstatic = True, - deps = [":perception_component_traffic_recognition"], +apollo_cc_library( + name = "apollo_perception_traffic_light_recognition", + srcs = [ + "recognition/classify.cc", + "recognition/recognition.cc", + ], + hdrs = [ + "interface/base_traffic_light_recognitor.h", + "recognition/classify.h", + "recognition/recognition.h", + ], + deps = [ + "//cyber", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/inference:apollo_perception_common_inference", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/traffic_light_recognition/proto:trafficlights_recognition_component_cc_proto", + "//modules/perception/traffic_light_recognition/recognition/proto:model_param_cc_proto", + ], ) -cc_library( - name = "perception_component_traffic_recognition", +apollo_component( + name = "libcomponent_traffic_light_recognition.so", srcs = [ "traffic_light_recognition_component.cc", ], @@ -34,14 +50,13 @@ cc_library( copts = PERCEPTION_COPTS, deps = [ "//cyber", - "//modules/perception/traffic_light_recognition/interface:base_traffic_light_recognitor", - "//modules/perception/traffic_light_recognition/recognition:recognition", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/onboard/inner_component_messages:traffic_inner_component_messages", + ":apollo_perception_traffic_light_recognition", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/traffic_light_recognition/proto:trafficlights_recognition_component_cc_proto", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/traffic_light_recognition/README.md b/modules/perception/traffic_light_recognition/README.md index e69de29bb2d..cd2957d6ceb 100644 --- a/modules/perception/traffic_light_recognition/README.md +++ b/modules/perception/traffic_light_recognition/README.md @@ -0,0 +1,39 @@ +# Module Name +traffic_light_recognition + +# Introduction +The purpose of the traffic light recognition module is to recognize the color of the traffic light. This task is completed using a conventional convolutional neural network. The input of the recognition module is an image with ROI information and a set of bounding box information as input data, and the output is a four-dimensional vector. , respectively represent the probability that each bounding box is black, red, yellow and green, if and only if the probability is large enough, the class with the highest probability will be identified as the state of the signal light. Otherwise the semaphore state is set to Unknown, indicating that the state is undetermined. + +# Directory Structure +``` +├── traffic_light_recognition // trafficlight recognition module + ├── conf // module configuration files + ├── dag // dag files + ├── data // model params + ├── detection // main part for recogn + ├── interface // function interface folder + ├── launch // launch files + ├── proto // proto files + ├── traffic_light_recognition_component.cc // component interface + ├── traffic_light_recognition_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `onboard::TrafficDetectMessage` | trafficlight message | + + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::TrafficDetectMessage` | trafficlight message | + +# How to Launch +```bash +cyber_launch start modules/perception/traffic_light_recognition/launch/traffic_light_recognition.launch +``` \ No newline at end of file diff --git a/modules/perception/traffic_light_recognition/interface/BUILD b/modules/perception/traffic_light_recognition/interface/BUILD deleted file mode 100644 index 8a9151432ac..00000000000 --- a/modules/perception/traffic_light_recognition/interface/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_traffic_light_recognitor", - hdrs = ["base_traffic_light_recognitor.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/traffic_light_recognition/recognition/BUILD b/modules/perception/traffic_light_recognition/recognition/BUILD deleted file mode 100644 index ffc69e40d42..00000000000 --- a/modules/perception/traffic_light_recognition/recognition/BUILD +++ /dev/null @@ -1,40 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "classify", - srcs = ["classify.cc"], - hdrs = ["classify.h"], - deps = [ - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/inference:inference_factory", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/common/inference:model_util", - "//modules/perception/common/inference/utils:inference_resize_lib", - "//modules/perception/common/inference/utils:inference_util_lib", - "//modules/perception/traffic_light_recognition/interface:base_traffic_light_recognitor", - "//modules/perception/traffic_light_recognition/recognition/proto:model_param_cc_proto", - ], -) - -cc_library( - name = "recognition", - srcs = ["recognition.cc"], - hdrs = ["recognition.h"], - deps = [ - ":classify", - "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/inference:inference_lib", - "//modules/perception/traffic_light_recognition/interface:base_traffic_light_recognitor", - "//modules/perception/traffic_light_recognition/recognition/proto:model_param_cc_proto", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/traffic_light_region_proposal/BUILD b/modules/perception/traffic_light_region_proposal/BUILD index 014d0ad1393..78e969faf25 100644 --- a/modules/perception/traffic_light_region_proposal/BUILD +++ b/modules/perception/traffic_light_region_proposal/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -12,28 +11,62 @@ filegroup( "conf/**", "dag/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libtraffic_component_proposal.so", - linkshared = True, - linkstatic = True, - deps = [":perception_component_traffic_proposal"], +apollo_cc_library( + name = "apollo_perception_traffic_light_region_proposal", + srcs = [ + "preprocessor/multi_camera_projection.cc", + "preprocessor/tl_preprocessor.cc", + ], + hdrs = [ + "interface/base_tl_preprocessor.h", + "preprocessor/multi_camera_projection.h", + "preprocessor/tl_preprocessor.h", + ], + deps = [ + "//cyber", + "//modules/common/math", + "//modules/common/util:util_tool", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/basic_msgs:header_cc_proto", + "//modules/common_msgs/map_msgs:map_cc_proto", + "//modules/common_msgs/map_msgs:map_geometry_cc_proto", + "//modules/common_msgs/perception_msgs:perception_camera_cc_proto", + "//modules/common_msgs/perception_msgs:perception_lane_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "//modules/common_msgs/transform_msgs:transform_cc_proto", + "//modules/perception/common/algorithm:apollo_perception_common_algorithm", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/hdmap:apollo_perception_common_hdmap", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/traffic_light_region_proposal/proto:trafficlights_proposal_component_cc_proto", + "@com_github_gflags_gflags//:gflags", + "@eigen", + ], ) -cc_library( - name = "perception_component_traffic_proposal", +apollo_component( + name = "libtraffic_component_proposal.so", srcs = [ "traffic_light_region_proposal_component.cc", ], hdrs = [ "traffic_light_region_proposal_component.h", ], - linkopts = ["-lpthread"], copts = PERCEPTION_COPTS, + linkopts = ["-lpthread"], deps = [ "//cyber", + ":apollo_perception_traffic_light_region_proposal", + "//modules/common/math", + "//modules/common/util:util_tool", "//modules/common_msgs/basic_msgs:error_code_cc_proto", "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common_msgs/basic_msgs:header_cc_proto", @@ -45,22 +78,15 @@ cc_library( "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", "//modules/common_msgs/transform_msgs:transform_cc_proto", - "//modules/common/math", - "//modules/common/util:util_tool", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/traffic_light_region_proposal/interface:base_tl_preprocessor", - "//modules/perception/traffic_light_region_proposal/preprocessor:tl_preprocessor", - "//modules/perception/common/hdmap:hdmap_input", - "//modules/perception/common/onboard/common_flags", - "//modules/perception/common/onboard/msg_serializer", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/hdmap:apollo_perception_common_hdmap", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/traffic_light_region_proposal/proto:trafficlights_proposal_component_cc_proto", - "//modules/perception/common/onboard/transform_wrapper", - "//modules/perception/common/onboard/inner_component_messages:traffic_inner_component_messages", "@eigen", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/traffic_light_region_proposal/README.md b/modules/perception/traffic_light_region_proposal/README.md index e69de29bb2d..d51371456a5 100644 --- a/modules/perception/traffic_light_region_proposal/README.md +++ b/modules/perception/traffic_light_region_proposal/README.md @@ -0,0 +1,38 @@ +# Module Name +traffic_light_region_proposal + +# Introduction +This module is used to query positioning and map signal light information, select a camera for detecting traffic lights according to the projection of the signal light on the image plane, and finally save the camera selection result. + +# Directory Structure +``` +├── traffic_light_region_proposal // trafficlight region proposal module + ├── conf // module configuration files + ├── dag // dag files + ├── interface // function interface folder + ├── launch // launch files + ├── preprocessor // main part for preprocess + ├── proto // proto files + ├── traffic_light_region_proposal_component.cc // component interface + ├── traffic_light_region_proposal_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `msg` | `apollo::drivers::Image` | camera sensor image | +| `hd-map` | `HDMapInput` | HD map | + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `frame` | `onboard::TrafficDetectMessage` | trafficlight message | + +# How to Launch +```bash +cyber_launch start modules/perception/traffic_light_region_proposal/launch/traffic_light_region_proposal.launch +``` \ No newline at end of file diff --git a/modules/perception/traffic_light_region_proposal/interface/BUILD b/modules/perception/traffic_light_region_proposal/interface/BUILD deleted file mode 100644 index 1d37d172010..00000000000 --- a/modules/perception/traffic_light_region_proposal/interface/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_tl_preprocessor", - hdrs = ["base_tl_preprocessor.h"], - deps = [ - "//cyber", - "//modules/perception/common/base:traffic_light", - "//modules/perception/common/camera/common:pose", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/traffic_light_region_proposal/preprocessor/BUILD b/modules/perception/traffic_light_region_proposal/preprocessor/BUILD deleted file mode 100644 index 8b22997824a..00000000000 --- a/modules/perception/traffic_light_region_proposal/preprocessor/BUILD +++ /dev/null @@ -1,41 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "multi_camera_projection", - srcs = ["multi_camera_projection.cc"], - hdrs = ["multi_camera_projection.h"], - deps = [ - "//modules/perception/common/camera/common:pose", - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/algorithm/io:io_util", - "//modules/perception/common/algorithm/sensor_manager", - ], -) - -cc_library( - name = "tl_preprocessor", - srcs = ["tl_preprocessor.cc"], - hdrs = ["tl_preprocessor.h"], - deps = [ - ":multi_camera_projection", - "//modules/perception/common/camera/common:pose", - "//cyber", - "//modules/perception/common/base", - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/traffic_light_region_proposal/interface:base_tl_preprocessor", - "//modules/perception/common/lib/registerer", - "@com_github_gflags_gflags//:gflags", - "@eigen", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/perception/traffic_light_region_proposal/traffic_light_region_proposal_component.h b/modules/perception/traffic_light_region_proposal/traffic_light_region_proposal_component.h index 4042b0f703a..3715d6eaa36 100644 --- a/modules/perception/traffic_light_region_proposal/traffic_light_region_proposal_component.h +++ b/modules/perception/traffic_light_region_proposal/traffic_light_region_proposal_component.h @@ -40,6 +40,8 @@ namespace apollo { namespace perception { namespace onboard { +using apollo::transform::Buffer; + class TrafficLightsPerceptionComponent : public apollo::cyber::Component<> { public: /** diff --git a/modules/perception/traffic_light_tracking/BUILD b/modules/perception/traffic_light_tracking/BUILD index 09d96d14b03..9eb977e653d 100644 --- a/modules/perception/traffic_light_tracking/BUILD +++ b/modules/perception/traffic_light_tracking/BUILD @@ -1,5 +1,4 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) @@ -12,18 +11,36 @@ filegroup( "conf/**", "dag/**", "launch/**", - ]) + ]), ) -cc_binary( - name = "libcomponent_traffic_light_tracking.so", - linkshared = True, - linkstatic = True, - deps = [":perception_component_traffic_tracking"], +apollo_cc_library( + name = "apollo_perception_traffic_light_tracking", + srcs = [ + "tracker/semantic_decision.cc", + "traffic_light_tracking_component.cc", + ], + hdrs = [ + "interface/base_traffic_light_tracker.h", + "tracker/semantic_decision.h", + "traffic_light_tracking_component.h", + ], + deps = [ + "//cyber", + "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", + "//modules/common_msgs/v2x_msgs:v2x_traffic_light_cc_proto", + "//modules/perception/common:perception_common_util", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/lib:apollo_perception_common_lib", + "//modules/perception/common/onboard:apollo_perception_common_onboard", + "//modules/perception/traffic_light_tracking/proto:trafficlights_tracking_component_cc_proto", + "//modules/perception/traffic_light_tracking/tracker/proto:semantic_cc_proto", + "@opencv//:highgui", + ], ) -cc_library( - name = "perception_component_traffic_tracking", +apollo_component( + name = "libcomponent_traffic_light_tracking.so", srcs = [ "traffic_light_tracking_component.cc", ], @@ -33,19 +50,16 @@ cc_library( copts = PERCEPTION_COPTS, deps = [ "//cyber", + ":apollo_perception_traffic_light_tracking", "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", "//modules/common_msgs/v2x_msgs:v2x_traffic_light_cc_proto", - "//modules/perception/common/camera/common:pose", - "//modules/perception/traffic_light_tracking/interface:base_traffic_light_tracker", - "//modules/perception/traffic_light_tracking/tracker:semantic_decision", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/common/onboard/inner_component_messages:traffic_inner_component_messages", + "//modules/perception/common/camera:apollo_perception_common_camera", + "//modules/perception/common/onboard:apollo_perception_common_onboard", "//modules/perception/traffic_light_tracking/proto:trafficlights_tracking_component_cc_proto", - "//modules/perception/common/onboard/common_flags", "@opencv//:highgui", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/perception/traffic_light_tracking/README.md b/modules/perception/traffic_light_tracking/README.md index e69de29bb2d..10263121d95 100644 --- a/modules/perception/traffic_light_tracking/README.md +++ b/modules/perception/traffic_light_tracking/README.md @@ -0,0 +1,43 @@ +# Module Name +traffic_light_tracking + +# Introduction +In the recognition stage, due to occlusion or flashing traffic lights, the output state may not be the real state, so the corresponding result should be corrected. +There are many types of corrections: +First, in the ReviseBySemantic function, the situation of identifying multiple traffic lights is corrected. If there are multiple traffic lights, the color of each traffic light will be identified. If a certain color appears, the color count will be increased by 1. If there is this If the largest number is unique, then this color will be output, if there are two or more color counts tied for first, then unknown will be output +Second, if the recognition result is red or green, it will be output directly. If black or unknown is received, the fixer checks the state save list. If the semaphore state has been determined to persist for some time, then the saved state is output. Otherwise black or unknown output will be output. +Third, because of the chronological relationship, yellow will only appear after green and before red, so to be on the safe side, any yellow that follows red before green will be set to red. + +# Directory Structure +``` +├── traffic_light_tracking // trafficlight tracker module + ├── conf // module configuration files + ├── dag // dag files + ├── data // tracking params + ├── interface // function interface folder + ├── launch // launch files + ├── proto // proto files + ├── tracker // main part for recogn + ├── traffic_light_tracking_component.cc // component interface + ├── traffic_light_tracking_component.h + ├── cyberfile.xml // package management profile + ├── README.md + └── BUILD +``` + +# Module Input and Output +## Input +| Name | Type | Description | +| ----------------- | ------------------------------- | ----------------- | +| `frame` | `onboard::TrafficDetectMessage` | trafficlight message | + + +## Output +| Name | Type | Description | +| ----------------- | ------------------------------- | -------------------- | +| `msg` | `apollo::perception::TrafficLightDetection` | trafficlight output message | + +# How to Launch +```bash +cyber_launch start modules/perception/traffic_light_tracking/launch/traffic_light_tracking.launch +``` \ No newline at end of file diff --git a/modules/perception/traffic_light_tracking/interface/BUILD b/modules/perception/traffic_light_tracking/interface/BUILD deleted file mode 100644 index 11a9515bcf6..00000000000 --- a/modules/perception/traffic_light_tracking/interface/BUILD +++ /dev/null @@ -1,18 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_traffic_light_tracker", - hdrs = ["base_traffic_light_tracker.h"], - deps = [ - "//modules/perception/common/camera/common", - "//modules/perception/common/lib/interface:base_init_options", - "//modules/perception/common/lib/registerer", - ], -) - -apollo_package() -cpplint() diff --git a/modules/perception/traffic_light_tracking/tracker/BUILD b/modules/perception/traffic_light_tracking/tracker/BUILD deleted file mode 100644 index a180010cffd..00000000000 --- a/modules/perception/traffic_light_tracking/tracker/BUILD +++ /dev/null @@ -1,22 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "semantic_decision", - srcs = ["semantic_decision.cc"], - hdrs = ["semantic_decision.h"], - deps = [ - "//cyber", - "//modules/perception/common:util", - "//modules/perception/common/camera/common:trafficlight_frame", - "//modules/perception/traffic_light_tracking/interface:base_traffic_light_tracker", - "//modules/perception/traffic_light_tracking/tracker/proto:semantic_cc_proto", - ], - alwayslink = True, -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/BUILD b/modules/planning/planning_base/BUILD index b9e7ee2f880..bdd55df7316 100644 --- a/modules/planning/planning_base/BUILD +++ b/modules/planning/planning_base/BUILD @@ -1,157 +1,449 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") +load("//tools/platform:build_defs.bzl", "if_gpu") package(default_visibility = ["//visibility:public"]) -# install( -# name = "planning_testdata_install", -# data_dest = if_gpu( -# "planning-gpu/addition_data", -# "planning/addition_data" -# ), -# data = [":planning_testdata"], -# ) +PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] +PLANNING_FOPENMP = [ + "-DMODULE_NAME=\\\"planning\\\"", + "-fopenmp", +] -cc_binary( +apollo_component( name = "libplanning_component.so", - linkshared = True, - linkstatic = True, - deps = [":planning_component_lib"], -) - -cc_library( - name = "planning_component_lib", srcs = ["planning_component.cc"], hdrs = ["planning_component.h"], copts = [ "-DMODULE_NAME=\\\"planning\\\"", ], deps = [ - ":navi_planning", - ":on_lane_planning", + ":apollo_planning_planning_base", "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common/util:util_tool", + "//modules/common_msgs/external_command_msgs:command_status_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", - "//modules/planning/planning_base/common:history", - "//modules/planning/planning_base/common:message_process", + "//modules/common_msgs/planning_msgs:navigation_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", "//modules/common_msgs/storytelling_msgs:story_cc_proto", - "//modules/common_msgs/external_command_msgs:command_status_cc_proto", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/task_base/common:trajectory_optimizer" ], - alwayslink = True, ) - -cc_library( - name = "planning_base", - srcs = ["planning_base.cc"], - hdrs = ["planning_base.h"], +apollo_cc_library( + name = "apollo_planning_planning_base", copts = [ "-fopenmp", - "-DMODULE_NAME=\\\"planning\\\"" + "-DMODULE_NAME=\\\"planning\\\"", + ], + linkopts = ["-lgomp"], + srcs = [ + "common/config_util.cc", + "common/ego_info.cc", + "common/feature_output.cc", + "common/frame.cc", + "common/history.cc", + "common/learning_based_data.cc", + "common/message_process.cc", + "common/obstacle.cc", + "common/obstacle_blocking_analyzer.cc", + "common/open_space_info.cc", + "common/path/discretized_path.cc", + "common/path/frenet_frame_path.cc", + "common/path/path_data.cc", + "common/path_boundary.cc", + "common/path_decision.cc", + "common/planning_context.cc", + "common/planning_gflags.cc", + "common/reference_line_info.cc", + "common/smoothers/smoother.cc", + "common/speed/speed_data.cc", + "common/speed/st_boundary.cc", + "common/speed/st_point.cc", + "common/speed_limit.cc", + "common/speed_profile_generator.cc", + "common/st_graph_data.cc", + "common/trajectory/discretized_trajectory.cc", + "common/trajectory/publishable_trajectory.cc", + "common/trajectory1d/constant_deceleration_trajectory1d.cc", + "common/trajectory1d/constant_jerk_trajectory1d.cc", + "common/trajectory1d/piecewise_acceleration_trajectory1d.cc", + "common/trajectory1d/piecewise_jerk_trajectory1d.cc", + "common/trajectory1d/piecewise_trajectory1d.cc", + "common/trajectory1d/standing_still_trajectory1d.cc", + "common/trajectory_evaluator.cc", + "common/trajectory_stitcher.cc", + "common/util/common.cc", + "common/util/math_util.cc", + "common/util/print_debug_info.cc", + "common/util/util.cc", + "constraint_checker/collision_checker.cc", + "constraint_checker/constraint_checker.cc", + "constraint_checker/constraint_checker1d.cc", + "lattice/behavior/feasible_region.cc", + "lattice/behavior/path_time_graph.cc", + "lattice/behavior/prediction_querier.cc", + "lattice/trajectory_generation/backup_trajectory_generator.cc", + "lattice/trajectory_generation/end_condition_sampler.cc", + "lattice/trajectory_generation/lateral_osqp_optimizer.cc", + "lattice/trajectory_generation/lateral_qp_optimizer.cc", + "lattice/trajectory_generation/lattice_trajectory1d.cc", + "lattice/trajectory_generation/piecewise_braking_trajectory_generator.cc", + "lattice/trajectory_generation/trajectory1d_generator.cc", + "lattice/trajectory_generation/trajectory_combiner.cc", + "lattice/trajectory_generation/trajectory_evaluator.cc", + "learning_based/img_feature_renderer/birdview_img_feature_renderer.cc", + "learning_based/model_inference/trajectory_imitation_libtorch_inference.cc", + "math/curve1d/cubic_polynomial_curve1d.cc", + "math/curve1d/piecewise_quintic_spiral_path.cc", + "math/curve1d/quartic_polynomial_curve1d.cc", + "math/curve1d/quintic_polynomial_curve1d.cc", + "math/curve1d/quintic_spiral_path.cc", + "math/curve_math.cc", + "math/discrete_points_math.cc", + "math/discretized_points_smoothing/cos_theta_ipopt_interface.cc", + "math/discretized_points_smoothing/cos_theta_smoother.cc", + "math/discretized_points_smoothing/fem_pos_deviation_ipopt_interface.cc", + "math/discretized_points_smoothing/fem_pos_deviation_osqp_interface.cc", + "math/discretized_points_smoothing/fem_pos_deviation_smoother.cc", + "math/discretized_points_smoothing/fem_pos_deviation_sqp_osqp_interface.cc", + "math/piecewise_jerk/piecewise_jerk_path_problem.cc", + "math/piecewise_jerk/piecewise_jerk_problem.cc", + "math/piecewise_jerk/piecewise_jerk_speed_problem.cc", + "math/polynomial_xd.cc", + "math/smoothing_spline/affine_constraint.cc", + "math/smoothing_spline/osqp_spline_1d_solver.cc", + "math/smoothing_spline/osqp_spline_2d_solver.cc", + "math/smoothing_spline/spline_1d.cc", + "math/smoothing_spline/spline_1d_constraint.cc", + "math/smoothing_spline/spline_1d_kernel.cc", + "math/smoothing_spline/spline_1d_seg.cc", + "math/smoothing_spline/spline_1d_solver.cc", + "math/smoothing_spline/spline_2d.cc", + "math/smoothing_spline/spline_2d_constraint.cc", + "math/smoothing_spline/spline_2d_kernel.cc", + "math/smoothing_spline/spline_2d_seg.cc", + "math/smoothing_spline/spline_seg_kernel.cc", + "navi/decider/navi_obstacle_decider.cc", + "navi/decider/navi_path_decider.cc", + "navi/decider/navi_speed_decider.cc", + "navi/decider/navi_speed_ts_graph.cc", + "navi/decider/navi_task.cc", + "navi_planning.cc", + "on_lane_planning.cc", + "open_space/coarse_trajectory_generator/grid_search.cc", + "open_space/coarse_trajectory_generator/hybrid_a_star.cc", + "open_space/coarse_trajectory_generator/node3d.cc", + "open_space/coarse_trajectory_generator/reeds_shepp_path.cc", + "open_space/trajectory_smoother/distance_approach_ipopt_cuda_interface.cc", + "open_space/trajectory_smoother/distance_approach_ipopt_fixed_dual_interface.cc", + "open_space/trajectory_smoother/distance_approach_ipopt_fixed_ts_interface.cc", + "open_space/trajectory_smoother/distance_approach_ipopt_interface.cc", + "open_space/trajectory_smoother/distance_approach_ipopt_relax_end_interface.cc", + "open_space/trajectory_smoother/distance_approach_ipopt_relax_end_slack_interface.cc", + "open_space/trajectory_smoother/distance_approach_problem.cc", + "open_space/trajectory_smoother/dual_variable_warm_start_ipopt_interface.cc", + "open_space/trajectory_smoother/dual_variable_warm_start_ipopt_qp_interface.cc", + "open_space/trajectory_smoother/dual_variable_warm_start_osqp_interface.cc", + "open_space/trajectory_smoother/dual_variable_warm_start_problem.cc", + "open_space/trajectory_smoother/dual_variable_warm_start_slack_osqp_interface.cc", + "open_space/trajectory_smoother/iterative_anchoring_smoother.cc", + "open_space/utils/open_space_roi_util.cc", + "pipeline/evaluator.cc", + "planner/lattice/lattice_planner.cc", + "planner/navi/navi_planner.cc", + "planner/navi_planner_dispatcher.cc", + "planner/on_lane_planner_dispatcher.cc", + "planner/planner_dispatcher.cc", + "planner/public_road/public_road_planner.cc", + "planner/rtk/rtk_replay_planner.cc", + "planning_base.cc", + "reference_line/discrete_points_reference_line_smoother.cc", + "reference_line/qp_spline_reference_line_smoother.cc", + "reference_line/reference_line.cc", + "reference_line/reference_line_provider.cc", + "reference_line/reference_point.cc", + "reference_line/spiral_problem_interface.cc", + "reference_line/spiral_reference_line_smoother.cc", + "scenario_base/base_stage_creep.cc", + "scenario_base/base_stage_cruise.cc", + "scenario_base/process_result.cc", + "scenario_base/scenario.cc", + "scenario_base/scenario_manager.cc", + "scenario_base/stage.cc", + "scenario_base/traffic_light_base/base_stage_traffic_light_creep.cc", + "scenario_base/traffic_light_base/base_stage_traffic_light_cruise.cc", + "task_base/common/decider.cc", + "task_base/common/lane_change_util/lane_change_util.cc", + "task_base/common/path_generation.cc", + "task_base/common/path_util/path_assessment_decider_util.cc", + "task_base/common/path_util/path_bounds_decider_util.cc", + "task_base/common/path_util/path_optimizer_util.cc", + "task_base/common/speed_optimizer.cc", + "task_base/common/trajectory_optimizer.cc", + "task_base/task.cc", + "task_base/utils/st_gap_estimator.cc", + "traffic_rules_base/traffic_decider.cc", + "traffic_rules_base/traffic_rule.cc", + "tuning/autotuning_mlp_net_model.cc", + "tuning/autotuning_raw_feature_generator.cc", + "tuning/speed_model/autotuning_speed_feature_builder.cc", + "tuning/speed_model/autotuning_speed_mlp_model.cc", + ], + hdrs = [ + "common/config_util.h", + "common/dependency_injector.h", + "common/ego_info.h", + "common/feature_output.h", + "common/frame.h", + "common/history.h", + "common/indexed_list.h", + "common/indexed_queue.h", + "common/learning_based_data.h", + "common/local_view.h", + "common/message_process.h", + "common/obstacle.h", + "common/obstacle_blocking_analyzer.h", + "common/open_space_info.h", + "common/path/discretized_path.h", + "common/path/frenet_frame_path.h", + "common/path/path_data.h", + "common/path_boundary.h", + "common/path_decision.h", + "common/planning_context.h", + "common/planning_gflags.h", + "common/reference_line_info.h", + "common/smoothers/smoother.h", + "common/speed/speed_data.h", + "common/speed/st_boundary.h", + "common/speed/st_point.h", + "common/speed_limit.h", + "common/speed_profile_generator.h", + "common/st_graph_data.h", + "common/trajectory/discretized_trajectory.h", + "common/trajectory/publishable_trajectory.h", + "common/trajectory1d/constant_deceleration_trajectory1d.h", + "common/trajectory1d/constant_jerk_trajectory1d.h", + "common/trajectory1d/piecewise_acceleration_trajectory1d.h", + "common/trajectory1d/piecewise_jerk_trajectory1d.h", + "common/trajectory1d/piecewise_trajectory1d.h", + "common/trajectory1d/standing_still_trajectory1d.h", + "common/trajectory_evaluator.h", + "common/trajectory_stitcher.h", + "common/util/common.h", + "common/util/math_util.h", + "common/util/print_debug_info.h", + "common/util/util.h", + "constraint_checker/collision_checker.h", + "constraint_checker/constraint_checker.h", + "constraint_checker/constraint_checker1d.h", + "lattice/behavior/feasible_region.h", + "lattice/behavior/path_time_graph.h", + "lattice/behavior/prediction_querier.h", + "lattice/trajectory_generation/backup_trajectory_generator.h", + "lattice/trajectory_generation/end_condition_sampler.h", + "lattice/trajectory_generation/lateral_osqp_optimizer.h", + "lattice/trajectory_generation/lateral_qp_optimizer.h", + "lattice/trajectory_generation/lattice_trajectory1d.h", + "lattice/trajectory_generation/piecewise_braking_trajectory_generator.h", + "lattice/trajectory_generation/trajectory1d_generator.h", + "lattice/trajectory_generation/trajectory_combiner.h", + "lattice/trajectory_generation/trajectory_evaluator.h", + "learning_based/img_feature_renderer/birdview_img_feature_renderer.h", + "learning_based/model_inference/model_inference.h", + "learning_based/model_inference/trajectory_imitation_libtorch_inference.h", + "math/curve1d/cubic_polynomial_curve1d.h", + "math/curve1d/curve1d.h", + "math/curve1d/piecewise_quintic_spiral_path.h", + "math/curve1d/polynomial_curve1d.h", + "math/curve1d/quartic_polynomial_curve1d.h", + "math/curve1d/quintic_polynomial_curve1d.h", + "math/curve1d/quintic_spiral_path.h", + "math/curve1d/quintic_spiral_path_with_derivation.h", + "math/curve_math.h", + "math/discrete_points_math.h", + "math/discretized_points_smoothing/cos_theta_ipopt_interface.h", + "math/discretized_points_smoothing/cos_theta_smoother.h", + "math/discretized_points_smoothing/fem_pos_deviation_ipopt_interface.h", + "math/discretized_points_smoothing/fem_pos_deviation_osqp_interface.h", + "math/discretized_points_smoothing/fem_pos_deviation_smoother.h", + "math/discretized_points_smoothing/fem_pos_deviation_sqp_osqp_interface.h", + "math/piecewise_jerk/piecewise_jerk_path_problem.h", + "math/piecewise_jerk/piecewise_jerk_problem.h", + "math/piecewise_jerk/piecewise_jerk_speed_problem.h", + "math/polynomial_xd.h", + "math/smoothing_spline/affine_constraint.h", + "math/smoothing_spline/osqp_spline_1d_solver.h", + "math/smoothing_spline/osqp_spline_2d_solver.h", + "math/smoothing_spline/spline_1d.h", + "math/smoothing_spline/spline_1d_constraint.h", + "math/smoothing_spline/spline_1d_kernel.h", + "math/smoothing_spline/spline_1d_seg.h", + "math/smoothing_spline/spline_1d_solver.h", + "math/smoothing_spline/spline_2d.h", + "math/smoothing_spline/spline_2d_constraint.h", + "math/smoothing_spline/spline_2d_kernel.h", + "math/smoothing_spline/spline_2d_seg.h", + "math/smoothing_spline/spline_2d_solver.h", + "math/smoothing_spline/spline_seg_kernel.h", + "navi/decider/navi_obstacle_decider.h", + "navi/decider/navi_path_decider.h", + "navi/decider/navi_speed_decider.h", + "navi/decider/navi_speed_ts_graph.h", + "navi/decider/navi_task.h", + "navi_planning.h", + "on_lane_planning.h", + "open_space/coarse_trajectory_generator/grid_search.h", + "open_space/coarse_trajectory_generator/hybrid_a_star.h", + "open_space/coarse_trajectory_generator/node3d.h", + "open_space/coarse_trajectory_generator/reeds_shepp_path.h", + "open_space/trajectory_smoother/distance_approach_interface.h", + "open_space/trajectory_smoother/distance_approach_ipopt_cuda_interface.h", + "open_space/trajectory_smoother/distance_approach_ipopt_fixed_dual_interface.h", + "open_space/trajectory_smoother/distance_approach_ipopt_fixed_ts_interface.h", + "open_space/trajectory_smoother/distance_approach_ipopt_interface.h", + "open_space/trajectory_smoother/distance_approach_ipopt_relax_end_interface.h", + "open_space/trajectory_smoother/distance_approach_ipopt_relax_end_slack_interface.h", + "open_space/trajectory_smoother/distance_approach_problem.h", + "open_space/trajectory_smoother/dual_variable_warm_start_ipopt_interface.h", + "open_space/trajectory_smoother/dual_variable_warm_start_ipopt_qp_interface.h", + "open_space/trajectory_smoother/dual_variable_warm_start_osqp_interface.h", + "open_space/trajectory_smoother/dual_variable_warm_start_problem.h", + "open_space/trajectory_smoother/dual_variable_warm_start_slack_osqp_interface.h", + "open_space/trajectory_smoother/iterative_anchoring_smoother.h", + "open_space/utils/open_space_roi_util.h", + "pipeline/evaluator.h", + "pipeline/evaluator_logger.h", + "planner/lattice/lattice_planner.h", + "planner/navi/navi_planner.h", + "planner/navi_planner_dispatcher.h", + "planner/on_lane_planner_dispatcher.h", + "planner/planner.h", + "planner/planner_dispatcher.h", + "planner/public_road/public_road_planner.h", + "planner/rtk/rtk_replay_planner.h", + "planning_base.h", + "reference_line/discrete_points_reference_line_smoother.h", + "reference_line/qp_spline_reference_line_smoother.h", + "reference_line/reference_line.h", + "reference_line/reference_line_provider.h", + "reference_line/reference_line_smoother.h", + "reference_line/reference_point.h", + "reference_line/spiral_problem_interface.h", + "reference_line/spiral_reference_line_smoother.h", + "scenario_base/base_stage_creep.h", + "scenario_base/base_stage_cruise.h", + "scenario_base/process_result.h", + "scenario_base/scenario.h", + "scenario_base/scenario_manager.h", + "scenario_base/stage.h", + "scenario_base/traffic_light_base/base_stage_traffic_light_creep.h", + "scenario_base/traffic_light_base/base_stage_traffic_light_cruise.h", + "task_base/common/decider.h", + "task_base/common/lane_change_util/lane_change_util.h", + "task_base/common/path_generation.h", + "task_base/common/path_util/path_assessment_decider_util.h", + "task_base/common/path_util/path_bounds_decider_util.h", + "task_base/common/path_util/path_optimizer_util.h", + "task_base/common/speed_optimizer.h", + "task_base/common/trajectory_optimizer.h", + "task_base/task.h", + "task_base/utils/st_gap_estimator.h", + "traffic_rules_base/traffic_decider.h", + "traffic_rules_base/traffic_rule.h", + "tuning/autotuning_base_model.h", + "tuning/autotuning_feature_builder.h", + "tuning/autotuning_mlp_net_model.h", + "tuning/autotuning_raw_feature_generator.h", + "tuning/speed_model/autotuning_speed_feature_builder.h", + "tuning/speed_model/autotuning_speed_mlp_model.h", ], deps = [ "//cyber", + "//modules/common/adapters:adapter_gflags", + "//modules/common/configs:config_gflags", + "//modules/common/configs:vehicle_config_helper", + "//modules/common/math", + "//modules/common/math/qp_solver", + "//modules/common/monitor_log", + "//modules/common/status", + "//modules/common/util:common_util", + "//modules/common/util:util_tool", + "//modules/common/vehicle_model", + "//modules/common/vehicle_state:vehicle_state_provider", + "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", + "//modules/common_msgs/basic_msgs:error_code_cc_proto", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common_msgs/dreamview_msgs:chart_cc_proto", + "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/map_msgs:map_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", + "//modules/common_msgs/planning_msgs:decision_cc_proto", + "//modules/common_msgs/planning_msgs:navigation_cc_proto", + "//modules/common_msgs/planning_msgs:pad_msg_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/common_msgs/planning_msgs:planning_command_cc_proto", "//modules/common_msgs/planning_msgs:planning_internal_cc_proto", + "//modules/common_msgs/prediction_msgs:feature_cc_proto", + "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", + "//modules/common_msgs/prediction_msgs:prediction_point_cc_proto", + "//modules/common_msgs/prediction_msgs:scenario_cc_proto", "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "//modules/common/status", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:local_view", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:publishable_trajectory", - "//modules/planning/planning_base/planner:planner_dispatcher", - "//modules/planning/planning_base/planner", + "//modules/common_msgs/storytelling_msgs:story_cc_proto", + "//modules/map:apollo_map", + "//modules/planning/planning_base/learning_based/model_inference/proto:learning_model_inference_cc_proto", + "//modules/planning/planning_base/proto:auto_tuning_model_input_cc_proto", + "//modules/planning/planning_base/proto:auto_tuning_raw_feature_cc_proto", + "//modules/planning/planning_base/proto:lattice_structure_cc_proto", + "//modules/planning/planning_base/proto:learning_data_cc_proto", + "//modules/planning/planning_base/proto:navi_task_config_cc_proto", + "//modules/planning/planning_base/proto:piecewise_jerk_path_config_cc_proto", + "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_decider", - ], -) - -cc_library( - name = "navi_planning", - srcs = ["navi_planning.cc"], - hdrs = ["navi_planning.h"], - copts = [ - "-fopenmp", - "-DMODULE_NAME=\\\"planning\\\"" - ], - deps = [ - ":planning_base", - "//cyber", - "//modules/common_msgs/planning_msgs:pad_msg_cc_proto", - "//modules/common/math", - "//modules/common/util:util_tool", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap:hdmap_util", - "//modules/planning/planning_base/common:ego_info", - "//modules/planning/planning_base/common:history", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:trajectory_stitcher", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/planning/planning_base/planner:planner_dispatcher", - "//modules/planning/planning_base/planner/navi:navi_planner", - "//modules/planning/planning_base/planner/rtk:rtk_planner", - "//modules/planning/planning_base/reference_line:reference_line_provider", - "//modules/planning/planning_base/traffic_rules_base:traffic_decider", + "//modules/planning/planning_base/proto:planning_semantic_map_config_cc_proto", + "//modules/planning/planning_base/proto:planning_status_cc_proto", + "//modules/planning/planning_base/proto:reference_line_smoother_config_cc_proto", + "//modules/planning/planning_base/proto:st_drivable_boundary_cc_proto", + "//modules/planning/planning_base/proto/math:cos_theta_smoother_config_cc_proto", + "//modules/planning/planning_base/proto/math:fem_pos_deviation_smoother_config_cc_proto", + "//modules/planning/planning_base/proto/math:qp_problem_cc_proto", + "//modules/planning/planning_base/scenario_base/proto:creep_stage_cc_proto", + "//modules/planning/planning_base/scenario_base/proto:scenario_pipeline_cc_proto", + "//modules/planning/planning_base/traffic_rules_base/proto:traffic_rules_cc_proto", + "//modules/prediction:apollo_prediction_network", + "@adolc", + "@boost", + "@com_github_gflags_gflags//:gflags", + "@com_google_absl//:absl", + "@com_google_googletest//:gtest", + "@com_google_googletest//:gtest_main", "@com_google_protobuf//:protobuf", - ], + "@eigen", + "@ipopt", + "@libtorch_cpu", + "@opencv//:core", + "@opencv//:imgcodecs", + "@osqp", + ] + if_gpu([":planning_block"]), ) -cc_library( - name = "on_lane_planning", - srcs = ["on_lane_planning.cc"], - hdrs = ["on_lane_planning.h"], - copts = [ - "-fopenmp", - "-DMODULE_NAME=\\\"planning\\\"", - ], +cuda_library( + name = "planning_block", + srcs = ["open_space/trajectory_smoother/planning_block.cu"], + hdrs = ["open_space/trajectory_smoother/planning_block.h"], deps = [ - ":planning_base", - "//cyber", - "//modules/common_msgs/planning_msgs:planning_internal_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "//modules/common/math", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap:hdmap_util", - "//modules/planning/planning_base/common:ego_info", - "//modules/planning/planning_base/common:history", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:trajectory_stitcher", - "//modules/planning/planning_base/common/smoothers:smoother", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/planning/planning_base/learning_based/img_feature_renderer:birdview_img_feature_renderer", - "//modules/planning/planning_base/planner:planner_dispatcher", - "//modules/planning/planning_base/planner/rtk:rtk_planner", - "//modules/planning/planning_base/proto:planning_semantic_map_config_cc_proto", - "//modules/planning/planning_base/reference_line:reference_line_provider", - "//modules/planning/planning_base/traffic_rules_base:traffic_decider", - "@com_google_absl//:absl", - "@com_google_googletest//:gtest_main", + "@local_config_cuda//cuda:cuda_headers", + "@local_config_cuda//cuda:cudart", ], + mandatory = False, ) filegroup( @@ -176,117 +468,690 @@ filegroup( ]) + [":planning_conf"], ) -# install( -# name = "install", -# data_dest = if_gpu( -# "planning-gpu", -# "planning" -# ), -# library_dest = if_gpu( -# "planning-gpu/lib", -# "planning/lib" -# ), -# data = [ -# ":runtime_data", - -# ] + if_gpu( -# ["planning-gpu.BUILD", "cyberfile_gpu.xml",], -# ["planning.BUILD", "cyberfile_cpu.xml",] -# ), -# rename= if_gpu( -# {"planning-gpu/cyberfile_gpu.xml": "cyberfile.xml"}, -# {"planning/cyberfile_cpu.xml": "cyberfile.xml"} -# ), -# targets = [ -# ":libplanning_component.so", -# "//modules/planning/planning_base/common:libplanning_gflags.so" -# ], -# deps = [ -# ":pb_planning", -# ":planning_testdata_install", -# "//modules/planning/planning_base/proto:py_pb_planning", -# "//modules/planning/scenarios:install", -# "//modules/planning/planning_base/common:install", -# "//modules/planning/tasks:install", -# "//modules/planning/planning_base/proto:pb_hdrs_planning", -# ], -# ) - -# install_files( -# name = "pb_planning", -# dest = if_gpu( -# "planning-gpu", -# "planning" -# ), -# files = [ -# "//modules/planning/planning_base/proto:auto_tuning_raw_feature_py_pb2", -# "//modules/common_msgs/planning_msgs:decision_py_pb2", -# "//modules/planning/planning_base/proto:ipopt_return_status_py_pb2", -# "//modules/planning/planning_base/proto:lattice_structure_py_pb2", -# "//modules/planning/planning_base/proto:learning_data_py_pb2", -# "//modules/common_msgs/control_msgs:control_pad_msg_py_pb2", -# "//modules/common_msgs/planning_msgs:planning_internal_py_pb2", -# "//modules/common_msgs/planning_msgs:planning_py_pb2", -# "//modules/planning/planning_base/proto:planning_semantic_map_config_py_pb2", -# "//modules/planning/planning_base/proto:planning_status_py_pb2", -# "//modules/planning/planning_base/proto:reference_line_smoother_config_py_pb2", -# "//modules/common_msgs/planning_msgs:sl_boundary_py_pb2", -# "//modules/planning/planning_base/proto:st_drivable_boundary_py_pb2", -# "//modules/planning/planning_base/proto:traffic_rule_config_py_pb2", -# "//modules/planning/planning_base/proto/math:cos_theta_smoother_config_py_pb2", -# "//modules/planning/planning_base/proto/math:qp_problem_py_pb2", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_planning_src", -# ":install_planning_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_planning_src", -# src_dir = ["."], -# dest = if_gpu( -# "planning-gpu/src", -# "planning/src" -# ), -# filter = "*", -# ) - -# install_src_files( -# name = "install_planning_hdrs", -# src_dir = ["."], -# dest = if_gpu( -# "planning-gpu/include", -# "planning/include" -# ), -# filter = "*.h", -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "planning/include", -# data = [ -# "//modules/planning/planning_base/proto:st_drivable_boundary_py_pb2", -# "//modules/planning/planning_base/proto:planning_semantic_map_config_py_pb2", -# "//modules/planning/planning_base/proto:traffic_rule_config_py_pb2", -# "//modules/planning/planning_base/proto:planning_status_py_pb2", -# "//modules/planning/planning_base/proto:lattice_structure_py_pb2", -# "//modules/planning/planning_base/proto:learning_data_py_pb2", -# "//modules/planning/planning_base/proto:auto_tuning_model_input_py_pb2", -# "//modules/planning/planning_base/proto:auto_tuning_raw_feature_py_pb2", -# "//modules/planning/planning_base/proto:reference_line_smoother_config_py_pb2", -# "//modules/planning/planning_base/proto:ipopt_return_status_py_pb2", -# "//modules/planning/planning_base/proto/math:fem_pos_deviation_smoother_config_py_pb2", -# "//modules/planning/planning_base/proto:planner_open_space_config_py_pb2", -# "//modules/planning/planning_base/proto:navi_task_config_py_pb2", -# "//modules/planning/planning_base/proto:planning_config_py_pb2", -# "//modules/planning/planning_base/proto:plugin_declare_info_py_pb2", -# ], -# ) +apollo_cc_test( + name = "distance_approach_ipopt_interface_test", + size = "small", + srcs = ["open_space/trajectory_smoother/distance_approach_ipopt_interface_test.cc"], + copts = PLANNING_FOPENMP, + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "navi_planner_test", + size = "small", + srcs = ["planner/navi/navi_planner_test.cc"], + data = ["//modules/planning/planning_base:planning_testdata"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "rtk_replay_planner_test", + size = "small", + srcs = ["planner/rtk/rtk_replay_planner_test.cc"], + data = ["//modules/planning/planning_base:planning_testdata"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "spiral_reference_line_smoother_test", + size = "small", + srcs = ["reference_line/spiral_reference_line_smoother_test.cc"], + data = [ + "//modules/planning/planning_base:planning_conf", + ], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "qp_spline_reference_line_smoother_test", + size = "small", + srcs = ["reference_line/qp_spline_reference_line_smoother_test.cc"], + data = [ + "//modules/planning/planning_base:planning_conf", + "//modules/planning/planning_base:planning_testdata", + ], + deps = [ + ":apollo_planning_planning_base", + "//modules/map:apollo_map", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "autotuning_speed_feature_builder_test", + size = "small", + srcs = ["tuning/speed_model/autotuning_speed_feature_builder_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "autotuning_speed_mlp_model_test", + size = "small", + srcs = ["tuning/speed_model/autotuning_speed_mlp_model_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], + tags = ["exclude"] +) + +apollo_cc_test( + name = "autotuning_raw_feature_generator_test", + size = "small", + srcs = ["tuning/autotuning_raw_feature_generator_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "autotuning_mlp_net_model_test", + size = "small", + srcs = ["tuning/autotuning_mlp_net_model_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], + tags = ["exclude"] +) + +apollo_cc_test( + name = "discrete_points_reference_line_smoother_test", + size = "small", + srcs = ["reference_line/discrete_points_reference_line_smoother_test.cc"], + data = [ + "//modules/planning/planning_base:planning_conf", + "//modules/planning/planning_base:planning_testdata", + ], + deps = [ + ":apollo_planning_planning_base", + "//modules/map:apollo_map", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_binary( + name = "smoother_util", + srcs = ["reference_line/smoother_util.cc"], + deps = [ + ":apollo_planning_planning_base", + "//modules/planning/planning_base/proto:planning_config_cc_proto", + ], +) + +apollo_cc_binary( + name = "spiral_smoother_util", + srcs = ["reference_line/spiral_smoother_util.cc"], + deps = [ + ":apollo_planning_planning_base", + "//modules/planning/planning_base/proto:planning_config_cc_proto", + ], +) + +apollo_cc_test( + name = "public_road_planner_test", + size = "small", + srcs = ["planner/public_road/public_road_planner_test.cc"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "on_lane_planner_dispatcher_test", + size = "small", + srcs = ["planner/on_lane_planner_dispatcher_test.cc"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "navi_planner_dispatcher_test", + size = "small", + srcs = ["planner/navi_planner_dispatcher_test.cc"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "distance_approach_ipopt_cuda_interface_test", + size = "small", + srcs = ["open_space/trajectory_smoother/distance_approach_ipopt_cuda_interface_test.cc"], + copts = PLANNING_FOPENMP, + linkopts = ["-lgomp"], + linkstatic = True, + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "distance_approach_problem_test", + size = "small", + srcs = ["open_space/trajectory_smoother/distance_approach_problem_test.cc"], + copts = PLANNING_FOPENMP, + linkopts = ["-lgomp"], + linkstatic = True, + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "dual_variable_warm_start_ipopt_interface_test", + size = "small", + srcs = ["open_space/trajectory_smoother/dual_variable_warm_start_ipopt_interface_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "dual_variable_warm_start_osqp_interface_test", + size = "small", + srcs = ["open_space/trajectory_smoother/dual_variable_warm_start_osqp_interface_test.cc"], + linkstatic = True, + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + "@ipopt", + ], +) + +apollo_cc_test( + name = "dual_variable_warm_start_problem_test", + size = "small", + srcs = ["open_space/trajectory_smoother/dual_variable_warm_start_problem_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "indexed_list_test", + size = "small", + srcs = ["common/indexed_list_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "@boost", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "indexed_queue_test", + size = "small", + srcs = ["common/indexed_queue_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "obstacle_test", + size = "small", + srcs = ["common/obstacle_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "//modules/common_msgs/perception_msgs:perception_lane_cc_proto", + "@boost", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "reference_line_info_test", + size = "small", + srcs = ["common/reference_line_info_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "speed_profile_generator_test", + size = "small", + srcs = ["common/speed_profile_generator_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "frame_test", + size = "small", + srcs = ["common/frame_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "//modules/map:apollo_map", + "//modules/planning/planning_base/proto:planning_config_cc_proto", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "quartic_polynomial_curve1d_test", + size = "small", + srcs = ["math/curve1d/quartic_polynomial_curve1d_test.cc"], + copts = PLANNING_COPTS, + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "cubic_polynomial_curve1d_test", + size = "small", + srcs = ["math/curve1d/cubic_polynomial_curve1d_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "osqp_spline_2d_solver_test", + size = "small", + srcs = ["math/smoothing_spline/osqp_spline_2d_solver_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "spline_1d_kernel_test", + size = "small", + srcs = ["math/smoothing_spline/spline_1d_kernel_test.cc"], + linkopts = ["-lm"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "spline_1d_constraint_test", + size = "small", + srcs = ["math/smoothing_spline/spline_1d_constraint_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "reeds_shepp_path_test", + size = "small", + srcs = ["open_space/coarse_trajectory_generator/reeds_shepp_path_test.cc"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "//modules/common/configs:vehicle_config_helper", + "//modules/common/math", + "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "node3d_test", + size = "small", + srcs = ["open_space/coarse_trajectory_generator/node3d_test.cc"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "hybrid_a_star_test", + size = "small", + srcs = ["open_space/coarse_trajectory_generator/hybrid_a_star_test.cc"], + linkopts = ["-lgomp"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "navi_decider_test", + size = "small", + srcs = [ + "navi/decider/navi_obstacle_decider_test.cc", + "navi/decider/navi_path_decider_test.cc", + "navi/decider/navi_speed_decider_test.cc", + "navi/decider/navi_speed_ts_graph_test.cc", + ], + data = ["//modules/planning/planning_base:planning_testdata"], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "spline_2d_kernel_test", + size = "small", + srcs = ["math/smoothing_spline/spline_2d_kernel_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "spline_2d_constraint_test", + size = "small", + srcs = ["math/smoothing_spline/spline_2d_constraint_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "quintic_polynomial_curve1d_test", + size = "small", + srcs = ["math/curve1d/quintic_polynomial_curve1d_test.cc"], + copts = PLANNING_COPTS, + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "piecewise_quintic_spiral_path_test", + size = "small", + srcs = ["math/curve1d/piecewise_quintic_spiral_path_test.cc"], + copts = PLANNING_COPTS, + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "curve_math_test", + size = "small", + srcs = ["math/curve_math_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "model_inference_test", + size = "medium", + srcs = ["learning_based/model_inference/model_inference_test.cc"], + copts = PLANNING_COPTS, + deps = [ + ":apollo_planning_planning_base", + "//modules/common/configs:config_gflags", + "@com_google_googletest//:gtest", + ], + linkstatic = True, + tags = ["exclude"] +) + +apollo_cc_test( + name = "history_test", + size = "small", + srcs = ["common/history_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "speed_limit_test", + size = "small", + srcs = ["common/speed_limit_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ego_info_test", + size = "small", + srcs = ["common/ego_info_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "open_space_info_test", + size = "small", + srcs = ["common/open_space_info_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "@boost", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "discretized_path_test", + size = "small", + srcs = ["common/path/discretized_path_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "frenet_frame_path_test", + size = "small", + srcs = ["common/path/frenet_frame_path_test.cc"], + linkstatic = True, + deps = [ + ":apollo_planning_planning_base", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "st_boundary_test", + size = "small", + srcs = ["common/speed/st_boundary_test.cc"], + copts = PLANNING_COPTS, + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "st_graph_data_test", + size = "small", + srcs = ["common/st_graph_data_test.cc"], + deps = [ + ":apollo_planning_planning_base", + "//cyber", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "discretized_trajectory_test", + size = "small", + srcs = ["common/trajectory/discretized_trajectory_test.cc"], + data = [ + "//modules/planning/planning_base:planning_testdata", + ], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "publishable_trajectory_test", + size = "small", + srcs = ["common/trajectory/publishable_trajectory_test.cc"], + data = [ + "//modules/planning/planning_base:planning_testdata", + ], + deps = [ + ":apollo_planning_planning_base", + "//modules/common/util:common_util", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_binary( + name = "hybrid_a_star_wrapper_lib.so", + srcs = ["open_space/tools/hybrid_a_star_wrapper.cc"], + linkshared = True, + linkstatic = False, + deps = [ + ":apollo_planning_planning_base", + ], +) + +apollo_cc_binary( + name = "distance_approach_problem_wrapper_lib.so", + srcs = ["open_space/tools/distance_approach_problem_wrapper.cc"], + copts = ["-fopenmp"], + linkshared = True, + linkstatic = False, + deps = [ + ":apollo_planning_planning_base", + ], +) + +apollo_cc_binary( + name = "open_space_roi_wrapper_lib.so", + srcs = ["open_space/tools/open_space_roi_wrapper.cc"], + copts = [ + "-DMODULE_NAME=\\\"planning\\\"", + ], + linkshared = True, + linkstatic = False, + deps = [ + "//cyber", + "//modules/common/math", + "//modules/map:apollo_map", + ":apollo_planning_planning_base", + "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", + "@eigen", + ], +) + +apollo_cc_binary( + name = "evaluate_trajectory", + srcs = ["pipeline/evaluate_trajectory.cc"], + copts = PLANNING_COPTS, + deps = [ + ":apollo_planning_planning_base", + ], +) + +apollo_cc_binary( + name = "record_to_learning_data", + srcs = ["pipeline/record_to_learning_data.cc"], + copts = PLANNING_COPTS, + deps = [ + ":apollo_planning_planning_base", + ], +) + +apollo_cc_binary( + name = "planning_pad_terminal", + srcs = ["tools/pad_terminal.cc"], + deps = [ + "//cyber", + "//modules/common/adapters:adapter_gflags", + "//modules/common/util:util_tool", + ":apollo_planning_planning_base", + "//modules/common_msgs/planning_msgs:pad_msg_cc_proto", + "//modules/planning/planning_base/proto:planning_config_cc_proto", + "@com_github_gflags_gflags//:gflags", + ], +) + +apollo_cc_binary( + name = "inference_demo", + srcs = ["tools/inference_demo.cc"], + deps = [ + "@com_github_gflags_gflags//:gflags", + "@libtorch_cpu", + ], +) apollo_package() + cpplint() diff --git a/modules/planning/planning_base/README.md b/modules/planning/planning_base/README.md deleted file mode 100644 index 04499e1dba6..00000000000 --- a/modules/planning/planning_base/README.md +++ /dev/null @@ -1,205 +0,0 @@ -# Planning - -## Introduction - -Prior to the 5.5 release, Apollo uses the same configuration and parameters to -plan different driving scenarios. Although linear and easy to implement, this -approach was not flexible or scenario specific. As Apollo matures and takes on -different road conditions and driving use cases, we felt the need to move to a -more modular, scenario specific and wholistic approach for planning its -trajectory. In this approach, each driving use case is treated as a different -driving scenario. This is useful because an issue now reported in a particular -scenario can be fixed without affecting the working of other scenarios as -opposed to the previous versions, wherein an issue fix affected other driving -use cases as they were all treated as a single driving scenario. - -Apollo 5.5, which focuses on curb-to-curb autonomous driving on urban roads, -introduced 2 new planning scenarios. - -Apollo 6.0 extended the technology to incorporate data-driven mothedologies to tackle trajectory planning problems with learning-based models, and introduced two new planning modes: E2E mode and Hybrid mode, by which the new capability of dynamically nudginng moving obstacles are demonstrated. In these two modes, a series of APIs is also defined where developers can generate their own training data and integrate their own models. - -**Note:** The current development of E2E mode is in an early stage where the model is trained for the dynamic nudge scenario as a research demonstration purpose. The capability of the model is limited, and suboptimality is expected when it is tested with a wider selection of scenarios. E2E mode and Hybrid mode are not tested on real roads yet, but rather serve as a baseline to promote and encourage extensive research on learning based planning. All developers are welcome to collaborate with us by any means including algorithms, models and data. - -## E2E Mode - ![](images/e2e_mode.png) -### How to Enable -- Change the configuration "learning_mode" in apollo/modules/planning/planning_base/conf/planning_config.pb.txt to be "E2E_TEST" if Apollo is run in simulation or "E2E" on real vehicle -- Change the configuration "model_type" in apollo/modules/planning/planning_base/conf/scenario/learning_model_sample_config.pb.txt to be either "CNN_LSTM" or "CNN" and adapt the following "cpu_model_file" and "gpu_model_file" file paths. "CNN_LSTM" is the preferred model for now. - -### Model Inputs and Outputs -- Model input consists of a birdview image centered by vehicle pose and vehicle current velocity. -- Model output is planning trajectory - -## Hybrid Mode - ![](images/hybrid_mode.png) -### How to Enable -In configuration file, -``` -./modules/planning/planning_base/conf/planning_config.pb.txt -``` -set learning_mode: `learning_mode: ` as `HYBRID` for road test or `HYBRID_TEST` for simulation. - -### Parameters -The configurable parameters in hybrid model are listed in the configuration file -``` -modules/planning/planning_base/conf/scenario/lane_follow_hybrid_config.pb.txt -``` -The parameter `path_reference_l_weight` is for adjusting hybrid model path output. A larger value of `path_reference_l_weight` means higher penalty of the difference between hybrid model path and learning model path in lateral direction. - -## Apollo 5.5 vs E2E Mode vs Hybrid Mode - -We demonstrate simulation results on a dynamic nudge scenario with Apollo 5.5, E2E mode, and Hybrid mode. - -- Apollo 5.5 - -![](images/sim_rule.gif) - -- E2E Mode - -![](images/sim_e2e.gif) - -- Hybrid Mode - -![](images/sim_hybrid.gif) - -## Driving Scenarios - -There are 5 main driving scenarios that we will focus on Lane Follow, Intersection, Pull-Over, and the newly introduced Park-and-go and Emergency. Let's dive into them individually: - -### Lane Follow - Default - -As seen in the figure below, the lane-follow scenario, our default driving scenario, includes but is not limited to driving in a single lane (like cruising) or changing lane, following basic traffic convention or basic turning. - - ![](images/planning_default.png) - -> Note: Side Pass -> -> > While the functionality of side pass still exists, it has now been made universal rather than limiting it to a type of scenario. The side-pass feature is incorporated as part of the path-bounds decider task. You can choose to turn it on or off by properly configuring the path-lane-borrow decider task. For example, if you want the vehicle to be agile, then turn side-pass on for all scenarios; if you feel it not safe to side-pass in intersections, then turn it off for those related scenarios. - -### Intersection - -The new intersection scenario includes STOP Signs, Traffic Lights and Bare Intersections which do not have either a light or a sign. - -#### STOP Sign - -There are two separate driving scenarios for STOP signs: - -- **Unprotected**: In this scenario, the car is expected to navigate through a crossroad having a two-way STOP. Our ADC therefore has to creep through and gauge the crossroad's traffic density before continuing onto its path. - - ![](images/unprotected1.png) - -- **Protected**: In this scenario, the car is expected to navigate through a crossroad having a four-way STOP. Our ADC will have to gauge the cars that come to a STOP before it and understand its position in the queue before moving. - - ![](images/protected.png) - -In order to safely pass through a STOP sign, both protected and unprotected, the following steps are performed: - -- Arriving at the STOP sign: Perceive all other cars or obstacles that are currently waiting at the other stop signs - -- Come to a complete stop: Monitor to see if the cars that were previously stationary at other STOP signs have moved or not. It is essential that the cars that arrived before have all left - -- Move forward slightly (Creep): Check to see if any other car is moving or in the case of unprotected stop, check to see if there are any oncoming vehicles on either side of the lane - -- Safely move through the crossroad - -> Note: -> -> > The team is working to add additional driving scenarios into our planner. One such example is handling Traffic Lights. - -#### Traffic Light - -In order to safely and smoothly pass through a traffic light, we created 3 driving scenarios: - -- **Protected**: In this scenario, our ego car has to pass through an intersection with a clear traffic light indicator. A left arrow or right arrow in green for the corresponding turn. - -- **Unprotected Left**: In this scenario, our ego car will have to make a left turn without a distinct light, meaning the car would need to yield to oncoming traffic. Just like in the unprotected STOP scenario, our ego car would have to creep to ensure that it is safe to cross the intersection before safely moving through the lane. - -- **Unprotected Right**: In this scenario, our ego car is expected to make an unprotected right turn while yielding to oncoming traffic. Our ego car will need to creep slowly and gauge the traffic and then make a safe turn. - -As discussed above, based on the three driving scenarios, the following 3 steps are performed: - -- **Stop/Approach**: If a stop is required, our ego car will stop in front of traffic light stop line - -- **Move forward slightly (Creep)**: Check to see if any other car is moving or in the case of unprotected turns, check to see if there are any oncoming vehicles on either side of the lane - -- **Move**: Safely drive through the intersection - -#### Bare Intersection - -Bare intersection is a scenario designated to an intersection without either a STOP sign or a traffic light. In this scenario, the following steps are performed: - -- **Approach**: Reach the intersection - -- **Move forward slightly (Creep)**: Check to see if any other car is moving or in the case of unprotected stop, check to see if there are any oncoming vehicles on either side of the lane - -- **Move**: Safely move through the intersection - -### Park - -The Apollo team is proud to introduce Open Space Planner, a new planning algorithm that can be used for several use cases especially the parking scenario. To learn more about Open Space Planner, please refer to [Open Space Planner Algorithm](../../docs/08_Planning/Open_Space_Planner.md) - -#### Valet - -The Valet scenario was designed to safely park your ego car in a targeted parking spot. There are 2 main stages that are performed in order to park your ego car: - -1. **Approaching the Parking Spot**: In this stage, standard planning algorithms are used to approach the designated parking spot. The car will gradually cruise to a halt once it has found the right stopping point required in order to reverse into the parking spot as seen in the image below - - ![](images/parking2.png) - -2. **Parking**: In this stage, Open Space Planner algorithm is used to generate a zig-zag trajectory which involves both forward and reverse driving (gear changes) in order to safely park the ego car. A sample trajectory generated for the scenario in the previous image, can be seen below: - - ![](images/parking1.png) - -#### Pull Over - -The Pull Over scenario was designed especially for maneuvering to the side of the road upon reaching your destination like for curb-side parallel parking. There are 3 main stages to accomplish the pull over scenario. - -1. **Approaching**: In this stage, as there is no clear designated parking spot, the ego car simply approaches the side of the road where it seems feasible to park. Standard Planning algorithms are used for this stage. Once it comes to a halt, the second stage begins. An example of stage 1 can be seen in the image below: - - ![](images/pull_over.png) - -2. **Retry Approach Parking**: In this stage the ego car adjusts itself to enter the parking spot. It is similar to the `Approach Parking Spot` case in the Valet scenario. An example of stage 2 can be seen in the image below: - - ![](images/pull_over1.png) - -3. **Retry Parking**: This stage uses Open Space Planner to parallel park the vehicle. A zig-zag trajectory is generated to help the ego car park itself on the side of the road. A sample trajectory generated for the scenario in the previous image, can be seen below: - - ![](images/pull_over2.png) - -There is a special case in the Pull Over scenario that does not need the Open Space Planner stage. This case occurs when there are no obstacles blocking the curb-side parking of the ego car. An example can be seen below. In such a case, the car simply approaches the parking spot and then enters the spot using standard planning. - -![](images/pull_over3.png) - -### Park-and-go - -Apollo 5.5 which focuses on curb-to-curb driving introduces the Park-and-go scenario which was designed to handle curb side parking, planning a new trajectory to the next destination and then driving along that trajectory. This scenario is extremely useful in situations like curb-side delivery or passenger pickup or drop-off. This scenario combines Open Space Planner along with other traditional trajectory planners to ensure that the car not only parks safely but is also able to exit per the new trajectory. - -![](images/park_and_go.png) - -## Emergency - -The Emergency scenario is another newly introduced scenario in Apollo 5.5, developed to ensure that the vehicle can be brought to a stop safely in the situation of a given trigger event (either via human input or due to a failure in one or more of the vehicle's hardware or software modules). This scenario is extremely crucial to urban driving as one often encounters several unforeseen situations on the road that requires the vehicle to come to a complete stop. There are two types of emergency stops that are performed using this scenario: - -1. **Pull Over and Stop**: In this scenario, the autonomous car uses Open Space Planner to pull-over and then come to a full stop on the curb-side - -2. **In Lane Stop**: In this scenario, the autonomous car comes to a complete stop in its lane. In this situation the car is well aware of its surrounding obstacles to prevent any rear-end collisions and ensure not just the safety of itself but also the vehicles around it. - -![](images/emergency.png) - -## Planning Module Architecture - -In Apollo 5.5, the Planning module architecture has been modified to incorporate new curb-to-curb driving scenarios on urban roads. As seen in the figure below, we have 2 new complex scenarios Emergency and Park-and-go. In order to plan these scenarios effectively, we have 2 new Deciders - Path Reuse Decider and Speed Bound Decider and have updated existing deciders making the planning architecture robust and flexible enough to handle many different types of urban road driving scenarios. - -Each driving scenario has its set of driving parameters that are unique to that scenario making it safer, efficient, easier to customize and debug and more flexible. - -> Note: -> -> > If you wish to include your own driving scenarios, please refer to existing scenarios as a reference. We currently do not have a template for writing your own planning scenario. - -![](images/architecture_5.5.png) - - -## Related Paper - -1. [He R, Zhou J, Jiang S, Wang Y, Tao J, Song S, Hu J, Miao J, Luo Q. "TDR-OBCA: A Reliable Planner for Autonomous Driving in Free-Space Environment." *arXiv preprint arXiv:2009.11345.* ](https://arxiv.org/pdf/2009.11345.pdf) -2. [Zhou J, He R, Wang Y, Jiang S, Zhu Z, Hu J, Miao J, Luo Q. "DL-IAPS and PJSO: A Path/Speed Decoupled Trajectory Optimization and its Application in Autonomous Driving." *arXiv preprint arXiv:2009.11135.*](https://arxiv.org/pdf/2009.11135.pdf) diff --git a/modules/planning/planning_base/README_cn.md b/modules/planning/planning_base/README_cn.md index 2c3d1018ac1..fa41855b894 100644 --- a/modules/planning/planning_base/README_cn.md +++ b/modules/planning/planning_base/README_cn.md @@ -1,71 +1,314 @@ -# 规划 +Planning +============ -## 介绍 +## 简介 +`planning base`是planning模块的主要流程和入口package,包含planning模块的整体架构和流程。 +planning模块根据上游模块输入的感知周围环境信息,地图定位导航信息,以及全局路径信息,为自动驾驶车辆规划出一条运动轨迹(包含坐标,速度,加速度,jerk加加速度,时间等信息),然后将这些信息传递给控制模块。 +![](./docs/images/architecture_all.png) -Apollo的之前版本,包含3.0都是用了相同的配置和参数规划不同的场景,这种方法虽然线性且实现简单,但不够灵活或用于特定场景。随着Apollo的成熟并承担不同的道路条件和驾驶用例,我们认为有必要采用更加模块化、适用于特定场景和整体的方法来规划其轨迹。 +### planning package介绍 +planning模块由以下几种package构成: +- **`planning_base`**:包含planning的外部接口类,planning接口父类,主流程和框架,以及一些基础算法库。 +- **`pnc_map`**:生成参考线基于的pnc_map类,根据输入的planning导航命令或地图等信息,生成参考线数据,作为planning局部路径规划的路线参考。 +- **`scenarios`**:planning模块支持的场景插件,每个目录下包含一个独立的场景插件包,包含scenario和stage类的定义。 +- **`tasks`**:planning模块中支持的任务插件,每个目录下包含一个独立的任务插件包,包含task类的定义。 +- **`traffic_rules`**:planning模块支持的通用交通规则插件,每个目录下包含一个独立的traffic rule插件包,traffic rules作用于所有运行的场景中。 -在这个方法中,每个驾驶用例都被当作不同的驾驶场景。这样做非常有用,因为与先前的版本相比,现在在特定场景中报告的问题可以在不影响其他场景的工作的情况下得到修复,其中问题修复影响其他驾驶用例,因为它们都被当作单个驾驶场景处理。 +### planning框架介绍 +#### 场景机制 +planning模块从apollo 3.5开始使用了双层状态机的场景机制,相比于apollo 3.0之前的版本,每个驾驶用例都被当作不同的驾驶场景,现在在特定场景中报告的问题可以在不影响其他场景的工作的情况下得到修复,其中问题修复不会影响其他驾驶用例。 +![](./docs/images/state_machine.png) -## 驾驶场景 +双层状态机的Top Layer是Scenario状态机,BottomLayer是Stage状态机。在Top Layer中进行场景切换,ScenarioManager根据周围的环境和地图信息,决定需要切换到哪个场景,如LaneFollow沿道路行驶的场景,PullOver靠边停车的场景。在Bottom Layer中进行Stage的切换,如果上个Stage已经执行完成,继续执行下一个Stage。如果所有的Stage都执行完毕,认为当前Scenario也执行完毕。 -Apollo3.5主要聚焦在三个主要驾驶场景,即: -### 车道保持 - 默认 +目前planning支持以下几种场景: +- **`LaneFollowScenario:`**:车道保持场景,是默认的自动驾驶场景,在这个场景中车辆沿着路由线路行驶,遇到障碍物根据情况在当前车道线内绕行,或者借道到相邻的车道绕行,并根据routing中的路线信息换道行驶。对道路上的交通标志,如停止,让行标志,人行道或减速带等,根据交通规则进行减速或停止让行。 + ![](./docs/images/lane_follow_scenario.png) +- **`PullOverScenario:`**:靠边停车场景,如果参数配置enable_pull_over_at_destination设置为true,当车辆到达终点附近时,将自动切入PullOverScenario并完成靠边停车。 + ![](./docs/images/pull_over_scenario.png) +- **`BareIntersectionUnprotectedScenario`**:无保护交通路口场景,在交通路口既没有停止标志,也没有交通灯,车辆在路口前一段距离范围内切换到此场景。 + ![](./docs/images/bare_intersection_scenario.png) +- **`TrafficLightProtectedScenario`**:有保护的交通灯路口场景,在这种路口对前行,左转,右转都有明确的交通灯指示。 + ![](./docs/images/traffic_light_protected_scenario.png) +- **`TrafficLightUnprotectedLeftTurnScenario`**:无保护的交通灯左转,这种场景下,车辆在交通灯路口左转时,仍然会有对向车辆通过路口,这时车辆需要让行。所以TrafficLightUnprotectedLeftTurnScenario场景设计思路与有保护交通灯的区别是,在通过交通路口时,需要增加减速慢行阶段(Creep),以便观察对向车辆,并根据情况让行。 + ![](./docs/images/traffic_light_unprotected_left_scenario.png) +- **`TrafficLightUnprotectedRightTurnScenario`**:无保护的交通灯右转,这种场景下,车辆在交通灯右转时,可能会有对向车辆通过,这时车辆需要缓行,并观察红绿灯情况,在安全的前提下右转。 + ![](./docs/images/traffic_light_unprotected_right_scenario.png) +- **`StopSignUnprotectedScenario`**:无保护停止标志路口场景,这种场景下的路口,只有一个双向停止标志,车辆在通过路口前,需要观察路口来往车辆,在路口通行车辆密度较小时才通过路口。 + ![](./docs/images/stop_sign_unprotected_scenario.png) + ![](./docs/images/stop_sign_unprotected_1.png) +
双向停止标志路口
-如下图所示,车道保持场景(我们的默认驾驶场景)包括但不限于在单车道(如巡航)或换道行驶,遵循基本的交通约定或基本转弯。 + ![](./docs/images/stop_sign_unprotected_2.png) +
四向停止标志路口
-![](images/planning_default.png) +- **`YieldSignScenario`**:路口有让行标志的场景,在车辆遇到让行标志时,对向有车辆时,要先让对向车辆先行。 + ![](./docs/images/yield_sign_scenario.png) +- **`ValetParkingScenario`**:泊车入库的场景,当planning的输入命令RoutingResponse中包含了parking_id的信息时,即是指定将车辆泊入地图中parking_id对应的停车位中。 + ![](./docs/images/valet_parking_scenario.png) +- **`EmergencyPullOverScenario`**:紧急停车场景,车辆在行驶过程中如果收到PadMessage命令“PULL_OVER”,车辆就近找到合适的位置在当前车道内停车,相比于直接停止,这样保证了行驶过程中的停车安全。 + ![](./docs/images/emergency_pull_over_scenario.png) +- **`ParkAndGoScenario`**:车辆靠边停车后,从当前位置起步向指定的下一个目标行驶的命令,这种场景适用于巴士接驳的情况。场景中使用了Open Space的算法,保证车辆能够安全从指定位置泊出。 + ![](./docs/images/park_and_go_scenario.png) +#### planning模块运行流程 +planning模块运行流程如下图所示,模块的入口是PlanningComponent,当有预测信息PredictionObstacles输入时,触发它的Proc函数,进行轨迹规划处理。 +![](./docs/images/planning_flow.png) +planning支持两种规划模式:OnLanePlanning和NaviPlanning,前者是基于高精地图的轨迹规划,也是默认的规划模式;后者是相对地图导航规划,主要用于交通规则较简单的高速公路。 -### Side Pass +每种规划模式可以通过PlannerDispatcher选择使用的Planner,目前planning模块中共有4种Planner: +- **`PublicRoadPlanner`**:基于高精地图的规划器; +- **`NaviPlanner`**:基于实时相对地图的规划器; +- **`LatticePlanner`**:基于网格算法的规划器 +- **`RTKReplayPlanner`**:基于录制轨迹的规划器 -在这种情况下,如果在自动驾驶车辆(ADC)的车道上有静态车辆或静态障碍物,并且车辆不能在不接触障碍物的情况下安全地通过车道,则执行以下策略: -- 检查邻近车道是否接近通行 -- 如果无车辆,进行绕行,绕过当前车道进入邻道 -- 一旦障碍物安全通过,回到原车道上 +planning模块中有两个主要的线程,一个是根据输入环境和车辆信息,进行轨迹规划的主流程;另外一个是根据地图和输入的全局路线,生成参考线信息,这个线程是周期运行的线程,主流程规划都是在它生成的参考线基础上进行的。 -![](images/sidepass.png) +在planning主流程中,默认使用OnLanePlanning->PublicRoadPlanner进行轨迹规划,在PublicRoadPlanner中,根据周围环境信息,切换到不同的场景中,规划生成轨迹并发送给control模块。 +#### planning模块入口 +PlanningComponent是planning模块的入口,它是一个由topic触发的Component,接口函数是: +```c++ + bool Proc( + const std::shared_ptr& prediction_obstacles, + const std::shared_ptr& chassis, + const std::shared_ptr& + localization_estimate) override; +``` +当接收到新的PredictionObstacles数据时,会触发执行Proc函数,并获取最新的Chassis车辆信息和LocalizationEstimate车辆定位数据进行处理,计算planning轨迹。 +#### planning初始化 +planning初始化在PlanningComponent::Init函数中进行,在这里创建PlanningBase对象(默认OnLanePlanning),它是轨迹规划的主体;除此之外,还需要创建planning其他输入消息的订阅对象,以及输出的消息发布对象: +|
成员对象 |
类型 |
描述 | +| ----------------- | ------------------------------- | ----------------- | +| **`planning_command_reader_`** | std::shared_ptr> | 输入导航命令订阅 | +| **`traffic_light_reader_`** | std::shared_ptr> | 交通灯消息订阅 | +| **`pad_msg_reader_`** | std::shared_ptr> | planning操作命令(start,stop)消息订阅 | +| **`story_telling_reader_`** | std::shared_ptr> | storytelling消息订阅 | +| **`relative_map_reader_`** | std::shared_ptr> | 实时相对地图消息订阅(用于NaviPlanning) | +| **`planning_writer_`** | std::shared_ptr> | planning输出轨迹消息发布 | +| **`rerouting_client_`** | std::shared_ptr> | planning阻塞时需要重新路由的请求 | +| **`command_status_writer_`** | std::shared_ptr> | planning实时任务状态消息发布 | -### 停止标识 +#### 场景配置 +planning中目前主要使用OnLanePlanning->PublicRoadPlanner,后面的介绍也以PublicRoadPlanner为主。在PublicRoadPlanner中使用了双层状态机的场景机制,用户希望具体运行时都支持哪些场景的处理,可以在配置文件“modules/planning/planning_base/conf/planning_config.pb.txt”中的standard_planning_config字段指定,例如以下配置支持LaneFollowScenario和ValetParkingScenario两种场景: +```c++ +standard_planning_config { + planner_type: PUBLIC_ROAD + planner_public_road_config { + scenario { + name: "VALET_PARKING" + type: "ValetParkingScenario" + } + scenario { + name: "LANE_FOLLOW" + type: "LaneFollowScenario" + } + } +} +``` +配置列表中场景先后按照优先级从高到低排序,如果判断可以切入前面的场景,则后面的场景不再进行检查。 +#### 场景切换 +在主流程的线程中每次调用PlanningComponent::Proc函数都要根据当前上下文环境,重新判断需要切入哪种场景。 -停止标识有两种分离的驾驶场景: -1、未保护:在这种情况下,汽车预计会通过具有双向停车位的十字路口。因此,我们的ADC必须爬过并测量十字路口的交通密度,然后才能继续走上它的道路。 +场景更新切换在ScenarioManager::Update中进行,它对场景列表中的所有场景遍历,调用场景子类的重写函数IsTransferable,用于判断当前环境是否能切入到这个场景子类中。因为场景列表优先级从高到低,如果遍历时遇到第一个可以切入的场景,后面的场景不需要再判断,直接使用这个场景作为本次运行周期的当前场景。 +![](./docs/images/scenario_switch.png) +#### 场景运行 +场景的运行也是在PlanningComponent::Proc函数中调用,因为每个场景包含多个Stage,每个Stage又包含多个Task,所以执行一个场景,就是顺序执行不同阶段的不同任务。 -![](images/unprotected1.png) +
图片名称
+
planning主流程
+ 图片名称 +
场景执行流程
-2、受保护:在此场景中,汽车预期通过具有四向停车位的十字路口导航。我们的ADC将必须对在它之前停下来的汽车进行测量,并在移动之前了解它在队列中的位置。 +#### traffic rules +traffic rules是planning在运行场景之前,根据不同的交通规则,决策车辆是否需要停车,减速或其他操作。因为它是在运行场景之前进行的,所以对所有的场景都会起作用。 +![](./docs/images/traffic_rules_flow.png) +目前支持的traffic rules有: +- **`backside_vehicle`**:后向车辆的处理,决定是否要忽略后向车辆 +- **`crosswalk`**:人行道交通规则,根据人行道附近障碍物情况,决定是否要停车 +- **`destination`**:靠近终点的处理,在接近终点时设置停止墙 +- **`keepclear`**:禁停区域的处理,在禁停区域车辆不能停车,如果禁停区域内有block障碍物,需要在禁停区域外停车 +- **`reference_line_end`**:接近参考线终点的处理,在参考线终点设置停止墙 +- **`rerouting`**:planning被阻塞时需要重新路由时的处理,发送rerouting请求 +- **`stop_sign`**:停止标志交通规则的处理,在停止标志前停车 +- **`traffic_light`**:交通信号灯的处理,在交通灯为绿色通行,否则需要停车 +- **`yield_sign`**:停止让行标志的处理,在这个标志附近如果有冲突车辆,自车停止让行 +#### reference line +参考线是planning规划算法的基础,ReferenceLineProvider根据车辆的实时位置,计算车辆前后一定范围内(几百米)的参考线信息,相对于全局路由线路来说,参考线是局部路线信息,但参考线中还附加了车辆周围的动态信息,如障碍物,交通灯等。 -![](images/protected.png) +参考线相关重要的两个数据: +- **`ReferenceLine`**:根据全局路由线路生成的原始路径信息,包含地图上道路之间的静态关系,并且经过平滑之后的结果。 +- **`ReferenceLineInfo`**:在`ReferenceLine`的基础上添加了动态信息,如决策信息,ST图等,planning的规划操作基本都在这个数据结构上进行。 +可以建立理解为ReferenceLine提供的是轨迹信息,而ReferenceLineInfo在ReferenceLine的基础上新添加了决策信息。 -为了安全地通过受保护和未受保护的停止标志,执行逻辑如下: -- 到达停车标志处:感知正等待在其他停车标志处的所有汽车或障碍物; -- 完全停止:Monitor检查之前停在其他停车标志处的汽车是否已经移动。以前到达的汽车必须全部离开; -- 稍微向前移动(爬行):检查是否有其他车辆正在移动或在无保护停车的情况下,检查车道两侧是否有迎面而来的车辆 -- 安全通过十字路口 +参考线生成的流程如下图所示: +
图片名称
-``` -Note: -Apollo团队正在努力增加额外的驾驶场景到规划器。其中一个例子是处理交通灯。 -``` +其中CreateRouteSegments函数是将车辆附近范围内的全局路由线路转换成参考线的格式;SmoothRouteSegment函数是将原始的参考线进行平滑。 + +参考线一共有三种平滑方式,离散点的平滑(默认)、螺旋线的平滑以及样条曲线的平滑。 +![](./docs/images/reference_line_smoother.png) + +- [参考线平滑算法](./docs/reference_line_smoother_cn.md) + +### 如何进行planning扩展 +planning模块框架如下图所示,planning-base包含了主流程,以及相关的外部接口类。planning模块可以让用户根据自己的场景灵活扩展或改造所需要的功能,主要通过以下几种方式: +![](./docs/images/planning_frame.png) +- **`修改配置参数`**:用户需要的功能已经实现,但需要修改某些场景下的性能表现,可以修改相应的参数来实现。 +- **`调用外部接口命令`**:当用户的场景需要进行多次规划任务才能完成一次作业要求,或者需要在规划任务执行过程中动态改变任务状态,可以在业务层根据您的业务需求自行编排规划任务,对规划模块发送命令。目前支持的外部接口有: -## Planning 模块架构 + |
命令名称 |
描述 | + | ----------------- | ----------------- | + | [**LaneFollowCommand**](modules/common_msgs/external_command_msgs/lane_follow_command.proto) | 点到点沿道路行驶 | + | [**ValetParkingCommand**](modules/common_msgs/external_command_msgs/valet_parking_command.proto) | 泊车 | + | [**ActionCommand**](modules/common_msgs/external_command_msgs/action_command.proto)**-PULL_OVER** | 紧急靠边停车 | + | [**ActionCommand**](modules/common_msgs/external_command_msgs/action_command.proto)**-STOP** | 紧急停车 | + | [**ActionCommand**](modules/common_msgs/external_command_msgs/action_command.proto)**-START** | 继续行驶 | + | [**ActionCommand**](modules/common_msgs/external_command_msgs/action_command.proto)**-SWITCH_TO_MANUAL** | 切换到手动模式 | + | [**ActionCommand**](modules/common_msgs/external_command_msgs/action_command.proto)**-SWITCH_TO_AUTO** | 切换到自动模式 | + | [**ActionCommand**](modules/common_msgs/external_command_msgs/action_command.proto)**-VIN_REQ** | vin code验证 | -Apollo 3.5 Planning模块的架构已经改变,以反映我们针对不同驾驶场景的模块化方法。 +- **`扩展插件`**:包含scenario,task或traffic rule + + planning的二次开发扩展都是以开发插件的形式给出的,在开发planning插件之前需要先了解[插件的相关知识和概念](todo:插件的readme)。 + - **开发scenario插件** + + Scenario可以根据地理位置来划分,当场景中主车在特定区域规划动作和默认场景(Lane Follow)存在有所不同是,为了避免影响默认场景的运行,可以为其开发一个新的场景,比如前方有红绿灯需要开发红绿灯场景,前方停止标志需要开发停止标志场景; -如下图所示,在规划器中,是上面讨论的各个驾驶场景及其处理逻辑。 + Scenario也可根据命令来划分,当接收到紧急靠边停车命令时,进入紧急靠边停车场景。比如接收到泊车命令时,进入泊车场景。 + 开发一个新的Scenario需要继承[Scenario](./scenario_base/scenario.h)基类,并实现以下几个函数: + - **初始化函数**,从场景插件中加载场景的流水线,以及配置参数等:bool Init(std::shared_ptr injector, + const std::string& name)。 + - **切换函数**,被[ScenarioManager](./scenario_base/scenario_manager.h)中调用,判断是否需要切入该场景:bool IsTransferable( + const Scenario* const other_scenario, const Frame& frame)。 + - **进入场景时的操作函数**,在首次进入场景前调用做一些预处理的工作,重置场景内变量,如果不需要做任何操作可以不重写:bool Enter(Frame* frame)。 + - **退出场景时的操作函数**,在场景切出时会被调用,可以用来清除一些全局变量,如果不需要做任何操作可以不重写:bool Exit(Frame* frame)。 + - **开发task插件** + + 当Apollo中的任务(Task)无法满足场景需求时,需要开发全新的任务插件。Apollo中存在多种类型的[Task](./task_base/task.h)基类: -每个驾驶场景都有其独特的驾驶参数集,这些参数使该场景更安全、高效、更易于定制和调试,并且更加灵活。每个阶段可配置的,且被划分为 **任务**,并且可以通过编辑该场景的`config`文件来移动或创建每个任务。 + - [PathGeneration](./common/path_generation.h):主要用于在主路上生成路径,比如规划借道路径LaneBorrowPath、靠边停车路径PullOverPath,沿车道行驶路径LaneFollowPath等。 + - [SpeedOptimizer](./common/speed_optimizer.h):主要用于在主路上规划速度曲线,比如基于二次规划的速度规划,基于非线性规划的速度规划。 + - [TrajectoryOptimizer](./common/trajectory_optimizer.h):主要用于生成轨迹,比如开放空间规划OpenSpaceTrajectoryProvider。 + + 如果上述任务不能满足场景要求,可以继承Task基类实现这个需求,开发新的Task子类需要实现以下几个函数: + - **初始化函数**,Stage在首次运行任务前,会调用任务的Init函数对任务进行初始化,初始化函数中主要对任务的成员变量进行初始化,以及加载配置参数:bool Init(const std::string& config_dir, const std::string& name, + const std::shared_ptr& injector)。 + - **运行函数**,运行函数包含任务的主要运行逻辑:apollo::common::Status Process( + Frame* frame, ReferenceLineInfo* reference_line_info)。 + - **开发traffic rule插件** -部分重要特性包含如下: -- Apollo FSM(finite state machine):一个有限状态机,与高清地图确定车辆状态给定其位置和路线。 -- Planning Dispatcher: 根据车辆的状态和其他相关信息,调用合适的Planner -- Planner:获取所需的上下文数据和其他信息,确定相应的车辆意图,执行该意图所需的规划任务并生成规划轨迹。它还将更新未来作业的上下文。 -- Deciders & Optimizers :一组实现决策任务和各种优化的无状态库。优化器特别优化车辆的轨迹和速度。决策者是基于规则的分类决策者,他们建议何时换车道、何时停车、何时爬行(慢速行进)或爬行何时完成。 -- 黄色框:这些框被包含在未来的场景和/或开发人员中,以便基于现实世界的驱动用例贡献他们自己的场景 + 交通规则插件traffic rule主要是在规划模块执行Scenario前对交通规则进行处理,当需要增加新的对于全场景生效的决策逻辑时,可以开发新的交通规则插件。 + + traffic rule插件继承自traffic rule基类,而后由planning_base中的traffic_decider对各个插件进行生成并调用。planning每进行一次规划任务,会通过traffic_decider调用各个traffic rule,从而使traffic rule插件生效。 + + 开发新的traffic rule插件子类继承自[TrafficDecider](./traffic_rules_base/traffic_decider.h),并实现以下函数: + - **初始化函数**,在这个函数中加配置插件的配置参数:bool Init(const std::string& name, + const std::shared_ptr& injector)。 + - **运行函数**,运行函数包含traffic rule的主要生效逻辑:Status ApplyRule(Frame* const frame, + ReferenceLineInfo* const reference_line_info)。 + +## 目录结构 + +```shell + +modules/planning/ +├── planning_base + ├── common // 公共算法库 + ├── conf // 公共(全局)参数配置文件 + ├── constraint_checker // lattice算法使用的碰撞检查算法 + ├── dag // 模块启动文件(mainboard) + ├── data // 模型文件 + ├── images // 图片 + ├── integration_tests // 集成单元测试 + ├── lattice // lattice算法库 + ├── launch // 模块启动文件(cyber_launch) + ├── learning_based // 基于学习算法相关库 + ├── math // 基础数学库 + ├── navi // NaviPlanner相关Task + ├── open_space // open_space相关算法库 + ├── planner // 几种planner的定义 + ├── proto // 公共(全局)参数配置结构定义 + ├── reference_line // 参考线以及参考线处理类 + ├── scenario_base // scenario和stage父类接口 + ├── task_base // task父类接口 + ├── testdata // 单元测试数据 + ├── tools // 工具类 + ├── traffic_rules_base // 交通规则父类接口 + ├── BUILD // 构建规则文件 + ├── cyberfile.xml // 包管理配置文件 + ├── navi_planning.cc // NaviPlanning相对地图导航模式源码 + ├── navi_planning.h // NaviPlanning相对地图导航模式头文件 + ├── on_lane_planning.cc // OnLanePlanning基于高精地图导航模式源码 + ├── on_lane_planning.h // OnLanePlanning基于高精地图导航模式头文件 + ├── planning_base.cc // planning模式父类源码 + ├── planning_base.h // planning模式父类头文件 + ├── planning_component.cc // planning组件外部接口类源码 + ├── planning_component.h // planning组件外部接口类头文件 + └── README_cn.md // 说明文档 +├── scenarios // 场景插件 +├── tasks // 任务插件 +├── traffic_rules // 交通规则插件 +├── pnc_map // pnc_map插件 ``` -Note: -如果您希望包括您自己的驾驶场景,请参考现有方案作为参考。我们目前没有用于编写您自己的规划场景的模板。 + +## 模块 + +### 输入 + +Planning模块需要获取外部环境信息,车辆自身信息进行轨迹规划,以下是planning的外部输入信息: +|
Channel 名 |
类型 |
描述 | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/prediction` | [apollo::prediction::PredictionObstacles](modules/common_msgs/prediction_msgs/prediction_obstacle.proto) | 障碍物预测信息,可通过 `modules/planning/planning_base/dag/planning.dag` 启动文件修改channel名 | +| `/apollo/perception/traffic_light` | [apollo::perception::TrafficLight](modules/common_msgs/perception_msgs/traffic_light_detection.proto) | perception模块输出的交通灯感知信息,包含交通灯亮起的颜色,id等信息 | +| `/apollo/localization/pose` | [apollo::localization::LocalizationEstimate](modules/common_msgs/localization_msgs/localization.proto) | 定位信息,可通过 `modules/planning/planning_base/dag/planning.dag` 配置文件修改channel名 | +| `/apollo/canbus/chassis` | [apollo::canbus::Chassis](modules/common_msgs/chassis_msgs/chassis.proto) | canbus模块输出的车辆底盘信息,包含底盘速度,油门,刹车,档位,灯光等状态, `modules/planning/planning_base/dag/planning.dag` 配置文件修改channel名 | + +此外,planning模块还需要外部输入的导航命令信息,用户首先向external_command发送导航命令请求,external_command再将这些命令进行处理后转发给planning模块。下面介绍用户可以发送的几种导航命令: + +|
Channel 名 |
类型 |
描述 | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/external_command/lane_follow` | [apollo::external_command::LaneFollowCommand](modules/common_msgs/external_command_msgs/lane_follow_command.proto) | 基于高精地图导航的命令,给定终点的位置或朝向,从当前车辆位置导航到目标终点位置 | +| `/apollo/external_command/valet_parking` | [apollo::external_command::ValetParkingCommand](modules/common_msgs/external_command_msgs/valet_parking_command.proto) | 从当前位置导航泊车到停车位上 | +| `/apollo/external_command/action` | [apollo::planning::ActionCommand](modules/common_msgs/external_command_msgs/action_command.proto) | HMI发送的流程操作命令 | + +### 输出 + +|
Channel 名 |
类型 |
描述 | +| ----------------- | ------------------------------- | ----------------- | +| `/apollo/planning` | [apollo::planning::ADCTrajectory](modules/common_msgs/planning_msgs/planning.proto) | 输出规划轨迹,包含轨迹点,速度和时间等信息 | +| `/apollo/planning/command_status` | [external_command::CommandStatus](modules/common_msgs/external_command_msgs/command_status.proto) | 导航命令的执行状态 | +| `/apollo/external_command/lane_follow` | [apollo::external_command::LaneFollowCommand](modules/common_msgs/external_command_msgs/lane_follow_command.proto) | 在道路被阻塞,换道失败超时时,发送重新路由的申请 | + +### 配置 + +|
文件路径 |
类型/结构 |
说明 | +| -------- | --------- | ---- | +| [`modules/planning/planning_base/conf/planning_config.pb.txt`](./conf/planning_config.pb.txt) | [apollo::planning::PlanningConfig](./proto/planning_config.proto) | planning组件的配置文件 | +| [`modules/planning/planning_base/conf/traffic_rule_config.pb.txt`](./conf/traffic_rule_config.pb.txt) | [apollo::planning::TrafficRulesPipeline](./traffic_rules_base/proto/traffic_rules_pipeline.proto) | 支持的traffic rules列表的配置文件 | +| [`modules/planning/planning_base/conf/discrete_points_smoother_config.pb.txt`](./conf/discrete_points_smoother_config.pb.txt) | [apollo::planning::ReferenceLineSmootherConfig](./proto/reference_line_smoother_config.proto) | 参考线使用离散点平滑时的配置文件 | +| [`modules/planning/planning_base/conf/qp_spline_smoother_config.pb.txt`](./conf/qp_spline_smoother_config.pb.txt) | [apollo::planning::ReferenceLineSmootherConfig](./proto/reference_line_smoother_config.proto) | 参考线使用五次多项式平滑时的配置文件 | +| [`modules/planning/planning_base/conf/spiral_smoother_config.pb.txt`](./conf/spiral_smoother_config.pb.txt) | [apollo::planning::ReferenceLineSmootherConfig](./proto/reference_line_smoother_config.proto) | 参考线使用五次螺旋线平滑时的配置文件 | +| [`modules/planning/planning_base/conf/planner_open_space_config.pb.txt`](./conf/planner_open_space_config.pb.txt) | [apollo::planning::PlannerOpenSpaceConfig](./proto/planner_open_space_config.proto) | 开放空间规划算法的配置文件 | + + +### Flags + +|
文件路径 |
类型/结构 |
说明 | +| -------- | --------- | ---- | +| [`modules/planning/planning_base/conf/planning.conf`](./conf/planning.conf) | [apollo::planning::PlanningConfig](./common/planning_gflags.h) | planning模块的flag配置文件 | + +### 使用方式 + +#### 使用 mainboard 启动 + +```shell +mainboard -d modules/planning/planning_base/dag/planning.dag ``` -![](images/architecture.png) +#### 使用 cyber_launch 启动 + +```shell +cyber_launch start modules/planning/planning_base/launch/planning.launch +``` \ No newline at end of file diff --git a/modules/planning/planning_base/common/BUILD b/modules/planning/planning_base/common/BUILD deleted file mode 100644 index ab9feee0c5f..00000000000 --- a/modules/planning/planning_base/common/BUILD +++ /dev/null @@ -1,550 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -# install( -# name = "install", -# library_dest = if_gpu( -# "planning-gpu/lib", -# "planning/lib" -# ), -# targets = [ -# ":libplanning_gflags.so", -# ], -# ) - -cc_library( - name = "indexed_list", - hdrs = ["indexed_list.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/util:util_tool", - "@boost", - ], -) - -cc_test( - name = "indexed_list_test", - size = "small", - srcs = ["indexed_list_test.cc"], - deps = [ - ":indexed_list", - "//modules/common/util", - "@boost", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "indexed_queue", - hdrs = ["indexed_queue.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/util:util_tool", - ], -) - -cc_test( - name = "indexed_queue_test", - size = "small", - srcs = ["indexed_queue_test.cc"], - deps = [ - ":indexed_queue", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -filegroup( - name = "common_testdata", - srcs = glob([ - "testdata/**", - ]), -) - -cc_library( - name = "obstacle", - srcs = ["obstacle.cc"], - hdrs = ["obstacle.h"], - copts = PLANNING_COPTS, - deps = [ - ":indexed_list", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/util:util_tool", - "//modules/planning/planning_base/common/speed:st_boundary", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/reference_line", - "//modules/common_msgs/prediction_msgs:feature_cc_proto", - "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_point_cc_proto", - "//modules/common_msgs/prediction_msgs:scenario_cc_proto", - ], -) - -cc_test( - name = "obstacle_test", - size = "small", - srcs = ["obstacle_test.cc"], - data = [ - "//modules/planning/planning_base/common:common_testdata", - ], - deps = [ - ":obstacle", - "//modules/common/util", - "//modules/common_msgs/perception_msgs:perception_lane_cc_proto", - "@boost", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "obstacle_blocking_analyzer", - srcs = ["obstacle_blocking_analyzer.cc"], - hdrs = ["obstacle_blocking_analyzer.h"], - copts = PLANNING_COPTS, - deps = [ - ":frame", - "//modules/common/configs:vehicle_config_helper", - "//modules/planning/planning_base/reference_line", - ], -) - -cc_library( - name = "path_boundary", - srcs = ["path_boundary.cc"], - hdrs = ["path_boundary.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber/common:log", - "//modules/planning/planning_base/common/util:print_debug_info" - ], -) - -cc_library( - name = "planning_context", - srcs = ["planning_context.cc"], - hdrs = ["planning_context.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/proto:planning_status_cc_proto", - "@eigen", - ], -) - -cc_library( - name = "path_decision", - srcs = ["path_decision.cc"], - hdrs = ["path_decision.h"], - copts = PLANNING_COPTS, - deps = [ - ":obstacle", - "//modules/planning/planning_base/reference_line", - ], -) - -cc_library( - name = "planning_gflags", - srcs = ["libplanning_gflags.so"], - hdrs = ["planning_gflags.h"], - alwayslink = True -) -cc_binary( - name = "libplanning_gflags.so", - srcs = ["planning_gflags.cc", - "planning_gflags.h"], - copts = PLANNING_COPTS, - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) -cc_library( - name = "reference_line_info", - srcs = ["reference_line_info.cc"], - hdrs = ["reference_line_info.h"], - copts = PLANNING_COPTS, - deps = [ - ":ego_info", - ":path_boundary", - ":path_decision", - ":planning_gflags", - ":st_graph_data", - "//cyber", - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/util", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/common_msgs/map_msgs:map_cc_proto", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/speed:speed_data", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/common/trajectory:publishable_trajectory", - "//modules/planning/planning_base/proto:lattice_structure_cc_proto", - "//modules/planning/planning_base/reference_line", - "@eigen", - ], -) - -cc_test( - name = "reference_line_info_test", - size = "small", - srcs = ["reference_line_info_test.cc"], - deps = [ - ":reference_line_info", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "speed_profile_generator", - srcs = ["speed_profile_generator.cc"], - hdrs = ["speed_profile_generator.h"], - copts = PLANNING_COPTS, - deps = [ - ":frame", - ":reference_line_info", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/planning/planning_base/common/speed:speed_data", - "//modules/planning/planning_base/math/curve1d", - "//modules/planning/planning_base/math/curve1d:polynomial_curve1d", - "//modules/planning/planning_base/math/curve1d:quartic_polynomial_curve1d", - "//modules/planning/planning_base/math/curve1d:quintic_polynomial_curve1d", - "//modules/planning/planning_base/math/piecewise_jerk:piecewise_jerk_speed_problem", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - ], -) - -cc_test( - name = "speed_profile_generator_test", - size = "small", - srcs = ["speed_profile_generator_test.cc"], - deps = [ - ":speed_profile_generator", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "local_view", - hdrs = ["local_view.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/planning_msgs:navigation_cc_proto", - "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", - "//modules/common_msgs/planning_msgs:pad_msg_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "//modules/common_msgs/storytelling_msgs:story_cc_proto", - ], -) - -cc_library( - name = "frame", - srcs = ["frame.cc"], - hdrs = ["frame.h"], - copts = PLANNING_COPTS, - deps = [ - ":feature_output", - ":local_view", - ":obstacle", - ":open_space_info", - ":reference_line_info", - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/monitor_log", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap:hdmap_util", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/common/trajectory:publishable_trajectory", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/reference_line:reference_line_provider", - "@eigen", - ], -) - -cc_test( - name = "frame_test", - size = "small", - srcs = ["frame_test.cc"], - data = [ - "//modules/planning/planning_base/common:common_testdata", - ], - deps = [ - ":frame", - "//modules/common/util", - "//modules/map/hdmap:hdmap_util", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "history", - srcs = ["history.cc"], - hdrs = ["history.h"], - copts = PLANNING_COPTS, - deps = [ - ":planning_gflags", - "//cyber", - "//modules/common_msgs/planning_msgs:decision_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@eigen", - ], -) - -cc_test( - name = "history_test", - size = "small", - srcs = ["history_test.cc"], - deps = [ - ":history", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "speed_limit", - srcs = ["speed_limit.cc"], - hdrs = ["speed_limit.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/math", - ], -) - -cc_test( - name = "speed_limit_test", - size = "small", - srcs = ["speed_limit_test.cc"], - deps = [ - ":speed_limit", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "ego_info", - srcs = ["ego_info.cc"], - hdrs = ["ego_info.h"], - copts = PLANNING_COPTS, - deps = [ - ":obstacle", - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common/math", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/planning/planning_base/reference_line", - "//modules/common_msgs/prediction_msgs:feature_cc_proto", - "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_point_cc_proto", - "//modules/common_msgs/prediction_msgs:scenario_cc_proto", - "@eigen", - ], -) - -cc_test( - name = "ego_info_test", - size = "small", - srcs = ["ego_info_test.cc"], - deps = [ - ":ego_info", - ":frame", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "planning_common", - copts = PLANNING_COPTS, - deps = [ - ":ego_info", - ":frame", - ":planning_gflags", - ":speed_limit", - ":st_graph_data", - "//cyber", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "@eigen", - ], -) - -cc_library( - name = "trajectory_stitcher", - srcs = ["trajectory_stitcher.cc"], - hdrs = ["trajectory_stitcher.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/vehicle_model", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:publishable_trajectory", - "//modules/planning/planning_base/reference_line", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "open_space_info", - srcs = ["open_space_info.cc"], - hdrs = ["open_space_info.h"], - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:indexed_queue", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/common/trajectory:publishable_trajectory", - "@eigen", - ], -) - -cc_test( - name = "open_space_info_test", - size = "small", - srcs = ["open_space_info_test.cc"], - deps = [ - "open_space_info", - "@boost", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "st_graph_data", - srcs = ["st_graph_data.cc"], - hdrs = ["st_graph_data.h"], - copts = PLANNING_COPTS, - deps = [ - ":planning_gflags", - ":speed_limit", - "//modules/planning/planning_base/common/speed:st_boundary", - "//modules/planning/planning_base/proto:st_drivable_boundary_cc_proto", - ], -) - -cc_test( - name = "st_graph_data_test", - size = "small", - srcs = ["st_graph_data_test.cc"], - deps = [ - ":st_graph_data", - "//cyber", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "feature_output", - srcs = ["feature_output.cc"], - hdrs = ["feature_output.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:learning_data_cc_proto", - ], -) - -cc_library( - name = "message_process", - srcs = ["message_process.cc"], - hdrs = ["message_process.h"], - copts = PLANNING_COPTS, - deps = [ - ":dependency_injector", - ":feature_output", - "//cyber", - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:config_gflags", - "//modules/common_msgs/dreamview_msgs:hmi_status_cc_proto", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", - "//modules/planning/planning_base/common/util:math_util_lib", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/planning/planning_base/proto:learning_data_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/common/util:util_tool", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - "//modules/common_msgs/storytelling_msgs:story_cc_proto", - "@boost", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "trajectory_evaluator", - srcs = ["trajectory_evaluator.cc"], - hdrs = ["trajectory_evaluator.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/planning/planning_base/pipeline:evaluator_logger", - "//modules/planning/planning_base/proto:learning_data_cc_proto", - ], -) - -cc_library( - name = "dependency_injector", - hdrs = ["dependency_injector.h"], - copts = PLANNING_COPTS, - deps = [ - ":ego_info", - ":frame", - ":history", - ":learning_based_data", - ":planning_context", - ], -) - -cc_library( - name = "learning_based_data", - srcs = ["learning_based_data.cc"], - hdrs = ["learning_based_data.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/planning/planning_base/proto:learning_data_cc_proto", - ], -) - -cc_library( - name = "config_util", - srcs = ["config_util.cc"], - hdrs = ["config_util.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/common/config_util.h b/modules/planning/planning_base/common/config_util.h index 0fb2b3e0c09..96d47d36803 100644 --- a/modules/planning/planning_base/common/config_util.h +++ b/modules/planning/planning_base/common/config_util.h @@ -78,17 +78,14 @@ bool ConfigUtil::LoadMergedConfig(const std::string& default_config_path, CHECK_NOTNULL(config); // Get the default config, will be merged by the user defined // "spcific_config". - if (!apollo::cyber::common::GetProtoFromFile(default_config_path, config)) { - AERROR << "Failed to load default config file" << default_config_path; + if (!apollo::cyber::common::LoadConfig(default_config_path, config)) { + AERROR << "Failed to load default config file:" << default_config_path; } // Get the user defined "spcific_config". T spcific_config; - if (!apollo::cyber::common::PathExists(config_path)) { - AINFO << "user defined config not exist use default" << config_path; - return true; - } - if (!apollo::cyber::common::GetProtoFromFile(config_path, &spcific_config)) { - AINFO << "can not parse user defined config:" << config_path; + if (!apollo::cyber::common::LoadConfig(config_path, &spcific_config)) { + AWARN << "can not load user defined config file[" << config_path + << "], use default config instead"; return true; } config->MergeFrom(spcific_config); diff --git a/modules/planning/planning_base/common/obstacle.cc b/modules/planning/planning_base/common/obstacle.cc index d4bc10d8767..3946a21f568 100644 --- a/modules/planning/planning_base/common/obstacle.cc +++ b/modules/planning/planning_base/common/obstacle.cc @@ -22,6 +22,7 @@ #include #include +#include #include "cyber/common/log.h" #include "modules/common/configs/vehicle_config_helper.h" @@ -767,5 +768,30 @@ void Obstacle::SetLaneChangeBlocking(const bool is_distance_clear) { is_lane_change_blocking_ = is_distance_clear; } +// input: obstacle trajectory point +// ouput: obstacle polygon +common::math::Polygon2d Obstacle::GetObstacleTrajectoryPolygon( + const common::TrajectoryPoint& point) const { + double delta_heading = point.path_point().theta() + - perception_obstacle_.theta(); + double cos_delta_heading = cos(delta_heading); + double sin_delta_heading = sin(delta_heading); + std::vector polygon_point; + polygon_point.reserve(perception_polygon_.points().size()); + + for (auto& iter : perception_polygon_.points()) { + double relative_x = iter.x() - perception_obstacle_.position().x(); + double relative_y = iter.y() - perception_obstacle_.position().y(); + double x = relative_x * cos_delta_heading + - relative_y * sin_delta_heading + point.path_point().x(); + double y = relative_x * sin_delta_heading + + relative_y * cos_delta_heading + point.path_point().y(); + polygon_point.emplace_back(x, y); + } + + common::math::Polygon2d trajectory_point_polygon(polygon_point); + return trajectory_point_polygon; +} + } // namespace planning } // namespace apollo diff --git a/modules/planning/planning_base/common/obstacle.h b/modules/planning/planning_base/common/obstacle.h index ed9039612c8..9d0d0cb5318 100644 --- a/modules/planning/planning_base/common/obstacle.h +++ b/modules/planning/planning_base/common/obstacle.h @@ -219,6 +219,8 @@ class Obstacle { void CheckLaneBlocking(const ReferenceLine& reference_line); bool IsLaneChangeBlocking() const { return is_lane_change_blocking_; } void SetLaneChangeBlocking(const bool is_distance_clear); + common::math::Polygon2d GetObstacleTrajectoryPolygon( + const common::TrajectoryPoint& point) const; private: FRIEND_TEST(MergeLongitudinalDecision, AllDecisions); diff --git a/modules/planning/planning_base/common/obstacle_test.cc b/modules/planning/planning_base/common/obstacle_test.cc index b57ecc56265..3eefecbbd1c 100644 --- a/modules/planning/planning_base/common/obstacle_test.cc +++ b/modules/planning/planning_base/common/obstacle_test.cc @@ -594,5 +594,34 @@ TEST(ObstacleMergeTest, add_decision_test) { EXPECT_TRUE(obstacle.LongitudinalDecision().has_stop()); } } + +TEST_F(ObstacleTest, GetObstacleTrajectoryPolygon) { + Obstacle* obstacle = indexed_obstacles_.Find("88_0"); + EXPECT_TRUE(false) << obstacle->Id(); + EXPECT_TRUE(false) << obstacle->Perception().position().x() + << " " << obstacle->Perception().position().y() + << " " << obstacle->Perception().theta() + << " " << sin(obstacle->Perception().theta()); + for (int i = 0; i < obstacle->Trajectory().trajectory_point_size(); i++) { + const auto& point = obstacle->Trajectory().trajectory_point(i); + EXPECT_TRUE(false) << point.path_point().x() + << " " << point.path_point().y() + << " " << point.path_point().theta() + << " " << sin(point.path_point().theta()); + common::math::Polygon2d polygon = + obstacle->GetObstacleTrajectoryPolygon(point); + const auto& corner_points = polygon.points(); + for (size_t j = 0; j < corner_points.size(); j++) { + double x = corner_points[j].x(); + double y = corner_points[j].y(); + EXPECT_TRUE(false) << x << " " << y; + // ASSERT_EQ(5, x); + // EXPECT_NE(1, y) + // << x + // << y; + } + } +} + } // namespace planning } // namespace apollo diff --git a/modules/planning/planning_base/common/path/BUILD b/modules/planning/planning_base/common/path/BUILD deleted file mode 100644 index 0a04ae8b13b..00000000000 --- a/modules/planning/planning_base/common/path/BUILD +++ /dev/null @@ -1,67 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "discretized_path", - srcs = ["discretized_path.cc"], - hdrs = ["discretized_path.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - ], -) - -cc_test( - name = "discretized_path_test", - size = "small", - srcs = ["discretized_path_test.cc"], - deps = [ - ":discretized_path", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "frenet_frame_path", - srcs = ["frenet_frame_path.cc"], - hdrs = ["frenet_frame_path.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/math", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - ], -) - -cc_test( - name = "frenet_frame_path_test", - size = "small", - srcs = ["frenet_frame_path_test.cc"], - deps = [ - ":frenet_frame_path", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "path_data", - srcs = ["path_data.cc"], - hdrs = ["path_data.h"], - copts = PLANNING_COPTS, - deps = [ - ":discretized_path", - ":frenet_frame_path", - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/reference_line", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/common/planning_gflags.cc b/modules/planning/planning_base/common/planning_gflags.cc index b43b49b8af0..5a04e0e29f7 100644 --- a/modules/planning/planning_base/common/planning_gflags.cc +++ b/modules/planning/planning_base/common/planning_gflags.cc @@ -31,10 +31,9 @@ DEFINE_bool(enable_scenario_side_pass_multiple_parked_obstacles, true, DEFINE_bool(enable_force_pull_over_open_space_parking_test, false, "enable force_pull_over_open_space_parking_test"); -DEFINE_string( - traffic_rule_config_filename, - "/apollo/modules/planning/planning_base/conf/traffic_rule_config.pb.txt", - "Traffic rule config filename"); +DEFINE_string(traffic_rule_config_filename, + "modules/planning/planning_base/conf/traffic_rule_config.pb.txt", + "Traffic rule config filename"); DEFINE_string(smoother_config_filename, "/apollo/modules/planning/planning_base/conf/" @@ -394,3 +393,14 @@ DEFINE_double(path_bounds_decider_resolution, 0.5, DEFINE_double(num_extra_tail_bound_point, 20, "The extra tail point number."); DEFINE_bool(enable_pull_over_at_destination, false, "Whether to pull over at destination"); +DEFINE_double(replan_lateral_distance_threshold, 0.5, + "The lateral distance threshold of replan"); +DEFINE_double(replan_longitudinal_distance_threshold, 2.5, + "The longitudinal distance threshold of replan"); +DEFINE_double(replan_time_threshold, 7.0, "The time threshold of replan"); +DEFINE_double(trajectory_check_collision_time_step, 1.0, + "checks collision time step for trajectory"); + +DEFINE_double(obstacle_pass_check_distance, 3.0, + "at the distance, the obstacle goes around left or right" + "consider ego and obstacle position"); diff --git a/modules/planning/planning_base/common/planning_gflags.h b/modules/planning/planning_base/common/planning_gflags.h index bd7bcf89953..08640a18078 100644 --- a/modules/planning/planning_base/common/planning_gflags.h +++ b/modules/planning/planning_base/common/planning_gflags.h @@ -208,3 +208,12 @@ DECLARE_double(obstacle_lat_buffer); DECLARE_double(obstacle_lon_start_buffer); DECLARE_double(obstacle_lon_end_buffer); DECLARE_double(obstacle_lon_ignore_buffer); +// parameters for trajectory stitching and reinit planning starting point. +DECLARE_double(replan_lateral_distance_threshold); +DECLARE_double(replan_longitudinal_distance_threshold); + +DECLARE_double(replan_time_threshold); + +DECLARE_double(trajectory_check_collision_time_step); + +DECLARE_double(obstacle_pass_check_distance); diff --git a/modules/planning/planning_base/common/smoothers/BUILD b/modules/planning/planning_base/common/smoothers/BUILD deleted file mode 100644 index b484faa4da9..00000000000 --- a/modules/planning/planning_base/common/smoothers/BUILD +++ /dev/null @@ -1,21 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "smoother", - srcs = ["smoother.cc"], - hdrs = ["smoother.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/common/speed/BUILD b/modules/planning/planning_base/common/speed/BUILD deleted file mode 100644 index e7caa7d79fb..00000000000 --- a/modules/planning/planning_base/common/speed/BUILD +++ /dev/null @@ -1,63 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "st_point", - srcs = ["st_point.cc"], - hdrs = ["st_point.h"], - deps = [ - "//modules/common/math", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "st_boundary", - srcs = ["st_boundary.cc"], - hdrs = ["st_boundary.h"], - copts = PLANNING_COPTS, - deps = [ - ":st_point", - "//cyber", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/common/util:print_debug_info", - "@com_google_googletest//:gtest", - ], -) - -cc_test( - name = "st_boundary_test", - size = "small", - srcs = ["st_boundary_test.cc"], - copts = PLANNING_COPTS, - deps = [ - ":st_boundary", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "speed_data", - srcs = ["speed_data.cc"], - hdrs = ["speed_data.h"], - deps = [ - ":st_point", - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/common/trajectory/BUILD b/modules/planning/planning_base/common/trajectory/BUILD deleted file mode 100644 index c35a377c1ff..00000000000 --- a/modules/planning/planning_base/common/trajectory/BUILD +++ /dev/null @@ -1,59 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "discretized_trajectory", - srcs = ["discretized_trajectory.cc"], - hdrs = ["discretized_trajectory.h"], - deps = [ - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/planning/planning_base/common:planning_context", - "@eigen", - ], -) - -cc_test( - name = "discretized_trajectory_test", - size = "small", - srcs = ["discretized_trajectory_test.cc"], - data = [ - "//modules/planning/planning_base:planning_testdata", - ], - deps = [ - ":discretized_trajectory", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "publishable_trajectory", - srcs = ["publishable_trajectory.cc"], - hdrs = ["publishable_trajectory.h"], - deps = [ - ":discretized_trajectory", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - ], -) - -cc_test( - name = "publishable_trajectory_test", - size = "small", - srcs = ["publishable_trajectory_test.cc"], - data = [ - "//modules/planning/planning_base:planning_testdata", - ], - deps = [ - ":publishable_trajectory", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/common/trajectory1d/BUILD b/modules/planning/planning_base/common/trajectory1d/BUILD deleted file mode 100644 index 75689df6c8f..00000000000 --- a/modules/planning/planning_base/common/trajectory1d/BUILD +++ /dev/null @@ -1,70 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "standing_still_trajectory1d", - srcs = ["standing_still_trajectory1d.cc"], - hdrs = ["standing_still_trajectory1d.h"], - deps = [ - "//cyber", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "piecewise_acceleration_trajectory1d", - srcs = ["piecewise_acceleration_trajectory1d.cc"], - hdrs = ["piecewise_acceleration_trajectory1d.h"], - deps = [ - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "constant_deceleration_trajectory1d", - srcs = ["constant_deceleration_trajectory1d.cc"], - hdrs = ["constant_deceleration_trajectory1d.h"], - deps = [ - "//cyber", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "piecewise_trajectory1d", - srcs = ["piecewise_trajectory1d.cc"], - hdrs = ["piecewise_trajectory1d.h"], - deps = [ - "//modules/common/math", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "constant_jerk_trajectory1d", - srcs = ["constant_jerk_trajectory1d.cc"], - hdrs = ["constant_jerk_trajectory1d.h"], - deps = [ - "//cyber", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "piecewise_jerk_trajectory1d", - srcs = ["piecewise_jerk_trajectory1d.cc"], - hdrs = ["piecewise_jerk_trajectory1d.h"], - deps = [ - ":constant_jerk_trajectory1d", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/common/util/BUILD b/modules/planning/planning_base/common/util/BUILD deleted file mode 100644 index 06c230b90df..00000000000 --- a/modules/planning/planning_base/common/util/BUILD +++ /dev/null @@ -1,79 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "util_lib", - srcs = ["util.cc"], - hdrs = ["util.h"], - copts = PLANNING_COPTS, - deps = [ - ":print_debug_info", - "//cyber", - "//modules/common/util", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - ], -) - -cc_library( - name = "common_lib", - srcs = ["libcommon_util.so"], - hdrs = ["common.h"], - copts = PLANNING_COPTS, - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/util", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:reference_line_info", - ], -) - -cc_binary( - name = "libcommon_util.so", - srcs = ["common.cc", "common.h"], - copts = PLANNING_COPTS, - linkshared = True, - linkstatic = True, - deps = [ - "//cyber", - "//modules/common/util", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:reference_line_info", - ], -) - -cc_library( - name = "math_util_lib", - srcs = ["math_util.cc"], - hdrs = ["math_util.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/math", - ], -) - -cc_library( - name = "print_debug_info", - srcs = ["print_debug_info.cc"], - hdrs = ["print_debug_info.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/conf/planning.conf b/modules/planning/planning_base/conf/planning.conf index 5beda0f15c7..65856be72d2 100644 --- a/modules/planning/planning_base/conf/planning.conf +++ b/modules/planning/planning_base/conf/planning.conf @@ -1,38 +1,34 @@ --flagfile=/apollo/modules/common/data/global_flagfile.txt ---traffic_rule_config_filename=/apollo/modules/planning/planning_base/conf/traffic_rule_config.pb.txt ---planning_upper_speed_limit=2 ---default_cruise_speed=1.5 +--traffic_rule_config_filename=modules/planning/planning_base/conf/traffic_rule_config.pb.txt +--planning_upper_speed_limit=20.00 +--default_cruise_speed=11.18 --ignore_overlapped_obstacle=true --prioritize_change_lane --min_length_for_lane_change=5.0 --nouse_multi_thread_to_add_obstacles # --min_past_history_points_len=10 ---enable_print_curve=false +--enable_print_curve=true +--destination_check_distance=4.0 # --smoother_config_filename=/apollo/modules/planning/planning_base/conf/spiral_smoother_config.pb.txt # --smoother_config_filename=/apollo/modules/planning/planning_base/conf/qp_spline_smoother_config.pb.txt --smoother_config_filename=/apollo/modules/planning/planning_base/conf/discrete_points_smoother_config.pb.txt --enable_reference_line_stitching=false ---speed_bump_speed_limit=1.5 +# --speed_bump_speed_limit=3 # --parking_inwards=false # --use_dual_variable_warm_start=true # --enable_record_debug=true # --enable_parallel_hybrid_a=true --export_chart=true ---longitudinal_jerk_lower_bound=-10 ---longitudinal_jerk_upper_bound=10 + # --use_front_axe_center_in_path_planning=true ---obstacle_lat_buffer=0.3 ---min_stop_distance_obstacle=2.0 ---static_obstacle_nudge_l_buffer=0.1 + --enable_smoother_failsafe --enable_parallel_trajectory_smoothing --nouse_s_curve_speed_smooth --use_iterative_anchoring_smoother ---speed_fallback_distance=0.0 ---nonstatic_obstacle_nudge_l_buffer=0.1 ---use_st_drivable_boundary=false +--nonstatic_obstacle_nudge_l_buffer=0.4 ---enable_pull_over_at_destination=false +--use_st_drivable_boundary=false ---replan_time_threshold=7.0 \ No newline at end of file +--enable_pull_over_at_destination=false \ No newline at end of file diff --git a/modules/planning/planning_base/conf/planning_navi.conf b/modules/planning/planning_base/conf/planning_navi.conf index 5400636b5dc..62a3320f5b6 100644 --- a/modules/planning/planning_base/conf/planning_navi.conf +++ b/modules/planning/planning_base/conf/planning_navi.conf @@ -1,6 +1,6 @@ --flagfile=/apollo/modules/planning/planning_base/conf/planning.conf --planning_config_file=/apollo/modules/planning/planning_base/conf/planning_config_navi.pb.txt ---traffic_rule_config_filename=/apollo/modules/planning/planning_base/conf/traffic_rule_config.pb.txt +--traffic_rule_config_filename=modules/planning/planning_base/conf/traffic_rule_config.pb.txt --planning_upper_speed_limit=24.587 --noenable_nudge_decision --replan_lateral_distance_threshold=0.5 diff --git a/modules/planning/planning_base/constraint_checker/BUILD b/modules/planning/planning_base/constraint_checker/BUILD deleted file mode 100644 index c83f082d0d0..00000000000 --- a/modules/planning/planning_base/constraint_checker/BUILD +++ /dev/null @@ -1,55 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "constraint_checker", - srcs = ["constraint_checker.cc"], - hdrs = ["constraint_checker.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - ], -) - -cc_library( - name = "constraint_checker1d", - srcs = ["constraint_checker1d.cc"], - hdrs = ["constraint_checker1d.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "collision_checker", - srcs = ["collision_checker.cc"], - hdrs = ["collision_checker.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/lattice/behavior:path_time_graph", - "//modules/planning/planning_base/proto:st_drivable_boundary_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/cyberfile.xml b/modules/planning/planning_base/cyberfile.xml index 5e05e1bae9d..8b5b3b23981 100644 --- a/modules/planning/planning_base/cyberfile.xml +++ b/modules/planning/planning_base/cyberfile.xml @@ -30,10 +30,10 @@ common map common-msgs + prediction bazel-extend-tools 3rd-mkl 3rd-libtorch-cpu - 3rd-libtorch-gpu 3rd-protobuf 3rd-rules-python diff --git a/modules/planning/planning_base/docs/images/architecture_all.png b/modules/planning/planning_base/docs/images/architecture_all.png new file mode 100755 index 00000000000..326afff39f5 Binary files /dev/null and b/modules/planning/planning_base/docs/images/architecture_all.png differ diff --git a/modules/planning/planning_base/docs/images/bare_intersection_scenario.png b/modules/planning/planning_base/docs/images/bare_intersection_scenario.png new file mode 100644 index 00000000000..74ee1807cdf Binary files /dev/null and b/modules/planning/planning_base/docs/images/bare_intersection_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/emergency_pull_over_scenario.png b/modules/planning/planning_base/docs/images/emergency_pull_over_scenario.png new file mode 100644 index 00000000000..b93e61d3630 Binary files /dev/null and b/modules/planning/planning_base/docs/images/emergency_pull_over_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/lane_follow_scenario.png b/modules/planning/planning_base/docs/images/lane_follow_scenario.png new file mode 100644 index 00000000000..ef8e529ed17 Binary files /dev/null and b/modules/planning/planning_base/docs/images/lane_follow_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/park_and_go_scenario.png b/modules/planning/planning_base/docs/images/park_and_go_scenario.png new file mode 100644 index 00000000000..5e247289f3f Binary files /dev/null and b/modules/planning/planning_base/docs/images/park_and_go_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/planning_flow.png b/modules/planning/planning_base/docs/images/planning_flow.png new file mode 100755 index 00000000000..19d6b56cc29 Binary files /dev/null and b/modules/planning/planning_base/docs/images/planning_flow.png differ diff --git a/modules/planning/planning_base/docs/images/planning_frame.png b/modules/planning/planning_base/docs/images/planning_frame.png new file mode 100755 index 00000000000..64a79e922f8 Binary files /dev/null and b/modules/planning/planning_base/docs/images/planning_frame.png differ diff --git a/modules/planning/planning_base/docs/images/pull_over_scenario.png b/modules/planning/planning_base/docs/images/pull_over_scenario.png new file mode 100644 index 00000000000..5dedba90679 Binary files /dev/null and b/modules/planning/planning_base/docs/images/pull_over_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/reference_line_flow.png b/modules/planning/planning_base/docs/images/reference_line_flow.png new file mode 100755 index 00000000000..f2cf4e1a426 Binary files /dev/null and b/modules/planning/planning_base/docs/images/reference_line_flow.png differ diff --git a/modules/planning/planning_base/docs/images/reference_line_smoother.png b/modules/planning/planning_base/docs/images/reference_line_smoother.png new file mode 100644 index 00000000000..cc7cb7410d5 Binary files /dev/null and b/modules/planning/planning_base/docs/images/reference_line_smoother.png differ diff --git a/modules/planning/planning_base/docs/images/scenario_execute_1.png b/modules/planning/planning_base/docs/images/scenario_execute_1.png new file mode 100755 index 00000000000..49ee8b18af8 Binary files /dev/null and b/modules/planning/planning_base/docs/images/scenario_execute_1.png differ diff --git a/modules/planning/planning_base/docs/images/scenario_execute_2.png b/modules/planning/planning_base/docs/images/scenario_execute_2.png new file mode 100755 index 00000000000..21f4ed8b8b2 Binary files /dev/null and b/modules/planning/planning_base/docs/images/scenario_execute_2.png differ diff --git a/modules/planning/planning_base/docs/images/scenario_switch.png b/modules/planning/planning_base/docs/images/scenario_switch.png new file mode 100755 index 00000000000..b3051711942 Binary files /dev/null and b/modules/planning/planning_base/docs/images/scenario_switch.png differ diff --git a/modules/planning/planning_base/docs/images/state_machine.png b/modules/planning/planning_base/docs/images/state_machine.png new file mode 100644 index 00000000000..b745b430e57 Binary files /dev/null and b/modules/planning/planning_base/docs/images/state_machine.png differ diff --git a/modules/planning/planning_base/docs/images/stop_sign_unprotected_1.png b/modules/planning/planning_base/docs/images/stop_sign_unprotected_1.png new file mode 100644 index 00000000000..963efcd4417 Binary files /dev/null and b/modules/planning/planning_base/docs/images/stop_sign_unprotected_1.png differ diff --git a/modules/planning/planning_base/docs/images/stop_sign_unprotected_2.png b/modules/planning/planning_base/docs/images/stop_sign_unprotected_2.png new file mode 100644 index 00000000000..4a9c4540c21 Binary files /dev/null and b/modules/planning/planning_base/docs/images/stop_sign_unprotected_2.png differ diff --git a/modules/planning/planning_base/docs/images/stop_sign_unprotected_scenario.png b/modules/planning/planning_base/docs/images/stop_sign_unprotected_scenario.png new file mode 100644 index 00000000000..9b1118c686f Binary files /dev/null and b/modules/planning/planning_base/docs/images/stop_sign_unprotected_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/traffic_light_protected_scenario.png b/modules/planning/planning_base/docs/images/traffic_light_protected_scenario.png new file mode 100644 index 00000000000..eddc7e1b1df Binary files /dev/null and b/modules/planning/planning_base/docs/images/traffic_light_protected_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/traffic_light_unprotected_left_scenario.png b/modules/planning/planning_base/docs/images/traffic_light_unprotected_left_scenario.png new file mode 100644 index 00000000000..2d52349c3d1 Binary files /dev/null and b/modules/planning/planning_base/docs/images/traffic_light_unprotected_left_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/traffic_light_unprotected_right_scenario.png b/modules/planning/planning_base/docs/images/traffic_light_unprotected_right_scenario.png new file mode 100644 index 00000000000..2599b4b9440 Binary files /dev/null and b/modules/planning/planning_base/docs/images/traffic_light_unprotected_right_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/traffic_rules_flow.png b/modules/planning/planning_base/docs/images/traffic_rules_flow.png new file mode 100644 index 00000000000..eb71b4e261a Binary files /dev/null and b/modules/planning/planning_base/docs/images/traffic_rules_flow.png differ diff --git a/modules/planning/planning_base/docs/images/valet_parking_scenario.png b/modules/planning/planning_base/docs/images/valet_parking_scenario.png new file mode 100644 index 00000000000..191b5afd4ad Binary files /dev/null and b/modules/planning/planning_base/docs/images/valet_parking_scenario.png differ diff --git a/modules/planning/planning_base/docs/images/yield_sign_scenario.png b/modules/planning/planning_base/docs/images/yield_sign_scenario.png new file mode 100644 index 00000000000..c01b30ef90a Binary files /dev/null and b/modules/planning/planning_base/docs/images/yield_sign_scenario.png differ diff --git a/modules/planning/planning_base/docs/reference_line_smoother_cn.md b/modules/planning/planning_base/docs/reference_line_smoother_cn.md new file mode 100644 index 00000000000..6689e46ad15 --- /dev/null +++ b/modules/planning/planning_base/docs/reference_line_smoother_cn.md @@ -0,0 +1,97 @@ +# 参考线平滑设定 + +_**Tip**: 为了更好的展示本文档中的等式,我们建议使用者使用带有[插件](https://chrome.google.com/webstore/detail/tex-all-the-things/cbimabofgmfdkicghcadidpemeenbffn)的Chrome浏览器,或者将Latex等式拷贝到[在线编辑公式网站](http://www.hostmath.com/)进行浏览。_ + +二次规划(QP)+样条插值 + +## 1. 目标函数 + +### 1.1 分段寻路路径 + +将寻路路径划分为 **n** 段,每段用2个多项式表示: + +``` +$$ +x = f_i(t) + = a_{i0} + a_{i1} * t + a_{i2} * t^2 + a_{i3} * t^3 + a_{i4} * t^4 + a_{i5} * t^5 +$$ +``` + +``` +$$ +y = g_i(t) = b_{i0} + b_{i1} * t + b_{i2} * t^2 + b_{i3} * t^3 + b_{i4} * t^4 + b_{i5} * t^5 +$$ +``` + +### 1.2 定义样条段优化目标函数 + +``` +$$ +cost = +\sum_{i=1}^{n} +\Big( +\int\limits_{0}^{t_i} (f_i''')^2(t) dt ++ \int\limits_{0}^{t_i} (g_i''')^2(t) dt +\Big) +$$ +``` + +### 1.3 将开销(cost)函数转换为QP公式 + +QP公式: + +``` +$$ +\frac{1}{2} \cdot x^T \cdot H \cdot x + f^T \cdot x +\\ +s.t. LB \leq x \leq UB +\\ +A_{eq}x = b_{eq} +\\ +Ax \leq b +$$ +``` + +## 2 约束条件 + +### 2.1 平滑节点约束 + +该约束的目的是使样条的节点更加平滑。假设两个段$seg_k$ 和$seg_{k+1}$互相连接,且$seg_k$的累计值 **s** 为$s_k$。计算约束的等式为: + +``` +$$ +f_k(s_k) = f_{k+1} (s_0) +$$ +``` + +同样地,该公式也适用于下述等式: + +``` +$$ +f'_k(s_k) = f'_{k+1} (s_0) +\\ +f''_k(s_k) = f''_{k+1} (s_0) +\\ +f'''_k(s_k) = f'''_{k+1} (s_0) +\\ +g_k(s_k) = g_{k+1} (s_0) +\\ +g'_k(s_k) = g'_{k+1} (s_0) +\\ +g''_k(s_k) = g''_{k+1} (s_0) +\\ +g'''_k(s_k) = g'''_{k+1} (s_0) +$$ +``` + +### 2.2 点采样边界约束 + +在路径上均匀的取样 **m** 个点并检查这些点的预定义边界。 + +``` +$$ +f_i(t_l) - x_l< boundary +\\ +g_i(t_l) - y_l< boundary +$$ +``` diff --git a/modules/planning/planning_base/images/DeadEndScenario.png b/modules/planning/planning_base/images/DeadEndScenario.png deleted file mode 100644 index 66d6bfc769e..00000000000 Binary files a/modules/planning/planning_base/images/DeadEndScenario.png and /dev/null differ diff --git a/modules/planning/planning_base/images/EnterDeadEnd.png b/modules/planning/planning_base/images/EnterDeadEnd.png deleted file mode 100644 index fc1c98be7f0..00000000000 Binary files a/modules/planning/planning_base/images/EnterDeadEnd.png and /dev/null differ diff --git a/modules/planning/planning_base/images/OutDeadEnd.png b/modules/planning/planning_base/images/OutDeadEnd.png deleted file mode 100644 index b9bb25619eb..00000000000 Binary files a/modules/planning/planning_base/images/OutDeadEnd.png and /dev/null differ diff --git a/modules/planning/planning_base/images/TuringAround1.png b/modules/planning/planning_base/images/TuringAround1.png deleted file mode 100644 index 2f2133168e1..00000000000 Binary files a/modules/planning/planning_base/images/TuringAround1.png and /dev/null differ diff --git a/modules/planning/planning_base/images/TuringAround2.png b/modules/planning/planning_base/images/TuringAround2.png deleted file mode 100644 index 77c73fb03a1..00000000000 Binary files a/modules/planning/planning_base/images/TuringAround2.png and /dev/null differ diff --git a/modules/planning/planning_base/images/architecture.png b/modules/planning/planning_base/images/architecture.png deleted file mode 100644 index 7eab23eef07..00000000000 Binary files a/modules/planning/planning_base/images/architecture.png and /dev/null differ diff --git a/modules/planning/planning_base/images/architecture_5.5.png b/modules/planning/planning_base/images/architecture_5.5.png deleted file mode 100644 index 38a03247ba9..00000000000 Binary files a/modules/planning/planning_base/images/architecture_5.5.png and /dev/null differ diff --git a/modules/planning/planning_base/images/e2e_mode.png b/modules/planning/planning_base/images/e2e_mode.png deleted file mode 100644 index 7454224431d..00000000000 Binary files a/modules/planning/planning_base/images/e2e_mode.png and /dev/null differ diff --git a/modules/planning/planning_base/images/emergency.png b/modules/planning/planning_base/images/emergency.png deleted file mode 100644 index e3e725b3447..00000000000 Binary files a/modules/planning/planning_base/images/emergency.png and /dev/null differ diff --git a/modules/planning/planning_base/images/hybrid_mode.png b/modules/planning/planning_base/images/hybrid_mode.png deleted file mode 100644 index 538dd6f1d09..00000000000 Binary files a/modules/planning/planning_base/images/hybrid_mode.png and /dev/null differ diff --git a/modules/planning/planning_base/images/park_and_go.png b/modules/planning/planning_base/images/park_and_go.png deleted file mode 100644 index 4a6f670e585..00000000000 Binary files a/modules/planning/planning_base/images/park_and_go.png and /dev/null differ diff --git a/modules/planning/planning_base/images/parking1.png b/modules/planning/planning_base/images/parking1.png deleted file mode 100644 index 07efaee702a..00000000000 Binary files a/modules/planning/planning_base/images/parking1.png and /dev/null differ diff --git a/modules/planning/planning_base/images/parking2.png b/modules/planning/planning_base/images/parking2.png deleted file mode 100644 index 23c48300f43..00000000000 Binary files a/modules/planning/planning_base/images/parking2.png and /dev/null differ diff --git a/modules/planning/planning_base/images/planning_default.png b/modules/planning/planning_base/images/planning_default.png deleted file mode 100644 index 15a03cd55f3..00000000000 Binary files a/modules/planning/planning_base/images/planning_default.png and /dev/null differ diff --git a/modules/planning/planning_base/images/protected.png b/modules/planning/planning_base/images/protected.png deleted file mode 100644 index 9bcef9e40ef..00000000000 Binary files a/modules/planning/planning_base/images/protected.png and /dev/null differ diff --git a/modules/planning/planning_base/images/pull_over.png b/modules/planning/planning_base/images/pull_over.png deleted file mode 100644 index 9654fb98a9f..00000000000 Binary files a/modules/planning/planning_base/images/pull_over.png and /dev/null differ diff --git a/modules/planning/planning_base/images/pull_over1.png b/modules/planning/planning_base/images/pull_over1.png deleted file mode 100644 index 1f8e933fd39..00000000000 Binary files a/modules/planning/planning_base/images/pull_over1.png and /dev/null differ diff --git a/modules/planning/planning_base/images/pull_over2.png b/modules/planning/planning_base/images/pull_over2.png deleted file mode 100644 index f5fac99ef0e..00000000000 Binary files a/modules/planning/planning_base/images/pull_over2.png and /dev/null differ diff --git a/modules/planning/planning_base/images/pull_over3.png b/modules/planning/planning_base/images/pull_over3.png deleted file mode 100644 index 47b1fe6ef31..00000000000 Binary files a/modules/planning/planning_base/images/pull_over3.png and /dev/null differ diff --git a/modules/planning/planning_base/images/sidepass.png b/modules/planning/planning_base/images/sidepass.png deleted file mode 100644 index 5c56239e280..00000000000 Binary files a/modules/planning/planning_base/images/sidepass.png and /dev/null differ diff --git a/modules/planning/planning_base/images/sim_e2e.gif b/modules/planning/planning_base/images/sim_e2e.gif deleted file mode 100644 index f5b4223a854..00000000000 Binary files a/modules/planning/planning_base/images/sim_e2e.gif and /dev/null differ diff --git a/modules/planning/planning_base/images/sim_hybrid.gif b/modules/planning/planning_base/images/sim_hybrid.gif deleted file mode 100644 index d2242fca7b8..00000000000 Binary files a/modules/planning/planning_base/images/sim_hybrid.gif and /dev/null differ diff --git a/modules/planning/planning_base/images/sim_rule.gif b/modules/planning/planning_base/images/sim_rule.gif deleted file mode 100644 index cac6fb703e7..00000000000 Binary files a/modules/planning/planning_base/images/sim_rule.gif and /dev/null differ diff --git a/modules/planning/planning_base/images/unprotected1.png b/modules/planning/planning_base/images/unprotected1.png deleted file mode 100644 index 1fdac865145..00000000000 Binary files a/modules/planning/planning_base/images/unprotected1.png and /dev/null differ diff --git a/modules/planning/planning_base/integration_tests/BUILD b/modules/planning/planning_base/integration_tests/BUILD deleted file mode 100644 index c60fd713915..00000000000 --- a/modules/planning/planning_base/integration_tests/BUILD +++ /dev/null @@ -1,87 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "planning_test_base", - srcs = ["planning_test_base.cc"], - hdrs = ["planning_test_base.h"], - copts = ["-fno-access-control"], - data = [ - "//modules/planning/planning_base:planning_conf", - "//modules/planning/planning_base:planning_testdata", - ], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/configs:config_gflags", - "//modules/common/util", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base:planning_component_lib", - "@com_google_googletest//:gtest", - ], - linkstatic = True, -) - -# FIXME(all): temporarily disable integration test for planning flaky problems. - -# cc_test( -# name = "garage_test", -# size = "small", -# srcs = ["garage_test.cc"], -# data = [ -# "//modules/common/configs:config_gflags", -# "//modules/planning/planning_base:planning_testdata", -# ], -# deps = [ -# ":planning_test_base", -# ], -# ) - -# cc_test( -# name = "sunnyvale_loop_test", -# size = "small", -# srcs = ["sunnyvale_loop_test.cc"], -# data = [ -# "//modules/common/configs:config_gflags", -# "//modules/map/data:map_sunnyvale_loop", -# "//modules/planning/planning_base:planning_testdata", -# ], -# deps = [ -# ":planning_test_base", -# ], -# ) - -# cc_test( -# name = "sunnyvale_big_loop_test", -# size = "medium", -# srcs = ["sunnyvale_big_loop_test.cc"], -# data = [ -# "//modules/common/configs:config_gflags", -# "//modules/map/data:map_sunnyvale_big_loop", -# "//modules/planning/planning_base:planning_testdata", -# ], -# linkopts = ["-lgomp"], -# deps = [ -# ":planning_test_base", -# ], -# linkstatic = True, -# ) - -# cc_test( -# name = "navigation_mode_test", -# size = "small", -# srcs = [navigation_mode_test.cc"], -# data = [ -# "//modules/common/configs:config_gflags", -# "//modules/planning/planning_base:planning_testdata", -# ], -# deps = [ -# ":planning_test_base", -# ], -# ) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/lattice/behavior/BUILD b/modules/planning/planning_base/lattice/behavior/BUILD deleted file mode 100644 index 0cb5c239580..00000000000 --- a/modules/planning/planning_base/lattice/behavior/BUILD +++ /dev/null @@ -1,51 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "feasible_region", - srcs = ["feasible_region.cc"], - hdrs = ["feasible_region.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/planning/planning_base/common:planning_gflags", - ], -) - -cc_library( - name = "path_time_graph", - srcs = ["path_time_graph.cc"], - hdrs = ["path_time_graph.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:lattice_structure_cc_proto", - "//modules/planning/planning_base/reference_line", - ], -) - -cc_library( - name = "prediction_querier", - srcs = ["prediction_querier.cc"], - hdrs = ["prediction_querier.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/math", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/proto:lattice_structure_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/lattice/trajectory_generation/BUILD b/modules/planning/planning_base/lattice/trajectory_generation/BUILD deleted file mode 100644 index 48210112910..00000000000 --- a/modules/planning/planning_base/lattice/trajectory_generation/BUILD +++ /dev/null @@ -1,135 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "lattice_trajectory1d", - srcs = ["lattice_trajectory1d.cc"], - hdrs = ["lattice_trajectory1d.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "end_condition_sampler", - srcs = ["end_condition_sampler.cc"], - hdrs = ["end_condition_sampler.h"], - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/lattice/behavior:feasible_region", - "//modules/planning/planning_base/lattice/behavior:path_time_graph", - "//modules/planning/planning_base/lattice/behavior:prediction_querier", - "//modules/planning/planning_base/proto:lattice_structure_cc_proto", - ], -) - -cc_library( - name = "trajectory1d_generator", - srcs = ["trajectory1d_generator.cc"], - hdrs = ["trajectory1d_generator.h"], - deps = [ - ":end_condition_sampler", - ":lateral_osqp_optimizer", - ":lateral_qp_optimizer", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory1d:constant_deceleration_trajectory1d", - "//modules/planning/planning_base/common/trajectory1d:piecewise_acceleration_trajectory1d", - "//modules/planning/planning_base/common/trajectory1d:piecewise_trajectory1d", - "//modules/planning/planning_base/common/trajectory1d:standing_still_trajectory1d", - "//modules/planning/planning_base/lattice/behavior:path_time_graph", - "//modules/planning/planning_base/lattice/behavior:prediction_querier", - "//modules/planning/planning_base/lattice/trajectory_generation:lattice_trajectory1d", - "//modules/planning/planning_base/math/curve1d:quartic_polynomial_curve1d", - "//modules/planning/planning_base/math/curve1d:quintic_polynomial_curve1d", - "//modules/planning/planning_base/proto:lattice_structure_cc_proto", - ], -) - -cc_library( - name = "trajectory_evaluator", - srcs = ["trajectory_evaluator.cc"], - hdrs = ["trajectory_evaluator.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory1d:piecewise_acceleration_trajectory1d", - "//modules/planning/planning_base/constraint_checker:constraint_checker1d", - "//modules/planning/planning_base/lattice/behavior:path_time_graph", - "//modules/planning/planning_base/lattice/trajectory_generation:piecewise_braking_trajectory_generator", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "backup_trajectory_generator", - srcs = ["backup_trajectory_generator.cc"], - hdrs = ["backup_trajectory_generator.h"], - deps = [ - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/common/trajectory1d:constant_deceleration_trajectory1d", - "//modules/planning/planning_base/constraint_checker:collision_checker", - "//modules/planning/planning_base/lattice/trajectory_generation:trajectory1d_generator", - "//modules/planning/planning_base/lattice/trajectory_generation:trajectory_combiner", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "trajectory_combiner", - srcs = ["trajectory_combiner.cc"], - hdrs = ["trajectory_combiner.h"], - deps = [ - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "piecewise_braking_trajectory_generator", - srcs = ["piecewise_braking_trajectory_generator.cc"], - hdrs = ["piecewise_braking_trajectory_generator.h"], - deps = [ - "//modules/planning/planning_base/common/trajectory1d:piecewise_acceleration_trajectory1d", - "//modules/planning/planning_base/math/curve1d", - ], -) - -cc_library( - name = "lateral_qp_optimizer", - srcs = ["lateral_qp_optimizer.cc"], - hdrs = ["lateral_qp_optimizer.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/util", - "//modules/planning/planning_base/common/trajectory1d:piecewise_jerk_trajectory1d", - ], -) - -cc_library( - name = "lateral_osqp_optimizer", - srcs = ["lateral_osqp_optimizer.cc"], - hdrs = ["lateral_osqp_optimizer.h"], - copts = PLANNING_COPTS, - deps = [ - ":lateral_qp_optimizer", - "//cyber", - "//modules/common/math", - "//modules/planning/planning_base/common/trajectory1d:piecewise_jerk_trajectory1d", - "@eigen", - "@osqp", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/learning_based/img_feature_renderer/BUILD b/modules/planning/planning_base/learning_based/img_feature_renderer/BUILD deleted file mode 100644 index d602453fd1b..00000000000 --- a/modules/planning/planning_base/learning_based/img_feature_renderer/BUILD +++ /dev/null @@ -1,25 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "birdview_img_feature_renderer", - srcs = ["birdview_img_feature_renderer.cc"], - hdrs = ["birdview_img_feature_renderer.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/util", - "//modules/map/hdmap:hdmap_util", - "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", - "//modules/planning/planning_base/proto:learning_data_cc_proto", - "//modules/planning/planning_base/proto:planning_semantic_map_config_cc_proto", - "@opencv//:imgcodecs", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/learning_based/model_inference/BUILD b/modules/planning/planning_base/learning_based/model_inference/BUILD deleted file mode 100644 index ce1a4eace2c..00000000000 --- a/modules/planning/planning_base/learning_based/model_inference/BUILD +++ /dev/null @@ -1,56 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools/platform:build_defs.bzl", "if_gpu") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "model_inference", - hdrs = ["model_inference.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/proto:learning_data_cc_proto", - "//modules/planning/planning_base/learning_based/model_inference/proto:learning_model_inference_cc_proto", - ], -) - -cc_library( - name = "trajectory_imitation_libtorch_inference", - srcs = ["trajectory_imitation_libtorch_inference.cc"], - hdrs = ["trajectory_imitation_libtorch_inference.h"], - copts = PLANNING_COPTS, - deps = [ - ":model_inference", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common/util:math_util_lib", - "//modules/planning/planning_base/learning_based/img_feature_renderer:birdview_img_feature_renderer", - #"//third_party/libtorch", - "@opencv//:core", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_test( - name = "model_inference_test", - size = "medium", - srcs = ["model_inference_test.cc"], - copts = PLANNING_COPTS, - deps = [ - ":model_inference", - ":trajectory_imitation_libtorch_inference", - "//modules/common/configs:config_gflags", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/learning_based/img_feature_renderer:birdview_img_feature_renderer", - "@com_google_googletest//:gtest", - ], - linkstatic = True, - tags = ["exclude"] -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/math/BUILD b/modules/planning/planning_base/math/BUILD deleted file mode 100644 index f05dc3f7c19..00000000000 --- a/modules/planning/planning_base/math/BUILD +++ /dev/null @@ -1,45 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "curve_math", - srcs = ["curve_math.cc"], - hdrs = ["curve_math.h"], -) - -cc_library( - name = "discrete_points_math", - srcs = ["discrete_points_math.cc"], - hdrs = ["discrete_points_math.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - ], -) - -cc_test( - name = "curve_math_test", - size = "small", - srcs = ["curve_math_test.cc"], - deps = [ - ":curve_math", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "polynomial_xd", - srcs = ["polynomial_xd.cc"], - hdrs = ["polynomial_xd.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/math/curve1d/BUILD b/modules/planning/planning_base/math/curve1d/BUILD deleted file mode 100644 index 6520c7e279b..00000000000 --- a/modules/planning/planning_base/math/curve1d/BUILD +++ /dev/null @@ -1,139 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "curve1d", - hdrs = ["curve1d.h"], -) - -cc_library( - name = "polynomial_curve1d", - hdrs = ["polynomial_curve1d.h"], - deps = [ - ":curve1d", - ], -) - -cc_library( - name = "quartic_polynomial_curve1d", - srcs = ["quartic_polynomial_curve1d.cc"], - hdrs = ["quartic_polynomial_curve1d.h"], - deps = [ - ":polynomial_curve1d", - "//cyber", - "//modules/common/util:util_tool", - "@com_google_absl//:absl", - ], -) - -cc_test( - name = "quartic_polynomial_curve1d_test", - size = "small", - srcs = ["quartic_polynomial_curve1d_test.cc"], - copts = PLANNING_COPTS, - deps = [ - ":cubic_polynomial_curve1d", - ":quartic_polynomial_curve1d", - ":quintic_polynomial_curve1d", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "quintic_polynomial_curve1d", - srcs = ["quintic_polynomial_curve1d.cc"], - hdrs = ["quintic_polynomial_curve1d.h"], - deps = [ - ":polynomial_curve1d", - "//cyber", - "//modules/common/util:util_tool", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "cubic_polynomial_curve1d", - srcs = ["cubic_polynomial_curve1d.cc"], - hdrs = ["cubic_polynomial_curve1d.h"], - copts = PLANNING_COPTS, - deps = [ - ":polynomial_curve1d", - ":quartic_polynomial_curve1d", - "//cyber", - "@com_google_absl//:absl", - ], -) - -cc_test( - name = "cubic_polynomial_curve1d_test", - size = "small", - srcs = ["cubic_polynomial_curve1d_test.cc"], - deps = [ - ":cubic_polynomial_curve1d", - ":quartic_polynomial_curve1d", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "quintic_spiral_path", - srcs = ["quintic_spiral_path.cc"], - hdrs = [ - "quintic_spiral_path.h", - "quintic_spiral_path_with_derivation.h", - ], - copts = PLANNING_COPTS, - deps = [ - ":quintic_polynomial_curve1d", - "//cyber", - "//modules/common/math", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "piecewise_quintic_spiral_path", - srcs = ["piecewise_quintic_spiral_path.cc"], - hdrs = ["piecewise_quintic_spiral_path.h"], - copts = PLANNING_COPTS, - deps = [ - ":quintic_spiral_path", - "//cyber", - "//modules/common/math", - "@com_google_absl//:absl", - ], -) - -cc_test( - name = "quintic_polynomial_curve1d_test", - size = "small", - srcs = ["quintic_polynomial_curve1d_test.cc"], - copts = PLANNING_COPTS, - deps = [ - ":quartic_polynomial_curve1d", - ":quintic_polynomial_curve1d", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "piecewise_quintic_spiral_path_test", - size = "small", - srcs = ["piecewise_quintic_spiral_path_test.cc"], - copts = PLANNING_COPTS, - deps = [ - ":piecewise_quintic_spiral_path", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/math/discretized_points_smoothing/BUILD b/modules/planning/planning_base/math/discretized_points_smoothing/BUILD deleted file mode 100644 index 8475d1476fe..00000000000 --- a/modules/planning/planning_base/math/discretized_points_smoothing/BUILD +++ /dev/null @@ -1,94 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "cos_theta_smoother", - srcs = ["cos_theta_smoother.cc"], - hdrs = ["cos_theta_smoother.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - ":cos_theta_ipopt_interface", - "//cyber", - "//modules/planning/planning_base/proto/math:cos_theta_smoother_config_cc_proto", - "@ipopt", - ], -) - -cc_library( - name = "cos_theta_ipopt_interface", - srcs = ["cos_theta_ipopt_interface.cc"], - hdrs = ["cos_theta_ipopt_interface.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", - "@adolc", - "@ipopt", - ], -) - -cc_library( - name = "fem_pos_deviation_smoother", - srcs = ["fem_pos_deviation_smoother.cc"], - hdrs = ["fem_pos_deviation_smoother.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - ":fem_pos_deviation_ipopt_interface", - ":fem_pos_deviation_osqp_interface", - ":fem_pos_deviation_sqp_osqp_interface", - "//cyber", - "//modules/planning/planning_base/proto/math:fem_pos_deviation_smoother_config_cc_proto", - "@ipopt", - ], -) - -cc_library( - name = "fem_pos_deviation_ipopt_interface", - srcs = ["fem_pos_deviation_ipopt_interface.cc"], - hdrs = ["fem_pos_deviation_ipopt_interface.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", - "@adolc", - "@ipopt", - ], -) - -cc_library( - name = "fem_pos_deviation_osqp_interface", - srcs = ["fem_pos_deviation_osqp_interface.cc"], - hdrs = ["fem_pos_deviation_osqp_interface.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", - "@osqp", - ], -) - -cc_library( - name = "fem_pos_deviation_sqp_osqp_interface", - srcs = ["fem_pos_deviation_sqp_osqp_interface.cc"], - hdrs = ["fem_pos_deviation_sqp_osqp_interface.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", - "@osqp", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/math/piecewise_jerk/BUILD b/modules/planning/planning_base/math/piecewise_jerk/BUILD deleted file mode 100644 index 5538bed5fc0..00000000000 --- a/modules/planning/planning_base/math/piecewise_jerk/BUILD +++ /dev/null @@ -1,40 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "piecewise_jerk_problem", - srcs = ["piecewise_jerk_problem.cc"], - hdrs = ["piecewise_jerk_problem.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", - "//modules/planning/planning_base/common:planning_gflags", - "@osqp", - ], -) - -cc_library( - name = "piecewise_jerk_path_problem", - srcs = ["piecewise_jerk_path_problem.cc"], - hdrs = ["piecewise_jerk_path_problem.h"], - deps = [ - ":piecewise_jerk_problem", - ], -) - -cc_library( - name = "piecewise_jerk_speed_problem", - srcs = ["piecewise_jerk_speed_problem.cc"], - hdrs = ["piecewise_jerk_speed_problem.h"], - deps = [ - ":piecewise_jerk_problem", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/math/smoothing_spline/BUILD b/modules/planning/planning_base/math/smoothing_spline/BUILD deleted file mode 100644 index 474eab9b7f2..00000000000 --- a/modules/planning/planning_base/math/smoothing_spline/BUILD +++ /dev/null @@ -1,246 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "affine_constraint", - srcs = ["affine_constraint.cc"], - hdrs = ["affine_constraint.h"], - deps = [ - "//modules/planning/planning_base/math:polynomial_xd", - "@eigen", - ], -) - -cc_library( - name = "spline_1d_seg", - srcs = ["spline_1d_seg.cc"], - hdrs = ["spline_1d_seg.h"], - deps = [ - "//modules/planning/planning_base/math:polynomial_xd", - "@eigen", - ], -) - -cc_library( - name = "spline_1d", - srcs = ["spline_1d.cc"], - hdrs = ["spline_1d.h"], - deps = [ - ":affine_constraint", - ":spline_1d_seg", - "//modules/planning/planning_base/math:polynomial_xd", - "@eigen", - ], -) - -cc_library( - name = "spline_1d_constraint", - srcs = ["spline_1d_constraint.cc"], - hdrs = ["spline_1d_constraint.h"], - deps = [ - ":affine_constraint", - ":spline_1d", - "//cyber", - "@eigen", - ], -) - -cc_library( - name = "spline_seg_kernel", - srcs = ["spline_seg_kernel.cc"], - hdrs = ["spline_seg_kernel.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", - "@eigen", - ], -) - -cc_library( - name = "spline_1d_kernel", - srcs = ["spline_1d_kernel.cc"], - hdrs = ["spline_1d_kernel.h"], - deps = [ - ":affine_constraint", - ":spline_1d", - ":spline_seg_kernel", - "@eigen", - ], -) - -cc_library( - name = "spline_1d_solver", - srcs = ["spline_1d_solver.cc"], - hdrs = ["spline_1d_solver.h"], - deps = [ - ":spline_1d", - ":spline_1d_constraint", - ":spline_1d_kernel", - # "//modules/common/math", - "//modules/common/math/qp_solver", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto/math:qp_problem_cc_proto", - "@eigen", - ], -) - -cc_library( - name = "osqp_spline_1d_solver", - srcs = ["osqp_spline_1d_solver.cc"], - hdrs = ["osqp_spline_1d_solver.h"], - deps = [ - ":spline_1d_solver", - "//modules/common/math", - "//modules/common/math/qp_solver", - "//modules/planning/planning_base/common:planning_gflags", - "@osqp", - ], -) - -cc_test( - name = "osqp_spline_1d_solver_test", - size = "small", - srcs = ["osqp_spline_1d_solver_test.cc"], - deps = [ - ":osqp_spline_1d_solver", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "spline_2d_seg", - srcs = ["spline_2d_seg.cc"], - hdrs = ["spline_2d_seg.h"], - deps = [ - "//modules/planning/planning_base/math:polynomial_xd", - "@eigen", - ], -) - -cc_library( - name = "spline_2d", - srcs = ["spline_2d.cc"], - hdrs = ["spline_2d.h"], - deps = [ - ":spline_2d_seg", - "//modules/planning/planning_base/math:polynomial_xd", - "@eigen", - ], -) - -cc_library( - name = "spline_2d_constraint", - srcs = ["spline_2d_constraint.cc"], - hdrs = ["spline_2d_constraint.h"], - deps = [ - ":affine_constraint", - ":spline_2d", - "//modules/common/math", - "@eigen", - ], -) - -cc_library( - name = "spline_2d_kernel", - srcs = ["spline_2d_kernel.cc"], - hdrs = ["spline_2d_kernel.h"], - deps = [ - ":spline_2d", - ":spline_seg_kernel", - "//modules/common/math", - "@eigen", - ], -) - -cc_library( - name = "spline_2d_solver", - hdrs = [ - "osqp_spline_2d_solver.h", - "spline_2d_solver.h", - ], - deps = [ - ":spline_2d", - ":spline_2d_constraint", - ":spline_2d_kernel", - # "//modules/common/math", - "//modules/common/math/qp_solver", - "//modules/planning/planning_base/common:planning_gflags", - "@eigen", - "@osqp", - ], -) - -cc_library( - name = "osqp_spline_2d_solver", - srcs = ["osqp_spline_2d_solver.cc"], - hdrs = ["osqp_spline_2d_solver.h"], - deps = [ - ":spline_2d_solver", - ":spline_2d", - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "@com_google_googletest//:gtest", - "@osqp", - ], -) - -cc_test( - name = "osqp_spline_2d_solver_test", - size = "small", - srcs = ["osqp_spline_2d_solver_test.cc"], - deps = [ - ":osqp_spline_2d_solver", - "//modules/planning/planning_base/math:curve_math", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "spline_1d_kernel_test", - size = "small", - srcs = ["spline_1d_kernel_test.cc"], - linkopts = ["-lm"], - deps = [ - ":spline_1d_kernel", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "spline_1d_constraint_test", - size = "small", - srcs = ["spline_1d_constraint_test.cc"], - deps = [ - ":spline_1d_constraint", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "spline_2d_kernel_test", - size = "small", - srcs = ["spline_2d_kernel_test.cc"], - deps = [ - ":spline_2d_kernel", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "spline_2d_constraint_test", - size = "small", - srcs = ["spline_2d_constraint_test.cc"], - deps = [ - ":spline_2d_constraint", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/navi/decider/BUILD b/modules/planning/planning_base/navi/decider/BUILD deleted file mode 100644 index 48e38aae5b4..00000000000 --- a/modules/planning/planning_base/navi/decider/BUILD +++ /dev/null @@ -1,108 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "navi_task", - srcs = ["navi_task.cc"], - hdrs = ["navi_task.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - ], -) - -cc_library( - name = "navi_path_decider", - srcs = ["navi_path_decider.cc"], - hdrs = ["navi_path_decider.h"], - copts = PLANNING_COPTS, - deps = [ - ":navi_task", - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/navi/decider:navi_obstacle_decider", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/task_base:task", - ], -) - -cc_library( - name = "navi_speed_decider", - srcs = [ - "navi_speed_decider.cc", - "navi_speed_ts_graph.cc", - ], - hdrs = [ - "navi_speed_decider.h", - "navi_speed_ts_graph.h", - ], - copts = PLANNING_COPTS, - deps = [ - ":navi_task", - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/navi/decider:navi_obstacle_decider", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/task_base:task", - ], -) - -cc_library( - name = "navi_obstacle_decider", - srcs = ["navi_obstacle_decider.cc"], - hdrs = ["navi_obstacle_decider.h"], - copts = PLANNING_COPTS, - deps = [ - ":navi_task", - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/task_base:task", - ], -) - -cc_test( - name = "navi_decider_test", - size = "small", - srcs = [ - "navi_obstacle_decider_test.cc", - "navi_path_decider_test.cc", - "navi_speed_decider_test.cc", - "navi_speed_ts_graph_test.cc", - ], - data = ["//modules/planning/planning_base:planning_testdata"], - deps = [ - ":navi_obstacle_decider", - ":navi_path_decider", - ":navi_speed_decider", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/on_lane_planning.cc b/modules/planning/planning_base/on_lane_planning.cc index 77972022be0..61b6b572b16 100644 --- a/modules/planning/planning_base/on_lane_planning.cc +++ b/modules/planning/planning_base/on_lane_planning.cc @@ -286,10 +286,9 @@ void OnLanePlanning::RunOnce(const LocalView& local_view, AINFO << "new_command:" << last_command_.DebugString(); injector_->history()->Clear(); injector_->planning_context()->mutable_planning_status()->Clear(); - if (reference_line_provider_->UpdatePlanningCommand( - *(local_view_.planning_command))) { - planner_->Reset(frame_.get()); - } + reference_line_provider_->UpdatePlanningCommand( + *(local_view_.planning_command)); + planner_->Reset(frame_.get()); } // Get end lane way point. reference_line_provider_->GetEndLaneWayPoint(local_view_.end_lane_way_point); @@ -522,7 +521,7 @@ Status OnLanePlanning::Plan( frame_->open_space_info().publishable_trajectory_data().second; publishable_trajectory.PopulateTrajectoryProtobuf(ptr_trajectory_pb); ptr_trajectory_pb->set_gear(publishable_trajectory_gear); - + ptr_trajectory_pb->set_trajectory_type(ADCTrajectory::OPEN_SPACE); // TODO(QiL): refine engage advice in open space trajectory optimizer. auto* engage_advice = ptr_trajectory_pb->mutable_engage_advice(); diff --git a/modules/planning/planning_base/open_space/coarse_trajectory_generator/BUILD b/modules/planning/planning_base/open_space/coarse_trajectory_generator/BUILD deleted file mode 100644 index bb3e9bb43f6..00000000000 --- a/modules/planning/planning_base/open_space/coarse_trajectory_generator/BUILD +++ /dev/null @@ -1,118 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "node3d", - srcs = ["node3d.cc"], - hdrs = ["node3d.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/math", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/constraint_checker:collision_checker", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - ], -) - -cc_library( - name = "reeds_shepp_path", - srcs = ["reeds_shepp_path.cc"], - hdrs = ["reeds_shepp_path.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - "-fopenmp", - ], - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/open_space/coarse_trajectory_generator:node3d", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "@adolc", - ], -) - -cc_library( - name = "grid_search", - srcs = ["grid_search.cc"], - hdrs = ["grid_search.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/math", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - ], -) - -cc_library( - name = "open_space_utils", - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/open_space/coarse_trajectory_generator:grid_search", - "//modules/planning/planning_base/open_space/coarse_trajectory_generator:node3d", - "//modules/planning/planning_base/open_space/coarse_trajectory_generator:reeds_shepp_path", - ], -) - -cc_library( - name = "hybrid_a_star", - srcs = ["hybrid_a_star.cc"], - hdrs = ["hybrid_a_star.h"], - copts = PLANNING_COPTS, - deps = [ - ":open_space_utils", - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/math/piecewise_jerk:piecewise_jerk_speed_problem", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - ], -) - -cc_test( - name = "reeds_shepp_path_test", - size = "small", - srcs = ["reeds_shepp_path_test.cc"], - linkopts = ["-lgomp"], - deps = [ - ":open_space_utils", - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "node3d_test", - size = "small", - srcs = ["node3d_test.cc"], - linkopts = ["-lgomp"], - deps = [ - ":open_space_utils", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "hybrid_a_star_test", - size = "small", - srcs = ["hybrid_a_star_test.cc"], - linkopts = ["-lgomp"], - deps = [ - ":hybrid_a_star", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/open_space/coarse_trajectory_generator/hybrid_a_star.cc b/modules/planning/planning_base/open_space/coarse_trajectory_generator/hybrid_a_star.cc index 87dfc5f58d9..75aa3e5419f 100644 --- a/modules/planning/planning_base/open_space/coarse_trajectory_generator/hybrid_a_star.cc +++ b/modules/planning/planning_base/open_space/coarse_trajectory_generator/hybrid_a_star.cc @@ -178,6 +178,8 @@ std::shared_ptr HybridAStar::LoadRSPinCS( reeds_shepp_to_end->x, reeds_shepp_to_end->y, reeds_shepp_to_end->phi, XYbounds_, planner_open_space_config_)); end_node->SetPre(current_node); + AINFO << "current_node->GetTrajCost() is " << current_node->GetTrajCost() + << " reeds_shepp_to_end->cost is " << reeds_shepp_to_end->cost; end_node->SetTrajCost(current_node->GetTrajCost() + reeds_shepp_to_end->cost); return end_node; } @@ -766,6 +768,8 @@ bool HybridAStar::Plan( // Hybrid A* begins size_t explored_node_num = 0; size_t available_result_num = 0; + auto best_explored_num = explored_node_num; + auto best_available_result_num = available_result_num; double astar_start_time = Clock::NowInSeconds(); double heuristic_time = 0.0; double rs_time = 0.0; @@ -773,10 +777,14 @@ bool HybridAStar::Plan( double validity_check_time = 0.0; size_t max_explored_num = planner_open_space_config_.warm_start_config().max_explored_num(); + size_t desired_explored_num = std::min( + planner_open_space_config_.warm_start_config().desired_explored_num(), + planner_open_space_config_.warm_start_config().max_explored_num()); static constexpr int kMaxNodeNum = 200000; std::vector> candidate_final_nodes; while (!open_pq_.empty() && open_pq_.size() < kMaxNodeNum && - (available_result_num == 0 || explored_node_num < max_explored_num)) { + available_result_num < desired_explored_num && + explored_node_num < max_explored_num) { std::shared_ptr current_node = open_pq_.top().first; open_pq_.pop(); const double rs_start_time = Clock::NowInSeconds(); @@ -785,6 +793,8 @@ bool HybridAStar::Plan( if (final_node_ == nullptr || final_node_->GetTrajCost() > final_node->GetTrajCost()) { final_node_ = final_node; + best_explored_num = explored_node_num + 1; + best_available_result_num = available_result_num + 1; } available_result_num++; } @@ -825,8 +835,12 @@ bool HybridAStar::Plan( } open_set_.insert(temp_set.begin(), temp_set.end()); } + AINFO << "min cost is : " << final_node_->GetTrajCost(); + AINFO << "max_explored_num is " << max_explored_num; AINFO << "explored node num is " << explored_node_num << "available_result_num " << available_result_num; + AINFO << "best_explored_num is " << best_explored_num + << "best_available_result_num is " << best_available_result_num; AINFO << "cal node time is " << heuristic_time << "validity_check_time " << validity_check_time << "node_generator_time " << node_generator_time; AINFO << "reed shepp time is " << rs_time; diff --git a/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.cc b/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.cc index f44e33cd5fe..21eb2438c18 100644 --- a/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.cc +++ b/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.cc @@ -42,7 +42,13 @@ ReedShepp::ReedShepp(const common::VehicleParam& vehicle_param, planner_open_space_config_.warm_start_config().traj_steer_penalty(); traj_steer_change_penalty_ = planner_open_space_config_.warm_start_config() .traj_steer_change_penalty(); + traj_short_length_penalty_ = planner_open_space_config_.warm_start_config() + .traj_short_length_penalty(); + traj_expected_shortest_length_ = + planner_open_space_config_.warm_start_config() + .traj_expected_shortest_length(); AINFO << "max kappa: " << max_kappa_; + AINFO << "traj_short_length_penalty_: " << traj_short_length_penalty_; AINFO_IF(FLAGS_enable_parallel_hybrid_a) << "parallel REEDShepp"; } @@ -91,11 +97,6 @@ bool ReedShepp::ShortestRSP(const std::shared_ptr start_node, std::atan(vehicle_param_.wheel_base() / steering_radius * 2.0) * traj_steer_change_penalty_; for (size_t j = 0; j < path.segs_lengths.size(); j++) { - if (path.segs_lengths[j] < 0) { - cost += -path.segs_lengths[j] * traj_back_penalty_ / max_kappa_; - } else { - cost += path.segs_lengths[j] * traj_forward_penalty_ / max_kappa_; - } if (path.segs_types[j] != 'S') { cost += std::fabs(path.segs_lengths[j]) * (traj_steer_penalty_) / max_kappa_ * path.radius; @@ -103,6 +104,20 @@ bool ReedShepp::ShortestRSP(const std::shared_ptr start_node, (path.segs_types[j - 1] != path.segs_types[j])) { cost += steer_change_penalty_cost; } + if (std::fabs(path.segs_lengths[j]) / max_kappa_ * path.radius < + traj_expected_shortest_length_) { + cost += traj_short_length_penalty_; + } + } else { + if (path.segs_lengths[j] < 0) { + cost += -path.segs_lengths[j] * traj_back_penalty_ / max_kappa_; + } else { + cost += path.segs_lengths[j] * traj_forward_penalty_ / max_kappa_; + } + if (std::fabs(path.segs_lengths[j]) / max_kappa_ < + traj_expected_shortest_length_) { + cost += traj_short_length_penalty_; + } } if (j > 0 && path.segs_lengths[j] * path.segs_lengths[j - 1] < 0) { diff --git a/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.h b/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.h index 5bd0297916c..39938aca4f0 100644 --- a/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.h +++ b/modules/planning/planning_base/open_space/coarse_trajectory_generator/reeds_shepp_path.h @@ -142,6 +142,8 @@ class ReedShepp { double traj_gear_switch_penalty_; double traj_steer_penalty_; double traj_steer_change_penalty_; + double traj_short_length_penalty_; + double traj_expected_shortest_length_; }; } // namespace planning } // namespace apollo diff --git a/modules/planning/planning_base/open_space/tools/BUILD b/modules/planning/planning_base/open_space/tools/BUILD deleted file mode 100644 index d84c2d2e09d..00000000000 --- a/modules/planning/planning_base/open_space/tools/BUILD +++ /dev/null @@ -1,49 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_binary( - name = "hybrid_a_star_wrapper_lib.so", - srcs = ["hybrid_a_star_wrapper.cc"], - linkshared = True, - linkstatic = False, - deps = [ - "//modules/planning/planning_base/open_space/coarse_trajectory_generator:hybrid_a_star", - ], -) - -cc_binary( - name = "distance_approach_problem_wrapper_lib.so", - srcs = ["distance_approach_problem_wrapper.cc"], - copts = ["-fopenmp"], - linkshared = True, - linkstatic = False, - deps = [ - "//modules/planning/planning_base/open_space/coarse_trajectory_generator:hybrid_a_star", - "//modules/planning/planning_base/open_space/trajectory_smoother:distance_approach_problem", - "//modules/planning/planning_base/open_space/trajectory_smoother:dual_variable_warm_start_problem", - ], -) - -cc_binary( - name = "open_space_roi_wrapper_lib.so", - srcs = ["open_space_roi_wrapper.cc"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - linkshared = True, - linkstatic = False, - deps = [ - "//cyber", - "//modules/common/math", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "@eigen", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/open_space/trajectory_smoother/BUILD b/modules/planning/planning_base/open_space/trajectory_smoother/BUILD deleted file mode 100644 index dbda90ca4eb..00000000000 --- a/modules/planning/planning_base/open_space/trajectory_smoother/BUILD +++ /dev/null @@ -1,351 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools/platform:build_defs.bzl", "if_gpu") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] -PLANNING_FOPENMP = ["-DMODULE_NAME=\\\"planning\\\"","-fopenmp"] - -cc_library( - name = "dual_variable_warm_start_problem", - srcs = ["dual_variable_warm_start_problem.cc"], - hdrs = ["dual_variable_warm_start_problem.h"], - copts = PLANNING_COPTS, - deps = [ - ":dual_variable_warm_start_ipopt_interface", - ":dual_variable_warm_start_ipopt_qp_interface", - ":dual_variable_warm_start_osqp_interface", - ":dual_variable_warm_start_slack_osqp_interface", - "//cyber", - "//modules/common/util:util_tool", - ], -) - -cc_library( - name = "dual_variable_warm_start_ipopt_interface", - srcs = ["dual_variable_warm_start_ipopt_interface.cc"], - hdrs = ["dual_variable_warm_start_ipopt_interface.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ], -) - -cc_library( - name = "dual_variable_warm_start_ipopt_qp_interface", - srcs = ["dual_variable_warm_start_ipopt_qp_interface.cc"], - hdrs = ["dual_variable_warm_start_ipopt_qp_interface.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ], -) - -cc_library( - name = "dual_variable_warm_start_osqp_interface", - srcs = ["dual_variable_warm_start_osqp_interface.cc"], - hdrs = ["dual_variable_warm_start_osqp_interface.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@eigen", - "@osqp", - ], -) - -cc_library( - name = "dual_variable_warm_start_slack_osqp_interface", - srcs = ["dual_variable_warm_start_slack_osqp_interface.cc"], - hdrs = ["dual_variable_warm_start_slack_osqp_interface.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@eigen", - "@osqp", - ], -) - -cc_library( - name = "distance_approach_problem", - srcs = ["distance_approach_problem.cc"], - hdrs = ["distance_approach_problem.h"], - copts = PLANNING_FOPENMP, - deps = [ - ":distance_approach_ipopt_cuda_interface", - ":distance_approach_ipopt_fixed_dual_interface", - ":distance_approach_ipopt_fixed_ts_interface", - ":distance_approach_ipopt_interface", - ":distance_approach_ipopt_relax_end_interface", - ":distance_approach_ipopt_relax_end_slack_interface", - "//cyber", - "//modules/common/util:util_tool", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - ], -) - -cc_library( - name = "distance_approach_ipopt_fixed_ts_interface", - srcs = ["distance_approach_ipopt_fixed_ts_interface.cc"], - hdrs = [ - "distance_approach_interface.h", - "distance_approach_ipopt_fixed_ts_interface.h", - ], - copts = PLANNING_FOPENMP, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ], -) - -cc_library( - name = "distance_approach_ipopt_fixed_dual_interface", - srcs = ["distance_approach_ipopt_fixed_dual_interface.cc"], - hdrs = [ - "distance_approach_interface.h", - "distance_approach_ipopt_fixed_dual_interface.h", - ], - copts = PLANNING_FOPENMP, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ], -) - -cc_library( - name = "distance_approach_ipopt_relax_end_interface", - srcs = ["distance_approach_ipopt_relax_end_interface.cc"], - hdrs = [ - "distance_approach_interface.h", - "distance_approach_ipopt_relax_end_interface.h", - ], - copts = PLANNING_FOPENMP, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ], -) - -cc_library( - name = "distance_approach_ipopt_relax_end_slack_interface", - srcs = ["distance_approach_ipopt_relax_end_slack_interface.cc"], - hdrs = [ - "distance_approach_interface.h", - "distance_approach_ipopt_relax_end_slack_interface.h", - ], - copts = PLANNING_FOPENMP, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ], -) - -cc_library( - name = "distance_approach_ipopt_interface", - srcs = ["distance_approach_ipopt_interface.cc"], - hdrs = [ - "distance_approach_interface.h", - "distance_approach_ipopt_interface.h", - ], - copts = PLANNING_FOPENMP, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ], -) - -cc_library( - name = "distance_approach_ipopt_cuda_interface", - srcs = ["distance_approach_ipopt_cuda_interface.cc"], - hdrs = [ - "distance_approach_interface.h", - "distance_approach_ipopt_cuda_interface.h", - ], - copts = PLANNING_FOPENMP, - deps = [ - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@adolc", - "@eigen", - "@ipopt", - ] + if_gpu([":planning_block"]), -) - -cc_library( - name = "iterative_anchoring_smoother", - srcs = ["iterative_anchoring_smoother.cc"], - hdrs = ["iterative_anchoring_smoother.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common/math", - "//modules/planning/planning_base/common:speed_profile_generator", - "//modules/planning/planning_base/common/path:discretized_path", - "//modules/planning/planning_base/common/speed:speed_data", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/math:discrete_points_math", - "//modules/planning/planning_base/math/discretized_points_smoothing:fem_pos_deviation_smoother", - "//modules/planning/planning_base/proto:planner_open_space_config_cc_proto", - "@eigen", - ], -) - -cuda_library( - name = "planning_block", - srcs = ["planning_block.cu"], - hdrs = ["planning_block.h"], - deps = [ - "@local_config_cuda//cuda:cuda_headers", - "@local_config_cuda//cuda:cudart", - ], -) - -cc_test( - name = "distance_approach_ipopt_interface_test", - size = "small", - srcs = ["distance_approach_ipopt_interface_test.cc"], - copts = PLANNING_FOPENMP, - linkopts = ["-lgomp"], - deps = [ - ":distance_approach_ipopt_interface", - "//cyber", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "distance_approach_ipopt_cuda_interface_test", - size = "small", - srcs = ["distance_approach_ipopt_cuda_interface_test.cc"], - copts = PLANNING_FOPENMP, - linkopts = ["-lgomp"], - deps = [ - ":distance_approach_ipopt_cuda_interface", - "//cyber", - "@com_google_googletest//:gtest_main", - ] + if_gpu(["@local_config_cuda//cuda:cudart"]), - linkstatic = True, -) - -cc_test( - name = "distance_approach_problem_test", - size = "small", - srcs = ["distance_approach_problem_test.cc"], - copts = PLANNING_FOPENMP, - linkopts = ["-lgomp"], - deps = [ - ":distance_approach_problem", - "//cyber", - "@com_google_googletest//:gtest_main", - ] + if_gpu(["@local_config_cuda//cuda:cudart"]), - linkstatic = True, -) - -cc_test( - name = "dual_variable_warm_start_ipopt_interface_test", - size = "small", - srcs = ["dual_variable_warm_start_ipopt_interface_test.cc"], - deps = [ - ":dual_variable_warm_start_ipopt_interface", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "dual_variable_warm_start_osqp_interface_test", - size = "small", - srcs = ["dual_variable_warm_start_osqp_interface_test.cc"], - deps = [ - ":dual_variable_warm_start_ipopt_qp_interface", - ":dual_variable_warm_start_osqp_interface", - "@com_google_googletest//:gtest_main", - "@ipopt", - ], - linkstatic = True, -) - -cc_test( - name = "dual_variable_warm_start_problem_test", - size = "small", - srcs = ["dual_variable_warm_start_problem_test.cc"], - deps = [ - ":dual_variable_warm_start_problem", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/open_space/utils/BUILD b/modules/planning/planning_base/open_space/utils/BUILD deleted file mode 100644 index 4bdd50b9748..00000000000 --- a/modules/planning/planning_base/open_space/utils/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "open_space_roi_utils", - srcs = ["open_space_roi_util.cc"], - hdrs = ["open_space_roi_util.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/common:frame" - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/pipeline/BUILD b/modules/planning/planning_base/pipeline/BUILD deleted file mode 100644 index 369440c0f10..00000000000 --- a/modules/planning/planning_base/pipeline/BUILD +++ /dev/null @@ -1,54 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "evaluator", - srcs = ["evaluator.cc"], - hdrs = ["evaluator.h"], - copts = PLANNING_COPTS, - deps = [ - ":evaluator_logger", - "//cyber", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:trajectory_evaluator", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/planning/planning_base/proto:learning_data_cc_proto", - ], -) - -cc_library( - name = "evaluator_logger", - hdrs = ["evaluator_logger.h"], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/planning/planning_base/common:planning_gflags", - ], -) - -cc_binary( - name = "evaluate_trajectory", - srcs = ["evaluate_trajectory.cc"], - copts = PLANNING_COPTS, - deps = [ - ":evaluator", - ], -) - -cc_binary( - name = "record_to_learning_data", - srcs = ["record_to_learning_data.cc"], - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/common:feature_output", - "//modules/planning/planning_base/common:message_process", - "//modules/planning/planning_base/common:planning_gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/planner/BUILD b/modules/planning/planning_base/planner/BUILD deleted file mode 100644 index 06c14628213..00000000000 --- a/modules/planning/planning_base/planner/BUILD +++ /dev/null @@ -1,77 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "planner", - hdrs = ["planner.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", - "//modules/planning/planning_base/scenario_base:scenario_manager", - ], -) - -cc_library( - name = "planner_dispatcher", - srcs = [ - "navi_planner_dispatcher.cc", - "on_lane_planner_dispatcher.cc", - "planner_dispatcher.cc", - ], - hdrs = [ - "navi_planner_dispatcher.h", - "on_lane_planner_dispatcher.h", - "planner_dispatcher.h", - ], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - "-fopenmp", - ], - deps = [ - ":planner", - "//modules/common/status", - "//modules/common/util", - "//modules/planning/planning_base/planner/lattice:lattice_planner", - "//modules/planning/planning_base/planner/navi:navi_planner", - "//modules/planning/planning_base/planner/public_road:public_road_planner", - "//modules/planning/planning_base/planner/rtk:rtk_planner", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - ], -) - -cc_test( - name = "on_lane_planner_dispatcher_test", - size = "small", - srcs = ["on_lane_planner_dispatcher_test.cc"], - linkopts = ["-lgomp"], - deps = [ - ":planner_dispatcher", - "@com_google_googletest//:gtest_main", - "//modules/planning/planning_base/common:dependency_injector", - ], - linkstatic = True, -) - -cc_test( - name = "navi_planner_dispatcher_test", - size = "small", - srcs = ["navi_planner_dispatcher_test.cc"], - linkopts = ["-lgomp"], - deps = [ - ":planner_dispatcher", - "//modules/planning/planning_base/common:dependency_injector", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/planner/lattice/BUILD b/modules/planning/planning_base/planner/lattice/BUILD deleted file mode 100644 index a382a6d753c..00000000000 --- a/modules/planning/planning_base/planner/lattice/BUILD +++ /dev/null @@ -1,31 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "lattice_planner", - srcs = ["lattice_planner.cc"], - hdrs = ["lattice_planner.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//cyber", - "//modules/common/math", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/constraint_checker", - "//modules/planning/planning_base/constraint_checker:collision_checker", - "//modules/planning/planning_base/lattice/behavior:path_time_graph", - "//modules/planning/planning_base/lattice/trajectory_generation:backup_trajectory_generator", - "//modules/planning/planning_base/lattice/trajectory_generation:lattice_trajectory1d", - "//modules/planning/planning_base/lattice/trajectory_generation:trajectory1d_generator", - "//modules/planning/planning_base/lattice/trajectory_generation:trajectory_combiner", - "//modules/planning/planning_base/lattice/trajectory_generation:trajectory_evaluator", - "//modules/planning/planning_base/planner", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/planner/navi/BUILD b/modules/planning/planning_base/planner/navi/BUILD deleted file mode 100644 index cd8b70d54db..00000000000 --- a/modules/planning/planning_base/planner/navi/BUILD +++ /dev/null @@ -1,51 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "navi_planner", - srcs = ["navi_planner.cc"], - hdrs = ["navi_planner.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/proto:navi_task_config_cc_proto", - "//modules/planning/planning_base/constraint_checker", - "//modules/planning/planning_base/math/curve1d:quartic_polynomial_curve1d", - "//modules/planning/planning_base/navi/decider:navi_obstacle_decider", - "//modules/planning/planning_base/navi/decider:navi_path_decider", - "//modules/planning/planning_base/navi/decider:navi_speed_decider", - "//modules/planning/planning_base/planner", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/reference_line", - "//modules/planning/planning_base/reference_line:qp_spline_reference_line_smoother", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_test( - name = "navi_planner_test", - size = "small", - srcs = ["navi_planner_test.cc"], - data = ["//modules/planning/planning_base:planning_testdata"], - linkopts = ["-lgomp"], - deps = [ - ":navi_planner", - "//cyber", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/planner/public_road/BUILD b/modules/planning/planning_base/planner/public_road/BUILD deleted file mode 100644 index c622c00010a..00000000000 --- a/modules/planning/planning_base/planner/public_road/BUILD +++ /dev/null @@ -1,46 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "public_road_planner", - srcs = ["public_road_planner.cc"], - hdrs = ["public_road_planner.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/constraint_checker", - "//modules/planning/planning_base/math/curve1d:quartic_polynomial_curve1d", - "//modules/planning/planning_base/planner", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/reference_line", - "//modules/planning/planning_base/reference_line:qp_spline_reference_line_smoother", - "@com_github_gflags_gflags//:gflags", - "@eigen", - ], -) - -cc_test( - name = "public_road_planner_test", - size = "small", - srcs = ["public_road_planner_test.cc"], - linkopts = ["-lgomp"], - deps = [ - ":public_road_planner", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/planner/public_road/public_road_planner.cc b/modules/planning/planning_base/planner/public_road/public_road_planner.cc index 51537e4fd78..0ee6512afdc 100644 --- a/modules/planning/planning_base/planner/public_road/public_road_planner.cc +++ b/modules/planning/planning_base/planner/public_road/public_road_planner.cc @@ -45,8 +45,8 @@ Status PublicRoadPlanner::Plan(const TrajectoryPoint& planning_start_point, auto scenario_debug = ptr_computed_trajectory->mutable_debug() ->mutable_planning_data() ->mutable_scenario(); - scenario_debug->set_scenario_type(scenario_->Name()); - scenario_debug->set_stage_type(scenario_->GetStage()); + scenario_debug->set_scenario_plugin_type(scenario_->Name()); + scenario_debug->set_stage_plugin_type(scenario_->GetStage()); scenario_debug->set_msg(scenario_->GetMsg()); } diff --git a/modules/planning/planning_base/planner/rtk/BUILD b/modules/planning/planning_base/planner/rtk/BUILD deleted file mode 100644 index 66a4f69edc0..00000000000 --- a/modules/planning/planning_base/planner/rtk/BUILD +++ /dev/null @@ -1,46 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "rtk_planner", - srcs = ["rtk_replay_planner.cc"], - hdrs = ["rtk_replay_planner.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/math/curve1d:quartic_polynomial_curve1d", - "//modules/planning/planning_base/planner", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "@com_github_gflags_gflags//:gflags", - "@com_google_absl//:absl", - "@eigen", - ], -) - -cc_test( - name = "rtk_replay_planner_test", - size = "small", - srcs = ["rtk_replay_planner_test.cc"], - data = ["//modules/planning/planning_base:planning_testdata"], - linkopts = ["-lgomp"], - deps = [ - ":rtk_planner", - "//cyber", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - "//modules/planning/planning_base/common:dependency_injector", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/planning_component.cc b/modules/planning/planning_base/planning_component.cc index e69468c310c..ba7205b4d51 100644 --- a/modules/planning/planning_base/planning_component.cc +++ b/modules/planning/planning_base/planning_component.cc @@ -218,9 +218,10 @@ bool PlanningComponent::Proc( if (nullptr != local_view_.planning_command) { command_status.set_command_id(local_view_.planning_command->command_id()); } - if (adc_trajectory_pb.estop().is_estop()) { + if (adc_trajectory_pb.header().status().error_code() != + common::ErrorCode::OK) { command_status.set_status(external_command::CommandStatusType::ERROR); - command_status.set_message(adc_trajectory_pb.estop().reason()); + command_status.set_message(adc_trajectory_pb.header().status().msg()); } else if (planning_base_->IsPlanningFinished()) { command_status.set_status(external_command::CommandStatusType::FINISHED); } else { diff --git a/modules/planning/planning_base/proto/BUILD b/modules/planning/planning_base/proto/BUILD index 23e51e62889..ec2d844cc43 100644 --- a/modules/planning/planning_base/proto/BUILD +++ b/modules/planning/planning_base/proto/BUILD @@ -1,3 +1,5 @@ +load("//tools:cpplint.bzl", "cpplint") + ## Auto generated by `proto_build_generator.py` load("//tools:apollo_package.bzl", "apollo_package") load("//tools/proto:proto.bzl", "proto_library") @@ -14,19 +16,14 @@ proto_library( srcs = ["planning_semantic_map_config.proto"], ) -proto_library( - name = "traffic_rule_config_proto", - srcs = ["traffic_rule_config.proto"], -) - proto_library( name = "planning_status_proto", srcs = ["planning_status.proto"], deps = [ - "//modules/common_msgs/basic_msgs:geometry_proto", ":planning_config_proto", + "//modules/common_msgs/basic_msgs:geometry_proto", + "//modules/common_msgs/external_command_msgs:lane_follow_command_proto", "//modules/common_msgs/routing_msgs:routing_proto", - "//modules/common_msgs/external_command_msgs:lane_follow_command_proto" ], ) @@ -39,15 +36,15 @@ proto_library( name = "learning_data_proto", srcs = ["learning_data.proto"], deps = [ - "//modules/common_msgs/chassis_msgs:chassis_proto", "//modules/common_msgs/basic_msgs:geometry_proto", "//modules/common_msgs/basic_msgs:header_proto", "//modules/common_msgs/basic_msgs:pnc_point_proto", + "//modules/common_msgs/chassis_msgs:chassis_proto", "//modules/common_msgs/map_msgs:map_lane_proto", "//modules/common_msgs/perception_msgs:perception_obstacle_proto", + "//modules/common_msgs/perception_msgs:traffic_light_detection_proto", "//modules/common_msgs/prediction_msgs:feature_proto", "//modules/common_msgs/prediction_msgs:prediction_obstacle_proto", - "//modules/common_msgs/perception_msgs:traffic_light_detection_proto", "//modules/common_msgs/routing_msgs:routing_geometry_proto", ], ) @@ -91,8 +88,8 @@ proto_library( name = "planning_config_proto", srcs = ["planning_config.proto"], deps = [ - ":plugin_declare_info_proto", ":navi_task_config_proto", + ":plugin_declare_info_proto", ], ) @@ -112,3 +109,5 @@ proto_library( ) apollo_package() + +cpplint() diff --git a/modules/planning/planning_base/proto/planner_open_space_config.proto b/modules/planning/planning_base/proto/planner_open_space_config.proto index 3784d14221d..55717a89354 100644 --- a/modules/planning/planning_base/proto/planner_open_space_config.proto +++ b/modules/planning/planning_base/proto/planner_open_space_config.proto @@ -71,14 +71,17 @@ message WarmStartConfig { optional double traj_gear_switch_penalty = 7 [default = 10.0]; optional double traj_steer_penalty = 8 [default = 100.0]; optional double traj_steer_change_penalty = 9 [default = 10.0]; + optional double traj_short_length_penalty = 10 [default = 10.0]; // Grid a star xy axis resolution - optional double grid_a_star_xy_resolution = 15 [default = 0.1]; + optional double grid_a_star_xy_resolution = 11 [default = 0.1]; // Node radius for collision check - optional double node_radius = 16 [default = 0.5]; - optional SpeedOptimizerConfig s_curve_config = 17; + optional double node_radius = 12 [default = 0.5]; + optional SpeedOptimizerConfig s_curve_config = 13; // Max curvature ratio in warm start trajectory - optional double traj_kappa_contraint_ratio = 10 [default = 0.7]; - optional int32 max_explored_num = 11 [default = 10000]; + optional double traj_kappa_contraint_ratio = 14 [default = 0.7]; + optional int32 max_explored_num = 15 [default = 10000]; + optional int32 desired_explored_num= 16 [default = 10000]; + optional double traj_expected_shortest_length = 17 [default = 1.0]; } message DualVariableWarmStartConfig { diff --git a/modules/planning/planning_base/proto/traffic_rule_config.proto b/modules/planning/planning_base/proto/traffic_rule_config.proto deleted file mode 100644 index 3d07ea19cdd..00000000000 --- a/modules/planning/planning_base/proto/traffic_rule_config.proto +++ /dev/null @@ -1,143 +0,0 @@ -syntax = "proto2"; - -package apollo.planning; - -message BacksideVehicleConfig { - // obstacle vehicle behind ego-vehicle should not be ignored if its lateral - // projection to reference line has intersection with [-backside_lane_width, - // backside_lane_width]. - optional double backside_lane_width = 1 [default = 4.0]; -} - -message CrosswalkConfig { - // Safty stop distance from stop line of crosswalk. - optional double stop_distance = 1 [default = 1.0]; // meter - // If it is safe for obstacle collision and the stop deceleration calculted - // to stop in front of crosswalk stop line is too big(> - // max_stop_deceleration), ignore the deceleration to keep comfortable driving - // feeling. - optional double max_stop_deceleration = 2 [default = 4.0]; - // If the front edge of ego-vehicle has passed the crosswalk stop line over - // "min_pass_s_distance", it can be considered as passed the crosswalk. - optional double min_pass_s_distance = 3 [default = 1.0]; // meter - // expand crosswalk by "expand_s_distance" for pedestrian/bicycle detection. - optional double expand_s_distance = 5 [default = 2.0]; // meter - // If obstacle is not far enough(lateral distance < "stop_strict_l_distance"), - // it should be taken care and ego-vehicle may stop in front of it. - optional double stop_strict_l_distance = 6 [default = 4.0]; // meter - // If obstacle is far enough(lateral distance > "stop_loose_l_distance"), it - // can be ignored and ego-vehicle has no need to stop in front of it. - optional double stop_loose_l_distance = 7 [default = 5.0]; // meter - // ego-vehicle can move on and ignore the bicycles/pedestrians if - // bicycles/pedestrians remain static longer than "stop_timeout". - optional double stop_timeout = 8 [default = 10.0]; // second -} - -message DestinationConfig { - // Safty stop distance from destination line. - optional double stop_distance = 1 [default = 0.5]; // meter -} - -message KeepClearConfig { - // Flag if "keep-clear-zone" function is enabled. - optional bool enable_keep_clear_zone = 1 [default = true]; - // Flag if junction is checked at the same time. - optional bool enable_junction = 2 [default = true]; - // If the front edge of ego-vehicle has passed "keep-clear-zone" over - // "min_pass_s_distance", it can be considered as having passed - // "keep-clear-zone". - optional double min_pass_s_distance = 3 [default = 2.0]; // meter - // tolerance distance to align pnc_junction boundary with stop_line of traffic - // sign(s). - // If the distance between the start position of the traffic sign and the pnc - // junction < "align_with_traffic_sign_tolerance", take the start position of - // the traffic sign as that of the pnc junction. - optional double align_with_traffic_sign_tolerance = 4 - [default = 4.5]; // meter -} - -message ReferenceLineEndConfig { - // Safty stop distance from reference line end. - optional double stop_distance = 1 [default = 0.5]; // meter - // If ego-vehicle is within a distance of "min_reference_line_remain_length" - // with the reference line end, a stop obstacle will be built at the reference - // line end to stop ego-vehicle. - optional double min_reference_line_remain_length = 2 [default = 50.0]; -} - -message ReroutingConfig { - // should not rerouting more frequent than this number. - optional double cooldown_time = 1 [default = 3.0]; // seconds - // If the distance between ego-vehicle and the end route point > - // "prepare_rerouting_time * speed", there is no need to reroute yet. - optional double prepare_rerouting_time = 2 [default = 2.0]; // seconds -} - -message StopSignConfig { - // Flag if processing of stop sign is enabled. - optional bool enabled = 1 [default = true]; - // Safty stop distance(m) to the stop line of the stop sign. - optional double stop_distance = 2 [default = 1.0]; // meter -} - -message TrafficLightConfig { - // Flag if processing of traffic light is enabled. - optional bool enabled = 1 [default = true]; - // Safty stop distance(m) to the stop line of the traffic light. - optional double stop_distance = 2 [default = 1.0]; // meter - // If the deceleration needed for ego-vehicle to stop in front of the traffic - // light it too big > "max_stop_deceleration", which means it is too late to - // stop, the red traffic light will be ignored and ego-vehicle will move on. - optional double max_stop_deceleration = 3 [default = 4.0]; -} - -message YieldSignConfig { - // Flag if processing of yield sign is enabled. - optional bool enabled = 1 [default = true]; - // Safty stop distance(m) to the stop line of the yield sign. - optional double stop_distance = 2 [default = 1.0]; // meter -} - -// Overall interface of traffic rules. -message TrafficRuleConfig { - enum RuleId { - BACKSIDE_VEHICLE = 1; - CROSSWALK = 2; - DESTINATION = 3; - KEEP_CLEAR = 4; - REFERENCE_LINE_END = 5; - REROUTING = 6; - STOP_SIGN = 7; - TRAFFIC_LIGHT = 8; - YIELD_SIGN = 9; - } - optional RuleId rule_id = 1; - optional bool enabled = 2; - oneof config { - // Rule for other vehicle at backside of ego-vehicle. - BacksideVehicleConfig backside_vehicle = 3; - // Rule for pedestrian crossing. - CrosswalkConfig crosswalk = 4; - // Rule for destination, when vehicle is near the destination, build stop - // decision near the destination. - DestinationConfig destination = 5; - // Rule for area where ego-vehicle cannot park or stop. - KeepClearConfig keep_clear = 6; - // Rule for reference line end, create a virtual stop wall at the end of - // reference line. - ReferenceLineEndConfig reference_line_end = 7; - // Rule for rerouting, judge the condition for rerouting and send rerouint - // request. - ReroutingConfig rerouting = 8; - // Rule for stop sign, build stop decision before the stop sign. - StopSignConfig stop_sign = 9; - // Rule for traffic light, build stop decision when traffic light is red. - TrafficLightConfig traffic_light = 10; - // Rule for yield, build stop decision before the yield sign. - YieldSignConfig yield_sign = 11; - } -} - -message TrafficRuleConfigs { - repeated TrafficRuleConfig config = 1; -} diff --git a/modules/planning/planning_base/reference_line/BUILD b/modules/planning/planning_base/reference_line/BUILD deleted file mode 100644 index a4eff2182ba..00000000000 --- a/modules/planning/planning_base/reference_line/BUILD +++ /dev/null @@ -1,189 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "reference_line", - srcs = [ - "reference_line.cc", - "reference_point.cc", - ], - hdrs = [ - "reference_line.h", - "reference_point.h", - ], - copts = PLANNING_COPTS, - deps = [ - "//cyber", - "//modules/common/math", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/util:util_tool", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "reference_line_smoother", - srcs = [], - hdrs = ["reference_line_smoother.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/proto:reference_line_smoother_config_cc_proto", - ], -) - -cc_library( - name = "qp_spline_reference_line_smoother", - srcs = ["qp_spline_reference_line_smoother.cc"], - hdrs = ["qp_spline_reference_line_smoother.h"], - copts = PLANNING_COPTS, - deps = [ - ":reference_line", - ":reference_line_smoother", - "//modules/planning/planning_base/math:curve_math", - "//modules/planning/planning_base/math:polynomial_xd", - "//modules/planning/planning_base/math/smoothing_spline:osqp_spline_2d_solver", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:reference_line_smoother_config_cc_proto", - "@eigen", - ], -) - -cc_library( - name = "spiral_reference_line_smoother", - srcs = [ - "spiral_problem_interface.cc", - "spiral_reference_line_smoother.cc", - ], - hdrs = [ - "spiral_problem_interface.h", - "spiral_reference_line_smoother.h", - ], - copts = PLANNING_COPTS, - deps = [ - ":reference_line", - ":reference_line_smoother", - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/math/curve1d:quintic_spiral_path", - "//modules/planning/planning_base/math/smoothing_spline:spline_2d_solver", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "@eigen", - "@ipopt", - ], -) - -cc_test( - name = "spiral_reference_line_smoother_test", - size = "small", - srcs = ["spiral_reference_line_smoother_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], - deps = [ - ":spiral_reference_line_smoother", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "discrete_points_reference_line_smoother", - srcs = ["discrete_points_reference_line_smoother.cc"], - hdrs = ["discrete_points_reference_line_smoother.h"], - copts = PLANNING_COPTS, - deps = [ - ":reference_line", - ":reference_line_smoother", - "//modules/common/math", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/math:discrete_points_math", - "//modules/planning/planning_base/math/discretized_points_smoothing:cos_theta_smoother", - "//modules/planning/planning_base/math/discretized_points_smoothing:fem_pos_deviation_smoother", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:reference_line_smoother_config_cc_proto", - ], -) - -cc_test( - name = "qp_spline_reference_line_smoother_test", - size = "small", - srcs = ["qp_spline_reference_line_smoother_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - "//modules/planning/planning_base:planning_testdata", - ], - deps = [ - ":qp_spline_reference_line_smoother", - "//modules/map/hdmap", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "discrete_points_reference_line_smoother_test", - size = "small", - srcs = ["discrete_points_reference_line_smoother_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - "//modules/planning/planning_base:planning_testdata", - ], - deps = [ - ":discrete_points_reference_line_smoother", - "//modules/map/hdmap", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "reference_line_provider", - srcs = ["reference_line_provider.cc"], - hdrs = ["reference_line_provider.h"], - copts = PLANNING_COPTS, - deps = [ - ":discrete_points_reference_line_smoother", - ":qp_spline_reference_line_smoother", - ":reference_line", - ":spiral_reference_line_smoother", - "//cyber", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/util:util_tool", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:indexed_queue", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/proto:planning_status_cc_proto", - "//modules/common/configs:config_gflags", - "@eigen", - ], -) - -cc_binary( - name = "smoother_util", - srcs = ["smoother_util.cc"], - deps = [ - ":discrete_points_reference_line_smoother", - ":qp_spline_reference_line_smoother", - ":reference_line", - ":spiral_reference_line_smoother", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - ], -) - -cc_binary( - name = "spiral_smoother_util", - srcs = ["spiral_smoother_util.cc"], - deps = [ - ":spiral_reference_line_smoother", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/scenario_base/BUILD b/modules/planning/planning_base/scenario_base/BUILD deleted file mode 100644 index 760da99850b..00000000000 --- a/modules/planning/planning_base/scenario_base/BUILD +++ /dev/null @@ -1,79 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "scenario", - srcs = ["scenario.cc"], - hdrs = ["scenario.h"], - copts = PLANNING_COPTS, - deps = [ - ":stage", - ":process_result", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/planning_base/common/util:util_lib", - "//cyber/plugin_manager:plugin_manager", - "//modules/planning/planning_base/scenario_base/proto:scenario_pipeline_cc_proto", - ], -) - -cc_library( - name = "stage", - srcs = [ - "stage.cc", - "base_stage_creep.cc", - "base_stage_cruise.cc", - ], - hdrs = [ - "stage.h", - "base_stage_creep.h", - "base_stage_cruise.h", - ], - copts = PLANNING_COPTS, - deps = [ - ":process_result", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/planning_base/common/util:util_lib", - "//cyber/plugin_manager:plugin_manager", - "//modules/planning/planning_base/scenario_base/proto:scenario_pipeline_cc_proto", - "//modules/planning/planning_base/common:speed_profile_generator", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/scenario_base/proto:creep_stage_cc_proto", - ], -) - -cc_library( - name = "scenario_manager", - srcs = ["scenario_manager.cc"], - hdrs = ["scenario_manager.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common/util:util_lib", - "//cyber/plugin_manager:plugin_manager", - ":scenario", - ], -) - -cc_library( - name = "process_result", - srcs = ["process_result.cc"], - hdrs = ["process_result.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/status:status", - ], -) - -cpplint() -apollo_package() diff --git a/modules/planning/planning_base/scenario_base/proto/BUILD b/modules/planning/planning_base/scenario_base/proto/BUILD index 9ac4a59eaae..d1e442f908a 100644 --- a/modules/planning/planning_base/scenario_base/proto/BUILD +++ b/modules/planning/planning_base/scenario_base/proto/BUILD @@ -1,10 +1,9 @@ ## Auto generated by `proto_build_generator.py` -load("//tools/proto:proto.bzl", "proto_library") load("//tools:apollo_package.bzl", "apollo_package") +load("//tools/proto:proto.bzl", "proto_library") package(default_visibility = ["//visibility:public"]) - proto_library( name = "scenario_pipeline_proto", srcs = ["scenario_pipeline.proto"], diff --git a/modules/planning/planning_base/scenario_base/scenario.cc b/modules/planning/planning_base/scenario_base/scenario.cc index 9e52fe3939b..e82a718babf 100644 --- a/modules/planning/planning_base/scenario_base/scenario.cc +++ b/modules/planning/planning_base/scenario_base/scenario.cc @@ -56,14 +56,20 @@ bool Scenario::Init(std::shared_ptr injector, // Get the name of this class. std::string class_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); - // Generate the default task config path from PluginManager. + config_dir_ = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf"; - config_path_ = config_dir_ + "/scenario_conf.pb.txt"; + ->GetPluginClassHomePath(class_name); + config_dir_ += "/conf"; + AINFO << "config_dir : " << config_dir_; + // Generate the default task config path from PluginManager. + config_path_ = apollo::cyber::plugin_manager::PluginManager::Instance() + ->GetPluginConfPath(class_name, + "conf/scenario_conf.pb.txt"); // Load the pipeline config. - std::string pipeline_config_path = config_dir_ + "/pipeline.pb.txt"; + std::string pipeline_config_path = + apollo::cyber::plugin_manager::PluginManager::Instance() + ->GetPluginConfPath(class_name, "conf/pipeline.pb.txt"); AINFO << "Load config path:" << pipeline_config_path; // Load the pipeline of scenario. if (!apollo::cyber::common::GetProtoFromFile(pipeline_config_path, diff --git a/modules/planning/planning_base/scenario_base/scenario.h b/modules/planning/planning_base/scenario_base/scenario.h index d116609510f..cbc62ea6bb4 100644 --- a/modules/planning/planning_base/scenario_base/scenario.h +++ b/modules/planning/planning_base/scenario_base/scenario.h @@ -25,6 +25,7 @@ #include #include "modules/planning/planning_base/scenario_base/proto/scenario_pipeline.pb.h" + #include "cyber/common/file.h" #include "modules/planning/planning_base/common/dependency_injector.h" #include "modules/planning/planning_base/scenario_base/process_result.h" @@ -119,7 +120,7 @@ class Scenario { template bool Scenario::LoadConfig(T* config) { - return apollo::cyber::common::GetProtoFromFile(config_path_, config); + return apollo::cyber::common::LoadConfig(config_path_, config); } } // namespace planning diff --git a/modules/planning/planning_base/scenario_base/traffic_light_base/BUILD b/modules/planning/planning_base/scenario_base/traffic_light_base/BUILD deleted file mode 100644 index 5c4b5572149..00000000000 --- a/modules/planning/planning_base/scenario_base/traffic_light_base/BUILD +++ /dev/null @@ -1,30 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "base_stage_traffic_light_creep", - srcs = ["base_stage_traffic_light_creep.cc"], - hdrs = ["base_stage_traffic_light_creep.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/map/pnc_map:path", - "//modules/planning/planning_base/scenario_base:stage", - ], -) - -cc_library( - name = "base_stage_traffic_light_cruise", - srcs = ["base_stage_traffic_light_cruise.cc"], - hdrs = ["base_stage_traffic_light_cruise.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/scenario_base:stage", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/task_base/BUILD b/modules/planning/planning_base/task_base/BUILD deleted file mode 100644 index 7e90a2fea7f..00000000000 --- a/modules/planning/planning_base/task_base/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "task", - srcs = ["task.cc"], - hdrs = ["task.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/common/trajectory:publishable_trajectory", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/task_base/common/BUILD b/modules/planning/planning_base/task_base/common/BUILD deleted file mode 100644 index 5fdc8c6b7cc..00000000000 --- a/modules/planning/planning_base/task_base/common/BUILD +++ /dev/null @@ -1,68 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "path_generation", - srcs = ["path_generation.cc"], - hdrs = ["path_generation.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/task_base/common/path_util:path_util" - ], -) - -cc_library( - name = "decider_base", - srcs = ["decider.cc"], - hdrs = ["decider.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/task_base:task", - ], -) - -cc_library( - name = "speed_optimizer", - srcs = ["speed_optimizer.cc"], - hdrs = ["speed_optimizer.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common:speed_limit", - "//modules/planning/planning_base/common:st_graph_data", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/speed:speed_data", - "//modules/planning/planning_base/task_base:task", - "@eigen", - ], -) - -cc_library( - name = "trajectory_optimizer", - srcs = ["trajectory_optimizer.cc"], - hdrs = ["trajectory_optimizer.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/task_base:task", - ], - alwayslink =True -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/task_base/common/lane_change_util/BUILD b/modules/planning/planning_base/task_base/common/lane_change_util/BUILD deleted file mode 100644 index cad63e4553b..00000000000 --- a/modules/planning/planning_base/task_base/common/lane_change_util/BUILD +++ /dev/null @@ -1,19 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "lane_change_util", - srcs = ["lane_change_util.cc"], - hdrs = ["lane_change_util.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:reference_line_info", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/task_base/common/path_generation.cc b/modules/planning/planning_base/task_base/common/path_generation.cc index 0ae853422f1..2917290327a 100644 --- a/modules/planning/planning_base/task_base/common/path_generation.cc +++ b/modules/planning/planning_base/task_base/common/path_generation.cc @@ -22,6 +22,7 @@ #include #include #include + #include "modules/common/configs/vehicle_config_helper.h" namespace apollo { @@ -42,7 +43,10 @@ void PathGeneration::RecordDebugInfo( const PathBound& path_boundaries, const std::string& debug_name, ReferenceLineInfo* const reference_line_info) { // Sanity checks. - ACHECK(!path_boundaries.empty()); + if (path_boundaries.empty()) { + AINFO << "path boundary is empty!"; + return; + } CHECK_NOTNULL(reference_line_info); // Take the left and right path boundaries, and transform them into two diff --git a/modules/planning/planning_base/task_base/common/path_generation.h b/modules/planning/planning_base/task_base/common/path_generation.h index 7292c433ef7..d4ed3cac6df 100644 --- a/modules/planning/planning_base/task_base/common/path_generation.h +++ b/modules/planning/planning_base/task_base/common/path_generation.h @@ -18,6 +18,7 @@ #include #include + #include "modules/common/status/status.h" #include "modules/planning/planning_base/common/frame.h" #include "modules/planning/planning_base/common/path_boundary.h" diff --git a/modules/planning/planning_base/task_base/common/path_util/BUILD b/modules/planning/planning_base/task_base/common/path_util/BUILD deleted file mode 100644 index 2995c6e92e3..00000000000 --- a/modules/planning/planning_base/task_base/common/path_util/BUILD +++ /dev/null @@ -1,30 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "path_util", - srcs = ["path_assessment_decider_util.cc", - "path_bounds_decider_util.cc", - "path_optimizer_util.cc"], - hdrs = ["path_assessment_decider_util.h", - "path_bounds_decider_util.h", - "path_optimizer_util.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/path:discretized_path", - "//modules/planning/planning_base/common/path:frenet_frame_path", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/proto:piecewise_jerk_path_config_cc_proto", - "//modules/planning/planning_base/math/piecewise_jerk:piecewise_jerk_path_problem", - "//modules/planning/planning_base/common/trajectory1d:piecewise_jerk_trajectory1d" - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/task_base/common/path_util/path_assessment_decider_util.cc b/modules/planning/planning_base/task_base/common/path_util/path_assessment_decider_util.cc index 67fc4247467..5f3f2c8e74f 100644 --- a/modules/planning/planning_base/task_base/common/path_util/path_assessment_decider_util.cc +++ b/modules/planning/planning_base/task_base/common/path_util/path_assessment_decider_util.cc @@ -140,11 +140,11 @@ bool PathAssessmentDeciderUtil::IsCollidingWithStaticObstacles( // Filter the path points by s range. if (obstacle_sl.start_s() > path_point_end_s || obstacle_sl.end_s() < path_point_start_s) { - break; + continue; } if (obstacle_sl.start_l() > path_point_end_l || obstacle_sl.end_l() < path_point_start_l) { - break; + continue; } const auto& path_point = path_data.discretized_path()[i]; const auto& vehicle_box = diff --git a/modules/planning/planning_base/task_base/common/path_util/path_bounds_decider_util.cc b/modules/planning/planning_base/task_base/common/path_util/path_bounds_decider_util.cc index a5f780d1d23..7c7015cd202 100644 --- a/modules/planning/planning_base/task_base/common/path_util/path_bounds_decider_util.cc +++ b/modules/planning/planning_base/task_base/common/path_util/path_bounds_decider_util.cc @@ -241,18 +241,35 @@ bool PathBoundsDeciderUtil::GetBoundaryFromStaticObstacles( // - Update the left/right bound accordingly. // - If boundaries blocked, then decide whether can side-pass. // - If yes, then borrow neighbor lane to side-pass. - if (curr_obstacle_l_min + curr_obstacle_l_max < center_line * 2) { - // Obstacle is to the right of center-line, should pass from - // left. - obs_id_to_direction[curr_obstacle_id] = true; - right_bounds.insert( - std::make_pair(curr_obstacle_id, curr_obstacle_l_max)); + + if (curr_obstacle_s - init_sl_state.first[0] < + FLAGS_obstacle_pass_check_distance) { + if (curr_obstacle_l_min + curr_obstacle_l_max < + init_sl_state.second[0] * 2 && + curr_obstacle_l_max + GetBufferBetweenADCCenterAndEdge() < + (*path_boundaries)[i].l_upper.l) { + obs_id_to_direction[curr_obstacle_id] = false; + left_bounds.insert( + std::make_pair(curr_obstacle_id, curr_obstacle_l_min)); + } else { + obs_id_to_direction[curr_obstacle_id] = true; + right_bounds.insert( + std::make_pair(curr_obstacle_id, curr_obstacle_l_max)); + } } else { - // Obstacle is to the left of center-line, should pass from - // right. - obs_id_to_direction[curr_obstacle_id] = false; - left_bounds.insert( - std::make_pair(curr_obstacle_id, curr_obstacle_l_min)); + if (curr_obstacle_l_min + curr_obstacle_l_max < center_line * 2) { + // Obstacle is to the right of center-line, should pass from + // left. + obs_id_to_direction[curr_obstacle_id] = true; + right_bounds.insert( + std::make_pair(curr_obstacle_id, curr_obstacle_l_max)); + } else { + // Obstacle is to the left of center-line, should pass from + // right. + obs_id_to_direction[curr_obstacle_id] = false; + left_bounds.insert( + std::make_pair(curr_obstacle_id, curr_obstacle_l_min)); + } } obs_id_to_start_s[curr_obstacle_id] = curr_obstacle_s; } else { diff --git a/modules/planning/planning_base/task_base/task.cc b/modules/planning/planning_base/task_base/task.cc index 5f528b1238c..0d9a719a08e 100644 --- a/modules/planning/planning_base/task_base/task.cc +++ b/modules/planning/planning_base/task_base/task.cc @@ -50,8 +50,7 @@ bool Task::Init(const std::string& config_dir, const std::string& name, // Generate the default task config path from PluginManager. default_config_path_ = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf/" + "default_conf.pb.txt"; + ->GetPluginConfPath(class_name, "conf/default_conf.pb.txt"); return true; } diff --git a/modules/planning/planning_base/task_base/utils/BUILD b/modules/planning/planning_base/task_base/utils/BUILD deleted file mode 100644 index a3ba2f33770..00000000000 --- a/modules/planning/planning_base/task_base/utils/BUILD +++ /dev/null @@ -1,18 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "st_gap_estimator", - srcs = ["st_gap_estimator.cc"], - hdrs = ["st_gap_estimator.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - "//modules/planning/planning_base/common:planning_gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/testdata/common/sample_prediction.pb.txt b/modules/planning/planning_base/testdata/common/sample_prediction.pb.txt index cadea6b178e..8808b00d84d 100644 --- a/modules/planning/planning_base/testdata/common/sample_prediction.pb.txt +++ b/modules/planning/planning_base/testdata/common/sample_prediction.pb.txt @@ -2255,3 +2255,270 @@ prediction_obstacle { timestamp: 0 } } +prediction_obstacle { + perception_obstacle { + id: 88 + position { + x: -15 + y: 0 + z: 0 + } + theta: 0 + velocity { + x: 0.118324922874 + y: -0.0117234822719 + z: 0 + } + length: 2 + width: 2 + height: 1 + polygon_point { + x: -16 + y: 1 + z: 0 + } + polygon_point { + x: -14 + y: 1 + z: 0 + } + polygon_point { + x: -14 + y: -1 + z: 0 + } + polygon_point { + x: -16 + y: -1 + z: 0 + } + tracking_time: 0 + type: UNKNOWN + timestamp: 0 + } + timestamp: 1171064942.14 + predicted_period: 5000 + trajectory { + probability: 0.918794968878 + trajectory_point { + path_point { + x: -15 + y: 0 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 0.0 + } + trajectory_point { + path_point { + x: -14 + y: 1 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 0.2 + } + trajectory_point { + path_point { + x: -13 + y: 2 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 0.4 + } + trajectory_point { + path_point { + x: -12 + y: 3 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 0.6 + } + trajectory_point { + path_point { + x: -11 + y: 4 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 0.8 + } + trajectory_point { + path_point { + x: -10 + y: 5 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 1.0 + } + trajectory_point { + path_point { + x: -9 + y: 6 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 1.2 + } + trajectory_point { + path_point { + x: -8 + y: 7 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 1.4 + } + trajectory_point { + path_point { + x: -7 + y: 8 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 1.6 + } + trajectory_point { + path_point { + x: -6 + y: 9 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 1.8 + } + trajectory_point { + path_point { + x: -5 + y: 10 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 2.0 + } + trajectory_point { + path_point { + x: -4 + y: 11 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 2.2 + } + trajectory_point { + path_point { + x: -3 + y: 12 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 2.4 + } + trajectory_point { + path_point { + x: -2 + y: 13 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 2.6 + } + trajectory_point { + path_point { + x: -1 + y: 14 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 2.8 + } + trajectory_point { + path_point { + x: 0 + y: 15 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 3.0 + } + trajectory_point { + path_point { + x: 1 + y: 16 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 3.2 + } + trajectory_point { + path_point { + x: 2 + y: 17 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 3.4 + } + trajectory_point { + path_point { + x: 3 + y: 18 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 3.6 + } + trajectory_point { + path_point { + x: 4 + y: 19 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 3.8 + } + trajectory_point { + path_point { + x: 5 + y: 20 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 4.0 + } + trajectory_point { + path_point { + x: 6 + y: 21 + z: 0 + theta: 0 + } + v: 2.0 + relative_time: 4.2 + } + } +} \ No newline at end of file diff --git a/modules/planning/planning_base/tools/BUILD b/modules/planning/planning_base/tools/BUILD deleted file mode 100644 index e6e19997476..00000000000 --- a/modules/planning/planning_base/tools/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -load("//tools/platform:build_defs.bzl", "if_gpu") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_binary( - name = "planning_pad_terminal", - srcs = ["pad_terminal.cc"], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/util:util_tool", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/common_msgs/planning_msgs:pad_msg_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_binary( - name = "inference_demo", - srcs = ["inference_demo.cc"], - deps = [ - #"//third_party/libtorch", - "@com_github_gflags_gflags//:gflags", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/traffic_rules_base/BUILD b/modules/planning/planning_base/traffic_rules_base/BUILD deleted file mode 100644 index 26540081701..00000000000 --- a/modules/planning/planning_base/traffic_rules_base/BUILD +++ /dev/null @@ -1,52 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] - -cc_library( - name = "traffic_rules", - srcs = [ - "traffic_rule.cc", - ], - hdrs = [ - "traffic_rule.h", - ], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/util:util_tool", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/common:config_util" - ], -) - -cc_library( - name = "traffic_decider", - srcs = ["traffic_decider.cc"], - hdrs = ["traffic_decider.h"], - copts = PLANNING_COPTS, - deps = [ - ":traffic_rules", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/status", - "//modules/common/util:util_tool", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/reference_line", - "//modules/planning/planning_base/traffic_rules_base/proto:traffic_rules_cc_proto", - "//cyber/plugin_manager:plugin_manager", - "//modules/planning/planning_base/common:config_util", - ], -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/traffic_rules_base/proto/BUILD b/modules/planning/planning_base/traffic_rules_base/proto/BUILD index bfe32e482fe..15f7690df94 100644 --- a/modules/planning/planning_base/traffic_rules_base/proto/BUILD +++ b/modules/planning/planning_base/traffic_rules_base/proto/BUILD @@ -1,5 +1,5 @@ -load("//tools/proto:proto.bzl", "proto_library") load("//tools:apollo_package.bzl", "apollo_package") +load("//tools/proto:proto.bzl", "proto_library") package(default_visibility = ["//visibility:public"]) diff --git a/modules/planning/planning_base/traffic_rules_base/traffic_decider.cc b/modules/planning/planning_base/traffic_rules_base/traffic_decider.cc index 960fbfcf351..e1afc353a85 100644 --- a/modules/planning/planning_base/traffic_rules_base/traffic_decider.cc +++ b/modules/planning/planning_base/traffic_rules_base/traffic_decider.cc @@ -36,10 +36,8 @@ bool TrafficDecider::Init(const std::shared_ptr &injector) { // Load the pipeline config. AINFO << "Load config path:" << FLAGS_traffic_rule_config_filename; // Load the pipeline of scenario. - // -----临时方案,后续采用工程提供的相对路径接口--- - // if (!apollo::cyber::common::LoadConfig(pipeline_config_path, - if (!apollo::cyber::common::GetProtoFromFile( - FLAGS_traffic_rule_config_filename, &rule_pipeline_)) { + if (!apollo::cyber::common::LoadConfig(FLAGS_traffic_rule_config_filename, + &rule_pipeline_)) { AERROR << "Load pipeline of Traffic decider" << " failed!"; return false; diff --git a/modules/planning/planning_base/traffic_rules_base/traffic_rule.cc b/modules/planning/planning_base/traffic_rules_base/traffic_rule.cc index d77a90d7e38..a6687f031cd 100644 --- a/modules/planning/planning_base/traffic_rules_base/traffic_rule.cc +++ b/modules/planning/planning_base/traffic_rules_base/traffic_rule.cc @@ -40,8 +40,8 @@ bool TrafficRule::Init(const std::string& name, abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); // Generate the traffic rule config path from PluginManager. config_path_ = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf/" + "default_conf.pb.txt"; + ->GetPluginConfPath( + class_name, "conf/default_conf.pb.txt"); return true; } diff --git a/modules/planning/planning_base/traffic_rules_base/traffic_rule.h b/modules/planning/planning_base/traffic_rules_base/traffic_rule.h index 1a0427b7fed..0afc0941933 100644 --- a/modules/planning/planning_base/traffic_rules_base/traffic_rule.h +++ b/modules/planning/planning_base/traffic_rules_base/traffic_rule.h @@ -24,6 +24,7 @@ #include #include + #include "cyber/plugin_manager/plugin_manager.h" #include "modules/planning/planning_base/common/config_util.h" #include "modules/planning/planning_base/common/dependency_injector.h" @@ -62,7 +63,7 @@ class TrafficRule { template bool TrafficRule::LoadConfig(T* config) { CHECK_NOTNULL(config); - if (!apollo::cyber::common::GetProtoFromFile(config_path_, config)) { + if (!apollo::cyber::common::LoadConfig(config_path_, config)) { AERROR << "Failed to load default config file" << config_path_; return false; } diff --git a/modules/planning/planning_base/tuning/BUILD b/modules/planning/planning_base/tuning/BUILD deleted file mode 100644 index 67d546317a7..00000000000 --- a/modules/planning/planning_base/tuning/BUILD +++ /dev/null @@ -1,76 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "autotuning_raw_feature_generator", - srcs = ["autotuning_raw_feature_generator.cc"], - hdrs = ["autotuning_raw_feature_generator.h"], - deps = [ - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common:speed_limit", - "//modules/planning/planning_base/proto:auto_tuning_raw_feature_cc_proto", - ], -) - -cc_test( - name = "autotuning_raw_feature_generator_test", - size = "small", - srcs = ["autotuning_raw_feature_generator_test.cc"], - deps = [ - ":autotuning_raw_feature_generator", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "autotuning_feature_builder", - hdrs = ["autotuning_feature_builder.h"], - deps = [ - "//modules/common/status", - "//modules/planning/planning_base/proto:auto_tuning_model_input_cc_proto", - "//modules/planning/planning_base/proto:auto_tuning_raw_feature_cc_proto", - ], -) - -cc_library( - name = "autotuning_mlp_net_model", - srcs = ["autotuning_mlp_net_model.cc"], - hdrs = ["autotuning_mlp_net_model.h"], - deps = [ - "//cyber", - "//modules/prediction/network:net_model", - ], - tags = ["exclude"] -) - -cc_test( - name = "autotuning_mlp_net_model_test", - size = "small", - srcs = ["autotuning_mlp_net_model_test.cc"], - deps = [ - ":autotuning_mlp_net_model", - "@com_google_googletest//:gtest_main", - ], - tags = ["exclude"] -) - -cc_library( - name = "autotuning_base_model", - hdrs = ["autotuning_base_model.h"], - deps = [ - ":autotuning_feature_builder", - ":autotuning_mlp_net_model", - "//modules/common/status", - "//modules/planning/planning_base/proto:auto_tuning_model_input_cc_proto", - ], - tags = ["exclude"] -) - -apollo_package() -cpplint() diff --git a/modules/planning/planning_base/tuning/speed_model/BUILD b/modules/planning/planning_base/tuning/speed_model/BUILD deleted file mode 100644 index 1945442061f..00000000000 --- a/modules/planning/planning_base/tuning/speed_model/BUILD +++ /dev/null @@ -1,54 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "autotuning_speed_feature_builder", - srcs = ["autotuning_speed_feature_builder.cc"], - hdrs = ["autotuning_speed_feature_builder.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:error_code_cc_proto", - "//modules/planning/planning_base/tuning:autotuning_feature_builder", - ], -) - -cc_test( - name = "autotuning_speed_feature_builder_test", - size = "small", - srcs = ["autotuning_speed_feature_builder_test.cc"], - deps = [ - ":autotuning_speed_feature_builder", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "autotuning_speed_mlp_model", - srcs = ["autotuning_speed_mlp_model.cc"], - hdrs = ["autotuning_speed_mlp_model.h"], - deps = [ - ":autotuning_speed_feature_builder", - "//modules/planning/planning_base/tuning:autotuning_base_model", - ], - tags = ["exclude"] -) - -cc_test( - name = "autotuning_speed_mlp_model_test", - size = "small", - srcs = ["autotuning_speed_mlp_model_test.cc"], - deps = [ - ":autotuning_speed_mlp_model", - "@com_google_googletest//:gtest_main", - ], - tags = ["exclude"] -) - -apollo_package() -cpplint() diff --git a/modules/planning/pnc_map/lane_follow_map/BUILD b/modules/planning/pnc_map/lane_follow_map/BUILD index 87a42124317..f81a87fb849 100644 --- a/modules/planning/pnc_map/lane_follow_map/BUILD +++ b/modules/planning/pnc_map/lane_follow_map/BUILD @@ -1,92 +1,33 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("@local_config_cuda//cuda:build_defs.bzl", "cuda_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) MAP_COPTS = ["-DMODULE_NAME=\\\"map\\\""] PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] -cyber_plugin_description( - name = "plugin_lane_follow_map_description", - description = ":plugins.xml", - plugin = ":liblane_follow_map.so", -) - -cc_binary( +apollo_plugin( name = "liblane_follow_map.so", - srcs = [ - "lane_follow_map.cc", - "lane_follow_map.h", - ], - linkshared = True, - linkstatic = True, - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], + srcs = ["lane_follow_map.cc",], + hdrs = ["lane_follow_map.h",], + description = ":plugins.xml", deps = [ - "//modules/map/pnc_map:pnc_map", "//cyber", + "//modules/map:apollo_map", "//modules/common_msgs/map_msgs:map_id_cc_proto", "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/common/configs:config_gflags", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/common/util:util_tool", - "//modules/common/util", - "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap", - "//cyber/plugin_manager:plugin_manager", - "@com_google_absl//:absl", - "@com_google_protobuf//:protobuf", - ], -) - -cc_library( - name = "lane_follow_map", - srcs = ["liblane_follow_map.so"], - hdrs = [ - "lane_follow_map.h", - ], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], - deps = [ - "//cyber", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common_msgs/map_msgs:map_lane_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", "//modules/common/configs:config_gflags", "//modules/common/math", - "//modules/common/util:util_tool", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state/proto:vehicle_state_cc_proto", - "//modules/map/hdmap:hdmap_util", - "//modules/map/hdmap", - "//cyber/plugin_manager:plugin_manager", "@com_google_absl//:absl", "@com_google_protobuf//:protobuf", ], ) -cc_test( - name = "lane_follow_map_test", - size = "small", - srcs = ["lane_follow_map_test.cc"], - data = [ - "//modules/map/pnc_map:testdata", - "//modules/map:map_data", - ], - deps = [ - ":lane_follow_map", - "//modules/common/util", - "@com_google_googletest//:gtest_main", - "//modules/map/pnc_map:pnc_map", - "//modules/common_msgs/planning_msgs:planning_command_cc_proto", - ], - linkstatic = True, -) - apollo_package() cpplint() diff --git a/modules/planning/pnc_map/lane_follow_map/lane_follow_map.cc b/modules/planning/pnc_map/lane_follow_map/lane_follow_map.cc index b872ffe8f37..e0f247930fd 100644 --- a/modules/planning/pnc_map/lane_follow_map/lane_follow_map.cc +++ b/modules/planning/pnc_map/lane_follow_map/lane_follow_map.cc @@ -28,11 +28,11 @@ #include "modules/common_msgs/map_msgs/map_id.pb.h" #include "cyber/common/log.h" -#include "modules/common/configs/config_gflags.h" #include "modules/common/util/point_factory.h" #include "modules/common/util/string_util.h" #include "modules/common/util/util.h" #include "modules/map/hdmap/hdmap_util.h" +#include "modules/planning/planning_base/common/planning_gflags.h" namespace apollo { namespace planning { @@ -208,7 +208,8 @@ bool LaneFollowMap::UpdateVehicleState(const VehicleState &vehicle_state) { AERROR << "Cannot find waypoint: " << adc_waypoint_.DebugString(); return false; } - + ADEBUG << "adc_waypoint_" << adc_waypoint_.DebugString() << "route_index" + << route_index; // Track how many routing request waypoints the adc have passed. UpdateNextRoutingWaypointIndex(route_index); adc_route_index_ = route_index; @@ -551,8 +552,8 @@ bool LaneFollowMap::GetNearestPointFromRouting( M_PI_2) { continue; } - if (valid_way_points[i].l < distance) { - distance = valid_way_points[i].l; + if (std::fabs(valid_way_points[i].l) < distance) { + distance = std::fabs(valid_way_points[i].l); closest_index = i; } } diff --git a/modules/planning/pnc_map/lane_follow_map/plugins.xml b/modules/planning/pnc_map/lane_follow_map/plugins.xml index f060a3db08f..1538adb7868 100644 --- a/modules/planning/pnc_map/lane_follow_map/plugins.xml +++ b/modules/planning/pnc_map/lane_follow_map/plugins.xml @@ -1,3 +1,3 @@ - + diff --git a/modules/planning/scenarios/bare_intersection_unprotected/BUILD b/modules/planning/scenarios/bare_intersection_unprotected/BUILD index ed180209ce1..d430150b75d 100644 --- a/modules/planning/scenarios/bare_intersection_unprotected/BUILD +++ b/modules/planning/scenarios/bare_intersection_unprotected/BUILD @@ -1,24 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] -# install( -# name = "install", -# data_dest = "planning-scenario-bare-intersection-unprotected", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-bare-intersection-unprotected.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - filegroup( name = "runtime_files", srcs = glob([ @@ -26,52 +11,8 @@ filegroup( ]) ) -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libbare_intersection_unprotected_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-bare-intersection-unprotected/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-bare-intersection-unprotected/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_bare_intersection_unprotected_scenario_description", - description = ":plugins.xml", - plugin = ":libbare_intersection_unprotected_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libbare_intersection_unprotected_scenario.so", - linkshared = True, - linkstatic = True, - copts = PLANNING_COPTS, - deps = [":bare_intersection_unprotected_scenario_lib"], -) - -cc_library( - name = "bare_intersection_unprotected_scenario_lib", srcs = [ "bare_intersection_unprotected_scenario.cc", "stage_approach.cc", @@ -82,27 +23,23 @@ cc_library( "stage_approach.h", "stage_intersection_cruise.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/util:util_tool", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", "//modules/planning/scenarios/bare_intersection_unprotected/proto:bare_intersection_unprotected_scenario_cc_proto", - "//modules/planning/planning_base/scenario_base:stage", + "//modules/planning/planning_base:apollo_planning_planning_base", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "bare_intersection_unprotected_scenario_test", size = "small", srcs = ["bare_intersection_unprotected_scenario_test.cc"], - data = ["//modules/planning/planning_base:planning_conf"], linkopts = ["-lgomp"], deps = [ ":bare_intersection_unprotected_scenario_lib", @@ -111,13 +48,10 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approach_test", size = "small", srcs = ["stage_approach_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":bare_intersection_unprotected_scenario_lib", diff --git a/modules/planning/scenarios/bare_intersection_unprotected/conf/scenario_conf.pb.txt b/modules/planning/scenarios/bare_intersection_unprotected/conf/scenario_conf.pb.txt index 09c4d9ebf63..d6105f207a1 100644 --- a/modules/planning/scenarios/bare_intersection_unprotected/conf/scenario_conf.pb.txt +++ b/modules/planning/scenarios/bare_intersection_unprotected/conf/scenario_conf.pb.txt @@ -1,7 +1,4 @@ start_bare_intersection_scenario_distance: 25.0 enable_explicit_stop: false - min_pass_s_distance: 3.0 approach_cruise_speed: 6.7056 # 15 mph stop_distance: 0.5 - stop_timeout_sec: 8.0 - creep_timeout_sec: 10.0 diff --git a/modules/planning/scenarios/bare_intersection_unprotected/plugins.xml b/modules/planning/scenarios/bare_intersection_unprotected/plugins.xml index c1643c7ffac..8016423a5a4 100644 --- a/modules/planning/scenarios/bare_intersection_unprotected/plugins.xml +++ b/modules/planning/scenarios/bare_intersection_unprotected/plugins.xml @@ -1,3 +1,5 @@ - + + + diff --git a/modules/planning/scenarios/bare_intersection_unprotected/proto/bare_intersection_unprotected_scenario.proto b/modules/planning/scenarios/bare_intersection_unprotected/proto/bare_intersection_unprotected_scenario.proto index ef5440ff48f..f3c75f4ce3d 100644 --- a/modules/planning/scenarios/bare_intersection_unprotected/proto/bare_intersection_unprotected_scenario.proto +++ b/modules/planning/scenarios/bare_intersection_unprotected/proto/bare_intersection_unprotected_scenario.proto @@ -7,9 +7,6 @@ message ScenarioBareIntersectionUnprotectedConfig { [default = 25.0]; // meter // explicit stop while waiting optional bool enable_explicit_stop = 2 [default = false]; - optional double min_pass_s_distance = 3 [default = 3.0]; // meter - optional double approach_cruise_speed = 4 [default = 6.7056]; // m/s (15 mph) - optional double stop_distance = 5 [default = 0.5]; // meter - optional float stop_timeout_sec = 6 [default = 8.0]; // sec - optional float creep_timeout_sec = 7 [default = 10.0]; // sec + optional double approach_cruise_speed = 3 [default = 6.7056]; // m/s (15 mph) + optional double stop_distance = 4 [default = 0.5]; // meter } \ No newline at end of file diff --git a/modules/planning/scenarios/emergency_pull_over/BUILD b/modules/planning/scenarios/emergency_pull_over/BUILD index a32afee5193..b15ca612feb 100644 --- a/modules/planning/scenarios/emergency_pull_over/BUILD +++ b/modules/planning/scenarios/emergency_pull_over/BUILD @@ -1,54 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] -# install( -# name = "install", -# data_dest = "planning-scenario-emergency-pull-over", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-emergency-pull-over.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libemergency_pull_over_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-emergency-pull-over/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-emergency-pull-over/include", -# filter = "*.h", -# ) - filegroup( name = "runtime_files", srcs = glob([ @@ -56,22 +11,8 @@ filegroup( ]) ) -cyber_plugin_description( - name = "plugin_emergency_pull_over_scenario_description", - description = ":plugins.xml", - plugin = ":libemergency_pull_over_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libemergency_pull_over_scenario.so", - linkshared = True, - linkstatic = True, - copts = PLANNING_COPTS, - deps = [":emergency_pull_over_scenario_lib"], -) - -cc_library( - name = "emergency_pull_over_scenario_lib", srcs = [ "emergency_pull_over_scenario.cc", "stage_approach.cc", @@ -84,30 +25,22 @@ cc_library( "stage_slow_down.h", "stage_standby.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common/util:util_tool", "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/planning/planning_base/scenario_base:scenario", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/emergency_pull_over/proto:emergency_pull_over_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "emergency_pull_over_scenario_test", size = "small", srcs = ["emergency_pull_over_scenario_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":emergency_pull_over_scenario_lib", @@ -116,13 +49,10 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_slow_down_test", size = "small", srcs = ["stage_slow_down_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":emergency_pull_over_scenario_lib", @@ -131,13 +61,10 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approach_test", size = "small", srcs = ["stage_approach_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":emergency_pull_over_scenario_lib", @@ -146,13 +73,10 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_standby_test", size = "small", srcs = ["stage_standby_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":emergency_pull_over_scenario_lib", diff --git a/modules/planning/scenarios/emergency_pull_over/conf/scenario_conf.pb.txt b/modules/planning/scenarios/emergency_pull_over/conf/scenario_conf.pb.txt index 915e3f36ac9..ce3e7493cda 100644 --- a/modules/planning/scenarios/emergency_pull_over/conf/scenario_conf.pb.txt +++ b/modules/planning/scenarios/emergency_pull_over/conf/scenario_conf.pb.txt @@ -1,4 +1,4 @@ max_stop_deceleration: 4.5 slow_down_deceleration_time: 3.0 - target_slow_down_speed: 2.0 + target_slow_down_speed: 1.0 stop_distance: 1.5 \ No newline at end of file diff --git a/modules/planning/scenarios/emergency_pull_over/plugins.xml b/modules/planning/scenarios/emergency_pull_over/plugins.xml index 196b3c0aed5..15adf49dd4a 100644 --- a/modules/planning/scenarios/emergency_pull_over/plugins.xml +++ b/modules/planning/scenarios/emergency_pull_over/plugins.xml @@ -1,3 +1,6 @@ - + + + + diff --git a/modules/planning/scenarios/emergency_stop/BUILD b/modules/planning/scenarios/emergency_stop/BUILD index 18d39664b32..5762be64222 100644 --- a/modules/planning/scenarios/emergency_stop/BUILD +++ b/modules/planning/scenarios/emergency_stop/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,64 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-emergency-stop", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-emergency-stop.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-emergency-stop/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-emergency-stop/include", -# filter = "*.h", -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libemergency_stop_scenario.so", -# ) - -cyber_plugin_description( - name = "plugin_emergency_stop_scenario_description", - description = ":plugins.xml", - plugin = ":libemergency_stop_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libemergency_stop_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":emergency_stop_scenario_lib"], -) - -cc_library( - name = "emergency_stop_scenario_lib", srcs = [ "emergency_stop_scenario.cc", "stage_approach.cc", @@ -81,30 +22,23 @@ cc_library( "stage_approach.h", "stage_standby.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common/util:util_tool", "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/common/util:util_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/emergency_stop/proto:emergency_stop_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "emergency_stop_scenario_test", size = "small", srcs = ["emergency_stop_scenario_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":emergency_stop_scenario_lib", @@ -113,13 +47,10 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approach_test", size = "small", srcs = ["stage_approach_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":emergency_stop_scenario_lib", @@ -128,13 +59,10 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_standby_test", size = "small", srcs = ["stage_standby_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], linkopts = ["-lgomp"], deps = [ ":emergency_stop_scenario_lib", diff --git a/modules/planning/scenarios/emergency_stop/plugins.xml b/modules/planning/scenarios/emergency_stop/plugins.xml index 59006ca9e6f..d2d17b06e98 100644 --- a/modules/planning/scenarios/emergency_stop/plugins.xml +++ b/modules/planning/scenarios/emergency_stop/plugins.xml @@ -1,3 +1,5 @@ - + + + diff --git a/modules/planning/scenarios/lane_follow/BUILD b/modules/planning/scenarios/lane_follow/BUILD index 7ee3f6be258..11da93da97c 100644 --- a/modules/planning/scenarios/lane_follow/BUILD +++ b/modules/planning/scenarios/lane_follow/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] @@ -14,80 +11,37 @@ filegroup( ]) ) -cyber_plugin_description( - name = "plugin_lane_follow_scenario_description", - description = ":plugins.xml", - plugin = ":liblane_follow_scenario.so", -) - - -cc_binary( +apollo_plugin( name = "liblane_follow_scenario.so", - linkshared = True, - linkstatic = True, - copts = PLANNING_COPTS, - deps = [":lane_follow_scenario_lib"], -) - -cc_library( - name = "lane_follow_scenario_lib", - srcs = ["lane_follow_scenario.cc"], - hdrs = ["lane_follow_scenario.h"], - copts = PLANNING_COPTS, - deps = [ - ":lane_follow_stage", - "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/common/util", - "//modules/common/util:util_tool", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:speed_profile_generator", - "//modules/planning/planning_base/constraint_checker", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", - "@com_github_gflags_gflags//:gflags", - "@eigen", + srcs = [ + "lane_follow_scenario.cc", + "lane_follow_stage.cc", ], - alwayslink = True, -) - -cc_library( - name = "lane_follow_stage", - srcs = ["lane_follow_stage.cc"], - hdrs = ["lane_follow_stage.h"], - copts = PLANNING_COPTS, + hdrs = [ + "lane_follow_scenario.h", + "lane_follow_stage.h", + ], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/util:util_tool", "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/map/hdmap", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:speed_profile_generator", - "//modules/planning/planning_base/constraint_checker", - "//modules/planning/planning_base/math/curve1d:quartic_polynomial_curve1d", + "//modules/map:apollo_map", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/reference_line", - "//modules/planning/planning_base/reference_line:qp_spline_reference_line_smoother", - "//modules/planning/planning_base/scenario_base:stage", + "//modules/planning/planning_base:apollo_planning_planning_base", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "lane_follow_scenario_test", size = "small", srcs = ["lane_follow_scenario_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":lane_follow_scenario_lib", diff --git a/modules/planning/scenarios/lane_follow/plugins.xml b/modules/planning/scenarios/lane_follow/plugins.xml index 658fa61e4a9..9c0b21ee951 100644 --- a/modules/planning/scenarios/lane_follow/plugins.xml +++ b/modules/planning/scenarios/lane_follow/plugins.xml @@ -1,3 +1,4 @@ - + + diff --git a/modules/planning/scenarios/park_and_go/BUILD b/modules/planning/scenarios/park_and_go/BUILD index 5655c82c26c..687adc1bc75 100644 --- a/modules/planning/scenarios/park_and_go/BUILD +++ b/modules/planning/scenarios/park_and_go/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,64 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-park-and-go", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-park-and-go.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libpark_and_go_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-park-and-go/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-park-and-go/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_park_and_go_description", - description = ":plugins.xml", - plugin = ":libpark_and_go_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libpark_and_go_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":park_and_go_scenario_lib"], -) - -cc_library( - name = "park_and_go_scenario_lib", srcs = [ "park_and_go_scenario.cc", "stage_adjust.cc", @@ -88,29 +29,23 @@ cc_library( "stage_pre_cruise.h", "util.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common/util:util_tool", "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/common/util:util_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/park_and_go/proto:park_and_go_cc_proto", "@com_github_gflags_gflags//:gflags", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "park_and_go_scenario_test", size = "small", srcs = ["park_and_go_scenario_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":park_and_go_scenario_lib", @@ -119,7 +54,7 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "park_and_go_stages_test", size = "small", srcs = [ @@ -128,9 +63,7 @@ cc_test( "stage_cruise_test.cc", "stage_pre_cruise_test.cc", ], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":park_and_go_scenario_lib", diff --git a/modules/planning/scenarios/park_and_go/conf/park_and_go_adjust/open_space_trajectory_provider.pb.txt b/modules/planning/scenarios/park_and_go/conf/park_and_go_adjust/open_space_trajectory_provider.pb.txt index 68f80e5e2e3..f6fd239d1a9 100644 --- a/modules/planning/scenarios/park_and_go/conf/park_and_go_adjust/open_space_trajectory_provider.pb.txt +++ b/modules/planning/scenarios/park_and_go/conf/park_and_go_adjust/open_space_trajectory_provider.pb.txt @@ -1,11 +1,131 @@ -planner_open_space_config { - iterative_anchoring_smoother_config { - s_curve_config { - acc_weight: 1.0 - jerk_weight: 1.0 - kappa_penalty_weight: 100.0 - ref_s_weight: 100.0 - ref_v_weight: 0.0 - } - } -} \ No newline at end of file + planner_open_space_config { + warm_start_config { + xy_grid_resolution: 0.3 + phi_grid_resolution: 0.1 + next_node_num: 16 + step_size: 0.1 + traj_forward_penalty: 1.0 + traj_back_penalty: 1.0 + traj_gear_switch_penalty: 3.0 + max_explored_num:10000 + traj_steer_penalty: 3.0 + traj_steer_change_penalty: 1.0 + grid_a_star_xy_resolution: 0.25 + traj_kappa_contraint_ratio: 0.6 + node_radius: 0.2 + traj_expected_shortest_length: 0.5 + traj_short_length_penalty: 5.0 + desired_explored_num: 10000 + } + dual_variable_warm_start_config { + weight_d: 1.0 + ipopt_config { + ipopt_print_level: 0 + mumps_mem_percent: 6000 + mumps_pivtol: 1e-06 + ipopt_max_iter: 100 + ipopt_tol: 1e-05 + ipopt_acceptable_constr_viol_tol: 0.1 + ipopt_min_hessian_perturbation: 1e-12 + ipopt_jacobian_regularization_value: 1e-07 + ipopt_print_timing_statistics: "yes" + ipopt_alpha_for_y: "min" + ipopt_recalc_y: "yes" + } + qp_format: OSQP + min_safety_distance: 0.01 + osqp_config { + alpha: 1.0 + eps_abs: 1.0e-3 + eps_rel: 1.0e-3 + max_iter: 10000 + polish: true + osqp_debug_log: false + } + } + distance_approach_config { + weight_steer: 0.3 + weight_a: 1.1 + weight_steer_rate: 3.0 + weight_a_rate: 2.5 + weight_x: 2.3 + weight_y: 0.7 + weight_phi: 1.5 + weight_v: 0.0 + weight_steer_stitching: 1.75 + weight_a_stitching: 3.25 + weight_first_order_time: 4.25 + weight_second_order_time: 13.5 + weight_end_state: 1.0 + weight_slack: 1.0 + min_safety_distance: 0.01 + max_speed_forward: 2.0 + max_speed_reverse: 1.0 + max_acceleration_forward: 2.0 + max_acceleration_reverse: 1.0 + min_time_sample_scaling: 0.8 + max_time_sample_scaling: 1.2 + use_fix_time: false + ipopt_config { + ipopt_print_level: 0 + mumps_mem_percent: 6000 + mumps_pivtol: 1e-06 + ipopt_max_iter: 1000 + ipopt_tol: 0.0001 + ipopt_acceptable_constr_viol_tol: 0.1 + ipopt_min_hessian_perturbation: 1e-12 + ipopt_jacobian_regularization_value: 1e-07 + ipopt_print_timing_statistics: "yes" + ipopt_alpha_for_y: "min" + ipopt_recalc_y: "yes" + ipopt_mu_init: 0.1 + } + enable_constraint_check: false + enable_initial_final_check: false + enable_jacobian_ad: false + enable_hand_derivative: false + enable_derivative_check: false + distance_approach_mode: DISTANCE_APPROACH_IPOPT_RELAX_END_SLACK + enable_check_initial_state: false + } + iterative_anchoring_smoother_config { + interpolated_delta_s: 0.1 + reanchoring_trails_num: 50 + reanchoring_pos_stddev: 0.25 + reanchoring_length_stddev: 1.0 + estimate_bound: false + default_bound: 2.0 + vehicle_shortest_dimension: 1.04 + fem_pos_deviation_smoother_config { + weight_fem_pos_deviation: 1e7 + weight_path_length: 0.0 + weight_ref_deviation: 1e3 + apply_curvature_constraint: true + weight_curvature_constraint_slack_var: 1e8 + curvature_constraint: 0.18 + max_iter: 500 + time_limit: 0.0 + verbose: false + scaled_termination: true + warm_start: true + } + s_curve_config { + acc_weight: 1.0 + jerk_weight: 1.0 + kappa_penalty_weight: 100.0 + ref_s_weight: 10.0 + ref_v_weight: 0.0 + } + collision_decrease_ratio: 0.0 + max_forward_v: 1.0 + max_reverse_v: 1.0 + max_forward_acc: 0.5 + max_reverse_acc: 0.3 + max_acc_jerk: 0.5 + delta_t: 0.2 + } + delta_t: 0.5 + near_destination_threshold: 0.15 + enable_linear_interpolation: false + is_near_destination_theta_threshold: 0.1 + } diff --git a/modules/planning/scenarios/park_and_go/plugins.xml b/modules/planning/scenarios/park_and_go/plugins.xml index b32390ffb69..30227af9468 100644 --- a/modules/planning/scenarios/park_and_go/plugins.xml +++ b/modules/planning/scenarios/park_and_go/plugins.xml @@ -1,3 +1,7 @@ - + + + + + diff --git a/modules/planning/scenarios/pull_over/BUILD b/modules/planning/scenarios/pull_over/BUILD index 59c63c85979..4b10ccc664f 100644 --- a/modules/planning/scenarios/pull_over/BUILD +++ b/modules/planning/scenarios/pull_over/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,66 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-pull-over", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-pull-over.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libpull_over_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-pull-over/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-pull-over/include", -# filter = "*.h", -# ) - - - -cyber_plugin_description( - name = "plugin_pull_over_description", - description = ":plugins.xml", - plugin = ":libpull_over_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libpull_over_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":pull_over_scenario_lib"], -) - -cc_library( - name = "pull_over_scenario_lib", srcs = [ "pull_over_scenario.cc", "stage_approach.cc", @@ -88,30 +27,24 @@ cc_library( "stage_retry_parking.h", "util.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common/util:util_tool", "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/common/util:util_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/pull_over/proto:pull_over_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "pull_over_scenario_test", size = "small", srcs = ["pull_over_scenario_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":pull_over_scenario_lib", @@ -120,13 +53,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approach_test", size = "small", srcs = ["stage_approach_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":pull_over_scenario_lib", @@ -135,13 +66,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_retry_approach_parking_test", size = "small", srcs = ["stage_retry_approach_parking_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":pull_over_scenario_lib", @@ -150,13 +79,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_retry_parking_test", size = "small", srcs = ["stage_retry_parking_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":pull_over_scenario_lib", diff --git a/modules/planning/scenarios/pull_over/plugins.xml b/modules/planning/scenarios/pull_over/plugins.xml index 634d032afd9..3c52b4c046e 100644 --- a/modules/planning/scenarios/pull_over/plugins.xml +++ b/modules/planning/scenarios/pull_over/plugins.xml @@ -1,3 +1,6 @@ - - \ No newline at end of file + + + + + diff --git a/modules/planning/scenarios/stop_sign_unprotected/BUILD b/modules/planning/scenarios/stop_sign_unprotected/BUILD index 804fd9f6508..a88745cd82a 100644 --- a/modules/planning/scenarios/stop_sign_unprotected/BUILD +++ b/modules/planning/scenarios/stop_sign_unprotected/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,64 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-stop-sign-unprotected", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-stop-sign-unprotected.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libstop_sign_unprotected_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-stop-sign-unprotected/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-stop-sign-unprotected/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_stop_sign_unprotected_scenario_description", - description = ":plugins.xml", - plugin = ":libstop_sign_unprotected_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libstop_sign_unprotected_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":stop_sign_unprotected_scenario_lib"], -) - -cc_library( - name = "stop_sign_unprotected_scenario_lib", srcs = [ "stage_creep.cc", "stage_intersection_cruise.cc", @@ -86,27 +27,24 @@ cc_library( "stop_sign_unprotected_scenario.h", "context.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common_msgs/planning_msgs:planning_cc_proto", "//modules/common/math", "//modules/common/util:util_tool", - "//modules/common/util", - "//modules/planning/planning_base/common/util:util_lib", - "//modules/planning/planning_base/scenario_base:scenario", + "//modules/common/util:common_util", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/stop_sign_unprotected/proto:stop_sign_unprotected_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "stop_sign_unprotected_scenario_test", size = "small", srcs = ["stop_sign_unprotected_scenario_test.cc"], - data = ["//modules/planning/planning_base:planning_conf"], linkopts = ["-lgomp"], deps = [ ":stop_sign_unprotected_scenario_lib", @@ -115,13 +53,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_creep_test", size = "small", srcs = ["stage_creep_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":stop_sign_unprotected_scenario_lib", @@ -130,13 +66,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_pre_stop_test", size = "small", srcs = ["stage_pre_stop_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":stop_sign_unprotected_scenario_lib", @@ -145,13 +79,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_stop_test", size = "small", srcs = ["stage_stop_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":stop_sign_unprotected_scenario_lib", diff --git a/modules/planning/scenarios/stop_sign_unprotected/conf/scenario_conf.pb.txt b/modules/planning/scenarios/stop_sign_unprotected/conf/scenario_conf.pb.txt index 54f61208070..f8f288bf5eb 100644 --- a/modules/planning/scenarios/stop_sign_unprotected/conf/scenario_conf.pb.txt +++ b/modules/planning/scenarios/stop_sign_unprotected/conf/scenario_conf.pb.txt @@ -2,7 +2,6 @@ start_stop_sign_scenario_distance: 4.0 watch_vehicle_max_valid_stop_distance: 5.0 max_valid_stop_distance: 2.0 stop_duration_sec: 1.0 -min_pass_s_distance: 3.0 stop_timeout_sec: 8.0 creep_timeout_sec: 10.0 creep_stage_config { diff --git a/modules/planning/scenarios/stop_sign_unprotected/plugins.xml b/modules/planning/scenarios/stop_sign_unprotected/plugins.xml index 2017620e106..2c9536959bd 100644 --- a/modules/planning/scenarios/stop_sign_unprotected/plugins.xml +++ b/modules/planning/scenarios/stop_sign_unprotected/plugins.xml @@ -1,3 +1,7 @@ - - \ No newline at end of file + + + + + + diff --git a/modules/planning/scenarios/stop_sign_unprotected/proto/stop_sign_unprotected.proto b/modules/planning/scenarios/stop_sign_unprotected/proto/stop_sign_unprotected.proto index f6623c7f0c7..5b496d3bc29 100644 --- a/modules/planning/scenarios/stop_sign_unprotected/proto/stop_sign_unprotected.proto +++ b/modules/planning/scenarios/stop_sign_unprotected/proto/stop_sign_unprotected.proto @@ -11,8 +11,7 @@ message ScenarioStopSignUnprotectedConfig { [default = 5.0]; // meter optional double max_valid_stop_distance = 3 [default = 3.5]; // meter optional float stop_duration_sec = 4 [default = 1.0]; // sec - optional double min_pass_s_distance = 5 [default = 3.0]; // meter - optional float stop_timeout_sec = 6 [default = 8.0]; // sec - optional float creep_timeout_sec = 7 [default = 10.0]; // sec - optional CreepStageConfig creep_stage_config = 8; + optional float stop_timeout_sec = 5 [default = 8.0]; // sec + optional float creep_timeout_sec = 6 [default = 10.0]; // sec + optional CreepStageConfig creep_stage_config = 7; } \ No newline at end of file diff --git a/modules/planning/scenarios/traffic_light_protected/BUILD b/modules/planning/scenarios/traffic_light_protected/BUILD index 25dbb7b14ac..05a68099941 100644 --- a/modules/planning/scenarios/traffic_light_protected/BUILD +++ b/modules/planning/scenarios/traffic_light_protected/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,64 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-traffic-light-protected", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-traffic-light-protected.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libtraffic_light_protected_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-traffic-light-protected/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-traffic-light-protected/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_traffic_light_protected_scenario_description", - description = ":plugins.xml", - plugin = ":libtraffic_light_protected_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libtraffic_light_protected_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":traffic_light_protected_scenario_lib"], -) - -cc_library( - name = "traffic_light_protected_scenario_lib", srcs = [ "stage_approach.cc", "stage_intersection_cruise.cc", @@ -82,26 +23,23 @@ cc_library( "stage_intersection_cruise.h", "traffic_light_protected_scenario.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/util:util_tool", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", - "//modules/planning/planning_base/scenario_base/traffic_light_base:base_stage_traffic_light_cruise", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/traffic_light_protected/proto:traffic_light_protected_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "traffic_light_protected_scenario_test", size = "small", srcs = ["traffic_light_protected_scenario_test.cc"], - data = ["//modules/planning/planning_base:planning_conf"], linkopts = ["-lgomp"], deps = [ ":traffic_light_protected_scenario_lib", @@ -110,13 +48,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approach_test", size = "small", srcs = ["stage_approach_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":traffic_light_protected_scenario_lib", diff --git a/modules/planning/scenarios/traffic_light_protected/plugins.xml b/modules/planning/scenarios/traffic_light_protected/plugins.xml index 1eb87dfb487..96c54869564 100644 --- a/modules/planning/scenarios/traffic_light_protected/plugins.xml +++ b/modules/planning/scenarios/traffic_light_protected/plugins.xml @@ -1,3 +1,5 @@ - - \ No newline at end of file + + + + diff --git a/modules/planning/scenarios/traffic_light_unprotected_left_turn/BUILD b/modules/planning/scenarios/traffic_light_unprotected_left_turn/BUILD index dfda5fd4824..f9283c2d0bb 100644 --- a/modules/planning/scenarios/traffic_light_unprotected_left_turn/BUILD +++ b/modules/planning/scenarios/traffic_light_unprotected_left_turn/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -12,64 +9,9 @@ filegroup( "conf/**", ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-traffic-light-unprotected-left-turn", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-traffic-light-unprotected-left-turn.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libtraffic_light_unprotected_left_turn_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-traffic-light-unprotected-left-turn/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-traffic-light-unprotected-left-turn/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_traffic_light_unprotected_left_turn_scenario_description", - description = ":plugins.xml", - plugin = ":libtraffic_light_unprotected_left_turn_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libtraffic_light_unprotected_left_turn_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":traffic_light_unprotected_left_turn_scenario_lib"], -) - -cc_library( - name = "traffic_light_unprotected_left_turn_scenario_lib", srcs = [ "stage_approach.cc", "stage_creep.cc", @@ -83,27 +25,23 @@ cc_library( "stage_intersection_cruise.h", "traffic_light_unprotected_left_turn_scenario.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/util:util_tool", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", - "//modules/planning/planning_base/scenario_base/traffic_light_base:base_stage_traffic_light_cruise", - "//modules/planning/planning_base/scenario_base/traffic_light_base:base_stage_traffic_light_creep", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/traffic_light_unprotected_left_turn/proto:traffic_light_unprotected_left_turn_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "traffic_light_left_turn_unprotected_scenario_test", size = "small", srcs = ["traffic_light_unprotected_left_turn_scenario_test.cc"], - data = ["//modules/planning/planning_base:planning_conf"], linkopts = ["-lgomp"], deps = [ ":traffic_light_unprotected_left_turn_scenario_lib", @@ -112,13 +50,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approach_test", size = "small", srcs = ["stage_approach_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":traffic_light_unprotected_left_turn_scenario_lib", @@ -127,13 +63,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_creep_test", size = "small", srcs = ["stage_creep_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":traffic_light_unprotected_left_turn_scenario_lib", diff --git a/modules/planning/scenarios/traffic_light_unprotected_left_turn/plugins.xml b/modules/planning/scenarios/traffic_light_unprotected_left_turn/plugins.xml index e8079aaefef..cb41f3efbac 100644 --- a/modules/planning/scenarios/traffic_light_unprotected_left_turn/plugins.xml +++ b/modules/planning/scenarios/traffic_light_unprotected_left_turn/plugins.xml @@ -1,3 +1,6 @@ - - \ No newline at end of file + + + + + diff --git a/modules/planning/scenarios/traffic_light_unprotected_right_turn/BUILD b/modules/planning/scenarios/traffic_light_unprotected_right_turn/BUILD index 317ebe33773..63ecb1f9c2b 100644 --- a/modules/planning/scenarios/traffic_light_unprotected_right_turn/BUILD +++ b/modules/planning/scenarios/traffic_light_unprotected_right_turn/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,64 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-traffic-light-unprotected-right-turn", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-traffic-light-unprotected-right-turn.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libtraffic_light_unprotected_right_turn_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-traffic-light-unprotected-right-turn/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-traffic-light-unprotected-right-turn/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_traffic_light_unprotected_right_turn_scenario_description", - description = ":plugins.xml", - plugin = ":libtraffic_light_unprotected_right_turn_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libtraffic_light_unprotected_right_turn_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":traffic_light_unprotected_right_turn_scenario_lib"], -) - -cc_library( - name = "traffic_light_unprotected_right_turn_scenario_lib", srcs = [ "stage_creep.cc", "stage_intersection_cruise.cc", @@ -84,27 +25,23 @@ cc_library( "stage_stop.h", "traffic_light_unprotected_right_turn_scenario.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/util:util_tool", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", - "//modules/planning/planning_base/scenario_base/traffic_light_base:base_stage_traffic_light_cruise", - "//modules/planning/planning_base/scenario_base/traffic_light_base:base_stage_traffic_light_creep", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/traffic_light_unprotected_right_turn/proto:traffic_light_unprotected_right_turn_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "traffic_light_right_turn_unprotected_scenario_test", size = "small", srcs = ["traffic_light_unprotected_right_turn_scenario_test.cc"], - data = ["//modules/planning/planning_base:planning_conf"], linkopts = ["-lgomp"], deps = [ ":traffic_light_unprotected_right_turn_scenario_lib", @@ -113,13 +50,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_creep_test", size = "small", srcs = ["stage_creep_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":traffic_light_unprotected_right_turn_scenario_lib", @@ -128,13 +63,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_stop_test", size = "small", srcs = ["stage_stop_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":traffic_light_unprotected_right_turn_scenario_lib", diff --git a/modules/planning/scenarios/traffic_light_unprotected_right_turn/plugins.xml b/modules/planning/scenarios/traffic_light_unprotected_right_turn/plugins.xml index 502e85782e2..867b54525c1 100644 --- a/modules/planning/scenarios/traffic_light_unprotected_right_turn/plugins.xml +++ b/modules/planning/scenarios/traffic_light_unprotected_right_turn/plugins.xml @@ -1,3 +1,6 @@ - - \ No newline at end of file + + + + + diff --git a/modules/planning/scenarios/valet_parking/BUILD b/modules/planning/scenarios/valet_parking/BUILD index 7c5b722a17e..28e9a345951 100644 --- a/modules/planning/scenarios/valet_parking/BUILD +++ b/modules/planning/scenarios/valet_parking/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,64 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-valet-parking", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-valet-parking.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libvalet_parking_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-valet-parking/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-valet-parking/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_valet_parking_description", - description = ":plugins.xml", - plugin = ":libvalet_parking_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libvalet_parking_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":valet_parking_scenario_lib"], -) - -cc_library( - name = "valet_parking_scenario_lib", srcs = [ "stage_approaching_parking_spot.cc", "stage_parking.cc", @@ -81,23 +22,20 @@ cc_library( "stage_parking.h", "valet_parking_scenario.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/valet_parking/proto:valet_parking_cc_proto", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "valet_parking_scenario_test", size = "small", srcs = ["valet_parking_scenario_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":valet_parking_scenario_lib", @@ -106,13 +44,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approaching_parking_spot_test", size = "small", srcs = ["stage_approaching_parking_spot_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":valet_parking_scenario_lib", @@ -121,13 +57,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_parking_test", size = "small", srcs = ["stage_parking_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":valet_parking_scenario_lib", diff --git a/modules/planning/scenarios/valet_parking/conf/scenario_conf.pb.txt b/modules/planning/scenarios/valet_parking/conf/scenario_conf.pb.txt index adc05558242..d8244a244a4 100644 --- a/modules/planning/scenarios/valet_parking/conf/scenario_conf.pb.txt +++ b/modules/planning/scenarios/valet_parking/conf/scenario_conf.pb.txt @@ -1,2 +1,2 @@ parking_spot_range_to_start: 20.0 -max_valid_stop_distance: 3.0 \ No newline at end of file +max_valid_stop_distance: 1.0 \ No newline at end of file diff --git a/modules/planning/scenarios/valet_parking/conf/valet_parking_approaching_parking_spot/open_space_pre_stop_decider.pb.txt b/modules/planning/scenarios/valet_parking/conf/valet_parking_approaching_parking_spot/open_space_pre_stop_decider.pb.txt index 335e40ca419..2de01c62095 100644 --- a/modules/planning/scenarios/valet_parking/conf/valet_parking_approaching_parking_spot/open_space_pre_stop_decider.pb.txt +++ b/modules/planning/scenarios/valet_parking/conf/valet_parking_approaching_parking_spot/open_space_pre_stop_decider.pb.txt @@ -1,2 +1 @@ -stop_type: PARKING -stop_distance_to_target:1.0 \ No newline at end of file +stop_type: PARKING \ No newline at end of file diff --git a/modules/planning/scenarios/valet_parking/conf/valet_parking_parking/open_space_trajectory_provider.pb.txt b/modules/planning/scenarios/valet_parking/conf/valet_parking_parking/open_space_trajectory_provider.pb.txt index c57cbe328d7..e0ca3481125 100644 --- a/modules/planning/scenarios/valet_parking/conf/valet_parking_parking/open_space_trajectory_provider.pb.txt +++ b/modules/planning/scenarios/valet_parking/conf/valet_parking_parking/open_space_trajectory_provider.pb.txt @@ -13,6 +13,9 @@ open_space_trajectory_optimizer_config { traj_steer_change_penalty: 1.0 grid_a_star_xy_resolution: 0.25 node_radius: 0.2 + traj_expected_shortest_length: 0.5 + traj_short_length_penalty: 5.0 + desired_explored_num: 10000 } dual_variable_warm_start_config { weight_d: 1.0 diff --git a/modules/planning/scenarios/valet_parking/plugins.xml b/modules/planning/scenarios/valet_parking/plugins.xml index 38722b9a016..325a9e59248 100644 --- a/modules/planning/scenarios/valet_parking/plugins.xml +++ b/modules/planning/scenarios/valet_parking/plugins.xml @@ -1,3 +1,5 @@ - + + + diff --git a/modules/planning/scenarios/yield_sign/BUILD b/modules/planning/scenarios/yield_sign/BUILD index 078b6ffdc79..350aa37bde2 100644 --- a/modules/planning/scenarios/yield_sign/BUILD +++ b/modules/planning/scenarios/yield_sign/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin", "apollo_cc_test") package(default_visibility = ["//visibility:public"]) @@ -13,64 +10,8 @@ filegroup( ]) ) -# install( -# name = "install", -# data_dest = "planning-scenario-yield-sign", -# data = [ -# ":cyberfile.xml", -# ":planning-scenario-yield-sign.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libyield_sign_scenario.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-scenario-yield-sign/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-scenario-yield-sign/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_yield_sign_scenario_description", - description = ":plugins.xml", - plugin = ":libyield_sign_scenario.so", -) - -cc_binary( +apollo_plugin( name = "libyield_sign_scenario.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":yield_sign_scenario_lib"], -) - -cc_library( - name = "yield_sign_scenario_lib", srcs = [ "stage_approach.cc", "stage_creep.cc", @@ -81,30 +22,24 @@ cc_library( "stage_creep.h", "yield_sign_scenario.h", ], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//cyber", "//modules/common/util:util_tool", "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/common/util:util_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/scenario_base:scenario", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/scenarios/yield_sign/proto:yield_sign_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( name = "yield_sign_scenario_test", size = "small", srcs = ["yield_sign_scenario_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":yield_sign_scenario_lib", @@ -113,13 +48,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_approach_test", size = "small", srcs = ["stage_approach_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":yield_sign_scenario_lib", @@ -128,13 +61,11 @@ cc_test( linkstatic = True, ) -cc_test( +apollo_cc_test( name = "stage_creep_test", size = "small", srcs = ["stage_creep_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], + linkopts = ["-lgomp"], deps = [ ":yield_sign_scenario_lib", diff --git a/modules/planning/scenarios/yield_sign/conf/scenario_conf.pb.txt b/modules/planning/scenarios/yield_sign/conf/scenario_conf.pb.txt index 506592ef087..0f5b11906a1 100644 --- a/modules/planning/scenarios/yield_sign/conf/scenario_conf.pb.txt +++ b/modules/planning/scenarios/yield_sign/conf/scenario_conf.pb.txt @@ -1,6 +1,5 @@ start_yield_sign_scenario_distance: 10.0 max_valid_stop_distance: 4.5 - min_pass_s_distance: 3.0 creep_timeout_sec: 10.0 creep_stage_config { min_boundary_t: 6.0 diff --git a/modules/planning/scenarios/yield_sign/plugins.xml b/modules/planning/scenarios/yield_sign/plugins.xml index abc68236772..5f7abad23b0 100644 --- a/modules/planning/scenarios/yield_sign/plugins.xml +++ b/modules/planning/scenarios/yield_sign/plugins.xml @@ -1,3 +1,5 @@ - - \ No newline at end of file + + + + diff --git a/modules/planning/scenarios/yield_sign/proto/yield_sign.proto b/modules/planning/scenarios/yield_sign/proto/yield_sign.proto index 297a50db596..3ad86167bd5 100644 --- a/modules/planning/scenarios/yield_sign/proto/yield_sign.proto +++ b/modules/planning/scenarios/yield_sign/proto/yield_sign.proto @@ -8,7 +8,6 @@ message ScenarioYieldSignConfig { optional double start_yield_sign_scenario_distance = 1 [default = 10.0]; // meter optional double max_valid_stop_distance = 2 [default = 4.5]; // meter - optional double min_pass_s_distance = 3 [default = 3.0]; // meter - optional float creep_timeout_sec = 4 [default = 10.0]; // sec - optional CreepStageConfig creep_stage_config = 5; + optional float creep_timeout_sec = 3 [default = 10.0]; // sec + optional CreepStageConfig creep_stage_config = 4; } \ No newline at end of file diff --git a/modules/planning/tasks/fallback_path/BUILD b/modules/planning/tasks/fallback_path/BUILD index 09f0be0cec0..047d0346d79 100644 --- a/modules/planning/tasks/fallback_path/BUILD +++ b/modules/planning/tasks/fallback_path/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,82 +7,22 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-task-fallback-path", -# data = [ -# ":cyberfile.xml", -# ":planning-task-fallback-path.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libfallback_path.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-task-fallback-path/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-task-fallback-path/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_fallback_path_description", - description = ":plugins.xml", - plugin = ":libfallback_path.so", -) - -cc_binary( +apollo_plugin( name = "libfallback_path.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":fallback_path_lib"], -) - -cc_library( - name = "fallback_path_lib", srcs = ["fallback_path.cc"], hdrs = ["fallback_path.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base/common:path_generation", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/fallback_path/proto:fallback_path_cc_proto", - "//modules/planning/planning_base/task_base/common/path_util:path_util" ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/fallback_path/conf/default_conf.pb.txt b/modules/planning/tasks/fallback_path/conf/default_conf.pb.txt index 7b0f6846d2e..f18bca949ff 100644 --- a/modules/planning/tasks/fallback_path/conf/default_conf.pb.txt +++ b/modules/planning/tasks/fallback_path/conf/default_conf.pb.txt @@ -1,8 +1,8 @@ extend_buffer: 0.5 path_optimizer_config { - l_weight: 10.0 + l_weight: 1.0 dl_weight: 20.0 - ddl_weight: 100.0 - dddl_weight: 5000.0 + ddl_weight: 1000.0 + dddl_weight: 50000.0 lateral_derivative_bound_default: 2.0 } diff --git a/modules/planning/tasks/lane_borrow_path/BUILD b/modules/planning/tasks/lane_borrow_path/BUILD index 0dd94033fc8..03d27435466 100644 --- a/modules/planning/tasks/lane_borrow_path/BUILD +++ b/modules/planning/tasks/lane_borrow_path/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,82 +7,23 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-task-lane-borrow-path", -# data = [ -# ":cyberfile.xml", -# ":planning-task-lane-borrow-path.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":liblane_borrow_path.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-task-lane-borrow-path/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-task-lane-borrow-path/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_lane_borrow_path_description", - description = ":plugins.xml", - plugin = ":liblane_borrow_path.so", -) - -cc_binary( +apollo_plugin( name = "liblane_borrow_path.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":lane_borrow_path_lib"], -) - -cc_library( - name = "lane_borrow_path_lib", srcs = ["lane_borrow_path.cc"], hdrs = ["lane_borrow_path.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:obstacle_blocking_analyzer", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base/common:path_generation", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/lane_borrow_path/proto:lane_borrow_path_cc_proto", - "//modules/planning/planning_base/task_base/common/path_util:path_util" ], - alwayslink = True, ) + apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/tasks/lane_borrow_path/conf/default_conf.pb.txt b/modules/planning/tasks/lane_borrow_path/conf/default_conf.pb.txt index d764f7d637f..a266d72c107 100644 --- a/modules/planning/tasks/lane_borrow_path/conf/default_conf.pb.txt +++ b/modules/planning/tasks/lane_borrow_path/conf/default_conf.pb.txt @@ -2,10 +2,10 @@ is_allow_lane_borrowing: true lane_borrow_max_speed: 5.0 long_term_blocking_obstacle_cycle_threshold: 3 path_optimizer_config { - l_weight: 100.0 + l_weight: 1.0 dl_weight: 20.0 ddl_weight: 1000.0 - dddl_weight: 5000.0 - path_reference_l_weight: 20000.0 + dddl_weight: 50000.0 + path_reference_l_weight: 100.0 lateral_derivative_bound_default: 2.0 } diff --git a/modules/planning/tasks/lane_change_path/BUILD b/modules/planning/tasks/lane_change_path/BUILD index a4fd2410c2a..dc928667e59 100644 --- a/modules/planning/tasks/lane_change_path/BUILD +++ b/modules/planning/tasks/lane_change_path/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,82 +7,22 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-task-lane-change-path", -# data = [ -# ":cyberfile.xml", -# ":planning-task-lane-change-path.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":liblane_change_path.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-task-lane-change-path/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-task-lane-change-path/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_lane_change_path_description", - description = ":plugins.xml", - plugin = ":liblane_change_path.so", -) - -cc_binary( +apollo_plugin( name = "liblane_change_path.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":lane_change_path_lib"], -) - -cc_library( - name = "lane_change_path_lib", srcs = ["lane_change_path.cc"], hdrs = ["lane_change_path.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:obstacle_blocking_analyzer", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base/common:path_generation", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/lane_change_path/proto:lane_change_path_cc_proto", - "//modules/planning/planning_base/task_base/common/path_util:path_util" ], - alwayslink = True, ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/tasks/lane_follow_path/BUILD b/modules/planning/tasks/lane_follow_path/BUILD index 11becbe9bac..dc5cd440cb3 100644 --- a/modules/planning/tasks/lane_follow_path/BUILD +++ b/modules/planning/tasks/lane_follow_path/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,81 +7,22 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-task-lane-follow-path", -# data = [ -# ":cyberfile.xml", -# ":planning-task-lane-follow-path.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":liblane_follow_path.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-task-lane-follow-path/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-task-lane-follow-path/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_lane_follow_path_description", - description = ":plugins.xml", - plugin = ":liblane_follow_path.so", -) - -cc_binary( +apollo_plugin( name = "liblane_follow_path.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":lane_follow_path_lib"], -) - -cc_library( - name = "lane_follow_path_lib", srcs = ["lane_follow_path.cc"], hdrs = ["lane_follow_path.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base/common:path_generation", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/lane_follow_path/proto:lane_follow_path_cc_proto", - "//modules/planning/planning_base/task_base/common/path_util:path_util" ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/lane_follow_path/conf/default_conf.pb.txt b/modules/planning/tasks/lane_follow_path/conf/default_conf.pb.txt index b280496b8ab..d88936169ee 100644 --- a/modules/planning/tasks/lane_follow_path/conf/default_conf.pb.txt +++ b/modules/planning/tasks/lane_follow_path/conf/default_conf.pb.txt @@ -1,10 +1,10 @@ -is_extend_lane_bounds_to_include_adc: true +is_extend_lane_bounds_to_include_adc: false extend_buffer: 0.2 path_optimizer_config { - l_weight: 100.0 + l_weight: 1.0 dl_weight: 20.0 ddl_weight: 1000.0 - dddl_weight: 5000.0 + dddl_weight: 50000.0 lateral_derivative_bound_default: 2.0 - path_reference_l_weight:1000 + path_reference_l_weight:100 } diff --git a/modules/planning/tasks/open_space_fallback_decider/BUILD b/modules/planning/tasks/open_space_fallback_decider/BUILD index 3b03441baf2..f16a7fb5e4a 100644 --- a/modules/planning/tasks/open_space_fallback_decider/BUILD +++ b/modules/planning/tasks/open_space_fallback_decider/BUILD @@ -1,99 +1,39 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) -) -# install( -# name = "install", -# data_dest = "planning-task-open-space-fallback-decider", -# data = [ -# ":cyberfile.xml", -# ":planning-task-open-space-fallback-decider.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libopen_space_fallback_decider.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-task-open-space-fallback-decider/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-task-open-space-fallback-decider/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_open_space_fallback_decider_description", - description = ":plugins.xml", - plugin = ":libopen_space_fallback_decider.so", -) - -cc_binary( - name = "libopen_space_fallback_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":open_space_fallback_decider_lib"], -) - -cc_library( - name = "open_space_fallback_decider_lib", - srcs = ["open_space_fallback_decider.cc"], - hdrs = ["open_space_fallback_decider.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/task_base/common:decider_base", - "//modules/planning/tasks/open_space_fallback_decider/proto:open_space_fallback_decider_cc_proto" - ], - alwayslink = True, + ]), ) -cc_test( +apollo_cc_test( name = "open_space_fallback_decider_test", size = "small", srcs = ["open_space_fallback_decider_test.cc"], deps = [ ":open_space_fallback_decider_lib", - "//modules/planning/planning_base/common:dependency_injector", "@com_google_googletest//:gtest_main", + "//modules/planning/planning_base:apollo_planning_planning_base", + ], +) + +apollo_plugin( + name = "libopen_space_fallback_decider.so", + srcs = ["open_space_fallback_decider.cc"], + hdrs = ["open_space_fallback_decider.h"], + description = ":plugins.xml", + deps = [ + "//modules/planning/planning_base:apollo_planning_planning_base", + "//modules/planning/tasks/open_space_fallback_decider/proto:open_space_fallback_decider_cc_proto", ], ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/open_space_pre_stop_decider/BUILD b/modules/planning/tasks/open_space_pre_stop_decider/BUILD index bdd4b8ed5f8..46caf127dea 100644 --- a/modules/planning/tasks/open_space_pre_stop_decider/BUILD +++ b/modules/planning/tasks/open_space_pre_stop_decider/BUILD @@ -1,17 +1,15 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -55,33 +53,17 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_open_space_pre_stop_decider_description", - description = ":plugins.xml", - plugin = ":libopen_space_pre_stop_decider.so", -) - -cc_binary( +apollo_plugin( name = "libopen_space_pre_stop_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":open_space_pre_stop_decider_lib"], -) - -cc_library( - name = "open_space_pre_stop_decider_lib", srcs = ["open_space_pre_stop_decider.cc"], hdrs = ["open_space_pre_stop_decider.h"], - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/task_base/common:decider_base", - "//modules/planning/tasks/open_space_pre_stop_decider/proto:open_space_pre_stop_decider_cc_proto" + "//modules/planning/tasks/open_space_pre_stop_decider/proto:open_space_pre_stop_decider_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/open_space_pre_stop_decider/open_space_pre_stop_decider.cc b/modules/planning/tasks/open_space_pre_stop_decider/open_space_pre_stop_decider.cc index 81e2b0b7908..7d94586ff2e 100644 --- a/modules/planning/tasks/open_space_pre_stop_decider/open_space_pre_stop_decider.cc +++ b/modules/planning/tasks/open_space_pre_stop_decider/open_space_pre_stop_decider.cc @@ -154,11 +154,12 @@ void OpenSpacePreStopDecider::SetParkingSpotStopFence( double stop_line_s = 0.0; double stop_distance_to_target = config_.stop_distance_to_target(); double static_linear_velocity_epsilon = 1.0e-2; + static constexpr double kStopBuffer = 0.2; CHECK_GE(stop_distance_to_target, 1.0e-8); double target_vehicle_offset = target_s - adc_front_edge_s; if (target_vehicle_offset > stop_distance_to_target) { stop_line_s = target_s - stop_distance_to_target; - } else if (std::abs(target_vehicle_offset) < stop_distance_to_target) { + } else if (target_vehicle_offset < stop_distance_to_target - kStopBuffer) { stop_line_s = target_s + stop_distance_to_target; } else if (target_vehicle_offset < -stop_distance_to_target) { if (!frame->open_space_info().pre_stop_rightaway_flag()) { diff --git a/modules/planning/tasks/open_space_roi_decider/BUILD b/modules/planning/tasks/open_space_roi_decider/BUILD index ee344c96503..bfe8750fbb7 100644 --- a/modules/planning/tasks/open_space_roi_decider/BUILD +++ b/modules/planning/tasks/open_space_roi_decider/BUILD @@ -1,17 +1,15 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -55,45 +53,28 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_open_space_roi_decider_description", - description = ":plugins.xml", - plugin = ":libopen_space_roi_decider.so", -) - -cc_binary( - name = "libopen_space_roi_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":open_space_roi_decider_lib"], -) - -cc_library( - name = "open_space_roi_decider_lib", - srcs = ["open_space_roi_decider.cc"], - hdrs = ["open_space_roi_decider.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/task_base/common:decider_base", - "//modules/planning/planning_base/open_space/utils:open_space_roi_utils", - "//modules/planning/tasks/open_space_roi_decider/proto:open_space_roi_decider_cc_proto" - ], - alwayslink = True, -) - -cc_test( +apollo_cc_test( name = "open_space_roi_decider_test", size = "small", srcs = ["open_space_roi_decider_test.cc"], + tags = ["exclude"], deps = [ ":open_space_roi_decider_lib", "@com_google_googletest//:gtest_main", ], - tags = ["exclude"] +) + +apollo_plugin( + name = "libopen_space_roi_decider.so", + srcs = ["open_space_roi_decider.cc"], + hdrs = ["open_space_roi_decider.h"], + description = ":plugins.xml", + deps = [ + "//modules/planning/planning_base:apollo_planning_planning_base", + "//modules/planning/tasks/open_space_roi_decider/proto:open_space_roi_decider_cc_proto", + ], ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.cc b/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.cc index 7384b2c4a87..17cc574be44 100644 --- a/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.cc +++ b/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.cc @@ -25,6 +25,7 @@ #include #include "modules/common/util/point_factory.h" #include "modules/planning/planning_base/common/planning_context.h" +#include "modules/planning/planning_base/common/util/print_debug_info.h" #include "modules/planning/planning_base/open_space/utils/open_space_roi_util.h" namespace apollo { namespace planning { @@ -126,13 +127,32 @@ Status OpenSpaceRoiDecider::Process(Frame *frame) { } SetOriginFromADC(frame, nearby_path); ADEBUG << "SetOrigin"; + auto adc_point = common::util::PointFactory::ToPointENU(vehicle_state_); + hdmap::LaneInfoConstPtr lane; + double s = 0.0; + double l = 0.0; + if (!isofflane_) { + isofflane_ = HDMapUtil::BaseMap().GetNearestLaneWithHeading( + adc_point, 2.0, vehicle_state_.heading(), M_PI / 3.0, + &lane, &s, &l) == -1; + } + if (isofflane_) { + AINFO << "in GetParkingBoundary"; + if (!GetParkingBoundary(nearby_path, frame, &roi_boundary)) { + const std::string msg = "Fail to get park and go boundary from map"; + AERROR << msg; + return Status(ErrorCode::PLANNING_ERROR, msg); + } + } else { + AINFO << "in ParkAndGoBoundary"; + if (!GetParkAndGoBoundary(frame, nearby_path, &roi_boundary)) { + const std::string msg = "Fail to get park and go boundary from map"; + AERROR << msg; + return Status(ErrorCode::PLANNING_ERROR, msg); + } + } SetParkAndGoEndPose(frame); ADEBUG << "SetEndPose"; - if (!GetParkAndGoBoundary(frame, nearby_path, &roi_boundary)) { - const std::string msg = "Fail to get park and go boundary from map"; - AERROR << msg; - return Status(ErrorCode::PLANNING_ERROR, msg); - } } else { const std::string msg = "chosen open space roi secenario type not implemented"; @@ -162,17 +182,18 @@ void OpenSpaceRoiDecider::SetOriginFromADC(Frame *const frame, const double adc_length = vehicle_params_.length(); const double adc_width = vehicle_params_.width(); // ADC box - Box2d adc_box(adc_init_position, adc_init_heading, adc_length, adc_width); + Box2d adc_box(adc_init_position, adc_init_heading, adc_length + 2.0, + adc_width + 2.0); // get vertices from ADC box std::vector adc_corners; adc_box.GetAllCorners(&adc_corners); for (size_t i = 0; i < adc_corners.size(); ++i) { - ADEBUG << "ADC [" << i << "]x: " << std::setprecision(9) - << adc_corners[i].x(); - ADEBUG << "ADC [" << i << "]y: " << std::setprecision(9) - << adc_corners[i].y(); + AINFO << "ADC [" << i << "]x: " << std::setprecision(9) + << adc_corners[i].x(); + AINFO << "ADC [" << i << "]y: " << std::setprecision(9) + << adc_corners[i].y(); } - auto left_top = adc_corners[3]; + auto left_top = adc_corners[1]; ADEBUG << "left_top x: " << std::setprecision(9) << left_top.x(); ADEBUG << "left_top y: " << std::setprecision(9) << left_top.y(); @@ -591,10 +612,6 @@ void OpenSpaceRoiDecider::AddBoundaryKeyPoint( hdmap::MapPathPoint current_check_point = nearby_path.GetSmoothPoint(check_point_s); - hdmap::MapPathPoint previous_check_point = - nearby_path.GetSmoothPoint(check_point_s - previous_distance_s); - hdmap::MapPathPoint next_check_point = - nearby_path.GetSmoothPoint(check_point_s + next_distance_s); double current_check_point_heading = current_check_point.heading(); double current_road_width = @@ -1762,5 +1779,341 @@ bool OpenSpaceRoiDecider::AdjustPointsOrderToClockwise( return false; } } + +bool OpenSpaceRoiDecider::GetParkingBoundary( + const hdmap::Path &nearby_path, Frame *const frame, + std::vector> *const roi_parking_boundary) { + const auto &park_and_go_status = + injector_->planning_context()->planning_status().park_and_go(); + const double adc_init_x = park_and_go_status.adc_init_position().x(); + const double adc_init_y = park_and_go_status.adc_init_position().y(); + const double adc_init_heading = park_and_go_status.adc_init_heading(); + common::math::Vec2d adc_init_position = {adc_init_x, adc_init_y}; + const double adc_length = vehicle_params_.length(); + const double adc_width = vehicle_params_.width(); + AINFO << std::fixed << "adc_init_x is " << adc_init_x << "adc_init_y is " + << adc_init_y << "adc_init_heading is " << adc_init_heading; + // ADC box + Box2d adc_box(adc_init_position, adc_init_heading, adc_length + 2.0, + adc_width + 2.0); + // get vertices from ADC box + std::vector adc_corners; + adc_box.GetAllCorners(&adc_corners); + auto right_top = adc_corners[0]; + auto left_top = adc_corners[1]; + auto left_down = adc_corners[2]; + auto right_down = adc_corners[3]; + + double left_top_s = 0.0; + double left_top_l = 0.0; + double right_top_s = 0.0; + double right_top_l = 0.0; + double left_down_s = 0.0; + double left_down_l = 0.0; + double right_down_s = 0.0; + double right_down_l = 0.0; + if (!(nearby_path.GetProjection(left_top, &left_top_s, &left_top_l) && + nearby_path.GetProjection(right_top, &right_top_s, &right_top_l))) { + AERROR << "fail to get parking spot points' projections on reference line"; + return false; + } + + if (!(nearby_path.GetProjection(left_down, &left_down_s, &left_down_l) && + nearby_path.GetProjection(right_down, &right_down_s, &right_down_l))) { + AERROR << "fail to get parking spot points' projections on reference line"; + return false; + } + if (fabs(left_top_l + right_top_l) > fabs(left_down_l + right_down_l)) { + frame->mutable_open_space_info()->mutable_origin_point()->set_x( + right_down.x()); + frame->mutable_open_space_info()->mutable_origin_point()->set_y( + right_down.y()); + double heading; + if (!nearby_path.GetHeadingAlongPath(right_down, &heading)) { + AERROR << "fail to get heading on reference line"; + return false; + } + frame->mutable_open_space_info()->set_origin_heading( + common::math::NormalizeAngle(heading)); + std::swap(right_down, left_top); + std::swap(right_top, left_down); + std::swap(right_down_s, left_top_s); + std::swap(right_down_l, left_top_l); + std::swap(right_top_s, left_down_s); + std::swap(right_top_l, left_down_l); + } + const auto &origin_point = frame->open_space_info().origin_point(); + ADEBUG << std::fixed << "origin_point: " << origin_point.x() << ", " + << origin_point.y(); + const auto &origin_heading = frame->open_space_info().origin_heading(); + left_top -= origin_point; + left_top.SelfRotate(-origin_heading); + left_down -= origin_point; + left_down.SelfRotate(-origin_heading); + right_top -= origin_point; + right_top.SelfRotate(-origin_heading); + right_down -= origin_point; + right_down.SelfRotate(-origin_heading); + + const double center_line_s = (left_top_s + right_top_s) / 2.0; + std::vector left_lane_boundary; + std::vector right_lane_boundary; + // The pivot points on the central lane, mapping with the key points on + // the left lane boundary. + std::vector center_lane_boundary_left; + // The pivot points on the central lane, mapping with the key points on + // the right lane boundary. + std::vector center_lane_boundary_right; + // The s-value for the anchor points on the center_lane_boundary_left. + std::vector center_lane_s_left; + // The s-value for the anchor points on the center_lane_boundary_right. + std::vector center_lane_s_right; + // The left-half road width between the pivot points on the + // center_lane_boundary_left and key points on the + // left_lane_boundary. + std::vector left_lane_road_width; + // The right-half road width between the pivot points on the + // center_lane_boundary_right and key points on the + // right_lane_boundary. + std::vector right_lane_road_width; + + GetRoadBoundary(nearby_path, center_line_s, origin_point, origin_heading, + &left_lane_boundary, &right_lane_boundary, + ¢er_lane_boundary_left, ¢er_lane_boundary_right, + ¢er_lane_s_left, ¢er_lane_s_right, + &left_lane_road_width, &right_lane_road_width); + + // If smaller than zero, the parking spot is on the right of the lane + // Left, right, down or opposite of the boundary is decided when viewing the + // parking spot upward + const double average_l = (left_top_l + right_top_l) / 2.0; + const double average_s = (left_top_s + right_top_s) / 2.0; + + std::vector boundary_points; + + // TODO(jiaxuan): Write a half-boundary formation function and call it twice + // to avoid duplicated manipulations on the left and right sides + if (average_l < 0) { + // if average_l is lower than zero, the parking spot is on the right + // lane boundary and assume that the lane half width is average_l + ADEBUG << "average_l is less than 0 in OpenSpaceROI"; + size_t point_size = right_lane_boundary.size(); + for (size_t i = 0; i < point_size; i++) { + right_lane_boundary[i].SelfRotate(origin_heading); + right_lane_boundary[i] += origin_point; + right_lane_boundary[i] -= center_lane_boundary_right[i]; + right_lane_boundary[i] /= right_lane_road_width[i]; + if (center_lane_s_right[i] < (average_s)) { + right_lane_boundary[i] *= (std::fabs(left_top_l)); + } else { + right_lane_boundary[i] *= (std::fabs(right_top_l)); + } + right_lane_boundary[i] += center_lane_boundary_right[i]; + right_lane_boundary[i] -= origin_point; + right_lane_boundary[i].SelfRotate(-origin_heading); + } + + auto point_left_to_left_top_connor_s = std::lower_bound( + center_lane_s_right.begin(), center_lane_s_right.end(), left_top_s); + size_t point_left_to_left_top_connor_index = std::distance( + center_lane_s_right.begin(), point_left_to_left_top_connor_s); + point_left_to_left_top_connor_index = + point_left_to_left_top_connor_index == 0 + ? point_left_to_left_top_connor_index + : point_left_to_left_top_connor_index - 1; + auto point_left_to_left_top_connor_itr = + right_lane_boundary.begin() + point_left_to_left_top_connor_index; + auto point_right_to_right_top_connor_s = std::upper_bound( + center_lane_s_right.begin(), center_lane_s_right.end(), right_top_s); + size_t point_right_to_right_top_connor_index = std::distance( + center_lane_s_right.begin(), point_right_to_right_top_connor_s); + auto point_right_to_right_top_connor_itr = + right_lane_boundary.begin() + point_right_to_right_top_connor_index; + + std::copy(right_lane_boundary.begin(), point_left_to_left_top_connor_itr, + std::back_inserter(boundary_points)); + + std::vector parking_spot_boundary{left_top, left_down, right_down, + right_top}; + + std::copy(parking_spot_boundary.begin(), parking_spot_boundary.end(), + std::back_inserter(boundary_points)); + + std::copy(point_right_to_right_top_connor_itr, right_lane_boundary.end(), + std::back_inserter(boundary_points)); + + std::reverse_copy(left_lane_boundary.begin(), left_lane_boundary.end(), + std::back_inserter(boundary_points)); + + // reinsert the initial point to the back to from closed loop + boundary_points.push_back(right_lane_boundary.front()); + + // disassemble line into line2d segments + for (size_t i = 0; i < point_left_to_left_top_connor_index; i++) { + std::vector segment{right_lane_boundary[i], + right_lane_boundary[i + 1]}; + roi_parking_boundary->push_back(segment); + } + + std::vector left_stitching_segment{ + right_lane_boundary[point_left_to_left_top_connor_index], left_top}; + roi_parking_boundary->push_back(left_stitching_segment); + + std::vector left_parking_spot_segment{left_top, left_down}; + std::vector down_parking_spot_segment{left_down, right_down}; + std::vector right_parking_spot_segment{right_down, right_top}; + roi_parking_boundary->push_back(left_parking_spot_segment); + roi_parking_boundary->push_back(down_parking_spot_segment); + roi_parking_boundary->push_back(right_parking_spot_segment); + + std::vector right_stitching_segment{ + right_top, right_lane_boundary[point_right_to_right_top_connor_index]}; + roi_parking_boundary->push_back(right_stitching_segment); + + size_t right_lane_boundary_last_index = right_lane_boundary.size() - 1; + for (size_t i = point_right_to_right_top_connor_index; + i < right_lane_boundary_last_index; i++) { + std::vector segment{right_lane_boundary[i], + right_lane_boundary[i + 1]}; + roi_parking_boundary->push_back(segment); + } + + size_t left_lane_boundary_last_index = left_lane_boundary.size() - 1; + for (size_t i = left_lane_boundary_last_index; i > 0; i--) { + std::vector segment{left_lane_boundary[i], + left_lane_boundary[i - 1]}; + roi_parking_boundary->push_back(segment); + } + + } else { + // if average_l is higher than zero, the parking spot is on the left + // lane boundary and assume that the lane half width is average_l + ADEBUG << "average_l is greater than 0 in OpenSpaceROI"; + size_t point_size = left_lane_boundary.size(); + for (size_t i = 0; i < point_size; i++) { + left_lane_boundary[i].SelfRotate(origin_heading); + left_lane_boundary[i] += origin_point; + left_lane_boundary[i] -= center_lane_boundary_left[i]; + left_lane_boundary[i] /= left_lane_road_width[i]; + if (center_lane_s_right[i] < (average_s)) { + left_lane_boundary[i] *= (std::fabs(right_top_l)); + } else { + left_lane_boundary[i] *= (std::fabs(left_top_l)); + } + left_lane_boundary[i] += center_lane_boundary_left[i]; + left_lane_boundary[i] -= origin_point; + left_lane_boundary[i].SelfRotate(-origin_heading); + ADEBUG << "left_lane_boundary[" << i << "]: " << left_lane_boundary[i].x() + << ", " << left_lane_boundary[i].y(); + } + + auto point_right_to_right_top_connor_s = std::lower_bound( + center_lane_s_left.begin(), center_lane_s_left.end(), right_top_s); + size_t point_right_to_right_top_connor_index = std::distance( + center_lane_s_left.begin(), point_right_to_right_top_connor_s); + if (point_right_to_right_top_connor_index > 0) { + --point_right_to_right_top_connor_index; + } + auto point_right_to_right_top_connor_itr = + left_lane_boundary.begin() + point_right_to_right_top_connor_index; + + auto point_left_to_left_top_connor_s = std::upper_bound( + center_lane_s_left.begin(), center_lane_s_left.end(), left_top_s); + size_t point_left_to_left_top_connor_index = std::distance( + center_lane_s_left.begin(), point_left_to_left_top_connor_s); + auto point_left_to_left_top_connor_itr = + left_lane_boundary.begin() + point_left_to_left_top_connor_index; + + std::copy(right_lane_boundary.begin(), right_lane_boundary.end(), + std::back_inserter(boundary_points)); + + std::reverse_copy(point_left_to_left_top_connor_itr, + left_lane_boundary.end(), + std::back_inserter(boundary_points)); + + std::vector parking_spot_boundary{left_top, left_down, right_down, + right_top}; + std::copy(parking_spot_boundary.begin(), parking_spot_boundary.end(), + std::back_inserter(boundary_points)); + + std::reverse_copy(left_lane_boundary.begin(), + point_right_to_right_top_connor_itr, + std::back_inserter(boundary_points)); + + // reinsert the initial point to the back to from closed loop + boundary_points.push_back(right_lane_boundary.front()); + + // disassemble line into line2d segments + size_t right_lane_boundary_last_index = right_lane_boundary.size() - 1; + for (size_t i = 0; i < right_lane_boundary_last_index; i++) { + std::vector segment{right_lane_boundary[i], + right_lane_boundary[i + 1]}; + roi_parking_boundary->push_back(segment); + } + + size_t left_lane_boundary_last_index = left_lane_boundary.size() - 1; + for (size_t i = left_lane_boundary_last_index; + i > point_left_to_left_top_connor_index; i--) { + std::vector segment{left_lane_boundary[i], + left_lane_boundary[i - 1]}; + roi_parking_boundary->push_back(segment); + } + + std::vector left_stitching_segment{ + left_lane_boundary[point_left_to_left_top_connor_index], left_top}; + roi_parking_boundary->push_back(left_stitching_segment); + + std::vector left_parking_spot_segment{left_top, left_down}; + std::vector down_parking_spot_segment{left_down, right_down}; + std::vector right_parking_spot_segment{right_down, right_top}; + roi_parking_boundary->push_back(left_parking_spot_segment); + roi_parking_boundary->push_back(down_parking_spot_segment); + roi_parking_boundary->push_back(right_parking_spot_segment); + + std::vector right_stitching_segment{ + right_top, left_lane_boundary[point_right_to_right_top_connor_index]}; + roi_parking_boundary->push_back(right_stitching_segment); + + for (size_t i = point_right_to_right_top_connor_index; i > 0; --i) { + std::vector segment{left_lane_boundary[i], + left_lane_boundary[i - 1]}; + roi_parking_boundary->push_back(segment); + } + } + PrintCurves print_curves; + // Fuse line segments into convex contraints + if (!FuseLineSegments(roi_parking_boundary)) { + AERROR << "FuseLineSegments failed in parking ROI"; + return false; + } + for (auto it : *roi_parking_boundary) + print_curves.AddPoint("free_space_roi", it); + print_curves.PrintToLog(); + // Get xy boundary + auto xminmax = std::minmax_element( + boundary_points.begin(), boundary_points.end(), + [](const Vec2d &a, const Vec2d &b) { return a.x() < b.x(); }); + auto yminmax = std::minmax_element( + boundary_points.begin(), boundary_points.end(), + [](const Vec2d &a, const Vec2d &b) { return a.y() < b.y(); }); + std::vector ROI_xy_boundary{xminmax.first->x(), xminmax.second->x(), + yminmax.first->y(), yminmax.second->y()}; + auto *xy_boundary = + frame->mutable_open_space_info()->mutable_ROI_xy_boundary(); + xy_boundary->assign(ROI_xy_boundary.begin(), ROI_xy_boundary.end()); + + Vec2d vehicle_xy = Vec2d(vehicle_state_.x(), vehicle_state_.y()); + vehicle_xy -= origin_point; + vehicle_xy.SelfRotate(-origin_heading); + if (vehicle_xy.x() < ROI_xy_boundary[0] || + vehicle_xy.x() > ROI_xy_boundary[1] || + vehicle_xy.y() < ROI_xy_boundary[2] || + vehicle_xy.y() > ROI_xy_boundary[3]) { + AERROR << "vehicle outside of xy boundary of parking ROI"; + return false; + } + AINFO << "success get ROI"; + return true; +} } // namespace planning } // namespace apollo diff --git a/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.h b/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.h index fc15586a443..359b7e2f120 100644 --- a/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.h +++ b/modules/planning/tasks/open_space_roi_decider/open_space_roi_decider.h @@ -140,6 +140,10 @@ class OpenSpaceRoiDecider : public Decider { std::vector> *const roi_parking_boundary); + bool GetParkingBoundary(const hdmap::Path &nearby_path, Frame *const frame, + std::vector> + *const roi_parking_boundary); + bool GetPullOverBoundary(Frame *const frame, const std::array &vertices, const hdmap::Path &nearby_path, @@ -228,6 +232,7 @@ class OpenSpaceRoiDecider : public Decider { common::VehicleState vehicle_state_; OpenSpaceRoiDeciderConfig config_; + bool isofflane_ = false; }; CYBER_PLUGIN_MANAGER_REGISTER_PLUGIN(apollo::planning::OpenSpaceRoiDecider, diff --git a/modules/planning/tasks/open_space_trajectory_partition/BUILD b/modules/planning/tasks/open_space_trajectory_partition/BUILD index 7ebb5a802b5..be128ca72e9 100644 --- a/modules/planning/tasks/open_space_trajectory_partition/BUILD +++ b/modules/planning/tasks/open_space_trajectory_partition/BUILD @@ -1,9 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") + # load("//tools/install:install.bzl", "install", "install_files") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") + +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -11,7 +10,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -55,46 +54,29 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_open_space_trajectory_partition_description", - description = ":plugins.xml", - plugin = ":libopen_space_trajectory_partition.so", +apollo_cc_test( + name = "open_space_trajectory_partition_test", + size = "small", + srcs = ["open_space_trajectory_partition_test.cc"], + deps = [ + ":open_space_trajectory_partition_lib", + "@com_google_googletest//:gtest_main", + ], ) -cc_binary( +apollo_plugin( name = "libopen_space_trajectory_partition.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":open_space_trajectory_partition_lib"], -) - -cc_library( - name = "open_space_trajectory_partition_lib", srcs = ["open_space_trajectory_partition.cc"], hdrs = ["open_space_trajectory_partition.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - ], + description = ":plugins.xml", deps = [ "//modules/common/status", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/task_base/common:trajectory_optimizer", - "//modules/planning/tasks/open_space_trajectory_partition/proto:open_space_trajectory_partition_cc_proto" - ], - alwayslink = True, -) - -cc_test( - name = "open_space_trajectory_partition_test", - size = "small", - srcs = ["open_space_trajectory_partition_test.cc"], - deps = [ - ":open_space_trajectory_partition_lib", - "@com_google_googletest//:gtest_main", + "//modules/planning/planning_base:apollo_planning_planning_base", + "//modules/planning/tasks/open_space_trajectory_partition/proto:open_space_trajectory_partition_cc_proto", ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/tasks/open_space_trajectory_provider/BUILD b/modules/planning/tasks/open_space_trajectory_provider/BUILD index 01e38adc277..e9c9a0ac613 100644 --- a/modules/planning/tasks/open_space_trajectory_provider/BUILD +++ b/modules/planning/tasks/open_space_trajectory_provider/BUILD @@ -1,18 +1,17 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + FOPENMP_COPTS = ["-fopenmp"] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -56,61 +55,25 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_open_space_trajectory_provider_description", - description = ":plugins.xml", - plugin = ":libopen_space_trajectory_provider.so", -) - -cc_binary( +apollo_plugin( name = "libopen_space_trajectory_provider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":open_space_trajectory_provider_lib"], -) - -cc_library( - name = "open_space_trajectory_provider_lib", - srcs = ["open_space_trajectory_provider.cc"], - hdrs = ["open_space_trajectory_provider.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - "-fopenmp", + srcs = [ + "open_space_trajectory_optimizer.cc", + "open_space_trajectory_provider.cc", ], - deps = [ - ":open_space_trajectory_optimizer", - "//modules/common/status", - "//modules/planning/planning_base/common:planning_common", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:trajectory_stitcher", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/task_base/common:trajectory_optimizer", - "//modules/planning/tasks/open_space_trajectory_provider/proto:open_space_trajectory_provider_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "open_space_trajectory_optimizer", - srcs = ["open_space_trajectory_optimizer.cc"], - hdrs = ["open_space_trajectory_optimizer.h"], - copts = [ - "-DMODULE_NAME=\\\"planning\\\"", - "-fopenmp", + hdrs = [ + "open_space_trajectory_optimizer.h", + "open_space_trajectory_provider.h", ], + copts = ["-fopenmp"], + description = ":plugins.xml", deps = [ "//cyber", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common/status", - "//modules/common/util", + "//modules/common/util:common_util", "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/open_space/coarse_trajectory_generator:hybrid_a_star", - "//modules/planning/planning_base/open_space/trajectory_smoother:distance_approach_problem", - "//modules/planning/planning_base/open_space/trajectory_smoother:dual_variable_warm_start_problem", - "//modules/planning/planning_base/open_space/trajectory_smoother:iterative_anchoring_smoother", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/open_space_trajectory_provider/proto:open_space_trajectory_provider_cc_proto", "@com_github_gflags_gflags//:gflags", "@eigen", @@ -118,4 +81,5 @@ cc_library( ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/path_decider/BUILD b/modules/planning/tasks/path_decider/BUILD index 1c1ff1ffbe5..6d387bab0b1 100644 --- a/modules/planning/tasks/path_decider/BUILD +++ b/modules/planning/tasks/path_decider/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,7 +7,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,36 +51,20 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_path_decider_description", - description = ":plugins.xml", - plugin = ":libpath_decider.so", -) - -cc_binary( +apollo_plugin( name = "libpath_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":path_decider_lib"], -) - -cc_library( - name = "path_decider_lib", srcs = ["path_decider.cc"], hdrs = ["path_decider.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ - "//modules/common_msgs/planning_msgs:decision_cc_proto", "//modules/common/configs:vehicle_config_helper", - "//modules/common/util", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", + "//modules/common/util:common_util", + "//modules/common_msgs/planning_msgs:decision_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/path_decider/proto:path_decider_cc_proto", - "//modules/planning/planning_base/task_base:task", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/path_decider/conf/default_conf.pb.txt b/modules/planning/tasks/path_decider/conf/default_conf.pb.txt index c1b2ccc61c1..1f6d4d7b3b2 100644 --- a/modules/planning/tasks/path_decider/conf/default_conf.pb.txt +++ b/modules/planning/tasks/path_decider/conf/default_conf.pb.txt @@ -1 +1 @@ -static_obstacle_buffer: 0.1 \ No newline at end of file +static_obstacle_buffer: 0.3 \ No newline at end of file diff --git a/modules/planning/tasks/path_reference_decider/BUILD b/modules/planning/tasks/path_reference_decider/BUILD index f7c2d04cd04..8a32b7acaea 100644 --- a/modules/planning/tasks/path_reference_decider/BUILD +++ b/modules/planning/tasks/path_reference_decider/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,7 +7,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,50 +51,32 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_path_reference_decider_description", - description = ":plugins.xml", - plugin = ":libpath_reference_decider.so", +apollo_cc_test( + name = "path_reference_decider_test", + size = "small", + srcs = ["path_reference_decider_test.cc"], + deps = [ + "path_reference_decider_lib", + "@com_google_googletest//:gtest_main", + ], ) -cc_binary( +apollo_plugin( name = "libpath_reference_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":path_reference_decider_lib"], -) - -cc_library( - name = "path_reference_decider_lib", srcs = ["path_reference_decider.cc"], hdrs = ["path_reference_decider.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//modules/common/configs:vehicle_config_helper", "//modules/common/math", "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/task_base:task", "//modules/planning/tasks/path_reference_decider/proto:path_reference_decider_cc_proto", ], - alwayslink = True, -) - -cc_test( - name = "path_reference_decider_test", - size = "small", - srcs = ["path_reference_decider_test.cc"], - deps = [ - "path_reference_decider_lib", - "@com_google_googletest//:gtest_main", - ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/tasks/path_time_heuristic/BUILD b/modules/planning/tasks/path_time_heuristic/BUILD index 51829e72b04..746376aeb1a 100644 --- a/modules/planning/tasks/path_time_heuristic/BUILD +++ b/modules/planning/tasks/path_time_heuristic/BUILD @@ -1,16 +1,15 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,101 +53,49 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_path_time_heuristic_optimizer_description", - description = ":plugins.xml", - plugin = ":libpath_time_heuristic_optimizer.so", -) - -cc_library( - name = "st_graph_point", - srcs = ["st_graph_point.cc"], - hdrs = ["st_graph_point.h"], - copts = PLANNING_COPTS, +apollo_cc_test( + name = "gridded_path_time_graph_test", + size = "small", + srcs = ["gridded_path_time_graph_test.cc"], + deps = [ - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/speed:st_point", + ":path_time_heuristic_optimizer_lib", + "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "dp_st_cost", - srcs = ["dp_st_cost.cc"], - hdrs = ["dp_st_cost.h"], - copts = PLANNING_COPTS, - deps = [ - ":st_graph_point", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common/speed:st_boundary", - "//modules/planning/planning_base/task_base/utils:st_gap_estimator", - "//modules/planning/tasks/path_time_heuristic/proto:path_time_heuristic_cc_proto", +apollo_plugin( + name = "libpath_time_heuristic_optimizer.so", + srcs = [ + "dp_st_cost.cc", + "gridded_path_time_graph.cc", + "path_time_heuristic_optimizer.cc", + "st_graph_point.cc", ], -) - -cc_library( - name = "gridded_path_time_graph", - srcs = ["gridded_path_time_graph.cc"], - hdrs = ["gridded_path_time_graph.h"], - copts = PLANNING_COPTS, + hdrs = [ + "dp_st_cost.h", + "gridded_path_time_graph.h", + "path_time_heuristic_optimizer.h", + "st_graph_point.h", + ], + description = ":plugins.xml", deps = [ - ":dp_st_cost", - ":st_graph_point", "//cyber", "//modules/common/configs:vehicle_config_helper", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/common/status", + "//modules/common/vehicle_state:vehicle_state_provider", "//modules/common_msgs/basic_msgs:geometry_cc_proto", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:st_graph_data", - "//modules/planning/planning_base/common/speed:speed_data", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - ], -) - -cc_binary( - name = "libpath_time_heuristic_optimizer.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":path_time_heuristic_optimizer_lib"], -) - -cc_library( - name = "path_time_heuristic_optimizer_lib", - srcs = ["path_time_heuristic_optimizer.cc"], - hdrs = ["path_time_heuristic_optimizer.h"], - copts = PLANNING_COPTS, - deps = [ - ":dp_st_cost", - ":gridded_path_time_graph", - "//modules/common/configs:vehicle_config_helper", - "//modules/common/vehicle_state:vehicle_state_provider", - "//modules/planning/planning_base/common:st_graph_data", "//modules/common_msgs/planning_msgs:planning_internal_cc_proto", - "//modules/planning/tasks/speed_bounds_decider:st_boundary_mapper", - "//modules/planning/planning_base/task_base/common:speed_optimizer", + "//modules/planning/planning_base:apollo_planning_planning_base", + "//modules/planning/planning_base/proto:planning_config_cc_proto", "//modules/planning/tasks/path_time_heuristic/proto:path_time_heuristic_cc_proto", - ], - alwayslink = True, -) - -cc_test( - name = "gridded_path_time_graph_test", - size = "small", - srcs = ["gridded_path_time_graph_test.cc"], - data = [ - "//modules/planning/planning_base:planning_conf", - ], - deps = [ - ":gridded_path_time_graph", - "@com_google_googletest//:gtest_main", + "//modules/planning/tasks/speed_bounds_decider:st_boundary_mapper", ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/tasks/path_time_heuristic/cyberfile.xml b/modules/planning/tasks/path_time_heuristic/cyberfile.xml index 886fca87f04..35f4973b2ba 100644 --- a/modules/planning/tasks/path_time_heuristic/cyberfile.xml +++ b/modules/planning/tasks/path_time_heuristic/cyberfile.xml @@ -11,6 +11,7 @@ Apollo bazel-extend-tools planning + planning-task-speed-bounds-decider bazel \ No newline at end of file diff --git a/modules/planning/tasks/piecewise_jerk_speed/BUILD b/modules/planning/tasks/piecewise_jerk_speed/BUILD index 0573d74144e..1770fdafbb0 100644 --- a/modules/planning/tasks/piecewise_jerk_speed/BUILD +++ b/modules/planning/tasks/piecewise_jerk_speed/BUILD @@ -1,17 +1,15 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -55,36 +53,19 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_piecewise_jerk_speed_optimizer_description", - description = ":plugins.xml", - plugin = ":libpiecewise_jerk_speed_optimizer.so", -) - -cc_binary( +apollo_plugin( name = "libpiecewise_jerk_speed_optimizer.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":piecewise_jerk_speed_optimizer_lib"], -) - -cc_library( - name = "piecewise_jerk_speed_optimizer_lib", srcs = ["piecewise_jerk_speed_optimizer.cc"], hdrs = ["piecewise_jerk_speed_optimizer.h"], - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common_msgs/basic_msgs:error_code_cc_proto", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/planning/planning_base/common:speed_profile_generator", - "//modules/planning/planning_base/common:st_graph_data", - "//modules/planning/planning_base/math/piecewise_jerk:piecewise_jerk_speed_problem", - "//modules/planning/planning_base/task_base/common:speed_optimizer", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/piecewise_jerk_speed/proto:piecewise_jerk_speed_cc_proto", ], - alwayslink = True, ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/tasks/piecewise_jerk_speed/conf/default_conf.pb.txt b/modules/planning/tasks/piecewise_jerk_speed/conf/default_conf.pb.txt index e4bc783945e..75fea12d4b1 100644 --- a/modules/planning/tasks/piecewise_jerk_speed/conf/default_conf.pb.txt +++ b/modules/planning/tasks/piecewise_jerk_speed/conf/default_conf.pb.txt @@ -1,6 +1,5 @@ acc_weight: 1.0 jerk_weight: 3.0 -kappa_penalty_weight: 200.0 +kappa_penalty_weight: 2000.0 ref_s_weight: 1.0 -ref_v_weight: 10.0 -follow_distance_buffer:0.1 \ No newline at end of file +ref_v_weight: 100.0 \ No newline at end of file diff --git a/modules/planning/tasks/piecewise_jerk_speed/piecewise_jerk_speed_optimizer.cc b/modules/planning/tasks/piecewise_jerk_speed/piecewise_jerk_speed_optimizer.cc index 7aec062efc9..d0330a43fc2 100644 --- a/modules/planning/tasks/piecewise_jerk_speed/piecewise_jerk_speed_optimizer.cc +++ b/modules/planning/tasks/piecewise_jerk_speed/piecewise_jerk_speed_optimizer.cc @@ -85,7 +85,7 @@ Status PiecewiseJerkSpeedOptimizer::Process(const PathData& path_data, piecewise_jerk_problem.set_weight_ddx(config_.acc_weight()); piecewise_jerk_problem.set_weight_dddx(config_.jerk_weight()); - + piecewise_jerk_problem.set_scale_factor({1.0, 10.0, 100.0}); piecewise_jerk_problem.set_x_bounds(0.0, total_length); piecewise_jerk_problem.set_ddx_bounds(veh_param.max_deceleration(), veh_param.max_acceleration()); @@ -137,7 +137,7 @@ Status PiecewiseJerkSpeedOptimizer::Process(const PathData& path_data, piecewise_jerk_problem.set_x_bounds(std::move(s_bounds)); // Update SpeedBoundary and ref_s - std::vector x_ref; + std::vector x_ref(num_of_knots, total_length); std::vector dx_ref(num_of_knots, reference_line_info_->GetCruiseSpeed()); std::vector dx_ref_weight(num_of_knots, config_.ref_v_weight()); @@ -150,7 +150,7 @@ Status PiecewiseJerkSpeedOptimizer::Process(const PathData& path_data, SpeedPoint sp; reference_speed_data.EvaluateByTime(curr_t, &sp); const double path_s = sp.s(); - x_ref.emplace_back(path_s); + // x_ref.emplace_back(path_s); // get curvature PathPoint path_point = path_data.GetPathPointWithPathS(path_s); penalty_dx.push_back(std::fabs(path_point.kappa()) * @@ -158,20 +158,14 @@ Status PiecewiseJerkSpeedOptimizer::Process(const PathData& path_data, // get v_upper_bound const double v_lower_bound = 0.0; double v_upper_bound = FLAGS_planning_upper_speed_limit; - v_upper_bound = speed_limit.GetSpeedLimitByS(path_s); - static constexpr double kRefSpeedBuffer = 0.1; - static constexpr double kRefSpeedPenaltyRatio = 10000; - if (dx_ref[i] > v_upper_bound) { - double v_ref = v_upper_bound - kRefSpeedBuffer; - v_ref = std::fmax(v_lower_bound, v_ref); - dx_ref[i] = v_ref; - dx_ref_weight[i] = config_.ref_v_weight() * kRefSpeedPenaltyRatio; - } - + v_upper_bound = + std::fmin(speed_limit.GetSpeedLimitByS(path_s), v_upper_bound); + dx_ref[i] = std::fmin(v_upper_bound, dx_ref[i]); s_dot_bounds.emplace_back(v_lower_bound, std::fmax(v_upper_bound, 0.0)); - print_debug.AddPoint("st_reference_line", curr_t, path_s); + print_debug.AddPoint("st_reference_line", curr_t, x_ref[i]); + print_debug.AddPoint("st_penalty_dx", curr_t, penalty_dx.back()); print_debug.AddPoint("vt_reference_line", curr_t, dx_ref[i]); - // print_debug.AddPoint("st_weighting", curr_t, dx_ref_weight[i]); + print_debug.AddPoint("vt_weighting", curr_t, dx_ref_weight[i]); print_debug.AddPoint("vt_boundary_lower", curr_t, v_lower_bound); print_debug.AddPoint("sv_boundary_lower", path_s, v_lower_bound); print_debug.AddPoint("sk_curve", path_s, path_point.kappa()); diff --git a/modules/planning/tasks/piecewise_jerk_speed_nonlinear/BUILD b/modules/planning/tasks/piecewise_jerk_speed_nonlinear/BUILD index 1662578d3df..a42b892bd77 100644 --- a/modules/planning/tasks/piecewise_jerk_speed_nonlinear/BUILD +++ b/modules/planning/tasks/piecewise_jerk_speed_nonlinear/BUILD @@ -1,17 +1,15 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -55,55 +53,28 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_piecewise_jerk_speed_nonlinear_optimizer_description", - description = ":plugins.xml", - plugin = ":libpiecewise_jerk_speed_nonlinear_optimizer.so", -) - -cc_binary( +apollo_plugin( name = "libpiecewise_jerk_speed_nonlinear_optimizer.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":piecewise_jerk_speed_nonlinear_optimizer_lib"], -) - -cc_library( - name = "piecewise_jerk_speed_nonlinear_optimizer_lib", - srcs = ["piecewise_jerk_speed_nonlinear_optimizer.cc"], - hdrs = ["piecewise_jerk_speed_nonlinear_optimizer.h"], - copts = PLANNING_COPTS, + srcs = [ + "piecewise_jerk_speed_nonlinear_ipopt_interface.cc", + "piecewise_jerk_speed_nonlinear_optimizer.cc", + ], + hdrs = [ + "piecewise_jerk_speed_nonlinear_ipopt_interface.h", + "piecewise_jerk_speed_nonlinear_optimizer.h", + ], + description = ":plugins.xml", deps = [ - ":piecewise_jerk_speed_nonlinear_ipopt_interface", + "//modules/common/util:common_util", "//modules/common_msgs/basic_msgs:error_code_cc_proto", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/util", - "//modules/planning/planning_base/common:speed_profile_generator", - "//modules/planning/planning_base/common:st_graph_data", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/trajectory1d:piecewise_jerk_trajectory1d", - "//modules/planning/planning_base/math/piecewise_jerk:piecewise_jerk_path_problem", - "//modules/planning/planning_base/math/piecewise_jerk:piecewise_jerk_speed_problem", "//modules/planning/planning_base/proto:ipopt_return_status_cc_proto", - "//modules/planning/planning_base/task_base/common:speed_optimizer", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/piecewise_jerk_speed_nonlinear/proto:piecewise_jerk_speed_nonlinear_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "piecewise_jerk_speed_nonlinear_ipopt_interface", - srcs = ["piecewise_jerk_speed_nonlinear_ipopt_interface.cc"], - hdrs = ["piecewise_jerk_speed_nonlinear_ipopt_interface.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/trajectory1d:piecewise_jerk_trajectory1d", "@ipopt", ], ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/pull_over_path/BUILD b/modules/planning/tasks/pull_over_path/BUILD index 10344bf1612..912ad35a5af 100644 --- a/modules/planning/tasks/pull_over_path/BUILD +++ b/modules/planning/tasks/pull_over_path/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:apollo.bzl", "cyber_plugin_description") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,7 +7,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,36 +51,17 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_pull_over_path_description", - description = ":plugins.xml", - plugin = ":libpull_over_path.so", -) - -cc_binary( +apollo_plugin( name = "libpull_over_path.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":pull_over_path_lib"], -) - -cc_library( - name = "pull_over_path_lib", srcs = ["pull_over_path.cc"], hdrs = ["pull_over_path.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base/common:path_generation", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/pull_over_path/proto:pull_over_path_cc_proto", - "//modules/planning/planning_base/task_base/common/path_util:path_util" ], - alwayslink = True, ) apollo_package() diff --git a/modules/planning/tasks/reuse_path/BUILD b/modules/planning/tasks/reuse_path/BUILD index 3c3af2f64e3..ae3da20fda1 100644 --- a/modules/planning/tasks/reuse_path/BUILD +++ b/modules/planning/tasks/reuse_path/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,7 +7,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,37 +51,19 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_reuse_path_description", - description = ":plugins.xml", - plugin = ":libreuse_path.so", -) - -cc_binary( +apollo_plugin( name = "libreuse_path.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":reuse_path_lib"], -) - -cc_library( - name = "reuse_path_lib", srcs = ["reuse_path.cc"], hdrs = ["reuse_path.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base/common:path_generation", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/reuse_path/proto:reuse_path_cc_proto", - "//modules/planning/planning_base/task_base/common/path_util:path_util" ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/rss_decider/BUILD b/modules/planning/tasks/rss_decider/BUILD index 3ea6d207417..4826df10127 100644 --- a/modules/planning/tasks/rss_decider/BUILD +++ b/modules/planning/tasks/rss_decider/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,7 +7,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,49 +51,32 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_rss_decider_description", - description = ":plugins.xml", - plugin = ":librss_decider.so", +apollo_cc_test( + name = "rss_decider_test", + size = "small", + srcs = ["rss_decider_test.cc"], + tags = ["exclude"], + deps = [ + ":rss_decider_lib", + "@ad_rss_lib//:ad_rss", + "@com_google_googletest//:gtest_main", + ], ) -cc_binary( +apollo_plugin( name = "librss_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":rss_decider_lib"], -) - -cc_library( - name = "rss_decider_lib", srcs = ["rss_decider.cc"], hdrs = ["rss_decider.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//modules/common/status", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base:task", - "@ad_rss_lib//:ad_rss", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/rss_decider/proto:rss_decider_cc_proto", - ], - alwayslink = True, -) - -cc_test( - name = "rss_decider_test", - size = "small", - srcs = ["rss_decider_test.cc"], - tags = ["exclude"], - deps = [ - ":rss_decider_lib", "@ad_rss_lib//:ad_rss", - "@com_google_googletest//:gtest_main", ], ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/rule_based_stop_decider/BUILD b/modules/planning/tasks/rule_based_stop_decider/BUILD index 867079654f9..da693c97d06 100644 --- a/modules/planning/tasks/rule_based_stop_decider/BUILD +++ b/modules/planning/tasks/rule_based_stop_decider/BUILD @@ -1,9 +1,8 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") + # load("//tools/install:install.bzl", "install", "install_files") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") + +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -11,7 +10,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -55,37 +54,18 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_rule_based_stop_decider_description", - description = ":plugins.xml", - plugin = ":librule_based_stop_decider.so", -) - -cc_binary( +apollo_plugin( name = "librule_based_stop_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":rule_based_stop_decider_lib"], -) - -cc_library( - name = "rule_based_stop_decider_lib", srcs = ["rule_based_stop_decider.cc"], hdrs = ["rule_based_stop_decider.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/task_base/common/lane_change_util:lane_change_util", - "//modules/planning/planning_base/task_base/common:decider_base", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/rule_based_stop_decider/proto:rule_based_stop_decider_cc_proto", ], - alwayslink = True, ) apollo_package() + cpplint() diff --git a/modules/planning/tasks/speed_bounds_decider/BUILD b/modules/planning/tasks/speed_bounds_decider/BUILD index 7d251249be1..24536edd51d 100644 --- a/modules/planning/tasks/speed_bounds_decider/BUILD +++ b/modules/planning/tasks/speed_bounds_decider/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_library", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,7 +7,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,40 +51,7 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_speed_bounds_decider_description", - description = ":plugins.xml", - plugin = ":libspeed_bounds_decider.so", -) - -cc_binary( - name = "libspeed_bounds_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":speed_bounds_decider_lib"], -) - -cc_library( - name = "speed_bounds_decider_lib", - srcs = ["speed_bounds_decider.cc"], - hdrs = ["speed_bounds_decider.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [ - ":st_boundary_mapper", - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:st_graph_data", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/task_base/common:decider_base", - "//modules/planning/tasks/speed_bounds_decider/proto:speed_bounds_decider_cc_proto", - ], - alwayslink = True, -) - -cc_library( +apollo_cc_library( name = "st_boundary_mapper", srcs = [ "speed_limit_decider.cc", @@ -100,42 +64,42 @@ cc_library( copts = ["-DMODULE_NAME=\\\"planning\\\""], deps = [ "//modules/common/configs:vehicle_config_helper", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", "//modules/common/status", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:speed_limit", - "//modules/planning/planning_base/common/path:discretized_path", - "//modules/planning/planning_base/common/path:frenet_frame_path", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/speed:st_boundary", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", + "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/reference_line", "//modules/planning/tasks/speed_bounds_decider/proto:speed_bounds_decider_cc_proto", ], ) -cc_test( +apollo_cc_test( name = "st_boundary_mapper_test", size = "small", srcs = ["st_boundary_mapper_test.cc"], - data = [ - "//modules/planning/planning_base:planning_testdata", - ], deps = [ ":st_boundary_mapper", "//cyber", - "//modules/common/util", + "//modules/common/util:common_util", "@com_google_googletest//:gtest_main", ], ) +apollo_plugin( + name = "libspeed_bounds_decider.so", + srcs = ["speed_bounds_decider.cc"], + hdrs = ["speed_bounds_decider.h"], + description = ":plugins.xml", + deps = [ + ":st_boundary_mapper", + "//modules/common/status", + "//modules/planning/planning_base:apollo_planning_planning_base", + "//modules/planning/tasks/speed_bounds_decider/proto:speed_bounds_decider_cc_proto", + ], +) + apollo_package() + cpplint() diff --git a/modules/planning/tasks/speed_bounds_decider/conf/default_conf.pb.txt b/modules/planning/tasks/speed_bounds_decider/conf/default_conf.pb.txt index 6244f39b73a..996f98be25c 100644 --- a/modules/planning/tasks/speed_bounds_decider/conf/default_conf.pb.txt +++ b/modules/planning/tasks/speed_bounds_decider/conf/default_conf.pb.txt @@ -1,6 +1,6 @@ total_time: 7.0 boundary_buffer: 0.25 -max_centric_acceleration_limit: 1.0 +max_centric_acceleration_limit: 0.8 point_extension: 0.0 lowest_speed: 0.1 static_obs_nudge_speed_ratio: 0.6 diff --git a/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.cc b/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.cc index c3335dc11b1..163aee7bf87 100644 --- a/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.cc +++ b/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.cc @@ -212,6 +212,8 @@ bool STBoundaryMapper::GetOverlapBoundaryPoints( // Draw the given obstacle on the ST-graph. const auto& trajectory = obstacle.Trajectory(); + const double obstacle_length = obstacle.Perception().length(); + const double obstacle_width = obstacle.Perception().width(); if (trajectory.trajectory_point().empty()) { bool box_check_collision = false; @@ -278,84 +280,143 @@ bool STBoundaryMapper::GetOverlapBoundaryPoints( } else { discretized_path = DiscretizedPath(path_points); } + // 2. Go through every point of the predicted obstacle trajectory. - for (int i = 0; i < trajectory.trajectory_point_size(); ++i) { + double trajectory_time_interval = + obstacle.Trajectory().trajectory_point()[1].relative_time(); + int trajectory_step = std::min( + FLAGS_trajectory_check_collision_time_step, + vehicle_param_.width() / obstacle.speed()) + / trajectory_time_interval; + bool trajectory_point_collision_status = false; + int previous_index = 0; + + for (int i = 0; i < trajectory.trajectory_point_size(); + i = std::min(i + trajectory_step, + trajectory.trajectory_point_size() - 1)) { const auto& trajectory_point = trajectory.trajectory_point(i); - const Box2d obs_box = obstacle.GetBoundingBox(trajectory_point); + Polygon2d obstacle_shape = + obstacle.GetObstacleTrajectoryPolygon(trajectory_point); double trajectory_point_time = trajectory_point.relative_time(); static constexpr double kNegtiveTimeThreshold = -1.0; if (trajectory_point_time < kNegtiveTimeThreshold) { continue; } - - const double step_length = vehicle_param_.front_edge_to_center(); - auto path_len = std::min(speed_bounds_config_.max_trajectory_len(), - discretized_path.Length()); - // Go through every point of the ADC's path. - for (double path_s = 0.0; path_s < path_len; path_s += step_length) { - const auto curr_adc_path_point = - discretized_path.Evaluate(path_s + discretized_path.front().s()); - if (CheckOverlap(curr_adc_path_point, obs_box, l_buffer)) { - // Found overlap, start searching with higher resolution - const double backward_distance = -step_length; - const double forward_distance = vehicle_param_.length() + - vehicle_param_.width() + - obs_box.length() + obs_box.width(); - const double default_min_step = 0.1; // in meters - const double fine_tuning_step_length = std::fmin( - default_min_step, discretized_path.Length() / default_num_point); - - bool find_low = false; - bool find_high = false; - double low_s = std::fmax(0.0, path_s + backward_distance); - double high_s = - std::fmin(discretized_path.Length(), path_s + forward_distance); - - // Keep shrinking by the resolution bidirectionally until finally - // locating the tight upper and lower bounds. - while (low_s < high_s) { - if (find_low && find_high) { - break; - } - if (!find_low) { - const auto& point_low = discretized_path.Evaluate( - low_s + discretized_path.front().s()); - if (!CheckOverlap(point_low, obs_box, l_buffer)) { - low_s += fine_tuning_step_length; - } else { - find_low = true; - } - } - if (!find_high) { - const auto& point_high = discretized_path.Evaluate( - high_s + discretized_path.front().s()); - if (!CheckOverlap(point_high, obs_box, l_buffer)) { - high_s -= fine_tuning_step_length; - } else { - find_high = true; - } - } - } - if (find_high && find_low) { - lower_points->emplace_back( - low_s - speed_bounds_config_.point_extension(), - trajectory_point_time); - upper_points->emplace_back( - high_s + speed_bounds_config_.point_extension(), - trajectory_point_time); - } - break; + bool collision = CheckOverlapWithTrajectoryPoint( + discretized_path, obstacle_shape, + upper_points, lower_points, + l_buffer, default_num_point, + obstacle_length, obstacle_width, + trajectory_point_time); + if ((trajectory_point_collision_status ^ collision) && i != 0) { + // Start retracing track points forward + int index = i - 1; + while ((trajectory_point_collision_status ^ collision) + && index > previous_index) { + const auto& point = trajectory.trajectory_point(index); + trajectory_point_time = point.relative_time(); + obstacle_shape = obstacle.GetObstacleTrajectoryPolygon(point); + collision = CheckOverlapWithTrajectoryPoint( + discretized_path, obstacle_shape, + upper_points, lower_points, + l_buffer, default_num_point, + obstacle_length, obstacle_width, + trajectory_point_time); + index--; } + trajectory_point_collision_status = !trajectory_point_collision_status; } + if (i == trajectory.trajectory_point_size() - 1) break; + previous_index = i; } } // Sanity checks and return. + std::sort(lower_points->begin(), lower_points->end(), + [](const STPoint& a, const STPoint& b) { + return a.t() < b.t(); + }); + std::sort(upper_points->begin(), upper_points->end(), + [](const STPoint& a, const STPoint& b) { + return a.t() < b.t(); + }); DCHECK_EQ(lower_points->size(), upper_points->size()); return (lower_points->size() > 1 && upper_points->size() > 1); } +bool STBoundaryMapper::CheckOverlapWithTrajectoryPoint( + const DiscretizedPath& discretized_path, + const Polygon2d& obstacle_shape, + std::vector* upper_points, + std::vector* lower_points, + const double l_buffer, + int default_num_point, + const double obstacle_length, + const double obstacle_width, + const double trajectory_point_time) const { + const double step_length = vehicle_param_.front_edge_to_center(); + auto path_len = std::min(speed_bounds_config_.max_trajectory_len(), + discretized_path.Length()); + // Go through every point of the ADC's path. + for (double path_s = 0.0; path_s < path_len; path_s += step_length) { + const auto curr_adc_path_point = + discretized_path.Evaluate(path_s + discretized_path.front().s()); + if (CheckOverlap(curr_adc_path_point, obstacle_shape, l_buffer)) { + // Found overlap, start searching with higher resolution + const double backward_distance = -step_length; + const double forward_distance = vehicle_param_.length() + + vehicle_param_.width() + + obstacle_length + obstacle_width; + const double default_min_step = 0.1; // in meters + const double fine_tuning_step_length = std::fmin( + default_min_step, discretized_path.Length() / default_num_point); + + bool find_low = false; + bool find_high = false; + double low_s = std::fmax(0.0, path_s + backward_distance); + double high_s = + std::fmin(discretized_path.Length(), path_s + forward_distance); + + // Keep shrinking by the resolution bidirectionally until finally + // locating the tight upper and lower bounds. + while (low_s < high_s) { + if (find_low && find_high) { + break; + } + if (!find_low) { + const auto& point_low = discretized_path.Evaluate( + low_s + discretized_path.front().s()); + if (!CheckOverlap(point_low, obstacle_shape, l_buffer)) { + low_s += fine_tuning_step_length; + } else { + find_low = true; + } + } + if (!find_high) { + const auto& point_high = discretized_path.Evaluate( + high_s + discretized_path.front().s()); + if (!CheckOverlap(point_high, obstacle_shape, l_buffer)) { + high_s -= fine_tuning_step_length; + } else { + find_high = true; + } + } + } + if (find_high && find_low) { + lower_points->emplace_back( + low_s - speed_bounds_config_.point_extension(), + trajectory_point_time); + upper_points->emplace_back( + high_s + speed_bounds_config_.point_extension(), + trajectory_point_time); + } + return true; + } + } + return false; +} + void STBoundaryMapper::ComputeSTBoundaryWithDecision( Obstacle* obstacle, const ObjectDecisionType& decision) const { DCHECK(decision.has_follow() || decision.has_yield() || diff --git a/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.h b/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.h index 014bdb22eab..77dfcf799de 100644 --- a/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.h +++ b/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper.h @@ -52,6 +52,7 @@ class STBoundaryMapper { private: FRIEND_TEST(StBoundaryMapperTest, check_overlap_test); + FRIEND_TEST(StBoundaryMapperTest, get_overlap_boundary_points_test); /** @brief Calls GetOverlapBoundaryPoints to get upper and lower points * for a given obstacle, and then formulate STBoundary based on that. @@ -102,6 +103,17 @@ class STBoundaryMapper { void ComputeSTBoundaryWithDecision(Obstacle* obstacle, const ObjectDecisionType& decision) const; + bool CheckOverlapWithTrajectoryPoint( + const DiscretizedPath& discretized_path, + const common::math::Polygon2d& obstacle_shape, + std::vector* upper_points, + std::vector* lower_points, + const double l_buffer, + int default_num_point, + const double obstacle_length, + const double obstacle_width, + const double trajectory_point_time) const; + private: const SpeedBoundsDeciderConfig& speed_bounds_config_; const ReferenceLine& reference_line_; diff --git a/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper_test.cc b/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper_test.cc index bb607931773..6fad2dbd518 100644 --- a/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper_test.cc +++ b/modules/planning/tasks/speed_bounds_decider/st_boundary_mapper_test.cc @@ -64,11 +64,22 @@ class StBoundaryMapperTest : public ::testing::Test { } frenet_frame_path_ = FrenetFramePath(std::move(ff_points)); path_data_.SetFrenetPath(std::move(frenet_frame_path_)); + + prediction::PredictionObstacles prediction_obstacles; + ASSERT_TRUE(cyber::common::GetProtoFromFile( + "/apollo/modules/planning/planning_base/testdata/" + "common/sample_prediction.pb.txt", + &prediction_obstacles)); + auto obstacles = Obstacle::CreateObstacles(prediction_obstacles); + for (auto& obstacle : obstacles) { + const auto id = obstacle->Id(); + indexed_obstacles_.Add(id, *obstacle); + } } protected: const std::string map_file = - "modules/planning/planning_base/testdata/garage_map/base_map.txt"; + "/apollo/modules/planning/planning_base/testdata/garage_map/base_map.txt"; hdmap::HDMap hdmap_; common::math::Vec2d vehicle_position_; std::unique_ptr reference_line_; @@ -76,6 +87,7 @@ class StBoundaryMapperTest : public ::testing::Test { PathData path_data_; FrenetFramePath frenet_frame_path_; std::shared_ptr injector_; + IndexedObstacles indexed_obstacles_; }; TEST_F(StBoundaryMapperTest, check_overlap_test) { @@ -91,5 +103,34 @@ TEST_F(StBoundaryMapperTest, check_overlap_test) { EXPECT_TRUE(mapper.CheckOverlap(path_point, box, 0.0)); } +TEST_F(StBoundaryMapperTest, get_overlap_boundary_points_test) { + SpeedBoundsDeciderConfig config; + double planning_distance = 70.0; + double planning_time = 10.0; + STBoundaryMapper mapper(config, *reference_line_, path_data_, + planning_distance, planning_time, injector_); + std::vector lower_points; + std::vector upper_points; + std::vector path_points(20); + for (size_t i = 0; i < 20; i++) { + common::PathPoint path_point; + path_point.set_x(0.0); + path_point.set_y(0.0 + 2 * i); + path_point.set_s(0.0 + 2 * i); + path_points.emplace_back(path_point); + } + Obstacle* obstacle = indexed_obstacles_.Find("88_0"); + EXPECT_TRUE(false) << obstacle->Id(); + EXPECT_FALSE(mapper.GetOverlapBoundaryPoints(path_points, + *obstacle, &upper_points, &lower_points)); + EXPECT_TRUE(false) << "lower_points:" << lower_points.size(); + for (size_t i = 0; i < lower_points.size(); i++) { + EXPECT_TRUE(false) << "lower_points: " << lower_points[i].t() + << " " << lower_points[i].s() + << " upper_points: " << upper_points[i].t() + << " " << upper_points[i].s(); + } +} + } // namespace planning } // namespace apollo diff --git a/modules/planning/tasks/speed_decider/BUILD b/modules/planning/tasks/speed_decider/BUILD index 541ad1f3e9e..baa78f9fd55 100644 --- a/modules/planning/tasks/speed_decider/BUILD +++ b/modules/planning/tasks/speed_decider/BUILD @@ -1,8 +1,5 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) @@ -10,7 +7,7 @@ filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -54,40 +51,21 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_speed_decider_description", - description = ":plugins.xml", - plugin = ":libspeed_decider.so", -) - -cc_binary( +apollo_plugin( name = "libspeed_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":speed_decider_lib"], -) - -cc_library( - name = "speed_decider_lib", srcs = ["speed_decider.cc"], hdrs = ["speed_decider.h"], - copts = ["-DMODULE_NAME=\\\"planning\\\""], + description = ":plugins.xml", deps = [ "//modules/common/configs:vehicle_config_helper", "//modules/common/math", "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/task_base/utils:st_gap_estimator", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/tasks/speed_decider/proto:speed_decider_cc_proto", ], - alwayslink = True, ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/tasks/speed_decider/conf/default_conf.pb.txt b/modules/planning/tasks/speed_decider/conf/default_conf.pb.txt index 591af03b61b..2bfcea9e546 100644 --- a/modules/planning/tasks/speed_decider/conf/default_conf.pb.txt +++ b/modules/planning/tasks/speed_decider/conf/default_conf.pb.txt @@ -1,4 +1,2 @@ follow_min_obs_lateral_distance: 2.5 -follow_min_time_sec: 2.0 -is_stop_for_pedestrain: false -keep_clear_last_point_speed: 0.8 \ No newline at end of file +follow_min_time_sec: 2.0 \ No newline at end of file diff --git a/modules/planning/tasks/st_bounds_decider/BUILD b/modules/planning/tasks/st_bounds_decider/BUILD index 29ff3e6ddf0..4cb4e3beae3 100644 --- a/modules/planning/tasks/st_bounds_decider/BUILD +++ b/modules/planning/tasks/st_bounds_decider/BUILD @@ -1,17 +1,15 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) # install( # name = "install", @@ -55,122 +53,35 @@ filegroup( # filter = "*.h", # ) -cyber_plugin_description( - name = "plugin_st_bounds_decider_description", - description = ":plugins.xml", - plugin = ":libst_bounds_decider.so", -) - -cc_binary( +apollo_plugin( name = "libst_bounds_decider.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":st_bounds_decider_lib"], -) - -cc_library( - name = "st_bounds_decider_lib", - srcs = ["st_bounds_decider.cc"], - hdrs = ["st_bounds_decider.h"], - copts = PLANNING_COPTS, - deps = [ - ":st_driving_limits", - ":st_guide_line", - ":st_obstacles_processor", - "//modules/common/status", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:st_graph_data", - "//modules/planning/planning_base/common/util:common_lib", - "//modules/planning/planning_base/task_base:task", - "//modules/planning/planning_base/task_base/common:decider_base", - "//modules/planning/tasks/st_bounds_decider/proto:st_bounds_decider_cc_proto", + srcs = [ + "st_bounds_decider.cc", + "st_driving_limits.cc", + "st_guide_line.cc", + "st_obstacles_processor.cc", ], - alwayslink = True, -) - -cc_library( - name = "st_guide_line", - srcs = ["st_guide_line.cc"], - hdrs = ["st_guide_line.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/map/pnc_map", - "//modules/common_msgs/map_msgs:map_cc_proto", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:speed_limit", - "//modules/planning/planning_base/common/path:discretized_path", - "//modules/planning/planning_base/common/path:frenet_frame_path", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/speed:speed_data", - "//modules/planning/planning_base/common/speed:st_boundary", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/reference_line", + hdrs = [ + "st_bounds_decider.h", + "st_driving_limits.h", + "st_guide_line.h", + "st_obstacles_processor.h", ], -) - -cc_library( - name = "st_driving_limits", - srcs = ["st_driving_limits.cc"], - hdrs = ["st_driving_limits.h"], - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/configs:vehicle_config_helper", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common/status", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:speed_limit", - "//modules/planning/planning_base/common/path:discretized_path", - "//modules/planning/planning_base/common/path:frenet_frame_path", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/speed:st_boundary", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", - "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/reference_line", - ], -) - -cc_library( - name = "st_obstacles_processor", - srcs = ["st_obstacles_processor.cc"], - hdrs = ["st_obstacles_processor.h"], - copts = PLANNING_COPTS, - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", "//modules/common_msgs/basic_msgs:pnc_point_cc_proto", - "//modules/common/status", - "//modules/map/pnc_map", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:history", - "//modules/planning/planning_base/common:obstacle", - "//modules/planning/planning_base/common:path_decision", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:speed_limit", - "//modules/planning/planning_base/common/path:discretized_path", - "//modules/planning/planning_base/common/path:frenet_frame_path", - "//modules/planning/planning_base/common/path:path_data", - "//modules/planning/planning_base/common/speed:st_boundary", - "//modules/planning/planning_base/common/trajectory:discretized_trajectory", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/common_msgs/map_msgs:map_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/map:apollo_map", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/reference_line", + "//modules/planning/tasks/st_bounds_decider/proto:st_bounds_decider_cc_proto", ], ) apollo_package() + cpplint() diff --git a/modules/planning/traffic_rules/backside_vehicle/BUILD b/modules/planning/traffic_rules/backside_vehicle/BUILD index 0cad5b2af74..b3a1ff00ff9 100644 --- a/modules/planning/traffic_rules/backside_vehicle/BUILD +++ b/modules/planning/traffic_rules/backside_vehicle/BUILD @@ -1,94 +1,33 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-backside-vehicle", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-backside-vehicle.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libbackside_vehicle.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-backside-vehicle/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-backside-vehicle/include", -# filter = "*.h", -# ) -cyber_plugin_description( - name = "plugin_libbackside_vehicle_description", - description = ":plugins.xml", - plugin = ":libbackside_vehicle.so", -) - -cc_binary( +apollo_plugin( name = "libbackside_vehicle.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":backside_vehicle_lib"], -) - -cc_library( - name = "backside_vehicle_lib", srcs = ["backside_vehicle.cc"], hdrs = ["backside_vehicle.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/traffic_rules/backside_vehicle/proto:backside_vehicle_cc_proto" + "//modules/planning/traffic_rules/backside_vehicle/proto:backside_vehicle_cc_proto", ], ) + apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/traffic_rules/crosswalk/BUILD b/modules/planning/traffic_rules/crosswalk/BUILD index 9c4b9f4be51..f48a30169ec 100644 --- a/modules/planning/traffic_rules/crosswalk/BUILD +++ b/modules/planning/traffic_rules/crosswalk/BUILD @@ -1,95 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-crosswalk", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-crosswalk.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libcrosswalk.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-crosswalk/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-crosswalk/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_libcrosswalk_lib_description", - description = ":plugins.xml", - plugin = ":libcrosswalk.so", -) - -cc_binary( +apollo_plugin( name = "libcrosswalk.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":crosswalk_lib"], -) - -cc_library( - name = "crosswalk_lib", srcs = ["crosswalk.cc"], hdrs = ["crosswalk.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/traffic_rules/crosswalk/proto:crosswalk_cc_proto" + "//modules/planning/traffic_rules/crosswalk/proto:crosswalk_cc_proto", ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/traffic_rules/crosswalk/conf/default_conf.pb.txt b/modules/planning/traffic_rules/crosswalk/conf/default_conf.pb.txt index bc2a42db591..dda06e28b7d 100644 --- a/modules/planning/traffic_rules/crosswalk/conf/default_conf.pb.txt +++ b/modules/planning/traffic_rules/crosswalk/conf/default_conf.pb.txt @@ -4,5 +4,4 @@ min_pass_s_distance: 1.0 expand_s_distance: 2.0 stop_strict_l_distance: 4.0 stop_loose_l_distance: 5.0 -start_watch_timer_distance:10 stop_timeout: 10.0 \ No newline at end of file diff --git a/modules/planning/traffic_rules/destination/BUILD b/modules/planning/traffic_rules/destination/BUILD index cbcfbc34c23..fae55b56b56 100644 --- a/modules/planning/traffic_rules/destination/BUILD +++ b/modules/planning/traffic_rules/destination/BUILD @@ -1,95 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-destination", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-destination.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libdestination.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-destination/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-destination/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_libdestination_lib_description", - description = ":plugins.xml", - plugin = ":libdestination.so", -) - -cc_binary( +apollo_plugin( name = "libdestination.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":destination_lib"], -) - -cc_library( - name = "destination_lib", srcs = ["destination.cc"], hdrs = ["destination.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/traffic_rules/destination/proto:destination_cc_proto" + "//modules/planning/traffic_rules/destination/proto:destination_cc_proto", ], ) apollo_package() + cpplint() diff --git a/modules/planning/traffic_rules/keepclear/BUILD b/modules/planning/traffic_rules/keepclear/BUILD index ae56215cb20..c70d8e66502 100644 --- a/modules/planning/traffic_rules/keepclear/BUILD +++ b/modules/planning/traffic_rules/keepclear/BUILD @@ -1,95 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-keepclear", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-keepclear.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libkeepclear.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-keepclear/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-keepclear/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_libkeepclear_lib_description", - description = ":plugins.xml", - plugin = ":libkeepclear.so", -) - -cc_binary( +apollo_plugin( name = "libkeepclear.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":keepclear_lib"], -) - -cc_library( - name = "keepclear_lib", srcs = ["keep_clear.cc"], hdrs = ["keep_clear.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/traffic_rules/keepclear/proto:keepclear_cc_proto" + "//modules/planning/traffic_rules/keepclear/proto:keepclear_cc_proto", ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/traffic_rules/reference_line_end/BUILD b/modules/planning/traffic_rules/reference_line_end/BUILD index c2339ef49ed..1e5d4970916 100644 --- a/modules/planning/traffic_rules/reference_line_end/BUILD +++ b/modules/planning/traffic_rules/reference_line_end/BUILD @@ -1,93 +1,29 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) -) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-reference-line-end", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-reference-line-end.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libreference_line_end.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-reference-line-end/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-reference-line-end/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_libreference_line_end_lib_description", - description = ":plugins.xml", - plugin = ":libreference_line_end.so", + ]), ) -cc_binary( +apollo_plugin( name = "libreference_line_end.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":reference_line_end_lib"], -) - -cc_library( - name = "reference_line_end_lib", srcs = ["reference_line_end.cc"], hdrs = ["reference_line_end.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/traffic_rules/reference_line_end/proto:reference_line_end_cc_proto" + "//modules/planning/traffic_rules/reference_line_end/proto:reference_line_end_cc_proto", ], ) diff --git a/modules/planning/traffic_rules/rerouting/BUILD b/modules/planning/traffic_rules/rerouting/BUILD index e7a30c5c1fd..2a429542e9e 100644 --- a/modules/planning/traffic_rules/rerouting/BUILD +++ b/modules/planning/traffic_rules/rerouting/BUILD @@ -1,95 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-rerouting", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-rerouting.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":librerouting.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-rerouting/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-rerouting/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_librerouting_lib_description", - description = ":plugins.xml", - plugin = ":librerouting.so", -) - -cc_binary( +apollo_plugin( name = "librerouting.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":rerouting_lib"], -) - -cc_library( - name = "rerouting_lib", srcs = ["rerouting.cc"], hdrs = ["rerouting.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/traffic_rules/rerouting/proto:rerouting_cc_proto" + "//modules/planning/traffic_rules/rerouting/proto:rerouting_cc_proto", ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/planning/traffic_rules/stop_sign/BUILD b/modules/planning/traffic_rules/stop_sign/BUILD index d6ba520bb2c..928fc55e861 100644 --- a/modules/planning/traffic_rules/stop_sign/BUILD +++ b/modules/planning/traffic_rules/stop_sign/BUILD @@ -1,95 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-stop-sign", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-stop-sign.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libstop_sign.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-stop-sign/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-stop-sign/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_libstop_sign_lib_description", - description = ":plugins.xml", - plugin = ":libstop_sign.so", -) - -cc_binary( +apollo_plugin( name = "libstop_sign.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":stop_sign_lib"], -) - -cc_library( - name = "stop_sign_lib", srcs = ["stop_sign.cc"], hdrs = ["stop_sign.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", - "//modules/planning/traffic_rules/stop_sign/proto:stop_sign_cc_proto" + "//modules/planning/traffic_rules/stop_sign/proto:stop_sign_cc_proto", ], ) apollo_package() + cpplint() diff --git a/modules/planning/traffic_rules/traffic_light/BUILD b/modules/planning/traffic_rules/traffic_light/BUILD index 593ea5d82e0..d24c1024e43 100644 --- a/modules/planning/traffic_rules/traffic_light/BUILD +++ b/modules/planning/traffic_rules/traffic_light/BUILD @@ -1,95 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] + filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) + ]), ) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-traffic-light", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-traffic-light.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-traffic-light/src", -# filter = "*", -# ) -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-traffic-light/include", -# filter = "*.h", -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libtraffic_light.so", -# ) - -cyber_plugin_description( - name = "plugin_libtraffic_light_lib_description", - description = ":plugins.xml", - plugin = ":libtraffic_light.so", -) - -cc_binary( +apollo_plugin( name = "libtraffic_light.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":traffic_light_lib"], -) - -cc_library( - name = "traffic_light_lib", srcs = ["traffic_light.cc"], hdrs = ["traffic_light.h"], - alwayslink = True, - copts = PLANNING_COPTS, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", "//modules/planning/traffic_rules/traffic_light/proto:traffic_light_cc_proto", ], ) apollo_package() + cpplint() diff --git a/modules/planning/traffic_rules/yield_sign/BUILD b/modules/planning/traffic_rules/yield_sign/BUILD index c89dbdbed9b..526ccebf558 100644 --- a/modules/planning/traffic_rules/yield_sign/BUILD +++ b/modules/planning/traffic_rules/yield_sign/BUILD @@ -1,96 +1,32 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install", "install_files", "install_plugin", "install_src_files") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_test", "apollo_package", "apollo_plugin") package(default_visibility = ["//visibility:public"]) + PLANNING_COPTS = ["-DMODULE_NAME=\\\"planning\\\""] filegroup( name = "runtime_files", srcs = glob([ "conf/**", - ]) -) -# install( -# name = "install", -# data_dest = "planning-traffic-rules-yield-sign", -# data = [ -# ":cyberfile.xml", -# ":planning-traffic-rules-yield-sign.BUILD", -# ], -# deps = [ -# "install_plugin", -# ], -# ) - -# install_plugin( -# name = "install_plugin", -# data = [ -# ] + glob(["conf/**"]), -# description = ":plugins.xml", -# plugin = ":libyield_sign.so", -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_all_src", -# ":install_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_all_src", -# src_dir = ["."], -# dest = "planning-traffic-rules-yield-sign/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_hdrs", -# src_dir = ["."], -# dest = "planning-traffic-rules-yield-sign/include", -# filter = "*.h", -# ) - -cyber_plugin_description( - name = "plugin_libyield_sign_lib_description", - description = ":plugins.xml", - plugin = ":libyield_sign.so", + ]), ) -cc_binary( +apollo_plugin( name = "libyield_sign.so", - linkshared = True, - linkstatic = True, - copts = ["-DMODULE_NAME=\\\"planning\\\""], - deps = [":yield_sign_lib"], -) - -cc_library( - name = "yield_sign_lib", srcs = ["yield_sign.cc"], hdrs = ["yield_sign.h"], - copts = PLANNING_COPTS, - alwayslink = True, + description = ":plugins.xml", deps = [ "//modules/common/util:util_tool", "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/planning/planning_base/common:dependency_injector", - "//modules/planning/planning_base/common:frame", - "//modules/planning/planning_base/common:planning_context", - "//modules/planning/planning_base/common:planning_gflags", - "//modules/planning/planning_base/common:reference_line_info", - "//modules/planning/planning_base/common/util:common_lib", "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/planning/planning_base:apollo_planning_planning_base", "//modules/planning/planning_base/proto:planning_config_cc_proto", - "//modules/planning/planning_base/traffic_rules_base:traffic_rules", - "//modules/planning/planning_base/common:config_util", "//modules/planning/traffic_rules/yield_sign/proto:yield_sign_cc_proto", ], ) apollo_package() -cpplint() + +cpplint() \ No newline at end of file diff --git a/modules/prediction/BUILD b/modules/prediction/BUILD index f59daf6a0e3..0ec2df95bae 100644 --- a/modules/prediction/BUILD +++ b/modules/prediction/BUILD @@ -1,41 +1,773 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") +load("//tools/platform:build_defs.bzl", "if_aarch64", "if_gpu") package(default_visibility = ["//visibility:public"]) PREDICTION_COPTS = ["-DMODULE_NAME=\\\"prediction\\\""] +apollo_component( + name = "libprediction_component.so", + srcs = ["prediction_component.cc",], + hdrs = ["prediction_component.h",], + copts = PREDICTION_COPTS, + deps = [ + "//cyber", + "//modules/common/adapters:adapter_gflags", + "//modules/common/util:util_tool", + ":apollo_prediction", + ], +) -# install( -# name = "prediction_testdata_install", -# data_dest = "prediction/addition_data", -# data = [":prediction_testdata"], -# ) +apollo_cc_library( + name = "apollo_prediction_network", + srcs = [ + "network/net_layer.cc", + "network/net_model.cc", + "network/net_util.cc", + "network/rnn_model/rnn_model.cc", + ], + hdrs = [ + "network/net_layer.h", + "network/net_model.h", + "network/net_util.h", + "network/rnn_model/rnn_model.h", + ], + deps = [ + "//cyber", + "//modules/common/util:util_lib", + "//modules/common/util:util_tool", + "//modules/prediction/proto:network_layers_cc_proto", + "//modules/prediction/proto:network_model_cc_proto", + "@eigen", + ] +) -cc_library( - name = "prediction_component_lib", - srcs = ["prediction_component.cc"], - hdrs = ["prediction_component.h"], - copts = PREDICTION_COPTS, +apollo_cc_library( + name = "apollo_prediction", + copts = ["-fopenmp"] + PREDICTION_COPTS, + linkopts = ["-lgomp"], + srcs = [ + "common/prediction_system_gflags.cc", + "common/environment_features.cc", + "common/feature_output.cc", + "common/junction_analyzer.cc", + "common/prediction_gflags.cc", + "common/message_process.cc", + "common/prediction_map.cc", + "common/prediction_thread_pool.cc", + "common/prediction_util.cc", + "common/road_graph.cc", + "common/semantic_map.cc", + "common/validation_checker.cc", + "container/adc_trajectory/adc_trajectory_container.cc", + "container/container_manager.cc", + "container/obstacles/obstacle.cc", + "container/obstacles/obstacle_clusters.cc", + "container/obstacles/obstacles_container.cc", + "container/pose/pose_container.cc", + "container/storytelling/storytelling_container.cc", + "evaluator/cyclist/cyclist_keep_lane_evaluator.cc", + "evaluator/evaluator_manager.cc", + "evaluator/model_manager/model_manager.cc", + "evaluator/pedestrian/pedestrian_interaction_evaluator.cc", + "evaluator/vehicle/cost_evaluator.cc", + "evaluator/vehicle/cruise_mlp_evaluator.cc", + "evaluator/vehicle/jointly_prediction_planning_evaluator.cc", + "evaluator/vehicle/junction_map_evaluator.cc", + "evaluator/vehicle/junction_mlp_evaluator.cc", + "evaluator/vehicle/lane_aggregating_evaluator.cc", + "evaluator/vehicle/lane_scanning_evaluator.cc", + "evaluator/vehicle/mlp_evaluator.cc", + "evaluator/vehicle/semantic_lstm_evaluator.cc", + "evaluator/vehicle/vectornet_evaluator.cc", + "evaluator/warm_up/warm_up.cc", + "pipeline/vector_net.cc", + "predictor/empty/empty_predictor.cc", + "predictor/extrapolation/extrapolation_predictor.cc", + "predictor/free_move/free_move_predictor.cc", + "predictor/interaction/interaction_predictor.cc", + "predictor/junction/junction_predictor.cc", + "predictor/lane_sequence/lane_sequence_predictor.cc", + "predictor/move_sequence/move_sequence_predictor.cc", + "predictor/predictor.cc", + "predictor/predictor_manager.cc", + "predictor/sequence/sequence_predictor.cc", + "predictor/single_lane/single_lane_predictor.cc", + "scenario/analyzer/scenario_analyzer.cc", + "scenario/feature_extractor/feature_extractor.cc", + "scenario/interaction_filter/interaction_filter.cc", + "scenario/prioritization/obstacles_prioritizer.cc", + "scenario/right_of_way/right_of_way.cc", + "scenario/scenario_features/cruise_scenario_features.cc", + "scenario/scenario_features/junction_scenario_features.cc", + "scenario/scenario_features/scenario_features.cc", + "scenario/scenario_manager.cc", + "submodules/evaluator_submodule.cc", + "submodules/predictor_submodule.cc", + "submodules/submodule_output.cc", + ] + if_aarch64(["affine_transform.cc"]), + hdrs = [ + "common/environment_features.h", + "common/feature_output.h", + "common/junction_analyzer.h", + "common/kml_map_based_test.h", + "common/message_process.h", + "common/prediction_constants.h", + "common/prediction_gflags.h", + "common/prediction_map.h", + "common/prediction_system_gflags.h", + "common/prediction_thread_pool.h", + "common/prediction_util.h", + "common/road_graph.h", + "common/semantic_map.h", + "common/validation_checker.h", + "container/adc_trajectory/adc_trajectory_container.h", + "container/container.h", + "container/container_manager.h", + "container/obstacles/obstacle.h", + "container/obstacles/obstacle_clusters.h", + "container/obstacles/obstacles_container.h", + "container/pose/pose_container.h", + "container/storytelling/storytelling_container.h", + "evaluator/cyclist/cyclist_keep_lane_evaluator.h", + "evaluator/evaluator.h", + "evaluator/evaluator_manager.h", + "evaluator/model_manager/model/model_base.h", + "evaluator/model_manager/model_manager.h", + "evaluator/pedestrian/pedestrian_interaction_evaluator.h", + "evaluator/vehicle/cost_evaluator.h", + "evaluator/vehicle/cruise_mlp_evaluator.h", + "evaluator/vehicle/jointly_prediction_planning_evaluator.h", + "evaluator/vehicle/junction_map_evaluator.h", + "evaluator/vehicle/junction_mlp_evaluator.h", + "evaluator/vehicle/lane_aggregating_evaluator.h", + "evaluator/vehicle/lane_scanning_evaluator.h", + "evaluator/vehicle/mlp_evaluator.h", + "evaluator/vehicle/semantic_lstm_evaluator.h", + "evaluator/vehicle/vectornet_evaluator.h", + "evaluator/warm_up/warm_up.h", + "pipeline/vector_net.h", + "predictor/empty/empty_predictor.h", + "predictor/extrapolation/extrapolation_predictor.h", + "predictor/free_move/free_move_predictor.h", + "predictor/interaction/interaction_predictor.h", + "predictor/junction/junction_predictor.h", + "predictor/lane_sequence/lane_sequence_predictor.h", + "predictor/move_sequence/move_sequence_predictor.h", + "predictor/predictor.h", + "predictor/predictor_manager.h", + "predictor/sequence/sequence_predictor.h", + "predictor/single_lane/single_lane_predictor.h", + "scenario/analyzer/scenario_analyzer.h", + "scenario/feature_extractor/feature_extractor.h", + "scenario/interaction_filter/interaction_filter.h", + "scenario/prioritization/obstacles_prioritizer.h", + "scenario/right_of_way/right_of_way.h", + "scenario/scenario_features/cruise_scenario_features.h", + "scenario/scenario_features/junction_scenario_features.h", + "scenario/scenario_features/scenario_features.h", + "scenario/scenario_manager.h", + "submodules/evaluator_submodule.h", + "submodules/predictor_submodule.h", + "submodules/submodule_output.h", + ] + if_aarch64(["affine_transform.h"]), deps = [ + ":apollo_prediction_network", "//cyber", "//modules/common/adapters:adapter_gflags", - "//modules/prediction/common:message_process", - "//modules/prediction/evaluator:evaluator_manager", - "//modules/prediction/predictor:predictor_manager", - "//modules/prediction/proto:offline_features_cc_proto", - "//modules/prediction/scenario:scenario_manager", - "//modules/prediction/submodules:evaluator_submodule_lib", - "//modules/prediction/submodules:predictor_submodule_lib", - "//modules/prediction/submodules:submodule_output", + "//modules/common/adapters/proto:adapter_config_proto", + "//modules/common/filters", + "//modules/common/math", + "//modules/common/configs:vehicle_config_helper", + "//modules/common/util:common_util", "//modules/common/util:util_tool", + "//modules/common_msgs/basic_msgs:geometry_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/common_msgs/prediction_msgs:feature_cc_proto", + "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", + "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", + "//modules/common_msgs/prediction_msgs:scenario_cc_proto", + "//modules/common_msgs/storytelling_msgs:story_cc_proto", + "//modules/map:apollo_map", + "//modules/prediction/proto:fnn_vehicle_model_cc_proto", + "//modules/prediction/proto:network_layers_cc_proto", + "//modules/prediction/proto:network_model_cc_proto", + "//modules/prediction/proto:offline_features_cc_proto", + "//modules/prediction/proto:prediction_conf_cc_proto", + "//modules/prediction/proto:vector_net_cc_proto", + "@com_github_gflags_gflags//:gflags", + "@com_google_googletest//:gtest_main", + "@eigen", + "@npp", + "@opencv//:highgui", + "@opencv//:imgcodecs", + ] + if_gpu(["@libtorch_gpu",], ["@libtorch_cpu",]), +) + +apollo_cc_binary( + name = "vector_net_feature", + srcs = ["pipeline/vector_net_feature.cc"], + copts = [ + "-DMODULE_NAME=\\\"prediction\\\"", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_binary( + name = "vector_net_offline_data", + srcs = ["pipeline/vector_net_offline_data.cc"], + copts = [ + "-DMODULE_NAME=\\\"prediction\\\"", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_binary( + name = "records_to_offline_data", + srcs = ["pipeline/records_to_offline_data.cc"], + copts = [ + "-DMODULE_NAME=\\\"prediction\\\"", + ], + linkopts = [ + "-lgomp", + ], + deps = [ + ":apollo_prediction", + "@boost", + "@com_google_absl//:absl", + ], +) + +apollo_cc_binary( + name = "evaluator_submodule.so", + linkshared = True, + linkstatic = True, + deps = [":apollo_prediction"], +) + +apollo_cc_binary( + name = "predictor_submodule.so", + linkshared = True, + linkstatic = True, + deps = [":apollo_prediction"], +) + +apollo_cc_binary( + name = "prediction_lego.so", + linkshared = True, + linkstatic = True, + deps = [":apollo_prediction"], +) + +apollo_cc_test( + name = "empty_predictor_test", + size = "small", + srcs = ["predictor/empty/empty_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "free_move_predictor_test", + size = "small", + srcs = ["predictor/free_move/free_move_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "interaction_predictor_test", + size = "small", + srcs = ["predictor/interaction/interaction_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "junction_predictor_test", + size = "small", + srcs = ["predictor/junction/junction_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + linkopts = [ + "-lgomp", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "lane_sequence_predictor_test", + size = "small", + srcs = ["predictor/lane_sequence/lane_sequence_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "move_sequence_predictor_test", + size = "small", + srcs = ["predictor/move_sequence/move_sequence_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "sequence_predictor_test", + size = "small", + srcs = ["predictor/sequence/sequence_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "single_lane_predictor_test", + size = "small", + srcs = ["predictor/single_lane/single_lane_predictor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "predictor_manager_test", + size = "small", + srcs = ["predictor/predictor_manager_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + linkopts = [ + "-lgomp", + ], + deps = [ + ":apollo_prediction", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "scenario_manager_test", + size = "small", + srcs = ["scenario/scenario_manager_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "scenario_analyzer_test", + size = "small", + srcs = ["scenario/analyzer/scenario_analyzer_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "feature_extractor_test", + size = "small", + srcs = ["scenario/feature_extractor/feature_extractor_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "cruise_scenario_features_test", + size = "small", + srcs = ["scenario/scenario_features/cruise_scenario_features_test.cc"], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "net_util_test", + size = "small", + srcs = ["network/net_util_test.cc"], + linkstatic = True, + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "net_layer_test", + size = "small", + srcs = ["network/net_layer_test.cc"], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "rnn_model_test", + size = "small", + srcs = ["network/rnn_model/rnn_model_test.cc"], + data = [ + "//modules/prediction:prediction_data", + ], + deps = [ + "//cyber", + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "evaluator_manager_test", + size = "small", + srcs = ["evaluator/evaluator_manager_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + linkopts = [ + "-lgomp", + ], + linkstatic = True, + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "mlp_evaluator_test", + size = "small", + srcs = ["evaluator/vehicle/mlp_evaluator_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "cost_evaluator_test", + size = "small", + srcs = ["evaluator/vehicle/cost_evaluator_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "junction_mlp_evaluator_test", + size = "small", + srcs = ["evaluator/vehicle/junction_mlp_evaluator_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + linkopts = [ + "-lgomp", + ], + linkstatic = True, + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pedestrian_interaction_evaluator_test", + size = "small", + srcs = ["evaluator/pedestrian/pedestrian_interaction_evaluator_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], + linkstatic = True, +) + +apollo_cc_test( + name = "cyclist_keep_lane_evaluator_test", + size = "small", + srcs = ["evaluator/cyclist/cyclist_keep_lane_evaluator_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", ], - alwayslink = True, ) -cc_test( +apollo_cc_test( + name = "cruise_mlp_evaluator_test", + size = "small", + srcs = ["evaluator/vehicle/cruise_mlp_evaluator_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + linkopts = [ + "-lgomp", + ], + linkstatic = True, + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "container_manager_test", + size = "small", + srcs = ["container/container_manager_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + ], +) + +apollo_cc_test( + name = "obstacles_container_test", + size = "small", + srcs = ["container/obstacles/obstacles_container_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "pose_container_test", + size = "small", + srcs = ["container/pose/pose_container_test.cc"], + linkstatic = True, + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "obstacle_clusters_test", + size = "small", + srcs = ["container/obstacles/obstacle_clusters_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "obstacle_test", + size = "small", + srcs = ["container/obstacles/obstacle_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "adc_trajectory_container_test", + size = "small", + srcs = ["container/adc_trajectory/adc_trajectory_container_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "prediction_thread_pool_test", + size = "small", + srcs = ["common/prediction_thread_pool_test.cc"], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "prediction_util_test", + size = "small", + srcs = ["common/prediction_util_test.cc"], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "prediction_map_test", + size = "small", + srcs = ["common/prediction_map_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "feature_output_test", + size = "small", + srcs = ["common/feature_output_test.cc"], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + + +apollo_cc_test( + name = "road_graph_test", + size = "small", + srcs = ["common/road_graph_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "validation_checker_test", + size = "small", + srcs = ["common/validation_checker_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "environment_features_test", + size = "small", + srcs = ["common/environment_features_test.cc"], + linkstatic = True, + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "junction_analyzer_test", + size = "small", + srcs = ["common/junction_analyzer_test.cc"], + data = [ + "//modules/prediction:prediction_data", + "//modules/prediction:prediction_testdata", + ], + deps = [ + ":apollo_prediction", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( name = "prediction_component_test", size = "small", srcs = ["prediction_component_test.cc"], @@ -47,81 +779,17 @@ cc_test( linkopts = [ "-lgomp", ], + linkstatic = True, deps = [ ":prediction_component_lib", ], - linkstatic = True, ) -cc_binary( - name = "libprediction_component.so", - linkshared = True, - linkstatic = True, - deps = [":prediction_component_lib"], -) - -# install( -# name = "install", -# library_dest = "prediction/lib", -# data_dest = "prediction", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":prediction.BUILD", -# ], -# targets = [ -# ":libprediction_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# "//modules/prediction/pipeline:install", -# "//modules/prediction/common:install", -# "//modules/prediction/submodules:install", -# ":prediction_testdata_install", -# "//modules/prediction/proto:py_pb_prediction", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "prediction/include", -# data = [ -# "//modules/prediction/proto:fnn_model_base_cc_proto", -# "//modules/prediction/proto:fnn_vehicle_model_cc_proto", -# "//modules/prediction/proto:network_layers_cc_proto", -# "//modules/prediction/proto:network_model_cc_proto", -# "//modules/prediction/proto:offline_features_cc_proto", -# "//modules/prediction/proto:prediction_conf_cc_proto", -# "//modules/prediction/proto:vector_net_cc_proto", -# ], -# ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_prediction_src", -# ":install_prediction_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_prediction_src", -# src_dir = ["."], -# dest = "prediction/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_prediction_hdrs", -# src_dir = ["."], -# dest = "prediction/include", -# filter = "*.h", -# ) - filegroup( name = "runtime_data", srcs = [ - ":prediction_data", ":prediction_conf", + ":prediction_data", ] + glob([ "dag/*.dag", "launch/*.launch", @@ -150,4 +818,5 @@ filegroup( ) apollo_package() + cpplint() diff --git a/modules/prediction/common/BUILD b/modules/prediction/common/BUILD deleted file mode 100644 index a49eb66d254..00000000000 --- a/modules/prediction/common/BUILD +++ /dev/null @@ -1,312 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu", "if_aarch64") - -package(default_visibility = ["//visibility:public"]) -PREDICTION_COPTS = ["-DMODULE_NAME=\\\"prediction\\\""] - -cc_library( - name = "prediction_gflags", - srcs = ["libprediction_gflags.so"], - hdrs = ["prediction_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], - alwayslink = True, -) - -cc_binary( - name = "libprediction_gflags.so", - srcs = ["prediction_gflags.cc", "prediction_gflags.h"], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -# install( -# name = "install", -# library_dest = "prediction/lib", -# targets = [ -# ":libprediction_gflags.so", -# ":libprediction_system_gflags.so" -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "libprediction_system_gflags.so", - srcs = ["prediction_system_gflags.cc", "prediction_system_gflags.h"], - linkshared = True, - linkstatic = True, - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "prediction_system_gflags", - srcs = [":libprediction_system_gflags.so"], - hdrs = ["prediction_system_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "prediction_util", - srcs = ["prediction_util.cc"], - hdrs = ["prediction_util.h"], - copts = PREDICTION_COPTS, - deps = [ - ":prediction_gflags", - ":prediction_map", - ], -) - -cc_test( - name = "prediction_util_test", - size = "small", - srcs = ["prediction_util_test.cc"], - deps = [ - ":prediction_util", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "prediction_map", - srcs = ["prediction_map.cc"], - hdrs = ["prediction_map.h"], - copts = PREDICTION_COPTS, - deps = [ - ":prediction_gflags", - "//modules/map/pnc_map", - ], -) - -cc_test( - name = "prediction_map_test", - size = "small", - srcs = ["prediction_map_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":kml_map_based_test", - ":prediction_map", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "feature_output", - srcs = ["feature_output.cc"], - hdrs = ["feature_output.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/common/util", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/container/obstacles:obstacle", - "//modules/prediction/proto:offline_features_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - ], -) - -cc_test( - name = "feature_output_test", - size = "small", - srcs = ["feature_output_test.cc"], - deps = [ - ":feature_output", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "road_graph", - srcs = ["road_graph.cc"], - hdrs = ["road_graph.h"], - copts = PREDICTION_COPTS, - deps = [ - ":prediction_map", - "//modules/prediction/common:prediction_constants", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/common:prediction_system_gflags", - "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", - ], -) - -cc_test( - name = "road_graph_test", - size = "small", - srcs = ["road_graph_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":kml_map_based_test", - ":road_graph", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "kml_map_based_test", - hdrs = ["kml_map_based_test.h"], -) - -cc_library( - name = "validation_checker", - srcs = ["validation_checker.cc"], - hdrs = ["validation_checker.h"], - deps = [ - "//modules/common/math", - "//modules/prediction/common:prediction_gflags", - "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", - ], -) - -cc_test( - name = "validation_checker_test", - size = "small", - srcs = ["validation_checker_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":validation_checker", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "environment_features", - srcs = ["environment_features.cc"], - hdrs = ["environment_features.h"], - deps = [ - "//cyber", - "//modules/common_msgs/basic_msgs:geometry_cc_proto", - ], -) - -cc_test( - name = "environment_features_test", - size = "small", - srcs = ["environment_features_test.cc"], - deps = [ - ":environment_features", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "junction_analyzer", - srcs = ["junction_analyzer.cc"], - hdrs = ["junction_analyzer.h"], - copts = PREDICTION_COPTS, - deps = [ - ":prediction_map", - "//modules/common_msgs/prediction_msgs:feature_cc_proto", - ], -) - -cc_test( - name = "junction_analyzer_test", - size = "small", - srcs = ["junction_analyzer_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":junction_analyzer", - ":kml_map_based_test", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "message_process", - srcs = ["message_process.cc"], - hdrs = ["message_process.h"], - copts = PREDICTION_COPTS, - deps = [ - ":semantic_map", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/prediction/evaluator:evaluator_manager", - "//modules/prediction/predictor:predictor_manager", - "//modules/prediction/proto:offline_features_cc_proto", - "//modules/prediction/scenario:scenario_manager", - "//modules/common/util:util_tool", - ], -) - -cc_library( - name = "prediction_thread_pool", - srcs = ["prediction_thread_pool.cc"], - hdrs = ["prediction_thread_pool.h"], - copts = PREDICTION_COPTS, - deps = [ - "//cyber", - ], -) - -cc_test( - name = "prediction_thread_pool_test", - size = "small", - srcs = ["prediction_thread_pool_test.cc"], - deps = [ - ":prediction_thread_pool", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "semantic_map", - srcs = ["semantic_map.cc"], - hdrs = ["semantic_map.h"], - copts = PREDICTION_COPTS, - deps = [ - ":prediction_gflags", - "//cyber", - "//modules/common/configs:config_gflags", - "//modules/common/util", - "//modules/prediction/container:container_manager", - "//modules/prediction/container/pose:pose_container", - "//modules/common_msgs/prediction_msgs:feature_cc_proto", - "@opencv//:highgui", - "@opencv//:imgcodecs", - ] + if_aarch64([":affine_transform"]), -) - -cc_library( - name = "affine_transform", - srcs = ["affine_transform.cc"], - hdrs = ["affine_transform.h"], - copts = PREDICTION_COPTS, - deps = [ - "//cyber", - "prediction_system_gflags", - "prediction_gflags", - "@npp", - "@opencv//:highgui", - "@opencv//:imgcodecs", - ], -) - -cc_library( - name = "prediction_constants", - hdrs = ["prediction_constants.h"], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/container/BUILD b/modules/prediction/container/BUILD deleted file mode 100644 index 0757b52ef6f..00000000000 --- a/modules/prediction/container/BUILD +++ /dev/null @@ -1,44 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "container_manager", - srcs = ["container_manager.cc"], - hdrs = ["container_manager.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/common/adapters:adapter_gflags", - "//modules/common/adapters/proto:adapter_config_proto", - "//modules/prediction/container/adc_trajectory:adc_trajectory_container", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/container/pose:pose_container", - "//modules/prediction/container/storytelling:storytelling_container", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "container_manager_test", - size = "small", - srcs = ["container_manager_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/container:container_manager", - ], -) - -cc_library( - name = "container", - hdrs = ["container.h"], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/container/adc_trajectory/BUILD b/modules/prediction/container/adc_trajectory/BUILD deleted file mode 100644 index 87846c20765..00000000000 --- a/modules/prediction/container/adc_trajectory/BUILD +++ /dev/null @@ -1,38 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "adc_trajectory_container", - srcs = ["adc_trajectory_container.cc"], - hdrs = ["adc_trajectory_container.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/prediction/common:prediction_map", - "//modules/prediction/container", - "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", - ], -) - -cc_test( - name = "adc_trajectory_container_test", - size = "small", - srcs = ["adc_trajectory_container_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":adc_trajectory_container", - "//modules/prediction/common:kml_map_based_test", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/container/obstacles/BUILD b/modules/prediction/container/obstacles/BUILD deleted file mode 100644 index 5836f3a21be..00000000000 --- a/modules/prediction/container/obstacles/BUILD +++ /dev/null @@ -1,100 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PREDICTION_COPTS = ["-DMODULE_NAME=\\\"prediction\\\""] - -cc_library( - name = "obstacles_container", - srcs = ["obstacles_container.cc"], - hdrs = ["obstacles_container.h"], - copts = PREDICTION_COPTS, - deps = [ - ":obstacle_clusters", - "//modules/prediction/common:environment_features", - "//modules/prediction/common:feature_output", - "//modules/prediction/common:junction_analyzer", - "//modules/prediction/common:prediction_constants", - "//modules/prediction/container", - "//modules/prediction/container/obstacles:obstacle", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - "//modules/prediction/submodules:submodule_output", - ], -) - -cc_library( - name = "obstacle", - srcs = ["obstacle.cc"], - hdrs = ["obstacle.h"], - copts = PREDICTION_COPTS, - deps = [ - ":obstacle_clusters", - "//modules/common/filters", - "//modules/prediction/common:junction_analyzer", - "//modules/prediction/common:prediction_constants", - "//modules/prediction/network/rnn_model", - "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - ], -) - -cc_test( - name = "obstacles_container_test", - size = "small", - srcs = ["obstacles_container_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/container/obstacles:obstacles_container", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "obstacle_test", - size = "small", - srcs = ["obstacle_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/container/obstacles:obstacles_container", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "obstacle_clusters", - srcs = ["obstacle_clusters.cc"], - hdrs = ["obstacle_clusters.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/common/util", - "//modules/prediction/common:road_graph", - "//modules/common_msgs/prediction_msgs:feature_cc_proto", - ], -) - -cc_test( - name = "obstacle_clusters_test", - size = "small", - srcs = ["obstacle_clusters_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/container/obstacles:obstacle_clusters", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/container/pose/BUILD b/modules/prediction/container/pose/BUILD deleted file mode 100644 index 60f92a4328f..00000000000 --- a/modules/prediction/container/pose/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "pose_container", - srcs = ["pose_container.cc"], - hdrs = ["pose_container.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/common/math", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/container", - ], -) - -cc_test( - name = "pose_container_test", - size = "small", - srcs = ["pose_container_test.cc"], - deps = [ - "//modules/prediction/container/pose:pose_container", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/prediction/container/storytelling/BUILD b/modules/prediction/container/storytelling/BUILD deleted file mode 100644 index dea49cf8d89..00000000000 --- a/modules/prediction/container/storytelling/BUILD +++ /dev/null @@ -1,22 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "storytelling_container", - srcs = ["storytelling_container.cc"], - hdrs = ["storytelling_container.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction_container\\\"", - ], - deps = [ - "//modules/prediction/common:prediction_map", - "//modules/prediction/container", - "//modules/common_msgs/storytelling_msgs:story_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/cyberfile.xml b/modules/prediction/cyberfile.xml index 3dd4715a591..3fe277f9260 100644 --- a/modules/prediction/cyberfile.xml +++ b/modules/prediction/cyberfile.xml @@ -25,10 +25,12 @@ transform common-msgs libnuma-dev - 3rd-libtorch-gpu + 3rd-libtorch-gpu + 3rd-libtorch-cpu 3rd-mkl 3rd-pcl + 3rd-npp 3rd-rules-python diff --git a/modules/prediction/evaluator/BUILD b/modules/prediction/evaluator/BUILD deleted file mode 100644 index a1cdd8a1b06..00000000000 --- a/modules/prediction/evaluator/BUILD +++ /dev/null @@ -1,71 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "evaluator_manager", - srcs = ["evaluator_manager.cc"], - hdrs = ["evaluator_manager.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/common/configs:vehicle_config_helper", - "//modules/prediction/common:feature_output", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/common:prediction_thread_pool", - "//modules/prediction/common:semantic_map", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator/cyclist:cyclist_keep_lane_evaluator", - "//modules/prediction/evaluator/vehicle:cost_evaluator", - "//modules/prediction/evaluator/vehicle:cruise_mlp_evaluator", - "//modules/prediction/evaluator/vehicle:junction_map_evaluator", - "//modules/prediction/evaluator/vehicle:junction_mlp_evaluator", - "//modules/prediction/evaluator/vehicle:lane_aggregating_evaluator", - "//modules/prediction/evaluator/vehicle:lane_scanning_evaluator", - "//modules/prediction/evaluator/vehicle:mlp_evaluator", - "//modules/prediction/evaluator/vehicle:semantic_lstm_evaluator", - "//modules/prediction/evaluator/vehicle:jointly_prediction_planning_evaluator", - "//modules/prediction/evaluator/vehicle:vectornet_evaluator", - "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/prediction/pipeline:vector_net", - #"//third_party/libtorch", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ) -) - -cc_test( - name = "evaluator_manager_test", - size = "small", - srcs = ["evaluator_manager_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - linkopts = [ - "-lgomp", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator:evaluator_manager", - ], - linkstatic = True, -) - -cc_library( - name = "evaluator", - hdrs = ["evaluator.h"], - deps = [ - "//modules/prediction/container/obstacles:obstacle", - "//modules/prediction/container/adc_trajectory:adc_trajectory_container", - "//modules/prediction/evaluator/warm_up", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/evaluator/cyclist/BUILD b/modules/prediction/evaluator/cyclist/BUILD deleted file mode 100644 index af8da2d3bb5..00000000000 --- a/modules/prediction/evaluator/cyclist/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "cyclist_keep_lane_evaluator", - srcs = ["cyclist_keep_lane_evaluator.cc"], - hdrs = ["cyclist_keep_lane_evaluator.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - ], -) - -cc_test( - name = "cyclist_keep_lane_evaluator_test", - size = "small", - srcs = ["cyclist_keep_lane_evaluator_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":cyclist_keep_lane_evaluator", - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/container/obstacles:obstacles_container", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/evaluator/model_manager/BUILD b/modules/prediction/evaluator/model_manager/BUILD deleted file mode 100644 index 6b983f45478..00000000000 --- a/modules/prediction/evaluator/model_manager/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -load("//tools:cpplint.bzl", "cpplint") -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") - -package( - default_visibility = ["//visibility:public"], -) - -cc_library( - name = "model_manager", - srcs = ["model_manager.cc"], - hdrs = ["model_manager.h"], - deps = [ - "//cyber", - "//modules/prediction/common:prediction_system_gflags", - "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/prediction/evaluator/warm_up", - "//modules/prediction/evaluator/model_manager/model:model_base", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/evaluator/model_manager/model/BUILD b/modules/prediction/evaluator/model_manager/model/BUILD deleted file mode 100644 index c4340a8383f..00000000000 --- a/modules/prediction/evaluator/model_manager/model/BUILD +++ /dev/null @@ -1,23 +0,0 @@ -load("//tools:cpplint.bzl", "cpplint") -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") - -package( - default_visibility = ["//visibility:public"], -) - -cc_library( - name = "model_base", - srcs = ["libmodel_base.so"], - hdrs = ["model_base.h"], -) - -cc_binary( - name = "libmodel_base.so", - srcs = ["model_base.h"], - linkshared = True, - linkstatic = True, -) - -apollo_package() -cpplint() \ No newline at end of file diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/BUILD b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/BUILD index 8f6bfd2ee03..30e34440ad4 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/BUILD +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/BUILD @@ -1,7 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") +load("//tools/platform:build_defs.bzl", "if_aarch64", "if_gpu") package(default_visibility = ["//visibility:public"]) @@ -13,31 +12,16 @@ filegroup( ]) ) -cyber_plugin_description( - name = "plugin_model_description", - description = ":plugins.xml", - plugin = ":libmodel.so", -) - -cc_binary( +apollo_plugin( name = "libmodel.so", - linkshared = True, - linkstatic = True, - deps = [":model_lib"], -) - -cc_library( - name = "model_lib", srcs = ["semantic_lstm_pedestrian_torch_model.cc"], hdrs = ["semantic_lstm_pedestrian_torch_model.h"], + description = ":plugins.xml", deps = [ "//cyber", "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/prediction/evaluator/warm_up:warm_up", - "//modules/prediction/evaluator/model_manager/model:model_base", - "@libtorch_gpu", - ], - alwayslink = True, + "//modules/prediction:apollo_prediction", + ] + if_gpu(["@libtorch_gpu",], ["@libtorch_cpu",]), ) apollo_package() diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/conf/default_conf.pb.txt b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/conf/default_conf.pb.txt index dc86a7d72f8..535a85069c8 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/conf/default_conf.pb.txt +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/conf/default_conf.pb.txt @@ -1 +1 @@ -model_path: "/apollo/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/data/semantic_lstm_pedestrian_model_cpu.pt" \ No newline at end of file +model_path: "/apollo/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/data/semantic_lstm_pedestrian_cpu_model.pt" \ No newline at end of file diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/semantic_lstm_pedestrian_torch_model.cc b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/semantic_lstm_pedestrian_torch_model.cc index af7fe145da8..64609a213b3 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/semantic_lstm_pedestrian_torch_model.cc +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/semantic_lstm_pedestrian_torch_model.cc @@ -17,11 +17,12 @@ #include "modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_cpu/semantic_lstm_pedestrian_torch_model.h" #include -#include #include +#include -#include "cyber/common/file.h" #include "modules/prediction/proto/prediction_conf.pb.h" + +#include "cyber/common/file.h" #include "modules/prediction/evaluator/warm_up/warm_up.h" namespace apollo { @@ -37,10 +38,11 @@ bool SemanticLstmPedestrianCpuTorch::Init() { std::string class_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); + std::string default_config_path = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf/" + "default_conf.pb.txt"; + ->GetPluginConfPath(class_name, + "conf/default_conf.pb.txt"); if (!cyber::common::GetProtoFromFile(default_config_path, &model_config)) { AERROR << "Unable to load model conf file: " << default_config_path; @@ -53,7 +55,10 @@ bool SemanticLstmPedestrianCpuTorch::Init() { } bool SemanticLstmPedestrianCpuTorch::LoadModel() { - auto device = torch::Device(torch::kCUDA); + auto device = torch::Device(torch::kCPU); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } model_instance_ = torch::jit::load(model_path_, device); torch::set_num_threads(1); @@ -67,7 +72,7 @@ bool SemanticLstmPedestrianCpuTorch::LoadModel() { torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); // warm up to avoid very slow first inference later WarmUp(torch_inputs, &model_instance_, &torch_default_output_tensor); @@ -75,10 +80,8 @@ bool SemanticLstmPedestrianCpuTorch::LoadModel() { } bool SemanticLstmPedestrianCpuTorch::Inference( - const std::vector& input_buffer, - unsigned int input_size, - std::vector* output_buffer, - unsigned int output_size) { + const std::vector& input_buffer, unsigned int input_size, + std::vector* output_buffer, unsigned int output_size) { ACHECK(input_size == input_buffer.size() && input_size == 3); ACHECK(output_size == output_buffer->size() && output_size == 1); @@ -86,25 +89,26 @@ bool SemanticLstmPedestrianCpuTorch::Inference( Init(); } - auto device = torch::Device(torch::kCUDA); - torch::Tensor img_tensor = torch::from_blob( - input_buffer[0], {1, 3, 224, 224}); - torch::Tensor obstacle_pos = torch::from_blob( - input_buffer[1], {1, 20, 2}); - torch::Tensor obstacle_pos_step = torch::from_blob( - input_buffer[2], {1, 20, 2}); + auto device = torch::Device(torch::kCPU); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } + torch::Tensor img_tensor = + torch::from_blob(input_buffer[0], {1, 3, 224, 224}); + torch::Tensor obstacle_pos = torch::from_blob(input_buffer[1], {1, 20, 2}); + torch::Tensor obstacle_pos_step = + torch::from_blob(input_buffer[2], {1, 20, 2}); std::vector torch_inputs; torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); - torch::Tensor torch_output_tensor = model_instance_.forward(torch_inputs) - .toTensor() - .to(torch::kCPU); + torch::Tensor torch_output_tensor = + model_instance_.forward(torch_inputs).toTensor().to(torch::kCPU); memcpy((*output_buffer)[0], torch_output_tensor.data_ptr(), - 1*30*2*sizeof(float)); + 1 * 30 * 2 * sizeof(float)); return true; } diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/BUILD b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/BUILD index 8f6bfd2ee03..30e34440ad4 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/BUILD +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/BUILD @@ -1,7 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") +load("//tools/platform:build_defs.bzl", "if_aarch64", "if_gpu") package(default_visibility = ["//visibility:public"]) @@ -13,31 +12,16 @@ filegroup( ]) ) -cyber_plugin_description( - name = "plugin_model_description", - description = ":plugins.xml", - plugin = ":libmodel.so", -) - -cc_binary( +apollo_plugin( name = "libmodel.so", - linkshared = True, - linkstatic = True, - deps = [":model_lib"], -) - -cc_library( - name = "model_lib", srcs = ["semantic_lstm_pedestrian_torch_model.cc"], hdrs = ["semantic_lstm_pedestrian_torch_model.h"], + description = ":plugins.xml", deps = [ "//cyber", "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/prediction/evaluator/warm_up:warm_up", - "//modules/prediction/evaluator/model_manager/model:model_base", - "@libtorch_gpu", - ], - alwayslink = True, + "//modules/prediction:apollo_prediction", + ] + if_gpu(["@libtorch_gpu",], ["@libtorch_cpu",]), ) apollo_package() diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/semantic_lstm_pedestrian_torch_model.cc b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/semantic_lstm_pedestrian_torch_model.cc index 91a6386f51e..9438d48eaea 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/semantic_lstm_pedestrian_torch_model.cc +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/semantic_lstm_pedestrian_torch_model.cc @@ -17,11 +17,12 @@ #include "modules/prediction/evaluator/model_manager/model/semantic_lstm_pedestrian_torch_gpu/semantic_lstm_pedestrian_torch_model.h" #include -#include #include +#include -#include "cyber/common/file.h" #include "modules/prediction/proto/prediction_conf.pb.h" + +#include "cyber/common/file.h" #include "modules/prediction/evaluator/warm_up/warm_up.h" namespace apollo { @@ -37,10 +38,11 @@ bool SemanticLstmPedestrianGpuTorch::Init() { std::string class_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); + std::string default_config_path = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf/" + "default_conf.pb.txt"; + ->GetPluginConfPath(class_name, + "conf/default_conf.pb.txt"); if (!cyber::common::GetProtoFromFile(default_config_path, &model_config)) { AERROR << "Unable to load model conf file: " << default_config_path; @@ -53,7 +55,10 @@ bool SemanticLstmPedestrianGpuTorch::Init() { } bool SemanticLstmPedestrianGpuTorch::LoadModel() { - auto device = torch::Device(torch::kCUDA); + auto device = torch::Device(torch::kCPU); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } model_instance_ = torch::jit::load(model_path_, device); @@ -68,7 +73,7 @@ bool SemanticLstmPedestrianGpuTorch::LoadModel() { torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); // warm up to avoid very slow first inference later WarmUp(torch_inputs, &model_instance_, &torch_default_output_tensor); @@ -76,10 +81,8 @@ bool SemanticLstmPedestrianGpuTorch::LoadModel() { } bool SemanticLstmPedestrianGpuTorch::Inference( - const std::vector& input_buffer, - unsigned int input_size, - std::vector* output_buffer, - unsigned int output_size) { + const std::vector& input_buffer, unsigned int input_size, + std::vector* output_buffer, unsigned int output_size) { ACHECK(input_size == input_buffer.size() && input_size == 3); ACHECK(output_size == output_buffer->size() && output_size == 1); @@ -87,25 +90,26 @@ bool SemanticLstmPedestrianGpuTorch::Inference( Init(); } - auto device = torch::Device(torch::kCUDA); - torch::Tensor img_tensor = torch::from_blob( - input_buffer[0], {1, 3, 224, 224}); - torch::Tensor obstacle_pos = torch::from_blob( - input_buffer[1], {1, 20, 2}); - torch::Tensor obstacle_pos_step = torch::from_blob( - input_buffer[2], {1, 20, 2}); + auto device = torch::Device(torch::kCPU); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } + torch::Tensor img_tensor = + torch::from_blob(input_buffer[0], {1, 3, 224, 224}); + torch::Tensor obstacle_pos = torch::from_blob(input_buffer[1], {1, 20, 2}); + torch::Tensor obstacle_pos_step = + torch::from_blob(input_buffer[2], {1, 20, 2}); std::vector torch_inputs; torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); - torch::Tensor torch_output_tensor = model_instance_.forward(torch_inputs) - .toTensor() - .to(torch::kCPU); + torch::Tensor torch_output_tensor = + model_instance_.forward(torch_inputs).toTensor().to(torch::kCPU); memcpy((*output_buffer)[0], torch_output_tensor.data_ptr(), - 1*30*2*sizeof(float)); + 1 * 30 * 2 * sizeof(float)); return true; } diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/BUILD b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/BUILD index e93b2b1ed27..18389d9bdbe 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/BUILD +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/BUILD @@ -1,7 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") +load("//tools/platform:build_defs.bzl", "if_aarch64", "if_gpu") package(default_visibility = ["//visibility:public"]) @@ -13,31 +12,16 @@ filegroup( ]) ) -cyber_plugin_description( - name = "plugin_model_description", - description = ":plugins.xml", - plugin = ":libmodel.so", -) - -cc_binary( +apollo_plugin( name = "libmodel.so", - linkshared = True, - linkstatic = True, - deps = [":model_lib"], -) - -cc_library( - name = "model_lib", srcs = ["semantic_lstm_vehicle_torch_model.cc"], hdrs = ["semantic_lstm_vehicle_torch_model.h"], + description = ":plugins.xml", deps = [ "//cyber", "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/prediction/evaluator/warm_up:warm_up", - "//modules/prediction/evaluator/model_manager/model:model_base", - "@libtorch_gpu", - ], - alwayslink = True, + "//modules/prediction:apollo_prediction", + ] + if_gpu(["@libtorch_gpu",], ["@libtorch_cpu",]), ) apollo_package() diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/semantic_lstm_vehicle_torch_model.cc b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/semantic_lstm_vehicle_torch_model.cc index f120a2cc566..1c94bed12ec 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/semantic_lstm_vehicle_torch_model.cc +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/semantic_lstm_vehicle_torch_model.cc @@ -17,11 +17,12 @@ #include "modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_cpu/semantic_lstm_vehicle_torch_model.h" #include -#include #include +#include -#include "cyber/common/file.h" #include "modules/prediction/proto/prediction_conf.pb.h" + +#include "cyber/common/file.h" #include "modules/prediction/evaluator/warm_up/warm_up.h" namespace apollo { @@ -37,10 +38,11 @@ bool SemanticLstmVehicleCpuTorch::Init() { std::string class_name = abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); + std::string default_config_path = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf/" + "default_conf.pb.txt"; + ->GetPluginConfPath(class_name, + "conf/default_conf.pb.txt"); if (!cyber::common::GetProtoFromFile(default_config_path, &model_config)) { AERROR << "Unable to load model conf file: " << default_config_path; @@ -54,6 +56,9 @@ bool SemanticLstmVehicleCpuTorch::Init() { bool SemanticLstmVehicleCpuTorch::LoadModel() { auto device = torch::Device(torch::kCPU); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } model_instance_ = torch::jit::load(model_path_, device); @@ -68,7 +73,7 @@ bool SemanticLstmVehicleCpuTorch::LoadModel() { torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); // warm up to avoid very slow first inference later WarmUp(torch_inputs, &model_instance_, &torch_default_output_tensor); @@ -76,10 +81,8 @@ bool SemanticLstmVehicleCpuTorch::LoadModel() { } bool SemanticLstmVehicleCpuTorch::Inference( - const std::vector& input_buffer, - unsigned int input_size, - std::vector* output_buffer, - unsigned int output_size) { + const std::vector& input_buffer, unsigned int input_size, + std::vector* output_buffer, unsigned int output_size) { ACHECK(input_size == input_buffer.size() && input_size == 3); ACHECK(output_size == output_buffer->size() && output_size == 1); @@ -88,24 +91,25 @@ bool SemanticLstmVehicleCpuTorch::Inference( } auto device = torch::Device(torch::kCPU); - torch::Tensor img_tensor = torch::from_blob( - input_buffer[0], {1, 3, 224, 224}); - torch::Tensor obstacle_pos = torch::from_blob( - input_buffer[1], {1, 20, 2}); - torch::Tensor obstacle_pos_step = torch::from_blob( - input_buffer[2], {1, 20, 2}); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } + torch::Tensor img_tensor = + torch::from_blob(input_buffer[0], {1, 3, 224, 224}); + torch::Tensor obstacle_pos = torch::from_blob(input_buffer[1], {1, 20, 2}); + torch::Tensor obstacle_pos_step = + torch::from_blob(input_buffer[2], {1, 20, 2}); std::vector torch_inputs; torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); - torch::Tensor torch_output_tensor = model_instance_.forward(torch_inputs) - .toTensor() - .to(torch::kCPU); + torch::Tensor torch_output_tensor = + model_instance_.forward(torch_inputs).toTensor().to(torch::kCPU); memcpy((*output_buffer)[0], torch_output_tensor.data_ptr(), - 1*30*2*sizeof(float)); + 1 * 30 * 2 * sizeof(float)); return true; } diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/BUILD b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/BUILD index e93b2b1ed27..18389d9bdbe 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/BUILD +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/BUILD @@ -1,7 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo.bzl", "cyber_plugin_description") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_plugin") +load("//tools/platform:build_defs.bzl", "if_aarch64", "if_gpu") package(default_visibility = ["//visibility:public"]) @@ -13,31 +12,16 @@ filegroup( ]) ) -cyber_plugin_description( - name = "plugin_model_description", - description = ":plugins.xml", - plugin = ":libmodel.so", -) - -cc_binary( +apollo_plugin( name = "libmodel.so", - linkshared = True, - linkstatic = True, - deps = [":model_lib"], -) - -cc_library( - name = "model_lib", srcs = ["semantic_lstm_vehicle_torch_model.cc"], hdrs = ["semantic_lstm_vehicle_torch_model.h"], + description = ":plugins.xml", deps = [ "//cyber", "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/prediction/evaluator/warm_up:warm_up", - "//modules/prediction/evaluator/model_manager/model:model_base", - "@libtorch_gpu", - ], - alwayslink = True, + "//modules/prediction:apollo_prediction", + ] + if_gpu(["@libtorch_gpu",], ["@libtorch_cpu",]), ) apollo_package() diff --git a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/semantic_lstm_vehicle_torch_model.cc b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/semantic_lstm_vehicle_torch_model.cc index 0547d89d404..01e5e784e26 100644 --- a/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/semantic_lstm_vehicle_torch_model.cc +++ b/modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/semantic_lstm_vehicle_torch_model.cc @@ -17,11 +17,12 @@ #include "modules/prediction/evaluator/model_manager/model/semantic_lstm_vehicle_torch_gpu/semantic_lstm_vehicle_torch_model.h" #include -#include #include +#include -#include "cyber/common/file.h" #include "modules/prediction/proto/prediction_conf.pb.h" + +#include "cyber/common/file.h" #include "modules/prediction/evaluator/warm_up/warm_up.h" namespace apollo { @@ -39,8 +40,8 @@ bool SemanticLstmVehicleGpuTorch::Init() { abi::__cxa_demangle(typeid(*this).name(), 0, 0, &status); std::string default_config_path = apollo::cyber::plugin_manager::PluginManager::Instance() - ->GetPluginClassHomePath(class_name) + - "/conf/" + "default_conf.pb.txt"; + ->GetPluginConfPath(class_name, + "conf/default_conf.pb.txt"); if (!cyber::common::GetProtoFromFile(default_config_path, &model_config)) { AERROR << "Unable to load model conf file: " << default_config_path; @@ -53,7 +54,10 @@ bool SemanticLstmVehicleGpuTorch::Init() { } bool SemanticLstmVehicleGpuTorch::LoadModel() { - auto device = torch::Device(torch::kCUDA); + auto device = torch::Device(torch::kCPU); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } model_instance_ = torch::jit::load(model_path_, device); @@ -68,7 +72,7 @@ bool SemanticLstmVehicleGpuTorch::LoadModel() { torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); // warm up to avoid very slow first inference later WarmUp(torch_inputs, &model_instance_, &torch_default_output_tensor); @@ -76,10 +80,8 @@ bool SemanticLstmVehicleGpuTorch::LoadModel() { } bool SemanticLstmVehicleGpuTorch::Inference( - const std::vector& input_buffer, - unsigned int input_size, - std::vector* output_buffer, - unsigned int output_size) { + const std::vector& input_buffer, unsigned int input_size, + std::vector* output_buffer, unsigned int output_size) { ACHECK(input_size == input_buffer.size() && input_size == 3); ACHECK(output_size == output_buffer->size() && output_size == 1); @@ -87,25 +89,26 @@ bool SemanticLstmVehicleGpuTorch::Inference( Init(); } - auto device = torch::Device(torch::kCUDA); - torch::Tensor img_tensor = torch::from_blob( - input_buffer[0], {1, 3, 224, 224}); - torch::Tensor obstacle_pos = torch::from_blob( - input_buffer[1], {1, 20, 2}); - torch::Tensor obstacle_pos_step = torch::from_blob( - input_buffer[2], {1, 20, 2}); + auto device = torch::Device(torch::kCPU); + if (torch::cuda::is_available()) { + device = torch::Device(torch::kCUDA); + } + torch::Tensor img_tensor = + torch::from_blob(input_buffer[0], {1, 3, 224, 224}); + torch::Tensor obstacle_pos = torch::from_blob(input_buffer[1], {1, 20, 2}); + torch::Tensor obstacle_pos_step = + torch::from_blob(input_buffer[2], {1, 20, 2}); std::vector torch_inputs; torch_inputs.push_back(c10::ivalue::Tuple::create( {std::move(img_tensor.to(device)), std::move(obstacle_pos.to(device)), - std::move(obstacle_pos_step.to(device))})); + std::move(obstacle_pos_step.to(device))})); - torch::Tensor torch_output_tensor = model_instance_.forward(torch_inputs) - .toTensor() - .to(torch::kCPU); + torch::Tensor torch_output_tensor = + model_instance_.forward(torch_inputs).toTensor().to(torch::kCPU); memcpy((*output_buffer)[0], torch_output_tensor.data_ptr(), - 1*30*2*sizeof(float)); + 1 * 30 * 2 * sizeof(float)); return true; } diff --git a/modules/prediction/evaluator/pedestrian/BUILD b/modules/prediction/evaluator/pedestrian/BUILD deleted file mode 100644 index 1d1fea0d050..00000000000 --- a/modules/prediction/evaluator/pedestrian/BUILD +++ /dev/null @@ -1,44 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "pedestrian_interaction_evaluator", - srcs = ["pedestrian_interaction_evaluator.cc"], - hdrs = ["pedestrian_interaction_evaluator.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - #"//third_party/libtorch", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_test( - name = "pedestrian_interaction_evaluator_test", - size = "small", - srcs = ["pedestrian_interaction_evaluator_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":pedestrian_interaction_evaluator", - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/container/obstacles:obstacles_container", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/prediction/evaluator/vehicle/BUILD b/modules/prediction/evaluator/vehicle/BUILD deleted file mode 100644 index 60a22fac6ab..00000000000 --- a/modules/prediction/evaluator/vehicle/BUILD +++ /dev/null @@ -1,247 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu", "if_aarch64") - -package(default_visibility = ["//visibility:public"]) -PREDICTION_COPTS = ["-DMODULE_NAME=\\\"prediction\\\""] -PREDICTION_FOPENMP_COPTS = ["-DMODULE_NAME=\\\"prediction\\\"","-fopenmp"] - -cc_library( - name = "mlp_evaluator", - srcs = ["mlp_evaluator.cc"], - hdrs = ["mlp_evaluator.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/prediction/common:feature_output", - "//modules/prediction/common:prediction_util", - "//modules/prediction/common:validation_checker", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - "//modules/prediction/proto:fnn_vehicle_model_cc_proto", - ], -) - -cc_test( - name = "mlp_evaluator_test", - size = "small", - srcs = ["mlp_evaluator_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:mlp_evaluator", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "cost_evaluator", - srcs = ["cost_evaluator.cc"], - hdrs = ["cost_evaluator.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - ], -) - -cc_test( - name = "cost_evaluator_test", - size = "small", - srcs = ["cost_evaluator_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:cost_evaluator", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "junction_mlp_evaluator", - srcs = ["junction_mlp_evaluator.cc"], - hdrs = ["junction_mlp_evaluator.h"], - copts = PREDICTION_FOPENMP_COPTS, - deps = [ - "//modules/common/math", - "//modules/prediction/common:feature_output", - "//modules/prediction/common:prediction_util", - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - #"//third_party/libtorch", - # "//miodules/common/adapters/proto:adapter_config_proto_lib", - "//modules/common/adapters:adapter_gflags", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_test( - name = "junction_mlp_evaluator_test", - size = "small", - srcs = ["junction_mlp_evaluator_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - linkopts = [ - "-lgomp", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:junction_mlp_evaluator", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_library( - name = "junction_map_evaluator", - srcs = ["junction_map_evaluator.cc"], - hdrs = ["junction_map_evaluator.h"], - copts = PREDICTION_FOPENMP_COPTS, - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/common:semantic_map", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - #"//third_party/libtorch", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_library( - name = "cruise_mlp_evaluator", - srcs = ["cruise_mlp_evaluator.cc"], - hdrs = ["cruise_mlp_evaluator.h"], - copts = PREDICTION_FOPENMP_COPTS, - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - #"//third_party/libtorch", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_test( - name = "cruise_mlp_evaluator_test", - size = "small", - srcs = ["cruise_mlp_evaluator_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - linkopts = [ - "-lgomp", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:cruise_mlp_evaluator", - ], - linkstatic = True, -) - -cc_library( - name = "lane_scanning_evaluator", - srcs = ["lane_scanning_evaluator.cc"], - hdrs = ["lane_scanning_evaluator.h"], - copts = PREDICTION_FOPENMP_COPTS, - deps = [ - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - #"//third_party/libtorch", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_library( - name = "lane_aggregating_evaluator", - srcs = ["lane_aggregating_evaluator.cc"], - hdrs = ["lane_aggregating_evaluator.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - #"//third_party/libtorch", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_library( - name = "semantic_lstm_evaluator", - srcs = ["semantic_lstm_evaluator.cc"], - hdrs = ["semantic_lstm_evaluator.h"], - copts = PREDICTION_FOPENMP_COPTS, - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/common:semantic_map", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - #"//third_party/libtorch", - "@eigen", - "//modules/prediction/evaluator/model_manager", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"],) -) - -cc_library( - name = "jointly_prediction_planning_evaluator", - srcs = ["jointly_prediction_planning_evaluator.cc"], - hdrs = ["jointly_prediction_planning_evaluator.h"], - copts = PREDICTION_FOPENMP_COPTS, - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/common:semantic_map", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - "//modules/prediction/pipeline:vector_net", - #"//third_party/libtorch", - "@eigen", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -cc_library( - name = "vectornet_evaluator", - srcs = ["vectornet_evaluator.cc"], - hdrs = ["vectornet_evaluator.h"], - copts = PREDICTION_FOPENMP_COPTS, - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator", - "//modules/prediction/pipeline:vector_net", - #"//third_party/libtorch", - "@eigen", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -apollo_package() -cpplint() diff --git a/modules/prediction/evaluator/warm_up/BUILD b/modules/prediction/evaluator/warm_up/BUILD deleted file mode 100644 index 17e798f0d84..00000000000 --- a/modules/prediction/evaluator/warm_up/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("//tools:cpplint.bzl", "cpplint") -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools/platform:build_defs.bzl", "if_gpu") - -package(default_visibility = ["//visibility:public"]) - -PREDICTION_COPTS = ["-DMODULE_NAME=\\\"prediction\\\""] - -cc_library( - name = "warm_up", - srcs = ["warm_up.cc"], - hdrs = ["warm_up.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/prediction/common:prediction_util", - ] + if_gpu( - ["@libtorch_gpu"], - ["@libtorch_cpu"], - ), -) - -apollo_package() -cpplint() diff --git a/modules/prediction/network/BUILD b/modules/prediction/network/BUILD deleted file mode 100644 index 437a0a9153f..00000000000 --- a/modules/prediction/network/BUILD +++ /dev/null @@ -1,64 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PREDICTION_COPTS = ["-DMODULE_NAME=\\\"prediction\\\""] - -cc_library( - name = "net_util", - srcs = ["net_util.cc"], - hdrs = ["net_util.h"], - copts = PREDICTION_COPTS, - deps = [ - "//cyber", - "//modules/prediction/proto:network_layers_cc_proto", - "@eigen", - ], -) - -cc_library( - name = "net_layer", - srcs = ["net_layer.cc"], - hdrs = ["net_layer.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/prediction/network:net_util", - ], -) - -cc_library( - name = "net_model", - srcs = ["net_model.cc"], - hdrs = ["net_model.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/common/util", - "//modules/prediction/network:net_layer", - "//modules/prediction/proto:network_model_cc_proto", - ], -) - -cc_test( - name = "net_util_test", - size = "small", - srcs = ["net_util_test.cc"], - deps = [ - "//modules/prediction/network:net_util", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -cc_test( - name = "net_layer_test", - size = "small", - srcs = ["net_layer_test.cc"], - deps = [ - "//modules/prediction/network:net_layer", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/network/rnn_model/BUILD b/modules/prediction/network/rnn_model/BUILD deleted file mode 100644 index 63fe9f6ab40..00000000000 --- a/modules/prediction/network/rnn_model/BUILD +++ /dev/null @@ -1,32 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "rnn_model", - srcs = ["rnn_model.cc"], - hdrs = ["rnn_model.h"], - deps = [ - "//cyber", - "//modules/prediction/network:net_model", - ], -) - -cc_test( - name = "rnn_model_test", - size = "small", - srcs = ["rnn_model_test.cc"], - data = [ - "//modules/prediction:prediction_data", - ], - deps = [ - "//cyber", - "//modules/prediction/network/rnn_model", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/pipeline/BUILD b/modules/prediction/pipeline/BUILD deleted file mode 100644 index d03730ec7c0..00000000000 --- a/modules/prediction/pipeline/BUILD +++ /dev/null @@ -1,75 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "prediction/bin", -# targets = [ -# ":records_to_offline_data", -# ":vector_net_feature", -# ":vector_net_offline_data", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_binary( - name = "records_to_offline_data", - srcs = ["records_to_offline_data.cc"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - linkopts = [ - "-lgomp", - ], - deps = [ - "//modules/prediction/common:message_process", - "@boost", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "vector_net", - srcs = ["vector_net.cc"], - hdrs = ["vector_net.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//cyber", - "//modules/common/math", - "//modules/common/util", - "//modules/map/hdmap:hdmap_util", - "//modules/prediction/common:prediction_system_gflags", - "//modules/prediction/proto:vector_net_cc_proto", - ], -) - -cc_binary( - name = "vector_net_feature", - srcs = ["vector_net_feature.cc"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - ":vector_net", - ], -) - -cc_binary( - name = "vector_net_offline_data", - srcs = ["vector_net_offline_data.cc"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - ":vector_net", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/prediction.BUILD b/modules/prediction/prediction.BUILD deleted file mode 100644 index 804985796ca..00000000000 --- a/modules/prediction/prediction.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "prediction", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/lib*.so*"]), - include_prefix = "modules/prediction", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/prediction/predictor/BUILD b/modules/prediction/predictor/BUILD deleted file mode 100644 index d6f853bcfba..00000000000 --- a/modules/prediction/predictor/BUILD +++ /dev/null @@ -1,64 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "predictor_manager", - srcs = ["predictor_manager.cc"], - hdrs = ["predictor_manager.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/common:feature_output", - "//modules/prediction/common:prediction_thread_pool", - "//modules/prediction/predictor/empty:empty_predictor", - "//modules/prediction/predictor/extrapolation:extrapolation_predictor", - "//modules/prediction/predictor/free_move:free_move_predictor", - "//modules/prediction/predictor/interaction:interaction_predictor", - "//modules/prediction/predictor/junction:junction_predictor", - "//modules/prediction/predictor/lane_sequence:lane_sequence_predictor", - "//modules/prediction/predictor/move_sequence:move_sequence_predictor", - "//modules/prediction/predictor/single_lane:single_lane_predictor", - "//modules/prediction/proto:prediction_conf_cc_proto", - "//modules/prediction/scenario:scenario_manager", - ], -) - -cc_test( - name = "predictor_manager_test", - size = "small", - srcs = ["predictor_manager_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - linkopts = [ - "-lgomp", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator:evaluator_manager", - "//modules/prediction/predictor:predictor_manager", - ], - linkstatic = True, -) - -cc_library( - name = "predictor", - srcs = ["predictor.cc"], - hdrs = ["predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/container/adc_trajectory:adc_trajectory_container", - "//modules/prediction/container/obstacles:obstacle", - "//modules/prediction/container/obstacles:obstacles_container", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/empty/BUILD b/modules/prediction/predictor/empty/BUILD deleted file mode 100644 index 941307831fc..00000000000 --- a/modules/prediction/predictor/empty/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "empty_predictor", - srcs = ["empty_predictor.cc"], - hdrs = ["empty_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/predictor", - ], -) - -cc_test( - name = "empty_predictor_test", - size = "small", - srcs = ["empty_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator/vehicle:mlp_evaluator", - "//modules/prediction/predictor/empty:empty_predictor", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/extrapolation/BUILD b/modules/prediction/predictor/extrapolation/BUILD deleted file mode 100644 index 76fbaa2a597..00000000000 --- a/modules/prediction/predictor/extrapolation/BUILD +++ /dev/null @@ -1,27 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "extrapolation_predictor", - srcs = ["extrapolation_predictor.cc"], - hdrs = ["extrapolation_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/common/math", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/common:prediction_map", - "//modules/prediction/common:prediction_util", - "//modules/prediction/container/obstacles:obstacle_clusters", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/predictor/sequence:sequence_predictor", - "//modules/common_msgs/prediction_msgs:lane_graph_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/free_move/BUILD b/modules/prediction/predictor/free_move/BUILD deleted file mode 100644 index 6b48f8dde49..00000000000 --- a/modules/prediction/predictor/free_move/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "free_move_predictor", - srcs = ["free_move_predictor.cc"], - hdrs = ["free_move_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/predictor", - ], -) - -cc_test( - name = "free_move_predictor_test", - size = "small", - srcs = ["free_move_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/predictor/free_move:free_move_predictor", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/interaction/BUILD b/modules/prediction/predictor/interaction/BUILD deleted file mode 100644 index 698aff93fe2..00000000000 --- a/modules/prediction/predictor/interaction/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "interaction_predictor", - srcs = ["interaction_predictor.cc"], - hdrs = ["interaction_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/common/adapters:adapter_gflags", - # "//modules/common/adapters/proto:adapter_config_proto_lib", - "//modules/prediction/common:feature_output", - "//modules/prediction/common:prediction_util", - "//modules/prediction/predictor/sequence:sequence_predictor", - ], -) - -cc_test( - name = "interaction_predictor_test", - size = "small", - srcs = ["interaction_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:mlp_evaluator", - "//modules/prediction/predictor/interaction:interaction_predictor", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/junction/BUILD b/modules/prediction/predictor/junction/BUILD deleted file mode 100644 index a9d5f259361..00000000000 --- a/modules/prediction/predictor/junction/BUILD +++ /dev/null @@ -1,42 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "junction_predictor", - srcs = ["junction_predictor.cc"], - hdrs = ["junction_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/predictor", - ], -) - -cc_test( - name = "junction_predictor_test", - size = "small", - srcs = ["junction_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - linkopts = [ - "-lgomp", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/evaluator/vehicle:junction_mlp_evaluator", - "//modules/prediction/predictor/junction:junction_predictor", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/lane_sequence/BUILD b/modules/prediction/predictor/lane_sequence/BUILD deleted file mode 100644 index 756bbbf3abb..00000000000 --- a/modules/prediction/predictor/lane_sequence/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "lane_sequence_predictor", - srcs = ["lane_sequence_predictor.cc"], - hdrs = ["lane_sequence_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/common:validation_checker", - "//modules/prediction/predictor/sequence:sequence_predictor", - ], -) - -cc_test( - name = "lane_sequence_predictor_test", - size = "small", - srcs = ["lane_sequence_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:mlp_evaluator", - "//modules/prediction/predictor/lane_sequence:lane_sequence_predictor", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/move_sequence/BUILD b/modules/prediction/predictor/move_sequence/BUILD deleted file mode 100644 index 78c48e1268e..00000000000 --- a/modules/prediction/predictor/move_sequence/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "move_sequence_predictor", - srcs = ["move_sequence_predictor.cc"], - hdrs = ["move_sequence_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/common:prediction_util", - "//modules/prediction/predictor/sequence:sequence_predictor", - ], -) - -cc_test( - name = "move_sequence_predictor_test", - size = "small", - srcs = ["move_sequence_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:mlp_evaluator", - "//modules/prediction/predictor/move_sequence:move_sequence_predictor", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/sequence/BUILD b/modules/prediction/predictor/sequence/BUILD deleted file mode 100644 index 15f94275de9..00000000000 --- a/modules/prediction/predictor/sequence/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "sequence_predictor", - srcs = ["sequence_predictor.cc"], - hdrs = ["sequence_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/container:container_manager", - "//modules/prediction/predictor", - ], -) - -cc_test( - name = "sequence_predictor_test", - size = "small", - srcs = ["sequence_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/evaluator/vehicle:mlp_evaluator", - "//modules/prediction/predictor/sequence:sequence_predictor", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/predictor/single_lane/BUILD b/modules/prediction/predictor/single_lane/BUILD deleted file mode 100644 index 7985cdf4da2..00000000000 --- a/modules/prediction/predictor/single_lane/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "single_lane_predictor", - srcs = ["single_lane_predictor.cc"], - hdrs = ["single_lane_predictor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/predictor/sequence:sequence_predictor", - ], -) - -cc_test( - name = "single_lane_predictor_test", - size = "small", - srcs = ["single_lane_predictor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - "//modules/prediction/common:kml_map_based_test", - "//modules/prediction/evaluator/vehicle:cost_evaluator", - "//modules/prediction/predictor/single_lane:single_lane_predictor", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/scenario/BUILD b/modules/prediction/scenario/BUILD deleted file mode 100644 index 617b168f124..00000000000 --- a/modules/prediction/scenario/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "scenario_manager", - srcs = ["scenario_manager.cc"], - hdrs = ["scenario_manager.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/scenario/analyzer:scenario_analyzer", - "//modules/prediction/scenario/feature_extractor", - "//modules/prediction/scenario/interaction_filter:interaction_filter", - "//modules/prediction/scenario/prioritization:obstacles_prioritizer", - "//modules/prediction/scenario/right_of_way", - ], -) - -cc_test( - name = "scenario_manager_test", - size = "small", - srcs = ["scenario_manager_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":scenario_manager", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/scenario/analyzer/BUILD b/modules/prediction/scenario/analyzer/BUILD deleted file mode 100644 index f32fea55c70..00000000000 --- a/modules/prediction/scenario/analyzer/BUILD +++ /dev/null @@ -1,36 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "scenario_analyzer", - srcs = ["scenario_analyzer.cc"], - hdrs = ["scenario_analyzer.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/scenario/scenario_features:cruise_scenario_features", - "//modules/prediction/scenario/scenario_features:junction_scenario_features", - ], -) - -cc_test( - name = "scenario_analyzer_test", - size = "small", - srcs = ["scenario_analyzer_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":scenario_analyzer", - "//modules/prediction/common:kml_map_based_test", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/scenario/feature_extractor/BUILD b/modules/prediction/scenario/feature_extractor/BUILD deleted file mode 100644 index 4baed4e477a..00000000000 --- a/modules/prediction/scenario/feature_extractor/BUILD +++ /dev/null @@ -1,34 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "feature_extractor", - srcs = ["feature_extractor.cc"], - hdrs = ["feature_extractor.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/container:container_manager", - ], -) - -cc_test( - name = "feature_extractor_test", - size = "small", - srcs = ["feature_extractor_test.cc"], - data = [ - "//modules/prediction:prediction_data", - "//modules/prediction:prediction_testdata", - ], - deps = [ - ":feature_extractor", - "//modules/prediction/common:kml_map_based_test", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/scenario/interaction_filter/BUILD b/modules/prediction/scenario/interaction_filter/BUILD deleted file mode 100644 index c40809a214c..00000000000 --- a/modules/prediction/scenario/interaction_filter/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "interaction_filter", - srcs = ["interaction_filter.cc"], - hdrs = ["interaction_filter.h"], - copts = ['-DMODULE_NAME=\\"prediction\\"'], - deps = [ - "//modules/prediction/common:environment_features", - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacle_clusters", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/container/pose:pose_container", - "//modules/prediction/scenario/scenario_features", - "//modules/prediction/scenario/scenario_features:cruise_scenario_features", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/scenario/prioritization/BUILD b/modules/prediction/scenario/prioritization/BUILD deleted file mode 100644 index 4688e7154b5..00000000000 --- a/modules/prediction/scenario/prioritization/BUILD +++ /dev/null @@ -1,24 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "obstacles_prioritizer", - srcs = ["obstacles_prioritizer.cc"], - hdrs = ["obstacles_prioritizer.h"], - copts = ['-DMODULE_NAME=\\"prediction\\"'], - deps = [ - "//modules/prediction/common:environment_features", - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacle_clusters", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/container/pose:pose_container", - "//modules/prediction/scenario/scenario_features", - "//modules/prediction/scenario/scenario_features:cruise_scenario_features", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/scenario/right_of_way/BUILD b/modules/prediction/scenario/right_of_way/BUILD deleted file mode 100644 index c8649511bfd..00000000000 --- a/modules/prediction/scenario/right_of_way/BUILD +++ /dev/null @@ -1,22 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "right_of_way", - srcs = ["right_of_way.cc"], - hdrs = ["right_of_way.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/prediction/container:container_manager", - "//modules/prediction/container/obstacles:obstacles_container", - "//modules/prediction/container/pose:pose_container", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/scenario/scenario_features/BUILD b/modules/prediction/scenario/scenario_features/BUILD deleted file mode 100644 index 7dea7ca214a..00000000000 --- a/modules/prediction/scenario/scenario_features/BUILD +++ /dev/null @@ -1,57 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "scenario_features", - srcs = ["scenario_features.cc"], - hdrs = ["scenario_features.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - "//modules/common_msgs/prediction_msgs:scenario_cc_proto", - ], -) - -cc_library( - name = "cruise_scenario_features", - srcs = ["cruise_scenario_features.cc"], - hdrs = ["cruise_scenario_features.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - ":scenario_features", - "//modules/prediction/common:environment_features", - "//modules/prediction/common:prediction_map", - ], -) - -cc_library( - name = "junction_scenario_features", - srcs = ["junction_scenario_features.cc"], - hdrs = ["junction_scenario_features.h"], - copts = [ - "-DMODULE_NAME=\\\"prediction\\\"", - ], - deps = [ - ":scenario_features", - "//modules/prediction/common:environment_features", - ], -) - -cc_test( - name = "cruise_scenario_features_test", - size = "small", - srcs = ["cruise_scenario_features_test.cc"], - deps = [ - ":cruise_scenario_features", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/prediction/submodules/BUILD b/modules/prediction/submodules/BUILD deleted file mode 100644 index d8351df2eb9..00000000000 --- a/modules/prediction/submodules/BUILD +++ /dev/null @@ -1,101 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -PREDICTION_COPTS = ["-DMODULE_NAME=\\\"prediction\\\""] - -# install( -# name = "install", -# library_dest = "prediction/lib", -# targets = [ -# ":evaluator_submodule.so", -# ":predictor_submodule.so", -# ":prediction_lego.so", -# ], -# visibility = ["//visibility:public"], -# ) - -cc_library( - name = "submodule_output", - srcs = ["submodule_output.cc"], - hdrs = ["submodule_output.h"], - copts = PREDICTION_COPTS, - deps = [ - "//modules/common/util:util_tool", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/container/obstacles:obstacle", - ], -) - -cc_library( - name = "evaluator_submodule_lib", - srcs = ["evaluator_submodule.cc"], - hdrs = ["evaluator_submodule.h"], - copts = PREDICTION_COPTS, - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - # "//modules/common/adapters/proto:adapter_config_proto_lib", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/prediction/common:message_process", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/evaluator:evaluator_manager", - ], - alwayslink = True, -) - -cc_binary( - name = "evaluator_submodule.so", - linkshared = True, - linkstatic = True, - deps = [":evaluator_submodule_lib"], -) - -cc_library( - name = "predictor_submodule_lib", - srcs = ["predictor_submodule.cc"], - hdrs = ["predictor_submodule.h"], - copts = PREDICTION_COPTS, - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - # "//modules/common/adapters/proto:adapter_config_proto_lib", - "//modules/common/util:util_tool", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/prediction/common:message_process", - "//modules/prediction/common:prediction_gflags", - "//modules/prediction/container/adc_trajectory:adc_trajectory_container", - "//modules/prediction/predictor:predictor_manager", - "//modules/common_msgs/prediction_msgs:prediction_obstacle_cc_proto", - ], - alwayslink = True, -) - -cc_binary( - name = "predictor_submodule.so", - linkshared = True, - linkstatic = True, - deps = [":evaluator_submodule_lib"], -) - -cc_library( - name = "prediction_lego_lib", - deps = [ - ":evaluator_submodule_lib", - ":predictor_submodule_lib", - "//modules/prediction:prediction_component_lib", - ], -) - -cc_binary( - name = "prediction_lego.so", - linkshared = True, - linkstatic = True, - deps = [":prediction_lego_lib"], -) - -apollo_package() -cpplint() diff --git a/modules/routing/BUILD b/modules/routing/BUILD index 145c6987a30..35af2f1eb94 100644 --- a/modules/routing/BUILD +++ b/modules/routing/BUILD @@ -1,65 +1,77 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) ROUTING_COPTS = ['-DMODULE_NAME=\\"routing\\"'] -cc_library( - name = "routing", - srcs = [":librouting.so"], - hdrs = ["routing.h"], - alwayslink = True, - deps = [ - "//modules/common/adapters:adapter_gflags", - "//modules/common/monitor_log", - "//modules/common/util", - "//modules/map/hdmap:hdmap_util", - "//modules/routing/core", - "//modules/routing/proto:routing_config_cc_proto", - "//modules/common_msgs/monitor_msgs:monitor_log_cc_proto", - ], -) - -cc_binary( - name = "librouting.so", +apollo_cc_library( + name = "apollo_routing", srcs = [ "routing.cc", + "topo_creator/edge_creator.cc", + "topo_creator/graph_creator.cc", + "topo_creator/node_creator.cc", + "common/routing_gflags.cc", + "core/navigator.cc", + "core/black_list_range_generator.cc", + "core/result_generator.cc", + "graph/topo_range.cc", + "graph/topo_range_manager.cc", + "graph/node_with_range.cc", + "graph/topo_node.cc", + "graph/topo_graph.cc", + "graph/sub_topo_graph.cc", + "graph/topo_test_utils.cc", + "strategy/a_star_strategy.cc", + + ], + hdrs = [ "routing.h", + "topo_creator/edge_creator.h", + "topo_creator/graph_creator.h", + "topo_creator/node_creator.h", + "common/routing_gflags.h", + "core/navigator.h", + "core/black_list_range_generator.h", + "core/result_generator.h", + "graph/topo_range.h", + "graph/topo_range_manager.h", + "graph/range_utils.h", + "graph/node_with_range.h", + "graph/topo_node.h", + "graph/topo_graph.h", + "graph/sub_topo_graph.h", + "graph/topo_test_utils.h", + "strategy/a_star_strategy.h", + "strategy/strategy.h", ], - linkshared = True, - linkstatic = True, - copts = ROUTING_COPTS, deps = [ + "//modules/common_msgs/map_msgs:map_lane_cc_proto", + "//modules/common/util:util_tool", + "//modules/common/configs:vehicle_config_helper", + "//modules/common/util:common_util", + "//modules/common_msgs/routing_msgs:routing_cc_proto", "//modules/common/adapters:adapter_gflags", + "//modules/common_msgs/monitor_msgs:monitor_log_cc_proto", "//modules/common/monitor_log", - "//modules/common/util", - "//modules/map/hdmap:hdmap_util", - "//modules/routing/core", + "//modules/map:apollo_map", + "//modules/routing/proto:topo_graph_cc_proto", "//modules/routing/proto:routing_config_cc_proto", - "//modules/common_msgs/monitor_msgs:monitor_log_cc_proto", - ], + "//cyber", + "@com_github_gflags_gflags//:gflags", + ] ) -cc_library( - name = "routing_component_lib", +apollo_component( + name = "librouting_component.so", srcs = ["routing_component.cc"], hdrs = ["routing_component.h"], copts = ROUTING_COPTS, deps = [ - ":routing", + ":apollo_routing", "//cyber", ], - alwayslink = True, -) - -cc_binary( - name = "librouting_component.so", - linkshared = True, - linkstatic = True, - deps = [":routing_component_lib"], ) filegroup( @@ -72,67 +84,102 @@ filegroup( ]), ) -# install( -# name = "install", -# data_dest = "routing", -# library_dest = "routing/lib", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":routing.BUILD", -# ], -# targets = [ -# ":librouting_component.so", -# ], -# deps = [ -# ":pb_routing", -# ":pb_hdrs", -# "//modules/routing/topo_creator:install", -# "//modules/routing/tools/routing_tester:install", -# "//modules/routing/tools:install", -# "//modules/routing/proto:py_pb_routing" -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "routing/include", -# data = [ -# "//modules/routing/proto:routing_config_cc_proto", -# "//modules/routing/proto:topo_graph_cc_proto", - -# ], -# ) - -# install_files( -# name = "pb_routing", -# dest = "routing", -# files = [ -# "//modules/common_msgs/routing_msgs:routing_py_pb2", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_routing_src", -# ":install_routing_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_routing_src", -# src_dir = ["."], -# dest = "routing/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_routing_hdrs", -# src_dir = ["."], -# dest = "routing/include", -# filter = "*.h", -# ) +apollo_cc_test( + name = "graph_creator_test", + size = "small", + srcs = ["topo_creator/graph_creator_test.cc"], + copts = ["-fno-access-control"], + deps = [ + ":apollo_routing", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_binary( + name = "topo_creator", + srcs = ["topo_creator/topo_creator.cc"], + copts = ['-DMODULE_NAME=\\"routing\\"'], + deps = [ + ":apollo_routing", + "//modules/map:apollo_map", + ], +) + +apollo_cc_binary( + name = "routing_dump", + srcs = ["tools/routing_dump.cc"], + deps = [ + "//modules/common_msgs/planning_msgs:planning_cc_proto", + ":apollo_routing", + ], +) + +apollo_cc_binary( + name = "routing_cast", + srcs = ["tools/routing_cast.cc"], + deps = [ + ":apollo_routing", + ], +) + +filegroup( + name = "test_data", + srcs = glob([ + "tools/routing_tester/*.pb.txt", + ]), +) + +apollo_cc_binary( + name = "routing_tester", + srcs = ["tools/routing_tester/routing_tester.cc"], + data = [ + ":test_data", + ], + deps = [ + ":apollo_routing", + ], +) + +apollo_cc_test( + name = "topo_node_test", + size = "small", + srcs = ["graph/topo_node_test.cc"], + deps = [ + ":apollo_routing", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "topo_range_test", + size = "small", + srcs = ["graph/topo_range_test.cc"], + deps = [ + ":apollo_routing", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "topo_graph_test", + size = "small", + srcs = ["graph/topo_graph_test.cc"], + deps = [ + ":apollo_routing", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "sub_topo_graph_test", + size = "small", + srcs = ["graph/sub_topo_graph_test.cc"], + deps = [ + ":apollo_routing", + "@com_google_googletest//:gtest_main", + ], +) apollo_package() + cpplint() diff --git a/modules/routing/common/BUILD b/modules/routing/common/BUILD deleted file mode 100644 index d3db0a491d4..00000000000 --- a/modules/routing/common/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "routing_gflags", - srcs = ["routing_gflags.cc"], - hdrs = ["routing_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/routing/core/BUILD b/modules/routing/core/BUILD deleted file mode 100644 index 96622eec487..00000000000 --- a/modules/routing/core/BUILD +++ /dev/null @@ -1,49 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -ROUTING_COPTS = ['-DMODULE_NAME=\\"routing\\"'] - -cc_library( - name = "core", - deps = [ - ":routing_navigator", - ], -) - -cc_library( - name = "routing_navigator", - srcs = ["navigator.cc"], - hdrs = ["navigator.h"], - copts = ROUTING_COPTS, - deps = [ - ":routing_black_list_range_generator", - ":routing_result_generator", - "//modules/common/util", - "//modules/routing/strategy", - ], -) - -cc_library( - name = "routing_black_list_range_generator", - srcs = ["black_list_range_generator.cc"], - hdrs = ["black_list_range_generator.h"], - copts = ROUTING_COPTS, - deps = [ - "//modules/routing/graph", - ], -) - -cc_library( - name = "routing_result_generator", - srcs = ["result_generator.cc"], - hdrs = ["result_generator.h"], - copts = ROUTING_COPTS, - deps = [ - "//modules/routing/graph", - ], -) - -apollo_package() -cpplint() diff --git a/modules/routing/graph/BUILD b/modules/routing/graph/BUILD deleted file mode 100644 index dd1078dac61..00000000000 --- a/modules/routing/graph/BUILD +++ /dev/null @@ -1,140 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) -ROUTING_COPTS = ['-DMODULE_NAME=\\"routing\\"'] - -cc_library( - name = "graph", - deps = [ - ":routing_sub_topo_graph", - ":routing_topo_graph", - ":routing_topo_range_manager", - ], -) - -cc_library( - name = "routing_topo_range", - srcs = ["topo_range.cc"], - hdrs = ["topo_range.h"], - copts = ROUTING_COPTS, - deps = [ - "//modules/routing/common:routing_gflags", - ], -) - -cc_library( - name = "routing_topo_range_manager", - srcs = ["topo_range_manager.cc"], - hdrs = ["topo_range_manager.h"], - copts = ROUTING_COPTS, - deps = [ - ":routing_topo_node", - ], -) - -cc_library( - name = "routing_range_utils", - hdrs = ["range_utils.h"], - copts = ROUTING_COPTS, -) - -cc_library( - name = "routing_node_with_range", - srcs = ["node_with_range.cc"], - hdrs = ["node_with_range.h"], - copts = ROUTING_COPTS, - deps = [ - ":routing_topo_node", - ], -) - -cc_library( - name = "routing_topo_node", - srcs = ["topo_node.cc"], - hdrs = ["topo_node.h"], - copts = ROUTING_COPTS, - deps = [ - ":routing_range_utils", - ":routing_topo_range", - "//cyber", - "//modules/common/util:util_tool", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/routing/proto:topo_graph_cc_proto", - ], -) - -cc_library( - name = "routing_topo_graph", - srcs = ["topo_graph.cc"], - hdrs = ["topo_graph.h"], - copts = ROUTING_COPTS, - deps = [ - ":routing_topo_node", - ], -) - -cc_library( - name = "routing_sub_topo_graph", - srcs = ["sub_topo_graph.cc"], - hdrs = ["sub_topo_graph.h"], - copts = ROUTING_COPTS, - deps = [ - ":routing_node_with_range", - ], -) - -cc_library( - name = "routing_topo_test_utils", - srcs = ["topo_test_utils.cc"], - hdrs = ["topo_test_utils.h"], - copts = ROUTING_COPTS, - deps = [ - ":routing_topo_graph", - ], -) - -cc_test( - name = "topo_node_test", - size = "small", - srcs = ["topo_node_test.cc"], - deps = [ - ":routing_topo_test_utils", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "topo_range_test", - size = "small", - srcs = ["topo_range_test.cc"], - deps = [ - ":routing_node_with_range", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "topo_graph_test", - size = "small", - srcs = ["topo_graph_test.cc"], - deps = [ - ":routing_topo_test_utils", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "sub_topo_graph_test", - size = "small", - srcs = ["sub_topo_graph_test.cc"], - deps = [ - ":routing_sub_topo_graph", - ":routing_topo_test_utils", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/routing/routing.BUILD b/modules/routing/routing.BUILD deleted file mode 100644 index cb2c4d85135..00000000000 --- a/modules/routing/routing.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "routing", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/routing", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/routing/strategy/BUILD b/modules/routing/strategy/BUILD deleted file mode 100644 index f4938471ab2..00000000000 --- a/modules/routing/strategy/BUILD +++ /dev/null @@ -1,28 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "strategy", - deps = [ - ":routing_a_star_strategy", - ], -) - -cc_library( - name = "routing_a_star_strategy", - srcs = ["a_star_strategy.cc"], - hdrs = [ - "a_star_strategy.h", - "strategy.h", - ], - copts = ['-DMODULE_NAME=\\"routing\\"'], - deps = [ - "//modules/routing/graph", - ], -) - -apollo_package() -cpplint() diff --git a/modules/routing/tools/BUILD b/modules/routing/tools/BUILD deleted file mode 100644 index 3d918e6927a..00000000000 --- a/modules/routing/tools/BUILD +++ /dev/null @@ -1,35 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "routing/bin", -# targets = [ -# ":routing_dump", -# ":routing_cast", -# ], -# ) - -cc_binary( - name = "routing_dump", - srcs = ["routing_dump.cc"], - deps = [ - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/routing", - ], -) - -cc_binary( - name = "routing_cast", - srcs = ["routing_cast.cc"], - deps = [ - "//modules/routing", - ], -) - -apollo_package() -cpplint() diff --git a/modules/routing/tools/routing_tester/BUILD b/modules/routing/tools/routing_tester/BUILD deleted file mode 100644 index 4229408b1c7..00000000000 --- a/modules/routing/tools/routing_tester/BUILD +++ /dev/null @@ -1,34 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "routing/bin", -# targets = [ -# ":routing_tester", -# ], -# ) -cc_binary( - name = "routing_tester", - srcs = ["routing_tester.cc"], - data = [ - ":test_data", - ], - deps = [ - "//modules/routing", - ], -) - -filegroup( - name = "test_data", - srcs = glob([ - "*.pb.txt", - ]), -) - -apollo_package() -cpplint() diff --git a/modules/routing/topo_creator/BUILD b/modules/routing/topo_creator/BUILD deleted file mode 100644 index d395c78d95d..00000000000 --- a/modules/routing/topo_creator/BUILD +++ /dev/null @@ -1,77 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# targets = [ -# ":topo_creator", -# ], -# runtime_dest = "modules/routing/topo_creator", -# ) - -cc_library( - name = "edge_creator", - srcs = ["edge_creator.cc"], - hdrs = ["edge_creator.h"], - copts = ['-DMODULE_NAME=\\"routing\\"'], - deps = [ - "//modules/routing/common:routing_gflags", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/routing/proto:routing_config_cc_proto", - "//modules/routing/proto:topo_graph_cc_proto", - ], -) - -cc_library( - name = "graph_creator", - srcs = ["graph_creator.cc"], - hdrs = ["graph_creator.h"], - copts = ['-DMODULE_NAME=\\"routing\\"'], - deps = [ - ":edge_creator", - ":node_creator", - "//modules/common/configs:vehicle_config_helper", - "//modules/map/hdmap/adapter:opendrive_adapter", - ], -) - -cc_test( - name = "graph_creator_test", - size = "small", - srcs = ["graph_creator_test.cc"], - copts = ["-fno-access-control"], - deps = [ - ":graph_creator", - "@com_google_googletest//:gtest_main", - ], -) - -cc_library( - name = "node_creator", - srcs = ["node_creator.cc"], - hdrs = ["node_creator.h"], - copts = ['-DMODULE_NAME=\\"routing\\"'], - deps = [ - "//modules/common_msgs/map_msgs:map_lane_cc_proto", - "//modules/common_msgs/routing_msgs:routing_cc_proto", - "//modules/routing/proto:routing_config_cc_proto", - "//modules/routing/proto:topo_graph_cc_proto", - ], -) - -cc_binary( - name = "topo_creator", - srcs = ["topo_creator.cc"], - copts = ['-DMODULE_NAME=\\"routing\\"'], - deps = [ - ":graph_creator", - "//modules/map/hdmap:hdmap_util", - ], -) - -apollo_package() -cpplint() diff --git a/modules/storytelling/BUILD b/modules/storytelling/BUILD index b9c2650dd32..8bb7b7b3556 100644 --- a/modules/storytelling/BUILD +++ b/modules/storytelling/BUILD @@ -1,87 +1,44 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "frame_manager", - srcs = ["frame_manager.cc"], - hdrs = ["frame_manager.h"], +apollo_cc_library( + name = "apollo_storytelling", + srcs = [ + "frame_manager.cc", + "story_tellers/close_to_junction_teller.cc", + "common/storytelling_gflags.cc" + ], + hdrs = [ + "frame_manager.h", + "story_tellers/base_teller.h", + "story_tellers/close_to_junction_teller.h", + "common/storytelling_gflags.h" + ], deps = [ "//cyber", "//modules/common/monitor_log", - ], + "//modules/common_msgs/storytelling_msgs:story_cc_proto", + "//modules/storytelling/proto:storytelling_config_cc_proto", + "//modules/common/adapters:adapter_gflags", + "//modules/map:apollo_map", + "//modules/common_msgs/planning_msgs:planning_cc_proto", + "@com_github_gflags_gflags//:gflags" + ] ) -cc_library( - name = "storytelling_lib", +apollo_component( + name = "libstorytelling_component.so", srcs = ["storytelling.cc"], hdrs = ["storytelling.h"], copts = ['-DMODULE_NAME=\\"storytelling\\"'], deps = [ "//cyber", - "//modules/storytelling/story_tellers:close_to_junction_teller", + ":apollo_storytelling", ], - alwayslink = True, -) - -cc_binary( - name = "libstorytelling_component.so", - linkshared = True, - linkstatic = True, - deps = [":storytelling_lib"], ) -# install( -# name = "install", -# library_dest = "storytelling/lib", -# data_dest = "storytelling", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":storytelling.BUILD", -# ], -# targets = [ -# ":libstorytelling_component.so", -# "//modules/storytelling/proto:py_pb_storytelling" -# ], -# deps = [ -# ":pb_hdrs", -# ] -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "storytelling/include", -# data = [ -# "//modules/storytelling/proto:storytelling_config_cc_proto", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_storytelling_src", -# ":install_storytelling_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_storytelling_src", -# src_dir = ["."], -# dest = "storytelling/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_storytelling_hdrs", -# src_dir = ["."], -# dest = "storytelling/include", -# filter = "*.h", -# ) - filegroup( name = "runtime_data", srcs = glob([ diff --git a/modules/storytelling/common/BUILD b/modules/storytelling/common/BUILD deleted file mode 100644 index acdcba40183..00000000000 --- a/modules/storytelling/common/BUILD +++ /dev/null @@ -1,20 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "storytelling_gflags", - srcs = ["storytelling_gflags.cc"], - hdrs = ["storytelling_gflags.h"], - copts = [ - "-DMODULE_NAME=\\\"storytelling\\\"", - ], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/storytelling/story_tellers/BUILD b/modules/storytelling/story_tellers/BUILD deleted file mode 100644 index 786502ce7a1..00000000000 --- a/modules/storytelling/story_tellers/BUILD +++ /dev/null @@ -1,31 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "base_teller", - hdrs = ["base_teller.h"], - deps = [ - "//modules/common_msgs/storytelling_msgs:story_cc_proto", - ], -) - -cc_library( - name = "close_to_junction_teller", - srcs = ["close_to_junction_teller.cc"], - hdrs = ["close_to_junction_teller.h"], - deps = [ - ":base_teller", - "//modules/common/adapters:adapter_gflags", - "//modules/map/hdmap:hdmap_util", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/storytelling:frame_manager", - "//modules/storytelling/common:storytelling_gflags", - "//modules/storytelling/proto:storytelling_config_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/storytelling/storytelling.BUILD b/modules/storytelling/storytelling.BUILD deleted file mode 100644 index 82f05785e84..00000000000 --- a/modules/storytelling/storytelling.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "storytelling", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/storytelling", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/task_manager/BUILD b/modules/task_manager/BUILD index cb94f06fb1c..86fd1ea5d57 100644 --- a/modules/task_manager/BUILD +++ b/modules/task_manager/BUILD @@ -1,56 +1,46 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) TASK_MANAGER_COPTS = ['-DMODULE_NAME=\\"task_manager\\"'] -cc_library( - name = "cycle_routing_manager_lib", - srcs = ["cycle_routing_manager.cc"], - hdrs = ["cycle_routing_manager.h"], - copts = TASK_MANAGER_COPTS, +apollo_cc_library( + name = "apollo_task_manager", + srcs = [ + "cycle_routing_manager.cc", + "parking_routing_manager.cc", + "task_manager_component.cc", + "common/task_manager_gflags.cc", + ], + hdrs = [ + "cycle_routing_manager.h", + "parking_routing_manager.h", + "task_manager_component.h", + "common/task_manager_gflags.h", + ], deps = [ + "//cyber", "//modules/common/monitor_log", "//modules/common/status", - "//modules/dreamview/backend/map:map_service", + "//modules/dreamview/backend:apollo_dreamview_backend", "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/task_manager/common:task_manager_gflags", "//modules/common_msgs/task_manager_msgs:task_manager_cc_proto", "//modules/common_msgs/routing_msgs:routing_cc_proto", "//modules/common_msgs/external_command_msgs:lane_follow_command_cc_proto", "//modules/common_msgs/external_command_msgs:command_status_cc_proto", - ], - alwayslink = True, -) - -cc_library( - name = "parking_routing_manager_lib", - srcs = ["parking_routing_manager.cc"], - hdrs = ["parking_routing_manager.h"], - copts = TASK_MANAGER_COPTS, - deps = [ - "//modules/common/monitor_log", - "//modules/common/status", - "//modules/dreamview/backend/map:map_service", - "//modules/common/configs:vehicle_config_helper", - "//modules/task_manager/common:task_manager_gflags", - "//modules/common_msgs/task_manager_msgs:task_manager_cc_proto", "//modules/task_manager/proto:task_manager_config_cc_proto", - ], - alwayslink = True, + "@com_github_gflags_gflags//:gflags" + ] ) -cc_library( - name = "task_manager_component_lib", +apollo_component( + name = "libtask_manager_component.so", srcs = ["task_manager_component.cc"], hdrs = ["task_manager_component.h"], copts = TASK_MANAGER_COPTS, deps = [ - ":cycle_routing_manager_lib", - ":parking_routing_manager_lib", + ":apollo_task_manager", "//cyber", "//modules/task_manager/proto:task_manager_config_cc_proto", "//modules/common_msgs/planning_msgs:planning_cc_proto", @@ -58,64 +48,8 @@ cc_library( "//modules/common_msgs/external_command_msgs:lane_follow_command_cc_proto", "//modules/common_msgs/external_command_msgs:command_status_cc_proto", ], - alwayslink = True, -) - -cc_binary( - name = "libtask_manager_component.so", - linkshared = True, - linkstatic = True, - deps = [":task_manager_component_lib"], ) -# install( -# name = "install", -# data_dest = "task-manager", -# library_dest = "task-manager/lib", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":task-manager.BUILD", -# ], -# targets = [ -# ":libtask_manager_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# "//modules/task_manager/proto:py_pb_task_manager" -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "task-manager/include", -# data = [ -# "//modules/task_manager/proto:task_manager_config_cc_proto", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_task_manager_src", -# ":install_task_manager_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_task_manager_src", -# src_dir = ["."], -# dest = "task-manager/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_task_manager_hdrs", -# src_dir = ["."], -# dest = "task-manager/include", -# filter = "*.h", -# ) - filegroup( name = "runtime_data", srcs = glob([ diff --git a/modules/task_manager/common/BUILD b/modules/task_manager/common/BUILD deleted file mode 100644 index 831c73344e8..00000000000 --- a/modules/task_manager/common/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "task_manager_gflags", - srcs = ["task_manager_gflags.cc"], - hdrs = ["task_manager_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/task_manager/task-manager.BUILD b/modules/task_manager/task-manager.BUILD deleted file mode 100644 index ba01be60faf..00000000000 --- a/modules/task_manager/task-manager.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "task-manager", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/task_manager", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/third_party_perception/BUILD b/modules/third_party_perception/BUILD index bd9f4e83d88..6577fbb35fc 100644 --- a/modules/third_party_perception/BUILD +++ b/modules/third_party_perception/BUILD @@ -1,81 +1,67 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_library( - name = "third_party_perception_lib", - srcs = ["third_party_perception_base.cc"], - hdrs = ["third_party_perception_base.h"], - alwayslink = True, - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/util:util_tool", - "//modules/third_party_perception/tools:third_party_perception_filter", - "//modules/third_party_perception/tools:third_party_perception_fusion", - "//modules/third_party_perception/tools:third_party_perception_mobileye_conversion", - "//modules/third_party_perception/tools:third_party_perception_radar_conversion", - "//modules/third_party_perception/tools:third_party_perception_smartereye_conversion", +apollo_cc_library( + name = "apollo_third_party_perception", + srcs = [ + "common/third_party_perception_gflags.cc", + "common/third_party_perception_util.cc", + "integration_tests/third_party_perception_test_base.cc", + "third_party_perception_base.cc", + "third_party_perception_mobileye.cc", + "third_party_perception_smartereye.cc", + "tools/conversion_mobileye.cc", + "tools/conversion_radar.cc", + "tools/conversion_smartereye.cc", + "tools/filter.cc", + "tools/fusion.cc", ], -) - -cc_library( - name = "third_party_perception_mobileye_lib", - srcs = ["third_party_perception_mobileye.cc"], - hdrs = ["third_party_perception_mobileye.h"], - alwayslink = True, - deps = [ - ":third_party_perception_lib", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common/util:util_tool", - "//modules/third_party_perception/tools:third_party_perception_filter", - "//modules/third_party_perception/tools:third_party_perception_fusion", - "//modules/third_party_perception/tools:third_party_perception_mobileye_conversion", - "//modules/third_party_perception/tools:third_party_perception_radar_conversion", - "//modules/third_party_perception/tools:third_party_perception_smartereye_conversion", + hdrs = [ + "common/third_party_perception_gflags.h", + "common/third_party_perception_util.h", + "integration_tests/third_party_perception_test_base.h", + "third_party_perception_base.h", + "third_party_perception_mobileye.h", + "third_party_perception_smartereye.h", + "tools/conversion_mobileye.h", + "tools/conversion_radar.h", + "tools/conversion_smartereye.h", + "tools/filter.h", + "tools/fusion.h", ], -) - -cc_library( - name = "third_party_perception_smartereye_lib", - srcs = ["third_party_perception_smartereye.cc"], - hdrs = ["third_party_perception_smartereye.h"], - alwayslink = True, deps = [ - ":third_party_perception_lib", "//cyber", "//modules/common/adapters:adapter_gflags", + "//modules/common/math", "//modules/common/util:util_tool", - "//modules/third_party_perception/tools:third_party_perception_filter", - "//modules/third_party_perception/tools:third_party_perception_fusion", - "//modules/third_party_perception/tools:third_party_perception_mobileye_conversion", - "//modules/third_party_perception/tools:third_party_perception_radar_conversion", - "//modules/third_party_perception/tools:third_party_perception_smartereye_conversion", + "//modules/common_msgs/basic_msgs:drive_state_cc_proto", + "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", + "//modules/common_msgs/chassis_msgs:chassis_cc_proto", + "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", + "//modules/common_msgs/sensor_msgs:delphi_esr_cc_proto", + "//modules/common_msgs/sensor_msgs:mobileye_cc_proto", + "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", + "//modules/common_msgs/sensor_msgs:smartereye_cc_proto", + "//modules/map:apollo_map", + "//modules/third_party_perception/proto:radar_obstacle_cc_proto", + "//modules/third_party_perception/proto:third_party_perception_component_cc_proto", + "@com_github_gflags_gflags//:gflags", + "@com_google_googletest//:gtest", ], ) -cc_library( - name = "third_party_perception_component_lib", +apollo_component( + name = "libthird_party_perception_component.so", srcs = ["third_party_perception_component.cc"], hdrs = ["third_party_perception_component.h"], copts = ['-DMODULE_NAME=\\"third_party_perception\\"'], deps = [ - ":third_party_perception_lib", - ":third_party_perception_mobileye_lib", - ":third_party_perception_smartereye_lib", + ":apollo_third_party_perception", ], - alwayslink = True, -) - -cc_binary( - name = "libthird_party_perception_component.so", - linkshared = True, - linkstatic = True, - deps = [":third_party_perception_component_lib"], ) filegroup( @@ -87,52 +73,6 @@ filegroup( ]), ) -# install( -# name = "install", -# library_dest = "third-party-perception/lib", -# data_dest = "third-party-perception", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":third-party-perception.BUILD", -# ], -# targets = [ -# ":libthird_party_perception_component.so", -# ], -# deps = [ -# ":pb_hdrs", -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "third-party-perception/include", -# data = [ -# "//modules/third_party_perception/proto:radar_obstacle_cc_proto", -# "//modules/third_party_perception/proto:third_party_perception_component_cc_proto", -# ], -# ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_third-party-perception_src", -# ":install_third-party-perception_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_third-party-perception_src", -# src_dir = ["."], -# dest = "third-party-perception/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_third-party-perception_hdrs", -# src_dir = ["."], -# dest = "third-party-perception/include", -# filter = "*.h", -# ) - apollo_package() + cpplint() diff --git a/modules/third_party_perception/common/BUILD b/modules/third_party_perception/common/BUILD deleted file mode 100644 index 868dec9dc33..00000000000 --- a/modules/third_party_perception/common/BUILD +++ /dev/null @@ -1,27 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "third_party_perception_util", - srcs = ["third_party_perception_util.cc"], - hdrs = ["third_party_perception_util.h"], - deps = [ - ":third_party_perception_gflags", - "//modules/map/hdmap:hdmap_util", - ], -) - -cc_library( - name = "third_party_perception_gflags", - srcs = ["third_party_perception_gflags.cc"], - hdrs = ["third_party_perception_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/third_party_perception/integration_tests/BUILD b/modules/third_party_perception/integration_tests/BUILD deleted file mode 100644 index 606eb5756bc..00000000000 --- a/modules/third_party_perception/integration_tests/BUILD +++ /dev/null @@ -1,18 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "third_party_perception_test_base", - srcs = ["third_party_perception_test_base.cc"], - hdrs = ["third_party_perception_test_base.h"], - deps = [ - "//modules/third_party_perception:third_party_perception_lib", - "@com_google_googletest//:gtest", - ], -) - -apollo_package() -cpplint() diff --git a/modules/third_party_perception/third-party-perception.BUILD b/modules/third_party_perception/third-party-perception.BUILD deleted file mode 100644 index d868d15fc46..00000000000 --- a/modules/third_party_perception/third-party-perception.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "third_party_perception", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/third_party_perception", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/third_party_perception/tools/BUILD b/modules/third_party_perception/tools/BUILD deleted file mode 100644 index 530695475df..00000000000 --- a/modules/third_party_perception/tools/BUILD +++ /dev/null @@ -1,84 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "third_party_perception_radar_conversion", - srcs = ["conversion_radar.cc"], - hdrs = ["conversion_radar.h"], - deps = [ - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common_msgs/basic_msgs:drive_state_cc_proto", - "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", - "//modules/common_msgs/sensor_msgs:conti_radar_cc_proto", - "//modules/common_msgs/sensor_msgs:delphi_esr_cc_proto", - "//modules/third_party_perception/common:third_party_perception_util", - "//modules/third_party_perception/proto:radar_obstacle_cc_proto", - ], -) - - - -cc_library( - name = "third_party_perception_smartereye_conversion", - srcs = ["conversion_smartereye.cc"], - hdrs = [ - "conversion_base.h", - "conversion_smartereye.h", - ], - linkopts = ["-Wl,--allow-multiple-definition"], - deps = [ - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common_msgs/basic_msgs:drive_state_cc_proto", - "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", - "//modules/common_msgs/sensor_msgs:smartereye_cc_proto", - "//modules/third_party_perception/common:third_party_perception_util", - ], -) - -cc_library( - name = "third_party_perception_mobileye_conversion", - srcs = ["conversion_mobileye.cc"], - hdrs = [ - "conversion_base.h", - "conversion_mobileye.h", - ], - linkopts = ["-Wl,--allow-multiple-definition"], - deps = [ - "//modules/common_msgs/chassis_msgs:chassis_cc_proto", - "//modules/common_msgs/config_msgs:vehicle_config_cc_proto", - "//modules/common_msgs/basic_msgs:drive_state_cc_proto", - "//modules/common_msgs/basic_msgs:vehicle_signal_cc_proto", - "//modules/common_msgs/sensor_msgs:mobileye_cc_proto", - "//modules/common_msgs/sensor_msgs:sensor_image_cc_proto", - "//modules/third_party_perception/common:third_party_perception_util", - ], -) - -cc_library( - name = "third_party_perception_fusion", - srcs = ["fusion.cc"], - hdrs = ["fusion.h"], - deps = [ - "//modules/common/math", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/third_party_perception/proto:third_party_perception_component_cc_proto", - ], -) - -cc_library( - name = "third_party_perception_filter", - srcs = ["filter.cc"], - hdrs = ["filter.h"], - deps = [ - "//modules/third_party_perception/common:third_party_perception_util", - "//modules/third_party_perception/proto:radar_obstacle_cc_proto", - ], -) - -apollo_package() -cpplint() diff --git a/modules/third_party_perception/tools/conversion_base.h b/modules/third_party_perception/tools/conversion_base.h deleted file mode 100644 index fbf34686a9a..00000000000 --- a/modules/third_party_perception/tools/conversion_base.h +++ /dev/null @@ -1,44 +0,0 @@ -/****************************************************************************** - * Copyright 2020 The Apollo Authors. All Rights Reserved. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - *****************************************************************************/ - -/** - * @file - */ - -#pragma once - -#include - -/** - * @namespace apollo::third_party_perception::conversion_base - * @brief apollo::third_party_perception - */ -namespace apollo { -namespace third_party_perception { -namespace conversion_base { - -std::map - lane_conversion_map = {{0, apollo::hdmap::LaneBoundaryType::DOTTED_YELLOW}, - {1, apollo::hdmap::LaneBoundaryType::SOLID_YELLOW}, - {2, apollo::hdmap::LaneBoundaryType::UNKNOWN}, - {3, apollo::hdmap::LaneBoundaryType::CURB}, - {4, apollo::hdmap::LaneBoundaryType::SOLID_YELLOW}, - {5, apollo::hdmap::LaneBoundaryType::DOTTED_YELLOW}, - {6, apollo::hdmap::LaneBoundaryType::UNKNOWN}}; - -} // namespace conversion_base -} // namespace third_party_perception -} // namespace apollo diff --git a/modules/third_party_perception/tools/conversion_mobileye.cc b/modules/third_party_perception/tools/conversion_mobileye.cc index 58cde811e54..082429def2f 100644 --- a/modules/third_party_perception/tools/conversion_mobileye.cc +++ b/modules/third_party_perception/tools/conversion_mobileye.cc @@ -28,7 +28,6 @@ #include "modules/third_party_perception/common/third_party_perception_gflags.h" #include "modules/third_party_perception/common/third_party_perception_util.h" -#include "modules/third_party_perception/tools/conversion_base.h" #include "modules/third_party_perception/tools/conversion_mobileye.h" /** @@ -52,6 +51,14 @@ PerceptionObstacles MobileyeToPerceptionObstacles( PerceptionObstacles obstacles; // retrieve position and velocity of the main vehicle from the localization // position + std::map + lane_conversion_map = {{0, apollo::hdmap::LaneBoundaryType::DOTTED_YELLOW}, + {1, apollo::hdmap::LaneBoundaryType::SOLID_YELLOW}, + {2, apollo::hdmap::LaneBoundaryType::UNKNOWN}, + {3, apollo::hdmap::LaneBoundaryType::CURB}, + {4, apollo::hdmap::LaneBoundaryType::SOLID_YELLOW}, + {5, apollo::hdmap::LaneBoundaryType::DOTTED_YELLOW}, + {6, apollo::hdmap::LaneBoundaryType::UNKNOWN}}; obstacles.mutable_header()->CopyFrom(mobileye.header()); @@ -60,9 +67,9 @@ PerceptionObstacles MobileyeToPerceptionObstacles( std::int32_t mob_right_lane_type = mobileye.lka_768().lane_type(); obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_lane_type( - conversion_base::lane_conversion_map[mob_left_lane_type]); + lane_conversion_map[mob_left_lane_type]); obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_lane_type( - conversion_base::lane_conversion_map[mob_right_lane_type]); + lane_conversion_map[mob_right_lane_type]); obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_quality( mobileye.lka_766().quality() / 4.0); diff --git a/modules/third_party_perception/tools/conversion_smartereye.cc b/modules/third_party_perception/tools/conversion_smartereye.cc index 8ab28187a5d..5b7168ca4ea 100644 --- a/modules/third_party_perception/tools/conversion_smartereye.cc +++ b/modules/third_party_perception/tools/conversion_smartereye.cc @@ -28,7 +28,6 @@ #include "modules/third_party_perception/common/third_party_perception_gflags.h" #include "modules/third_party_perception/common/third_party_perception_util.h" -#include "modules/third_party_perception/tools/conversion_base.h" #include "modules/third_party_perception/tools/conversion_smartereye.h" /** @@ -53,6 +52,14 @@ apollo::perception::PerceptionObstacles SmartereyeToPerceptionObstacles( PerceptionObstacles obstacles; // retrieve position and velocity of the main vehicle from the localization // position + std::map + lane_conversion_map = {{0, apollo::hdmap::LaneBoundaryType::DOTTED_YELLOW}, + {1, apollo::hdmap::LaneBoundaryType::SOLID_YELLOW}, + {2, apollo::hdmap::LaneBoundaryType::UNKNOWN}, + {3, apollo::hdmap::LaneBoundaryType::CURB}, + {4, apollo::hdmap::LaneBoundaryType::SOLID_YELLOW}, + {5, apollo::hdmap::LaneBoundaryType::DOTTED_YELLOW}, + {6, apollo::hdmap::LaneBoundaryType::UNKNOWN}}; obstacles.mutable_header()->CopyFrom(smartereye_obstacles.header()); @@ -63,9 +70,9 @@ apollo::perception::PerceptionObstacles SmartereyeToPerceptionObstacles( smartereye_lanemark.lane_road_data().roadway().right_lane().style(); obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_lane_type( - conversion_base::lane_conversion_map[sma_left_lane_type]); + lane_conversion_map[sma_left_lane_type]); obstacles.mutable_lane_marker()->mutable_right_lane_marker()->set_lane_type( - conversion_base::lane_conversion_map[sma_right_lane_type]); + lane_conversion_map[sma_right_lane_type]); obstacles.mutable_lane_marker()->mutable_left_lane_marker()->set_quality( smartereye_lanemark.lane_road_data().roadway() diff --git a/modules/tools/amodel/amodel/model_manage.py b/modules/tools/amodel/amodel/model_manage.py index 2bb807b21bf..8358a4bb5ab 100644 --- a/modules/tools/amodel/amodel/model_manage.py +++ b/modules/tools/amodel/amodel/model_manage.py @@ -31,7 +31,7 @@ # APOLLO_ROOT_DIR WORKSPACE_PATH = os.getenv('APOLLO_ROOT_DIR', '/apollo') # Model install paths -MODEL_INSTALL_PATH = "modules/perception/data/model" +MODEL_INSTALL_PATH = "modules/perception/data/models" # MODEL_META_FILE_NAME MODEL_META_FILE_NAME = "apollo_deploy" diff --git a/modules/tools/gen_vehicle_protocol/gen.py b/modules/tools/gen_vehicle_protocol/gen.py index 87dd7d03831..8e8f0b9056c 100644 --- a/modules/tools/gen_vehicle_protocol/gen.py +++ b/modules/tools/gen_vehicle_protocol/gen.py @@ -35,13 +35,16 @@ def gen(conf): """ doc string: """ - dbc_file = conf["dbc_file"] - protocol_conf_file = conf["protocol_conf"] + current_dir = sys.path[0] + # print("current dir is", current_dir) + dbc_file = sys.path[0] + '/' + conf["dbc_file"] + protocol_conf_file = sys.path[0] + '/' + conf["protocol_conf"] car_type = conf["car_type"] black_list = conf["black_list"] sender_list = conf["sender_list"] sender = conf["sender"] - output_dir = conf["output_dir"] + output_dir = sys.path[0] + '/' + conf["output_dir"] + template_dir = current_dir + "/template/" # extract dbc file meta to an internal config file if not extract_dbc_meta(dbc_file, protocol_conf_file, car_type, black_list, @@ -50,15 +53,15 @@ def gen(conf): # gen proto proto_dir = output_dir + "vehicle/" + car_type.lower() + "/" + "proto/" - gen_proto_file(protocol_conf_file, proto_dir) + gen_proto_file(protocol_conf_file, proto_dir, template_dir) # gen protocol protocol_dir = output_dir + "vehicle/" + car_type.lower() + "/protocol/" - gen_protocols(protocol_conf_file, protocol_dir) + gen_protocols(protocol_conf_file, protocol_dir, template_dir) # gen vehicle controller and protocol_manager vehicle_dir = output_dir + "vehicle/" + car_type.lower() + "/" - gen_vehicle_controller_and_manager(protocol_conf_file, vehicle_dir) + gen_vehicle_controller_and_manager(protocol_conf_file, vehicle_dir, template_dir) if __name__ == "__main__": diff --git a/modules/tools/gen_vehicle_protocol/gen_proto_file.py b/modules/tools/gen_vehicle_protocol/gen_proto_file.py index 5c69b6f0a4f..ca7d9e53230 100644 --- a/modules/tools/gen_vehicle_protocol/gen_proto_file.py +++ b/modules/tools/gen_vehicle_protocol/gen_proto_file.py @@ -109,7 +109,7 @@ def gen_checkresponse(pb_fp): optional bool is_switch_online = 6 [default = false];\n\ optional bool is_vcu_online = 7 [default = false];\n}\n") -def gen_proto_file(config_file, work_dir): +def gen_proto_file(config_file, work_dir, template_dir): """ config_file: the config file is generated with dbc work_dir: the protobuf file will be output @@ -143,7 +143,7 @@ def gen_proto_file(config_file, work_dir): pb_var_seq = pb_var_seq + 1 pb_fp.write("optional CheckResponseSignal check_response = 100;\n") pb_fp.write("}\n") - gen_build_file(car_type, work_dir) + gen_build_file(car_type, work_dir, template_dir) # update_detail_pb(car_type) def get_tpl_fmt(tpl_file): @@ -155,11 +155,11 @@ def get_tpl_fmt(tpl_file): fmt = "".join(fmt) return fmt -def gen_build_file(car_type, work_dir): +def gen_build_file(car_type, work_dir, template_dir): """ doc string: """ - build_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/proto_BUILD.tpl" + build_tpl_file = template_dir + "proto_BUILD.tpl" fmt = get_tpl_fmt(build_tpl_file) with open(work_dir + "BUILD", "w") as build_fp: fmt_var = {} @@ -177,4 +177,5 @@ def gen_build_file(car_type, work_dir): car_type = conf["car_type"] work_dir = conf["output_dir"] + "vehicle/" + car_type.lower() + "/" + "proto/" - gen_proto_file(protocol_conf, work_dir) + template_dir = sys.path[0] + "/template/" + gen_proto_file(protocol_conf, work_dir, template_dir) diff --git a/modules/tools/gen_vehicle_protocol/gen_protocols.py b/modules/tools/gen_vehicle_protocol/gen_protocols.py index c51abeb3ab3..2428611f2fc 100644 --- a/modules/tools/gen_vehicle_protocol/gen_protocols.py +++ b/modules/tools/gen_vehicle_protocol/gen_protocols.py @@ -26,11 +26,11 @@ import yaml -def gen_report_header(car_type, protocol, output_dir): +def gen_report_header(car_type, protocol, output_dir, protocol_template_dir): """ doc string: """ - report_header_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/report_protocol.h.tpl" + report_header_tpl_file = protocol_template_dir + "report_protocol.h.tpl" FMT = get_tpl_fmt(report_header_tpl_file) report_header_file = output_dir + "%s.h" % protocol["name"] with open(report_header_file, 'w') as h_fp: @@ -55,11 +55,11 @@ def gen_report_header(car_type, protocol, output_dir): h_fp.write(FMT % fmt_val) -def gen_report_cpp(car_type, protocol, output_dir): +def gen_report_cpp(car_type, protocol, output_dir, protocol_template_dir): """ doc string: """ - report_cpp_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/report_protocol.cc.tpl" + report_cpp_tpl_file = protocol_template_dir + "report_protocol.cc.tpl" FMT = get_tpl_fmt(report_cpp_tpl_file) report_cpp_file = output_dir + "%s.cc" % protocol["name"] with open(report_cpp_file, 'w') as fp: @@ -160,11 +160,11 @@ def gen_parse_value_impl(var, byte_info): return impl -def gen_control_header(car_type, protocol, output_dir): +def gen_control_header(car_type, protocol, output_dir, protocol_template_dir): """ doc string: """ - control_header_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/control_protocol.h.tpl" + control_header_tpl_file = protocol_template_dir + "control_protocol.h.tpl" FMT = get_tpl_fmt(control_header_tpl_file) control_header_file = output_dir + "%s.h" % protocol["name"] with open(control_header_file, 'w') as h_fp: @@ -178,9 +178,12 @@ def gen_control_header(car_type, protocol, output_dir): declare_public_func_list = [] declare_private_func_list = [] declare_private_var_list = [] + declare_private_parse_func_list = [] fmtpub = "\n // config detail: %s\n %s* set_%s(%s %s);" fmtpri = "\n // config detail: %s\n void set_p_%s(uint8_t* data, %s %s);" + fmtparse = """ + %s %s(const std::uint8_t* bytes, const int32_t length) const;""" for var in protocol["vars"]: returntype = var["type"] if var["type"] == "enum": @@ -195,9 +198,12 @@ def gen_control_header(car_type, protocol, output_dir): private_var = " %s %s_;" % (returntype, var["name"].lower()) + private_parse_declare = fmtparse % (returntype, var["name"].lower()) + declare_private_var_list.append(private_var) declare_public_func_list.append(public_func_declare) declare_private_func_list.append(private_func_declare) + declare_private_parse_func_list.append(private_parse_declare) fmt_val["declare_public_func_list"] = "\n".join( declare_public_func_list) @@ -205,6 +211,8 @@ def gen_control_header(car_type, protocol, output_dir): declare_private_func_list) fmt_val["declare_private_var_list"] = "\n".join( declare_private_var_list) + fmt_val["declare_private_parse_func_list"] = "\n".join( + declare_private_parse_func_list) h_fp.write(FMT % fmt_val) @@ -365,16 +373,17 @@ def gen_control_value_func_impl(classname, var, protocol): return impl + "}\n" -def gen_control_cpp(car_type, protocol, output_dir): +def gen_control_cpp(car_type, protocol, output_dir, protocol_template_dir): """ doc string: """ - control_cpp_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/control_protocol.cc.tpl" + control_cpp_tpl_file = protocol_template_dir + "control_protocol.cc.tpl" FMT = get_tpl_fmt(control_cpp_tpl_file) control_cpp_file = output_dir + "%s.cc" % protocol["name"] with open(control_cpp_file, 'w') as fp: fmt_val = {} fmt_val["car_type_lower"] = car_type + fmt_val["car_type_capitalize"] = car_type.capitalize() fmt_val["protocol_name_lower"] = protocol["name"] protocol_id = int(protocol["id"].upper(), 16) if protocol_id > 2048: @@ -387,6 +396,8 @@ def gen_control_cpp(car_type, protocol, output_dir): set_private_var_list = [] set_private_var_init_list = [] set_func_impl_list = [] + set_parse_var_to_protocol_list = [] + set_parse_func_impl_list = [] for var in protocol["vars"]: func_impl = gen_control_value_func_impl(classname, var, protocol) set_func_impl_list.append(func_impl) @@ -408,10 +419,36 @@ def gen_control_cpp(car_type, protocol, output_dir): set_private_var_init_list.append(" %s_ = %s;" % (var["name"].lower(), init_val)) + proto_set_fmt = " chassis->mutable_%s()->set_%s(%s(bytes, length));" + func_name = var["name"].lower() + proto_set = proto_set_fmt % (protocol["name"], var["name"].lower(), + func_name) + set_parse_var_to_protocol_list.append(proto_set) + + var["name"] = var["name"].lower() + returntype = var["type"] + if var["type"] == "enum": + returntype = protocol["name"].capitalize( + ) + "::" + var["name"].capitalize() + "Type" + # gen parse func top + fmt = """ +%s %s::%s(const std::uint8_t* bytes, int32_t length) const {""" + impl = fmt % (returntype, classname, var["name"]) + + byte_info = get_byte_info(var) + impl = impl + gen_parse_value_impl(var, byte_info) + + impl = impl + gen_report_value_offset_precision(var, protocol) + impl = impl + "}" + + set_parse_func_impl_list.append(impl) + fmt_val["set_private_var_list"] = "\n".join(set_private_var_list) fmt_val["set_private_var_init_list"] = "\n".join( set_private_var_init_list) fmt_val["set_func_impl_list"] = "\n".join(set_func_impl_list) + fmt_val["set_parse_var_to_protocol_list"] = "\n".join(set_parse_var_to_protocol_list) + fmt_val["set_parse_func_impl_list"] = "\n".join(set_parse_func_impl_list) fp.write(FMT % fmt_val) @@ -425,11 +462,11 @@ def get_tpl_fmt(tpl_file): return fmt -def gen_build_file(car_type, work_dir): +def gen_build_file(car_type, work_dir, protocol_template_dir): """ doc string: """ - build_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/protocol_BUILD.tpl" + build_tpl_file = protocol_template_dir + "protocol_BUILD.tpl" fmt = get_tpl_fmt(build_tpl_file) with open(work_dir + "BUILD", "w") as build_fp: fmt_var = {} @@ -438,7 +475,7 @@ def gen_build_file(car_type, work_dir): build_fp.write(fmt % fmt_var) -def gen_protocols(protocol_conf_file, protocol_dir): +def gen_protocols(protocol_conf_file, protocol_dir, protocol_template_dir): """ doc string: """ @@ -455,15 +492,15 @@ def gen_protocols(protocol_conf_file, protocol_dir): protocol = protocols[p_name] if protocol["protocol_type"] == "report": - gen_report_header(car_type, protocol, protocol_dir) - gen_report_cpp(car_type, protocol, protocol_dir) + gen_report_header(car_type, protocol, protocol_dir, protocol_template_dir) + gen_report_cpp(car_type, protocol, protocol_dir, protocol_template_dir) elif protocol["protocol_type"] == "control": - gen_control_header(car_type, protocol, protocol_dir) - gen_control_cpp(car_type, protocol, protocol_dir) + gen_control_header(car_type, protocol, protocol_dir, protocol_template_dir) + gen_control_cpp(car_type, protocol, protocol_dir, protocol_template_dir) else: print("Unknown protocol_type:%s" % protocol["protocol_type"]) - gen_build_file(car_type, protocol_dir) + gen_build_file(car_type, protocol_dir, protocol_template_dir) def gen_esd_can_extended(str): @@ -487,6 +524,10 @@ def gen_esd_can_extended(str): protocol_dir = conf["output_dir"] + "vehicle/" + conf["car_type"].lower( ) + "/protocol/" + output_dir = conf["output_dir"] + "vehicle/" + conf["car_type"].lower() + \ + "/" shutil.rmtree(output_dir, True) os.makedirs(output_dir) - gen_protocols(protocol_conf, protocol_dir) + + protocol_template_dir = sys.path[0] + "/template/" + gen_protocols(protocol_conf, protocol_dir, protocol_template_dir) diff --git a/modules/tools/gen_vehicle_protocol/gen_vehicle_controller_and_manager.py b/modules/tools/gen_vehicle_protocol/gen_vehicle_controller_and_manager.py index 116552da7a7..6368b225d76 100644 --- a/modules/tools/gen_vehicle_protocol/gen_vehicle_controller_and_manager.py +++ b/modules/tools/gen_vehicle_protocol/gen_vehicle_controller_and_manager.py @@ -26,8 +26,8 @@ import yaml -def gen_vehicle_controller_header(content, output_dir): - controller_header_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/controller.h.tpl" +def gen_vehicle_controller_header(content, output_dir, protocol_template_dir): + controller_header_tpl_file = protocol_template_dir + "controller.h.tpl" car_type = content["car_type"] with open(controller_header_tpl_file, 'r') as tpl: fmt = tpl.readlines() @@ -67,8 +67,8 @@ def gen_vehicle_controller_header(content, output_dir): header.write(FMT % fmt_val) -def gen_vehicle_controller_cpp(content, output_dir): - controller_cpp_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/controller.cc.tpl" +def gen_vehicle_controller_cpp(content, output_dir, protocol_template_dir): + controller_cpp_tpl_file = protocol_template_dir + "controller.cc.tpl" with open(controller_cpp_tpl_file, 'r') as tpl: fmt = tpl.readlines() car_type = content["car_type"] @@ -89,18 +89,161 @@ def gen_vehicle_controller_cpp(content, output_dir): """ protocol_add_list = [] protocol_add_fmt = " can_sender_->AddMessage(%s::ID, %s_, false);" -# protocol_chassis_add_list = [] -# protocol_chassis_add_fmt = """ -# if (chassis_detail.has_%(protocol_name)s() && -# chassis_detail.%(protocol_name)s().has_%(var_name)s()){ -# chassis_.set_%(chassis_var_name)s( -# static_cast(chassis_detail.%s().%s())); -# } else { -# chassis_.set_%(chassis_var_name)s(0); -# } -# """ + + protocol_chassis_get_list = [] + protocol_chassis_speed_fmt = """ // 4 chassis spd + if (chassis_detail.has_%(speed_protocol_name)s() && + chassis_detail.%(speed_protocol_name)s().has_%(speed_reoport_name)s()) { + chassis_.set_speed_mps( + static_cast(chassis_detail.%(speed_protocol_name)s().%(speed_reoport_name)s())); + } else { + chassis_.set_speed_mps(0); + } +""" + protocol_chassis_throttle_fmt = """ // 5 throttle + if (chassis_detail.has_%(throttle_protocol_name)s() && + chassis_detail.%(throttle_protocol_name)s().has_%(throttle_report_name)s()) { + chassis_.set_throttle_percentage(static_cast( + chassis_detail.%(throttle_protocol_name)s().%(throttle_report_name)s())); + } else { + chassis_.set_throttle_percentage(0); + } +""" + protocol_chassis_brake_fmt = """ // 6 brake + if (chassis_detail.has_%(brake_protocol_name)s() && + chassis_detail.%(brake_protocol_name)s().has_%(brake_report_name)s()) { + chassis_.set_brake_percentage(static_cast( + chassis_detail.%(brake_protocol_name)s().%(brake_report_name)s())); + } else { + chassis_.set_brake_percentage(0); + } +""" + protocol_chassis_gear_fmt = """ // 7 gear + if (chassis_detail.has_%(gear_protocol_name)s() && + chassis_detail.%(gear_protocol_name)s().has_%(gear_report_name)s()) { + Chassis::GearPosition gear_pos = Chassis::GEAR_INVALID; + + if (chassis_detail.%(gear_protocol_name)s().%(gear_report_name)s() == + %(gear_report_protocol_name_cap)s::%(gear_report_neutral_enum)s) { + gear_pos = Chassis::GEAR_NEUTRAL; + } + if (chassis_detail.%(gear_protocol_name)s().%(gear_report_name)s() == + %(gear_report_protocol_name_cap)s::%(gear_report_reverse_enum)s) { + gear_pos = Chassis::GEAR_REVERSE; + } + if (chassis_detail.%(gear_protocol_name)s().%(gear_report_name)s() == + %(gear_report_protocol_name_cap)s::%(gear_report_drive_enum)s) { + gear_pos = Chassis::GEAR_DRIVE; + } + if (chassis_detail.%(gear_protocol_name)s().%(gear_report_name)s() == + %(gear_report_protocol_name_cap)s::%(gear_report_park_enum)s) { + gear_pos = Chassis::GEAR_PARKING; + } + + chassis_.set_gear_location(gear_pos); + } else { + chassis_.set_gear_location(Chassis::GEAR_NONE); + } +""" + protocol_chassis_steer_fmt = """ // 8 steer + if (chassis_detail.has_%(steer_protocol_name)s() && + chassis_detail.%(steer_protocol_name)s().has_%(steer_report_name)s()) { + chassis_.set_steering_percentage(static_cast( + chassis_detail.%(steer_protocol_name)s().%(steer_report_name)s() * 100.0 / + vehicle_params_.max_steer_angle())); + } else { + chassis_.set_steering_percentage(0); + } +""" + protocol_chassis_brake_enable_fmt = """ if (chassis_detail.has_%(brake_protocol_name)s() && + chassis_detail.%(brake_protocol_name)s().has_%(brake_report_enable_name)s()) { + chassis_.mutable_check_response()->set_is_esp_online( + chassis_detail.%(brake_protocol_name)s().%(brake_report_enable_name)s() == 1); + } +""" + protocol_chassis_throttle_enable_fmt = """ if (chassis_detail.has_%(throttle_protocol_name)s() && + chassis_detail.%(throttle_protocol_name)s().has_%(throttle_report_enable_name)s()) { + chassis_.mutable_check_response()->set_is_vcu_online( + chassis_detail.%(throttle_protocol_name)s().%(throttle_report_enable_name)s() == 1); + } +""" + protocol_chassis_steer_enable_fmt = """ if (chassis_detail.has_%(steer_protocol_name)s() && + chassis_detail.%(steer_protocol_name)s().has_%(steer_report_enable_name)s()) { + chassis_.mutable_check_response()->set_is_eps_online( + chassis_detail.%(steer_protocol_name)s().%(steer_report_enable_name)s() == 1); + } +""" + protocol_chassis_enable_fmt = " // 9 checkresponse signal" + + protocol_auto_enable_add_list = [] + protocol_steer_enable_add_list = [] + protocol_speed_enable_add_list = [] + protocol_brake_command_list = [] + protocol_throttle_command_list = [] + protocol_steer_command_list = [] + protocol_gear_command_list = [] + protocol_brake_command_fmt = "%(brake_command_protocol_name)s_->set_%(brake_command_name)s(pedal);" + protocol_brake_enable_command_fmt = """ %(brake_command_protocol_name)s_->set_%(brake_command_enable_name)s( + %(brake_command_protocol_name_cap)s::%(brake_command_enable_enable_enum)s); +""" + protocol_brake_disenable_command_fmt = """ %(brake_command_protocol_name)s_->set_%(brake_command_enable_name)s( + %(brake_command_protocol_name_cap)s::%(brake_command_enable_disable_enum)s); +""" + protocol_throttle_command_fmt = "%(throttle_command_protocol_name)s_->set_%(throttle_command_name)s(pedal);" + protocol_throttle_enable_command_fmt = """ %(throttle_command_protocol_name)s_->set_%(throttle_command_enable_name)s( + %(throttle_command_protocol_name_cap)s::%(throttle_command_enable_enable_enum)s); +""" + protocol_throttle_disenable_command_fmt = """ %(throttle_command_protocol_name)s_->set_%(throttle_command_enable_name)s( + %(throttle_command_protocol_name_cap)s::%(throttle_command_enable_disable_enum)s); +""" + protocol_steer_command_fmt = """const double real_angle = + vehicle_params_.max_steer_angle() / M_PI * 180 * angle / 100.0; + %(steer_command_protocol_name)s_->set_%(steer_command_name)s(real_angle); +""" + protocol_steer_enable_command_fmt = """ %(steer_command_protocol_name)s_->set_%(steer_command_enable_name)s( + %(steer_command_protocol_name_cap)s::%(steer_command_enable_enable_enum)s); +""" + protocol_steer_disenable_command_fmt = """ %(steer_command_protocol_name)s_->set_%(steer_command_enable_name)s( + %(steer_command_protocol_name_cap)s::%(steer_command_enable_disable_enum)s); +""" + protocol_gear_command_fmt = """switch (gear_position) { + case Chassis::GEAR_NEUTRAL: { + %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_neutral_enum)s); + break; + } + case Chassis::GEAR_REVERSE: { + %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_reverse_enum)s); + break; + } + case Chassis::GEAR_DRIVE: { + %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_drive_enum)s); + break; + } + case Chassis::GEAR_PARKING: { + %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_park_enum)s); + break; + } + case Chassis::GEAR_INVALID: { + %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_neutral_enum)s); + break; + } + default: { + %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_neutral_enum)s); + break; + } + } +""" + protocol_gear_enable_command_fmt = """ %(gear_command_protocol_name)s_->set_%(gear_command_enable_name)s( + %(gear_command_protocol_name_cap)s::%(gear_command_enable_enable_enum)s); +""" + protocol_gear_disenable_command_fmt = """ %(gear_command_protocol_name)s_->set_%(gear_command_enable_name)s( + %(gear_command_protocol_name_cap)s::%(gear_command_enable_disable_enum)s); +""" + + protocols = content["protocols"] for pid in protocols: + # print(pid) p = protocols[pid] # print("p is ", p) if p["protocol_type"] == "control": @@ -123,12 +266,18 @@ def gen_vehicle_controller_cpp(content, output_dir): if p["protocol_category"] == "throttle": fmt_val["throttle_command_name"] = var["name"].lower() fmt_val["throttle_command_protocol_name"] = p["name"].lower() + throttle_command_get = protocol_throttle_command_fmt % fmt_val + protocol_throttle_command_list.append(throttle_command_get) if p["protocol_category"] == "brake": fmt_val["brake_command_name"] = var["name"].lower() fmt_val["brake_command_protocol_name"] = p["name"].lower() + brake_command_get = protocol_brake_command_fmt % fmt_val + protocol_brake_command_list.append(brake_command_get) if p["protocol_category"] == "steer": fmt_val["steer_command_name"] = var["name"].lower() fmt_val["steer_command_protocol_name"] = p["name"].lower() + steer_command_get = protocol_steer_command_fmt % fmt_val + protocol_steer_command_list.append(steer_command_get) if p["protocol_category"] == "gear": fmt_val["gear_command_name"] = var["name"].lower() fmt_val["gear_command_protocol_name"] = p["name"].lower() @@ -138,26 +287,50 @@ def gen_vehicle_controller_cpp(content, output_dir): fmt_val["gear_command_reverse_enum"] = var["enum"][2] fmt_val["gear_command_neutral_enum"] = var["enum"][3] fmt_val["gear_command_drive_enum"] = var["enum"][4] + gear_command_get = protocol_gear_command_fmt % fmt_val + protocol_gear_command_list.append(gear_command_get) if "enable" in var["signal_type"]: if "protocol_category" in p.keys(): if p["protocol_category"] == "throttle": fmt_val["throttle_command_enable_name"] = var["name"].lower() + fmt_val["throttle_command_protocol_name"] = p["name"].lower() fmt_val["throttle_command_protocol_name_cap"] = p["name"].capitalize() if var["type"] == "enum": fmt_val["throttle_command_enable_disable_enum"] = var["enum"][0] fmt_val["throttle_command_enable_enable_enum"] = var["enum"][1] + protocol_auto_enable_add_list.append(protocol_throttle_enable_command_fmt % fmt_val) + protocol_steer_enable_add_list.append(protocol_throttle_disenable_command_fmt % fmt_val) + protocol_speed_enable_add_list.append(protocol_throttle_enable_command_fmt % fmt_val) if p["protocol_category"] == "brake": fmt_val["brake_command_enable_name"] = var["name"].lower() + fmt_val["brake_command_protocol_name"] = p["name"].lower() fmt_val["brake_command_protocol_name_cap"] = p["name"].capitalize() if var["type"] == "enum": fmt_val["brake_command_enable_disable_enum"] = var["enum"][0] fmt_val["brake_command_enable_enable_enum"] = var["enum"][1] + protocol_auto_enable_add_list.append(protocol_brake_enable_command_fmt % fmt_val) + protocol_steer_enable_add_list.append(protocol_brake_disenable_command_fmt % fmt_val) + protocol_speed_enable_add_list.append(protocol_brake_enable_command_fmt % fmt_val) if p["protocol_category"] == "steer": fmt_val["steer_command_enable_name"] = var["name"].lower() + fmt_val["steer_command_protocol_name"] = p["name"].lower() fmt_val["steer_command_protocol_name_cap"] = p["name"].capitalize() if var["type"] == "enum": fmt_val["steer_command_enable_disable_enum"] = var["enum"][0] fmt_val["steer_command_enable_enable_enum"] = var["enum"][1] + protocol_auto_enable_add_list.append(protocol_steer_enable_command_fmt % fmt_val) + protocol_steer_enable_add_list.append(protocol_steer_enable_command_fmt % fmt_val) + protocol_speed_enable_add_list.append(protocol_steer_disenable_command_fmt % fmt_val) + if p["protocol_category"] == "gear": + fmt_val["gear_command_enable_name"] = var["name"].lower() + fmt_val["gear_command_protocol_name"] = p["name"].lower() + fmt_val["gear_command_protocol_name_cap"] = p["name"].capitalize() + if var["type"] == "enum": + fmt_val["gear_command_enable_disable_enum"] = var["enum"][0] + fmt_val["gear_command_enable_enable_enum"] = var["enum"][1] + protocol_auto_enable_add_list.append(protocol_gear_enable_command_fmt % fmt_val) + protocol_steer_enable_add_list.append(protocol_gear_disenable_command_fmt % fmt_val) + protocol_speed_enable_add_list.append(protocol_gear_enable_command_fmt % fmt_val) if p["protocol_type"] == "report": protocol_name = p["name"].lower() @@ -167,18 +340,26 @@ def gen_vehicle_controller_cpp(content, output_dir): if "speed" in var["signal_type"]: fmt_val["speed_reoport_name"] = var["name"].lower() fmt_val["speed_protocol_name"] = p["name"].lower() + speed_get = protocol_chassis_speed_fmt % fmt_val + protocol_chassis_get_list.append(speed_get) if "command" in var["signal_type"]: # print("p keys is ", p.keys()) if "protocol_category" in p.keys(): if p["protocol_category"] == "throttle": fmt_val["throttle_report_name"] = var["name"].lower() fmt_val["throttle_protocol_name"] = p["name"].lower() + throttle_get = protocol_chassis_throttle_fmt % fmt_val + protocol_chassis_get_list.append(throttle_get) if p["protocol_category"] == "brake": fmt_val["brake_report_name"] = var["name"].lower() fmt_val["brake_protocol_name"] = p["name"].lower() + brake_get = protocol_chassis_brake_fmt % fmt_val + protocol_chassis_get_list.append(brake_get) if p["protocol_category"] == "steer": fmt_val["steer_report_name"] = var["name"].lower() fmt_val["steer_protocol_name"] = p["name"].lower() + steer_get = protocol_chassis_steer_fmt % fmt_val + protocol_chassis_get_list.append(steer_get) if p["protocol_category"] == "gear": fmt_val["gear_report_name"] = var["name"].lower() fmt_val["gear_protocol_name"] = p["name"].lower() @@ -188,28 +369,51 @@ def gen_vehicle_controller_cpp(content, output_dir): fmt_val["gear_report_reverse_enum"] = var["enum"][2] fmt_val["gear_report_neutral_enum"] = var["enum"][3] fmt_val["gear_report_drive_enum"] = var["enum"][4] + gear_get = protocol_chassis_gear_fmt % fmt_val + protocol_chassis_get_list.append(gear_get) if "enable" in var["signal_type"]: if "protocol_category" in p.keys(): + protocol_chassis_get_list.append(protocol_chassis_enable_fmt) if p["protocol_category"] == "throttle": + fmt_val["throttle_protocol_name"] = p["name"].lower() fmt_val["throttle_report_enable_name"] = var["name"].lower() + throttle_enable_get = protocol_chassis_throttle_enable_fmt % fmt_val + protocol_chassis_get_list.append(throttle_enable_get) if p["protocol_category"] == "brake": + fmt_val["brake_protocol_name"] = p["name"].lower() fmt_val["brake_report_enable_name"] = var["name"].lower() + brake_enable_get = protocol_chassis_brake_enable_fmt % fmt_val + protocol_chassis_get_list.append(brake_enable_get) if p["protocol_category"] == "steer": fmt_val["steer_report_enable_name"] = var["name"].lower() - - + fmt_val["steer_protocol_name"] = p["name"].lower() + steer_enable_get = protocol_chassis_steer_enable_fmt % fmt_val + protocol_chassis_get_list.append(steer_enable_get) # print(fmt_val["gear_report_name"]) protocol_ptr_get_list.sort() protocol_add_list.sort() + protocol_chassis_get_list.sort() + protocol_auto_enable_add_list.sort() + protocol_steer_enable_add_list.sort() + protocol_speed_enable_add_list.sort() fmt_val["protocol_ptr_get_list"] = "\n".join(protocol_ptr_get_list) fmt_val["protocol_add_list"] = "\n".join(protocol_add_list) + fmt_val["protocol_chassis_get_list"] = "\n".join(protocol_chassis_get_list) + fmt_val["protocol_auto_enable_add_list"] = "\n".join(protocol_auto_enable_add_list) + fmt_val["protocol_steer_enable_add_list"] = "\n".join(protocol_steer_enable_add_list) + fmt_val["protocol_speed_enable_add_list"] = "\n".join(protocol_speed_enable_add_list) + fmt_val["protocol_brake_command_list"] = "\n".join(protocol_brake_command_list) + fmt_val["protocol_throttle_command_list"] = "\n".join(protocol_throttle_command_list) + fmt_val["protocol_steer_command_list"] = "\n".join(protocol_steer_command_list) + fmt_val["protocol_gear_command_list"] = "\n".join(protocol_gear_command_list) + cpp.write(FMT % fmt_val) -def gen_message_manager_header(content, output_dir): - message_manager_header_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/message_manager.h.tpl" +def gen_message_manager_header(content, output_dir, protocol_template_dir): + message_manager_header_tpl_file = protocol_template_dir + "message_manager.h.tpl" with open(message_manager_header_tpl_file, 'r') as tpl: fmt = tpl.readlines() car_type = content["car_type"] @@ -225,8 +429,8 @@ def gen_message_manager_header(content, output_dir): header.write(FMT % fmt_val) -def gen_message_manager_cpp(content, output_dir): - message_manager_cpp_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/message_manager.cc.tpl" +def gen_message_manager_cpp(content, output_dir, protocol_template_dir): + message_manager_cpp_tpl_file = protocol_template_dir + "message_manager.cc.tpl" with open(message_manager_cpp_tpl_file, 'r') as tpl: fmt = tpl.readlines() car_type = content["car_type"] @@ -270,8 +474,8 @@ def gen_message_manager_cpp(content, output_dir): cpp.write(FMT % fmt_val) -def gen_vehicle_factory_header(content, output_dir): - vehicle_factory_header_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/vehicle_factory.h.tpl" +def gen_vehicle_factory_header(content, output_dir, protocol_template_dir): + vehicle_factory_header_tpl_file = protocol_template_dir + "vehicle_factory.h.tpl" with open(vehicle_factory_header_tpl_file, 'r') as tpl: fmt = tpl.readlines() car_type = content["car_type"] @@ -286,8 +490,8 @@ def gen_vehicle_factory_header(content, output_dir): header.write(FMT % fmt_val) -def gen_vehicle_factory_cpp(content, output_dir): - vehicle_factory_cpp_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/vehicle_factory.cc.tpl" +def gen_vehicle_factory_cpp(content, output_dir, protocol_template_dir): + vehicle_factory_cpp_tpl_file = protocol_template_dir + "vehicle_factory.cc.tpl" with open(vehicle_factory_cpp_tpl_file, 'r') as tpl: fmt = tpl.readlines() car_type = content["car_type"] @@ -302,8 +506,8 @@ def gen_vehicle_factory_cpp(content, output_dir): cpp.write(FMT % fmt_val) -def gen_build_file(content, output_dir): - build_tpl_file = "/apollo/modules/tools/gen_vehicle_protocol/template/controller_manager_BUILD.tpl" +def gen_build_file(content, output_dir, protocol_template_dir): + build_tpl_file = protocol_template_dir + "controller_manager_BUILD.tpl" with open(build_tpl_file, 'r') as tpl: fmt = tpl.readlines() car_type = content["car_type"] @@ -314,18 +518,41 @@ def gen_build_file(content, output_dir): fmt_val["car_type_lower"] = car_type.lower() fp.write(FMT % fmt_val) +def gen_cyberfile(content, output_dir, protocol_template_dir): + cyberfile_tpl_file = protocol_template_dir + "cyberfile.xml.tpl" + with open(cyberfile_tpl_file, 'r') as tpl: + fmt = tpl.readlines() + car_type = content["car_type"] + cyberfile_file = output_dir + "cyberfile.xml" + with open(cyberfile_file, 'w') as xml: + FMT = "".join(fmt) + fmt_val = {} + fmt_val["car_type_lower"] = car_type.lower() + xml.write(FMT % fmt_val) + +def gen_canbus_vehicle_build_file(content, output_dir, protocol_template_dir): + canbus_vehicle_build_tpl_file = protocol_template_dir + "canbus-vehicle_BUILD.tpl" + with open(canbus_vehicle_build_tpl_file, 'r') as tpl: + fmt = tpl.readlines() + car_type = content["car_type"] + canbus_vehicle_build_file = output_dir + ("canbus-vehicle-%s.BUILD" % car_type.lower()) + with open(canbus_vehicle_build_file, 'w') as fp: + FMT = "".join(fmt) + fp.write(FMT) -def gen_vehicle_controller_and_manager(config_file, output_dir): +def gen_vehicle_controller_and_manager(config_file, output_dir, protocol_template_dir): print("Generating controller and manager") with open(config_file, 'r') as fp: content = yaml.safe_load(fp) - gen_vehicle_controller_header(content, output_dir) - gen_vehicle_controller_cpp(content, output_dir) - gen_message_manager_header(content, output_dir) - gen_message_manager_cpp(content, output_dir) - gen_vehicle_factory_header(content, output_dir) - gen_vehicle_factory_cpp(content, output_dir) - gen_build_file(content, output_dir) + gen_vehicle_controller_header(content, output_dir, protocol_template_dir) + gen_vehicle_controller_cpp(content, output_dir, protocol_template_dir) + gen_message_manager_header(content, output_dir, protocol_template_dir) + gen_message_manager_cpp(content, output_dir, protocol_template_dir) + gen_vehicle_factory_header(content, output_dir, protocol_template_dir) + gen_vehicle_factory_cpp(content, output_dir, protocol_template_dir) + gen_build_file(content, output_dir, protocol_template_dir) + gen_cyberfile(content, output_dir, protocol_template_dir) + gen_canbus_vehicle_build_file(content, output_dir, protocol_template_dir) if __name__ == "__main__": @@ -341,4 +568,6 @@ def gen_vehicle_controller_and_manager(config_file, output_dir): "/" shutil.rmtree(output_dir, True) os.makedirs(output_dir) - gen_vehicle_controller_and_manager(protocol_conf, output_dir) + + protocol_template_dir = sys.path[0] + "/template/" + gen_vehicle_controller_and_manager(protocol_conf, output_dir, protocol_template_dir) diff --git a/modules/calibration/calibration.BUILD b/modules/tools/gen_vehicle_protocol/template/canbus-vehicle_BUILD.tpl similarity index 100% rename from modules/calibration/calibration.BUILD rename to modules/tools/gen_vehicle_protocol/template/canbus-vehicle_BUILD.tpl diff --git a/modules/tools/gen_vehicle_protocol/template/control_protocol.cc.tpl b/modules/tools/gen_vehicle_protocol/template/control_protocol.cc.tpl index 3506c5b7137..cda4b108c77 100644 --- a/modules/tools/gen_vehicle_protocol/template/control_protocol.cc.tpl +++ b/modules/tools/gen_vehicle_protocol/template/control_protocol.cc.tpl @@ -34,6 +34,11 @@ uint32_t %(classname)s::GetPeriod() const { return PERIOD; } +void %(classname)s::Parse(const std::uint8_t* bytes, int32_t length, + %(car_type_capitalize)s* chassis) const { +%(set_parse_var_to_protocol_list)s +} + void %(classname)s::UpdateData(uint8_t* data) { %(set_private_var_list)s } @@ -43,6 +48,7 @@ void %(classname)s::Reset() { %(set_private_var_init_list)s } %(set_func_impl_list)s +%(set_parse_func_impl_list)s } // namespace %(car_type_lower)s } // namespace canbus } // namespace apollo diff --git a/modules/tools/gen_vehicle_protocol/template/control_protocol.h.tpl b/modules/tools/gen_vehicle_protocol/template/control_protocol.h.tpl index c2933d7ff4d..fdaffd30616 100644 --- a/modules/tools/gen_vehicle_protocol/template/control_protocol.h.tpl +++ b/modules/tools/gen_vehicle_protocol/template/control_protocol.h.tpl @@ -32,6 +32,9 @@ class %(classname)s : public ::apollo::drivers::canbus::ProtocolData< uint32_t GetPeriod() const override; + void Parse(const std::uint8_t* bytes, int32_t length, + %(car_type_cap)s* chassis) const override; + void UpdateData(uint8_t* data) override; void Reset() override; @@ -39,6 +42,7 @@ class %(classname)s : public ::apollo::drivers::canbus::ProtocolData< private: %(declare_private_func_list)s +%(declare_private_parse_func_list)s private: %(declare_private_var_list)s diff --git a/modules/tools/gen_vehicle_protocol/template/controller.cc.tpl b/modules/tools/gen_vehicle_protocol/template/controller.cc.tpl index 490cb9ac32e..5a4f0a42d4e 100644 --- a/modules/tools/gen_vehicle_protocol/template/controller.cc.tpl +++ b/modules/tools/gen_vehicle_protocol/template/controller.cc.tpl @@ -123,86 +123,20 @@ Chassis %(car_type_cap)sController::chassis() { chassis_.set_error_code(chassis_error_code()); // 3 chassis_.set_engine_started(true); - // 4 chassis spd - if (chassis_detail.has_%(speed_protocol_name)s() && - chassis_detail.%(speed_protocol_name)s().has_%(speed_reoport_name)s()) { - chassis_.set_speed_mps( - static_cast(chassis_detail.%(speed_protocol_name)s().%(speed_reoport_name)s())); - } else { - chassis_.set_speed_mps(0); - } - // 5 throttle - if (chassis_detail.has_%(throttle_protocol_name)s() && - chassis_detail.%(throttle_protocol_name)s().has_%(throttle_report_name)s()) { - chassis_.set_throttle_percentage(static_cast( - chassis_detail.%(throttle_protocol_name)s().%(throttle_report_name)s())); - } else { - chassis_.set_throttle_percentage(0); - } - // 6 brake - if (chassis_detail.has_%(brake_protocol_name)s() && - chassis_detail.%(brake_protocol_name)s().has_%(brake_report_name)s()) { - chassis_.set_brake_percentage(static_cast( - chassis_detail.%(brake_protocol_name)s().%(brake_report_name)s())); - } else { - chassis_.set_brake_percentage(0); + %(protocol_chassis_get_list)s + if (CheckChassisError()) { + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "Chassis has some fault, please check the chassis_detail."); } - // 7 gear - if (chassis_detail.has_%(gear_protocol_name)s() && - chassis_detail.%(gear_protocol_name)s().has_%(gear_report_name)s()) { - Chassis::GearPosition gear_pos = Chassis::GEAR_INVALID; - - if (chassis_detail.%(gear_protocol_name)s().%(gear_report_name)s() == - %(gear_report_protocol_name_cap)s::%(gear_report_neutral_enum)s) { - gear_pos = Chassis::GEAR_NEUTRAL; - } - if (chassis_detail.%(gear_protocol_name)s().gear_sts() == - %(gear_report_protocol_name_cap)s::%(gear_report_reverse_enum)s) { - gear_pos = Chassis::GEAR_REVERSE; - } - if (chassis_detail.%(gear_protocol_name)s().gear_sts() == - %(gear_report_protocol_name_cap)s::%(gear_report_drive_enum)s) { - gear_pos = Chassis::GEAR_DRIVE; - } - if (chassis_detail.%(gear_protocol_name)s().gear_sts() == - %(gear_report_protocol_name_cap)s::%(gear_report_park_enum)s) { - gear_pos = Chassis::GEAR_PARKING; - } - chassis_.set_gear_location(gear_pos); - } else { - chassis_.set_gear_location(Chassis::GEAR_NONE); - } - // 8 steer - if (chassis_detail.has_%(steer_protocol_name)s() && - chassis_detail.%(steer_protocol_name)s().has_%(steer_report_name)s()) { - chassis_.set_steering_percentage(static_cast( - chassis_detail.%(steer_protocol_name)s().%(steer_report_name)s() * 100.0 / - vehicle_params_.max_steer_angle())); - } else { - chassis_.set_steering_percentage(0); - } - // 9 checkresponse signal - if (chassis_detail.has_%(brake_protocol_name)s() && - chassis_detail.%(brake_protocol_name)s().has_%(brake_report_enable_name)s()) { - chassis_.mutable_check_response()->set_is_esp_online( - chassis_detail.%(brake_protocol_name)s().%(brake_report_enable_name)s() == 1); - } - if (chassis_detail.has_%(steer_protocol_name)s() && - chassis_detail.%(steer_protocol_name)s().has_%(steer_report_enable_name)s()) { - chassis_.mutable_check_response()->set_is_eps_online( - chassis_detail.%(steer_protocol_name)s().%(steer_report_enable_name)s() == 1); - } - if (chassis_detail.has_%(throttle_protocol_name)s() && - chassis_detail.%(throttle_protocol_name)s().has_%(throttle_report_enable_name)s()) { - chassis_.mutable_check_response()->set_is_vcu_online( - chassis_detail.%(throttle_protocol_name)s().%(throttle_report_enable_name)s() == 1); - } /* ADD YOUR OWN CAR CHASSIS OPERATION // 10 battery soc // 11 vin // 12 bumper event */ + return chassis_; } @@ -217,12 +151,7 @@ ErrorCode %(car_type_cap)sController::EnableAutoMode() { return ErrorCode::OK; } // set enable - %(brake_command_protocol_name)s_->set_%(brake_command_enable_name)s( - %(brake_command_protocol_name_cap)s::%(brake_command_enable_enable_enum)s); - %(throttle_command_protocol_name)s_->set_%(throttle_command_enable_name)s( - %(throttle_command_protocol_name_cap)s::%(throttle_command_enable_enable_enum)s); - %(steer_command_protocol_name)s_->set_%(steer_command_enable_name)s( - %(steer_command_protocol_name_cap)s::%(steer_command_enable_enable_enum)s); + %(protocol_auto_enable_add_list)s can_sender_->Update(); const int32_t flag = @@ -258,12 +187,7 @@ ErrorCode %(car_type_cap)sController::EnableSteeringOnlyMode() { /* ADD YOUR OWN CAR CHASSIS OPERATION // TODO(ALL): CHECK YOUR VEHICLE WHETHER SUPPORT THIS MODE OR NOT // set enable - %(brake_command_protocol_name)s_->set_%(brake_command_enable_name)s( - %(brake_command_protocol_name_cap)s::%(brake_command_enable_disable_enum)s); - %(throttle_command_protocol_name)s_->set_%(throttle_command_enable_name)s( - %(throttle_command_protocol_name_cap)s::%(throttle_command_enable_disable_enum)s); - %(steer_command_protocol_name)s_->set_%(steer_command_enable_name)s( - %(steer_command_protocol_name_cap)s::%(steer_command_enable_enable_enum)s); + %(protocol_steer_enable_add_list)s can_sender_->Update(); if (!CheckResponse(CHECK_RESPONSE_STEER_UNIT_FLAG, true)) { @@ -289,12 +213,7 @@ ErrorCode %(car_type_cap)sController::EnableSpeedOnlyMode() { /* ADD YOUR OWN CAR CHASSIS OPERATION // TODO(ALL): CHECK YOUR VEHICLE WHETHER SUPPORT THIS MODE OR NOT // set enable - %(brake_command_protocol_name)s_->set_%(brake_command_enable_name)s( - %(brake_command_protocol_name_cap)s::%(brake_command_enable_enable_enum)s); - %(throttle_command_protocol_name)s_->set_%(throttle_command_enable_name)s( - %(throttle_command_protocol_name_cap)s::%(throttle_command_enable_enable_enum)s); - %(steer_command_protocol_name)s_->set_%(steer_command_enable_name)s( - %(steer_command_protocol_name_cap)s::%(steer_command_enable_disable_enum)s); + %(protocol_speed_enable_add_list)s can_sender_->Update(); if (!CheckResponse(CHECK_RESPONSE_SPEED_UNIT_FLAG, true)) { @@ -317,33 +236,7 @@ void %(car_type_cap)sController::Gear(Chassis::GearPosition gear_position) { AINFO << "This drive mode no need to set gear."; return; } - switch (gear_position) { - case Chassis::GEAR_NEUTRAL: { - %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_neutral_enum)s); - break; - } - case Chassis::GEAR_REVERSE: { - %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_reverse_enum)s); - break; - } - case Chassis::GEAR_DRIVE: { - %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_drive_enum)s); - break; - } - case Chassis::GEAR_PARKING: { - %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_park_enum)s); - break; - } - case Chassis::GEAR_INVALID: { - // AERROR << "Gear command is invalid!"; - %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_neutral_enum)s); - break; - } - default: { - %(gear_command_protocol_name)s_->set_%(gear_command_name)s(%(gear_command_protocol_name_cap)s::%(gear_command_neutral_enum)s); - break; - } - } + %(protocol_gear_command_list)s } // brake with pedal @@ -356,7 +249,7 @@ void %(car_type_cap)sController::Brake(double pedal) { AINFO << "The current drive mode does not need to set brake pedal."; return; } - %(brake_command_protocol_name)s_->set_%(brake_command_name)s(pedal); + %(protocol_brake_command_list)s } // drive with pedal @@ -367,7 +260,7 @@ void %(car_type_cap)sController::Throttle(double pedal) { AINFO << "The current drive mode does not need to set throttle pedal."; return; } - %(throttle_command_protocol_name)s_->set_%(throttle_command_name)s(pedal); + %(protocol_throttle_command_list)s } // confirm the car is driven by acceleration command instead of @@ -394,13 +287,7 @@ void %(car_type_cap)sController::Steer(double angle) { AINFO << "The current driving mode does not need to set steer."; return; } - const double real_angle = - vehicle_params_.max_steer_angle() / M_PI * 180 * angle / 100.0; - %(steer_command_protocol_name)s_->set_%(steer_command_name)s(real_angle); - // reverse sign - /* ADD YOUR OWN CAR CHASSIS OPERATION - steering_64_->set_steering_angle(real_angle)->set_steering_angle_speed(200); - */ + %(protocol_steer_command_list)s } // %(car_type_lower)s default, steering with new angle speed @@ -412,9 +299,7 @@ void %(car_type_cap)sController::Steer(double angle, double angle_spd) { AINFO << "The current driving mode does not need to set steer."; return; } - const double real_angle = - vehicle_params_.max_steer_angle() / M_PI * 180 * angle / 100.0; - %(steer_command_protocol_name)s_->set_%(steer_command_name)s(real_angle); + %(protocol_steer_command_list)s } void %(car_type_cap)sController::SetEpbBreak(const ControlCommand& command) { @@ -457,7 +342,7 @@ void %(car_type_cap)sController::SetTurningSignal(const VehicleSignal& vehicle_s */ } -ErrorCode ChController::HandleCustomOperation( +ErrorCode %(car_type_cap)sController::HandleCustomOperation( const external_command::ChassisCommand& command) { return ErrorCode::OK; } @@ -498,7 +383,7 @@ void %(car_type_cap)sController::GetVin() { */ } -void ChController::ResetVin() { +void %(car_type_cap)sController::ResetVin() { // Reset vin from vehicle if exist /* ADD YOUR OWN CAR CHASSIS OPERATION vehicle_mode_command_116_->set_vin_req_cmd( @@ -513,10 +398,19 @@ void %(car_type_cap)sController::ResetProtocol() { } bool %(car_type_cap)sController::CheckChassisError() { + %(car_type_cap)s chassis_detail; + if (message_manager_->GetSensorData(&chassis_detail) != ErrorCode::OK) { + AERROR_EVERY(100) << "Get chassis detail failed."; + } if (!chassis_.has_check_response()) { - AERROR_EVERY(100) << "ChassisDetail has no %(car_type_lower)s vehicle info." - << chassis_.DebugString(); + AERROR_EVERY(100) << "ChassisDetail has no %(car_type_lower)s vehicle info."; + chassis_.mutable_engage_advice()->set_advice( + apollo::common::EngageAdvice::DISALLOW_ENGAGE); + chassis_.mutable_engage_advice()->set_reason( + "ChassisDetail has no %(car_type_lower)s vehicle info."); return false; + } else { + chassis_.clear_engage_advice(); } /* ADD YOUR OWN CAR CHASSIS OPERATION @@ -575,6 +469,8 @@ void %(car_type_cap)sController::SecurityDogThreadFunc() { } else { vertical_ctrl_fail = 0; } + + // 3. chassis fault check if (CheckChassisError()) { set_chassis_error_code(Chassis::CHASSIS_ERROR); emergency_mode = true; diff --git a/modules/tools/gen_vehicle_protocol/template/cyberfile.xml.tpl b/modules/tools/gen_vehicle_protocol/template/cyberfile.xml.tpl new file mode 100644 index 00000000000..d782ef92a2c --- /dev/null +++ b/modules/tools/gen_vehicle_protocol/template/cyberfile.xml.tpl @@ -0,0 +1,24 @@ + + canbus-vehicle-%(car_type_lower)s + local + + Dynamic loading for canbus %(car_type_lower)s vehicle module + + + Apollo + Apache License 2.0 + https://www.apollo.auto/ + https://github.com/ApolloAuto/apollo + https://github.com/ApolloAuto/apollo/issues + + module + //modules/canbus_vehicle/%(car_type_lower)s + + cyber + common + canbus + common-msgs + drivers-canbus + 3rd-gtest + + \ No newline at end of file diff --git a/modules/tools/gen_vehicle_protocol/template/proto_BUILD.tpl b/modules/tools/gen_vehicle_protocol/template/proto_BUILD.tpl index 10e1f4a994c..5b5780b06a2 100644 --- a/modules/tools/gen_vehicle_protocol/template/proto_BUILD.tpl +++ b/modules/tools/gen_vehicle_protocol/template/proto_BUILD.tpl @@ -1,6 +1,5 @@ -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@rules_cc//cc:defs.bzl", "cc_proto_library") -load("//tools:python_rules.bzl", "py_proto_library") +## Auto generated by `proto_build_generator.py` +load("//tools/proto:proto.bzl", "proto_library") load("//tools:apollo_package.bzl", "apollo_package") package(default_visibility = ["//visibility:public"]) diff --git a/modules/tools/manual_traffic_light/BUILD b/modules/tools/manual_traffic_light/BUILD index b72e5c46561..ed9874b5cce 100644 --- a/modules/tools/manual_traffic_light/BUILD +++ b/modules/tools/manual_traffic_light/BUILD @@ -1,7 +1,6 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library") load("//tools:cpplint.bzl", "cpplint") # load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_component", "apollo_cc_binary", "apollo_cc_library") package(default_visibility = ["//visibility:public"]) @@ -23,26 +22,18 @@ filegroup( ], ) -cc_library( - name = "manual_traffic_light", +apollo_component( + name = "libmanual_traffic_light_component.so", srcs = ["manual_traffic_light.cc"], copts = ["-DMODULE_NAME=\\\"manual_traffic_light\\\""], - alwayslink = True, deps = [ "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common/util:util_tool", - "//modules/map/hdmap:hdmap_util", + "//modules/map:apollo_map", "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", ], ) -cc_binary( - name = "libmanual_traffic_light_component.so", - linkshared = True, - linkstatic = True, - deps = [":manual_traffic_light"], -) - apollo_package() cpplint() diff --git a/modules/tools/open_space_visualization/BUILD b/modules/tools/open_space_visualization/BUILD index f406cd9197a..ba2207c44a8 100644 --- a/modules/tools/open_space_visualization/BUILD +++ b/modules/tools/open_space_visualization/BUILD @@ -8,7 +8,7 @@ py_library( name = "distance_approach_python_interface", srcs = ["distance_approach_python_interface.py"], data = [ - "//modules/planning/planning_base/open_space/tools:distance_approach_problem_wrapper_lib.so", + "//modules/planning/planning_base:distance_approach_problem_wrapper_lib.so", ], ) @@ -24,7 +24,7 @@ py_library( name = "hybrid_a_star_python_interface", srcs = ["hybrid_a_star_python_interface.py"], data = [ - "//modules/planning/planning_base/open_space/tools:hybrid_a_star_wrapper_lib.so", + "//modules/planning/planning_base:hybrid_a_star_wrapper_lib.so", ], ) @@ -40,7 +40,7 @@ py_library( name = "open_space_roi_interface", srcs = ["open_space_roi_interface.py"], data = [ - "//modules/planning/planning_base/open_space/tools:open_space_roi_wrapper_lib.so", + "//modules/planning/planning_base:open_space_roi_wrapper_lib.so", ], ) diff --git a/modules/tools/planning_command/planning_command.py b/modules/tools/planning_command/planning_command.py index 07d75136dd4..bb86264e9b4 100644 --- a/modules/tools/planning_command/planning_command.py +++ b/modules/tools/planning_command/planning_command.py @@ -12,10 +12,10 @@ seq_num = 1 # bdkjy_reverse_map polygon_free_space = [(437578.6, 4432555.6), - (437575.3, 4432551.8), - (437572.6, 4432550.3), - (437578.6, 4432545.7), - (437582.30, 4432551.8) + (437577.24, 4432552.8), + (437574.3, 4432550.0), + (437579.8, 4432544.7), + (437584.10, 4432551.24) ] # bdkjy_reverse_map_parking_out polygon_parking_out = [(437547.8, 4432544.35), @@ -50,7 +50,7 @@ def add_header(planning_command): def set_polygon(fsc, polygon): - roi = fsc.parking_roi.add() + roi = fsc.drivable_roi for pt in polygon: pt_pb = roi.point.add() pt_pb.x = pt[0] @@ -74,7 +74,7 @@ def set_pose(fsc, pose): plt.plot(x, y, '*-') plt.gca().xaxis.set_major_formatter(ticker.FormatStrFormatter('%.6f')) plt.gca().yaxis.set_major_formatter(ticker.FormatStrFormatter('%.6f')) - # plt.show() + plt.show() cyber.init() node = cyber.Node("planning_command") writer = node.create_writer( diff --git a/modules/tools/prediction/fake_prediction/BUILD b/modules/tools/prediction/fake_prediction/BUILD index 59655b1fc00..2038f38ae78 100644 --- a/modules/tools/prediction/fake_prediction/BUILD +++ b/modules/tools/prediction/fake_prediction/BUILD @@ -1,18 +1,9 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# library_dest = "tools/lib", -# targets = [":libfake_prediction_component.so"], -# visibility = ["//visibility:public"], -# ) - -cc_binary( +apollo_cc_binary( name = "libfake_prediction_component.so", srcs = ["fake_prediction.cc"], linkshared = True, diff --git a/modules/tools/visualizer/BUILD b/modules/tools/visualizer/BUILD index 7ade50efc49..2bf47d9d64f 100644 --- a/modules/tools/visualizer/BUILD +++ b/modules/tools/visualizer/BUILD @@ -1,22 +1,10 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary") load("//third_party/qt5:qt.bzl", "qt_cc_library") # load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_binary") package(default_visibility = ["//visibility:public"]) -# install( -# name = "install", -# runtime_dest = "tools/bin", -# targets = [ -# ":cyber_visualizer", -# ], -# deps = [ -# "//cyber:install", -# ], -# ) - -cc_binary( +apollo_cc_binary( name = "cyber_visualizer", copts = [ "-Iexternal/qt", diff --git a/modules/transform/BUILD b/modules/transform/BUILD index 0e4fdca4343..564fe3bf1e4 100644 --- a/modules/transform/BUILD +++ b/modules/transform/BUILD @@ -1,130 +1,53 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") load("//tools:cpplint.bzl", "cpplint") package(default_visibility = ["//visibility:public"]) -cc_binary( - name = "libbuffer.so", +apollo_cc_library( + name = "apollo_transform", srcs = [ "buffer.cc", - "buffer.h", - ], - linkshared = True, - linkstatic = True, - deps = [ - ":buffer_interface", - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//third_party/tf2", - "@com_google_absl//:absl", + "transform_broadcaster.cc", ], -) - -cc_library( - name = "buffer", - srcs = ["libbuffer.so"], hdrs = [ "buffer.h", "buffer_interface.h", + "transform_broadcaster.h", ], deps = [ "//cyber", - "//modules/common_msgs/transform_msgs:transform_cc_proto", - "//modules/common/adapters:adapter_gflags", "//third_party/tf2", - "@com_google_absl//:absl", - ], -) - -cc_library( - name = "buffer_interface", - hdrs = ["buffer_interface.h"], - deps = [ - "//modules/common_msgs/transform_msgs:transform_cc_proto", - ], - visibility = ["//visibility:private"], -) - -cc_binary( - name = "libtransform_broadcaster.so", - srcs = [ - "transform_broadcaster.cc", - "transform_broadcaster.h" - ], - linkshared = True, - linkstatic = True, - deps = [ - "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common_msgs/transform_msgs:transform_cc_proto", - ], + "@com_google_absl//:absl", + ] ) -cc_library( - name = "transform_broadcaster", - srcs = ["libtransform_broadcaster.so"], - hdrs = ["transform_broadcaster.h"], +apollo_cc_test( + name = "static_transform_component_test", + size = "small", + srcs = ["static_transform_component_test.cc"], deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/transform_msgs:transform_cc_proto", + ":static_transform_component_lib", + "@com_google_googletest//:gtest_main", ], ) -cc_library( - name = "static_transform_component_lib", +apollo_component( + name = "libstatic_transform_component.so", srcs = ["static_transform_component.cc"], hdrs = ["static_transform_component.h"], copts = ['-DMODULE_NAME=\\"static_transform\\"'], - alwayslink = True, deps = [ "//cyber", "//modules/common/adapters:adapter_gflags", "//modules/common/util:util_tool", - "//modules/transform/proto:static_transform_conf_cc_proto", "//modules/common_msgs/transform_msgs:transform_cc_proto", + "//modules/transform/proto:static_transform_conf_cc_proto", "@com_github_jbeder_yaml_cpp//:yaml-cpp", ], ) -cc_test( - name = "static_transform_component_test", - size = "small", - srcs = ["static_transform_component_test.cc"], - deps = [ - ":static_transform_component_lib", - "@com_google_googletest//:gtest_main", - ], -) - -cc_binary( - name = "libstatic_transform_component.so", - linkshared = True, - linkstatic = True, - deps = [":static_transform_component_lib"], -) - -# install( -# name = "install", -# data_dest = "transform", -# library_dest = "transform/lib", -# data = [ -# ":runtime_data", -# "cyberfile.xml", -# "transform.BUILD", -# ], -# targets = [ -# ":libstatic_transform_component.so", -# ":libbuffer.so", -# ":libtransform_broadcaster.so", -# ], -# deps = [ -# "//modules/transform/proto:py_pb_tf" -# ] -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -134,27 +57,6 @@ filegroup( ]), ) -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_transform_src", -# ":install_transform_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_transform_src", -# src_dir = ["."], -# dest = "transform/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_transform_hdrs", -# src_dir = ["."], -# dest = "transform/include", -# filter = "*.h", -# ) - apollo_package() + cpplint() diff --git a/modules/transform/conf/static_transform_conf.pb.txt b/modules/transform/conf/static_transform_conf.pb.txt index 220977d4274..ab3eaf10d63 100644 --- a/modules/transform/conf/static_transform_conf.pb.txt +++ b/modules/transform/conf/static_transform_conf.pb.txt @@ -12,6 +12,13 @@ extrinsic_file { enable: true } +extrinsic_file { + frame_id: "localization" + child_frame_id: "imu" + file_path: "/apollo/modules/localization/msf/params/imu_localization_extrinsics.yaml" + enable: true +} + extrinsic_file { frame_id: "velodyne128" child_frame_id: "front_6mm" diff --git a/modules/transform/transform.BUILD b/modules/transform/transform.BUILD deleted file mode 100644 index 9adf0b6ca7d..00000000000 --- a/modules/transform/transform.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "transform", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/transform", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/v2x/BUILD b/modules/v2x/BUILD index ebb397b0dcf..2e45d2afe3e 100644 --- a/modules/v2x/BUILD +++ b/modules/v2x/BUILD @@ -1,79 +1,213 @@ -# load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:cpplint.bzl", "cpplint") +load("//tools:apollo_package.bzl", "apollo_cc_binary", "apollo_cc_library", "apollo_cc_test", "apollo_component", "apollo_package") package(default_visibility = ["//visibility:public"]) +apollo_cc_library( + name = "apollo_v2x", + srcs = [ + "common/v2x_proxy_gflags.cc", + "fusion/apps/common/trans_tools.cc", + "fusion/configs/ft_config_manager.cc", + "fusion/configs/fusion_tracker_gflags.cc", + "fusion/libs/fusion/fusion.cc", + "v2x_proxy/app/utils.cc", + "v2x_proxy/app/v2x_proxy.cc", + "v2x_proxy/obu_interface/grpc_interface/grpc_client.cc", + "v2x_proxy/obu_interface/grpc_interface/grpc_server.cc", + "v2x_proxy/obu_interface/obu_interface_grpc_impl.cc", + "v2x_proxy/os_interface/os_interface.cc", + "v2x_proxy/proto_adapter/proto_adapter.cc", + ], + hdrs = [ + "common/v2x_proxy_gflags.h", + "fusion/apps/common/ft_definitions.h", + "fusion/apps/common/trans_tools.h", + "fusion/configs/ft_config_manager.h", + "fusion/configs/fusion_tracker_gflags.h", + "fusion/libs/common/v2x_object.h", + "fusion/libs/fusion/fusion.h", + "fusion/libs/fusion/km.h", + "fusion/libs/fusion/test_tools.h", + "v2x_proxy/app/utils.h", + "v2x_proxy/app/v2x_proxy.h", + "v2x_proxy/obu_interface/grpc_interface/grpc_client.h", + "v2x_proxy/obu_interface/grpc_interface/grpc_server.h", + "v2x_proxy/obu_interface/obu_interface_abstract_class.h", + "v2x_proxy/obu_interface/obu_interface_grpc_impl.h", + "v2x_proxy/os_interface/os_interface.h", + "v2x_proxy/proto_adapter/proto_adapter.h", + ], + deps = [ + "//cyber", + "//modules/common/adapters:adapter_gflags", + "//modules/common/math", + "//modules/common_msgs/localization_msgs:localization_cc_proto", + "//modules/common_msgs/perception_msgs:perception_camera_cc_proto", + "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", + "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", + "//modules/common_msgs/planning_msgs:planning_cc_proto", + "//modules/common_msgs/v2x_msgs:v2x_traffic_light_cc_proto", + "//modules/map:apollo_map", + "//modules/perception/common/base:apollo_perception_common_base", + "//modules/v2x/proto:fusion_params_cc_proto", + "//modules/v2x/proto:v2x_car_status_cc_proto", + "//modules/v2x/proto:v2x_junction_cc_proto", + "//modules/v2x/proto:v2x_obstacles_cc_proto", + "//modules/v2x/proto:v2x_obu_rsi_cc_proto", + "//modules/v2x/proto:v2x_obu_traffic_light_cc_proto", + "//modules/v2x/proto:v2x_rsi_cc_proto", + "//modules/v2x/proto:v2x_service_car_to_obu_cc_grpc", + "//modules/v2x/proto:v2x_service_obu_to_car_cc_grpc", + "@boost", + "@com_github_gflags_gflags//:gflags", + "@com_github_grpc_grpc//:grpc++", + "@com_google_absl//:absl", + "@eigen", + ], +) + +apollo_component( + name = "libv2x_fusion_component.so", + srcs = ["fusion/apps/v2x_fusion_component.cc",], + hdrs = ["fusion/apps/v2x_fusion_component.h",], + deps = [":apollo_v2x"], +) + +apollo_cc_test( + name = "v2x_fusion_component_test", + size = "small", + srcs = ["fusion/apps/v2x_fusion_component_test.cc"], + linkopts = [ + "-lgomp", + ], + deps = [ + ":v2x_fusion_component_lib", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "ft_config_manager_test", + size = "small", + srcs = ["fusion/configs/ft_config_manager_test.cc"], + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "v2x_object_test", + size = "small", + srcs = ["fusion/libs/common/v2x_object_test.cc"], + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "fusion_test", + size = "small", + srcs = ["fusion/libs/fusion/fusion_test.cc"], + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "km_test", + size = "small", + srcs = ["fusion/libs/fusion/km_test.cc"], + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_binary( + name = "v2x", + srcs = ["v2x_proxy/app/main.cc"], + deps = [ + ":apollo_v2x", + ], +) + +apollo_cc_test( + name = "utils_test", + size = "small", + timeout = "short", + srcs = ["v2x_proxy/app/utils_test.cc"], + deps = [ + ":apollo_v2x", + "//cyber", + "//modules/map:apollo_map", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "grpc_client_test", + size = "small", + srcs = ["v2x_proxy/obu_interface/grpc_interface/grpc_client_test.cc"], + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "grpc_server_test", + size = "small", + srcs = ["v2x_proxy/obu_interface/grpc_interface/grpc_server_test.cc"], + linkstatic = True, + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "obu_interface_grpc_impl_test", + size = "small", + srcs = ["v2x_proxy/obu_interface/obu_interface_grpc_impl_test.cc"], + linkstatic = True, + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "os_interface_test", + size = "small", + timeout = "short", + srcs = ["v2x_proxy/os_interface/os_interface_test.cc"], + linkstatic = True, + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + +apollo_cc_test( + name = "proto_adapter_test", + size = "small", + timeout = "short", + srcs = ["v2x_proxy/proto_adapter/proto_adapter_test.cc"], + deps = [ + ":apollo_v2x", + "@com_google_googletest//:gtest_main", + ], +) + filegroup( name = "v2x_testdata", srcs = glob(["fusion/test_data/*"]), ) -# install( -# name = "testdata", -# data = [ -# ":v2x_testdata" -# ], -# data_dest = "v2x/addition_data" -# ) - - -# install( -# name = "install", -# data_dest = "v2x", -# data = [ -# ":runtime_data", -# ":cyberfile.xml", -# ":v2x.BUILD", -# ], -# deps = [ -# "//modules/v2x/fusion/apps:install", -# ":pb_hdrs", -# "//modules/v2x/v2x_proxy/app:install", -# "testdata", -# "//modules/v2x/proto:py_pb_v2x" -# ], -# ) - -# install( -# name = "pb_hdrs", -# data_dest = "v2x/include", -# data = [ -# "//modules/v2x/proto:fusion_params_cc_proto", -# "//modules/v2x/proto:v2x_car_status_cc_proto", -# "//modules/v2x/proto:v2x_junction_cc_proto", -# "//modules/v2x/proto:v2x_monitor_cc_proto", -# "//modules/v2x/proto:v2x_obstacles_cc_proto", -# "//modules/v2x/proto:v2x_obu_rsi_cc_proto", -# "//modules/v2x/proto:v2x_obu_traffic_light_cc_proto", -# "//modules/v2x/proto:v2x_rsi_cc_proto", -# "//modules/v2x/proto:v2x_service_car_to_obu_cc_proto", -# "//modules/v2x/proto:v2x_service_obu_to_car_cc_proto", -# "//modules/v2x/proto:v2x_traffic_light_policy_cc_proto", -# ], -# ) - -# install_src_files( -# name = "install_src", -# deps = [ -# ":install_v2x_src", -# ":install_v2x_hdrs" -# ], -# ) - -# install_src_files( -# name = "install_v2x_src", -# src_dir = ["."], -# dest = "v2x/src", -# filter = "*", -# ) - -# install_src_files( -# name = "install_v2x_hdrs", -# src_dir = ["."], -# dest = "v2x/include", -# filter = "*.h", -# ) - filegroup( name = "runtime_data", srcs = glob([ @@ -85,4 +219,6 @@ filegroup( ]), ) -apollo_package() \ No newline at end of file +apollo_package() + +cpplint() diff --git a/modules/v2x/common/BUILD b/modules/v2x/common/BUILD deleted file mode 100644 index 82c935f3a15..00000000000 --- a/modules/v2x/common/BUILD +++ /dev/null @@ -1,17 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "v2x_proxy_gflags", - srcs = ["v2x_proxy_gflags.cc"], - hdrs = ["v2x_proxy_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -apollo_package() -cpplint() diff --git a/modules/v2x/dag/v2x_perception_fusion.dag b/modules/v2x/dag/v2x_perception_fusion.dag index 6fe10a4bf9d..92677183512 100644 --- a/modules/v2x/dag/v2x_perception_fusion.dag +++ b/modules/v2x/dag/v2x_perception_fusion.dag @@ -1,6 +1,6 @@ # Define all coms in DAG streaming. module_config { - module_library : "modules/v2x/fusion/apps/libv2x_fusion_component.so" + module_library : "modules/v2x/libv2x_fusion_component.so" components { class_name : "V2XFusionComponent" diff --git a/modules/v2x/fusion/apps/BUILD b/modules/v2x/fusion/apps/BUILD deleted file mode 100644 index 440c683a945..00000000000 --- a/modules/v2x/fusion/apps/BUILD +++ /dev/null @@ -1,55 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") -load("//tools:cpplint.bzl", "cpplint") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# library_dest = "v2x/lib/fusion/apps", -# targets = [ -# ":libv2x_fusion_component.so", -# ] -# ) - -cc_library( - name = "v2x_fusion_component_lib", - srcs = ["v2x_fusion_component.cc"], - hdrs = ["v2x_fusion_component.h"], - copts = [ - "-DMODULE_NAME=\\\"v2x_fusion\\\"", - ], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/v2x/fusion/apps/common:trans_tools", - "//modules/v2x/fusion/configs:ft_config_manager", - "//modules/v2x/fusion/configs:fusion_tracker_gflags", - "//modules/v2x/fusion/libs/fusion", - ], - alwayslink = True, -) - -cc_binary( - name = "libv2x_fusion_component.so", - linkshared = True, - linkstatic = True, - deps = [":v2x_fusion_component_lib"], -) - -cc_test( - name = "v2x_fusion_component_test", - size = "small", - srcs = ["v2x_fusion_component_test.cc"], - linkopts = [ - "-lgomp", - ], - deps = [ - ":v2x_fusion_component_lib", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/v2x/fusion/apps/common/BUILD b/modules/v2x/fusion/apps/common/BUILD deleted file mode 100644 index cbe6fe4730a..00000000000 --- a/modules/v2x/fusion/apps/common/BUILD +++ /dev/null @@ -1,29 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "ft_definitions", - hdrs = ["ft_definitions.h"], - deps = [ - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/perception_msgs:perception_camera_cc_proto", - "//modules/v2x/fusion/libs/common:v2x_object", - "//modules/v2x/proto:v2x_obstacles_cc_proto", - ], -) - -cc_library( - name = "trans_tools", - srcs = ["trans_tools.cc"], - hdrs = ["trans_tools.h"], - copts = ['-DMODULE_NAME=\\"v2x_fusion\\"'], - deps = [ - ":ft_definitions", - ], -) - -apollo_package() -cpplint() diff --git a/modules/v2x/fusion/configs/BUILD b/modules/v2x/fusion/configs/BUILD deleted file mode 100644 index ebef680f942..00000000000 --- a/modules/v2x/fusion/configs/BUILD +++ /dev/null @@ -1,39 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "fusion_tracker_gflags", - srcs = ["fusion_tracker_gflags.cc"], - hdrs = ["fusion_tracker_gflags.h"], - deps = [ - "@com_github_gflags_gflags//:gflags", - ], -) - -cc_library( - name = "ft_config_manager", - srcs = ["ft_config_manager.cc"], - hdrs = ["ft_config_manager.h"], - deps = [ - ":fusion_tracker_gflags", - "//cyber", - "//modules/v2x/proto:fusion_params_cc_proto", - "@boost", - ], -) - -cc_test( - name = "ft_config_manager_test", - size = "small", - srcs = ["ft_config_manager_test.cc"], - deps = [ - ":ft_config_manager", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/v2x/fusion/libs/common/BUILD b/modules/v2x/fusion/libs/common/BUILD deleted file mode 100644 index 1dc9913f4c9..00000000000 --- a/modules/v2x/fusion/libs/common/BUILD +++ /dev/null @@ -1,31 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "v2x_object", - hdrs = [ - "v2x_object.h", - ], - deps = [ - "//modules/perception/common/base:base_type", - "//modules/perception/common/base:box", - "//modules/perception/common/base:object", - "@com_google_absl//:absl", - ], -) - -cc_test( - name = "v2x_object_test", - size = "small", - srcs = ["v2x_object_test.cc"], - deps = [ - ":v2x_object", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/v2x/fusion/libs/fusion/BUILD b/modules/v2x/fusion/libs/fusion/BUILD deleted file mode 100644 index dacbfb24331..00000000000 --- a/modules/v2x/fusion/libs/fusion/BUILD +++ /dev/null @@ -1,58 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "fusion", - srcs = ["fusion.cc"], - hdrs = ["fusion.h"], - copts = ['-DMODULE_NAME=\\"v2x_fusion\\"'], - deps = [ - ":km", - "//modules/v2x/fusion/configs:ft_config_manager", - "//modules/v2x/fusion/libs/common:v2x_object", - "@eigen", - ], -) - -cc_library( - name = "km", - hdrs = ["km.h"], - deps = [ - "@eigen", - ], -) - -cc_library( - name = "test_tools", - hdrs = ["test_tools.h"], - deps = [ - "//modules/v2x/fusion/libs/common:v2x_object", - ], -) - -cc_test( - name = "fusion_test", - size = "small", - srcs = ["fusion_test.cc"], - deps = [ - ":fusion", - ":test_tools", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "km_test", - size = "small", - srcs = ["km_test.cc"], - deps = [ - ":km", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/v2x/proto/BUILD b/modules/v2x/proto/BUILD index 705aa6ae06e..9bf6a583a25 100644 --- a/modules/v2x/proto/BUILD +++ b/modules/v2x/proto/BUILD @@ -1,38 +1,10 @@ ## Auto generated by `proto_build_generator.py` -load("@rules_proto//proto:defs.bzl", "proto_library") -load("@rules_cc//cc:defs.bzl", "cc_proto_library") -load("//tools:python_rules.bzl", "py_grpc_library", "py_proto_library") +load("//tools/proto:proto.bzl", "proto_library") load("@com_github_grpc_grpc//bazel:cc_grpc_library.bzl", "cc_grpc_library") -# load("//tools/install:install.bzl", "install", "install_files") load("//tools:apollo_package.bzl", "apollo_package") package(default_visibility = ["//visibility:public"]) -# install_files( -# name = "py_pb_v2x", -# dest = "v2x/python/modules/v2x/proto", -# files = [ -# ":v2x_obstacles_py_pb2", -# ":v2x_car_status_py_pb2", -# ":v2x_rsi_py_pb2", -# ":v2x_service_obu_to_car_py_pb2", -# ":fusion_params_py_pb2", -# ":v2x_obu_traffic_light_py_pb2", -# ":v2x_obu_rsi_py_pb2", -# ":v2x_service_car_to_obu_py_pb2", -# ":v2x_monitor_py_pb2", -# ":v2x_junction_py_pb2", -# ":v2x_traffic_light_policy_py_pb2" -# ] -# ) - -cc_proto_library( - name = "v2x_obstacles_cc_proto", - deps = [ - ":v2x_obstacles_proto", - ], -) - proto_library( name = "v2x_obstacles_proto", srcs = ["v2x_obstacles.proto"], @@ -43,23 +15,6 @@ proto_library( ], ) -py_proto_library( - name = "v2x_obstacles_py_pb2", - deps = [ - ":v2x_obstacles_proto", - "//modules/common_msgs/basic_msgs:header_py_pb2", - "//modules/common_msgs/basic_msgs:error_code_py_pb2", - "//modules/common_msgs/perception_msgs:perception_obstacle_py_pb2", - ], -) - -cc_proto_library( - name = "v2x_car_status_cc_proto", - deps = [ - ":v2x_car_status_proto", - ], -) - proto_library( name = "v2x_car_status_proto", srcs = ["v2x_car_status.proto"], @@ -70,23 +25,6 @@ proto_library( ], ) -py_proto_library( - name = "v2x_car_status_py_pb2", - deps = [ - ":v2x_car_status_proto", - "//modules/common_msgs/localization_msgs:localization_py_pb2", - "//modules/common_msgs/chassis_msgs:chassis_detail_py_pb2", - ":v2x_junction_py_pb2", - ], -) - -cc_proto_library( - name = "v2x_rsi_cc_proto", - deps = [ - ":v2x_rsi_proto", - ], -) - proto_library( name = "v2x_rsi_proto", srcs = ["v2x_rsi.proto"], @@ -95,14 +33,6 @@ proto_library( ], ) -py_proto_library( - name = "v2x_rsi_py_pb2", - deps = [ - ":v2x_rsi_proto", - "//modules/common_msgs/basic_msgs:header_py_pb2", - ], -) - cc_grpc_library( name = "v2x_service_obu_to_car_cc_grpc", srcs = [":v2x_service_obu_to_car_proto"], @@ -110,13 +40,6 @@ cc_grpc_library( deps = [":v2x_service_obu_to_car_cc_proto"], ) -cc_proto_library( - name = "v2x_service_obu_to_car_cc_proto", - deps = [ - ":v2x_service_obu_to_car_proto", - ], -) - proto_library( name = "v2x_service_obu_to_car_proto", srcs = ["v2x_service_obu_to_car.proto"], @@ -128,47 +51,11 @@ proto_library( ], ) -# py_grpc_library( -# name = "v2x_service_obu_to_car_py_pb2_grpc", -# srcs = [":v2x_service_obu_to_car_proto"], -# deps = [":v2x_service_obu_to_car_py_pb2"], -# ) - -py_proto_library( - name = "v2x_service_obu_to_car_py_pb2", - deps = [ - ":v2x_service_obu_to_car_proto", - ":v2x_obu_traffic_light_py_pb2", - ":v2x_monitor_py_pb2", - ":v2x_obu_rsi_py_pb2", - ":v2x_obstacles_py_pb2", - ], -) -cc_proto_library( - name = "fusion_params_cc_proto", - deps = [ - ":fusion_params_proto", - ], -) - proto_library( name = "fusion_params_proto", srcs = ["fusion_params.proto"], ) -py_proto_library( - name = "fusion_params_py_pb2", - deps = [ - ":fusion_params_proto", - ], -) -cc_proto_library( - name = "v2x_obu_traffic_light_cc_proto", - deps = [ - ":v2x_obu_traffic_light_proto", - ], -) - proto_library( name = "v2x_obu_traffic_light_proto", srcs = ["v2x_obu_traffic_light.proto"], @@ -178,22 +65,6 @@ proto_library( ], ) -py_proto_library( - name = "v2x_obu_traffic_light_py_pb2", - deps = [ - ":v2x_obu_traffic_light_proto", - "//modules/common_msgs/basic_msgs:header_py_pb2", - "//modules/common_msgs/v2x_msgs:v2x_traffic_light_py_pb2", - ], -) - -cc_proto_library( - name = "v2x_obu_rsi_cc_proto", - deps = [ - ":v2x_obu_rsi_proto", - ], -) - proto_library( name = "v2x_obu_rsi_proto", srcs = ["v2x_obu_rsi.proto"], @@ -203,15 +74,6 @@ proto_library( ], ) -py_proto_library( - name = "v2x_obu_rsi_py_pb2", - deps = [ - ":v2x_obu_rsi_proto", - "//modules/common_msgs/basic_msgs:header_py_pb2", - "//modules/common_msgs/basic_msgs:geometry_py_pb2", - ], -) - cc_grpc_library( name = "v2x_service_car_to_obu_cc_grpc", srcs = [":v2x_service_car_to_obu_proto"], @@ -219,13 +81,6 @@ cc_grpc_library( deps = [":v2x_service_car_to_obu_cc_proto"], ) -cc_proto_library( - name = "v2x_service_car_to_obu_cc_proto", - deps = [ - ":v2x_service_car_to_obu_proto", - ], -) - proto_library( name = "v2x_service_car_to_obu_proto", srcs = ["v2x_service_car_to_obu.proto"], @@ -234,44 +89,11 @@ proto_library( ], ) -# py_grpc_library( -# name = "v2x_service_car_to_obu_py_pb2_grpc", -# srcs = [":v2x_service_car_to_obu_proto"], -# deps = [":v2x_service_car_to_obu_py_pb2"], -# ) - -py_proto_library( - name = "v2x_service_car_to_obu_py_pb2", - deps = [ - ":v2x_service_car_to_obu_proto", - ":v2x_car_status_py_pb2", - ], -) -cc_proto_library( - name = "v2x_monitor_cc_proto", - deps = [ - ":v2x_monitor_proto", - ], -) - proto_library( name = "v2x_monitor_proto", srcs = ["v2x_monitor.proto"], ) -py_proto_library( - name = "v2x_monitor_py_pb2", - deps = [ - ":v2x_monitor_proto", - ], -) -cc_proto_library( - name = "v2x_junction_cc_proto", - deps = [ - ":v2x_junction_proto", - ], -) - proto_library( name = "v2x_junction_proto", srcs = ["v2x_junction.proto"], @@ -280,31 +102,9 @@ proto_library( ], ) -py_proto_library( - name = "v2x_junction_py_pb2", - deps = [ - ":v2x_junction_proto", - "//modules/common_msgs/basic_msgs:geometry_py_pb2", - ], -) - -cc_proto_library( - name = "v2x_traffic_light_policy_cc_proto", - deps = [ - ":v2x_traffic_light_policy_proto", - ], -) - proto_library( name = "v2x_traffic_light_policy_proto", srcs = ["v2x_traffic_light_policy.proto"], ) -py_proto_library( - name = "v2x_traffic_light_policy_py_pb2", - deps = [ - ":v2x_traffic_light_policy_proto", - ], -) - apollo_package() \ No newline at end of file diff --git a/modules/v2x/v2x.BUILD b/modules/v2x/v2x.BUILD deleted file mode 100644 index b8c55ed633f..00000000000 --- a/modules/v2x/v2x.BUILD +++ /dev/null @@ -1,11 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library") - -cc_library( - name = "v2x", - includes = ["include"], - hdrs = glob(["include/**/*.h"]), - srcs = glob(["lib/**/*.so*"]), - include_prefix = "modules/v2x", - strip_include_prefix = "include", - visibility = ["//visibility:public"], -) \ No newline at end of file diff --git a/modules/v2x/v2x_proxy/app/BUILD b/modules/v2x/v2x_proxy/app/BUILD deleted file mode 100644 index 731b50df37e..00000000000 --- a/modules/v2x/v2x_proxy/app/BUILD +++ /dev/null @@ -1,80 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_binary", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -# load("//tools/install:install.bzl", "install") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -# install( -# name = "install", -# runtime_dest = "v2x/bin", -# targets = [ -# ":v2x", -# ] -# ) - -cc_library( - name = "utils", - srcs = ["utils.cc"], - hdrs = ["utils.h"], - deps = [ - "//cyber", - "//modules/common/math", - "//modules/map/hdmap:hdmap_util", - "//modules/v2x/v2x_proxy/obu_interface:obu_interface_grpc_impl", - "//modules/v2x/v2x_proxy/os_interface", - "//modules/v2x/v2x_proxy/proto_adapter", - ], -) - -cc_library( - name = "v2x_proxy", - srcs = ["v2x_proxy.cc"], - hdrs = ["v2x_proxy.h"], - deps = [ - ":utils", - "//cyber", - "//modules/map/hdmap:hdmap_util", - "//modules/v2x/v2x_proxy/obu_interface:obu_interface_grpc_impl", - "//modules/v2x/v2x_proxy/os_interface", - "//modules/v2x/v2x_proxy/proto_adapter", - ], -) - -#cc_test( -# name = "v2x_proxy_test", -# srcs = [ -# "v2x_proxy_test.cc", -# ], -# deps = [ -# ":v2x_proxy", -# "@com_google_googletest//:gtest_main", -# ], -#) - -cc_binary( - name = "v2x", - srcs = ["main.cc"], - deps = [ - ":v2x_proxy", - ], -) - -cc_test( - name = "utils_test", - size = "small", - timeout = "short", - srcs = ["utils_test.cc"], - deps = [ - ":utils", - "//cyber", - "//modules/map/hdmap:hdmap_util", - "//modules/v2x/v2x_proxy/obu_interface:obu_interface_grpc_impl", - "//modules/v2x/v2x_proxy/os_interface", - "//modules/v2x/v2x_proxy/proto_adapter", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/modules/v2x/v2x_proxy/obu_interface/BUILD b/modules/v2x/v2x_proxy/obu_interface/BUILD deleted file mode 100644 index 2bde046186a..00000000000 --- a/modules/v2x/v2x_proxy/obu_interface/BUILD +++ /dev/null @@ -1,33 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "obu_interface_grpc_impl", - srcs = ["obu_interface_grpc_impl.cc"], - hdrs = [ - "obu_interface_abstract_class.h", - "obu_interface_grpc_impl.h", - ], - deps = [ - "//modules/v2x/v2x_proxy/obu_interface/grpc_interface:grpc_client", - "//modules/v2x/v2x_proxy/obu_interface/grpc_interface:grpc_server", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_test( - name = "obu_interface_grpc_impl_test", - size = "small", - srcs = ["obu_interface_grpc_impl_test.cc"], - deps = [ - ":obu_interface_grpc_impl", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/v2x/v2x_proxy/obu_interface/grpc_interface/BUILD b/modules/v2x/v2x_proxy/obu_interface/grpc_interface/BUILD deleted file mode 100644 index de286d1a5f0..00000000000 --- a/modules/v2x/v2x_proxy/obu_interface/grpc_interface/BUILD +++ /dev/null @@ -1,59 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "grpc_client", - srcs = ["grpc_client.cc"], - hdrs = ["grpc_client.h"], - deps = [ - "//cyber", - "//modules/v2x/common:v2x_proxy_gflags", - "//modules/v2x/proto:v2x_service_car_to_obu_cc_grpc", - "//modules/v2x/proto:v2x_service_obu_to_car_cc_grpc", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_library( - name = "grpc_server", - srcs = ["grpc_server.cc"], - hdrs = ["grpc_server.h"], - deps = [ - "//cyber", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/perception_msgs:traffic_light_detection_cc_proto", - "//modules/v2x/common:v2x_proxy_gflags", - "//modules/v2x/proto:v2x_obu_rsi_cc_proto", - "//modules/v2x/proto:v2x_service_car_to_obu_cc_grpc", - "//modules/v2x/proto:v2x_service_obu_to_car_cc_grpc", - "//modules/common_msgs/v2x_msgs:v2x_traffic_light_cc_proto", - "@com_github_grpc_grpc//:grpc++", - ], -) - -cc_test( - name = "grpc_client_test", - size = "small", - srcs = ["grpc_client_test.cc"], - deps = [ - ":grpc_client", - "@com_google_googletest//:gtest_main", - ], -) - -cc_test( - name = "grpc_server_test", - size = "small", - srcs = ["grpc_server_test.cc"], - deps = [ - ":grpc_server", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/v2x/v2x_proxy/os_interface/BUILD b/modules/v2x/v2x_proxy/os_interface/BUILD deleted file mode 100644 index f360b368611..00000000000 --- a/modules/v2x/v2x_proxy/os_interface/BUILD +++ /dev/null @@ -1,38 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "os_interface", - srcs = ["os_interface.cc"], - hdrs = ["os_interface.h"], - deps = [ - "//cyber", - "//modules/common/adapters:adapter_gflags", - "//modules/common_msgs/localization_msgs:localization_cc_proto", - "//modules/common_msgs/perception_msgs:perception_obstacle_cc_proto", - "//modules/common_msgs/planning_msgs:planning_cc_proto", - "//modules/v2x/common:v2x_proxy_gflags", - "//modules/v2x/proto:v2x_obstacles_cc_proto", - "//modules/v2x/proto:v2x_obu_rsi_cc_proto", - "//modules/v2x/proto:v2x_obu_traffic_light_cc_proto", - "//modules/common_msgs/v2x_msgs:v2x_traffic_light_cc_proto", - ], -) - -cc_test( - name = "os_interface_test", - size = "small", - timeout = "short", - srcs = ["os_interface_test.cc"], - deps = [ - ":os_interface", - "@com_google_googletest//:gtest_main", - ], - linkstatic = True, -) - -apollo_package() -cpplint() diff --git a/modules/v2x/v2x_proxy/proto_adapter/BUILD b/modules/v2x/v2x_proxy/proto_adapter/BUILD deleted file mode 100644 index 8653dca2423..00000000000 --- a/modules/v2x/v2x_proxy/proto_adapter/BUILD +++ /dev/null @@ -1,37 +0,0 @@ -load("@rules_cc//cc:defs.bzl", "cc_library", "cc_test") -load("//tools:cpplint.bzl", "cpplint") -load("//tools:apollo_package.bzl", "apollo_package") - -package(default_visibility = ["//visibility:public"]) - -cc_library( - name = "proto_adapter", - srcs = ["proto_adapter.cc"], - hdrs = ["proto_adapter.h"], - deps = [ - "//cyber", - "//modules/map/hdmap", - "//modules/v2x/common:v2x_proxy_gflags", - "//modules/v2x/proto:v2x_car_status_cc_proto", - "//modules/v2x/proto:v2x_junction_cc_proto", - "//modules/v2x/proto:v2x_obu_rsi_cc_proto", - "//modules/v2x/proto:v2x_obu_traffic_light_cc_proto", - "//modules/v2x/proto:v2x_rsi_cc_proto", - "//modules/common_msgs/v2x_msgs:v2x_traffic_light_cc_proto", - "@eigen", - ], -) - -cc_test( - name = "proto_adapter_test", - size = "small", - timeout = "short", - srcs = ["proto_adapter_test.cc"], - deps = [ - ":proto_adapter", - "@com_google_googletest//:gtest_main", - ], -) - -apollo_package() -cpplint() diff --git a/scripts/BUILD b/scripts/BUILD index f61c8714416..f9f47822187 100644 --- a/scripts/BUILD +++ b/scripts/BUILD @@ -8,12 +8,6 @@ install( name = "install_scripts", data = [ ":apollo_base", - ":bootstrap", - ":bridge", - ":docker_utils", - ":map_generation", - ":recorder", - ":tools", ], data_dest = "scripts/src", ) @@ -25,65 +19,8 @@ install( deps = ["install_scripts"], ) -filegroup( - name = "tools", - srcs = [ - "localization_online_visualizer.sh", - "msf_simple_map_creator.sh", - "rtk_player.sh", - "rtk_recorder.sh", - "record_message.py", - "record_message.sh", - ], -) - -filegroup( - name = "bootstrap", - srcs = [ - "bootstrap.sh", - "bootstrap_lgsvl.sh", - "dreamview.sh", - "monitor.sh", - ], -) - -filegroup( - name = "recorder", - srcs = [ - "cyberfile.xml", - "record_bag.py", - "record_bag.sh", - ], -) - -filegroup( - name = "bridge", - srcs = [ - "bridge.sh", - ], -) - -filegroup( - name = "docker_utils", - srcs = [ - ":docker_start_user.sh", - ], -) - -filegroup( - name = "map_generation", - srcs = [ - ":create_map_from_mobileye.sh", - ":create_map_from_xy.sh", - ":generate_routing_topo_graph.sh", - ], -) filegroup( name = "apollo_base", - srcs = [ - "apollo.bashrc", - "apollo_base.sh", - "common.bashrc", - ], + srcs = glob(["*"]), ) diff --git a/scripts/apollo.bashrc b/scripts/apollo.bashrc index 93233b64c72..2e3c2144f0c 100644 --- a/scripts/apollo.bashrc +++ b/scripts/apollo.bashrc @@ -42,7 +42,7 @@ export APOLLO_DISTRIBUTION_HOME="${APOLLO_DISTRIBUTION_HOME:=/opt/apollo/neo}" export APOLLO_PLUGIN_INDEX_PATH="${APOLLO_DISTRIBUTION_HOME}/share/cyber_plugin_index" export APOLLO_PLUGIN_SEARCH_IN_BAZEL_OUTPUT=1 export APOLLO_PLUGIN_DESCRIPTION_PATH="${APOLLO_ROOT_DIR}" -export APOLLO_PLUGIN_LIB_PATH="${APOLLO_ROOT_DIR}/bazel-bin:${APOLLO_DISTRIBUTION_HOME}/lib/plugins" +export APOLLO_PLUGIN_LIB_PATH="${APOLLO_ROOT_DIR}/bazel-bin:${APOLLO_DISTRIBUTION_HOME}/lib" export TAB=" " # 4 spaces diff --git a/scripts/apollo_build.sh b/scripts/apollo_build.sh index 88fe4d16077..15ef75941db 100755 --- a/scripts/apollo_build.sh +++ b/scripts/apollo_build.sh @@ -37,7 +37,7 @@ function _determine_drivers_disabled() { warning "ESD CAN library supplied by ESD Electronics doesn't exist." warning "If you need ESD CAN, please refer to:" warning " third_party/can_card_library/esd_can/README.md" - DISABLED_TARGETS="${DISABLED_TARGETS} except //modules/drivers/canbus/can_client/esd/..." + DISABLED_TARGETS="${DISABLED_TARGETS}" fi } diff --git a/scripts/apollo_release.sh b/scripts/apollo_release.sh index df306848d11..fcbaccb1a1f 100644 --- a/scripts/apollo_release.sh +++ b/scripts/apollo_release.sh @@ -1,10 +1,10 @@ #! /usr/bin/env bash set -e -# INSTALL_TARGETS=(//modules/external_command/external_command_demo:install //modules/external_command/process_component:install //modules/external_command/old_routing_adapter:install //modules/common_msgs:install //modules/v2x:install //cyber:install //modules/data:install //modules/audio:install //modules/bridge:install //modules/calibration:install //modules/canbus:install //modules/canbus_vehicle/ch:install //modules/canbus_vehicle/devkit:install //modules/canbus_vehicle/ge3:install //modules/canbus_vehicle/gem:install //modules/canbus_vehicle/lexus:install //modules/canbus_vehicle/lincoln:install //modules/canbus_vehicle/neolix_edu:install //modules/canbus_vehicle/transit:install //modules/canbus_vehicle/wey:install //modules/canbus_vehicle/zhongyun:install //modules/common:install //modules/contrib/cyber_bridge:install //modules/control/control_component:install //modules/planning/planning_base:install //modules/dreamview:install //modules/drivers/camera:install //modules/drivers/canbus:install //modules/drivers/gnss:install //modules/drivers/lidar:install //modules/drivers/microphone:install //modules/drivers/radar:install //modules/drivers/smartereye:install //modules/drivers/tools/image_decompress:install //modules/drivers/video:install //modules/guardian:install //modules/localization:install //modules/map:install //modules/monitor:install //modules/prediction:install //modules/routing:install //modules/storytelling:install //modules/task_manager:install //modules/third_party_perception:install //modules/tools:install //modules/transform:install //third_party/rtklib:install //modules/control/control_component:install) -# SUBDIR_TARGETS=(modules/planning/pnc_map modules/control/controllers modules/external_command/command_processor modules/planning/traffic_rules modules/perception modules/planning/tasks modules/planning/scenarios modules/control/controllers) -SUBDIR_TARGETS=(modules/perception) -INSTALL_TARGETS=() +INSTALL_TARGETS=(//modules/external_command/external_command_demo:install //modules/external_command/process_component:install //modules/external_command/old_routing_adapter:install //modules/common_msgs:install //modules/v2x:install //cyber:install //modules/data:install //modules/audio:install //modules/bridge:install //modules/calibration:install //modules/canbus:install //modules/canbus_vehicle/ch:install //modules/canbus_vehicle/devkit:install //modules/canbus_vehicle/ge3:install //modules/canbus_vehicle/gem:install //modules/canbus_vehicle/lexus:install //modules/canbus_vehicle/lincoln:install //modules/canbus_vehicle/neolix_edu:install //modules/canbus_vehicle/transit:install //modules/canbus_vehicle/wey:install //modules/canbus_vehicle/zhongyun:install //modules/common:install //modules/contrib/cyber_bridge:install //modules/control/control_component:install //modules/planning/planning_base:install //modules/dreamview:install //modules/drivers/camera:install //modules/drivers/canbus:install //modules/drivers/gnss:install //modules/drivers/lidar:install //modules/drivers/microphone:install //modules/drivers/radar:install //modules/drivers/smartereye:install //modules/drivers/tools/image_decompress:install //modules/drivers/video:install //modules/guardian:install //modules/localization:install //modules/map:install //modules/monitor:install //modules/prediction:install //modules/routing:install //modules/storytelling:install //modules/task_manager:install //modules/third_party_perception:install //modules/tools:install //modules/transform:install //third_party/rtklib:install //modules/control/control_component:install) +SUBDIR_TARGETS=(modules/planning/pnc_map modules/control/controllers modules/external_command/command_processor modules/planning/traffic_rules modules/perception modules/planning/tasks modules/planning/scenarios modules/control/controllers) +CPU_INSTALL_TARGETS=(//modules/planning/planning_base:install) +CPU_SUBDIR_TARGETS=() TOP_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)" source "${TOP_DIR}/scripts/apollo.bashrc" @@ -15,7 +15,7 @@ export PREFIX_DIR="${PREFIX_DIR:=${APOLLO_DISTRIBUTION_HOME}}" LIST_ONLY=0 RESOLVE_DEPS=0 PRE_CLEAN=0 -BAZEL_OPTS=" -c opt --copt=-mavx2 --host_copt=-mavx2 --jobs=$(nproc) --local_ram_resources=HOST_RAM*0.5 --cxxopt=-fPIC" +BAZEL_OPTS=" -c opt --copt=-march=native --host_copt=-march=native --jobs=$(nproc) --local_ram_resources=HOST_RAM*0.5 --cxxopt=-fPIC" SHORTHAND_TARGETS= CMDLINE_OPTIONS= INSTALL_OPTIONS= @@ -103,7 +103,6 @@ function determine_cpu_or_gpu_build() { if [ "${USE_GPU}" -eq 1 ]; then CMDLINE_OPTIONS="--config=gpu ${CMDLINE_OPTIONS}" # INSTALL_OPTIONS=" --gpu ${INSTALL_OPTIONS}" - ok "Running GPU build." else CMDLINE_OPTIONS="--config=cpu ${CMDLINE_OPTIONS}" @@ -258,6 +257,26 @@ function run_install() { done done + for d in ${CPU_SUBDIR_TARGETS[*]}; do + sub_dirs=`ls ${d}` + for dir in ${sub_dirs[*]}; do + if [[ ${dir} == BUILD ]]; then + continue + elif [[ ${dir} == README.md ]]; then + continue + elif [[ ${dir} == production ]]; then + continue + elif [[ ${dir} == camera_overlap_filter ]]; then + continue + elif [[ ${dir} == hdmap_based_proposal ]]; then + continue + elif [[ ${dir} == launch ]]; then + continue + fi + CPU_INSTALL_TARGETS[${#CPU_INSTALL_TARGETS[*]}]="//${d}/${dir}:install" + done + done + if [[ "${LEGACY_RELEASE}" -gt 0 ]]; then bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} //:install \ -- ${install_opts} ${INSTALL_OPTIONS} ${PREFIX_DIR} @@ -271,23 +290,26 @@ function run_install() { for target in ${INSTALL_TARGETS[*]}; do bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} ${target} \ -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" - done + done - # install files copy from source code. - # for target in ${install_src_target[*]}; do - # bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} ${target} \ - # -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" - # done + CMDLINE_OPTIONS="--config=cpu " - # bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} //:install \ - # -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" + for target in ${CPU_INSTALL_TARGETS[*]}; do + bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} ${target}_src \ + -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" + done + + for target in ${CPU_INSTALL_TARGETS[*]}; do + bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} ${target} \ + -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" + done - # bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} //:deprecated_install \ - # -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" + bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} //:deprecated_install \ + -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" - # # install files copy from source code. - # bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} //:deprecated_install_src \ - # -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" + # install files copy from source code. + bazel run ${BAZEL_OPTS} ${CMDLINE_OPTIONS} //:deprecated_install_src \ + -- ${install_opts} ${INSTALL_OPTIONS} "${PREFIX_DIR}" fi diff --git a/third_party/camera_library/3rd-camera-library.BUILD b/third_party/camera_library/3rd-camera-library.BUILD index 7a8bf431342..0e2b1c86078 100644 --- a/third_party/camera_library/3rd-camera-library.BUILD +++ b/third_party/camera_library/3rd-camera-library.BUILD @@ -16,4 +16,13 @@ cc_library( ], include_prefix = "third_party/camera_library/smartereye", visibility = ["//visibility:public"], -) \ No newline at end of file +) + +cc_library( + name = "third_party_Scamera_library_Csmartereye", + srcs = glob(["lib/*.so*"]), + hdrs = glob(["include/*.h"]), + include_prefix = "third_party/camera_library/smartereye", + visibility = ["//visibility:public"], + alwayslink = True, +) diff --git a/third_party/can_card_library/3rd-can-card-library.BUILD b/third_party/can_card_library/3rd-can-card-library.BUILD index 8697ff42b0e..a8773bcbf7f 100644 --- a/third_party/can_card_library/3rd-can-card-library.BUILD +++ b/third_party/can_card_library/3rd-can-card-library.BUILD @@ -8,4 +8,14 @@ cc_library( srcs = glob(["lib/libbcan.so"]), strip_include_prefix = "include", visibility = ["//visibility:public"], -) \ No newline at end of file +) + +cc_library( + name = "third_party_Scan_card_library_Shermes_can_Chermes_can", + srcs = glob(["lib/libbcan.so"]), + hdrs = [ + "include/bcan.h", + ], + visibility = ["//visibility:public"], + alwayslink = True, +) diff --git a/third_party/can_card_library/hermes_can/BUILD b/third_party/can_card_library/hermes_can/BUILD index 8b98489fd77..5d12507250e 100644 --- a/third_party/can_card_library/hermes_can/BUILD +++ b/third_party/can_card_library/hermes_can/BUILD @@ -62,7 +62,7 @@ install_src_files( no_match_error = "Please Build with a Linux aarch64 or x86_64 platform", ), dest = "3rd-can-card-library/lib", - filter = "*.so", + filter = "*.so*", ) install_src_files( @@ -72,4 +72,4 @@ install_src_files( filter = "*", ) -# apollo_package() \ No newline at end of file +# apollo_package() diff --git a/third_party/gpus/cuda/build_defs.bzl.tpl b/third_party/gpus/cuda/build_defs.bzl.tpl index 20e16ae1ad9..0b4035ea4c2 100644 --- a/third_party/gpus/cuda/build_defs.bzl.tpl +++ b/third_party/gpus/cuda/build_defs.bzl.tpl @@ -100,6 +100,13 @@ def cuda_header_library( **kwargs ) -def cuda_library(copts = [], **kwargs): +def cuda_library(mandatory = True, copts = [], **kwargs): """Wrapper over cc_library which adds default CUDA options.""" - cc_library(copts = cuda_default_copts() + copts, **kwargs) + if mandatory: + cc_library(copts = cuda_default_copts() + copts, linkstatic = True, **kwargs) + + cc_binary(name = "lib{}.so".format(kwargs["name"]), deps = [":{}".format(kwargs["name"])], + linkshared = True, linkstatic = True, visibility = ["//visibility:public"], + tags = ["export_library", kwargs["name"]]) + else: + cc_library(copts = cuda_default_copts() + copts, **kwargs) diff --git a/third_party/gpus/cuda_configure.bzl b/third_party/gpus/cuda_configure.bzl index e40b2fc8b96..469b71e9829 100644 --- a/third_party/gpus/cuda_configure.bzl +++ b/third_party/gpus/cuda_configure.bzl @@ -1230,9 +1230,10 @@ def _create_remote_cuda_repository(repository_ctx, remote_config_repo): def _cuda_autoconf_impl(repository_ctx): """Implementation of the cuda_autoconf repository rule.""" - if not enable_cuda(repository_ctx): - _create_dummy_repository(repository_ctx) - elif get_host_environ(repository_ctx, _TF_CUDA_CONFIG_REPO) != None: + # always retrun valid cuda lib for cpu compile + # if not enable_cuda(repository_ctx): + # _create_dummy_repository(repository_ctx) + if get_host_environ(repository_ctx, _TF_CUDA_CONFIG_REPO) != None: has_cuda_version = get_host_environ(repository_ctx, _TF_CUDA_VERSION) != None has_cudnn_version = get_host_environ(repository_ctx, _TF_CUDNN_VERSION) != None if not has_cuda_version or not has_cudnn_version: diff --git a/third_party/rtklib/BUILD b/third_party/rtklib/BUILD index 6da5fcf2889..e428c5e7c05 100644 --- a/third_party/rtklib/BUILD +++ b/third_party/rtklib/BUILD @@ -1,11 +1,11 @@ # load("//tools/install:install.bzl", "install", "install_files", "install_src_files") -load("//tools:apollo_package.bzl", "apollo_package") +load("//tools:apollo_package.bzl", "apollo_package", "apollo_cc_library") load("@rules_cc//cc:defs.bzl", "cc_library") package(default_visibility = ["//visibility:public"]) -cc_library( +apollo_cc_library( name = "rtklib", srcs = [ "novatel.c", @@ -14,45 +14,7 @@ cc_library( "rtcm3.c", "rtkcmn.c", ], - linkstatic = True, - alwayslink = True, hdrs = ["rtklib.h"], ) -cc_binary( - name = "librtklib.so", - linkshared = True, - linkstatic = True, - deps = [":rtklib"] -) - -# install( -# name = "install", -# data_dest = "3rd-rtklib", -# library_dest = "3rd-rtklib/lib", -# data = [ -# ":cyberfile.xml", -# ":3rd-rtklib.BUILD" -# ], -# targets = ["librtklib.so"] -# ) - -# install_src_files( -# name = "headers", -# src_dir = ["."], -# dest = "3rd-rtklib/include", -# filter = "*.h", -# ) - - -# install_src_files( -# name = "install_src", -# src_dir = ["."], -# dest = "3rd-rtklib/src", -# filter = "*", -# deps = [ -# ":headers", -# ] -# ) - -apollo_package() \ No newline at end of file +apollo_package() diff --git a/third_party/tf2/3rd-tf2.BUILD b/third_party/tf2/3rd-tf2.BUILD index 5b2dc7dc703..77149d944ab 100644 --- a/third_party/tf2/3rd-tf2.BUILD +++ b/third_party/tf2/3rd-tf2.BUILD @@ -10,4 +10,17 @@ cc_library( srcs = glob(["lib/*.so"]), strip_include_prefix = "include", visibility = ["//visibility:public"], -) \ No newline at end of file +) + +cc_library( + name = "third_party_Stf2_Ctf2", + hdrs = glob([ + "include/geometry_msgs/**", + "include/tf2_msgs/**", + "include/tf2/**", + ]), + srcs = glob(["lib/*.so"]), + strip_include_prefix = "include", + visibility = ["//visibility:public"], + alwayslink = True, +) diff --git a/third_party/vtk/vtk_configure.bzl b/third_party/vtk/vtk_configure.bzl index 18c628a6bf0..1c10713ac57 100644 --- a/third_party/vtk/vtk_configure.bzl +++ b/third_party/vtk/vtk_configure.bzl @@ -78,7 +78,7 @@ def _vtk_match_version(repository_ctx, sysroot_dir = None): prefix = solib[:solib.rfind("/lib/")] libdict[solib] = (libpath, version, prefix) - prefix_dirs = ["/usr", "/usr/local", "/opt/apollo/neo/packages/3rd-vtk-dev/latest"] + prefix_dirs = ["/usr", "/usr/local", "/opt/apollo/neo/packages/3rd-vtk/latest"] if sysroot_dir: prefix_dirs.append(sysroot_dir) diff --git a/tools/apollo_package.bzl b/tools/apollo_package.bzl index 48e505908b3..7e0deecee61 100644 --- a/tools/apollo_package.bzl +++ b/tools/apollo_package.bzl @@ -1,4 +1,6 @@ load("//tools/install:install.bzl", "install", "install_files", "install_src_files", "install_plugin") +load("@rules_cc//cc:defs.bzl", "cc_library", "cc_binary", "cc_test") +load("//tools:apollo.bzl", "cyber_plugin_description") INSATLL_LABEL_NAME = "install" INSTALL_SRC_LABEL_NAME = "install_src" @@ -17,6 +19,31 @@ CPP_TEST_RULE = "cc_test" PLUGIN_RULE = "cyber_plugin_description" +def _select2dict(select_str): + result = dict() + cxt_str = select_str[:-2].replace("select({","") + for kv_str in cxt_str.split("],"): + k_str, v_str = kv_str.strip().split(": [") + if "" == v_str.strip() or "]" == v_str.strip(): + result[k_str.strip()[1:-1]] = [] + else: + v_list = [] + v_cxt = v_str.strip() + if v_cxt[-1] == "]": + v_cxt = v_str.strip()[:-1] + for v_v in v_cxt.split(","): + v_list.append(v_v.strip()[1:-1]) + result[k_str.strip()[1:-1]] = v_list + + return result + +def _list_str2list(list_str): + result = [] + cxt = list_str[1:-1] + for l_str in cxt.strip().split(","): + result.append(l_str.strip()[1:-1]) + return result + def _is_lib(name): if name.startswith("lib") and name.endswith(".so"): return True @@ -72,11 +99,13 @@ def _add_install_rules(install_actions, install_src_actions, visibility = ["//visibility:public"], ) else: + rule_tags = action["tags"] if "tags" in action else [] install( name = action["name"], targets = action["targets"], library_dest = action["library_dest"], type = action["type"], + tags = rule_tags, package_path = package_name, visibility = ["//visibility:public"], ) @@ -203,7 +232,7 @@ def apollo_package(enable_source=True): package_install_target = [] package_name = native.package_name() - subpackages = native.subpackages(include=["*"], allow_empty=True) + subpackages = native.subpackages(include=["**/*"], allow_empty=True) subpackages_install_target = [ "//%s/%s:%s" % (package_name, i, "install") for i in subpackages ] @@ -223,6 +252,9 @@ def apollo_package(enable_source=True): install_action_instance["type"] = "neo" install_action_instance["label"] = "lib" install_action_instance["library_dest"] = "lib/%s" % package_name + if "tags" in rule and len(rule["tags"]) >= 2 and "export_library" in rule["tags"]: + rule_tags = [rule["tags"][len(rule["tags"])-2], rule["tags"][-1]] + install_action_instance["tags"] = rule["tags"] if _is_plugin_label(rule): install_action_instance["plguin"] = True install_action_instance["description"] = _find_description(rule) @@ -288,4 +320,104 @@ def apollo_package(enable_source=True): _add_install_rules( package_install_target, [src_code_action, header_action], has_install_rule, has_install_src_rule, package_name, - subpackages_install_target, subpackages_install_src_target) \ No newline at end of file + subpackages_install_target, subpackages_install_src_target) + +def apollo_cc_test(**kwargs): + # simple wrap for cc_test + cc_test(**kwargs) + +def apollo_cc_binary(**kwargs): + # simple wrap for cc_binary + cc_binary(**kwargs) + +def apollo_component(**kwargs): + if not kwargs["name"].startswith("lib") or not kwargs["name"].endswith(".so"): + fail("name must start with 'lib' and end with '.so'") + if "alwayslink" in kwargs: + fail("'apollo_component' macro has not 'alwayslink' attrbute") + + internal_lib_name = "{}_lib".format(kwargs["name"][3: len(kwargs["name"])-3]) + + apollo_cc_library(**dict(kwargs, name = internal_lib_name, + visibility = ["//visibility:public"])) + + cc_binary( + name = kwargs["name"], + linkshared = True, + linkstatic = True, + deps = [":{}".format(internal_lib_name)], + ) + +def apollo_cc_library(**kwargs): + merge_src = [] + bin_kwargs = {} + for i in kwargs: + if i == "hdrs": + continue + elif i.endswith("include_prefix"): + continue + bin_kwargs[i] = kwargs[i] + if "srcs" in kwargs: + merge_src += kwargs["srcs"] + if "hdrs" in kwargs: + merge_src += kwargs["hdrs"] + temp = {} + + select_dict_list = [] + if type(merge_src) == "select": + merge_src_list = [] + for group_str in str(merge_src).strip().split(" + "): + if "select({" in group_str.strip(): + select_dict_list.append(_select2dict(group_str)) + elif group_str.strip() == "[]": + continue + else: + merge_src_list += _list_str2list(group_str.strip()) + merge_src = merge_src_list + + for s in merge_src: + temp[s] = s + merge_src = [s for s in temp] + + if len(select_dict_list) != 0: + for i in select_dict_list: + merge_src += select(i) + + cc_binary(**dict( + bin_kwargs, name = "lib{}.so".format(bin_kwargs["name"]), + linkshared = True, linkstatic = True, srcs = merge_src, + visibility = ["//visibility:public"], tags = ["export_library", kwargs["name"]])) + cc_library(**dict( + kwargs, srcs = [":lib{}.so".format(kwargs["name"])], + alwayslink = True, visibility = ["//visibility:public"])) + +def apollo_plugin(**kwargs): + if "description" not in kwargs: + fail("missing attribution of 'description'") + if "name" not in kwargs: + fail("missing attribution of 'name'") + if not kwargs["name"].startswith("lib") or not kwargs["name"].endswith(".so"): + fail("name must start with 'lib' and end with '.so'") + cc_library_name = "{}_lib".format(kwargs["name"][3: len(kwargs["name"])-3]) + + cyber_plugin_description( + name = "plugin_{}_description".format(cc_library_name), + description = kwargs["description"], + plugin = kwargs["name"], + ) + + cc_library( + name = cc_library_name, + srcs = kwargs["srcs"] if "srcs" in kwargs else [], + hdrs = kwargs["hdrs"] if "hdrs" in kwargs else [], + deps = kwargs["deps"] if "deps" in kwargs else [], + copts = kwargs["copts"] if "copts" in kwargs else [], + alwayslink = True, + ) + + cc_binary( + name = kwargs["name"], + linkshared = True, + linkstatic = True, + deps = [":{}".format(cc_library_name)], + ) \ No newline at end of file diff --git a/tools/install/install.bzl b/tools/install/install.bzl index 8a39149fb5e..0dde7c30ac5 100644 --- a/tools/install/install.bzl +++ b/tools/install/install.bzl @@ -140,7 +140,14 @@ def _install_action( file_dest = dest file_dest = _rename(file_dest, rename) - return struct(src = artifact, dst = file_dest) + target_name = None + if hasattr(ctx.attr, "tags") and len(ctx.attr.tags) >= 2 and "export_library" in ctx.attr.tags: + for i in ctx.attr.tags: + if i == "__CC_RULES_MIGRATION_DO_NOT_USE_WILL_BREAK__" or i == "export_library": + continue + else: + target_name = i + return struct(src = artifact, dst = file_dest, target_name = target_name) #------------------------------------------------------------------------------ def _install_actions( @@ -309,10 +316,15 @@ def _install_runtime_actions(ctx, target): #------------------------------------------------------------------------------ # Generate install code for an install action. def _install_code(action, ctx): - if hasattr(ctx.attr, "type") and ctx.attr.type != "NONE": + if hasattr(ctx.attr, "type") and ctx.attr.type != "NONE": if hasattr(ctx.attr, "package_path") and ctx.attr.package_path != "NONE": - return "install(%r, %r, %r, %r)" % ( - action.src.short_path, action.dst, ctx.attr.type, ctx.attr.package_path) + if action.target_name != None: + return "install(%r, %r, %r, %r, %r, %r)" % ( + action.src.short_path, action.dst, ctx.attr.type, + ctx.attr.package_path, "export_library", action.target_name) + else: + return "install(%r, %r, %r, %r)" % ( + action.src.short_path, action.dst, ctx.attr.type, ctx.attr.package_path) else: fail("Dont't run the install target which is not auto generated!") else: @@ -473,7 +485,7 @@ _install_rule = rule( def install(tags = [], **kwargs): # (The documentation for this function is immediately below.) _install_rule( - tags = tags + ["install"], + tags = tags, **kwargs ) @@ -579,7 +591,7 @@ _install_files_rule = rule( def install_files(tags = [], **kwargs): # (The documentation for this function is immediately below.) _install_files_rule( - tags = tags + ["install"], + tags = tags, **kwargs ) @@ -686,7 +698,7 @@ _install_src_files_rule = rule( def install_src_files(tags = [], **kwargs): # (The documentation for this function is immediately below.) _install_src_files_rule( - tags = tags + ["install"], + tags = tags, **kwargs ) @@ -775,7 +787,7 @@ _install_plugin_rule = rule( attrs = { "plugin": attr.label(allow_files = True), # TODO(liangjinping): install plugin to fixed path or support path register - "plugin_dest": attr.string(default = "lib/plugins/@PACKAGE_PATH@"), + "plugin_dest": attr.string(default = "lib/@PACKAGE_PATH@"), "plugin_strip_prefix": attr.string_list(), "plugin_name": attr.string(), "description": attr.label(allow_files = True), @@ -798,7 +810,7 @@ _install_plugin_rule = rule( def install_plugin(tags = [], **kwargs): _install_plugin_rule( - tags = tags + ["install"], + tags = tags, **kwargs ) diff --git a/tools/install/install.py.in b/tools/install/install.py.in index 508699517bd..67828e1353f 100644 --- a/tools/install/install.py.in +++ b/tools/install/install.py.in @@ -18,6 +18,7 @@ import json import shutil import stat import sys +import subprocess import xml.etree.ElementTree as ET @@ -60,21 +61,30 @@ list_only = False dylib_match = re.compile(r"(.*\.so)(\.\d+)*$") meta = [] +export_library_dict = {} packages = {} plugins = {} plugins_meta = {} meta_prefix = "share/packages" - -BUILD_TMP = ''' -load("@rules_cc//cc:defs.bzl", "cc_library") +EMPTY_BUILD_TMP = ''' +load("@rules_cc//cc:defs.bzl", "cc_library", "cc_import") cc_library( name = "{}", hdrs = glob(["include/{}/**/*.h"]) + glob(["include/{}/**/*.hpp"]), - srcs = [{}], + srcs = [], strip_include_prefix = "include", visibility = ["//visibility:public"], ) ''' +BUILD_TMP = ''' +cc_library( + name = "{}", + srcs = ["{}"], + linkopts = [{}], + visibility = ["//visibility:public"], + alwayslink = True, +) +''' def generate_pack_file(meta_path): global plugins_meta @@ -89,6 +99,8 @@ def generate_pack_file(meta_path): arch = check_output(["uname", "-m"]).decode("utf-8").replace("\n", "") if arch == "x86_64": arch = "amd64" + elif arch == "aarch64": + arch = "arm64" description = package_name cyberfile_deps = root.iterfind("depend") deps = [] @@ -121,7 +133,7 @@ def generate_pack_file(meta_path): if package_name in plugins_meta: for plugin_info in plugins_meta[package_name]: plugin_lib_path = os.path.join(prefix, - "lib/plugins", plugin_info["plugin_src_path"]) + "lib", plugin_info["plugin_src_path"]) cyber_plugin_index_file = os.path.join( prefix, "share/cyber_plugin_index", plugins[os.path.join( @@ -291,7 +303,8 @@ def copy_or_link(src, dst): shutil.copy2(src, dst) -def install(src, dst, action_type=None, package_path=None): +def install(src, dst, action_type=None, + package_path=None, shared_library_export=None, target_name=None): global subdirs global meta @@ -300,6 +313,8 @@ def install(src, dst, action_type=None, package_path=None): # deprecated package install path if action_type is not None and package_path is not None: global packages + global export_library_dict + package_in_cache = False deprecated_flag = False @@ -323,6 +338,12 @@ def install(src, dst, action_type=None, package_path=None): print("\033[31m[ERROR]\033[0m orphan install file: {} -> {}".format( src, dst), file=sys.stderr) exit(-1) + + if shared_library_export is not None and target_name is not None: + if package_path not in export_library_dict: + export_library_dict[package_path] = [{"target": target_name, "dst": dst}] + else: + export_library_dict[package_path].append({"target": target_name, "dst": dst}) else: dst = rename_package_name(dst) @@ -391,17 +412,17 @@ def install(src, dst, action_type=None, package_path=None): dst_full = os.path.join(prefix, dst) # Install file, if not up to date. - if needs_install(src, dst): - print("-- Installing: {}".format(dst_full)) - if os.path.exists(dst_full): - os.remove(dst_full) - copy_or_link(src, dst_full) - else: - # TODO(eric.cousineau): Unclear how RPath-patched file can be deemed - # "up-to-date" by comparison? - print("-- Up-to-date: {}".format(dst_full)) - # No need to check patching. - return + # if needs_install(src, dst): + print("-- Installing: {}".format(dst_full)) + if os.path.exists(dst_full): + os.remove(dst_full) + copy_or_link(src, dst_full) + # else: + # # TODO(eric.cousineau): Unclear how RPath-patched file can be deemed + # # "up-to-date" by comparison? + # print("-- Up-to-date: {}".format(dst_full)) + # # No need to check patching. + # return basename = os.path.basename(dst) if re.match(dylib_match, basename): # It is a library. #TODO(lanyongshun): interim method @@ -437,6 +458,7 @@ def install(src, dst, action_type=None, package_path=None): def create_package_meta(prefix): global meta global packages + global export_library_dict if list_only: return @@ -467,14 +489,37 @@ def create_package_meta(prefix): if info[1].split("/")[-1].startswith("lib"): so_files.append(info[1]) - build_content = BUILD_TMP.format( - pkg_name, package_path, package_path, - ",".join(['"{}"'.format(i) for i in so_files])) - + package_build_content = [] + if package_path in export_library_dict: + package_library_list = export_library_dict[package_path] + for lib_info in package_library_list: + target_name = lib_info["target"] + dst = lib_info["dst"] + path_list = dst.split("/") + target_name_prefix = "/".join( + path_list[1: len(path_list)-1]).replace("/", "_S") + + ldd_query = "ldd {}".format(os.path.join(prefix, dst)) + " | awk '{print $1}'" + ld_so = subprocess.check_output( + ldd_query, shell=True).decode("utf-8").split("\n") + link_opts = [] + for so_lib in ld_so: + if so_lib.startswith("lib") and so_lib.endswith(".so"): + link_opts.append('"-l{}"'.format(so_lib[3: len(so_lib)-3])) + link_opts_str = ",".join(link_opts) + + package_build_content.append( + BUILD_TMP.format("{}_C{}".format(target_name_prefix, target_name), dst, link_opts_str) + ) + + build_content = EMPTY_BUILD_TMP.format( + pkg_name, package_path, package_path) + with open( os.path.join( package_index_path, "{}.BUILD".format(pkg_name)), "w+") as f: - f.write(build_content) + f.write( + "\n".join([build_content] + package_build_content)) generate_pack_file(package_index_path) @@ -650,9 +695,14 @@ def resolve_install_rpath(path, rpath, prefix): decoded_path = m.group(2).replace('_C', ':').replace( '_U', '_').replace('_S', '/').replace('_D', '.') - - # skip external libs + # external libs if decoded_path.startswith('_@'): + subpath = decoded_path.split('__')[1] + ext_rpath = re.compile(r'^_lib/').sub(m.group(1) + '/', subpath) + if os.path.exists(ext_rpath.replace('$ORIGIN', os.path.dirname(path))): + # apollo packages + return ext_rpath + # external packages return None return decoded_path.split(':')[0].replace('_//', m.group(1) + '/') diff --git a/tools/package/rules_cc.release.patch b/tools/package/rules_cc.release.patch index b19930b80b1..1d93011328d 100644 --- a/tools/package/rules_cc.release.patch +++ b/tools/package/rules_cc.release.patch @@ -1,9 +1,9 @@ ---- cc/defs.bzl +--- cc/defs.bzl +++ cc/defs.bzl -@@ -26,6 +26,143 @@ def _add_tags(attrs): +@@ -26,6 +26,155 @@ attrs["tags"] = [_MIGRATION_TAG] return attrs - + +def _select2dict(select_str): + result = dict() + cxt_str = select_str[:-2].replace("select({","") @@ -19,7 +19,7 @@ + for v_v in v_cxt.split(","): + v_list.append(v_v.strip()[1:-1]) + result[k_str.strip()[1:-1]] = v_list -+ ++ + return result + +def _list_str2list(list_str): @@ -29,6 +29,18 @@ + result.append(l_str.strip()[1:-1]) + return result + ++def _replace_value(origin_target, origin_replace_val): ++ if ":" not in origin_target: ++ origin_target = "{}:{}".format(origin_target, origin_target.split("/")[-1]) ++ ++ origin_target_split = origin_target.split(":") ++ target_name = origin_target_split[-1] if "proto" not in origin_target_split[-1] else origin_target_split[-1].replace("_cc_", "_") ++ prefix = origin_target_split[0].replace("//", "") ++ replaced_target_name = "{}_C{}".format(prefix.replace("/", "_S"), target_name) ++ ++ replaced_repo = origin_replace_val.split("//:")[0] ++ return "{}//:{}".format(replaced_repo, replaced_target_name) ++ +def _replace_deps(deps_list, srcs_dict): + + for i in range(len(deps_list)): @@ -40,7 +52,7 @@ + else: + lib_name = deps_list[i].replace("//", "").replace("@", "") + deps_list[i] = deps_list[i] + "//:" + lib_name -+ ++ + need_remove = {} + current_deps = {} + @@ -57,9 +69,9 @@ + + for i in range(len(deps_list)): + if deps_list[i] in need_remove: -+ deps_list[i] = need_remove[deps_list[i]] ++ deps_list[i] = _replace_value(deps_list[i], need_remove[deps_list[i]]) + current_deps[deps_list[i]] = deps_list[i] -+ ++ + new_deps = [] + deps_list + + deps_map = {} @@ -77,7 +89,7 @@ + return ws_deps + +def _process_apollo_deps(attrs): -+ # only do this action for targets in current WORKSPACE ++ # only do this action for targets in current WORKSPACE + if native.repository_name() != "@": + return attrs + if "deps" not in attrs or attrs["deps"] == None: @@ -120,7 +132,7 @@ + current_deps_dict[dep] = dep + + ret_deps_list.append(ret_deps) -+ ++ + ret_deps_list.append(_get_workspace_deps(current_deps_dict, workspace_deps)) + + n_deps = [] @@ -129,7 +141,7 @@ + + # print(n_deps) + attrs["deps"] = n_deps -+ ++ + return attrs + elif type(deps) == "list": + replaced_deps = _replace_deps(deps, srcs_dict) @@ -143,31 +155,31 @@ + def cc_binary(**attrs): """Bazel cc_binary rule. - -@@ -36,7 +173,7 @@ def cc_binary(**attrs): + +@@ -36,7 +185,7 @@ """ - + # buildifier: disable=native-cc - native.cc_binary(**_add_tags(attrs)) + native.cc_binary(**_add_tags(_process_apollo_deps(attrs))) - + def cc_test(**attrs): """Bazel cc_test rule. -@@ -48,7 +185,7 @@ def cc_test(**attrs): +@@ -48,7 +197,7 @@ """ - + # buildifier: disable=native-cc - native.cc_test(**_add_tags(attrs)) + native.cc_test(**_add_tags(_process_apollo_deps(attrs))) - + def cc_library(**attrs): """Bazel cc_library rule. -@@ -60,7 +197,7 @@ def cc_library(**attrs): +@@ -60,7 +209,7 @@ """ - + # buildifier: disable=native-cc - native.cc_library(**_add_tags(attrs)) + native.cc_library(**_add_tags(_process_apollo_deps(attrs))) - + def cc_import(**attrs): - """Bazel cc_import rule. + """Bazel cc_import rule. \ No newline at end of file diff --git a/tools/proto/proto.bzl b/tools/proto/proto.bzl index 27e71070cb7..80afcd2677e 100644 --- a/tools/proto/proto.bzl +++ b/tools/proto/proto.bzl @@ -60,8 +60,14 @@ _cc_proto_clean_rule = rule( def _get_real_dep_label(dep): if not package_path.startswith("@@"): - if dep.startswith("//{}".format(package_path)) or dep.startswith(":"): + if dep.startswith(":"): return dep + elif dep.startswith("//{}".format(package_path)): + replace_prefix = dep.replace("//{}".format(package_path), "") + if len(replace_prefix) == 0 or replace_prefix[0] == "/" or replace_prefix[0] == ":": + return dep + else: + return "{}{}".format("@apollo_src", dep) else: return "{}{}".format("@apollo_src", dep) return dep @@ -92,6 +98,8 @@ def proto_library(tags = [], **kwargs): source_env = False rule_name = kwargs["name"] + if not rule_name.endswith("proto"): + fail("The name of the proto_library instance must end with \"proto\", e.g. \"example_proto\".") proto_rule_name = "_%s" % kwargs["name"] cc_proto_rule_name = "_%s_cc_proto" % rule_name py_proto_rule_name = _to_py_target(rule_name) @@ -181,6 +189,7 @@ def proto_library(tags = [], **kwargs): name = cc_bin_rule_name, linkshared = True, linkstatic = True, + tags = ["export_library", rule_name], # srcs = [":%s_clean" % (cc_proto_rule_name,)], # srcs = [":%s" % cc_lib_rule_name], deps = ["@com_google_protobuf//:protobuf"] + external_cc_deps + [cc_lib_rule_name], diff --git a/tools/proto/proto.bzl.tpl b/tools/proto/proto.bzl.tpl index 27e71070cb7..80afcd2677e 100644 --- a/tools/proto/proto.bzl.tpl +++ b/tools/proto/proto.bzl.tpl @@ -60,8 +60,14 @@ _cc_proto_clean_rule = rule( def _get_real_dep_label(dep): if not package_path.startswith("@@"): - if dep.startswith("//{}".format(package_path)) or dep.startswith(":"): + if dep.startswith(":"): return dep + elif dep.startswith("//{}".format(package_path)): + replace_prefix = dep.replace("//{}".format(package_path), "") + if len(replace_prefix) == 0 or replace_prefix[0] == "/" or replace_prefix[0] == ":": + return dep + else: + return "{}{}".format("@apollo_src", dep) else: return "{}{}".format("@apollo_src", dep) return dep @@ -92,6 +98,8 @@ def proto_library(tags = [], **kwargs): source_env = False rule_name = kwargs["name"] + if not rule_name.endswith("proto"): + fail("The name of the proto_library instance must end with \"proto\", e.g. \"example_proto\".") proto_rule_name = "_%s" % kwargs["name"] cc_proto_rule_name = "_%s_cc_proto" % rule_name py_proto_rule_name = _to_py_target(rule_name) @@ -181,6 +189,7 @@ def proto_library(tags = [], **kwargs): name = cc_bin_rule_name, linkshared = True, linkstatic = True, + tags = ["export_library", rule_name], # srcs = [":%s_clean" % (cc_proto_rule_name,)], # srcs = [":%s" % cc_lib_rule_name], deps = ["@com_google_protobuf//:protobuf"] + external_cc_deps + [cc_lib_rule_name],