From 104b840957afe9c0814502dbd4b8ef0ee92554b0 Mon Sep 17 00:00:00 2001 From: Markus Giftthaler Date: Sat, 27 Apr 2019 13:12:06 +0200 Subject: [PATCH 1/5] slight update of the docu --- ct_doc/doc/ct_doc.doxyfile | 2 +- ct_doc/doc/developer_info.dox | 7 ------- ct_doc/doc/installation.dox | 3 +-- ct_doc/doc/mainpage.dox | 20 +++++++------------- ct_doc/doc/tags/.gitkeep | 0 ct_models/doc/ct_models.doxyfile | 2 +- ct_optcon/doc/ct_optcon.doxyfile | 2 +- ct_rbd/doc/ct_rbd.doxyfile | 2 +- 8 files changed, 12 insertions(+), 26 deletions(-) delete mode 100644 ct_doc/doc/tags/.gitkeep 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..48ac782e7 100644 --- a/ct_doc/doc/installation.dox +++ b/ct_doc/doc/installation.dox @@ -29,6 +29,7 @@ library versions as provided in the package sources. 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 +37,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) 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/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_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_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 From 27aff4938e179c52018a2e56c2db36be0dbba328 Mon Sep 17 00:00:00 2001 From: Markus Giftthaler Date: Sat, 27 Apr 2019 13:13:29 +0200 Subject: [PATCH 2/5] updated gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) 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* From f461aac3854e9d6819a6e8927c6b48cd11e96153 Mon Sep 17 00:00:00 2001 From: Markus Giftthaler Date: Sat, 27 Apr 2019 13:18:48 +0200 Subject: [PATCH 3/5] lowering warning level for clang format and clang tidy --- ct/cmake/clang-cxx-dev-tools.cmake | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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( From 17f030072b63c69c53ccaa29c8d6f5ee050b1f4a Mon Sep 17 00:00:00 2001 From: Markus Giftthaler Date: Sat, 27 Apr 2019 15:10:26 +0200 Subject: [PATCH 4/5] removing a few ros-dependencies from cmakelist --- ct/cmake/compilerSettings.cmake | 14 +------------- ct_core/CMakeLists.txt | 18 +++++++----------- ct_core/package.xml | 3 +-- ct_models/CMakeLists.txt | 2 +- ct_models/package.xml | 3 --- ct_optcon/package.xml | 7 +++++-- ct_rbd/CMakeLists.txt | 3 +-- ct_rbd/package.xml | 2 -- 8 files changed, 16 insertions(+), 36 deletions(-) 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_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/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/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/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 From 8b86b1842a96a2745a8c0fc1f926ddb8e359cb9b Mon Sep 17 00:00:00 2001 From: Markus Giftthaler Date: Sat, 27 Apr 2019 17:04:15 +0200 Subject: [PATCH 5/5] updating installation instructions --- ct_doc/doc/installation.dox | 83 ++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 29 deletions(-) diff --git a/ct_doc/doc/installation.dox b/ct_doc/doc/installation.dox index 48ac782e7..c8122c9c4 100644 --- a/ct_doc/doc/installation.dox +++ b/ct_doc/doc/installation.dox @@ -1,28 +1,64 @@ /*! \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 @@ -60,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 @@ -94,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