diff --git a/.gitignore b/.gitignore index 9a7918923..1f96f1619 100644 --- a/.gitignore +++ b/.gitignore @@ -24,3 +24,5 @@ solution.mat *.tmp *.mat .settings/ +*.aux +*.doc* diff --git a/ct/cmake/clang-cxx-dev-tools.cmake b/ct/cmake/clang-cxx-dev-tools.cmake index 0a1ed1e93..dc6ca3ff3 100644 --- a/ct/cmake/clang-cxx-dev-tools.cmake +++ b/ct/cmake/clang-cxx-dev-tools.cmake @@ -53,14 +53,14 @@ find_program(CLANG_FORMAT_BIN "clang-format") if(NOT CLANG_FORMAT_BIN) find_program(CLANG_FORMAT_BIN "clang-format-3.9") endif() -message(WARNING "CLANG FORMAT IS: " ${CLANG_FORMAT_BIN}) +message(STATUS "CLANG FORMAT IS: " ${CLANG_FORMAT_BIN}) if(NOT CLANG_FORMAT_BIN) - message (WARNING "CLANG-FORMAT not found. You can ignore this message if you are not a CT developer.") + message (STATUS "CLANG-FORMAT not found. You can ignore this message if you are not a CT developer.") add_custom_target(clang-format COMMAND ${CMAKE_COMMAND} -E echo_append "clang-format executable not found" VERBATIM) else() - message (WARNING "FOUND CLANG-FORMAT") + message (STATUS "FOUND CLANG-FORMAT") add_custom_target( clang-format COMMAND ${CLANG_FORMAT_BIN} @@ -94,13 +94,13 @@ function(ct_configure_clang_tidy TIDY_INC_DIRS) if(NOT CLANG_TIDY_BIN) find_program(CLANG_TIDY_BIN "clang_tidy") endif() - message(${CLANG_TIDY_BIN}) + message(STATUS ${CLANG_TIDY_BIN}) if(NOT CLANG_TIDY_BIN) add_custom_target(clang-tidy COMMAND ${CMAKE_COMMAND} -E echo_append "clang-tidy executable not found" VERBATIM) else() - message (WARNING "FOUND CLANG-TIDY") + message (STATUS "FOUND CLANG-TIDY") set(CLANG_TIDY_COMMAND COMMAND ${CLANG_TIDY_BIN} ${ALL_CXX_SOURCE_FILES} -config='' -header-filter=\".*\\/ct\\/.*\" -- -std=c++11 -fopenmp ${CURRENT_INC_DIRS}) add_custom_target( diff --git a/ct/cmake/compilerSettings.cmake b/ct/cmake/compilerSettings.cmake index f85c4ce5b..2ed7c862b 100644 --- a/ct/cmake/compilerSettings.cmake +++ b/ct/cmake/compilerSettings.cmake @@ -4,8 +4,6 @@ option(BUILD_EXAMPLES "Compile all examples for ct" false) option(BUILD_HYQ_FULL "Compile all examples for HyQ (takes long, should use clang)" false) option(BUILD_HYQ_LINEARIZATION_TIMINGS "Build linearization timing tests for HyQ (takes long, should use clang)" false) option(BUILD_HYA_LINEARIZATION_TIMINGS "Build linearization timing tests for HyA (takes long, should use clang)" false) -option(USE_LAPACKE "Use lapacke bindings for Eigen" false) -option(USE_BLAS "Use blas bindings for Eigen" false) option(HPIPM "Build HPIPM Optimal Control solver" false) ## option to activate/deactivate explicit template prespecs @@ -32,14 +30,4 @@ if(USE_INTEL) SET (CMAKE_C_COMPILER ${INTEL_C_COMPILER}) SET (CMAKE_CXX_COMPILER ${INTEL_CXX_COMPILER}) set(CMAKE_CXX_LINKER_FLAGS "${CMAKE_CXX_LINKER_FLAGS} -L${MKLROOT}/lib/intel64 -llibblas -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm -llapacke -lblas -llapack -lliblapack -liblapacke") -endif(USE_INTEL) - - -if(USE_LAPACKE) - add_definitions(-DEIGEN_USE_LAPACKE) - set(CMAKE_CXX_LINKER_FLAGS "${CMAKE_CXX_LINKER_FLAGS} -llapacke -lblas ") -endif() - -if(USE_BLAS) - add_definitions(-DEIGEN_USE_BLAS) -endif() +endif(USE_INTEL) \ No newline at end of file diff --git a/ct_core/CMakeLists.txt b/ct_core/CMakeLists.txt index 8587b73f8..7f9a5bab3 100755 --- a/ct_core/CMakeLists.txt +++ b/ct_core/CMakeLists.txt @@ -44,12 +44,9 @@ endif() include_directories( ${BOOST_INCLUDE_DIRS} ${catkin_INCLUDE_DIRS} -) - -include_directories ( - include - include/external - ${EIGEN3_INCLUDE_DIR} + ${EIGEN3_INCLUDE_DIR} + include + include/external ) ## dummy prespec libs @@ -72,14 +69,13 @@ catkin_package( examples ${EIGEN3_INCLUDE_DIR} LIBRARIES - dl - ct_core - ${PRESPEC_LIB_NAMES} + ct_core + dl #required for gcc-compatibility + ${PRESPEC_LIB_NAMES} DEPENDS - EIGEN3 + EIGEN3 ) - set(CODEGEN_TEMPLATE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/templates") set(CODEGEN_OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/generated") configure_file(${CMAKE_CURRENT_SOURCE_DIR}/include/ct/core/templateDir.h.in ${CMAKE_CURRENT_SOURCE_DIR}/include/ct/core/templateDir.h) diff --git a/ct_core/package.xml b/ct_core/package.xml index ecd57fde9..706f3577a 100755 --- a/ct_core/package.xml +++ b/ct_core/package.xml @@ -2,11 +2,10 @@ ct_core 0.3.0 - ADRL control toolbox - core module + Control toolbox - core module. Markus Giftthaler Michael Neunert BSD-2 catkin - diff --git a/ct_doc/doc/ct_doc.doxyfile b/ct_doc/doc/ct_doc.doxyfile index 2cb33959d..6a0c5abbf 100644 --- a/ct_doc/doc/ct_doc.doxyfile +++ b/ct_doc/doc/ct_doc.doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = ct # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v2.3 +PROJECT_NUMBER = v3.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/ct_doc/doc/developer_info.dox b/ct_doc/doc/developer_info.dox index d5a4e6328..3bca9a50d 100644 --- a/ct_doc/doc/developer_info.dox +++ b/ct_doc/doc/developer_info.dox @@ -10,13 +10,6 @@ to align the development with ongoing activities. \section Code Formatting We support clang-format and provide a style template to automatically format the source code. Please refer to the clang-format style sheet in the package root directory for our conventions. -Or simply rely on clang-format to do the formatting for you. - -Note for developers using the *Eclipse IDE*: you can conveniently integrate clang-format (and our .clang-format -configuration file) in your project using the "CppStyle" plugin (see http://www.cppstyle.com/ for -detailed information). To automatically format the code according to ct-style, just mark the source-code -and press *Ctrl+Shift+f*. - Example command for running clang-tidy: \code diff --git a/ct_doc/doc/installation.dox b/ct_doc/doc/installation.dox index e18aef387..c8122c9c4 100644 --- a/ct_doc/doc/installation.dox +++ b/ct_doc/doc/installation.dox @@ -1,34 +1,71 @@ /*! \page install_guide Installation -- \subpage requirements -- \subpage install - - -\page requirements Requirements @tableofcontents -This library is written in C++11. It is tested under Ubuntu 14.04 and 16.04 with -library versions as provided in the package sources. +\section req Requirements: + +- Ubuntu 16.04 or 18.04 +- a compiler with C++14 support, e.g. gcc or clang -\section dep Dependencies - - C++ compiler with C++11 support (we recommend gcc-5.4.1 or greater or clang-3.5 or greater) - - Eigen 3 - - catkin (build system, easy to switch to CMakeLists.txt where needed). We recommend using catkin_tools - - boost 1.54 or greater (soon optional) - - kindr, a kinematics library for robotics, - which is required for building ct_rbd. Ideally, clone the newest version into your - catkin workspace: +\section dep Dependencies and building the library + - install ROS, please follow the steps in this tutorial for your Linux distribution. + - install Eigen 3 via + \code{.sh} + sudo apt-get update + sudo apt-get install libeigen3-dev + \endcode + - install the catkin_tools build system + \code{.sh} + sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu `lsb_release -sc` main" > /etc/apt/sources.list.d/ros-latest.list' + wget http://packages.ros.org/ros.key -O - | sudo apt-key add - + sudo apt-get update + sudo apt-get install python-catkin-tools + \endcode + - install boost \code{.sh} - $ git clone https://github.com/ethz-asl/kindr.git + sudo apt-get install libboost-all-dev + \endcode + - create a catkin workspace and initialize it + \code{.sh} + mkdir -p ~/catkin_ws/src + cd ~/catkin_ws + catkin init \endcode + - install the kindr library + \code{.sh} + cd ~/catkin_ws/src + git clone https://github.com/ANYbotics/kindr.git + \endcode + + - finally, clone the control toolbox and build your workspace + \code{.sh} + cd ~/catkin_ws/src + git clone https://github.com/ethz-adrl/control-toolbox.git + catkin build -DCMAKE_BUILD_TYPE=Release + \endcode + + - if you would like to run an example, build the library with + \code{.sh} + cd ~/catkin_ws/src + catkin build -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true + \endcode + Now, try to run the examples, e.g. the optimal control and optimal filtering examples: + \code{.sh} + cd ~/catkin_ws/src + catkin build -DCMAKE_BUILD_TYPE=Release -DBUILD_EXAMPLES=true + rosrun ct_optcon ex_NLOC + rosrun ct_optcon ex_KalmanFiltering + \endcode + \section opt_dep Optional Dependencies and Bindings The following dependencies and bindings are optional but can help to enhance the functionality or performance of the CT - lapack (enables Schur method as an alternative to iterative method in ct::optcon::LQR) + \code{.sh} $ sudo apt-get install liblapack-dev \endcode - clang compiler (faster compilation for large linear models), install from command-line via \code{.sh} $ sudo apt-get install clang \endcode @@ -36,8 +73,6 @@ The following dependencies and bindings are optional but can help to enhance the Please make sure that the `clang` and `clang++` commands are in your path. You may need to create a symbolic link in `/usr/bin` or use a bash alias. - - ROS Indigo or Kinetic (for ROS bindings, visualization and extended examples), see ct_ros_nodes, ct_ros_msgs - - IPOPT or SNOPT (for ct::optcon::SnoptSolver and ct::optcon::IpoptSolver as used by ct::optcon::DMS) @@ -61,19 +96,8 @@ The following dependencies and bindings are optional but can help to enhance the \endcode -\page install Compile -@tableofcontents - -\section build_lib Build the library - -In order to build the library, execute the following commands in your terminal -\code{.sh} -cd catkin_ws/src -git clone https://github.com/ethz-asl/kindr.git -git clone https://bitbucket.org/adrlab/ct.git -catkin build -DCMAKE_BUILD_TYPE=RELEASE -\endcode +\section Additional build arguments The following additional build flags are available, which can be appended to the build command above Build Flag | Default value | Description @@ -95,7 +119,7 @@ To build the documentation do \code{.sh} catkin build ct_doc -v --make-args doc # build the doc \endcode -This will build the documentation and open it in your browser. +This will build the documentation. The index.html can be found in ct_doc. \section run_tests Run Unit Tests diff --git a/ct_doc/doc/mainpage.dox b/ct_doc/doc/mainpage.dox index a197609fd..e37332411 100644 --- a/ct_doc/doc/mainpage.dox +++ b/ct_doc/doc/mainpage.dox @@ -6,7 +6,7 @@ \section ct1 Control Toolbox -This is the ADRL Control Toolbox ('CT'), an open-source C++ library for efficient modelling, control, +The Control Toolbox ('CT'), an open-source C++ library for efficient modelling, control, estimation, trajectory optimization and model predictive control. The CT is applicable to a broad class of dynamic systems, but features additional modelling tools specially designed for robotics. This page outlines its general concept, its major building blocks and highlights selected application examples. @@ -47,7 +47,7 @@ The CT was designed with the following features in mind: - all algorithm flavors and solver backends are available through simple configuration files. -The CT is hosted on bitbucket: https://bitbucket.org/adrlab/ct +The CT is hosted on github: https://github.com/ethz-adrl/control-toolbox @@ -212,11 +212,6 @@ The four different main modules are detailed in the following. - quick link to ct_models -\section source_code Source Code - -The source code is available at https://bitbucket.org/adrlab/ct - -Examples for interfacing with ROS and advanced application examples are available at ct_ros. \section gs How to use the Control Toolbox @@ -226,15 +221,15 @@ To get started with the control toolbox, please see \ref getting_started "Gettin \section contact Support For any questions, issues or other troubleshooting please either -- create an issue: https://bitbucket.org/adrlab/ct/issues +- create an issue: https://github.com/ethz-adrl/control-toolbox/issues - contact the devs: control-toolbox-dev@googlegroups.com \section ct_doc_acknowledgement Acknowledgements \subsection contribs Contributors - - Michael Neunert - Markus Giftthaler + - Michael Neunert - Markus Stäuble - Farbod Farshidian - Diego Pardo @@ -243,12 +238,11 @@ For any questions, issues or other troubleshooting please either - Ruben Grandia - Hamza Merzic -\subsection lead_overview Project Lead and Maintenance - - Michael Neunert, neunertm (at) gmail (dot) com +\subsection lead_overview Maintenance - Markus Giftthaler, markusgft (at) gmail (dot) com -\subsection funding Funding -This software has been developed at the Agile & Dexterous Robotics Lab +\subsection funding Funding 2014-2018 +The core of this software has been developed at the Agile & Dexterous Robotics Lab at ETH Zurich, Switzerland between 2014 and 2018. During that time, development has been made possible through financial support from the Swiss National Science Foundation (SNF) through a SNF Professorship award to Jonas Buchli and the National Competence Centers in Research (NCCR) diff --git a/ct_doc/doc/tags/.gitkeep b/ct_doc/doc/tags/.gitkeep deleted file mode 100644 index e69de29bb..000000000 diff --git a/ct_models/CMakeLists.txt b/ct_models/CMakeLists.txt index f61f4c54a..bce66d33e 100755 --- a/ct_models/CMakeLists.txt +++ b/ct_models/CMakeLists.txt @@ -60,7 +60,7 @@ endif(USE_PRESPEC) ################ HyQ ################# add_executable(HyQLinearizationCodgen src/HyQ/codegen/HyQLinearizationCodgen.cpp) -target_link_libraries(HyQLinearizationCodgen ${catkin_LIBRARIES} ) +target_link_libraries(HyQLinearizationCodgen ${catkin_LIBRARIES}) if (BUILD_HYQ_FULL) if (NOT USE_CLANG) diff --git a/ct_models/doc/ct_models.doxyfile b/ct_models/doc/ct_models.doxyfile index 4cfd50dce..6501f8a0a 100644 --- a/ct_models/doc/ct_models.doxyfile +++ b/ct_models/doc/ct_models.doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = ct_models # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v2.3 +PROJECT_NUMBER = v3.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/ct_models/package.xml b/ct_models/package.xml index f43a010fe..7d20e73d5 100755 --- a/ct_models/package.xml +++ b/ct_models/package.xml @@ -10,9 +10,6 @@ catkin - roscpp - std_msgs - ct_core ct_rbd diff --git a/ct_optcon/doc/ct_optcon.doxyfile b/ct_optcon/doc/ct_optcon.doxyfile index feee573be..37feaf0f7 100644 --- a/ct_optcon/doc/ct_optcon.doxyfile +++ b/ct_optcon/doc/ct_optcon.doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = ct_optcon # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v2.3 +PROJECT_NUMBER = v3.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/ct_optcon/package.xml b/ct_optcon/package.xml index da458a186..ed1dc1368 100644 --- a/ct_optcon/package.xml +++ b/ct_optcon/package.xml @@ -1,17 +1,20 @@ ct_optcon + 0.3.0 + Optimal Control package of the ADRL Control Toolbox + + BSD-2 + Markus Giftthaler Michael Neunert - BSD-2 Markus Giftthaler Michael Neunert catkin - roscpp ct_core cmake_modules diff --git a/ct_rbd/CMakeLists.txt b/ct_rbd/CMakeLists.txt index 1763f34f6..ffc5c63ac 100644 --- a/ct_rbd/CMakeLists.txt +++ b/ct_rbd/CMakeLists.txt @@ -10,7 +10,7 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/../ct_optcon/cmake/externalSolvers.cmake) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wfatal-errors -std=c++14 -Wall -Wno-unknown-pragmas") SET(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) -find_package(catkin REQUIRED ct_core ct_optcon) +find_package(catkin REQUIRED ct_optcon) find_package(kindr) @@ -34,7 +34,6 @@ catkin_package( LIBRARIES ${PRESPEC_LIB_NAMES} CATKIN_DEPENDS - ct_core ct_optcon kindr ) diff --git a/ct_rbd/doc/ct_rbd.doxyfile b/ct_rbd/doc/ct_rbd.doxyfile index a367563a9..8c8988079 100644 --- a/ct_rbd/doc/ct_rbd.doxyfile +++ b/ct_rbd/doc/ct_rbd.doxyfile @@ -38,7 +38,7 @@ PROJECT_NAME = ct_rbd # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = v2.3 +PROJECT_NUMBER = v3.0 # Using the PROJECT_BRIEF tag one can provide an optional one line description # for a project that appears at the top of each page and should give viewer a diff --git a/ct_rbd/package.xml b/ct_rbd/package.xml index 19b20f038..9a8570fae 100644 --- a/ct_rbd/package.xml +++ b/ct_rbd/package.xml @@ -10,8 +10,6 @@ catkin - roscpp - ct_core ct_optcon cmake_modules kindr