Commit 6cb99933 authored by Joseph Mirabel's avatar Joseph Mirabel
Browse files

Use doxygen to generate the documentation.

parent eebbcdea
cmake_minimum_required(VERSION 2.8)
SET(INSTALL_DOCUMENTATION OFF)
include(cmake/base.cmake)
# These variables have to be defined before running setup_project
......@@ -64,43 +63,38 @@ FOREACH(PKG ${SETUP_DOC_PKG})
ELSE(DEFINED ${PREFIX}_DOCDIR)
SET(DOC_PREFIX ${${PREFIX}_PREFIX}/share/doc/${PKG}/doxygen-html)
ENDIF(DEFINED ${PREFIX}_DOXYGENDOCDIR)
STRING(REPLACE ${CMAKE_INSTALL_PREFIX}/share/doc .. DOC_PREFIX "${DOC_PREFIX}")
STRING(REPLACE ${CMAKE_INSTALL_PREFIX}/share/doc ../.. DOC_PREFIX "${DOC_PREFIX}")
IF (EXISTS ${DOC_PREFIX}/main.html)
SET(${DOC_VAR}_LINK ${DOC_PREFIX}/main.html)
SET(${DOC_VAR}_URL ${DOC_PREFIX}/main.html)
ELSE (EXISTS ${DOC_PREFIX}/main.html)
SET(${DOC_VAR}_LINK ${DOC_PREFIX}/index.html)
SET(${DOC_VAR}_URL ${DOC_PREFIX}/index.html)
ENDIF (EXISTS ${DOC_PREFIX}/main.html)
SET(${DOC_VAR}_LINK "<a href='${${DOC_VAR}_URL}'>${PKG}</a>")
ELSE(${PREFIX}_FOUND)
SET(${DOC_VAR}_LINK ${PKG}-missing.html)
SET(PACKAGE_NAME ${PKG})
SET(DOC_PKG_NAME "hpp_doc_missing_${DOC_VAR}")
SET(${DOC_VAR}_LINK "\\ref ${DOC_PKG_NAME}")
SET(STEPS)
IF(DEFINED ${PKG}_giturl)
SET(STEPS "${STEPS} <li>
to get the source code through <code>git</code>:
<code>git clone ${${PKG}_giturl}</code>,
then configure, compile and install the package.</code></li>")
SET(STEPS "${STEPS}\\li get the source code through \\c git:
\\code git clone --recursive ${${PKG}_giturl} \\endcode
Then configure, compile and install the package.\n")
ENDIF(DEFINED ${PKG}_giturl)
IF(DEFINED ${PKG}_robotpkg_package)
SET(STEPS "${STEPS} <li>
install it through <code>robotpkg</code>:
<code>cd robotpkg/${${PKG}_robotpkg_package};
make update</code></li>")
SET(STEPS "${STEPS}\\li install it through \\c robotpkg :
\\code
cd robotpkg/${${PKG}_robotpkg_package}
make update
\\endcode")
ENDIF(DEFINED ${PKG}_robotpkg_package)
CONFIGURE_FILE(doc/missing.html.in ${CMAKE_BINARY_DIR}/doc/${PKG}-missing.html @ONLY)
INSTALL(FILES ${CMAKE_BINARY_DIR}/doc/${PKG}-missing.html
DESTINATION ${CMAKE_INSTALL_DOCDIR})
CONFIGURE_FILE(doc/missing.dox.in ${CMAKE_BINARY_DIR}/doc/${PKG}-missing.dox @ONLY)
ENDIF(${PREFIX}_FOUND)
ENDFOREACH(PKG ${SETUP_DOC_PKG})
SET(EXTRA_HTML_FILES
doc/corba.html
doc/algorithm.html
doc/gui.html
doc/main.html
doc/index.html
doc/tree.html)
doc/tree.html
doc/main.dox)
CONFIG_FILES(${EXTRA_HTML_FILES})
FOREACH(HTML_FILE ${EXTRA_HTML_FILES})
INSTALL(FILES ${CMAKE_BINARY_DIR}/${HTML_FILE} DESTINATION ${CMAKE_INSTALL_DOCDIR})
......@@ -109,33 +103,21 @@ ENDFOREACH(HTML_FILE ${EXTRA_HTML_FILES})
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/graphDep.dot
COMMAND ${CMAKE_SOURCE_DIR}/scripts/packageDep --quiet --output ${CMAKE_BINARY_DIR}/graphDep.dot ${SETUP_DOC_PKG}
COMMAND sed -i 's/size = \"12,15\"//' ${CMAKE_BINARY_DIR}/graphDep.dot)
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/dependencies.png
COMMAND dot -o ${CMAKE_BINARY_DIR}/dependencies.png -Tpng ${CMAKE_BINARY_DIR}/graphDep.dot
DEPENDS graphDep.dot)
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_BINARY_DIR}/graphDep.html
COMMAND dot -o ${CMAKE_BINARY_DIR}/graphDep.html -Tcmapx ${CMAKE_BINARY_DIR}/graphDep.dot
DEPENDS graphDep.dot)
ADD_CUSTOM_COMMAND(OUTPUT graph-dependency.html
COMMAND cat ${CMAKE_SOURCE_DIR}/doc/graph-dependency.html.head
${CMAKE_BINARY_DIR}/graphDep.html
${CMAKE_SOURCE_DIR}/doc/graph-dependency.html.foot
> ${CMAKE_BINARY_DIR}/graph-dependency.html
DEPENDS ${CMAKE_BINARY_DIR}/graphDep.html ${CMAKE_BINARY_DIR}/dependencies.png)
ADD_CUSTOM_TARGET(generate-html ALL
DEPENDS graph-dependency.html)
DEPENDS graphDep.dot)
INSTALL(FILES
doc/custom.css
doc/doxygen.css
doc/tree.css
doc/tabs.css
${CMAKE_BINARY_DIR}/graph-dependency.html
doc/jquery-3.3.1.min.js
DESTINATION ${CMAKE_INSTALL_DOCDIR})
INSTALL(FILES
${CMAKE_BINARY_DIR}/dependencies.png
DESTINATION ${CMAKE_INSTALL_DOCDIR}/images)
INSTALL(DIRECTORY
doc/images
doc/figures
DESTINATION ${CMAKE_INSTALL_DOCDIR})
INSTALL(
FILES ${CMAKE_CURRENT_BINARY_DIR}/doc/doxygen-xml/index.xml
DESTINATION ${CMAKE_INSTALL_DOCDIR}/doxygen-html)
setup_project_finalize()
INPUT = @PROJECT_BINARY_DIR@/doc \
@PROJECT_SOURCE_DIR@/doc
DOTFILE_DIRS = @PROJECT_BINARY_DIR@
HTML_EXTRA_STYLESHEET = @PROJECT_SOURCE_DIR@/doc/doxygen_extra.css
FILE_PATTERNS = *.dox
GENERATE_TREEVIEW = NO
LAYOUT_FILE = @PROJECT_SOURCE_DIR@/doc/doxygenLayout.xml
GENERATE_XML = YES
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="custom.css" rel="stylesheet" type="text/css">
<title>Humanoid Path Planner documentation</title>
</head>
<body>
<h1>Packages implementing algorithms</h1>
<h3>Technical tools</h3>
<table class="pkglist">
<tr>
<td>
<a href="@HPPUTIL_LINK@">hpp-util</a>
</td>
<td>technical tools for the HPP project (logging, benchmark, quality assurance tools),</td>
</tr>
</table>
<h3>Motion planning for humanoid systems</h3>
<table class="pkglist">
<li><b>Kinematic chain with geometry</b></li>
<table class="pkglist">
<tr>
<td>
<a href="@HPPFCL_LINK@">Modified version of Flexible collision library</a>
</td>
<td>Collision detection and distance computation,</td>
</tr>
<tr>
<td>
<a href="@PINOCCHIO_LINK@">pinocchio</a>
</td>
<td>implementation of kinematic chain with dynamic computations,</td>
</tr>
<tr>
<td>
<a href="@HPPPINOCCHIO_LINK@">hpp-pinocchio</a>
</td>
<td>Interface between pinocchio and hpp-core,
</td>
</tr>
</table>
<li><b>Non linear constraints</b></li>
<table class="pkglist">
<tr>
<td>
<a href="@HPPCONSTRAINTS_LINK@">hpp-constraints</a>
</td>
<td>definition of some nonlinear constraints,</td>
</tr>
</table>
<li><b>Path planning</b></li>
<table class="pkglist">
<tr>
<td>
<a href="@HPPCORE_LINK@">hpp-core</a>
</td>
<td>definition of basic classes, path planning problems and solvers,</td>
</tr>
</table>
<li><b>Path Planning for humanoid robots</b></li>
<table class="pkglist">
<tr>
<td>
<a href="@HPPWHOLEBODYSTEP_LINK@">hpp-wholebody-step</a>
</td>
<td>whole-body and walk planning using sliding path approximation.</td>
</tr>
</table>
<li><b>Manipulation Planning</b></li>
<table class="pkglist">
<tr>
<td>
<a href="@HPPMANIPULATION_LINK@">hpp-manipulation</a>
</td>
<td>Manipulation planning.</td>
</tr>
<tr>
<td>
<a href="@HPPMANIPULATIONURDF_LINK@">hpp-manipulation-urdf</a>
</td>
<td>Enhance hpp-pinocchio to support datas required by hpp-manipulation.</td>
</tr>
</table>
</ul>
<br><br>
<hr>
<center>
<img src="images/footer.jpg" height="100" alt="footer"><br>
Humanoid Path Planner documentation<br>
</center>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="custom.css" rel="stylesheet" type="text/css">
<title>Humanoid Path Planner documentation</title>
</head>
<body>
<h1>Packages implementing CORBA interfaces</h1>
<p>
The following packages implement Corba communication functionalities
<ul>
<li><a href="@HPPCORBASERVER_LINK@">hpp-corbaserver</a> Corba server embedding a hpp::core::ProblemSolver instance.</li>
<li><a href="@HPPWHOLEBODYSTEPCORBA_LINK@">hpp-wholebody-step-corba</a> Corba server for <a href="@HPPWHOLEBODYSTEPPLANNER_LINK@">hpp-wholebody-step</a>.</li>
<li><a href="@HPPMANIPULATIONCORBA_LINK@">hpp-manipulation-corba</a> Corba server for <a href="@HPPMANIPULATION_LINK@">hpp-manipulation</a>.</li>
</ul>
</p>
<br><br>
<hr>
<center>
<img src="images/footer.jpg" height="100" alt="footer"><br>
Humanoid Path Planner documentation<br>
</center>
</body>
</html>
<doxygenlayout version="1.0">
<!-- Generated by doxygen 1.8.11 -->
<!-- Navigation index tabs for HTML output -->
<navindex>
<tab type="mainpage" visible="yes" title=""/>
<tab type="pages" visible="yes" title="" intro=""/>
<tab type="modules" visible="yes" title="" intro=""/>
<tab type="namespaces" visible="no" title="">
<tab type="namespacelist" visible="yes" title="" intro=""/>
<tab type="namespacemembers" visible="yes" title="" intro=""/>
</tab>
<tab type="classes" visible="yes" title="">
<tab type="classlist" visible="yes" title="" intro=""/>
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/>
<tab type="hierarchy" visible="yes" title="" intro=""/>
<tab type="classmembers" visible="yes" title="" intro=""/>
</tab>
<tab type="files" visible="no" title="">
<tab type="filelist" visible="yes" title="" intro=""/>
<tab type="globals" visible="yes" title="" intro=""/>
</tab>
<tab type="examples" visible="yes" title="" intro=""/>
</navindex>
<!-- Layout definition for a class page -->
<class>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<inheritancegraph visible="$CLASS_GRAPH"/>
<collaborationgraph visible="$COLLABORATION_GRAPH"/>
<memberdecl>
<nestedclasses visible="yes" title=""/>
<publictypes title=""/>
<services title=""/>
<interfaces title=""/>
<publicslots title=""/>
<signals title=""/>
<publicmethods title=""/>
<publicstaticmethods title=""/>
<publicattributes title=""/>
<publicstaticattributes title=""/>
<protectedtypes title=""/>
<protectedslots title=""/>
<protectedmethods title=""/>
<protectedstaticmethods title=""/>
<protectedattributes title=""/>
<protectedstaticattributes title=""/>
<packagetypes title=""/>
<packagemethods title=""/>
<packagestaticmethods title=""/>
<packageattributes title=""/>
<packagestaticattributes title=""/>
<properties title=""/>
<events title=""/>
<privatetypes title=""/>
<privateslots title=""/>
<privatemethods title=""/>
<privatestaticmethods title=""/>
<privateattributes title=""/>
<privatestaticattributes title=""/>
<friends title=""/>
<related title="" subtitle=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<services title=""/>
<interfaces title=""/>
<constructors title=""/>
<functions title=""/>
<related title=""/>
<variables title=""/>
<properties title=""/>
<events title=""/>
</memberdef>
<allmemberslink visible="yes"/>
<usedfiles visible="$SHOW_USED_FILES"/>
<authorsection visible="yes"/>
</class>
<!-- Layout definition for a namespace page -->
<namespace>
<briefdescription visible="yes"/>
<memberdecl>
<nestednamespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<classes visible="yes" title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection visible="yes"/>
</namespace>
<!-- Layout definition for a file page -->
<file>
<briefdescription visible="yes"/>
<includes visible="$SHOW_INCLUDE_FILES"/>
<includegraph visible="$INCLUDE_GRAPH"/>
<includedbygraph visible="$INCLUDED_BY_GRAPH"/>
<sourcelink visible="yes"/>
<memberdecl>
<classes visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<constantgroups visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<functions title=""/>
<variables title=""/>
</memberdef>
<authorsection/>
</file>
<!-- Layout definition for a group page -->
<group>
<briefdescription visible="yes"/>
<groupgraph visible="$GROUP_GRAPHS"/>
<memberdecl>
<nestedgroups visible="yes" title=""/>
<dirs visible="yes" title=""/>
<files visible="yes" title=""/>
<namespaces visible="yes" title=""/>
<classes visible="yes" title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
<membergroups visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
<memberdef>
<pagedocs/>
<inlineclasses title=""/>
<defines title=""/>
<typedefs title=""/>
<enums title=""/>
<enumvalues title=""/>
<functions title=""/>
<variables title=""/>
<signals title=""/>
<publicslots title=""/>
<protectedslots title=""/>
<privateslots title=""/>
<events title=""/>
<properties title=""/>
<friends title=""/>
</memberdef>
<authorsection visible="yes"/>
</group>
<!-- Layout definition for a directory page -->
<directory>
<briefdescription visible="yes"/>
<directorygraph visible="yes"/>
<memberdecl>
<dirs visible="yes"/>
<files visible="yes"/>
</memberdecl>
<detaileddescription title=""/>
</directory>
</doxygenlayout>
div.dotgraph iframe[src="dot_graphDep.svg"]{
width:100%;
}
<hr>
<center>
<img src="images/footer.jpg" height="100" alt="footer"><br>
Humanoid Path Planner documentation<br>
</center>
<hr>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="custom.css" rel="stylesheet" type="text/css">
<title>Humanoid Path Planner documentation</title>
</head>
<body>
<h1><a class="anchor" name="dependency">
Graph of dependencies between packages
</a></h1>
<h2><a class="anchor" name="description">
Description
</a></h2>
<p>Below is the graph of dependencies between packages.</p>
<img src="images/dependencies.png"
alt="packages dependencies"
usemap="#CD"
style="border:0">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
<link href="custom.css" rel="stylesheet" type="text/css">
<title>Humanoid Path Planner documentation</title>
</head>
<body>
<h1>Packages implementing graphical user interface</h1>
<p>
The following packages implement a corba connection with a graphical
display
<ul>
<li><a href="@GEPETTOVIEWER_LINK@">gepetto-viewer</a>Graphical window based on OpenSceneGraph</li>
<li><a href="@GEPETTOVIEWERCORBA_LINK@">gepetto-viewer-corba</a>Corba interface to gepetto-viewer</li>
<li><a href="@HPPGEPETTOVIEWER_LINK@">hpp-gepetto-viewer</a>Link between hpp and gepetto-viewer-corba</li>
</p>
<br><br>
<hr>
<center>
<img src="images/footer.jpg" height="100" alt="footer"><br>
Humanoid Path Planner documentation<br>
</center>
</body>
</html>
......@@ -6,9 +6,9 @@
</head>
<frameset cols="250,*">
<frame src="tree.html" name="treefrm">
<frame src="main.html" name="basefrm">
<frame src="doxygen-html/index.html" name="basefrm">
<noframes>
<a href="main.html">Frames are disabled. Click here to go to the main page.</a>
<a href="doxygen-html/index.html">Frames are disabled. Click here to go to the main page.</a>
</noframes>
</frameset>
</html>
This diff is collapsed.
/**
\mainpage Humanoid Path Planner Documentation
\par Introduction
HPP (Humanoid Path Planner) is a collection of software packages
implementing path planning functionalities for a humanoid robot.
The core functionalities are well suited to solve classical path planning problems.
It can be extended to path planning for other types of robots like digital actors for instance.
\par Installation
Installation instructions can be found on
<a target="_blank" href="https://humanoid-path-planner.github.io/hpp-doc/download.html">github</a>.
\par Overview of the architecture
The code relative to HPP is distributed into several software
packages. See \ref hpp_doc_dependency_graph "dependency graph" for a quick
view of the package hierarchy.
The packages are distributed into the following categories:
\li \ref hpp_doc_algorithms "Algorithms" implementing path planning functionalities
\li \ref hpp_doc_corba_interface "Corba" communication facilities to control algorithms
\li \ref hpp_doc_graphical_interface "Graphical user interface" to display configurations and paths.
<table>
<tr><td width="50%">
<img src="../figures/archi.png" alt="Overview of the architecture" style="max-height: 50vh"/>
</td><td width="5%">
</td><td width="30%">
The algorithmic part, built on @HPPCORE_LINK@ is
embedded in corba servers implemented by
@HPPCORBASERVER_LINK@ or extensions like
@HPPWHOLEBODYSTEPCORBA_LINK@.
The corba servers are linked to executable \c hppcorbaserver.
<p></p>
From a python terminal, clients to the corba servers can be created in order
to control the executable. The control of the application is performed via
idl interfaces and python classes available in \ref hpp_doc_corba_interface.
<p></p>
Results of path planning requests as well as individual configurations can
be displayed in \c gepetto-viewer via package
@HPPGEPETTOVIEWER_LINK@.
</td></tr>
</table>
\par Getting started
Package @HPPTUTORIAL_LINK@ provides some examples of
how to use this project.
**/
/**
\page hpp_doc_dependency_graph Graph of dependencies between packages
Below is the graph of dependencies between packages.
\dotfile graphDep.dot "Dependency graph"
**/
/**
\page hpp_doc_algorithms Packages implementing algorithms
<h2>Technical tools</h2>
<table class="pkglist">
<tr>
<td>@HPPUTIL_LINK@</td>
<td>technical tools for the HPP project (logging, benchmark, quality assurance tools),</td>
</tr>
</table>
<h2>Motion planning for humanoid systems</h2>
\par Kinematic chain with geometry
<table class="pkglist">
<tr>
<td>@HPPFCL_LINK@</td>
<td>Modified version of Flexible collision library, for collision detection and distance computation,</td>
</tr>
<tr>
<td>@PINOCCHIO_LINK@</td>
<td>implementation of kinematic chain with dynamic computations,</td>
</tr>
<tr>
<td>@HPPPINOCCHIO_LINK@</td>
<td>Interface between pinocchio and hpp-core,
</td>
</tr>
</table>