Skip to content

Commit

Permalink
Merge pull request #1261 from MRPT/develop
Browse files Browse the repository at this point in the history
Merge for release of v2.5.6
  • Loading branch information
jlblancoc authored Nov 12, 2022
2 parents a282037 + a69b875 commit b989c96
Show file tree
Hide file tree
Showing 218 changed files with 3,143 additions and 1,579 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build-macos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ jobs:

steps:
- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@master

- name: Git submodule
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-windows.yml
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ jobs:
# choco install --verbose graphviz

- name: Checkout
uses: actions/checkout@v2
uses: actions/checkout@master

- name: Git submodule
run: |
Expand Down
16 changes: 14 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,11 @@ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
message(STATUS "Setting build type to '${default_build_type}' as none was specified.")
set(CMAKE_BUILD_TYPE "${default_build_type}" CACHE
STRING "Choose the type of build." FORCE)
# Set the possible values of build type for cmake-gui
endif()
# Set the possible values of build type for cmake-gui
if (DEFINED CACHE{CMAKE_BUILD_TYPE})
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
"Debug" "Release" "MinSizeRel" "RelWithDebInfo" "Coverage")
"Debug" "Release" "MinSizeRel" "RelWithDebInfo" "Coverage" "SanitizeAddress" "SanitizeThread")
endif()

# -------------------------
Expand Down Expand Up @@ -422,6 +424,16 @@ if(CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS_COVERAGE "${CMAKE_CXX_FLAGS_DEBUG} --coverage -fno-inline -fno-inline-small-functions -fno-default-inline")
set(CMAKE_EXE_LINKER_FLAGS_COVERAGE "${CMAKE_EXE_LINKER_FLAGS_DEBUG} --coverage")
set(CMAKE_SHARED_LINKER_FLAGS_COVERAGE "${CMAKE_SHARED_LINKER_FLAGS_DEBUG} --coverage")

# BUILD_TYPE: SanitizeAddress
set(CMAKE_CXX_FLAGS_SANITIZEADDRESS "-fsanitize=address -fsanitize=leak -g")
set(CMAKE_EXE_LINKER_FLAGS_SANITIZEADDRESS "-fsanitize=address -fsanitize=leak")
set(CMAKE_SHARED_LINKER_FLAGS_SANITIZEADDRESS "-fsanitize=address -fsanitize=leak")

# BUILD_TYPE: SanitizeThread
set(CMAKE_CXX_FLAGS_SANITIZETHREAD "-fsanitize=thread -g")
set(CMAKE_EXE_LINKER_FLAGS_SANITIZETHREAD "-fsanitize=thread")
set(CMAKE_SHARED_LINKER_FLAGS_SANITIZETHREAD "-fsanitize=thread")
endif()

