diff --git a/.gitattributes b/.gitattributes index 35b0eb1a2a..eda7cfb202 100644 --- a/.gitattributes +++ b/.gitattributes @@ -7,11 +7,11 @@ *.ipynb filter=nbstripout -diff external/ffmpeg/bin/ffmpeg_cuda filter=lfs diff=lfs merge=lfs -text models/segnet.keras filter=lfs diff=lfs merge=lfs -text -phonelibs/acado/x64/lib/libacado_toolkit.a filter=lfs diff=lfs merge=lfs -text -phonelibs/acado/x64/lib/libacado_toolkit_s.so.1.2.2beta filter=lfs diff=lfs merge=lfs -text -phonelibs/acado/x64/lib/libacado_casadi.a filter=lfs diff=lfs merge=lfs -text -phonelibs/acado/x64/lib/libacado_csparse.a filter=lfs diff=lfs merge=lfs -text -phonelibs/acado/x64/lib/libacado_qpoases.a filter=lfs diff=lfs merge=lfs -text +phonelibs/acado/x86_64/lib/libacado_toolkit.a filter=lfs diff=lfs merge=lfs -text +phonelibs/acado/x86_64/lib/libacado_toolkit_s.so.1.2.2beta filter=lfs diff=lfs merge=lfs -text +phonelibs/acado/x86_64/lib/libacado_casadi.a filter=lfs diff=lfs merge=lfs -text +phonelibs/acado/x86_64/lib/libacado_csparse.a filter=lfs diff=lfs merge=lfs -text +phonelibs/acado/x86_64/lib/libacado_qpoases.a filter=lfs diff=lfs merge=lfs -text phonelibs/acado/aarch64/lib/libacado_toolkit.a filter=lfs diff=lfs merge=lfs -text phonelibs/acado/aarch64/lib/libacado_toolkit_s.so.1.2.2beta filter=lfs diff=lfs merge=lfs -text phonelibs/acado/aarch64/lib/libacado_casadi.a filter=lfs diff=lfs merge=lfs -text diff --git a/SConstruct b/SConstruct index 0b4135de89..9b79ef2e31 100644 --- a/SConstruct +++ b/SConstruct @@ -25,6 +25,10 @@ AddOption('--compile_db', action='store_true', help='build clang compilation database') +AddOption('--mpc-generate', + action='store_true', + help='regenerates the mpc sources') + real_arch = arch = subprocess.check_output(["uname", "-m"], encoding='utf8').rstrip() if platform.system() == "Darwin": arch = "Darwin" diff --git a/phonelibs/acado/aarch64/lib/libacado_casadi.a b/phonelibs/acado/aarch64/lib/libacado_casadi.a deleted file mode 100644 index 8574aa8cee..0000000000 --- a/phonelibs/acado/aarch64/lib/libacado_casadi.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:02c9bdd43a4c5692c16cb437ab000e74efc908d4dcefb39144f7a0eb0e5b67ab -size 33782 diff --git a/phonelibs/acado/aarch64/lib/libacado_csparse.a b/phonelibs/acado/aarch64/lib/libacado_csparse.a deleted file mode 100644 index 6a8efe0fac..0000000000 --- a/phonelibs/acado/aarch64/lib/libacado_csparse.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9a6bd05cc21d157f8705575df0ef69d02974375bc800edd353d504635ca090bd -size 92090 diff --git a/phonelibs/acado/aarch64/lib/libacado_qpoases.a b/phonelibs/acado/aarch64/lib/libacado_qpoases.a deleted file mode 100644 index 1f3c3cc32c..0000000000 --- a/phonelibs/acado/aarch64/lib/libacado_qpoases.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:be4f11bcff1de30751fbf8fb014d0e14d7334c17fac3dfd4cb2f445391a08946 -size 634068 diff --git a/phonelibs/acado/aarch64/lib/libacado_toolkit.a b/phonelibs/acado/aarch64/lib/libacado_toolkit.a deleted file mode 100644 index 489ba4a42b..0000000000 --- a/phonelibs/acado/aarch64/lib/libacado_toolkit.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:80a5b92a8162edd22507d2d9e9abf794ebd4aa4b5affa398443a01f6ab71fde3 -size 23341704 diff --git a/phonelibs/acado/aarch64/lib/libacado_toolkit_s.so b/phonelibs/acado/aarch64/lib/libacado_toolkit_s.so deleted file mode 120000 index 08cbf4e4ef..0000000000 --- a/phonelibs/acado/aarch64/lib/libacado_toolkit_s.so +++ /dev/null @@ -1 +0,0 @@ -libacado_toolkit_s.so.1 \ No newline at end of file diff --git a/phonelibs/acado/aarch64/lib/libacado_toolkit_s.so.1.2.2beta b/phonelibs/acado/aarch64/lib/libacado_toolkit_s.so.1.2.2beta deleted file mode 100755 index efed9cd53c..0000000000 --- a/phonelibs/acado/aarch64/lib/libacado_toolkit_s.so.1.2.2beta +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:b21d9a8c8b68715062830ed91420bad10622ae157f8daecca98adb7082c7de43 -size 8813880 diff --git a/phonelibs/acado/build.sh b/phonelibs/acado/build.sh new file mode 100755 index 0000000000..252a4527ea --- /dev/null +++ b/phonelibs/acado/build.sh @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6c22ce7271de55f940175f761347dfd3a791ba72f11eb44be99af2943bb2b4ae +size 558 diff --git a/phonelibs/acado/build.txt b/phonelibs/acado/build.txt deleted file mode 100644 index a4aa91350f..0000000000 --- a/phonelibs/acado/build.txt +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:c199f546c90ac3a08a8afdc56d6839d045563e01ab6994dd5ea24ffb688bf604 -size 394 diff --git a/phonelibs/acado/include/acado/code_generation/templates/acado_forces_generator.m.in b/phonelibs/acado/include/acado/code_generation/templates/acado_forces_generator.m.in index b042c77699..6fcb4a47ca 100644 --- a/phonelibs/acado/include/acado/code_generation/templates/acado_forces_generator.m.in +++ b/phonelibs/acado/include/acado/code_generation/templates/acado_forces_generator.m.in @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:4fdc25caeea307698f552958d182555db0e9a95a128baafe8e88ec4f4d3d2b4a -size 6592 +oid sha256:32da23f60e04e1ee677fd8b23f05c4b71af17b42c35a57d180b6ffddfe24734c +size 6813 diff --git a/phonelibs/acado/include/acado/code_generation/templates/qpdunes_interface.in b/phonelibs/acado/include/acado/code_generation/templates/qpdunes_interface.in index 396ea4c34f..a314c969e4 100644 --- a/phonelibs/acado/include/acado/code_generation/templates/qpdunes_interface.in +++ b/phonelibs/acado/include/acado/code_generation/templates/qpdunes_interface.in @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:9748d1371c3238d1f559456e4cf4809341c7941ea9428cbd0bdcfc093b45701d -size 2609 +oid sha256:8bfa8fe9ce654dae93674811657dfba4e89d07caa69855a1e27e9249e96d5f60 +size 2686 diff --git a/phonelibs/acado/include/acado/code_generation/templates/qpdunes_split_interface.in b/phonelibs/acado/include/acado/code_generation/templates/qpdunes_split_interface.in index 568caecc79..04fb66d5a2 100644 --- a/phonelibs/acado/include/acado/code_generation/templates/qpdunes_split_interface.in +++ b/phonelibs/acado/include/acado/code_generation/templates/qpdunes_split_interface.in @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:a707d626ee797981ddb27af1f1dd4f8e988209741f4285fa29ff97408f4cb2f5 -size 3053 +oid sha256:35f2be66539f74ea6b2ba18c4afe5e3026c6a19af1d6c55e1662b51f08361c54 +size 3149 diff --git a/phonelibs/acado/include/acado/code_generation/templates/qpoases3_interface.c.in b/phonelibs/acado/include/acado/code_generation/templates/qpoases3_interface.c.in index 20ffe7bdb4..abb64bf46f 100644 --- a/phonelibs/acado/include/acado/code_generation/templates/qpoases3_interface.c.in +++ b/phonelibs/acado/include/acado/code_generation/templates/qpoases3_interface.c.in @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:063bfa2531b5c031bf80fd6870713076da9758055750b1b340134b6e60697086 -size 1550 +oid sha256:a6fbf7cad50b34c070d45ca8dfc881eadc3544967cbfb662f610e030506b2d29 +size 1610 diff --git a/phonelibs/acado/include/acado/code_generation/templates/templates.hpp b/phonelibs/acado/include/acado/code_generation/templates/templates.hpp index dd81521d16..00fd5d9707 100644 --- a/phonelibs/acado/include/acado/code_generation/templates/templates.hpp +++ b/phonelibs/acado/include/acado/code_generation/templates/templates.hpp @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:97d5cb9224ef7af2ee39a97800aacc3be00eaa74b6e310ab0ee9cd44d3ed65ba -size 2859 +oid sha256:5218981faa25368edffdb1c8b352cf49665ab6f9db08f34f951573db01bc1002 +size 2791 diff --git a/phonelibs/acado/include/acado/external_packages/eigen3/COPYING.MINPACK b/phonelibs/acado/include/acado/external_packages/eigen3/COPYING.MINPACK index 42606785ba..86e15601c4 100644 --- a/phonelibs/acado/include/acado/external_packages/eigen3/COPYING.MINPACK +++ b/phonelibs/acado/include/acado/external_packages/eigen3/COPYING.MINPACK @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:8887036b1039e299ebcc8b95a73ea1538df548393fb8462361c80bea605a4fbe -size 2194 +oid sha256:f5b330efdad110cdd84d585ec61220b0650461fa599e36b13e1726c9346dcfb9 +size 2246 diff --git a/phonelibs/acado/x64/lib/libacado_casadi.a b/phonelibs/acado/x64/lib/libacado_casadi.a deleted file mode 100644 index 231bc7d505..0000000000 --- a/phonelibs/acado/x64/lib/libacado_casadi.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:9b4709c7fd3a4e6bdddfaee0d4482087ba1ea1a90c71d4a16652f1b363e010e8 -size 49744 diff --git a/phonelibs/acado/x64/lib/libacado_csparse.a b/phonelibs/acado/x64/lib/libacado_csparse.a deleted file mode 100644 index 0e14641936..0000000000 --- a/phonelibs/acado/x64/lib/libacado_csparse.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ebe06e3c6876190aae26d48b1dfbfb5a50d1887e5d6e6482669e48caabc1a80e -size 141978 diff --git a/phonelibs/acado/x64/lib/libacado_qpoases.a b/phonelibs/acado/x64/lib/libacado_qpoases.a deleted file mode 100644 index 461e1e2189..0000000000 --- a/phonelibs/acado/x64/lib/libacado_qpoases.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:4cf01f68ba2dca1054334af49c77b443267b33551efe188f3176ac176b93fd7e -size 754948 diff --git a/phonelibs/acado/x64/lib/libacado_toolkit.a b/phonelibs/acado/x64/lib/libacado_toolkit.a deleted file mode 100644 index 8726af14fb..0000000000 --- a/phonelibs/acado/x64/lib/libacado_toolkit.a +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:469251cfd2abb76655132f3de1da86f91fe1f581701fe1780cb1c77074d7fa3b -size 26405540 diff --git a/phonelibs/acado/x64/lib/libacado_toolkit_s.so b/phonelibs/acado/x64/lib/libacado_toolkit_s.so deleted file mode 120000 index 08cbf4e4ef..0000000000 --- a/phonelibs/acado/x64/lib/libacado_toolkit_s.so +++ /dev/null @@ -1 +0,0 @@ -libacado_toolkit_s.so.1 \ No newline at end of file diff --git a/phonelibs/acado/x64/lib/libacado_toolkit_s.so.1 b/phonelibs/acado/x64/lib/libacado_toolkit_s.so.1 deleted file mode 120000 index 228d01293b..0000000000 --- a/phonelibs/acado/x64/lib/libacado_toolkit_s.so.1 +++ /dev/null @@ -1 +0,0 @@ -libacado_toolkit_s.so.1.2.2beta \ No newline at end of file diff --git a/phonelibs/acado/x64/lib/libacado_toolkit_s.so.1.2.2beta b/phonelibs/acado/x64/lib/libacado_toolkit_s.so.1.2.2beta deleted file mode 100755 index 1faef381e8..0000000000 --- a/phonelibs/acado/x64/lib/libacado_toolkit_s.so.1.2.2beta +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:72239a2333dadef2e351e0a627c68e43fef7d8d6c9ea674f07b6c81d91f4db5e -size 10249488 diff --git a/phonelibs/acado/aarch64/lib/libacado_toolkit_s.so.1 b/phonelibs/acado/x86_64/lib/libacado_toolkit_s.so.1 similarity index 100% rename from phonelibs/acado/aarch64/lib/libacado_toolkit_s.so.1 rename to phonelibs/acado/x86_64/lib/libacado_toolkit_s.so.1 diff --git a/phonelibs/acado/x86_64/lib/libacado_toolkit_s.so.1.2.2beta b/phonelibs/acado/x86_64/lib/libacado_toolkit_s.so.1.2.2beta new file mode 100644 index 0000000000..b6da672cbf --- /dev/null +++ b/phonelibs/acado/x86_64/lib/libacado_toolkit_s.so.1.2.2beta @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:178937c40ec3326eab01c62f3239a885cbfb1308af65436d831dd4fa6a7d619e +size 10304768 diff --git a/selfdrive/controls/lib/lateral_mpc/SConscript b/selfdrive/controls/lib/lateral_mpc/SConscript index 6cdc22d17d..e609c914b1 100644 --- a/selfdrive/controls/lib/lateral_mpc/SConscript +++ b/selfdrive/controls/lib/lateral_mpc/SConscript @@ -7,23 +7,40 @@ cpp_path = [ "#phonelibs/qpoases/INCLUDE/EXTRAS", "#phonelibs/qpoases/SRC/", "#phonelibs/qpoases", - "lib_mpc_export" + "lib_mpc_export", +] +generated_c = [ + 'lib_mpc_export/acado_auxiliary_functions.c', + 'lib_mpc_export/acado_qpoases_interface.cpp', + 'lib_mpc_export/acado_integrator.c', + 'lib_mpc_export/acado_solver.c', ] -mpc_files = [ - "lateral_mpc.c", - Glob("lib_mpc_export/*.c"), - Glob("lib_mpc_export/*.cpp"), +generated_h = [ + 'lib_mpc_export/acado_common.h', + 'lib_mpc_export/acado_auxiliary_functions.h', + 'lib_mpc_export/acado_qpoases_interface.hpp', ] interface_dir = Dir('lib_mpc_export') SConscript(['#phonelibs/qpoases/SConscript'], variant_dir='lib_qp', exports=['interface_dir']) +if GetOption('mpc_generate'): + generator_cpp = File('generator.cpp') + + acado_libs = [File(f"#phonelibs/acado/{arch}/lib/libacado_toolkit.a"), + File(f"#phonelibs/acado/{arch}/lib/libacado_casadi.a"), + File(f"#phonelibs/acado/{arch}/lib/libacado_csparse.a")] + + generator = env.Program('generator', generator_cpp, LIBS=acado_libs, CPPPATH=cpp_path, + CCFLAGS=env['CCFLAGS'] + ["-Wno-deprecated", "-Wno-overloaded-shift-op-parentheses"]) + + cmd = f"cd {Dir('.').get_abspath()} && {generator[0].get_abspath()}" + env.Command(generated_c + generated_h, generator, cmd) + + + +mpc_files = ["lateral_mpc.c"] + generated_c env.SharedLibrary('mpc', mpc_files, LIBS=['m', 'qpoases'], LIBPATH=['lib_qp'], CPPPATH=cpp_path) -# if arch != "aarch64": -# acado_libs = [File("#phonelibs/acado/x64/lib/libacado_toolkit.a"), -# File("#phonelibs/acado/x64/lib/libacado_casadi.a"), -# File("#phonelibs/acado/x64/lib/libacado_csparse.a")] -# env.Program('generator', 'generator.cpp', LIBS=acado_libs, CPPPATH=cpp_path) diff --git a/selfdrive/controls/lib/longitudinal_mpc/SConscript b/selfdrive/controls/lib/longitudinal_mpc/SConscript index 072ff646ae..584d5103eb 100644 --- a/selfdrive/controls/lib/longitudinal_mpc/SConscript +++ b/selfdrive/controls/lib/longitudinal_mpc/SConscript @@ -8,25 +8,41 @@ cpp_path = [ "#phonelibs/qpoases/INCLUDE/EXTRAS", "#phonelibs/qpoases/SRC/", "#phonelibs/qpoases", - "lib_mpc_export" + "lib_mpc_export", +] +generated_c = [ + 'lib_mpc_export/acado_auxiliary_functions.c', + 'lib_mpc_export/acado_qpoases_interface.cpp', + 'lib_mpc_export/acado_integrator.c', + 'lib_mpc_export/acado_solver.c', ] -mpc_files = [ - "longitudinal_mpc.c", - Glob("lib_mpc_export/*.c"), - Glob("lib_mpc_export/*.cpp"), +generated_h = [ + 'lib_mpc_export/acado_common.h', + 'lib_mpc_export/acado_auxiliary_functions.h', + 'lib_mpc_export/acado_qpoases_interface.hpp', ] + interface_dir = Dir('lib_mpc_export') SConscript(['#phonelibs/qpoases/SConscript'], variant_dir='lib_qp', exports=['interface_dir']) +if GetOption('mpc_generate'): + generator_cpp = File('generator.cpp') + + acado_libs = [File(f"#phonelibs/acado/{arch}/lib/libacado_toolkit.a"), + File(f"#phonelibs/acado/{arch}/lib/libacado_casadi.a"), + File(f"#phonelibs/acado/{arch}/lib/libacado_csparse.a")] + + generator = env.Program('generator', generator_cpp, LIBS=acado_libs, CPPPATH=cpp_path, + CCFLAGS=env['CCFLAGS'] + ["-Wno-deprecated", "-Wno-overloaded-shift-op-parentheses"]) + + cmd = f"cd {Dir('.').get_abspath()} && {generator[0].get_abspath()}" + env.Command(generated_c + generated_h, generator, cmd) + + +mpc_files = ["longitudinal_mpc.c"] + generated_c env.SharedLibrary('mpc1', mpc_files, LIBS=['m', 'qpoases'], LIBPATH=['lib_qp'], CPPPATH=cpp_path) env.SharedLibrary('mpc2', mpc_files, LIBS=['m', 'qpoases'], LIBPATH=['lib_qp'], CPPPATH=cpp_path) - -# if arch != "aarch64": -# acado_libs = [File("#phonelibs/acado/x64/lib/libacado_toolkit.a"), -# File("#phonelibs/acado/x64/lib/libacado_casadi.a"), -# File("#phonelibs/acado/x64/lib/libacado_csparse.a")] -# env.Program('generator', 'generator.cpp', LIBS=acado_libs, CPPPATH=cpp_path)