From 7b4833a0f5fb41558140e193ea49ee601eeef26c Mon Sep 17 00:00:00 2001
From: Guilhem Saurel <guilhem.saurel@laas.fr>
Date: Mon, 9 Apr 2018 17:13:56 +0200
Subject: [PATCH] [Doc] Fix doxygen warnings

- remove leftidx package, not available in MathJbx
- replace `\leftidx{^` by `{}^{`
- fix param lists
- comment documentation of commented code
- replace `<i>` & `<li>` with `*i*` & `*li*`, that are valid in html & md
---
 doc/Doxyfile.extra.in                   |  2 +-
 doc/latex/se3.tex                       | 88 ++++++++++++-------------
 src/multibody/data.hpp                  |  6 +-
 src/multibody/frame.hpp                 |  2 +-
 src/multibody/geometry.hpp              |  4 +-
 src/multibody/geometry.hxx              | 24 +++----
 src/multibody/liegroup/vector-space.hpp |  5 +-
 src/multibody/model.hpp                 | 18 ++---
 src/spatial/force-base.hpp              | 22 +++++--
 src/spatial/force.hpp                   |  1 +
 10 files changed, 89 insertions(+), 83 deletions(-)

diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in
index 527821c56..4571d7c19 100644
--- a/doc/Doxyfile.extra.in
+++ b/doc/Doxyfile.extra.in
@@ -530,7 +530,7 @@ GENERATE_LATEX         = YES
 # The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
 # packages that should be included in the LaTeX output.
 
-EXTRA_PACKAGES        += leftidx
+EXTRA_PACKAGES        +=
 
 #---------------------------------------------------------------------------
 # Configuration options related to the preprocessor