# CLang options ================================
Expand Down
9 changes: 4 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,12 @@
Mobile Robot Programming Toolkit (MRPT) provides C++ libraries aimed at researchers
in mobile robotics and computer vision. Libraries include [SLAM solutions](https://www.mrpt.org/List_of_SLAM_algorithms), [2D and 3D spatial transformations](https://www.mrpt.org/tutorials/programming/maths-and-geometry/2d_3d_geometry/), [SE(2)/SE(3) Lie groups](https://ingmec.ual.es/~jlblanco/papers/jlblanco2010geometry3D_techrep.pdf),
[probability density functions (pdfs)](https://docs.mrpt.org/reference/latest/class_mrpt_math_CProbabilityDensityFunction.html) over points, landmarks, poses and maps,
Bayesian inference ([Kalman filters](https://www.mrpt.org/Kalman_Filters), [particle filters](https://www.mrpt.org/tutorials/programming/statistics-and-bayes-filtering/particle_filters/)), [image processing](https://www.mrpt.org/tutorials/programming/images-image-processing-camera-models/), [obstacle avoidance](https://www.mrpt.org/Obstacle_avoidance), [etc](https://reference.mrpt.org/devel/modules.html).
MRPT also provides GUI apps for [Stereo camera calibration](https://www.mrpt.org/list-of-mrpt-apps/application-kinect-stereo-calib/), [dataset inspection](https://www.mrpt.org/list-of-mrpt-apps/rawlogviewer/),
and [much more](https://www.mrpt.org/list-of-mrpt-apps/).
Bayesian inference ([Kalman filters](https://www.mrpt.org/Kalman_Filters), [particle filters](https://www.mrpt.org/tutorials/programming/statistics-and-bayes-filtering/particle_filters/)), [image processing](https://www.mrpt.org/tutorials/programming/images-image-processing-camera-models/), [obstacle avoidance](https://www.mrpt.org/Obstacle_avoidance), [etc](https://docs.mrpt.org/reference/latest/modules.html).
MRPT also provides GUI apps for [camera calibration](https://docs.mrpt.org/reference/latest/app_camera-calib.html), [dataset inspection](https://docs.mrpt.org/reference/latest/app_RawLogViewer.html),
and [much more](https://docs.mrpt.org/reference/latest/applications.html).

## 2. Resources
* Download the latest unstable code with: `git clone https://github.com/MRPT/mrpt.git --depth 1`
* Download the latest unstable code with: `git clone https://github.com/MRPT/mrpt.git --recursive`
* Ask questions at: [this Google group](https://www.mrpt.org/forum/) or at [stackoverflow](https://stackoverflow.com/search?q=mrpt) (please, use the tag `mrpt`!)
* [Main project website](https://www.mrpt.org/), including [sources and Windows installer downloads](https://www.mrpt.org/download-mrpt/)
* [C++ API reference](https://docs.mrpt.org/reference/)
Expand Down Expand Up @@ -79,7 +79,6 @@ sudo apt install ros-$ROS_DISTRO-mrpt2
| ROS1 Melodic @ u18.04 | [![Build Status](https://build.ros.org/job/Mdev__mrpt2__ubuntu_bionic_amd64/badge/icon)](https://build.ros.org/job/Mdev__mrpt2__ubuntu_bionic_amd64/) | [![Version](https://img.shields.io/ros/v/melodic/mrpt2)](https://index.ros.org/search/?term=mrpt2) | [![Build Status](https://build.ros.org/job/Mbin_uB64__mrpt2__ubuntu_bionic_amd64__binary/badge/icon)](https://build.ros.org/job/Mbin_uB64__mrpt2__ubuntu_bionic_amd64__binary/) |
| ROS1 Noetic @ u20.04 | [![Build Status](https://build.ros.org/job/Ndev__mrpt2__ubuntu_focal_amd64/badge/icon)](https://build.ros.org/job/Ndev__mrpt2__ubuntu_focal_amd64/) | [![Version](https://img.shields.io/ros/v/noetic/mrpt2)](https://index.ros.org/search/?term=mrpt2) | [![Build Status](https://build.ros.org/job/Nbin_uF64__mrpt2__ubuntu_focal_amd64__binary/badge/icon)](https://build.ros.org/job/Nbin_uF64__mrpt2__ubuntu_focal_amd64__binary/) |
| ROS2 Foxy @ u20.04 | [![Build Status](https://build.ros2.org/job/Fdev__mrpt2__ubuntu_focal_amd64/badge/icon)](https://build.ros2.org/job/Fdev__mrpt2__ubuntu_focal_amd64/) | [![Version](https://img.shields.io/ros/v/foxy/mrpt2)](https://index.ros.org/search/?term=mrpt2) | [![Build Status](https://build.ros2.org/job/Fbin_uF64__mrpt2__ubuntu_focal_amd64__binary/badge/icon)](https://build.ros2.org/job/Fbin_uF64__mrpt2__ubuntu_focal_amd64__binary/) |
| ROS2 Galactic @ u20.04 | [![Build Status](https://build.ros2.org/job/Gdev__mrpt2__ubuntu_focal_amd64/badge/icon)](https://build.ros2.org/job/Gdev__mrpt2__ubuntu_focal_amd64/) | [![Version](https://img.shields.io/ros/v/galactic/mrpt2)](https://index.ros.org/search/?term=mrpt2) | [![Build Status](https://build.ros2.org/job/Gbin_uF64__mrpt2__ubuntu_focal_amd64__binary/badge/icon)](https://build.ros2.org/job/Gbin_uF64__mrpt2__ubuntu_focal_amd64__binary/) |
| ROS2 Humble @ u22.04 | [![Build Status](https://build.ros2.org/job/Hdev__mrpt2__ubuntu_jammy_amd64/badge/icon)](https://build.ros2.org/job/Hdev__mrpt2__ubuntu_jammy_amd64/) | [![Version](https://img.shields.io/ros/v/humble/mrpt2)](https://index.ros.org/search/?term=mrpt2) | [![Build Status](https://build.ros2.org/job/Hbin_uJ64__mrpt2__ubuntu_jammy_amd64__binary/badge/icon)](https://build.ros2.org/job/Hbin_uJ64__mrpt2__ubuntu_jammy_amd64__binary/) |
| ROS2 Rolling @ u22.04 | [![Build Status](https://build.ros2.org/job/Rdev__mrpt2__ubuntu_jammy_amd64/badge/icon)](https://build.ros2.org/job/Rdev__mrpt2__ubuntu_jammy_amd64/) | [![Version](https://img.shields.io/ros/v/rolling/mrpt2)](https://index.ros.org/search/?term=mrpt2) | [![Build Status](https://build.ros2.org/job/Rbin_uJ64__mrpt2__ubuntu_jammy_amd64__binary/badge/icon)](https://build.ros2.org/job/Rbin_uJ64__mrpt2__ubuntu_jammy_amd64__binary/) |

Expand Down
5 changes: 0 additions & 5 deletions apps/DifOdometry-Camera/DifOdometry_Camera_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,9 +191,4 @@ int main(int num_arg, char* argv[])
<< std::endl;
return -1;
}
catch (...)
{
printf("Untyped exception!!");
return -1;
}
}
5 changes: 0 additions & 5 deletions apps/DifOdometry-Datasets/DifOdometry_Datasets_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -205,9 +205,4 @@ int main(int num_arg, char* argv[])
<< std::endl;
return -1;
}
catch (...)
{
printf("Untyped exception!!");
return -1;
}
}
5 changes: 0 additions & 5 deletions apps/ReactiveNav3D-Demo/ReactiveNav3D_demo_main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,4 @@ int main(int num_arg, char* argv[])
<< std::endl;
return -1;
}
catch (...)
{
printf("Untyped exception!!");
return -1;
}
}
2 changes: 0 additions & 2 deletions apps/ReactiveNavigationDemo/reactive_navigator_demoMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1043,8 +1043,6 @@ reactive_navigator_demoframe::reactive_navigator_demoframe(
gl_nd_gaps->setColor_u8(TColor(255, 0, 0));
openGLSceneRef->insert(gl_nd_gaps);

m_plotLocalView->setClearColors(0.9f, 0.9f, 0.9f);

// Set camera:
m_plotLocalView->setCameraPointing(0.0f, 0.0f, 0.0f);
m_plotLocalView->setZoomDistance(2.2f);
Expand Down
28 changes: 15 additions & 13 deletions apps/SceneViewer3D/_DSceneViewerMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1012,10 +1012,12 @@ void _DSceneViewerFrame::OnMenuBackColor(wxCommandEvent& event)
{
wxColourData colourData;
wxColour color;
color.Set(
(int)(255 * m_canvas->getClearColorR()),
(int)(255 * m_canvas->getClearColorG()),
(int)(255 * m_canvas->getClearColorB()));

auto bkCol = m_canvas->getOpenGLSceneRef()
->getViewport()
->getCustomBackgroundColor();

color.Set((int)(255 * bkCol.R), (int)(255 * bkCol.G), (int)(255 * bkCol.B));

colourData.SetColour(color);
colourData.SetChooseFull(true);
Expand All @@ -1025,8 +1027,9 @@ void _DSceneViewerFrame::OnMenuBackColor(wxCommandEvent& event)
if (wxID_OK == colDial.ShowModal())
{
wxColour col = colDial.GetColourData().GetColour();
m_canvas->setClearColors(
col.Red() / 255.0f, col.Green() / 255.0f, col.Blue() / 255.0f);

m_canvas->getOpenGLSceneRef()->getViewport()->setCustomBackgroundColor(
{col.Red() / 255.0f, col.Green() / 255.0f, col.Blue() / 255.0f});

int w, h;
m_canvas->GetSize(&w, &h);
Expand Down Expand Up @@ -1874,14 +1877,13 @@ void _DSceneViewerFrame::OnMenuItemHighResRender(wxCommandEvent& event)
std::string sH = std::string(ssH.mb_str());
const long height = atoi(sH.c_str());

CFBORender render(width, height, true /* skip Glut extra window */);
CImage frame(width, height, CH_RGB);
CFBORender::Parameters params;
params.width = width;
params.height = height;
params.create_EGL_context = false; // dont, will reuse existing one

m_canvas->getOpenGLSceneRef()
->getViewport()
->setCustomBackgroundColor(
{m_canvas->getClearColorR(), m_canvas->getClearColorG(),
m_canvas->getClearColorB(), 1.0});
CFBORender render(params);
CImage frame(width, height, CH_RGB);

// render the scene
render.render_RGB(*m_canvas->getOpenGLSceneRef(), frame);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -523,8 +523,6 @@ holonomic_navigator_demoFrame::holonomic_navigator_demoFrame(
gl_nd_gaps->setColor_u8(TColor(204, 102, 51));
openGLScanRef->insert(gl_nd_gaps);

m_plotScan->setClearColors(0.9f, 0.9f, 0.9f);

// Set camera:
m_plotScan->setCameraPointing(0.0f, 0.0f, 0.0f);
m_plotScan->setZoomDistance(2.2f);
Expand Down
4 changes: 2 additions & 2 deletions apps/robot-map-gui/gui/glWidget/CGLWidget.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ CGlWidget::CGlWidget(bool is2D, QWidget* parent)
m_pressedPos(0, 0),
m_lastPos(0, 0)
{
setClearColors(1.0, 1.0, 1.0);
// setClearColors(1.0, 1.0, 1.0);
setMinimumZoom(1.0f);
setMaximumZoom(3200.0f);

Expand Down Expand Up @@ -264,7 +264,7 @@ void CGlWidget::setElevationDegrees(float ang)

void CGlWidget::setBackgroundColor(float r, float g, float b, float a)
{
setClearColors(r, g, b, a);
// setClearColors(r, g, b, a);

update();
}
Expand Down
2 changes: 1 addition & 1 deletion appveyor.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# version format
version: 2.5.5-{branch}-build{build}
version: 2.5.6-{branch}-build{build}

os: Visual Studio 2019

Expand Down
3 changes: 3 additions & 0 deletions cmakemodules/script_detect_functions_headers.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ include(CheckFunctionExists)
include(CheckIncludeFile)
include(CheckIncludeFiles)
include(CheckTypeSize)
include(CheckSymbolExists)


set(CMAKE_REQUIRED_INCLUDES "math.h")
Expand All @@ -29,6 +30,8 @@ CHECK_INCLUDE_FILE("sys/time.h" HAVE_SYS_TIME_H)
CHECK_INCLUDE_FILE("pthread.h" HAVE_PTHREAD_H)
CHECK_INCLUDE_FILE("unistd.h" HAVE_UNISTD_H)

check_symbol_exists(localtime_r "time.h" HAVE_LOCALTIME_R)

if(HAVE_ALLOCA_FUNC OR HAVE_ALLOCA_H)
set(HAVE_ALLOCA 1)
endif()
Expand Down
5 changes: 5 additions & 0 deletions cmakemodules/script_gl_glut.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,11 @@ if(OpenGL_FOUND)
list(APPEND MRPT_OPENGL_LIBS imp_opengl)
endif()

# Fix for latest libglut-dev packages on debian/unstable (Dec 2022)
if (NOT GLUT_glut_LIBRARY AND GLUT_LIBRARIES)
set(GLUT_glut_LIBRARY ${GLUT_LIBRARIES})
endif()

if(UNIX AND GLUT_FOUND AND OpenGL_FOUND AND OPENGL_glu_LIBRARY AND GLUT_glut_LIBRARY)
set(CMAKE_MRPT_HAS_OPENGL_GLUT 1)
set(CMAKE_MRPT_HAS_OPENGL_GLUT_SYSTEM 1)
Expand Down
5 changes: 4 additions & 1 deletion cmakemodules/script_show_final_summary.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,10 @@ if(NOT CMAKE_GENERATOR MATCHES "Xcode|Visual Studio")
message(STATUS " Configuration : " ${CMAKE_BUILD_TYPE})
endif()

message(STATUS " C++ flags : ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
message(STATUS " C++ flags (active config.) : ${CMAKE_CXX_FLAGS} ${CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}}")
message(STATUS " EXE link flags (active) : ${CMAKE_EXE_LINKER_FLAGS} ${CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE}}")
message(STATUS " Shared link flags (active) : ${CMAKE_SHARED_LINKER} ${CMAKE_SHARED_LINKER_FLAGS_${CMAKE_BUILD_TYPE}}")

message(STATUS " clang-tidy checks : ${CLANG_TIDY_CHECKS}")

message(STATUS "")
Expand Down
6 changes: 1 addition & 5 deletions doc/mrpt-openni2-examples/openni2_to_rawlog/test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -351,11 +351,7 @@ int main(int argc, char** argv)
std::cout << "MRPT exception caught: " << e.what() << std::endl;
return -1;
}
catch (...)
{
printf("Untyped exception!!");
return -1;
}

}

bool setONI2StreamMode(
Expand Down
15 changes: 6 additions & 9 deletions doc/source/compiling.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,10 @@ binaries for your system or install via ``apt`` in Ubuntu.

Minimum compiler requisites:

- gcc-7 or newer. Only for Ubuntu 16.04LTS Xenial, you will have to
follow `these instructions <https://gist.github.com/jlblancoc/99521194aba975286c80f93e47966dc5>`_ for
installing gcc-7 in this version of Ubuntu.

- clang-4 or newer.
- A modern C++17 compiler: gcc (>=7) or clang (>=4).
- Windows: Visual Studio 2017 version 15.3 or newer.
- cmake >= 3.3 required (>=3.4 for Windows).
- Eigen >= 3.3 required.
- cmake (>=3.8)
- Eigen (>=3.3) required.
- Other libraries: See :ref:`doxid-dependencies`
- On SIMD optimizations, read: :ref:`doxid-simd`

Expand All @@ -34,15 +30,16 @@ Minimum compiler requisites:
**Minimum recommended** requisites:

.. code-block:: bash
# All Ubuntu versions:
sudo apt install build-essential pkg-config cmake \
libopencv-dev libeigen3-dev zlib1g-dev \
libsuitesparse-dev libjpeg-dev
# plus, only for Ubuntu < 22.04:
# plus, only for Ubuntu < 22.10:
sudo apt install libwxgtk3.0-gtk3-dev
# plus, only for Ubuntu >= 22.04:
# plus, only for Ubuntu >= 22.10:
sudo apt install libwxgtk3.2-dev
**Recommended additional** packages to enable most MRPT features:
Expand Down
25 changes: 25 additions & 0 deletions doc/source/doxygen-docs/changelog.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,30 @@
\page changelog Change Log

# Version 2.5.6: Released November 12th, 2022
- Changes in libraries:
- \ref mrpt_containers_grp
- New template class mrpt::containers::PerThreadDataHolder
- \ref mrpt_opengl_grp
- The rendering pipeline (mrpt::opengl::enqueueForRendering) is now more optimized to cull earlier, achieving faster rendering of large and complex 3D scenes.
- All opengl shaders, objects, and renderers are now multithread capable, including rendering several FBOs in different threads.
- mrpt::opengl::CFBORender constructor now takes a parameters struct making it much more configurable.
- mrpt::opengl::CAssimpModel now supports (de)serializing, storing itself in the Assimp binary format (`assbin`).
- New opengl shaders: one set for light-enabled objects and another for objects without diffuse reflection effects (to avoid conditionals inside the GPU shader programs).
- \ref mrpt_gui_grp
- mrpt::gui OpenGL canvas windows and components no longer have a background color property. It is now always handled by the mrpt::opengl::COpenGLViewport to avoid duplicated functionalities.
- \ref mrpt_system_grp
- These functions are now thread-safe if built in a system with the `localtime_r()` variant of `localtime()`:
- mrpt::system::timestampToParts()
- mrpt::system::dateTimeLocalToString()
- mrpt::system::timeLocalToString()
- Build system:
- Provide CMAKE_BUILD_TYPES `SanitizeThread` and `SanitizeAddress`.
- Fix build against latest (Debian/sid) libglut-dev.
- BUG FIXES:
- Fix build against latest version of EMSDK (Emscripten).
- Fix wrong scaling of samples in mrpt::random::CRandomGenerator::drawGaussianMultivariate() and mrpt::random::CRandomGenerator::drawGaussianMultivariateMany()
- mrpt::opengl::CSetOfTexturedTriangles was not automatically registered in the mrpt::rtti system

# Version 2.5.5: Released October 19th, 2022
- Changes in applications:
- prg-configurator:
Expand Down
12 changes: 6 additions & 6 deletions doc/source/doxygen-docs/lib_mrpt_math_lwgeom.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@

Lightweight SE(2)/SE(3) data types, geometry functions, etc.

The "lightweight" name comes from the fact that these classes are simple
structures without special memory alignment requirements and do not have a deep
hiearchy of class heritance.

This is in contrast to classes derived from mrpt::poses::CPoseOrPoint, which in
turn offer:
The "lightweight" adjective is used here in contrast to classes derived
from mrpt::poses::CPoseOrPoint.
The "lightweight" alternative types here, defined in mrpt::math, are simple
C++ structures without special memory alignment requirements and without
a deep hiearchy of class inheritance, as the "heavier" classes in mrpt::poses have.
In turn, the latter ones offer:
- Serialization (see: \ref mrpt_serialization_grp)
- Buffered trigronometric calculations (e.g. mrpt::poses::CPose3D), hence they
will be preferred to lightweight alternaives (e.g. mrpt::math::TPose3D) if the
Expand Down
2 changes: 1 addition & 1 deletion doc/source/doxygen-docs/porting_mrpt2.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ working as usual after updating to MRPT 2.*:
- `<mrpt/math/TPoint2D.h>`
- (and so on)

- **Smart pointers** are now standard [`std::shared_ptr<>`](http://en.cppreference.com/w/cpp/memory/shared_ptr) instead of those based on `stlplus`. Required changes:
- **Smart pointers** are now standard [std::shared_ptr<>](http://en.cppreference.com/w/cpp/memory/shared_ptr) instead of those based on `stlplus`. Required changes:
- `ptr.clear()` --> `ptr.reset()`. Also, notice that the former `stlplus` semantics of `clear()` deleting **all** copies
of the object, as hold by different smart pointers, is no longer maintained. There is no longer such a possibility, since the
C++11 standard does not allow it to happen (and it makes sense in this way).
Expand Down
4 changes: 2 additions & 2 deletions doc/source/doxygen-docs/tutorial_math_levenberg_marquardt.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,10 @@ the change in the parameter vector is very small.
# 4. C++ Implementation

The LM algorithm is implemented in the C++ template class
[`mrpt::math::CLevenbergMarquardtTempl<T>`](class_mrpt_math_CLevenbergMarquardtTempl.html),
[mrpt::math::CLevenbergMarquardtTempl<T>](class_mrpt_math_CLevenbergMarquardtTempl.html),
and there is an example in MRPT/samples/optimize-lm, which is described next.

The type [`mrpt::math::CLevenbergMarquard`](namespace_mrpt_math.html#doxid-namespacemrpt-1-1math-1ae54dd61d03206aef14cfbea53165d239)
The type [mrpt::math::CLevenbergMarquard](namespace_mrpt_math.html#doxid-namespacemrpt-1-1math-1ae54dd61d03206aef14cfbea53165d239)
is actually a shortcut for the template instantiation `mrpt::math::CLevenbergMarquardtTempl<double>`.

The image below represents the resulting path from the initial guess to the minimum for this example.
Expand Down
Binary file modified doc/source/images/random_examples_screenshot.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading

0 comments on commit b989c96

Please sign in to comment.