diff --git a/doc/latex/se3.tex b/doc/latex/se3.tex
index 382e9850e..ffe95c002 100644
--- a/doc/latex/se3.tex
+++ b/doc/latex/se3.tex
@@ -11,52 +11,50 @@
 \newcommand{\dpartial}[2]{\frac{\partial{#1}}{\partial{#2}}}
 \newcommand{\ddpartial}[2]{\frac{\partial^2{#1}}{\partial{#2}^2}}
 
-\newcommand{\aRb}{\ \leftidx{^A}R_B}
-\newcommand{\aMb}{\ \leftidx{^A}M_B}
-\newcommand{\amb}{\ \leftidx{^A}m_B}
-\newcommand{\apb}{{\ \leftidx{^A}{AB}{}}}
-\newcommand{\aXb}{\ \leftidx{^A}X_B}
-
-\newcommand{\bRa}{\ \leftidx{^B}R_A}
-\newcommand{\bMa}{\ \leftidx{^B}M_A}
-\newcommand{\bma}{\ \leftidx{^B}m_A}
-\newcommand{\bpa}{\ \leftidx{^B}{BA}{}}
-\newcommand{\bXa}{\ \leftidx{^B}X_A}
-
-\newcommand{\ap}{\ \leftidx{^A}p}
-\newcommand{\bp}{\ \leftidx{^B}p}
-
-\newcommand{\afs}{\ \leftidx{^A}\phi}
-\newcommand{\bfs}{\ \leftidx{^B}\phi}
-\newcommand{\af}{\ \leftidx{^A}f}
-\renewcommand{\bf}{\ \leftidx{^B}f}
-\newcommand{\an}{\ \leftidx{^A}\tau}
-\newcommand{\bn}{\ \leftidx{^B}\tau}
-
-\newcommand{\avs}{\ \leftidx{^A}\nu}
-\newcommand{\bvs}{\ \leftidx{^B}\nu}
+\newcommand{\aRb}{\ {}^{A}R_B}
+\newcommand{\aMb}{\ {}^{A}M_B}
+\newcommand{\amb}{\ {}^{A}m_B}
+\newcommand{\apb}{{\ {}^{A}{AB}{}}}
+\newcommand{\aXb}{\ {}^{A}X_B}
+
+\newcommand{\bRa}{\ {}^{B}R_A}
+\newcommand{\bMa}{\ {}^{B}M_A}
+\newcommand{\bma}{\ {}^{B}m_A}
+\newcommand{\bpa}{\ {}^{B}{BA}{}}
+\newcommand{\bXa}{\ {}^{B}X_A}
+
+\newcommand{\ap}{\ {}^{A}p}
+\newcommand{\bp}{\ {}^{B}p}
+
+\newcommand{\afs}{\ {}^{A}\phi}
+\newcommand{\bfs}{\ {}^{B}\phi}
+\newcommand{\af}{\ {}^{A}f}
+\renewcommand{\bf}{\ {}^{B}f}
+\newcommand{\an}{\ {}^{A}\tau}
+\newcommand{\bn}{\ {}^{B}\tau}
+
+\newcommand{\avs}{\ {}^{A}\nu}
+\newcommand{\bvs}{\ {}^{B}\nu}
 \newcommand{\w}{\omega}
-\newcommand{\av}{\ \leftidx{^A}v}
-\newcommand{\bv}{\ \leftidx{^B}v}
-\newcommand{\aw}{\ \leftidx{^A}\w}
-\newcommand{\bw}{\ \leftidx{^B}\w}
-
-\newcommand{\aI}{\ \leftidx{^A}I}
-\newcommand{\bI}{\ \leftidx{^B}I}
-\newcommand{\cI}{\ \leftidx{^C}I}
-\newcommand{\aY}{\ \leftidx{^A}Y}
-\newcommand{\bY}{\ \leftidx{^B}Y}
-\newcommand{\cY}{\ \leftidx{^c}Y}
-\newcommand{\aXc}{\ \leftidx{^A}X_C}
-\newcommand{\aMc}{\ \leftidx{^A}M_C}
-\newcommand{\aRc}{\ \leftidx{^A}R_C}
-\newcommand{\apc}{\ \leftidx{^A}{AC}{}}
-\newcommand{\bXc}{\ \leftidx{^B}X_C}
-\newcommand{\bRc}{\ \leftidx{^B}R_C}
-\newcommand{\bMc}{\ \leftidx{^B}M_C}
-\newcommand{\bpc}{\ \leftidx{^B}{BC}{}}
-
-\usepackage{leftidx}
+\newcommand{\av}{\ {}^{A}v}
+\newcommand{\bv}{\ {}^{B}v}
+\newcommand{\aw}{\ {}^{A}\w}
+\newcommand{\bw}{\ {}^{B}\w}
+
+\newcommand{\aI}{\ {}^{A}I}
+\newcommand{\bI}{\ {}^{B}I}
+\newcommand{\cI}{\ {}^{C}I}
+\newcommand{\aY}{\ {}^{A}Y}
+\newcommand{\bY}{\ {}^{B}Y}
+\newcommand{\cY}{\ {}^{c}Y}
+\newcommand{\aXc}{\ {}^{A}X_C}
+\newcommand{\aMc}{\ {}^{A}M_C}
+\newcommand{\aRc}{\ {}^{A}R_C}
+\newcommand{\apc}{\ {}^{A}{AC}{}}
+\newcommand{\bXc}{\ {}^{B}X_C}
+\newcommand{\bRc}{\ {}^{B}R_C}
+\newcommand{\bMc}{\ {}^{B}M_C}
+\newcommand{\bpc}{\ {}^{B}{BC}{}}
 
 \begin{document}
 \title{SE(3) operations}
diff --git a/src/multibody/data.hpp b/src/multibody/data.hpp
index 0f043c435..18bec0039 100644
--- a/src/multibody/data.hpp
+++ b/src/multibody/data.hpp
@@ -109,7 +109,7 @@ namespace se3
     ///        and expressed in the local frame of the joint..
     container::aligned_vector<Inertia> Ycrb;
     
-    /// \brief Vector of sub-tree composite rigid body inertia time derivatives \f$ \dot{Y}_{crb}$\f. See Data::Ycrb for more details.
+    /// \brief Vector of sub-tree composite rigid body inertia time derivatives \f$ \dot{Y}_{crb}\f$. See Data::Ycrb for more details.
     container::aligned_vector<Inertia::Matrix6> dYcrb; // TODO: change with dense symmetric matrix6
     
     /// \brief The joint space inertia matrix (a square matrix of dim model.nv).
@@ -174,7 +174,7 @@ namespace se3
     
     // dCCRBA return quantities
     /// \brief Centroidal Momentum Matrix Time Variation
-    /// \note \f$ \dot{h_g} = A_g \ddot{q}\ + \dot{A_g}\dot{q}f$ maps the joint velocity and acceleration vectors to the time variation of the centroidal momentum.
+    /// \note \f$ \dot{h_g} = A_g \ddot{q}\ + \dot{A_g}\dot{q}\f$ maps the joint velocity and acceleration vectors to the time variation of the centroidal momentum.
     Matrix6x dAg;
     
     /// \brief Centroidal momentum quantity.
@@ -271,7 +271,7 @@ namespace se3
     /// \brief Inverse of the operational-space inertia matrix
     Eigen::MatrixXd JMinvJt;
     
-    /// \brief Cholesky decompostion of \JMinvJt.
+    /// \brief Cholesky decompostion of \f$\JMinvJt\f$.
     Eigen::LLT<Eigen::MatrixXd> llt_JMinvJt;
     
     /// \brief Lagrange Multipliers corresponding to the contact forces in se3::forwardDynamics.
diff --git a/src/multibody/frame.hpp b/src/multibody/frame.hpp
index 99869428f..5cf88e4c5 100644
--- a/src/multibody/frame.hpp
+++ b/src/multibody/frame.hpp
@@ -60,7 +60,7 @@ namespace se3
     /// \param[in] name Name of the frame.
     /// \param[in] parent Index of the parent joint in the kinematic tree.
     /// \param[in] previousFrame Index of the parent frame in the kinematic tree.
-    /// \param[in] placement Placement of the frame wrt the parent joint frame.
+    /// \param[in] frame_placement Placement of the frame wrt the parent joint frame.
     /// \param[in] type The type of the frame, see the enum FrameType
     ///
     FrameTpl(const std::string & name,
diff --git a/src/multibody/geometry.hpp b/src/multibody/geometry.hpp
index f3fddd215..b9ba60b2e 100644
--- a/src/multibody/geometry.hpp
+++ b/src/multibody/geometry.hpp
@@ -241,7 +241,7 @@ namespace se3
     ///
     /// This simply corresponds to storing in a re-arranged manner the information stored
     /// in geomModel.geometryObjects and geomModel.collisionPairs.
-    /// \param[in] GeomModel the geometry model (const)
+    /// \param[in] geomModel the geometry model (const)
     ///
     /// \warning Outer objects are not duplicated (i.e. if a is in outerObjects[b], then
     /// b is not in outerObjects[a]).
@@ -255,7 +255,7 @@ namespace se3
     /// condition can be used to temporarily remove a pair without touching the model, in a versatile
     /// manner. 
     /// \param[in] pairId the index of the pair in GeomModel::collisionPairs vector.
-    /// \param[in] new value of the activation boolean (true by default).
+    /// \param[in] flag value of the activation boolean (true by default).
     void activateCollisionPair(const PairIndex pairId,const bool flag=true);
 
     /// Deactivate a collision pair.
diff --git a/src/multibody/geometry.hxx b/src/multibody/geometry.hxx
index 4bad2f94a..32f8b311c 100644
--- a/src/multibody/geometry.hxx
+++ b/src/multibody/geometry.hxx
@@ -98,12 +98,12 @@ namespace se3
   }
 
 
-    /**
-     * @brief      Associate a GeometryObject of type COLLISION to a joint's inner objects list
-     *
-     * @param[in]  joint         Index of the joint
-     * @param[in]  inner_object  Index of the GeometryObject that will be an inner object
-     */
+  //
+  // @brief      Associate a GeometryObject of type COLLISION to a joint's inner objects list
+  //
+  // @param[in]  joint         Index of the joint
+  // @param[in]  inner_object  Index of the GeometryObject that will be an inner object
+  //
   // inline void GeometryModel::addInnerObject(const JointIndex joint_id, const GeomIndex inner_object)
   // {
   //   if (std::find(innerObjects[joint_id].begin(),
@@ -114,12 +114,12 @@ namespace se3
   //     std::cout << "inner object already added" << std::endl;
   // }
 
-    /**
-     * @brief      Associate a GeometryObject of type COLLISION to a joint's outer objects list
-     *
-     * @param[in]  joint         Index of the joint
-     * @param[in]  inner_object  Index of the GeometryObject that will be an outer object
-     */
+  //
+  // @brief      Associate a GeometryObject of type COLLISION to a joint's outer objects list
+  //
+  // @param[in]  joint         Index of the joint
+  // @param[in]  inner_object  Index of the GeometryObject that will be an outer object
+  //
   // inline void GeometryModel::addOutterObject (const JointIndex joint, const GeomIndex outer_object)
   // {
   //   if (std::find(outerObjects[joint].begin(),
diff --git a/src/multibody/liegroup/vector-space.hpp b/src/multibody/liegroup/vector-space.hpp
index 4331b47b7..fc3da7cd6 100644
--- a/src/multibody/liegroup/vector-space.hpp
+++ b/src/multibody/liegroup/vector-space.hpp
@@ -49,8 +49,7 @@ namespace se3
     }
 
     /// Constructor
-    /// \param size size of the vector space: should be the equal to template
-    ///        argument for static sized vector-spaces.
+    /// \param other other VectorSpaceOperation from which to retrieve size
     VectorSpaceOperation (const VectorSpaceOperation& other) : Base (), size_ (other.size_.value())
     {
       assert (size_.value() >= 0);
@@ -113,7 +112,7 @@ namespace se3
     // template <class ConfigL_t, class ConfigR_t>
     // static double squaredDistance_impl(const Eigen::MatrixBase<ConfigL_t> & q0,
                                        // const Eigen::MatrixBase<ConfigR_t> & q1)
-    
+
     template <class Config_t>
     static void normalize_impl (const Eigen::MatrixBase<Config_t>& /*qout*/)
     {}
diff --git a/src/multibody/model.hpp b/src/multibody/model.hpp
index acd75e938..9aef73e2b 100644
--- a/src/multibody/model.hpp
+++ b/src/multibody/model.hpp
@@ -60,19 +60,19 @@ namespace se3
     /// \brief Number of operational frames.
     int nframes;
 
-    /// \brief Spatial inertias of the body <i> expressed in the supporting joint frame <i>.
+    /// \brief Spatial inertias of the body *i* expressed in the supporting joint frame *i*.
     container::aligned_vector<Inertia> inertias;
     
-    /// \brief Placement (SE3) of the input of joint <i> regarding to the parent joint output <li>.
+    /// \brief Placement (SE3) of the input of joint *i* regarding to the parent joint output *li*.
     container::aligned_vector<SE3> jointPlacements;
 
-    /// \brief Model of joint <i>, encapsulated in a JointModelAccessor.
+    /// \brief Model of joint *i*, encapsulated in a JointModelAccessor.
     JointModelVector joints;
     
-    /// \brief Joint parent of joint <i>, denoted <li> (li==parents[i]).
+    /// \brief Joint parent of joint *i*, denoted *li* (li==parents[i]).
     std::vector<JointIndex> parents;
 
-    /// \brief Name of joint <i>
+    /// \brief Name of joint *i*
     std::vector<std::string> names;
     
     /// \brief Vector of joint's neutral configurations
@@ -98,8 +98,8 @@ namespace se3
     container::aligned_vector<Frame> frames;
     
     /// \brief Vector of subtrees.
-    /// subtree[j] corresponds to the subtree supported by the joint j.
-    /// The first element of subtree[j] is the index of the joint j itself.
+    /// subtree[j] corresponds to the subtree supported by the joint *j*.
+    /// The first element of subtree[j] is the index of the joint *j* itself.
     std::vector<IndexVector> subtrees;
 
     /// \brief Spatial gravity of the model.
@@ -260,9 +260,9 @@ namespace se3
     /// \warning If no joint is found, return the number of elements at time T.
     /// This can lead to errors if the model is expanded after this method is called
     /// (for example to get the id of a parent joint)
-    /// \param[in] index Index of the joint.
+    /// \param[in] name Name of the joint.
     ///
-    /// \return Index of the joint.
+    /// \return name Name of the joint.
     ///
     JointIndex getJointId(const std::string & name) const;
     
diff --git a/src/spatial/force-base.hpp b/src/spatial/force-base.hpp
index 3cc6b7ef4..6cdb93461 100644
--- a/src/spatial/force-base.hpp
+++ b/src/spatial/force-base.hpp
@@ -19,6 +19,14 @@
 #ifndef __se3_force_base_hpp__
 #define __se3_force_base_hpp__
 
+/** \addtogroup Force_group Force
+ *
+ *  This module represents a spatial force, e.g. a spatial impulse or force associated to a body.
+ *  The spatial force is the mathematical representation of \f$ se^{*}(3) \f$, the dual of \f$ se(3) \f$.
+ *
+ *
+ */
+
 namespace se3
 {
   /**
@@ -83,7 +91,7 @@ namespace se3
      *
      * @return     The 6D vector \f$ \phi \f$ such that
      * \f{equation*}
-     * \leftidx{^A}\phi = \begin{bmatrix} \leftidx{^A}f \\  \leftidx{^A}\tau \end{bmatrix}
+     * {}^{A}\phi = \begin{bmatrix} {}^{A}f \\  {}^{A}\tau \end{bmatrix}
      * \f}
      */
     ToVectorConstReturnType toVector() const { return derived().toVector_impl(); }
@@ -161,11 +169,11 @@ namespace se3
     /**
      * @brief      Transform from A to B coordinates the Force represented by *this such that
      *             \f{equation*}
-     *             \leftidx{^B}f  =  \leftidx{^B}X_A^* * \leftidx{^A}f
+     *             {}^{B}f  =  {}^{B}X_A^* * {}^{A}f
      *             \f}
      *
-     * @param[in]  m     The rigid transformation \f$ \leftidx{^B}m_A \f$ whose coordinates transform for forces is
-     *                   \leftidx{^B}X_A^*
+     * @param[in]  m     The rigid transformation \f$ {}^{B}m_A \f$ whose coordinates transform for forces is
+     *                   {}^{B}X_A^*
      *
      * @return     an expression of the force expressed in the new coordinates
      */
@@ -176,11 +184,11 @@ namespace se3
     /**
      * @brief      Transform from B to A coordinates the Force represented by *this such that
      *             \f{equation*}
-     *             \leftidx{^A}f  =  \leftidx{^A}X_B^* * \leftidx{^A}f
+     *             {}^{A}f  =  {}^{A}X_B^* * {}^{A}f
      *             \f}
      *
-     * @param[in]  m     The rigid transformation \f$ \leftidx{^B}m_A \f$ whose coordinates transform for forces is
-     *                   \leftidx{^B}X_A^*
+     * @param[in]  m     The rigid transformation \f$ {}^{B}m_A \f$ whose coordinates transform for forces is
+     *                   {}^{B}X_A^*
      *
      * @return     an expression of the force expressed in the new coordinates
      */
diff --git a/src/spatial/force.hpp b/src/spatial/force.hpp
index 0c25d0c06..20cb522a8 100644
--- a/src/spatial/force.hpp
+++ b/src/spatial/force.hpp
@@ -54,3 +54,4 @@ FORCE_TYPEDEF_GENERIC(Derived,PINOCCHIO_MACRO_EMPTY_ARG)
 #include "pinocchio/spatial/force-ref.hpp"
 
 #endif // ifndef __se3_force_hpp__
+
-- 
GitLab