From 73ea27f5326ba920a5eeada6b2b4925d14abcb51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Tue, 1 Dec 2020 21:13:43 +0000 Subject: [PATCH 01/83] Merge branch 'fix/grid_map_rviz_plugin_segfault_on_melodic' into 'master' [grid_map] Fix grid map rviz plugin segfault on melodic GitOrigin-RevId: 9d390dbfafe44bcf1674d43be58af5e4dda89955 --- grid_map_rviz_plugin/CMakeLists.txt | 5 +- .../grid_map_rviz_plugin/GridMapDisplay.hpp | 2 +- .../modified/message_filter_display.h | 133 ++++++------------ grid_map_rviz_plugin/package.xml | 2 +- 4 files changed, 44 insertions(+), 98 deletions(-) diff --git a/grid_map_rviz_plugin/CMakeLists.txt b/grid_map_rviz_plugin/CMakeLists.txt index b42d21ba5..e85e3c7dc 100644 --- a/grid_map_rviz_plugin/CMakeLists.txt +++ b/grid_map_rviz_plugin/CMakeLists.txt @@ -36,9 +36,8 @@ set(CMAKE_AUTOMOC ON) set(INCLUDE_FILES_QT include/grid_map_rviz_plugin/GridMapDisplay.hpp -) -set(INCLUDE_FILES - include/grid_map_rviz_plugin/GridMapVisual.hpp + include/grid_map_rviz_plugin/modified/message_filter_display.h + include/grid_map_rviz_plugin/modified/frame_manager.h ) ## This plugin includes Qt widgets, so we must include Qt. diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp index 4375cd4af..48aa6aa00 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp @@ -32,7 +32,7 @@ class EditableEnumProperty; namespace grid_map_rviz_plugin { class GridMapVisual; -class GridMapDisplay : public rviz::MessageFilterDisplay +class GridMapDisplay : public MessageFilterDisplay { Q_OBJECT public: diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h index f3bc1cfa4..cd902e1ac 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h @@ -26,8 +26,7 @@ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. */ -#ifndef MESSAGE_FILTER_DISPLAY_H -#define MESSAGE_FILTER_DISPLAY_H +#pragma once #ifndef Q_MOC_RUN #include @@ -37,43 +36,29 @@ // The following replaces #include "grid_map_rviz_plugin/modified/frame_manager.h" #include -#include #include #include #include -namespace rviz -{ +namespace grid_map_rviz_plugin { /** @brief Helper superclass for MessageFilterDisplay, needed because * Qt's moc and c++ templates don't work nicely together. Not * intended to be used directly. */ -class RVIZ_EXPORT _RosTopicDisplay : public Display -{ - Q_OBJECT -public: - _RosTopicDisplay() - { - topic_property_ = new RosTopicProperty("Topic", "", "", "", this, SLOT(updateTopic())); - unreliable_property_ = - new BoolProperty("Unreliable", false, "Prefer UDP topic transport", this, SLOT(updateTopic())); - queue_size_property_ = - new IntProperty("Queue Size", 1, - "Size of TF message filter queue.\n" - "Increasing this is useful if your TF data is delayed significantly " - "w.r.t. your data, but it can greatly increase memory usage as well.", - this, SLOT(updateQueueSize())); - queue_size_property_->setMin(0); +class _RosTopicDisplay : public rviz::Display { + Q_OBJECT + public: + _RosTopicDisplay() { + topic_property_ = new rviz::RosTopicProperty("Topic", "", "", "", this, SLOT(updateTopic())); + unreliable_property_ = new rviz::BoolProperty("Unreliable", false, "Prefer UDP topic transport", this, SLOT(updateTopic())); } -protected Q_SLOTS: + protected Q_SLOTS: virtual void updateTopic() = 0; - virtual void updateQueueSize() = 0; -protected: - RosTopicProperty* topic_property_; - BoolProperty* unreliable_property_; - IntProperty* queue_size_property_; + protected: + rviz::RosTopicProperty* topic_property_; + rviz::BoolProperty* unreliable_property_; }; /** @brief Display subclass using a tf2_ros::MessageFilter, templated on the ROS message type. @@ -83,114 +68,79 @@ protected Q_SLOTS: * it handles subscribing and unsubscribing when the display is * enabled or disabled. It also has an Ogre::SceneNode which */ template -class MessageFilterDisplay : public _RosTopicDisplay -{ +class MessageFilterDisplay : public _RosTopicDisplay { // No Q_OBJECT macro here, moc does not support Q_OBJECT in a templated class. -public: + public: /** @brief Convenience typedef so subclasses don't have to use * the long templated class name to refer to their super class. */ typedef MessageFilterDisplay MFDClass; - MessageFilterDisplay() : tf_filter_(nullptr), messages_received_(0) - { + MessageFilterDisplay() : tf_filter_(nullptr), messages_received_(0) { QString message_type = QString::fromStdString(ros::message_traits::datatype()); topic_property_->setMessageType(message_type); topic_property_->setDescription(message_type + " topic to subscribe to."); } - void onInitialize() override - { - tf_filter_ = - new tf2_ros::MessageFilter(*context_->getTF2BufferPtr(), fixed_frame_.toStdString(), - static_cast(queue_size_property_->getInt()), - update_nh_); + void onInitialize() override { + tf_filter_ = new tf2_ros::MessageFilter(*context_->getTF2BufferPtr(), fixed_frame_.toStdString(), 1u, update_nh_); tf_filter_->connectInput(sub_); - tf_filter_->registerCallback( - boost::bind(&MessageFilterDisplay::incomingMessage, this, _1)); + tf_filter_->registerCallback(boost::bind(&MessageFilterDisplay::incomingMessage, this, _1)); context_->getFrameManager()->registerFilterForTransformStatusCheck(tf_filter_, this); } - ~MessageFilterDisplay() override - { + ~MessageFilterDisplay() override { MessageFilterDisplay::unsubscribe(); MessageFilterDisplay::reset(); delete tf_filter_; } - void reset() override - { + void reset() override { Display::reset(); tf_filter_->clear(); // Quick fix for #1372. Can be removed if https://github.com/ros/geometry2/pull/402 is released - if (tf_filter_) - update_nh_.getCallbackQueue()->removeByID((uint64_t)tf_filter_); + if (tf_filter_) update_nh_.getCallbackQueue()->removeByID((uint64_t)tf_filter_); messages_received_ = 0; } - void setTopic(const QString& topic, const QString& /*datatype*/) override - { - topic_property_->setString(topic); - } + void setTopic(const QString& topic, const QString& /*datatype*/) override { topic_property_->setString(topic); } -protected: - void updateTopic() override - { + protected: + void updateTopic() override { unsubscribe(); reset(); subscribe(); context_->queueRender(); } - void updateQueueSize() override - { - tf_filter_->setQueueSize(static_cast(queue_size_property_->getInt())); - subscribe(); - } - - virtual void subscribe() - { - if (!isEnabled()) - { + virtual void subscribe() { + if (!isEnabled()) { return; } - try - { + try { ros::TransportHints transport_hint = ros::TransportHints().reliable(); // Determine UDP vs TCP transport for user selection. - if (unreliable_property_->getBool()) - { + if (unreliable_property_->getBool()) { transport_hint = ros::TransportHints().unreliable(); } - sub_.subscribe(update_nh_, topic_property_->getTopicStd(), - static_cast(queue_size_property_->getInt()), transport_hint); - setStatus(StatusProperty::Ok, "Topic", "OK"); - } - catch (ros::Exception& e) - { - setStatus(StatusProperty::Error, "Topic", QString("Error subscribing: ") + e.what()); + sub_.subscribe(update_nh_, topic_property_->getTopicStd(), 1u, transport_hint); + setStatus(rviz::StatusProperty::Ok, "Topic", "OK"); + } catch (ros::Exception& e) { + setStatus(rviz::StatusProperty::Error, "Topic", QString("Error subscribing: ") + e.what()); } } - virtual void unsubscribe() - { - sub_.unsubscribe(); - } + virtual void unsubscribe() { sub_.unsubscribe(); } - void onEnable() override - { - subscribe(); - } + void onEnable() override { subscribe(); } - void onDisable() override - { + void onDisable() override { unsubscribe(); reset(); } - void fixedFrameChanged() override - { + void fixedFrameChanged() override { tf_filter_->setTargetFrame(fixed_frame_.toStdString()); reset(); } @@ -198,15 +148,13 @@ class MessageFilterDisplay : public _RosTopicDisplay /** @brief Incoming message callback. Checks if the message pointer * is valid, increments messages_received_, then calls * processMessage(). */ - void incomingMessage(const typename MessageType::ConstPtr& msg) - { - if (!msg) - { + void incomingMessage(const typename MessageType::ConstPtr& msg) { + if (!msg) { return; } ++messages_received_; - setStatus(StatusProperty::Ok, "Topic", QString::number(messages_received_) + " messages received"); + setStatus(rviz::StatusProperty::Ok, "Topic", QString::number(messages_received_) + " messages received"); processMessage(msg); } @@ -221,6 +169,5 @@ class MessageFilterDisplay : public _RosTopicDisplay uint32_t messages_received_; }; -} // end namespace rviz +} // end namespace grid_map_rviz_plugin -#endif // MESSAGE_FILTER_DISPLAY_H diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 0edfec04f..7db8776d8 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.2 + 1.6.3 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava From 27e651b7466fbb8c06cf551aa345084e80b32fb8 Mon Sep 17 00:00:00 2001 From: Yoshua Nava Date: Thu, 3 Dec 2020 19:41:07 +0000 Subject: [PATCH 02/83] Merge branch 'feature/_extend_grid_map_threshold_filter' into 'master' [grid_map] Extend ThresholdFilter to filter one layer based on the value of another layer. GitOrigin-RevId: 3208d25ee0713b8cf9e2ac1fd8ca418b8ca20142 --- README.md | 5 +- grid_map_filters/CHANGELOG.rst | 7 ++ grid_map_filters/CMakeLists.txt | 1 + .../grid_map_filters/ThresholdFilter.hpp | 5 +- grid_map_filters/package.xml | 2 +- grid_map_filters/src/ThresholdFilter.cpp | 37 ++++++-- .../test/threshold_filter_test.cpp | 95 +++++++++++++++++++ 7 files changed, 139 insertions(+), 13 deletions(-) create mode 100644 grid_map_filters/test/threshold_filter_test.cpp diff --git a/README.md b/README.md index 839c3bd6a..90d4f9f10 100644 --- a/README.md +++ b/README.md @@ -376,12 +376,13 @@ Several basic filters are provided in the *grid_map_filters* package: * **`gridMapFilters/ThresholdFilter`** - Set values below/above a threshold to a specified value. + Set values in the output layer to a specified value _if_ the condition_layer is exceeding either the upper or lower threshold (only one threshold at a time). name: lower_threshold type: gridMapFilters/ThresholdFilter params: - layer: layer_name + condition_layer: layer_name + output_layer: layer_name lower_threshold: 0.0 # alternative: upper_threshold set_to: 0.0 # # Other uses: .nan, .inf diff --git a/grid_map_filters/CHANGELOG.rst b/grid_map_filters/CHANGELOG.rst index 32e70199e..85c864225 100644 --- a/grid_map_filters/CHANGELOG.rst +++ b/grid_map_filters/CHANGELOG.rst @@ -2,6 +2,13 @@ Changelog for package grid_map_filters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-11-27) +------------------ +* Extended the ThresholdFilter: +* - The layer parameter was replaced by condition_layer and output_layer. +* - The previous behavior can be restored by setting both new parameters to the same value. +* Contributors: Magnus Gärtner + 1.6.3 (2020-09-08) ------------------ * Implemented a new filter: diff --git a/grid_map_filters/CMakeLists.txt b/grid_map_filters/CMakeLists.txt index b18882ec3..002d11213 100644 --- a/grid_map_filters/CMakeLists.txt +++ b/grid_map_filters/CMakeLists.txt @@ -131,6 +131,7 @@ if (CATKIN_ENABLE_TESTING) catkin_add_gtest(${PROJECT_NAME}-test test/test_grid_map_filters.cpp test/median_fill_filter_test.cpp + test/threshold_filter_test.cpp ) target_include_directories(${PROJECT_NAME}-test PRIVATE include diff --git a/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp b/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp index 85861f08c..4a1cb053b 100644 --- a/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp @@ -49,8 +49,11 @@ class ThresholdFilter : public filters::FilterBase private: + //! Layer the threshold will be evaluated. + std::string conditionLayer_; + //! Layer the threshold should be applied to. - std::string layer_; + std::string outputLayer_; //! Lower Threshold double lowerThreshold_; diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 82941cf68..6cfa4782e 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.3 + 1.6.4 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/src/ThresholdFilter.cpp b/grid_map_filters/src/ThresholdFilter.cpp index 91f01a844..9a78d1d47 100644 --- a/grid_map_filters/src/ThresholdFilter.cpp +++ b/grid_map_filters/src/ThresholdFilter.cpp @@ -63,8 +63,13 @@ bool ThresholdFilter::configure() return false; } - if (!FilterBase::getParam(std::string("layer"), layer_)) { - ROS_ERROR("ThresholdFilter did not find parameter 'layer'."); + if (!FilterBase::getParam(std::string("condition_layer"), conditionLayer_)) { + ROS_ERROR("ThresholdFilter did not find parameter 'condition_layer'."); + return false; + } + + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { + ROS_ERROR("ThresholdFilter did not find parameter 'ouput_layer'."); return false; } @@ -77,19 +82,30 @@ bool ThresholdFilter::update(const T& mapIn, T& mapOut) mapOut = mapIn; // Check if layer exists. - if (!mapOut.exists(layer_)) { - ROS_ERROR("Check your threshold types! Type %s does not exist", layer_.c_str()); + if (!mapOut.exists(conditionLayer_)) { + ROS_ERROR("Check your condition_layer! Layer %s does not exist", conditionLayer_.c_str()); + return false; + } + + if (!mapOut.exists(outputLayer_)) { + ROS_ERROR("Check your output_layer! Layer %s does not exist", outputLayer_.c_str()); return false; } // For each cell in map. - auto& data = mapOut[layer_]; + const auto& condition = mapOut[conditionLayer_]; + auto& data = mapOut[outputLayer_]; for (grid_map::GridMapIterator iterator(mapOut); !iterator.isPastEnd(); ++iterator) { - if (!mapOut.isValid(*iterator, layer_)) continue; const size_t i = iterator.getLinearIndex(); - float& value = data(i); - if (useLowerThreshold_) if (value < lowerThreshold_) value = setTo_; - if (useUpperThreshold_) if (value > upperThreshold_) value = setTo_; + const float& conditionValue = condition(i); + float& outputValue = data(i); + // If the condition_value is nan, the output will also be set to the setTo value (NaN comparisons evaluate to false). + if (useLowerThreshold_ && !(conditionValue >= lowerThreshold_)) { + outputValue = setTo_; + } + if (useUpperThreshold_ && !(conditionValue <= upperThreshold_)) { + outputValue = setTo_; + } } return true; @@ -97,4 +113,7 @@ bool ThresholdFilter::update(const T& mapIn, T& mapOut) } /* namespace */ +// Explicitly define the specialization for GridMap to have the filter implementation available for testing. +template class grid_map::ThresholdFilter; +// Export the filter. PLUGINLIB_EXPORT_CLASS(grid_map::ThresholdFilter, filters::FilterBase) diff --git a/grid_map_filters/test/threshold_filter_test.cpp b/grid_map_filters/test/threshold_filter_test.cpp new file mode 100644 index 000000000..20087c3f9 --- /dev/null +++ b/grid_map_filters/test/threshold_filter_test.cpp @@ -0,0 +1,95 @@ +#include +#include + +#include +#include + +#include "grid_map_filters/ThresholdFilter.hpp" + +#include + +using namespace grid_map; +using namespace ::testing; + +using BASE = filters::FilterBase; +using ThresholdFilterT = ThresholdFilter; + +#define ASSERT_MATRICES_EQ_WITH_NAN(first, second) assertMatrixesEqualWithNan((first), #first, (second), #second, __LINE__) +static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, Eigen::Ref second, std::string secondName, int line){ + ASSERT_EQ(first.rows(), second.rows()); + ASSERT_EQ(first.cols(), second.cols()); + + bool matricesAreEqual = true; + for(size_t row = 0; row < first.rows() && matricesAreEqual; ++row){ + for(size_t col = 0; col < first.cols() && matricesAreEqual; ++col){ + bool ifRealThenValid = first.block<1, 1>(row, col).isApprox(second.block<1, 1>(row, col)); + bool bothNaN = std::isnan(first(row, col)) && std::isnan(second(row, col)); + if(ifRealThenValid || bothNaN){ + continue; + }else{ + matricesAreEqual = false; + } + } + } + + Eigen::IOFormat compactFormat(2, 0, ",", "\n", "[", "]"); + ASSERT_TRUE(matricesAreEqual) // NO LINT + << "L. " << std::to_string(line) << ": Matrices are not equal" // NO LINT + << "\n"<().setConstant(0.06); + conditionLayer.topLeftCorner<3, 3>().setConstant(NAN); + + // Initialize the output layer with ones. + Matrix& outputLayer = filterInput["standard_deviation_filtered"]; + outputLayer.setConstant(1.0); + + // Setup the expected output, eg all values unchanged except the two corners set to nan. + Matrix outputLayerExpected{outputLayer.rows(), outputLayer.cols()}; + outputLayerExpected.setConstant(1.0f); + outputLayerExpected.topLeftCorner<3, 3>().setConstant(NAN); + outputLayerExpected.bottomRightCorner<5, 5>().setConstant(NAN); + + // Run the filter. + GridMap filterOutput; + thresholdFilter.update(filterInput, filterOutput); + + // Check the layers existent in the output and the expected outputs of them. + ASSERT_THAT(filterOutput.getLayers(), ElementsAre(StrEq("standard_deviation"), StrEq("standard_deviation_filtered"))); + ASSERT_MATRICES_EQ_WITH_NAN(conditionLayer, filterOutput["standard_deviation"]); + ASSERT_MATRICES_EQ_WITH_NAN(filterOutput["standard_deviation_filtered"], outputLayerExpected); +} From 191c4f0700b00f301852d10c6a693b3ebb7d0c4a Mon Sep 17 00:00:00 2001 From: Yoshua Nava Date: Wed, 9 Dec 2020 18:35:26 +0000 Subject: [PATCH 03/83] Merge branch 'feature/_morphological_mask_in_median_fill_filter' into 'master' [grid_map] Morphological mask in median fill filter GitOrigin-RevId: 14ca63d509f85c7e602fd05d4249a10836f24d4a --- README.md | 4 + grid_map_filters/CMakeLists.txt | 6 + .../grid_map_filters/MedianFillFilter.hpp | 50 ++++- grid_map_filters/package.xml | 1 + grid_map_filters/src/MedianFillFilter.cpp | 175 ++++++++++++++---- .../test/median_fill_filter_test.cpp | 56 +++++- 6 files changed, 244 insertions(+), 48 deletions(-) diff --git a/README.md b/README.md index 90d4f9f10..6a00123f1 100644 --- a/README.md +++ b/README.md @@ -400,6 +400,7 @@ Several basic filters are provided in the *grid_map_filters* package: Compute for each _NaN_ cell of a layer the median (of finites) inside a patch with radius. Optionally, apply median calculations for values that are already finite, the patch radius for these points is given by existing_value_radius. + Note that the fill computation is only performed if the fill_mask is valid for that point. name: median type: gridMapFilters/MedianFillFilter @@ -409,6 +410,9 @@ Several basic filters are provided in the *grid_map_filters* package: fill_hole_radius: 0.11 # in m. filter_existing_values: false # Default is false. If enabled it also does a median computation for existing values. existing_value_radius: 0.2 # in m. Note that this option only has an effect if filter_existing_values is set true. + fill_mask_layer: fill_mask # A layer that is used to compute which areas to fill. If not present in the input it is automatically computed. + debug: false # If enabled, the additional debug_infill_mask_layer is published. + debug_infill_mask_layer: infill_mask # Layer used to visualize the intermediate, sparse-outlier removed fill mask. Only published if debug is enabled. * **`gridMapFilters/NormalVectorsFilter`** diff --git a/grid_map_filters/CMakeLists.txt b/grid_map_filters/CMakeLists.txt index 002d11213..5b2f915f1 100644 --- a/grid_map_filters/CMakeLists.txt +++ b/grid_map_filters/CMakeLists.txt @@ -37,6 +37,8 @@ else() message([FATAL_ERROR] "tbb module not found") endif () +find_package(OpenCV REQUIRED) + ################################### ## catkin specific configuration ## ################################### @@ -57,6 +59,8 @@ catkin_package( grid_map_core grid_map_msgs filters + DEPENDS + OpenCV ) ########### @@ -69,6 +73,7 @@ include_directories( SYSTEM ${catkin_INCLUDE_DIRS} ${TBB_INCLUDE_DIRS} + ${OpenCV_INCLUDE_DIRS} ) ## Declare a cpp library @@ -96,6 +101,7 @@ add_library(${PROJECT_NAME} target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${TBB_LIBRARIES} + ${OpenCV_LIBRARIES} ) ############# diff --git a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp index 7c3061514..38ee3df9c 100644 --- a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp @@ -14,11 +14,13 @@ #include #include +#include namespace grid_map { /*! - * Uses Boost accumulators to fill holes in the input layer by the median of the surrounding values. + * Uses std::nth_element to fill holes in the input layer by the median of the surrounding values. The result is put into the output_layer. + * Note: Only values for which the fill_layer is true will be filled. The fill_layer is auto computed if not present in the input. */ template class MedianFillFilter : public filters::FilterBase { @@ -61,6 +63,43 @@ class MedianFillFilter : public filters::FilterBase { float getMedian(Eigen::Ref inputMap, const grid_map::Index& centerIndex, const size_t radiusInPixels, const grid_map::Size bufferSize); + /** + * Computes a mask of which cells to fill-in based on the validity of input cells. I.e small holes between (and including) valid cells are + * marked to be filled. + * + * @remark The returned fill_mask is also added as layer to the output to be reused in following iterations of this filter. + * If debug is enabled, an intermediate mask is added as layer to the output grid map. + * @param inputMap The input layer, used to check which cells contain valid values. + * @param mapOut The output GridMap will contain the additional fill_mask layer afterwards. + * @return An eigen mask indicating which cells should be filled by the median filter. + */ + Eigen::MatrixXf computeAndAddFillMask(const Eigen::MatrixXf& inputMap, T& mapOut); + + /** + * Remove sparse valid regions by morphological opening. + * @remark Check https://docs.opencv.org/master/d9/d61/tutorial_py_morphological_ops.html + * for more information about the opening operation. + * @param inputMask Initial mask possibly containing also sparse valid regions that will be removed. + * @return An opencv mask of the same size as input mask with small sparse valid regions removed. + */ + cv::Mat_ cleanedMask(const cv::Mat_& inputMask); + + /** + * Performs morphological closing on a boolean cv matrix mask. + * @param [in] isValidMask A 2d mask where holes up to a certain size will be filled. + * @param [in] numDilationClosingIterations Algorithm specific parameter. Higher means that bigger holes will still be filled. + * @return A mask of the same size as isValidMask but with small holes filled. + */ + cv::Mat_ fillHoles(const cv::Mat_& isValidMask, const size_t numDilationClosingIterations); + + /** + * Adds a float cv matrix as layer to a given map. + * @param [in, out] gridMap The map to add the layer. + * @param [in] cvLayer The cv matrix to add. + * @param [in] layerName The layer name + */ + void addCvMatAsLayer(T& gridMap, const cv::Mat& cvLayer, const std::string& layerName); + private: //! Median filtering radius of NaN values in the input. double fillHoleRadius_; @@ -76,6 +115,15 @@ class MedianFillFilter : public filters::FilterBase { //! Output layer name. std::string outputLayer_; + + //! Layer containing indicating which areas to fill, will be computed if not present. + std::string fillMaskLayer_ = "should_fill"; + + //! Layer used to visualize the intermediate, sparse outlier removed fill mask. + std::string debugInfillMaskLayer_ = "debug_infill_mask"; + + //! If set, the filtered grid_map is augmented with additional debug layers. + bool debug_; }; } // namespace grid_map diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 6cfa4782e..f82fb9e03 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -17,6 +17,7 @@ grid_map_ros grid_map_msgs tbb + libopencv-dev gtest google-mock diff --git a/grid_map_filters/src/MedianFillFilter.cpp b/grid_map_filters/src/MedianFillFilter.cpp index 3431789fe..c5c406e9c 100644 --- a/grid_map_filters/src/MedianFillFilter.cpp +++ b/grid_map_filters/src/MedianFillFilter.cpp @@ -14,6 +14,10 @@ // Grid Map #include +#include +#include +#include + using namespace filters; namespace grid_map { @@ -73,6 +77,75 @@ bool MedianFillFilter::configure() { ROS_DEBUG("Median output layer = %s.", outputLayer_.c_str()); + if (!FilterBase::getParam(std::string("fill_mask_layer"), fillMaskLayer_)) { + ROS_ERROR("Median filter did not find parameter `fill_mask_layer`."); + return false; + } + + ROS_DEBUG("Median fill mask layer = %s.", fillMaskLayer_.c_str()); + + if (!FilterBase::getParam(std::string("debug"), debug_)) { + ROS_INFO("Median filter did not find parameter debug. Disabling debug output."); + debug_ = false; + } + + ROS_DEBUG("Debug mode= %s.", debug_ ? "true" : "false"); + + if (debug_ && !FilterBase::getParam(std::string("debug_infill_mask_layer"), debugInfillMaskLayer_)) { + ROS_ERROR("Median filter did not find parameter `debug_infill_mask_layer`."); + return false; + } + + ROS_DEBUG("Median debug infill mask layer = %s.", debugInfillMaskLayer_.c_str()); + + return true; +} + +template +bool MedianFillFilter::update(const T& mapIn, T& mapOut) { + // Copy input map and add new layer to it. + mapOut = mapIn; + if (!mapOut.exists(outputLayer_)) { + mapOut.add(outputLayer_); + } + + mapOut.convertToDefaultStartIndex(); + + // Avoid hash map lookups afterwards. I.e, get data matrices as references. + grid_map::Matrix inputMap{mapOut[inputLayer_]}; // copy by value to do filtering first. + grid_map::Matrix& outputMap{mapOut[outputLayer_]}; + + // Check if mask is already computed from a previous iteration. + Eigen::MatrixXf shouldFill; + if (std::find(mapOut.getLayers().begin(), mapOut.getLayers().end(), fillMaskLayer_) == mapOut.getLayers().end()) { + shouldFill = computeAndAddFillMask(inputMap, mapOut); + } else { // The mask already exists, retrieve it from a previous iteration. + shouldFill = mapOut[fillMaskLayer_]; + } + + const size_t radiusInPixels{static_cast(fillHoleRadius_ / mapIn.getResolution())}; + const size_t existingValueRadiusInPixels{static_cast(existingValueRadius_ / mapIn.getResolution())}; + const grid_map::Index& bufferSize{mapOut.getSize()}; + unsigned int numNans{0u}; + // Iterate through the entire GridMap and update NaN values with the median. + for (GridMapIterator iterator(mapOut); !iterator.isPastEnd(); ++iterator) { + const Index index(*iterator); + const auto& inputValue{inputMap(index(0), index(1))}; + const float& shouldFillThisCell{shouldFill(index(0), index(1))}; + auto& outputValue{outputMap(index(0), index(1))}; + if (!std::isfinite(inputValue) && shouldFillThisCell) { // Fill the NaN input value with the median. + outputValue = getMedian(inputMap, index, radiusInPixels, bufferSize); + numNans++; + } else if (filterExistingValues_ && shouldFillThisCell) { // Value is already finite. Optionally add some filtering. + outputValue = getMedian(inputMap, index, existingValueRadiusInPixels, bufferSize); + } else { // Dont do any filtering, just take the input value. + outputValue = inputValue; + } + } + ROS_DEBUG_STREAM("Median fill filter " << this->getName() << " observed " << numNans << " Nans in input layer!"); + // By removing all basic layers the selected layer will always be visualized, otherwise isValid will also check for the basic layers + // and hide infilled values where the corresponding basic layers are still NAN. + mapOut.setBasicLayers({}); return true; } @@ -80,24 +153,24 @@ template float MedianFillFilter::getMedian(Eigen::Ref inputMap, const grid_map::Index& centerIndex, const size_t radiusInPixels, const grid_map::Size bufferSize) { // Bound the median window to the GridMap boundaries. Calculate the neighbour patch. - grid_map::Index topLeftIndex = centerIndex - grid_map::Index(radiusInPixels, radiusInPixels); - grid_map::Index bottomRightIndex = centerIndex + grid_map::Index(radiusInPixels, radiusInPixels); + grid_map::Index topLeftIndex{centerIndex - grid_map::Index(radiusInPixels, radiusInPixels)}; + grid_map::Index bottomRightIndex{centerIndex + grid_map::Index(radiusInPixels, radiusInPixels)}; grid_map::boundIndexToRange(topLeftIndex, bufferSize); grid_map::boundIndexToRange(bottomRightIndex, bufferSize); - const grid_map::Index neighbourPatchSize = bottomRightIndex - topLeftIndex + grid_map::Index{1, 1}; + const grid_map::Index neighbourPatchSize{bottomRightIndex - topLeftIndex + grid_map::Index{1, 1}}; // Extract local neighbourhood. - const auto& neighbourhood = inputMap.block(topLeftIndex(0), topLeftIndex(1), neighbourPatchSize(0), neighbourPatchSize(1)); + const auto& neighbourhood{inputMap.block(topLeftIndex(0), topLeftIndex(1), neighbourPatchSize(0), neighbourPatchSize(1))}; - const size_t cols = neighbourhood.cols(); + const size_t cols{static_cast(neighbourhood.cols())}; std::vector cellValues; cellValues.reserve(neighbourhood.rows() * neighbourhood.cols()); for (size_t row = 0; row < neighbourhood.rows(); ++row) { - const auto& currentRow = neighbourhood.row(row); + const auto& currentRow{neighbourhood.row(row)}; for (size_t col = 0; col < cols; ++col) { - const float& cellValue = currentRow[col]; + const float& cellValue{currentRow[col]}; if (std::isfinite(cellValue)) { // Calculate the median of the finite neighbours. cellValues.emplace_back(cellValue); } @@ -105,7 +178,7 @@ float MedianFillFilter::getMedian(Eigen::Ref inputMap } if (cellValues.empty()) { - return static_cast(NAN); + return std::numeric_limits::quiet_NaN(); } else { // Compute the median of the finite values in the neighbourhood. std::nth_element(cellValues.begin(), cellValues.begin() + cellValues.size() / 2, cellValues.end()); return cellValues[cellValues.size() / 2]; @@ -113,40 +186,66 @@ float MedianFillFilter::getMedian(Eigen::Ref inputMap } template -bool MedianFillFilter::update(const T& mapIn, T& mapOut) { - // Copy input map and add new layer to it. - mapOut = mapIn; - if (!mapOut.exists(outputLayer_)) { - mapOut.add(outputLayer_); +Eigen::MatrixXf MedianFillFilter::computeAndAddFillMask(const Eigen::MatrixXf& inputMap, T& mapOut) { + Eigen::MatrixXf shouldFill; + // Precompute mask of valid height values + using MaskMatrix = Eigen::Matrix; + const MaskMatrix isValid{inputMap.array().unaryExpr([&](float v) { return isfinite(v); })}; + + // Remove sparse valid values and fill holes. + cv::Mat isValidCV; + cv::eigen2cv(isValid, isValidCV); + cv::Mat_ isValidOutlierRemoved{cleanedMask(isValidCV)}; + cv::Mat shouldFillCV{fillHoles(isValidOutlierRemoved, 4)}; + + // Outlier removed mask to eigen. + if (debug_) { + addCvMatAsLayer(mapOut, isValidOutlierRemoved, debugInfillMaskLayer_); } - mapOut.convertToDefaultStartIndex(); - const grid_map::Matrix inputMap = mapOut[inputLayer_]; - grid_map::Matrix& outputMap = mapOut[outputLayer_]; - grid_map::Matrix& varianceMap = mapOut["variance"]; - const auto radiusInPixels = static_cast(fillHoleRadius_ / mapIn.getResolution()); - const auto existingValueRadiusInPixels = static_cast(existingValueRadius_ / mapIn.getResolution()); - const grid_map::Index& bufferSize = mapOut.getSize(); + // Convert to eigen and add to the map. + cv::cv2eigen(shouldFillCV, shouldFill); + mapOut.add(fillMaskLayer_, shouldFill); - unsigned int numNans = 0; - // Iterate through the entire GridMap and update NaN values with the median. - for (GridMapIterator iterator(mapOut); !iterator.isPastEnd(); ++iterator) { - const Index index(*iterator); - const auto& inputValue = inputMap(index(0), index(1)); - auto& outputValue = outputMap(index(0), index(1)); - auto& variance = varianceMap(index(0), index(1)); - if (not std::isfinite(inputValue)) { // Fill the NaN input value with the median. - outputValue = getMedian(inputMap, index, radiusInPixels, bufferSize); - numNans++; - } else if (filterExistingValues_) { // Value is already finite. Optionally add some filtering. - outputValue = getMedian(inputMap, index, existingValueRadiusInPixels, bufferSize); - } else { // Dont do any filtering, just take the input value. - outputValue = inputValue; - } + return shouldFill; +} + +template +cv::Mat_ MedianFillFilter::cleanedMask(const cv::Mat_& inputMask) { + auto element{cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3), cv::Point(1, 1))}; + + cv::Mat_ cleanedInputMask(inputMask.size(), inputMask.type()); + + // Erode then dilate to remove sparse points + cv::dilate(inputMask, cleanedInputMask, element); + cv::erode(cleanedInputMask, cleanedInputMask, element); + cv::erode(inputMask, cleanedInputMask, element); + cv::dilate(cleanedInputMask, cleanedInputMask, element); + + return cleanedInputMask; +} + +template +cv::Mat_ MedianFillFilter::fillHoles(const cv::Mat_& isValidMask, const size_t numDilationClosingIterations) { + auto element{cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3), cv::Point(1, 1))}; + cv::Mat_ holesFilledMask(isValidMask.size(), isValidMask.type()); + // Remove holes in the mask by morphological closing. + cv::dilate(isValidMask, holesFilledMask, element); + for (size_t iteration = 1; iteration < numDilationClosingIterations; iteration++) { + cv::dilate(holesFilledMask, holesFilledMask, element); } - ROS_DEBUG_STREAM("Median fill filter " << this->getName() << " observed " << numNans << " Nans in input layer!"); - mapOut.setBasicLayers({}); - return true; + for (size_t iteration = 0; iteration < numDilationClosingIterations; iteration++) { + cv::erode(holesFilledMask, holesFilledMask, element); + } + + return holesFilledMask; +} + +template +void MedianFillFilter::addCvMatAsLayer(T& gridMap, const cv::Mat& cvLayer, const std::string& layerName) { + Eigen::MatrixXf tmpEigenMatrix; + cv::cv2eigen(cvLayer, tmpEigenMatrix); + gridMap.add(layerName, tmpEigenMatrix); } } // namespace grid_map diff --git a/grid_map_filters/test/median_fill_filter_test.cpp b/grid_map_filters/test/median_fill_filter_test.cpp index 1ecf6f7c1..31c9c4252 100644 --- a/grid_map_filters/test/median_fill_filter_test.cpp +++ b/grid_map_filters/test/median_fill_filter_test.cpp @@ -1,8 +1,8 @@ #include #include -#include #include +#include #include "grid_map_filters/MedianFillFilter.hpp" @@ -12,6 +12,34 @@ using namespace ::testing; using BASE = filters::FilterBase; using MedianFillFilterT = MedianFillFilter; +#define ASSERT_MATRICES_EQ_WITH_NAN(first, second) assertMatrixesEqualWithNan((first), #first, (second), #second, __LINE__) +static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, Eigen::Ref second, std::string secondName, int line){ + ASSERT_EQ(first.rows(), second.rows()); + ASSERT_EQ(first.cols(), second.cols()); + + bool matricesAreEqual = true; + for(size_t row = 0; row < first.rows() && matricesAreEqual; ++row){ + for(size_t col = 0; col < first.cols() && matricesAreEqual; ++col){ + bool ifRealThenValid = first.block<1, 1>(row, col).isApprox(second.block<1, 1>(row, col)); + bool bothNaN = std::isnan(first(row, col)) && std::isnan(second(row, col)); + if(ifRealThenValid || bothNaN){ + continue; + }else{ + matricesAreEqual = false; + } + } + } + + Eigen::IOFormat compactFormat(2, 0, ",", "\n", "[", "]"); + ASSERT_TRUE(matricesAreEqual) // NO LINT + << "L. " << std::to_string(line) << ": Matrices are not equal" // NO LINT + << "\n"<().setConstant(NAN); + GridMap noisyFilterInput{filterInput}; - // Add some holes + // Add some holes that should be filled. noisyFilterInput["elevation"](0, 0) = std::numeric_limits::quiet_NaN(); noisyFilterInput["elevation"](10, 5) = std::numeric_limits::quiet_NaN(); noisyFilterInput["elevation"](2, 4) = std::numeric_limits::quiet_NaN(); @@ -69,9 +108,8 @@ TEST(MedianFillFilter, LoadParametersAndUpdateTest) { // NOLINT noisyFilterInput["elevation"](3, 15) = std::numeric_limits::quiet_NaN(); noisyFilterInput["elevation"](10, 10) = std::numeric_limits::quiet_NaN(); - // Check if the filter has removed the nans by comparing it with the original input. + // Check if the filter has removed the sparse nans by comparing it with the original input. GridMap noisyFilterOutput; medianFillFilter.update(noisyFilterInput, noisyFilterOutput); - ASSERT_TRUE(filterInput["elevation"].isApprox(noisyFilterOutput["elevation_filtered"])) - << "Expected output: " << filterInput["elevation"] << "\nReceived: " << noisyFilterOutput["elevation"]; + ASSERT_MATRICES_EQ_WITH_NAN(filterInput["elevation"], noisyFilterOutput["elevation_filtered"]); } From 25a9844b9419fe7b18aa7ece57cd40d122241bf0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Thu, 10 Dec 2020 17:24:52 +0000 Subject: [PATCH 04/83] Merge branch 'fix/mock_filter_behaviour_if_print_name_not_set' into 'master' [grid_map] Fix GitHub issue and grid_map_demo. Assume print_name false if not set. Closes #UNKNOWN GitOrigin-RevId: ea9736d305a65854f011739595e368c6481948fb --- grid_map_demos/config/filters_demo_filter_chain.yaml | 6 ++++-- grid_map_filters/src/MockFilter.cpp | 4 ++-- grid_map_rviz_plugin/src/GridMapVisual.cpp | 2 ++ 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/grid_map_demos/config/filters_demo_filter_chain.yaml b/grid_map_demos/config/filters_demo_filter_chain.yaml index 7c3214602..fd32a9370 100644 --- a/grid_map_demos/config/filters_demo_filter_chain.yaml +++ b/grid_map_demos/config/filters_demo_filter_chain.yaml @@ -110,7 +110,8 @@ grid_map_filters: - name: traversability_lower_threshold type: gridMapFilters/ThresholdFilter params: - layer: traversability + condition_layer: traversability + output_layer: traversability lower_threshold: 0.0 set_to: 0.0 @@ -118,6 +119,7 @@ grid_map_filters: - name: traversability_upper_threshold type: gridMapFilters/ThresholdFilter params: - layer: traversability + condition_layer: traversability + output_layer: traversability upper_threshold: 1.0 set_to: 1.0 # Other uses: .nan, .inf diff --git a/grid_map_filters/src/MockFilter.cpp b/grid_map_filters/src/MockFilter.cpp index 539fdc152..00c1fe92a 100644 --- a/grid_map_filters/src/MockFilter.cpp +++ b/grid_map_filters/src/MockFilter.cpp @@ -36,8 +36,8 @@ bool MockFilter::configure() } if (!FilterBase::getParam(std::string("print_name"), printName_)) { - ROS_ERROR("MockFilter did not find parameter 'print_name'."); - return false; + ROS_INFO("MockFilter did not find parameter 'print_name'. Not printing the name. "); + printName_ = false; } return true; diff --git a/grid_map_rviz_plugin/src/GridMapVisual.cpp b/grid_map_rviz_plugin/src/GridMapVisual.cpp index 5b85f7026..243efdac8 100644 --- a/grid_map_rviz_plugin/src/GridMapVisual.cpp +++ b/grid_map_rviz_plugin/src/GridMapVisual.cpp @@ -113,6 +113,8 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f ColoringMethod coloringMethod; if (flatColor) { coloringMethod = ColoringMethod::FLAT; + } else if(mapLayerColor) { + coloringMethod = ColoringMethod::COLOR_LAYER; } else if (!useRainbow) { coloringMethod = ColoringMethod::INTENSITY_LAYER_MANUAL; } else if (!invertRainbow) { From 49d3159aa1024c8acb7e9159ea7c610ee9ed3c99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Thu, 10 Dec 2020 17:25:44 +0000 Subject: [PATCH 05/83] Merge branch 'fix/grid_map_jenkins_pipeline' into 'master' [grid_map] Jenkins pipeline failed because of fillmedian filter Closes #UNKNOWN GitOrigin-RevId: d34cf89208b927b00533d015a730a69d73189d68 --- grid_map_filters/src/MedianFillFilter.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/grid_map_filters/src/MedianFillFilter.cpp b/grid_map_filters/src/MedianFillFilter.cpp index c5c406e9c..914d132cb 100644 --- a/grid_map_filters/src/MedianFillFilter.cpp +++ b/grid_map_filters/src/MedianFillFilter.cpp @@ -11,6 +11,8 @@ // Wrap as ROS Filter #include +#include + // Grid Map #include @@ -190,7 +192,7 @@ Eigen::MatrixXf MedianFillFilter::computeAndAddFillMask(const Eigen::MatrixXf Eigen::MatrixXf shouldFill; // Precompute mask of valid height values using MaskMatrix = Eigen::Matrix; - const MaskMatrix isValid{inputMap.array().unaryExpr([&](float v) { return isfinite(v); })}; + const MaskMatrix isValid{inputMap.array().unaryExpr([&](float v) { return std::isfinite(v); })}; // Remove sparse valid values and fill holes. cv::Mat isValidCV; From b5d2b932aaaf3729ff216ec939837f03e2c3a6f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Tue, 15 Dec 2020 10:52:21 +0000 Subject: [PATCH 06/83] Merge branch 'fix/grid_map_jenkins_melodic' into 'master' [grid_map] Fix jenkins pipeline on melodic Closes #UNKNOWN GitOrigin-RevId: f881be77124a8d4f8f7734e265cc13321324775e --- .../grid_map_rviz_plugin/modified/message_filter_display.h | 1 - 1 file changed, 1 deletion(-) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h index cd902e1ac..979dbfe21 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h @@ -39,7 +39,6 @@ #include #include -#include namespace grid_map_rviz_plugin { /** @brief Helper superclass for MessageFilterDisplay, needed because From 61972c8732aef46d3cf3a61ad435f9b66a6e65e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Tue, 15 Dec 2020 14:34:18 +0000 Subject: [PATCH 07/83] Merge branch 'fix/visibility_cleanup' into 'master' [elevation_mapping] Fix ray-tracing in elevation map on the edge of sensor window Closes #UNKNOWN GitOrigin-RevId: 6919a0b4e384d4b90f0fbf65e537869b8d2083f7 --- grid_map_core/src/GridMap.cpp | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/grid_map_core/src/GridMap.cpp b/grid_map_core/src/GridMap.cpp index 71695a4aa..3bb496bf3 100644 --- a/grid_map_core/src/GridMap.cpp +++ b/grid_map_core/src/GridMap.cpp @@ -751,23 +751,13 @@ void GridMap::clearAll() { } void GridMap::clearRows(unsigned int index, unsigned int nRows) { - std::vector layersToClear; - if (basicLayers_.size() > 0) - layersToClear = basicLayers_; - else - layersToClear = layers_; - for (auto& layer : layersToClear) { + for (auto& layer : layers_) { data_.at(layer).block(index, 0, nRows, getSize()(1)).setConstant(NAN); } } void GridMap::clearCols(unsigned int index, unsigned int nCols) { - std::vector layersToClear; - if (basicLayers_.size() > 0) - layersToClear = basicLayers_; - else - layersToClear = layers_; - for (auto& layer : layersToClear) { + for (auto& layer : layers_) { data_.at(layer).block(0, index, getSize()(0), nCols).setConstant(NAN); } } From f1344bd946967d2806dc9d0e41b119e580398724 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Wed, 16 Dec 2020 11:00:02 +0000 Subject: [PATCH 08/83] Merge branch 'fix/clip_points_to_map' into 'master' [grid_map] Fix getClosestPositionInMap GitOrigin-RevId: b7d32e76cec97e5c8d50b06aa17569ef085de0db --- grid_map_core/src/GridMap.cpp | 11 +- grid_map_core/test/GridMapTest.cpp | 204 +++++++++++++++++++++++++++++ 2 files changed, 210 insertions(+), 5 deletions(-) diff --git a/grid_map_core/src/GridMap.cpp b/grid_map_core/src/GridMap.cpp index 3bb496bf3..55c03d2c3 100644 --- a/grid_map_core/src/GridMap.cpp +++ b/grid_map_core/src/GridMap.cpp @@ -720,12 +720,13 @@ Position GridMap::getClosestPositionInMap(const Position& position) const { const double maxY = bottomLeftCorner.y(); const double minY = bottomRightCorner.y(); - // Clip to box constraints. - positionInMap.x() = std::fmin(positionInMap.x(), maxX); - positionInMap.y() = std::fmin(positionInMap.y(), maxY); + // Clip to box constraints and correct for indexing precision. + // Points on the border can lead to invalid indices because the cells represent half open intervals, i.e. [...). + positionInMap.x() = std::fmin(positionInMap.x(), maxX - std::numeric_limits::epsilon()); + positionInMap.y() = std::fmin(positionInMap.y(), maxY - std::numeric_limits::epsilon()); - positionInMap.x() = std::fmax(positionInMap.x(), minX); - positionInMap.y() = std::fmax(positionInMap.y(), minY); + positionInMap.x() = std::fmax(positionInMap.x(), minX + std::numeric_limits::epsilon()); + positionInMap.y() = std::fmax(positionInMap.y(), minY + std::numeric_limits::epsilon()); return positionInMap; } diff --git a/grid_map_core/test/GridMapTest.cpp b/grid_map_core/test/GridMapTest.cpp index 0acf5e08b..79c00bc7d 100644 --- a/grid_map_core/test/GridMapTest.cpp +++ b/grid_map_core/test/GridMapTest.cpp @@ -148,6 +148,210 @@ TEST(GridMap, ClipToMap) EXPECT_TRUE(map.isInside(clippedPositionOutMap)); } + + +TEST(GridMap, ClipToMap2) +{ + GridMap map({"types"}); + map.setGeometry(Length(1.0, 1.0), 0.05, Position(0.0, 0.0)); + + // Test 8 points outside of map. + /* + * A B C + * +---+ + * | | X + * D| |E ^ + * | | | + * +---+ Y<--+ + * F G H + * + * Note: Position to index alignment is an half open interval. + * An example position of 0.5 is assigned to the upper index. + * The interval in the current example is: + * Position: [...)[0.485 ... 0.5)[0.5 ... 0.505)[...) + * Index: 8 9 10 11 + */ + + Index insideIndex; + Position outsidePosition; + + // Point A + outsidePosition = Position(1.0, 1.0); + auto closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + bool isInside = map.getIndex(closestInsidePosition, insideIndex); + + auto expectedPosition = Position(0.5, 0.5); + auto expectedIndex = Index(0, 0); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; + + // Point B + outsidePosition = Position(1.0, 0.0); + closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + isInside = map.getIndex(closestInsidePosition, insideIndex); + + expectedPosition = Position(0.5, 0.0); + expectedIndex = Index(0, 10); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; + + // Point C + outsidePosition = Position(1.0, -1.0); + closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + isInside = map.getIndex(closestInsidePosition, insideIndex); + + expectedPosition = Position(0.5, -0.5); + expectedIndex = Index(0, 19); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; + + // Point D + outsidePosition = Position(0.0, 1.0); + closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + isInside = map.getIndex(closestInsidePosition, insideIndex); + + expectedPosition = Position(0.0, 0.5); + expectedIndex = Index(10, 0); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; + + // Point E + outsidePosition = Position(0.0, -1.0); + closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + isInside = map.getIndex(closestInsidePosition, insideIndex); + + expectedPosition = Position(0.0, -0.5); + expectedIndex = Index(10, 19); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; + + // Point F + outsidePosition = Position(-1.0, 1.0); + closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + isInside = map.getIndex(closestInsidePosition, insideIndex); + + expectedPosition = Position(-0.5, 0.5); + expectedIndex = Index(19, 0); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; + + // Point G + outsidePosition = Position(-1.0, 0.0); + closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + isInside = map.getIndex(closestInsidePosition, insideIndex); + + expectedPosition = Position(-0.5, 0.0); + expectedIndex = Index(19, 10); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; + + // Point H + outsidePosition = Position(-1.0, -1.0); + closestInsidePosition = map.getClosestPositionInMap(outsidePosition); + isInside = map.getIndex(closestInsidePosition, insideIndex); + + expectedPosition = Position(-0.5, -0.5); + expectedIndex = Index(19, 19); + + // Check position. + EXPECT_DOUBLE_EQ(expectedPosition.x(), closestInsidePosition.x()); + EXPECT_DOUBLE_EQ(expectedPosition.y(), closestInsidePosition.y()); + + // Check index. + EXPECT_EQ(expectedIndex.x(), insideIndex.x()) << "closestInsidePosition" << closestInsidePosition; + EXPECT_EQ(expectedIndex.y(), insideIndex.y()) << "closestInsidePosition" << closestInsidePosition; + + // Check if index is inside. + EXPECT_TRUE(isInside) << "position is: " << std::endl + << closestInsidePosition << std::endl + << " index is: " << std::endl + << insideIndex << std::endl; +} + TEST(AddDataFrom, ExtendMapAligned) { GridMap map1, map2; From 8536d55c6123cb5c65c479814ef1e44d67367342 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Mon, 4 Jan 2021 10:59:52 +0000 Subject: [PATCH 09/83] Merge branch 'fix/update_readme' into 'master' [grid_map] Update readme with current maintainer GitOrigin-RevId: 32badfe87b26c05ca943391c9f03778e161241c8 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6a00123f1..6b9bf8cfc 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,8 @@ The source code is released under a [BSD 3-Clause license](LICENSE). **Author: Péter Fankhauser
Affiliation: [ANYbotics](https://www.anybotics.com/)
-Maintainer: Péter Fankhauser, pfankhauser@anybotics.com
** -With contributions by: Tanja Baumann, Jeff Delmerico, Remo Diethelm, Perry Franklin, Dominic Jud, Ralph Kaestner, Philipp Krüsi, Alex Millane, Daniel Stonier, Elena Stumm, Martin Wermelinger, Christos Zalidis, Edo Jelavic, Ruben Grandia, Simone Arreghini, Magnus Gärtner +Maintainer: Maximilian Wulf, mwulf@anybotics.com
** +With contributions by: Simone Arreghini, Tanja Baumann, Jeff Delmerico, Remo Diethelm, Perry Franklin, Magnus Gärtner, Ruben Grandia, Edo Jelavic, Dominic Jud, Ralph Kaestner, Philipp Krüsi, Alex Millane, Daniel Stonier, Elena Stumm, Martin Wermelinger, Christos Zalidis This projected was initially developed at ETH Zurich (Autonomous Systems Lab & Robotic Systems Lab). From b02aa92652075d56a5fe9ef949d09bc1be9921ed Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Wed, 6 Jan 2021 06:52:53 +0100 Subject: [PATCH 10/83] Merge branch 'feature/grid-map/v1-6-4' GitOrigin-RevId: 019c01a0103db9e37687c4beb6e7b665c4337dff --- grid_map/CHANGELOG.rst | 3 +++ grid_map/package.xml | 2 +- grid_map_core/CHANGELOG.rst | 3 +++ grid_map_core/package.xml | 2 +- grid_map_costmap_2d/CHANGELOG.rst | 3 +++ grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/CHANGELOG.rst | 4 ++++ grid_map_cv/package.xml | 2 +- grid_map_demos/CHANGELOG.rst | 3 +++ grid_map_demos/package.xml | 2 +- grid_map_filters/CHANGELOG.rst | 2 +- grid_map_loader/CHANGELOG.rst | 3 +++ grid_map_loader/package.xml | 2 +- grid_map_msgs/CHANGELOG.rst | 3 +++ grid_map_msgs/package.xml | 2 +- grid_map_octomap/CHANGELOG.rst | 3 +++ grid_map_octomap/package.xml | 2 +- grid_map_pcl/CHANGELOG.rst | 3 +++ grid_map_pcl/package.xml | 2 +- grid_map_ros/CHANGELOG.rst | 3 +++ grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/CHANGELOG.rst | 3 +++ grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/CHANGELOG.rst | 3 +++ grid_map_sdf/package.xml | 2 +- grid_map_visualization/CHANGELOG.rst | 3 +++ grid_map_visualization/package.xml | 2 +- 27 files changed, 54 insertions(+), 14 deletions(-) diff --git a/grid_map/CHANGELOG.rst b/grid_map/CHANGELOG.rst index bf72135e9..759988ce4 100644 --- a/grid_map/CHANGELOG.rst +++ b/grid_map/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map/package.xml b/grid_map/package.xml index a150c1d10..bde245bb8 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.2 + 1.6.4 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/CHANGELOG.rst b/grid_map_core/CHANGELOG.rst index 413502356..47f729e03 100644 --- a/grid_map_core/CHANGELOG.rst +++ b/grid_map_core/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ * Implements a grid map transformation from one map frame to another map frame given the transform between the frames. diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index cfeacb11f..442093441 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.2 + 1.6.4 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/CHANGELOG.rst b/grid_map_costmap_2d/CHANGELOG.rst index e6192cc91..9954779e7 100644 --- a/grid_map_costmap_2d/CHANGELOG.rst +++ b/grid_map_costmap_2d/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_costmap_2d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 634db3281..b00c45e59 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.2 + 1.6.4 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/CHANGELOG.rst b/grid_map_cv/CHANGELOG.rst index 4ac85c6c8..2faea7419 100644 --- a/grid_map_cv/CHANGELOG.rst +++ b/grid_map_cv/CHANGELOG.rst @@ -1,6 +1,10 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Changelog for package grid_map_cv ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +1.6.4 (2020-12-04) +------------------ + 1.6.3 (2020-09-30) ------------------ * Added getTransformedMap. diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 2904c4e66..b29b8b91e 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.3 + 1.6.4 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/CHANGELOG.rst b/grid_map_demos/CHANGELOG.rst index 0c0156b03..1b9fdfe75 100644 --- a/grid_map_demos/CHANGELOG.rst +++ b/grid_map_demos/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_demos ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.3 (2020-10-19) ------------------ * Added GridMapToImageDemo. Saves the elevation layer of a grid_map to a file. diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 9b31a038a..49d5362f2 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.3 + 1.6.4 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/CHANGELOG.rst b/grid_map_filters/CHANGELOG.rst index 85c864225..9db33b066 100644 --- a/grid_map_filters/CHANGELOG.rst +++ b/grid_map_filters/CHANGELOG.rst @@ -2,7 +2,7 @@ Changelog for package grid_map_filters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -1.6.4 (2020-11-27) +1.6.4 (2020-12-04) ------------------ * Extended the ThresholdFilter: * - The layer parameter was replaced by condition_layer and output_layer. diff --git a/grid_map_loader/CHANGELOG.rst b/grid_map_loader/CHANGELOG.rst index 04b5d8a3e..eae5184c3 100644 --- a/grid_map_loader/CHANGELOG.rst +++ b/grid_map_loader/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_loader ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index e52e762f3..4e4472240 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.2 + 1.6.4 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/CHANGELOG.rst b/grid_map_msgs/CHANGELOG.rst index e517e8795..bc32ef9be 100644 --- a/grid_map_msgs/CHANGELOG.rst +++ b/grid_map_msgs/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_msgs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 7081a3118..e45c9e088 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.2 + 1.6.4 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/CHANGELOG.rst b/grid_map_octomap/CHANGELOG.rst index e49c1fde3..b9bcd1a7c 100644 --- a/grid_map_octomap/CHANGELOG.rst +++ b/grid_map_octomap/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_octomap ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 1e7854a29..809439c8c 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.2 + 1.6.4 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/CHANGELOG.rst b/grid_map_pcl/CHANGELOG.rst index 44656beed..533a43142 100644 --- a/grid_map_pcl/CHANGELOG.rst +++ b/grid_map_pcl/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_pcl ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 0c371c520..557587061 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.2 + 1.6.4 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/CHANGELOG.rst b/grid_map_ros/CHANGELOG.rst index 7d51ea2c3..3e418c43f 100644 --- a/grid_map_ros/CHANGELOG.rst +++ b/grid_map_ros/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_ros ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index ea98da401..0f6245165 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.2 + 1.6.4 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/CHANGELOG.rst b/grid_map_rviz_plugin/CHANGELOG.rst index 1c69b3af8..d821d96bd 100644 --- a/grid_map_rviz_plugin/CHANGELOG.rst +++ b/grid_map_rviz_plugin/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_rviz_plugin ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 7db8776d8..7b5c4f9a3 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.3 + 1.6.4 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/CHANGELOG.rst b/grid_map_sdf/CHANGELOG.rst index 96b334ecc..a685bd101 100644 --- a/grid_map_sdf/CHANGELOG.rst +++ b/grid_map_sdf/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_sdf ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index de2016e48..778413346 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.2 + 1.6.4 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/CHANGELOG.rst b/grid_map_visualization/CHANGELOG.rst index 40798aa98..1853c121e 100644 --- a/grid_map_visualization/CHANGELOG.rst +++ b/grid_map_visualization/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_visualization ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.4 (2020-12-04) +------------------ + 1.6.2 (2019-10-14) ------------------ diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 984992924..c5b4ae3a8 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.2 + 1.6.4 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 9cbb4eb315e3c4248849d0c1d9382928d0b4c3e6 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Fri, 8 Jan 2021 17:16:40 +0000 Subject: [PATCH 11/83] Merge branch 'github/grid_map/255' into 'master' Import PR 'Install .h header files'. GitOrigin-RevId: 320cd49524ca60367955ed6d210f342d8ae29487 --- grid_map_sdf/CMakeLists.txt | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/grid_map_sdf/CMakeLists.txt b/grid_map_sdf/CMakeLists.txt index ff34075de..54225d5c5 100644 --- a/grid_map_sdf/CMakeLists.txt +++ b/grid_map_sdf/CMakeLists.txt @@ -68,7 +68,9 @@ install( install( DIRECTORY include/${PROJECT_NAME}/ DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} - FILES_MATCHING PATTERN "*.hpp" + FILES_MATCHING + PATTERN "*.hpp" + PATTERN "*.h" ) ############# @@ -114,4 +116,4 @@ if(cmake_clang_tools_FOUND) add_default_clang_tooling( DISABLE_CLANG_FORMAT ) -endif(cmake_clang_tools_FOUND) \ No newline at end of file +endif(cmake_clang_tools_FOUND) From 381b30ecefd261cbfc8f1d296dac6b587a062c28 Mon Sep 17 00:00:00 2001 From: Guoxiang Zhou Date: Wed, 13 Jan 2021 08:14:26 +0000 Subject: [PATCH 12/83] Merge branch 'feature/update_readme_grid_map' into 'master' [grid_map] Update build status links in readme GitOrigin-RevId: e52b27ba586a886def50e1a318921253a4b291bc --- README.md | 42 ++++++++++++++++++++++-------------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/README.md b/README.md index 6b9bf8cfc..47db32aec 100644 --- a/README.md +++ b/README.md @@ -502,29 +502,31 @@ Additionally, the *grid_map_cv* package provides the following filters: ### Devel Job Status -| | Indigo | Kinetic | Lunar | Melodic | -| --- | --- | --- | --- | --- | -| grid_map | [![Build Status](http://build.ros.org/buildStatus/icon?job=Idev__grid_map__ubuntu_trusty_amd64)](http://build.ros.org/job/Idev__grid_map__ubuntu_trusty_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kdev__grid_map__ubuntu_xenial_amd64)](http://build.ros.org/job/Kdev__grid_map__ubuntu_xenial_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ldev__grid_map__ubuntu_xenial_amd64)](http://build.ros.org/job/Ldev__grid_map__ubuntu_xenial_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mdev__grid_map__ubuntu_bionic_amd64)](http://build.ros.org/job/Mdev__grid_map__ubuntu_bionic_amd64/) | -| doc | [![Build Status](http://build.ros.org/buildStatus/icon?job=Idoc__grid_map__ubuntu_trusty_amd64)](http://build.ros.org/job/Idoc__grid_map__ubuntu_trusty_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kdoc__grid_map__ubuntu_xenial_amd64)](http://build.ros.org/job/Kdoc__grid_map__ubuntu_xenial_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ldoc__grid_map__ubuntu_xenial_amd64)](http://build.ros.org/job/Ldoc__grid_map__ubuntu_xenial_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mdoc__grid_map__ubuntu_bionic_amd64)](http://build.ros.org/job/Mdoc__grid_map__ubuntu_bionic_amd64/) | +| | Kinetic | Melodic | Noetic | +| --- | --- | --- | --- | +| grid_map | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kdev__grid_map__ubuntu_xenial_amd64)](http://build.ros.org/job/Kdev__grid_map__ubuntu_xenial_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mdev__grid_map__ubuntu_bionic_amd64)](http://build.ros.org/job/Mdev__grid_map__ubuntu_bionic_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mdev__grid_map__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Mdev__grid_map__ubuntu_focal_armhf__binary/) | +| doc | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kdoc__grid_map__ubuntu_xenial_amd64)](http://build.ros.org/job/Kdoc__grid_map__ubuntu_xenial_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mdoc__grid_map__ubuntu_bionic_amd64)](http://build.ros.org/job/Mdoc__grid_map__ubuntu_bionic_amd64/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mdoc__grid_map__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Mdoc__grid_map__ubuntu_focal_armhf__binary/) | ### Release Job Status -| | Indigo | Kinetic | Lunar | Melodic | -| --- | --- | --- | --- | --- | -| grid_map | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map__ubuntu_bionic_amd64__binary/) | -| grid_map_core | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_core__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_core__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_core__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_core__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_core__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_core__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_core__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_core__ubuntu_bionic_amd64__binary/) | -| grid_map_costmap_2d | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_costmap_2d__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_costmap_2d__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_costmap_2d__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_costmap_2d__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_costmap_2d__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_costmap_2d__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_costmap_2d__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_costmap_2d__ubuntu_bionic_amd64__binary/) | -| grid_map_cv | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_cv__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_cv__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_cv__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_cv__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_cv__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_cv__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_cv__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_cv__ubuntu_bionic_amd64__binary/) | -| grid_map_demos | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_demos__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_demos__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_demos__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_demos__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_demos__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_demos__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_demos__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_demos__ubuntu_bionic_amd64__binary/) | -| grid_map_filters | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_filters__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_filters__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_filters__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_filters__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_filters__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_filters__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_filters__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_filters__ubuntu_bionic_amd64__binary/) | -| grid_map_loader | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_loader__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_loader__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_loader__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_loader__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_loader__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_loader__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_loader__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_loader__ubuntu_bionic_amd64__binary/) | -| grid_map_msgs | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_msgs__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_msgs__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_msgs__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_msgs__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_msgs__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_msgs__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_msgs__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_msgs__ubuntu_bionic_amd64__binary/) | -| grid_map_octomap | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_octomap__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_octomap__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_octomap__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_octomap__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_octomap__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_octomap__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_octomap__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_octomap__ubuntu_bionic_amd64__binary/) | -| grid_map_pcl | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_pcl__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_pcl__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_pcl__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_pcl__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_pcl__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_pcl__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_pcl__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_pcl__ubuntu_bionic_amd64__binary/) | -| grid_map_ros | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_ros__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_ros__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_ros__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_ros__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_ros__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_ros__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_ros__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_ros__ubuntu_bionic_amd64__binary/) | -| grid_map_rviz_plugin | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_rviz_plugin__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_rviz_plugin__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_rviz_plugin__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_rviz_plugin__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_rviz_plugin__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_rviz_plugin__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_rviz_plugin__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_rviz_plugin__ubuntu_bionic_amd64__binary/) | -| grid_map_sdf | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_sdf__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_sdf__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_sdf__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_sdf__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_sdf__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_sdf__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_sdf__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_sdf__ubuntu_bionic_amd64__binary/) | -| grid_map_visualization | [![Build Status](http://build.ros.org/buildStatus/icon?job=Ibin_uT64__grid_map_visualization__ubuntu_trusty_amd64__binary)](http://build.ros.org/job/Ibin_uT64__grid_map_visualization__ubuntu_trusty_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_visualization__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_visualization__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Lbin_uX64__grid_map_visualization__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Lbin_uX64__grid_map_visualization__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_visualization__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_visualization__ubuntu_bionic_amd64__binary/) | +| | Kinetic | Melodic | Noetic | +| --- | --- | --- | --- | +| grid_map | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map__ubuntu_focal_armhf__binary/) | +| grid_map_core | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_core__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_core__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_core__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_core__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_core__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_core__ubuntu_focal_armhf__binary/) | +| grid_map_costmap_2d | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_costmap_2d__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_costmap_2d__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_costmap_2d__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_costmap_2d__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_costmap_2d__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_costmap_2d__ubuntu_focal_armhf__binary/) | +| grid_map_cv | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_cv__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_cv__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_cv__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_cv__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_cv__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_cv__ubuntu_focal_armhf__binary/) | +| grid_map_demos | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_demos__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_demos__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_demos__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_demos__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_demos__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_demos__ubuntu_focal_armhf__binary/) | +| grid_map_filters | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_filters__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_filters__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_filters__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_filters__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_filters__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_filters__ubuntu_focal_armhf__binary/) | +| grid_map_loader | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_loader__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_loader__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_loader__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_loader__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_loader__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_loader__ubuntu_focal_armhf__binary/) | +| grid_map_msgs | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_msgs__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_msgs__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_msgs__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_msgs__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_msgs__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_msgs__ubuntu_focal_armhf__binary/) | +| grid_map_octomap | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_octomap__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_octomap__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_octomap__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_octomap__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_octomap__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_octomap__ubuntu_focal_armhf__binary/) | +| grid_map_pcl | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_pcl__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_pcl__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_pcl__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_pcl__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_pcl__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_pcl__ubuntu_focal_armhf__binary/) | +| grid_map_ros | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_ros__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_ros__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_ros__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_ros__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_ros__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_ros__ubuntu_focal_armhf__binary/) | +| grid_map_rviz_plugin | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_rviz_plugin__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_rviz_plugin__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_rviz_plugin__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_rviz_plugin__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_rviz_plugin__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_rviz_plugin__ubuntu_focal_armhf__binary/) | +| grid_map_sdf | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_sdf__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_sdf__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_sdf__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_sdf__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_sdf__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_sdf__ubuntu_focal_armhf__binary/) | +| grid_map_visualization | [![Build Status](http://build.ros.org/buildStatus/icon?job=Kbin_uX64__grid_map_visualization__ubuntu_xenial_amd64__binary)](http://build.ros.org/job/Kbin_uX64__grid_map_visualization__ubuntu_xenial_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Mbin_uB64__grid_map_visualization__ubuntu_bionic_amd64__binary)](http://build.ros.org/job/Mbin_uB64__grid_map_visualization__ubuntu_bionic_amd64__binary/) | [![Build Status](http://build.ros.org/buildStatus/icon?job=Nbin_ufhf_uFhf__grid_map_visualization__ubuntu_focal_armhf__binary)](http://build.ros.org/job/Nbin_ufhf_uFhf__grid_map_visualization__ubuntu_focal_armhf__binary/) | + + ## Bugs & Feature Requests From 539f9db782e73cd48a112a6a72f3dbc11868d80f Mon Sep 17 00:00:00 2001 From: Guoxiang Zhou Date: Tue, 16 Feb 2021 13:29:17 +0000 Subject: [PATCH 13/83] Merge branch 'fix/perception_compiler_warnings' into 'master' [compiler_warning_enable][perception] Enable compiler warnings for perception packages. GitOrigin-RevId: f606a180227f01542e360f0a4ce23e658950559c --- grid_map_core/CMakeLists.txt | 2 +- grid_map_costmap_2d/CMakeLists.txt | 2 +- grid_map_cv/CMakeLists.txt | 2 +- grid_map_demos/CMakeLists.txt | 2 +- grid_map_filters/CMakeLists.txt | 2 +- grid_map_loader/CMakeLists.txt | 2 +- grid_map_octomap/CMakeLists.txt | 2 +- grid_map_ros/CMakeLists.txt | 2 +- grid_map_rviz_plugin/CMakeLists.txt | 2 +- grid_map_sdf/CMakeLists.txt | 2 +- grid_map_visualization/CMakeLists.txt | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/grid_map_core/CMakeLists.txt b/grid_map_core/CMakeLists.txt index e11f8f39e..b290bbd70 100644 --- a/grid_map_core/CMakeLists.txt +++ b/grid_map_core/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_core) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_costmap_2d/CMakeLists.txt b/grid_map_costmap_2d/CMakeLists.txt index d59d4121f..d81a4a473 100644 --- a/grid_map_costmap_2d/CMakeLists.txt +++ b/grid_map_costmap_2d/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_costmap_2d) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_cv/CMakeLists.txt b/grid_map_cv/CMakeLists.txt index d23798f4c..d67dbc209 100644 --- a/grid_map_cv/CMakeLists.txt +++ b/grid_map_cv/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_cv) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_demos/CMakeLists.txt b/grid_map_demos/CMakeLists.txt index 2ac7f1335..699c2b4e0 100644 --- a/grid_map_demos/CMakeLists.txt +++ b/grid_map_demos/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_demos) set(CMAKE_CXX_STANDARD 11) - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_filters/CMakeLists.txt b/grid_map_filters/CMakeLists.txt index 5b2f915f1..24ff49352 100644 --- a/grid_map_filters/CMakeLists.txt +++ b/grid_map_filters/CMakeLists.txt @@ -9,7 +9,7 @@ set(CMAKE_CXX_STANDARD 11) # We want performance (fast-math) but also need a representation for NaN values to represent missing values. # Therefore, we disable the finite-math-only flag that was set by fast-math. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math -fno-finite-math-only") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) # Other possible options. diff --git a/grid_map_loader/CMakeLists.txt b/grid_map_loader/CMakeLists.txt index d7d437e09..40a8a53bb 100644 --- a/grid_map_loader/CMakeLists.txt +++ b/grid_map_loader/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_loader) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_octomap/CMakeLists.txt b/grid_map_octomap/CMakeLists.txt index 7f6134c87..a89b8db68 100644 --- a/grid_map_octomap/CMakeLists.txt +++ b/grid_map_octomap/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_octomap) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_ros/CMakeLists.txt b/grid_map_ros/CMakeLists.txt index c20199fe7..96fb83f10 100644 --- a/grid_map_ros/CMakeLists.txt +++ b/grid_map_ros/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_ros) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_rviz_plugin/CMakeLists.txt b/grid_map_rviz_plugin/CMakeLists.txt index e85e3c7dc..0f48ff35c 100644 --- a/grid_map_rviz_plugin/CMakeLists.txt +++ b/grid_map_rviz_plugin/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_rviz_plugin) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_package(catkin REQUIRED diff --git a/grid_map_sdf/CMakeLists.txt b/grid_map_sdf/CMakeLists.txt index 54225d5c5..34b8369f7 100644 --- a/grid_map_sdf/CMakeLists.txt +++ b/grid_map_sdf/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_sdf) set(CMAKE_CXX_FLAGS "-std=c++14 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries diff --git a/grid_map_visualization/CMakeLists.txt b/grid_map_visualization/CMakeLists.txt index 8a72cb7fc..c506948ba 100644 --- a/grid_map_visualization/CMakeLists.txt +++ b/grid_map_visualization/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_visualization) set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS}") - +add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries From 0c0724f91ee08357837b4f753564cc25f69f65f4 Mon Sep 17 00:00:00 2001 From: Emilk Roy Sempertegui Aveiga Date: Tue, 30 Mar 2021 14:58:10 +0000 Subject: [PATCH 14/83] Merge branch 'fix/grid_map_cv_remove_compiler_warnings' into 'master' [grid_map_cv] remove compiler warnings GitOrigin-RevId: aff370684d379c900b0522161db5987a75d102c3 --- grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp | 6 +++--- grid_map_cv/include/grid_map_cv/InpaintFilter.hpp | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp b/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp index 540f77eca..bc1d412ce 100644 --- a/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp +++ b/grid_map_cv/include/grid_map_cv/GridMapCvConverter.hpp @@ -116,7 +116,7 @@ class GridMapCvConverter } return true; - }; + } /*! * Adds a color layer with data from an image. @@ -177,7 +177,7 @@ class GridMapCvConverter const float minValue = gridMap.get(layer).minCoeffOfFinites(); const float maxValue = gridMap.get(layer).maxCoeffOfFinites(); return toImage(gridMap, layer, encoding, minValue, maxValue, image); - }; + } /*! * Creates a cv mat from a grid map layer. @@ -244,7 +244,7 @@ class GridMapCvConverter } return true; - }; + } }; diff --git a/grid_map_cv/include/grid_map_cv/InpaintFilter.hpp b/grid_map_cv/include/grid_map_cv/InpaintFilter.hpp index dcf023c11..f57c21ed4 100644 --- a/grid_map_cv/include/grid_map_cv/InpaintFilter.hpp +++ b/grid_map_cv/include/grid_map_cv/InpaintFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include //OpenCV #include "grid_map_cv/grid_map_cv.hpp" From 9bf14a1fa77268c988d2a550470df746c36c4489 Mon Sep 17 00:00:00 2001 From: Emilk Roy Sempertegui Aveiga Date: Wed, 31 Mar 2021 09:51:34 +0000 Subject: [PATCH 15/83] Merge branch 'fix/grid_map_visualization_remove_compiler_warnings' into 'master' [grid_map_visualization] fixed compiler warnings GitOrigin-RevId: da1fa9a831fd1cf023095d7c6590d9ca0d6f738e --- grid_map_visualization/src/GridMapVisualization.cpp | 2 +- grid_map_visualization/src/GridMapVisualizationHelpers.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/grid_map_visualization/src/GridMapVisualization.cpp b/grid_map_visualization/src/GridMapVisualization.cpp index 2301e9818..8c6e110d8 100644 --- a/grid_map_visualization/src/GridMapVisualization.cpp +++ b/grid_map_visualization/src/GridMapVisualization.cpp @@ -62,7 +62,7 @@ bool GridMapVisualization::readParameters() } // Iterate over all visualizations (may be just one), - for (unsigned int i = 0; i < config.size(); ++i) { + for (int i = 0; i < config.size(); ++i) { if (config[i].getType() != XmlRpc::XmlRpcValue::TypeStruct) { ROS_ERROR("%s: Visualizations must be specified as maps, but they are XmlRpcType:%d", visualizationsParameter_.c_str(), config[i].getType()); diff --git a/grid_map_visualization/src/GridMapVisualizationHelpers.cpp b/grid_map_visualization/src/GridMapVisualizationHelpers.cpp index 9432bad2b..7f9e7d808 100644 --- a/grid_map_visualization/src/GridMapVisualizationHelpers.cpp +++ b/grid_map_visualization/src/GridMapVisualizationHelpers.cpp @@ -60,12 +60,12 @@ void interpolateBetweenColors(std_msgs::ColorRGBA& color, const std_msgs::ColorR setColorChannelFromValue(color.b, value, lowerValueBound, upperValueBound, false, colorForLowerValue.b, colorForUpperValue.b); } -void setSaturationFromValue(std_msgs::ColorRGBA& color, const double value, const double lowerValueBound, +void setSaturationFromValue(std_msgs::ColorRGBA& color, const double value, const double /*lowerValueBound*/, const double upperValueBound, const double maxSaturation, const double minSaturation) { // Based on "changeSaturation" function by Darel Rex Finley. const Eigen::Array3f HspFactors(.299, .587, .114); // see http://alienryderflex.com/hsp.html - float saturationChange = static_cast(computeLinearMapping(value, value, upperValueBound, maxSaturation, minSaturation)); + const float saturationChange{static_cast(computeLinearMapping(value, value, upperValueBound, maxSaturation, minSaturation))}; Vector3f colorVector; getColorVectorFromColorMessage(colorVector, color); float perceivedBrightness = sqrt((colorVector.array().square() * HspFactors).sum()); From 6297da7da237245d274b93c1783449b7ccbcc98e Mon Sep 17 00:00:00 2001 From: Emilk Roy Sempertegui Aveiga Date: Thu, 1 Apr 2021 11:45:28 +0000 Subject: [PATCH 16/83] Merge branch 'fix/grid_map_sdf_remove_compiler_warnings' into 'master' [grid_map_sdf] remove compiler warnings GitOrigin-RevId: 4365c25eb0e4968ab8be8279851083b2afaaa7bc --- .../include/grid_map_sdf/SignedDistanceField.hpp | 4 ++-- .../grid_map_sdf/distance_transform/imconv.h | 16 ++++++++-------- .../grid_map_sdf/distance_transform/misc.h | 6 +++--- grid_map_sdf/src/SignedDistanceField.cpp | 6 +++--- 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp b/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp index f1105da55..a80ba3eda 100644 --- a/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp +++ b/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp @@ -33,12 +33,12 @@ class SignedDistanceField private: Matrix getPlanarSignedDistanceField(Eigen::Matrix& data) const; - double resolution_; Size size_; Position position_; std::vector data_; - float zIndexStartHeight_; float maxDistance_; + float zIndexStartHeight_; + double resolution_; const float lowestHeight_; }; diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h index b4f27ff36..a5ffdcd1c 100755 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h +++ b/grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h @@ -32,7 +32,7 @@ namespace distance_transform const double GREEN_WEIGHT = 0.584; const double BLUE_WEIGHT = 0.114; - static image *imageRGBtoGRAY(image *input) { + static inline image *imageRGBtoGRAY(image *input) { int width = input->width(); int height = input->height(); image *output = new image(width, height, false); @@ -48,7 +48,7 @@ namespace distance_transform return output; } - static image *imageGRAYtoRGB(image *input) { + static inline image *imageGRAYtoRGB(image *input) { int width = input->width(); int height = input->height(); image *output = new image(width, height, false); @@ -63,7 +63,7 @@ namespace distance_transform return output; } - static image *imageUCHARtoFLOAT(image *input) { + static inline image *imageUCHARtoFLOAT(image *input) { int width = input->width(); int height = input->height(); image *output = new image(width, height, false); @@ -76,7 +76,7 @@ namespace distance_transform return output; } - static image *imageINTtoFLOAT(image *input) { + static inline image *imageINTtoFLOAT(image *input) { int width = input->width(); int height = input->height(); image *output = new image(width, height, false); @@ -108,13 +108,13 @@ namespace distance_transform return output; } - static image *imageFLOATtoUCHAR(image *input) { + static inline image *imageFLOATtoUCHAR(image *input) { float min, max; min_max(input, &min, &max); return imageFLOATtoUCHAR(input, min, max); } - static image *imageUCHARtoLONG(image *input) { + static inline image *imageUCHARtoLONG(image *input) { int width = input->width(); int height = input->height(); image *output = new image(width, height, false); @@ -145,7 +145,7 @@ namespace distance_transform return output; } - static image *imageLONGtoUCHAR(image *input) { + static inline image *imageLONGtoUCHAR(image *input) { long min, max; min_max(input, &min, &max); return imageLONGtoUCHAR(input, min, max); @@ -170,7 +170,7 @@ namespace distance_transform return output; } - static image *imageSHORTtoUCHAR(image *input) { + static inline image *imageSHORTtoUCHAR(image *input) { short min, max; min_max(input, &min, &max); return imageSHORTtoUCHAR(input, min, max); diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h index a9514d1f4..01fd15744 100755 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h +++ b/grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h @@ -33,13 +33,13 @@ namespace distance_transform } template - inline T abs(const T &x) { return (x > 0 ? x : -x); }; + inline T abs(const T &x) { return (x > 0 ? x : -x); } template - inline int sign(const T &x) { return (x >= 0 ? 1 : -1); }; + inline int sign(const T &x) { return (x >= 0 ? 1 : -1); } template - inline T square(const T &x) { return x*x; }; + inline T square(const T &x) { return x*x; } template inline T bound(const T &x, const T &min, const T &max) { diff --git a/grid_map_sdf/src/SignedDistanceField.cpp b/grid_map_sdf/src/SignedDistanceField.cpp index 163dc3a2b..b27bc0204 100644 --- a/grid_map_sdf/src/SignedDistanceField.cpp +++ b/grid_map_sdf/src/SignedDistanceField.cpp @@ -44,7 +44,7 @@ void SignedDistanceField::calculateSignedDistanceField(const GridMap& gridMap, c if (!std::isfinite(maxHeight)) maxHeight = lowestHeight_; const float valueForEmptyCells = lowestHeight_; // maxHeight, minHeight (TODO Make this an option). - for (size_t i = 0; i < map.size(); ++i) { + for (Eigen::Index i{0}; i < map.size(); ++i) { if (std::isnan(map(i))) map(i) = valueForEmptyCells; } @@ -68,7 +68,7 @@ void SignedDistanceField::calculateSignedDistanceField(const GridMap& gridMap, c if ((sdfObstacleFree.array() >= INF).any()) sdf2d = sdfObstacle; else sdf2d = sdfObstacle - sdfObstacleFree; sdf2d *= resolution_; - for (size_t i = 0; i < sdfElevationAbove.size(); ++i) { + for (Eigen::Index i{0}; i < sdfElevationAbove.size(); ++i) { if(sdfElevationAbove(i) == maxDistance_ && map(i) <= h) sdfElevationAbove(i) = h - map(i); else if(sdfElevationAbove(i) != maxDistance_ && map(i) <= h) sdfElevationAbove(i) = sdfLayer(i) + resolution_; if (sdf2d(i) == 0) sdfLayer(i) = h - map(i); @@ -163,7 +163,7 @@ void SignedDistanceField::convertToPointCloud(pcl::PointCloud& p { double xCenter = size_.x() / 2.0; double yCenter = size_.y() / 2.0; - for (int z = 0; z < data_.size(); z++){ + for (size_t z = 0; z < data_.size(); z++){ for (int y = 0; y < size_.y(); y++) { for (int x = 0; x < size_.x(); x++) { double xp = position_.x() + ((size_.x() - x) - xCenter) * resolution_; From 9f68a57d318771850989bab817f509d75ed1b3fa Mon Sep 17 00:00:00 2001 From: Emilk Roy Sempertegui Aveiga Date: Thu, 1 Apr 2021 12:56:26 +0000 Subject: [PATCH 17/83] Merge branch 'fix/grid_map_filters_remove_compiler_warnings' into 'master' [grid_map_filters] Remove compiler warnings GitOrigin-RevId: 75bd5a458bb3c6deadbef9324586c8da4b69c3ef --- .../include/grid_map_filters/BufferNormalizerFilter.hpp | 2 +- .../include/grid_map_filters/ColorBlendingFilter.hpp | 8 ++++---- .../include/grid_map_filters/ColorFillFilter.hpp | 2 +- .../include/grid_map_filters/ColorMapFilter.hpp | 2 +- .../include/grid_map_filters/CurvatureFilter.hpp | 2 +- .../include/grid_map_filters/DeletionFilter.hpp | 2 +- .../include/grid_map_filters/DuplicationFilter.hpp | 2 +- .../include/grid_map_filters/LightIntensityFilter.hpp | 2 +- .../include/grid_map_filters/MathExpressionFilter.hpp | 2 +- .../include/grid_map_filters/MeanInRadiusFilter.hpp | 2 +- .../include/grid_map_filters/MedianFillFilter.hpp | 2 +- .../include/grid_map_filters/MinInRadiusFilter.hpp | 2 +- grid_map_filters/include/grid_map_filters/MockFilter.hpp | 2 +- .../include/grid_map_filters/NormalColorMapFilter.hpp | 2 +- .../include/grid_map_filters/NormalVectorsFilter.hpp | 2 +- .../include/grid_map_filters/SetBasicLayersFilter.hpp | 2 +- .../SlidingWindowMathExpressionFilter.hpp | 2 +- .../include/grid_map_filters/ThresholdFilter.hpp | 8 ++++---- grid_map_filters/src/ColorBlendingFilter.cpp | 2 +- grid_map_filters/src/ColorFillFilter.cpp | 9 ++++++--- grid_map_filters/src/ColorMapFilter.cpp | 2 +- grid_map_filters/src/CurvatureFilter.cpp | 4 ++-- grid_map_filters/src/LightIntensityFilter.cpp | 2 +- grid_map_filters/src/MedianFillFilter.cpp | 2 +- grid_map_filters/src/NormalColorMapFilter.cpp | 2 +- grid_map_filters/src/ThresholdFilter.cpp | 6 +++--- 26 files changed, 40 insertions(+), 37 deletions(-) diff --git a/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp b/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp index 999191ad6..d00b5fc34 100644 --- a/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include diff --git a/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp b/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp index c9b51d50c..3e06a1761 100644 --- a/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include @@ -55,12 +55,12 @@ class ColorBlendingFilter : public filters::FilterBase //! Input layers. std::string backgroundLayer_, foregroundLayer_; - //! Blend mode. - BlendModes blendMode_; - //! Opacity of foreground layer. double opacity_; + //! Blend mode. + BlendModes blendMode_; + //! Output layer name. std::string outputLayer_; }; diff --git a/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp b/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp index 21b6bcb15..4cc3fdfcd 100644 --- a/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp b/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp index 87b1dda38..dbc56d65a 100644 --- a/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp @@ -9,7 +9,7 @@ #pragma once #include -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp b/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp index 18858bd43..e6155c98d 100644 --- a/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp b/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp index 048da3219..e30022b43 100644 --- a/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp b/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp index f93bdac79..8639cb059 100644 --- a/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include diff --git a/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp b/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp index 581a5dfb6..476373480 100644 --- a/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp b/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp index c921f40a1..48551dd38 100644 --- a/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp @@ -10,7 +10,7 @@ #include "EigenLab/EigenLab.h" -#include +#include #include diff --git a/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp b/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp index 3a652705a..72a11f0cc 100644 --- a/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp index 38ee3df9c..8bfee101d 100644 --- a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp b/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp index 6e4be578c..b000b4063 100644 --- a/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include diff --git a/grid_map_filters/include/grid_map_filters/MockFilter.hpp b/grid_map_filters/include/grid_map_filters/MockFilter.hpp index d3c36b906..15da96bfd 100644 --- a/grid_map_filters/include/grid_map_filters/MockFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MockFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include diff --git a/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp b/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp index 0a00d02e8..793c4778a 100644 --- a/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp b/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp index fc792a79c..13c7fe3c3 100644 --- a/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp b/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp index 8cf66298f..90ca68d23 100644 --- a/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp b/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp index ee65afb1c..03ae2f52d 100644 --- a/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp @@ -12,7 +12,7 @@ #include -#include +#include #include #include diff --git a/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp b/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp index 4a1cb053b..b67ebf363 100644 --- a/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp @@ -8,7 +8,7 @@ #pragma once -#include +#include #include #include @@ -61,11 +61,11 @@ class ThresholdFilter : public filters::FilterBase //! Upper Threshold double upperThreshold_; - //! If threshold triggered set to this value - double setTo_; - //! Booleans to decide which threshold should be used. bool useLowerThreshold_, useUpperThreshold_; + + //! If threshold triggered set to this value + double setTo_; }; } /* namespace */ diff --git a/grid_map_filters/src/ColorBlendingFilter.cpp b/grid_map_filters/src/ColorBlendingFilter.cpp index 480d03f3a..1c42327f1 100644 --- a/grid_map_filters/src/ColorBlendingFilter.cpp +++ b/grid_map_filters/src/ColorBlendingFilter.cpp @@ -83,7 +83,7 @@ bool ColorBlendingFilter::update(const T& mapIn, T& mapOut) auto& output = mapOut[outputLayer_]; // For each cell in map. - for (size_t i = 0; i < output.size(); ++i) { + for (Eigen::Index i = 0; i < output.size(); ++i) { if (std::isnan(background(i))) { output(i) = foreground(i); } else if (std::isnan(foreground(i))) { diff --git a/grid_map_filters/src/ColorFillFilter.cpp b/grid_map_filters/src/ColorFillFilter.cpp index bc32fb760..1f620a8e0 100644 --- a/grid_map_filters/src/ColorFillFilter.cpp +++ b/grid_map_filters/src/ColorFillFilter.cpp @@ -51,8 +51,11 @@ bool ColorFillFilter::configure() } ROS_DEBUG("Color fill filter blue is = %f.", b_); - if (!FilterBase < T > ::getParam(std::string("mask_layer"), maskLayer_)); - ROS_DEBUG("Color fill filter mask_layer = %s.", maskLayer_.c_str()); + if (!FilterBase < T > ::getParam(std::string("mask_layer"), maskLayer_)) { + ROS_WARN("Color fill filter did not find parameter `mask_layer`."); + } else { + ROS_DEBUG("Color fill filter mask_layer = %s.", maskLayer_.c_str()); + } if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Color fill filter did not find parameter `output_layer`."); @@ -79,7 +82,7 @@ bool ColorFillFilter::update(const T& mapIn, T& mapOut) auto& mask = mapOut[maskLayer_]; // For each cell in map. - for (size_t i = 0; i < output.size(); ++i) { + for (Eigen::Index i = 0; i < output.size(); ++i) { output(i) = std::isfinite(mask(i)) ? colorValue : NAN; } } diff --git a/grid_map_filters/src/ColorMapFilter.cpp b/grid_map_filters/src/ColorMapFilter.cpp index 25b7fca4a..ef58d93df 100644 --- a/grid_map_filters/src/ColorMapFilter.cpp +++ b/grid_map_filters/src/ColorMapFilter.cpp @@ -90,7 +90,7 @@ bool ColorMapFilter::update(const T& mapIn, T& mapOut) const Eigen::Vector3f colorRange = maxColor_ - minColor_; // For each cell in map. - for (size_t i = 0; i < output.size(); ++i) { + for (Eigen::Index i = 0; i < output.size(); ++i) { if (!std::isfinite(input(i))) continue; const double value = std::min(std::max(input(i), min_), max_); const double factor = (value - min_) / range; diff --git a/grid_map_filters/src/CurvatureFilter.cpp b/grid_map_filters/src/CurvatureFilter.cpp index ccb9a3d1e..b880f2285 100644 --- a/grid_map_filters/src/CurvatureFilter.cpp +++ b/grid_map_filters/src/CurvatureFilter.cpp @@ -57,8 +57,8 @@ bool CurvatureFilter::update(const T& mapIn, T& mapOut) auto& curvature = mapOut[outputLayer_]; const float L2 = mapOut.getResolution() * mapOut.getResolution(); - for (size_t j = 0; j < input.cols(); ++j) { - for (size_t i = 0; i < input.rows(); ++i) { + for (Eigen::Index j{0}; j < input.cols(); ++j) { + for (Eigen::Index i{0}; i < input.rows(); ++i) { // http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/How_Curvature_works/00q90000000t000000/ if (!std::isfinite(input(i, j))) continue; float D = ((input(i, j==0 ? j : j-1) + input(i, j==input.cols()-1 ? j : j + 1)) / 2.0 - input(i, j)) / L2; diff --git a/grid_map_filters/src/LightIntensityFilter.cpp b/grid_map_filters/src/LightIntensityFilter.cpp index f7afb6568..d9f7bd9eb 100644 --- a/grid_map_filters/src/LightIntensityFilter.cpp +++ b/grid_map_filters/src/LightIntensityFilter.cpp @@ -70,7 +70,7 @@ bool LightIntensityFilter::update(const T& mapIn, T& mapOut) auto& color = mapOut[outputLayer_]; // For each cell in map. - for (size_t i = 0; i < color.size(); ++i) { + for (Eigen::Index i = 0; i < color.size(); ++i) { if (!std::isfinite(normalZ(i))) { color(i) = NAN; continue; diff --git a/grid_map_filters/src/MedianFillFilter.cpp b/grid_map_filters/src/MedianFillFilter.cpp index 914d132cb..45fb418a0 100644 --- a/grid_map_filters/src/MedianFillFilter.cpp +++ b/grid_map_filters/src/MedianFillFilter.cpp @@ -169,7 +169,7 @@ float MedianFillFilter::getMedian(Eigen::Ref inputMap std::vector cellValues; cellValues.reserve(neighbourhood.rows() * neighbourhood.cols()); - for (size_t row = 0; row < neighbourhood.rows(); ++row) { + for (Eigen::Index row = 0; row < neighbourhood.rows(); ++row) { const auto& currentRow{neighbourhood.row(row)}; for (size_t col = 0; col < cols; ++col) { const float& cellValue{currentRow[col]}; diff --git a/grid_map_filters/src/NormalColorMapFilter.cpp b/grid_map_filters/src/NormalColorMapFilter.cpp index 3a729735e..01f672076 100644 --- a/grid_map_filters/src/NormalColorMapFilter.cpp +++ b/grid_map_filters/src/NormalColorMapFilter.cpp @@ -60,7 +60,7 @@ bool NormalColorMapFilter::update(const T& mapIn, T& mapOut) // Z: 0 to 1 : Blue: 128 to 255 // For each cell in map. - for (size_t i = 0; i < color.size(); ++i) { + for (Eigen::Index i = 0; i < color.size(); ++i) { const Eigen::Vector3f colorVector((normalX(i) + 1.0) / 2.0, (normalY(i) + 1.0) / 2.0, (normalZ(i) / 2.0) + 0.5); diff --git a/grid_map_filters/src/ThresholdFilter.cpp b/grid_map_filters/src/ThresholdFilter.cpp index 9a78d1d47..197442005 100644 --- a/grid_map_filters/src/ThresholdFilter.cpp +++ b/grid_map_filters/src/ThresholdFilter.cpp @@ -17,10 +17,10 @@ namespace grid_map { template ThresholdFilter::ThresholdFilter() - : useLowerThreshold_(false), - useUpperThreshold_(false), - lowerThreshold_(0.0), + : lowerThreshold_(0.0), upperThreshold_(1.0), + useLowerThreshold_(false), + useUpperThreshold_(false), setTo_(0.5) { } From 1cbbf4662484ab1d0561cd131638b02bb91f0691 Mon Sep 17 00:00:00 2001 From: Emilk Roy Sempertegui Aveiga Date: Tue, 6 Apr 2021 14:09:07 +0000 Subject: [PATCH 18/83] Merge branch 'fix/grid_map_ros_remove_gcc_warnings' into 'master' [grid_map_ros] Removed GCC warnings GitOrigin-RevId: ed3d356ee23bfe98c73cedd51e61b20db4ef2493 --- grid_map_ros/src/GridMapRosConverter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grid_map_ros/src/GridMapRosConverter.cpp b/grid_map_ros/src/GridMapRosConverter.cpp index addbf1d9d..643a2f566 100644 --- a/grid_map_ros/src/GridMapRosConverter.cpp +++ b/grid_map_ros/src/GridMapRosConverter.cpp @@ -241,7 +241,7 @@ bool GridMapRosConverter::fromOccupancyGrid(const nav_msgs::OccupancyGrid& occup return false; } - if (size.prod() != occupancyGrid.data.size()) { + if (static_cast(size.prod()) != occupancyGrid.data.size()) { ROS_WARN_STREAM("Conversion of occupancy grid: Size of data does not correspond to width * height."); return false; } From 6ddff7413226cdb692055b6686e890d9c034b101 Mon Sep 17 00:00:00 2001 From: Emilk Roy Sempertegui Aveiga Date: Wed, 7 Apr 2021 14:25:23 +0000 Subject: [PATCH 19/83] Merge branch 'fix/grid_map_core_remove_compiler_warnings' into 'master' [grid_map_core] Remove compiler warnings GitOrigin-RevId: 593af35e98d1d24b28f8aaedbc18d96e99f861cf --- .../include/grid_map_core/GridMapMath.hpp | 25 +++++-------------- .../iterators/GridMapIterator.hpp | 6 +++++ grid_map_core/src/CubicInterpolation.cpp | 2 +- grid_map_core/src/GridMap.cpp | 10 +++++--- grid_map_core/src/GridMapMath.cpp | 21 +++------------- grid_map_core/src/Polygon.cpp | 10 ++++---- .../src/iterators/PolygonIterator.cpp | 2 +- .../src/iterators/SpiralIterator.cpp | 8 +++--- 8 files changed, 33 insertions(+), 51 deletions(-) diff --git a/grid_map_core/include/grid_map_core/GridMapMath.hpp b/grid_map_core/include/grid_map_core/GridMapMath.hpp index b45f44aaa..0e808780b 100644 --- a/grid_map_core/include/grid_map_core/GridMapMath.hpp +++ b/grid_map_core/include/grid_map_core/GridMapMath.hpp @@ -17,6 +17,12 @@ namespace grid_map { +union Color +{ + unsigned long longColor; + float floatColor; +}; + /*! * Gets the position of a cell specified by its index in the map frame. * @param[out] position the position of the center of the cell in the map frame. @@ -289,25 +295,6 @@ size_t getLinearIndexFromIndex(const Index& index, const Size& bufferSize, const */ Index getIndexFromLinearIndex(const size_t linearIndex, const Size& bufferSize, const bool rowMajor = false); -/*! - * Generates a list of indices for a region in the map. - * @param regionIndex the region top-left index. - * @param regionSize the region size. - * @param indices the list of indices of the region. - */ -void getIndicesForRegion(const Index& regionIndex, const Size& regionSize, - std::vector indices); - -/*! - * Generates a list of indices for multiple regions in the map. - * This method makes sure every index is only once contained in the list. - * @param regionIndeces the regions' top-left index. - * @param regionSizes the regions' sizes. - * @param indices the list of indices of the regions. - */ -void getIndicesForRegions(const std::vector& regionIndeces, const Size& regionSizes, - std::vector indices); - /*! * Transforms an int color value (concatenated RGB values) to an int color vector (RGB from 0-255). * @param [in] colorValue the concatenated RGB color value. diff --git a/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp b/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp index 2beeca89a..622f217f6 100644 --- a/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp @@ -34,6 +34,12 @@ class GridMapIterator */ GridMapIterator(const GridMapIterator* other); + /*! + * Copy constructor. + * @param other the object to copy. + */ + GridMapIterator(const GridMapIterator &other) = default; + /*! * Assignment operator. * @param iterator the iterator to copy data from. diff --git a/grid_map_core/src/CubicInterpolation.cpp b/grid_map_core/src/CubicInterpolation.cpp index 89ce6b32f..7e2e16fdb 100644 --- a/grid_map_core/src/CubicInterpolation.cpp +++ b/grid_map_core/src/CubicInterpolation.cpp @@ -18,7 +18,7 @@ unsigned int bindIndexToRange(int idReq, unsigned int nElem) if (idReq < 0) { return 0; } - if (idReq >= nElem) { + if (static_cast(idReq) >= nElem) { return static_cast(nElem - 1); } return static_cast(idReq); diff --git a/grid_map_core/src/GridMap.cpp b/grid_map_core/src/GridMap.cpp index 55c03d2c3..aa25086cd 100644 --- a/grid_map_core/src/GridMap.cpp +++ b/grid_map_core/src/GridMap.cpp @@ -177,6 +177,7 @@ float GridMap::atPosition(const std::string& layer, const Position& position, In interpolationMethod = InterpolationMethods::INTER_LINEAR; skipNextSwitchCase = true; } + [[fallthrough]]; } case InterpolationMethods::INTER_CUBIC: { if (!skipNextSwitchCase) { @@ -187,13 +188,16 @@ float GridMap::atPosition(const std::string& layer, const Position& position, In interpolationMethod = InterpolationMethods::INTER_LINEAR; } } + [[fallthrough]]; } case InterpolationMethods::INTER_LINEAR: { float value; if (atPositionLinearInterpolated(layer, position, value)) return value; - else + else { interpolationMethod = InterpolationMethods::INTER_NEAREST; + } + [[fallthrough]]; } case InterpolationMethods::INTER_NEAREST: { Index index; @@ -289,7 +293,7 @@ GridMap GridMap::getSubmap(const Position& position, const Length& length, bool& return getSubmap(position, length, index, isSuccess); } -GridMap GridMap::getSubmap(const Position& position, const Length& length, Index& indexInSubmap, bool& isSuccess) const { +GridMap GridMap::getSubmap(const Position& position, const Length& length, Index& /*indexInSubmap*/, bool& isSuccess) const { // Submap the generate. GridMap submap(layers_); submap.setBasicLayers(basicLayers_); @@ -696,7 +700,7 @@ void GridMap::convertToDefaultStartIndex() { } Position GridMap::getClosestPositionInMap(const Position& position) const { - if (getSize().x() < 1u || getSize().y() < 1u) { + if (getSize().x() < 1 || getSize().y() < 1) { return position_; } diff --git a/grid_map_core/src/GridMapMath.cpp b/grid_map_core/src/GridMapMath.cpp index 1e9ec2c39..bc26fe0b4 100644 --- a/grid_map_core/src/GridMapMath.cpp +++ b/grid_map_core/src/GridMapMath.cpp @@ -517,21 +517,6 @@ Index getIndexFromLinearIndex(const size_t linearIndex, const Size& bufferSize, return Index((int)linearIndex / bufferSize(1), (int)linearIndex % bufferSize(1)); } -void getIndicesForRegion(const Index& regionIndex, const Size& regionSize, - std::vector indices) -{ -// for (int i = line.index_; col < line.endIndex(); col++) { -// for (int i = 0; i < getSize()(0); i++) { -// -// } -// } -} - -void getIndicesForRegions(const std::vector& regionIndeces, const Size& regionSizes, - std::vector indices) -{ -} - bool colorValueToVector(const unsigned long& colorValue, Eigen::Vector3i& colorVector) { colorVector(0) = (colorValue >> 16) & 0x0000ff; @@ -564,9 +549,9 @@ bool colorVectorToValue(const Eigen::Vector3i& colorVector, unsigned long& color void colorVectorToValue(const Eigen::Vector3i& colorVector, float& colorValue) { - unsigned long color = (colorVector(0) << 16) + (colorVector(1) << 8) + colorVector(2); - // cppcheck-suppress invalidPointerCast - colorValue = *reinterpret_cast(&color); + Color colors; + colors.longColor = (colorVector(0) << 16) + (colorVector(1) << 8) + colorVector(2); + colorValue = colors.floatColor; } void colorVectorToValue(const Eigen::Vector3f& colorVector, float& colorValue) diff --git a/grid_map_core/src/Polygon.cpp b/grid_map_core/src/Polygon.cpp index 715aec4c6..f0f68a2ad 100644 --- a/grid_map_core/src/Polygon.cpp +++ b/grid_map_core/src/Polygon.cpp @@ -32,7 +32,7 @@ Polygon::~Polygon() {} bool Polygon::isInside(const Position& point) const { int cross = 0; - for (int i = 0, j = vertices_.size() - 1; i < vertices_.size(); j = i++) { + for (size_t i = 0, j = vertices_.size() - 1; i < vertices_.size(); j = i++) { if ( ((vertices_[i].y() > point.y()) != (vertices_[j].y() > point.y())) && (point.x() < (vertices_[j].x() - vertices_[i].x()) * (point.y() - vertices_[i].y()) / (vertices_[j].y() - vertices_[i].y()) + vertices_[i].x()) ) @@ -102,7 +102,7 @@ double Polygon::getArea() const { double area = 0.0; int j = vertices_.size() - 1; - for (int i = 0; i < vertices_.size(); i++) { + for (size_t i = 0; i < vertices_.size(); i++) { area += (vertices_.at(j).x() + vertices_.at(i).x()) * (vertices_.at(j).y() - vertices_.at(i).y()); j = i; @@ -116,7 +116,7 @@ Position Polygon::getCentroid() const std::vector vertices = getVertices(); vertices.push_back(vertices.at(0)); double area = 0.0; - for (int i = 0; i < vertices.size() - 1; i++) { + for (size_t i = 0; i < vertices.size() - 1; i++) { const double a = vertices[i].x() * vertices[i+1].y() - vertices[i+1].x() * vertices[i].y(); area += a; centroid.x() += a * (vertices[i].x() + vertices[i+1].x()); @@ -220,7 +220,7 @@ bool Polygon::offsetInward(const double margin) return true; } -std::vector Polygon::triangulate(const TriangulationMethods& method) const +std::vector Polygon::triangulate(const TriangulationMethods& /*method*/) const { // TODO Add more triangulation methods. // https://en.wikipedia.org/wiki/Polygon_triangulation @@ -311,7 +311,7 @@ Polygon Polygon::monotoneChainConvexHullOfPoints(const std::vector& po int k = 0; // Build lower hull - for (int i = 0; i < sortedPoints.size(); ++i) { + for (size_t i = 0; i < sortedPoints.size(); ++i) { while (k >= 2 && vectorsMakeClockwiseTurn(pointsConvexHull.at(k - 2), pointsConvexHull.at(k - 1), sortedPoints.at(i))) { k--; } diff --git a/grid_map_core/src/iterators/PolygonIterator.cpp b/grid_map_core/src/iterators/PolygonIterator.cpp index e20849ff9..db325cfac 100644 --- a/grid_map_core/src/iterators/PolygonIterator.cpp +++ b/grid_map_core/src/iterators/PolygonIterator.cpp @@ -74,7 +74,7 @@ bool PolygonIterator::isInside() const return polygon_.isInside(position); } -void PolygonIterator::findSubmapParameters(const grid_map::Polygon& polygon, Index& startIndex, Size& bufferSize) const +void PolygonIterator::findSubmapParameters(const grid_map::Polygon& /*polygon*/, Index& startIndex, Size& bufferSize) const { Position topLeft = polygon_.getVertices()[0]; Position bottomRight = topLeft; diff --git a/grid_map_core/src/iterators/SpiralIterator.cpp b/grid_map_core/src/iterators/SpiralIterator.cpp index 2f8899e6e..4e97147e4 100644 --- a/grid_map_core/src/iterators/SpiralIterator.cpp +++ b/grid_map_core/src/iterators/SpiralIterator.cpp @@ -51,7 +51,7 @@ SpiralIterator& SpiralIterator::operator =(const SpiralIterator& other) return *this; } -bool SpiralIterator::operator !=(const SpiralIterator& other) const +bool SpiralIterator::operator !=(const SpiralIterator& /*other*/) const { return (pointsRing_.back() != pointsRing_.back()).any(); } @@ -101,16 +101,16 @@ void SpiralIterator::generateRing() normal.x() = -signum(point.y()); normal.y() = signum(point.x()); if (normal.x() != 0 - && (int) Vector(point.x() + normal.x(), point.y()).norm() == distance_) + && static_cast(Vector(point.x() + normal.x(), point.y()).norm()) == distance_) point.x() += normal.x(); else if (normal.y() != 0 - && (int) Vector(point.x(), point.y() + normal.y()).norm() == distance_) + && static_cast(Vector(point.x(), point.y() + normal.y()).norm()) == distance_) point.y() += normal.y(); else { point.x() += normal.x(); point.y() += normal.y(); } - } while (point.x() != distance_ || point.y() != 0); + } while (static_cast(point.x()) != distance_ || point.y() != 0); } double SpiralIterator::getCurrentRadius() const From 758b504ef06f71826368e40ef381aaa45112142b Mon Sep 17 00:00:00 2001 From: Emilk Roy Sempertegui Aveiga Date: Wed, 7 Apr 2021 14:28:30 +0000 Subject: [PATCH 20/83] Merge branch 'fix/grid_map_demos_remove_compiler_warnings' into 'master' [grid_map_demos] Remove compiler warnings GitOrigin-RevId: cefaf502cc45493793c9fdeef3208eb83565700a --- .../config/normal_filter_comparison.yaml | 43 ++++++++++--------- .../include/grid_map_demos/FiltersDemo.hpp | 6 ++- grid_map_demos/src/InterpolationDemo.cpp | 8 +--- grid_map_demos/src/iterator_benchmark.cpp | 8 ++-- .../src/normal_filter_comparison_node.cpp | 6 ++- grid_map_demos/src/tutorial_demo_node.cpp | 3 -- 6 files changed, 39 insertions(+), 35 deletions(-) diff --git a/grid_map_demos/config/normal_filter_comparison.yaml b/grid_map_demos/config/normal_filter_comparison.yaml index c25b7aa86..f669149e4 100644 --- a/grid_map_demos/config/normal_filter_comparison.yaml +++ b/grid_map_demos/config/normal_filter_comparison.yaml @@ -1,23 +1,26 @@ grid_map_filters: + filter_chain: # Compute surface normals. - - name: surface_normals_area - type: gridMapFilters/NormalVectorsFilter - params: - input_layer: elevation_filtered - algorithm: area - output_layers_prefix: normal_area_ - radius: 0.05 - normal_vector_positive_axis: z - parallelization_enabled: true - thread_number: 4 - # thread_number: -1 doesn't limit the number of threads to be used + - + name: surface_normals_area + type: gridMapFilters/NormalVectorsFilter + params: + input_layer: elevation_filtered + algorithm: area + output_layers_prefix: normal_area_ + radius: 0.05 + normal_vector_positive_axis: z + parallelization_enabled: true + thread_number: 4 + # thread_number: -1 doesn't limit the number of threads to be used - - name: surface_normals_raster - type: gridMapFilters/NormalVectorsFilter - params: - input_layer: elevation_filtered - algorithm: raster - output_layers_prefix: normal_raster_ - normal_vector_positive_axis: z - parallelization_enabled: true - thread_number: 4 \ No newline at end of file + - + name: surface_normals_raster + type: gridMapFilters/NormalVectorsFilter + params: + input_layer: elevation_filtered + algorithm: raster + output_layers_prefix: normal_raster_ + normal_vector_positive_axis: z + parallelization_enabled: true + thread_number: 4 \ No newline at end of file diff --git a/grid_map_demos/include/grid_map_demos/FiltersDemo.hpp b/grid_map_demos/include/grid_map_demos/FiltersDemo.hpp index 2a81c25a9..55bef936a 100644 --- a/grid_map_demos/include/grid_map_demos/FiltersDemo.hpp +++ b/grid_map_demos/include/grid_map_demos/FiltersDemo.hpp @@ -11,7 +11,11 @@ #include -#include +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" +#pragma GCC diagnostic ignored "-Wformat" +#include +#pragma GCC diagnostic pop #include #include diff --git a/grid_map_demos/src/InterpolationDemo.cpp b/grid_map_demos/src/InterpolationDemo.cpp index 5f4d3678b..35f5ad392 100644 --- a/grid_map_demos/src/InterpolationDemo.cpp +++ b/grid_map_demos/src/InterpolationDemo.cpp @@ -138,7 +138,7 @@ AnalyticalFunctions createGaussianWorld(grid_map::GridMap *map) func.f_ = [g](double x,double y) { double value = 0.0; - for (int i = 0; i < g.size(); ++i) { + for (size_t i{0}; i < g.size(); ++i) { const double x0 = g.at(i).x0; const double y0 = g.at(i).y0; const double varX = g.at(i).varX; @@ -206,10 +206,6 @@ void interpolateInputMap(const grid_map::GridMap &dataMap, Error computeInterpolationError(const AnalyticalFunctions &groundTruth, const grid_map::GridMap &map) { - const double r = map.getResolution(); - const double dimX = map.getLength().x() / 2.0 - 3.0 * r; - const double dimY = map.getLength().y() / 2.0 - 3.0 * r; - unsigned int count = 0; Error error; const int nRow = map.getSize().x(); @@ -295,7 +291,7 @@ InterpolationDemo::Statistics InterpolationDemo::computeStatistics() const stats.insert( { world->first, methodsStats }); } - return std::move(stats); + return stats; } InterpolationDemo::ErrorAndDuration InterpolationDemo::interpolateAndComputeError( diff --git a/grid_map_demos/src/iterator_benchmark.cpp b/grid_map_demos/src/iterator_benchmark.cpp index ec09714e4..7ead4fb69 100644 --- a/grid_map_demos/src/iterator_benchmark.cpp +++ b/grid_map_demos/src/iterator_benchmark.cpp @@ -74,8 +74,8 @@ void runCustomIndexIteration(GridMap& map, const string& layer_from, const strin { const auto& data_from = map[layer_from]; auto& data_to = map[layer_to]; - for (size_t j = 0; j < data_to.cols(); ++j) { - for (size_t i = 0; i < data_to.rows(); ++i) { + for (Eigen::Index j{0}; j < data_to.cols(); ++j) { + for (Eigen::Index i{0}; i < data_to.rows(); ++i) { const float value_from = data_from(i, j); float& value_to = data_to(i, j); value_to = value_to > value_from ? value_to : value_from; @@ -90,12 +90,12 @@ void runCustomLinearIndexIteration(GridMap& map, const string& layer_from, const { const auto& data_from = map[layer_from]; auto& data_to = map[layer_to]; - for (size_t i = 0; i < data_to.size(); ++i) { + for (Eigen::Index i = 0; i < data_to.size(); ++i) { data_to(i) = data_to(i) > data_from(i) ? data_to(i) : data_from(i); } } -int main(int argc, char* argv[]) +int main() { GridMap map; map.setGeometry(Length(20.0, 20.0), 0.004, Position(0.0, 0.0)); diff --git a/grid_map_demos/src/normal_filter_comparison_node.cpp b/grid_map_demos/src/normal_filter_comparison_node.cpp index bb78e1ca8..01a314382 100644 --- a/grid_map_demos/src/normal_filter_comparison_node.cpp +++ b/grid_map_demos/src/normal_filter_comparison_node.cpp @@ -4,7 +4,11 @@ * @brief Node for comparing different normal filters performances. */ -#include +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wpedantic" +#pragma GCC diagnostic ignored "-Wformat" +#include +#pragma GCC diagnostic pop #include #include #include diff --git a/grid_map_demos/src/tutorial_demo_node.cpp b/grid_map_demos/src/tutorial_demo_node.cpp index 343dea3d5..76e6341cd 100644 --- a/grid_map_demos/src/tutorial_demo_node.cpp +++ b/grid_map_demos/src/tutorial_demo_node.cpp @@ -88,9 +88,6 @@ int main(int argc, char** argv) // Show absolute difference and compute mean squared error. map.add("error", (map.get("elevation_filtered") - map.get("elevation")).cwiseAbs()); - unsigned int nCells = map.getSize().prod(); - // cppcheck-suppress unreadVariable - double rootMeanSquaredError = sqrt((map["error"].array().pow(2).sum()) / nCells); // Publish grid map. map.setTimestamp(time.toNSec()); From 792e0837a3aa07ebddfd95148c9051afb3306ad2 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Tue, 1 Jun 2021 07:46:19 +0000 Subject: [PATCH 21/83] Merge branch 'fix/change_install_grid_map' into 'master' Fix install include space in different packages GitOrigin-RevId: f407520c725359465fa9b9078011ea0d792332f4 --- grid_map_rviz_plugin/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/grid_map_rviz_plugin/CMakeLists.txt b/grid_map_rviz_plugin/CMakeLists.txt index 0f48ff35c..bc99beb35 100644 --- a/grid_map_rviz_plugin/CMakeLists.txt +++ b/grid_map_rviz_plugin/CMakeLists.txt @@ -89,7 +89,7 @@ target_link_libraries(${PROJECT_NAME} ## Install rules install( - DIRECTORY include/${PROJECT_NAME} + DIRECTORY include/${PROJECT_NAME}/ DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} ) @@ -156,4 +156,4 @@ if(cmake_clang_tools_FOUND) add_default_clang_tooling( DISABLE_CLANG_FORMAT ) -endif(cmake_clang_tools_FOUND) \ No newline at end of file +endif(cmake_clang_tools_FOUND) From ee5edb0069cc01d6926f2afae5c0992cc2027758 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Tue, 1 Jun 2021 07:48:01 +0000 Subject: [PATCH 22/83] Merge branch 'github/grid_map/293' into 'master' [grid_map] Import PR 'Missing delete'. GitOrigin-RevId: 6d7a40ef82d2dc61bcfe2d90288e7f757e64c27e --- grid_map_sdf/src/SignedDistanceField.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/grid_map_sdf/src/SignedDistanceField.cpp b/grid_map_sdf/src/SignedDistanceField.cpp index b27bc0204..b4b3f5474 100644 --- a/grid_map_sdf/src/SignedDistanceField.cpp +++ b/grid_map_sdf/src/SignedDistanceField.cpp @@ -100,6 +100,8 @@ grid_map::Matrix SignedDistanceField::getPlanarSignedDistanceField(Eigen::Matrix result(x, y) = sqrt(imRef(out, x, y)); } } + delete input; + delete out; return result; } From d564ab01ea0111a7568bd65a1077f2f9d1d70f56 Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Thu, 22 Jul 2021 08:34:17 +0000 Subject: [PATCH 23/83] Merge branch 'fix/grid-map-rviz-plugin/render-in-gui-thread' into 'master' [grid_map_rviz_plugin] use signal/slot to ensure the rendering happens in the gui thread GitOrigin-RevId: 5735d25fc5d83602c640b89ba14391422ebe43c7 --- .../include/grid_map_rviz_plugin/GridMapDisplay.hpp | 6 ++++++ grid_map_rviz_plugin/src/GridMapDisplay.cpp | 10 ++++++++++ 2 files changed, 16 insertions(+) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp index 48aa6aa00..5c31bd4f3 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp @@ -44,6 +44,10 @@ Q_OBJECT virtual void reset(); + Q_SIGNALS: + // Signal to ensure that the rendering happens in the ui thread. + void process(const grid_map_msgs::GridMap::ConstPtr& msg); + private Q_SLOTS: void updateHistoryLength(); void updateHeightMode(); @@ -51,6 +55,8 @@ Q_OBJECT void updateUseRainbow(); void updateAutocomputeIntensityBounds(); void updateVisualization(); + // Slot to ensure that the rendering happens in the ui thread. + void onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& msg); private: // Callback for incoming ROS messages diff --git a/grid_map_rviz_plugin/src/GridMapDisplay.cpp b/grid_map_rviz_plugin/src/GridMapDisplay.cpp index ab3f99d1e..e3a90b720 100644 --- a/grid_map_rviz_plugin/src/GridMapDisplay.cpp +++ b/grid_map_rviz_plugin/src/GridMapDisplay.cpp @@ -28,6 +28,8 @@ namespace grid_map_rviz_plugin { GridMapDisplay::GridMapDisplay() { + qRegisterMetaType("grid_map_msgs::GridMap::ConstPtr"); + alphaProperty_ = new rviz::FloatProperty("Alpha", 1.0, "0 is fully transparent, 1.0 is fully opaque.", this, SLOT(updateVisualization())); @@ -108,6 +110,9 @@ GridMapDisplay::GridMapDisplay() historyLengthProperty_->setMin(1); historyLengthProperty_->setMax(100); + + // Ensure that the rendering happens in the gui thread. + connect(this, &GridMapDisplay::process, this, &GridMapDisplay::onProcessMessage); } GridMapDisplay::~GridMapDisplay() @@ -200,6 +205,11 @@ void GridMapDisplay::updateVisualization() } void GridMapDisplay::processMessage(const grid_map_msgs::GridMap::ConstPtr& msg) +{ + process(msg); +} + +void GridMapDisplay::onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& msg) { // Check if transform between the message's frame and the fixed frame exists. Ogre::Quaternion orientation; From b207feef5b15ed2b8ccc4ad73d8c06f4d3a7b03e Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Fri, 30 Jul 2021 06:58:31 +0000 Subject: [PATCH 24/83] Merge branch 'fix/grid-map-rviz-plugin/reset' into 'master' [grid_map_rviz_plugin] fix reset Closes #UNKNOWN GitOrigin-RevId: ae29836fdc7f19817dd7d550f35fbddfdc023422 --- .../grid_map_rviz_plugin/GridMapDisplay.hpp | 5 +++++ grid_map_rviz_plugin/src/GridMapDisplay.cpp | 17 ++++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp index 5c31bd4f3..ba8098447 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp @@ -42,6 +42,8 @@ Q_OBJECT protected: virtual void onInitialize(); + virtual void onEnable(); + virtual void reset(); Q_SIGNALS: @@ -62,6 +64,9 @@ Q_OBJECT // Callback for incoming ROS messages void processMessage(const grid_map_msgs::GridMap::ConstPtr& msg); + // Flag to ensure that after the reset the scene is not updated again. + std::atomic isReset_{false}; + // Circular buffer for visuals boost::circular_buffer > visuals_; diff --git a/grid_map_rviz_plugin/src/GridMapDisplay.cpp b/grid_map_rviz_plugin/src/GridMapDisplay.cpp index e3a90b720..25c528ef5 100644 --- a/grid_map_rviz_plugin/src/GridMapDisplay.cpp +++ b/grid_map_rviz_plugin/src/GridMapDisplay.cpp @@ -110,9 +110,6 @@ GridMapDisplay::GridMapDisplay() historyLengthProperty_->setMin(1); historyLengthProperty_->setMax(100); - - // Ensure that the rendering happens in the gui thread. - connect(this, &GridMapDisplay::process, this, &GridMapDisplay::onProcessMessage); } GridMapDisplay::~GridMapDisplay() @@ -125,8 +122,17 @@ void GridMapDisplay::onInitialize() updateHistoryLength(); } +void GridMapDisplay::onEnable() +{ + isReset_ = false; + connect(this, &GridMapDisplay::process, this, &GridMapDisplay::onProcessMessage); + MessageFilterDisplay::onEnable(); +} + void GridMapDisplay::reset() { + isReset_ = true; + disconnect(this, &GridMapDisplay::process, this, &GridMapDisplay::onProcessMessage); MFDClass::reset(); visuals_.clear(); } @@ -211,6 +217,11 @@ void GridMapDisplay::processMessage(const grid_map_msgs::GridMap::ConstPtr& msg) void GridMapDisplay::onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& msg) { + // Check if the display was already reset. + if (isReset_) { + return; + } + // Check if transform between the message's frame and the fixed frame exists. Ogre::Quaternion orientation; Ogre::Vector3 position; From 761e11b7453fba013b6e2a86d83cb9a790385fec Mon Sep 17 00:00:00 2001 From: Remo Diethelm Date: Fri, 13 Aug 2021 17:40:39 +0200 Subject: [PATCH 25/83] Merge branch 'release-21.08' of git.anybotics.com:anybotics/anybotics GitOrigin-RevId: e0578a3b5e1925fb6ea86293922ffa42f3e13a68 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index bde245bb8..7e4a3801c 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.4 + 1.6.5 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 442093441..b9c15910f 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.4 + 1.6.5 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index b00c45e59..363da9319 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.4 + 1.6.5 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index b29b8b91e..a14fdf6f0 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.4 + 1.6.5 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 49d5362f2..831693ba5 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.4 + 1.6.5 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index f82fb9e03..8de76fe51 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.4 + 1.6.5 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 4e4472240..ff873940a 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.4 + 1.6.5 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index e45c9e088..1f5531d93 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.4 + 1.6.5 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 809439c8c..41acd0e0a 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.4 + 1.6.5 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 557587061..84f0887fd 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.4 + 1.6.5 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 0f6245165..f978eefb1 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.4 + 1.6.5 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 7b5c4f9a3..a6ea9b4f1 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.4 + 1.6.5 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 778413346..51dfc5fc6 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.4 + 1.6.5 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index c5b4ae3a8..525ea8218 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.4 + 1.6.5 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 893a416f8675e7ef82bdc28794203eb627d65b51 Mon Sep 17 00:00:00 2001 From: Remo Diethelm Date: Tue, 12 Oct 2021 16:30:01 +0200 Subject: [PATCH 26/83] Merge branch 'release-21.10' of git.anybotics.com:anybotics/anybotics GitOrigin-RevId: 586c0cd46e4b4da6ec3d3a9446b820e5b9fa43cc --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 7e4a3801c..b7482cea0 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.5 + 1.6.6 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index b9c15910f..1964f3b53 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.5 + 1.6.6 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 363da9319..f7912c6b2 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.5 + 1.6.6 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index a14fdf6f0..2f59b1178 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.5 + 1.6.6 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 831693ba5..13a050b52 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.5 + 1.6.6 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 8de76fe51..83d4256f7 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.5 + 1.6.6 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index ff873940a..f236cbf3a 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.5 + 1.6.6 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 1f5531d93..47b78648f 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.5 + 1.6.6 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 41acd0e0a..d2f02165a 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.5 + 1.6.6 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 84f0887fd..9840282f0 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.5 + 1.6.6 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index f978eefb1..cff3aaadd 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.5 + 1.6.6 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index a6ea9b4f1..38f50717a 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.5 + 1.6.6 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 51dfc5fc6..6ea232873 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.5 + 1.6.6 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 525ea8218..d3867286a 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.5 + 1.6.6 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 26db24a2a761bde3188f118785a05859c49f5ced Mon Sep 17 00:00:00 2001 From: jelavice Date: Wed, 3 Nov 2021 10:56:10 +0000 Subject: [PATCH 27/83] Merge branch 'anymal_research/rsl/feature/grid_map_vis' into 'master' Rsl/feature/grid map vis This feature allows you to change the resolution of the mesh lines in the grid map as well as to change their thickness. When displaying large maps, the large number of mesh lines can cause the rviz to crash. With this feature you can lower their resolution, thus reducing their number. In addition you can also change the thickness of the grid lines. The resolution of the mesh remains unaffected. Below are two examples, the first one with full resolution and thin grid lines, the second one with the grid line resolution reduced by a factor of 4 and grid line thickness increased by a factor of 4. ![rviz_screenshot_2021_08_23-09_29_58](/uploads/48302bed69840b49e740f9a2a072a31d/rviz_screenshot_2021_08_23-09_29_58.png) ![rviz_screenshot_2021_08_23-09_29_36](/uploads/7ac15bf0d2fde938c1d28bc80e623b31/rviz_screenshot_2021_08_23-09_29_36.png) Squashed commit: Import change set of branch rsl/feature/grid_map_vis. Commits: -- Change 1 of 9 by Magnus Gaertner : fixed formatting, a typo and added a check so that rviz does not crash if the user adds an infeasible value for the decimation factor. -- Change 2 of 9 by jelavice : Fix bug -- Change 3 of 9 by jelavice : Address PR suggestions -- Change 4 of 9 by Yoshua Nava : Apply 1 suggestion(s) to 1 file(s) -- Change 5 of 9 by Yoshua Nava : Apply 1 suggestion(s) to 1 file(s) -- Change 6 of 9 by Yoshua Nava : Apply 1 suggestion(s) to 1 file(s) -- Change 7 of 9 by jelavice : Finish the implementation -- Change 8 of 9 by jelavice : pipe in the thickness correctly -- Change 9 of 9 by jelavice : Add the thickness and decimation property Authors: Co-authored-by: Magnus Gaertner Co-authored-by: jelavice Co-authored-by: jelavice Co-authored-by: Yoshua Nava Co-authored-by: Yoshua Nava Co-authored-by: Yoshua Nava Co-authored-by: jelavice Co-authored-by: jelavice Co-authored-by: jelavice **Related ANYmal Research MR:** https://code.anymal.com/anymal-research/anymal_research/-/merge_requests/187 Authored by: Edo Jelavic ANYmal Research issues closed*Note: The MR in ANYmal Research has to be closed manually.* GitOrigin-RevId: a49936a8d5e551a1b5c47d400c0acfda894b0e33 --- .../grid_map_rviz_plugin/GridMapDisplay.hpp | 3 + .../grid_map_rviz_plugin/GridMapVisual.hpp | 25 ++++- grid_map_rviz_plugin/src/GridMapDisplay.cpp | 29 ++++-- grid_map_rviz_plugin/src/GridMapVisual.cpp | 92 +++++++++++++------ 4 files changed, 114 insertions(+), 35 deletions(-) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp index ba8098447..82d202ee8 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp @@ -57,6 +57,7 @@ Q_OBJECT void updateUseRainbow(); void updateAutocomputeIntensityBounds(); void updateVisualization(); + void updateGridLines(); // Slot to ensure that the rendering happens in the ui thread. void onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& msg); @@ -86,6 +87,8 @@ Q_OBJECT rviz::BoolProperty* autocomputeIntensityBoundsProperty_; rviz::FloatProperty* minIntensityProperty_; rviz::FloatProperty* maxIntensityProperty_; + rviz::FloatProperty* gridLinesThicknessProperty_; + rviz::IntProperty* gridCellDecimationProperty_; }; } // end namespace grid_map_rviz_plugin diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp index 74094178c..9a314eddf 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp @@ -43,7 +43,7 @@ class GridMapVisual { void computeVisualization(float alpha, bool showGridLines, bool flatTerrain, std::string heightLayer, bool flatColor, bool noColor, Ogre::ColourValue meshColor, bool mapLayerColor, std::string colorLayer, bool useRainbow, bool invertRainbow, Ogre::ColourValue minColor, Ogre::ColourValue maxColor, bool autocomputeIntensity, float minIntensity, - float maxIntensity); + float maxIntensity, float gridLineThickness, int gridCellDecimation); // Set the coordinate frame pose. void setFramePosition(const Ogre::Vector3& position); @@ -101,8 +101,9 @@ class GridMapVisual { * @param rows Number of rows that will be drawn. * @param resolution Resolution of the map. Used to compute the line thickness. * @param alpha Line opacity. + * @param lineWidth line thickness for the mesh lines */ - void initializeMeshLines(size_t cols, size_t rows, double resolution, double alpha); + void initializeMeshLines(size_t cols, size_t rows, double resolution, double alpha, double lineWidth); /** * Computes a mask where all the provided basicLayers are finite. Used to do fast lockups during mesh creation. @@ -136,6 +137,26 @@ class GridMapVisual { * @return */ Ogre::ColourValue getInterpolatedColor(float intensity, Ogre::ColourValue minColor, Ogre::ColourValue maxColor); + + /** + * Returns a vector of ogre coordinates. Each coordinate is a vertex for a mesh line. + * @param i Index of the current point in x. + * @param j Index of the current point in y. + * @param gridCellDecimation Integer that defines how many cells to skip between mesh lines. E.g. if n=3, + * every third mesh line will be displayed. + * @param isNthRow Flag to indicate the n-th row, where n = gridCellDecimation. + * @param isNthCol Flag to indicate the n-th column, where n = gridCellDecimation. + * @param isLastRow Flag to indicate the last row. + * @param isLastCol Flag to indicate the last column. + * @param resolution The resolution. + * @param topLeft The (x,y) position of the top left corner in the map. + * @param heightOrFlatData The height data for the elevation (z coordinates). + * @param isValid Mask of indices with valid data (i.e. not nan or inf) + * @return + */ + std::vector computeMeshLineVertices(int i, int j, int gridCellDecimation, bool isNthRow, bool isNthCol, bool isLastRow, + bool isLastCol, double resolution, const grid_map::Position& topLeft, + const Eigen::ArrayXXf& heightOrFlatData, const MaskArray& isValid) const; }; } // namespace grid_map_rviz_plugin diff --git a/grid_map_rviz_plugin/src/GridMapDisplay.cpp b/grid_map_rviz_plugin/src/GridMapDisplay.cpp index 25c528ef5..e674cd9cf 100644 --- a/grid_map_rviz_plugin/src/GridMapDisplay.cpp +++ b/grid_map_rviz_plugin/src/GridMapDisplay.cpp @@ -38,9 +38,13 @@ GridMapDisplay::GridMapDisplay() "Number of prior grid maps to display.", this, SLOT(updateHistoryLength())); - showGridLinesProperty_ = new rviz::BoolProperty( - "Show Grid Lines", true, "Whether to show the lines connecting the grid cells.", this, - SLOT(updateVisualization())); + showGridLinesProperty_ = new rviz::BoolProperty("Show Grid Lines", true, "Whether to show the lines connecting the grid cells.", this, + SLOT(updateGridLines())); + + gridLinesThicknessProperty_ = + new rviz::FloatProperty("Grid Line Thickness", 0.1, "Set thickness for the grid lines.", this, SLOT(updateVisualization())); + gridCellDecimationProperty_ = new rviz::IntProperty("Grid Cell Decimation", 1, "Decimation factor for the grid map cell display.", this, + SLOT(updateVisualization())); heightModeProperty_ = new rviz::EnumProperty("Height Transformer", "GridMapLayer", "Select the transformer to use to set the height.", @@ -177,6 +181,14 @@ void GridMapDisplay::updateUseRainbow() invertRainbowProperty_->setHidden(!useRainbow); } +void GridMapDisplay::updateGridLines() +{ + updateVisualization(); + const bool isShowGridLines = showGridLinesProperty_->getBool(); + gridLinesThicknessProperty_->setHidden(!isShowGridLines); + gridCellDecimationProperty_->setHidden(!isShowGridLines); +} + void GridMapDisplay::updateAutocomputeIntensityBounds() { updateVisualization(); @@ -202,11 +214,13 @@ void GridMapDisplay::updateVisualization() bool autocomputeIntensity = autocomputeIntensityBoundsProperty_->getBool(); float minIntensity = minIntensityProperty_->getFloat(); float maxIntensity = maxIntensityProperty_->getFloat(); + const float gridLineThickness = gridLinesThicknessProperty_->getFloat(); + const int gridCellDecimation = gridCellDecimationProperty_->getInt(); for (size_t i = 0; i < visuals_.size(); i++) { - visuals_[i]->computeVisualization(alpha, showGridLines, flatTerrain, heightLayer, flatColor, noColor, meshColor, - mapLayerColor, colorLayer, useRainbow, invertRainbow, minColor, maxColor, - autocomputeIntensity, minIntensity, maxIntensity); + visuals_[i]->computeVisualization(alpha, showGridLines, flatTerrain, heightLayer, flatColor, noColor, meshColor, mapLayerColor, + colorLayer, useRainbow, invertRainbow, minColor, maxColor, autocomputeIntensity, minIntensity, + maxIntensity, gridLineThickness, gridCellDecimation); } } @@ -250,7 +264,8 @@ void GridMapDisplay::onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& ms colorTransformerProperty_->getStdString(), useRainbowProperty_->getBool(), invertRainbowProperty_->getBool(), minColorProperty_->getOgreColor(), maxColorProperty_->getOgreColor(), autocomputeIntensityBoundsProperty_->getBool(), - minIntensityProperty_->getFloat(), maxIntensityProperty_->getFloat()); + minIntensityProperty_->getFloat(), maxIntensityProperty_->getFloat(), + gridLinesThicknessProperty_->getFloat(), gridCellDecimationProperty_->getInt()); std::vector layer_names = visual->getLayerNames(); heightTransformerProperty_->clearOptions(); diff --git a/grid_map_rviz_plugin/src/GridMapVisual.cpp b/grid_map_rviz_plugin/src/GridMapVisual.cpp index 243efdac8..152c9ec17 100644 --- a/grid_map_rviz_plugin/src/GridMapVisual.cpp +++ b/grid_map_rviz_plugin/src/GridMapVisual.cpp @@ -51,7 +51,8 @@ void GridMapVisual::setMessage(const grid_map_msgs::GridMap::ConstPtr& msg) { void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool flatTerrain, std::string heightLayer, bool flatColor, bool noColor, Ogre::ColourValue meshColor, bool mapLayerColor, std::string colorLayer, bool useRainbow, bool invertRainbow, Ogre::ColourValue minColor, Ogre::ColourValue maxColor, - bool autocomputeIntensity, float minIntensity, float maxIntensity) { + bool autocomputeIntensity, float minIntensity, float maxIntensity, float gridLineThickness, + int gridCellDecimation) { const auto startTime = std::chrono::high_resolution_clock::now(); if (!haveMap_) { ROS_DEBUG("Unable to visualize grid map, no map data. Use setMessage() first!"); @@ -91,8 +92,10 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f // Reset the mesh lines. meshLines_->clear(); if (showGridLines) { - initializeMeshLines(cols, rows, resolution, alpha); + initializeMeshLines(cols, rows, resolution, alpha, gridLineThickness); } + // Make sure gridCellDecimation is within a valid range + gridCellDecimation = std::max(gridCellDecimation, 1); // Compute a mask of valid cells. auto basicLayers = map_.getBasicLayers(); @@ -185,34 +188,48 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f manualObject_->quad(vertexIndices[0], vertexIndices[2], vertexIndices[3], vertexIndices[1]); } } + } - // plot grid lines - if (showGridLines) { - meshLines_->addPoint(vertexPositions[0]); - meshLines_->addPoint(vertexPositions[1]); - meshLines_->newLine(); - - if (vertexIndices.size() == 3) { - meshLines_->addPoint(vertexPositions[1]); - meshLines_->addPoint(vertexPositions[2]); - meshLines_->newLine(); - } else { - meshLines_->addPoint(vertexPositions[1]); - meshLines_->addPoint(vertexPositions[3]); - meshLines_->newLine(); + // compute grid lines vertices + const bool isNthRow{i % gridCellDecimation == 0}; + const bool isNthCol{j % gridCellDecimation == 0}; + const bool isLastRow{i == rows - 1}; + const bool isLastCol{j == cols - 1}; + const bool isDrawMeshLines{(isNthRow && isNthCol) || (isLastRow && isNthCol) || (isLastCol && isNthRow) || (isLastRow && isLastCol)}; - meshLines_->addPoint(vertexPositions[3]); - meshLines_->addPoint(vertexPositions[2]); - meshLines_->newLine(); - } + if (!showGridLines || !isDrawMeshLines) { + continue; + } + std::vector meshLineVertices = computeMeshLineVertices(i, j, gridCellDecimation, isNthRow, isNthCol, isLastRow, + isLastCol, resolution, topLeft, heightOrFlatData, isValid); + + // plot grid lines if we have enough points + if (meshLineVertices.size() > 2) { + meshLines_->addPoint(meshLineVertices[0]); + meshLines_->addPoint(meshLineVertices[1]); + meshLines_->newLine(); + + if (meshLineVertices.size() == 3) { + meshLines_->addPoint(meshLineVertices[1]); + meshLines_->addPoint(meshLineVertices[2]); + meshLines_->newLine(); + } else { + meshLines_->addPoint(meshLineVertices[1]); + meshLines_->addPoint(meshLineVertices[3]); + meshLines_->newLine(); - meshLines_->addPoint(vertexPositions[2]); - meshLines_->addPoint(vertexPositions[0]); + meshLines_->addPoint(meshLineVertices[3]); + meshLines_->addPoint(meshLineVertices[2]); meshLines_->newLine(); } + + meshLines_->addPoint(meshLineVertices[2]); + meshLines_->addPoint(meshLineVertices[0]); + meshLines_->newLine(); } - } - } + + } // end for loop cols + } // end for loop rows manualObject_->end(); material_->getTechnique(0)->setLightingEnabled(false); @@ -230,6 +247,29 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f ROS_DEBUG_STREAM("Visualization of grid_map took: " << elapsedTime.count() << " ms."); } +std::vector GridMapVisual::computeMeshLineVertices(int i, int j, int gridCellDecimation, bool isNthRow, bool isNthCol, + bool isLastRow, bool isLastCol, double resolution, + const grid_map::Position& topLeft, + const Eigen::ArrayXXf& heightOrFlatData, const MaskArray& isValid) const { + std::vector meshLineVertices; + meshLineVertices.reserve(4); + for (int k = 0; k < 2; ++k) { + for (int l = 0; l < 2; ++l) { + const int strideX = isLastRow ? (i % gridCellDecimation + int(isNthRow) * gridCellDecimation) : gridCellDecimation; + const int strideY = isLastCol ? (j % gridCellDecimation + int(isNthCol) * gridCellDecimation) : gridCellDecimation; + const int x = i - k * strideX; + const int y = j - l * strideY; + grid_map::Index index(x > 0 ? x : 0, y > 0 ? y : 0); + if (!isValid(index(0), index(1))) { + continue; + } + const grid_map::Position position = topLeft.array() - index.cast() * resolution; + meshLineVertices.emplace_back(position(0), position(1), heightOrFlatData(index(0), index(1))); + } + } + return meshLineVertices; +} + void GridMapVisual::initializeAndBeginManualObject(size_t nVertices) { if (!manualObject_) { static uint32_t count = 0; @@ -296,9 +336,9 @@ GridMapVisual::ColorArray GridMapVisual::computeColorValues(Eigen::RefsetColor(0.0, 0.0, 0.0, alpha); - meshLines_->setLineWidth(resolution / 10.0); + meshLines_->setLineWidth(resolution * lineWidth); meshLines_->setMaxPointsPerLine(2); // In the algorithm below, we have to account for max. 4 lines per cell. const size_t nLines = 2 * (rows * (cols - 1) + cols * (rows - 1)); From 0e4b5a4fd3de55f8361f5f7b327e9f2aa3008d23 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Thu, 18 Nov 2021 13:05:42 +0000 Subject: [PATCH 28/83] Merge branch 'fix/grid_map/increase_unit_test_value' into 'master' [grid_map] Increase unit test value because input can be random GitOrigin-RevId: 32b119c24609f14bac4140eaef72cb272c20c54f --- grid_map_pcl/test/GridMapPclLoaderTest.cpp | 2 +- grid_map_pcl/test/test_helpers.cpp | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/grid_map_pcl/test/GridMapPclLoaderTest.cpp b/grid_map_pcl/test/GridMapPclLoaderTest.cpp index b9e52e009..5b0f10913 100644 --- a/grid_map_pcl/test/GridMapPclLoaderTest.cpp +++ b/grid_map_pcl/test/GridMapPclLoaderTest.cpp @@ -37,7 +37,7 @@ TEST(GridMapPclLoaderTest, FlatGroundRealDataset) // NOLINT // allow for some difference (2cm) since the input cloud is noisy (real dataset) double referenceElevation = elevationValues.front(); for (const auto& elevation : elevationValues) { - EXPECT_NEAR(elevation, referenceElevation, 2e-2); + EXPECT_NEAR(elevation, referenceElevation, 3e-2); } } diff --git a/grid_map_pcl/test/test_helpers.cpp b/grid_map_pcl/test/test_helpers.cpp index 037fce436..44926b205 100644 --- a/grid_map_pcl/test/test_helpers.cpp +++ b/grid_map_pcl/test/test_helpers.cpp @@ -115,13 +115,9 @@ Pointcloud::Ptr concatenate(Pointcloud::Ptr cloud1, Pointcloud::Ptr cloud2) { Pointcloud::Ptr concatenatedCloud(new grid_map_pcl_test::Pointcloud()); concatenatedCloud->points.reserve(cloud1->points.size() + cloud2->points.size()); - for (const auto& point : cloud2->points) { - concatenatedCloud->push_back(point); - } + std::copy(cloud2->points.begin(), cloud2->points.end(), std::back_inserter(concatenatedCloud->points)); - for (const auto& point : cloud1->points) { - concatenatedCloud->push_back(point); - } + std::copy(cloud1->points.begin(), cloud1->points.end(), std::back_inserter(concatenatedCloud->points)); return concatenatedCloud; } From 794909ade22c3dae1d10384c9417d3ba90979d8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Mon, 22 Nov 2021 13:27:03 +0000 Subject: [PATCH 29/83] Merge branch 'github/grid_map/297' into 'master' Import PR 'Add colormaps for Rviz plugin'. GitOrigin-RevId: 8497525b4959cf6fd19cf4f5692aed252d167270 --- .../grid_map_rviz_plugin/GridMapColorMaps.hpp | 77 +++++++++++++++++++ .../grid_map_rviz_plugin/GridMapDisplay.hpp | 8 +- .../grid_map_rviz_plugin/GridMapVisual.hpp | 17 ++-- grid_map_rviz_plugin/src/GridMapDisplay.cpp | 66 ++++++++++------ grid_map_rviz_plugin/src/GridMapVisual.cpp | 42 +++++----- 5 files changed, 157 insertions(+), 53 deletions(-) create mode 100644 grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp new file mode 100644 index 000000000..ce8f978f0 --- /dev/null +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp @@ -0,0 +1,77 @@ +/* + * GridMapColorMaps.hpp + * + * Created on: Apr 27, 2021 + * Author: Matias Mattamala + * Institute: University of Oxford + */ + + +#pragma once +#include +#include +#include + +namespace grid_map_rviz_plugin { + +const std::map>> colorMap{ + {"viridis", {{0.267004, 0.004874, 0.329415},{0.268510, 0.009605, 0.335427},{0.269944, 0.014625, 0.341379},{0.271305, 0.019942, 0.347269},{0.272594, 0.025563, 0.353093},{0.273809, 0.031497, 0.358853},{0.274952, 0.037752, 0.364543},{0.276022, 0.044167, 0.370164},{0.277018, 0.050344, 0.375715},{0.277941, 0.056324, 0.381191},{0.278791, 0.062145, 0.386592},{0.279566, 0.067836, 0.391917},{0.280267, 0.073417, 0.397163},{0.280894, 0.078907, 0.402329},{0.281446, 0.084320, 0.407414},{0.281924, 0.089666, 0.412415},{0.282327, 0.094955, 0.417331},{0.282656, 0.100196, 0.422160},{0.282910, 0.105393, 0.426902},{0.283091, 0.110553, 0.431554},{0.283197, 0.115680, 0.436115},{0.283229, 0.120777, 0.440584},{0.283187, 0.125848, 0.444960},{0.283072, 0.130895, 0.449241},{0.282884, 0.135920, 0.453427},{0.282623, 0.140926, 0.457517},{0.282290, 0.145912, 0.461510},{0.281887, 0.150881, 0.465405},{0.281412, 0.155834, 0.469201},{0.280868, 0.160771, 0.472899},{0.280255, 0.165693, 0.476498},{0.279574, 0.170599, 0.479997},{0.278826, 0.175490, 0.483397},{0.278012, 0.180367, 0.486697},{0.277134, 0.185228, 0.489898},{0.276194, 0.190074, 0.493001},{0.275191, 0.194905, 0.496005},{0.274128, 0.199721, 0.498911},{0.273006, 0.204520, 0.501721},{0.271828, 0.209303, 0.504434},{0.270595, 0.214069, 0.507052},{0.269308, 0.218818, 0.509577},{0.267968, 0.223549, 0.512008},{0.266580, 0.228262, 0.514349},{0.265145, 0.232956, 0.516599},{0.263663, 0.237631, 0.518762},{0.262138, 0.242286, 0.520837},{0.260571, 0.246922, 0.522828},{0.258965, 0.251537, 0.524736},{0.257322, 0.256130, 0.526563},{0.255645, 0.260703, 0.528312},{0.253935, 0.265254, 0.529983},{0.252194, 0.269783, 0.531579},{0.250425, 0.274290, 0.533103},{0.248629, 0.278775, 0.534556},{0.246811, 0.283237, 0.535941},{0.244972, 0.287675, 0.537260},{0.243113, 0.292092, 0.538516},{0.241237, 0.296485, 0.539709},{0.239346, 0.300855, 0.540844},{0.237441, 0.305202, 0.541921},{0.235526, 0.309527, 0.542944},{0.233603, 0.313828, 0.543914},{0.231674, 0.318106, 0.544834},{0.229739, 0.322361, 0.545706},{0.227802, 0.326594, 0.546532},{0.225863, 0.330805, 0.547314},{0.223925, 0.334994, 0.548053},{0.221989, 0.339161, 0.548752},{0.220057, 0.343307, 0.549413},{0.218130, 0.347432, 0.550038},{0.216210, 0.351535, 0.550627},{0.214298, 0.355619, 0.551184},{0.212395, 0.359683, 0.551710},{0.210503, 0.363727, 0.552206},{0.208623, 0.367752, 0.552675},{0.206756, 0.371758, 0.553117},{0.204903, 0.375746, 0.553533},{0.203063, 0.379716, 0.553925},{0.201239, 0.383670, 0.554294},{0.199430, 0.387607, 0.554642},{0.197636, 0.391528, 0.554969},{0.195860, 0.395433, 0.555276},{0.194100, 0.399323, 0.555565},{0.192357, 0.403199, 0.555836},{0.190631, 0.407061, 0.556089},{0.188923, 0.410910, 0.556326},{0.187231, 0.414746, 0.556547},{0.185556, 0.418570, 0.556753},{0.183898, 0.422383, 0.556944},{0.182256, 0.426184, 0.557120},{0.180629, 0.429975, 0.557282},{0.179019, 0.433756, 0.557430},{0.177423, 0.437527, 0.557565},{0.175841, 0.441290, 0.557685},{0.174274, 0.445044, 0.557792},{0.172719, 0.448791, 0.557885},{0.171176, 0.452530, 0.557965},{0.169646, 0.456262, 0.558030},{0.168126, 0.459988, 0.558082},{0.166617, 0.463708, 0.558119},{0.165117, 0.467423, 0.558141},{0.163625, 0.471133, 0.558148},{0.162142, 0.474838, 0.558140},{0.160665, 0.478540, 0.558115},{0.159194, 0.482237, 0.558073},{0.157729, 0.485932, 0.558013},{0.156270, 0.489624, 0.557936},{0.154815, 0.493313, 0.557840},{0.153364, 0.497000, 0.557724},{0.151918, 0.500685, 0.557587},{0.150476, 0.504369, 0.557430},{0.149039, 0.508051, 0.557250},{0.147607, 0.511733, 0.557049},{0.146180, 0.515413, 0.556823},{0.144759, 0.519093, 0.556572},{0.143343, 0.522773, 0.556295},{0.141935, 0.526453, 0.555991},{0.140536, 0.530132, 0.555659},{0.139147, 0.533812, 0.555298},{0.137770, 0.537492, 0.554906},{0.136408, 0.541173, 0.554483},{0.135066, 0.544853, 0.554029},{0.133743, 0.548535, 0.553541},{0.132444, 0.552216, 0.553018},{0.131172, 0.555899, 0.552459},{0.129933, 0.559582, 0.551864},{0.128729, 0.563265, 0.551229},{0.127568, 0.566949, 0.550556},{0.126453, 0.570633, 0.549841},{0.125394, 0.574318, 0.549086},{0.124395, 0.578002, 0.548287},{0.123463, 0.581687, 0.547445},{0.122606, 0.585371, 0.546557},{0.121831, 0.589055, 0.545623},{0.121148, 0.592739, 0.544641},{0.120565, 0.596422, 0.543611},{0.120092, 0.600104, 0.542530},{0.119738, 0.603785, 0.541400},{0.119512, 0.607464, 0.540218},{0.119423, 0.611141, 0.538982},{0.119483, 0.614817, 0.537692},{0.119699, 0.618490, 0.536347},{0.120081, 0.622161, 0.534946},{0.120638, 0.625828, 0.533488},{0.121380, 0.629492, 0.531973},{0.122312, 0.633153, 0.530398},{0.123444, 0.636809, 0.528763},{0.124780, 0.640461, 0.527068},{0.126326, 0.644107, 0.525311},{0.128087, 0.647749, 0.523491},{0.130067, 0.651384, 0.521608},{0.132268, 0.655014, 0.519661},{0.134692, 0.658636, 0.517649},{0.137339, 0.662252, 0.515571},{0.140210, 0.665859, 0.513427},{0.143303, 0.669459, 0.511215},{0.146616, 0.673050, 0.508936},{0.150148, 0.676631, 0.506589},{0.153894, 0.680203, 0.504172},{0.157851, 0.683765, 0.501686},{0.162016, 0.687316, 0.499129},{0.166383, 0.690856, 0.496502},{0.170948, 0.694384, 0.493803},{0.175707, 0.697900, 0.491033},{0.180653, 0.701402, 0.488189},{0.185783, 0.704891, 0.485273},{0.191090, 0.708366, 0.482284},{0.196571, 0.711827, 0.479221},{0.202219, 0.715272, 0.476084},{0.208030, 0.718701, 0.472873},{0.214000, 0.722114, 0.469588},{0.220124, 0.725509, 0.466226},{0.226397, 0.728888, 0.462789},{0.232815, 0.732247, 0.459277},{0.239374, 0.735588, 0.455688},{0.246070, 0.738910, 0.452024},{0.252899, 0.742211, 0.448284},{0.259857, 0.745492, 0.444467},{0.266941, 0.748751, 0.440573},{0.274149, 0.751988, 0.436601},{0.281477, 0.755203, 0.432552},{0.288921, 0.758394, 0.428426},{0.296479, 0.761561, 0.424223},{0.304148, 0.764704, 0.419943},{0.311925, 0.767822, 0.415586},{0.319809, 0.770914, 0.411152},{0.327796, 0.773980, 0.406640},{0.335885, 0.777018, 0.402049},{0.344074, 0.780029, 0.397381},{0.352360, 0.783011, 0.392636},{0.360741, 0.785964, 0.387814},{0.369214, 0.788888, 0.382914},{0.377779, 0.791781, 0.377939},{0.386433, 0.794644, 0.372886},{0.395174, 0.797475, 0.367757},{0.404001, 0.800275, 0.362552},{0.412913, 0.803041, 0.357269},{0.421908, 0.805774, 0.351910},{0.430983, 0.808473, 0.346476},{0.440137, 0.811138, 0.340967},{0.449368, 0.813768, 0.335384},{0.458674, 0.816363, 0.329727},{0.468053, 0.818921, 0.323998},{0.477504, 0.821444, 0.318195},{0.487026, 0.823929, 0.312321},{0.496615, 0.826376, 0.306377},{0.506271, 0.828786, 0.300362},{0.515992, 0.831158, 0.294279},{0.525776, 0.833491, 0.288127},{0.535621, 0.835785, 0.281908},{0.545524, 0.838039, 0.275626},{0.555484, 0.840254, 0.269281},{0.565498, 0.842430, 0.262877},{0.575563, 0.844566, 0.256415},{0.585678, 0.846661, 0.249897},{0.595839, 0.848717, 0.243329},{0.606045, 0.850733, 0.236712},{0.616293, 0.852709, 0.230052},{0.626579, 0.854645, 0.223353},{0.636902, 0.856542, 0.216620},{0.647257, 0.858400, 0.209861},{0.657642, 0.860219, 0.203082},{0.668054, 0.861999, 0.196293},{0.678489, 0.863742, 0.189503},{0.688944, 0.865448, 0.182725},{0.699415, 0.867117, 0.175971},{0.709898, 0.868751, 0.169257},{0.720391, 0.870350, 0.162603},{0.730889, 0.871916, 0.156029},{0.741388, 0.873449, 0.149561},{0.751884, 0.874951, 0.143228},{0.762373, 0.876424, 0.137064},{0.772852, 0.877868, 0.131109},{0.783315, 0.879285, 0.125405},{0.793760, 0.880678, 0.120005},{0.804182, 0.882046, 0.114965},{0.814576, 0.883393, 0.110347},{0.824940, 0.884720, 0.106217},{0.835270, 0.886029, 0.102646},{0.845561, 0.887322, 0.099702},{0.855810, 0.888601, 0.097452},{0.866013, 0.889868, 0.095953},{0.876168, 0.891125, 0.095250},{0.886271, 0.892374, 0.095374},{0.896320, 0.893616, 0.096335},{0.906311, 0.894855, 0.098125},{0.916242, 0.896091, 0.100717},{0.926106, 0.897330, 0.104071},{0.935904, 0.898570, 0.108131},{0.945636, 0.899815, 0.112838},{0.955300, 0.901065, 0.118128},{0.964894, 0.902323, 0.123941},{0.974417, 0.903590, 0.130215},{0.983868, 0.904867, 0.136897},{0.993248, 0.906157, 0.143936}}}, + {"plasma", {{0.050383, 0.029803, 0.527975},{0.063536, 0.028426, 0.533124},{0.075353, 0.027206, 0.538007},{0.086222, 0.026125, 0.542658},{0.096379, 0.025165, 0.547103},{0.105980, 0.024309, 0.551368},{0.115124, 0.023556, 0.555468},{0.123903, 0.022878, 0.559423},{0.132381, 0.022258, 0.563250},{0.140603, 0.021687, 0.566959},{0.148607, 0.021154, 0.570562},{0.156421, 0.020651, 0.574065},{0.164070, 0.020171, 0.577478},{0.171574, 0.019706, 0.580806},{0.178950, 0.019252, 0.584054},{0.186213, 0.018803, 0.587228},{0.193374, 0.018354, 0.590330},{0.200445, 0.017902, 0.593364},{0.207435, 0.017442, 0.596333},{0.214350, 0.016973, 0.599239},{0.221197, 0.016497, 0.602083},{0.227983, 0.016007, 0.604867},{0.234715, 0.015502, 0.607592},{0.241396, 0.014979, 0.610259},{0.248032, 0.014439, 0.612868},{0.254627, 0.013882, 0.615419},{0.261183, 0.013308, 0.617911},{0.267703, 0.012716, 0.620346},{0.274191, 0.012109, 0.622722},{0.280648, 0.011488, 0.625038},{0.287076, 0.010855, 0.627295},{0.293478, 0.010213, 0.629490},{0.299855, 0.009561, 0.631624},{0.306210, 0.008902, 0.633694},{0.312543, 0.008239, 0.635700},{0.318856, 0.007576, 0.637640},{0.325150, 0.006915, 0.639512},{0.331426, 0.006261, 0.641316},{0.337683, 0.005618, 0.643049},{0.343925, 0.004991, 0.644710},{0.350150, 0.004382, 0.646298},{0.356359, 0.003798, 0.647810},{0.362553, 0.003243, 0.649245},{0.368733, 0.002724, 0.650601},{0.374897, 0.002245, 0.651876},{0.381047, 0.001814, 0.653068},{0.387183, 0.001434, 0.654177},{0.393304, 0.001114, 0.655199},{0.399411, 0.000859, 0.656133},{0.405503, 0.000678, 0.656977},{0.411580, 0.000577, 0.657730},{0.417642, 0.000564, 0.658390},{0.423689, 0.000646, 0.658956},{0.429719, 0.000831, 0.659425},{0.435734, 0.001127, 0.659797},{0.441732, 0.001540, 0.660069},{0.447714, 0.002080, 0.660240},{0.453677, 0.002755, 0.660310},{0.459623, 0.003574, 0.660277},{0.465550, 0.004545, 0.660139},{0.471457, 0.005678, 0.659897},{0.477344, 0.006980, 0.659549},{0.483210, 0.008460, 0.659095},{0.489055, 0.010127, 0.658534},{0.494877, 0.011990, 0.657865},{0.500678, 0.014055, 0.657088},{0.506454, 0.016333, 0.656202},{0.512206, 0.018833, 0.655209},{0.517933, 0.021563, 0.654109},{0.523633, 0.024532, 0.652901},{0.529306, 0.027747, 0.651586},{0.534952, 0.031217, 0.650165},{0.540570, 0.034950, 0.648640},{0.546157, 0.038954, 0.647010},{0.551715, 0.043136, 0.645277},{0.557243, 0.047331, 0.643443},{0.562738, 0.051545, 0.641509},{0.568201, 0.055778, 0.639477},{0.573632, 0.060028, 0.637349},{0.579029, 0.064296, 0.635126},{0.584391, 0.068579, 0.632812},{0.589719, 0.072878, 0.630408},{0.595011, 0.077190, 0.627917},{0.600266, 0.081516, 0.625342},{0.605485, 0.085854, 0.622686},{0.610667, 0.090204, 0.619951},{0.615812, 0.094564, 0.617140},{0.620919, 0.098934, 0.614257},{0.625987, 0.103312, 0.611305},{0.631017, 0.107699, 0.608287},{0.636008, 0.112092, 0.605205},{0.640959, 0.116492, 0.602065},{0.645872, 0.120898, 0.598867},{0.650746, 0.125309, 0.595617},{0.655580, 0.129725, 0.592317},{0.660374, 0.134144, 0.588971},{0.665129, 0.138566, 0.585582},{0.669845, 0.142992, 0.582154},{0.674522, 0.147419, 0.578688},{0.679160, 0.151848, 0.575189},{0.683758, 0.156278, 0.571660},{0.688318, 0.160709, 0.568103},{0.692840, 0.165141, 0.564522},{0.697324, 0.169573, 0.560919},{0.701769, 0.174005, 0.557296},{0.706178, 0.178437, 0.553657},{0.710549, 0.182868, 0.550004},{0.714883, 0.187299, 0.546338},{0.719181, 0.191729, 0.542663},{0.723444, 0.196158, 0.538981},{0.727670, 0.200586, 0.535293},{0.731862, 0.205013, 0.531601},{0.736019, 0.209439, 0.527908},{0.740143, 0.213864, 0.524216},{0.744232, 0.218288, 0.520524},{0.748289, 0.222711, 0.516834},{0.752312, 0.227133, 0.513149},{0.756304, 0.231555, 0.509468},{0.760264, 0.235976, 0.505794},{0.764193, 0.240396, 0.502126},{0.768090, 0.244817, 0.498465},{0.771958, 0.249237, 0.494813},{0.775796, 0.253658, 0.491171},{0.779604, 0.258078, 0.487539},{0.783383, 0.262500, 0.483918},{0.787133, 0.266922, 0.480307},{0.790855, 0.271345, 0.476706},{0.794549, 0.275770, 0.473117},{0.798216, 0.280197, 0.469538},{0.801855, 0.284626, 0.465971},{0.805467, 0.289057, 0.462415},{0.809052, 0.293491, 0.458870},{0.812612, 0.297928, 0.455338},{0.816144, 0.302368, 0.451816},{0.819651, 0.306812, 0.448306},{0.823132, 0.311261, 0.444806},{0.826588, 0.315714, 0.441316},{0.830018, 0.320172, 0.437836},{0.833422, 0.324635, 0.434366},{0.836801, 0.329105, 0.430905},{0.840155, 0.333580, 0.427455},{0.843484, 0.338062, 0.424013},{0.846788, 0.342551, 0.420579},{0.850066, 0.347048, 0.417153},{0.853319, 0.351553, 0.413734},{0.856547, 0.356066, 0.410322},{0.859750, 0.360588, 0.406917},{0.862927, 0.365119, 0.403519},{0.866078, 0.369660, 0.400126},{0.869203, 0.374212, 0.396738},{0.872303, 0.378774, 0.393355},{0.875376, 0.383347, 0.389976},{0.878423, 0.387932, 0.386600},{0.881443, 0.392529, 0.383229},{0.884436, 0.397139, 0.379860},{0.887402, 0.401762, 0.376494},{0.890340, 0.406398, 0.373130},{0.893250, 0.411048, 0.369768},{0.896131, 0.415712, 0.366407},{0.898984, 0.420392, 0.363047},{0.901807, 0.425087, 0.359688},{0.904601, 0.429797, 0.356329},{0.907365, 0.434524, 0.352970},{0.910098, 0.439268, 0.349610},{0.912800, 0.444029, 0.346251},{0.915471, 0.448807, 0.342890},{0.918109, 0.453603, 0.339529},{0.920714, 0.458417, 0.336166},{0.923287, 0.463251, 0.332801},{0.925825, 0.468103, 0.329435},{0.928329, 0.472975, 0.326067},{0.930798, 0.477867, 0.322697},{0.933232, 0.482780, 0.319325},{0.935630, 0.487712, 0.315952},{0.937990, 0.492667, 0.312575},{0.940313, 0.497642, 0.309197},{0.942598, 0.502639, 0.305816},{0.944844, 0.507658, 0.302433},{0.947051, 0.512699, 0.299049},{0.949217, 0.517763, 0.295662},{0.951344, 0.522850, 0.292275},{0.953428, 0.527960, 0.288883},{0.955470, 0.533093, 0.285490},{0.957469, 0.538250, 0.282096},{0.959424, 0.543431, 0.278701},{0.961336, 0.548636, 0.275305},{0.963203, 0.553865, 0.271909},{0.965024, 0.559118, 0.268513},{0.966798, 0.564396, 0.265118},{0.968526, 0.569700, 0.261721},{0.970205, 0.575028, 0.258325},{0.971835, 0.580382, 0.254931},{0.973416, 0.585761, 0.251540},{0.974947, 0.591165, 0.248151},{0.976428, 0.596595, 0.244767},{0.977856, 0.602051, 0.241387},{0.979233, 0.607532, 0.238013},{0.980556, 0.613039, 0.234646},{0.981826, 0.618572, 0.231287},{0.983041, 0.624131, 0.227937},{0.984199, 0.629718, 0.224595},{0.985301, 0.635330, 0.221265},{0.986345, 0.640969, 0.217948},{0.987332, 0.646633, 0.214648},{0.988260, 0.652325, 0.211364},{0.989128, 0.658043, 0.208100},{0.989935, 0.663787, 0.204859},{0.990681, 0.669558, 0.201642},{0.991365, 0.675355, 0.198453},{0.991985, 0.681179, 0.195295},{0.992541, 0.687030, 0.192170},{0.993032, 0.692907, 0.189084},{0.993456, 0.698810, 0.186041},{0.993814, 0.704741, 0.183043},{0.994103, 0.710698, 0.180097},{0.994324, 0.716681, 0.177208},{0.994474, 0.722691, 0.174381},{0.994553, 0.728728, 0.171622},{0.994561, 0.734791, 0.168938},{0.994495, 0.740880, 0.166335},{0.994355, 0.746995, 0.163821},{0.994141, 0.753137, 0.161404},{0.993851, 0.759304, 0.159092},{0.993482, 0.765499, 0.156891},{0.993033, 0.771720, 0.154808},{0.992505, 0.777967, 0.152855},{0.991897, 0.784239, 0.151042},{0.991209, 0.790537, 0.149377},{0.990439, 0.796859, 0.147870},{0.989587, 0.803205, 0.146529},{0.988648, 0.809579, 0.145357},{0.987621, 0.815978, 0.144363},{0.986509, 0.822401, 0.143557},{0.985314, 0.828846, 0.142945},{0.984031, 0.835315, 0.142528},{0.982653, 0.841812, 0.142303},{0.981190, 0.848329, 0.142279},{0.979644, 0.854866, 0.142453},{0.977995, 0.861432, 0.142808},{0.976265, 0.868016, 0.143351},{0.974443, 0.874622, 0.144061},{0.972530, 0.881250, 0.144923},{0.970533, 0.887896, 0.145919},{0.968443, 0.894564, 0.147014},{0.966271, 0.901249, 0.148180},{0.964021, 0.907950, 0.149370},{0.961681, 0.914672, 0.150520},{0.959276, 0.921407, 0.151566},{0.956808, 0.928152, 0.152409},{0.954287, 0.934908, 0.152921},{0.951726, 0.941671, 0.152925},{0.949151, 0.948435, 0.152178},{0.946602, 0.955190, 0.150328},{0.944152, 0.961916, 0.146861},{0.941896, 0.968590, 0.140956},{0.940015, 0.975158, 0.131326}}}, + {"inferno", {{0.001462, 0.000466, 0.013866},{0.002267, 0.001270, 0.018570},{0.003299, 0.002249, 0.024239},{0.004547, 0.003392, 0.030909},{0.006006, 0.004692, 0.038558},{0.007676, 0.006136, 0.046836},{0.009561, 0.007713, 0.055143},{0.011663, 0.009417, 0.063460},{0.013995, 0.011225, 0.071862},{0.016561, 0.013136, 0.080282},{0.019373, 0.015133, 0.088767},{0.022447, 0.017199, 0.097327},{0.025793, 0.019331, 0.105930},{0.029432, 0.021503, 0.114621},{0.033385, 0.023702, 0.123397},{0.037668, 0.025921, 0.132232},{0.042253, 0.028139, 0.141141},{0.046915, 0.030324, 0.150164},{0.051644, 0.032474, 0.159254},{0.056449, 0.034569, 0.168414},{0.061340, 0.036590, 0.177642},{0.066331, 0.038504, 0.186962},{0.071429, 0.040294, 0.196354},{0.076637, 0.041905, 0.205799},{0.081962, 0.043328, 0.215289},{0.087411, 0.044556, 0.224813},{0.092990, 0.045583, 0.234358},{0.098702, 0.046402, 0.243904},{0.104551, 0.047008, 0.253430},{0.110536, 0.047399, 0.262912},{0.116656, 0.047574, 0.272321},{0.122908, 0.047536, 0.281624},{0.129285, 0.047293, 0.290788},{0.135778, 0.046856, 0.299776},{0.142378, 0.046242, 0.308553},{0.149073, 0.045468, 0.317085},{0.155850, 0.044559, 0.325338},{0.162689, 0.043554, 0.333277},{0.169575, 0.042489, 0.340874},{0.176493, 0.041402, 0.348111},{0.183429, 0.040329, 0.354971},{0.190367, 0.039309, 0.361447},{0.197297, 0.038400, 0.367535},{0.204209, 0.037632, 0.373238},{0.211095, 0.037030, 0.378563},{0.217949, 0.036615, 0.383522},{0.224763, 0.036405, 0.388129},{0.231538, 0.036405, 0.392400},{0.238273, 0.036621, 0.396353},{0.244967, 0.037055, 0.400007},{0.251620, 0.037705, 0.403378},{0.258234, 0.038571, 0.406485},{0.264810, 0.039647, 0.409345},{0.271347, 0.040922, 0.411976},{0.277850, 0.042353, 0.414392},{0.284321, 0.043933, 0.416608},{0.290763, 0.045644, 0.418637},{0.297178, 0.047470, 0.420491},{0.303568, 0.049396, 0.422182},{0.309935, 0.051407, 0.423721},{0.316282, 0.053490, 0.425116},{0.322610, 0.055634, 0.426377},{0.328921, 0.057827, 0.427511},{0.335217, 0.060060, 0.428524},{0.341500, 0.062325, 0.429425},{0.347771, 0.064616, 0.430217},{0.354032, 0.066925, 0.430906},{0.360284, 0.069247, 0.431497},{0.366529, 0.071579, 0.431994},{0.372768, 0.073915, 0.432400},{0.379001, 0.076253, 0.432719},{0.385228, 0.078591, 0.432955},{0.391453, 0.080927, 0.433109},{0.397674, 0.083257, 0.433183},{0.403894, 0.085580, 0.433179},{0.410113, 0.087896, 0.433098},{0.416331, 0.090203, 0.432943},{0.422549, 0.092501, 0.432714},{0.428768, 0.094790, 0.432412},{0.434987, 0.097069, 0.432039},{0.441207, 0.099338, 0.431594},{0.447428, 0.101597, 0.431080},{0.453651, 0.103848, 0.430498},{0.459875, 0.106089, 0.429846},{0.466100, 0.108322, 0.429125},{0.472328, 0.110547, 0.428334},{0.478558, 0.112764, 0.427475},{0.484789, 0.114974, 0.426548},{0.491022, 0.117179, 0.425552},{0.497257, 0.119379, 0.424488},{0.503493, 0.121575, 0.423356},{0.509730, 0.123769, 0.422156},{0.515967, 0.125960, 0.420887},{0.522206, 0.128150, 0.419549},{0.528444, 0.130341, 0.418142},{0.534683, 0.132534, 0.416667},{0.540920, 0.134729, 0.415123},{0.547157, 0.136929, 0.413511},{0.553392, 0.139134, 0.411829},{0.559624, 0.141346, 0.410078},{0.565854, 0.143567, 0.408258},{0.572081, 0.145797, 0.406369},{0.578304, 0.148039, 0.404411},{0.584521, 0.150294, 0.402385},{0.590734, 0.152563, 0.400290},{0.596940, 0.154848, 0.398125},{0.603139, 0.157151, 0.395891},{0.609330, 0.159474, 0.393589},{0.615513, 0.161817, 0.391219},{0.621685, 0.164184, 0.388781},{0.627847, 0.166575, 0.386276},{0.633998, 0.168992, 0.383704},{0.640135, 0.171438, 0.381065},{0.646260, 0.173914, 0.378359},{0.652369, 0.176421, 0.375586},{0.658463, 0.178962, 0.372748},{0.664540, 0.181539, 0.369846},{0.670599, 0.184153, 0.366879},{0.676638, 0.186807, 0.363849},{0.682656, 0.189501, 0.360757},{0.688653, 0.192239, 0.357603},{0.694627, 0.195021, 0.354388},{0.700576, 0.197851, 0.351113},{0.706500, 0.200728, 0.347777},{0.712396, 0.203656, 0.344383},{0.718264, 0.206636, 0.340931},{0.724103, 0.209670, 0.337424},{0.729909, 0.212759, 0.333861},{0.735683, 0.215906, 0.330245},{0.741423, 0.219112, 0.326576},{0.747127, 0.222378, 0.322856},{0.752794, 0.225706, 0.319085},{0.758422, 0.229097, 0.315266},{0.764010, 0.232554, 0.311399},{0.769556, 0.236077, 0.307485},{0.775059, 0.239667, 0.303526},{0.780517, 0.243327, 0.299523},{0.785929, 0.247056, 0.295477},{0.791293, 0.250856, 0.291390},{0.796607, 0.254728, 0.287264},{0.801871, 0.258674, 0.283099},{0.807082, 0.262692, 0.278898},{0.812239, 0.266786, 0.274661},{0.817341, 0.270954, 0.270390},{0.822386, 0.275197, 0.266085},{0.827372, 0.279517, 0.261750},{0.832299, 0.283913, 0.257383},{0.837165, 0.288385, 0.252988},{0.841969, 0.292933, 0.248564},{0.846709, 0.297559, 0.244113},{0.851384, 0.302260, 0.239636},{0.855992, 0.307038, 0.235133},{0.860533, 0.311892, 0.230606},{0.865006, 0.316822, 0.226055},{0.869409, 0.321827, 0.221482},{0.873741, 0.326906, 0.216886},{0.878001, 0.332060, 0.212268},{0.882188, 0.337287, 0.207628},{0.886302, 0.342586, 0.202968},{0.890341, 0.347957, 0.198286},{0.894305, 0.353399, 0.193584},{0.898192, 0.358911, 0.188860},{0.902003, 0.364492, 0.184116},{0.905735, 0.370140, 0.179350},{0.909390, 0.375856, 0.174563},{0.912966, 0.381636, 0.169755},{0.916462, 0.387481, 0.164924},{0.919879, 0.393389, 0.160070},{0.923215, 0.399359, 0.155193},{0.926470, 0.405389, 0.150292},{0.929644, 0.411479, 0.145367},{0.932737, 0.417627, 0.140417},{0.935747, 0.423831, 0.135440},{0.938675, 0.430091, 0.130438},{0.941521, 0.436405, 0.125409},{0.944285, 0.442772, 0.120354},{0.946965, 0.449191, 0.115272},{0.949562, 0.455660, 0.110164},{0.952075, 0.462178, 0.105031},{0.954506, 0.468744, 0.099874},{0.956852, 0.475356, 0.094695},{0.959114, 0.482014, 0.089499},{0.961293, 0.488716, 0.084289},{0.963387, 0.495462, 0.079073},{0.965397, 0.502249, 0.073859},{0.967322, 0.509078, 0.068659},{0.969163, 0.515946, 0.063488},{0.970919, 0.522853, 0.058367},{0.972590, 0.529798, 0.053324},{0.974176, 0.536780, 0.048392},{0.975677, 0.543798, 0.043618},{0.977092, 0.550850, 0.039050},{0.978422, 0.557937, 0.034931},{0.979666, 0.565057, 0.031409},{0.980824, 0.572209, 0.028508},{0.981895, 0.579392, 0.026250},{0.982881, 0.586606, 0.024661},{0.983779, 0.593849, 0.023770},{0.984591, 0.601122, 0.023606},{0.985315, 0.608422, 0.024202},{0.985952, 0.615750, 0.025592},{0.986502, 0.623105, 0.027814},{0.986964, 0.630485, 0.030908},{0.987337, 0.637890, 0.034916},{0.987622, 0.645320, 0.039886},{0.987819, 0.652773, 0.045581},{0.987926, 0.660250, 0.051750},{0.987945, 0.667748, 0.058329},{0.987874, 0.675267, 0.065257},{0.987714, 0.682807, 0.072489},{0.987464, 0.690366, 0.079990},{0.987124, 0.697944, 0.087731},{0.986694, 0.705540, 0.095694},{0.986175, 0.713153, 0.103863},{0.985566, 0.720782, 0.112229},{0.984865, 0.728427, 0.120785},{0.984075, 0.736087, 0.129527},{0.983196, 0.743758, 0.138453},{0.982228, 0.751442, 0.147565},{0.981173, 0.759135, 0.156863},{0.980032, 0.766837, 0.166353},{0.978806, 0.774545, 0.176037},{0.977497, 0.782258, 0.185923},{0.976108, 0.789974, 0.196018},{0.974638, 0.797692, 0.206332},{0.973088, 0.805409, 0.216877},{0.971468, 0.813122, 0.227658},{0.969783, 0.820825, 0.238686},{0.968041, 0.828515, 0.249972},{0.966243, 0.836191, 0.261534},{0.964394, 0.843848, 0.273391},{0.962517, 0.851476, 0.285546},{0.960626, 0.859069, 0.298010},{0.958720, 0.866624, 0.310820},{0.956834, 0.874129, 0.323974},{0.954997, 0.881569, 0.337475},{0.953215, 0.888942, 0.351369},{0.951546, 0.896226, 0.365627},{0.950018, 0.903409, 0.380271},{0.948683, 0.910473, 0.395289},{0.947594, 0.917399, 0.410665},{0.946809, 0.924168, 0.426373},{0.946392, 0.930761, 0.442367},{0.946403, 0.937159, 0.458592},{0.946903, 0.943348, 0.474970},{0.947937, 0.949318, 0.491426},{0.949545, 0.955063, 0.507860},{0.951740, 0.960587, 0.524203},{0.954529, 0.965896, 0.540361},{0.957896, 0.971003, 0.556275},{0.961812, 0.975924, 0.571925},{0.966249, 0.980678, 0.587206},{0.971162, 0.985282, 0.602154},{0.976511, 0.989753, 0.616760},{0.982257, 0.994109, 0.631017},{0.988362, 0.998364, 0.644924}}}, + {"magma", {{0.001462, 0.000466, 0.013866},{0.002258, 0.001295, 0.018331},{0.003279, 0.002305, 0.023708},{0.004512, 0.003490, 0.029965},{0.005950, 0.004843, 0.037130},{0.007588, 0.006356, 0.044973},{0.009426, 0.008022, 0.052844},{0.011465, 0.009828, 0.060750},{0.013708, 0.011771, 0.068667},{0.016156, 0.013840, 0.076603},{0.018815, 0.016026, 0.084584},{0.021692, 0.018320, 0.092610},{0.024792, 0.020715, 0.100676},{0.028123, 0.023201, 0.108787},{0.031696, 0.025765, 0.116965},{0.035520, 0.028397, 0.125209},{0.039608, 0.031090, 0.133515},{0.043830, 0.033830, 0.141886},{0.048062, 0.036607, 0.150327},{0.052320, 0.039407, 0.158841},{0.056615, 0.042160, 0.167446},{0.060949, 0.044794, 0.176129},{0.065330, 0.047318, 0.184892},{0.069764, 0.049726, 0.193735},{0.074257, 0.052017, 0.202660},{0.078815, 0.054184, 0.211667},{0.083446, 0.056225, 0.220755},{0.088155, 0.058133, 0.229922},{0.092949, 0.059904, 0.239164},{0.097833, 0.061531, 0.248477},{0.102815, 0.063010, 0.257854},{0.107899, 0.064335, 0.267289},{0.113094, 0.065492, 0.276784},{0.118405, 0.066479, 0.286321},{0.123833, 0.067295, 0.295879},{0.129380, 0.067935, 0.305443},{0.135053, 0.068391, 0.315000},{0.140858, 0.068654, 0.324538},{0.146785, 0.068738, 0.334011},{0.152839, 0.068637, 0.343404},{0.159018, 0.068354, 0.352688},{0.165308, 0.067911, 0.361816},{0.171713, 0.067305, 0.370771},{0.178212, 0.066576, 0.379497},{0.184801, 0.065732, 0.387973},{0.191460, 0.064818, 0.396152},{0.198177, 0.063862, 0.404009},{0.204935, 0.062907, 0.411514},{0.211718, 0.061992, 0.418647},{0.218512, 0.061158, 0.425392},{0.225302, 0.060445, 0.431742},{0.232077, 0.059889, 0.437695},{0.238826, 0.059517, 0.443256},{0.245543, 0.059352, 0.448436},{0.252220, 0.059415, 0.453248},{0.258857, 0.059706, 0.457710},{0.265447, 0.060237, 0.461840},{0.271994, 0.060994, 0.465660},{0.278493, 0.061978, 0.469190},{0.284951, 0.063168, 0.472451},{0.291366, 0.064553, 0.475462},{0.297740, 0.066117, 0.478243},{0.304081, 0.067835, 0.480812},{0.310382, 0.069702, 0.483186},{0.316654, 0.071690, 0.485380},{0.322899, 0.073782, 0.487408},{0.329114, 0.075972, 0.489287},{0.335308, 0.078236, 0.491024},{0.341482, 0.080564, 0.492631},{0.347636, 0.082946, 0.494121},{0.353773, 0.085373, 0.495501},{0.359898, 0.087831, 0.496778},{0.366012, 0.090314, 0.497960},{0.372116, 0.092816, 0.499053},{0.378211, 0.095332, 0.500067},{0.384299, 0.097855, 0.501002},{0.390384, 0.100379, 0.501864},{0.396467, 0.102902, 0.502658},{0.402548, 0.105420, 0.503386},{0.408629, 0.107930, 0.504052},{0.414709, 0.110431, 0.504662},{0.420791, 0.112920, 0.505215},{0.426877, 0.115395, 0.505714},{0.432967, 0.117855, 0.506160},{0.439062, 0.120298, 0.506555},{0.445163, 0.122724, 0.506901},{0.451271, 0.125132, 0.507198},{0.457386, 0.127522, 0.507448},{0.463508, 0.129893, 0.507652},{0.469640, 0.132245, 0.507809},{0.475780, 0.134577, 0.507921},{0.481929, 0.136891, 0.507989},{0.488088, 0.139186, 0.508011},{0.494258, 0.141462, 0.507988},{0.500438, 0.143719, 0.507920},{0.506629, 0.145958, 0.507806},{0.512831, 0.148179, 0.507648},{0.519045, 0.150383, 0.507443},{0.525270, 0.152569, 0.507192},{0.531507, 0.154739, 0.506895},{0.537755, 0.156894, 0.506551},{0.544015, 0.159033, 0.506159},{0.550287, 0.161158, 0.505719},{0.556571, 0.163269, 0.505230},{0.562866, 0.165368, 0.504692},{0.569172, 0.167454, 0.504105},{0.575490, 0.169530, 0.503466},{0.581819, 0.171596, 0.502777},{0.588158, 0.173652, 0.502035},{0.594508, 0.175701, 0.501241},{0.600868, 0.177743, 0.500394},{0.607238, 0.179779, 0.499492},{0.613617, 0.181811, 0.498536},{0.620005, 0.183840, 0.497524},{0.626401, 0.185867, 0.496456},{0.632805, 0.187893, 0.495332},{0.639216, 0.189921, 0.494150},{0.645633, 0.191952, 0.492910},{0.652056, 0.193986, 0.491611},{0.658483, 0.196027, 0.490253},{0.664915, 0.198075, 0.488836},{0.671349, 0.200133, 0.487358},{0.677786, 0.202203, 0.485819},{0.684224, 0.204286, 0.484219},{0.690661, 0.206384, 0.482558},{0.697098, 0.208501, 0.480835},{0.703532, 0.210638, 0.479049},{0.709962, 0.212797, 0.477201},{0.716387, 0.214982, 0.475290},{0.722805, 0.217194, 0.473316},{0.729216, 0.219437, 0.471279},{0.735616, 0.221713, 0.469180},{0.742004, 0.224025, 0.467018},{0.748378, 0.226377, 0.464794},{0.754737, 0.228772, 0.462509},{0.761077, 0.231214, 0.460162},{0.767398, 0.233705, 0.457755},{0.773695, 0.236249, 0.455289},{0.779968, 0.238851, 0.452765},{0.786212, 0.241514, 0.450184},{0.792427, 0.244242, 0.447543},{0.798608, 0.247040, 0.444848},{0.804752, 0.249911, 0.442102},{0.810855, 0.252861, 0.439305},{0.816914, 0.255895, 0.436461},{0.822926, 0.259016, 0.433573},{0.828886, 0.262229, 0.430644},{0.834791, 0.265540, 0.427671},{0.840636, 0.268953, 0.424666},{0.846416, 0.272473, 0.421631},{0.852126, 0.276106, 0.418573},{0.857763, 0.279857, 0.415496},{0.863320, 0.283729, 0.412403},{0.868793, 0.287728, 0.409303},{0.874176, 0.291859, 0.406205},{0.879464, 0.296125, 0.403118},{0.884651, 0.300530, 0.400047},{0.889731, 0.305079, 0.397002},{0.894700, 0.309773, 0.393995},{0.899552, 0.314616, 0.391037},{0.904281, 0.319610, 0.388137},{0.908884, 0.324755, 0.385308},{0.913354, 0.330052, 0.382563},{0.917689, 0.335500, 0.379915},{0.921884, 0.341098, 0.377376},{0.925937, 0.346844, 0.374959},{0.929845, 0.352734, 0.372677},{0.933606, 0.358764, 0.370541},{0.937221, 0.364929, 0.368567},{0.940687, 0.371224, 0.366762},{0.944006, 0.377643, 0.365136},{0.947180, 0.384178, 0.363701},{0.950210, 0.390820, 0.362468},{0.953099, 0.397563, 0.361438},{0.955849, 0.404400, 0.360619},{0.958464, 0.411324, 0.360014},{0.960949, 0.418323, 0.359630},{0.963310, 0.425390, 0.359469},{0.965549, 0.432519, 0.359529},{0.967671, 0.439703, 0.359810},{0.969680, 0.446936, 0.360311},{0.971582, 0.454210, 0.361030},{0.973381, 0.461520, 0.361965},{0.975082, 0.468861, 0.363111},{0.976690, 0.476226, 0.364466},{0.978210, 0.483612, 0.366025},{0.979645, 0.491014, 0.367783},{0.981000, 0.498428, 0.369734},{0.982279, 0.505851, 0.371874},{0.983485, 0.513280, 0.374198},{0.984622, 0.520713, 0.376698},{0.985693, 0.528148, 0.379371},{0.986700, 0.535582, 0.382210},{0.987646, 0.543015, 0.385210},{0.988533, 0.550446, 0.388365},{0.989363, 0.557873, 0.391671},{0.990138, 0.565296, 0.395122},{0.990871, 0.572706, 0.398714},{0.991558, 0.580107, 0.402441},{0.992196, 0.587502, 0.406299},{0.992785, 0.594891, 0.410283},{0.993326, 0.602275, 0.414390},{0.993834, 0.609644, 0.418613},{0.994309, 0.616999, 0.422950},{0.994738, 0.624350, 0.427397},{0.995122, 0.631696, 0.431951},{0.995480, 0.639027, 0.436607},{0.995810, 0.646344, 0.441361},{0.996096, 0.653659, 0.446213},{0.996341, 0.660969, 0.451160},{0.996580, 0.668256, 0.456192},{0.996775, 0.675541, 0.461314},{0.996925, 0.682828, 0.466526},{0.997077, 0.690088, 0.471811},{0.997186, 0.697349, 0.477182},{0.997254, 0.704611, 0.482635},{0.997325, 0.711848, 0.488154},{0.997351, 0.719089, 0.493755},{0.997351, 0.726324, 0.499428},{0.997341, 0.733545, 0.505167},{0.997285, 0.740772, 0.510983},{0.997228, 0.747981, 0.516859},{0.997138, 0.755190, 0.522806},{0.997019, 0.762398, 0.528821},{0.996898, 0.769591, 0.534892},{0.996727, 0.776795, 0.541039},{0.996571, 0.783977, 0.547233},{0.996369, 0.791167, 0.553499},{0.996162, 0.798348, 0.559820},{0.995932, 0.805527, 0.566202},{0.995680, 0.812706, 0.572645},{0.995424, 0.819875, 0.579140},{0.995131, 0.827052, 0.585701},{0.994851, 0.834213, 0.592307},{0.994524, 0.841387, 0.598983},{0.994222, 0.848540, 0.605696},{0.993866, 0.855711, 0.612482},{0.993545, 0.862859, 0.619299},{0.993170, 0.870024, 0.626189},{0.992831, 0.877168, 0.633109},{0.992440, 0.884330, 0.640099},{0.992089, 0.891470, 0.647116},{0.991688, 0.898627, 0.654202},{0.991332, 0.905763, 0.661309},{0.990930, 0.912915, 0.668481},{0.990570, 0.920049, 0.675675},{0.990175, 0.927196, 0.682926},{0.989815, 0.934329, 0.690198},{0.989434, 0.941470, 0.697519},{0.989077, 0.948604, 0.704863},{0.988717, 0.955742, 0.712242},{0.988367, 0.962878, 0.719649},{0.988033, 0.970012, 0.727077},{0.987691, 0.977154, 0.734536},{0.987387, 0.984288, 0.742002},{0.987053, 0.991438, 0.749504}}}, + {"cividis", {{0.000000, 0.135112, 0.304751},{0.000000, 0.138068, 0.311105},{0.000000, 0.141013, 0.317579},{0.000000, 0.143951, 0.323982},{0.000000, 0.146877, 0.330479},{0.000000, 0.149791, 0.337065},{0.000000, 0.152673, 0.343704},{0.000000, 0.155377, 0.350500},{0.000000, 0.157932, 0.357521},{0.000000, 0.160495, 0.364534},{0.000000, 0.163058, 0.371608},{0.000000, 0.165621, 0.378769},{0.000000, 0.168204, 0.385902},{0.000000, 0.170800, 0.393100},{0.000000, 0.173420, 0.400353},{0.000000, 0.176082, 0.407577},{0.000000, 0.178802, 0.414764},{0.000000, 0.181610, 0.421859},{0.000000, 0.184550, 0.428802},{0.000000, 0.186915, 0.435532},{0.000000, 0.188769, 0.439563},{0.000000, 0.190950, 0.441085},{0.000000, 0.193366, 0.441561},{0.003602, 0.195911, 0.441564},{0.017852, 0.198528, 0.441248},{0.032110, 0.201199, 0.440785},{0.046205, 0.203903, 0.440196},{0.058378, 0.206629, 0.439531},{0.068968, 0.209372, 0.438863},{0.078624, 0.212122, 0.438105},{0.087465, 0.214879, 0.437342},{0.095645, 0.217643, 0.436593},{0.103401, 0.220406, 0.435790},{0.110658, 0.223170, 0.435067},{0.117612, 0.225935, 0.434308},{0.124291, 0.228697, 0.433547},{0.130669, 0.231458, 0.432840},{0.136830, 0.234216, 0.432148},{0.142852, 0.236972, 0.431404},{0.148638, 0.239724, 0.430752},{0.154261, 0.242475, 0.430120},{0.159733, 0.245221, 0.429528},{0.165113, 0.247965, 0.428908},{0.170362, 0.250707, 0.428325},{0.175490, 0.253444, 0.427790},{0.180503, 0.256180, 0.427299},{0.185453, 0.258914, 0.426788},{0.190303, 0.261644, 0.426329},{0.195057, 0.264372, 0.425924},{0.199764, 0.267099, 0.425497},{0.204385, 0.269823, 0.425126},{0.208926, 0.272546, 0.424809},{0.213431, 0.275266, 0.424480},{0.217863, 0.277985, 0.424206},{0.222264, 0.280702, 0.423914},{0.226598, 0.283419, 0.423678},{0.230871, 0.286134, 0.423498},{0.235120, 0.288848, 0.423304},{0.239312, 0.291562, 0.423167},{0.243485, 0.294274, 0.423014},{0.247605, 0.296986, 0.422917},{0.251675, 0.299698, 0.422873},{0.255731, 0.302409, 0.422814},{0.259740, 0.305120, 0.422810},{0.263738, 0.307831, 0.422789},{0.267693, 0.310542, 0.422821},{0.271639, 0.313253, 0.422837},{0.275513, 0.315965, 0.422979},{0.279411, 0.318677, 0.423031},{0.283240, 0.321390, 0.423211},{0.287065, 0.324103, 0.423373},{0.290884, 0.326816, 0.423517},{0.294669, 0.329531, 0.423716},{0.298421, 0.332247, 0.423973},{0.302169, 0.334963, 0.424213},{0.305886, 0.337681, 0.424512},{0.309601, 0.340399, 0.424790},{0.313287, 0.343120, 0.425120},{0.316941, 0.345842, 0.425512},{0.320595, 0.348565, 0.425889},{0.324250, 0.351289, 0.426250},{0.327875, 0.354016, 0.426670},{0.331474, 0.356744, 0.427144},{0.335073, 0.359474, 0.427605},{0.338673, 0.362206, 0.428053},{0.342246, 0.364939, 0.428559},{0.345793, 0.367676, 0.429127},{0.349341, 0.370414, 0.429685},{0.352892, 0.373153, 0.430226},{0.356418, 0.375896, 0.430823},{0.359916, 0.378641, 0.431501},{0.363446, 0.381388, 0.432075},{0.366923, 0.384139, 0.432796},{0.370430, 0.386890, 0.433428},{0.373884, 0.389646, 0.434209},{0.377371, 0.392404, 0.434890},{0.380830, 0.395164, 0.435653},{0.384268, 0.397928, 0.436475},{0.387705, 0.400694, 0.437305},{0.391151, 0.403464, 0.438096},{0.394568, 0.406236, 0.438986},{0.397991, 0.409011, 0.439848},{0.401418, 0.411790, 0.440708},{0.404820, 0.414572, 0.441642},{0.408226, 0.417357, 0.442570},{0.411607, 0.420145, 0.443577},{0.414992, 0.422937, 0.444578},{0.418383, 0.425733, 0.445560},{0.421748, 0.428531, 0.446640},{0.425120, 0.431334, 0.447692},{0.428462, 0.434140, 0.448864},{0.431817, 0.436950, 0.449982},{0.435168, 0.439763, 0.451134},{0.438504, 0.442580, 0.452341},{0.441810, 0.445402, 0.453659},{0.445148, 0.448226, 0.454885},{0.448447, 0.451053, 0.456264},{0.451759, 0.453887, 0.457582},{0.455072, 0.456718, 0.458976},{0.458366, 0.459552, 0.460457},{0.461616, 0.462405, 0.461969},{0.464947, 0.465241, 0.463395},{0.468254, 0.468083, 0.464908},{0.471501, 0.470960, 0.466357},{0.474812, 0.473832, 0.467681},{0.478186, 0.476699, 0.468845},{0.481622, 0.479573, 0.469767},{0.485141, 0.482451, 0.470384},{0.488697, 0.485318, 0.471008},{0.492278, 0.488198, 0.471453},{0.495913, 0.491076, 0.471751},{0.499552, 0.493960, 0.472032},{0.503185, 0.496851, 0.472305},{0.506866, 0.499743, 0.472432},{0.510540, 0.502643, 0.472550},{0.514226, 0.505546, 0.472640},{0.517920, 0.508454, 0.472707},{0.521643, 0.511367, 0.472639},{0.525348, 0.514285, 0.472660},{0.529086, 0.517207, 0.472543},{0.532829, 0.520135, 0.472401},{0.536553, 0.523067, 0.472352},{0.540307, 0.526005, 0.472163},{0.544069, 0.528948, 0.471947},{0.547840, 0.531895, 0.471704},{0.551612, 0.534849, 0.471439},{0.555393, 0.537807, 0.471147},{0.559181, 0.540771, 0.470829},{0.562972, 0.543741, 0.470488},{0.566802, 0.546715, 0.469988},{0.570607, 0.549695, 0.469593},{0.574417, 0.552682, 0.469172},{0.578236, 0.555673, 0.468724},{0.582087, 0.558670, 0.468118},{0.585916, 0.561674, 0.467618},{0.589753, 0.564682, 0.467090},{0.593622, 0.567697, 0.466401},{0.597469, 0.570718, 0.465821},{0.601354, 0.573743, 0.465074},{0.605211, 0.576777, 0.464441},{0.609105, 0.579816, 0.463638},{0.612977, 0.582861, 0.462950},{0.616852, 0.585913, 0.462237},{0.620765, 0.588970, 0.461351},{0.624654, 0.592034, 0.460583},{0.628576, 0.595104, 0.459641},{0.632506, 0.598180, 0.458668},{0.636412, 0.601264, 0.457818},{0.640352, 0.604354, 0.456791},{0.644270, 0.607450, 0.455886},{0.648222, 0.610553, 0.454801},{0.652178, 0.613664, 0.453689},{0.656114, 0.616780, 0.452702},{0.660082, 0.619904, 0.451534},{0.664055, 0.623034, 0.450338},{0.668008, 0.626171, 0.449270},{0.671991, 0.629316, 0.448018},{0.675981, 0.632468, 0.446736},{0.679979, 0.635626, 0.445424},{0.683950, 0.638793, 0.444251},{0.687957, 0.641966, 0.442886},{0.691971, 0.645145, 0.441491},{0.695985, 0.648334, 0.440072},{0.700008, 0.651529, 0.438624},{0.704037, 0.654731, 0.437147},{0.708067, 0.657942, 0.435647},{0.712105, 0.661160, 0.434117},{0.716177, 0.664384, 0.432386},{0.720222, 0.667618, 0.430805},{0.724274, 0.670859, 0.429194},{0.728334, 0.674107, 0.427554},{0.732422, 0.677364, 0.425717},{0.736488, 0.680629, 0.424028},{0.740589, 0.683900, 0.422131},{0.744664, 0.687181, 0.420393},{0.748772, 0.690470, 0.418448},{0.752886, 0.693766, 0.416472},{0.756975, 0.697071, 0.414659},{0.761096, 0.700384, 0.412638},{0.765223, 0.703705, 0.410587},{0.769353, 0.707035, 0.408516},{0.773486, 0.710373, 0.406422},{0.777651, 0.713719, 0.404112},{0.781795, 0.717074, 0.401966},{0.785965, 0.720438, 0.399613},{0.790116, 0.723810, 0.397423},{0.794298, 0.727190, 0.395016},{0.798480, 0.730580, 0.392597},{0.802667, 0.733978, 0.390153},{0.806859, 0.737385, 0.387684},{0.811054, 0.740801, 0.385198},{0.815274, 0.744226, 0.382504},{0.819499, 0.747659, 0.379785},{0.823729, 0.751101, 0.377043},{0.827959, 0.754553, 0.374292},{0.832192, 0.758014, 0.371529},{0.836429, 0.761483, 0.368747},{0.840693, 0.764962, 0.365746},{0.844957, 0.768450, 0.362741},{0.849223, 0.771947, 0.359729},{0.853515, 0.775454, 0.356500},{0.857809, 0.778969, 0.353259},{0.862105, 0.782494, 0.350011},{0.866421, 0.786028, 0.346571},{0.870717, 0.789572, 0.343333},{0.875057, 0.793125, 0.339685},{0.879378, 0.796687, 0.336241},{0.883720, 0.800258, 0.332599},{0.888081, 0.803839, 0.328770},{0.892440, 0.807430, 0.324968},{0.896818, 0.811030, 0.320982},{0.901195, 0.814639, 0.317021},{0.905589, 0.818257, 0.312889},{0.910000, 0.821885, 0.308594},{0.914407, 0.825522, 0.304348},{0.918828, 0.829168, 0.299960},{0.923279, 0.832822, 0.295244},{0.927724, 0.836486, 0.290611},{0.932180, 0.840159, 0.285880},{0.936660, 0.843841, 0.280876},{0.941147, 0.847530, 0.275815},{0.945654, 0.851228, 0.270532},{0.950178, 0.854933, 0.265085},{0.954725, 0.858646, 0.259365},{0.959284, 0.862365, 0.253563},{0.963872, 0.866089, 0.247445},{0.968469, 0.869819, 0.241310},{0.973114, 0.873550, 0.234677},{0.977780, 0.877281, 0.227954},{0.982497, 0.881008, 0.220878},{0.987293, 0.884718, 0.213336},{0.992218, 0.888385, 0.205468},{0.994847, 0.892954, 0.203445},{0.995249, 0.898384, 0.207561},{0.995503, 0.903866, 0.212370},{0.995737, 0.909344, 0.217772}}}, + {"gnuplot", {{0.000000, 0.000000, 0.000000},{0.062622, 0.000000, 0.024637},{0.088561, 0.000000, 0.049260},{0.108465, 0.000002, 0.073853},{0.125245, 0.000004, 0.098400},{0.140028, 0.000008, 0.122888},{0.153393, 0.000013, 0.147302},{0.165683, 0.000021, 0.171626},{0.177123, 0.000031, 0.195845},{0.187867, 0.000044, 0.219946},{0.198030, 0.000060, 0.243914},{0.207695, 0.000080, 0.267733},{0.216930, 0.000104, 0.291390},{0.225788, 0.000132, 0.314870},{0.234312, 0.000165, 0.338158},{0.242536, 0.000204, 0.361242},{0.250490, 0.000247, 0.384106},{0.258199, 0.000296, 0.406737},{0.265684, 0.000352, 0.429121},{0.272965, 0.000414, 0.451244},{0.280056, 0.000482, 0.473094},{0.286972, 0.000559, 0.494656},{0.293725, 0.000642, 0.515918},{0.300327, 0.000734, 0.536867},{0.306786, 0.000834, 0.557489},{0.313112, 0.000942, 0.577774},{0.319313, 0.001060, 0.597707},{0.325396, 0.001187, 0.617278},{0.331367, 0.001324, 0.636474},{0.337232, 0.001471, 0.655284},{0.342997, 0.001628, 0.673696},{0.348667, 0.001797, 0.691698},{0.354246, 0.001976, 0.709281},{0.359738, 0.002167, 0.726434},{0.365148, 0.002370, 0.743145},{0.370479, 0.002586, 0.759405},{0.375735, 0.002814, 0.775204},{0.380917, 0.003055, 0.790532},{0.386031, 0.003309, 0.805381},{0.391077, 0.003577, 0.819740},{0.396059, 0.003860, 0.833602},{0.400979, 0.004157, 0.846958},{0.405840, 0.004468, 0.859800},{0.410643, 0.004795, 0.872120},{0.415390, 0.005137, 0.883910},{0.420084, 0.005496, 0.895163},{0.424726, 0.005870, 0.905873},{0.429318, 0.006261, 0.916034},{0.433861, 0.006670, 0.925638},{0.438357, 0.007095, 0.934680},{0.442807, 0.007539, 0.943154},{0.447214, 0.008000, 0.951057},{0.451577, 0.008480, 0.958381},{0.455898, 0.008979, 0.965124},{0.460179, 0.009496, 0.971281},{0.464420, 0.010034, 0.976848},{0.468623, 0.010591, 0.981823},{0.472789, 0.011169, 0.986201},{0.476918, 0.011767, 0.989980},{0.481012, 0.012386, 0.993159},{0.485071, 0.013027, 0.995734},{0.489097, 0.013689, 0.997705},{0.493089, 0.014373, 0.999070},{0.497050, 0.015080, 0.999829},{0.500979, 0.015810, 0.999981},{0.504878, 0.016562, 0.999526},{0.508747, 0.017338, 0.998464},{0.512587, 0.018139, 0.996795},{0.516398, 0.018963, 0.994522},{0.520181, 0.019812, 0.991645},{0.523937, 0.020686, 0.988165},{0.527666, 0.021585, 0.984086},{0.531369, 0.022510, 0.979410},{0.535046, 0.023461, 0.974139},{0.538699, 0.024439, 0.968276},{0.542326, 0.025443, 0.961826},{0.545930, 0.026474, 0.954791},{0.549510, 0.027533, 0.947177},{0.553066, 0.028620, 0.938988},{0.556600, 0.029735, 0.930229},{0.560112, 0.030878, 0.920906},{0.563602, 0.032050, 0.911023},{0.567070, 0.033252, 0.900587},{0.570517, 0.034484, 0.889604},{0.573944, 0.035745, 0.878081},{0.577350, 0.037037, 0.866025},{0.580737, 0.038360, 0.853444},{0.584103, 0.039713, 0.840344},{0.587450, 0.041099, 0.826734},{0.590779, 0.042516, 0.812622},{0.594089, 0.043965, 0.798017},{0.597380, 0.045447, 0.782928},{0.600653, 0.046962, 0.767363},{0.603909, 0.048510, 0.751332},{0.607147, 0.050091, 0.734845},{0.610368, 0.051707, 0.717912},{0.613572, 0.053357, 0.700543},{0.616759, 0.055042, 0.682749},{0.619930, 0.056762, 0.664540},{0.623085, 0.058517, 0.645928},{0.626224, 0.060309, 0.626924},{0.629348, 0.062136, 0.607539},{0.632456, 0.064000, 0.587785},{0.635548, 0.065901, 0.567675},{0.638626, 0.067839, 0.547220},{0.641689, 0.069815, 0.526432},{0.644737, 0.071829, 0.505325},{0.647771, 0.073881, 0.483911},{0.650791, 0.075972, 0.462204},{0.653797, 0.078101, 0.440216},{0.656790, 0.080271, 0.417960},{0.659768, 0.082480, 0.395451},{0.662733, 0.084729, 0.372702},{0.665686, 0.087019, 0.349727},{0.668625, 0.089350, 0.326539},{0.671551, 0.091722, 0.303153},{0.674464, 0.094135, 0.279583},{0.677365, 0.096591, 0.255843},{0.680254, 0.099089, 0.231948},{0.683130, 0.101630, 0.207912},{0.685994, 0.104213, 0.183750},{0.688847, 0.106840, 0.159476},{0.691687, 0.109511, 0.135105},{0.694516, 0.112226, 0.110653},{0.697334, 0.114986, 0.086133},{0.700140, 0.117790, 0.061561},{0.702935, 0.120640, 0.036951},{0.705719, 0.123535, 0.012320},{0.708492, 0.126476, 0.000000},{0.711254, 0.129464, 0.000000},{0.714006, 0.132498, 0.000000},{0.716746, 0.135579, 0.000000},{0.719477, 0.138708, 0.000000},{0.722197, 0.141884, 0.000000},{0.724907, 0.145109, 0.000000},{0.727607, 0.148382, 0.000000},{0.730297, 0.151704, 0.000000},{0.732977, 0.155075, 0.000000},{0.735647, 0.158495, 0.000000},{0.738308, 0.161966, 0.000000},{0.740959, 0.165487, 0.000000},{0.743600, 0.169058, 0.000000},{0.746232, 0.172681, 0.000000},{0.748855, 0.176355, 0.000000},{0.751469, 0.180081, 0.000000},{0.754074, 0.183858, 0.000000},{0.756670, 0.187689, 0.000000},{0.759257, 0.191572, 0.000000},{0.761835, 0.195508, 0.000000},{0.764404, 0.199498, 0.000000},{0.766965, 0.203542, 0.000000},{0.769517, 0.207640, 0.000000},{0.772061, 0.211792, 0.000000},{0.774597, 0.216000, 0.000000},{0.777124, 0.220263, 0.000000},{0.779643, 0.224582, 0.000000},{0.782154, 0.228957, 0.000000},{0.784657, 0.233388, 0.000000},{0.787152, 0.237876, 0.000000},{0.789639, 0.242421, 0.000000},{0.792118, 0.247024, 0.000000},{0.794590, 0.251685, 0.000000},{0.797053, 0.256404, 0.000000},{0.799510, 0.261181, 0.000000},{0.801958, 0.266018, 0.000000},{0.804400, 0.270914, 0.000000},{0.806834, 0.275870, 0.000000},{0.809260, 0.280885, 0.000000},{0.811679, 0.285961, 0.000000},{0.814092, 0.291098, 0.000000},{0.816497, 0.296296, 0.000000},{0.818895, 0.301556, 0.000000},{0.821285, 0.306877, 0.000000},{0.823669, 0.312261, 0.000000},{0.826047, 0.317707, 0.000000},{0.828417, 0.323217, 0.000000},{0.830780, 0.328789, 0.000000},{0.833137, 0.334425, 0.000000},{0.835487, 0.340126, 0.000000},{0.837831, 0.345890, 0.000000},{0.840168, 0.351720, 0.000000},{0.842499, 0.357615, 0.000000},{0.844823, 0.363575, 0.000000},{0.847141, 0.369601, 0.000000},{0.849452, 0.375693, 0.000000},{0.851757, 0.381852, 0.000000},{0.854056, 0.388077, 0.000000},{0.856349, 0.394370, 0.000000},{0.858635, 0.400731, 0.000000},{0.860916, 0.407160, 0.000000},{0.863191, 0.413657, 0.000000},{0.865459, 0.420223, 0.000000},{0.867722, 0.426858, 0.000000},{0.869979, 0.433562, 0.000000},{0.872230, 0.440336, 0.000000},{0.874475, 0.447181, 0.000000},{0.876714, 0.454096, 0.000000},{0.878948, 0.461082, 0.000000},{0.881176, 0.468139, 0.000000},{0.883398, 0.475268, 0.000000},{0.885615, 0.482469, 0.000000},{0.887826, 0.489742, 0.000000},{0.890032, 0.497088, 0.000000},{0.892232, 0.504507, 0.000000},{0.894427, 0.512000, 0.000000},{0.896617, 0.519566, 0.000000},{0.898801, 0.527207, 0.000000},{0.900980, 0.534922, 0.000000},{0.903154, 0.542712, 0.000000},{0.905322, 0.550577, 0.000000},{0.907485, 0.558518, 0.000000},{0.909643, 0.566535, 0.000000},{0.911796, 0.574628, 0.000000},{0.913944, 0.582798, 0.000000},{0.916087, 0.591045, 0.000000},{0.918225, 0.599370, 0.000000},{0.920358, 0.607772, 0.000000},{0.922486, 0.616252, 0.000000},{0.924609, 0.624811, 0.000000},{0.926727, 0.633449, 0.000000},{0.928841, 0.642166, 0.000000},{0.930949, 0.650963, 0.000000},{0.933053, 0.659840, 0.000000},{0.935152, 0.668797, 0.000000},{0.937247, 0.677834, 0.000000},{0.939336, 0.686953, 0.000000},{0.941422, 0.696153, 0.000000},{0.943502, 0.705435, 0.000000},{0.945578, 0.714799, 0.000000},{0.947649, 0.724246, 0.000000},{0.949716, 0.733775, 0.000000},{0.951779, 0.743388, 0.000000},{0.953836, 0.753084, 0.000000},{0.955890, 0.762864, 0.000000},{0.957939, 0.772729, 0.000000},{0.959984, 0.782678, 0.000000},{0.962024, 0.792712, 0.000000},{0.964060, 0.802832, 0.000000},{0.966092, 0.813037, 0.000000},{0.968119, 0.823329, 0.000000},{0.970143, 0.833706, 0.000000},{0.972162, 0.844171, 0.000000},{0.974176, 0.854723, 0.000000},{0.976187, 0.865363, 0.000000},{0.978194, 0.876090, 0.000000},{0.980196, 0.886906, 0.000000},{0.982194, 0.897811, 0.000000},{0.984189, 0.908804, 0.000000},{0.986179, 0.919887, 0.000000},{0.988165, 0.931060, 0.000000},{0.990148, 0.942322, 0.000000},{0.992126, 0.953675, 0.000000},{0.994100, 0.965119, 0.000000},{0.996071, 0.976655, 0.000000},{0.998037, 0.988281, 0.000000},{1.000000, 1.000000, 0.000000}}}, + {"gnuplot2", {{0.000000, 0.000000, 0.000000},{0.000000, 0.000000, 0.015686},{0.000000, 0.000000, 0.031373},{0.000000, 0.000000, 0.047059},{0.000000, 0.000000, 0.062745},{0.000000, 0.000000, 0.078431},{0.000000, 0.000000, 0.094118},{0.000000, 0.000000, 0.109804},{0.000000, 0.000000, 0.125490},{0.000000, 0.000000, 0.141176},{0.000000, 0.000000, 0.156863},{0.000000, 0.000000, 0.172549},{0.000000, 0.000000, 0.188235},{0.000000, 0.000000, 0.203922},{0.000000, 0.000000, 0.219608},{0.000000, 0.000000, 0.235294},{0.000000, 0.000000, 0.250980},{0.000000, 0.000000, 0.266667},{0.000000, 0.000000, 0.282353},{0.000000, 0.000000, 0.298039},{0.000000, 0.000000, 0.313725},{0.000000, 0.000000, 0.329412},{0.000000, 0.000000, 0.345098},{0.000000, 0.000000, 0.360784},{0.000000, 0.000000, 0.376471},{0.000000, 0.000000, 0.392157},{0.000000, 0.000000, 0.407843},{0.000000, 0.000000, 0.423529},{0.000000, 0.000000, 0.439216},{0.000000, 0.000000, 0.454902},{0.000000, 0.000000, 0.470588},{0.000000, 0.000000, 0.486275},{0.000000, 0.000000, 0.501961},{0.000000, 0.000000, 0.517647},{0.000000, 0.000000, 0.533333},{0.000000, 0.000000, 0.549020},{0.000000, 0.000000, 0.564706},{0.000000, 0.000000, 0.580392},{0.000000, 0.000000, 0.596078},{0.000000, 0.000000, 0.611765},{0.000000, 0.000000, 0.627451},{0.000000, 0.000000, 0.643137},{0.000000, 0.000000, 0.658824},{0.000000, 0.000000, 0.674510},{0.000000, 0.000000, 0.690196},{0.000000, 0.000000, 0.705882},{0.000000, 0.000000, 0.721569},{0.000000, 0.000000, 0.737255},{0.000000, 0.000000, 0.752941},{0.000000, 0.000000, 0.768627},{0.000000, 0.000000, 0.784314},{0.000000, 0.000000, 0.800000},{0.000000, 0.000000, 0.815686},{0.000000, 0.000000, 0.831373},{0.000000, 0.000000, 0.847059},{0.000000, 0.000000, 0.862745},{0.000000, 0.000000, 0.878431},{0.000000, 0.000000, 0.894118},{0.000000, 0.000000, 0.909804},{0.000000, 0.000000, 0.925490},{0.000000, 0.000000, 0.941176},{0.000000, 0.000000, 0.956863},{0.000000, 0.000000, 0.972549},{0.000000, 0.000000, 0.988235},{0.003064, 0.000000, 1.000000},{0.015319, 0.000000, 1.000000},{0.027574, 0.000000, 1.000000},{0.039828, 0.000000, 1.000000},{0.052083, 0.000000, 1.000000},{0.064338, 0.000000, 1.000000},{0.076593, 0.000000, 1.000000},{0.088848, 0.000000, 1.000000},{0.101103, 0.000000, 1.000000},{0.113358, 0.000000, 1.000000},{0.125613, 0.000000, 1.000000},{0.137868, 0.000000, 1.000000},{0.150123, 0.000000, 1.000000},{0.162377, 0.000000, 1.000000},{0.174632, 0.000000, 1.000000},{0.186887, 0.000000, 1.000000},{0.199142, 0.000000, 1.000000},{0.211397, 0.000000, 1.000000},{0.223652, 0.000000, 1.000000},{0.235907, 0.000000, 1.000000},{0.248162, 0.000000, 1.000000},{0.260417, 0.000000, 1.000000},{0.272672, 0.000000, 1.000000},{0.284926, 0.000000, 1.000000},{0.297181, 0.000000, 1.000000},{0.309436, 0.000000, 1.000000},{0.321691, 0.000000, 1.000000},{0.333946, 0.000000, 1.000000},{0.346201, 0.000000, 1.000000},{0.358456, 0.000000, 1.000000},{0.370711, 0.000000, 1.000000},{0.382966, 0.000000, 1.000000},{0.395221, 0.000000, 1.000000},{0.407475, 0.000000, 1.000000},{0.419730, 0.000000, 1.000000},{0.431985, 0.000000, 1.000000},{0.444240, 0.000000, 1.000000},{0.456495, 0.000000, 1.000000},{0.468750, 0.000000, 1.000000},{0.481005, 0.000000, 1.000000},{0.493260, 0.000000, 1.000000},{0.505515, 0.000000, 1.000000},{0.517770, 0.000000, 1.000000},{0.530025, 0.000000, 1.000000},{0.542279, 0.007059, 0.992941},{0.554534, 0.014902, 0.985098},{0.566789, 0.022745, 0.977255},{0.579044, 0.030588, 0.969412},{0.591299, 0.038431, 0.961569},{0.603554, 0.046275, 0.953725},{0.615809, 0.054118, 0.945882},{0.628064, 0.061961, 0.938039},{0.640319, 0.069804, 0.930196},{0.652574, 0.077647, 0.922353},{0.664828, 0.085490, 0.914510},{0.677083, 0.093333, 0.906667},{0.689338, 0.101176, 0.898824},{0.701593, 0.109020, 0.890980},{0.713848, 0.116863, 0.883137},{0.726103, 0.124706, 0.875294},{0.738358, 0.132549, 0.867451},{0.750613, 0.140392, 0.859608},{0.762868, 0.148235, 0.851765},{0.775123, 0.156078, 0.843922},{0.787377, 0.163922, 0.836078},{0.799632, 0.171765, 0.828235},{0.811887, 0.179608, 0.820392},{0.824142, 0.187451, 0.812549},{0.836397, 0.195294, 0.804706},{0.848652, 0.203137, 0.796863},{0.860907, 0.210980, 0.789020},{0.873162, 0.218824, 0.781176},{0.885417, 0.226667, 0.773333},{0.897672, 0.234510, 0.765490},{0.909926, 0.242353, 0.757647},{0.922181, 0.250196, 0.749804},{0.934436, 0.258039, 0.741961},{0.946691, 0.265882, 0.734118},{0.958946, 0.273725, 0.726275},{0.971201, 0.281569, 0.718431},{0.983456, 0.289412, 0.710588},{0.995711, 0.297255, 0.702745},{1.000000, 0.305098, 0.694902},{1.000000, 0.312941, 0.687059},{1.000000, 0.320784, 0.679216},{1.000000, 0.328627, 0.671373},{1.000000, 0.336471, 0.663529},{1.000000, 0.344314, 0.655686},{1.000000, 0.352157, 0.647843},{1.000000, 0.360000, 0.640000},{1.000000, 0.367843, 0.632157},{1.000000, 0.375686, 0.624314},{1.000000, 0.383529, 0.616471},{1.000000, 0.391373, 0.608627},{1.000000, 0.399216, 0.600784},{1.000000, 0.407059, 0.592941},{1.000000, 0.414902, 0.585098},{1.000000, 0.422745, 0.577255},{1.000000, 0.430588, 0.569412},{1.000000, 0.438431, 0.561569},{1.000000, 0.446275, 0.553725},{1.000000, 0.454118, 0.545882},{1.000000, 0.461961, 0.538039},{1.000000, 0.469804, 0.530196},{1.000000, 0.477647, 0.522353},{1.000000, 0.485490, 0.514510},{1.000000, 0.493333, 0.506667},{1.000000, 0.501176, 0.498824},{1.000000, 0.509020, 0.490980},{1.000000, 0.516863, 0.483137},{1.000000, 0.524706, 0.475294},{1.000000, 0.532549, 0.467451},{1.000000, 0.540392, 0.459608},{1.000000, 0.548235, 0.451765},{1.000000, 0.556078, 0.443922},{1.000000, 0.563922, 0.436078},{1.000000, 0.571765, 0.428235},{1.000000, 0.579608, 0.420392},{1.000000, 0.587451, 0.412549},{1.000000, 0.595294, 0.404706},{1.000000, 0.603137, 0.396863},{1.000000, 0.610980, 0.389020},{1.000000, 0.618824, 0.381176},{1.000000, 0.626667, 0.373333},{1.000000, 0.634510, 0.365490},{1.000000, 0.642353, 0.357647},{1.000000, 0.650196, 0.349804},{1.000000, 0.658039, 0.341961},{1.000000, 0.665882, 0.334118},{1.000000, 0.673725, 0.326275},{1.000000, 0.681569, 0.318431},{1.000000, 0.689412, 0.310588},{1.000000, 0.697255, 0.302745},{1.000000, 0.705098, 0.294902},{1.000000, 0.712941, 0.287059},{1.000000, 0.720784, 0.279216},{1.000000, 0.728627, 0.271373},{1.000000, 0.736471, 0.263529},{1.000000, 0.744314, 0.255686},{1.000000, 0.752157, 0.247843},{1.000000, 0.760000, 0.240000},{1.000000, 0.767843, 0.232157},{1.000000, 0.775686, 0.224314},{1.000000, 0.783529, 0.216471},{1.000000, 0.791373, 0.208627},{1.000000, 0.799216, 0.200784},{1.000000, 0.807059, 0.192941},{1.000000, 0.814902, 0.185098},{1.000000, 0.822745, 0.177255},{1.000000, 0.830588, 0.169412},{1.000000, 0.838431, 0.161569},{1.000000, 0.846275, 0.153725},{1.000000, 0.854118, 0.145882},{1.000000, 0.861961, 0.138039},{1.000000, 0.869804, 0.130196},{1.000000, 0.877647, 0.122353},{1.000000, 0.885490, 0.114510},{1.000000, 0.893333, 0.106667},{1.000000, 0.901176, 0.098824},{1.000000, 0.909020, 0.090980},{1.000000, 0.916863, 0.083137},{1.000000, 0.924706, 0.075294},{1.000000, 0.932549, 0.067451},{1.000000, 0.940392, 0.059608},{1.000000, 0.948235, 0.051765},{1.000000, 0.956078, 0.043922},{1.000000, 0.963922, 0.036078},{1.000000, 0.971765, 0.028235},{1.000000, 0.979608, 0.020392},{1.000000, 0.987451, 0.012549},{1.000000, 0.995294, 0.004706},{1.000000, 1.000000, 0.019608},{1.000000, 1.000000, 0.068627},{1.000000, 1.000000, 0.117647},{1.000000, 1.000000, 0.166667},{1.000000, 1.000000, 0.215686},{1.000000, 1.000000, 0.264706},{1.000000, 1.000000, 0.313725},{1.000000, 1.000000, 0.362745},{1.000000, 1.000000, 0.411765},{1.000000, 1.000000, 0.460784},{1.000000, 1.000000, 0.509804},{1.000000, 1.000000, 0.558824},{1.000000, 1.000000, 0.607843},{1.000000, 1.000000, 0.656863},{1.000000, 1.000000, 0.705882},{1.000000, 1.000000, 0.754902},{1.000000, 1.000000, 0.803922},{1.000000, 1.000000, 0.852941},{1.000000, 1.000000, 0.901961},{1.000000, 1.000000, 0.950980},{1.000000, 1.000000, 1.000000}}}, + {"gist_rainbow", {{1.000000, 0.000000, 0.160000},{1.000000, 0.000000, 0.139085},{1.000000, 0.000000, 0.118170},{1.000000, 0.000000, 0.097255},{1.000000, 0.000000, 0.076340},{1.000000, 0.000000, 0.055425},{1.000000, 0.000000, 0.034510},{1.000000, 0.000000, 0.013595},{1.000000, 0.007419, 0.000000},{1.000000, 0.028617, 0.000000},{1.000000, 0.049815, 0.000000},{1.000000, 0.071012, 0.000000},{1.000000, 0.092210, 0.000000},{1.000000, 0.113408, 0.000000},{1.000000, 0.134605, 0.000000},{1.000000, 0.155803, 0.000000},{1.000000, 0.177001, 0.000000},{1.000000, 0.198198, 0.000000},{1.000000, 0.219396, 0.000000},{1.000000, 0.240594, 0.000000},{1.000000, 0.261791, 0.000000},{1.000000, 0.282989, 0.000000},{1.000000, 0.304187, 0.000000},{1.000000, 0.325384, 0.000000},{1.000000, 0.346582, 0.000000},{1.000000, 0.367780, 0.000000},{1.000000, 0.388977, 0.000000},{1.000000, 0.410175, 0.000000},{1.000000, 0.431373, 0.000000},{1.000000, 0.452570, 0.000000},{1.000000, 0.473768, 0.000000},{1.000000, 0.494966, 0.000000},{1.000000, 0.516163, 0.000000},{1.000000, 0.537361, 0.000000},{1.000000, 0.558559, 0.000000},{1.000000, 0.579756, 0.000000},{1.000000, 0.600954, 0.000000},{1.000000, 0.622152, 0.000000},{1.000000, 0.643349, 0.000000},{1.000000, 0.664547, 0.000000},{1.000000, 0.685745, 0.000000},{1.000000, 0.706942, 0.000000},{1.000000, 0.728140, 0.000000},{1.000000, 0.749338, 0.000000},{1.000000, 0.770535, 0.000000},{1.000000, 0.791733, 0.000000},{1.000000, 0.812931, 0.000000},{1.000000, 0.834128, 0.000000},{1.000000, 0.855326, 0.000000},{1.000000, 0.876524, 0.000000},{1.000000, 0.897721, 0.000000},{1.000000, 0.918919, 0.000000},{1.000000, 0.940117, 0.000000},{1.000000, 0.961314, 0.000000},{1.000000, 0.982512, 0.000000},{0.996290, 1.000000, 0.000000},{0.975093, 1.000000, 0.000000},{0.953895, 1.000000, 0.000000},{0.932697, 1.000000, 0.000000},{0.911500, 1.000000, 0.000000},{0.890302, 1.000000, 0.000000},{0.869104, 1.000000, 0.000000},{0.847907, 1.000000, 0.000000},{0.826709, 1.000000, 0.000000},{0.805511, 1.000000, 0.000000},{0.784314, 1.000000, 0.000000},{0.763116, 1.000000, 0.000000},{0.741918, 1.000000, 0.000000},{0.720721, 1.000000, 0.000000},{0.699523, 1.000000, 0.000000},{0.678325, 1.000000, 0.000000},{0.657128, 1.000000, 0.000000},{0.635930, 1.000000, 0.000000},{0.614732, 1.000000, 0.000000},{0.593535, 1.000000, 0.000000},{0.572337, 1.000000, 0.000000},{0.551139, 1.000000, 0.000000},{0.529942, 1.000000, 0.000000},{0.508744, 1.000000, 0.000000},{0.487546, 1.000000, 0.000000},{0.466349, 1.000000, 0.000000},{0.445151, 1.000000, 0.000000},{0.423953, 1.000000, 0.000000},{0.402756, 1.000000, 0.000000},{0.381558, 1.000000, 0.000000},{0.360360, 1.000000, 0.000000},{0.339163, 1.000000, 0.000000},{0.317965, 1.000000, 0.000000},{0.296767, 1.000000, 0.000000},{0.275570, 1.000000, 0.000000},{0.254372, 1.000000, 0.000000},{0.233174, 1.000000, 0.000000},{0.211977, 1.000000, 0.000000},{0.190779, 1.000000, 0.000000},{0.169581, 1.000000, 0.000000},{0.148384, 1.000000, 0.000000},{0.127186, 1.000000, 0.000000},{0.105988, 1.000000, 0.000000},{0.084791, 1.000000, 0.000000},{0.063593, 1.000000, 0.000000},{0.042395, 1.000000, 0.000000},{0.021198, 1.000000, 0.000000},{0.000000, 1.000000, 0.000000},{0.000000, 1.000000, 0.021084},{0.000000, 1.000000, 0.042167},{0.000000, 1.000000, 0.063251},{0.000000, 1.000000, 0.084335},{0.000000, 1.000000, 0.105419},{0.000000, 1.000000, 0.126502},{0.000000, 1.000000, 0.147586},{0.000000, 1.000000, 0.168670},{0.000000, 1.000000, 0.189753},{0.000000, 1.000000, 0.210837},{0.000000, 1.000000, 0.231921},{0.000000, 1.000000, 0.253004},{0.000000, 1.000000, 0.274088},{0.000000, 1.000000, 0.295172},{0.000000, 1.000000, 0.316256},{0.000000, 1.000000, 0.337339},{0.000000, 1.000000, 0.358423},{0.000000, 1.000000, 0.379507},{0.000000, 1.000000, 0.400590},{0.000000, 1.000000, 0.421674},{0.000000, 1.000000, 0.442758},{0.000000, 1.000000, 0.463841},{0.000000, 1.000000, 0.484925},{0.000000, 1.000000, 0.506009},{0.000000, 1.000000, 0.527093},{0.000000, 1.000000, 0.548176},{0.000000, 1.000000, 0.569260},{0.000000, 1.000000, 0.590344},{0.000000, 1.000000, 0.611427},{0.000000, 1.000000, 0.632511},{0.000000, 1.000000, 0.653595},{0.000000, 1.000000, 0.674678},{0.000000, 1.000000, 0.695762},{0.000000, 1.000000, 0.716846},{0.000000, 1.000000, 0.737930},{0.000000, 1.000000, 0.759013},{0.000000, 1.000000, 0.780097},{0.000000, 1.000000, 0.801181},{0.000000, 1.000000, 0.822264},{0.000000, 1.000000, 0.843348},{0.000000, 1.000000, 0.864432},{0.000000, 1.000000, 0.885515},{0.000000, 1.000000, 0.906599},{0.000000, 1.000000, 0.927683},{0.000000, 1.000000, 0.948767},{0.000000, 1.000000, 0.969850},{0.000000, 1.000000, 0.990934},{0.000000, 0.987852, 1.000000},{0.000000, 0.966539, 1.000000},{0.000000, 0.945226, 1.000000},{0.000000, 0.923913, 1.000000},{0.000000, 0.902600, 1.000000},{0.000000, 0.881287, 1.000000},{0.000000, 0.859974, 1.000000},{0.000000, 0.838662, 1.000000},{0.000000, 0.817349, 1.000000},{0.000000, 0.796036, 1.000000},{0.000000, 0.774723, 1.000000},{0.000000, 0.753410, 1.000000},{0.000000, 0.732097, 1.000000},{0.000000, 0.710784, 1.000000},{0.000000, 0.689471, 1.000000},{0.000000, 0.668159, 1.000000},{0.000000, 0.646846, 1.000000},{0.000000, 0.625533, 1.000000},{0.000000, 0.604220, 1.000000},{0.000000, 0.582907, 1.000000},{0.000000, 0.561594, 1.000000},{0.000000, 0.540281, 1.000000},{0.000000, 0.518968, 1.000000},{0.000000, 0.497656, 1.000000},{0.000000, 0.476343, 1.000000},{0.000000, 0.455030, 1.000000},{0.000000, 0.433717, 1.000000},{0.000000, 0.412404, 1.000000},{0.000000, 0.391091, 1.000000},{0.000000, 0.369778, 1.000000},{0.000000, 0.348465, 1.000000},{0.000000, 0.327153, 1.000000},{0.000000, 0.305840, 1.000000},{0.000000, 0.284527, 1.000000},{0.000000, 0.263214, 1.000000},{0.000000, 0.241901, 1.000000},{0.000000, 0.220588, 1.000000},{0.000000, 0.199275, 1.000000},{0.000000, 0.177962, 1.000000},{0.000000, 0.156650, 1.000000},{0.000000, 0.135337, 1.000000},{0.000000, 0.114024, 1.000000},{0.000000, 0.092711, 1.000000},{0.000000, 0.071398, 1.000000},{0.000000, 0.050085, 1.000000},{0.000000, 0.028772, 1.000000},{0.000000, 0.007460, 1.000000},{0.013853, 0.000000, 1.000000},{0.035166, 0.000000, 1.000000},{0.056479, 0.000000, 1.000000},{0.077792, 0.000000, 1.000000},{0.099105, 0.000000, 1.000000},{0.120418, 0.000000, 1.000000},{0.141731, 0.000000, 1.000000},{0.163043, 0.000000, 1.000000},{0.184356, 0.000000, 1.000000},{0.205669, 0.000000, 1.000000},{0.226982, 0.000000, 1.000000},{0.248295, 0.000000, 1.000000},{0.269608, 0.000000, 1.000000},{0.290921, 0.000000, 1.000000},{0.312234, 0.000000, 1.000000},{0.333546, 0.000000, 1.000000},{0.354859, 0.000000, 1.000000},{0.376172, 0.000000, 1.000000},{0.397485, 0.000000, 1.000000},{0.418798, 0.000000, 1.000000},{0.440111, 0.000000, 1.000000},{0.461424, 0.000000, 1.000000},{0.482737, 0.000000, 1.000000},{0.504049, 0.000000, 1.000000},{0.525362, 0.000000, 1.000000},{0.546675, 0.000000, 1.000000},{0.567988, 0.000000, 1.000000},{0.589301, 0.000000, 1.000000},{0.610614, 0.000000, 1.000000},{0.631927, 0.000000, 1.000000},{0.653240, 0.000000, 1.000000},{0.674552, 0.000000, 1.000000},{0.695865, 0.000000, 1.000000},{0.717178, 0.000000, 1.000000},{0.738491, 0.000000, 1.000000},{0.759804, 0.000000, 1.000000},{0.781117, 0.000000, 1.000000},{0.802430, 0.000000, 1.000000},{0.823743, 0.000000, 1.000000},{0.845055, 0.000000, 1.000000},{0.866368, 0.000000, 1.000000},{0.887681, 0.000000, 1.000000},{0.908994, 0.000000, 1.000000},{0.930307, 0.000000, 1.000000},{0.951620, 0.000000, 1.000000},{0.972933, 0.000000, 1.000000},{0.994246, 0.000000, 1.000000},{1.000000, 0.000000, 0.984442},{1.000000, 0.000000, 0.963129},{1.000000, 0.000000, 0.941816},{1.000000, 0.000000, 0.920503},{1.000000, 0.000000, 0.899190},{1.000000, 0.000000, 0.877877},{1.000000, 0.000000, 0.856564},{1.000000, 0.000000, 0.835251},{1.000000, 0.000000, 0.813939},{1.000000, 0.000000, 0.792626},{1.000000, 0.000000, 0.771313},{1.000000, 0.000000, 0.750000}}}, + {"rainbow", {{0.500000, 0.000000, 1.000000},{0.492157, 0.012320, 0.999981},{0.484314, 0.024637, 0.999924},{0.476471, 0.036951, 0.999829},{0.468627, 0.049260, 0.999696},{0.460784, 0.061561, 0.999526},{0.452941, 0.073853, 0.999317},{0.445098, 0.086133, 0.999070},{0.437255, 0.098400, 0.998786},{0.429412, 0.110653, 0.998464},{0.421569, 0.122888, 0.998103},{0.413725, 0.135105, 0.997705},{0.405882, 0.147302, 0.997269},{0.398039, 0.159476, 0.996795},{0.390196, 0.171626, 0.996284},{0.382353, 0.183750, 0.995734},{0.374510, 0.195845, 0.995147},{0.366667, 0.207912, 0.994522},{0.358824, 0.219946, 0.993859},{0.350980, 0.231948, 0.993159},{0.343137, 0.243914, 0.992421},{0.335294, 0.255843, 0.991645},{0.327451, 0.267733, 0.990831},{0.319608, 0.279583, 0.989980},{0.311765, 0.291390, 0.989092},{0.303922, 0.303153, 0.988165},{0.296078, 0.314870, 0.987202},{0.288235, 0.326539, 0.986201},{0.280392, 0.338158, 0.985162},{0.272549, 0.349727, 0.984086},{0.264706, 0.361242, 0.982973},{0.256863, 0.372702, 0.981823},{0.249020, 0.384106, 0.980635},{0.241176, 0.395451, 0.979410},{0.233333, 0.406737, 0.978148},{0.225490, 0.417960, 0.976848},{0.217647, 0.429121, 0.975512},{0.209804, 0.440216, 0.974139},{0.201961, 0.451244, 0.972728},{0.194118, 0.462204, 0.971281},{0.186275, 0.473094, 0.969797},{0.178431, 0.483911, 0.968276},{0.170588, 0.494656, 0.966718},{0.162745, 0.505325, 0.965124},{0.154902, 0.515918, 0.963493},{0.147059, 0.526432, 0.961826},{0.139216, 0.536867, 0.960122},{0.131373, 0.547220, 0.958381},{0.123529, 0.557489, 0.956604},{0.115686, 0.567675, 0.954791},{0.107843, 0.577774, 0.952942},{0.100000, 0.587785, 0.951057},{0.092157, 0.597707, 0.949135},{0.084314, 0.607539, 0.947177},{0.076471, 0.617278, 0.945184},{0.068627, 0.626924, 0.943154},{0.060784, 0.636474, 0.941089},{0.052941, 0.645928, 0.938988},{0.045098, 0.655284, 0.936852},{0.037255, 0.664540, 0.934680},{0.029412, 0.673696, 0.932472},{0.021569, 0.682749, 0.930229},{0.013725, 0.691698, 0.927951},{0.005882, 0.700543, 0.925638},{0.001961, 0.709281, 0.923289},{0.009804, 0.717912, 0.920906},{0.017647, 0.726434, 0.918487},{0.025490, 0.734845, 0.916034},{0.033333, 0.743145, 0.913545},{0.041176, 0.751332, 0.911023},{0.049020, 0.759405, 0.908465},{0.056863, 0.767363, 0.905873},{0.064706, 0.775204, 0.903247},{0.072549, 0.782928, 0.900587},{0.080392, 0.790532, 0.897892},{0.088235, 0.798017, 0.895163},{0.096078, 0.805381, 0.892401},{0.103922, 0.812622, 0.889604},{0.111765, 0.819740, 0.886774},{0.119608, 0.826734, 0.883910},{0.127451, 0.833602, 0.881012},{0.135294, 0.840344, 0.878081},{0.143137, 0.846958, 0.875117},{0.150980, 0.853444, 0.872120},{0.158824, 0.859800, 0.869089},{0.166667, 0.866025, 0.866025},{0.174510, 0.872120, 0.862929},{0.182353, 0.878081, 0.859800},{0.190196, 0.883910, 0.856638},{0.198039, 0.889604, 0.853444},{0.205882, 0.895163, 0.850217},{0.213725, 0.900587, 0.846958},{0.221569, 0.905873, 0.843667},{0.229412, 0.911023, 0.840344},{0.237255, 0.916034, 0.836989},{0.245098, 0.920906, 0.833602},{0.252941, 0.925638, 0.830184},{0.260784, 0.930229, 0.826734},{0.268627, 0.934680, 0.823253},{0.276471, 0.938988, 0.819740},{0.284314, 0.943154, 0.816197},{0.292157, 0.947177, 0.812622},{0.300000, 0.951057, 0.809017},{0.307843, 0.954791, 0.805381},{0.315686, 0.958381, 0.801714},{0.323529, 0.961826, 0.798017},{0.331373, 0.965124, 0.794290},{0.339216, 0.968276, 0.790532},{0.347059, 0.971281, 0.786745},{0.354902, 0.974139, 0.782928},{0.362745, 0.976848, 0.779081},{0.370588, 0.979410, 0.775204},{0.378431, 0.981823, 0.771298},{0.386275, 0.984086, 0.767363},{0.394118, 0.986201, 0.763398},{0.401961, 0.988165, 0.759405},{0.409804, 0.989980, 0.755383},{0.417647, 0.991645, 0.751332},{0.425490, 0.993159, 0.747253},{0.433333, 0.994522, 0.743145},{0.441176, 0.995734, 0.739009},{0.449020, 0.996795, 0.734845},{0.456863, 0.997705, 0.730653},{0.464706, 0.998464, 0.726434},{0.472549, 0.999070, 0.722186},{0.480392, 0.999526, 0.717912},{0.488235, 0.999829, 0.713610},{0.496078, 0.999981, 0.709281},{0.503922, 0.999981, 0.704926},{0.511765, 0.999829, 0.700543},{0.519608, 0.999526, 0.696134},{0.527451, 0.999070, 0.691698},{0.535294, 0.998464, 0.687237},{0.543137, 0.997705, 0.682749},{0.550980, 0.996795, 0.678235},{0.558824, 0.995734, 0.673696},{0.566667, 0.994522, 0.669131},{0.574510, 0.993159, 0.664540},{0.582353, 0.991645, 0.659925},{0.590196, 0.989980, 0.655284},{0.598039, 0.988165, 0.650618},{0.605882, 0.986201, 0.645928},{0.613725, 0.984086, 0.641213},{0.621569, 0.981823, 0.636474},{0.629412, 0.979410, 0.631711},{0.637255, 0.976848, 0.626924},{0.645098, 0.974139, 0.622113},{0.652941, 0.971281, 0.617278},{0.660784, 0.968276, 0.612420},{0.668627, 0.965124, 0.607539},{0.676471, 0.961826, 0.602635},{0.684314, 0.958381, 0.597707},{0.692157, 0.954791, 0.592758},{0.700000, 0.951057, 0.587785},{0.707843, 0.947177, 0.582791},{0.715686, 0.943154, 0.577774},{0.723529, 0.938988, 0.572735},{0.731373, 0.934680, 0.567675},{0.739216, 0.930229, 0.562593},{0.747059, 0.925638, 0.557489},{0.754902, 0.920906, 0.552365},{0.762745, 0.916034, 0.547220},{0.770588, 0.911023, 0.542053},{0.778431, 0.905873, 0.536867},{0.786275, 0.900587, 0.531659},{0.794118, 0.895163, 0.526432},{0.801961, 0.889604, 0.521185},{0.809804, 0.883910, 0.515918},{0.817647, 0.878081, 0.510631},{0.825490, 0.872120, 0.505325},{0.833333, 0.866025, 0.500000},{0.841176, 0.859800, 0.494656},{0.849020, 0.853444, 0.489293},{0.856863, 0.846958, 0.483911},{0.864706, 0.840344, 0.478512},{0.872549, 0.833602, 0.473094},{0.880392, 0.826734, 0.467658},{0.888235, 0.819740, 0.462204},{0.896078, 0.812622, 0.456733},{0.903922, 0.805381, 0.451244},{0.911765, 0.798017, 0.445738},{0.919608, 0.790532, 0.440216},{0.927451, 0.782928, 0.434676},{0.935294, 0.775204, 0.429121},{0.943137, 0.767363, 0.423549},{0.950980, 0.759405, 0.417960},{0.958824, 0.751332, 0.412356},{0.966667, 0.743145, 0.406737},{0.974510, 0.734845, 0.401102},{0.982353, 0.726434, 0.395451},{0.990196, 0.717912, 0.389786},{0.998039, 0.709281, 0.384106},{1.000000, 0.700543, 0.378411},{1.000000, 0.691698, 0.372702},{1.000000, 0.682749, 0.366979},{1.000000, 0.673696, 0.361242},{1.000000, 0.664540, 0.355491},{1.000000, 0.655284, 0.349727},{1.000000, 0.645928, 0.343949},{1.000000, 0.636474, 0.338158},{1.000000, 0.626924, 0.332355},{1.000000, 0.617278, 0.326539},{1.000000, 0.607539, 0.320710},{1.000000, 0.597707, 0.314870},{1.000000, 0.587785, 0.309017},{1.000000, 0.577774, 0.303153},{1.000000, 0.567675, 0.297277},{1.000000, 0.557489, 0.291390},{1.000000, 0.547220, 0.285492},{1.000000, 0.536867, 0.279583},{1.000000, 0.526432, 0.273663},{1.000000, 0.515918, 0.267733},{1.000000, 0.505325, 0.261793},{1.000000, 0.494656, 0.255843},{1.000000, 0.483911, 0.249883},{1.000000, 0.473094, 0.243914},{1.000000, 0.462204, 0.237935},{1.000000, 0.451244, 0.231948},{1.000000, 0.440216, 0.225951},{1.000000, 0.429121, 0.219946},{1.000000, 0.417960, 0.213933},{1.000000, 0.406737, 0.207912},{1.000000, 0.395451, 0.201882},{1.000000, 0.384106, 0.195845},{1.000000, 0.372702, 0.189801},{1.000000, 0.361242, 0.183750},{1.000000, 0.349727, 0.177691},{1.000000, 0.338158, 0.171626},{1.000000, 0.326539, 0.165554},{1.000000, 0.314870, 0.159476},{1.000000, 0.303153, 0.153392},{1.000000, 0.291390, 0.147302},{1.000000, 0.279583, 0.141206},{1.000000, 0.267733, 0.135105},{1.000000, 0.255843, 0.128999},{1.000000, 0.243914, 0.122888},{1.000000, 0.231948, 0.116773},{1.000000, 0.219946, 0.110653},{1.000000, 0.207912, 0.104528},{1.000000, 0.195845, 0.098400},{1.000000, 0.183750, 0.092268},{1.000000, 0.171626, 0.086133},{1.000000, 0.159476, 0.079994},{1.000000, 0.147302, 0.073853},{1.000000, 0.135105, 0.067708},{1.000000, 0.122888, 0.061561},{1.000000, 0.110653, 0.055411},{1.000000, 0.098400, 0.049260},{1.000000, 0.086133, 0.043107},{1.000000, 0.073853, 0.036951},{1.000000, 0.061561, 0.030795},{1.000000, 0.049260, 0.024637},{1.000000, 0.036951, 0.018479},{1.000000, 0.024637, 0.012320},{1.000000, 0.012320, 0.006160},{1.000000, 0.000000, 0.000000}}}, + {"spectral", {{0.619608, 0.003922, 0.258824},{0.628066, 0.013303, 0.260823},{0.636524, 0.022684, 0.262822},{0.644983, 0.032065, 0.264821},{0.653441, 0.041446, 0.266820},{0.661899, 0.050827, 0.268820},{0.670358, 0.060208, 0.270819},{0.678816, 0.069589, 0.272818},{0.687274, 0.078970, 0.274817},{0.695732, 0.088351, 0.276817},{0.704191, 0.097732, 0.278816},{0.712649, 0.107113, 0.280815},{0.721107, 0.116494, 0.282814},{0.729566, 0.125875, 0.284814},{0.738024, 0.135256, 0.286813},{0.746482, 0.144637, 0.288812},{0.754940, 0.154018, 0.290811},{0.763399, 0.163399, 0.292810},{0.771857, 0.172780, 0.294810},{0.780315, 0.182161, 0.296809},{0.788774, 0.191542, 0.298808},{0.797232, 0.200923, 0.300807},{0.805690, 0.210304, 0.302807},{0.814148, 0.219685, 0.304806},{0.822607, 0.229066, 0.306805},{0.831065, 0.238447, 0.308804},{0.837678, 0.246751, 0.308881},{0.842445, 0.253979, 0.307036},{0.847213, 0.261207, 0.305190},{0.851980, 0.268435, 0.303345},{0.856747, 0.275663, 0.301499},{0.861515, 0.282891, 0.299654},{0.866282, 0.290119, 0.297809},{0.871050, 0.297347, 0.295963},{0.875817, 0.304575, 0.294118},{0.880584, 0.311803, 0.292272},{0.885352, 0.319031, 0.290427},{0.890119, 0.326259, 0.288581},{0.894887, 0.333487, 0.286736},{0.899654, 0.340715, 0.284890},{0.904421, 0.347943, 0.283045},{0.909189, 0.355171, 0.281200},{0.913956, 0.362399, 0.279354},{0.918724, 0.369627, 0.277509},{0.923491, 0.376855, 0.275663},{0.928258, 0.384083, 0.273818},{0.933026, 0.391311, 0.271972},{0.937793, 0.398539, 0.270127},{0.942561, 0.405767, 0.268281},{0.947328, 0.412995, 0.266436},{0.952095, 0.420223, 0.264591},{0.956863, 0.427451, 0.262745},{0.958247, 0.437447, 0.267359},{0.959631, 0.447443, 0.271972},{0.961015, 0.457439, 0.276586},{0.962399, 0.467436, 0.281200},{0.963783, 0.477432, 0.285813},{0.965167, 0.487428, 0.290427},{0.966551, 0.497424, 0.295040},{0.967935, 0.507420, 0.299654},{0.969319, 0.517416, 0.304268},{0.970704, 0.527413, 0.308881},{0.972088, 0.537409, 0.313495},{0.973472, 0.547405, 0.318108},{0.974856, 0.557401, 0.322722},{0.976240, 0.567397, 0.327336},{0.977624, 0.577393, 0.331949},{0.979008, 0.587389, 0.336563},{0.980392, 0.597386, 0.341176},{0.981776, 0.607382, 0.345790},{0.983160, 0.617378, 0.350404},{0.984544, 0.627374, 0.355017},{0.985928, 0.637370, 0.359631},{0.987313, 0.647366, 0.364245},{0.988697, 0.657363, 0.368858},{0.990081, 0.667359, 0.373472},{0.991465, 0.677355, 0.378085},{0.992234, 0.686198, 0.383622},{0.992388, 0.693887, 0.390081},{0.992541, 0.701576, 0.396540},{0.992695, 0.709266, 0.402999},{0.992849, 0.716955, 0.409458},{0.993003, 0.724644, 0.415917},{0.993156, 0.732334, 0.422376},{0.993310, 0.740023, 0.428835},{0.993464, 0.747712, 0.435294},{0.993618, 0.755402, 0.441753},{0.993772, 0.763091, 0.448212},{0.993925, 0.770780, 0.454671},{0.994079, 0.778470, 0.461130},{0.994233, 0.786159, 0.467589},{0.994387, 0.793849, 0.474048},{0.994541, 0.801538, 0.480507},{0.994694, 0.809227, 0.486967},{0.994848, 0.816917, 0.493426},{0.995002, 0.824606, 0.499885},{0.995156, 0.832295, 0.506344},{0.995309, 0.839985, 0.512803},{0.995463, 0.847674, 0.519262},{0.995617, 0.855363, 0.525721},{0.995771, 0.863053, 0.532180},{0.995925, 0.870742, 0.538639},{0.996078, 0.878431, 0.545098},{0.996232, 0.883199, 0.553095},{0.996386, 0.887966, 0.561092},{0.996540, 0.892734, 0.569089},{0.996694, 0.897501, 0.577086},{0.996847, 0.902268, 0.585083},{0.997001, 0.907036, 0.593080},{0.997155, 0.911803, 0.601077},{0.997309, 0.916571, 0.609073},{0.997463, 0.921338, 0.617070},{0.997616, 0.926105, 0.625067},{0.997770, 0.930873, 0.633064},{0.997924, 0.935640, 0.641061},{0.998078, 0.940408, 0.649058},{0.998231, 0.945175, 0.657055},{0.998385, 0.949942, 0.665052},{0.998539, 0.954710, 0.673049},{0.998693, 0.959477, 0.681046},{0.998847, 0.964245, 0.689043},{0.999000, 0.969012, 0.697040},{0.999154, 0.973779, 0.705037},{0.999308, 0.978547, 0.713033},{0.999462, 0.983314, 0.721030},{0.999616, 0.988082, 0.729027},{0.999769, 0.992849, 0.737024},{0.999923, 0.997616, 0.745021},{0.998078, 0.999231, 0.746021},{0.994233, 0.997693, 0.740023},{0.990388, 0.996155, 0.734025},{0.986544, 0.994617, 0.728028},{0.982699, 0.993080, 0.722030},{0.978854, 0.991542, 0.716032},{0.975010, 0.990004, 0.710035},{0.971165, 0.988466, 0.704037},{0.967320, 0.986928, 0.698039},{0.963476, 0.985390, 0.692042},{0.959631, 0.983852, 0.686044},{0.955786, 0.982314, 0.680046},{0.951942, 0.980777, 0.674048},{0.948097, 0.979239, 0.668051},{0.944252, 0.977701, 0.662053},{0.940408, 0.976163, 0.656055},{0.936563, 0.974625, 0.650058},{0.932718, 0.973087, 0.644060},{0.928874, 0.971549, 0.638062},{0.925029, 0.970012, 0.632065},{0.921184, 0.968474, 0.626067},{0.917339, 0.966936, 0.620069},{0.913495, 0.965398, 0.614072},{0.909650, 0.963860, 0.608074},{0.905805, 0.962322, 0.602076},{0.901961, 0.960784, 0.596078},{0.892887, 0.957093, 0.597924},{0.883814, 0.953403, 0.599769},{0.874740, 0.949712, 0.601615},{0.865667, 0.946021, 0.603460},{0.856594, 0.942330, 0.605306},{0.847520, 0.938639, 0.607151},{0.838447, 0.934948, 0.608997},{0.829373, 0.931257, 0.610842},{0.820300, 0.927566, 0.612687},{0.811226, 0.923875, 0.614533},{0.802153, 0.920185, 0.616378},{0.793080, 0.916494, 0.618224},{0.784006, 0.912803, 0.620069},{0.774933, 0.909112, 0.621915},{0.765859, 0.905421, 0.623760},{0.756786, 0.901730, 0.625606},{0.747712, 0.898039, 0.627451},{0.738639, 0.894348, 0.629296},{0.729566, 0.890657, 0.631142},{0.720492, 0.886967, 0.632987},{0.711419, 0.883276, 0.634833},{0.702345, 0.879585, 0.636678},{0.693272, 0.875894, 0.638524},{0.684198, 0.872203, 0.640369},{0.675125, 0.868512, 0.642215},{0.665283, 0.864591, 0.643214},{0.654671, 0.860438, 0.643368},{0.644060, 0.856286, 0.643522},{0.633449, 0.852134, 0.643676},{0.622837, 0.847982, 0.643829},{0.612226, 0.843829, 0.643983},{0.601615, 0.839677, 0.644137},{0.591003, 0.835525, 0.644291},{0.580392, 0.831373, 0.644444},{0.569781, 0.827220, 0.644598},{0.559170, 0.823068, 0.644752},{0.548558, 0.818916, 0.644906},{0.537947, 0.814764, 0.645060},{0.527336, 0.810611, 0.645213},{0.516724, 0.806459, 0.645367},{0.506113, 0.802307, 0.645521},{0.495502, 0.798155, 0.645675},{0.484890, 0.794002, 0.645829},{0.474279, 0.789850, 0.645982},{0.463668, 0.785698, 0.646136},{0.453057, 0.781546, 0.646290},{0.442445, 0.777393, 0.646444},{0.431834, 0.773241, 0.646597},{0.421223, 0.769089, 0.646751},{0.410611, 0.764937, 0.646905},{0.400000, 0.760784, 0.647059},{0.392003, 0.751865, 0.650750},{0.384006, 0.742945, 0.654441},{0.376009, 0.734025, 0.658131},{0.368012, 0.725106, 0.661822},{0.360015, 0.716186, 0.665513},{0.352018, 0.707266, 0.669204},{0.344022, 0.698347, 0.672895},{0.336025, 0.689427, 0.676586},{0.328028, 0.680507, 0.680277},{0.320031, 0.671588, 0.683968},{0.312034, 0.662668, 0.687659},{0.304037, 0.653749, 0.691349},{0.296040, 0.644829, 0.695040},{0.288043, 0.635909, 0.698731},{0.280046, 0.626990, 0.702422},{0.272049, 0.618070, 0.706113},{0.264052, 0.609150, 0.709804},{0.256055, 0.600231, 0.713495},{0.248058, 0.591311, 0.717186},{0.240062, 0.582391, 0.720877},{0.232065, 0.573472, 0.724567},{0.224068, 0.564552, 0.728258},{0.216071, 0.555632, 0.731949},{0.208074, 0.546713, 0.735640},{0.200077, 0.537793, 0.739331},{0.199462, 0.528950, 0.739100},{0.206228, 0.520185, 0.734948},{0.212995, 0.511419, 0.730796},{0.219762, 0.502653, 0.726644},{0.226528, 0.493887, 0.722491},{0.233295, 0.485121, 0.718339},{0.240062, 0.476355, 0.714187},{0.246828, 0.467589, 0.710035},{0.253595, 0.458824, 0.705882},{0.260361, 0.450058, 0.701730},{0.267128, 0.441292, 0.697578},{0.273895, 0.432526, 0.693426},{0.280661, 0.423760, 0.689273},{0.287428, 0.414994, 0.685121},{0.294195, 0.406228, 0.680969},{0.300961, 0.397463, 0.676817},{0.307728, 0.388697, 0.672664},{0.314494, 0.379931, 0.668512},{0.321261, 0.371165, 0.664360},{0.328028, 0.362399, 0.660208},{0.334794, 0.353633, 0.656055},{0.341561, 0.344867, 0.651903},{0.348328, 0.336101, 0.647751},{0.355094, 0.327336, 0.643599},{0.361861, 0.318570, 0.639446},{0.368627, 0.309804, 0.635294}}}, + {"hot", {{0.041600, 0.000000, 0.000000},{0.051895, 0.000000, 0.000000},{0.062190, 0.000000, 0.000000},{0.072485, 0.000000, 0.000000},{0.082779, 0.000000, 0.000000},{0.093074, 0.000000, 0.000000},{0.103369, 0.000000, 0.000000},{0.113664, 0.000000, 0.000000},{0.123959, 0.000000, 0.000000},{0.134254, 0.000000, 0.000000},{0.144548, 0.000000, 0.000000},{0.154843, 0.000000, 0.000000},{0.165138, 0.000000, 0.000000},{0.175433, 0.000000, 0.000000},{0.185728, 0.000000, 0.000000},{0.196023, 0.000000, 0.000000},{0.206318, 0.000000, 0.000000},{0.216612, 0.000000, 0.000000},{0.226907, 0.000000, 0.000000},{0.237202, 0.000000, 0.000000},{0.247497, 0.000000, 0.000000},{0.257792, 0.000000, 0.000000},{0.268087, 0.000000, 0.000000},{0.278381, 0.000000, 0.000000},{0.288676, 0.000000, 0.000000},{0.298971, 0.000000, 0.000000},{0.309266, 0.000000, 0.000000},{0.319561, 0.000000, 0.000000},{0.329856, 0.000000, 0.000000},{0.340150, 0.000000, 0.000000},{0.350445, 0.000000, 0.000000},{0.360740, 0.000000, 0.000000},{0.371035, 0.000000, 0.000000},{0.381330, 0.000000, 0.000000},{0.391625, 0.000000, 0.000000},{0.401920, 0.000000, 0.000000},{0.412214, 0.000000, 0.000000},{0.422509, 0.000000, 0.000000},{0.432804, 0.000000, 0.000000},{0.443099, 0.000000, 0.000000},{0.453394, 0.000000, 0.000000},{0.463689, 0.000000, 0.000000},{0.473983, 0.000000, 0.000000},{0.484278, 0.000000, 0.000000},{0.494573, 0.000000, 0.000000},{0.504868, 0.000000, 0.000000},{0.515163, 0.000000, 0.000000},{0.525458, 0.000000, 0.000000},{0.535753, 0.000000, 0.000000},{0.546047, 0.000000, 0.000000},{0.556342, 0.000000, 0.000000},{0.566637, 0.000000, 0.000000},{0.576932, 0.000000, 0.000000},{0.587227, 0.000000, 0.000000},{0.597522, 0.000000, 0.000000},{0.607816, 0.000000, 0.000000},{0.618111, 0.000000, 0.000000},{0.628406, 0.000000, 0.000000},{0.638701, 0.000000, 0.000000},{0.648996, 0.000000, 0.000000},{0.659291, 0.000000, 0.000000},{0.669585, 0.000000, 0.000000},{0.679880, 0.000000, 0.000000},{0.690175, 0.000000, 0.000000},{0.700470, 0.000000, 0.000000},{0.710765, 0.000000, 0.000000},{0.721060, 0.000000, 0.000000},{0.731355, 0.000000, 0.000000},{0.741649, 0.000000, 0.000000},{0.751944, 0.000000, 0.000000},{0.762239, 0.000000, 0.000000},{0.772534, 0.000000, 0.000000},{0.782829, 0.000000, 0.000000},{0.793124, 0.000000, 0.000000},{0.803418, 0.000000, 0.000000},{0.813713, 0.000000, 0.000000},{0.824008, 0.000000, 0.000000},{0.834303, 0.000000, 0.000000},{0.844598, 0.000000, 0.000000},{0.854893, 0.000000, 0.000000},{0.865188, 0.000000, 0.000000},{0.875482, 0.000000, 0.000000},{0.885777, 0.000000, 0.000000},{0.896072, 0.000000, 0.000000},{0.906367, 0.000000, 0.000000},{0.916662, 0.000000, 0.000000},{0.926957, 0.000000, 0.000000},{0.937251, 0.000000, 0.000000},{0.947546, 0.000000, 0.000000},{0.957841, 0.000000, 0.000000},{0.968136, 0.000000, 0.000000},{0.978431, 0.000000, 0.000000},{0.988726, 0.000000, 0.000000},{0.999020, 0.000000, 0.000000},{1.000000, 0.009315, 0.000000},{1.000000, 0.019609, 0.000000},{1.000000, 0.029903, 0.000000},{1.000000, 0.040197, 0.000000},{1.000000, 0.050491, 0.000000},{1.000000, 0.060785, 0.000000},{1.000000, 0.071079, 0.000000},{1.000000, 0.081373, 0.000000},{1.000000, 0.091667, 0.000000},{1.000000, 0.101962, 0.000000},{1.000000, 0.112256, 0.000000},{1.000000, 0.122550, 0.000000},{1.000000, 0.132844, 0.000000},{1.000000, 0.143138, 0.000000},{1.000000, 0.153432, 0.000000},{1.000000, 0.163726, 0.000000},{1.000000, 0.174020, 0.000000},{1.000000, 0.184314, 0.000000},{1.000000, 0.194608, 0.000000},{1.000000, 0.204903, 0.000000},{1.000000, 0.215197, 0.000000},{1.000000, 0.225491, 0.000000},{1.000000, 0.235785, 0.000000},{1.000000, 0.246079, 0.000000},{1.000000, 0.256373, 0.000000},{1.000000, 0.266667, 0.000000},{1.000000, 0.276961, 0.000000},{1.000000, 0.287255, 0.000000},{1.000000, 0.297549, 0.000000},{1.000000, 0.307844, 0.000000},{1.000000, 0.318138, 0.000000},{1.000000, 0.328432, 0.000000},{1.000000, 0.338726, 0.000000},{1.000000, 0.349020, 0.000000},{1.000000, 0.359314, 0.000000},{1.000000, 0.369608, 0.000000},{1.000000, 0.379902, 0.000000},{1.000000, 0.390196, 0.000000},{1.000000, 0.400491, 0.000000},{1.000000, 0.410785, 0.000000},{1.000000, 0.421079, 0.000000},{1.000000, 0.431373, 0.000000},{1.000000, 0.441667, 0.000000},{1.000000, 0.451961, 0.000000},{1.000000, 0.462255, 0.000000},{1.000000, 0.472549, 0.000000},{1.000000, 0.482843, 0.000000},{1.000000, 0.493137, 0.000000},{1.000000, 0.503432, 0.000000},{1.000000, 0.513726, 0.000000},{1.000000, 0.524020, 0.000000},{1.000000, 0.534314, 0.000000},{1.000000, 0.544608, 0.000000},{1.000000, 0.554902, 0.000000},{1.000000, 0.565196, 0.000000},{1.000000, 0.575490, 0.000000},{1.000000, 0.585784, 0.000000},{1.000000, 0.596078, 0.000000},{1.000000, 0.606373, 0.000000},{1.000000, 0.616667, 0.000000},{1.000000, 0.626961, 0.000000},{1.000000, 0.637255, 0.000000},{1.000000, 0.647549, 0.000000},{1.000000, 0.657843, 0.000000},{1.000000, 0.668137, 0.000000},{1.000000, 0.678431, 0.000000},{1.000000, 0.688725, 0.000000},{1.000000, 0.699019, 0.000000},{1.000000, 0.709314, 0.000000},{1.000000, 0.719608, 0.000000},{1.000000, 0.729902, 0.000000},{1.000000, 0.740196, 0.000000},{1.000000, 0.750490, 0.000000},{1.000000, 0.760784, 0.000000},{1.000000, 0.771078, 0.000000},{1.000000, 0.781372, 0.000000},{1.000000, 0.791666, 0.000000},{1.000000, 0.801960, 0.000000},{1.000000, 0.812255, 0.000000},{1.000000, 0.822549, 0.000000},{1.000000, 0.832843, 0.000000},{1.000000, 0.843137, 0.000000},{1.000000, 0.853431, 0.000000},{1.000000, 0.863725, 0.000000},{1.000000, 0.874019, 0.000000},{1.000000, 0.884313, 0.000000},{1.000000, 0.894607, 0.000000},{1.000000, 0.904901, 0.000000},{1.000000, 0.915196, 0.000000},{1.000000, 0.925490, 0.000000},{1.000000, 0.935784, 0.000000},{1.000000, 0.946078, 0.000000},{1.000000, 0.956372, 0.000000},{1.000000, 0.966666, 0.000000},{1.000000, 0.976960, 0.000000},{1.000000, 0.987254, 0.000000},{1.000000, 0.997548, 0.000000},{1.000000, 1.000000, 0.011764},{1.000000, 1.000000, 0.027205},{1.000000, 1.000000, 0.042646},{1.000000, 1.000000, 0.058087},{1.000000, 1.000000, 0.073528},{1.000000, 1.000000, 0.088970},{1.000000, 1.000000, 0.104411},{1.000000, 1.000000, 0.119852},{1.000000, 1.000000, 0.135293},{1.000000, 1.000000, 0.150734},{1.000000, 1.000000, 0.166176},{1.000000, 1.000000, 0.181617},{1.000000, 1.000000, 0.197058},{1.000000, 1.000000, 0.212499},{1.000000, 1.000000, 0.227940},{1.000000, 1.000000, 0.243382},{1.000000, 1.000000, 0.258823},{1.000000, 1.000000, 0.274264},{1.000000, 1.000000, 0.289705},{1.000000, 1.000000, 0.305146},{1.000000, 1.000000, 0.320588},{1.000000, 1.000000, 0.336029},{1.000000, 1.000000, 0.351470},{1.000000, 1.000000, 0.366911},{1.000000, 1.000000, 0.382352},{1.000000, 1.000000, 0.397794},{1.000000, 1.000000, 0.413235},{1.000000, 1.000000, 0.428676},{1.000000, 1.000000, 0.444117},{1.000000, 1.000000, 0.459558},{1.000000, 1.000000, 0.474999},{1.000000, 1.000000, 0.490441},{1.000000, 1.000000, 0.505882},{1.000000, 1.000000, 0.521323},{1.000000, 1.000000, 0.536764},{1.000000, 1.000000, 0.552205},{1.000000, 1.000000, 0.567647},{1.000000, 1.000000, 0.583088},{1.000000, 1.000000, 0.598529},{1.000000, 1.000000, 0.613970},{1.000000, 1.000000, 0.629411},{1.000000, 1.000000, 0.644853},{1.000000, 1.000000, 0.660294},{1.000000, 1.000000, 0.675735},{1.000000, 1.000000, 0.691176},{1.000000, 1.000000, 0.706617},{1.000000, 1.000000, 0.722059},{1.000000, 1.000000, 0.737500},{1.000000, 1.000000, 0.752941},{1.000000, 1.000000, 0.768382},{1.000000, 1.000000, 0.783823},{1.000000, 1.000000, 0.799265},{1.000000, 1.000000, 0.814706},{1.000000, 1.000000, 0.830147},{1.000000, 1.000000, 0.845588},{1.000000, 1.000000, 0.861029},{1.000000, 1.000000, 0.876470},{1.000000, 1.000000, 0.891912},{1.000000, 1.000000, 0.907353},{1.000000, 1.000000, 0.922794},{1.000000, 1.000000, 0.938235},{1.000000, 1.000000, 0.953676},{1.000000, 1.000000, 0.969118},{1.000000, 1.000000, 0.984559},{1.000000, 1.000000, 1.000000}}}, + {"afmhot", {{0.000000, 0.000000, 0.000000},{0.007843, 0.000000, 0.000000},{0.015686, 0.000000, 0.000000},{0.023529, 0.000000, 0.000000},{0.031373, 0.000000, 0.000000},{0.039216, 0.000000, 0.000000},{0.047059, 0.000000, 0.000000},{0.054902, 0.000000, 0.000000},{0.062745, 0.000000, 0.000000},{0.070588, 0.000000, 0.000000},{0.078431, 0.000000, 0.000000},{0.086275, 0.000000, 0.000000},{0.094118, 0.000000, 0.000000},{0.101961, 0.000000, 0.000000},{0.109804, 0.000000, 0.000000},{0.117647, 0.000000, 0.000000},{0.125490, 0.000000, 0.000000},{0.133333, 0.000000, 0.000000},{0.141176, 0.000000, 0.000000},{0.149020, 0.000000, 0.000000},{0.156863, 0.000000, 0.000000},{0.164706, 0.000000, 0.000000},{0.172549, 0.000000, 0.000000},{0.180392, 0.000000, 0.000000},{0.188235, 0.000000, 0.000000},{0.196078, 0.000000, 0.000000},{0.203922, 0.000000, 0.000000},{0.211765, 0.000000, 0.000000},{0.219608, 0.000000, 0.000000},{0.227451, 0.000000, 0.000000},{0.235294, 0.000000, 0.000000},{0.243137, 0.000000, 0.000000},{0.250980, 0.000000, 0.000000},{0.258824, 0.000000, 0.000000},{0.266667, 0.000000, 0.000000},{0.274510, 0.000000, 0.000000},{0.282353, 0.000000, 0.000000},{0.290196, 0.000000, 0.000000},{0.298039, 0.000000, 0.000000},{0.305882, 0.000000, 0.000000},{0.313725, 0.000000, 0.000000},{0.321569, 0.000000, 0.000000},{0.329412, 0.000000, 0.000000},{0.337255, 0.000000, 0.000000},{0.345098, 0.000000, 0.000000},{0.352941, 0.000000, 0.000000},{0.360784, 0.000000, 0.000000},{0.368627, 0.000000, 0.000000},{0.376471, 0.000000, 0.000000},{0.384314, 0.000000, 0.000000},{0.392157, 0.000000, 0.000000},{0.400000, 0.000000, 0.000000},{0.407843, 0.000000, 0.000000},{0.415686, 0.000000, 0.000000},{0.423529, 0.000000, 0.000000},{0.431373, 0.000000, 0.000000},{0.439216, 0.000000, 0.000000},{0.447059, 0.000000, 0.000000},{0.454902, 0.000000, 0.000000},{0.462745, 0.000000, 0.000000},{0.470588, 0.000000, 0.000000},{0.478431, 0.000000, 0.000000},{0.486275, 0.000000, 0.000000},{0.494118, 0.000000, 0.000000},{0.501961, 0.001961, 0.000000},{0.509804, 0.009804, 0.000000},{0.517647, 0.017647, 0.000000},{0.525490, 0.025490, 0.000000},{0.533333, 0.033333, 0.000000},{0.541176, 0.041176, 0.000000},{0.549020, 0.049020, 0.000000},{0.556863, 0.056863, 0.000000},{0.564706, 0.064706, 0.000000},{0.572549, 0.072549, 0.000000},{0.580392, 0.080392, 0.000000},{0.588235, 0.088235, 0.000000},{0.596078, 0.096078, 0.000000},{0.603922, 0.103922, 0.000000},{0.611765, 0.111765, 0.000000},{0.619608, 0.119608, 0.000000},{0.627451, 0.127451, 0.000000},{0.635294, 0.135294, 0.000000},{0.643137, 0.143137, 0.000000},{0.650980, 0.150980, 0.000000},{0.658824, 0.158824, 0.000000},{0.666667, 0.166667, 0.000000},{0.674510, 0.174510, 0.000000},{0.682353, 0.182353, 0.000000},{0.690196, 0.190196, 0.000000},{0.698039, 0.198039, 0.000000},{0.705882, 0.205882, 0.000000},{0.713725, 0.213725, 0.000000},{0.721569, 0.221569, 0.000000},{0.729412, 0.229412, 0.000000},{0.737255, 0.237255, 0.000000},{0.745098, 0.245098, 0.000000},{0.752941, 0.252941, 0.000000},{0.760784, 0.260784, 0.000000},{0.768627, 0.268627, 0.000000},{0.776471, 0.276471, 0.000000},{0.784314, 0.284314, 0.000000},{0.792157, 0.292157, 0.000000},{0.800000, 0.300000, 0.000000},{0.807843, 0.307843, 0.000000},{0.815686, 0.315686, 0.000000},{0.823529, 0.323529, 0.000000},{0.831373, 0.331373, 0.000000},{0.839216, 0.339216, 0.000000},{0.847059, 0.347059, 0.000000},{0.854902, 0.354902, 0.000000},{0.862745, 0.362745, 0.000000},{0.870588, 0.370588, 0.000000},{0.878431, 0.378431, 0.000000},{0.886275, 0.386275, 0.000000},{0.894118, 0.394118, 0.000000},{0.901961, 0.401961, 0.000000},{0.909804, 0.409804, 0.000000},{0.917647, 0.417647, 0.000000},{0.925490, 0.425490, 0.000000},{0.933333, 0.433333, 0.000000},{0.941176, 0.441176, 0.000000},{0.949020, 0.449020, 0.000000},{0.956863, 0.456863, 0.000000},{0.964706, 0.464706, 0.000000},{0.972549, 0.472549, 0.000000},{0.980392, 0.480392, 0.000000},{0.988235, 0.488235, 0.000000},{0.996078, 0.496078, 0.000000},{1.000000, 0.503922, 0.003922},{1.000000, 0.511765, 0.011765},{1.000000, 0.519608, 0.019608},{1.000000, 0.527451, 0.027451},{1.000000, 0.535294, 0.035294},{1.000000, 0.543137, 0.043137},{1.000000, 0.550980, 0.050980},{1.000000, 0.558824, 0.058824},{1.000000, 0.566667, 0.066667},{1.000000, 0.574510, 0.074510},{1.000000, 0.582353, 0.082353},{1.000000, 0.590196, 0.090196},{1.000000, 0.598039, 0.098039},{1.000000, 0.605882, 0.105882},{1.000000, 0.613725, 0.113725},{1.000000, 0.621569, 0.121569},{1.000000, 0.629412, 0.129412},{1.000000, 0.637255, 0.137255},{1.000000, 0.645098, 0.145098},{1.000000, 0.652941, 0.152941},{1.000000, 0.660784, 0.160784},{1.000000, 0.668627, 0.168627},{1.000000, 0.676471, 0.176471},{1.000000, 0.684314, 0.184314},{1.000000, 0.692157, 0.192157},{1.000000, 0.700000, 0.200000},{1.000000, 0.707843, 0.207843},{1.000000, 0.715686, 0.215686},{1.000000, 0.723529, 0.223529},{1.000000, 0.731373, 0.231373},{1.000000, 0.739216, 0.239216},{1.000000, 0.747059, 0.247059},{1.000000, 0.754902, 0.254902},{1.000000, 0.762745, 0.262745},{1.000000, 0.770588, 0.270588},{1.000000, 0.778431, 0.278431},{1.000000, 0.786275, 0.286275},{1.000000, 0.794118, 0.294118},{1.000000, 0.801961, 0.301961},{1.000000, 0.809804, 0.309804},{1.000000, 0.817647, 0.317647},{1.000000, 0.825490, 0.325490},{1.000000, 0.833333, 0.333333},{1.000000, 0.841176, 0.341176},{1.000000, 0.849020, 0.349020},{1.000000, 0.856863, 0.356863},{1.000000, 0.864706, 0.364706},{1.000000, 0.872549, 0.372549},{1.000000, 0.880392, 0.380392},{1.000000, 0.888235, 0.388235},{1.000000, 0.896078, 0.396078},{1.000000, 0.903922, 0.403922},{1.000000, 0.911765, 0.411765},{1.000000, 0.919608, 0.419608},{1.000000, 0.927451, 0.427451},{1.000000, 0.935294, 0.435294},{1.000000, 0.943137, 0.443137},{1.000000, 0.950980, 0.450980},{1.000000, 0.958824, 0.458824},{1.000000, 0.966667, 0.466667},{1.000000, 0.974510, 0.474510},{1.000000, 0.982353, 0.482353},{1.000000, 0.990196, 0.490196},{1.000000, 0.998039, 0.498039},{1.000000, 1.000000, 0.505882},{1.000000, 1.000000, 0.513725},{1.000000, 1.000000, 0.521569},{1.000000, 1.000000, 0.529412},{1.000000, 1.000000, 0.537255},{1.000000, 1.000000, 0.545098},{1.000000, 1.000000, 0.552941},{1.000000, 1.000000, 0.560784},{1.000000, 1.000000, 0.568627},{1.000000, 1.000000, 0.576471},{1.000000, 1.000000, 0.584314},{1.000000, 1.000000, 0.592157},{1.000000, 1.000000, 0.600000},{1.000000, 1.000000, 0.607843},{1.000000, 1.000000, 0.615686},{1.000000, 1.000000, 0.623529},{1.000000, 1.000000, 0.631373},{1.000000, 1.000000, 0.639216},{1.000000, 1.000000, 0.647059},{1.000000, 1.000000, 0.654902},{1.000000, 1.000000, 0.662745},{1.000000, 1.000000, 0.670588},{1.000000, 1.000000, 0.678431},{1.000000, 1.000000, 0.686275},{1.000000, 1.000000, 0.694118},{1.000000, 1.000000, 0.701961},{1.000000, 1.000000, 0.709804},{1.000000, 1.000000, 0.717647},{1.000000, 1.000000, 0.725490},{1.000000, 1.000000, 0.733333},{1.000000, 1.000000, 0.741176},{1.000000, 1.000000, 0.749020},{1.000000, 1.000000, 0.756863},{1.000000, 1.000000, 0.764706},{1.000000, 1.000000, 0.772549},{1.000000, 1.000000, 0.780392},{1.000000, 1.000000, 0.788235},{1.000000, 1.000000, 0.796078},{1.000000, 1.000000, 0.803922},{1.000000, 1.000000, 0.811765},{1.000000, 1.000000, 0.819608},{1.000000, 1.000000, 0.827451},{1.000000, 1.000000, 0.835294},{1.000000, 1.000000, 0.843137},{1.000000, 1.000000, 0.850980},{1.000000, 1.000000, 0.858824},{1.000000, 1.000000, 0.866667},{1.000000, 1.000000, 0.874510},{1.000000, 1.000000, 0.882353},{1.000000, 1.000000, 0.890196},{1.000000, 1.000000, 0.898039},{1.000000, 1.000000, 0.905882},{1.000000, 1.000000, 0.913725},{1.000000, 1.000000, 0.921569},{1.000000, 1.000000, 0.929412},{1.000000, 1.000000, 0.937255},{1.000000, 1.000000, 0.945098},{1.000000, 1.000000, 0.952941},{1.000000, 1.000000, 0.960784},{1.000000, 1.000000, 0.968627},{1.000000, 1.000000, 0.976471},{1.000000, 1.000000, 0.984314},{1.000000, 1.000000, 0.992157},{1.000000, 1.000000, 1.000000}}}, + {"copper", {{0.000000, 0.000000, 0.000000},{0.004844, 0.003064, 0.001951},{0.009689, 0.006127, 0.003902},{0.014533, 0.009191, 0.005853},{0.019377, 0.012254, 0.007804},{0.024221, 0.015318, 0.009755},{0.029066, 0.018381, 0.011706},{0.033910, 0.021445, 0.013657},{0.038754, 0.024508, 0.015608},{0.043599, 0.027572, 0.017559},{0.048443, 0.030635, 0.019510},{0.053287, 0.033699, 0.021461},{0.058131, 0.036762, 0.023412},{0.062976, 0.039826, 0.025363},{0.067820, 0.042889, 0.027314},{0.072664, 0.045953, 0.029265},{0.077509, 0.049016, 0.031216},{0.082353, 0.052080, 0.033167},{0.087197, 0.055144, 0.035118},{0.092042, 0.058207, 0.037069},{0.096886, 0.061271, 0.039020},{0.101730, 0.064334, 0.040971},{0.106574, 0.067398, 0.042922},{0.111419, 0.070461, 0.044873},{0.116263, 0.073525, 0.046824},{0.121107, 0.076588, 0.048775},{0.125952, 0.079652, 0.050725},{0.130796, 0.082715, 0.052676},{0.135640, 0.085779, 0.054627},{0.140484, 0.088842, 0.056578},{0.145329, 0.091906, 0.058529},{0.150173, 0.094969, 0.060480},{0.155017, 0.098033, 0.062431},{0.159862, 0.101096, 0.064382},{0.164706, 0.104160, 0.066333},{0.169550, 0.107224, 0.068284},{0.174394, 0.110287, 0.070235},{0.179239, 0.113351, 0.072186},{0.184083, 0.116414, 0.074137},{0.188927, 0.119478, 0.076088},{0.193772, 0.122541, 0.078039},{0.198616, 0.125605, 0.079990},{0.203460, 0.128668, 0.081941},{0.208304, 0.131732, 0.083892},{0.213149, 0.134795, 0.085843},{0.217993, 0.137859, 0.087794},{0.222837, 0.140922, 0.089745},{0.227682, 0.143986, 0.091696},{0.232526, 0.147049, 0.093647},{0.237370, 0.150113, 0.095598},{0.242214, 0.153176, 0.097549},{0.247059, 0.156240, 0.099500},{0.251903, 0.159304, 0.101451},{0.256747, 0.162367, 0.103402},{0.261592, 0.165431, 0.105353},{0.266436, 0.168494, 0.107304},{0.271280, 0.171558, 0.109255},{0.276125, 0.174621, 0.111206},{0.280969, 0.177685, 0.113157},{0.285813, 0.180748, 0.115108},{0.290657, 0.183812, 0.117059},{0.295502, 0.186875, 0.119010},{0.300346, 0.189939, 0.120961},{0.305190, 0.193002, 0.122912},{0.310035, 0.196066, 0.124863},{0.314879, 0.199129, 0.126814},{0.319723, 0.202193, 0.128765},{0.324567, 0.205256, 0.130716},{0.329412, 0.208320, 0.132667},{0.334256, 0.211384, 0.134618},{0.339100, 0.214447, 0.136569},{0.343945, 0.217511, 0.138520},{0.348789, 0.220574, 0.140471},{0.353633, 0.223638, 0.142422},{0.358477, 0.226701, 0.144373},{0.363322, 0.229765, 0.146324},{0.368166, 0.232828, 0.148275},{0.373010, 0.235892, 0.150225},{0.377855, 0.238955, 0.152176},{0.382699, 0.242019, 0.154127},{0.387543, 0.245082, 0.156078},{0.392387, 0.248146, 0.158029},{0.397232, 0.251209, 0.159980},{0.402076, 0.254273, 0.161931},{0.406920, 0.257336, 0.163882},{0.411765, 0.260400, 0.165833},{0.416609, 0.263464, 0.167784},{0.421453, 0.266527, 0.169735},{0.426297, 0.269591, 0.171686},{0.431142, 0.272654, 0.173637},{0.435986, 0.275718, 0.175588},{0.440830, 0.278781, 0.177539},{0.445675, 0.281845, 0.179490},{0.450519, 0.284908, 0.181441},{0.455363, 0.287972, 0.183392},{0.460208, 0.291035, 0.185343},{0.465052, 0.294099, 0.187294},{0.469896, 0.297162, 0.189245},{0.474740, 0.300226, 0.191196},{0.479585, 0.303289, 0.193147},{0.484429, 0.306353, 0.195098},{0.489273, 0.309416, 0.197049},{0.494118, 0.312480, 0.199000},{0.498962, 0.315544, 0.200951},{0.503806, 0.318607, 0.202902},{0.508650, 0.321671, 0.204853},{0.513495, 0.324734, 0.206804},{0.518339, 0.327798, 0.208755},{0.523183, 0.330861, 0.210706},{0.528028, 0.333925, 0.212657},{0.532872, 0.336988, 0.214608},{0.537716, 0.340052, 0.216559},{0.542560, 0.343115, 0.218510},{0.547405, 0.346179, 0.220461},{0.552249, 0.349242, 0.222412},{0.557093, 0.352306, 0.224363},{0.561938, 0.355369, 0.226314},{0.566782, 0.358433, 0.228265},{0.571626, 0.361496, 0.230216},{0.576470, 0.364560, 0.232167},{0.581315, 0.367624, 0.234118},{0.586159, 0.370687, 0.236069},{0.591003, 0.373751, 0.238020},{0.595848, 0.376814, 0.239971},{0.600692, 0.379878, 0.241922},{0.605536, 0.382941, 0.243873},{0.610380, 0.386005, 0.245824},{0.615225, 0.389068, 0.247775},{0.620069, 0.392132, 0.249725},{0.624913, 0.395195, 0.251676},{0.629758, 0.398259, 0.253627},{0.634602, 0.401322, 0.255578},{0.639446, 0.404386, 0.257529},{0.644291, 0.407449, 0.259480},{0.649135, 0.410513, 0.261431},{0.653979, 0.413576, 0.263382},{0.658823, 0.416640, 0.265333},{0.663668, 0.419704, 0.267284},{0.668512, 0.422767, 0.269235},{0.673356, 0.425831, 0.271186},{0.678201, 0.428894, 0.273137},{0.683045, 0.431958, 0.275088},{0.687889, 0.435021, 0.277039},{0.692733, 0.438085, 0.278990},{0.697578, 0.441148, 0.280941},{0.702422, 0.444212, 0.282892},{0.707266, 0.447275, 0.284843},{0.712111, 0.450339, 0.286794},{0.716955, 0.453402, 0.288745},{0.721799, 0.456466, 0.290696},{0.726643, 0.459529, 0.292647},{0.731488, 0.462593, 0.294598},{0.736332, 0.465656, 0.296549},{0.741176, 0.468720, 0.298500},{0.746021, 0.471784, 0.300451},{0.750865, 0.474847, 0.302402},{0.755709, 0.477911, 0.304353},{0.760553, 0.480974, 0.306304},{0.765398, 0.484038, 0.308255},{0.770242, 0.487101, 0.310206},{0.775086, 0.490165, 0.312157},{0.779931, 0.493228, 0.314108},{0.784775, 0.496292, 0.316059},{0.789619, 0.499355, 0.318010},{0.794463, 0.502419, 0.319961},{0.799308, 0.505482, 0.321912},{0.804152, 0.508546, 0.323863},{0.808996, 0.511609, 0.325814},{0.813841, 0.514673, 0.327765},{0.818685, 0.517736, 0.329716},{0.823529, 0.520800, 0.331667},{0.828374, 0.523864, 0.333618},{0.833218, 0.526927, 0.335569},{0.838062, 0.529991, 0.337520},{0.842906, 0.533054, 0.339471},{0.847751, 0.536118, 0.341422},{0.852595, 0.539181, 0.343373},{0.857439, 0.542245, 0.345324},{0.862284, 0.545308, 0.347275},{0.867128, 0.548372, 0.349225},{0.871972, 0.551435, 0.351176},{0.876816, 0.554499, 0.353127},{0.881661, 0.557562, 0.355078},{0.886505, 0.560626, 0.357029},{0.891349, 0.563689, 0.358980},{0.896194, 0.566753, 0.360931},{0.901038, 0.569816, 0.362882},{0.905882, 0.572880, 0.364833},{0.910726, 0.575944, 0.366784},{0.915571, 0.579007, 0.368735},{0.920415, 0.582071, 0.370686},{0.925259, 0.585134, 0.372637},{0.930104, 0.588198, 0.374588},{0.934948, 0.591261, 0.376539},{0.939792, 0.594325, 0.378490},{0.944636, 0.597388, 0.380441},{0.949481, 0.600452, 0.382392},{0.954325, 0.603515, 0.384343},{0.959169, 0.606579, 0.386294},{0.964014, 0.609642, 0.388245},{0.968858, 0.612706, 0.390196},{0.973702, 0.615769, 0.392147},{0.978546, 0.618833, 0.394098},{0.983391, 0.621896, 0.396049},{0.988235, 0.624960, 0.398000},{0.993079, 0.628024, 0.399951},{0.997924, 0.631087, 0.401902},{1.000000, 0.634151, 0.403853},{1.000000, 0.637214, 0.405804},{1.000000, 0.640278, 0.407755},{1.000000, 0.643341, 0.409706},{1.000000, 0.646405, 0.411657},{1.000000, 0.649468, 0.413608},{1.000000, 0.652532, 0.415559},{1.000000, 0.655595, 0.417510},{1.000000, 0.658659, 0.419461},{1.000000, 0.661722, 0.421412},{1.000000, 0.664786, 0.423363},{1.000000, 0.667849, 0.425314},{1.000000, 0.670913, 0.427265},{1.000000, 0.673976, 0.429216},{1.000000, 0.677040, 0.431167},{1.000000, 0.680104, 0.433118},{1.000000, 0.683167, 0.435069},{1.000000, 0.686231, 0.437020},{1.000000, 0.689294, 0.438971},{1.000000, 0.692358, 0.440922},{1.000000, 0.695421, 0.442873},{1.000000, 0.698485, 0.444824},{1.000000, 0.701548, 0.446775},{1.000000, 0.704612, 0.448725},{1.000000, 0.707675, 0.450676},{1.000000, 0.710739, 0.452627},{1.000000, 0.713802, 0.454578},{1.000000, 0.716866, 0.456529},{1.000000, 0.719929, 0.458480},{1.000000, 0.722993, 0.460431},{1.000000, 0.726056, 0.462382},{1.000000, 0.729120, 0.464333},{1.000000, 0.732184, 0.466284},{1.000000, 0.735247, 0.468235},{1.000000, 0.738311, 0.470186},{1.000000, 0.741374, 0.472137},{1.000000, 0.744438, 0.474088},{1.000000, 0.747501, 0.476039},{1.000000, 0.750565, 0.477990},{1.000000, 0.753628, 0.479941},{1.000000, 0.756692, 0.481892},{1.000000, 0.759755, 0.483843},{1.000000, 0.762819, 0.485794},{1.000000, 0.765882, 0.487745},{1.000000, 0.768946, 0.489696},{1.000000, 0.772009, 0.491647},{1.000000, 0.775073, 0.493598},{1.000000, 0.778136, 0.495549},{1.000000, 0.781200, 0.497500}}}, + {"coolwarm", {{0.229806, 0.298718, 0.753683},{0.234377, 0.305542, 0.759680},{0.238948, 0.312365, 0.765676},{0.243520, 0.319189, 0.771672},{0.248091, 0.326013, 0.777669},{0.252663, 0.332837, 0.783665},{0.257234, 0.339661, 0.789661},{0.261805, 0.346484, 0.795658},{0.266381, 0.353304, 0.801637},{0.271104, 0.360011, 0.807095},{0.275827, 0.366717, 0.812553},{0.280550, 0.373423, 0.818011},{0.285273, 0.380129, 0.823469},{0.289996, 0.386836, 0.828926},{0.294718, 0.393542, 0.834384},{0.299441, 0.400248, 0.839842},{0.304174, 0.406945, 0.845263},{0.309060, 0.413498, 0.850128},{0.313946, 0.420052, 0.854993},{0.318832, 0.426605, 0.859857},{0.323718, 0.433158, 0.864722},{0.328604, 0.439712, 0.869587},{0.333490, 0.446265, 0.874452},{0.338377, 0.452819, 0.879317},{0.343278, 0.459354, 0.884122},{0.348323, 0.465711, 0.888346},{0.353369, 0.472069, 0.892570},{0.358415, 0.478426, 0.896795},{0.363461, 0.484784, 0.901019},{0.368507, 0.491141, 0.905243},{0.373552, 0.497499, 0.909467},{0.378598, 0.503856, 0.913692},{0.383662, 0.510183, 0.917831},{0.388852, 0.516298, 0.921373},{0.394042, 0.522413, 0.924916},{0.399231, 0.528528, 0.928459},{0.404421, 0.534643, 0.932002},{0.409611, 0.540759, 0.935545},{0.414801, 0.546874, 0.939088},{0.419991, 0.552989, 0.942630},{0.425199, 0.559058, 0.946061},{0.430507, 0.564883, 0.948889},{0.435815, 0.570707, 0.951717},{0.441123, 0.576532, 0.954545},{0.446431, 0.582356, 0.957373},{0.451739, 0.588181, 0.960201},{0.457046, 0.594006, 0.963029},{0.462354, 0.599830, 0.965857},{0.467678, 0.605591, 0.968546},{0.473070, 0.611077, 0.970634},{0.478462, 0.616564, 0.972721},{0.483854, 0.622050, 0.974808},{0.489246, 0.627536, 0.976896},{0.494638, 0.633022, 0.978983},{0.500031, 0.638508, 0.981070},{0.505423, 0.643995, 0.983157},{0.510824, 0.649397, 0.985079},{0.516260, 0.654498, 0.986407},{0.521696, 0.659599, 0.987736},{0.527132, 0.664700, 0.989065},{0.532568, 0.669801, 0.990393},{0.538004, 0.674902, 0.991722},{0.543440, 0.680003, 0.993051},{0.548876, 0.685104, 0.994379},{0.554312, 0.690097, 0.995516},{0.559747, 0.694768, 0.996075},{0.565182, 0.699438, 0.996635},{0.570616, 0.704109, 0.997195},{0.576051, 0.708780, 0.997755},{0.581486, 0.713451, 0.998314},{0.586921, 0.718121, 0.998874},{0.592356, 0.722792, 0.999434},{0.597777, 0.727330, 0.999777},{0.603162, 0.731527, 0.999565},{0.608547, 0.735725, 0.999354},{0.613933, 0.739923, 0.999142},{0.619318, 0.744121, 0.998931},{0.624703, 0.748318, 0.998719},{0.630089, 0.752516, 0.998508},{0.635474, 0.756714, 0.998297},{0.640828, 0.760752, 0.997846},{0.646113, 0.764436, 0.996868},{0.651398, 0.768121, 0.995891},{0.656683, 0.771806, 0.994914},{0.661968, 0.775491, 0.993937},{0.667253, 0.779176, 0.992959},{0.672538, 0.782861, 0.991982},{0.677823, 0.786546, 0.991005},{0.683056, 0.790043, 0.989768},{0.688188, 0.793178, 0.988038},{0.693321, 0.796314, 0.986308},{0.698454, 0.799450, 0.984577},{0.703587, 0.802586, 0.982847},{0.708720, 0.805721, 0.981117},{0.713852, 0.808857, 0.979386},{0.718985, 0.811993, 0.977656},{0.724041, 0.814910, 0.975651},{0.728970, 0.817464, 0.973188},{0.733898, 0.820018, 0.970724},{0.738826, 0.822572, 0.968261},{0.743754, 0.825125, 0.965798},{0.748682, 0.827679, 0.963334},{0.753611, 0.830233, 0.960871},{0.758539, 0.832787, 0.958408},{0.763363, 0.835092, 0.955658},{0.768034, 0.837035, 0.952488},{0.772706, 0.838978, 0.949319},{0.777378, 0.840921, 0.946149},{0.782049, 0.842864, 0.942980},{0.786721, 0.844807, 0.939810},{0.791392, 0.846750, 0.936641},{0.796064, 0.848693, 0.933471},{0.800601, 0.850358, 0.930008},{0.804965, 0.851666, 0.926165},{0.809329, 0.852974, 0.922323},{0.813693, 0.854282, 0.918480},{0.818056, 0.855590, 0.914638},{0.822420, 0.856898, 0.910795},{0.826784, 0.858205, 0.906953},{0.831148, 0.859513, 0.903110},{0.835345, 0.860514, 0.898970},{0.839351, 0.861167, 0.894494},{0.843358, 0.861820, 0.890017},{0.847365, 0.862472, 0.885540},{0.851372, 0.863125, 0.881064},{0.855378, 0.863778, 0.876587},{0.859385, 0.864431, 0.872111},{0.863392, 0.865084, 0.867634},{0.867428, 0.864377, 0.862602},{0.871493, 0.862309, 0.857016},{0.875557, 0.860242, 0.851430},{0.879622, 0.858175, 0.845844},{0.883687, 0.856108, 0.840258},{0.887752, 0.854040, 0.834671},{0.891817, 0.851973, 0.829085},{0.895882, 0.849906, 0.823499},{0.899543, 0.847500, 0.817789},{0.902849, 0.844796, 0.811970},{0.906154, 0.842091, 0.806151},{0.909460, 0.839386, 0.800331},{0.912765, 0.836682, 0.794512},{0.916071, 0.833977, 0.788693},{0.919376, 0.831273, 0.782874},{0.922681, 0.828568, 0.777054},{0.925563, 0.825517, 0.771136},{0.928116, 0.822197, 0.765141},{0.930669, 0.818877, 0.759146},{0.933221, 0.815557, 0.753151},{0.935774, 0.812237, 0.747156},{0.938326, 0.808917, 0.741162},{0.940879, 0.805596, 0.735167},{0.943432, 0.802276, 0.729172},{0.945540, 0.798606, 0.723105},{0.947345, 0.794696, 0.716991},{0.949151, 0.790785, 0.710876},{0.950956, 0.786875, 0.704761},{0.952761, 0.782965, 0.698646},{0.954566, 0.779055, 0.692531},{0.956371, 0.775144, 0.686416},{0.958176, 0.771234, 0.680301},{0.959518, 0.766973, 0.674145},{0.960581, 0.762501, 0.667964},{0.961645, 0.758029, 0.661782},{0.962708, 0.753557, 0.655601},{0.963772, 0.749086, 0.649420},{0.964835, 0.744614, 0.643239},{0.965899, 0.740142, 0.637058},{0.966962, 0.735670, 0.630877},{0.967544, 0.730850, 0.624685},{0.967874, 0.725847, 0.618489},{0.968203, 0.720844, 0.612293},{0.968533, 0.715841, 0.606097},{0.968863, 0.710838, 0.599901},{0.969192, 0.705836, 0.593704},{0.969522, 0.700833, 0.587508},{0.969851, 0.695830, 0.581312},{0.969683, 0.690484, 0.575138},{0.969289, 0.684982, 0.568975},{0.968894, 0.679480, 0.562812},{0.968500, 0.673977, 0.556649},{0.968105, 0.668475, 0.550486},{0.967711, 0.662973, 0.544323},{0.967317, 0.657471, 0.538160},{0.966922, 0.651969, 0.531997},{0.966017, 0.646130, 0.525890},{0.964911, 0.640159, 0.519806},{0.963806, 0.634188, 0.513721},{0.962701, 0.628218, 0.507636},{0.961595, 0.622247, 0.501551},{0.960490, 0.616276, 0.495467},{0.959385, 0.610306, 0.489382},{0.958279, 0.604335, 0.483297},{0.956653, 0.598034, 0.477302},{0.954853, 0.591622, 0.471337},{0.953054, 0.585211, 0.465373},{0.951254, 0.578799, 0.459408},{0.949454, 0.572388, 0.453443},{0.947654, 0.565976, 0.447478},{0.945854, 0.559565, 0.441513},{0.944055, 0.553153, 0.435548},{0.941728, 0.546413, 0.429707},{0.939254, 0.539581, 0.423900},{0.936780, 0.532750, 0.418093},{0.934305, 0.525918, 0.412286},{0.931831, 0.519086, 0.406480},{0.929357, 0.512254, 0.400673},{0.926883, 0.505422, 0.394866},{0.924409, 0.498590, 0.389059},{0.921406, 0.491420, 0.383408},{0.918282, 0.484173, 0.377794},{0.915157, 0.476927, 0.372179},{0.912033, 0.469680, 0.366565},{0.908908, 0.462433, 0.360950},{0.905783, 0.455186, 0.355336},{0.902659, 0.447939, 0.349721},{0.899534, 0.440692, 0.344107},{0.895885, 0.433075, 0.338681},{0.892138, 0.425389, 0.333289},{0.888390, 0.417703, 0.327898},{0.884643, 0.410017, 0.322507},{0.880896, 0.402331, 0.317115},{0.877149, 0.394645, 0.311724},{0.873402, 0.386960, 0.306332},{0.869655, 0.379274, 0.300941},{0.865391, 0.371128, 0.295769},{0.861054, 0.362916, 0.290628},{0.856716, 0.354704, 0.285487},{0.852378, 0.346492, 0.280346},{0.848040, 0.338280, 0.275206},{0.843703, 0.330068, 0.270065},{0.839365, 0.321856, 0.264924},{0.835027, 0.313644, 0.259783},{0.830187, 0.304733, 0.254891},{0.825294, 0.295749, 0.250025},{0.820401, 0.286765, 0.245160},{0.815508, 0.277781, 0.240294},{0.810616, 0.268797, 0.235428},{0.805723, 0.259813, 0.230562},{0.800830, 0.250829, 0.225696},{0.795938, 0.241845, 0.220830},{0.790562, 0.231397, 0.216242},{0.785153, 0.220851, 0.211673},{0.779745, 0.210305, 0.207104},{0.774337, 0.199759, 0.202535},{0.768929, 0.189213, 0.197965},{0.763520, 0.178667, 0.193396},{0.758112, 0.168122, 0.188827},{0.752704, 0.157576, 0.184258},{0.746838, 0.140021, 0.179996},{0.740957, 0.122240, 0.175744},{0.735077, 0.104460, 0.171492},{0.729196, 0.086679, 0.167240},{0.723315, 0.068898, 0.162989},{0.717435, 0.051118, 0.158737},{0.711554, 0.033337, 0.154485},{0.705673, 0.015556, 0.150233}}}, + {"jet", {{0.000000, 0.000000, 0.500000},{0.000000, 0.000000, 0.517825},{0.000000, 0.000000, 0.535651},{0.000000, 0.000000, 0.553476},{0.000000, 0.000000, 0.571301},{0.000000, 0.000000, 0.589127},{0.000000, 0.000000, 0.606952},{0.000000, 0.000000, 0.624777},{0.000000, 0.000000, 0.642602},{0.000000, 0.000000, 0.660428},{0.000000, 0.000000, 0.678253},{0.000000, 0.000000, 0.696078},{0.000000, 0.000000, 0.713904},{0.000000, 0.000000, 0.731729},{0.000000, 0.000000, 0.749554},{0.000000, 0.000000, 0.767380},{0.000000, 0.000000, 0.785205},{0.000000, 0.000000, 0.803030},{0.000000, 0.000000, 0.820856},{0.000000, 0.000000, 0.838681},{0.000000, 0.000000, 0.856506},{0.000000, 0.000000, 0.874332},{0.000000, 0.000000, 0.892157},{0.000000, 0.000000, 0.909982},{0.000000, 0.000000, 0.927807},{0.000000, 0.000000, 0.945633},{0.000000, 0.000000, 0.963458},{0.000000, 0.000000, 0.981283},{0.000000, 0.000000, 0.999109},{0.000000, 0.000000, 1.000000},{0.000000, 0.000000, 1.000000},{0.000000, 0.000000, 1.000000},{0.000000, 0.001961, 1.000000},{0.000000, 0.017647, 1.000000},{0.000000, 0.033333, 1.000000},{0.000000, 0.049020, 1.000000},{0.000000, 0.064706, 1.000000},{0.000000, 0.080392, 1.000000},{0.000000, 0.096078, 1.000000},{0.000000, 0.111765, 1.000000},{0.000000, 0.127451, 1.000000},{0.000000, 0.143137, 1.000000},{0.000000, 0.158824, 1.000000},{0.000000, 0.174510, 1.000000},{0.000000, 0.190196, 1.000000},{0.000000, 0.205882, 1.000000},{0.000000, 0.221569, 1.000000},{0.000000, 0.237255, 1.000000},{0.000000, 0.252941, 1.000000},{0.000000, 0.268627, 1.000000},{0.000000, 0.284314, 1.000000},{0.000000, 0.300000, 1.000000},{0.000000, 0.315686, 1.000000},{0.000000, 0.331373, 1.000000},{0.000000, 0.347059, 1.000000},{0.000000, 0.362745, 1.000000},{0.000000, 0.378431, 1.000000},{0.000000, 0.394118, 1.000000},{0.000000, 0.409804, 1.000000},{0.000000, 0.425490, 1.000000},{0.000000, 0.441176, 1.000000},{0.000000, 0.456863, 1.000000},{0.000000, 0.472549, 1.000000},{0.000000, 0.488235, 1.000000},{0.000000, 0.503922, 1.000000},{0.000000, 0.519608, 1.000000},{0.000000, 0.535294, 1.000000},{0.000000, 0.550980, 1.000000},{0.000000, 0.566667, 1.000000},{0.000000, 0.582353, 1.000000},{0.000000, 0.598039, 1.000000},{0.000000, 0.613725, 1.000000},{0.000000, 0.629412, 1.000000},{0.000000, 0.645098, 1.000000},{0.000000, 0.660784, 1.000000},{0.000000, 0.676471, 1.000000},{0.000000, 0.692157, 1.000000},{0.000000, 0.707843, 1.000000},{0.000000, 0.723529, 1.000000},{0.000000, 0.739216, 1.000000},{0.000000, 0.754902, 1.000000},{0.000000, 0.770588, 1.000000},{0.000000, 0.786275, 1.000000},{0.000000, 0.801961, 1.000000},{0.000000, 0.817647, 1.000000},{0.000000, 0.833333, 1.000000},{0.000000, 0.849020, 1.000000},{0.000000, 0.864706, 0.996205},{0.000000, 0.880392, 0.983555},{0.000000, 0.896078, 0.970904},{0.009488, 0.911765, 0.958254},{0.022138, 0.927451, 0.945604},{0.034788, 0.943137, 0.932954},{0.047438, 0.958824, 0.920304},{0.060089, 0.974510, 0.907653},{0.072739, 0.990196, 0.895003},{0.085389, 1.000000, 0.882353},{0.098039, 1.000000, 0.869703},{0.110689, 1.000000, 0.857052},{0.123340, 1.000000, 0.844402},{0.135990, 1.000000, 0.831752},{0.148640, 1.000000, 0.819102},{0.161290, 1.000000, 0.806452},{0.173941, 1.000000, 0.793801},{0.186591, 1.000000, 0.781151},{0.199241, 1.000000, 0.768501},{0.211891, 1.000000, 0.755851},{0.224541, 1.000000, 0.743201},{0.237192, 1.000000, 0.730550},{0.249842, 1.000000, 0.717900},{0.262492, 1.000000, 0.705250},{0.275142, 1.000000, 0.692600},{0.287793, 1.000000, 0.679949},{0.300443, 1.000000, 0.667299},{0.313093, 1.000000, 0.654649},{0.325743, 1.000000, 0.641999},{0.338393, 1.000000, 0.629349},{0.351044, 1.000000, 0.616698},{0.363694, 1.000000, 0.604048},{0.376344, 1.000000, 0.591398},{0.388994, 1.000000, 0.578748},{0.401645, 1.000000, 0.566097},{0.414295, 1.000000, 0.553447},{0.426945, 1.000000, 0.540797},{0.439595, 1.000000, 0.528147},{0.452245, 1.000000, 0.515497},{0.464896, 1.000000, 0.502846},{0.477546, 1.000000, 0.490196},{0.490196, 1.000000, 0.477546},{0.502846, 1.000000, 0.464896},{0.515497, 1.000000, 0.452245},{0.528147, 1.000000, 0.439595},{0.540797, 1.000000, 0.426945},{0.553447, 1.000000, 0.414295},{0.566097, 1.000000, 0.401645},{0.578748, 1.000000, 0.388994},{0.591398, 1.000000, 0.376344},{0.604048, 1.000000, 0.363694},{0.616698, 1.000000, 0.351044},{0.629349, 1.000000, 0.338393},{0.641999, 1.000000, 0.325743},{0.654649, 1.000000, 0.313093},{0.667299, 1.000000, 0.300443},{0.679949, 1.000000, 0.287793},{0.692600, 1.000000, 0.275142},{0.705250, 1.000000, 0.262492},{0.717900, 1.000000, 0.249842},{0.730550, 1.000000, 0.237192},{0.743201, 1.000000, 0.224541},{0.755851, 1.000000, 0.211891},{0.768501, 1.000000, 0.199241},{0.781151, 1.000000, 0.186591},{0.793801, 1.000000, 0.173941},{0.806452, 1.000000, 0.161290},{0.819102, 1.000000, 0.148640},{0.831752, 1.000000, 0.135990},{0.844402, 1.000000, 0.123340},{0.857052, 1.000000, 0.110689},{0.869703, 1.000000, 0.098039},{0.882353, 1.000000, 0.085389},{0.895003, 1.000000, 0.072739},{0.907653, 1.000000, 0.060089},{0.920304, 1.000000, 0.047438},{0.932954, 1.000000, 0.034788},{0.945604, 0.988381, 0.022138},{0.958254, 0.973856, 0.009488},{0.970904, 0.959332, 0.000000},{0.983555, 0.944808, 0.000000},{0.996205, 0.930283, 0.000000},{1.000000, 0.915759, 0.000000},{1.000000, 0.901235, 0.000000},{1.000000, 0.886710, 0.000000},{1.000000, 0.872186, 0.000000},{1.000000, 0.857662, 0.000000},{1.000000, 0.843137, 0.000000},{1.000000, 0.828613, 0.000000},{1.000000, 0.814089, 0.000000},{1.000000, 0.799564, 0.000000},{1.000000, 0.785040, 0.000000},{1.000000, 0.770516, 0.000000},{1.000000, 0.755991, 0.000000},{1.000000, 0.741467, 0.000000},{1.000000, 0.726943, 0.000000},{1.000000, 0.712418, 0.000000},{1.000000, 0.697894, 0.000000},{1.000000, 0.683370, 0.000000},{1.000000, 0.668845, 0.000000},{1.000000, 0.654321, 0.000000},{1.000000, 0.639797, 0.000000},{1.000000, 0.625272, 0.000000},{1.000000, 0.610748, 0.000000},{1.000000, 0.596224, 0.000000},{1.000000, 0.581699, 0.000000},{1.000000, 0.567175, 0.000000},{1.000000, 0.552651, 0.000000},{1.000000, 0.538126, 0.000000},{1.000000, 0.523602, 0.000000},{1.000000, 0.509078, 0.000000},{1.000000, 0.494553, 0.000000},{1.000000, 0.480029, 0.000000},{1.000000, 0.465505, 0.000000},{1.000000, 0.450980, 0.000000},{1.000000, 0.436456, 0.000000},{1.000000, 0.421932, 0.000000},{1.000000, 0.407407, 0.000000},{1.000000, 0.392883, 0.000000},{1.000000, 0.378359, 0.000000},{1.000000, 0.363834, 0.000000},{1.000000, 0.349310, 0.000000},{1.000000, 0.334786, 0.000000},{1.000000, 0.320261, 0.000000},{1.000000, 0.305737, 0.000000},{1.000000, 0.291213, 0.000000},{1.000000, 0.276688, 0.000000},{1.000000, 0.262164, 0.000000},{1.000000, 0.247640, 0.000000},{1.000000, 0.233115, 0.000000},{1.000000, 0.218591, 0.000000},{1.000000, 0.204067, 0.000000},{1.000000, 0.189542, 0.000000},{1.000000, 0.175018, 0.000000},{1.000000, 0.160494, 0.000000},{1.000000, 0.145969, 0.000000},{1.000000, 0.131445, 0.000000},{1.000000, 0.116921, 0.000000},{1.000000, 0.102397, 0.000000},{1.000000, 0.087872, 0.000000},{0.999109, 0.073348, 0.000000},{0.981283, 0.058824, 0.000000},{0.963458, 0.044299, 0.000000},{0.945633, 0.029775, 0.000000},{0.927807, 0.015251, 0.000000},{0.909982, 0.000726, 0.000000},{0.892157, 0.000000, 0.000000},{0.874332, 0.000000, 0.000000},{0.856506, 0.000000, 0.000000},{0.838681, 0.000000, 0.000000},{0.820856, 0.000000, 0.000000},{0.803030, 0.000000, 0.000000},{0.785205, 0.000000, 0.000000},{0.767380, 0.000000, 0.000000},{0.749554, 0.000000, 0.000000},{0.731729, 0.000000, 0.000000},{0.713904, 0.000000, 0.000000},{0.696078, 0.000000, 0.000000},{0.678253, 0.000000, 0.000000},{0.660428, 0.000000, 0.000000},{0.642602, 0.000000, 0.000000},{0.624777, 0.000000, 0.000000},{0.606952, 0.000000, 0.000000},{0.589127, 0.000000, 0.000000},{0.571301, 0.000000, 0.000000},{0.553476, 0.000000, 0.000000},{0.535651, 0.000000, 0.000000},{0.517825, 0.000000, 0.000000},{0.500000, 0.000000, 0.000000}}}, + {"cmrmap", {{0.000000, 0.000000, 0.000000},{0.004706, 0.004706, 0.015686},{0.009412, 0.009412, 0.031373},{0.014118, 0.014118, 0.047059},{0.018824, 0.018824, 0.062745},{0.023529, 0.023529, 0.078431},{0.028235, 0.028235, 0.094118},{0.032941, 0.032941, 0.109804},{0.037647, 0.037647, 0.125490},{0.042353, 0.042353, 0.141176},{0.047059, 0.047059, 0.156863},{0.051765, 0.051765, 0.172549},{0.056471, 0.056471, 0.188235},{0.061176, 0.061176, 0.203922},{0.065882, 0.065882, 0.219608},{0.070588, 0.070588, 0.235294},{0.075294, 0.075294, 0.250980},{0.080000, 0.080000, 0.266667},{0.084706, 0.084706, 0.282353},{0.089412, 0.089412, 0.298039},{0.094118, 0.094118, 0.313725},{0.098824, 0.098824, 0.329412},{0.103529, 0.103529, 0.345098},{0.108235, 0.108235, 0.360784},{0.112941, 0.112941, 0.376471},{0.117647, 0.117647, 0.392157},{0.122353, 0.122353, 0.407843},{0.127059, 0.127059, 0.423529},{0.131765, 0.131765, 0.439216},{0.136471, 0.136471, 0.454902},{0.141176, 0.141176, 0.470588},{0.145882, 0.145882, 0.486275},{0.150588, 0.150000, 0.500980},{0.155294, 0.150000, 0.508824},{0.160000, 0.150000, 0.516667},{0.164706, 0.150000, 0.524510},{0.169412, 0.150000, 0.532353},{0.174118, 0.150000, 0.540196},{0.178824, 0.150000, 0.548039},{0.183529, 0.150000, 0.555882},{0.188235, 0.150000, 0.563725},{0.192941, 0.150000, 0.571569},{0.197647, 0.150000, 0.579412},{0.202353, 0.150000, 0.587255},{0.207059, 0.150000, 0.595098},{0.211765, 0.150000, 0.602941},{0.216471, 0.150000, 0.610784},{0.221176, 0.150000, 0.618627},{0.225882, 0.150000, 0.626471},{0.230588, 0.150000, 0.634314},{0.235294, 0.150000, 0.642157},{0.240000, 0.150000, 0.650000},{0.244706, 0.150000, 0.657843},{0.249412, 0.150000, 0.665686},{0.254118, 0.150000, 0.673529},{0.258824, 0.150000, 0.681373},{0.263529, 0.150000, 0.689216},{0.268235, 0.150000, 0.697059},{0.272941, 0.150000, 0.704902},{0.277647, 0.150000, 0.712745},{0.282353, 0.150000, 0.720588},{0.287059, 0.150000, 0.728431},{0.291765, 0.150000, 0.736275},{0.296471, 0.150000, 0.744118},{0.302353, 0.150392, 0.748039},{0.311765, 0.151961, 0.740196},{0.321176, 0.153529, 0.732353},{0.330588, 0.155098, 0.724510},{0.340000, 0.156667, 0.716667},{0.349412, 0.158235, 0.708824},{0.358824, 0.159804, 0.700980},{0.368235, 0.161373, 0.693137},{0.377647, 0.162941, 0.685294},{0.387059, 0.164510, 0.677451},{0.396471, 0.166078, 0.669608},{0.405882, 0.167647, 0.661765},{0.415294, 0.169216, 0.653922},{0.424706, 0.170784, 0.646078},{0.434118, 0.172353, 0.638235},{0.443529, 0.173922, 0.630392},{0.452941, 0.175490, 0.622549},{0.462353, 0.177059, 0.614706},{0.471765, 0.178627, 0.606863},{0.481176, 0.180196, 0.599020},{0.490588, 0.181765, 0.591176},{0.500000, 0.183333, 0.583333},{0.509412, 0.184902, 0.575490},{0.518824, 0.186471, 0.567647},{0.528235, 0.188039, 0.559804},{0.537647, 0.189608, 0.551961},{0.547059, 0.191176, 0.544118},{0.556471, 0.192745, 0.536275},{0.565882, 0.194314, 0.528431},{0.575294, 0.195882, 0.520588},{0.584706, 0.197451, 0.512745},{0.594118, 0.199020, 0.504902},{0.604706, 0.200588, 0.495882},{0.617255, 0.202157, 0.484902},{0.629804, 0.203725, 0.473922},{0.642353, 0.205294, 0.462941},{0.654902, 0.206863, 0.451961},{0.667451, 0.208431, 0.440980},{0.680000, 0.210000, 0.430000},{0.692549, 0.211569, 0.419020},{0.705098, 0.213137, 0.408039},{0.717647, 0.214706, 0.397059},{0.730196, 0.216275, 0.386078},{0.742745, 0.217843, 0.375098},{0.755294, 0.219412, 0.364118},{0.767843, 0.220980, 0.353137},{0.780392, 0.222549, 0.342157},{0.792941, 0.224118, 0.331176},{0.805490, 0.225686, 0.320196},{0.818039, 0.227255, 0.309216},{0.830588, 0.228824, 0.298235},{0.843137, 0.230392, 0.287255},{0.855686, 0.231961, 0.276275},{0.868235, 0.233529, 0.265294},{0.880784, 0.235098, 0.254314},{0.893333, 0.236667, 0.243333},{0.905882, 0.238235, 0.232353},{0.918431, 0.239804, 0.221373},{0.930980, 0.241373, 0.210392},{0.943529, 0.242941, 0.199412},{0.956078, 0.244510, 0.188431},{0.968627, 0.246078, 0.177451},{0.981176, 0.247647, 0.166471},{0.993725, 0.249216, 0.155490},{0.998431, 0.253922, 0.147647},{0.995294, 0.261765, 0.142941},{0.992157, 0.269608, 0.138235},{0.989020, 0.277451, 0.133529},{0.985882, 0.285294, 0.128824},{0.982745, 0.293137, 0.124118},{0.979608, 0.300980, 0.119412},{0.976471, 0.308824, 0.114706},{0.973333, 0.316667, 0.110000},{0.970196, 0.324510, 0.105294},{0.967059, 0.332353, 0.100588},{0.963922, 0.340196, 0.095882},{0.960784, 0.348039, 0.091176},{0.957647, 0.355882, 0.086471},{0.954510, 0.363725, 0.081765},{0.951373, 0.371569, 0.077059},{0.948235, 0.379412, 0.072353},{0.945098, 0.387255, 0.067647},{0.941961, 0.395098, 0.062941},{0.938824, 0.402941, 0.058235},{0.935686, 0.410784, 0.053529},{0.932549, 0.418627, 0.048824},{0.929412, 0.426471, 0.044118},{0.926275, 0.434314, 0.039412},{0.923137, 0.442157, 0.034706},{0.920000, 0.450000, 0.030000},{0.916863, 0.457843, 0.025294},{0.913725, 0.465686, 0.020588},{0.910588, 0.473529, 0.015882},{0.907451, 0.481373, 0.011176},{0.904314, 0.489216, 0.006471},{0.901176, 0.497059, 0.001765},{0.900000, 0.504902, 0.001961},{0.900000, 0.512745, 0.005098},{0.900000, 0.520588, 0.008235},{0.900000, 0.528431, 0.011373},{0.900000, 0.536275, 0.014510},{0.900000, 0.544118, 0.017647},{0.900000, 0.551961, 0.020784},{0.900000, 0.559804, 0.023922},{0.900000, 0.567647, 0.027059},{0.900000, 0.575490, 0.030196},{0.900000, 0.583333, 0.033333},{0.900000, 0.591176, 0.036471},{0.900000, 0.599020, 0.039608},{0.900000, 0.606863, 0.042745},{0.900000, 0.614706, 0.045882},{0.900000, 0.622549, 0.049020},{0.900000, 0.630392, 0.052157},{0.900000, 0.638235, 0.055294},{0.900000, 0.646078, 0.058431},{0.900000, 0.653922, 0.061569},{0.900000, 0.661765, 0.064706},{0.900000, 0.669608, 0.067843},{0.900000, 0.677451, 0.070980},{0.900000, 0.685294, 0.074118},{0.900000, 0.693137, 0.077255},{0.900000, 0.700980, 0.080392},{0.900000, 0.708824, 0.083529},{0.900000, 0.716667, 0.086667},{0.900000, 0.724510, 0.089804},{0.900000, 0.732353, 0.092941},{0.900000, 0.740196, 0.096078},{0.900000, 0.748039, 0.099216},{0.900000, 0.753529, 0.109412},{0.900000, 0.758235, 0.121961},{0.900000, 0.762941, 0.134510},{0.900000, 0.767647, 0.147059},{0.900000, 0.772353, 0.159608},{0.900000, 0.777059, 0.172157},{0.900000, 0.781765, 0.184706},{0.900000, 0.786471, 0.197255},{0.900000, 0.791176, 0.209804},{0.900000, 0.795882, 0.222353},{0.900000, 0.800588, 0.234902},{0.900000, 0.805294, 0.247451},{0.900000, 0.810000, 0.260000},{0.900000, 0.814706, 0.272549},{0.900000, 0.819412, 0.285098},{0.900000, 0.824118, 0.297647},{0.900000, 0.828824, 0.310196},{0.900000, 0.833529, 0.322745},{0.900000, 0.838235, 0.335294},{0.900000, 0.842941, 0.347843},{0.900000, 0.847647, 0.360392},{0.900000, 0.852353, 0.372941},{0.900000, 0.857059, 0.385490},{0.900000, 0.861765, 0.398039},{0.900000, 0.866471, 0.410588},{0.900000, 0.871176, 0.423137},{0.900000, 0.875882, 0.435686},{0.900000, 0.880588, 0.448235},{0.900000, 0.885294, 0.460784},{0.900000, 0.890000, 0.473333},{0.900000, 0.894706, 0.485882},{0.900000, 0.899412, 0.498431},{0.902745, 0.902745, 0.513725},{0.905882, 0.905882, 0.529412},{0.909020, 0.909020, 0.545098},{0.912157, 0.912157, 0.560784},{0.915294, 0.915294, 0.576471},{0.918431, 0.918431, 0.592157},{0.921569, 0.921569, 0.607843},{0.924706, 0.924706, 0.623529},{0.927843, 0.927843, 0.639216},{0.930980, 0.930980, 0.654902},{0.934118, 0.934118, 0.670588},{0.937255, 0.937255, 0.686275},{0.940392, 0.940392, 0.701961},{0.943529, 0.943529, 0.717647},{0.946667, 0.946667, 0.733333},{0.949804, 0.949804, 0.749020},{0.952941, 0.952941, 0.764706},{0.956078, 0.956078, 0.780392},{0.959216, 0.959216, 0.796078},{0.962353, 0.962353, 0.811765},{0.965490, 0.965490, 0.827451},{0.968627, 0.968627, 0.843137},{0.971765, 0.971765, 0.858824},{0.974902, 0.974902, 0.874510},{0.978039, 0.978039, 0.890196},{0.981176, 0.981176, 0.905882},{0.984314, 0.984314, 0.921569},{0.987451, 0.987451, 0.937255},{0.990588, 0.990588, 0.952941},{0.993725, 0.993725, 0.968627},{0.996863, 0.996863, 0.984314},{1.000000, 1.000000, 1.000000}}}, + {"ocean", {{0.000000, 0.500000, 0.000000},{0.000000, 0.494118, 0.003922},{0.000000, 0.488235, 0.007843},{0.000000, 0.482353, 0.011765},{0.000000, 0.476471, 0.015686},{0.000000, 0.470588, 0.019608},{0.000000, 0.464706, 0.023529},{0.000000, 0.458824, 0.027451},{0.000000, 0.452941, 0.031373},{0.000000, 0.447059, 0.035294},{0.000000, 0.441176, 0.039216},{0.000000, 0.435294, 0.043137},{0.000000, 0.429412, 0.047059},{0.000000, 0.423529, 0.050980},{0.000000, 0.417647, 0.054902},{0.000000, 0.411765, 0.058824},{0.000000, 0.405882, 0.062745},{0.000000, 0.400000, 0.066667},{0.000000, 0.394118, 0.070588},{0.000000, 0.388235, 0.074510},{0.000000, 0.382353, 0.078431},{0.000000, 0.376471, 0.082353},{0.000000, 0.370588, 0.086275},{0.000000, 0.364706, 0.090196},{0.000000, 0.358824, 0.094118},{0.000000, 0.352941, 0.098039},{0.000000, 0.347059, 0.101961},{0.000000, 0.341176, 0.105882},{0.000000, 0.335294, 0.109804},{0.000000, 0.329412, 0.113725},{0.000000, 0.323529, 0.117647},{0.000000, 0.317647, 0.121569},{0.000000, 0.311765, 0.125490},{0.000000, 0.305882, 0.129412},{0.000000, 0.300000, 0.133333},{0.000000, 0.294118, 0.137255},{0.000000, 0.288235, 0.141176},{0.000000, 0.282353, 0.145098},{0.000000, 0.276471, 0.149020},{0.000000, 0.270588, 0.152941},{0.000000, 0.264706, 0.156863},{0.000000, 0.258824, 0.160784},{0.000000, 0.252941, 0.164706},{0.000000, 0.247059, 0.168627},{0.000000, 0.241176, 0.172549},{0.000000, 0.235294, 0.176471},{0.000000, 0.229412, 0.180392},{0.000000, 0.223529, 0.184314},{0.000000, 0.217647, 0.188235},{0.000000, 0.211765, 0.192157},{0.000000, 0.205882, 0.196078},{0.000000, 0.200000, 0.200000},{0.000000, 0.194118, 0.203922},{0.000000, 0.188235, 0.207843},{0.000000, 0.182353, 0.211765},{0.000000, 0.176471, 0.215686},{0.000000, 0.170588, 0.219608},{0.000000, 0.164706, 0.223529},{0.000000, 0.158824, 0.227451},{0.000000, 0.152941, 0.231373},{0.000000, 0.147059, 0.235294},{0.000000, 0.141176, 0.239216},{0.000000, 0.135294, 0.243137},{0.000000, 0.129412, 0.247059},{0.000000, 0.123529, 0.250980},{0.000000, 0.117647, 0.254902},{0.000000, 0.111765, 0.258824},{0.000000, 0.105882, 0.262745},{0.000000, 0.100000, 0.266667},{0.000000, 0.094118, 0.270588},{0.000000, 0.088235, 0.274510},{0.000000, 0.082353, 0.278431},{0.000000, 0.076471, 0.282353},{0.000000, 0.070588, 0.286275},{0.000000, 0.064706, 0.290196},{0.000000, 0.058824, 0.294118},{0.000000, 0.052941, 0.298039},{0.000000, 0.047059, 0.301961},{0.000000, 0.041176, 0.305882},{0.000000, 0.035294, 0.309804},{0.000000, 0.029412, 0.313725},{0.000000, 0.023529, 0.317647},{0.000000, 0.017647, 0.321569},{0.000000, 0.011765, 0.325490},{0.000000, 0.005882, 0.329412},{0.000000, 0.000000, 0.333333},{0.000000, 0.005882, 0.337255},{0.000000, 0.011765, 0.341176},{0.000000, 0.017647, 0.345098},{0.000000, 0.023529, 0.349020},{0.000000, 0.029412, 0.352941},{0.000000, 0.035294, 0.356863},{0.000000, 0.041176, 0.360784},{0.000000, 0.047059, 0.364706},{0.000000, 0.052941, 0.368627},{0.000000, 0.058824, 0.372549},{0.000000, 0.064706, 0.376471},{0.000000, 0.070588, 0.380392},{0.000000, 0.076471, 0.384314},{0.000000, 0.082353, 0.388235},{0.000000, 0.088235, 0.392157},{0.000000, 0.094118, 0.396078},{0.000000, 0.100000, 0.400000},{0.000000, 0.105882, 0.403922},{0.000000, 0.111765, 0.407843},{0.000000, 0.117647, 0.411765},{0.000000, 0.123529, 0.415686},{0.000000, 0.129412, 0.419608},{0.000000, 0.135294, 0.423529},{0.000000, 0.141176, 0.427451},{0.000000, 0.147059, 0.431373},{0.000000, 0.152941, 0.435294},{0.000000, 0.158824, 0.439216},{0.000000, 0.164706, 0.443137},{0.000000, 0.170588, 0.447059},{0.000000, 0.176471, 0.450980},{0.000000, 0.182353, 0.454902},{0.000000, 0.188235, 0.458824},{0.000000, 0.194118, 0.462745},{0.000000, 0.200000, 0.466667},{0.000000, 0.205882, 0.470588},{0.000000, 0.211765, 0.474510},{0.000000, 0.217647, 0.478431},{0.000000, 0.223529, 0.482353},{0.000000, 0.229412, 0.486275},{0.000000, 0.235294, 0.490196},{0.000000, 0.241176, 0.494118},{0.000000, 0.247059, 0.498039},{0.000000, 0.252941, 0.501961},{0.000000, 0.258824, 0.505882},{0.000000, 0.264706, 0.509804},{0.000000, 0.270588, 0.513725},{0.000000, 0.276471, 0.517647},{0.000000, 0.282353, 0.521569},{0.000000, 0.288235, 0.525490},{0.000000, 0.294118, 0.529412},{0.000000, 0.300000, 0.533333},{0.000000, 0.305882, 0.537255},{0.000000, 0.311765, 0.541176},{0.000000, 0.317647, 0.545098},{0.000000, 0.323529, 0.549020},{0.000000, 0.329412, 0.552941},{0.000000, 0.335294, 0.556863},{0.000000, 0.341176, 0.560784},{0.000000, 0.347059, 0.564706},{0.000000, 0.352941, 0.568627},{0.000000, 0.358824, 0.572549},{0.000000, 0.364706, 0.576471},{0.000000, 0.370588, 0.580392},{0.000000, 0.376471, 0.584314},{0.000000, 0.382353, 0.588235},{0.000000, 0.388235, 0.592157},{0.000000, 0.394118, 0.596078},{0.000000, 0.400000, 0.600000},{0.000000, 0.405882, 0.603922},{0.000000, 0.411765, 0.607843},{0.000000, 0.417647, 0.611765},{0.000000, 0.423529, 0.615686},{0.000000, 0.429412, 0.619608},{0.000000, 0.435294, 0.623529},{0.000000, 0.441176, 0.627451},{0.000000, 0.447059, 0.631373},{0.000000, 0.452941, 0.635294},{0.000000, 0.458824, 0.639216},{0.000000, 0.464706, 0.643137},{0.000000, 0.470588, 0.647059},{0.000000, 0.476471, 0.650980},{0.000000, 0.482353, 0.654902},{0.000000, 0.488235, 0.658824},{0.000000, 0.494118, 0.662745},{0.000000, 0.500000, 0.666667},{0.011765, 0.505882, 0.670588},{0.023529, 0.511765, 0.674510},{0.035294, 0.517647, 0.678431},{0.047059, 0.523529, 0.682353},{0.058824, 0.529412, 0.686275},{0.070588, 0.535294, 0.690196},{0.082353, 0.541176, 0.694118},{0.094118, 0.547059, 0.698039},{0.105882, 0.552941, 0.701961},{0.117647, 0.558824, 0.705882},{0.129412, 0.564706, 0.709804},{0.141176, 0.570588, 0.713725},{0.152941, 0.576471, 0.717647},{0.164706, 0.582353, 0.721569},{0.176471, 0.588235, 0.725490},{0.188235, 0.594118, 0.729412},{0.200000, 0.600000, 0.733333},{0.211765, 0.605882, 0.737255},{0.223529, 0.611765, 0.741176},{0.235294, 0.617647, 0.745098},{0.247059, 0.623529, 0.749020},{0.258824, 0.629412, 0.752941},{0.270588, 0.635294, 0.756863},{0.282353, 0.641176, 0.760784},{0.294118, 0.647059, 0.764706},{0.305882, 0.652941, 0.768627},{0.317647, 0.658824, 0.772549},{0.329412, 0.664706, 0.776471},{0.341176, 0.670588, 0.780392},{0.352941, 0.676471, 0.784314},{0.364706, 0.682353, 0.788235},{0.376471, 0.688235, 0.792157},{0.388235, 0.694118, 0.796078},{0.400000, 0.700000, 0.800000},{0.411765, 0.705882, 0.803922},{0.423529, 0.711765, 0.807843},{0.435294, 0.717647, 0.811765},{0.447059, 0.723529, 0.815686},{0.458824, 0.729412, 0.819608},{0.470588, 0.735294, 0.823529},{0.482353, 0.741176, 0.827451},{0.494118, 0.747059, 0.831373},{0.505882, 0.752941, 0.835294},{0.517647, 0.758824, 0.839216},{0.529412, 0.764706, 0.843137},{0.541176, 0.770588, 0.847059},{0.552941, 0.776471, 0.850980},{0.564706, 0.782353, 0.854902},{0.576471, 0.788235, 0.858824},{0.588235, 0.794118, 0.862745},{0.600000, 0.800000, 0.866667},{0.611765, 0.805882, 0.870588},{0.623529, 0.811765, 0.874510},{0.635294, 0.817647, 0.878431},{0.647059, 0.823529, 0.882353},{0.658824, 0.829412, 0.886275},{0.670588, 0.835294, 0.890196},{0.682353, 0.841176, 0.894118},{0.694118, 0.847059, 0.898039},{0.705882, 0.852941, 0.901961},{0.717647, 0.858824, 0.905882},{0.729412, 0.864706, 0.909804},{0.741176, 0.870588, 0.913725},{0.752941, 0.876471, 0.917647},{0.764706, 0.882353, 0.921569},{0.776471, 0.888235, 0.925490},{0.788235, 0.894118, 0.929412},{0.800000, 0.900000, 0.933333},{0.811765, 0.905882, 0.937255},{0.823529, 0.911765, 0.941176},{0.835294, 0.917647, 0.945098},{0.847059, 0.923529, 0.949020},{0.858824, 0.929412, 0.952941},{0.870588, 0.935294, 0.956863},{0.882353, 0.941176, 0.960784},{0.894118, 0.947059, 0.964706},{0.905882, 0.952941, 0.968627},{0.917647, 0.958824, 0.972549},{0.929412, 0.964706, 0.976471},{0.941176, 0.970588, 0.980392},{0.952941, 0.976471, 0.984314},{0.964706, 0.982353, 0.988235},{0.976471, 0.988235, 0.992157},{0.988235, 0.994118, 0.996078},{1.000000, 1.000000, 1.000000}}}, + {"gist_earth", {{0.000000, 0.000000, 0.000000},{0.002613, 0.000000, 0.168692},{0.005227, 0.000000, 0.221664},{0.007840, 0.000000, 0.263805},{0.010454, 0.000000, 0.305947},{0.013067, 0.000000, 0.348089},{0.015681, 0.000000, 0.390231},{0.018294, 0.000000, 0.432373},{0.020908, 0.008907, 0.454745},{0.023521, 0.017927, 0.455606},{0.026135, 0.026948, 0.456317},{0.028748, 0.035968, 0.457028},{0.031361, 0.044988, 0.457739},{0.033975, 0.054008, 0.458449},{0.036588, 0.063028, 0.459160},{0.039202, 0.072048, 0.459871},{0.041815, 0.081068, 0.460582},{0.044429, 0.090088, 0.461293},{0.047042, 0.099108, 0.462004},{0.049656, 0.108128, 0.462715},{0.052269, 0.117148, 0.463426},{0.054883, 0.126168, 0.464136},{0.057496, 0.135189, 0.464847},{0.060109, 0.144209, 0.465558},{0.062723, 0.153229, 0.466269},{0.065336, 0.162249, 0.466980},{0.067950, 0.171269, 0.467691},{0.070563, 0.180289, 0.468402},{0.073177, 0.189308, 0.469113},{0.075790, 0.197466, 0.469824},{0.078404, 0.205623, 0.470534},{0.081017, 0.213780, 0.471245},{0.083631, 0.221938, 0.471956},{0.086244, 0.230095, 0.472667},{0.088857, 0.238253, 0.473378},{0.091471, 0.246410, 0.474089},{0.094084, 0.254568, 0.474800},{0.096698, 0.262725, 0.475511},{0.099311, 0.270882, 0.476221},{0.101925, 0.279040, 0.476932},{0.104538, 0.287197, 0.477643},{0.107152, 0.295355, 0.478354},{0.109765, 0.303511, 0.479065},{0.112378, 0.310845, 0.479776},{0.114992, 0.318178, 0.480487},{0.117605, 0.325512, 0.481198},{0.120219, 0.332845, 0.481909},{0.122832, 0.340179, 0.482619},{0.125446, 0.347513, 0.483330},{0.128059, 0.354846, 0.484041},{0.130673, 0.362180, 0.484752},{0.133286, 0.369513, 0.485463},{0.135900, 0.376847, 0.486174},{0.138513, 0.384168, 0.486885},{0.141126, 0.390366, 0.487596},{0.143740, 0.396564, 0.488306},{0.146353, 0.402761, 0.489017},{0.148967, 0.408959, 0.489728},{0.151580, 0.415157, 0.490439},{0.154194, 0.421355, 0.491150},{0.156807, 0.427552, 0.491861},{0.159421, 0.433750, 0.492572},{0.162034, 0.439948, 0.493283},{0.164648, 0.446146, 0.493994},{0.167261, 0.452344, 0.494704},{0.169874, 0.458541, 0.495415},{0.172488, 0.464739, 0.496126},{0.175101, 0.470937, 0.496837},{0.177715, 0.477135, 0.497548},{0.180328, 0.483332, 0.498259},{0.182942, 0.489530, 0.498970},{0.185555, 0.495728, 0.499681},{0.188169, 0.501926, 0.500391},{0.190027, 0.504230, 0.495657},{0.191877, 0.506488, 0.490857},{0.193727, 0.508745, 0.486057},{0.195576, 0.511003, 0.481256},{0.197426, 0.513261, 0.476456},{0.199276, 0.515518, 0.471655},{0.201125, 0.517776, 0.466855},{0.202975, 0.520033, 0.462055},{0.204824, 0.522291, 0.457254},{0.206674, 0.524548, 0.452454},{0.208524, 0.526806, 0.447654},{0.210373, 0.529063, 0.442853},{0.212223, 0.531321, 0.438053},{0.214073, 0.533578, 0.433253},{0.215922, 0.535836, 0.428452},{0.217772, 0.538093, 0.423652},{0.219621, 0.540351, 0.418852},{0.221471, 0.542608, 0.414051},{0.223321, 0.544866, 0.409251},{0.225170, 0.547123, 0.404450},{0.227020, 0.549381, 0.399650},{0.228870, 0.551638, 0.394850},{0.230719, 0.553896, 0.390049},{0.232569, 0.556154, 0.385249},{0.234419, 0.558411, 0.380449},{0.236268, 0.560669, 0.375648},{0.238118, 0.562926, 0.370848},{0.239967, 0.565184, 0.366048},{0.241817, 0.567441, 0.361247},{0.243667, 0.569699, 0.356447},{0.245516, 0.571956, 0.351647},{0.247366, 0.574214, 0.346846},{0.249216, 0.576471, 0.342046},{0.251065, 0.578729, 0.337245},{0.252915, 0.580986, 0.332445},{0.254764, 0.583244, 0.327645},{0.256614, 0.585501, 0.322844},{0.258464, 0.587759, 0.318044},{0.260313, 0.590016, 0.313244},{0.262163, 0.592274, 0.308443},{0.264013, 0.594531, 0.303643},{0.265862, 0.596789, 0.298843},{0.267712, 0.599046, 0.294042},{0.269561, 0.601304, 0.289242},{0.271452, 0.603562, 0.284442},{0.280169, 0.605819, 0.279641},{0.288886, 0.608077, 0.274841},{0.297603, 0.610334, 0.277066},{0.306320, 0.612592, 0.279352},{0.315037, 0.614849, 0.281638},{0.323754, 0.617107, 0.283924},{0.332471, 0.619364, 0.286210},{0.341188, 0.621622, 0.288496},{0.349905, 0.623879, 0.290782},{0.358622, 0.626137, 0.293068},{0.367339, 0.628394, 0.295354},{0.376056, 0.630652, 0.297640},{0.384773, 0.632909, 0.299926},{0.393490, 0.635167, 0.302212},{0.402207, 0.637424, 0.304497},{0.410924, 0.639682, 0.306783},{0.419642, 0.641407, 0.309069},{0.428359, 0.643128, 0.311355},{0.437076, 0.644848, 0.313641},{0.445793, 0.646569, 0.315927},{0.454510, 0.648290, 0.318213},{0.463227, 0.650010, 0.320499},{0.471932, 0.651731, 0.321739},{0.478399, 0.653452, 0.322978},{0.484866, 0.655172, 0.324218},{0.491332, 0.656893, 0.325457},{0.497799, 0.658614, 0.326697},{0.504266, 0.660334, 0.327936},{0.510732, 0.662055, 0.329175},{0.517199, 0.663776, 0.330415},{0.523665, 0.665497, 0.331654},{0.530132, 0.667217, 0.332894},{0.536599, 0.668938, 0.334133},{0.543065, 0.670659, 0.335372},{0.549532, 0.672379, 0.336612},{0.555999, 0.674100, 0.337851},{0.562465, 0.675821, 0.339091},{0.568932, 0.677541, 0.340330},{0.575399, 0.679262, 0.341570},{0.581865, 0.680983, 0.342809},{0.588332, 0.682703, 0.344048},{0.594798, 0.684424, 0.345288},{0.601265, 0.686145, 0.346527},{0.607732, 0.687866, 0.347767},{0.614198, 0.689586, 0.349006},{0.620665, 0.691307, 0.350246},{0.627132, 0.693028, 0.351485},{0.633598, 0.694748, 0.352724},{0.640065, 0.696469, 0.353964},{0.646532, 0.698190, 0.355203},{0.652998, 0.699910, 0.356443},{0.659465, 0.701631, 0.357682},{0.665932, 0.703352, 0.358922},{0.672398, 0.705072, 0.360161},{0.678865, 0.706793, 0.361400},{0.685331, 0.708514, 0.362640},{0.691798, 0.710234, 0.363879},{0.698265, 0.711955, 0.365119},{0.704731, 0.713676, 0.366358},{0.711198, 0.715397, 0.367598},{0.717616, 0.717066, 0.368837},{0.719255, 0.713679, 0.370076},{0.720895, 0.710293, 0.371316},{0.722534, 0.706906, 0.372555},{0.724173, 0.703519, 0.373795},{0.725812, 0.700132, 0.375034},{0.727451, 0.696745, 0.376274},{0.729090, 0.693358, 0.377513},{0.730729, 0.689972, 0.378752},{0.732368, 0.686585, 0.379992},{0.734007, 0.683198, 0.381231},{0.735646, 0.679811, 0.382471},{0.737285, 0.676424, 0.383710},{0.738924, 0.673038, 0.384950},{0.740563, 0.669651, 0.386189},{0.742202, 0.666264, 0.387428},{0.743841, 0.662877, 0.388668},{0.745480, 0.659490, 0.389907},{0.747119, 0.656104, 0.391147},{0.748759, 0.652717, 0.392386},{0.750398, 0.649330, 0.393625},{0.752037, 0.645943, 0.394865},{0.753676, 0.642556, 0.396134},{0.755339, 0.639219, 0.405741},{0.759726, 0.641277, 0.415349},{0.764112, 0.642991, 0.424956},{0.768498, 0.644700, 0.434564},{0.772885, 0.646409, 0.444171},{0.777271, 0.648137, 0.453779},{0.781657, 0.651513, 0.463386},{0.786044, 0.654888, 0.472994},{0.790430, 0.658287, 0.482601},{0.794816, 0.661685, 0.492208},{0.799203, 0.665084, 0.501816},{0.803589, 0.668483, 0.511423},{0.807975, 0.671882, 0.521031},{0.812361, 0.675280, 0.530638},{0.816748, 0.678679, 0.540246},{0.821134, 0.682078, 0.549853},{0.825520, 0.685476, 0.559461},{0.829907, 0.688875, 0.569068},{0.834293, 0.692274, 0.578676},{0.838679, 0.695672, 0.588283},{0.843066, 0.699071, 0.597891},{0.847452, 0.704683, 0.607498},{0.851838, 0.710314, 0.617106},{0.856225, 0.715923, 0.626713},{0.860611, 0.721533, 0.636321},{0.864997, 0.726915, 0.645928},{0.869383, 0.732295, 0.655536},{0.873770, 0.737674, 0.665153},{0.878156, 0.743077, 0.676973},{0.882542, 0.750747, 0.688794},{0.886929, 0.758418, 0.700614},{0.891315, 0.766089, 0.712434},{0.895701, 0.773759, 0.724254},{0.900088, 0.781430, 0.736075},{0.904474, 0.789101, 0.747895},{0.908860, 0.796771, 0.759715},{0.913246, 0.804442, 0.771535},{0.917633, 0.812113, 0.783356},{0.922019, 0.819783, 0.795176},{0.926405, 0.827454, 0.806996},{0.930792, 0.836438, 0.818816},{0.935178, 0.845430, 0.830637},{0.939564, 0.854422, 0.842457},{0.943951, 0.863415, 0.854277},{0.948337, 0.872514, 0.866097},{0.952723, 0.881617, 0.877918},{0.957110, 0.893070, 0.889738},{0.961496, 0.904522, 0.901558},{0.965882, 0.915975, 0.913378},{0.970268, 0.927427, 0.925199},{0.974655, 0.938880, 0.937019},{0.979041, 0.950332, 0.948839},{0.983427, 0.961785, 0.960659},{0.987814, 0.973237, 0.972480},{0.992200, 0.984300, 0.984300}}}, + {"terrain", {{0.200000, 0.200000, 0.600000},{0.194771, 0.210458, 0.610458},{0.189542, 0.220915, 0.620915},{0.184314, 0.231373, 0.631373},{0.179085, 0.241830, 0.641830},{0.173856, 0.252288, 0.652288},{0.168627, 0.262745, 0.662745},{0.163399, 0.273203, 0.673203},{0.158170, 0.283660, 0.683660},{0.152941, 0.294118, 0.694118},{0.147712, 0.304575, 0.704575},{0.142484, 0.315033, 0.715033},{0.137255, 0.325490, 0.725490},{0.132026, 0.335948, 0.735948},{0.126797, 0.346405, 0.746405},{0.121569, 0.356863, 0.756863},{0.116340, 0.367320, 0.767320},{0.111111, 0.377778, 0.777778},{0.105882, 0.388235, 0.788235},{0.100654, 0.398693, 0.798693},{0.095425, 0.409150, 0.809150},{0.090196, 0.419608, 0.819608},{0.084967, 0.430065, 0.830065},{0.079739, 0.440523, 0.840523},{0.074510, 0.450980, 0.850980},{0.069281, 0.461438, 0.861438},{0.064052, 0.471895, 0.871895},{0.058824, 0.482353, 0.882353},{0.053595, 0.492810, 0.892810},{0.048366, 0.503268, 0.903268},{0.043137, 0.513725, 0.913725},{0.037908, 0.524183, 0.924183},{0.032680, 0.534641, 0.934641},{0.027451, 0.545098, 0.945098},{0.022222, 0.555556, 0.955556},{0.016993, 0.566013, 0.966013},{0.011765, 0.576471, 0.976471},{0.006536, 0.586928, 0.986928},{0.001307, 0.597386, 0.997386},{0.000000, 0.605882, 0.982353},{0.000000, 0.613725, 0.958824},{0.000000, 0.621569, 0.935294},{0.000000, 0.629412, 0.911765},{0.000000, 0.637255, 0.888235},{0.000000, 0.645098, 0.864706},{0.000000, 0.652941, 0.841176},{0.000000, 0.660784, 0.817647},{0.000000, 0.668627, 0.794118},{0.000000, 0.676471, 0.770588},{0.000000, 0.684314, 0.747059},{0.000000, 0.692157, 0.723529},{0.000000, 0.700000, 0.700000},{0.000000, 0.707843, 0.676471},{0.000000, 0.715686, 0.652941},{0.000000, 0.723529, 0.629412},{0.000000, 0.731373, 0.605882},{0.000000, 0.739216, 0.582353},{0.000000, 0.747059, 0.558824},{0.000000, 0.754902, 0.535294},{0.000000, 0.762745, 0.511765},{0.000000, 0.770588, 0.488235},{0.000000, 0.778431, 0.464706},{0.000000, 0.786275, 0.441176},{0.000000, 0.794118, 0.417647},{0.003922, 0.800784, 0.400784},{0.019608, 0.803922, 0.403922},{0.035294, 0.807059, 0.407059},{0.050980, 0.810196, 0.410196},{0.066667, 0.813333, 0.413333},{0.082353, 0.816471, 0.416471},{0.098039, 0.819608, 0.419608},{0.113725, 0.822745, 0.422745},{0.129412, 0.825882, 0.425882},{0.145098, 0.829020, 0.429020},{0.160784, 0.832157, 0.432157},{0.176471, 0.835294, 0.435294},{0.192157, 0.838431, 0.438431},{0.207843, 0.841569, 0.441569},{0.223529, 0.844706, 0.444706},{0.239216, 0.847843, 0.447843},{0.254902, 0.850980, 0.450980},{0.270588, 0.854118, 0.454118},{0.286275, 0.857255, 0.457255},{0.301961, 0.860392, 0.460392},{0.317647, 0.863529, 0.463529},{0.333333, 0.866667, 0.466667},{0.349020, 0.869804, 0.469804},{0.364706, 0.872941, 0.472941},{0.380392, 0.876078, 0.476078},{0.396078, 0.879216, 0.479216},{0.411765, 0.882353, 0.482353},{0.427451, 0.885490, 0.485490},{0.443137, 0.888627, 0.488627},{0.458824, 0.891765, 0.491765},{0.474510, 0.894902, 0.494902},{0.490196, 0.898039, 0.498039},{0.505882, 0.901176, 0.501176},{0.521569, 0.904314, 0.504314},{0.537255, 0.907451, 0.507451},{0.552941, 0.910588, 0.510588},{0.568627, 0.913725, 0.513725},{0.584314, 0.916863, 0.516863},{0.600000, 0.920000, 0.520000},{0.615686, 0.923137, 0.523137},{0.631373, 0.926275, 0.526275},{0.647059, 0.929412, 0.529412},{0.662745, 0.932549, 0.532549},{0.678431, 0.935686, 0.535686},{0.694118, 0.938824, 0.538824},{0.709804, 0.941961, 0.541961},{0.725490, 0.945098, 0.545098},{0.741176, 0.948235, 0.548235},{0.756863, 0.951373, 0.551373},{0.772549, 0.954510, 0.554510},{0.788235, 0.957647, 0.557647},{0.803922, 0.960784, 0.560784},{0.819608, 0.963922, 0.563922},{0.835294, 0.967059, 0.567059},{0.850980, 0.970196, 0.570196},{0.866667, 0.973333, 0.573333},{0.882353, 0.976471, 0.576471},{0.898039, 0.979608, 0.579608},{0.913725, 0.982745, 0.582745},{0.929412, 0.985882, 0.585882},{0.945098, 0.989020, 0.589020},{0.960784, 0.992157, 0.592157},{0.976471, 0.995294, 0.595294},{0.992157, 0.998431, 0.598431},{0.996078, 0.994980, 0.597882},{0.988235, 0.984941, 0.593647},{0.980392, 0.974902, 0.589412},{0.972549, 0.964863, 0.585176},{0.964706, 0.954824, 0.580941},{0.956863, 0.944784, 0.576706},{0.949020, 0.934745, 0.572471},{0.941176, 0.924706, 0.568235},{0.933333, 0.914667, 0.564000},{0.925490, 0.904627, 0.559765},{0.917647, 0.894588, 0.555529},{0.909804, 0.884549, 0.551294},{0.901961, 0.874510, 0.547059},{0.894118, 0.864471, 0.542824},{0.886275, 0.854431, 0.538588},{0.878431, 0.844392, 0.534353},{0.870588, 0.834353, 0.530118},{0.862745, 0.824314, 0.525882},{0.854902, 0.814275, 0.521647},{0.847059, 0.804235, 0.517412},{0.839216, 0.794196, 0.513176},{0.831373, 0.784157, 0.508941},{0.823529, 0.774118, 0.504706},{0.815686, 0.764078, 0.500471},{0.807843, 0.754039, 0.496235},{0.800000, 0.744000, 0.492000},{0.792157, 0.733961, 0.487765},{0.784314, 0.723922, 0.483529},{0.776471, 0.713882, 0.479294},{0.768627, 0.703843, 0.475059},{0.760784, 0.693804, 0.470824},{0.752941, 0.683765, 0.466588},{0.745098, 0.673725, 0.462353},{0.737255, 0.663686, 0.458118},{0.729412, 0.653647, 0.453882},{0.721569, 0.643608, 0.449647},{0.713725, 0.633569, 0.445412},{0.705882, 0.623529, 0.441176},{0.698039, 0.613490, 0.436941},{0.690196, 0.603451, 0.432706},{0.682353, 0.593412, 0.428471},{0.674510, 0.583373, 0.424235},{0.666667, 0.573333, 0.420000},{0.658824, 0.563294, 0.415765},{0.650980, 0.553255, 0.411529},{0.643137, 0.543216, 0.407294},{0.635294, 0.533176, 0.403059},{0.627451, 0.523137, 0.398824},{0.619608, 0.513098, 0.394588},{0.611765, 0.503059, 0.390353},{0.603922, 0.493020, 0.386118},{0.596078, 0.482980, 0.381882},{0.588235, 0.472941, 0.377647},{0.580392, 0.462902, 0.373412},{0.572549, 0.452863, 0.369176},{0.564706, 0.442824, 0.364941},{0.556863, 0.432784, 0.360706},{0.549020, 0.422745, 0.356471},{0.541176, 0.412706, 0.352235},{0.533333, 0.402667, 0.348000},{0.525490, 0.392627, 0.343765},{0.517647, 0.382588, 0.339529},{0.509804, 0.372549, 0.335294},{0.501961, 0.362510, 0.331059},{0.505882, 0.367529, 0.337882},{0.513725, 0.377569, 0.348392},{0.521569, 0.387608, 0.358902},{0.529412, 0.397647, 0.369412},{0.537255, 0.407686, 0.379922},{0.545098, 0.417725, 0.390431},{0.552941, 0.427765, 0.400941},{0.560784, 0.437804, 0.411451},{0.568627, 0.447843, 0.421961},{0.576471, 0.457882, 0.432471},{0.584314, 0.467922, 0.442980},{0.592157, 0.477961, 0.453490},{0.600000, 0.488000, 0.464000},{0.607843, 0.498039, 0.474510},{0.615686, 0.508078, 0.485020},{0.623529, 0.518118, 0.495529},{0.631373, 0.528157, 0.506039},{0.639216, 0.538196, 0.516549},{0.647059, 0.548235, 0.527059},{0.654902, 0.558275, 0.537569},{0.662745, 0.568314, 0.548078},{0.670588, 0.578353, 0.558588},{0.678431, 0.588392, 0.569098},{0.686275, 0.598431, 0.579608},{0.694118, 0.608471, 0.590118},{0.701961, 0.618510, 0.600627},{0.709804, 0.628549, 0.611137},{0.717647, 0.638588, 0.621647},{0.725490, 0.648627, 0.632157},{0.733333, 0.658667, 0.642667},{0.741176, 0.668706, 0.653176},{0.749020, 0.678745, 0.663686},{0.756863, 0.688784, 0.674196},{0.764706, 0.698824, 0.684706},{0.772549, 0.708863, 0.695216},{0.780392, 0.718902, 0.705725},{0.788235, 0.728941, 0.716235},{0.796078, 0.738980, 0.726745},{0.803922, 0.749020, 0.737255},{0.811765, 0.759059, 0.747765},{0.819608, 0.769098, 0.758275},{0.827451, 0.779137, 0.768784},{0.835294, 0.789176, 0.779294},{0.843137, 0.799216, 0.789804},{0.850980, 0.809255, 0.800314},{0.858824, 0.819294, 0.810824},{0.866667, 0.829333, 0.821333},{0.874510, 0.839373, 0.831843},{0.882353, 0.849412, 0.842353},{0.890196, 0.859451, 0.852863},{0.898039, 0.869490, 0.863373},{0.905882, 0.879529, 0.873882},{0.913725, 0.889569, 0.884392},{0.921569, 0.899608, 0.894902},{0.929412, 0.909647, 0.905412},{0.937255, 0.919686, 0.915922},{0.945098, 0.929725, 0.926431},{0.952941, 0.939765, 0.936941},{0.960784, 0.949804, 0.947451},{0.968627, 0.959843, 0.957961},{0.976471, 0.969882, 0.968471},{0.984314, 0.979922, 0.978980},{0.992157, 0.989961, 0.989490},{1.000000, 1.000000, 1.000000}}}, + {"twilight", {{0.885750, 0.850009, 0.887974},{0.881722, 0.851276, 0.886381},{0.877249, 0.851870, 0.884341},{0.872331, 0.851802, 0.881897},{0.866960, 0.851090, 0.879098},{0.861102, 0.849768, 0.875992},{0.854726, 0.847875, 0.872628},{0.847807, 0.845455, 0.869040},{0.840304, 0.842561, 0.865251},{0.832227, 0.839235, 0.861276},{0.823574, 0.835525, 0.857132},{0.814390, 0.831466, 0.852838},{0.804692, 0.827098, 0.848424},{0.794543, 0.822451, 0.843922},{0.783991, 0.817554, 0.839367},{0.773084, 0.812435, 0.834802},{0.761869, 0.807119, 0.830266},{0.750403, 0.801627, 0.825797},{0.738738, 0.795977, 0.821429},{0.726922, 0.790185, 0.817192},{0.715004, 0.784265, 0.813111},{0.703030, 0.778229, 0.809206},{0.691046, 0.772086, 0.805488},{0.679096, 0.765845, 0.801965},{0.667215, 0.759511, 0.798637},{0.655437, 0.753092, 0.795503},{0.643791, 0.746592, 0.792557},{0.632303, 0.740017, 0.789789},{0.620992, 0.733369, 0.787190},{0.609875, 0.726654, 0.784748},{0.598967, 0.719874, 0.782453},{0.588276, 0.713032, 0.780291},{0.577812, 0.706131, 0.778253},{0.567581, 0.699173, 0.776327},{0.557589, 0.692159, 0.774504},{0.547841, 0.685091, 0.772774},{0.538340, 0.677971, 0.771127},{0.529091, 0.670798, 0.769556},{0.520096, 0.663574, 0.768051},{0.511360, 0.656299, 0.766607},{0.502885, 0.648972, 0.765214},{0.494676, 0.641595, 0.763867},{0.486736, 0.634166, 0.762558},{0.479068, 0.626687, 0.761280},{0.471676, 0.619155, 0.760027},{0.464564, 0.611572, 0.758792},{0.457734, 0.603936, 0.757569},{0.451189, 0.596248, 0.756351},{0.444932, 0.588506, 0.755131},{0.438966, 0.580710, 0.753903},{0.433290, 0.572859, 0.752659},{0.427907, 0.564954, 0.751394},{0.422815, 0.556994, 0.750101},{0.418014, 0.548978, 0.748772},{0.413502, 0.540906, 0.747401},{0.409277, 0.532777, 0.745980},{0.405333, 0.524592, 0.744504},{0.401667, 0.516350, 0.742964},{0.398272, 0.508052, 0.741355},{0.395141, 0.499696, 0.739668},{0.392265, 0.491283, 0.737898},{0.389636, 0.482813, 0.736038},{0.387243, 0.474286, 0.734080},{0.385076, 0.465703, 0.732019},{0.383122, 0.457063, 0.729846},{0.381369, 0.448367, 0.727557},{0.379804, 0.439616, 0.725143},{0.378414, 0.430809, 0.722599},{0.377184, 0.421947, 0.719918},{0.376100, 0.413031, 0.717094},{0.375148, 0.404061, 0.714119},{0.374313, 0.395039, 0.710988},{0.373581, 0.385965, 0.707693},{0.372936, 0.376840, 0.704228},{0.372364, 0.367665, 0.700585},{0.371851, 0.358441, 0.696757},{0.371381, 0.349171, 0.692737},{0.370942, 0.339856, 0.688517},{0.370517, 0.330497, 0.684089},{0.370095, 0.321098, 0.679444},{0.369660, 0.311661, 0.674573},{0.369198, 0.302189, 0.669468},{0.368697, 0.292687, 0.664116},{0.368141, 0.283159, 0.658509},{0.367517, 0.273611, 0.652634},{0.366811, 0.264049, 0.646480},{0.366009, 0.254480, 0.640034},{0.365096, 0.244915, 0.633282},{0.364057, 0.235365, 0.626210},{0.362876, 0.225841, 0.618804},{0.361538, 0.216361, 0.611049},{0.360027, 0.206941, 0.602928},{0.358325, 0.197603, 0.594428},{0.356414, 0.188371, 0.585532},{0.354275, 0.179274, 0.576228},{0.351892, 0.170343, 0.566503},{0.349245, 0.161615, 0.556348},{0.346315, 0.153128, 0.545760},{0.343086, 0.144925, 0.534737},{0.339542, 0.137048, 0.523288},{0.335670, 0.129541, 0.511428},{0.331462, 0.122442, 0.499183},{0.326914, 0.115787, 0.486586},{0.322029, 0.109601, 0.473685},{0.316816, 0.103899, 0.460534},{0.311294, 0.098685, 0.447193},{0.305487, 0.093953, 0.433728},{0.299425, 0.089682, 0.420216},{0.293146, 0.085851, 0.406722},{0.286692, 0.082430, 0.393312},{0.280106, 0.079390, 0.380050},{0.273437, 0.076703, 0.366996},{0.266732, 0.074344, 0.354203},{0.260039, 0.072295, 0.341718},{0.253407, 0.070534, 0.329595},{0.246882, 0.069054, 0.317870},{0.240508, 0.067857, 0.306571},{0.234331, 0.066936, 0.295740},{0.228392, 0.066290, 0.285411},{0.222727, 0.065934, 0.275597},{0.217378, 0.065860, 0.266342},{0.212374, 0.066085, 0.257652},{0.207744, 0.066615, 0.249546},{0.203520, 0.067444, 0.242056},{0.199716, 0.068593, 0.235171},{0.196083, 0.070321, 0.228747},{0.191994, 0.073183, 0.222434},{0.187392, 0.077102, 0.216189},{0.187745, 0.077252, 0.213874},{0.193155, 0.073607, 0.215424},{0.198193, 0.070975, 0.216910},{0.202904, 0.069435, 0.218332},{0.207857, 0.068484, 0.220001},{0.213331, 0.067830, 0.222070},{0.219305, 0.067466, 0.224510},{0.225754, 0.067382, 0.227290},{0.232663, 0.067557, 0.230376},{0.239996, 0.067985, 0.233734},{0.247721, 0.068653, 0.237329},{0.255821, 0.069532, 0.241122},{0.264255, 0.070617, 0.245078},{0.272997, 0.071884, 0.249158},{0.282017, 0.073316, 0.253328},{0.291285, 0.074899, 0.257551},{0.300773, 0.076618, 0.261793},{0.310455, 0.078457, 0.266020},{0.320300, 0.080413, 0.270203},{0.330292, 0.082468, 0.274309},{0.340402, 0.084622, 0.278313},{0.350607, 0.086876, 0.282188},{0.360888, 0.089227, 0.285911},{0.371225, 0.091680, 0.289459},{0.381602, 0.094239, 0.292811},{0.391999, 0.096916, 0.295952},{0.402397, 0.099723, 0.298867},{0.412780, 0.102673, 0.301542},{0.423132, 0.105781, 0.303968},{0.433436, 0.109064, 0.306138},{0.443674, 0.112539, 0.308050},{0.453830, 0.116222, 0.309704},{0.463891, 0.120126, 0.311103},{0.473841, 0.124264, 0.312255},{0.483666, 0.128647, 0.313172},{0.493355, 0.133281, 0.313866},{0.502895, 0.138171, 0.314357},{0.512278, 0.143317, 0.314663},{0.521497, 0.148715, 0.314808},{0.530544, 0.154362, 0.314813},{0.539417, 0.160248, 0.314703},{0.548114, 0.166363, 0.314501},{0.556632, 0.172697, 0.314230},{0.564973, 0.179237, 0.313914},{0.573138, 0.185970, 0.313571},{0.581129, 0.192885, 0.313224},{0.588949, 0.199970, 0.312889},{0.596599, 0.207213, 0.312585},{0.604084, 0.214603, 0.312327},{0.611406, 0.222131, 0.312129},{0.618569, 0.229788, 0.312005},{0.625574, 0.237565, 0.311967},{0.632425, 0.245456, 0.312028},{0.639124, 0.253454, 0.312197},{0.645673, 0.261552, 0.312487},{0.652074, 0.269747, 0.312906},{0.658328, 0.278032, 0.313464},{0.664436, 0.286405, 0.314172},{0.670400, 0.294861, 0.315038},{0.676219, 0.303398, 0.316072},{0.681895, 0.312011, 0.317284},{0.687427, 0.320700, 0.318681},{0.692815, 0.329460, 0.320275},{0.698061, 0.338290, 0.322075},{0.703162, 0.347187, 0.324089},{0.708121, 0.356150, 0.326329},{0.712935, 0.365176, 0.328803},{0.717604, 0.374263, 0.331521},{0.722130, 0.383409, 0.334495},{0.726511, 0.392611, 0.337733},{0.730748, 0.401869, 0.341245},{0.734841, 0.411178, 0.345042},{0.738791, 0.420537, 0.349133},{0.742599, 0.429943, 0.353527},{0.746266, 0.439392, 0.358234},{0.749794, 0.448883, 0.363263},{0.753186, 0.458412, 0.368622},{0.756443, 0.467975, 0.374319},{0.759571, 0.477569, 0.380361},{0.762573, 0.487189, 0.386753},{0.765455, 0.496832, 0.393503},{0.768222, 0.506494, 0.400613},{0.770881, 0.516169, 0.408087},{0.773440, 0.525853, 0.415927},{0.775908, 0.535542, 0.424134},{0.778293, 0.545231, 0.432707},{0.780608, 0.554913, 0.441643},{0.782862, 0.564585, 0.450940},{0.785068, 0.574242, 0.460591},{0.787239, 0.583877, 0.470590},{0.789387, 0.593488, 0.480929},{0.791528, 0.603067, 0.491597},{0.793676, 0.612610, 0.502582},{0.795843, 0.622114, 0.513871},{0.798044, 0.631573, 0.525451},{0.800294, 0.640982, 0.537305},{0.802605, 0.650338, 0.549417},{0.804991, 0.659635, 0.561767},{0.807461, 0.668870, 0.574337},{0.810028, 0.678037, 0.587106},{0.812699, 0.687130, 0.600052},{0.815481, 0.696145, 0.613152},{0.818379, 0.705074, 0.626382},{0.821395, 0.713911, 0.639718},{0.824527, 0.722646, 0.653131},{0.827772, 0.731270, 0.666596},{0.831122, 0.739772, 0.680081},{0.834566, 0.748138, 0.693557},{0.838091, 0.756353, 0.706986},{0.841678, 0.764401, 0.720333},{0.845298, 0.772263, 0.733564},{0.848922, 0.779920, 0.746637},{0.852519, 0.787349, 0.759499},{0.856040, 0.794530, 0.772106},{0.859435, 0.801439, 0.784398},{0.862656, 0.808055, 0.796283},{0.865649, 0.814355, 0.807670},{0.868400, 0.820309, 0.818416},{0.870938, 0.825869, 0.828385},{0.873352, 0.830967, 0.837489},{0.875715, 0.835530, 0.845755},{0.878023, 0.839502, 0.853306},{0.880193, 0.842852, 0.860274},{0.882115, 0.845570, 0.866738},{0.883691, 0.847649, 0.872741},{0.884851, 0.849084, 0.878282},{0.885547, 0.849872, 0.883362},{0.885712, 0.850022, 0.885725}}}, + {"ylgn", {{1.000000, 1.000000, 0.898039},{0.999016, 0.999631, 0.892626},{0.998032, 0.999262, 0.887213},{0.997047, 0.998893, 0.881799},{0.996063, 0.998524, 0.876386},{0.995079, 0.998155, 0.870973},{0.994095, 0.997785, 0.865559},{0.993110, 0.997416, 0.860146},{0.992126, 0.997047, 0.854733},{0.991142, 0.996678, 0.849319},{0.990158, 0.996309, 0.843906},{0.989173, 0.995940, 0.838493},{0.988189, 0.995571, 0.833080},{0.987205, 0.995202, 0.827666},{0.986221, 0.994833, 0.822253},{0.985236, 0.994464, 0.816840},{0.984252, 0.994095, 0.811426},{0.983268, 0.993725, 0.806013},{0.982284, 0.993356, 0.800600},{0.981300, 0.992987, 0.795186},{0.980315, 0.992618, 0.789773},{0.979331, 0.992249, 0.784360},{0.978347, 0.991880, 0.778947},{0.977363, 0.991511, 0.773533},{0.976378, 0.991142, 0.768120},{0.975394, 0.990773, 0.762707},{0.974410, 0.990404, 0.757293},{0.973426, 0.990035, 0.751880},{0.972441, 0.989666, 0.746467},{0.971457, 0.989296, 0.741053},{0.970473, 0.988927, 0.735640},{0.969489, 0.988558, 0.730227},{0.968166, 0.988051, 0.725152},{0.964475, 0.986574, 0.722445},{0.960784, 0.985098, 0.719739},{0.957093, 0.983622, 0.717032},{0.953403, 0.982145, 0.714325},{0.949712, 0.980669, 0.711619},{0.946021, 0.979193, 0.708912},{0.942330, 0.977716, 0.706205},{0.938639, 0.976240, 0.703499},{0.934948, 0.974764, 0.700792},{0.931257, 0.973287, 0.698085},{0.927566, 0.971811, 0.695379},{0.923875, 0.970334, 0.692672},{0.920185, 0.968858, 0.689965},{0.916494, 0.967382, 0.687259},{0.912803, 0.965905, 0.684552},{0.909112, 0.964429, 0.681845},{0.905421, 0.962953, 0.679139},{0.901730, 0.961476, 0.676432},{0.898039, 0.960000, 0.673725},{0.894348, 0.958524, 0.671019},{0.890657, 0.957047, 0.668312},{0.886967, 0.955571, 0.665606},{0.883276, 0.954095, 0.662899},{0.879585, 0.952618, 0.660192},{0.875894, 0.951142, 0.657486},{0.872203, 0.949666, 0.654779},{0.868512, 0.948189, 0.652072},{0.864821, 0.946713, 0.649366},{0.861130, 0.945236, 0.646659},{0.857439, 0.943760, 0.643952},{0.853749, 0.942284, 0.641246},{0.849627, 0.940592, 0.638570},{0.844214, 0.938255, 0.635986},{0.838800, 0.935917, 0.633403},{0.833387, 0.933579, 0.630819},{0.827974, 0.931242, 0.628235},{0.822561, 0.928904, 0.625652},{0.817147, 0.926567, 0.623068},{0.811734, 0.924229, 0.620484},{0.806321, 0.921892, 0.617901},{0.800907, 0.919554, 0.615317},{0.795494, 0.917216, 0.612734},{0.790081, 0.914879, 0.610150},{0.784667, 0.912541, 0.607566},{0.779254, 0.910204, 0.604983},{0.773841, 0.907866, 0.602399},{0.768428, 0.905529, 0.599815},{0.763014, 0.903191, 0.597232},{0.757601, 0.900854, 0.594648},{0.752188, 0.898516, 0.592065},{0.746774, 0.896178, 0.589481},{0.741361, 0.893841, 0.586897},{0.735948, 0.891503, 0.584314},{0.730534, 0.889166, 0.581730},{0.725121, 0.886828, 0.579146},{0.719708, 0.884491, 0.576563},{0.714295, 0.882153, 0.573979},{0.708881, 0.879815, 0.571396},{0.703468, 0.877478, 0.568812},{0.698055, 0.875140, 0.566228},{0.692641, 0.872803, 0.563645},{0.687228, 0.870465, 0.561061},{0.681815, 0.868128, 0.558478},{0.675986, 0.865606, 0.555894},{0.669466, 0.862776, 0.553310},{0.662945, 0.859946, 0.550727},{0.656424, 0.857116, 0.548143},{0.649904, 0.854287, 0.545559},{0.643383, 0.851457, 0.542976},{0.636863, 0.848627, 0.540392},{0.630342, 0.845798, 0.537809},{0.623822, 0.842968, 0.535225},{0.617301, 0.840138, 0.532641},{0.610780, 0.837309, 0.530058},{0.604260, 0.834479, 0.527474},{0.597739, 0.831649, 0.524890},{0.591219, 0.828820, 0.522307},{0.584698, 0.825990, 0.519723},{0.578178, 0.823160, 0.517140},{0.571657, 0.820331, 0.514556},{0.565136, 0.817501, 0.511972},{0.558616, 0.814671, 0.509389},{0.552095, 0.811842, 0.506805},{0.545575, 0.809012, 0.504221},{0.539054, 0.806182, 0.501638},{0.532534, 0.803353, 0.499054},{0.526013, 0.800523, 0.496471},{0.519493, 0.797693, 0.493887},{0.512972, 0.794864, 0.491303},{0.506451, 0.792034, 0.488720},{0.499931, 0.789204, 0.486136},{0.493410, 0.786374, 0.483552},{0.486890, 0.783545, 0.480969},{0.480369, 0.780715, 0.478385},{0.473849, 0.777885, 0.475802},{0.467205, 0.774810, 0.472787},{0.460438, 0.771488, 0.469343},{0.453672, 0.768166, 0.465898},{0.446905, 0.764844, 0.462453},{0.440138, 0.761522, 0.459008},{0.433372, 0.758201, 0.455563},{0.426605, 0.754879, 0.452118},{0.419839, 0.751557, 0.448674},{0.413072, 0.748235, 0.445229},{0.406305, 0.744913, 0.441784},{0.399539, 0.741592, 0.438339},{0.392772, 0.738270, 0.434894},{0.386005, 0.734948, 0.431449},{0.379239, 0.731626, 0.428005},{0.372472, 0.728304, 0.424560},{0.365705, 0.724983, 0.421115},{0.358939, 0.721661, 0.417670},{0.352172, 0.718339, 0.414225},{0.345406, 0.715017, 0.410780},{0.338639, 0.711696, 0.407336},{0.331872, 0.708374, 0.403891},{0.325106, 0.705052, 0.400446},{0.318339, 0.701730, 0.397001},{0.311572, 0.698408, 0.393556},{0.304806, 0.695087, 0.390111},{0.298039, 0.691765, 0.386667},{0.291273, 0.688443, 0.383222},{0.284506, 0.685121, 0.379777},{0.277739, 0.681799, 0.376332},{0.270973, 0.678478, 0.372887},{0.264206, 0.675156, 0.369443},{0.257439, 0.671834, 0.365998},{0.252595, 0.667589, 0.362707},{0.248904, 0.662791, 0.359508},{0.245213, 0.657993, 0.356309},{0.241522, 0.653195, 0.353110},{0.237832, 0.648397, 0.349912},{0.234141, 0.643599, 0.346713},{0.230450, 0.638800, 0.343514},{0.226759, 0.634002, 0.340315},{0.223068, 0.629204, 0.337116},{0.219377, 0.624406, 0.333918},{0.215686, 0.619608, 0.330719},{0.211995, 0.614810, 0.327520},{0.208304, 0.610012, 0.324321},{0.204614, 0.605213, 0.321123},{0.200923, 0.600415, 0.317924},{0.197232, 0.595617, 0.314725},{0.193541, 0.590819, 0.311526},{0.189850, 0.586021, 0.308328},{0.186159, 0.581223, 0.305129},{0.182468, 0.576424, 0.301930},{0.178777, 0.571626, 0.298731},{0.175087, 0.566828, 0.295532},{0.171396, 0.562030, 0.292334},{0.167705, 0.557232, 0.289135},{0.164014, 0.552434, 0.285936},{0.160323, 0.547636, 0.282737},{0.156632, 0.542837, 0.279539},{0.152941, 0.538039, 0.276340},{0.149250, 0.533241, 0.273141},{0.145559, 0.528443, 0.269942},{0.141869, 0.523645, 0.266744},{0.138178, 0.518847, 0.263545},{0.134025, 0.515063, 0.261638},{0.129719, 0.511619, 0.260161},{0.125413, 0.508174, 0.258685},{0.121107, 0.504729, 0.257209},{0.116801, 0.501284, 0.255732},{0.112495, 0.497839, 0.254256},{0.108189, 0.494394, 0.252780},{0.103883, 0.490950, 0.251303},{0.099577, 0.487505, 0.249827},{0.095271, 0.484060, 0.248351},{0.090965, 0.480615, 0.246874},{0.086659, 0.477170, 0.245398},{0.082353, 0.473725, 0.243922},{0.078047, 0.470281, 0.242445},{0.073741, 0.466836, 0.240969},{0.069435, 0.463391, 0.239493},{0.065129, 0.459946, 0.238016},{0.060823, 0.456501, 0.236540},{0.056517, 0.453057, 0.235063},{0.052211, 0.449612, 0.233587},{0.047905, 0.446167, 0.232111},{0.043599, 0.442722, 0.230634},{0.039293, 0.439277, 0.229158},{0.034987, 0.435832, 0.227682},{0.030681, 0.432388, 0.226205},{0.026374, 0.428943, 0.224729},{0.022068, 0.425498, 0.223253},{0.017762, 0.422053, 0.221776},{0.013456, 0.418608, 0.220300},{0.009150, 0.415163, 0.218824},{0.004844, 0.411719, 0.217347},{0.000538, 0.408274, 0.215871},{0.000000, 0.404075, 0.214179},{0.000000, 0.399769, 0.212457},{0.000000, 0.395463, 0.210734},{0.000000, 0.391157, 0.209012},{0.000000, 0.386851, 0.207290},{0.000000, 0.382545, 0.205567},{0.000000, 0.378239, 0.203845},{0.000000, 0.373933, 0.202122},{0.000000, 0.369627, 0.200400},{0.000000, 0.365321, 0.198677},{0.000000, 0.361015, 0.196955},{0.000000, 0.356709, 0.195233},{0.000000, 0.352403, 0.193510},{0.000000, 0.348097, 0.191788},{0.000000, 0.343791, 0.190065},{0.000000, 0.339485, 0.188343},{0.000000, 0.335179, 0.186621},{0.000000, 0.330873, 0.184898},{0.000000, 0.326567, 0.183176},{0.000000, 0.322261, 0.181453},{0.000000, 0.317955, 0.179731},{0.000000, 0.313649, 0.178008},{0.000000, 0.309343, 0.176286},{0.000000, 0.305037, 0.174564},{0.000000, 0.300730, 0.172841},{0.000000, 0.296424, 0.171119},{0.000000, 0.292118, 0.169396},{0.000000, 0.287812, 0.167674},{0.000000, 0.283506, 0.165952},{0.000000, 0.279200, 0.164229},{0.000000, 0.274894, 0.162507},{0.000000, 0.270588, 0.160784}}}, + {"ylgnbu", {{1.000000, 1.000000, 0.850980},{0.997785, 0.999139, 0.846059},{0.995571, 0.998278, 0.841138},{0.993356, 0.997416, 0.836217},{0.991142, 0.996555, 0.831296},{0.988927, 0.995694, 0.826374},{0.986713, 0.994833, 0.821453},{0.984498, 0.993972, 0.816532},{0.982284, 0.993110, 0.811611},{0.980069, 0.992249, 0.806690},{0.977855, 0.991388, 0.801769},{0.975640, 0.990527, 0.796847},{0.973426, 0.989666, 0.791926},{0.971211, 0.988804, 0.787005},{0.968997, 0.987943, 0.782084},{0.966782, 0.987082, 0.777163},{0.964567, 0.986221, 0.772241},{0.962353, 0.985359, 0.767320},{0.960138, 0.984498, 0.762399},{0.957924, 0.983637, 0.757478},{0.955709, 0.982776, 0.752557},{0.953495, 0.981915, 0.747636},{0.951280, 0.981053, 0.742714},{0.949066, 0.980192, 0.737793},{0.946851, 0.979331, 0.732872},{0.944637, 0.978470, 0.727951},{0.942422, 0.977609, 0.723030},{0.940208, 0.976747, 0.718108},{0.937993, 0.975886, 0.713187},{0.935779, 0.975025, 0.708266},{0.933564, 0.974164, 0.703345},{0.931349, 0.973303, 0.698424},{0.928827, 0.972318, 0.694164},{0.924152, 0.970473, 0.694533},{0.919477, 0.968627, 0.694902},{0.914802, 0.966782, 0.695271},{0.910127, 0.964937, 0.695640},{0.905452, 0.963091, 0.696009},{0.900777, 0.961246, 0.696378},{0.896101, 0.959400, 0.696747},{0.891426, 0.957555, 0.697116},{0.886751, 0.955709, 0.697486},{0.882076, 0.953864, 0.697855},{0.877401, 0.952018, 0.698224},{0.872726, 0.950173, 0.698593},{0.868051, 0.948328, 0.698962},{0.863376, 0.946482, 0.699331},{0.858700, 0.944637, 0.699700},{0.854025, 0.942791, 0.700069},{0.849350, 0.940946, 0.700438},{0.844675, 0.939100, 0.700807},{0.840000, 0.937255, 0.701176},{0.835325, 0.935409, 0.701546},{0.830650, 0.933564, 0.701915},{0.825975, 0.931719, 0.702284},{0.821300, 0.929873, 0.702653},{0.816624, 0.928028, 0.703022},{0.811949, 0.926182, 0.703391},{0.807274, 0.924337, 0.703760},{0.802599, 0.922491, 0.704129},{0.797924, 0.920646, 0.704498},{0.793249, 0.918800, 0.704867},{0.788574, 0.916955, 0.705236},{0.783899, 0.915110, 0.705606},{0.778178, 0.912864, 0.706098},{0.769319, 0.909419, 0.706959},{0.760461, 0.905975, 0.707820},{0.751603, 0.902530, 0.708681},{0.742745, 0.899085, 0.709542},{0.733887, 0.895640, 0.710404},{0.725029, 0.892195, 0.711265},{0.716171, 0.888750, 0.712126},{0.707313, 0.885306, 0.712987},{0.698454, 0.881861, 0.713849},{0.689596, 0.878416, 0.714710},{0.680738, 0.874971, 0.715571},{0.671880, 0.871526, 0.716432},{0.663022, 0.868082, 0.717293},{0.654164, 0.864637, 0.718155},{0.645306, 0.861192, 0.719016},{0.636448, 0.857747, 0.719877},{0.627589, 0.854302, 0.720738},{0.618731, 0.850857, 0.721599},{0.609873, 0.847413, 0.722461},{0.601015, 0.843968, 0.723322},{0.592157, 0.840523, 0.724183},{0.583299, 0.837078, 0.725044},{0.574441, 0.833633, 0.725905},{0.565582, 0.830188, 0.726767},{0.556724, 0.826744, 0.727628},{0.547866, 0.823299, 0.728489},{0.539008, 0.819854, 0.729350},{0.530150, 0.816409, 0.730211},{0.521292, 0.812964, 0.731073},{0.512434, 0.809519, 0.731934},{0.503576, 0.806075, 0.732795},{0.495179, 0.802860, 0.733749},{0.487551, 0.800031, 0.734856},{0.479923, 0.797201, 0.735963},{0.472295, 0.794371, 0.737070},{0.464667, 0.791542, 0.738178},{0.457040, 0.788712, 0.739285},{0.449412, 0.785882, 0.740392},{0.441784, 0.783053, 0.741499},{0.434156, 0.780223, 0.742607},{0.426528, 0.777393, 0.743714},{0.418900, 0.774564, 0.744821},{0.411273, 0.771734, 0.745928},{0.403645, 0.768904, 0.747036},{0.396017, 0.766075, 0.748143},{0.388389, 0.763245, 0.749250},{0.380761, 0.760415, 0.750358},{0.373133, 0.757586, 0.751465},{0.365506, 0.754756, 0.752572},{0.357878, 0.751926, 0.753679},{0.350250, 0.749097, 0.754787},{0.342622, 0.746267, 0.755894},{0.334994, 0.743437, 0.757001},{0.327366, 0.740607, 0.758108},{0.319739, 0.737778, 0.759216},{0.312111, 0.734948, 0.760323},{0.304483, 0.732118, 0.761430},{0.296855, 0.729289, 0.762537},{0.289227, 0.726459, 0.763645},{0.281599, 0.723629, 0.764752},{0.273972, 0.720800, 0.765859},{0.266344, 0.717970, 0.766967},{0.258716, 0.715140, 0.768074},{0.252687, 0.711449, 0.768381},{0.248258, 0.706897, 0.767889},{0.243829, 0.702345, 0.767397},{0.239400, 0.697793, 0.766905},{0.234971, 0.693241, 0.766413},{0.230542, 0.688689, 0.765921},{0.226113, 0.684137, 0.765429},{0.221684, 0.679585, 0.764937},{0.217255, 0.675033, 0.764444},{0.212826, 0.670481, 0.763952},{0.208397, 0.665928, 0.763460},{0.203968, 0.661376, 0.762968},{0.199539, 0.656824, 0.762476},{0.195110, 0.652272, 0.761984},{0.190681, 0.647720, 0.761492},{0.186251, 0.643168, 0.761000},{0.181822, 0.638616, 0.760507},{0.177393, 0.634064, 0.760015},{0.172964, 0.629512, 0.759523},{0.168535, 0.624960, 0.759031},{0.164106, 0.620408, 0.758539},{0.159677, 0.615855, 0.758047},{0.155248, 0.611303, 0.757555},{0.150819, 0.606751, 0.757063},{0.146390, 0.602199, 0.756571},{0.141961, 0.597647, 0.756078},{0.137532, 0.593095, 0.755586},{0.133103, 0.588543, 0.755094},{0.128674, 0.583991, 0.754602},{0.124245, 0.579439, 0.754110},{0.119815, 0.574887, 0.753618},{0.115386, 0.570334, 0.753126},{0.114110, 0.564706, 0.751096},{0.114725, 0.558431, 0.748143},{0.115340, 0.552157, 0.745190},{0.115955, 0.545882, 0.742238},{0.116571, 0.539608, 0.739285},{0.117186, 0.533333, 0.736332},{0.117801, 0.527059, 0.733379},{0.118416, 0.520784, 0.730427},{0.119031, 0.514510, 0.727474},{0.119646, 0.508235, 0.724521},{0.120261, 0.501961, 0.721569},{0.120877, 0.495686, 0.718616},{0.121492, 0.489412, 0.715663},{0.122107, 0.483137, 0.712710},{0.122722, 0.476863, 0.709758},{0.123337, 0.470588, 0.706805},{0.123952, 0.464314, 0.703852},{0.124567, 0.458039, 0.700900},{0.125183, 0.451765, 0.697947},{0.125798, 0.445490, 0.694994},{0.126413, 0.439216, 0.692042},{0.127028, 0.432941, 0.689089},{0.127643, 0.426667, 0.686136},{0.128258, 0.420392, 0.683183},{0.128874, 0.414118, 0.680231},{0.129489, 0.407843, 0.677278},{0.130104, 0.401569, 0.674325},{0.130719, 0.395294, 0.671373},{0.131334, 0.389020, 0.668420},{0.131949, 0.382745, 0.665467},{0.132564, 0.376471, 0.662514},{0.133180, 0.370196, 0.659562},{0.133610, 0.364752, 0.656978},{0.133979, 0.359585, 0.654517},{0.134348, 0.354418, 0.652057},{0.134717, 0.349250, 0.649596},{0.135087, 0.344083, 0.647136},{0.135456, 0.338916, 0.644675},{0.135825, 0.333749, 0.642215},{0.136194, 0.328581, 0.639754},{0.136563, 0.323414, 0.637293},{0.136932, 0.318247, 0.634833},{0.137301, 0.313080, 0.632372},{0.137670, 0.307912, 0.629912},{0.138039, 0.302745, 0.627451},{0.138408, 0.297578, 0.624990},{0.138777, 0.292411, 0.622530},{0.139146, 0.287243, 0.620069},{0.139516, 0.282076, 0.617609},{0.139885, 0.276909, 0.615148},{0.140254, 0.271742, 0.612687},{0.140623, 0.266574, 0.610227},{0.140992, 0.261407, 0.607766},{0.141361, 0.256240, 0.605306},{0.141730, 0.251073, 0.602845},{0.142099, 0.245905, 0.600384},{0.142468, 0.240738, 0.597924},{0.142837, 0.235571, 0.595463},{0.143206, 0.230404, 0.593003},{0.143576, 0.225236, 0.590542},{0.143945, 0.220069, 0.588082},{0.144314, 0.214902, 0.585621},{0.144683, 0.209735, 0.583160},{0.145052, 0.204567, 0.580700},{0.141976, 0.201446, 0.573933},{0.138408, 0.198616, 0.566551},{0.134840, 0.195786, 0.559170},{0.131273, 0.192957, 0.551788},{0.127705, 0.190127, 0.544406},{0.124137, 0.187297, 0.537024},{0.120569, 0.184468, 0.529642},{0.117001, 0.181638, 0.522261},{0.113433, 0.178808, 0.514879},{0.109865, 0.175978, 0.507497},{0.106298, 0.173149, 0.500115},{0.102730, 0.170319, 0.492734},{0.099162, 0.167489, 0.485352},{0.095594, 0.164660, 0.477970},{0.092026, 0.161830, 0.470588},{0.088458, 0.159000, 0.463206},{0.084890, 0.156171, 0.455825},{0.081323, 0.153341, 0.448443},{0.077755, 0.150511, 0.441061},{0.074187, 0.147682, 0.433679},{0.070619, 0.144852, 0.426298},{0.067051, 0.142022, 0.418916},{0.063483, 0.139193, 0.411534},{0.059915, 0.136363, 0.404152},{0.056348, 0.133533, 0.396770},{0.052780, 0.130704, 0.389389},{0.049212, 0.127874, 0.382007},{0.045644, 0.125044, 0.374625},{0.042076, 0.122215, 0.367243},{0.038508, 0.119385, 0.359862},{0.034940, 0.116555, 0.352480},{0.031373, 0.113725, 0.345098}}}, + {"piyg", {{0.556863, 0.003922, 0.321569},{0.565321, 0.007920, 0.328181},{0.573779, 0.011918, 0.334794},{0.582238, 0.015917, 0.341407},{0.590696, 0.019915, 0.348020},{0.599154, 0.023914, 0.354633},{0.607612, 0.027912, 0.361246},{0.616071, 0.031911, 0.367859},{0.624529, 0.035909, 0.374471},{0.632987, 0.039908, 0.381084},{0.641446, 0.043906, 0.387697},{0.649904, 0.047905, 0.394310},{0.658362, 0.051903, 0.400923},{0.666820, 0.055902, 0.407536},{0.675279, 0.059900, 0.414148},{0.683737, 0.063899, 0.420761},{0.692195, 0.067897, 0.427374},{0.700654, 0.071895, 0.433987},{0.709112, 0.075894, 0.440600},{0.717570, 0.079892, 0.447213},{0.726028, 0.083891, 0.453825},{0.734487, 0.087889, 0.460438},{0.742945, 0.091888, 0.467051},{0.751403, 0.095886, 0.473664},{0.759862, 0.099885, 0.480277},{0.768320, 0.103883, 0.486890},{0.774471, 0.112957, 0.493964},{0.778316, 0.127105, 0.501499},{0.782161, 0.141253, 0.509035},{0.786005, 0.155402, 0.516571},{0.789850, 0.169550, 0.524106},{0.793695, 0.183699, 0.531642},{0.797539, 0.197847, 0.539177},{0.801384, 0.211995, 0.546713},{0.805229, 0.226144, 0.554248},{0.809073, 0.240292, 0.561784},{0.812918, 0.254441, 0.569319},{0.816763, 0.268589, 0.576855},{0.820607, 0.282737, 0.584391},{0.824452, 0.296886, 0.591926},{0.828297, 0.311034, 0.599462},{0.832141, 0.325183, 0.606997},{0.835986, 0.339331, 0.614533},{0.839831, 0.353479, 0.622068},{0.843676, 0.367628, 0.629604},{0.847520, 0.381776, 0.637140},{0.851365, 0.395925, 0.644675},{0.855210, 0.410073, 0.652211},{0.859054, 0.424221, 0.659746},{0.862899, 0.438370, 0.667282},{0.866744, 0.452518, 0.674817},{0.870588, 0.466667, 0.682353},{0.873510, 0.476355, 0.689120},{0.876432, 0.486044, 0.695886},{0.879354, 0.495732, 0.702653},{0.882276, 0.505421, 0.709419},{0.885198, 0.515110, 0.716186},{0.888120, 0.524798, 0.722953},{0.891042, 0.534487, 0.729719},{0.893964, 0.544175, 0.736486},{0.896886, 0.553864, 0.743253},{0.899808, 0.563552, 0.750019},{0.902730, 0.573241, 0.756786},{0.905652, 0.582930, 0.763552},{0.908574, 0.592618, 0.770319},{0.911496, 0.602307, 0.777086},{0.914418, 0.611995, 0.783852},{0.917339, 0.621684, 0.790619},{0.920261, 0.631373, 0.797386},{0.923183, 0.641061, 0.804152},{0.926105, 0.650750, 0.810919},{0.929027, 0.660438, 0.817686},{0.931949, 0.670127, 0.824452},{0.934871, 0.679815, 0.831219},{0.937793, 0.689504, 0.837985},{0.940715, 0.699193, 0.844752},{0.943637, 0.708881, 0.851519},{0.946021, 0.716955, 0.856517},{0.947866, 0.723414, 0.859746},{0.949712, 0.729873, 0.862976},{0.951557, 0.736332, 0.866205},{0.953403, 0.742791, 0.869435},{0.955248, 0.749250, 0.872664},{0.957093, 0.755709, 0.875894},{0.958939, 0.762168, 0.879123},{0.960784, 0.768627, 0.882353},{0.962630, 0.775087, 0.885582},{0.964475, 0.781546, 0.888812},{0.966321, 0.788005, 0.892042},{0.968166, 0.794464, 0.895271},{0.970012, 0.800923, 0.898501},{0.971857, 0.807382, 0.901730},{0.973702, 0.813841, 0.904960},{0.975548, 0.820300, 0.908189},{0.977393, 0.826759, 0.911419},{0.979239, 0.833218, 0.914648},{0.981084, 0.839677, 0.917878},{0.982930, 0.846136, 0.921107},{0.984775, 0.852595, 0.924337},{0.986621, 0.859054, 0.927566},{0.988466, 0.865513, 0.930796},{0.990311, 0.871972, 0.934025},{0.992157, 0.878431, 0.937255},{0.991234, 0.881968, 0.938485},{0.990311, 0.885506, 0.939715},{0.989389, 0.889043, 0.940946},{0.988466, 0.892580, 0.942176},{0.987543, 0.896117, 0.943406},{0.986621, 0.899654, 0.944637},{0.985698, 0.903191, 0.945867},{0.984775, 0.906728, 0.947097},{0.983852, 0.910265, 0.948328},{0.982930, 0.913802, 0.949558},{0.982007, 0.917339, 0.950788},{0.981084, 0.920877, 0.952018},{0.980161, 0.924414, 0.953249},{0.979239, 0.927951, 0.954479},{0.978316, 0.931488, 0.955709},{0.977393, 0.935025, 0.956940},{0.976471, 0.938562, 0.958170},{0.975548, 0.942099, 0.959400},{0.974625, 0.945636, 0.960631},{0.973702, 0.949173, 0.961861},{0.972780, 0.952710, 0.963091},{0.971857, 0.956248, 0.964321},{0.970934, 0.959785, 0.965552},{0.970012, 0.963322, 0.966782},{0.969089, 0.966859, 0.968012},{0.967320, 0.968474, 0.965629},{0.964706, 0.968166, 0.959631},{0.962092, 0.967859, 0.953633},{0.959477, 0.967551, 0.947636},{0.956863, 0.967243, 0.941638},{0.954248, 0.966936, 0.935640},{0.951634, 0.966628, 0.929642},{0.949020, 0.966321, 0.923645},{0.946405, 0.966013, 0.917647},{0.943791, 0.965705, 0.911649},{0.941176, 0.965398, 0.905652},{0.938562, 0.965090, 0.899654},{0.935948, 0.964783, 0.893656},{0.933333, 0.964475, 0.887659},{0.930719, 0.964168, 0.881661},{0.928105, 0.963860, 0.875663},{0.925490, 0.963552, 0.869666},{0.922876, 0.963245, 0.863668},{0.920261, 0.962937, 0.857670},{0.917647, 0.962630, 0.851672},{0.915033, 0.962322, 0.845675},{0.912418, 0.962015, 0.839677},{0.909804, 0.961707, 0.833679},{0.907190, 0.961399, 0.827682},{0.904575, 0.961092, 0.821684},{0.901961, 0.960784, 0.815686},{0.894887, 0.957709, 0.804306},{0.887812, 0.954633, 0.792926},{0.880738, 0.951557, 0.781546},{0.873664, 0.948481, 0.770165},{0.866590, 0.945406, 0.758785},{0.859516, 0.942330, 0.747405},{0.852441, 0.939254, 0.736025},{0.845367, 0.936178, 0.724644},{0.838293, 0.933103, 0.713264},{0.831219, 0.930027, 0.701884},{0.824145, 0.926951, 0.690504},{0.817070, 0.923875, 0.679123},{0.809996, 0.920800, 0.667743},{0.802922, 0.917724, 0.656363},{0.795848, 0.914648, 0.644983},{0.788774, 0.911572, 0.633602},{0.781699, 0.908497, 0.622222},{0.774625, 0.905421, 0.610842},{0.767551, 0.902345, 0.599462},{0.760477, 0.899270, 0.588082},{0.753403, 0.896194, 0.576701},{0.746328, 0.893118, 0.565321},{0.739254, 0.890042, 0.553941},{0.732180, 0.886967, 0.542561},{0.725106, 0.883891, 0.531180},{0.717186, 0.879508, 0.520185},{0.708420, 0.873818, 0.509573},{0.699654, 0.868128, 0.498962},{0.690888, 0.862438, 0.488351},{0.682122, 0.856747, 0.477739},{0.673356, 0.851057, 0.467128},{0.664591, 0.845367, 0.456517},{0.655825, 0.839677, 0.445905},{0.647059, 0.833987, 0.435294},{0.638293, 0.828297, 0.424683},{0.629527, 0.822607, 0.414072},{0.620761, 0.816917, 0.403460},{0.611995, 0.811226, 0.392849},{0.603230, 0.805536, 0.382238},{0.594464, 0.799846, 0.371626},{0.585698, 0.794156, 0.361015},{0.576932, 0.788466, 0.350404},{0.568166, 0.782776, 0.339792},{0.559400, 0.777086, 0.329181},{0.550634, 0.771396, 0.318570},{0.541869, 0.765705, 0.307958},{0.533103, 0.760015, 0.297347},{0.524337, 0.754325, 0.286736},{0.515571, 0.748635, 0.276125},{0.506805, 0.742945, 0.265513},{0.498039, 0.737255, 0.254902},{0.490350, 0.730796, 0.249981},{0.482661, 0.724337, 0.245060},{0.474971, 0.717878, 0.240138},{0.467282, 0.711419, 0.235217},{0.459592, 0.704960, 0.230296},{0.451903, 0.698501, 0.225375},{0.444214, 0.692042, 0.220454},{0.436524, 0.685582, 0.215532},{0.428835, 0.679123, 0.210611},{0.421146, 0.672664, 0.205690},{0.413456, 0.666205, 0.200769},{0.405767, 0.659746, 0.195848},{0.398078, 0.653287, 0.190927},{0.390388, 0.646828, 0.186005},{0.382699, 0.640369, 0.181084},{0.375010, 0.633910, 0.176163},{0.367320, 0.627451, 0.171242},{0.359631, 0.620992, 0.166321},{0.351942, 0.614533, 0.161399},{0.344252, 0.608074, 0.156478},{0.336563, 0.601615, 0.151557},{0.328874, 0.595156, 0.146636},{0.321184, 0.588697, 0.141715},{0.313495, 0.582238, 0.136794},{0.305805, 0.575779, 0.131872},{0.299039, 0.569012, 0.128797},{0.293195, 0.561938, 0.127566},{0.287351, 0.554864, 0.126336},{0.281507, 0.547789, 0.125106},{0.275663, 0.540715, 0.123875},{0.269819, 0.533641, 0.122645},{0.263975, 0.526567, 0.121415},{0.258131, 0.519493, 0.120185},{0.252288, 0.512418, 0.118954},{0.246444, 0.505344, 0.117724},{0.240600, 0.498270, 0.116494},{0.234756, 0.491196, 0.115263},{0.228912, 0.484121, 0.114033},{0.223068, 0.477047, 0.112803},{0.217224, 0.469973, 0.111572},{0.211380, 0.462899, 0.110342},{0.205536, 0.455825, 0.109112},{0.199692, 0.448750, 0.107882},{0.193849, 0.441676, 0.106651},{0.188005, 0.434602, 0.105421},{0.182161, 0.427528, 0.104191},{0.176317, 0.420454, 0.102960},{0.170473, 0.413379, 0.101730},{0.164629, 0.406305, 0.100500},{0.158785, 0.399231, 0.099270},{0.152941, 0.392157, 0.098039}}}, + {"bwr", {{0.000000, 0.000000, 1.000000},{0.007843, 0.007843, 1.000000},{0.015686, 0.015686, 1.000000},{0.023529, 0.023529, 1.000000},{0.031373, 0.031373, 1.000000},{0.039216, 0.039216, 1.000000},{0.047059, 0.047059, 1.000000},{0.054902, 0.054902, 1.000000},{0.062745, 0.062745, 1.000000},{0.070588, 0.070588, 1.000000},{0.078431, 0.078431, 1.000000},{0.086275, 0.086275, 1.000000},{0.094118, 0.094118, 1.000000},{0.101961, 0.101961, 1.000000},{0.109804, 0.109804, 1.000000},{0.117647, 0.117647, 1.000000},{0.125490, 0.125490, 1.000000},{0.133333, 0.133333, 1.000000},{0.141176, 0.141176, 1.000000},{0.149020, 0.149020, 1.000000},{0.156863, 0.156863, 1.000000},{0.164706, 0.164706, 1.000000},{0.172549, 0.172549, 1.000000},{0.180392, 0.180392, 1.000000},{0.188235, 0.188235, 1.000000},{0.196078, 0.196078, 1.000000},{0.203922, 0.203922, 1.000000},{0.211765, 0.211765, 1.000000},{0.219608, 0.219608, 1.000000},{0.227451, 0.227451, 1.000000},{0.235294, 0.235294, 1.000000},{0.243137, 0.243137, 1.000000},{0.250980, 0.250980, 1.000000},{0.258824, 0.258824, 1.000000},{0.266667, 0.266667, 1.000000},{0.274510, 0.274510, 1.000000},{0.282353, 0.282353, 1.000000},{0.290196, 0.290196, 1.000000},{0.298039, 0.298039, 1.000000},{0.305882, 0.305882, 1.000000},{0.313725, 0.313725, 1.000000},{0.321569, 0.321569, 1.000000},{0.329412, 0.329412, 1.000000},{0.337255, 0.337255, 1.000000},{0.345098, 0.345098, 1.000000},{0.352941, 0.352941, 1.000000},{0.360784, 0.360784, 1.000000},{0.368627, 0.368627, 1.000000},{0.376471, 0.376471, 1.000000},{0.384314, 0.384314, 1.000000},{0.392157, 0.392157, 1.000000},{0.400000, 0.400000, 1.000000},{0.407843, 0.407843, 1.000000},{0.415686, 0.415686, 1.000000},{0.423529, 0.423529, 1.000000},{0.431373, 0.431373, 1.000000},{0.439216, 0.439216, 1.000000},{0.447059, 0.447059, 1.000000},{0.454902, 0.454902, 1.000000},{0.462745, 0.462745, 1.000000},{0.470588, 0.470588, 1.000000},{0.478431, 0.478431, 1.000000},{0.486275, 0.486275, 1.000000},{0.494118, 0.494118, 1.000000},{0.501961, 0.501961, 1.000000},{0.509804, 0.509804, 1.000000},{0.517647, 0.517647, 1.000000},{0.525490, 0.525490, 1.000000},{0.533333, 0.533333, 1.000000},{0.541176, 0.541176, 1.000000},{0.549020, 0.549020, 1.000000},{0.556863, 0.556863, 1.000000},{0.564706, 0.564706, 1.000000},{0.572549, 0.572549, 1.000000},{0.580392, 0.580392, 1.000000},{0.588235, 0.588235, 1.000000},{0.596078, 0.596078, 1.000000},{0.603922, 0.603922, 1.000000},{0.611765, 0.611765, 1.000000},{0.619608, 0.619608, 1.000000},{0.627451, 0.627451, 1.000000},{0.635294, 0.635294, 1.000000},{0.643137, 0.643137, 1.000000},{0.650980, 0.650980, 1.000000},{0.658824, 0.658824, 1.000000},{0.666667, 0.666667, 1.000000},{0.674510, 0.674510, 1.000000},{0.682353, 0.682353, 1.000000},{0.690196, 0.690196, 1.000000},{0.698039, 0.698039, 1.000000},{0.705882, 0.705882, 1.000000},{0.713725, 0.713725, 1.000000},{0.721569, 0.721569, 1.000000},{0.729412, 0.729412, 1.000000},{0.737255, 0.737255, 1.000000},{0.745098, 0.745098, 1.000000},{0.752941, 0.752941, 1.000000},{0.760784, 0.760784, 1.000000},{0.768627, 0.768627, 1.000000},{0.776471, 0.776471, 1.000000},{0.784314, 0.784314, 1.000000},{0.792157, 0.792157, 1.000000},{0.800000, 0.800000, 1.000000},{0.807843, 0.807843, 1.000000},{0.815686, 0.815686, 1.000000},{0.823529, 0.823529, 1.000000},{0.831373, 0.831373, 1.000000},{0.839216, 0.839216, 1.000000},{0.847059, 0.847059, 1.000000},{0.854902, 0.854902, 1.000000},{0.862745, 0.862745, 1.000000},{0.870588, 0.870588, 1.000000},{0.878431, 0.878431, 1.000000},{0.886275, 0.886275, 1.000000},{0.894118, 0.894118, 1.000000},{0.901961, 0.901961, 1.000000},{0.909804, 0.909804, 1.000000},{0.917647, 0.917647, 1.000000},{0.925490, 0.925490, 1.000000},{0.933333, 0.933333, 1.000000},{0.941176, 0.941176, 1.000000},{0.949020, 0.949020, 1.000000},{0.956863, 0.956863, 1.000000},{0.964706, 0.964706, 1.000000},{0.972549, 0.972549, 1.000000},{0.980392, 0.980392, 1.000000},{0.988235, 0.988235, 1.000000},{0.996078, 0.996078, 1.000000},{1.000000, 0.996078, 0.996078},{1.000000, 0.988235, 0.988235},{1.000000, 0.980392, 0.980392},{1.000000, 0.972549, 0.972549},{1.000000, 0.964706, 0.964706},{1.000000, 0.956863, 0.956863},{1.000000, 0.949020, 0.949020},{1.000000, 0.941176, 0.941176},{1.000000, 0.933333, 0.933333},{1.000000, 0.925490, 0.925490},{1.000000, 0.917647, 0.917647},{1.000000, 0.909804, 0.909804},{1.000000, 0.901961, 0.901961},{1.000000, 0.894118, 0.894118},{1.000000, 0.886275, 0.886275},{1.000000, 0.878431, 0.878431},{1.000000, 0.870588, 0.870588},{1.000000, 0.862745, 0.862745},{1.000000, 0.854902, 0.854902},{1.000000, 0.847059, 0.847059},{1.000000, 0.839216, 0.839216},{1.000000, 0.831373, 0.831373},{1.000000, 0.823529, 0.823529},{1.000000, 0.815686, 0.815686},{1.000000, 0.807843, 0.807843},{1.000000, 0.800000, 0.800000},{1.000000, 0.792157, 0.792157},{1.000000, 0.784314, 0.784314},{1.000000, 0.776471, 0.776471},{1.000000, 0.768627, 0.768627},{1.000000, 0.760784, 0.760784},{1.000000, 0.752941, 0.752941},{1.000000, 0.745098, 0.745098},{1.000000, 0.737255, 0.737255},{1.000000, 0.729412, 0.729412},{1.000000, 0.721569, 0.721569},{1.000000, 0.713725, 0.713725},{1.000000, 0.705882, 0.705882},{1.000000, 0.698039, 0.698039},{1.000000, 0.690196, 0.690196},{1.000000, 0.682353, 0.682353},{1.000000, 0.674510, 0.674510},{1.000000, 0.666667, 0.666667},{1.000000, 0.658824, 0.658824},{1.000000, 0.650980, 0.650980},{1.000000, 0.643137, 0.643137},{1.000000, 0.635294, 0.635294},{1.000000, 0.627451, 0.627451},{1.000000, 0.619608, 0.619608},{1.000000, 0.611765, 0.611765},{1.000000, 0.603922, 0.603922},{1.000000, 0.596078, 0.596078},{1.000000, 0.588235, 0.588235},{1.000000, 0.580392, 0.580392},{1.000000, 0.572549, 0.572549},{1.000000, 0.564706, 0.564706},{1.000000, 0.556863, 0.556863},{1.000000, 0.549020, 0.549020},{1.000000, 0.541176, 0.541176},{1.000000, 0.533333, 0.533333},{1.000000, 0.525490, 0.525490},{1.000000, 0.517647, 0.517647},{1.000000, 0.509804, 0.509804},{1.000000, 0.501961, 0.501961},{1.000000, 0.494118, 0.494118},{1.000000, 0.486275, 0.486275},{1.000000, 0.478431, 0.478431},{1.000000, 0.470588, 0.470588},{1.000000, 0.462745, 0.462745},{1.000000, 0.454902, 0.454902},{1.000000, 0.447059, 0.447059},{1.000000, 0.439216, 0.439216},{1.000000, 0.431373, 0.431373},{1.000000, 0.423529, 0.423529},{1.000000, 0.415686, 0.415686},{1.000000, 0.407843, 0.407843},{1.000000, 0.400000, 0.400000},{1.000000, 0.392157, 0.392157},{1.000000, 0.384314, 0.384314},{1.000000, 0.376471, 0.376471},{1.000000, 0.368627, 0.368627},{1.000000, 0.360784, 0.360784},{1.000000, 0.352941, 0.352941},{1.000000, 0.345098, 0.345098},{1.000000, 0.337255, 0.337255},{1.000000, 0.329412, 0.329412},{1.000000, 0.321569, 0.321569},{1.000000, 0.313725, 0.313725},{1.000000, 0.305882, 0.305882},{1.000000, 0.298039, 0.298039},{1.000000, 0.290196, 0.290196},{1.000000, 0.282353, 0.282353},{1.000000, 0.274510, 0.274510},{1.000000, 0.266667, 0.266667},{1.000000, 0.258824, 0.258824},{1.000000, 0.250980, 0.250980},{1.000000, 0.243137, 0.243137},{1.000000, 0.235294, 0.235294},{1.000000, 0.227451, 0.227451},{1.000000, 0.219608, 0.219608},{1.000000, 0.211765, 0.211765},{1.000000, 0.203922, 0.203922},{1.000000, 0.196078, 0.196078},{1.000000, 0.188235, 0.188235},{1.000000, 0.180392, 0.180392},{1.000000, 0.172549, 0.172549},{1.000000, 0.164706, 0.164706},{1.000000, 0.156863, 0.156863},{1.000000, 0.149020, 0.149020},{1.000000, 0.141176, 0.141176},{1.000000, 0.133333, 0.133333},{1.000000, 0.125490, 0.125490},{1.000000, 0.117647, 0.117647},{1.000000, 0.109804, 0.109804},{1.000000, 0.101961, 0.101961},{1.000000, 0.094118, 0.094118},{1.000000, 0.086275, 0.086275},{1.000000, 0.078431, 0.078431},{1.000000, 0.070588, 0.070588},{1.000000, 0.062745, 0.062745},{1.000000, 0.054902, 0.054902},{1.000000, 0.047059, 0.047059},{1.000000, 0.039216, 0.039216},{1.000000, 0.031373, 0.031373},{1.000000, 0.023529, 0.023529},{1.000000, 0.015686, 0.015686},{1.000000, 0.007843, 0.007843},{1.000000, 0.000000, 0.000000}}}, + {"seismic", {{0.000000, 0.000000, 0.300000},{0.000000, 0.000000, 0.310980},{0.000000, 0.000000, 0.321961},{0.000000, 0.000000, 0.332941},{0.000000, 0.000000, 0.343922},{0.000000, 0.000000, 0.354902},{0.000000, 0.000000, 0.365882},{0.000000, 0.000000, 0.376863},{0.000000, 0.000000, 0.387843},{0.000000, 0.000000, 0.398824},{0.000000, 0.000000, 0.409804},{0.000000, 0.000000, 0.420784},{0.000000, 0.000000, 0.431765},{0.000000, 0.000000, 0.442745},{0.000000, 0.000000, 0.453725},{0.000000, 0.000000, 0.464706},{0.000000, 0.000000, 0.475686},{0.000000, 0.000000, 0.486667},{0.000000, 0.000000, 0.497647},{0.000000, 0.000000, 0.508627},{0.000000, 0.000000, 0.519608},{0.000000, 0.000000, 0.530588},{0.000000, 0.000000, 0.541569},{0.000000, 0.000000, 0.552549},{0.000000, 0.000000, 0.563529},{0.000000, 0.000000, 0.574510},{0.000000, 0.000000, 0.585490},{0.000000, 0.000000, 0.596471},{0.000000, 0.000000, 0.607451},{0.000000, 0.000000, 0.618431},{0.000000, 0.000000, 0.629412},{0.000000, 0.000000, 0.640392},{0.000000, 0.000000, 0.651373},{0.000000, 0.000000, 0.662353},{0.000000, 0.000000, 0.673333},{0.000000, 0.000000, 0.684314},{0.000000, 0.000000, 0.695294},{0.000000, 0.000000, 0.706275},{0.000000, 0.000000, 0.717255},{0.000000, 0.000000, 0.728235},{0.000000, 0.000000, 0.739216},{0.000000, 0.000000, 0.750196},{0.000000, 0.000000, 0.761176},{0.000000, 0.000000, 0.772157},{0.000000, 0.000000, 0.783137},{0.000000, 0.000000, 0.794118},{0.000000, 0.000000, 0.805098},{0.000000, 0.000000, 0.816078},{0.000000, 0.000000, 0.827059},{0.000000, 0.000000, 0.838039},{0.000000, 0.000000, 0.849020},{0.000000, 0.000000, 0.860000},{0.000000, 0.000000, 0.870980},{0.000000, 0.000000, 0.881961},{0.000000, 0.000000, 0.892941},{0.000000, 0.000000, 0.903922},{0.000000, 0.000000, 0.914902},{0.000000, 0.000000, 0.925882},{0.000000, 0.000000, 0.936863},{0.000000, 0.000000, 0.947843},{0.000000, 0.000000, 0.958824},{0.000000, 0.000000, 0.969804},{0.000000, 0.000000, 0.980784},{0.000000, 0.000000, 0.991765},{0.003922, 0.003922, 1.000000},{0.019608, 0.019608, 1.000000},{0.035294, 0.035294, 1.000000},{0.050980, 0.050980, 1.000000},{0.066667, 0.066667, 1.000000},{0.082353, 0.082353, 1.000000},{0.098039, 0.098039, 1.000000},{0.113725, 0.113725, 1.000000},{0.129412, 0.129412, 1.000000},{0.145098, 0.145098, 1.000000},{0.160784, 0.160784, 1.000000},{0.176471, 0.176471, 1.000000},{0.192157, 0.192157, 1.000000},{0.207843, 0.207843, 1.000000},{0.223529, 0.223529, 1.000000},{0.239216, 0.239216, 1.000000},{0.254902, 0.254902, 1.000000},{0.270588, 0.270588, 1.000000},{0.286275, 0.286275, 1.000000},{0.301961, 0.301961, 1.000000},{0.317647, 0.317647, 1.000000},{0.333333, 0.333333, 1.000000},{0.349020, 0.349020, 1.000000},{0.364706, 0.364706, 1.000000},{0.380392, 0.380392, 1.000000},{0.396078, 0.396078, 1.000000},{0.411765, 0.411765, 1.000000},{0.427451, 0.427451, 1.000000},{0.443137, 0.443137, 1.000000},{0.458824, 0.458824, 1.000000},{0.474510, 0.474510, 1.000000},{0.490196, 0.490196, 1.000000},{0.505882, 0.505882, 1.000000},{0.521569, 0.521569, 1.000000},{0.537255, 0.537255, 1.000000},{0.552941, 0.552941, 1.000000},{0.568627, 0.568627, 1.000000},{0.584314, 0.584314, 1.000000},{0.600000, 0.600000, 1.000000},{0.615686, 0.615686, 1.000000},{0.631373, 0.631373, 1.000000},{0.647059, 0.647059, 1.000000},{0.662745, 0.662745, 1.000000},{0.678431, 0.678431, 1.000000},{0.694118, 0.694118, 1.000000},{0.709804, 0.709804, 1.000000},{0.725490, 0.725490, 1.000000},{0.741176, 0.741176, 1.000000},{0.756863, 0.756863, 1.000000},{0.772549, 0.772549, 1.000000},{0.788235, 0.788235, 1.000000},{0.803922, 0.803922, 1.000000},{0.819608, 0.819608, 1.000000},{0.835294, 0.835294, 1.000000},{0.850980, 0.850980, 1.000000},{0.866667, 0.866667, 1.000000},{0.882353, 0.882353, 1.000000},{0.898039, 0.898039, 1.000000},{0.913725, 0.913725, 1.000000},{0.929412, 0.929412, 1.000000},{0.945098, 0.945098, 1.000000},{0.960784, 0.960784, 1.000000},{0.976471, 0.976471, 1.000000},{0.992157, 0.992157, 1.000000},{1.000000, 0.992157, 0.992157},{1.000000, 0.976471, 0.976471},{1.000000, 0.960784, 0.960784},{1.000000, 0.945098, 0.945098},{1.000000, 0.929412, 0.929412},{1.000000, 0.913725, 0.913725},{1.000000, 0.898039, 0.898039},{1.000000, 0.882353, 0.882353},{1.000000, 0.866667, 0.866667},{1.000000, 0.850980, 0.850980},{1.000000, 0.835294, 0.835294},{1.000000, 0.819608, 0.819608},{1.000000, 0.803922, 0.803922},{1.000000, 0.788235, 0.788235},{1.000000, 0.772549, 0.772549},{1.000000, 0.756863, 0.756863},{1.000000, 0.741176, 0.741176},{1.000000, 0.725490, 0.725490},{1.000000, 0.709804, 0.709804},{1.000000, 0.694118, 0.694118},{1.000000, 0.678431, 0.678431},{1.000000, 0.662745, 0.662745},{1.000000, 0.647059, 0.647059},{1.000000, 0.631373, 0.631373},{1.000000, 0.615686, 0.615686},{1.000000, 0.600000, 0.600000},{1.000000, 0.584314, 0.584314},{1.000000, 0.568627, 0.568627},{1.000000, 0.552941, 0.552941},{1.000000, 0.537255, 0.537255},{1.000000, 0.521569, 0.521569},{1.000000, 0.505882, 0.505882},{1.000000, 0.490196, 0.490196},{1.000000, 0.474510, 0.474510},{1.000000, 0.458824, 0.458824},{1.000000, 0.443137, 0.443137},{1.000000, 0.427451, 0.427451},{1.000000, 0.411765, 0.411765},{1.000000, 0.396078, 0.396078},{1.000000, 0.380392, 0.380392},{1.000000, 0.364706, 0.364706},{1.000000, 0.349020, 0.349020},{1.000000, 0.333333, 0.333333},{1.000000, 0.317647, 0.317647},{1.000000, 0.301961, 0.301961},{1.000000, 0.286275, 0.286275},{1.000000, 0.270588, 0.270588},{1.000000, 0.254902, 0.254902},{1.000000, 0.239216, 0.239216},{1.000000, 0.223529, 0.223529},{1.000000, 0.207843, 0.207843},{1.000000, 0.192157, 0.192157},{1.000000, 0.176471, 0.176471},{1.000000, 0.160784, 0.160784},{1.000000, 0.145098, 0.145098},{1.000000, 0.129412, 0.129412},{1.000000, 0.113725, 0.113725},{1.000000, 0.098039, 0.098039},{1.000000, 0.082353, 0.082353},{1.000000, 0.066667, 0.066667},{1.000000, 0.050980, 0.050980},{1.000000, 0.035294, 0.035294},{1.000000, 0.019608, 0.019608},{1.000000, 0.003922, 0.003922},{0.994118, 0.000000, 0.000000},{0.986275, 0.000000, 0.000000},{0.978431, 0.000000, 0.000000},{0.970588, 0.000000, 0.000000},{0.962745, 0.000000, 0.000000},{0.954902, 0.000000, 0.000000},{0.947059, 0.000000, 0.000000},{0.939216, 0.000000, 0.000000},{0.931373, 0.000000, 0.000000},{0.923529, 0.000000, 0.000000},{0.915686, 0.000000, 0.000000},{0.907843, 0.000000, 0.000000},{0.900000, 0.000000, 0.000000},{0.892157, 0.000000, 0.000000},{0.884314, 0.000000, 0.000000},{0.876471, 0.000000, 0.000000},{0.868627, 0.000000, 0.000000},{0.860784, 0.000000, 0.000000},{0.852941, 0.000000, 0.000000},{0.845098, 0.000000, 0.000000},{0.837255, 0.000000, 0.000000},{0.829412, 0.000000, 0.000000},{0.821569, 0.000000, 0.000000},{0.813725, 0.000000, 0.000000},{0.805882, 0.000000, 0.000000},{0.798039, 0.000000, 0.000000},{0.790196, 0.000000, 0.000000},{0.782353, 0.000000, 0.000000},{0.774510, 0.000000, 0.000000},{0.766667, 0.000000, 0.000000},{0.758824, 0.000000, 0.000000},{0.750980, 0.000000, 0.000000},{0.743137, 0.000000, 0.000000},{0.735294, 0.000000, 0.000000},{0.727451, 0.000000, 0.000000},{0.719608, 0.000000, 0.000000},{0.711765, 0.000000, 0.000000},{0.703922, 0.000000, 0.000000},{0.696078, 0.000000, 0.000000},{0.688235, 0.000000, 0.000000},{0.680392, 0.000000, 0.000000},{0.672549, 0.000000, 0.000000},{0.664706, 0.000000, 0.000000},{0.656863, 0.000000, 0.000000},{0.649020, 0.000000, 0.000000},{0.641176, 0.000000, 0.000000},{0.633333, 0.000000, 0.000000},{0.625490, 0.000000, 0.000000},{0.617647, 0.000000, 0.000000},{0.609804, 0.000000, 0.000000},{0.601961, 0.000000, 0.000000},{0.594118, 0.000000, 0.000000},{0.586275, 0.000000, 0.000000},{0.578431, 0.000000, 0.000000},{0.570588, 0.000000, 0.000000},{0.562745, 0.000000, 0.000000},{0.554902, 0.000000, 0.000000},{0.547059, 0.000000, 0.000000},{0.539216, 0.000000, 0.000000},{0.531373, 0.000000, 0.000000},{0.523529, 0.000000, 0.000000},{0.515686, 0.000000, 0.000000},{0.507843, 0.000000, 0.000000},{0.500000, 0.000000, 0.000000}}}, + {"turbo", {{0.18995,0.07176,0.23217},{0.19483,0.08339,0.26149},{0.19956,0.09498,0.29024},{0.20415,0.10652,0.31844},{0.20860,0.11802,0.34607},{0.21291,0.12947,0.37314},{0.21708,0.14087,0.39964},{0.22111,0.15223,0.42558},{0.22500,0.16354,0.45096},{0.22875,0.17481,0.47578},{0.23236,0.18603,0.50004},{0.23582,0.19720,0.52373},{0.23915,0.20833,0.54686},{0.24234,0.21941,0.56942},{0.24539,0.23044,0.59142},{0.24830,0.24143,0.61286},{0.25107,0.25237,0.63374},{0.25369,0.26327,0.65406},{0.25618,0.27412,0.67381},{0.25853,0.28492,0.69300},{0.26074,0.29568,0.71162},{0.26280,0.30639,0.72968},{0.26473,0.31706,0.74718},{0.26652,0.32768,0.76412},{0.26816,0.33825,0.78050},{0.26967,0.34878,0.79631},{0.27103,0.35926,0.81156},{0.27226,0.36970,0.82624},{0.27334,0.38008,0.84037},{0.27429,0.39043,0.85393},{0.27509,0.40072,0.86692},{0.27576,0.41097,0.87936},{0.27628,0.42118,0.89123},{0.27667,0.43134,0.90254},{0.27691,0.44145,0.91328},{0.27701,0.45152,0.92347},{0.27698,0.46153,0.93309},{0.27680,0.47151,0.94214},{0.27648,0.48144,0.95064},{0.27603,0.49132,0.95857},{0.27543,0.50115,0.96594},{0.27469,0.51094,0.97275},{0.27381,0.52069,0.97899},{0.27273,0.53040,0.98461},{0.27106,0.54015,0.98930},{0.26878,0.54995,0.99303},{0.26592,0.55979,0.99583},{0.26252,0.56967,0.99773},{0.25862,0.57958,0.99876},{0.25425,0.58950,0.99896},{0.24946,0.59943,0.99835},{0.24427,0.60937,0.99697},{0.23874,0.61931,0.99485},{0.23288,0.62923,0.99202},{0.22676,0.63913,0.98851},{0.22039,0.64901,0.98436},{0.21382,0.65886,0.97959},{0.20708,0.66866,0.97423},{0.20021,0.67842,0.96833},{0.19326,0.68812,0.96190},{0.18625,0.69775,0.95498},{0.17923,0.70732,0.94761},{0.17223,0.71680,0.93981},{0.16529,0.72620,0.93161},{0.15844,0.73551,0.92305},{0.15173,0.74472,0.91416},{0.14519,0.75381,0.90496},{0.13886,0.76279,0.89550},{0.13278,0.77165,0.88580},{0.12698,0.78037,0.87590},{0.12151,0.78896,0.86581},{0.11639,0.79740,0.85559},{0.11167,0.80569,0.84525},{0.10738,0.81381,0.83484},{0.10357,0.82177,0.82437},{0.10026,0.82955,0.81389},{0.09750,0.83714,0.80342},{0.09532,0.84455,0.79299},{0.09377,0.85175,0.78264},{0.09287,0.85875,0.77240},{0.09267,0.86554,0.76230},{0.09320,0.87211,0.75237},{0.09451,0.87844,0.74265},{0.09662,0.88454,0.73316},{0.09958,0.89040,0.72393},{0.10342,0.89600,0.71500},{0.10815,0.90142,0.70599},{0.11374,0.90673,0.69651},{0.12014,0.91193,0.68660},{0.12733,0.91701,0.67627},{0.13526,0.92197,0.66556},{0.14391,0.92680,0.65448},{0.15323,0.93151,0.64308},{0.16319,0.93609,0.63137},{0.17377,0.94053,0.61938},{0.18491,0.94484,0.60713},{0.19659,0.94901,0.59466},{0.20877,0.95304,0.58199},{0.22142,0.95692,0.56914},{0.23449,0.96065,0.55614},{0.24797,0.96423,0.54303},{0.26180,0.96765,0.52981},{0.27597,0.97092,0.51653},{0.29042,0.97403,0.50321},{0.30513,0.97697,0.48987},{0.32006,0.97974,0.47654},{0.33517,0.98234,0.46325},{0.35043,0.98477,0.45002},{0.36581,0.98702,0.43688},{0.38127,0.98909,0.42386},{0.39678,0.99098,0.41098},{0.41229,0.99268,0.39826},{0.42778,0.99419,0.38575},{0.44321,0.99551,0.37345},{0.45854,0.99663,0.36140},{0.47375,0.99755,0.34963},{0.48879,0.99828,0.33816},{0.50362,0.99879,0.32701},{0.51822,0.99910,0.31622},{0.53255,0.99919,0.30581},{0.54658,0.99907,0.29581},{0.56026,0.99873,0.28623},{0.57357,0.99817,0.27712},{0.58646,0.99739,0.26849},{0.59891,0.99638,0.26038},{0.61088,0.99514,0.25280},{0.62233,0.99366,0.24579},{0.63323,0.99195,0.23937},{0.64362,0.98999,0.23356},{0.65394,0.98775,0.22835},{0.66428,0.98524,0.22370},{0.67462,0.98246,0.21960},{0.68494,0.97941,0.21602},{0.69525,0.97610,0.21294},{0.70553,0.97255,0.21032},{0.71577,0.96875,0.20815},{0.72596,0.96470,0.20640},{0.73610,0.96043,0.20504},{0.74617,0.95593,0.20406},{0.75617,0.95121,0.20343},{0.76608,0.94627,0.20311},{0.77591,0.94113,0.20310},{0.78563,0.93579,0.20336},{0.79524,0.93025,0.20386},{0.80473,0.92452,0.20459},{0.81410,0.91861,0.20552},{0.82333,0.91253,0.20663},{0.83241,0.90627,0.20788},{0.84133,0.89986,0.20926},{0.85010,0.89328,0.21074},{0.85868,0.88655,0.21230},{0.86709,0.87968,0.21391},{0.87530,0.87267,0.21555},{0.88331,0.86553,0.21719},{0.89112,0.85826,0.21880},{0.89870,0.85087,0.22038},{0.90605,0.84337,0.22188},{0.91317,0.83576,0.22328},{0.92004,0.82806,0.22456},{0.92666,0.82025,0.22570},{0.93301,0.81236,0.22667},{0.93909,0.80439,0.22744},{0.94489,0.79634,0.22800},{0.95039,0.78823,0.22831},{0.95560,0.78005,0.22836},{0.96049,0.77181,0.22811},{0.96507,0.76352,0.22754},{0.96931,0.75519,0.22663},{0.97323,0.74682,0.22536},{0.97679,0.73842,0.22369},{0.98000,0.73000,0.22161},{0.98289,0.72140,0.21918},{0.98549,0.71250,0.21650},{0.98781,0.70330,0.21358},{0.98986,0.69382,0.21043},{0.99163,0.68408,0.20706},{0.99314,0.67408,0.20348},{0.99438,0.66386,0.19971},{0.99535,0.65341,0.19577},{0.99607,0.64277,0.19165},{0.99654,0.63193,0.18738},{0.99675,0.62093,0.18297},{0.99672,0.60977,0.17842},{0.99644,0.59846,0.17376},{0.99593,0.58703,0.16899},{0.99517,0.57549,0.16412},{0.99419,0.56386,0.15918},{0.99297,0.55214,0.15417},{0.99153,0.54036,0.14910},{0.98987,0.52854,0.14398},{0.98799,0.51667,0.13883},{0.98590,0.50479,0.13367},{0.98360,0.49291,0.12849},{0.98108,0.48104,0.12332},{0.97837,0.46920,0.11817},{0.97545,0.45740,0.11305},{0.97234,0.44565,0.10797},{0.96904,0.43399,0.10294},{0.96555,0.42241,0.09798},{0.96187,0.41093,0.09310},{0.95801,0.39958,0.08831},{0.95398,0.38836,0.08362},{0.94977,0.37729,0.07905},{0.94538,0.36638,0.07461},{0.94084,0.35566,0.07031},{0.93612,0.34513,0.06616},{0.93125,0.33482,0.06218},{0.92623,0.32473,0.05837},{0.92105,0.31489,0.05475},{0.91572,0.30530,0.05134},{0.91024,0.29599,0.04814},{0.90463,0.28696,0.04516},{0.89888,0.27824,0.04243},{0.89298,0.26981,0.03993},{0.88691,0.26152,0.03753},{0.88066,0.25334,0.03521},{0.87422,0.24526,0.03297},{0.86760,0.23730,0.03082},{0.86079,0.22945,0.02875},{0.85380,0.22170,0.02677},{0.84662,0.21407,0.02487},{0.83926,0.20654,0.02305},{0.83172,0.19912,0.02131},{0.82399,0.19182,0.01966},{0.81608,0.18462,0.01809},{0.80799,0.17753,0.01660},{0.79971,0.17055,0.01520},{0.79125,0.16368,0.01387},{0.78260,0.15693,0.01264},{0.77377,0.15028,0.01148},{0.76476,0.14374,0.01041},{0.75556,0.13731,0.00942},{0.74617,0.13098,0.00851},{0.73661,0.12477,0.00769},{0.72686,0.11867,0.00695},{0.71692,0.11268,0.00629},{0.70680,0.10680,0.00571},{0.69650,0.10102,0.00522},{0.68602,0.09536,0.00481},{0.67535,0.08980,0.00449},{0.66449,0.08436,0.00424},{0.65345,0.07902,0.00408},{0.64223,0.07380,0.00401},{0.63082,0.06868,0.00401},{0.61923,0.06367,0.00410},{0.60746,0.05878,0.00427},{0.59550,0.05399,0.00453},{0.58336,0.04931,0.00486},{0.57103,0.04474,0.00529},{0.55852,0.04028,0.00579},{0.54583,0.03593,0.00638},{0.53295,0.03169,0.00705},{0.51989,0.02756,0.00780},{0.50664,0.02354,0.00863},{0.49321,0.01963,0.00955},{0.47960,0.01583,0.01055}}}, + {"default", {{1.0, 0, 1}, {0.9803921568627452, 0, 1}, {0.9607843137254901, 0, 1}, {0.9411764705882353, 0, 1}, {0.9215686274509804, 0, 1}, {0.9019607843137254, 0, 1}, {0.8823529411764706, 0, 1}, {0.8627450980392157, 0, 1}, {0.8431372549019609, 0, 1}, {0.8235294117647058, 0, 1}, {0.803921568627451, 0, 1}, {0.784313725490196, 0, 1}, {0.7647058823529411, 0, 1}, {0.7450980392156863, 0, 1}, {0.7254901960784315, 0, 1}, {0.7058823529411764, 0, 1}, {0.6862745098039216, 0, 1}, {0.6666666666666667, 0, 1}, {0.6470588235294117, 0, 1}, {0.6274509803921569, 0, 1}, {0.607843137254902, 0, 1}, {0.5882352941176472, 0, 1}, {0.5686274509803921, 0, 1}, {0.5490196078431373, 0, 1}, {0.5294117647058822, 0, 1}, {0.5098039215686274, 0, 1}, {0.4901960784313726, 0, 1}, {0.47058823529411775, 0, 1}, {0.4509803921568627, 0, 1}, {0.43137254901960786, 0, 1}, {0.4117647058823528, 0, 1}, {0.392156862745098, 0, 1}, {0.37254901960784315, 0, 1}, {0.3529411764705883, 0, 1}, {0.3333333333333335, 0, 1}, {0.3137254901960784, 0, 1}, {0.2941176470588236, 0, 1}, {0.27450980392156854, 0, 1}, {0.2549019607843137, 0, 1}, {0.23529411764705888, 0, 1}, {0.21568627450980404, 0, 1}, {0.196078431372549, 0, 1}, {0.17647058823529416, 0, 1}, {0.1568627450980391, 0, 1}, {0.13725490196078427, 0, 1}, {0.11764705882352944, 0, 1}, {0.0980392156862746, 0, 1}, {0.07843137254901955, 0, 1}, {0.05882352941176472, 0, 1}, {0.039215686274509665, 0, 1}, {0.019607843137254832, 0, 1}, {0, 0.0, 1}, {0, 0.019607843137254832, 1}, {0, 0.039215686274509665, 1}, {0, 0.0588235294117645, 1}, {0, 0.07843137254901977, 1}, {0, 0.0980392156862746, 1}, {0, 0.11764705882352944, 1}, {0, 0.13725490196078427, 1}, {0, 0.15686274509803955, 1}, {0, 0.17647058823529438, 1}, {0, 0.1960784313725492, 1}, {0, 0.21568627450980404, 1}, {0, 0.23529411764705888, 1}, {0, 0.2549019607843137, 1}, {0, 0.27450980392156854, 1}, {0, 0.2941176470588234, 1}, {0, 0.3137254901960782, 1}, {0, 0.33333333333333304, 1}, {0, 0.35294117647058787, 1}, {0, 0.37254901960784315, 1}, {0, 0.392156862745098, 1}, {0, 0.4117647058823528, 1}, {0, 0.43137254901960764, 1}, {0, 0.4509803921568629, 1}, {0, 0.47058823529411775, 1}, {0, 0.4901960784313726, 1}, {0, 0.5098039215686274, 1}, {0, 0.5294117647058822, 1}, {0, 0.5490196078431371, 1}, {0, 0.5686274509803919, 1}, {0, 0.5882352941176467, 1}, {0, 0.607843137254902, 1}, {0, 0.6274509803921569, 1}, {0, 0.6470588235294117, 1}, {0, 0.6666666666666665, 1}, {0, 0.6862745098039218, 1}, {0, 0.7058823529411766, 1}, {0, 0.7254901960784315, 1}, {0, 0.7450980392156863, 1}, {0, 0.7647058823529411, 1}, {0, 0.784313725490196, 1}, {0, 0.8039215686274508, 1}, {0, 0.8235294117647056, 1}, {0, 0.8431372549019609, 1}, {0, 0.8627450980392157, 1}, {0, 0.8823529411764706, 1}, {0, 0.9019607843137254, 1}, {0, 0.9215686274509807, 1}, {0, 0.9411764705882355, 1}, {0, 0.9607843137254903, 1}, {0, 0.9803921568627452, 1}, {0, 1, 1.0}, {0, 1, 0.9803921568627452}, {0, 1, 0.9607843137254903}, {0, 1, 0.9411764705882355}, {0, 1, 0.9215686274509802}, {0, 1, 0.9019607843137254}, {0, 1, 0.8823529411764706}, {0, 1, 0.8627450980392157}, {0, 1, 0.8431372549019605}, {0, 1, 0.8235294117647056}, {0, 1, 0.8039215686274508}, {0, 1, 0.784313725490196}, {0, 1, 0.7647058823529411}, {0, 1, 0.7450980392156863}, {0, 1, 0.7254901960784315}, {0, 1, 0.7058823529411766}, {0, 1, 0.6862745098039214}, {0, 1, 0.6666666666666665}, {0, 1, 0.6470588235294117}, {0, 1, 0.6274509803921569}, {0, 1, 0.607843137254902}, {0, 1, 0.5882352941176472}, {0, 1, 0.5686274509803924}, {0, 1, 0.5490196078431375}, {0, 1, 0.5294117647058822}, {0, 1, 0.5098039215686274}, {0, 1, 0.4901960784313726}, {0, 1, 0.47058823529411775}, {0, 1, 0.4509803921568629}, {0, 1, 0.4313725490196081}, {0, 1, 0.4117647058823528}, {0, 1, 0.392156862745098}, {0, 1, 0.37254901960784315}, {0, 1, 0.3529411764705883}, {0, 1, 0.3333333333333335}, {0, 1, 0.31372549019607865}, {0, 1, 0.2941176470588238}, {0, 1, 0.274509803921569}, {0, 1, 0.2549019607843137}, {0, 1, 0.23529411764705888}, {0, 1, 0.21568627450980404}, {0, 1, 0.1960784313725492}, {0, 1, 0.17647058823529438}, {0, 1, 0.15686274509803955}, {0, 1, 0.13725490196078471}, {0, 1, 0.11764705882352988}, {0, 1, 0.09803921568627416}, {0, 1, 0.07843137254901933}, {0, 1, 0.0588235294117645}, {0, 1, 0.039215686274509665}, {0, 1, 0.019607843137254832}, {0.0, 1, 0}, {0.019607843137254832, 1, 0}, {0.039215686274509665, 1, 0}, {0.0588235294117645, 1, 0}, {0.07843137254901933, 1, 0}, {0.09803921568627416, 1, 0}, {0.117647058823529, 1, 0}, {0.13725490196078383, 1, 0}, {0.15686274509803866, 1, 0}, {0.1764705882352935, 1, 0}, {0.19607843137254832, 1, 0}, {0.21568627450980404, 1, 0}, {0.23529411764705888, 1, 0}, {0.2549019607843137, 1, 0}, {0.27450980392156854, 1, 0}, {0.2941176470588234, 1, 0}, {0.3137254901960782, 1, 0}, {0.33333333333333304, 1, 0}, {0.35294117647058787, 1, 0}, {0.3725490196078436, 1, 0}, {0.3921568627450984, 1, 0}, {0.41176470588235325, 1, 0}, {0.4313725490196081, 1, 0}, {0.4509803921568629, 1, 0}, {0.47058823529411775, 1, 0}, {0.4901960784313726, 1, 0}, {0.5098039215686274, 1, 0}, {0.5294117647058822, 1, 0}, {0.5490196078431371, 1, 0}, {0.5686274509803919, 1, 0}, {0.5882352941176467, 1, 0}, {0.6078431372549016, 1, 0}, {0.6274509803921564, 1, 0}, {0.6470588235294112, 1, 0}, {0.6666666666666661, 1, 0}, {0.6862745098039218, 1, 0}, {0.7058823529411766, 1, 0}, {0.7254901960784315, 1, 0}, {0.7450980392156863, 1, 0}, {0.7647058823529411, 1, 0}, {0.784313725490196, 1, 0}, {0.8039215686274508, 1, 0}, {0.8235294117647056, 1, 0}, {0.8431372549019613, 1, 0}, {0.8627450980392162, 1, 0}, {0.882352941176471, 1, 0}, {0.9019607843137258, 1, 0}, {0.9215686274509807, 1, 0}, {0.9411764705882355, 1, 0}, {0.9607843137254903, 1, 0}, {0.9803921568627452, 1, 0}, {1, 1.0, 0}, {1, 0.9803921568627452, 0}, {1, 0.9607843137254903, 0}, {1, 0.9411764705882355, 0}, {1, 0.9215686274509807, 0}, {1, 0.9019607843137258, 0}, {1, 0.882352941176471, 0}, {1, 0.8627450980392162, 0}, {1, 0.8431372549019605, 0}, {1, 0.8235294117647056, 0}, {1, 0.8039215686274508, 0}, {1, 0.784313725490196, 0}, {1, 0.7647058823529411, 0}, {1, 0.7450980392156863, 0}, {1, 0.7254901960784315, 0}, {1, 0.7058823529411766, 0}, {1, 0.6862745098039209, 0}, {1, 0.6666666666666661, 0}, {1, 0.6470588235294112, 0}, {1, 0.6274509803921564, 0}, {1, 0.6078431372549016, 0}, {1, 0.5882352941176467, 0}, {1, 0.5686274509803919, 0}, {1, 0.5490196078431371, 0}, {1, 0.5294117647058822, 0}, {1, 0.5098039215686274, 0}, {1, 0.4901960784313726, 0}, {1, 0.47058823529411775, 0}, {1, 0.4509803921568629, 0}, {1, 0.4313725490196081, 0}, {1, 0.41176470588235325, 0}, {1, 0.3921568627450984, 0}, {1, 0.3725490196078427, 0}, {1, 0.35294117647058787, 0}, {1, 0.33333333333333304, 0}, {1, 0.3137254901960782, 0}, {1, 0.2941176470588234, 0}, {1, 0.27450980392156854, 0}, {1, 0.2549019607843137, 0}, {1, 0.23529411764705888, 0}, {1, 0.21568627450980404, 0}, {1, 0.1960784313725492, 0}, {1, 0.17647058823529438, 0}, {1, 0.15686274509803955, 0}, {1, 0.13725490196078471, 0}, {1, 0.11764705882352988, 0}, {1, 0.09803921568627505, 0}, {1, 0.07843137254902022, 0}, {1, 0.0588235294117645, 0}, {1, 0.039215686274509665, 0}, {1, 0.019607843137254832, 0}, {1, 0.0, 0}}} +}; + +static Ogre::ColourValue getColorMap(float intensity, const std::vector>& ctable) { + intensity = std::min(intensity, 1.0f); + intensity = std::max(intensity, 0.0f); + + int idx = int(floor(intensity*255)); + idx = std::min(idx, 255); + idx = std::max(idx, 0); + + // Get color from table + std::vector rgb = ctable.at(idx); + + Ogre::ColourValue color; + color.r = rgb[0]; + color.g = rgb[1]; + color.b = rgb[2]; + + return color; +} + +static std::vector getColorMapNames() { + std::vector types; + types.reserve(colorMap.size()); + + for(auto it : colorMap) { + types.push_back(it.first); + } + + return types; +} + +} // end namespace grid_map_rviz_plugin \ No newline at end of file diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp index 82d202ee8..0706d315e 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp @@ -54,9 +54,10 @@ Q_OBJECT void updateHistoryLength(); void updateHeightMode(); void updateColorMode(); - void updateUseRainbow(); + void updateUseColorMap(); void updateAutocomputeIntensityBounds(); void updateVisualization(); + void updateColorMapList(); void updateGridLines(); // Slot to ensure that the rendering happens in the ui thread. void onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& msg); @@ -79,9 +80,10 @@ Q_OBJECT rviz::EditableEnumProperty* heightTransformerProperty_; rviz::EnumProperty* colorModeProperty_; rviz::EditableEnumProperty* colorTransformerProperty_; + rviz::EditableEnumProperty* colorMapProperty_; rviz::ColorProperty* colorProperty_; - rviz::BoolProperty* useRainbowProperty_; - rviz::BoolProperty* invertRainbowProperty_; + rviz::BoolProperty* useColorMapProperty_; + rviz::BoolProperty* invertColorMapProperty_; rviz::ColorProperty* minColorProperty_; rviz::ColorProperty* maxColorProperty_; rviz::BoolProperty* autocomputeIntensityBoundsProperty_; diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp index 9a314eddf..2921671b2 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp @@ -32,6 +32,7 @@ class GridMapVisual { public: using MaskArray = Eigen::Array; using ColorArray = Eigen::Array; + using MatrixConstRef = Eigen::Ref; GridMapVisual(Ogre::SceneManager* sceneManager, Ogre::SceneNode* parentNode); virtual ~GridMapVisual(); @@ -41,9 +42,9 @@ class GridMapVisual { // Compute the visualization of map_. void computeVisualization(float alpha, bool showGridLines, bool flatTerrain, std::string heightLayer, bool flatColor, bool noColor, - Ogre::ColourValue meshColor, bool mapLayerColor, std::string colorLayer, bool useRainbow, bool invertRainbow, - Ogre::ColourValue minColor, Ogre::ColourValue maxColor, bool autocomputeIntensity, float minIntensity, - float maxIntensity, float gridLineThickness, int gridCellDecimation); + Ogre::ColourValue meshColor, bool mapLayerColor, std::string colorLayer, std::string colorMap, bool useColorMap, + bool invertColorMap, Ogre::ColourValue minColor, Ogre::ColourValue maxColor, bool autocomputeIntensity, + float minIntensity, float maxIntensity, float gridLineThickness, int gridCellDecimation); // Set the coordinate frame pose. void setFramePosition(const Ogre::Vector3& position); @@ -53,7 +54,7 @@ class GridMapVisual { std::vector getLayerNames(); private: - enum class ColoringMethod { FLAT, COLOR_LAYER, INTENSITY_LAYER_MANUAL, INTENSITY_LAYER_RAINBOW, INTENSITY_LAYER_INVERTED_RAINBOW }; + enum class ColoringMethod { FLAT, COLOR_LAYER, INTENSITY_LAYER_MANUAL, INTENSITY_LAYER_COLORMAP, INTENSITY_LAYER_INVERTED_COLORMAP }; Ogre::SceneNode* frameNode_; Ogre::SceneManager* sceneManager_; @@ -82,6 +83,7 @@ class GridMapVisual { * @param heightData Height values of the cells. * @param colorData Values of the layer specified for coloring the mesh. * @param coloringMethod The strategy to color, see ColoringMethod. + * @param colorMap colorMap selected (string). See GridMapColorMaps.hpp * @param flatColor Used only if coloringMethod is FLAT * @param minIntensity Used for the intensity based coloring methods only. * @param maxIntensity Used for the intensity based coloring methods only. @@ -91,9 +93,10 @@ class GridMapVisual { * @param maxColor Used only if coloringMethod is COLOR_LAYER. * @return The color for each cell. */ - ColorArray computeColorValues(Eigen::Ref heightData, Eigen::Ref colorData, - GridMapVisual::ColoringMethod coloringMethod, Ogre::ColourValue flatColor, double minIntensity, - double maxIntensity, bool autocomputeIntensity, Ogre::ColourValue minColor, Ogre::ColourValue maxColor); + ColorArray computeColorValues(MatrixConstRef heightData, MatrixConstRef colorData, + ColoringMethod coloringMethod, std::string colorMap, Ogre::ColourValue flatColor, + double minIntensity, double maxIntensity, bool autocomputeIntensity, Ogre::ColourValue minColor, + Ogre::ColourValue maxColor); /** * Initialized the meshLines_ object. Should be called before adding lines. Sets the drawing style and allocates the buffer. diff --git a/grid_map_rviz_plugin/src/GridMapDisplay.cpp b/grid_map_rviz_plugin/src/GridMapDisplay.cpp index e674cd9cf..50bba9716 100644 --- a/grid_map_rviz_plugin/src/GridMapDisplay.cpp +++ b/grid_map_rviz_plugin/src/GridMapDisplay.cpp @@ -8,6 +8,8 @@ #include "grid_map_rviz_plugin/GridMapVisual.hpp" #include "grid_map_rviz_plugin/GridMapDisplay.hpp" +#include "grid_map_rviz_plugin/GridMapColorMaps.hpp" + // The following replaces #include "grid_map_rviz_plugin/modified/frame_manager.h" @@ -68,19 +70,23 @@ GridMapDisplay::GridMapDisplay() "Color Layer", "elevation", "Select the grid map layer to compute the color.", this, SLOT(updateVisualization())); + colorMapProperty_ = new rviz::EditableEnumProperty( + "ColorMap", "default", "Select the colormap to be used.", this, + SLOT(updateVisualization())); + colorProperty_ = new rviz::ColorProperty("Color", QColor(200, 200, 200), "Color to draw the mesh.", this, SLOT(updateVisualization())); colorProperty_->hide(); - useRainbowProperty_ = new rviz::BoolProperty( - "Use Rainbow", true, - "Whether to use a rainbow of colors or to interpolate between two colors.", this, - SLOT(updateUseRainbow())); + useColorMapProperty_ = new rviz::BoolProperty( + "Use ColorMap", true, + "Whether to use a colormap or to interpolate between two colors.", this, + SLOT(updateUseColorMap())); - invertRainbowProperty_ = new rviz::BoolProperty( - "Invert Rainbow", false, - "Whether to invert the rainbow colors.", this, + invertColorMapProperty_ = new rviz::BoolProperty( + "Invert ColorMap", false, + "Whether to invert the colormap colors.", this, SLOT(updateVisualization())); minColorProperty_ = new rviz::ColorProperty( @@ -124,6 +130,7 @@ void GridMapDisplay::onInitialize() { MFDClass::onInitialize(); // "MFDClass" = typedef of "MessageFilterDisplay" updateHistoryLength(); + updateColorMapList(); } void GridMapDisplay::onEnable() @@ -161,24 +168,24 @@ void GridMapDisplay::updateColorMode() bool none = colorModeProperty_->getOptionInt() == 3; colorProperty_->setHidden(!flatColor); colorTransformerProperty_->setHidden(flatColor || none); - useRainbowProperty_->setHidden(!intensityColor); - invertRainbowProperty_->setHidden(!intensityColor); + useColorMapProperty_->setHidden(!intensityColor); + invertColorMapProperty_->setHidden(!intensityColor); autocomputeIntensityBoundsProperty_->setHidden(!intensityColor); - bool useRainbow = useRainbowProperty_->getBool(); - minColorProperty_->setHidden(!intensityColor || useRainbow); - maxColorProperty_->setHidden(!intensityColor || useRainbow); + bool useColorMap = useColorMapProperty_->getBool(); + minColorProperty_->setHidden(!intensityColor || useColorMap); + maxColorProperty_->setHidden(!intensityColor || useColorMap); bool autocomputeIntensity = autocomputeIntensityBoundsProperty_->getBool(); minIntensityProperty_->setHidden(!intensityColor || autocomputeIntensity); minIntensityProperty_->setHidden(!intensityColor || autocomputeIntensity); } -void GridMapDisplay::updateUseRainbow() +void GridMapDisplay::updateUseColorMap() { updateVisualization(); - bool useRainbow = useRainbowProperty_->getBool(); - minColorProperty_->setHidden(useRainbow); - maxColorProperty_->setHidden(useRainbow); - invertRainbowProperty_->setHidden(!useRainbow); + bool useColorMap = useColorMapProperty_->getBool(); + minColorProperty_->setHidden(useColorMap); + maxColorProperty_->setHidden(useColorMap); + invertColorMapProperty_->setHidden(!useColorMap); } void GridMapDisplay::updateGridLines() @@ -207,8 +214,9 @@ void GridMapDisplay::updateVisualization() bool noColor = colorModeProperty_->getOptionInt() == 3; Ogre::ColourValue meshColor = colorProperty_->getOgreColor(); std::string colorLayer = colorTransformerProperty_->getStdString(); - bool useRainbow = useRainbowProperty_->getBool(); - bool invertRainbow = invertRainbowProperty_->getBool(); + std::string colorMap = colorMapProperty_->getStdString(); + bool useColorMap = useColorMapProperty_->getBool(); + bool invertColorMap = invertColorMapProperty_->getBool(); Ogre::ColourValue minColor = minColorProperty_->getOgreColor(); Ogre::ColourValue maxColor = maxColorProperty_->getOgreColor(); bool autocomputeIntensity = autocomputeIntensityBoundsProperty_->getBool(); @@ -219,7 +227,7 @@ void GridMapDisplay::updateVisualization() for (size_t i = 0; i < visuals_.size(); i++) { visuals_[i]->computeVisualization(alpha, showGridLines, flatTerrain, heightLayer, flatColor, noColor, meshColor, mapLayerColor, - colorLayer, useRainbow, invertRainbow, minColor, maxColor, autocomputeIntensity, minIntensity, + colorLayer, colorMap, useColorMap, invertColorMap, minColor, maxColor, autocomputeIntensity, minIntensity, maxIntensity, gridLineThickness, gridCellDecimation); } } @@ -261,10 +269,11 @@ void GridMapDisplay::onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& ms heightModeProperty_->getOptionInt() == 1, heightTransformerProperty_->getStdString(), colorModeProperty_->getOptionInt() == 2, colorModeProperty_->getOptionInt() == 3, colorProperty_->getOgreColor(), colorModeProperty_->getOptionInt() == 1, - colorTransformerProperty_->getStdString(), useRainbowProperty_->getBool(), - invertRainbowProperty_->getBool(), minColorProperty_->getOgreColor(), - maxColorProperty_->getOgreColor(), autocomputeIntensityBoundsProperty_->getBool(), - minIntensityProperty_->getFloat(), maxIntensityProperty_->getFloat(), + colorTransformerProperty_->getStdString(), colorMapProperty_->getStdString(), + useColorMapProperty_->getBool(), invertColorMapProperty_->getBool(), + minColorProperty_->getOgreColor(), maxColorProperty_->getOgreColor(), + autocomputeIntensityBoundsProperty_->getBool(), minIntensityProperty_->getFloat(), + maxIntensityProperty_->getFloat(), gridLinesThicknessProperty_->getFloat(), gridCellDecimationProperty_->getInt()); std::vector layer_names = visual->getLayerNames(); @@ -278,6 +287,15 @@ void GridMapDisplay::onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& ms visuals_.push_back(visual); } +void GridMapDisplay::updateColorMapList() +{ + updateVisualization(); + for (auto cmap : getColorMapNames()) { + colorMapProperty_->addOptionStd(cmap); + } +} + + } // end namespace grid_map_rviz_plugin #include diff --git a/grid_map_rviz_plugin/src/GridMapVisual.cpp b/grid_map_rviz_plugin/src/GridMapVisual.cpp index 152c9ec17..1238eb5a8 100644 --- a/grid_map_rviz_plugin/src/GridMapVisual.cpp +++ b/grid_map_rviz_plugin/src/GridMapVisual.cpp @@ -22,6 +22,8 @@ #include #include +#include "grid_map_rviz_plugin/GridMapColorMaps.hpp" + namespace grid_map_rviz_plugin { GridMapVisual::GridMapVisual(Ogre::SceneManager* sceneManager, Ogre::SceneNode* parentNode) : manualObject_(0), haveMap_(false) { @@ -50,8 +52,8 @@ void GridMapVisual::setMessage(const grid_map_msgs::GridMap::ConstPtr& msg) { void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool flatTerrain, std::string heightLayer, bool flatColor, bool noColor, Ogre::ColourValue meshColor, bool mapLayerColor, std::string colorLayer, - bool useRainbow, bool invertRainbow, Ogre::ColourValue minColor, Ogre::ColourValue maxColor, - bool autocomputeIntensity, float minIntensity, float maxIntensity, float gridLineThickness, + std::string colorMap, bool useColorMap, bool invertColorMap, Ogre::ColourValue minColor, + Ogre::ColourValue maxColor, bool autocomputeIntensity, float minIntensity, float maxIntensity, float gridLineThickness, int gridCellDecimation) { const auto startTime = std::chrono::high_resolution_clock::now(); if (!haveMap_) { @@ -118,16 +120,16 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f coloringMethod = ColoringMethod::FLAT; } else if(mapLayerColor) { coloringMethod = ColoringMethod::COLOR_LAYER; - } else if (!useRainbow) { + } else if (!useColorMap) { coloringMethod = ColoringMethod::INTENSITY_LAYER_MANUAL; - } else if (!invertRainbow) { - coloringMethod = ColoringMethod::INTENSITY_LAYER_RAINBOW; + } else if (!invertColorMap) { + coloringMethod = ColoringMethod::INTENSITY_LAYER_COLORMAP; } else { - coloringMethod = ColoringMethod::INTENSITY_LAYER_INVERTED_RAINBOW; + coloringMethod = ColoringMethod::INTENSITY_LAYER_INVERTED_COLORMAP; } - const auto colorValues = computeColorValues(heightData, colorData, coloringMethod, meshColor, minIntensity, maxIntensity, - autocomputeIntensity, minColor, maxColor); + const auto colorValues = computeColorValues(heightData, colorData, coloringMethod, colorMap, meshColor, + minIntensity, maxIntensity, autocomputeIntensity, minColor, maxColor); // Initialize loop constants. grid_map::Position topLeft; @@ -292,20 +294,22 @@ void GridMapVisual::initializeAndBeginManualObject(size_t nVertices) { manualObject_->begin(materialName_, Ogre::RenderOperation::OT_TRIANGLE_LIST); } -GridMapVisual::ColorArray GridMapVisual::computeColorValues(Eigen::Ref heightData, - Eigen::Ref colorData, - GridMapVisual::ColoringMethod coloringMethod, Ogre::ColourValue flatColor, - double minIntensity, double maxIntensity, bool autocomputeIntensity, - Ogre::ColourValue minColor, Ogre::ColourValue maxColor) { +GridMapVisual::ColorArray GridMapVisual::computeColorValues(GridMapVisual::MatrixConstRef heightData, + GridMapVisual::MatrixConstRef colorData, + GridMapVisual::ColoringMethod coloringMethod, std::string cmap, + Ogre::ColourValue flatColor, double minIntensity, double maxIntensity, + bool autocomputeIntensity, Ogre::ColourValue minColor, Ogre::ColourValue maxColor) { // Determine max and min intensity. - bool isIntensityColoringMethod = coloringMethod == ColoringMethod::INTENSITY_LAYER_INVERTED_RAINBOW || - coloringMethod == ColoringMethod::INTENSITY_LAYER_RAINBOW || + bool isIntensityColoringMethod = coloringMethod == ColoringMethod::INTENSITY_LAYER_INVERTED_COLORMAP || + coloringMethod == ColoringMethod::INTENSITY_LAYER_COLORMAP || coloringMethod == ColoringMethod::INTENSITY_LAYER_MANUAL; if (autocomputeIntensity && isIntensityColoringMethod) { minIntensity = colorData.minCoeffOfFinites(); maxIntensity = minIntensity + std::max(colorData.maxCoeffOfFinites() - minIntensity, 0.2); // regularize the intensity range. } + const std::vector>& ctable = colorMap.at(cmap); + switch (coloringMethod) { case ColoringMethod::FLAT: return ColorArray::Constant(heightData.rows(), heightData.cols(), flatColor); @@ -320,15 +324,15 @@ GridMapVisual::ColorArray GridMapVisual::computeColorValues(Eigen::Ref Date: Thu, 25 Nov 2021 15:28:50 +0000 Subject: [PATCH 30/83] Merge branch 'github/grid_map/327' into 'master' Import PR 'Add explicit dependency on OpenCV'. GitOrigin-RevId: 3dc963cb0e38b80a8fa22207a0c0f6970793df8c --- grid_map_cv/package.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 2f59b1178..cb139995f 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -15,6 +15,7 @@ grid_map_core cv_bridge filters + libopencv-dev gtest From fb3bcd63e775ea33a62a97a4baf8c2a618cf9ed4 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Fri, 26 Nov 2021 10:21:16 +0000 Subject: [PATCH 31/83] Merge branch 'fix/elevation_mapping_post_processor_for_scaffolding_stairs' into 'master' [grid_map] Tuned parameter for scaffolding stairs Closes #UNKNOWN GitOrigin-RevId: d516f754b19930d7e78c2d246d4154823fea269a --- .../include/grid_map_filters/MedianFillFilter.hpp | 3 +++ grid_map_filters/src/MedianFillFilter.cpp | 11 ++++++++--- grid_map_filters/test/median_fill_filter_test.cpp | 1 + 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp index 8bfee101d..25b41a37a 100644 --- a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp @@ -110,6 +110,9 @@ class MedianFillFilter : public filters::FilterBase { //! Flag indicating whether to also filter finite values. bool filterExistingValues_; + //! Number of erode-dilate iterations to calculate mask. Higher means that bigger holes will still be filled. + int numErodeDilationIterations_; + //! Input layer name. std::string inputLayer_; diff --git a/grid_map_filters/src/MedianFillFilter.cpp b/grid_map_filters/src/MedianFillFilter.cpp index 45fb418a0..097f14bd7 100644 --- a/grid_map_filters/src/MedianFillFilter.cpp +++ b/grid_map_filters/src/MedianFillFilter.cpp @@ -25,7 +25,7 @@ using namespace filters; namespace grid_map { template -MedianFillFilter::MedianFillFilter() : fillHoleRadius_(0.05), filterExistingValues_(false) {} +MedianFillFilter::MedianFillFilter() : fillHoleRadius_(0.05), filterExistingValues_(false), numErodeDilationIterations_(4) {} template MedianFillFilter::~MedianFillFilter() = default; @@ -56,6 +56,11 @@ bool MedianFillFilter::configure() { return false; } + if (!FilterBase::getParam(std::string("num_erode_dilation_iterations"), numErodeDilationIterations_)) { + ROS_ERROR("Median filter did not find parameter `num_erode_dilation_iterations`."); + return false; + } + if (filterExistingValues_) { if (!FilterBase::getParam(std::string("existing_value_radius"), existingValueRadius_)) { ROS_ERROR("Median filter did not find parameter existing_value_radius."); @@ -198,7 +203,7 @@ Eigen::MatrixXf MedianFillFilter::computeAndAddFillMask(const Eigen::MatrixXf cv::Mat isValidCV; cv::eigen2cv(isValid, isValidCV); cv::Mat_ isValidOutlierRemoved{cleanedMask(isValidCV)}; - cv::Mat shouldFillCV{fillHoles(isValidOutlierRemoved, 4)}; + cv::Mat shouldFillCV{fillHoles(isValidOutlierRemoved, numErodeDilationIterations_)}; // Outlier removed mask to eigen. if (debug_) { @@ -255,4 +260,4 @@ void MedianFillFilter::addCvMatAsLayer(T& gridMap, const cv::Mat& cvLayer, co // Explicitly define the specialization for GridMap to have the filter implementation available for testing. template class grid_map::MedianFillFilter; // Export the filter. -PLUGINLIB_EXPORT_CLASS(grid_map::MedianFillFilter, filters::FilterBase) \ No newline at end of file +PLUGINLIB_EXPORT_CLASS(grid_map::MedianFillFilter, filters::FilterBase) diff --git a/grid_map_filters/test/median_fill_filter_test.cpp b/grid_map_filters/test/median_fill_filter_test.cpp index 31c9c4252..6d62b51ee 100644 --- a/grid_map_filters/test/median_fill_filter_test.cpp +++ b/grid_map_filters/test/median_fill_filter_test.cpp @@ -61,6 +61,7 @@ TEST(MedianFillFilter, LoadParametersAndUpdateTest) { // NOLINT params["existing_value_radius"] = 0.02; params["fill_mask_layer"] = "fill_mask"; params["debug"] = false; + params["num_erode_dilation_iterations"] = 4; config["params"] = params; From c88a9e34b8b6ad3f480463324aed896de773c29a Mon Sep 17 00:00:00 2001 From: Philipp Leemann Date: Fri, 26 Nov 2021 17:03:32 +0100 Subject: [PATCH 32/83] Merge remote-tracking branch 'origin/release-21.11' GitOrigin-RevId: 38e0629d2e76dc02f1aefec2302a4edce5b77ca9 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index b7482cea0..37e44529b 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.6 + 1.6.7 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 1964f3b53..4b62626da 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.6 + 1.6.7 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index f7912c6b2..428a8bb28 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.6 + 1.6.7 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index cb139995f..ae0c231f1 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.6 + 1.6.7 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 13a050b52..17cd86ea6 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.6 + 1.6.7 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 83d4256f7..e59efd2eb 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.6 + 1.6.7 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index f236cbf3a..969724d52 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.6 + 1.6.7 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 47b78648f..090e1c7cc 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.6 + 1.6.7 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index d2f02165a..a25131101 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.6 + 1.6.7 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 9840282f0..3ab1dc593 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.6 + 1.6.7 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index cff3aaadd..3df080401 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.6 + 1.6.7 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 38f50717a..88c1cfd3d 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.6 + 1.6.7 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 6ea232873..9f186db58 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.6 + 1.6.7 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index d3867286a..c35bafdd0 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.6 + 1.6.7 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 32978d9d7758defc230f910c9823c5fdb295cb8b Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Tue, 30 Nov 2021 16:26:50 +0000 Subject: [PATCH 33/83] Merge branch 'anymal_research/rsl/fix/grid_map_pcl' into 'master' Rsl/fix/grid map pcl GitOrigin-RevId: a98450ede0d459d12f7b80ef694a1a5717d1abee --- .gitignore | 3 +- grid_map_pcl/CMakeLists.txt | 29 +++- grid_map_pcl/README.md | 28 ++- grid_map_pcl/config/parameters.yaml | 5 +- grid_map_pcl/data/input_cloud.pcd | Bin 0 -> 906864 bytes .../include/grid_map_pcl/GridMapPclLoader.hpp | 6 + .../grid_map_pcl/PclLoaderParameters.hpp | 5 +- grid_map_pcl/include/grid_map_pcl/helpers.hpp | 2 +- .../launch/grid_map_pcl_loader_node.launch | 36 +++- grid_map_pcl/package.xml | 5 + grid_map_pcl/rviz/grid_map_vis.rviz | 162 ++++++++++++++++++ grid_map_pcl/src/GridMapPclLoader.cpp | 13 +- grid_map_pcl/src/PclLoaderParameters.cpp | 54 +++--- grid_map_pcl/src/grid_map_pcl_loader_node.cpp | 3 +- grid_map_pcl/src/helpers.cpp | 26 +-- .../src/pointcloud_publisher_node.cpp | 42 +++++ grid_map_pcl/test/test_data/parameters.yaml | 1 + 17 files changed, 355 insertions(+), 65 deletions(-) create mode 100644 grid_map_pcl/data/input_cloud.pcd create mode 100644 grid_map_pcl/rviz/grid_map_vis.rviz create mode 100644 grid_map_pcl/src/pointcloud_publisher_node.cpp diff --git a/.gitignore b/.gitignore index 7a3633634..618178ac0 100644 --- a/.gitignore +++ b/.gitignore @@ -36,4 +36,5 @@ # OS X .DS_Store -grid_map_pcl/data/ +grid_map_pcl/data/* +!grid_map_pcl/data/input_cloud.pcd diff --git a/grid_map_pcl/CMakeLists.txt b/grid_map_pcl/CMakeLists.txt index a8dc5573d..d82b918e7 100644 --- a/grid_map_pcl/CMakeLists.txt +++ b/grid_map_pcl/CMakeLists.txt @@ -99,7 +99,7 @@ target_link_libraries(${PROJECT_NAME} ) -# Node. +# Nodes. add_executable(grid_map_pcl_loader_node src/grid_map_pcl_loader_node.cpp ) @@ -118,6 +118,24 @@ target_link_libraries(grid_map_pcl_loader_node ${catkin_LIBRARIES} ) +add_executable(pointcloud_publisher_node + src/pointcloud_publisher_node.cpp +) +add_dependencies(pointcloud_publisher_node + ${PROJECT_NAME} +) +target_include_directories(pointcloud_publisher_node PRIVATE + include +) +target_include_directories(pointcloud_publisher_node SYSTEM PUBLIC + ${catkin_INCLUDE_DIRS} + ${EIGEN3_INCLUDE_DIR} +) +target_link_libraries(pointcloud_publisher_node + ${PROJECT_NAME} + ${catkin_LIBRARIES} +) + ############# ## Install ## ############# @@ -125,6 +143,7 @@ install( TARGETS ${PROJECT_NAME} grid_map_pcl_loader_node + pointcloud_publisher_node ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} @@ -162,6 +181,14 @@ install( if(CATKIN_ENABLE_TESTING) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread") + find_package(catkin REQUIRED + COMPONENTS + ${CATKIN_PACKAGE_DEPENDENCIES} + roslaunch + ) + + roslaunch_add_file_check(launch) + ## Add gtest based cpp test target and link libraries catkin_add_gtest(${PROJECT_NAME}-test test/test_grid_map_pcl.cpp diff --git a/grid_map_pcl/README.md b/grid_map_pcl/README.md index 51c30ed55..bddcd450e 100644 --- a/grid_map_pcl/README.md +++ b/grid_map_pcl/README.md @@ -14,6 +14,19 @@ The elevation is computed by slicing the point cloud in the x-y plane into colum **Authors: Edo Jelavic, Dominic Jud
Affiliation: [ETH Zurich, Robotics Systems Lab](https://rsl.ethz.ch/)
** +## Publications +The code for point cloud to grid map conversion has been developed as a part of research on autonomous precision harvesting. If you are using the point cloud to grid map conversion, please add the following citation to your publication: + +Jelavic, E., Jud, D., Egli, P. and Hutter, M., 2021. Towards Autonomous Robotic Precision Harvesting: Mapping, Localization, Planning and Control for a Legged Tree Harvester. + + @article{jelavic2021towards, + title={Towards Autonomous Robotic Precision Harvesting: Mapping, Localization, Planning and Control for a Legged Tree Harvester}, + author={Jelavic, Edo and Jud, Dominic and Egli, Pascal and Hutter, Marco}, + journal={Field Robotics}, + year={2021}, + publisher={Wiley} + } + ## Examples Examples of elevation maps computed from point clouds using this package: @@ -30,15 +43,15 @@ Examples of elevation maps computed from point clouds using this package: ## Usage -The algorithm will open the .pcd file, convert the point cloud to a grid map and save the grid map as a rosbag into the folder specified by the user. +The algorithm will open the `.pcd` file, convert the point cloud to a grid map and save the grid map as a rosbag into the folder specified by the user. -1. Place .pcd files in the package folder or anywhere on the system (e.g. grid_map_pcl/data/example.pcd). -2. Modify the *folder_path* inside the launch file such that the folder file points to the folder containing .pcd files (e.g. /*"path to the grid_map_pcl folder"*/data). -3. Change the *pcd_filename* to the point cloud file that you want to process -4. You can run the algorithm with: *roslaunch grid_map_pcl grid_map_pcl_loader_node.launch* -5. Once the algorithm is done you will see the output in the console, then you can run rviz in a separate terminal (make sure that you have sourced your workspace, **DO NOT CLOSE** the terminal where *grid_map_pcl_loader_node* is running ) and visualize the resulting grid map. Instructions on how to visualize a grid map are in the grid map [README](../README.md). +1. Place your `.pcd` file in the package folder or anywhere on the system (e.g. `/.../grid_map_pcl/data/example.pcd`). +2. Modify the `pcd_filename` inside the launch file such that it points to the `.pcd` file you would like to process (e.g. `/.../grid_map_pcl/data/example.pcd`). Set the `output_grid_map` variable to point to the location where you wish to save the resulting grid map (e.g. `/.../grid_map_pcl/data/example_grid_map.bag`) +3. Change the `config_file_path` variable in the launch file to point to the `.yaml` file with configuration parameters (e.g. `/.../grid_map_pcl/config/parameters.yaml`) +4. You can run the algorithm with: `roslaunch grid_map_pcl grid_map_pcl_loader_node.launch` +5. Once the algorithm is done you will see the output in the console, and it should visualize the point cloud and the grid map in rviz. If that does not happen, then you can run rviz in a separate terminal (make sure that you have sourced your workspace, **DO NOT CLOSE** the terminal where `grid_map_pcl_loader_node` is running ) and visualize the resulting grid map. Instructions on how to visualize a grid map are in the grid map [README](../README.md). -The resulting grid map will be saved in the folder given by *folder_path* variable in the launch file and will be named with a string contained inside the *output_grid_map* variable. For large point clouds (100M-140M points) the algorithm takes about 30-60 min to finish (with 6 threads). For sizes that are in the range of 40M to 60M points, the runtime varies between 5 and 15 min, depending on the number of points. Point cloud with around 10M points or less can be processed in a minute or two. +The resulting grid map will be saved in to the location pointed by `output_grid_map` variable in the launch file. For large point clouds (100M-140M points) the algorithm takes about 30-60 min to finish (with 6 threads). For sizes that are in the range of 40M to 60M points, the runtime varies between 5 and 15 min, depending on the number of points. Point cloud with around 10M points or less can be processed in a minute or two. ## Parameters @@ -50,6 +63,7 @@ The resulting grid map will be saved in the folder given by *folder_path* variab ##### Grid map parameters Resulting grid map parameters. * **pcl_grid_map_extraction/grid_map/min_num_points_per_cell** Minimum number of points in the point cloud that have to fall within any of the grid map cells. Otherwise the cell elevation will be set to NaN. +* **pcl_grid_map_extraction/grid_map/max_num_points_per_cell** Maximum number of points in the point cloud that are allowed to fall within any of the grid map cells. If there is more points, the value will be set to NaN. This number can be used to ignore cells with a lot of points which speeds up the processing (but results with some holes in the map). * **pcl_grid_map_extraction/grid_map/resolution** Resolution of the grid map. Width and lengths are computed automatically. ### Point Cloud Pre-processing Parameters diff --git a/grid_map_pcl/config/parameters.yaml b/grid_map_pcl/config/parameters.yaml index ea4854ab9..4db5d418a 100644 --- a/grid_map_pcl/config/parameters.yaml +++ b/grid_map_pcl/config/parameters.yaml @@ -15,17 +15,18 @@ pcl_grid_map_extraction: max_num_points: 1000000 use_max_height_as_cell_elevation: false outlier_removal: - is_remove_outliers: true + is_remove_outliers: false mean_K: 10 stddev_threshold: 1.0 downsampling: - is_downsample_cloud: true + is_downsample_cloud: false voxel_size: x: 0.02 y: 0.02 z: 0.02 grid_map: min_num_points_per_cell: 4 + max_num_points_per_cell: 100000 resolution: 0.1 diff --git a/grid_map_pcl/data/input_cloud.pcd b/grid_map_pcl/data/input_cloud.pcd new file mode 100644 index 0000000000000000000000000000000000000000..fe7feee5df332c25a990425285c7da61975264de GIT binary patch literal 906864 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%0A%`dN>KI=aGMnv(urI`y<>l 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

cOY{wP4QUPjt@Z5WHd$W;qgG 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�lIb@_z;$^i>3m-h*p} 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

sE=U*{yZ7M$7$*?>Zzn>;gmMQ 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

pu({q(Ecd0L497 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

`XFMjF_JEhSgh%7sp;L# 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 literal 0 HcmV?d00001 diff --git a/grid_map_sdf/include/grid_map_sdf/DistanceDerivatives.hpp b/grid_map_sdf/include/grid_map_sdf/DistanceDerivatives.hpp new file mode 100644 index 000000000..20fe2d166 --- /dev/null +++ b/grid_map_sdf/include/grid_map_sdf/DistanceDerivatives.hpp @@ -0,0 +1,62 @@ +/* + * DistanceDerivatives.h + * + * Created on: Aug 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#pragma once + +#include + +namespace grid_map { +namespace signed_distance_field { + +/** + * Takes the columnwise central difference of a matrix. Uses single sided difference at the boundaries. + * diff = (col(i+1) - col(i-1)) / (2 * resolution) + * + * @param data [in] : data to take the difference of. + * @param centralDifference [out] : matrix to store the result in. + * @param resolution [in] : scaling of the distance between two columns. + */ +inline void columnwiseCentralDifference(const Matrix& data, Matrix& centralDifference, float resolution) { + assert(data.cols() >= 2); // Minimum size to take finite differences. + + const Eigen::Index m{data.cols()}; + const float resInv{1.0F / resolution}; + const float doubleResInv{1.0F / (2.0F * resolution)}; + + // First column + centralDifference.col(0) = resInv * (data.col(1) - data.col(0)); + + // All the middle columns + for (Eigen::Index i = 1; i + 1 < m; ++i) { + centralDifference.col(i) = doubleResInv * (data.col(i + 1) - data.col(i - 1)); + } + + // Last column + centralDifference.col(m - 1) = resInv * (data.col(m - 1) - data.col(m - 2)); +} + +/** + * Takes the finite difference between layers + * result = (data_{k+1} - data{k}) / resolution + */ +inline void layerFiniteDifference(const Matrix& data_k, const Matrix& data_kp1, Matrix& result, float resolution) { + const float resInv{1.0F / resolution}; + result = resInv * (data_kp1 - data_k); +} + +/** + * Takes the central difference between layers + * result = (data_{k+1} - data{k-1}) / (2.0 * resolution) + */ +inline void layerCentralDifference(const Matrix& data_km1, const Matrix& data_kp1, Matrix& result, float resolution) { + const float doubleResInv{1.0F / (2.0F * resolution)}; + result = doubleResInv * (data_kp1 - data_km1); +} + +} // namespace signed_distance_field +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/include/grid_map_sdf/Gridmap3dLookup.hpp b/grid_map_sdf/include/grid_map_sdf/Gridmap3dLookup.hpp new file mode 100644 index 000000000..1ef1f5427 --- /dev/null +++ b/grid_map_sdf/include/grid_map_sdf/Gridmap3dLookup.hpp @@ -0,0 +1,105 @@ +/* + * Gridmap3dLookup.h + * + * Created on: Aug 13, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#pragma once + +#include + +namespace grid_map { +namespace signed_distance_field { + +/** + * Stores 3 dimensional grid information and provides methods to convert between position - 3d Index - linear index. + * + * As with the 2D GridMap, the X-Y position is opposite to the row-col-index: (X,Y) is highest at (0,0) and lowest at (n, m). + * The z-position is increasing with the layer-index. + */ +struct Gridmap3dLookup { + public: + EIGEN_MAKE_ALIGNED_OPERATOR_NEW + /// size_t in 3 dimensions + struct size_t_3d { + size_t x{0}; + size_t y{0}; + size_t z{0}; + + size_t_3d() = default; + size_t_3d(size_t x, size_t y, size_t z) : x(x), y(y), z(z) {} + }; + + //! 3D size of the grid + size_t_3d gridsize_{0, 0, 0}; + + //! Origin position of the grid + Position3 gridOrigin_{0.0, 0.0, 0.0}; + + //! Maximum index per dimension stored as double + Position3 gridMaxIndexAsDouble_{0.0, 0.0, 0.0}; + + //! Grid resolution + double resolution_{1.0}; + + /** Default constructor: creates an empty grid */ + Gridmap3dLookup() = default; + + /** + * Constructor + * @param gridsize : x, y, z size of the grid + * @param gridOrigin : position at x=y=z=0 + * @param resolution : (>0.0) size of 1 voxel + */ + Gridmap3dLookup(const size_t_3d& gridsize, const Position3& gridOrigin, double resolution) + : gridsize_(gridsize), + gridOrigin_(gridOrigin), + gridMaxIndexAsDouble_(static_cast(gridsize_.x - 1), static_cast(gridsize_.y - 1), + static_cast(gridsize_.z - 1)), + resolution_(resolution) { + assert(resolution_ > 0.0); + assert(gridsize_.x > 0); + assert(gridsize_.y > 0); + assert(gridsize_.z > 0); + }; + + /** Returns the 3d index of the grid node closest to the query position */ + size_t_3d nearestNode(const Position3& position) const noexcept { + const double resInv{1.0 / resolution_}; + Position3 subpixelVector{(gridOrigin_.x() - position.x()) * resInv, (gridOrigin_.y() - position.y()) * resInv, + (position.z() - gridOrigin_.z()) * resInv}; + return {getNearestPositiveInteger(subpixelVector.x(), gridMaxIndexAsDouble_.x()), + getNearestPositiveInteger(subpixelVector.y(), gridMaxIndexAsDouble_.y()), + getNearestPositiveInteger(subpixelVector.z(), gridMaxIndexAsDouble_.z())}; + } + + /** Returns the 3d node position from a 3d index */ + Position3 nodePosition(const size_t_3d& index) const noexcept { + assert(index.x < gridsize_.x); + assert(index.y < gridsize_.y); + assert(index.z < gridsize_.z); + return {gridOrigin_.x() - index.x * resolution_, gridOrigin_.y() - index.y * resolution_, gridOrigin_.z() + index.z * resolution_}; + } + + /** Returns the linear node index from a 3d node index */ + size_t linearIndex(const size_t_3d& index) const noexcept { + assert(index.x < gridsize_.x); + assert(index.y < gridsize_.y); + assert(index.z < gridsize_.z); + return (index.z * gridsize_.y + index.y) * gridsize_.x + index.x; + } + + /** Linear size */ + size_t linearSize() const noexcept { return gridsize_.x * gridsize_.y * gridsize_.z; } + + /** rounds subindex value and clamps it to [0, max] */ + static size_t getNearestPositiveInteger(double val, double max) noexcept { + // Comparing bounds as double prevents underflow/overflow of size_t + return static_cast(std::max(0.0, std::min(std::round(val), max))); + } +}; + +} // namespace signed_distance_field +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/include/grid_map_sdf/PixelBorderDistance.hpp b/grid_map_sdf/include/grid_map_sdf/PixelBorderDistance.hpp new file mode 100644 index 000000000..5cd2baebf --- /dev/null +++ b/grid_map_sdf/include/grid_map_sdf/PixelBorderDistance.hpp @@ -0,0 +1,104 @@ +/* + * PixelBorderDistance.h + * + * Created on: Aug 7, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#pragma once + +#include +#include +#include + +namespace grid_map { +namespace signed_distance_field { + +/** + * Returns distance between the center of a pixel and the border of an other pixel. + * Returns zero if the center is inside the other pixel. + * Pixels are assumed to have size 1.0F + * @param i : location of pixel 1 + * @param j : location of pixel 2 + * @return : absolute distance between center of pixel 1 and the border of pixel 2 + */ +inline float pixelBorderDistance(float i, float j) { + return std::max(std::abs(i - j) - 0.5F, 0.0F); +} + +/** + * Returns square pixelBorderDistance, adding offset f. + */ +inline float squarePixelBorderDistance(float i, float j, float f) { + const float d{pixelBorderDistance(i, j)}; + return d * d + f; +} + +namespace internal { + +/** + * Return equidistancepoint between origin and pixel p (with p > 0) with offset fp + */ +inline float intersectionPointRightSideOfOrigin(float p, float fp) { + /* + * There are 5 different solutions + * In decreasing order: + * sol 1 in [p^2, inf] + * sol 2 in [bound, p^2] + * sol 3 in [-bound, bound] + * sol 4 in [-p^2, -bound] + * sol 5 in [-inf, -p^2] + */ + const float pSquared{p * p}; + if (fp > pSquared) { + return (pSquared + p + fp) / (2.0F * p); // sol 1 + } else if (fp < -pSquared) { + return (pSquared - p + fp) / (2.0F * p); // sol 5 + } else { + const float bound{pSquared - 2.0F * p + 1.0F}; // Always positive because (p > 0) + if (fp > bound) { + return 0.5F + std::sqrt(fp); // sol 2 + } else if (fp < -bound) { + return p - 0.5F - std::sqrt(-fp); // sol 4 + } else { + return (pSquared - p + fp) / (2.0F * p - 2.0F); // sol 3 + } + } +} + +/** + * Return equidistancepoint between origin and pixel p with offset fp + */ +inline float intersectionOffsetFromOrigin(float p, float fp) { + if (p > 0.0F) { + return intersectionPointRightSideOfOrigin(p, fp); + } else { + // call with negative p and flip the result + return -intersectionPointRightSideOfOrigin(-p, fp); + } +} + +} // namespace internal + +/** + * Return the point s in pixel space that is equally far from p and q (taking into account offsets fp, and fq) + * It is the solution to the following equation: + * squarePixelBorderDistance(s, q, fq) == squarePixelBorderDistance(s, p, fp) + */ +inline float equidistancePoint(float q, float fq, float p, float fp) { + assert(q == p || + std::abs(q - p) >= 1.0F); // Check that q and p are proper pixel locations: either the same pixel or non-overlapping pixels + assert((q == p) ? fp == fq : true); // Check when q and p are equal, the offsets are also equal + + if (fp == fq) { // quite common case when both pixels are of the same class (occupied / free) + return 0.5F * (p + q); + } else { + float df{fp - fq}; + float dr{p - q}; + return internal::intersectionOffsetFromOrigin(dr, df) + q; + } +} + +} // namespace signed_distance_field +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/include/grid_map_sdf/SignedDistance2d.hpp b/grid_map_sdf/include/grid_map_sdf/SignedDistance2d.hpp new file mode 100644 index 000000000..1646d0bbb --- /dev/null +++ b/grid_map_sdf/include/grid_map_sdf/SignedDistance2d.hpp @@ -0,0 +1,59 @@ +/* + * SignedDistance2d.h + * + * Created on: Jul 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#pragma once + +#include + +#include + +#include "Utils.hpp" + +namespace grid_map { +namespace signed_distance_field { + +/** + * Computes the signed distance field at a specified height for a given elevation map. + * + * @param elevationMap : elevation data. + * @param height : height to generate the signed distance at. + * @param resolution : resolution of the elevation map. (The true distance [m] between cells in world frame) + * @param minHeight : the lowest height contained in elevationMap + * @param maxHeight : the maximum height contained in elevationMap + * @return The signed distance field at the query height. + */ +Matrix signedDistanceAtHeight(const Matrix& elevationMap, float height, float resolution, float minHeight, float maxHeight); + +/** + * Same as above, but returns the sdf in transposed form. + * Also takes temporary variables from outside to prevent memory allocation. + * + * @param elevationMap : elevation data. + * @param sdfTranspose : [output] resulting sdf in transposed form (automatically allocated if of wrong size) + * @param tmp : temporary of size elevationMap (automatically allocated if of wrong size) + * @param tmpTranspose : temporary of size elevationMap transpose (automatically allocated if of wrong size) + * @param height : height to generate the signed distance at. + * @param resolution : resolution of the elevation map. (The true distance [m] between cells in world frame) + * @param minHeight : the lowest height contained in elevationMap + * @param maxHeight : the maximum height contained in elevationMap + */ +void signedDistanceAtHeightTranspose(const Matrix& elevationMap, Matrix& sdfTranspose, Matrix& tmp, Matrix& tmpTranspose, float height, + float resolution, float minHeight, float maxHeight); + +/** + * Gets the 2D signed distance from an occupancy grid. + * Returns +INF if there are no obstacles, and -INF if there are only obstacles + * + * @param occupancyGrid : occupancy grid with true = obstacle, false = free space + * @param resolution : resolution of the grid. + * @return signed distance for each point in the grid to the occupancy border. + */ +Matrix signedDistanceFromOccupancy(const Eigen::Matrix& occupancyGrid, float resolution); + +} // namespace signed_distance_field +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp b/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp index a80ba3eda..cfcd8ef81 100644 --- a/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp +++ b/grid_map_sdf/include/grid_map_sdf/SignedDistanceField.hpp @@ -1,45 +1,141 @@ /* - * SignedDistanceField.hpp + * SignedDistanceField.h * - * Created on: Aug 16, 2017 - * Authors: Takahiro Miki, Peter Fankhauser - * Institute: ETH Zurich, ANYbotics + * Created on: Jul 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich */ #pragma once -#include +#include -#include -#include +#include -#include -#include +#include +#include + +#include "Gridmap3dLookup.hpp" namespace grid_map { -class SignedDistanceField -{ +/** + * This class creates a dense 3D signed distance field grid for a given elevation map. + * The 3D grid uses the same resolution as the 2D map. i.e. all voxels are of size (resolution x resolution x resolution). + * The size of the 3D grid is the same as the map in XY direction. The size in Z direction is specified in the constructor. + * + * During the creation of the class all values and derivatives are pre-computed in one go. This makes repeated lookups very cheap. + * Querying a point outside of the constructed grid will result in linear extrapolation. + * + * The distance value and derivatives (dx,dy,dz) per voxel are stored next to each other in memory to support fast lookup during + * interpolation, where we need all 4 values simultaneously. The entire dense grid is stored as a flat vector, with the indexing outsourced + * to the Gridmap3dLookup class. + */ +class SignedDistanceField { public: - SignedDistanceField(); - virtual ~SignedDistanceField(); + EIGEN_MAKE_ALIGNED_OPERATOR_NEW + using Derivative3 = Eigen::Vector3d; + + /** + * Create a signed distance field and its derivative for an elevation layer in the grid map. + * + * @param gridMap : Input map to create the SDF for. + * @param elevationLayer : Name of the elevation layer. + * @param minHeight : Desired starting height of the 3D SDF grid. + * @param maxHeight : Desired ending height of the 3D SDF grid. (Will be rounded up to match the resolution) + */ + SignedDistanceField(const GridMap& gridMap, const std::string& elevationLayer, double minHeight, double maxHeight); + + /** + * Get the signed distance value at a 3D position. + * @param position : 3D position in the frame of the gridmap. + * @return signed distance to the elevation surface. + */ + double value(const Position3& position) const noexcept; + + /** + * Get the signed distance derivative at a 3D position. + * @param position : 3D position in the frame of the gridmap. + * @return derivative of the signed distance field. + */ + Derivative3 derivative(const Position3& position) const noexcept; + + /** + * Get both the signed distance value and derivative at a 3D position. + * @param position : 3D position in the frame of the gridmap. + * @return {value, derivative} of the signed distance field. + */ + std::pair valueAndDerivative(const Position3& position) const noexcept; + + size_t size() const noexcept; - void calculateSignedDistanceField(const GridMap& gridMap, const std::string& layer, const double heightClearance); - double getDistanceAt(const Position3& position) const; - Vector3 getDistanceGradientAt(const Position3& position) const; - double getInterpolatedDistanceAt(const Position3& position) const; - void convertToPointCloud(pcl::PointCloud& points) const; + const std::string& getFrameId() const noexcept; + + Time getTime() const noexcept; + + /** + * Calls a function on each point in the signed distance field. The points are processed in the order they are stored in memory. + * @param func : function taking the node position, signed distance value, and signed distance derivative. + * @param decimation : specifies how many points are returned. 1: all points, 2: every second point, etc. + */ + void filterPoints(std::function func, size_t decimation = 1) const; private: - Matrix getPlanarSignedDistanceField(Eigen::Matrix& data) const; - - Size size_; - Position position_; - std::vector data_; - float maxDistance_; - float zIndexStartHeight_; - double resolution_; - const float lowestHeight_; + /** + * Implementation of the signed distance field computation in this class. + * @param elevation + */ + void computeSignedDistance(const Matrix& elevation); + + /** + * Simultaneously compute the signed distance and derivative in x direction at a given height + * @param elevation [in] : elevation data + * @param currentLayer [out] : signed distance values + * @param dxTranspose [out] : derivative in x direction (the matrix is transposed) + * @param sdfTranspose [tmp] : temporary variable to reuse between calls (allocated on first use) + * @param tmp [tmp] : temporary variable (allocated on first use) + * @param tmpTranspose [tmp] : temporary variable (allocated on first use) + * @param height [in] : height the signed distance is created for. + * @param resolution [in] : resolution of the map. + * @param minHeight [in] : smallest height value in the elevation data. + * @param maxHeight [in] : largest height value in the elevation data. + */ + void computeLayerSdfandDeltaX(const Matrix& elevation, Matrix& currentLayer, Matrix& dxTranspose, Matrix& sdfTranspose, Matrix& tmp, + Matrix& tmpTranspose, float height, float resolution, float minHeight, float maxHeight) const; + + /** + * Add the computed signed distance values and derivatives at a particular height to the grid. + * Adds the layer to the back of data_ + * @param signedDistance : signed distance values. + * @param dxTranspose : x components of the derivative (matrix is transposed). + * @param dy : y components of the derivative. + * @param dz : z components of the derivative. + */ + void emplacebackLayerData(const Matrix& signedDistance, const Matrix& dxTranspose, const Matrix& dy, const Matrix& dz); + + //! Data structure to store together {signed distance value, derivative}. + using node_data_t = std::array; + + /** Helper function to extract the sdf value */ + static double distance(const node_data_t& nodeData) noexcept { return nodeData[0]; } + + /** Helper function to extract the sdf value as float */ + static float distanceFloat(const node_data_t& nodeData) noexcept { return nodeData[0]; } + + /** Helper function to extract the sdf derivative */ + static Derivative3 derivative(const node_data_t& nodeData) noexcept { return {nodeData[1], nodeData[2], nodeData[3]}; } + + //! Object encoding the 3D grid. + signed_distance_field::Gridmap3dLookup gridmap3DLookup_; + + //! Object encoding the signed distance value and derivative in the grid. + std::vector data_; + + //! Frame id of the grid map. + std::string frameId_; + + //! Timestamp of the grid map (nanoseconds). + Time timestamp_; }; -} /* namespace */ +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/include/grid_map_sdf/Utils.hpp b/grid_map_sdf/include/grid_map_sdf/Utils.hpp new file mode 100644 index 000000000..32d03c452 --- /dev/null +++ b/grid_map_sdf/include/grid_map_sdf/Utils.hpp @@ -0,0 +1,21 @@ +/* + * Utils.h + * + * Created on: Jul 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#pragma once + +namespace grid_map { +namespace signed_distance_field { + +// Check existence of inf +static_assert(std::numeric_limits::has_infinity, "float does not support infinity"); + +//! Distance value that is considered infinite. +constexpr float INF = std::numeric_limits::infinity(); + +} // namespace signed_distance_field +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/COPYING b/grid_map_sdf/include/grid_map_sdf/distance_transform/COPYING deleted file mode 100755 index d511905c1..000000000 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/COPYING +++ /dev/null @@ -1,339 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Lesser General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License along - with this program; if not, write to the Free Software Foundation, Inc., - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Lesser General -Public License instead of this License. diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/dt.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/dt.h deleted file mode 100755 index 7a00eab49..000000000 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/dt.h +++ /dev/null @@ -1,117 +0,0 @@ -/* -Copyright (C) 2006 Pedro Felzenszwalb - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* distance transform */ - -#pragma once - -#include - -#include "image.h" -#include "imconv.h" - -namespace distance_transform -{ - const double INF = 1E20; - - /* dt of 1d function using squared distance */ - static float *dt(float *f, int n) { - float *d = new float[n]; - int *v = new int[n]; - float *z = new float[n+1]; - int k = 0; - v[0] = 0; - z[0] = -INF; - z[1] = +INF; - for (int q = 1; q <= n-1; q++) { - float s = ((f[q]+square(q))-(f[v[k]]+square(v[k])))/(2*q-2*v[k]); - while (s <= z[k]) { - k--; - s = ((f[q]+square(q))-(f[v[k]]+square(v[k])))/(2*q-2*v[k]); - } - k++; - v[k] = q; - z[k] = s; - z[k+1] = +INF; - } - - k = 0; - for (int q = 0; q <= n-1; q++) { - while (z[k+1] < q) - k++; - d[q] = square(q-v[k]) + f[v[k]]; - } - - delete [] v; - delete [] z; - return d; - } - - /* dt of 2d function using squared distance */ - static void dt(image *im) { - int width = im->width(); - int height = im->height(); - float *f = new float[std::max(width,height)]; - - // transform along columns - for (int x = 0; x < width; x++) { - for (int y = 0; y < height; y++) { - f[y] = imRef(im, x, y); - } - float *d = dt(f, height); - for (int y = 0; y < height; y++) { - imRef(im, x, y) = d[y]; - } - delete [] d; - } - - // transform along rows - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - f[x] = imRef(im, x, y); - } - float *d = dt(f, width); - for (int x = 0; x < width; x++) { - imRef(im, x, y) = d[x]; - } - delete [] d; - } - - delete [] f; - } - - /* dt of binary image using squared distance */ - static image *dt(image *im, uchar on = 1) { - int width = im->width(); - int height = im->height(); - - image *out = new image(width, height, false); - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - if (imRef(im, x, y) == on) - imRef(out, x, y) = 0; - else - imRef(out, x, y) = INF; - } - } - - dt(out); - return out; - } - -} // namespace diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/image.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/image.h deleted file mode 100755 index 47cada090..000000000 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/image.h +++ /dev/null @@ -1,101 +0,0 @@ -/* -Copyright (C) 2006 Pedro Felzenszwalb - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* a simple image class */ - -#pragma once - -#include - -namespace distance_transform -{ - - template - class image { - public: - /* create an image */ - image(const int width, const int height, const bool init = true); - - /* delete an image */ - ~image(); - - /* init an image */ - void init(const T &val); - - /* copy an image */ - image *copy() const; - - /* get the width of an image. */ - int width() const { return w; } - - /* get the height of an image. */ - int height() const { return h; } - - /* image data. */ - T *data; - - /* row pointers. */ - T **access; - - private: - int w, h; - }; - - /* use imRef to access image data. */ -#define imRef(im, x, y) (im->access[y][x]) - - /* use imPtr to get pointer to image data. */ -#define imPtr(im, x, y) &(im->access[y][x]) - - template - image::image(const int width, const int height, const bool init) { - w = width; - h = height; - data = new T[w * h]; // allocate space for image data - access = new T*[h]; // allocate space for row pointers - - // initialize row pointers - for (int i = 0; i < h; i++) - access[i] = data + (i * w); - - if (init) - memset(data, 0, w * h * sizeof(T)); - } - - template - image::~image() { - delete [] data; - delete [] access; - } - - template - void image::init(const T &val) { - T *ptr = imPtr(this, 0, 0); - T *end = imPtr(this, w-1, h-1); - while (ptr <= end) - *ptr++ = val; - } - - template - image *image::copy() const { - image *im = new image(w, h, false); - memcpy(im->data, data, w * h * sizeof(T)); - return im; - } - -} // namespace diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h deleted file mode 100755 index a5ffdcd1c..000000000 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h +++ /dev/null @@ -1,179 +0,0 @@ -/* -Copyright (C) 2006 Pedro Felzenszwalb - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* image conversion */ - -#pragma once - -#include - -#include "image.h" -#include "imutil.h" -#include "misc.h" - -namespace distance_transform -{ - const double RED_WEIGHT = 0.299; - const double GREEN_WEIGHT = 0.584; - const double BLUE_WEIGHT = 0.114; - - static inline image *imageRGBtoGRAY(image *input) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - imRef(output, x, y) = (uchar) - (imRef(input, x, y).r * RED_WEIGHT + - imRef(input, x, y).g * GREEN_WEIGHT + - imRef(input, x, y).b * BLUE_WEIGHT); - } - } - return output; - } - - static inline image *imageGRAYtoRGB(image *input) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - imRef(output, x, y).r = imRef(input, x, y); - imRef(output, x, y).g = imRef(input, x, y); - imRef(output, x, y).b = imRef(input, x, y); - } - } - return output; - } - - static inline image *imageUCHARtoFLOAT(image *input) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - imRef(output, x, y) = imRef(input, x, y); - } - } - return output; - } - - static inline image *imageINTtoFLOAT(image *input) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - imRef(output, x, y) = imRef(input, x, y); - } - } - return output; - } - - static image *imageFLOATtoUCHAR(image *input, - float min, float max) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - if (max == min) - return output; - - float scale = UCHAR_MAX / (max - min); - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - uchar val = (uchar)((imRef(input, x, y) - min) * scale); - imRef(output, x, y) = bound(val, (uchar)0, (uchar)UCHAR_MAX); - } - } - return output; - } - - static inline image *imageFLOATtoUCHAR(image *input) { - float min, max; - min_max(input, &min, &max); - return imageFLOATtoUCHAR(input, min, max); - } - - static inline image *imageUCHARtoLONG(image *input) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - imRef(output, x, y) = imRef(input, x, y); - } - } - return output; - } - - static image *imageLONGtoUCHAR(image *input, long min, long max) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - if (max == min) - return output; - - float scale = UCHAR_MAX / (float)(max - min); - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - uchar val = (uchar)((imRef(input, x, y) - min) * scale); - imRef(output, x, y) = bound(val, (uchar)0, (uchar)UCHAR_MAX); - } - } - return output; - } - - static inline image *imageLONGtoUCHAR(image *input) { - long min, max; - min_max(input, &min, &max); - return imageLONGtoUCHAR(input, min, max); - } - - static image *imageSHORTtoUCHAR(image *input, - short min, short max) { - int width = input->width(); - int height = input->height(); - image *output = new image(width, height, false); - - if (max == min) - return output; - - float scale = UCHAR_MAX / (float)(max - min); - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - uchar val = (uchar)((imRef(input, x, y) - min) * scale); - imRef(output, x, y) = bound(val, (uchar)0, (uchar)UCHAR_MAX); - } - } - return output; - } - - static inline image *imageSHORTtoUCHAR(image *input) { - short min, max; - min_max(input, &min, &max); - return imageSHORTtoUCHAR(input, min, max); - } - -} // namespace diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/imutil.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/imutil.h deleted file mode 100755 index ad09d1f8e..000000000 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/imutil.h +++ /dev/null @@ -1,67 +0,0 @@ -/* -Copyright (C) 2006 Pedro Felzenszwalb - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* some image utilities */ - -#pragma once - -#include "image.h" -#include "misc.h" - -namespace distance_transform -{ - - /* compute minimum and maximum value in an image */ - template - void min_max(image *im, T *ret_min, T *ret_max) { - int width = im->width(); - int height = im->height(); - - T min = imRef(im, 0, 0); - T max = imRef(im, 0, 0); - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - T val = imRef(im, x, y); - if (min > val) - min = val; - if (max < val) - max = val; - } - } - - *ret_min = min; - *ret_max = max; - } - - /* threshold image */ - template - image *threshold(image *src, int t) { - int width = src->width(); - int height = src->height(); - image *dst = new image(width, height); - - for (int y = 0; y < height; y++) { - for (int x = 0; x < width; x++) { - imRef(dst, x, y) = (imRef(src, x, y) >= t); - } - } - - return dst; - } - -} // namespace diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h deleted file mode 100755 index 01fd15744..000000000 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h +++ /dev/null @@ -1,62 +0,0 @@ -/* -Copyright (C) 2006 Pedro Felzenszwalb - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* random stuff */ - -#pragma once - -#include - -namespace distance_transform -{ - typedef unsigned char uchar; - - typedef struct { uchar r, g, b; } rgb; - - inline bool operator==(const rgb &a, const rgb &b) { - return ((a.r == b.r) && (a.g == b.g) && (a.b == b.b)); - } - - template - inline T abs(const T &x) { return (x > 0 ? x : -x); } - - template - inline int sign(const T &x) { return (x >= 0 ? 1 : -1); } - - template - inline T square(const T &x) { return x*x; } - - template - inline T bound(const T &x, const T &min, const T &max) { - return (x < min ? min : (x > max ? max : x)); - } - - template - inline bool check_bound(const T &x, const T&min, const T &max) { - return ((x < min) || (x > max)); - } - - inline int vlib_round(float x) { return (int)(x + 0.5F); } - - inline int vlib_round(double x) { return (int)(x + 0.5); } - - inline double gaussian(double val, double sigma) { - return exp(-square(val/sigma)/2)/(sqrt(2*M_PI)*sigma); - } - -} // namespace diff --git a/grid_map_sdf/include/grid_map_sdf/distance_transform/pnmfile.h b/grid_map_sdf/include/grid_map_sdf/distance_transform/pnmfile.h deleted file mode 100755 index 282843284..000000000 --- a/grid_map_sdf/include/grid_map_sdf/distance_transform/pnmfile.h +++ /dev/null @@ -1,214 +0,0 @@ -/* -Copyright (C) 2006 Pedro Felzenszwalb - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2 of the License, or -(at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -/* basic image I/O */ - -#pragma once - -#include -#include -#include -#include - -#include "image.h" -#include "misc.h" - -namespace distance_transform -{ - - const short BUF_SIZE = 256; - - class pnm_error { }; - - static void read_packed(unsigned char *data, int size, std::ifstream &f) { - unsigned char c = 0; - - int bitshift = -1; - for (int pos = 0; pos < size; pos++) { - if (bitshift == -1) { - c = f.get(); - bitshift = 7; - } - data[pos] = (c >> bitshift) & 1; - bitshift--; - } - } - - static void write_packed(unsigned char *data, int size, std::ofstream &f) { - unsigned char c = 0; - - int bitshift = 7; - for (int pos = 0; pos < size; pos++) { - c = c | (data[pos] << bitshift); - bitshift--; - if ((bitshift == -1) || (pos == size-1)) { - f.put(c); - bitshift = 7; - c = 0; - } - } - } - - /* read PNM field, skipping comments */ - static void pnm_read(std::ifstream &file, char *buf) { - char doc[BUF_SIZE]; - char c; - - file >> c; - while (c == '#') { - file.getline(doc, BUF_SIZE); - file >> c; - } - file.putback(c); - - file.width(BUF_SIZE); - file >> buf; - file.ignore(); - } - - static image *loadPBM(const char *name) { - char buf[BUF_SIZE]; - - /* read header */ - std::ifstream file(name, std::ios::in | std::ios::binary); - pnm_read(file, buf); - if (strncmp(buf, "P4", 2)) - throw pnm_error(); - - pnm_read(file, buf); - int width = atoi(buf); - pnm_read(file, buf); - int height = atoi(buf); - - /* read data */ - image *im = new image(width, height); - for (int i = 0; i < height; i++) - read_packed(imPtr(im, 0, i), width, file); - - return im; - } - - static void savePBM(image *im, const char *name) { - int width = im->width(); - int height = im->height(); - std::ofstream file(name, std::ios::out | std::ios::binary); - - file << "P4\n" << width << " " << height << "\n"; - for (int i = 0; i < height; i++) - write_packed(imPtr(im, 0, i), width, file); - } - - static image *loadPGM(const char *name) { - char buf[BUF_SIZE]; - - /* read header */ - std::ifstream file(name, std::ios::in | std::ios::binary); - pnm_read(file, buf); - if (strncmp(buf, "P5", 2)) - throw pnm_error(); - - pnm_read(file, buf); - int width = atoi(buf); - pnm_read(file, buf); - int height = atoi(buf); - - pnm_read(file, buf); - if (atoi(buf) > UCHAR_MAX) - throw pnm_error(); - - /* read data */ - image *im = new image(width, height); - file.read((char *)imPtr(im, 0, 0), width * height * sizeof(uchar)); - - return im; - } - - static void savePGM(image *im, const char *name) { - int width = im->width(); - int height = im->height(); - std::ofstream file(name, std::ios::out | std::ios::binary); - - file << "P5\n" << width << " " << height << "\n" << UCHAR_MAX << "\n"; - file.write((char *)imPtr(im, 0, 0), width * height * sizeof(uchar)); - } - - static image *loadPPM(const char *name) { - char buf[BUF_SIZE], doc[BUF_SIZE]; - - /* read header */ - std::ifstream file(name, std::ios::in | std::ios::binary); - pnm_read(file, buf); - if (strncmp(buf, "P6", 2)) - throw pnm_error(); - - pnm_read(file, buf); - int width = atoi(buf); - pnm_read(file, buf); - int height = atoi(buf); - - pnm_read(file, buf); - if (atoi(buf) > UCHAR_MAX) - throw pnm_error(); - - /* read data */ - image *im = new image(width, height); - file.read((char *)imPtr(im, 0, 0), width * height * sizeof(rgb)); - - return im; - } - - static void savePPM(image *im, const char *name) { - int width = im->width(); - int height = im->height(); - std::ofstream file(name, std::ios::out | std::ios::binary); - - file << "P6\n" << width << " " << height << "\n" << UCHAR_MAX << "\n"; - file.write((char *)imPtr(im, 0, 0), width * height * sizeof(rgb)); - } - - template - void load_image(image **im, const char *name) { - char buf[BUF_SIZE]; - - /* read header */ - std::ifstream file(name, std::ios::in | std::ios::binary); - pnm_read(file, buf); - if (strncmp(buf, "VLIB", 9)) - throw pnm_error(); - - pnm_read(file, buf); - int width = atoi(buf); - pnm_read(file, buf); - int height = atoi(buf); - - /* read data */ - *im = new image(width, height); - file.read((char *)imPtr((*im), 0, 0), width * height * sizeof(T)); - } - - template - void save_image(image *im, const char *name) { - int width = im->width(); - int height = im->height(); - std::ofstream file(name, std::ios::out | std::ios::binary); - - file << "VLIB\n" << width << " " << height << "\n"; - file.write((char *)imPtr(im, 0, 0), width * height * sizeof(T)); - } - -} // namespace diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index fbd0706f1..7e87ad8ee 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -13,7 +13,6 @@ catkin grid_map_core - pcl_ros gtest diff --git a/grid_map_sdf/src/SignedDistance2d.cpp b/grid_map_sdf/src/SignedDistance2d.cpp new file mode 100644 index 000000000..c3ee519f5 --- /dev/null +++ b/grid_map_sdf/src/SignedDistance2d.cpp @@ -0,0 +1,290 @@ +/* +* SignedDistance2d.cpp +* +* Created on: Jul 10, 2020 +* Author: Ruben Grandia +* Institute: ETH Zurich +*/ + +#include "grid_map_sdf/SignedDistance2d.hpp" + +#include "grid_map_sdf/PixelBorderDistance.hpp" + +namespace grid_map { +namespace signed_distance_field { + +namespace internal { +struct DistanceLowerBound { + float v; // origin of bounding function + float f; // functional offset at the origin + float z_lhs; // lhs of interval where this bound holds + float z_rhs; // rhs of interval where this lower bound holds +}; + +/** +* 1D Euclidean Distance Transform based on: http://cs.brown.edu/people/pfelzens/dt/ +* Adapted to work on Eigen objects directly +* Optimized computation of s. +* Some optimization to not keep track of bounds that lie fully outside the grid. +*/ +std::vector::iterator fillLowerBounds(const Eigen::Ref& squareDistance1d, + std::vector& lowerBounds, Eigen::Index start) { + const auto n = squareDistance1d.size(); + const auto nFloat = static_cast(n); + const auto startFloat = static_cast(start); + + // Initialize + auto rhsBoundIt = lowerBounds.begin(); + *rhsBoundIt = DistanceLowerBound{startFloat, squareDistance1d[start], -INF, INF}; + auto firstBoundIt = lowerBounds.begin(); + + // Compute bounds to the right of minimum + float qFloat = rhsBoundIt->v + 1.0F; + for (Eigen::Index q = start + 1; q < n; ++q) { + // Storing this by value gives better performance (removed indirection?) + const float fq = squareDistance1d[q]; + + float s = equidistancePoint(qFloat, fq, rhsBoundIt->v, rhsBoundIt->f); + if (s < nFloat) { // Can ignore the lower bound derived from this point if it is only active outsize of [start, n] + // Search backwards in bounds until s is within [z_lhs, z_rhs] + while (s < rhsBoundIt->z_lhs) { + --rhsBoundIt; + s = equidistancePoint(qFloat, fq, rhsBoundIt->v, rhsBoundIt->f); + } + if (s > startFloat) { // Intersection is within [start, n]. Adjust current lowerbound and insert the new one after + rhsBoundIt->z_rhs = s; // Update the bound that comes before + ++rhsBoundIt; // insert new bound after. + *rhsBoundIt = DistanceLowerBound{qFloat, fq, s, INF}; // Valid from s till infinity + } else { // Intersection is outside [0, n]. This means that the new bound dominates all previous bounds + *rhsBoundIt = DistanceLowerBound{qFloat, fq, -INF, INF}; + firstBoundIt = rhsBoundIt; // No need to keep other bounds, so update the first bound iterator to this one. + } + } + + // Increment to follow loop counter as float + qFloat += 1.0F; + } + + return firstBoundIt; +} + +void extractSquareDistances(Eigen::Ref squareDistance1d, std::vector::const_iterator lowerBoundIt, + Eigen::Index start) { + const auto n = squareDistance1d.size(); + + // Store active bound by value to remove indirection + auto lastz = lowerBoundIt->z_rhs; + + auto qFloat = static_cast(start); + for (Eigen::Index q = start; q < n; ++q) { + if (squareDistance1d[q] > 0.0F) { // Observe that if squareDistance1d[q] == 0.0, this is already the minimum and it will stay 0.0 + // Find the new active lower bound if q no longer belongs to current interval + if (qFloat > lastz) { + do { + ++lowerBoundIt; + } while (lowerBoundIt->z_rhs < qFloat); + lastz = lowerBoundIt->z_rhs; + } + + squareDistance1d[q] = squarePixelBorderDistance(qFloat, lowerBoundIt->v, lowerBoundIt->f); + } + + qFloat += 1.0F; + } +} + +/** +* Same as extractSquareDistances, but takes the sqrt as a final step. +* Because several cells will have a value of 0.0 (obstacle / free space label), we can skip the sqrt computation for those. +*/ +void extractDistances(Eigen::Ref squareDistance1d, + std::vector::const_iterator lowerBoundIt, Eigen::Index start) { + const auto n = squareDistance1d.size(); + + // Store active bound by value to remove indirection + auto lastz = lowerBoundIt->z_rhs; + + auto qFloat = static_cast(start); + for (Eigen::Index q = start; q < n; ++q) { + if (squareDistance1d[q] > 0.0F) { // Observe that if squareDistance1d[q] == 0.0, this is already the minimum and it will stay 0.0 + // Find the new active lower bound if q no longer belongs to current interval + if (qFloat > lastz) { + do { + ++lowerBoundIt; + } while (lowerBoundIt->z_rhs < qFloat); + lastz = lowerBoundIt->z_rhs; + } + + squareDistance1d[q] = std::sqrt(squarePixelBorderDistance(qFloat, lowerBoundIt->v, lowerBoundIt->f)); + } + + qFloat += 1.0F; + } +} + +/** +* Find the location of the last zero value from the front +*/ +Eigen::Index lastZeroFromFront(const Eigen::Ref& squareDistance1d) { + const auto n = squareDistance1d.size(); + + for (Eigen::Index q = 0; q < n; ++q) { + if (squareDistance1d[q] > 0.0F) { + if (q > 0) { + return q - 1; + } else { + return 0; + } + } + } + return n; +} + +inline void squaredDistanceTransform_1d_inplace(Eigen::Ref squareDistance1d, + std::vector& lowerBounds) { + auto start = lastZeroFromFront(squareDistance1d); + + // Only need to process line if there are nonzero elements. Also the first zeros stay untouched. + if (start < squareDistance1d.size()) { + auto startIt = fillLowerBounds(squareDistance1d, lowerBounds, start); + extractSquareDistances(squareDistance1d, startIt, start); + } +} + +/** +* Same as above, but takes sqrt as final step (within the same loop) +* @param squareDistance1d : input as squared distance, output is the distance after sqrt. +* @param lowerBounds : work vector +*/ +inline void distanceTransform_1d_inplace(Eigen::Ref squareDistance1d, std::vector& lowerBounds) { + auto start = lastZeroFromFront(squareDistance1d); + + // Only need to process line if there are nonzero elements. Also the first zeros stay untouched. + if (start < squareDistance1d.size()) { + auto startIt = fillLowerBounds(squareDistance1d, lowerBounds, start); + extractDistances(squareDistance1d, startIt, start); + } +} + +void computePixelDistance2dTranspose(Matrix& input, Matrix& distanceTranspose) { + const auto n = input.rows(); + const auto m = input.cols(); + + // Allocate a buffer big enough for processing both rowise and columnwise + std::vector lowerBounds(std::max(n, m)); + + // Process columns + for (Eigen::Index i = 0; i < m; ++i) { + squaredDistanceTransform_1d_inplace(input.col(i), lowerBounds); + } + + // Process rows (= columns after transpose). + distanceTranspose = input.transpose(); + for (Eigen::Index i = 0; i < n; ++i) { + // Fuses square distance algorithm and taking sqrt. + distanceTransform_1d_inplace(distanceTranspose.col(i), lowerBounds); + } +} + +// Initialize with square distance in height direction in pixel units if above the surface +void initializeObstacleDistance(const Matrix& elevationMap, Matrix& result, float height, float resolution) { + /* Vectorized implementation of: + * if (height > elevation) { + * const auto diff = (height - elevation) / resolution; + * return diff * diff; + * } else { + * return 0.0F; + * } + */ + result = ((1.0F / resolution) * (height - elevationMap.array()).cwiseMax(0.0F)).square(); +} + +// Initialize with square distance in height direction in pixel units if below the surface +void initializeObstacleFreeDistance(const Matrix& elevationMap, Matrix& result, float height, float resolution) { + /* Vectorized implementation of: + * if (height < elevation) { + * const auto diff = (height - elevation) / resolution; + * return diff * diff; + * } else { + * return 0.0F; + * } + */ + result = ((1.0F / resolution) * (height - elevationMap.array()).cwiseMin(0.0F)).square(); +} + +void pixelDistanceToFreeSpaceTranspose(const Matrix& elevationMap, Matrix& sdfObstacleFree, Matrix& tmp, float height, float resolution) { + internal::initializeObstacleFreeDistance(elevationMap, tmp, height, resolution); + internal::computePixelDistance2dTranspose(tmp, sdfObstacleFree); +} + +void pixelDistanceToObstacleTranspose(const Matrix& elevationMap, Matrix& sdfObstacleTranspose, Matrix& tmp, float height, + float resolution) { + internal::initializeObstacleDistance(elevationMap, tmp, height, resolution); + internal::computePixelDistance2dTranspose(tmp, sdfObstacleTranspose); +} + +Matrix signedDistanceFromOccupancyTranspose(const Eigen::Matrix& occupancyGrid, float resolution) { + // Compute pixel distance to obstacles + Matrix sdfObstacle; + Matrix init = occupancyGrid.unaryExpr([=](bool val) { return (val) ? 0.0F : INF; }); + internal::computePixelDistance2dTranspose(init, sdfObstacle); + + // Compute pixel distance to obstacle free space + Matrix sdfObstacleFree; + init = occupancyGrid.unaryExpr([=](bool val) { return (val) ? INF : 0.0F; }); + internal::computePixelDistance2dTranspose(init, sdfObstacleFree); + + return resolution * (sdfObstacle - sdfObstacleFree); +} + +} // namespace internal + +void signedDistanceAtHeightTranspose(const Matrix& elevationMap, Matrix& sdfTranspose, Matrix& tmp, Matrix& tmpTranspose, float height, + float resolution, float minHeight, float maxHeight) { + const bool allPixelsAreObstacles = height < minHeight; + const bool allPixelsAreFreeSpace = height > maxHeight; + + if (allPixelsAreObstacles) { + internal::pixelDistanceToFreeSpaceTranspose(elevationMap, sdfTranspose, tmp, height, resolution); + + sdfTranspose *= -resolution; + } else if (allPixelsAreFreeSpace) { + internal::pixelDistanceToObstacleTranspose(elevationMap, sdfTranspose, tmp, height, resolution); + + sdfTranspose *= resolution; + } else { // This layer contains a mix of obstacles and free space + internal::pixelDistanceToObstacleTranspose(elevationMap, sdfTranspose, tmp, height, resolution); + internal::pixelDistanceToFreeSpaceTranspose(elevationMap, tmpTranspose, tmp, height, resolution); + + sdfTranspose = resolution * (sdfTranspose - tmpTranspose); + } +} + +Matrix signedDistanceAtHeight(const Matrix& elevationMap, float height, float resolution, float minHeight, float maxHeight) { + Matrix sdfTranspose; + Matrix tmp; + Matrix tmpTranspose; + + signedDistanceAtHeightTranspose(elevationMap, sdfTranspose, tmp, tmpTranspose, height, resolution, minHeight, maxHeight); + return sdfTranspose.transpose(); +} + +Matrix signedDistanceFromOccupancy(const Eigen::Matrix& occupancyGrid, float resolution) { + auto obstacleCount = occupancyGrid.count(); + bool hasObstacles = obstacleCount > 0; + if (hasObstacles) { + bool hasFreeSpace = obstacleCount < occupancyGrid.size(); + if (hasFreeSpace) { + return internal::signedDistanceFromOccupancyTranspose(occupancyGrid, resolution).transpose(); + } else { + // Only obstacles -> distance is minus infinity everywhere + return Matrix::Constant(occupancyGrid.rows(), occupancyGrid.cols(), -INF); + } + } else { + // No obstacles -> planar distance is infinite + return Matrix::Constant(occupancyGrid.rows(), occupancyGrid.cols(), INF); + } +} + +} // namespace signed_distance_field +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/src/SignedDistanceField.cpp b/grid_map_sdf/src/SignedDistanceField.cpp index b4b3f5474..16ecd3906 100644 --- a/grid_map_sdf/src/SignedDistanceField.cpp +++ b/grid_map_sdf/src/SignedDistanceField.cpp @@ -1,186 +1,198 @@ /* - * SignedDistanceField.hpp + * SignedDistanceField.cpp * - * Created on: Aug 16, 2017 - * Authors: Takahiro Miki, Peter Fankhauser - * Institute: ETH Zurich, ANYbotics + * Created on: Jul 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich */ -#include -#include +#include "grid_map_sdf/SignedDistanceField.hpp" -#include +#include -#include - -using namespace distance_transform; +#include "grid_map_sdf/DistanceDerivatives.hpp" +#include "grid_map_sdf/SignedDistance2d.hpp" namespace grid_map { -SignedDistanceField::SignedDistanceField() - : maxDistance_(std::numeric_limits::max()), - zIndexStartHeight_(0.0), - resolution_(0.0), - lowestHeight_(-1e5) // We need some precision. -{ -} +// Import from the signed_distance_field namespace +using signed_distance_field::columnwiseCentralDifference; +using signed_distance_field::Gridmap3dLookup; +using signed_distance_field::layerCentralDifference; +using signed_distance_field::layerFiniteDifference; +using signed_distance_field::signedDistanceAtHeightTranspose; + +SignedDistanceField::SignedDistanceField(const GridMap& gridMap, const std::string& elevationLayer, double minHeight, double maxHeight) + : frameId_(gridMap.getFrameId()), timestamp_(gridMap.getTimestamp()) { + assert(maxHeight >= minHeight); + + // Determine origin of the 3D grid + Position mapOriginXY; + gridMap.getPosition(Eigen::Vector2i(0, 0), mapOriginXY); + Position3 gridOrigin(mapOriginXY.x(), mapOriginXY.y(), minHeight); + + // Round up the Z-discretization. We need a minimum of two layers to enable finite difference in Z direction + const auto numZLayers = static_cast(std::max(std::ceil((maxHeight - minHeight) / gridMap.getResolution()), 2.0)); + const size_t numXrows = gridMap.getSize().x(); + const size_t numYrows = gridMap.getSize().y(); + Gridmap3dLookup::size_t_3d gridsize = {numXrows, numYrows, numZLayers}; + + // Initialize 3D lookup + gridmap3DLookup_ = Gridmap3dLookup(gridsize, gridOrigin, gridMap.getResolution()); + + // Allocate the internal data structure + data_.reserve(gridmap3DLookup_.linearSize()); + + // Check for NaN + const auto& elevationData = gridMap.get(elevationLayer); + if (elevationData.hasNaN()) { + std::cerr + << "[grid_map_sdf::SignedDistanceField] elevation data contains NaN. The generated SDF will be invalid! Apply inpainting first" + << std::endl; + } -SignedDistanceField::~SignedDistanceField() -{ + // Compute the SDF + computeSignedDistance(elevationData); } -void SignedDistanceField::calculateSignedDistanceField(const GridMap& gridMap, const std::string& layer, - const double heightClearance) -{ - data_.clear(); - resolution_ = gridMap.getResolution(); - position_ = gridMap.getPosition(); - size_ = gridMap.getSize(); - Matrix map = gridMap.get(layer); // Copy! - - float minHeight = map.minCoeffOfFinites(); - if (!std::isfinite(minHeight)) minHeight = lowestHeight_; - float maxHeight = map.maxCoeffOfFinites(); - if (!std::isfinite(maxHeight)) maxHeight = lowestHeight_; - - const float valueForEmptyCells = lowestHeight_; // maxHeight, minHeight (TODO Make this an option). - for (Eigen::Index i{0}; i < map.size(); ++i) { - if (std::isnan(map(i))) map(i) = valueForEmptyCells; - } +double SignedDistanceField::value(const Position3& position) const noexcept { + const auto nodeIndex = gridmap3DLookup_.nearestNode(position); + const auto nodePosition = gridmap3DLookup_.nodePosition(nodeIndex); + const auto nodeData = data_[gridmap3DLookup_.linearIndex(nodeIndex)]; + const auto jacobian = derivative(nodeData); + return distance(nodeData) + jacobian.dot(position - nodePosition); +} - // Height range of the signed distance field is higher than the max height. - maxHeight += heightClearance; - - Matrix sdfElevationAbove = Matrix::Ones(map.rows(), map.cols()) * maxDistance_; - Matrix sdfLayer = Matrix::Zero(map.rows(), map.cols()); - std::vector sdf; - zIndexStartHeight_ = minHeight; - - // Calculate signed distance field from bottom. - for (float h = minHeight; h < maxHeight; h += resolution_) { - Eigen::Matrix obstacleFreeField = map.array() < h; - Eigen::Matrix obstacleField = obstacleFreeField.array() < 1; - Matrix sdfObstacle = getPlanarSignedDistanceField(obstacleField); - Matrix sdfObstacleFree = getPlanarSignedDistanceField(obstacleFreeField); - Matrix sdf2d; - // If 2d sdfObstacleFree calculation failed, neglect this SDF - // to avoid extreme small distances (-INF). - if ((sdfObstacleFree.array() >= INF).any()) sdf2d = sdfObstacle; - else sdf2d = sdfObstacle - sdfObstacleFree; - sdf2d *= resolution_; - for (Eigen::Index i{0}; i < sdfElevationAbove.size(); ++i) { - if(sdfElevationAbove(i) == maxDistance_ && map(i) <= h) sdfElevationAbove(i) = h - map(i); - else if(sdfElevationAbove(i) != maxDistance_ && map(i) <= h) sdfElevationAbove(i) = sdfLayer(i) + resolution_; - if (sdf2d(i) == 0) sdfLayer(i) = h - map(i); - else if (sdf2d(i) < 0) sdfLayer(i) = -std::min(fabs(sdf2d(i)), fabs(map(i) - h)); - else sdfLayer(i) = std::min(sdf2d(i), sdfElevationAbove(i)); - } - data_.push_back(sdfLayer); - } +SignedDistanceField::Derivative3 SignedDistanceField::derivative(const Position3& position) const noexcept { + const auto nodeIndex = gridmap3DLookup_.nearestNode(position); + const auto nodeData = data_[gridmap3DLookup_.linearIndex(nodeIndex)]; + return derivative(nodeData); } -grid_map::Matrix SignedDistanceField::getPlanarSignedDistanceField(Eigen::Matrix& data) const -{ - image *input = new image(data.rows(), data.cols(), true); +std::pair SignedDistanceField::valueAndDerivative(const Position3& position) const noexcept { + const auto nodeIndex = gridmap3DLookup_.nearestNode(position); + const auto nodePosition = gridmap3DLookup_.nodePosition(nodeIndex); + const auto nodeData = data_[gridmap3DLookup_.linearIndex(nodeIndex)]; + const auto jacobian = derivative(nodeData); + return {distance(nodeData) + jacobian.dot(position - nodePosition), jacobian}; +} - for (int y = 0; y < input->height(); y++) { - for (int x = 0; x < input->width(); x++) { - imRef(input, x, y) = data(x, y); - } +void SignedDistanceField::computeSignedDistance(const Matrix& elevation) { + const auto gridOriginZ = static_cast(gridmap3DLookup_.gridOrigin_.z()); + const auto resolution = static_cast(gridmap3DLookup_.resolution_); + const auto minHeight = elevation.minCoeff(); + const auto maxHeight = elevation.maxCoeff(); + + /* + * General strategy to reduce the amount of transposing: + * - SDF at a height is in transposed form after computing it. + * - Take the finite difference in dx, now that this data is continuous in memory. + * - Transpose the SDF + * - Take other finite differences. Now dy is efficient. + * - When writing to the 3D structure, keep in mind that dx is still transposed. + */ + + // Memory needed to compute the SDF at a layer + Matrix tmp; // allocated on first use + Matrix tmpTranspose; // allocated on first use + Matrix sdfTranspose; // allocated on first use + + // Memory needed to keep a buffer of layers. We need 3 due to the central difference + Matrix currentLayer; // allocated on first use + Matrix nextLayer; // allocated on first use + Matrix previousLayer; // allocated on first use + + // Memory needed to compute finite differences + Matrix dxTranspose = Matrix::Zero(elevation.cols(), elevation.rows()); + Matrix dxNextTranspose = Matrix::Zero(elevation.cols(), elevation.rows()); + Matrix dy = Matrix::Zero(elevation.rows(), elevation.cols()); + Matrix dz = Matrix::Zero(elevation.rows(), elevation.cols()); + + // Compute SDF of first layer + computeLayerSdfandDeltaX(elevation, currentLayer, dxTranspose, sdfTranspose, tmp, tmpTranspose, gridOriginZ, resolution, minHeight, + maxHeight); + + // Compute SDF of second layer + computeLayerSdfandDeltaX(elevation, nextLayer, dxNextTranspose, sdfTranspose, tmp, tmpTranspose, gridOriginZ + resolution, resolution, + minHeight, maxHeight); + + // First layer: forward difference in z + layerFiniteDifference(currentLayer, nextLayer, dz, resolution); // dz / layer = +resolution + columnwiseCentralDifference(currentLayer, dy, -resolution); // dy / dcol = -resolution + + emplacebackLayerData(currentLayer, dxTranspose, dy, dz); + + // Middle layers: central difference in z + for (size_t layerZ = 1; layerZ + 1 < gridmap3DLookup_.gridsize_.z; ++layerZ) { + // Circulate layer buffers + previousLayer.swap(currentLayer); + currentLayer.swap(nextLayer); + dxTranspose.swap(dxNextTranspose); + + // Compute SDF of next layer + computeLayerSdfandDeltaX(elevation, nextLayer, dxNextTranspose, sdfTranspose, tmp, tmpTranspose, + gridOriginZ + (layerZ + 1) * resolution, resolution, minHeight, maxHeight); + + // Compute other finite differences + layerCentralDifference(previousLayer, nextLayer, dz, resolution); + columnwiseCentralDifference(currentLayer, dy, -resolution); + + // Add the data to the 3D structure + emplacebackLayerData(currentLayer, dxTranspose, dy, dz); } - // Compute dt. - image *out = dt(input); + // Circulate layer buffers one last time + previousLayer.swap(currentLayer); + currentLayer.swap(nextLayer); + dxTranspose.swap(dxNextTranspose); - Matrix result(data.rows(), data.cols()); + // Last layer: backward difference in z + layerFiniteDifference(previousLayer, currentLayer, dz, resolution); + columnwiseCentralDifference(currentLayer, dy, -resolution); + + // Add the data to the 3D structure + emplacebackLayerData(currentLayer, dxTranspose, dy, dz); +} +void SignedDistanceField::computeLayerSdfandDeltaX(const Matrix& elevation, Matrix& currentLayer, Matrix& dxTranspose, Matrix& sdfTranspose, + Matrix& tmp, Matrix& tmpTranspose, float height, float resolution, float minHeight, + float maxHeight) const { + // Compute SDF + dx of layer: compute sdfTranspose -> take dxTranspose -> transpose to get sdf + signedDistanceAtHeightTranspose(elevation, sdfTranspose, tmp, tmpTranspose, height, resolution, minHeight, maxHeight); + columnwiseCentralDifference(sdfTranspose, dxTranspose, -resolution); // dx / drow = -resolution + currentLayer = sdfTranspose.transpose(); +} - // Take square roots. - for (int y = 0; y < out->height(); y++) { - for (int x = 0; x < out->width(); x++) { - result(x, y) = sqrt(imRef(out, x, y)); +void SignedDistanceField::emplacebackLayerData(const Matrix& signedDistance, const Matrix& dxTranspose, const Matrix& dy, + const Matrix& dz) { + for (size_t colY = 0; colY < gridmap3DLookup_.gridsize_.y; ++colY) { + for (size_t rowX = 0; rowX < gridmap3DLookup_.gridsize_.x; ++rowX) { + data_.emplace_back(node_data_t{signedDistance(rowX, colY), dxTranspose(colY, rowX), dy(rowX, colY), dz(rowX, colY)}); } } - delete input; - delete out; - return result; } -double SignedDistanceField::getDistanceAt(const Position3& position) const -{ - double xCenter = size_.x() / 2.0; - double yCenter = size_.y() / 2.0; - int i = std::round(xCenter - (position.x() - position_.x()) / resolution_); - int j = std::round(yCenter - (position.y() - position_.y()) / resolution_); - int k = std::round((position.z() - zIndexStartHeight_) / resolution_); - i = std::max(i, 0); - i = std::min(i, size_.x() - 1); - j = std::max(j, 0); - j = std::min(j, size_.y() - 1); - k = std::max(k, 0); - k = std::min(k, (int)data_.size() - 1); - return data_[k](i, j); +size_t SignedDistanceField::size() const noexcept { + return gridmap3DLookup_.linearSize(); } -double SignedDistanceField::getInterpolatedDistanceAt(const Position3& position) const -{ - double xCenter = size_.x() / 2.0; - double yCenter = size_.y() / 2.0; - int i = std::round(xCenter - (position.x() - position_.x()) / resolution_); - int j = std::round(yCenter - (position.y() - position_.y()) / resolution_); - int k = std::round((position.z() - zIndexStartHeight_) / resolution_); - i = std::max(i, 0); - i = std::min(i, size_.x() - 1); - j = std::max(j, 0); - j = std::min(j, size_.y() - 1); - k = std::max(k, 0); - k = std::min(k, (int)data_.size() - 1); - Vector3 gradient = getDistanceGradientAt(position); - double xp = position_.x() + ((size_.x() - i) - xCenter) * resolution_; - double yp = position_.y() + ((size_.y() - j) - yCenter) * resolution_; - double zp = zIndexStartHeight_ + k * resolution_; - Vector3 error = position - Vector3(xp, yp, zp); - return data_[k](i, j) + gradient.dot(error); +const std::string& SignedDistanceField::getFrameId() const noexcept { + return frameId_; } -Vector3 SignedDistanceField::getDistanceGradientAt(const Position3& position) const -{ - double xCenter = size_.x() / 2.0; - double yCenter = size_.y() / 2.0; - int i = std::round(xCenter - (position.x() - position_.x()) / resolution_); - int j = std::round(yCenter - (position.y() - position_.y()) / resolution_); - int k = std::round((position.z() - zIndexStartHeight_) / resolution_); - i = std::max(i, 1); - i = std::min(i, size_.x() - 2); - j = std::max(j, 1); - j = std::min(j, size_.y() - 2); - k = std::max(k, 1); - k = std::min(k, (int)data_.size() - 2); - double dx = (data_[k](i - 1, j) - data_[k](i + 1, j)) / (2 * resolution_); - double dy = (data_[k](i, j - 1) - data_[k](i, j + 1)) / (2 * resolution_); - double dz = (data_[k + 1](i, j) - data_[k - 1](i, j)) / (2 * resolution_); - return Vector3(dx, dy, dz); +Time SignedDistanceField::getTime() const noexcept { + return timestamp_; } -void SignedDistanceField::convertToPointCloud(pcl::PointCloud& points) const -{ - double xCenter = size_.x() / 2.0; - double yCenter = size_.y() / 2.0; - for (size_t z = 0; z < data_.size(); z++){ - for (int y = 0; y < size_.y(); y++) { - for (int x = 0; x < size_.x(); x++) { - double xp = position_.x() + ((size_.x() - x) - xCenter) * resolution_; - double yp = position_.y() + ((size_.y() - y) - yCenter) * resolution_; - double zp = zIndexStartHeight_ + z * resolution_; - pcl::PointXYZI p; - p.x = xp; - p.y = yp; - p.z = zp; - p.intensity = data_[z](x, y); - points.push_back(p); +void SignedDistanceField::filterPoints(std::function func, size_t decimation) const { + for (size_t layerZ = 0; layerZ < gridmap3DLookup_.gridsize_.z; layerZ += decimation) { + for (size_t colY = 0; colY < gridmap3DLookup_.gridsize_.y; colY += decimation) { + for (size_t rowX = 0; rowX < gridmap3DLookup_.gridsize_.x; rowX += decimation) { + const Gridmap3dLookup::size_t_3d index3d = {rowX, colY, layerZ}; + const auto index = gridmap3DLookup_.linearIndex(index3d); + func(gridmap3DLookup_.nodePosition(index3d), distanceFloat(data_[index]), derivative(data_[index])); } } } - return; } -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_sdf/test/SignedDistanceFieldTest.cpp b/grid_map_sdf/test/SignedDistanceFieldTest.cpp deleted file mode 100644 index c66adbcc0..000000000 --- a/grid_map_sdf/test/SignedDistanceFieldTest.cpp +++ /dev/null @@ -1,305 +0,0 @@ -/* - * SignedDistanceFieldTest.cpp - * - * Created on: Aug 25, 2017 - * Author: Takahiro Miki, Peter Fankhauser - * Institute: ETH Zurich, ANYbotics - */ - -#include "grid_map_core/GridMap.hpp" -#include "grid_map_sdf/SignedDistanceField.hpp" - -#include -#include - -using namespace std; -using namespace grid_map; - -TEST(SignedDistanceField, EmptyMap) -{ - GridMap map({"layer"}); - map.setGeometry(Length(1.0, 2.0), 0.1, Position(0.0, 0.0)); - - SignedDistanceField sdf; - sdf.calculateSignedDistanceField(map, "layer", 1.0); - Position3 position(0.0, 0.0, 0.0); - - EXPECT_NO_THROW(sdf.getDistanceAt(position)); - EXPECT_NO_THROW(sdf.getInterpolatedDistanceAt(position)); - EXPECT_NO_THROW(sdf.getDistanceGradientAt(position)); -} - -TEST(SignedDistanceField, GetDistanceFlat) -{ - GridMap map({"layer"}); - map.setGeometry(Length(1.0, 2.0), 0.1, Position(0.1, 0.2)); - map["layer"].setConstant(1.0); - map.at("layer", Index(0,0)) = -1.0; - - SignedDistanceField sdf; - sdf.calculateSignedDistanceField(map, "layer", 2.5); - Position pos; - map.getPosition(Index(9, 9), pos); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.0)), -1.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.1)), -0.9, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.2)), -0.8, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.3)), -0.7, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.4)), -0.6, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.5)), -0.5, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.6)), -0.4, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.7)), -0.3, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.8)), -0.2, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.9)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.0)), 0.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.1)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.2)), 0.2, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.3)), 0.3, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.4)), 0.4, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.5)), 0.5, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.6)), 0.6, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.7)), 0.7, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), 0.8, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.9)), 0.9, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.0)), 1.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.1)), 1.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.2)), 1.2, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.3)), 1.3, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.4)), 1.4, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.5)), 1.5, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 10.0)), 2.5, 0.0001); -} - - -TEST(SignedDistanceField, GetDistance) -{ - GridMap map({"layer"}); - map.setGeometry(Length(1.0, 2.0), 0.1, Position(0.15, 0.25)); - map["layer"].setConstant(1.0); - - map.at("layer", Index(3,4)) = 2.0; - map.at("layer", Index(3,5)) = 2.0; - map.at("layer", Index(3,6)) = 2.0; - map.at("layer", Index(4,4)) = 2.0; - map.at("layer", Index(4,5)) = 2.0; - map.at("layer", Index(4,6)) = 2.0; - map.at("layer", Index(5,4)) = 2.0; - map.at("layer", Index(5,5)) = 2.0; - map.at("layer", Index(5,6)) = 2.0; - map.at("layer", Index(6,4)) = 2.0; - map.at("layer", Index(6,5)) = 2.0; - map.at("layer", Index(6,6)) = 2.0; - map.at("layer", Index(7,4)) = 2.0; - map.at("layer", Index(7,5)) = 2.0; - map.at("layer", Index(7,6)) = 2.0; - - SignedDistanceField sdf; - sdf.calculateSignedDistanceField(map, "layer", 1.5); - Position pos; - - map.getPosition(Index(5, 5), pos); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.0)), -1.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.5)), -1.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.0)), -1.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.1)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.2)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.3)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.4)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.5)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.6)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.7)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.0)), 0.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.1)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.2)), 0.2, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.3)), 0.3, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.4)), 0.4, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.5)), 0.5, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 10.0)), 1.5, 0.0001); - - map.getPosition(Index(5, 2), pos); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.0)), 0.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 0.5)), 0.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.0)), 0.0, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.1)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.2)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.3)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.4)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.5)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.6)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.7)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 1.9)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.0)), 0.2, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.1)), 0.3, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.2)), 0.4, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.3)), 0.5, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.4)), 0.6, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 2.5)), 0.7, 0.0001); - EXPECT_NEAR(sdf.getDistanceAt(Vector3(pos.x(), pos.y(), 10.0)), 1.7, 0.0001); -} - -TEST(SignedDistanceField, GetDistanceGradient) -{ - GridMap map({"layer"}); - map.setGeometry(Length(1.0, 2.0), 0.1, Position(0.15, 0.25)); - map["layer"].setConstant(1.0); - - map.at("layer", Index(3,4)) = 2.0; - map.at("layer", Index(3,5)) = 2.0; - map.at("layer", Index(3,6)) = 2.0; - map.at("layer", Index(4,4)) = 2.0; - map.at("layer", Index(4,5)) = 2.0; - map.at("layer", Index(4,6)) = 2.0; - map.at("layer", Index(5,4)) = 2.0; - map.at("layer", Index(5,5)) = 2.0; - map.at("layer", Index(5,6)) = 2.0; - map.at("layer", Index(6,4)) = 2.0; - map.at("layer", Index(6,5)) = 2.0; - map.at("layer", Index(6,6)) = 2.0; - map.at("layer", Index(7,4)) = 2.0; - map.at("layer", Index(7,5)) = 2.0; - map.at("layer", Index(7,6)) = 2.0; - - SignedDistanceField sdf; - sdf.calculateSignedDistanceField(map, "layer", 1.5); - Position pos; - Vector3 gradient; - - map.getPosition(Index(5, 6), pos); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 0.0)); - EXPECT_NEAR(gradient.x(), 0.0, 0.0001); - EXPECT_NEAR(gradient.y(), -1, 0.0001); - EXPECT_NEAR(gradient.z(), 0.5, 0.0001); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 1.0)); - EXPECT_NEAR(gradient.x(), 0.0, 0.0001); - EXPECT_NEAR(gradient.y(), -1, 0.0001); - EXPECT_NEAR(gradient.z(), 0.5, 0.0001); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 2.0)); - EXPECT_NEAR(gradient.x(), 0.0, 0.0001); - EXPECT_NEAR(gradient.y(), -1.5, 0.0001); - EXPECT_NEAR(gradient.z(), 1, 0.0001); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 2.2)); - EXPECT_NEAR(gradient.x(), 0.0, 0.0001); - EXPECT_NEAR(gradient.y(), -1.5, 0.0001); - EXPECT_NEAR(gradient.z(), 1.0, 0.0001); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 10.0)); - EXPECT_NEAR(gradient.x(), 0.0, 0.0001); - EXPECT_NEAR(gradient.y(), -1.5, 0.0001); - EXPECT_NEAR(gradient.z(), 1.0, 0.0001); - map.getPosition(Index(2, 2), pos); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 1.0)); - EXPECT_NEAR(gradient.x(), 0.0, 0.0001); - EXPECT_NEAR(gradient.y(), 1, 0.0001); - EXPECT_NEAR(gradient.z(), 0.5, 0.0001); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 2.0)); - EXPECT_NEAR(gradient.x(), 0.207107, 0.0001); - EXPECT_NEAR(gradient.y(), 1.5, 0.0001); - EXPECT_NEAR(gradient.z(), 1, 0.0001); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 2.2)); - EXPECT_NEAR(gradient.x(), 0.207107, 0.0001); - EXPECT_NEAR(gradient.y(), 1.5, 0.0001); - EXPECT_NEAR(gradient.z(), 1, 0.0001); - map.getPosition(Index(12, 22), pos); - gradient = sdf.getDistanceGradientAt(Vector3(pos.x(), pos.y(), 1.0)); - EXPECT_NEAR(gradient.x(), 0.0, 0.0001); - EXPECT_NEAR(gradient.y(), 1.0, 0.0001); - EXPECT_NEAR(gradient.z(), 0.5, 0.0001); -} - -TEST(SignedDistanceField, GetInterpolatedDistance) -{ - GridMap map({"layer"}); - map.setGeometry(Length(1.0, 2.0), 0.1, Position(0.15, 0.25)); - map["layer"].setConstant(1.0); - - map.at("layer", Index(3,3)) = 2.0; - map.at("layer", Index(3,4)) = 2.0; - map.at("layer", Index(3,5)) = 2.0; - map.at("layer", Index(3,6)) = 2.0; - map.at("layer", Index(3,7)) = 2.0; - map.at("layer", Index(4,3)) = 2.0; - map.at("layer", Index(4,4)) = 2.0; - map.at("layer", Index(4,5)) = 2.0; - map.at("layer", Index(4,6)) = 2.0; - map.at("layer", Index(4,7)) = 2.0; - map.at("layer", Index(5,3)) = 2.0; - map.at("layer", Index(5,4)) = 2.0; - map.at("layer", Index(5,5)) = 2.0; - map.at("layer", Index(5,6)) = 2.0; - map.at("layer", Index(5,7)) = 2.0; - map.at("layer", Index(6,3)) = 2.0; - map.at("layer", Index(6,4)) = 2.0; - map.at("layer", Index(6,5)) = 2.0; - map.at("layer", Index(6,6)) = 2.0; - map.at("layer", Index(6,7)) = 2.0; - map.at("layer", Index(7,3)) = 2.0; - map.at("layer", Index(7,4)) = 2.0; - map.at("layer", Index(7,5)) = 2.0; - map.at("layer", Index(7,6)) = 2.0; - map.at("layer", Index(7,7)) = 2.0; - - SignedDistanceField sdf; - sdf.calculateSignedDistanceField(map, "layer", 1.5); - Position pos; - - map.getPosition(Index(5, 5), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 0.0)), -5.05, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 0.5)), -3.05, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.0)), -1.05, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.1)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.2)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.3)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.4)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.5)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.6)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.7)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.25, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.9)), -0.1, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.0)), 0.0, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.1)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.2)), 0.2, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.3)), 0.3, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.4)), 0.4, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.5)), 0.5, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 10.0)), 8, 0.0001); - - map.getPosition(Index(5, 10), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 0.0)), -1.0, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 0.5)), -0.5, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.0)), 0.0, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.1)), 0.1, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.2)), 0.2, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.3)), 0.3, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.5)), 0.35, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.7)), 0.35, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.9)), 0.35, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.0)), 0.45, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.1)), 0.55, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.2)), 0.65, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.3)), 0.75, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.4)), 0.85, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 2.5)), 0.95, 0.0001); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 10.0)), 8.45, 0.0001); - - map.getPosition(Index(5, 0), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), 0.25, 0.0001); - map.getPosition(Index(5, 1), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), 0.175, 0.0001); - map.getPosition(Index(5, 2), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.025, 0.0001); - map.getPosition(Index(5, 3), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.2, 0.0001); - map.getPosition(Index(5, 4), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.225, 0.0001); - map.getPosition(Index(5, 5), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.25, 0.0001); - map.getPosition(Index(5, 6), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), -0.175, 0.0001); - map.getPosition(Index(5, 7), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), 0.025, 0.0001); - map.getPosition(Index(5, 8), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), 0.15, 0.0001); - map.getPosition(Index(5, 9), pos); - EXPECT_NEAR(sdf.getInterpolatedDistanceAt(Vector3(pos.x(), pos.y(), 1.8)), 0.25, 0.0001); -} diff --git a/grid_map_sdf/test/include/naiveSignedDistance.hpp b/grid_map_sdf/test/include/naiveSignedDistance.hpp new file mode 100644 index 000000000..c3957a0b2 --- /dev/null +++ b/grid_map_sdf/test/include/naiveSignedDistance.hpp @@ -0,0 +1,116 @@ +/* + * naiveSignedDistance.h + * + * Created on: Aug 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#pragma once + +namespace grid_map { +namespace signed_distance_field { + +inline Eigen::Matrix occupancyAtHeight(const Matrix& elevationMap, float height) { + Eigen::Matrix occupancy = elevationMap.unaryExpr([=](float val) { return val > height; }); + return occupancy; +} + +inline bool isEqualSdf(const Matrix& sdf0, const Matrix& sdf1, float tol) { + if (sdf0.cols() != sdf1.cols() || sdf0.rows() != sdf1.rows()) { + return false; + } + + for (Eigen::Index col = 0; col < sdf0.cols(); ++col) { + for (Eigen::Index row = 0; row < sdf0.rows(); ++row) { + if (sdf0(row, col) == sdf1(row, col) || std::abs(sdf0(row, col) - sdf1(row, col)) < tol) { + continue; + } else { + return false; + } + } + } + return true; +} + +// N^2 naive implementation, for testing purposes +inline Matrix naiveSignedDistanceAtHeight(const Matrix& elevationMap, float height, float resolution) { + Matrix signedDistance(elevationMap.rows(), elevationMap.cols()); + + // For each point + for (Eigen::Index col = 0; col < elevationMap.cols(); ++col) { + for (Eigen::Index row = 0; row < elevationMap.rows(); ++row) { + if (elevationMap(row, col) >= height) { // point in the SDF is below surface + signedDistance(row, col) = -INF; + // find closest open space over all other points + for (Eigen::Index j = 0; j < elevationMap.cols(); ++j) { + for (Eigen::Index i = 0; i < elevationMap.rows(); ++i) { + // Compute distance to free cube at location (i, j) + const float dx{resolution * pixelBorderDistance(i, row)}; + const float dy{resolution * pixelBorderDistance(j, col)}; + const float dz{std::max(elevationMap(i, j) - height, 0.0F)}; + const float currentSignedDistance{-std::sqrt(dx * dx + dy * dy + dz * dz)}; + signedDistance(row, col) = std::max(signedDistance(row, col), currentSignedDistance); + } + } + } else { // point in the SDF is above surface + signedDistance(row, col) = INF; + // find closest object over all other points + for (Eigen::Index j = 0; j < elevationMap.cols(); ++j) { + for (Eigen::Index i = 0; i < elevationMap.rows(); ++i) { + // Compute distance to occupied cube at location (i, j) + const float dx{resolution * pixelBorderDistance(i, row)}; + const float dy{resolution * pixelBorderDistance(j, col)}; + const float dz{std::max(height - elevationMap(i, j), 0.0F)}; + const float currentSignedDistance{std::sqrt(dx * dx + dy * dy + dz * dz)}; + signedDistance(row, col) = std::min(signedDistance(row, col), currentSignedDistance); + } + } + } + } + } + + return signedDistance; +} + +inline Matrix naiveSignedDistanceFromOccupancy(const Eigen::Matrix& occupancyGrid, float resolution) { + Matrix signedDistance(occupancyGrid.rows(), occupancyGrid.cols()); + + // For each point + for (Eigen::Index col = 0; col < occupancyGrid.cols(); ++col) { + for (Eigen::Index row = 0; row < occupancyGrid.rows(); ++row) { + if (occupancyGrid(row, col)) { // This point is an obstable + signedDistance(row, col) = -INF; + // find closest open space over all other points + for (Eigen::Index j = 0; j < occupancyGrid.cols(); ++j) { + for (Eigen::Index i = 0; i < occupancyGrid.rows(); ++i) { + if (!occupancyGrid(i, j)) { + const float dx{resolution * pixelBorderDistance(i, row)}; + const float dy{resolution * pixelBorderDistance(j, col)}; + const float currentSignedDistance{-std::sqrt(dx * dx + dy * dy)}; + signedDistance(row, col) = std::max(signedDistance(row, col), currentSignedDistance); + } + } + } + } else { // This point is in free space + signedDistance(row, col) = INF; + // find closest object over all other points + for (Eigen::Index j = 0; j < occupancyGrid.cols(); ++j) { + for (Eigen::Index i = 0; i < occupancyGrid.rows(); ++i) { + if (occupancyGrid(i, j)) { + const float dx{resolution * pixelBorderDistance(i, row)}; + const float dy{resolution * pixelBorderDistance(j, col)}; + const float currentSignedDistance{std::sqrt(dx * dx + dy * dy)}; + signedDistance(row, col) = std::min(signedDistance(row, col), currentSignedDistance); + } + } + } + } + } + } + + return signedDistance; +} + +} // namespace signed_distance_field +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_sdf/test/test3dLookup.cpp b/grid_map_sdf/test/test3dLookup.cpp new file mode 100644 index 000000000..254a6cbd5 --- /dev/null +++ b/grid_map_sdf/test/test3dLookup.cpp @@ -0,0 +1,59 @@ +/* + * test3dLookup.cpp + * + * Created on: Aug 18, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#include + +#include "grid_map_sdf/Gridmap3dLookup.hpp" + +using namespace grid_map; +using namespace signed_distance_field; +using size_t_3d = Gridmap3dLookup::size_t_3d; + +TEST(testGridmap3dLookup, nearestNode) { + const size_t_3d gridsize{8, 9, 10}; + const Position3 gridOrigin{-0.1, -0.2, -0.4}; + const double resolution = 0.1; + + Gridmap3dLookup gridmap3DLookup(gridsize, gridOrigin, resolution); + + // Retrieve origin + const size_t_3d originNode = gridmap3DLookup.nearestNode(gridOrigin); + ASSERT_EQ(originNode.x, 0); + ASSERT_EQ(originNode.y, 0); + ASSERT_EQ(originNode.z, 0); + + // test underflow + const size_t_3d originNodeProjected = gridmap3DLookup.nearestNode(gridOrigin + Position3{1e20, 1e20, -1e20}); + ASSERT_EQ(originNodeProjected.x, 0); + ASSERT_EQ(originNodeProjected.y, 0); + ASSERT_EQ(originNodeProjected.z, 0); + + // test overflow + const size_t_3d maxNodeProjected = gridmap3DLookup.nearestNode(gridOrigin + Position3{-1e20, -1e20, +1e20}); + ASSERT_EQ(maxNodeProjected.x, gridsize.x - 1); + ASSERT_EQ(maxNodeProjected.y, gridsize.y - 1); + ASSERT_EQ(maxNodeProjected.z, gridsize.z - 1); + + // Nearest neighbour + const size_t_3d nodeIndex{3, 4, 5}; + const Position3 nodePosition = gridmap3DLookup.nodePosition(nodeIndex); + const size_t_3d closestNodeIndex = gridmap3DLookup.nearestNode(nodePosition + 0.49 * Position3::Constant(resolution)); + ASSERT_EQ(closestNodeIndex.x, nodeIndex.x); + ASSERT_EQ(closestNodeIndex.y, nodeIndex.y); + ASSERT_EQ(closestNodeIndex.z, nodeIndex.z); +} + +TEST(testGridmap3dLookup, linearIndex) { + const size_t_3d gridsize{8, 9, 10}; + const Position3 gridOrigin{-0.1, -0.2, -0.4}; + const double resolution = 0.1; + + Gridmap3dLookup gridmap3DLookup(gridsize, gridOrigin, resolution); + ASSERT_EQ(gridmap3DLookup.linearIndex({0, 0, 0}), 0); + ASSERT_EQ(gridmap3DLookup.linearIndex({gridsize.x - 1, gridsize.y - 1, gridsize.z - 1}), gridmap3DLookup.linearSize() - 1); +} \ No newline at end of file diff --git a/grid_map_sdf/test/testDerivatives.cpp b/grid_map_sdf/test/testDerivatives.cpp new file mode 100644 index 000000000..5fa890412 --- /dev/null +++ b/grid_map_sdf/test/testDerivatives.cpp @@ -0,0 +1,31 @@ +/* + * testDerivatives.cpp + * + * Created on: Aug 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#include + +#include "grid_map_sdf/DistanceDerivatives.hpp" + +using namespace grid_map; +using namespace signed_distance_field; + +TEST(testDerivatives, columnwise) { + Matrix data(2, 3); + data << 1.0, 2.0, 4.0, 2.0, 4.0, 6.0; + + float resolution{0.1F}; + float doubleResolution{2.0F * resolution}; + + Matrix manualDifference(2, 3); + manualDifference << 1.0 / resolution, 3.0 / doubleResolution, 2.0 / resolution, 2.0 / resolution, 4.0 / doubleResolution, + 2.0 / resolution; + + Matrix computedDifference = Matrix::Zero(data.rows(), data.cols()); + columnwiseCentralDifference(data, computedDifference, resolution); + + ASSERT_TRUE(manualDifference.isApprox(computedDifference)); +} diff --git a/grid_map_sdf/test/testPixelBorderDistance.cpp b/grid_map_sdf/test/testPixelBorderDistance.cpp new file mode 100644 index 000000000..38b1a441c --- /dev/null +++ b/grid_map_sdf/test/testPixelBorderDistance.cpp @@ -0,0 +1,76 @@ +/* + * testPixelBorderDistance.cpp + * + * Created on: Aug 7, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#include + +#include "grid_map_sdf/PixelBorderDistance.hpp" +#include "grid_map_sdf/Utils.hpp" + +using namespace grid_map; +using namespace signed_distance_field; + +TEST(testPixelBorderDistance, distanceFunction) { + // Basic properties of the distance function + ASSERT_TRUE(pixelBorderDistance(0, 0) == 0.0F); + ASSERT_FLOAT_EQ(pixelBorderDistance(0, 1), 0.5); + ASSERT_FLOAT_EQ(pixelBorderDistance(0, 2), 1.5); + ASSERT_TRUE(pixelBorderDistance(0, 1) == pixelBorderDistance(1, 0)); + ASSERT_TRUE(pixelBorderDistance(-10, 42) == pixelBorderDistance(42, -10)); +} + +TEST(testPixelBorderDistance, equidistantPoint) { + int pixelRange = 10; + float offsetRange = 20.0; + float offsetStep = 0.25; + float tol = 1e-4; + + for (int p = -pixelRange; p < pixelRange; ++p) { + for (float fp = -offsetRange; fp < offsetRange; fp += offsetStep) { + for (int q = -pixelRange; q < pixelRange; ++q) { + for (float fq = -offsetRange; fq < offsetRange; fq += offsetStep) { + // Fix that offset is the same if pixels are the same + if (p == q) { + fp = fq; + } + // Check symmetry of the equidistant point computation + float s0 = equidistancePoint(q, fq, p, fp); + float s1 = equidistancePoint(p, fp, q, fq); + ASSERT_LT(std::abs(s0 - s1), tol); + + // Check that the distance from s0 to p and q is indeed equal + float dp = squarePixelBorderDistance(s0, p, fp); + float dq = squarePixelBorderDistance(s0, q, fq); + ASSERT_LT(std::abs(dp - dq), tol) << "p: " << p << ", q: " << q << ", fp: " << fp << ", fq: " << fq; + } + } + } + } +} + +TEST(testPixelBorderDistance, equidistantPointInfCases) { + const float pixelTestDistance{1e6}; // Pick a very high pixel index + // With one of the cells at +INF, the intersection will always be +- INF on the side of that cell + // Here the intersection is at the left = -INF + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, INF, pixelTestDistance, std::numeric_limits::max()), -INF); + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, INF, pixelTestDistance, 0.0F), -INF); + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, INF, pixelTestDistance, std::numeric_limits::lowest()), -INF); + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, INF, pixelTestDistance, -INF), -INF); + // Here the intersection is at the right = +INF + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, std::numeric_limits::max(), pixelTestDistance, INF), INF); + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, 0.0F, pixelTestDistance, INF), INF); + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, std::numeric_limits::lowest(), pixelTestDistance, INF), INF); + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, -INF, pixelTestDistance, INF), INF); + // Except when both are infinite, then the intersection is in the middle + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, INF, pixelTestDistance, INF), 0.0F); + EXPECT_FLOAT_EQ( + equidistancePoint(-pixelTestDistance, std::numeric_limits::max(), pixelTestDistance, std::numeric_limits::max()), 0.0F); + EXPECT_FLOAT_EQ( + equidistancePoint(-pixelTestDistance, std::numeric_limits::lowest(), pixelTestDistance, std::numeric_limits::lowest()), + 0.0F); + EXPECT_FLOAT_EQ(equidistancePoint(-pixelTestDistance, -INF, pixelTestDistance, -INF), 0.0F); +} diff --git a/grid_map_sdf/test/testSignedDistance2d.cpp b/grid_map_sdf/test/testSignedDistance2d.cpp new file mode 100644 index 000000000..621f96c17 --- /dev/null +++ b/grid_map_sdf/test/testSignedDistance2d.cpp @@ -0,0 +1,112 @@ +/* + * testSignedDistance2d.cpp + * + * Created on: Jul 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#include + +#include "grid_map_sdf/PixelBorderDistance.hpp" +#include "grid_map_sdf/SignedDistance2d.hpp" + +#include "naiveSignedDistance.hpp" + +using namespace grid_map; +using namespace signed_distance_field; + +TEST(testSignedDistance2d, signedDistance2d_noObstacles) { + const int n = 3; + const int m = 4; + const float resolution = 0.1; + const Matrix map = Matrix::Ones(n, m); + + const auto occupancy = occupancyAtHeight(map, 2.0); + const auto signedDistance = signedDistanceFromOccupancy(occupancy, resolution); + + ASSERT_TRUE((signedDistance.array() == INF).all()); +} + +TEST(testSignedDistance2d, signedDistance2d_allObstacles) { + const int n = 3; + const int m = 4; + const float resolution = 0.1; + const Matrix map = Matrix::Ones(n, m); + + const auto occupancy = occupancyAtHeight(map, 0.0); + const auto signedDistance = signedDistanceFromOccupancy(occupancy, resolution); + + ASSERT_TRUE((signedDistance.array() == -INF).all()); +} + +TEST(testSignedDistance2d, signedDistance2d_mixed) { + const int n = 2; + const int m = 3; + const float resolution = 1.0; + Matrix map(n, m); + map << 0.0, 1.0, 1.0, 0.0, 0.0, 1.0; + const auto occupancy = occupancyAtHeight(map, 0.5); + + const auto naiveSignedDistance = naiveSignedDistanceFromOccupancy(occupancy, resolution); + const auto signedDistance = signedDistanceFromOccupancy(occupancy, resolution); + ASSERT_TRUE(isEqualSdf(signedDistance, naiveSignedDistance, 1e-4)); +} + +TEST(testSignedDistance2d, signedDistance2d_oneObstacle) { + const int n = 20; + const int m = 30; + const float resolution = 0.1; + Matrix map = Matrix::Zero(n, m); + map(n / 2, m / 2) = 1.0; + const auto occupancy = occupancyAtHeight(map, 0.5); + + const auto naiveSignedDistance = naiveSignedDistanceFromOccupancy(occupancy, resolution); + const auto signedDistance = signedDistanceFromOccupancy(occupancy, resolution); + ASSERT_TRUE(isEqualSdf(signedDistance, naiveSignedDistance, 1e-4)); +} + +TEST(testSignedDistance2d, signedDistance2d_oneFreeSpace) { + const int n = 20; + const int m = 30; + const float resolution = 0.1; + Matrix map = Matrix::Ones(n, m); + map(n / 2, m / 2) = 0.0; + + const auto occupancy = occupancyAtHeight(map, 0.5); + + const auto naiveSignedDistance = naiveSignedDistanceFromOccupancy(occupancy, resolution); + const auto signedDistance = signedDistanceFromOccupancy(occupancy, resolution); + ASSERT_TRUE(isEqualSdf(signedDistance, naiveSignedDistance, 1e-4)); +} + +TEST(testSignedDistance2d, signedDistance2d_debugcase) { + const int n = 3; + const int m = 3; + const float resolution = 1.0; + Matrix map(n, m); + map << 1.0, 1.0, 1.0, 0.0, 1.0, 1.0, 1.0, 1.0, 0.0; + + const auto occupancy = occupancyAtHeight(map, 0.5); + + const auto naiveSignedDistance = naiveSignedDistanceFromOccupancy(occupancy, resolution); + const auto signedDistance = signedDistanceFromOccupancy(occupancy, resolution); + ASSERT_TRUE(isEqualSdf(signedDistance, naiveSignedDistance, 1e-4)); +} + +TEST(testSignedDistance2d, signedDistance2d_random) { + const int n = 20; + const int m = 30; + const float resolution = 1.0; + Matrix map = Matrix::Random(n, m); // random [-1.0, 1.0] + + // Check at different heights, resulting in different levels of sparsity. + float heightStep = 0.1; + for (float height = -1.0 - heightStep; height < 1.0 + heightStep; height += heightStep) { + const auto occupancy = occupancyAtHeight(map, height); + + const auto naiveSignedDistance = naiveSignedDistanceFromOccupancy(occupancy, resolution); + const auto signedDistance = signedDistanceFromOccupancy(occupancy, resolution); + ASSERT_TRUE(isEqualSdf(signedDistance, naiveSignedDistance, 1e-4)) << "height: " << height; + } +} \ No newline at end of file diff --git a/grid_map_sdf/test/testSignedDistance3d.cpp b/grid_map_sdf/test/testSignedDistance3d.cpp new file mode 100644 index 000000000..49219e890 --- /dev/null +++ b/grid_map_sdf/test/testSignedDistance3d.cpp @@ -0,0 +1,193 @@ +/* + * testSignedDistance3d.cpp + * + * Created on: Aug 10, 2020 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#include + +#include "grid_map_sdf/PixelBorderDistance.hpp" +#include "grid_map_sdf/SignedDistance2d.hpp" +#include "grid_map_sdf/SignedDistanceField.hpp" + +#include "naiveSignedDistance.hpp" + +using namespace grid_map; +using namespace signed_distance_field; + +TEST(testSignedDistance3d, flatTerrain) { + const int n = 3; + const int m = 4; + const float resolution = 0.1; + const float terrainHeight = 0.5; + const Matrix map = Matrix::Constant(n, m, terrainHeight); + const float minHeight = map.minCoeff(); + const float maxHeight = map.maxCoeff(); + + const float testHeightAboveTerrain = 3.0; + const auto naiveSignedDistanceAbove = naiveSignedDistanceAtHeight(map, testHeightAboveTerrain, resolution); + const auto signedDistanceAbove = signedDistanceAtHeight(map, testHeightAboveTerrain, resolution, minHeight, maxHeight); + ASSERT_TRUE(isEqualSdf(signedDistanceAbove, naiveSignedDistanceAbove, 1e-4)); + + const float testHeightBelowTerrain = -3.0; + const auto naiveSignedDistanceBelow = naiveSignedDistanceAtHeight(map, testHeightBelowTerrain, resolution); + const auto signedDistanceBelow = signedDistanceAtHeight(map, testHeightBelowTerrain, resolution, minHeight, maxHeight); + ASSERT_TRUE(isEqualSdf(signedDistanceBelow, naiveSignedDistanceBelow, 1e-4)); +} + +TEST(testSignedDistance3d, randomTerrain) { + const int n = 20; + const int m = 30; + const float resolution = 0.1; + Matrix map = Matrix::Random(n, m); // random [-1.0, 1.0] + const float minHeight = map.minCoeff(); + const float maxHeight = map.maxCoeff(); + + // Check at different heights, resulting in different levels of sparsity. + float heightStep = 0.1; + for (float height = -1.0 - heightStep; height < 1.0 + heightStep; height += heightStep) { + const auto naiveSignedDistance = naiveSignedDistanceAtHeight(map, height, resolution); + const auto signedDistance = signedDistanceAtHeight(map, height, resolution, minHeight, maxHeight); + + ASSERT_TRUE(isEqualSdf(signedDistance, naiveSignedDistance, 1e-4)) << "height: " << height; + } +} + +TEST(testSignedDistance3d, randomTerrainInterpolation) { + const int n = 20; + const int m = 30; + const float resolution = 0.1; + GridMap map; + map.setGeometry({n * resolution, m * resolution}, resolution); + map.add("elevation"); + map.get("elevation").setRandom(); // random [-1.0, 1.0] + const Matrix mapData = map.get("elevation"); + const float minHeight = mapData.minCoeff(); + const float maxHeight = mapData.maxCoeff(); + + SignedDistanceField sdf(map, "elevation", minHeight, maxHeight); + + // Check at different heights/ + for (float height = minHeight; height < maxHeight; height += resolution) { + const auto naiveSignedDistance = naiveSignedDistanceAtHeight(mapData, height, resolution); + + for (int i = 0; i < mapData.rows(); ++i) { + for (int j = 0; j < mapData.rows(); ++j) { + Position position2d; + map.getPosition({i, j}, position2d); + + const auto sdfValue = sdf.value({position2d.x(), position2d.y(), height}); + const auto sdfCheck = naiveSignedDistance(i, j); + ASSERT_LT(std::abs(sdfValue - sdfCheck), 1e-4); + } + } + } +} + +TEST(testSignedDistance3d, randomTerrainDerivative) { + const int n = 10; + const int m = 20; + const float resolution = 0.1; + GridMap map; + map.setGeometry({n * resolution, m * resolution}, resolution); + map.add("elevation"); + map.get("elevation").setRandom(); // random [-1.0, 1.0] + const Matrix mapData = map.get("elevation"); + const float minHeight = mapData.minCoeff(); + const float maxHeight = mapData.maxCoeff(); + + SignedDistanceField sdf(map, "elevation", minHeight, maxHeight); + + // Check at different heights/ + int numLayers = (maxHeight - minHeight) / resolution; + for (int k = 0; k <= numLayers; ++k) { + const float height = minHeight + k * resolution; + const auto naiveSignedDistance = naiveSignedDistanceAtHeight(mapData, height, resolution); + const auto naiveSignedDistanceNext = naiveSignedDistanceAtHeight(mapData, height + resolution, resolution); + const auto naiveSignedDistancePrevious = naiveSignedDistanceAtHeight(mapData, height - resolution, resolution); + + for (int i = 0; i < mapData.rows(); ++i) { + for (int j = 0; j < mapData.rows(); ++j) { + Position position2d; + map.getPosition({i, j}, position2d); + const auto sdfderivative = sdf.valueAndDerivative(Position3{position2d.x(), position2d.y(), height}); + const auto sdfCheck = naiveSignedDistance(i, j); + ASSERT_LT(std::abs(sdfderivative.first - sdfCheck), 1e-4); + + // Check finite difference + float dx = 0.0; + if (i > 0) { + if (i + 1 < mapData.rows()) { + dx = (naiveSignedDistance(i + 1, j) - naiveSignedDistance(i - 1, j)) / (-2.0 * resolution); + } else { + dx = (naiveSignedDistance(i, j) - naiveSignedDistance(i - 1, j)) / (-resolution); + } + } else { + dx = (naiveSignedDistance(i + 1, j) - naiveSignedDistance(i, j)) / (-resolution); + } + ASSERT_LT(std::abs(dx - sdfderivative.second.x()), 1e-4); + + float dy = 0.0; + if (j > 0) { + if (j + 1 < mapData.cols()) { + dy = (naiveSignedDistance(i, j + 1) - naiveSignedDistance(i, j - 1)) / (-2.0 * resolution); + } else { + dy = (naiveSignedDistance(i, j) - naiveSignedDistance(i, j - 1)) / (-resolution); + } + } else { + dy = (naiveSignedDistance(i, j + 1) - naiveSignedDistance(i, j)) / (-resolution); + } + ASSERT_LT(std::abs(dy - sdfderivative.second.y()), 1e-4); + + float dz = 0.0; + if (k > 0) { + if (k < numLayers) { + dz = (naiveSignedDistanceNext(i, j) - naiveSignedDistancePrevious(i, j)) / (2.0 * resolution); + } else { + dz = (naiveSignedDistance(i, j) - naiveSignedDistancePrevious(i, j)) / (resolution); + } + } else { + dz = (naiveSignedDistanceNext(i, j) - naiveSignedDistance(i, j)) / (resolution); + } + ASSERT_LT(std::abs(dz - sdfderivative.second.z()), 1e-4); + } + } + } +} + +TEST(testSignedDistance3d, extrapolation) { + const int n = 20; + const int m = 30; + const float resolution = 0.1; + const float h = 0.5; + GridMap map; + map.setGeometry({n * resolution, m * resolution}, resolution); + map.add("elevation"); + map.get("elevation").setConstant(h); // random [-1.0, 1.0] + const Matrix mapData = map.get("elevation"); + const float minHeight = h - resolution; + const float maxHeight = h + resolution; + + SignedDistanceField sdf(map, "elevation", minHeight, maxHeight); + + // Check at different heights/ + for (float height = h - 1.0; height < h + 1.0; height += resolution) { + const auto naiveSignedDistance = naiveSignedDistanceAtHeight(mapData, height, resolution); + + for (int i = 0; i < mapData.rows(); ++i) { + for (int j = 0; j < mapData.rows(); ++j) { + Position position2d; + map.getPosition({i, j}, position2d); + + const auto sdfValueAndDerivative = sdf.valueAndDerivative({position2d.x(), position2d.y(), height}); + const auto sdfCheck = naiveSignedDistance(i, j); + ASSERT_LT(std::abs(sdfValueAndDerivative.first - sdfCheck), 1e-4); + + // Constant terrain, derivative should be up everywhere + ASSERT_LT((sdfValueAndDerivative.second - SignedDistanceField::Derivative3::UnitZ()).norm(), 1e-4); + } + } + } +} \ No newline at end of file diff --git a/grid_map_visualization/CHANGELOG.rst b/grid_map_visualization/CHANGELOG.rst index 1853c121e..2dc865c06 100644 --- a/grid_map_visualization/CHANGELOG.rst +++ b/grid_map_visualization/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_visualization ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ From 4249a9dc947bcdd0f1cae735bdd723089c41d573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Eli=20Vi=C3=B1a=20Barrientos?= Date: Mon, 27 Jun 2022 16:23:33 +0000 Subject: [PATCH 49/83] Merge branch 'fix/grid_map_core_version' into 'master' [grid_map] Fix package version GitOrigin-RevId: cec3640405f00ade48b5426a54597f632699b8e4 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 275092465..20f21b69b 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.10 + 1.7.0 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 1c9e083e5..e3194b5a3 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.10 + 1.7.0 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 3a2d990cd..e36db106a 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.10 + 1.7.0 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 929c4876d..98afea9f1 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.10 + 1.7.0 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 4589ede38..f50328ffc 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.10 + 1.7.0 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 59644c514..149fd2cf8 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.11 + 1.7.0 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 4c5bfa50b..d76505073 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.10 + 1.7.0 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index d823d7ba8..69f740079 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.10 + 1.7.0 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 7d89beb1e..1ab7e1196 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.10 + 1.7.0 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 6b1f75e28..c9f8cd44c 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.10 + 1.7.0 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 12ca87f79..19aecf329 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.10 + 1.7.0 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index a6a4ebafd..efcac2442 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.10 + 1.7.0 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 7e87ad8ee..68be4c3b2 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.10 + 1.7.0 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 16560b88c..a9d61d4bf 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.10 + 1.7.0 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 52c10ef50c20a0203cde529e5af158105eadb29d Mon Sep 17 00:00:00 2001 From: Remo Diethelm Date: Fri, 1 Jul 2022 17:01:57 +0200 Subject: [PATCH 50/83] Merge remote-tracking branch 'origin/release-22.07' GitOrigin-RevId: a6b0e9f7981ce7fdf8387ac8503701b040d9f7fd --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 20f21b69b..11bc3b9bc 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.0 + 1.7.1 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index e3194b5a3..461a6e664 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.0 + 1.7.1 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index e36db106a..b94740b50 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.0 + 1.7.1 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 98afea9f1..7287960b3 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.0 + 1.7.1 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index f50328ffc..ffd22ca47 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.0 + 1.7.1 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 149fd2cf8..6a83f3bda 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.0 + 1.7.1 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index d76505073..dceb0df53 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.0 + 1.7.1 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 69f740079..5959af246 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.0 + 1.7.1 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 1ab7e1196..19bf13de7 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.0 + 1.7.1 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index c9f8cd44c..cb7c3603b 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.0 + 1.7.1 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 19aecf329..82d3b3316 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.0 + 1.7.1 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index efcac2442..8abe1c625 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.0 + 1.7.1 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 68be4c3b2..829b411eb 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.0 + 1.7.1 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index a9d61d4bf..413163097 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.0 + 1.7.1 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From d6f091225dcc82190a2c24ef12414605e6373b24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Mon, 11 Jul 2022 14:28:32 +0000 Subject: [PATCH 51/83] Merge branch 'fix/grid_map_core/reduce_even_more_clang_warnings' into 'master' [grid_map_core] removed more clang warnings. GitOrigin-RevId: 967411d912d34b4714656801373419c765a3afd8 --- .../grid_map_core/CubicInterpolation.hpp | 12 +- .../include/grid_map_core/GridMap.hpp | 2 +- .../include/grid_map_core/GridMapMath.hpp | 26 ++-- .../include/grid_map_core/Polygon.hpp | 33 ++-- .../include/grid_map_core/SubmapGeometry.hpp | 2 +- .../grid_map_core/eigen_plugins/Functors.hpp | 2 +- .../include/grid_map_core/gtest_eigen.hpp | 53 +++---- .../iterators/CircleIterator.hpp | 7 - .../iterators/EllipseIterator.hpp | 7 - .../iterators/GridMapIterator.hpp | 25 +-- .../grid_map_core/iterators/LineIterator.hpp | 16 +- .../iterators/PolygonIterator.hpp | 10 +- .../iterators/SlidingWindowIterator.hpp | 15 +- .../iterators/SpiralIterator.hpp | 18 +-- .../iterators/SubmapIterator.hpp | 10 +- grid_map_core/src/CubicInterpolation.cpp | 7 +- grid_map_core/src/GridMap.cpp | 4 +- grid_map_core/src/GridMapMath.cpp | 144 +++++++++++------- grid_map_core/src/Polygon.cpp | 2 - grid_map_core/src/SubmapGeometry.cpp | 4 - .../src/iterators/CircleIterator.cpp | 4 +- .../src/iterators/EllipseIterator.cpp | 2 +- .../src/iterators/GridMapIterator.cpp | 14 +- grid_map_core/src/iterators/LineIterator.cpp | 28 +--- .../src/iterators/PolygonIterator.cpp | 34 ++--- .../src/iterators/SlidingWindowIterator.cpp | 33 ++-- .../src/iterators/SpiralIterator.cpp | 47 +++--- .../src/iterators/SubmapIterator.cpp | 14 +- grid_map_core/test/EigenPluginsTest.cpp | 3 +- grid_map_core/test/EllipseIteratorTest.cpp | 6 - grid_map_core/test/GridMapIteratorTest.cpp | 14 +- grid_map_core/test/GridMapMathTest.cpp | 28 ++-- grid_map_core/test/GridMapTest.cpp | 57 +++---- grid_map_core/test/LineIteratorTest.cpp | 10 +- grid_map_core/test/PolygonIteratorTest.cpp | 33 ++-- grid_map_core/test/PolygonTest.cpp | 35 +++-- .../test/SlidingWindowIteratorTest.cpp | 33 ++-- grid_map_core/test/SpiralIteratorTest.cpp | 13 +- grid_map_core/test/SubmapIteratorTest.cpp | 29 ++-- grid_map_core/test/test_grid_map_core.cpp | 2 +- grid_map_core/test/test_helpers.cpp | 32 ++-- grid_map_core/test/test_helpers.hpp | 2 +- 42 files changed, 402 insertions(+), 470 deletions(-) diff --git a/grid_map_core/include/grid_map_core/CubicInterpolation.hpp b/grid_map_core/include/grid_map_core/CubicInterpolation.hpp index 3b5008874..360e38442 100644 --- a/grid_map_core/include/grid_map_core/CubicInterpolation.hpp +++ b/grid_map_core/include/grid_map_core/CubicInterpolation.hpp @@ -35,7 +35,7 @@ class GridMap; * necessary for interpolation. These are either 16 * function values in the case of bicubic convolution interpolation * or function values and their derivatives for the case - * of standard bicubic inteprolation. + * of standard bicubic interpolation. */ using FunctionValueMatrix = Eigen::Matrix4d; @@ -74,7 +74,7 @@ static const Eigen::Matrix4d cubicInterpolationConvolutionMatrix { -1.0, 3.0, -3.0, 1.0).finished() }; /* - * Index of the middle knot for bicubic inteprolation. This is + * Index of the middle knot for bicubic interpolation. This is * the function value with subscripts (0,0), i.e. f00 in * https://en.wikipedia.org/wiki/Bicubic_interpolation * In the grid map it corresponds to the grid map point closest to the @@ -100,7 +100,7 @@ bool getNormalizedCoordinates(const GridMap &gridMap, const Position &queriedPos Position *position); /* - * Queries the grid map for function values at the coordiantes which are neccesary for + * Queries the grid map for function values at the coordinates which are necessary for * performing the interpolation. The right function values are then assembled * in a matrix. * @param[in] gridMap - grid map with the data @@ -119,7 +119,7 @@ bool assembleFunctionValueMatrix(const GridMap &gridMap, const std::string &laye * Performs convolution in 1D. the function requires 4 function values * to compute the convolution. The result is interpolated data in 1D. * @param[in] t - normalized coordinate (x or y) - * @param[in] functionValues - vector of 4 function values neccessary to perform + * @param[in] functionValues - vector of 4 function values necessary to perform * interpolation in 1 dimension. * @return - interpolated value at normalized coordinate t */ @@ -177,7 +177,7 @@ struct DataMatrix /* * Interpolation is performed on a unit square. - * Hence we need to compute 4 corners of that unit square, + * Hence, we need to compute 4 corners of that unit square, * and find their indices in the grid map. IndicesMatrix * is a container that stores those indices. Each index * contains two numbers (row number, column number) in the @@ -313,7 +313,7 @@ double mixedSecondOrderDerivativeAt(const Matrix &layerData, const Index &index, double evaluatePolynomial(const FunctionValueMatrix &functionValues, double tx, double ty); /* - * Assemble function value matrix from small submatrices containing function values + * Assemble function value matrix from small sub-matrices containing function values * or derivative values at the corners of the unit square. * See https://en.wikipedia.org/wiki/Bicubic_interpolation for details. * diff --git a/grid_map_core/include/grid_map_core/GridMap.hpp b/grid_map_core/include/grid_map_core/GridMap.hpp index b07123059..c7e06c325 100644 --- a/grid_map_core/include/grid_map_core/GridMap.hpp +++ b/grid_map_core/include/grid_map_core/GridMap.hpp @@ -578,7 +578,7 @@ class GridMap { //! Size of the buffer (rows and cols of the data structure). Size size_; - //! Circular buffer start indeces. + //! Circular buffer start indices. Index startIndex_; public: diff --git a/grid_map_core/include/grid_map_core/GridMapMath.hpp b/grid_map_core/include/grid_map_core/GridMapMath.hpp index 0e808780b..fb1a38eb3 100644 --- a/grid_map_core/include/grid_map_core/GridMapMath.hpp +++ b/grid_map_core/include/grid_map_core/GridMapMath.hpp @@ -19,8 +19,8 @@ namespace grid_map { union Color { - unsigned long longColor; - float floatColor; + unsigned long longColor_; + float floatColor_; }; /*! @@ -83,7 +83,7 @@ void getPositionOfDataStructureOrigin(const Position& position, Position& positionOfOrigin); /*! - * Computes how many cells/indeces the map is moved based on a position shift in + * Computes how many cells/indices the map is moved based on a position shift in * the grid map frame. Use this function if you are moving the grid map * and want to ensure that the cells match before and after. * @param[out] indexShift the corresponding shift of the indices. @@ -100,7 +100,7 @@ bool getIndexShiftFromPositionShift(Index& indexShift, * if you are moving the grid map and want to ensure that the cells match * before and after. * @param[out] positionShift the corresponding shift in position in the grid map frame. - * @param[in] indexShift the desired shift of the indeces. + * @param[in] indexShift the desired shift of the indices. * @param[in] resolution the resolution of the map. * @return true if successful. */ @@ -120,7 +120,7 @@ bool checkIfIndexInRange(const Index& index, const Size& bufferSize); * Bounds an index that runs out of the range of the buffer. * This means that an index that overflows is stopped at the last valid index. * This is the 2d version of boundIndexToRange(int&, const int&). - * @param[in/out] index the indeces that will be bounded to the valid region of the buffer. + * @param[in/out] index the indices that will be bounded to the valid region of the buffer. * @param[in] bufferSize the size of the buffer. */ void boundIndexToRange(Index& index, const Size& bufferSize); @@ -137,7 +137,7 @@ void boundIndexToRange(int& index, const int& bufferSize); * Wraps an index that runs out of the range of the buffer back into allowed the region. * This means that an index that overflows is reset to zero. * This is the 2d version of wrapIndexToRange(int&, const int&). - * @param[in/out] index the indeces that will be wrapped into the valid region of the buffer. + * @param[in/out] index the indices that will be wrapped into the valid region of the buffer. * @param[in] bufferSize the size of the buffer. */ void wrapIndexToRange(Index& index, const Size& bufferSize); @@ -164,7 +164,7 @@ void boundPositionToRange(Position& position, const Length& mapLength, const Pos * and the map frame (x/y-coordinate). * @return the alignment transformation. */ -const Eigen::Matrix2i getBufferOrderToMapFrameAlignment(); +Eigen::Matrix2i getBufferOrderToMapFrameAlignment(); /*! * Given a map and a desired submap (defined by position and size), this function computes @@ -204,7 +204,7 @@ bool getSubmapInformation(Index& submapTopLeftIndex, * @param bottomRightIndex the bottom right index in the map. * @return buffer size for the submap. */ -Size getSubmapSizeFromCornerIndeces(const Index& topLeftIndex, const Index& bottomRightIndex, +Size getSubmapSizeFromCornerIndices(const Index& topLeftIndex, const Index& bottomRightIndex, const Size& bufferSize, const Index& bufferStartIndex); /*! @@ -230,7 +230,7 @@ bool getBufferRegionsForSubmap(std::vector& submapBufferRegions, * @param[in/out] index the index in the map that is incremented (corrected for the circular buffer). * @param[in] bufferSize the map buffer size. * @param[in] bufferStartIndex the map buffer start index. - * @return true if successfully incremented indeces, false if end of iteration limits are reached. + * @return true if successfully incremented indices, false if end of iteration limits are reached. */ bool incrementIndex(Index& index, const Size& bufferSize, const Index& bufferStartIndex = Index::Zero()); @@ -249,7 +249,7 @@ bool incrementIndex(Index& index, const Size& bufferSize, * @param[in] submapBufferSize the submap buffer size. * @param[in] bufferSize the map buffer size. * @param[in] bufferStartIndex the map buffer start index. - * @return true if successfully incremented indeces, false if end of iteration limits are reached. + * @return true if successfully incremented indices, false if end of iteration limits are reached. */ bool incrementIndexForSubmap(Index& submapIndex, Index& index, const Index& submapTopLeftIndex, const Size& submapBufferSize, const Size& bufferSize, @@ -284,7 +284,7 @@ Index getBufferIndexFromIndex(const Index& index, const Size& bufferSize, const * @param[in] (optional) rowMajor if the linear index is generated for row-major format. * @return the linear 1d index. */ -size_t getLinearIndexFromIndex(const Index& index, const Size& bufferSize, const bool rowMajor = false); +size_t getLinearIndexFromIndex(const Index& index, const Size& bufferSize, bool rowMajor = false); /*! * Returns the regular index (2-dim.) corresponding to the linear index (1-dim.) for a given buffer size. @@ -293,7 +293,7 @@ size_t getLinearIndexFromIndex(const Index& index, const Size& bufferSize, const * @param[in] (optional) rowMajor if the linear index is generated for row-major format. * @return the regular 2d index. */ -Index getIndexFromLinearIndex(const size_t linearIndex, const Size& bufferSize, const bool rowMajor = false); +Index getIndexFromLinearIndex(size_t linearIndex, const Size& bufferSize, bool rowMajor = false); /*! * Transforms an int color value (concatenated RGB values) to an int color vector (RGB from 0-255). @@ -341,4 +341,4 @@ void colorVectorToValue(const Eigen::Vector3i& colorVector, float& colorValue); */ void colorVectorToValue(const Eigen::Vector3f& colorVector, float& colorValue); -} // namespace +} // namespace grid_map diff --git a/grid_map_core/include/grid_map_core/Polygon.hpp b/grid_map_core/include/grid_map_core/Polygon.hpp index cf486fbd8..d7720fb55 100644 --- a/grid_map_core/include/grid_map_core/Polygon.hpp +++ b/grid_map_core/include/grid_map_core/Polygon.hpp @@ -37,11 +37,6 @@ class Polygon */ Polygon(std::vector vertices); - /*! - * Destructor. - */ - virtual ~Polygon(); - /*! * Check if point is inside polygon. * @param point the point to be checked. @@ -60,7 +55,7 @@ class Polygon * @param index the index of the requested vertex. * @return the requested vertex. */ - const Position& getVertex(const size_t index) const; + const Position& getVertex(size_t index) const; /*! * Removes all vertices from the polygon. @@ -72,7 +67,7 @@ class Polygon * @param index the index of the requested vertex. * @return the requested vertex. */ - const Position& operator [](const size_t index) const; + const Position& operator [](size_t index) const; /*! * Returns the vertices of the polygon. @@ -90,7 +85,7 @@ class Polygon * Set the timestamp of the polygon. * @param timestamp the timestamp to set (in nanoseconds). */ - void setTimestamp(const uint64_t timestamp); + void setTimestamp(uint64_t timestamp); /*! * Get the timestamp of the polygon. @@ -156,15 +151,15 @@ class Polygon * @param margin the margin to offset the polygon by (in [m]). * @return true if successful, false otherwise. */ - bool offsetInward(const double margin); + bool offsetInward(double margin); /*! - * If only two verices are given, this methods generates a + * If only two vertices are given, this methods generates a * `thickened` line polygon with four vertices. * @param thickness the desired thickness of the line. * @return true if successful, false otherwise. */ - bool thickenLine(const double thickness); + bool thickenLine(double thickness); /*! * Return a triangulated version of the polygon. @@ -179,8 +174,8 @@ class Polygon * @param[in] nVertices number of vertices of the approximation polygon. Default = 20. * @return circle as polygon. */ - static Polygon fromCircle(const Position center, const double radius, - const int nVertices = 20); + static Polygon fromCircle(Position center, double radius, + int nVertices = 20); /*! * Approximates two circles with a convex hull and returns it as polygon. @@ -190,10 +185,10 @@ class Polygon * @param[in] nVertices number of vertices of the approximation polygon. Default = 20. * @return convex hull of the two circles as polygon. */ - static Polygon convexHullOfTwoCircles(const Position center1, - const Position center2, - const double radius, - const int nVertices = 20); + static Polygon convexHullOfTwoCircles(Position center1, + Position center2, + double radius, + int nVertices = 20); /*! * Computes the convex hull of two polygons and returns it as polygon. @@ -237,7 +232,7 @@ class Polygon static double vectorsMakeClockwiseTurn(const Eigen::Vector2d& pointO, const Eigen::Vector2d& pointA, const Eigen::Vector2d& pointB); - + // NOLINTBEGIN(misc-non-private-member-variables-in-classes) //! Frame id of the polygon. std::string frameId_; @@ -246,7 +241,7 @@ class Polygon //! Vertices of the polygon. std::vector vertices_; - + // NOLINTEND(misc-non-private-member-variables-in-classes) public: EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; diff --git a/grid_map_core/include/grid_map_core/SubmapGeometry.hpp b/grid_map_core/include/grid_map_core/SubmapGeometry.hpp index 02143b5f0..3e7b0487d 100644 --- a/grid_map_core/include/grid_map_core/SubmapGeometry.hpp +++ b/grid_map_core/include/grid_map_core/SubmapGeometry.hpp @@ -35,7 +35,7 @@ class SubmapGeometry SubmapGeometry(const GridMap& gridMap, const Position& position, const Length& length, bool& isSuccess); - virtual ~SubmapGeometry(); + virtual ~SubmapGeometry() = default; const GridMap& getGridMap() const; const Length& getLength() const; diff --git a/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp b/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp index 9ae72e3de..1f9f6658e 100644 --- a/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp +++ b/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp @@ -18,7 +18,7 @@ struct Clamp max_(max) { } - const Scalar operator()(const Scalar& x) const + Scalar operator()(const Scalar& x) const { return x < min_ ? min_ : (x > max_ ? max_ : x); } diff --git a/grid_map_core/include/grid_map_core/gtest_eigen.hpp b/grid_map_core/include/grid_map_core/gtest_eigen.hpp index c061fb103..8872ab8f2 100644 --- a/grid_map_core/include/grid_map_core/gtest_eigen.hpp +++ b/grid_map_core/include/grid_map_core/gtest_eigen.hpp @@ -96,8 +96,9 @@ namespace grid_map { } template - void assertFinite(const M1 & A, std::string const & message = "") + void assertFinite(const M1 & A, std::string const & /*message*/ = "") { + std::cout << ("test") << std::endl; for(int r = 0; r < A.rows(); r++) { for(int c = 0; c < A.cols(); c++) @@ -107,58 +108,58 @@ namespace grid_map { } } - inline bool compareRelative(double a, double b, double percentTolerance, double * percentError = NULL) - { - // \todo: does anyone have a better idea? + inline bool compareRelative(double a, double b, double percentTolerance, double* percentError = nullptr) { + // \todo: does anyone have a better idea? double fa = fabs(a); double fb = fabs(b); - if( (fa < 1e-15 && fb < 1e-15) || // Both zero. - (fa == 0.0 && fb < 1e-6) || // One exactly zero and the other small - (fb == 0.0 && fa < 1e-6) ) // ditto - return true; + if ((fa < 1e-15 && fb < 1e-15) || // Both zero. + (fa == 0.0 && fb < 1e-6) || // One exactly zero and the other small + (fb == 0.0 && fa < 1e-6)) { // ditto + return true; + } - double diff = fabs(a - b)/std::max(fa,fb); - if(diff > percentTolerance * 1e-2) - { - if(percentError) - *percentError = diff * 100.0; - return false; - } + double diff = fabs(a - b) / std::max(fa, fb); + if (diff > percentTolerance * 1e-2) { + if (percentError != nullptr) { + *percentError = diff * 100.0; + } + return false; + } return true; } #define ASSERT_DOUBLE_MX_EQ(A, B, PERCENT_TOLERANCE, MSG) \ - ASSERT_EQ((size_t)(A).rows(), (size_t)(B).rows()) << MSG << "\nMatrix " << #A << ":\n" << A << "\nand matrix " << #B << "\n" << B << "\nare not the same size"; \ - ASSERT_EQ((size_t)(A).cols(), (size_t)(B).cols()) << MSG << "\nMatrix " << #A << ":\n" << A << "\nand matrix " << #B << "\n" << B << "\nare not the same size"; \ + ASSERT_EQ((size_t)(A).rows(), (size_t)(B).rows()) << (MSG) << "\nMatrix " << #A << ":\n" << (A) << "\nand matrix " << #B << "\n" << (B) << "\nare not the same size"; \ + ASSERT_EQ((size_t)(A).cols(), (size_t)(B).cols()) << (MSG) << "\nMatrix " << #A << ":\n" << (A) << "\nand matrix " << #B << "\n" << (B) << "\nare not the same size"; \ for(int r = 0; r < (A).rows(); r++) \ { \ for(int c = 0; c < (A).cols(); c++) \ { \ double percentError = 0.0; \ ASSERT_TRUE(grid_map::compareRelative( (A)(r,c), (B)(r,c), PERCENT_TOLERANCE, &percentError)) \ - << MSG << "\nComparing:\n" \ + << (MSG) << "\nComparing:\n" \ << #A << "(" << r << "," << c << ") = " << (A)(r,c) << std::endl \ << #B << "(" << r << "," << c << ") = " << (B)(r,c) << std::endl \ - << "Error was " << percentError << "% > " << PERCENT_TOLERANCE << "%\n" \ - << "\nMatrix " << #A << ":\n" << A << "\nand matrix " << #B << "\n" << B; \ + << "Error was " << percentError << "% > " << (PERCENT_TOLERANCE) << "%\n" \ + << "\nMatrix " << #A << ":\n" << (A) << "\nand matrix " << #B << "\n" << (B); \ } \ } #define ASSERT_DOUBLE_SPARSE_MX_EQ(A, B, PERCENT_TOLERANCE, MSG) \ - ASSERT_EQ((size_t)(A).rows(), (size_t)(B).rows()) << MSG << "\nMatrix " << #A << ":\n" << A << "\nand matrix " << #B << "\n" << B << "\nare not the same size"; \ - ASSERT_EQ((size_t)(A).cols(), (size_t)(B).cols()) << MSG << "\nMatrix " << #A << ":\n" << A << "\nand matrix " << #B << "\n" << B << "\nare not the same size"; \ + ASSERT_EQ((size_t)(A).rows(), (size_t)(B).rows()) << (MSG) << "\nMatrix " << #A << ":\n" << (A) << "\nand matrix " << #B << "\n" << (B) << "\nare not the same size"; \ + ASSERT_EQ((size_t)(A).cols(), (size_t)(B).cols()) << (MSG) << "\nMatrix " << #A << ":\n" << (A) << "\nand matrix " << #B << "\n" << (B) << "\nare not the same size"; \ for(int r = 0; r < (A).rows(); r++) \ { \ for(int c = 0; c < (A).cols(); c++) \ { \ double percentError = 0.0; \ ASSERT_TRUE(grid_map::compareRelative( (A).coeff(r,c), (B).coeff(r,c), PERCENT_TOLERANCE, &percentError)) \ - << MSG << "\nComparing:\n" \ + << (MSG) << "\nComparing:\n" \ << #A << "(" << r << "," << c << ") = " << (A).coeff(r,c) << std::endl \ << #B << "(" << r << "," << c << ") = " << (B).coeff(r,c) << std::endl \ - << "Error was " << percentError << "% > " << PERCENT_TOLERANCE << "%\n" \ - << "\nMatrix " << #A << ":\n" << A << "\nand matrix " << #B << "\n" << B; \ + << "Error was " << percentError << "% > " << (PERCENT_TOLERANCE) << "%\n" \ + << "\nMatrix " << #A << ":\n" << (A) << "\nand matrix " << #B << "\n" << (B); \ } \ } -} // namespace +} // namespace grid_map diff --git a/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp b/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp index fa94cbb30..14f271344 100644 --- a/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp @@ -32,13 +32,6 @@ class CircleIterator */ CircleIterator(const GridMap& gridMap, const Position& center, double radius); - /*! - * Assignment operator. - * @param iterator the iterator to copy data from. - * @return a reference to *this. - */ - CircleIterator& operator =(const CircleIterator& other) = default; - /*! * Compare to another iterator. * @return whether the current iterator points to a different address than the other one. diff --git a/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp b/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp index f013f1f03..06be4d480 100644 --- a/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp @@ -34,13 +34,6 @@ class EllipseIterator */ EllipseIterator(const GridMap& gridMap, const Position& center, const Length& length, double rotation = 0.0); - /*! - * Assignment operator. - * @param iterator the iterator to copy data from. - * @return a reference to *this. - */ - EllipseIterator& operator =(const EllipseIterator& other) = default; - /*! * Compare to another iterator. * @return whether the current iterator points to a different address than the other one. diff --git a/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp b/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp index 622f217f6..3a3443b15 100644 --- a/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/GridMapIterator.hpp @@ -34,19 +34,6 @@ class GridMapIterator */ GridMapIterator(const GridMapIterator* other); - /*! - * Copy constructor. - * @param other the object to copy. - */ - GridMapIterator(const GridMapIterator &other) = default; - - /*! - * Assignment operator. - * @param iterator the iterator to copy data from. - * @return a reference to *this. - */ - GridMapIterator& operator =(const GridMapIterator& other); - /*! * Compare to another iterator. * @return whether the current iterator points to a different address than the other one. @@ -58,7 +45,7 @@ class GridMapIterator * to which the iterator is pointing at. * @return the regular index (2-dim.) of the cell on which the iterator is pointing. */ - const Index operator *() const; + Index operator *() const; /*! * Returns the the linear (1-dim.) index of the cell the iterator is pointing at. @@ -72,7 +59,7 @@ class GridMapIterator * Retrieve the index as unwrapped index, i.e., as the corresponding index of a * grid map with no circular buffer offset. */ - const Index getUnwrappedIndex() const; + Index getUnwrappedIndex() const; /*! * Increase the iterator to the next element. @@ -92,8 +79,8 @@ class GridMapIterator */ bool isPastEnd() const; -protected: - + protected: + // NOLINTBEGIN(misc-non-private-member-variables-in-classes) //! Size of the buffer. Size size_; @@ -108,9 +95,11 @@ class GridMapIterator //! Is iterator out of scope. bool isPastEnd_; + // NOLINTEND(misc-non-private-member-variables-in-classes) public: EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/include/grid_map_core/iterators/LineIterator.hpp b/grid_map_core/include/grid_map_core/iterators/LineIterator.hpp index d3f23f188..ffbdc9ce1 100644 --- a/grid_map_core/include/grid_map_core/iterators/LineIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/LineIterator.hpp @@ -40,13 +40,6 @@ class LineIterator */ LineIterator(const grid_map::GridMap& gridMap, const Index& start, const Index& end); - /*! - * Assignment operator. - * @param iterator the iterator to copy data from. - * @return a reference to *this. - */ - LineIterator& operator =(const LineIterator& other); - /*! * Compare to another iterator. * @return whether the current iterator points to a different address than the other one. @@ -96,7 +89,7 @@ class LineIterator * @param[out] index the index of the moved start position. * @return true if successful, false otherwise. */ - bool getIndexLimitedToMapRange(const grid_map::GridMap& gridMap, const Position& start, + static bool getIndexLimitedToMapRange(const grid_map::GridMap& gridMap, const Position& start, const Position& end, Index& index); //! Current index. @@ -116,12 +109,12 @@ class LineIterator //! Helper variables for Bresenham Line Drawing algorithm. Size increment1_, increment2_; - int denominator_, numerator_, numeratorAdd_; + int denominator_{0}, numerator_{0}, numeratorAdd_{0}; //! Map information needed to get position from iterator. Length mapLength_; Position mapPosition_; - double resolution_; + double resolution_{NAN}; Size bufferSize_; Index bufferStartIndex_; @@ -129,4 +122,5 @@ class LineIterator EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/include/grid_map_core/iterators/PolygonIterator.hpp b/grid_map_core/include/grid_map_core/iterators/PolygonIterator.hpp index da68fd65c..6027670ab 100644 --- a/grid_map_core/include/grid_map_core/iterators/PolygonIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/PolygonIterator.hpp @@ -30,13 +30,6 @@ class PolygonIterator */ PolygonIterator(const grid_map::GridMap& gridMap, const grid_map::Polygon& polygon); - /*! - * Assignment operator. - * @param iterator the iterator to copy data from. - * @return a reference to *this. - */ - PolygonIterator& operator =(const PolygonIterator& other); - /*! * Compare to another iterator. * @return whether the current iterator points to a different address than the other one. @@ -94,4 +87,5 @@ class PolygonIterator EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/include/grid_map_core/iterators/SlidingWindowIterator.hpp b/grid_map_core/include/grid_map_core/iterators/SlidingWindowIterator.hpp index c581f8fbf..42b2a95a2 100644 --- a/grid_map_core/include/grid_map_core/iterators/SlidingWindowIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/SlidingWindowIterator.hpp @@ -41,32 +41,32 @@ class SlidingWindowIterator : public GridMapIterator */ SlidingWindowIterator(const GridMap& gridMap, const std::string& layer, const EdgeHandling& edgeHandling = EdgeHandling::CROP, - const size_t windowSize = 3); + size_t windowSize = 3); /*! * Copy constructor. * @param other the object to copy. */ - SlidingWindowIterator(const SlidingWindowIterator* other); + explicit SlidingWindowIterator(const SlidingWindowIterator* other); /*! * Set the side length of the moving window (in m). * @param gridMap the grid map to iterate on. * @param windowLength the side length of the window (in m). */ - void setWindowLength(const GridMap& gridMap, const double windowLength); + void setWindowLength(const GridMap& gridMap, double windowLength); /*! * Increase the iterator to the next element. * @return a reference to the updated iterator. */ - SlidingWindowIterator& operator ++(); + SlidingWindowIterator& operator ++() override; /*! * Return the data of the sliding window. * @return the data of the sliding window. */ - const Matrix getData() const; + Matrix getData() const; private: //! Setup members. @@ -85,10 +85,11 @@ class SlidingWindowIterator : public GridMapIterator size_t windowSize_; //! Size of the border of the window around the center cell. - size_t windowMargin_; + size_t windowMargin_{0}; public: EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/include/grid_map_core/iterators/SpiralIterator.hpp b/grid_map_core/include/grid_map_core/iterators/SpiralIterator.hpp index b3715cb3d..f1c3966a8 100644 --- a/grid_map_core/include/grid_map_core/iterators/SpiralIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/SpiralIterator.hpp @@ -29,14 +29,7 @@ class SpiralIterator * @param center the position of the circle center. * @param radius the radius of the circle. */ - SpiralIterator(const grid_map::GridMap& gridMap, const Eigen::Vector2d& center, const double radius); - - /*! - * Assignment operator. - * @param iterator the iterator to copy data from. - * @return a reference to *this. - */ - SpiralIterator& operator =(const SpiralIterator& other); + SpiralIterator(const grid_map::GridMap& gridMap, Eigen::Vector2d center, double radius); /*! * Compare to another iterator. @@ -74,7 +67,7 @@ class SpiralIterator * Check if index is inside the circle. * @return true if inside, false otherwise. */ - bool isInside(const Index index) const; + bool isInside(const Index& index) const; /*! * Uses the current distance to get the points of a ring @@ -82,8 +75,8 @@ class SpiralIterator */ void generateRing(); - int signum(const int val) { - return (0 < val) - (val < 0); + static int signum(const int val) { + return static_cast(0 < val) - static_cast(val < 0); } //! Position of the circle center; @@ -112,4 +105,5 @@ class SpiralIterator EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/include/grid_map_core/iterators/SubmapIterator.hpp b/grid_map_core/include/grid_map_core/iterators/SubmapIterator.hpp index 9ca7706bd..3cf1a1a48 100644 --- a/grid_map_core/include/grid_map_core/iterators/SubmapIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/SubmapIterator.hpp @@ -52,13 +52,6 @@ class SubmapIterator */ SubmapIterator(const SubmapIterator* other); - /*! - * Assignment operator. - * @param iterator the iterator to copy data from. - * @return a reference to *this. - */ - SubmapIterator& operator =(const SubmapIterator& other); - /*! * Compare to another iterator. * @return whether the current iterator points to a different address than the other one. @@ -122,4 +115,5 @@ class SubmapIterator EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/src/CubicInterpolation.cpp b/grid_map_core/src/CubicInterpolation.cpp index 86c8ced2b..919530046 100644 --- a/grid_map_core/src/CubicInterpolation.cpp +++ b/grid_map_core/src/CubicInterpolation.cpp @@ -9,7 +9,6 @@ #include "grid_map_core/CubicInterpolation.hpp" #include "grid_map_core/GridMap.hpp" -#include "grid_map_core/GridMapMath.hpp" namespace grid_map { @@ -32,7 +31,7 @@ double getLayerValue(const Matrix &layerMat, unsigned int rowReq, unsigned int c /** - * BICUBIC CONVLUTION INTERPOLATION ALGORITHM + * BICUBIC CONVOLUTION INTERPOLATION ALGORITHM * also known as piecewise bicubic interpolation, * it does not ensure continuity of the first derivatives. * see: @@ -188,7 +187,7 @@ bool evaluateBicubicInterpolation(const GridMap &gridMap, const std::string &lay FunctionValueMatrix functionValues; assembleFunctionValueMatrix(f, dfx, dfy, ddfxy, &functionValues); - // get normalized coordiantes + // get normalized coordinates Position normalizedCoordinates; if (!computeNormalizedCoordinates(gridMap, unitSquareCornerIndices.bottomLeft_, queriedPosition, &normalizedCoordinates)) { @@ -366,7 +365,7 @@ double firstOrderDerivativeAt(const Matrix &layerData, const Index &index, Dim2D double mixedSecondOrderDerivativeAt(const Matrix &layerData, const Index &index, double resolution) { /* - * no need for dimensions since the we have to differentiate w.r.t. x and y + * no need for dimensions since we have to differentiate w.r.t. x and y * the order doesn't matter. Derivative values are the same. * Taken from https://www.mathematik.uni-dortmund.de/~kuzmin/cfdintro/lecture4.pdf */ diff --git a/grid_map_core/src/GridMap.cpp b/grid_map_core/src/GridMap.cpp index 86b7c05a3..b8633a661 100644 --- a/grid_map_core/src/GridMap.cpp +++ b/grid_map_core/src/GridMap.cpp @@ -13,8 +13,6 @@ #include "grid_map_core/SubmapGeometry.hpp" #include "grid_map_core/iterators/GridMapIterator.hpp" -#include - #include #include #include @@ -287,7 +285,7 @@ GridMap GridMap::getSubmap(const Position& position, const Length& length, bool& } GridMap GridMap::getSubmap(const Position& position, const Length& length, Index& /*indexInSubmap*/, bool& isSuccess) const { - // Submap the generate. + // Submap to generate. GridMap submap(layers_); submap.setBasicLayers(basicLayers_); submap.setTimestamp(timestamp_); diff --git a/grid_map_core/src/GridMapMath.cpp b/grid_map_core/src/GridMapMath.cpp index bc26fe0b4..b56d618fd 100644 --- a/grid_map_core/src/GridMapMath.cpp +++ b/grid_map_core/src/GridMapMath.cpp @@ -14,7 +14,7 @@ // Limits #include -using namespace std; +using std::numeric_limits; namespace grid_map { @@ -98,18 +98,34 @@ inline Index getIndexFromIndexVector( return getBufferIndexFromIndex(index, bufferSize, bufferStartIndex); } -inline BufferRegion::Quadrant getQuadrant(const Index& index, const Index& bufferStartIndex) -{ - if (index[0] >= bufferStartIndex[0] && index[1] >= bufferStartIndex[1]) return BufferRegion::Quadrant::TopLeft; - if (index[0] >= bufferStartIndex[0] && index[1] < bufferStartIndex[1]) return BufferRegion::Quadrant::TopRight; - if (index[0] < bufferStartIndex[0] && index[1] >= bufferStartIndex[1]) return BufferRegion::Quadrant::BottomLeft; - if (index[0] < bufferStartIndex[0] && index[1] < bufferStartIndex[1]) return BufferRegion::Quadrant::BottomRight; +inline BufferRegion::Quadrant getQuadrant(const Index& index, const Index& bufferStartIndex) { + if (index[0] >= bufferStartIndex[0] && index[1] >= bufferStartIndex[1]) { + return BufferRegion::Quadrant::TopLeft; + } + if (index[0] >= bufferStartIndex[0] && index[1] < bufferStartIndex[1]) { + return BufferRegion::Quadrant::TopRight; + } + if (index[0] < bufferStartIndex[0] && index[1] >= bufferStartIndex[1]) { + return BufferRegion::Quadrant::BottomLeft; + } + if (index[0] < bufferStartIndex[0] && index[1] < bufferStartIndex[1]) { + return BufferRegion::Quadrant::BottomRight; + } return BufferRegion::Quadrant::Undefined; } -} // namespace +} // namespace internal -using namespace internal; +using internal::checkIfStartIndexAtDefaultPosition; +using internal::getBufferOrderToMapFrameTransformation; +using internal::getIndexFromIndexVector; +using internal::getIndexVectorFromIndex; +using internal::getMapFrameToBufferOrderTransformation; +using internal::getQuadrant; +using internal::getVectorToFirstCell; +using internal::getVectorToOrigin; +using internal::transformBufferOrderToMapFrame; +using internal::transformMapFrameToBufferOrder; bool getPositionFromIndex(Position& position, const Index& index, @@ -119,7 +135,9 @@ bool getPositionFromIndex(Position& position, const Size& bufferSize, const Index& bufferStartIndex) { - if (!checkIfIndexInRange(index, bufferSize)) return false; + if (!checkIfIndexInRange(index, bufferSize)) { + return false; + } Vector offset; getVectorToFirstCell(offset, mapLength, resolution); position = mapPosition + offset + resolution * getIndexVectorFromIndex(index, bufferSize, bufferStartIndex); @@ -149,11 +167,8 @@ bool checkIfPositionWithinMap(const Position& position, getVectorToOrigin(offset, mapLength); Position positionTransformed = getMapFrameToBufferOrderTransformation().cast() * (position - mapPosition - offset); - if (positionTransformed.x() >= 0.0 && positionTransformed.y() >= 0.0 - && positionTransformed.x() < mapLength(0) && positionTransformed.y() < mapLength(1)) { - return true; - } - return false; + return positionTransformed.x() >= 0.0 && positionTransformed.y() >= 0.0 + && positionTransformed.x() < mapLength(0) && positionTransformed.y() < mapLength(1); } void getPositionOfDataStructureOrigin(const Position& position, @@ -190,11 +205,7 @@ bool getPositionShiftFromIndexShift(Vector& positionShift, bool checkIfIndexInRange(const Index& index, const Size& bufferSize) { - if (index[0] >= 0 && index[1] >= 0 && index[0] < bufferSize[0] && index[1] < bufferSize[1]) - { - return true; - } - return false; + return index[0] >= 0 && index[1] >= 0 && index[0] < bufferSize[0] && index[1] < bufferSize[1]; } void boundIndexToRange(Index& index, const Size& bufferSize) @@ -206,8 +217,11 @@ void boundIndexToRange(Index& index, const Size& bufferSize) void boundIndexToRange(int& index, const int& bufferSize) { - if (index < 0) index = 0; - else if (index >= bufferSize) index = bufferSize - 1; + if (index < 0) { + index = 0; + } else if (index >= bufferSize) { + index = bufferSize - 1; + } } void wrapIndexToRange(Index& index, const Size& bufferSize) @@ -248,7 +262,9 @@ void boundPositionToRange(Position& position, const Length& mapLength, const Pos for (int i = 0; i < positionShifted.size(); i++) { double epsilon = 10.0 * numeric_limits::epsilon(); // TODO Why is the factor 10 necessary. - if (std::fabs(position(i)) > 1.0) epsilon *= std::fabs(position(i)); + if (std::fabs(position(i)) > 1.0) { + epsilon *= std::fabs(position(i)); + } if (positionShifted(i) <= 0) { positionShifted(i) = epsilon; @@ -263,7 +279,7 @@ void boundPositionToRange(Position& position, const Length& mapLength, const Pos position = positionShifted + mapPosition - vectorToOrigin; } -const Eigen::Matrix2i getBufferOrderToMapFrameAlignment() +Eigen::Matrix2i getBufferOrderToMapFrameAlignment() { return getBufferOrderToMapFrameTransformation().array().abs().matrix(); } @@ -287,19 +303,25 @@ bool getSubmapInformation(Index& submapTopLeftIndex, // Corners of submap. Position topLeftPosition = requestedSubmapPosition - halfTransform * requestedSubmapLength.matrix(); boundPositionToRange(topLeftPosition, mapLength, mapPosition); - if(!getIndexFromPosition(submapTopLeftIndex, topLeftPosition, mapLength, mapPosition, resolution, bufferSize, bufferStartIndex)) return false; + if (!getIndexFromPosition(submapTopLeftIndex, topLeftPosition, mapLength, mapPosition, resolution, bufferSize, bufferStartIndex)) { + return false; + } Index topLeftIndex; topLeftIndex = getIndexFromBufferIndex(submapTopLeftIndex, bufferSize, bufferStartIndex); Position bottomRightPosition = requestedSubmapPosition + halfTransform * requestedSubmapLength.matrix(); boundPositionToRange(bottomRightPosition, mapLength, mapPosition); Index bottomRightIndex; - if(!getIndexFromPosition(bottomRightIndex, bottomRightPosition, mapLength, mapPosition, resolution, bufferSize, bufferStartIndex)) return false; + if (!getIndexFromPosition(bottomRightIndex, bottomRightPosition, mapLength, mapPosition, resolution, bufferSize, bufferStartIndex)) { + return false; + } bottomRightIndex = getIndexFromBufferIndex(bottomRightIndex, bufferSize, bufferStartIndex); // Get the position of the top left corner of the generated submap. Position topLeftCorner; - if(!getPositionFromIndex(topLeftCorner, submapTopLeftIndex, mapLength, mapPosition, resolution, bufferSize, bufferStartIndex)) return false; + if (!getPositionFromIndex(topLeftCorner, submapTopLeftIndex, mapLength, mapPosition, resolution, bufferSize, bufferStartIndex)) { + return false; + } topLeftCorner -= halfTransform * Position::Constant(resolution); // Size of submap. @@ -318,7 +340,7 @@ bool getSubmapInformation(Index& submapTopLeftIndex, return getIndexFromPosition(requestedIndexInSubmap, requestedSubmapPosition, submapLength, submapPosition, resolution, submapBufferSize); } -Size getSubmapSizeFromCornerIndeces(const Index& topLeftIndex, const Index& bottomRightIndex, +Size getSubmapSizeFromCornerIndices(const Index& topLeftIndex, const Index& bottomRightIndex, const Size& bufferSize, const Index& bufferStartIndex) { const Index unwrappedTopLeftIndex = getIndexFromBufferIndex(topLeftIndex, bufferSize, bufferStartIndex); @@ -332,7 +354,9 @@ bool getBufferRegionsForSubmap(std::vector& submapBufferRegions, const Size& bufferSize, const Index& bufferStartIndex) { - if ((getIndexFromBufferIndex(submapIndex, bufferSize, bufferStartIndex) + submapBufferSize > bufferSize).any()) return false; + if ((getIndexFromBufferIndex(submapIndex, bufferSize, bufferStartIndex) + submapBufferSize > bufferSize).any()) { + return false; + } submapBufferRegions.clear(); @@ -345,87 +369,87 @@ bool getBufferRegionsForSubmap(std::vector& submapBufferRegions, if (quadrantOfTopLeft == BufferRegion::Quadrant::TopLeft) { if (quadrantOfBottomRight == BufferRegion::Quadrant::TopLeft) { - submapBufferRegions.push_back(BufferRegion(submapIndex, submapBufferSize, BufferRegion::Quadrant::TopLeft)); + submapBufferRegions.emplace_back(submapIndex, submapBufferSize, BufferRegion::Quadrant::TopLeft); return true; } if (quadrantOfBottomRight == BufferRegion::Quadrant::TopRight) { Size topLeftSize(submapBufferSize(0), bufferSize(1) - submapIndex(1)); - submapBufferRegions.push_back(BufferRegion(submapIndex, topLeftSize, BufferRegion::Quadrant::TopLeft)); + submapBufferRegions.emplace_back(submapIndex, topLeftSize, BufferRegion::Quadrant::TopLeft); Index topRightIndex(submapIndex(0), 0); Size topRightSize(submapBufferSize(0), submapBufferSize(1) - topLeftSize(1)); - submapBufferRegions.push_back(BufferRegion(topRightIndex, topRightSize, BufferRegion::Quadrant::TopRight)); + submapBufferRegions.emplace_back(topRightIndex, topRightSize, BufferRegion::Quadrant::TopRight); return true; } if (quadrantOfBottomRight == BufferRegion::Quadrant::BottomLeft) { Size topLeftSize(bufferSize(0) - submapIndex(0), submapBufferSize(1)); - submapBufferRegions.push_back(BufferRegion(submapIndex, topLeftSize, BufferRegion::Quadrant::TopLeft)); + submapBufferRegions.emplace_back(submapIndex, topLeftSize, BufferRegion::Quadrant::TopLeft); Index bottomLeftIndex(0, submapIndex(1)); Size bottomLeftSize(submapBufferSize(0) - topLeftSize(0), submapBufferSize(1)); - submapBufferRegions.push_back(BufferRegion(bottomLeftIndex, bottomLeftSize, BufferRegion::Quadrant::BottomLeft)); + submapBufferRegions.emplace_back(bottomLeftIndex, bottomLeftSize, BufferRegion::Quadrant::BottomLeft); return true; } if (quadrantOfBottomRight == BufferRegion::Quadrant::BottomRight) { Size topLeftSize(bufferSize(0) - submapIndex(0), bufferSize(1) - submapIndex(1)); - submapBufferRegions.push_back(BufferRegion(submapIndex, topLeftSize, BufferRegion::Quadrant::TopLeft)); + submapBufferRegions.emplace_back(submapIndex, topLeftSize, BufferRegion::Quadrant::TopLeft); Index topRightIndex(submapIndex(0), 0); Size topRightSize(bufferSize(0) - submapIndex(0), submapBufferSize(1) - topLeftSize(1)); - submapBufferRegions.push_back(BufferRegion(topRightIndex, topRightSize, BufferRegion::Quadrant::TopRight)); + submapBufferRegions.emplace_back(topRightIndex, topRightSize, BufferRegion::Quadrant::TopRight); Index bottomLeftIndex(0, submapIndex(1)); Size bottomLeftSize(submapBufferSize(0) - topLeftSize(0), bufferSize(1) - submapIndex(1)); - submapBufferRegions.push_back(BufferRegion(bottomLeftIndex, bottomLeftSize, BufferRegion::Quadrant::BottomLeft)); + submapBufferRegions.emplace_back(bottomLeftIndex, bottomLeftSize, BufferRegion::Quadrant::BottomLeft); Index bottomRightIndex = Index::Zero(); Size bottomRightSize(bottomLeftSize(0), topRightSize(1)); - submapBufferRegions.push_back(BufferRegion(bottomRightIndex, bottomRightSize, BufferRegion::Quadrant::BottomRight)); + submapBufferRegions.emplace_back(bottomRightIndex, bottomRightSize, BufferRegion::Quadrant::BottomRight); return true; } } else if (quadrantOfTopLeft == BufferRegion::Quadrant::TopRight) { if (quadrantOfBottomRight == BufferRegion::Quadrant::TopRight) { - submapBufferRegions.push_back(BufferRegion(submapIndex, submapBufferSize, BufferRegion::Quadrant::TopRight)); + submapBufferRegions.emplace_back(submapIndex, submapBufferSize, BufferRegion::Quadrant::TopRight); return true; } if (quadrantOfBottomRight == BufferRegion::Quadrant::BottomRight) { Size topRightSize(bufferSize(0) - submapIndex(0), submapBufferSize(1)); - submapBufferRegions.push_back(BufferRegion(submapIndex, topRightSize, BufferRegion::Quadrant::TopRight)); + submapBufferRegions.emplace_back(submapIndex, topRightSize, BufferRegion::Quadrant::TopRight); Index bottomRightIndex(0, submapIndex(1)); Size bottomRightSize(submapBufferSize(0) - topRightSize(0), submapBufferSize(1)); - submapBufferRegions.push_back(BufferRegion(bottomRightIndex, bottomRightSize, BufferRegion::Quadrant::BottomRight)); + submapBufferRegions.emplace_back(bottomRightIndex, bottomRightSize, BufferRegion::Quadrant::BottomRight); return true; } } else if (quadrantOfTopLeft == BufferRegion::Quadrant::BottomLeft) { if (quadrantOfBottomRight == BufferRegion::Quadrant::BottomLeft) { - submapBufferRegions.push_back(BufferRegion(submapIndex, submapBufferSize, BufferRegion::Quadrant::BottomLeft)); + submapBufferRegions.emplace_back(submapIndex, submapBufferSize, BufferRegion::Quadrant::BottomLeft); return true; } if (quadrantOfBottomRight == BufferRegion::Quadrant::BottomRight) { Size bottomLeftSize(submapBufferSize(0), bufferSize(1) - submapIndex(1)); - submapBufferRegions.push_back(BufferRegion(submapIndex, bottomLeftSize, BufferRegion::Quadrant::BottomLeft)); + submapBufferRegions.emplace_back(submapIndex, bottomLeftSize, BufferRegion::Quadrant::BottomLeft); Index bottomRightIndex(submapIndex(0), 0); Size bottomRightSize(submapBufferSize(0), submapBufferSize(1) - bottomLeftSize(1)); - submapBufferRegions.push_back(BufferRegion(bottomRightIndex, bottomRightSize, BufferRegion::Quadrant::BottomRight)); + submapBufferRegions.emplace_back(bottomRightIndex, bottomRightSize, BufferRegion::Quadrant::BottomRight); return true; } } else if (quadrantOfTopLeft == BufferRegion::Quadrant::BottomRight) { if (quadrantOfBottomRight == BufferRegion::Quadrant::BottomRight) { - submapBufferRegions.push_back(BufferRegion(submapIndex, submapBufferSize, BufferRegion::Quadrant::BottomRight)); + submapBufferRegions.emplace_back(submapIndex, submapBufferSize, BufferRegion::Quadrant::BottomRight); return true; } @@ -449,7 +473,9 @@ bool incrementIndex(Index& index, const Size& bufferSize, const Index& bufferSta } // End of iterations reached. - if (!checkIfIndexInRange(unwrappedIndex, bufferSize)) return false; + if (!checkIfIndexInRange(unwrappedIndex, bufferSize)) { + return false; + } // Return true iterated index. index = getBufferIndexFromIndex(unwrappedIndex, bufferSize, bufferStartIndex); @@ -475,7 +501,9 @@ bool incrementIndexForSubmap(Index& submapIndex, Index& index, const Index& subm } // End of iterations reached. - if (!checkIfIndexInRange(tempSubmapIndex, submapBufferSize)) return false; + if (!checkIfIndexInRange(tempSubmapIndex, submapBufferSize)) { + return false; + } // Get corresponding index in map. Index unwrappedSubmapTopLeftIndex = getIndexFromBufferIndex(submapTopLeftIndex, bufferSize, bufferStartIndex); @@ -489,7 +517,9 @@ bool incrementIndexForSubmap(Index& submapIndex, Index& index, const Index& subm Index getIndexFromBufferIndex(const Index& bufferIndex, const Size& bufferSize, const Index& bufferStartIndex) { - if (checkIfStartIndexAtDefaultPosition(bufferStartIndex)) return bufferIndex; + if (checkIfStartIndexAtDefaultPosition(bufferStartIndex)) { + return bufferIndex; + } Index index = bufferIndex - bufferStartIndex; wrapIndexToRange(index, bufferSize); @@ -498,7 +528,9 @@ Index getIndexFromBufferIndex(const Index& bufferIndex, const Size& bufferSize, Index getBufferIndexFromIndex(const Index& index, const Size& bufferSize, const Index& bufferStartIndex) { - if (checkIfStartIndexAtDefaultPosition(bufferStartIndex)) return index; + if (checkIfStartIndexAtDefaultPosition(bufferStartIndex)) { + return index; + } Index bufferIndex = index + bufferStartIndex; wrapIndexToRange(bufferIndex, bufferSize); @@ -507,13 +539,17 @@ Index getBufferIndexFromIndex(const Index& index, const Size& bufferSize, const size_t getLinearIndexFromIndex(const Index& index, const Size& bufferSize, const bool rowMajor) { - if (!rowMajor) return index(1) * bufferSize(0) + index(0); + if (!rowMajor) { + return index(1) * bufferSize(0) + index(0); + } return index(0) * bufferSize(1) + index(1); } Index getIndexFromLinearIndex(const size_t linearIndex, const Size& bufferSize, const bool rowMajor) { - if (!rowMajor) return Index((int)linearIndex % bufferSize(0), (int)linearIndex / bufferSize(0)); + if (!rowMajor) { + return Index((int)linearIndex % bufferSize(0), (int)linearIndex / bufferSize(0)); + } return Index((int)linearIndex / bufferSize(1), (int)linearIndex % bufferSize(1)); } @@ -550,8 +586,8 @@ bool colorVectorToValue(const Eigen::Vector3i& colorVector, unsigned long& color void colorVectorToValue(const Eigen::Vector3i& colorVector, float& colorValue) { Color colors; - colors.longColor = (colorVector(0) << 16) + (colorVector(1) << 8) + colorVector(2); - colorValue = colors.floatColor; + colors.longColor_ = (colorVector(0) << 16) + (colorVector(1) << 8) + colorVector(2); + colorValue = colors.floatColor_; } void colorVectorToValue(const Eigen::Vector3f& colorVector, float& colorValue) @@ -560,5 +596,5 @@ void colorVectorToValue(const Eigen::Vector3f& colorVector, float& colorValue) colorVectorToValue(tempColorVector, colorValue); } -} // namespace +} // namespace grid_map diff --git a/grid_map_core/src/Polygon.cpp b/grid_map_core/src/Polygon.cpp index f0f68a2ad..3ab234c1a 100644 --- a/grid_map_core/src/Polygon.cpp +++ b/grid_map_core/src/Polygon.cpp @@ -27,8 +27,6 @@ Polygon::Polygon(std::vector vertices) vertices_ = vertices; } -Polygon::~Polygon() {} - bool Polygon::isInside(const Position& point) const { int cross = 0; diff --git a/grid_map_core/src/SubmapGeometry.cpp b/grid_map_core/src/SubmapGeometry.cpp index df2a41eee..065adac29 100644 --- a/grid_map_core/src/SubmapGeometry.cpp +++ b/grid_map_core/src/SubmapGeometry.cpp @@ -21,10 +21,6 @@ SubmapGeometry::SubmapGeometry(const GridMap& gridMap, const Position& position, gridMap_.getSize(), gridMap_.getStartIndex()); } -SubmapGeometry::~SubmapGeometry() -{ -} - const GridMap& SubmapGeometry::getGridMap() const { return gridMap_; diff --git a/grid_map_core/src/iterators/CircleIterator.cpp b/grid_map_core/src/iterators/CircleIterator.cpp index 5110b8a0d..b681b33ac 100644 --- a/grid_map_core/src/iterators/CircleIterator.cpp +++ b/grid_map_core/src/iterators/CircleIterator.cpp @@ -1,5 +1,5 @@ /* - * Circleterator.hpp + * CircleIterator.hpp * * Created on: Nov 13, 2014 * Author: Péter Fankhauser @@ -81,7 +81,7 @@ void CircleIterator::findSubmapParameters(const Position& center, const double r getIndexFromPosition(startIndex, topLeft, mapLength_, mapPosition_, resolution_, bufferSize_, bufferStartIndex_); Index endIndex; getIndexFromPosition(endIndex, bottomRight, mapLength_, mapPosition_, resolution_, bufferSize_, bufferStartIndex_); - bufferSize = getSubmapSizeFromCornerIndeces(startIndex, endIndex, bufferSize_, bufferStartIndex_); + bufferSize = getSubmapSizeFromCornerIndices(startIndex, endIndex, bufferSize_, bufferStartIndex_); } } /* namespace grid_map */ diff --git a/grid_map_core/src/iterators/EllipseIterator.cpp b/grid_map_core/src/iterators/EllipseIterator.cpp index f472591dc..7fe7632bd 100644 --- a/grid_map_core/src/iterators/EllipseIterator.cpp +++ b/grid_map_core/src/iterators/EllipseIterator.cpp @@ -93,7 +93,7 @@ void EllipseIterator::findSubmapParameters(const Position& center, const Length& getIndexFromPosition(startIndex, topLeft, mapLength_, mapPosition_, resolution_, bufferSize_, bufferStartIndex_); Index endIndex; getIndexFromPosition(endIndex, bottomRight, mapLength_, mapPosition_, resolution_, bufferSize_, bufferStartIndex_); - bufferSize = getSubmapSizeFromCornerIndeces(startIndex, endIndex, bufferSize_, bufferStartIndex_); + bufferSize = getSubmapSizeFromCornerIndices(startIndex, endIndex, bufferSize_, bufferStartIndex_); } } /* namespace grid_map */ diff --git a/grid_map_core/src/iterators/GridMapIterator.cpp b/grid_map_core/src/iterators/GridMapIterator.cpp index 68ae57b73..756c103e0 100644 --- a/grid_map_core/src/iterators/GridMapIterator.cpp +++ b/grid_map_core/src/iterators/GridMapIterator.cpp @@ -29,22 +29,12 @@ GridMapIterator::GridMapIterator(const GridMapIterator* other) isPastEnd_ = other->isPastEnd_; } -GridMapIterator& GridMapIterator::operator =(const GridMapIterator& other) -{ - size_ = other.size_; - startIndex_ = other.startIndex_; - linearSize_ = other.linearSize_; - linearIndex_ = other.linearIndex_; - isPastEnd_ = other.isPastEnd_; - return *this; -} - bool GridMapIterator::operator !=(const GridMapIterator& other) const { return linearIndex_ != other.linearIndex_; } -const Index GridMapIterator::operator *() const +Index GridMapIterator::operator *() const { return getIndexFromLinearIndex(linearIndex_, size_); } @@ -54,7 +44,7 @@ const size_t& GridMapIterator::getLinearIndex() const return linearIndex_; } -const Index GridMapIterator::getUnwrappedIndex() const +Index GridMapIterator::getUnwrappedIndex() const { return getIndexFromBufferIndex(*(*this), size_, startIndex_); } diff --git a/grid_map_core/src/iterators/LineIterator.cpp b/grid_map_core/src/iterators/LineIterator.cpp index 0afc4eb97..2c6337d28 100644 --- a/grid_map_core/src/iterators/LineIterator.cpp +++ b/grid_map_core/src/iterators/LineIterator.cpp @@ -9,14 +9,13 @@ #include "grid_map_core/iterators/LineIterator.hpp" #include "grid_map_core/GridMapMath.hpp" -using namespace std; - namespace grid_map { LineIterator::LineIterator(const grid_map::GridMap& gridMap, const Position& start, const Position& end) { - Index startIndex, endIndex; + Index startIndex; + Index endIndex; if (getIndexLimitedToMapRange(gridMap, start, end, startIndex) && getIndexLimitedToMapRange(gridMap, end, start, endIndex)) { initialize(gridMap, startIndex, endIndex); @@ -31,26 +30,6 @@ LineIterator::LineIterator(const grid_map::GridMap& gridMap, const Index& start, initialize(gridMap, start, end); } -LineIterator& LineIterator::operator =(const LineIterator& other) -{ - index_ = other.index_; - start_ = other.start_; - end_ = other.end_; - iCell_ = other.iCell_; - nCells_ = other.nCells_; - increment1_ = other.increment1_; - increment2_ = other.increment2_; - denominator_ = other.denominator_; - numerator_ = other.numerator_; - numeratorAdd_ = other.numeratorAdd_; - mapLength_ = other.mapLength_; - mapPosition_ = other.mapPosition_; - resolution_ = other.resolution_; - bufferSize_ = other.bufferSize_; - bufferStartIndex_ = other.bufferStartIndex_; - return *this; -} - bool LineIterator::operator !=(const LineIterator& other) const { return (index_ != other.index_).any(); @@ -101,8 +80,9 @@ bool LineIterator::getIndexLimitedToMapRange(const grid_map::GridMap& gridMap, Vector direction = (end - start).normalized(); while (!gridMap.getIndex(newStart, index)) { newStart += (gridMap.getResolution() - std::numeric_limits::epsilon()) * direction; - if ((end - newStart).norm() < gridMap.getResolution() - std::numeric_limits::epsilon()) + if ((end - newStart).norm() < gridMap.getResolution() - std::numeric_limits::epsilon()) { return false; + } } return true; } diff --git a/grid_map_core/src/iterators/PolygonIterator.cpp b/grid_map_core/src/iterators/PolygonIterator.cpp index db325cfac..733a8421e 100644 --- a/grid_map_core/src/iterators/PolygonIterator.cpp +++ b/grid_map_core/src/iterators/PolygonIterator.cpp @@ -6,11 +6,11 @@ * Institute: ETH Zurich, ANYbotics */ +#include + #include "grid_map_core/iterators/PolygonIterator.hpp" #include "grid_map_core/GridMapMath.hpp" -using namespace std; - namespace grid_map { PolygonIterator::PolygonIterator(const grid_map::GridMap& gridMap, const grid_map::Polygon& polygon) @@ -24,20 +24,10 @@ PolygonIterator::PolygonIterator(const grid_map::GridMap& gridMap, const grid_ma Index submapStartIndex; Size submapBufferSize; findSubmapParameters(polygon, submapStartIndex, submapBufferSize); - internalIterator_ = std::shared_ptr(new SubmapIterator(gridMap, submapStartIndex, submapBufferSize)); - if(!isInside()) ++(*this); -} - -PolygonIterator& PolygonIterator::operator =(const PolygonIterator& other) -{ - polygon_ = other.polygon_; - internalIterator_ = other.internalIterator_; - mapLength_ = other.mapLength_; - mapPosition_ = other.mapPosition_; - resolution_ = other.resolution_; - bufferSize_ = other.bufferSize_; - bufferStartIndex_ = other.bufferStartIndex_; - return *this; + internalIterator_ = std::make_shared(gridMap, submapStartIndex, submapBufferSize); + if (!isInside()) { + ++(*this); + } } bool PolygonIterator::operator !=(const PolygonIterator& other) const @@ -53,10 +43,14 @@ const Index& PolygonIterator::operator *() const PolygonIterator& PolygonIterator::operator ++() { ++(*internalIterator_); - if (internalIterator_->isPastEnd()) return *this; + if (internalIterator_->isPastEnd()) { + return *this; + } - for ( ; !internalIterator_->isPastEnd(); ++(*internalIterator_)) { - if (isInside()) break; + for (; !internalIterator_->isPastEnd(); ++(*internalIterator_)) { + if (isInside()) { + break; + } } return *this; @@ -87,7 +81,7 @@ void PolygonIterator::findSubmapParameters(const grid_map::Polygon& /*polygon*/, getIndexFromPosition(startIndex, topLeft, mapLength_, mapPosition_, resolution_, bufferSize_, bufferStartIndex_); Index endIndex; getIndexFromPosition(endIndex, bottomRight, mapLength_, mapPosition_, resolution_, bufferSize_, bufferStartIndex_); - bufferSize = getSubmapSizeFromCornerIndeces(startIndex, endIndex, bufferSize_, bufferStartIndex_); + bufferSize = getSubmapSizeFromCornerIndices(startIndex, endIndex, bufferSize_, bufferStartIndex_); } } /* namespace grid_map */ diff --git a/grid_map_core/src/iterators/SlidingWindowIterator.cpp b/grid_map_core/src/iterators/SlidingWindowIterator.cpp index 6ade5a4b3..c1ba2a43a 100644 --- a/grid_map_core/src/iterators/SlidingWindowIterator.cpp +++ b/grid_map_core/src/iterators/SlidingWindowIterator.cpp @@ -34,8 +34,10 @@ SlidingWindowIterator::SlidingWindowIterator(const SlidingWindowIterator* other) void SlidingWindowIterator::setWindowLength(const GridMap& gridMap, const double windowLength) { - windowSize_ = std::round(windowLength / gridMap.getResolution()); - if (windowSize_ % 2 != 1) ++windowSize_; + windowSize_ = static_cast(std::round(windowLength / gridMap.getResolution())); + if (windowSize_ % 2 != 1) { + ++windowSize_; + } setup(gridMap); } @@ -44,7 +46,9 @@ SlidingWindowIterator& SlidingWindowIterator::operator ++() if (edgeHandling_ == EdgeHandling::INSIDE) { while (!isPastEnd()) { GridMapIterator::operator++(); - if (dataInsideMap()) break; + if (dataInsideMap()) { + break; + } } } else { GridMapIterator::operator++(); @@ -52,10 +56,10 @@ SlidingWindowIterator& SlidingWindowIterator::operator ++() return *this; } -const Matrix SlidingWindowIterator::getData() const +Matrix SlidingWindowIterator::getData() const { const Index centerIndex(*(*this)); - const Index windowMargin(Index::Constant(windowMargin_)); + const Index windowMargin(Index::Constant(static_cast(windowMargin_))); const Index originalTopLeftIndex(centerIndex - windowMargin); Index topLeftIndex(originalTopLeftIndex); boundIndexToRange(topLeftIndex, size_); @@ -71,8 +75,11 @@ const Matrix SlidingWindowIterator::getData() const case EdgeHandling::MEAN: const Matrix data = data_.block(topLeftIndex(0), topLeftIndex(1), adjustedWindowSize(0), adjustedWindowSize(1)); Matrix returnData(windowSize_, windowSize_); - if (edgeHandling_ == EdgeHandling::EMPTY) returnData.setConstant(NAN); - else if (edgeHandling_ == EdgeHandling::MEAN) returnData.setConstant(data.meanOfFinites()); + if (edgeHandling_ == EdgeHandling::EMPTY) { + returnData.setConstant(NAN); + } else if (edgeHandling_ == EdgeHandling::MEAN) { + returnData.setConstant(data.meanOfFinites()); + } const Index topLeftIndexShift(topLeftIndex - originalTopLeftIndex); returnData.block(topLeftIndexShift(0), topLeftIndexShift(1), adjustedWindowSize(0), adjustedWindowSize(1)) = data_.block(topLeftIndex(0), topLeftIndex(1), adjustedWindowSize(0), adjustedWindowSize(1)); @@ -83,10 +90,12 @@ const Matrix SlidingWindowIterator::getData() const void SlidingWindowIterator::setup(const GridMap& gridMap) { - if (!gridMap.isDefaultStartIndex()) throw std::runtime_error( - "SlidingWindowIterator cannot be used with grid maps that don't have a default buffer start index."); - if (windowSize_ % 2 == 0) throw std::runtime_error( - "SlidingWindowIterator has a wrong window size!"); + if (!gridMap.isDefaultStartIndex()) { + throw std::runtime_error("SlidingWindowIterator cannot be used with grid maps that don't have a default buffer start index."); + } + if (windowSize_ % 2 == 0) { + throw std::runtime_error("SlidingWindowIterator has a wrong window size!"); + } windowMargin_ = (windowSize_ - 1) / 2; if (edgeHandling_ == EdgeHandling::INSIDE) { @@ -99,7 +108,7 @@ void SlidingWindowIterator::setup(const GridMap& gridMap) bool SlidingWindowIterator::dataInsideMap() const { const Index centerIndex(*(*this)); - const Index windowMargin(Index::Constant(windowMargin_)); + const Index windowMargin(Index::Constant(static_cast(windowMargin_))); const Index topLeftIndex(centerIndex - windowMargin); const Index bottomRightIndex(centerIndex + windowMargin); return checkIfIndexInRange(topLeftIndex, size_) && checkIfIndexInRange(bottomRightIndex, size_); diff --git a/grid_map_core/src/iterators/SpiralIterator.cpp b/grid_map_core/src/iterators/SpiralIterator.cpp index 4e97147e4..2284d2576 100644 --- a/grid_map_core/src/iterators/SpiralIterator.cpp +++ b/grid_map_core/src/iterators/SpiralIterator.cpp @@ -10,14 +10,14 @@ #include "grid_map_core/GridMapMath.hpp" #include +#include -using namespace std; namespace grid_map { -SpiralIterator::SpiralIterator(const grid_map::GridMap& gridMap, const Eigen::Vector2d& center, +SpiralIterator::SpiralIterator(const grid_map::GridMap& gridMap, Eigen::Vector2d center, const double radius) - : center_(center), + : center_(std::move(center)), radius_(radius), distance_(0) { @@ -28,27 +28,13 @@ SpiralIterator::SpiralIterator(const grid_map::GridMap& gridMap, const Eigen::Ve bufferSize_ = gridMap.getSize(); gridMap.getIndex(center_, indexCenter_); nRings_ = std::ceil(radius_ / resolution_); - if (checkIfIndexInRange(indexCenter_, bufferSize_)) + if (checkIfIndexInRange(indexCenter_, bufferSize_)) { pointsRing_.push_back(indexCenter_); - else - while(pointsRing_.empty() && !isPastEnd()) + } else { + while (pointsRing_.empty() && !isPastEnd()) { generateRing(); -} - -SpiralIterator& SpiralIterator::operator =(const SpiralIterator& other) -{ - center_ = other.center_; - indexCenter_ = other.indexCenter_; - radius_ = other.radius_; - radiusSquare_ = other.radiusSquare_; - nRings_ = other.nRings_; - distance_ = other.distance_; - pointsRing_ = other.pointsRing_; - mapLength_ = other.mapLength_; - mapPosition_ = other.mapPosition_; - resolution_ = other.resolution_; - bufferSize_ = other.bufferSize_; - return *this; + } + } } bool SpiralIterator::operator !=(const SpiralIterator& /*other*/) const @@ -64,7 +50,9 @@ const Eigen::Array2i& SpiralIterator::operator *() const SpiralIterator& SpiralIterator::operator ++() { pointsRing_.pop_back(); - if (pointsRing_.empty() && !isPastEnd()) generateRing(); + if (pointsRing_.empty() && !isPastEnd()) { + generateRing(); + } return *this; } @@ -73,7 +61,7 @@ bool SpiralIterator::isPastEnd() const return (distance_ == nRings_ && pointsRing_.empty()); } -bool SpiralIterator::isInside(const Index index) const +bool SpiralIterator::isInside(const Index& index) const { Eigen::Vector2d position; getPositionFromIndex(position, index, mapLength_, mapPosition_, resolution_, bufferSize_); @@ -92,21 +80,20 @@ void SpiralIterator::generateRing() pointInMap.y() = point.y() + indexCenter_.y(); if (checkIfIndexInRange(pointInMap, bufferSize_)) { if (distance_ == nRings_ || distance_ == nRings_ - 1) { - if (isInside(pointInMap)) + if (isInside(pointInMap)) { pointsRing_.push_back(pointInMap); + } } else { pointsRing_.push_back(pointInMap); } } normal.x() = -signum(point.y()); normal.y() = signum(point.x()); - if (normal.x() != 0 - && static_cast(Vector(point.x() + normal.x(), point.y()).norm()) == distance_) + if (normal.x() != 0 && static_cast(Vector(point.x() + normal.x(), point.y()).norm()) == distance_) { point.x() += normal.x(); - else if (normal.y() != 0 - && static_cast(Vector(point.x(), point.y() + normal.y()).norm()) == distance_) + } else if (normal.y() != 0 && static_cast(Vector(point.x(), point.y() + normal.y()).norm()) == distance_) { point.y() += normal.y(); - else { + } else { point.x() += normal.x(); point.y() += normal.y(); } diff --git a/grid_map_core/src/iterators/SubmapIterator.cpp b/grid_map_core/src/iterators/SubmapIterator.cpp index bf1232547..12fb120b3 100644 --- a/grid_map_core/src/iterators/SubmapIterator.cpp +++ b/grid_map_core/src/iterators/SubmapIterator.cpp @@ -9,7 +9,7 @@ #include "grid_map_core/iterators/SubmapIterator.hpp" #include "grid_map_core/GridMapMath.hpp" -using namespace std; + namespace grid_map { @@ -48,18 +48,6 @@ SubmapIterator::SubmapIterator(const SubmapIterator* other) isPastEnd_ = other->isPastEnd_; } -SubmapIterator& SubmapIterator::operator =(const SubmapIterator& other) -{ - size_ = other.size_; - startIndex_ = other.startIndex_; - submapSize_ = other.submapSize_; - submapStartIndex_ = other.submapStartIndex_; - index_ = other.index_; - submapIndex_ = other.submapIndex_; - isPastEnd_ = other.isPastEnd_; - return *this; -} - bool SubmapIterator::operator !=(const SubmapIterator& other) const { return (index_ != other.index_).any(); diff --git a/grid_map_core/test/EigenPluginsTest.cpp b/grid_map_core/test/EigenPluginsTest.cpp index 1c463fa1f..cdbd1e810 100644 --- a/grid_map_core/test/EigenPluginsTest.cpp +++ b/grid_map_core/test/EigenPluginsTest.cpp @@ -14,8 +14,7 @@ // Eigen #include -using namespace std; -using namespace Eigen; +using Eigen::Matrix; TEST(EigenMatrixBaseAddons, numberOfFinites) { diff --git a/grid_map_core/test/EllipseIteratorTest.cpp b/grid_map_core/test/EllipseIteratorTest.cpp index 869d2716f..f77fee01e 100644 --- a/grid_map_core/test/EllipseIteratorTest.cpp +++ b/grid_map_core/test/EllipseIteratorTest.cpp @@ -9,15 +9,9 @@ #include "grid_map_core/iterators/EllipseIterator.hpp" #include "grid_map_core/GridMap.hpp" -// Eigen -#include - // gtest #include -// Limits -#include - // Vector #include diff --git a/grid_map_core/test/GridMapIteratorTest.cpp b/grid_map_core/test/GridMapIteratorTest.cpp index c04e472d5..33c1ac4f7 100644 --- a/grid_map_core/test/GridMapIteratorTest.cpp +++ b/grid_map_core/test/GridMapIteratorTest.cpp @@ -9,20 +9,16 @@ #include "grid_map_core/iterators/GridMapIterator.hpp" #include "grid_map_core/GridMap.hpp" -// Eigen -#include - // gtest #include -// Limits -#include - // Vector #include -using namespace std; -using namespace grid_map; +using grid_map::GridMap; +using grid_map::Length; +using grid_map::Position; +using grid_map::GridMapIterator; TEST(GridMapIterator, Simple) { @@ -52,7 +48,7 @@ TEST(GridMapIterator, LinearIndex) auto& data = map["layer"]; unsigned int i = 0; for (; !iterator.isPastEnd(); ++iterator, ++i) { - data(iterator.getLinearIndex()) = 1.0; + data(static_cast(iterator.getLinearIndex())) = 1.0; EXPECT_EQ(i, iterator.getLinearIndex()); EXPECT_FALSE(iterator.isPastEnd()); } diff --git a/grid_map_core/test/GridMapMathTest.cpp b/grid_map_core/test/GridMapMathTest.cpp index a8c188606..1382f7651 100644 --- a/grid_map_core/test/GridMapMathTest.cpp +++ b/grid_map_core/test/GridMapMathTest.cpp @@ -8,9 +8,6 @@ #include "grid_map_core/GridMapMath.hpp" -// Eigen -#include - // gtest #include @@ -20,8 +17,9 @@ // Vector #include -using namespace std; -using namespace grid_map; +using std::numeric_limits; + +namespace grid_map{ TEST(PositionFromIndex, Simple) { @@ -303,10 +301,9 @@ TEST(checkIfIndexInRange, All) TEST(boundIndexToRange, All) { - int index; int bufferSize = 10; - index = 0; + int index = 0; boundIndexToRange(index, bufferSize); EXPECT_EQ(0, index); @@ -337,10 +334,9 @@ TEST(boundIndexToRange, All) TEST(wrapIndexToRange, All) { - int index; int bufferSize = 10; - index = 0; + int index = 0; wrapIndexToRange(index, bufferSize); EXPECT_EQ(0, index); @@ -501,7 +497,7 @@ TEST(getSubmapInformation, Simple) Position requestedSubmapPosition; Position requestedSubmapLength; - // The returned submap indeces + // The returned submap indices Index submapTopLeftIndex; Index submapSize; Position submapPosition; @@ -536,7 +532,7 @@ TEST(getSubmapInformation, Zero) Position requestedSubmapPosition; Length requestedSubmapLength; - // The returned submap indeces + // The returned submap indices Index submapTopLeftIndex; Index submapSize; Position submapPosition; @@ -572,7 +568,7 @@ TEST(getSubmapInformation, ExceedingBoundaries) Position requestedSubmapPosition; Length requestedSubmapLength; - // The returned submap indeces + // The returned submap indices Index submapTopLeftIndex; Size submapSize; Position submapPosition; @@ -626,7 +622,7 @@ TEST(getSubmapInformation, CircularBuffer) Position requestedSubmapPosition; Length requestedSubmapLength; - // The returned submap indeces + // The returned submap indices Index submapTopLeftIndex; Size submapSize; Position submapPosition; @@ -696,7 +692,7 @@ TEST(getSubmapInformation, Debug1) Position requestedSubmapPosition(-7.44, -3.42); Length requestedSubmapLength(0.12, 0.12); - // The returned submap indeces + // The returned submap indices Index submapTopLeftIndex; Size submapSize; Position submapPosition; @@ -725,7 +721,7 @@ TEST(getSubmapInformation, Debug2) Position requestedSubmapPosition(0.24, -26.82); Length requestedSubmapLength(0.624614, 0.462276); - // The returned submap indeces + // The returned submap indices Index submapTopLeftIndex; Size submapSize; Position submapPosition; @@ -1039,3 +1035,5 @@ TEST(getIndexFromLinearIndex, Simple) EXPECT_TRUE((Index(0, 1) == getIndexFromLinearIndex(8, Size(8, 5), false)).all()); EXPECT_TRUE((Index(7, 4) == getIndexFromLinearIndex(39, Size(8, 5), false)).all()); } + +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_core/test/GridMapTest.cpp b/grid_map_core/test/GridMapTest.cpp index 79c00bc7d..64b15f88b 100644 --- a/grid_map_core/test/GridMapTest.cpp +++ b/grid_map_core/test/GridMapTest.cpp @@ -11,14 +11,9 @@ // gtest #include -// Math -#include +namespace grid_map { -using namespace std; -using namespace grid_map; - -TEST(GridMap, CopyConstructor) -{ +TEST(GridMap, CopyConstructor) { GridMap map({"layer_a", "layer_b"}); map.setGeometry(Length(1.0, 2.0), 0.1, Position(0.1, 0.2)); map["layer_a"].setConstant(1.0); @@ -66,12 +61,21 @@ TEST(GridMap, Move) EXPECT_EQ(3, startIndex(0)); EXPECT_EQ(2, startIndex(1)); - - EXPECT_FALSE(map.isValid(Index(0, 0))); // TODO Check entire map. - EXPECT_TRUE(map.isValid(Index(3, 2))); - EXPECT_FALSE(map.isValid(Index(2, 2))); - EXPECT_FALSE(map.isValid(Index(3, 1))); - EXPECT_TRUE(map.isValid(Index(7, 4))); + + Eigen::Matrix isValidExpected; + isValidExpected << false, false, false, false, false, // clang-format off + false, false, false, false, false, + false, false, false, false, false, + false, false, true, true, true, + false, false, true, true, true, + false, false, true, true, true, + false, false, true, true, true, + false, false, true, true, true; // clang-format on + for(int row{0}; row < 8; row++){ + for(int col{0}; col < 5; col++){ + EXPECT_EQ(map.isValid(Index(row, col)), isValidExpected(row, col)) << "Value of map.isValid at ["< stringVector; - stringVector.push_back("nan"); + stringVector.emplace_back("nan"); map1.addDataFrom(map2, true, false, false, stringVector); Index index; map1.getIndex(Position(-2, -2), index); @@ -412,7 +418,8 @@ TEST(AddDataFrom, ExtendMapNotAligned) TEST(AddDataFrom, CopyData) { - GridMap map1, map2; + GridMap map1; + GridMap map2; map1.setGeometry(Length(5.1, 5.1), 1.0, Position(0.0, 0.0)); // bufferSize(5, 5) map1.add("zero", 0.0); map1.add("one"); @@ -453,9 +460,7 @@ TEST(ValueAtPosition, NearestNeighbor) map.at("types", Index(2,1)) = 2.0; map.at("types", Index(2,2)) = 2.0; - double value; - - value = map.atPosition("types", Position(1.35,-0.4)); + double value = map.atPosition("types", Position(1.35,-0.4)); EXPECT_DOUBLE_EQ((float)3.8, value); value = map.atPosition("types", Position(-0.3,0.0)); @@ -477,10 +482,8 @@ TEST(ValueAtPosition, LinearInterpolated) map.at("types", Index(2,1)) = 2.0; map.at("types", Index(2,2)) = 2.0; - double value; - // Close to the border -> reverting to INTER_NEAREST. - value = map.atPosition("types", Position(-0.5,-1.2), InterpolationMethods::INTER_LINEAR); + double value = map.atPosition("types", Position(-0.5,-1.2), InterpolationMethods::INTER_LINEAR); EXPECT_DOUBLE_EQ(2.0, value); // In between 1.0 and 2.0 field. value = map.atPosition("types", Position(-0.5,0.0), InterpolationMethods::INTER_LINEAR); @@ -489,3 +492,5 @@ TEST(ValueAtPosition, LinearInterpolated) value = map.atPosition("types", Position(0.69,0.38), InterpolationMethods::INTER_LINEAR); EXPECT_NEAR(2.1963200, value, 0.0000001); } + +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_core/test/LineIteratorTest.cpp b/grid_map_core/test/LineIteratorTest.cpp index 664267bef..2086fc141 100644 --- a/grid_map_core/test/LineIteratorTest.cpp +++ b/grid_map_core/test/LineIteratorTest.cpp @@ -12,13 +12,9 @@ // gtest #include -// Limits -#include +namespace grid_map { -using namespace grid_map; - -TEST(LineIterator, StartOutsideMap) -{ +TEST(LineIterator, StartOutsideMap) { GridMap map( { "types" }); map.setGeometry(Length(8.0, 5.0), 1.0, Position(0.0, 0.0)); @@ -178,3 +174,5 @@ TEST(LineIterator, StartAndEndOutsideMovedMap) ++iterator; EXPECT_TRUE(iterator.isPastEnd()); } + +} // namespace grid_map \ No newline at end of file diff --git a/grid_map_core/test/PolygonIteratorTest.cpp b/grid_map_core/test/PolygonIteratorTest.cpp index 4bbc5d6c2..ef73ae6e2 100644 --- a/grid_map_core/test/PolygonIteratorTest.cpp +++ b/grid_map_core/test/PolygonIteratorTest.cpp @@ -10,26 +10,21 @@ #include "grid_map_core/GridMap.hpp" #include "grid_map_core/Polygon.hpp" -// Eigen -#include - // gtest #include -// Limits -#include - // Vector #include -using namespace std; -using namespace Eigen; -using namespace grid_map; +using grid_map::GridMap; +using grid_map::Length; +using grid_map::Polygon; +using grid_map::PolygonIterator; +using grid_map::Position; -TEST(PolygonIterator, FullCover) -{ - vector types; - types.push_back("type"); +TEST(PolygonIterator, FullCover) { + std::vector types; + types.emplace_back("type"); GridMap map(types); map.setGeometry(Length(8.0, 5.0), 1.0, Position(0.0, 0.0)); // bufferSize(8, 5) @@ -55,7 +50,9 @@ TEST(PolygonIterator, FullCover) EXPECT_EQ(0, (*iterator)(0)); EXPECT_EQ(2, (*iterator)(1)); - for (int i = 0; i < 37; ++i) ++iterator; + for (int i = 0; i < 37; ++i) { + ++iterator; + } EXPECT_FALSE(iterator.isPastEnd()); EXPECT_EQ(7, (*iterator)(0)); @@ -173,7 +170,9 @@ TEST(PolygonIterator, MoveMap) EXPECT_EQ(6, (*iterator)(0)); EXPECT_EQ(2, (*iterator)(1)); - for (int i = 0; i < 4; ++i) ++iterator; + for (int i = 0; i < 4; ++i) { + ++iterator; + } EXPECT_FALSE(iterator.isPastEnd()); EXPECT_EQ(7, (*iterator)(0)); @@ -184,7 +183,9 @@ TEST(PolygonIterator, MoveMap) EXPECT_EQ(0, (*iterator)(0)); EXPECT_EQ(1, (*iterator)(1)); - for (int i = 0; i < 8; ++i) ++iterator; + for (int i = 0; i < 8; ++i) { + ++iterator; + } EXPECT_FALSE(iterator.isPastEnd()); EXPECT_EQ(2, (*iterator)(0)); diff --git a/grid_map_core/test/PolygonTest.cpp b/grid_map_core/test/PolygonTest.cpp index 5540377ca..0974a0514 100644 --- a/grid_map_core/test/PolygonTest.cpp +++ b/grid_map_core/test/PolygonTest.cpp @@ -13,11 +13,14 @@ // Eigen #include -#include -using namespace std; -using namespace Eigen; -using namespace grid_map; +using Eigen::MatrixXd; +using Eigen::Vector2d; +using Eigen::VectorXd; + +using grid_map::Length; +using grid_map::Polygon; +using grid_map::Position; TEST(Polygon, getCentroidTriangle) { @@ -71,10 +74,10 @@ TEST(Polygon, convexHullPoints) { // Test that points which already create a convex shape (square) can be used to create a convex polygon. std::vector points1; - points1.push_back(Vector2d(0.0, 0.0)); - points1.push_back(Vector2d(1.0, 0.0)); - points1.push_back(Vector2d(1.0, 1.0)); - points1.push_back(Vector2d(0.0, 1.0)); + points1.emplace_back(0.0, 0.0); + points1.emplace_back(1.0, 0.0); + points1.emplace_back(1.0, 1.0); + points1.emplace_back(0.0, 1.0); Polygon polygon1 = Polygon::monotoneChainConvexHullOfPoints(points1); EXPECT_EQ(4, polygon1.nVertices()); EXPECT_TRUE(polygon1.isInside(Vector2d(0.5, 0.5))); @@ -82,14 +85,14 @@ TEST(Polygon, convexHullPoints) // Test that a random set of points can be used to create a convex polygon. std::vector points2; - points2.push_back(Vector2d(0.0, 0.0)); - points2.push_back(Vector2d(1.0, 0.0)); - points2.push_back(Vector2d(2.0, 1.0)); - points2.push_back(Vector2d(1.0, 2.0)); - points2.push_back(Vector2d(-1.0, 2.0)); - points2.push_back(Vector2d(-1.0, -2.0)); - points2.push_back(Vector2d(0.0, 1.0)); - points2.push_back(Vector2d(1.0, 1.0)); + points2.emplace_back(0.0, 0.0); + points2.emplace_back(1.0, 0.0); + points2.emplace_back(2.0, 1.0); + points2.emplace_back(1.0, 2.0); + points2.emplace_back(-1.0, 2.0); + points2.emplace_back(-1.0, -2.0); + points2.emplace_back(0.0, 1.0); + points2.emplace_back(1.0, 1.0); Polygon polygon2 = Polygon::monotoneChainConvexHullOfPoints(points2); EXPECT_EQ(4, polygon2.nVertices()); EXPECT_TRUE(polygon2.isInside(Vector2d(0.5, 0.5))); diff --git a/grid_map_core/test/SlidingWindowIteratorTest.cpp b/grid_map_core/test/SlidingWindowIteratorTest.cpp index b1ff23b01..902144a69 100644 --- a/grid_map_core/test/SlidingWindowIteratorTest.cpp +++ b/grid_map_core/test/SlidingWindowIteratorTest.cpp @@ -9,13 +9,14 @@ #include "grid_map_core/iterators/SlidingWindowIterator.hpp" #include "grid_map_core/GridMap.hpp" -#include -#include #include #include -using namespace std; -using namespace grid_map; +using grid_map::GridMap; +using grid_map::Index; +using grid_map::Length; +using grid_map::Position; +using grid_map::SlidingWindowIterator; TEST(SlidingWindowIterator, WindowSize3Cutoff) { @@ -41,7 +42,9 @@ TEST(SlidingWindowIterator, WindowSize3Cutoff) for (; !iterator.isPastEnd(); ++iterator) { EXPECT_FALSE(iterator.isPastEnd()); - if ((*iterator == Index(3, 2)).all()) break; + if ((*iterator == Index(3, 2)).all()) { + break; + } } EXPECT_EQ(iterator.getData().rows(), 3); @@ -50,7 +53,9 @@ TEST(SlidingWindowIterator, WindowSize3Cutoff) for (; !iterator.isPastEnd(); ++iterator) { EXPECT_FALSE(iterator.isPastEnd()); - if ((*iterator == Index(7, 4)).all()) break; + if ((*iterator == Index(7, 4)).all()) { + break; + } } EXPECT_EQ(iterator.getData().rows(), 2); @@ -85,7 +90,9 @@ TEST(SlidingWindowIterator, WindowSize5) for (; !iterator.isPastEnd(); ++iterator) { EXPECT_FALSE(iterator.isPastEnd()); - if ((*iterator == Index(3, 2)).all()) break; + if ((*iterator == Index(3, 2)).all()) { + break; + } } EXPECT_EQ(iterator.getData().rows(), 5); @@ -94,7 +101,9 @@ TEST(SlidingWindowIterator, WindowSize5) for (; !iterator.isPastEnd(); ++iterator) { EXPECT_FALSE(iterator.isPastEnd()); - if ((*iterator == Index(7, 4)).all()) break; + if ((*iterator == Index(7, 4)).all()) { + break; + } } EXPECT_EQ(iterator.getData().rows(), 3); @@ -119,7 +128,9 @@ TEST(SlidingWindowIterator, WindowSize3Inside) for (; !iterator.isPastEnd(); ++iterator) { EXPECT_FALSE(iterator.isPastEnd()); - if ((*iterator == Index(3, 2)).all()) break; + if ((*iterator == Index(3, 2)).all()) { + break; + } } EXPECT_EQ(iterator.getData().rows(), 3); @@ -128,7 +139,9 @@ TEST(SlidingWindowIterator, WindowSize3Inside) for (; !iterator.isPastEnd(); ++iterator) { EXPECT_FALSE(iterator.isPastEnd()); - if ((*iterator == Index(6, 3)).all()) break; + if ((*iterator == Index(6, 3)).all()) { + break; + } } EXPECT_EQ(iterator.getData().rows(), 3); diff --git a/grid_map_core/test/SpiralIteratorTest.cpp b/grid_map_core/test/SpiralIteratorTest.cpp index a43dd2a8b..f206dfc91 100644 --- a/grid_map_core/test/SpiralIteratorTest.cpp +++ b/grid_map_core/test/SpiralIteratorTest.cpp @@ -9,21 +9,16 @@ #include "grid_map_core/iterators/SpiralIterator.hpp" #include "grid_map_core/GridMap.hpp" -// Eigen -#include - // gtest #include -// Limits -#include - // Vector #include -using namespace std; -using namespace Eigen; -using namespace grid_map; +using grid_map::GridMap; +using grid_map::Length; +using grid_map::Position; +using grid_map::SpiralIterator; TEST(SpiralIterator, CenterOutOfMap) { diff --git a/grid_map_core/test/SubmapIteratorTest.cpp b/grid_map_core/test/SubmapIteratorTest.cpp index 9134b5651..3c838ea62 100644 --- a/grid_map_core/test/SubmapIteratorTest.cpp +++ b/grid_map_core/test/SubmapIteratorTest.cpp @@ -15,15 +15,13 @@ // gtest #include -// Limits -#include - // Vector #include -using namespace std; -using namespace Eigen; -using namespace grid_map; +using std::vector; +using std::string; + +namespace grid_map{ TEST(SubmapIterator, Simple) { Eigen::Array2i submapTopLeftIndex(3, 1); @@ -32,9 +30,9 @@ TEST(SubmapIterator, Simple) { Eigen::Array2i submapIndex; vector types; - types.push_back("type"); + types.emplace_back("type"); GridMap map(types); - map.setGeometry(Array2d(8.1, 5.1), 1.0, Vector2d(0.0, 0.0)); // bufferSize(8, 5) + map.setGeometry(Eigen::Array2d(8.1, 5.1), 1.0, Eigen::Vector2d(0.0, 0.0)); // bufferSize(8, 5) SubmapIterator iterator(map, submapTopLeftIndex, submapBufferSize); @@ -94,7 +92,7 @@ TEST(SubmapIterator, CircularBuffer) { Eigen::Array2i submapIndex; vector types; - types.push_back("type"); + types.emplace_back("type"); GridMap map(types); map.setGeometry(Length(8.1, 5.1), 1.0, Position(0.0, 0.0)); // bufferSize(8, 5) map.move(Position(-3.0, -2.0)); // bufferStartIndex(3, 2) @@ -203,8 +201,8 @@ TEST(SubmapIterator, InterleavedExecutionWithMove) { auto& layer = map.get("layer"); // Initialize the layer as sketched. - for (size_t colIndex = 0; colIndex < layer.cols(); colIndex++) { - layer.col(colIndex).setConstant(colIndex); + for (long colIndex = 0; colIndex < layer.cols(); colIndex++) { + layer.col(colIndex).setConstant(static_cast(colIndex)); } std::cout << "(4,7) contains " << map.at("layer", {4, 7}) << std::endl; @@ -213,7 +211,8 @@ TEST(SubmapIterator, InterleavedExecutionWithMove) { // check that the submap iterator returns {1,1,2,2} auto checkCorrectValues = [](std::array given) { - int countOnes = 0, countTwos = 0; + int countOnes = 0; + int countTwos = 0; for (auto& value : given) { if (std::abs(value - 1.0) < 1e-6) { countOnes++; @@ -227,7 +226,7 @@ TEST(SubmapIterator, InterleavedExecutionWithMove) { EXPECT_EQ(countTwos, 2); }; - std::array returnedSequence; + std::array returnedSequence{}; returnedSequence.fill(0); for (size_t submapIndex = 0; submapIndex < 4; submapIndex++) { @@ -263,4 +262,6 @@ TEST(SubmapIterator, InterleavedExecutionWithMove) { // returnedSequence.at(submapIndex) = map.at("layer", *iterator); // ++iterator; // }); -} \ No newline at end of file +} + +} // namespace grid_map diff --git a/grid_map_core/test/test_grid_map_core.cpp b/grid_map_core/test/test_grid_map_core.cpp index 862017d3b..78b7680c9 100644 --- a/grid_map_core/test/test_grid_map_core.cpp +++ b/grid_map_core/test/test_grid_map_core.cpp @@ -13,6 +13,6 @@ int main(int argc, char **argv) { testing::InitGoogleTest(&argc, argv); - srand((int)time(0)); + srand((int)time(nullptr)); return RUN_ALL_TESTS(); } diff --git a/grid_map_core/test/test_helpers.cpp b/grid_map_core/test/test_helpers.cpp index d00dcb49c..96d78faef 100644 --- a/grid_map_core/test/test_helpers.cpp +++ b/grid_map_core/test/test_helpers.cpp @@ -23,7 +23,7 @@ AnalyticalFunctions createFlatWorld(grid_map::GridMap *map) AnalyticalFunctions func; - func.f_ = [](double x, double y) { + func.f_ = [](double /*x*/, double /*y*/) { return 0.0; }; @@ -111,7 +111,7 @@ AnalyticalFunctions createTanhWorld(grid_map::GridMap *map) std::uniform_real_distribution scaling(0.1, 2.0); const double s = scaling(rndGenerator); - func.f_ = [s](double x,double y) { + func.f_ = [s](double x,double /*y*/) { const double expZ = std::exp(2 *s* x); return (expZ - 1) / (expZ + 1); }; @@ -149,12 +149,12 @@ AnalyticalFunctions createGaussianWorld(grid_map::GridMap *map) func.f_ = [g](double x,double y) { double value = 0.0; - for (int i = 0; i < g.size(); ++i) { - const double x0 = g.at(i).x0; - const double y0 = g.at(i).y0; - const double varX = g.at(i).varX; - const double varY = g.at(i).varY; - const double s = g.at(i).s; + for (const auto & i : g) { + const double x0 = i.x0; + const double y0 = i.y0; + const double varX = i.varX; + const double varY = i.varY; + const double s = i.s; value += s * std::exp(-(x-x0)*(x-x0) / (2.0*varX) - (y-y0)*(y-y0) / (2.0 * varY)); } @@ -168,12 +168,18 @@ AnalyticalFunctions createGaussianWorld(grid_map::GridMap *map) void fillGridMap(grid_map::GridMap *map, const AnalyticalFunctions &functions) { - grid_map::Matrix& data = (*map)[testLayer]; - for (grid_map::GridMapIterator iterator(*map); !iterator.isPastEnd(); ++iterator) { - const grid_map::Index index(*iterator); - grid_map::Position pos; + using grid_map::DataType; + using grid_map::GridMapIterator; + using grid_map::Index; + using grid_map::Matrix; + using grid_map::Position; + + Matrix& data = (*map)[testLayer]; + for (GridMapIterator iterator(*map); !iterator.isPastEnd(); ++iterator) { + const Index index(*iterator); + Position pos; map->getPosition(index, pos); - data(index(0), index(1)) = functions.f_(pos.x(), pos.y()); + data(index(0), index(1)) = static_cast(functions.f_(pos.x(), pos.y())); } } diff --git a/grid_map_core/test/test_helpers.hpp b/grid_map_core/test/test_helpers.hpp index d6cf51ad6..075963c7b 100644 --- a/grid_map_core/test/test_helpers.hpp +++ b/grid_map_core/test/test_helpers.hpp @@ -93,4 +93,4 @@ void verifyValuesAtQueryPointsAreClose(const grid_map::GridMap &map, const Analy const std::vector &queryPoints, grid_map::InterpolationMethods interpolationMethod); -} /*grid_map_test*/ +} // namespace grid_map_test From bb636e6d85bfb118ed9c1e466e69491d3b5a0f7d Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Sat, 13 Aug 2022 10:18:04 +0200 Subject: [PATCH 52/83] Merge branch 'release-22.08' GitOrigin-RevId: 3c94b85701fc8092dfa4bac02722439a58e6a63c --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 11bc3b9bc..1ab0a9280 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.1 + 1.7.2 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 461a6e664..f534549e8 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.1 + 1.7.2 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index b94740b50..12e54f3a2 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.1 + 1.7.2 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 7287960b3..85127afa3 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.1 + 1.7.2 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index ffd22ca47..1087f60a8 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.1 + 1.7.2 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 6a83f3bda..e2ec22597 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.1 + 1.7.2 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index dceb0df53..954783c2e 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.1 + 1.7.2 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 5959af246..50c74d020 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.1 + 1.7.2 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 19bf13de7..a2ad31096 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.1 + 1.7.2 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index cb7c3603b..01eef20b5 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.1 + 1.7.2 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 82d3b3316..3da90cd0b 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.1 + 1.7.2 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 8abe1c625..701c33f06 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.1 + 1.7.2 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 829b411eb..1acc81283 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.1 + 1.7.2 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 413163097..86e5b3584 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.1 + 1.7.2 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From fd4034b53094429b10708a8c545a56bfac36a96d Mon Sep 17 00:00:00 2001 From: YoshuaNava Date: Mon, 10 Oct 2022 10:26:22 +0200 Subject: [PATCH 53/83] Merge branch 'release-22.10' into master GitOrigin-RevId: 81716deb102b79af979516e3bbf1502e5d3f7714 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 1ab0a9280..8d93fbc33 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.2 + 1.7.3 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index f534549e8..febb9c910 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.2 + 1.7.3 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 12e54f3a2..85283bb99 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.2 + 1.7.3 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 85127afa3..427b49ef1 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.2 + 1.7.3 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 1087f60a8..43fba5f38 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.2 + 1.7.3 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index e2ec22597..7b7006333 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.2 + 1.7.3 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 954783c2e..a739dfab2 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.2 + 1.7.3 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 50c74d020..41ab9c83d 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.2 + 1.7.3 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index a2ad31096..f6170c571 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.2 + 1.7.3 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 01eef20b5..f17352a23 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.2 + 1.7.3 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 3da90cd0b..eb006630b 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.2 + 1.7.3 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 701c33f06..3ef9b47bd 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.2 + 1.7.3 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 1acc81283..236da6799 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.2 + 1.7.3 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 86e5b3584..4439a43c2 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.2 + 1.7.3 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 03f8676f31a0c8718d73f3941504445f5f1a9a98 Mon Sep 17 00:00:00 2001 From: Gabriel Hottiger Date: Fri, 25 Nov 2022 15:56:49 +0100 Subject: [PATCH 54/83] Merge branch 'release-22.12' of git.anybotics.com:anybotics/anybotics GitOrigin-RevId: 6eb1661e21882191caeeb777de5157fe5c715a2b --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 8d93fbc33..f40282a37 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.3 + 1.7.4 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index febb9c910..ac36d6517 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.3 + 1.7.4 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 85283bb99..f0412bf95 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.3 + 1.7.4 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 427b49ef1..bb3de4db7 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.3 + 1.7.4 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 43fba5f38..54961014d 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.3 + 1.7.4 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 7b7006333..3148a90e7 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.3 + 1.7.4 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index a739dfab2..abda83ae3 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.3 + 1.7.4 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 41ab9c83d..c06de5fcf 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.3 + 1.7.4 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index f6170c571..dcdc1f013 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.3 + 1.7.4 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index f17352a23..b63a2af5c 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.3 + 1.7.4 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index eb006630b..3e63ff5f4 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.3 + 1.7.4 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 3ef9b47bd..c6426cc1c 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.3 + 1.7.4 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 236da6799..710d52d03 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.3 + 1.7.4 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 4439a43c2..1e61f6f7b 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.3 + 1.7.4 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From c4b87760b8dad65032744aaa23c9923ffeb2695a Mon Sep 17 00:00:00 2001 From: Remo Diethelm Date: Fri, 20 Jan 2023 17:15:29 +0100 Subject: [PATCH 55/83] Merge branch 'release-23.02' of git.anybotics.com:anybotics/anybotics GitOrigin-RevId: bed4c80c856d2fbef5fcaae3829e16e10fdc4111 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index f40282a37..911716563 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.4 + 1.7.5 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index ac36d6517..4c67df214 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.4 + 1.7.5 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index f0412bf95..3b4cc9e1a 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.4 + 1.7.5 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index bb3de4db7..f2a348fe4 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.4 + 1.7.5 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 54961014d..6c18a6aa3 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.4 + 1.7.5 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 3148a90e7..d7d08ed52 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.4 + 1.7.5 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index abda83ae3..d7bbe3b2f 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.4 + 1.7.5 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index c06de5fcf..7aaf0cdad 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.4 + 1.7.5 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index dcdc1f013..8eca41cc3 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.4 + 1.7.5 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index b63a2af5c..e8e5b43aa 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.4 + 1.7.5 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 3e63ff5f4..5179f9ec7 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.4 + 1.7.5 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index c6426cc1c..1bec8b046 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.4 + 1.7.5 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 710d52d03..16be082ba 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.4 + 1.7.5 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 1e61f6f7b..0533d7103 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.4 + 1.7.5 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From c6b6e6c4d67bf876cf7ba0253e674abed382d8d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Wed, 1 Feb 2023 17:00:54 +0000 Subject: [PATCH 56/83] Merge branch 'fix/grid_map_rviz/visualization_toggle_on_startup' into 'master' [grid_map_rviz_plugin] Fix not showing until toggled & fix Color Transformer None GitOrigin-RevId: 107e799be4176100c6d4018ec68ebf2e22407ee9 --- .../modified/message_filter_display.h | 7 ++ grid_map_rviz_plugin/src/GridMapVisual.cpp | 64 +++++++++---------- 2 files changed, 39 insertions(+), 32 deletions(-) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h index 979dbfe21..8959b1089 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/modified/message_filter_display.h @@ -107,7 +107,14 @@ class MessageFilterDisplay : public _RosTopicDisplay { protected: void updateTopic() override { unsubscribe(); + + // reset and enable again. + bool wasEnabled = isEnabled(); reset(); + if(wasEnabled){ + onEnable(); + } + subscribe(); context_->queueRender(); } diff --git a/grid_map_rviz_plugin/src/GridMapVisual.cpp b/grid_map_rviz_plugin/src/GridMapVisual.cpp index 4be19e13d..7f917c6fb 100644 --- a/grid_map_rviz_plugin/src/GridMapVisual.cpp +++ b/grid_map_rviz_plugin/src/GridMapVisual.cpp @@ -118,7 +118,7 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f // Compute the color data for each cell. ColoringMethod coloringMethod; - if (flatColor) { + if (flatColor || noColor) { coloringMethod = ColoringMethod::FLAT; } else if(mapLayerColor) { coloringMethod = ColoringMethod::COLOR_LAYER; @@ -145,44 +145,44 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f // Add vertices for mesh. for (size_t i = 0; i < rows; ++i) { for (size_t j = 0; j < cols; ++j) { - std::vector vertices; - std::vector colors; - - // Add the vertex to the scene - grid_map::Index index(i, j); - if (!isValid(index(0), index(1))) { - continue; - } - grid_map::Position position = topLeft.array() - index.cast() * resolution; - manualObject_->position(position(0), position(1), heightOrFlatData(index(0), index(1))); + if(!noColor) { + std::vector vertices; + std::vector colors; + + // Add the vertex to the scene + grid_map::Index index(i, j); + if (!isValid(index(0), index(1))) { + continue; + } + grid_map::Position position = topLeft.array() - index.cast() * resolution; + manualObject_->position(position(0), position(1), heightOrFlatData(index(0), index(1))); - const Ogre::ColourValue& color = colorValues(index(0), index(1)); - manualObject_->colour(color.r, color.g, color.b, alpha); + const Ogre::ColourValue& color = colorValues(index(0), index(1)); + manualObject_->colour(color.r, color.g, color.b, alpha); - indexToOgreIndex(index(0), index(1)) = ogreIndex; - ogreIndex++; + indexToOgreIndex(index(0), index(1)) = ogreIndex; + ogreIndex++; - // We can only add triangles to the top left side of the current vertex if we have data. - if (i == 0 || j == 0) { - continue; - } + // We can only add triangles to the top left side of the current vertex if we have data. + if (i == 0 || j == 0) { + continue; + } - // Add triangles and grid to scene. - std::vector vertexIndices; - for (size_t k = 0; k < 2; k++) { - for (size_t l = 0; l < 2; l++) { - grid_map::Index index(i - k, j - l); - if (!isValid(index(0), index(1))) { - continue; + // Add triangles and grid to scene. + std::vector vertexIndices; + for (size_t k = 0; k < 2; k++) { + for (size_t l = 0; l < 2; l++) { + grid_map::Index index(i - k, j - l); + if (!isValid(index(0), index(1))) { + continue; + } + vertexIndices.emplace_back(indexToOgreIndex(index(0), index(1))); } - vertexIndices.emplace_back(indexToOgreIndex(index(0), index(1))); } - } - // Plot triangles if we have enough vertices. - if (vertexIndices.size() > 2) { - // Create one or two triangles from the vertices depending on how many vertices we have. - if (!noColor) { + // Plot triangles if we have enough vertices. + if (vertexIndices.size() > 2) { + // Create one or two triangles from the vertices depending on how many vertices we have. if (vertexIndices.size() == 3) { manualObject_->triangle(vertexIndices[0], vertexIndices[1], vertexIndices[2]); } else { From 515e3d815296635ac2420dd8d6a0350e0bdc4ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Thu, 23 Feb 2023 12:52:48 +0000 Subject: [PATCH 57/83] Merge branch 'feature/grid_map_rviz/anybotics_color_map' into 'master' [grid_map_rviz_plugin] Add anybotics color map. GitOrigin-RevId: 41e615c092f397f26577546baea4546d442d0e34 --- .../include/grid_map_rviz_plugin/GridMapColorMaps.hpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp index ce8f978f0..8d579466f 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp @@ -41,7 +41,8 @@ const std::map>> colorMap{ {"bwr", {{0.000000, 0.000000, 1.000000},{0.007843, 0.007843, 1.000000},{0.015686, 0.015686, 1.000000},{0.023529, 0.023529, 1.000000},{0.031373, 0.031373, 1.000000},{0.039216, 0.039216, 1.000000},{0.047059, 0.047059, 1.000000},{0.054902, 0.054902, 1.000000},{0.062745, 0.062745, 1.000000},{0.070588, 0.070588, 1.000000},{0.078431, 0.078431, 1.000000},{0.086275, 0.086275, 1.000000},{0.094118, 0.094118, 1.000000},{0.101961, 0.101961, 1.000000},{0.109804, 0.109804, 1.000000},{0.117647, 0.117647, 1.000000},{0.125490, 0.125490, 1.000000},{0.133333, 0.133333, 1.000000},{0.141176, 0.141176, 1.000000},{0.149020, 0.149020, 1.000000},{0.156863, 0.156863, 1.000000},{0.164706, 0.164706, 1.000000},{0.172549, 0.172549, 1.000000},{0.180392, 0.180392, 1.000000},{0.188235, 0.188235, 1.000000},{0.196078, 0.196078, 1.000000},{0.203922, 0.203922, 1.000000},{0.211765, 0.211765, 1.000000},{0.219608, 0.219608, 1.000000},{0.227451, 0.227451, 1.000000},{0.235294, 0.235294, 1.000000},{0.243137, 0.243137, 1.000000},{0.250980, 0.250980, 1.000000},{0.258824, 0.258824, 1.000000},{0.266667, 0.266667, 1.000000},{0.274510, 0.274510, 1.000000},{0.282353, 0.282353, 1.000000},{0.290196, 0.290196, 1.000000},{0.298039, 0.298039, 1.000000},{0.305882, 0.305882, 1.000000},{0.313725, 0.313725, 1.000000},{0.321569, 0.321569, 1.000000},{0.329412, 0.329412, 1.000000},{0.337255, 0.337255, 1.000000},{0.345098, 0.345098, 1.000000},{0.352941, 0.352941, 1.000000},{0.360784, 0.360784, 1.000000},{0.368627, 0.368627, 1.000000},{0.376471, 0.376471, 1.000000},{0.384314, 0.384314, 1.000000},{0.392157, 0.392157, 1.000000},{0.400000, 0.400000, 1.000000},{0.407843, 0.407843, 1.000000},{0.415686, 0.415686, 1.000000},{0.423529, 0.423529, 1.000000},{0.431373, 0.431373, 1.000000},{0.439216, 0.439216, 1.000000},{0.447059, 0.447059, 1.000000},{0.454902, 0.454902, 1.000000},{0.462745, 0.462745, 1.000000},{0.470588, 0.470588, 1.000000},{0.478431, 0.478431, 1.000000},{0.486275, 0.486275, 1.000000},{0.494118, 0.494118, 1.000000},{0.501961, 0.501961, 1.000000},{0.509804, 0.509804, 1.000000},{0.517647, 0.517647, 1.000000},{0.525490, 0.525490, 1.000000},{0.533333, 0.533333, 1.000000},{0.541176, 0.541176, 1.000000},{0.549020, 0.549020, 1.000000},{0.556863, 0.556863, 1.000000},{0.564706, 0.564706, 1.000000},{0.572549, 0.572549, 1.000000},{0.580392, 0.580392, 1.000000},{0.588235, 0.588235, 1.000000},{0.596078, 0.596078, 1.000000},{0.603922, 0.603922, 1.000000},{0.611765, 0.611765, 1.000000},{0.619608, 0.619608, 1.000000},{0.627451, 0.627451, 1.000000},{0.635294, 0.635294, 1.000000},{0.643137, 0.643137, 1.000000},{0.650980, 0.650980, 1.000000},{0.658824, 0.658824, 1.000000},{0.666667, 0.666667, 1.000000},{0.674510, 0.674510, 1.000000},{0.682353, 0.682353, 1.000000},{0.690196, 0.690196, 1.000000},{0.698039, 0.698039, 1.000000},{0.705882, 0.705882, 1.000000},{0.713725, 0.713725, 1.000000},{0.721569, 0.721569, 1.000000},{0.729412, 0.729412, 1.000000},{0.737255, 0.737255, 1.000000},{0.745098, 0.745098, 1.000000},{0.752941, 0.752941, 1.000000},{0.760784, 0.760784, 1.000000},{0.768627, 0.768627, 1.000000},{0.776471, 0.776471, 1.000000},{0.784314, 0.784314, 1.000000},{0.792157, 0.792157, 1.000000},{0.800000, 0.800000, 1.000000},{0.807843, 0.807843, 1.000000},{0.815686, 0.815686, 1.000000},{0.823529, 0.823529, 1.000000},{0.831373, 0.831373, 1.000000},{0.839216, 0.839216, 1.000000},{0.847059, 0.847059, 1.000000},{0.854902, 0.854902, 1.000000},{0.862745, 0.862745, 1.000000},{0.870588, 0.870588, 1.000000},{0.878431, 0.878431, 1.000000},{0.886275, 0.886275, 1.000000},{0.894118, 0.894118, 1.000000},{0.901961, 0.901961, 1.000000},{0.909804, 0.909804, 1.000000},{0.917647, 0.917647, 1.000000},{0.925490, 0.925490, 1.000000},{0.933333, 0.933333, 1.000000},{0.941176, 0.941176, 1.000000},{0.949020, 0.949020, 1.000000},{0.956863, 0.956863, 1.000000},{0.964706, 0.964706, 1.000000},{0.972549, 0.972549, 1.000000},{0.980392, 0.980392, 1.000000},{0.988235, 0.988235, 1.000000},{0.996078, 0.996078, 1.000000},{1.000000, 0.996078, 0.996078},{1.000000, 0.988235, 0.988235},{1.000000, 0.980392, 0.980392},{1.000000, 0.972549, 0.972549},{1.000000, 0.964706, 0.964706},{1.000000, 0.956863, 0.956863},{1.000000, 0.949020, 0.949020},{1.000000, 0.941176, 0.941176},{1.000000, 0.933333, 0.933333},{1.000000, 0.925490, 0.925490},{1.000000, 0.917647, 0.917647},{1.000000, 0.909804, 0.909804},{1.000000, 0.901961, 0.901961},{1.000000, 0.894118, 0.894118},{1.000000, 0.886275, 0.886275},{1.000000, 0.878431, 0.878431},{1.000000, 0.870588, 0.870588},{1.000000, 0.862745, 0.862745},{1.000000, 0.854902, 0.854902},{1.000000, 0.847059, 0.847059},{1.000000, 0.839216, 0.839216},{1.000000, 0.831373, 0.831373},{1.000000, 0.823529, 0.823529},{1.000000, 0.815686, 0.815686},{1.000000, 0.807843, 0.807843},{1.000000, 0.800000, 0.800000},{1.000000, 0.792157, 0.792157},{1.000000, 0.784314, 0.784314},{1.000000, 0.776471, 0.776471},{1.000000, 0.768627, 0.768627},{1.000000, 0.760784, 0.760784},{1.000000, 0.752941, 0.752941},{1.000000, 0.745098, 0.745098},{1.000000, 0.737255, 0.737255},{1.000000, 0.729412, 0.729412},{1.000000, 0.721569, 0.721569},{1.000000, 0.713725, 0.713725},{1.000000, 0.705882, 0.705882},{1.000000, 0.698039, 0.698039},{1.000000, 0.690196, 0.690196},{1.000000, 0.682353, 0.682353},{1.000000, 0.674510, 0.674510},{1.000000, 0.666667, 0.666667},{1.000000, 0.658824, 0.658824},{1.000000, 0.650980, 0.650980},{1.000000, 0.643137, 0.643137},{1.000000, 0.635294, 0.635294},{1.000000, 0.627451, 0.627451},{1.000000, 0.619608, 0.619608},{1.000000, 0.611765, 0.611765},{1.000000, 0.603922, 0.603922},{1.000000, 0.596078, 0.596078},{1.000000, 0.588235, 0.588235},{1.000000, 0.580392, 0.580392},{1.000000, 0.572549, 0.572549},{1.000000, 0.564706, 0.564706},{1.000000, 0.556863, 0.556863},{1.000000, 0.549020, 0.549020},{1.000000, 0.541176, 0.541176},{1.000000, 0.533333, 0.533333},{1.000000, 0.525490, 0.525490},{1.000000, 0.517647, 0.517647},{1.000000, 0.509804, 0.509804},{1.000000, 0.501961, 0.501961},{1.000000, 0.494118, 0.494118},{1.000000, 0.486275, 0.486275},{1.000000, 0.478431, 0.478431},{1.000000, 0.470588, 0.470588},{1.000000, 0.462745, 0.462745},{1.000000, 0.454902, 0.454902},{1.000000, 0.447059, 0.447059},{1.000000, 0.439216, 0.439216},{1.000000, 0.431373, 0.431373},{1.000000, 0.423529, 0.423529},{1.000000, 0.415686, 0.415686},{1.000000, 0.407843, 0.407843},{1.000000, 0.400000, 0.400000},{1.000000, 0.392157, 0.392157},{1.000000, 0.384314, 0.384314},{1.000000, 0.376471, 0.376471},{1.000000, 0.368627, 0.368627},{1.000000, 0.360784, 0.360784},{1.000000, 0.352941, 0.352941},{1.000000, 0.345098, 0.345098},{1.000000, 0.337255, 0.337255},{1.000000, 0.329412, 0.329412},{1.000000, 0.321569, 0.321569},{1.000000, 0.313725, 0.313725},{1.000000, 0.305882, 0.305882},{1.000000, 0.298039, 0.298039},{1.000000, 0.290196, 0.290196},{1.000000, 0.282353, 0.282353},{1.000000, 0.274510, 0.274510},{1.000000, 0.266667, 0.266667},{1.000000, 0.258824, 0.258824},{1.000000, 0.250980, 0.250980},{1.000000, 0.243137, 0.243137},{1.000000, 0.235294, 0.235294},{1.000000, 0.227451, 0.227451},{1.000000, 0.219608, 0.219608},{1.000000, 0.211765, 0.211765},{1.000000, 0.203922, 0.203922},{1.000000, 0.196078, 0.196078},{1.000000, 0.188235, 0.188235},{1.000000, 0.180392, 0.180392},{1.000000, 0.172549, 0.172549},{1.000000, 0.164706, 0.164706},{1.000000, 0.156863, 0.156863},{1.000000, 0.149020, 0.149020},{1.000000, 0.141176, 0.141176},{1.000000, 0.133333, 0.133333},{1.000000, 0.125490, 0.125490},{1.000000, 0.117647, 0.117647},{1.000000, 0.109804, 0.109804},{1.000000, 0.101961, 0.101961},{1.000000, 0.094118, 0.094118},{1.000000, 0.086275, 0.086275},{1.000000, 0.078431, 0.078431},{1.000000, 0.070588, 0.070588},{1.000000, 0.062745, 0.062745},{1.000000, 0.054902, 0.054902},{1.000000, 0.047059, 0.047059},{1.000000, 0.039216, 0.039216},{1.000000, 0.031373, 0.031373},{1.000000, 0.023529, 0.023529},{1.000000, 0.015686, 0.015686},{1.000000, 0.007843, 0.007843},{1.000000, 0.000000, 0.000000}}}, {"seismic", {{0.000000, 0.000000, 0.300000},{0.000000, 0.000000, 0.310980},{0.000000, 0.000000, 0.321961},{0.000000, 0.000000, 0.332941},{0.000000, 0.000000, 0.343922},{0.000000, 0.000000, 0.354902},{0.000000, 0.000000, 0.365882},{0.000000, 0.000000, 0.376863},{0.000000, 0.000000, 0.387843},{0.000000, 0.000000, 0.398824},{0.000000, 0.000000, 0.409804},{0.000000, 0.000000, 0.420784},{0.000000, 0.000000, 0.431765},{0.000000, 0.000000, 0.442745},{0.000000, 0.000000, 0.453725},{0.000000, 0.000000, 0.464706},{0.000000, 0.000000, 0.475686},{0.000000, 0.000000, 0.486667},{0.000000, 0.000000, 0.497647},{0.000000, 0.000000, 0.508627},{0.000000, 0.000000, 0.519608},{0.000000, 0.000000, 0.530588},{0.000000, 0.000000, 0.541569},{0.000000, 0.000000, 0.552549},{0.000000, 0.000000, 0.563529},{0.000000, 0.000000, 0.574510},{0.000000, 0.000000, 0.585490},{0.000000, 0.000000, 0.596471},{0.000000, 0.000000, 0.607451},{0.000000, 0.000000, 0.618431},{0.000000, 0.000000, 0.629412},{0.000000, 0.000000, 0.640392},{0.000000, 0.000000, 0.651373},{0.000000, 0.000000, 0.662353},{0.000000, 0.000000, 0.673333},{0.000000, 0.000000, 0.684314},{0.000000, 0.000000, 0.695294},{0.000000, 0.000000, 0.706275},{0.000000, 0.000000, 0.717255},{0.000000, 0.000000, 0.728235},{0.000000, 0.000000, 0.739216},{0.000000, 0.000000, 0.750196},{0.000000, 0.000000, 0.761176},{0.000000, 0.000000, 0.772157},{0.000000, 0.000000, 0.783137},{0.000000, 0.000000, 0.794118},{0.000000, 0.000000, 0.805098},{0.000000, 0.000000, 0.816078},{0.000000, 0.000000, 0.827059},{0.000000, 0.000000, 0.838039},{0.000000, 0.000000, 0.849020},{0.000000, 0.000000, 0.860000},{0.000000, 0.000000, 0.870980},{0.000000, 0.000000, 0.881961},{0.000000, 0.000000, 0.892941},{0.000000, 0.000000, 0.903922},{0.000000, 0.000000, 0.914902},{0.000000, 0.000000, 0.925882},{0.000000, 0.000000, 0.936863},{0.000000, 0.000000, 0.947843},{0.000000, 0.000000, 0.958824},{0.000000, 0.000000, 0.969804},{0.000000, 0.000000, 0.980784},{0.000000, 0.000000, 0.991765},{0.003922, 0.003922, 1.000000},{0.019608, 0.019608, 1.000000},{0.035294, 0.035294, 1.000000},{0.050980, 0.050980, 1.000000},{0.066667, 0.066667, 1.000000},{0.082353, 0.082353, 1.000000},{0.098039, 0.098039, 1.000000},{0.113725, 0.113725, 1.000000},{0.129412, 0.129412, 1.000000},{0.145098, 0.145098, 1.000000},{0.160784, 0.160784, 1.000000},{0.176471, 0.176471, 1.000000},{0.192157, 0.192157, 1.000000},{0.207843, 0.207843, 1.000000},{0.223529, 0.223529, 1.000000},{0.239216, 0.239216, 1.000000},{0.254902, 0.254902, 1.000000},{0.270588, 0.270588, 1.000000},{0.286275, 0.286275, 1.000000},{0.301961, 0.301961, 1.000000},{0.317647, 0.317647, 1.000000},{0.333333, 0.333333, 1.000000},{0.349020, 0.349020, 1.000000},{0.364706, 0.364706, 1.000000},{0.380392, 0.380392, 1.000000},{0.396078, 0.396078, 1.000000},{0.411765, 0.411765, 1.000000},{0.427451, 0.427451, 1.000000},{0.443137, 0.443137, 1.000000},{0.458824, 0.458824, 1.000000},{0.474510, 0.474510, 1.000000},{0.490196, 0.490196, 1.000000},{0.505882, 0.505882, 1.000000},{0.521569, 0.521569, 1.000000},{0.537255, 0.537255, 1.000000},{0.552941, 0.552941, 1.000000},{0.568627, 0.568627, 1.000000},{0.584314, 0.584314, 1.000000},{0.600000, 0.600000, 1.000000},{0.615686, 0.615686, 1.000000},{0.631373, 0.631373, 1.000000},{0.647059, 0.647059, 1.000000},{0.662745, 0.662745, 1.000000},{0.678431, 0.678431, 1.000000},{0.694118, 0.694118, 1.000000},{0.709804, 0.709804, 1.000000},{0.725490, 0.725490, 1.000000},{0.741176, 0.741176, 1.000000},{0.756863, 0.756863, 1.000000},{0.772549, 0.772549, 1.000000},{0.788235, 0.788235, 1.000000},{0.803922, 0.803922, 1.000000},{0.819608, 0.819608, 1.000000},{0.835294, 0.835294, 1.000000},{0.850980, 0.850980, 1.000000},{0.866667, 0.866667, 1.000000},{0.882353, 0.882353, 1.000000},{0.898039, 0.898039, 1.000000},{0.913725, 0.913725, 1.000000},{0.929412, 0.929412, 1.000000},{0.945098, 0.945098, 1.000000},{0.960784, 0.960784, 1.000000},{0.976471, 0.976471, 1.000000},{0.992157, 0.992157, 1.000000},{1.000000, 0.992157, 0.992157},{1.000000, 0.976471, 0.976471},{1.000000, 0.960784, 0.960784},{1.000000, 0.945098, 0.945098},{1.000000, 0.929412, 0.929412},{1.000000, 0.913725, 0.913725},{1.000000, 0.898039, 0.898039},{1.000000, 0.882353, 0.882353},{1.000000, 0.866667, 0.866667},{1.000000, 0.850980, 0.850980},{1.000000, 0.835294, 0.835294},{1.000000, 0.819608, 0.819608},{1.000000, 0.803922, 0.803922},{1.000000, 0.788235, 0.788235},{1.000000, 0.772549, 0.772549},{1.000000, 0.756863, 0.756863},{1.000000, 0.741176, 0.741176},{1.000000, 0.725490, 0.725490},{1.000000, 0.709804, 0.709804},{1.000000, 0.694118, 0.694118},{1.000000, 0.678431, 0.678431},{1.000000, 0.662745, 0.662745},{1.000000, 0.647059, 0.647059},{1.000000, 0.631373, 0.631373},{1.000000, 0.615686, 0.615686},{1.000000, 0.600000, 0.600000},{1.000000, 0.584314, 0.584314},{1.000000, 0.568627, 0.568627},{1.000000, 0.552941, 0.552941},{1.000000, 0.537255, 0.537255},{1.000000, 0.521569, 0.521569},{1.000000, 0.505882, 0.505882},{1.000000, 0.490196, 0.490196},{1.000000, 0.474510, 0.474510},{1.000000, 0.458824, 0.458824},{1.000000, 0.443137, 0.443137},{1.000000, 0.427451, 0.427451},{1.000000, 0.411765, 0.411765},{1.000000, 0.396078, 0.396078},{1.000000, 0.380392, 0.380392},{1.000000, 0.364706, 0.364706},{1.000000, 0.349020, 0.349020},{1.000000, 0.333333, 0.333333},{1.000000, 0.317647, 0.317647},{1.000000, 0.301961, 0.301961},{1.000000, 0.286275, 0.286275},{1.000000, 0.270588, 0.270588},{1.000000, 0.254902, 0.254902},{1.000000, 0.239216, 0.239216},{1.000000, 0.223529, 0.223529},{1.000000, 0.207843, 0.207843},{1.000000, 0.192157, 0.192157},{1.000000, 0.176471, 0.176471},{1.000000, 0.160784, 0.160784},{1.000000, 0.145098, 0.145098},{1.000000, 0.129412, 0.129412},{1.000000, 0.113725, 0.113725},{1.000000, 0.098039, 0.098039},{1.000000, 0.082353, 0.082353},{1.000000, 0.066667, 0.066667},{1.000000, 0.050980, 0.050980},{1.000000, 0.035294, 0.035294},{1.000000, 0.019608, 0.019608},{1.000000, 0.003922, 0.003922},{0.994118, 0.000000, 0.000000},{0.986275, 0.000000, 0.000000},{0.978431, 0.000000, 0.000000},{0.970588, 0.000000, 0.000000},{0.962745, 0.000000, 0.000000},{0.954902, 0.000000, 0.000000},{0.947059, 0.000000, 0.000000},{0.939216, 0.000000, 0.000000},{0.931373, 0.000000, 0.000000},{0.923529, 0.000000, 0.000000},{0.915686, 0.000000, 0.000000},{0.907843, 0.000000, 0.000000},{0.900000, 0.000000, 0.000000},{0.892157, 0.000000, 0.000000},{0.884314, 0.000000, 0.000000},{0.876471, 0.000000, 0.000000},{0.868627, 0.000000, 0.000000},{0.860784, 0.000000, 0.000000},{0.852941, 0.000000, 0.000000},{0.845098, 0.000000, 0.000000},{0.837255, 0.000000, 0.000000},{0.829412, 0.000000, 0.000000},{0.821569, 0.000000, 0.000000},{0.813725, 0.000000, 0.000000},{0.805882, 0.000000, 0.000000},{0.798039, 0.000000, 0.000000},{0.790196, 0.000000, 0.000000},{0.782353, 0.000000, 0.000000},{0.774510, 0.000000, 0.000000},{0.766667, 0.000000, 0.000000},{0.758824, 0.000000, 0.000000},{0.750980, 0.000000, 0.000000},{0.743137, 0.000000, 0.000000},{0.735294, 0.000000, 0.000000},{0.727451, 0.000000, 0.000000},{0.719608, 0.000000, 0.000000},{0.711765, 0.000000, 0.000000},{0.703922, 0.000000, 0.000000},{0.696078, 0.000000, 0.000000},{0.688235, 0.000000, 0.000000},{0.680392, 0.000000, 0.000000},{0.672549, 0.000000, 0.000000},{0.664706, 0.000000, 0.000000},{0.656863, 0.000000, 0.000000},{0.649020, 0.000000, 0.000000},{0.641176, 0.000000, 0.000000},{0.633333, 0.000000, 0.000000},{0.625490, 0.000000, 0.000000},{0.617647, 0.000000, 0.000000},{0.609804, 0.000000, 0.000000},{0.601961, 0.000000, 0.000000},{0.594118, 0.000000, 0.000000},{0.586275, 0.000000, 0.000000},{0.578431, 0.000000, 0.000000},{0.570588, 0.000000, 0.000000},{0.562745, 0.000000, 0.000000},{0.554902, 0.000000, 0.000000},{0.547059, 0.000000, 0.000000},{0.539216, 0.000000, 0.000000},{0.531373, 0.000000, 0.000000},{0.523529, 0.000000, 0.000000},{0.515686, 0.000000, 0.000000},{0.507843, 0.000000, 0.000000},{0.500000, 0.000000, 0.000000}}}, {"turbo", {{0.18995,0.07176,0.23217},{0.19483,0.08339,0.26149},{0.19956,0.09498,0.29024},{0.20415,0.10652,0.31844},{0.20860,0.11802,0.34607},{0.21291,0.12947,0.37314},{0.21708,0.14087,0.39964},{0.22111,0.15223,0.42558},{0.22500,0.16354,0.45096},{0.22875,0.17481,0.47578},{0.23236,0.18603,0.50004},{0.23582,0.19720,0.52373},{0.23915,0.20833,0.54686},{0.24234,0.21941,0.56942},{0.24539,0.23044,0.59142},{0.24830,0.24143,0.61286},{0.25107,0.25237,0.63374},{0.25369,0.26327,0.65406},{0.25618,0.27412,0.67381},{0.25853,0.28492,0.69300},{0.26074,0.29568,0.71162},{0.26280,0.30639,0.72968},{0.26473,0.31706,0.74718},{0.26652,0.32768,0.76412},{0.26816,0.33825,0.78050},{0.26967,0.34878,0.79631},{0.27103,0.35926,0.81156},{0.27226,0.36970,0.82624},{0.27334,0.38008,0.84037},{0.27429,0.39043,0.85393},{0.27509,0.40072,0.86692},{0.27576,0.41097,0.87936},{0.27628,0.42118,0.89123},{0.27667,0.43134,0.90254},{0.27691,0.44145,0.91328},{0.27701,0.45152,0.92347},{0.27698,0.46153,0.93309},{0.27680,0.47151,0.94214},{0.27648,0.48144,0.95064},{0.27603,0.49132,0.95857},{0.27543,0.50115,0.96594},{0.27469,0.51094,0.97275},{0.27381,0.52069,0.97899},{0.27273,0.53040,0.98461},{0.27106,0.54015,0.98930},{0.26878,0.54995,0.99303},{0.26592,0.55979,0.99583},{0.26252,0.56967,0.99773},{0.25862,0.57958,0.99876},{0.25425,0.58950,0.99896},{0.24946,0.59943,0.99835},{0.24427,0.60937,0.99697},{0.23874,0.61931,0.99485},{0.23288,0.62923,0.99202},{0.22676,0.63913,0.98851},{0.22039,0.64901,0.98436},{0.21382,0.65886,0.97959},{0.20708,0.66866,0.97423},{0.20021,0.67842,0.96833},{0.19326,0.68812,0.96190},{0.18625,0.69775,0.95498},{0.17923,0.70732,0.94761},{0.17223,0.71680,0.93981},{0.16529,0.72620,0.93161},{0.15844,0.73551,0.92305},{0.15173,0.74472,0.91416},{0.14519,0.75381,0.90496},{0.13886,0.76279,0.89550},{0.13278,0.77165,0.88580},{0.12698,0.78037,0.87590},{0.12151,0.78896,0.86581},{0.11639,0.79740,0.85559},{0.11167,0.80569,0.84525},{0.10738,0.81381,0.83484},{0.10357,0.82177,0.82437},{0.10026,0.82955,0.81389},{0.09750,0.83714,0.80342},{0.09532,0.84455,0.79299},{0.09377,0.85175,0.78264},{0.09287,0.85875,0.77240},{0.09267,0.86554,0.76230},{0.09320,0.87211,0.75237},{0.09451,0.87844,0.74265},{0.09662,0.88454,0.73316},{0.09958,0.89040,0.72393},{0.10342,0.89600,0.71500},{0.10815,0.90142,0.70599},{0.11374,0.90673,0.69651},{0.12014,0.91193,0.68660},{0.12733,0.91701,0.67627},{0.13526,0.92197,0.66556},{0.14391,0.92680,0.65448},{0.15323,0.93151,0.64308},{0.16319,0.93609,0.63137},{0.17377,0.94053,0.61938},{0.18491,0.94484,0.60713},{0.19659,0.94901,0.59466},{0.20877,0.95304,0.58199},{0.22142,0.95692,0.56914},{0.23449,0.96065,0.55614},{0.24797,0.96423,0.54303},{0.26180,0.96765,0.52981},{0.27597,0.97092,0.51653},{0.29042,0.97403,0.50321},{0.30513,0.97697,0.48987},{0.32006,0.97974,0.47654},{0.33517,0.98234,0.46325},{0.35043,0.98477,0.45002},{0.36581,0.98702,0.43688},{0.38127,0.98909,0.42386},{0.39678,0.99098,0.41098},{0.41229,0.99268,0.39826},{0.42778,0.99419,0.38575},{0.44321,0.99551,0.37345},{0.45854,0.99663,0.36140},{0.47375,0.99755,0.34963},{0.48879,0.99828,0.33816},{0.50362,0.99879,0.32701},{0.51822,0.99910,0.31622},{0.53255,0.99919,0.30581},{0.54658,0.99907,0.29581},{0.56026,0.99873,0.28623},{0.57357,0.99817,0.27712},{0.58646,0.99739,0.26849},{0.59891,0.99638,0.26038},{0.61088,0.99514,0.25280},{0.62233,0.99366,0.24579},{0.63323,0.99195,0.23937},{0.64362,0.98999,0.23356},{0.65394,0.98775,0.22835},{0.66428,0.98524,0.22370},{0.67462,0.98246,0.21960},{0.68494,0.97941,0.21602},{0.69525,0.97610,0.21294},{0.70553,0.97255,0.21032},{0.71577,0.96875,0.20815},{0.72596,0.96470,0.20640},{0.73610,0.96043,0.20504},{0.74617,0.95593,0.20406},{0.75617,0.95121,0.20343},{0.76608,0.94627,0.20311},{0.77591,0.94113,0.20310},{0.78563,0.93579,0.20336},{0.79524,0.93025,0.20386},{0.80473,0.92452,0.20459},{0.81410,0.91861,0.20552},{0.82333,0.91253,0.20663},{0.83241,0.90627,0.20788},{0.84133,0.89986,0.20926},{0.85010,0.89328,0.21074},{0.85868,0.88655,0.21230},{0.86709,0.87968,0.21391},{0.87530,0.87267,0.21555},{0.88331,0.86553,0.21719},{0.89112,0.85826,0.21880},{0.89870,0.85087,0.22038},{0.90605,0.84337,0.22188},{0.91317,0.83576,0.22328},{0.92004,0.82806,0.22456},{0.92666,0.82025,0.22570},{0.93301,0.81236,0.22667},{0.93909,0.80439,0.22744},{0.94489,0.79634,0.22800},{0.95039,0.78823,0.22831},{0.95560,0.78005,0.22836},{0.96049,0.77181,0.22811},{0.96507,0.76352,0.22754},{0.96931,0.75519,0.22663},{0.97323,0.74682,0.22536},{0.97679,0.73842,0.22369},{0.98000,0.73000,0.22161},{0.98289,0.72140,0.21918},{0.98549,0.71250,0.21650},{0.98781,0.70330,0.21358},{0.98986,0.69382,0.21043},{0.99163,0.68408,0.20706},{0.99314,0.67408,0.20348},{0.99438,0.66386,0.19971},{0.99535,0.65341,0.19577},{0.99607,0.64277,0.19165},{0.99654,0.63193,0.18738},{0.99675,0.62093,0.18297},{0.99672,0.60977,0.17842},{0.99644,0.59846,0.17376},{0.99593,0.58703,0.16899},{0.99517,0.57549,0.16412},{0.99419,0.56386,0.15918},{0.99297,0.55214,0.15417},{0.99153,0.54036,0.14910},{0.98987,0.52854,0.14398},{0.98799,0.51667,0.13883},{0.98590,0.50479,0.13367},{0.98360,0.49291,0.12849},{0.98108,0.48104,0.12332},{0.97837,0.46920,0.11817},{0.97545,0.45740,0.11305},{0.97234,0.44565,0.10797},{0.96904,0.43399,0.10294},{0.96555,0.42241,0.09798},{0.96187,0.41093,0.09310},{0.95801,0.39958,0.08831},{0.95398,0.38836,0.08362},{0.94977,0.37729,0.07905},{0.94538,0.36638,0.07461},{0.94084,0.35566,0.07031},{0.93612,0.34513,0.06616},{0.93125,0.33482,0.06218},{0.92623,0.32473,0.05837},{0.92105,0.31489,0.05475},{0.91572,0.30530,0.05134},{0.91024,0.29599,0.04814},{0.90463,0.28696,0.04516},{0.89888,0.27824,0.04243},{0.89298,0.26981,0.03993},{0.88691,0.26152,0.03753},{0.88066,0.25334,0.03521},{0.87422,0.24526,0.03297},{0.86760,0.23730,0.03082},{0.86079,0.22945,0.02875},{0.85380,0.22170,0.02677},{0.84662,0.21407,0.02487},{0.83926,0.20654,0.02305},{0.83172,0.19912,0.02131},{0.82399,0.19182,0.01966},{0.81608,0.18462,0.01809},{0.80799,0.17753,0.01660},{0.79971,0.17055,0.01520},{0.79125,0.16368,0.01387},{0.78260,0.15693,0.01264},{0.77377,0.15028,0.01148},{0.76476,0.14374,0.01041},{0.75556,0.13731,0.00942},{0.74617,0.13098,0.00851},{0.73661,0.12477,0.00769},{0.72686,0.11867,0.00695},{0.71692,0.11268,0.00629},{0.70680,0.10680,0.00571},{0.69650,0.10102,0.00522},{0.68602,0.09536,0.00481},{0.67535,0.08980,0.00449},{0.66449,0.08436,0.00424},{0.65345,0.07902,0.00408},{0.64223,0.07380,0.00401},{0.63082,0.06868,0.00401},{0.61923,0.06367,0.00410},{0.60746,0.05878,0.00427},{0.59550,0.05399,0.00453},{0.58336,0.04931,0.00486},{0.57103,0.04474,0.00529},{0.55852,0.04028,0.00579},{0.54583,0.03593,0.00638},{0.53295,0.03169,0.00705},{0.51989,0.02756,0.00780},{0.50664,0.02354,0.00863},{0.49321,0.01963,0.00955},{0.47960,0.01583,0.01055}}}, - {"default", {{1.0, 0, 1}, {0.9803921568627452, 0, 1}, {0.9607843137254901, 0, 1}, {0.9411764705882353, 0, 1}, {0.9215686274509804, 0, 1}, {0.9019607843137254, 0, 1}, {0.8823529411764706, 0, 1}, {0.8627450980392157, 0, 1}, {0.8431372549019609, 0, 1}, {0.8235294117647058, 0, 1}, {0.803921568627451, 0, 1}, {0.784313725490196, 0, 1}, {0.7647058823529411, 0, 1}, {0.7450980392156863, 0, 1}, {0.7254901960784315, 0, 1}, {0.7058823529411764, 0, 1}, {0.6862745098039216, 0, 1}, {0.6666666666666667, 0, 1}, {0.6470588235294117, 0, 1}, {0.6274509803921569, 0, 1}, {0.607843137254902, 0, 1}, {0.5882352941176472, 0, 1}, {0.5686274509803921, 0, 1}, {0.5490196078431373, 0, 1}, {0.5294117647058822, 0, 1}, {0.5098039215686274, 0, 1}, {0.4901960784313726, 0, 1}, {0.47058823529411775, 0, 1}, {0.4509803921568627, 0, 1}, {0.43137254901960786, 0, 1}, {0.4117647058823528, 0, 1}, {0.392156862745098, 0, 1}, {0.37254901960784315, 0, 1}, {0.3529411764705883, 0, 1}, {0.3333333333333335, 0, 1}, {0.3137254901960784, 0, 1}, {0.2941176470588236, 0, 1}, {0.27450980392156854, 0, 1}, {0.2549019607843137, 0, 1}, {0.23529411764705888, 0, 1}, {0.21568627450980404, 0, 1}, {0.196078431372549, 0, 1}, {0.17647058823529416, 0, 1}, {0.1568627450980391, 0, 1}, {0.13725490196078427, 0, 1}, {0.11764705882352944, 0, 1}, {0.0980392156862746, 0, 1}, {0.07843137254901955, 0, 1}, {0.05882352941176472, 0, 1}, {0.039215686274509665, 0, 1}, {0.019607843137254832, 0, 1}, {0, 0.0, 1}, {0, 0.019607843137254832, 1}, {0, 0.039215686274509665, 1}, {0, 0.0588235294117645, 1}, {0, 0.07843137254901977, 1}, {0, 0.0980392156862746, 1}, {0, 0.11764705882352944, 1}, {0, 0.13725490196078427, 1}, {0, 0.15686274509803955, 1}, {0, 0.17647058823529438, 1}, {0, 0.1960784313725492, 1}, {0, 0.21568627450980404, 1}, {0, 0.23529411764705888, 1}, {0, 0.2549019607843137, 1}, {0, 0.27450980392156854, 1}, {0, 0.2941176470588234, 1}, {0, 0.3137254901960782, 1}, {0, 0.33333333333333304, 1}, {0, 0.35294117647058787, 1}, {0, 0.37254901960784315, 1}, {0, 0.392156862745098, 1}, {0, 0.4117647058823528, 1}, {0, 0.43137254901960764, 1}, {0, 0.4509803921568629, 1}, {0, 0.47058823529411775, 1}, {0, 0.4901960784313726, 1}, {0, 0.5098039215686274, 1}, {0, 0.5294117647058822, 1}, {0, 0.5490196078431371, 1}, {0, 0.5686274509803919, 1}, {0, 0.5882352941176467, 1}, {0, 0.607843137254902, 1}, {0, 0.6274509803921569, 1}, {0, 0.6470588235294117, 1}, {0, 0.6666666666666665, 1}, {0, 0.6862745098039218, 1}, {0, 0.7058823529411766, 1}, {0, 0.7254901960784315, 1}, {0, 0.7450980392156863, 1}, {0, 0.7647058823529411, 1}, {0, 0.784313725490196, 1}, {0, 0.8039215686274508, 1}, {0, 0.8235294117647056, 1}, {0, 0.8431372549019609, 1}, {0, 0.8627450980392157, 1}, {0, 0.8823529411764706, 1}, {0, 0.9019607843137254, 1}, {0, 0.9215686274509807, 1}, {0, 0.9411764705882355, 1}, {0, 0.9607843137254903, 1}, {0, 0.9803921568627452, 1}, {0, 1, 1.0}, {0, 1, 0.9803921568627452}, {0, 1, 0.9607843137254903}, {0, 1, 0.9411764705882355}, {0, 1, 0.9215686274509802}, {0, 1, 0.9019607843137254}, {0, 1, 0.8823529411764706}, {0, 1, 0.8627450980392157}, {0, 1, 0.8431372549019605}, {0, 1, 0.8235294117647056}, {0, 1, 0.8039215686274508}, {0, 1, 0.784313725490196}, {0, 1, 0.7647058823529411}, {0, 1, 0.7450980392156863}, {0, 1, 0.7254901960784315}, {0, 1, 0.7058823529411766}, {0, 1, 0.6862745098039214}, {0, 1, 0.6666666666666665}, {0, 1, 0.6470588235294117}, {0, 1, 0.6274509803921569}, {0, 1, 0.607843137254902}, {0, 1, 0.5882352941176472}, {0, 1, 0.5686274509803924}, {0, 1, 0.5490196078431375}, {0, 1, 0.5294117647058822}, {0, 1, 0.5098039215686274}, {0, 1, 0.4901960784313726}, {0, 1, 0.47058823529411775}, {0, 1, 0.4509803921568629}, {0, 1, 0.4313725490196081}, {0, 1, 0.4117647058823528}, {0, 1, 0.392156862745098}, {0, 1, 0.37254901960784315}, {0, 1, 0.3529411764705883}, {0, 1, 0.3333333333333335}, {0, 1, 0.31372549019607865}, {0, 1, 0.2941176470588238}, {0, 1, 0.274509803921569}, {0, 1, 0.2549019607843137}, {0, 1, 0.23529411764705888}, {0, 1, 0.21568627450980404}, {0, 1, 0.1960784313725492}, {0, 1, 0.17647058823529438}, {0, 1, 0.15686274509803955}, {0, 1, 0.13725490196078471}, {0, 1, 0.11764705882352988}, {0, 1, 0.09803921568627416}, {0, 1, 0.07843137254901933}, {0, 1, 0.0588235294117645}, {0, 1, 0.039215686274509665}, {0, 1, 0.019607843137254832}, {0.0, 1, 0}, {0.019607843137254832, 1, 0}, {0.039215686274509665, 1, 0}, {0.0588235294117645, 1, 0}, {0.07843137254901933, 1, 0}, {0.09803921568627416, 1, 0}, {0.117647058823529, 1, 0}, {0.13725490196078383, 1, 0}, {0.15686274509803866, 1, 0}, {0.1764705882352935, 1, 0}, {0.19607843137254832, 1, 0}, {0.21568627450980404, 1, 0}, {0.23529411764705888, 1, 0}, {0.2549019607843137, 1, 0}, {0.27450980392156854, 1, 0}, {0.2941176470588234, 1, 0}, {0.3137254901960782, 1, 0}, {0.33333333333333304, 1, 0}, {0.35294117647058787, 1, 0}, {0.3725490196078436, 1, 0}, {0.3921568627450984, 1, 0}, {0.41176470588235325, 1, 0}, {0.4313725490196081, 1, 0}, {0.4509803921568629, 1, 0}, {0.47058823529411775, 1, 0}, {0.4901960784313726, 1, 0}, {0.5098039215686274, 1, 0}, {0.5294117647058822, 1, 0}, {0.5490196078431371, 1, 0}, {0.5686274509803919, 1, 0}, {0.5882352941176467, 1, 0}, {0.6078431372549016, 1, 0}, {0.6274509803921564, 1, 0}, {0.6470588235294112, 1, 0}, {0.6666666666666661, 1, 0}, {0.6862745098039218, 1, 0}, {0.7058823529411766, 1, 0}, {0.7254901960784315, 1, 0}, {0.7450980392156863, 1, 0}, {0.7647058823529411, 1, 0}, {0.784313725490196, 1, 0}, {0.8039215686274508, 1, 0}, {0.8235294117647056, 1, 0}, {0.8431372549019613, 1, 0}, {0.8627450980392162, 1, 0}, {0.882352941176471, 1, 0}, {0.9019607843137258, 1, 0}, {0.9215686274509807, 1, 0}, {0.9411764705882355, 1, 0}, {0.9607843137254903, 1, 0}, {0.9803921568627452, 1, 0}, {1, 1.0, 0}, {1, 0.9803921568627452, 0}, {1, 0.9607843137254903, 0}, {1, 0.9411764705882355, 0}, {1, 0.9215686274509807, 0}, {1, 0.9019607843137258, 0}, {1, 0.882352941176471, 0}, {1, 0.8627450980392162, 0}, {1, 0.8431372549019605, 0}, {1, 0.8235294117647056, 0}, {1, 0.8039215686274508, 0}, {1, 0.784313725490196, 0}, {1, 0.7647058823529411, 0}, {1, 0.7450980392156863, 0}, {1, 0.7254901960784315, 0}, {1, 0.7058823529411766, 0}, {1, 0.6862745098039209, 0}, {1, 0.6666666666666661, 0}, {1, 0.6470588235294112, 0}, {1, 0.6274509803921564, 0}, {1, 0.6078431372549016, 0}, {1, 0.5882352941176467, 0}, {1, 0.5686274509803919, 0}, {1, 0.5490196078431371, 0}, {1, 0.5294117647058822, 0}, {1, 0.5098039215686274, 0}, {1, 0.4901960784313726, 0}, {1, 0.47058823529411775, 0}, {1, 0.4509803921568629, 0}, {1, 0.4313725490196081, 0}, {1, 0.41176470588235325, 0}, {1, 0.3921568627450984, 0}, {1, 0.3725490196078427, 0}, {1, 0.35294117647058787, 0}, {1, 0.33333333333333304, 0}, {1, 0.3137254901960782, 0}, {1, 0.2941176470588234, 0}, {1, 0.27450980392156854, 0}, {1, 0.2549019607843137, 0}, {1, 0.23529411764705888, 0}, {1, 0.21568627450980404, 0}, {1, 0.1960784313725492, 0}, {1, 0.17647058823529438, 0}, {1, 0.15686274509803955, 0}, {1, 0.13725490196078471, 0}, {1, 0.11764705882352988, 0}, {1, 0.09803921568627505, 0}, {1, 0.07843137254902022, 0}, {1, 0.0588235294117645, 0}, {1, 0.039215686274509665, 0}, {1, 0.019607843137254832, 0}, {1, 0.0, 0}}} + {"default", {{1.0, 0, 1}, {0.9803921568627452, 0, 1}, {0.9607843137254901, 0, 1}, {0.9411764705882353, 0, 1}, {0.9215686274509804, 0, 1}, {0.9019607843137254, 0, 1}, {0.8823529411764706, 0, 1}, {0.8627450980392157, 0, 1}, {0.8431372549019609, 0, 1}, {0.8235294117647058, 0, 1}, {0.803921568627451, 0, 1}, {0.784313725490196, 0, 1}, {0.7647058823529411, 0, 1}, {0.7450980392156863, 0, 1}, {0.7254901960784315, 0, 1}, {0.7058823529411764, 0, 1}, {0.6862745098039216, 0, 1}, {0.6666666666666667, 0, 1}, {0.6470588235294117, 0, 1}, {0.6274509803921569, 0, 1}, {0.607843137254902, 0, 1}, {0.5882352941176472, 0, 1}, {0.5686274509803921, 0, 1}, {0.5490196078431373, 0, 1}, {0.5294117647058822, 0, 1}, {0.5098039215686274, 0, 1}, {0.4901960784313726, 0, 1}, {0.47058823529411775, 0, 1}, {0.4509803921568627, 0, 1}, {0.43137254901960786, 0, 1}, {0.4117647058823528, 0, 1}, {0.392156862745098, 0, 1}, {0.37254901960784315, 0, 1}, {0.3529411764705883, 0, 1}, {0.3333333333333335, 0, 1}, {0.3137254901960784, 0, 1}, {0.2941176470588236, 0, 1}, {0.27450980392156854, 0, 1}, {0.2549019607843137, 0, 1}, {0.23529411764705888, 0, 1}, {0.21568627450980404, 0, 1}, {0.196078431372549, 0, 1}, {0.17647058823529416, 0, 1}, {0.1568627450980391, 0, 1}, {0.13725490196078427, 0, 1}, {0.11764705882352944, 0, 1}, {0.0980392156862746, 0, 1}, {0.07843137254901955, 0, 1}, {0.05882352941176472, 0, 1}, {0.039215686274509665, 0, 1}, {0.019607843137254832, 0, 1}, {0, 0.0, 1}, {0, 0.019607843137254832, 1}, {0, 0.039215686274509665, 1}, {0, 0.0588235294117645, 1}, {0, 0.07843137254901977, 1}, {0, 0.0980392156862746, 1}, {0, 0.11764705882352944, 1}, {0, 0.13725490196078427, 1}, {0, 0.15686274509803955, 1}, {0, 0.17647058823529438, 1}, {0, 0.1960784313725492, 1}, {0, 0.21568627450980404, 1}, {0, 0.23529411764705888, 1}, {0, 0.2549019607843137, 1}, {0, 0.27450980392156854, 1}, {0, 0.2941176470588234, 1}, {0, 0.3137254901960782, 1}, {0, 0.33333333333333304, 1}, {0, 0.35294117647058787, 1}, {0, 0.37254901960784315, 1}, {0, 0.392156862745098, 1}, {0, 0.4117647058823528, 1}, {0, 0.43137254901960764, 1}, {0, 0.4509803921568629, 1}, {0, 0.47058823529411775, 1}, {0, 0.4901960784313726, 1}, {0, 0.5098039215686274, 1}, {0, 0.5294117647058822, 1}, {0, 0.5490196078431371, 1}, {0, 0.5686274509803919, 1}, {0, 0.5882352941176467, 1}, {0, 0.607843137254902, 1}, {0, 0.6274509803921569, 1}, {0, 0.6470588235294117, 1}, {0, 0.6666666666666665, 1}, {0, 0.6862745098039218, 1}, {0, 0.7058823529411766, 1}, {0, 0.7254901960784315, 1}, {0, 0.7450980392156863, 1}, {0, 0.7647058823529411, 1}, {0, 0.784313725490196, 1}, {0, 0.8039215686274508, 1}, {0, 0.8235294117647056, 1}, {0, 0.8431372549019609, 1}, {0, 0.8627450980392157, 1}, {0, 0.8823529411764706, 1}, {0, 0.9019607843137254, 1}, {0, 0.9215686274509807, 1}, {0, 0.9411764705882355, 1}, {0, 0.9607843137254903, 1}, {0, 0.9803921568627452, 1}, {0, 1, 1.0}, {0, 1, 0.9803921568627452}, {0, 1, 0.9607843137254903}, {0, 1, 0.9411764705882355}, {0, 1, 0.9215686274509802}, {0, 1, 0.9019607843137254}, {0, 1, 0.8823529411764706}, {0, 1, 0.8627450980392157}, {0, 1, 0.8431372549019605}, {0, 1, 0.8235294117647056}, {0, 1, 0.8039215686274508}, {0, 1, 0.784313725490196}, {0, 1, 0.7647058823529411}, {0, 1, 0.7450980392156863}, {0, 1, 0.7254901960784315}, {0, 1, 0.7058823529411766}, {0, 1, 0.6862745098039214}, {0, 1, 0.6666666666666665}, {0, 1, 0.6470588235294117}, {0, 1, 0.6274509803921569}, {0, 1, 0.607843137254902}, {0, 1, 0.5882352941176472}, {0, 1, 0.5686274509803924}, {0, 1, 0.5490196078431375}, {0, 1, 0.5294117647058822}, {0, 1, 0.5098039215686274}, {0, 1, 0.4901960784313726}, {0, 1, 0.47058823529411775}, {0, 1, 0.4509803921568629}, {0, 1, 0.4313725490196081}, {0, 1, 0.4117647058823528}, {0, 1, 0.392156862745098}, {0, 1, 0.37254901960784315}, {0, 1, 0.3529411764705883}, {0, 1, 0.3333333333333335}, {0, 1, 0.31372549019607865}, {0, 1, 0.2941176470588238}, {0, 1, 0.274509803921569}, {0, 1, 0.2549019607843137}, {0, 1, 0.23529411764705888}, {0, 1, 0.21568627450980404}, {0, 1, 0.1960784313725492}, {0, 1, 0.17647058823529438}, {0, 1, 0.15686274509803955}, {0, 1, 0.13725490196078471}, {0, 1, 0.11764705882352988}, {0, 1, 0.09803921568627416}, {0, 1, 0.07843137254901933}, {0, 1, 0.0588235294117645}, {0, 1, 0.039215686274509665}, {0, 1, 0.019607843137254832}, {0.0, 1, 0}, {0.019607843137254832, 1, 0}, {0.039215686274509665, 1, 0}, {0.0588235294117645, 1, 0}, {0.07843137254901933, 1, 0}, {0.09803921568627416, 1, 0}, {0.117647058823529, 1, 0}, {0.13725490196078383, 1, 0}, {0.15686274509803866, 1, 0}, {0.1764705882352935, 1, 0}, {0.19607843137254832, 1, 0}, {0.21568627450980404, 1, 0}, {0.23529411764705888, 1, 0}, {0.2549019607843137, 1, 0}, {0.27450980392156854, 1, 0}, {0.2941176470588234, 1, 0}, {0.3137254901960782, 1, 0}, {0.33333333333333304, 1, 0}, {0.35294117647058787, 1, 0}, {0.3725490196078436, 1, 0}, {0.3921568627450984, 1, 0}, {0.41176470588235325, 1, 0}, {0.4313725490196081, 1, 0}, {0.4509803921568629, 1, 0}, {0.47058823529411775, 1, 0}, {0.4901960784313726, 1, 0}, {0.5098039215686274, 1, 0}, {0.5294117647058822, 1, 0}, {0.5490196078431371, 1, 0}, {0.5686274509803919, 1, 0}, {0.5882352941176467, 1, 0}, {0.6078431372549016, 1, 0}, {0.6274509803921564, 1, 0}, {0.6470588235294112, 1, 0}, {0.6666666666666661, 1, 0}, {0.6862745098039218, 1, 0}, {0.7058823529411766, 1, 0}, {0.7254901960784315, 1, 0}, {0.7450980392156863, 1, 0}, {0.7647058823529411, 1, 0}, {0.784313725490196, 1, 0}, {0.8039215686274508, 1, 0}, {0.8235294117647056, 1, 0}, {0.8431372549019613, 1, 0}, {0.8627450980392162, 1, 0}, {0.882352941176471, 1, 0}, {0.9019607843137258, 1, 0}, {0.9215686274509807, 1, 0}, {0.9411764705882355, 1, 0}, {0.9607843137254903, 1, 0}, {0.9803921568627452, 1, 0}, {1, 1.0, 0}, {1, 0.9803921568627452, 0}, {1, 0.9607843137254903, 0}, {1, 0.9411764705882355, 0}, {1, 0.9215686274509807, 0}, {1, 0.9019607843137258, 0}, {1, 0.882352941176471, 0}, {1, 0.8627450980392162, 0}, {1, 0.8431372549019605, 0}, {1, 0.8235294117647056, 0}, {1, 0.8039215686274508, 0}, {1, 0.784313725490196, 0}, {1, 0.7647058823529411, 0}, {1, 0.7450980392156863, 0}, {1, 0.7254901960784315, 0}, {1, 0.7058823529411766, 0}, {1, 0.6862745098039209, 0}, {1, 0.6666666666666661, 0}, {1, 0.6470588235294112, 0}, {1, 0.6274509803921564, 0}, {1, 0.6078431372549016, 0}, {1, 0.5882352941176467, 0}, {1, 0.5686274509803919, 0}, {1, 0.5490196078431371, 0}, {1, 0.5294117647058822, 0}, {1, 0.5098039215686274, 0}, {1, 0.4901960784313726, 0}, {1, 0.47058823529411775, 0}, {1, 0.4509803921568629, 0}, {1, 0.4313725490196081, 0}, {1, 0.41176470588235325, 0}, {1, 0.3921568627450984, 0}, {1, 0.3725490196078427, 0}, {1, 0.35294117647058787, 0}, {1, 0.33333333333333304, 0}, {1, 0.3137254901960782, 0}, {1, 0.2941176470588234, 0}, {1, 0.27450980392156854, 0}, {1, 0.2549019607843137, 0}, {1, 0.23529411764705888, 0}, {1, 0.21568627450980404, 0}, {1, 0.1960784313725492, 0}, {1, 0.17647058823529438, 0}, {1, 0.15686274509803955, 0}, {1, 0.13725490196078471, 0}, {1, 0.11764705882352988, 0}, {1, 0.09803921568627505, 0}, {1, 0.07843137254902022, 0}, {1, 0.0588235294117645, 0}, {1, 0.039215686274509665, 0}, {1, 0.019607843137254832, 0}, {1, 0.0, 0}}}, + {"anybotics", {{1.00000, 0.32549, 0.29020},{1.00000, 0.33333, 0.29412},{1.00000, 0.33725, 0.29804},{0.99608, 0.34510, 0.29804},{0.99608, 0.35294, 0.30196},{0.99608, 0.36078, 0.30588},{0.99216, 0.36863, 0.30980},{0.99216, 0.37647, 0.31373},{0.98824, 0.38431, 0.31373},{0.98824, 0.38824, 0.31765},{0.98431, 0.39608, 0.32157},{0.98431, 0.40392, 0.32549},{0.98431, 0.41176, 0.32549},{0.98039, 0.41961, 0.32941},{0.98039, 0.42745, 0.33333},{0.97647, 0.43529, 0.33725},{0.97647, 0.44314, 0.33725},{0.97255, 0.44706, 0.34118},{0.97255, 0.45490, 0.34510},{0.96863, 0.46275, 0.34902},{0.96863, 0.47059, 0.34902},{0.96863, 0.47843, 0.35294},{0.96471, 0.48627, 0.35686},{0.96471, 0.49412, 0.36078},{0.96078, 0.49804, 0.36471},{0.96078, 0.50588, 0.36471},{0.95686, 0.51373, 0.36863},{0.95686, 0.52157, 0.37255},{0.95686, 0.52941, 0.37647},{0.95294, 0.53725, 0.37647},{0.95294, 0.54510, 0.38039},{0.94902, 0.55294, 0.38431},{0.94902, 0.55686, 0.38824},{0.94510, 0.56471, 0.38824},{0.94510, 0.57255, 0.39216},{0.94510, 0.58039, 0.39608},{0.94118, 0.58824, 0.40000},{0.94118, 0.59608, 0.40000},{0.93725, 0.60392, 0.40392},{0.93725, 0.60784, 0.40784},{0.93333, 0.61569, 0.41176},{0.93333, 0.62353, 0.41176},{0.92941, 0.63137, 0.41569},{0.92941, 0.63922, 0.41961},{0.92941, 0.64706, 0.42353},{0.92549, 0.65490, 0.42745},{0.92549, 0.66275, 0.42745},{0.92157, 0.66667, 0.43137},{0.92157, 0.67451, 0.43529},{0.91765, 0.68235, 0.43922},{0.91765, 0.69020, 0.43922},{0.91765, 0.69804, 0.44314},{0.91373, 0.70588, 0.44706},{0.91373, 0.71373, 0.45098},{0.90980, 0.71765, 0.45098},{0.90980, 0.72549, 0.45490},{0.90588, 0.73333, 0.45882},{0.90588, 0.74118, 0.46275},{0.90196, 0.74902, 0.46275},{0.90196, 0.75686, 0.46667},{0.90196, 0.76471, 0.47059},{0.89804, 0.77255, 0.47451},{0.89804, 0.77647, 0.47843},{0.89412, 0.78431, 0.47843},{0.89412, 0.79216, 0.48235},{0.89412, 0.79216, 0.48235},{0.89412, 0.79216, 0.48627},{0.89412, 0.79216, 0.48627},{0.89804, 0.79608, 0.49020},{0.89804, 0.79608, 0.49020},{0.89804, 0.79608, 0.49412},{0.89804, 0.79608, 0.49412},{0.89804, 0.79608, 0.49804},{0.89804, 0.79608, 0.49804},{0.89804, 0.80000, 0.50196},{0.89804, 0.80000, 0.50196},{0.90196, 0.80000, 0.50588},{0.90196, 0.80000, 0.50588},{0.90196, 0.80000, 0.50588},{0.90196, 0.80392, 0.50980},{0.90196, 0.80392, 0.50980},{0.90196, 0.80392, 0.51373},{0.90196, 0.80392, 0.51373},{0.90588, 0.80392, 0.51765},{0.90588, 0.80784, 0.51765},{0.90588, 0.80784, 0.52157},{0.90588, 0.80784, 0.52157},{0.90588, 0.80784, 0.52549},{0.90588, 0.80784, 0.52549},{0.90588, 0.81176, 0.52549},{0.90588, 0.81176, 0.52941},{0.90980, 0.81176, 0.52941},{0.90980, 0.81176, 0.53333},{0.90980, 0.81176, 0.53333},{0.90980, 0.81569, 0.53725},{0.90980, 0.81569, 0.53725},{0.90980, 0.81569, 0.54118},{0.90980, 0.81569, 0.54118},{0.91373, 0.81569, 0.54510},{0.91373, 0.81961, 0.54510},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.55294},{0.91373, 0.81961, 0.55294},{0.91373, 0.82353, 0.55686},{0.91765, 0.82353, 0.55686},{0.91765, 0.82353, 0.56078},{0.91765, 0.82353, 0.56078},{0.91765, 0.82353, 0.56471},{0.91765, 0.82745, 0.56471},{0.91765, 0.82745, 0.56863},{0.91765, 0.82745, 0.56863},{0.92157, 0.82745, 0.57255},{0.92157, 0.82745, 0.57255},{0.92157, 0.83137, 0.57255},{0.92157, 0.83137, 0.57647},{0.92157, 0.83137, 0.57647},{0.92157, 0.83137, 0.58039},{0.92157, 0.83137, 0.58039},{0.92157, 0.83529, 0.58431},{0.92549, 0.83529, 0.58431},{0.92549, 0.83529, 0.58824},{0.92549, 0.83529, 0.58824},{0.92549, 0.83529, 0.59216},{0.92549, 0.83922, 0.59216},{0.92549, 0.83922, 0.59608},{0.92549, 0.83922, 0.59608},{0.92549, 0.83529, 0.59608},{0.91765, 0.83137, 0.59608},{0.90980, 0.82745, 0.59608},{0.90196, 0.81961, 0.59216},{0.89412, 0.81569, 0.59216},{0.88627, 0.81176, 0.59216},{0.87843, 0.80392, 0.58824},{0.87059, 0.80000, 0.58824},{0.86275, 0.79608, 0.58824},{0.85882, 0.78824, 0.58431},{0.85098, 0.78431, 0.58431},{0.84314, 0.78039, 0.58431},{0.83529, 0.77255, 0.58431},{0.82745, 0.76863, 0.58039},{0.81961, 0.76471, 0.58039},{0.81176, 0.75686, 0.58039},{0.80392, 0.75294, 0.57647},{0.80000, 0.74902, 0.57647},{0.79216, 0.74118, 0.57647},{0.78431, 0.73725, 0.57647},{0.77647, 0.72941, 0.57255},{0.76863, 0.72549, 0.57255},{0.76078, 0.72157, 0.57255},{0.75294, 0.71373, 0.56863},{0.74510, 0.70980, 0.56863},{0.74118, 0.70588, 0.56863},{0.73333, 0.69804, 0.56863},{0.72549, 0.69412, 0.56471},{0.71765, 0.69020, 0.56471},{0.70980, 0.68235, 0.56471},{0.70196, 0.67843, 0.56078},{0.69412, 0.67451, 0.56078},{0.68627, 0.66667, 0.56078},{0.68235, 0.66275, 0.55686},{0.67451, 0.65882, 0.55686},{0.66667, 0.65098, 0.55686},{0.65882, 0.64706, 0.55686},{0.65098, 0.64314, 0.55294},{0.64314, 0.63529, 0.55294},{0.63529, 0.63137, 0.55294},{0.62745, 0.62745, 0.54902},{0.61961, 0.61961, 0.54902},{0.61569, 0.61569, 0.54902},{0.60784, 0.61176, 0.54902},{0.60000, 0.60392, 0.54510},{0.59216, 0.60000, 0.54510},{0.58431, 0.59216, 0.54510},{0.57647, 0.58824, 0.54118},{0.56863, 0.58431, 0.54118},{0.56078, 0.57647, 0.54118},{0.55686, 0.57255, 0.54118},{0.54902, 0.56863, 0.53725},{0.54118, 0.56078, 0.53725},{0.53333, 0.55686, 0.53725},{0.52549, 0.55294, 0.53333},{0.51765, 0.54510, 0.53333},{0.50980, 0.54118, 0.53333},{0.50196, 0.53725, 0.53333},{0.49804, 0.52941, 0.52941},{0.49020, 0.52549, 0.52941},{0.48235, 0.52157, 0.52941},{0.47451, 0.51373, 0.52549},{0.46667, 0.50980, 0.52549},{0.45882, 0.50588, 0.52549},{0.45098, 0.49804, 0.51765},{0.44706, 0.49020, 0.51373},{0.43922, 0.48627, 0.50588},{0.43529, 0.47843, 0.50196},{0.42745, 0.47451, 0.49412},{0.42353, 0.46667, 0.49020},{0.41569, 0.45882, 0.48235},{0.40784, 0.45490, 0.47451},{0.40392, 0.44706, 0.47059},{0.39608, 0.43922, 0.46275},{0.39216, 0.43529, 0.45882},{0.38431, 0.42745, 0.45098},{0.38039, 0.41961, 0.44314},{0.37255, 0.41569, 0.43922},{0.36471, 0.40784, 0.43137},{0.36078, 0.40000, 0.42745},{0.35294, 0.39608, 0.41961},{0.34902, 0.38824, 0.41176},{0.34118, 0.38431, 0.40784},{0.33725, 0.37647, 0.40000},{0.32941, 0.36863, 0.39608},{0.32157, 0.36471, 0.38824},{0.31765, 0.35686, 0.38431},{0.30980, 0.34902, 0.37647},{0.30588, 0.34510, 0.36863},{0.29804, 0.33725, 0.36471},{0.29412, 0.33333, 0.35686},{0.28627, 0.32549, 0.35294},{0.27843, 0.31765, 0.34510},{0.27451, 0.31373, 0.33725},{0.26667, 0.30588, 0.33333},{0.26275, 0.29804, 0.32549},{0.25490, 0.29412, 0.32157},{0.24706, 0.28627, 0.31373},{0.24314, 0.27843, 0.30980},{0.23529, 0.27451, 0.30196},{0.23137, 0.26667, 0.29412},{0.22353, 0.25882, 0.29020},{0.21961, 0.25490, 0.28235},{0.21176, 0.24706, 0.27843},{0.20392, 0.24314, 0.27059},{0.20000, 0.23529, 0.26275},{0.19216, 0.22745, 0.25882},{0.18824, 0.22353, 0.25098},{0.18039, 0.21569, 0.24706},{0.17647, 0.20784, 0.23922},{0.16863, 0.20392, 0.23137},{0.16078, 0.19608, 0.22745},{0.15686, 0.19216, 0.21961},{0.14902, 0.18431, 0.21569},{0.14510, 0.17647, 0.20784},{0.13725, 0.17255, 0.20392},{0.13333, 0.16471, 0.19608},{0.12549, 0.15686, 0.18824},{0.11765, 0.15294, 0.18431},{0.11373, 0.14510, 0.17647},{0.10588, 0.13725, 0.17255},{0.10196, 0.13333, 0.16471},{0.09412, 0.12549, 0.15686},{0.09020, 0.12157, 0.15294},{0.08235, 0.11373, 0.14510},{0.07451, 0.10588, 0.14118},{0.07059, 0.10196, 0.13333},{0.06275, 0.09412, 0.12549}}}, }; static Ogre::ColourValue getColorMap(float intensity, const std::vector>& ctable) { From 9d0de96dd71bea22b12633725222c2ebb7e8f7b9 Mon Sep 17 00:00:00 2001 From: Aravind Vijayan Date: Fri, 24 Mar 2023 17:31:51 +0100 Subject: [PATCH 58/83] Merge remote-tracking branch 'origin/release-23.04' GitOrigin-RevId: 1a750421867c10911bf73afafcac2afd49135607 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 911716563..c5ca13440 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.5 + 1.7.6 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 4c67df214..71fc39962 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.5 + 1.7.6 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 3b4cc9e1a..9bc8b9857 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.5 + 1.7.6 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index f2a348fe4..5a1677ab1 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.5 + 1.7.6 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 6c18a6aa3..ecaf7b5cc 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.5 + 1.7.6 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index d7d08ed52..39c2e6904 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.5 + 1.7.6 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index d7bbe3b2f..a50b069b9 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.5 + 1.7.6 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 7aaf0cdad..15a1b08bf 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.5 + 1.7.6 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 8eca41cc3..0ceddece8 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.5 + 1.7.6 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index e8e5b43aa..c628cd095 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.5 + 1.7.6 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 5179f9ec7..25b036117 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.5 + 1.7.6 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 1bec8b046..fc25503f8 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.5 + 1.7.6 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 16be082ba..6e24ad728 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.5 + 1.7.6 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 0533d7103..31b754a98 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.5 + 1.7.6 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 7406b98a62e00c296a8e43a2367817c18ace7e65 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francisco=20Eli=20Vi=C3=B1a=20Barrientos?= Date: Wed, 19 Apr 2023 10:07:43 +0000 Subject: [PATCH 59/83] Merge branch 'fix/grid_map_rviz_plugin_crash' into 'master' Fix grid map rviz plugin crash due to non-existing layer GitOrigin-RevId: 84ad91c8816c0b69fdd4b1501f91864bcf1a376d --- .../grid_map_rviz_plugin/GridMapVisual.hpp | 11 ++++++++ grid_map_rviz_plugin/src/GridMapVisual.cpp | 25 +++++++++++++++++-- 2 files changed, 34 insertions(+), 2 deletions(-) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp index 2921671b2..650535766 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapVisual.hpp @@ -72,6 +72,10 @@ class GridMapVisual { // Helper methods. bool haveMap_; + + // Warning logs + static constexpr double warningMessageThrottlePeriod_{10.0}; + /** * Initialized the manualObject if not already initialized and clears all previously added data. * @param nVertices An estimate on the number of vertices to be added. @@ -115,6 +119,13 @@ class GridMapVisual { */ MaskArray computeIsValidMask(std::vector basicLayers); + /** + * @brief Logs a warning message which lists the basic layers that are missing from the grid map. + * + * @param basicLayers Basic layers. + */ + void printMissingBasicLayers(const std::vector& basicLayers) const; + /** * Transforms the intensity into [0,1] range where 0 corresponds to the minIntensity and 1 to maxIntensity. The given value is clipped to * that range. diff --git a/grid_map_rviz_plugin/src/GridMapVisual.cpp b/grid_map_rviz_plugin/src/GridMapVisual.cpp index 7f917c6fb..5dc88857e 100644 --- a/grid_map_rviz_plugin/src/GridMapVisual.cpp +++ b/grid_map_rviz_plugin/src/GridMapVisual.cpp @@ -8,6 +8,9 @@ #include "grid_map_rviz_plugin/GridMapVisual.hpp" +#include +#include + #include #include #include @@ -108,6 +111,9 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f } const MaskArray isValid = computeIsValidMask(basicLayers); + // Check and warn the user if any basic layers are not present in the grid map. + printMissingBasicLayers(basicLayers); + // Compute the display heights for each cell. Eigen::ArrayXXf heightOrFlatData; if (flatTerrain) { @@ -351,11 +357,26 @@ void GridMapVisual::initializeMeshLines(size_t cols, size_t rows, double resolut GridMapVisual::MaskArray GridMapVisual::computeIsValidMask(std::vector basicLayers) { MaskArray isValid = MaskArray::Ones(map_.getSize()(0), map_.getSize()(1)); for (const std::string& layer : basicLayers) { - isValid = isValid && map_.get(layer).array().unaryExpr([](float v) { return std::isfinite(v); }); + if (map_.exists(layer)) { + isValid = isValid && map_.get(layer).array().unaryExpr([](float v) { return std::isfinite(v); }); + } } return isValid; } +void GridMapVisual::printMissingBasicLayers(const std::vector& basicLayers) const { + std::stringstream missingBasicLayers{}; + std::copy_if(basicLayers.cbegin(), basicLayers.cend(), std::ostream_iterator(missingBasicLayers, "\n"), + [&](const std::string& basicLayer) { return !map_.exists(basicLayer); }); + + if (missingBasicLayers.str().empty()) { + return; + } + + ROS_WARN_STREAM_THROTTLE(warningMessageThrottlePeriod_, "The following basic layers are missing from the grid map:\n" + << missingBasicLayers.str()); +} + void GridMapVisual::setFramePosition(const Ogre::Vector3& position) { frameNode_->setPosition(position); } @@ -412,4 +433,4 @@ Ogre::ColourValue GridMapVisual::getInterpolatedColor(float intensity, Ogre::Col return color; } -} // namespace grid_map_rviz_plugin \ No newline at end of file +} // namespace grid_map_rviz_plugin From 678f6919f3aa7776f77d00a720df83430ac75ac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Wed, 19 Apr 2023 19:58:46 +0000 Subject: [PATCH 60/83] Merge branch 'fix/grid_map_rviz_plugin/reset_behavior' into 'master' remove isReset_ in favour of isEnabled, add a check on reset to re-enable the... Closes #UNKNOWN GitOrigin-RevId: 573e10ee99627bd6dfc3bd960912cd596d86da85 --- .../include/grid_map_rviz_plugin/GridMapDisplay.hpp | 4 +++- grid_map_rviz_plugin/src/GridMapDisplay.cpp | 13 ++++++++++--- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp index 0706d315e..a2e0de9a1 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapDisplay.hpp @@ -44,6 +44,8 @@ Q_OBJECT virtual void onEnable(); + virtual void onDisable(); + virtual void reset(); Q_SIGNALS: @@ -67,7 +69,7 @@ Q_OBJECT void processMessage(const grid_map_msgs::GridMap::ConstPtr& msg); // Flag to ensure that after the reset the scene is not updated again. - std::atomic isReset_{false}; + std::atomic isEnabled_{true}; // Circular buffer for visuals boost::circular_buffer > visuals_; diff --git a/grid_map_rviz_plugin/src/GridMapDisplay.cpp b/grid_map_rviz_plugin/src/GridMapDisplay.cpp index 50bba9716..872b28e1a 100644 --- a/grid_map_rviz_plugin/src/GridMapDisplay.cpp +++ b/grid_map_rviz_plugin/src/GridMapDisplay.cpp @@ -135,17 +135,24 @@ void GridMapDisplay::onInitialize() void GridMapDisplay::onEnable() { - isReset_ = false; + isEnabled_ = true; connect(this, &GridMapDisplay::process, this, &GridMapDisplay::onProcessMessage); MessageFilterDisplay::onEnable(); } +void GridMapDisplay::onDisable(){ + MFDClass::onDisable(); + isEnabled_ = false; +} + void GridMapDisplay::reset() { - isReset_ = true; disconnect(this, &GridMapDisplay::process, this, &GridMapDisplay::onProcessMessage); MFDClass::reset(); visuals_.clear(); + if(isEnabled_){ + onEnable(); + } } void GridMapDisplay::updateHistoryLength() @@ -240,7 +247,7 @@ void GridMapDisplay::processMessage(const grid_map_msgs::GridMap::ConstPtr& msg) void GridMapDisplay::onProcessMessage(const grid_map_msgs::GridMap::ConstPtr& msg) { // Check if the display was already reset. - if (isReset_) { + if (!isEnabled_) { return; } From 80863e909f150685cf4bd744030e2fe27595736d Mon Sep 17 00:00:00 2001 From: Francisco Giraldez Gamez Date: Fri, 12 May 2023 12:02:36 +0200 Subject: [PATCH 61/83] Merge branch 'release-23.05' of git.anybotics.com:anybotics/anybotics GitOrigin-RevId: cbd1bb5a9a24e1be6ef8df9255212d6c7297e75c --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index c5ca13440..f250d4f54 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.6 + 1.7.7 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 71fc39962..eae75e00a 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.6 + 1.7.7 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 9bc8b9857..56643907c 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.6 + 1.7.7 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 5a1677ab1..9d1f2327a 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.6 + 1.7.7 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index ecaf7b5cc..9fc937ae5 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.6 + 1.7.7 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 39c2e6904..241e8c9c5 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.6 + 1.7.7 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index a50b069b9..cd832a3d8 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.6 + 1.7.7 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 15a1b08bf..099c6c70a 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.6 + 1.7.7 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 0ceddece8..4c4d5b274 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.6 + 1.7.7 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index c628cd095..69c1c27fa 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.6 + 1.7.7 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 25b036117..11158e905 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.6 + 1.7.7 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index fc25503f8..1552ee245 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.6 + 1.7.7 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 6e24ad728..2f3eb82a3 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.6 + 1.7.7 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 31b754a98..d78372fe0 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.6 + 1.7.7 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 38bc721b1e9aa69c446b68ae0e5c7f2282d720a7 Mon Sep 17 00:00:00 2001 From: Gabriel Hottiger Date: Sat, 1 Jul 2023 10:22:14 +0200 Subject: [PATCH 62/83] Merge branch 'release-23.07' of git.anybotics.com:anybotics/anybotics GitOrigin-RevId: 58e194a10f164ab8210c909c59f3afaac4fb90ff --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index f250d4f54..b11395c49 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.7 + 1.7.8 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index eae75e00a..56c8d5362 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.7 + 1.7.8 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 56643907c..2ea06d9ba 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.7 + 1.7.8 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 9d1f2327a..ace376357 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.7 + 1.7.8 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 9fc937ae5..092061167 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.7 + 1.7.8 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 241e8c9c5..9962d9d1d 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.7 + 1.7.8 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index cd832a3d8..d1cb24a39 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.7 + 1.7.8 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 099c6c70a..bf558c315 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.7 + 1.7.8 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 4c4d5b274..89373946d 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.7 + 1.7.8 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 69c1c27fa..fe421e50c 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.7 + 1.7.8 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 11158e905..b8b053a50 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.7 + 1.7.8 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 1552ee245..7b59ccb78 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.7 + 1.7.8 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 2f3eb82a3..0406cb83a 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.7 + 1.7.8 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index d78372fe0..5ea584125 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.7 + 1.7.8 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 0b889ca222a4233bb533cec51d3bca062f76aaf8 Mon Sep 17 00:00:00 2001 From: Philipp Leemann Date: Fri, 18 Aug 2023 17:21:07 +0200 Subject: [PATCH 63/83] Merge branch 'release-23.09' GitOrigin-RevId: 7a9f1f11a59c06d0a7acb100347b6696a516b92f --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index b11395c49..c5894ef57 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.8 + 1.7.9 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 56c8d5362..b8f9d68f6 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.8 + 1.7.9 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 2ea06d9ba..06845febe 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.8 + 1.7.9 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index ace376357..f0521df50 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.8 + 1.7.9 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 092061167..aed713288 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.8 + 1.7.9 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 9962d9d1d..6fada1c47 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.8 + 1.7.9 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index d1cb24a39..b9beabf5a 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.8 + 1.7.9 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index bf558c315..f82f1e9aa 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.8 + 1.7.9 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 89373946d..d795736ac 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.8 + 1.7.9 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index fe421e50c..321c8d12a 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.8 + 1.7.9 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index b8b053a50..fe9e61f17 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.8 + 1.7.9 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 7b59ccb78..e951b021a 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.8 + 1.7.9 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 0406cb83a..ae5b2a59f 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.8 + 1.7.9 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 5ea584125..1c7f9ed1f 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.8 + 1.7.9 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From da3ee2e6dc8ea4baa4ae709b0fa907d3ffd95e27 Mon Sep 17 00:00:00 2001 From: Prajish Sankar Date: Fri, 6 Oct 2023 16:07:55 +0200 Subject: [PATCH 64/83] Merge release-23.10 into master. GitOrigin-RevId: 19d842eb6c5de548cd2d1a599b11318fe3aed34f --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index c5894ef57..987ae0ee8 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.9 + 1.7.10 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index b8f9d68f6..3d33715d1 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.9 + 1.7.10 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 06845febe..d6e3ff919 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.9 + 1.7.10 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index f0521df50..55300894a 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.9 + 1.7.10 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index aed713288..a265e26d2 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.9 + 1.7.10 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 6fada1c47..6149111cb 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.9 + 1.7.10 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index b9beabf5a..726d8d902 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.9 + 1.7.10 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index f82f1e9aa..a41754bf3 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.9 + 1.7.10 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index d795736ac..5375a43ce 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.9 + 1.7.10 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 321c8d12a..43604510e 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.9 + 1.7.10 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index fe9e61f17..0f055108f 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.9 + 1.7.10 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index e951b021a..da4b419e5 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.9 + 1.7.10 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index ae5b2a59f..d8d092e27 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.9 + 1.7.10 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 1c7f9ed1f..4d70fa5e7 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.9 + 1.7.10 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 2be3747a4fa7ccae13d8d1d12442a8d668fa2484 Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Tue, 10 Oct 2023 19:07:42 +0200 Subject: [PATCH 65/83] Merge branch 'release-23.10' GitOrigin-RevId: 6f6a4025d4b39d47ad832b76eeee919a53a2d64a --- grid_map_core/include/grid_map_core/GridMap.hpp | 1 + 1 file changed, 1 insertion(+) diff --git a/grid_map_core/include/grid_map_core/GridMap.hpp b/grid_map_core/include/grid_map_core/GridMap.hpp index c7e06c325..503e1b11f 100644 --- a/grid_map_core/include/grid_map_core/GridMap.hpp +++ b/grid_map_core/include/grid_map_core/GridMap.hpp @@ -311,6 +311,7 @@ class GridMap { /*! * Apply isometric transformation (rotation + offset) to grid map and returns the transformed map. * Note: The returned map may not have the same length since it's geometric description contains + * Note: The transformation will only be applied to the height layer of the grid map, other layers will remain untouched. * the original map. * @param[in] transform the requested transformation to apply. * @param[in] heightLayerName the height layer of the map. From 53340cd2f1e9e1007893db7eb8803e55ea9df5fa Mon Sep 17 00:00:00 2001 From: Robin Verschueren Date: Wed, 15 Nov 2023 12:36:12 +0000 Subject: [PATCH 66/83] Merge branch 'fix/perception_code_cpp17' into 'master' [anymal_state_estimator_tsif, others] Move to C++17 GitOrigin-RevId: 448a39e47a525da90edcb2a8babbc449a4ab6169 --- grid_map_demos/CMakeLists.txt | 2 +- grid_map_filters/CMakeLists.txt | 2 +- grid_map_pcl/CMakeLists.txt | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/grid_map_demos/CMakeLists.txt b/grid_map_demos/CMakeLists.txt index 874f7c008..375fea9f0 100644 --- a/grid_map_demos/CMakeLists.txt +++ b/grid_map_demos/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_demos) -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/grid_map_filters/CMakeLists.txt b/grid_map_filters/CMakeLists.txt index f7b606a7d..37194096b 100644 --- a/grid_map_filters/CMakeLists.txt +++ b/grid_map_filters/CMakeLists.txt @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_filters) # Better with serial algorithms. -set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD 17) # We want performance (fast-math) but also need a representation for NaN values to represent missing values. # Therefore, we disable the finite-math-only flag that was set by fast-math. set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffast-math -fno-finite-math-only") diff --git a/grid_map_pcl/CMakeLists.txt b/grid_map_pcl/CMakeLists.txt index d82b918e7..91ddea729 100644 --- a/grid_map_pcl/CMakeLists.txt +++ b/grid_map_pcl/CMakeLists.txt @@ -1,7 +1,7 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_pcl) -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 17) add_compile_options(-Wall -Wextra -Wpedantic) set(CMAKE_EXPORT_COMPILE_COMMANDS ON) From 8be23b79bf79b178f9e8b9564996817c8cdf4fb9 Mon Sep 17 00:00:00 2001 From: Prajish Sankar Date: Fri, 24 Nov 2023 11:28:07 +0100 Subject: [PATCH 67/83] Merge branch 'release-23.12' GitOrigin-RevId: 3cd6089814912a039f1612cf4ed02c914cbf2db8 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 987ae0ee8..6991790e6 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.10 + 1.7.11 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 3d33715d1..8fa33453f 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.10 + 1.7.11 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index d6e3ff919..bf3ea5748 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.10 + 1.7.11 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 55300894a..80407f2ba 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.10 + 1.7.11 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index a265e26d2..4a022acc5 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.10 + 1.7.11 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 6149111cb..7e6fadecc 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.10 + 1.7.11 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 726d8d902..29c3409cc 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.10 + 1.7.11 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index a41754bf3..5b7d9d883 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.10 + 1.7.11 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 5375a43ce..ac9e8f371 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.10 + 1.7.11 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 43604510e..e7c2a7b21 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.10 + 1.7.11 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 0f055108f..06745953d 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.10 + 1.7.11 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index da4b419e5..5a73dfa64 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.10 + 1.7.11 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index d8d092e27..e18de1a07 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.10 + 1.7.11 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 4d70fa5e7..c2f946987 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.10 + 1.7.11 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 5af6906b51151b54799b5b5befd43d91d14bc21f Mon Sep 17 00:00:00 2001 From: Gabriel Hottiger Date: Fri, 19 Jan 2024 17:51:41 +0100 Subject: [PATCH 68/83] xMerge branch 'release-24.02' of git.anybotics.com:anybotics/anybotics GitOrigin-RevId: 902f0289b026b4543cdff4d099236c802e795b44 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 6991790e6..14cde3c65 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.11 + 1.7.12 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 8fa33453f..996e062de 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.11 + 1.7.12 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index bf3ea5748..d975cfdcc 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.11 + 1.7.12 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 80407f2ba..f3e898b91 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.11 + 1.7.12 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 4a022acc5..81dc666fe 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.11 + 1.7.12 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 7e6fadecc..cffa1aecc 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.11 + 1.7.12 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 29c3409cc..fd83a4d8b 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.11 + 1.7.12 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 5b7d9d883..0c9e679f6 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.11 + 1.7.12 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index ac9e8f371..4f8db966e 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.11 + 1.7.12 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index e7c2a7b21..80f459c24 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.11 + 1.7.12 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 06745953d..b928bba7e 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.11 + 1.7.12 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 5a73dfa64..2dc1c9c08 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.11 + 1.7.12 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index e18de1a07..b50b79112 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.11 + 1.7.12 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index c2f946987..3c7f89b67 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.11 + 1.7.12 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 4c348768defbb6b0e1735db7d64f491e153657e4 Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Sat, 13 Apr 2024 06:50:29 +0200 Subject: [PATCH 69/83] Merge branch 'release-24.04' GitOrigin-RevId: 4ec6a52059510869ead621ffde76f516c7776221 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 14cde3c65..66973adfe 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.12 + 1.7.13 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 996e062de..0d7655ab1 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.12 + 1.7.13 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index d975cfdcc..7cc020de8 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.12 + 1.7.13 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index f3e898b91..c45b85881 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.12 + 1.7.13 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 81dc666fe..f13b06e64 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.12 + 1.7.13 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index cffa1aecc..43e9e9def 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.12 + 1.7.13 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index fd83a4d8b..4d60de1a4 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.12 + 1.7.13 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 0c9e679f6..de7779d6c 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.12 + 1.7.13 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 4f8db966e..b6faed200 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.12 + 1.7.13 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 80f459c24..4a6276eb9 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.12 + 1.7.13 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index b928bba7e..fbe448cbd 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.12 + 1.7.13 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 2dc1c9c08..d69e5d66d 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.12 + 1.7.13 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index b50b79112..f55035bc3 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.12 + 1.7.13 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 3c7f89b67..0d520ab85 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.12 + 1.7.13 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From caa687b4f034345ec5a06582b834e689d14d57f5 Mon Sep 17 00:00:00 2001 From: magnus gaertner Date: Fri, 24 May 2024 12:43:34 +0200 Subject: [PATCH 70/83] Merge branch 'release-24.06' GitOrigin-RevId: 3c170d09e6c213ac715b9a9a46d9105a36432099 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 66973adfe..4666c0017 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.13 + 1.7.14 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 0d7655ab1..553f010c8 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.13 + 1.7.14 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 7cc020de8..d92244fba 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.13 + 1.7.14 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index c45b85881..a6f722517 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.13 + 1.7.14 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index f13b06e64..fafb3dee8 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.13 + 1.7.14 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 43e9e9def..3eed21991 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.13 + 1.7.14 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 4d60de1a4..043b6319c 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.13 + 1.7.14 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index de7779d6c..205a9d90f 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.13 + 1.7.14 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index b6faed200..2b2353049 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.13 + 1.7.14 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 4a6276eb9..82ae48d04 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.13 + 1.7.14 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index fbe448cbd..de00f128a 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.13 + 1.7.14 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index d69e5d66d..5bf957ee6 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.13 + 1.7.14 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index f55035bc3..e93c175f7 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.13 + 1.7.14 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 0d520ab85..643f3bcdf 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.13 + 1.7.14 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 46accc26341a9d93d7c543a10cba637d02a19765 Mon Sep 17 00:00:00 2001 From: Javier De Velasco Oriol Date: Fri, 5 Jul 2024 15:23:03 +0200 Subject: [PATCH 71/83] Merge remote-tracking branch 'origin/release-24.07' GitOrigin-RevId: 4659135876c455d1a51007d61976fa596c7df57d --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 4666c0017..846c9c349 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.14 + 1.7.15 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 553f010c8..9d9ebb7c5 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.14 + 1.7.15 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index d92244fba..59ad629d3 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.14 + 1.7.15 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index a6f722517..d89533ea2 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.14 + 1.7.15 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index fafb3dee8..59c4d3e35 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.14 + 1.7.15 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 3eed21991..f862ac01f 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.14 + 1.7.15 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 043b6319c..080aedced 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.14 + 1.7.15 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 205a9d90f..32509ffee 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.14 + 1.7.15 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 2b2353049..0d6bb150b 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.14 + 1.7.15 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 82ae48d04..c3529c0f0 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.14 + 1.7.15 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index de00f128a..19a01b9e5 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.14 + 1.7.15 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 5bf957ee6..79c261061 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.14 + 1.7.15 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index e93c175f7..c280e4ab4 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.14 + 1.7.15 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 643f3bcdf..664b8714b 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.14 + 1.7.15 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 887260ef0d9d13176feb7aaa7e1798713a1d2502 Mon Sep 17 00:00:00 2001 From: Remo Diethelm Date: Thu, 11 Jul 2024 07:25:41 +0000 Subject: [PATCH 72/83] Merge branch 'feature/sanitize_msg_headers' into 'master' [msgs, srvs] Use std_msgs/Header instead of Header for ROS2. GitOrigin-RevId: 82fcefb002a9ed6c5a8b06a34fdbba6b6ba32827 --- grid_map_msgs/msg/GridMapInfo.msg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/grid_map_msgs/msg/GridMapInfo.msg b/grid_map_msgs/msg/GridMapInfo.msg index 74511f5c1..44e644519 100644 --- a/grid_map_msgs/msg/GridMapInfo.msg +++ b/grid_map_msgs/msg/GridMapInfo.msg @@ -1,5 +1,5 @@ # Header (time and frame) -Header header +std_msgs/Header header # Resolution of the grid [m/cell]. float64 resolution From 725d1ab337ccaa9975e9bb126f4224a1e4373dda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Mon, 15 Jul 2024 07:07:04 +0000 Subject: [PATCH 73/83] Merge branch 'feature/ros2/migrate_grid_map_msgs' into 'master' Migrate grid_map_msgs to ROS2 Closes #UNKNOWN GitOrigin-RevId: bd8e9618a72804bf9685c29400b4e058d83ef834 --- grid_map_msgs/CMakeLists.txt | 60 ++++++++++++++++++++++++++++++++++-- grid_map_msgs/package.xml | 23 +++++++++----- 2 files changed, 74 insertions(+), 9 deletions(-) diff --git a/grid_map_msgs/CMakeLists.txt b/grid_map_msgs/CMakeLists.txt index 216ac9541..4adb0c034 100644 --- a/grid_map_msgs/CMakeLists.txt +++ b/grid_map_msgs/CMakeLists.txt @@ -1,6 +1,12 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_msgs) + + +if("$ENV{ROS_VERSION}" STREQUAL "1") + + + ## Find catkin macros and libraries find_package(catkin REQUIRED COMPONENTS std_msgs @@ -46,8 +52,6 @@ generate_messages( ## DEPENDS: system dependencies of this project that dependent projects also need catkin_package( - #INCLUDE_DIRS include - #LIBRARIES CATKIN_DEPENDS geometry_msgs message_runtime @@ -55,3 +59,55 @@ catkin_package( #DEPENDS ) + + + +else() # ROS version 2 + + + +## Find catkin macros and libraries + +find_package(ament_cmake REQUIRED) +find_package(geometry_msgs REQUIRED) +find_package(std_msgs REQUIRED) +find_package(rosidl_default_generators REQUIRED) +set(LIBS ${ament_cmake_LIBRARIES} ${geometry_msgs_LIBRARIES} + ${std_msgs_LIBRARIES} ${rosidl_default_generators_LIBRARIES}) +rosidl_generate_interfaces(${PROJECT_NAME} "msg/GridMapInfo.msg" + "msg/GridMap.msg" "srv/SetGridMap.srv" "srv/GetGridMap.srv" + "srv/GetGridMapInfo.srv" "srv/ProcessFile.srv" + DEPENDENCIES builtin_interfaces geometry_msgs std_msgs) +####################################### +## Declare ROS messages and services ## +####################################### + +## Generate messages in the 'msg' folder + +## Generate services in the 'srv' folder + +## Generate added messages and services with any dependencies listed here + +################################### +## catkin specific configuration ## +################################### +## The catkin_package macro generates cmake config files for your package +## Declare things to be passed to dependent projects +## INCLUDE_DIRS: uncomment this if you package contains header files +## LIBRARIES: libraries you create in this project that dependent projects also need +## CATKIN_DEPENDS: catkin_packages dependent projects also need +## DEPENDS: system dependencies of this project that dependent projects also need + + + +ament_export_dependencies(ament_cmake) +ament_export_dependencies(geometry_msgs) +ament_export_dependencies(std_msgs) +ament_export_dependencies(rosidl_default_generators) +ament_export_include_directories(${INCLUDE_DIRS}) + +install(TARGETS DESTINATION lib/${PROJECT_NAME}) + +ament_package() + +endif() diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 32509ffee..60fef6160 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,18 +1,27 @@ - - + + grid_map_msgs 1.7.15 Definition of the multi-layered grid map message type. + Péter Fankhauser Maximilian Wulf Yoshua Nava BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues - Péter Fankhauser - catkin - roscpp - message_generation + catkin + ament_cmake + rosidl_default_generators + roscpp + message_generation std_msgs geometry_msgs - message_runtime + rclcpp + builtin_interfaces + message_runtime + rosidl_default_runtime + rosidl_interface_packages + + ament_cmake + From 552ed01ed3b39886f52b93be0fc32f188fbbc1c5 Mon Sep 17 00:00:00 2001 From: Domingo Esteban Date: Wed, 24 Jul 2024 08:20:32 +0000 Subject: [PATCH 74/83] Merge branch 'fix/clean_grid_map_msgs_ros2' into 'master' [near_field_mapping_msgs] Clean grid_map and near_field_mapping msgs package and cmakelists for ROS2 GitOrigin-RevId: abe2e69e0e772beac6f609bddece0eab41eee296 --- grid_map_msgs/CMakeLists.txt | 64 ++++++++++-------------------------- grid_map_msgs/package.xml | 14 +++++--- 2 files changed, 27 insertions(+), 51 deletions(-) diff --git a/grid_map_msgs/CMakeLists.txt b/grid_map_msgs/CMakeLists.txt index 4adb0c034..aaf4a9d4d 100644 --- a/grid_map_msgs/CMakeLists.txt +++ b/grid_map_msgs/CMakeLists.txt @@ -1,12 +1,8 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_msgs) - - if("$ENV{ROS_VERSION}" STREQUAL "1") - - ## Find catkin macros and libraries find_package(catkin REQUIRED COMPONENTS std_msgs @@ -59,54 +55,30 @@ catkin_package( #DEPENDS ) - - - else() # ROS version 2 - - -## Find catkin macros and libraries +set(PACKAGE_DEPENDENCIES + geometry_msgs + std_msgs +) find_package(ament_cmake REQUIRED) -find_package(geometry_msgs REQUIRED) -find_package(std_msgs REQUIRED) find_package(rosidl_default_generators REQUIRED) -set(LIBS ${ament_cmake_LIBRARIES} ${geometry_msgs_LIBRARIES} - ${std_msgs_LIBRARIES} ${rosidl_default_generators_LIBRARIES}) -rosidl_generate_interfaces(${PROJECT_NAME} "msg/GridMapInfo.msg" - "msg/GridMap.msg" "srv/SetGridMap.srv" "srv/GetGridMap.srv" - "srv/GetGridMapInfo.srv" "srv/ProcessFile.srv" - DEPENDENCIES builtin_interfaces geometry_msgs std_msgs) -####################################### -## Declare ROS messages and services ## -####################################### - -## Generate messages in the 'msg' folder - -## Generate services in the 'srv' folder - -## Generate added messages and services with any dependencies listed here - -################################### -## catkin specific configuration ## -################################### -## The catkin_package macro generates cmake config files for your package -## Declare things to be passed to dependent projects -## INCLUDE_DIRS: uncomment this if you package contains header files -## LIBRARIES: libraries you create in this project that dependent projects also need -## CATKIN_DEPENDS: catkin_packages dependent projects also need -## DEPENDS: system dependencies of this project that dependent projects also need - - - -ament_export_dependencies(ament_cmake) -ament_export_dependencies(geometry_msgs) -ament_export_dependencies(std_msgs) -ament_export_dependencies(rosidl_default_generators) -ament_export_include_directories(${INCLUDE_DIRS}) +foreach(PKG IN LISTS PACKAGE_DEPENDENCIES) + find_package(${PKG} REQUIRED) +endforeach() + +rosidl_generate_interfaces(${PROJECT_NAME} + "msg/GridMapInfo.msg" + "msg/GridMap.msg" + "srv/SetGridMap.srv" + "srv/GetGridMap.srv" + "srv/GetGridMapInfo.srv" + "srv/ProcessFile.srv" + DEPENDENCIES ${PACKAGE_DEPENDENCIES} +) -install(TARGETS DESTINATION lib/${PROJECT_NAME}) +ament_export_dependencies(rosidl_default_runtime) ament_package() diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 60fef6160..81ff87850 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -3,24 +3,28 @@ grid_map_msgs 1.7.15 Definition of the multi-layered grid map message type. + + BSD Péter Fankhauser Maximilian Wulf Yoshua Nava - BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues + catkin ament_cmake rosidl_default_generators - roscpp - message_generation + + message_generation + std_msgs geometry_msgs - rclcpp - builtin_interfaces + message_runtime rosidl_default_runtime + rosidl_interface_packages + ament_cmake From 1c726c989f9d4de3d8996c8a208f693d125da371 Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Fri, 23 Aug 2024 19:40:40 +0200 Subject: [PATCH 75/83] Merge branch 'release-24.09' GitOrigin-RevId: 28333e455e07996c87eb821347d0c969f4778675 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 846c9c349..435abdfec 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.15 + 1.7.16 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 9d9ebb7c5..faadc0776 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.15 + 1.7.16 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 59ad629d3..759f5c5f1 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.15 + 1.7.16 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index d89533ea2..06a5fd529 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.15 + 1.7.16 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 59c4d3e35..1168d6c76 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.15 + 1.7.16 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index f862ac01f..113cd025f 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.15 + 1.7.16 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 080aedced..2b5b589bc 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.15 + 1.7.16 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 81ff87850..dd7ed932b 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.15 + 1.7.16 Definition of the multi-layered grid map message type. BSD diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index 0d6bb150b..afd128eb0 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.15 + 1.7.16 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index c3529c0f0..5eb235ec1 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.15 + 1.7.16 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 19a01b9e5..340977080 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.15 + 1.7.16 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 79c261061..bfcfb285e 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.15 + 1.7.16 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index c280e4ab4..c23a2a6eb 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.15 + 1.7.16 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 664b8714b..e3c75f66e 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.15 + 1.7.16 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 2dce57936e0756f0168b889182e4740bef6d4ec1 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Mon, 9 Sep 2024 08:22:46 +0000 Subject: [PATCH 76/83] Merge branch 'feature/grid_map/update_docs' into 'master' Update Readme GitOrigin-RevId: 319779d3859161a4b1365e66b9c6018058004a03 --- README.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/README.md b/README.md index 0bde2b5ac..23a5ea791 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,7 @@ Features: * **Based on Eigen:** Grid map data is stored as [Eigen] data types. Users can apply available Eigen algorithms directly to the map data for versatile and efficient data manipulation. * **Convenience functions:** Several helper methods allow for convenient and memory safe cell data access. For example, iterator functions for rectangular, circular, polygonal regions and lines are implemented. * **ROS interface:** Grid maps can be directly converted to and from ROS message types such as PointCloud2, OccupancyGrid, GridCells, and our custom GridMap message. Conversion packages provide compatibility with [costmap_2d], [PCL], and [OctoMap] data types. + * Note: Currently, PointCloud2 can only be converted one-way; see this [issue](https://github.com/ANYbotics/grid_map/issues/158) for context. * **OpenCV interface:** Grid maps can be seamlessly converted from and to [OpenCV] image types to make use of the tools provided by [OpenCV]. * **Visualizations:** The *grid_map_rviz_plugin* renders grid maps as 3d surface plots (height maps) in [RViz]. Additionally, the *grid_map_visualization* package helps to visualize grid maps as point clouds, occupancy grids, grid cells etc. * **Filters:** The *grid_map_filters* provides are range of filters to process grid maps as a sequence of filters. Parsing of mathematical expressions allows to flexibly setup powerful computations such as thresholding, normal vectors, smoothening, variance, inpainting, and matrix kernel convolutions. @@ -52,6 +53,20 @@ If you use this work in an academic context, please cite the following publicati url = {http://www.springer.com/de/book/9783319260525} } +## Branches + +These branches are currently maintained: +* ROS 1 + * [master](https://github.com/ANYbotics/grid_map) +* ROS 2 + * [humble](https://github.com/ANYbotics/grid_map/tree/humble) + * [iron](https://github.com/ANYbotics/grid_map/tree/iron) + * [jazzy](https://github.com/ANYbotics/grid_map/tree/jazzy) + * [rolling](https://github.com/ANYbotics/grid_map/tree/rolling) + +Pull requests for ROS 1 should target `master`. +Pull requests for ROS 2 should target `rolling` and will be backported if they do not break ABI. + ## Documentation An introduction to the grid map library including a tutorial is given in [this book chapter](http://www.researchgate.net/publication/284415855). From be3bbc9afbcebd6a5cadcb091211916a79d3dc14 Mon Sep 17 00:00:00 2001 From: Jonas Junger Date: Fri, 18 Oct 2024 14:29:44 +0200 Subject: [PATCH 77/83] Merge branch 'release-24.11' GitOrigin-RevId: f69bd332ed6125a529d3818f372d0bddcbdd9942 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 435abdfec..c2046b61d 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.16 + 1.7.17 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index faadc0776..de296109b 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.16 + 1.7.17 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 759f5c5f1..e51890741 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.16 + 1.7.17 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 06a5fd529..7793dfcd9 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.16 + 1.7.17 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 1168d6c76..613f78e63 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.16 + 1.7.17 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 113cd025f..f6dbeef40 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.16 + 1.7.17 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 2b5b589bc..c1b67b818 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.16 + 1.7.17 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index dd7ed932b..93207f549 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.16 + 1.7.17 Definition of the multi-layered grid map message type. BSD diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index afd128eb0..a798c57cb 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.16 + 1.7.17 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 5eb235ec1..5ec677c3a 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.16 + 1.7.17 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 340977080..1fdfb1f89 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.16 + 1.7.17 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index bfcfb285e..eddf74b18 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.16 + 1.7.17 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index c23a2a6eb..ca9c61a7b 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.16 + 1.7.17 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index e3c75f66e..fb8a4c631 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.16 + 1.7.17 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 34f1ff80169fe69e62d0973f623ac3828ec86266 Mon Sep 17 00:00:00 2001 From: Armen Poghosov Date: Thu, 30 Jan 2025 20:05:27 +0000 Subject: [PATCH 78/83] Merge branch 'fix/removed_const_map_from_a_header' into 'master' Removed const std::map from a header file GitOrigin-RevId: d1dc994f656a9745d4a28c0b37d23a8599023ab4 --- grid_map_rviz_plugin/CMakeLists.txt | 1 + .../grid_map_rviz_plugin/GridMapColorMaps.hpp | 49 +++++-------------- grid_map_rviz_plugin/src/GridMapColorMaps.cpp | 38 ++++++++++++++ 3 files changed, 50 insertions(+), 38 deletions(-) create mode 100644 grid_map_rviz_plugin/src/GridMapColorMaps.cpp diff --git a/grid_map_rviz_plugin/CMakeLists.txt b/grid_map_rviz_plugin/CMakeLists.txt index bc99beb35..dc4f74f4f 100644 --- a/grid_map_rviz_plugin/CMakeLists.txt +++ b/grid_map_rviz_plugin/CMakeLists.txt @@ -68,6 +68,7 @@ add_definitions(-DQT_NO_KEYWORDS) set(SOURCE_FILES src/GridMapDisplay.cpp src/GridMapVisual.cpp + src/GridMapColorMaps.cpp ) ## An rviz plugin is just a shared library, so here we declare the diff --git a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp index 8d579466f..13a377cf8 100644 --- a/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp +++ b/grid_map_rviz_plugin/include/grid_map_rviz_plugin/GridMapColorMaps.hpp @@ -6,46 +6,19 @@ * Institute: University of Oxford */ - #pragma once -#include + #include -#include +#include +#include + +#include namespace grid_map_rviz_plugin { -const std::map>> colorMap{ - {"viridis", {{0.267004, 0.004874, 0.329415},{0.268510, 0.009605, 0.335427},{0.269944, 0.014625, 0.341379},{0.271305, 0.019942, 0.347269},{0.272594, 0.025563, 0.353093},{0.273809, 0.031497, 0.358853},{0.274952, 0.037752, 0.364543},{0.276022, 0.044167, 0.370164},{0.277018, 0.050344, 0.375715},{0.277941, 0.056324, 0.381191},{0.278791, 0.062145, 0.386592},{0.279566, 0.067836, 0.391917},{0.280267, 0.073417, 0.397163},{0.280894, 0.078907, 0.402329},{0.281446, 0.084320, 0.407414},{0.281924, 0.089666, 0.412415},{0.282327, 0.094955, 0.417331},{0.282656, 0.100196, 0.422160},{0.282910, 0.105393, 0.426902},{0.283091, 0.110553, 0.431554},{0.283197, 0.115680, 0.436115},{0.283229, 0.120777, 0.440584},{0.283187, 0.125848, 0.444960},{0.283072, 0.130895, 0.449241},{0.282884, 0.135920, 0.453427},{0.282623, 0.140926, 0.457517},{0.282290, 0.145912, 0.461510},{0.281887, 0.150881, 0.465405},{0.281412, 0.155834, 0.469201},{0.280868, 0.160771, 0.472899},{0.280255, 0.165693, 0.476498},{0.279574, 0.170599, 0.479997},{0.278826, 0.175490, 0.483397},{0.278012, 0.180367, 0.486697},{0.277134, 0.185228, 0.489898},{0.276194, 0.190074, 0.493001},{0.275191, 0.194905, 0.496005},{0.274128, 0.199721, 0.498911},{0.273006, 0.204520, 0.501721},{0.271828, 0.209303, 0.504434},{0.270595, 0.214069, 0.507052},{0.269308, 0.218818, 0.509577},{0.267968, 0.223549, 0.512008},{0.266580, 0.228262, 0.514349},{0.265145, 0.232956, 0.516599},{0.263663, 0.237631, 0.518762},{0.262138, 0.242286, 0.520837},{0.260571, 0.246922, 0.522828},{0.258965, 0.251537, 0.524736},{0.257322, 0.256130, 0.526563},{0.255645, 0.260703, 0.528312},{0.253935, 0.265254, 0.529983},{0.252194, 0.269783, 0.531579},{0.250425, 0.274290, 0.533103},{0.248629, 0.278775, 0.534556},{0.246811, 0.283237, 0.535941},{0.244972, 0.287675, 0.537260},{0.243113, 0.292092, 0.538516},{0.241237, 0.296485, 0.539709},{0.239346, 0.300855, 0.540844},{0.237441, 0.305202, 0.541921},{0.235526, 0.309527, 0.542944},{0.233603, 0.313828, 0.543914},{0.231674, 0.318106, 0.544834},{0.229739, 0.322361, 0.545706},{0.227802, 0.326594, 0.546532},{0.225863, 0.330805, 0.547314},{0.223925, 0.334994, 0.548053},{0.221989, 0.339161, 0.548752},{0.220057, 0.343307, 0.549413},{0.218130, 0.347432, 0.550038},{0.216210, 0.351535, 0.550627},{0.214298, 0.355619, 0.551184},{0.212395, 0.359683, 0.551710},{0.210503, 0.363727, 0.552206},{0.208623, 0.367752, 0.552675},{0.206756, 0.371758, 0.553117},{0.204903, 0.375746, 0.553533},{0.203063, 0.379716, 0.553925},{0.201239, 0.383670, 0.554294},{0.199430, 0.387607, 0.554642},{0.197636, 0.391528, 0.554969},{0.195860, 0.395433, 0.555276},{0.194100, 0.399323, 0.555565},{0.192357, 0.403199, 0.555836},{0.190631, 0.407061, 0.556089},{0.188923, 0.410910, 0.556326},{0.187231, 0.414746, 0.556547},{0.185556, 0.418570, 0.556753},{0.183898, 0.422383, 0.556944},{0.182256, 0.426184, 0.557120},{0.180629, 0.429975, 0.557282},{0.179019, 0.433756, 0.557430},{0.177423, 0.437527, 0.557565},{0.175841, 0.441290, 0.557685},{0.174274, 0.445044, 0.557792},{0.172719, 0.448791, 0.557885},{0.171176, 0.452530, 0.557965},{0.169646, 0.456262, 0.558030},{0.168126, 0.459988, 0.558082},{0.166617, 0.463708, 0.558119},{0.165117, 0.467423, 0.558141},{0.163625, 0.471133, 0.558148},{0.162142, 0.474838, 0.558140},{0.160665, 0.478540, 0.558115},{0.159194, 0.482237, 0.558073},{0.157729, 0.485932, 0.558013},{0.156270, 0.489624, 0.557936},{0.154815, 0.493313, 0.557840},{0.153364, 0.497000, 0.557724},{0.151918, 0.500685, 0.557587},{0.150476, 0.504369, 0.557430},{0.149039, 0.508051, 0.557250},{0.147607, 0.511733, 0.557049},{0.146180, 0.515413, 0.556823},{0.144759, 0.519093, 0.556572},{0.143343, 0.522773, 0.556295},{0.141935, 0.526453, 0.555991},{0.140536, 0.530132, 0.555659},{0.139147, 0.533812, 0.555298},{0.137770, 0.537492, 0.554906},{0.136408, 0.541173, 0.554483},{0.135066, 0.544853, 0.554029},{0.133743, 0.548535, 0.553541},{0.132444, 0.552216, 0.553018},{0.131172, 0.555899, 0.552459},{0.129933, 0.559582, 0.551864},{0.128729, 0.563265, 0.551229},{0.127568, 0.566949, 0.550556},{0.126453, 0.570633, 0.549841},{0.125394, 0.574318, 0.549086},{0.124395, 0.578002, 0.548287},{0.123463, 0.581687, 0.547445},{0.122606, 0.585371, 0.546557},{0.121831, 0.589055, 0.545623},{0.121148, 0.592739, 0.544641},{0.120565, 0.596422, 0.543611},{0.120092, 0.600104, 0.542530},{0.119738, 0.603785, 0.541400},{0.119512, 0.607464, 0.540218},{0.119423, 0.611141, 0.538982},{0.119483, 0.614817, 0.537692},{0.119699, 0.618490, 0.536347},{0.120081, 0.622161, 0.534946},{0.120638, 0.625828, 0.533488},{0.121380, 0.629492, 0.531973},{0.122312, 0.633153, 0.530398},{0.123444, 0.636809, 0.528763},{0.124780, 0.640461, 0.527068},{0.126326, 0.644107, 0.525311},{0.128087, 0.647749, 0.523491},{0.130067, 0.651384, 0.521608},{0.132268, 0.655014, 0.519661},{0.134692, 0.658636, 0.517649},{0.137339, 0.662252, 0.515571},{0.140210, 0.665859, 0.513427},{0.143303, 0.669459, 0.511215},{0.146616, 0.673050, 0.508936},{0.150148, 0.676631, 0.506589},{0.153894, 0.680203, 0.504172},{0.157851, 0.683765, 0.501686},{0.162016, 0.687316, 0.499129},{0.166383, 0.690856, 0.496502},{0.170948, 0.694384, 0.493803},{0.175707, 0.697900, 0.491033},{0.180653, 0.701402, 0.488189},{0.185783, 0.704891, 0.485273},{0.191090, 0.708366, 0.482284},{0.196571, 0.711827, 0.479221},{0.202219, 0.715272, 0.476084},{0.208030, 0.718701, 0.472873},{0.214000, 0.722114, 0.469588},{0.220124, 0.725509, 0.466226},{0.226397, 0.728888, 0.462789},{0.232815, 0.732247, 0.459277},{0.239374, 0.735588, 0.455688},{0.246070, 0.738910, 0.452024},{0.252899, 0.742211, 0.448284},{0.259857, 0.745492, 0.444467},{0.266941, 0.748751, 0.440573},{0.274149, 0.751988, 0.436601},{0.281477, 0.755203, 0.432552},{0.288921, 0.758394, 0.428426},{0.296479, 0.761561, 0.424223},{0.304148, 0.764704, 0.419943},{0.311925, 0.767822, 0.415586},{0.319809, 0.770914, 0.411152},{0.327796, 0.773980, 0.406640},{0.335885, 0.777018, 0.402049},{0.344074, 0.780029, 0.397381},{0.352360, 0.783011, 0.392636},{0.360741, 0.785964, 0.387814},{0.369214, 0.788888, 0.382914},{0.377779, 0.791781, 0.377939},{0.386433, 0.794644, 0.372886},{0.395174, 0.797475, 0.367757},{0.404001, 0.800275, 0.362552},{0.412913, 0.803041, 0.357269},{0.421908, 0.805774, 0.351910},{0.430983, 0.808473, 0.346476},{0.440137, 0.811138, 0.340967},{0.449368, 0.813768, 0.335384},{0.458674, 0.816363, 0.329727},{0.468053, 0.818921, 0.323998},{0.477504, 0.821444, 0.318195},{0.487026, 0.823929, 0.312321},{0.496615, 0.826376, 0.306377},{0.506271, 0.828786, 0.300362},{0.515992, 0.831158, 0.294279},{0.525776, 0.833491, 0.288127},{0.535621, 0.835785, 0.281908},{0.545524, 0.838039, 0.275626},{0.555484, 0.840254, 0.269281},{0.565498, 0.842430, 0.262877},{0.575563, 0.844566, 0.256415},{0.585678, 0.846661, 0.249897},{0.595839, 0.848717, 0.243329},{0.606045, 0.850733, 0.236712},{0.616293, 0.852709, 0.230052},{0.626579, 0.854645, 0.223353},{0.636902, 0.856542, 0.216620},{0.647257, 0.858400, 0.209861},{0.657642, 0.860219, 0.203082},{0.668054, 0.861999, 0.196293},{0.678489, 0.863742, 0.189503},{0.688944, 0.865448, 0.182725},{0.699415, 0.867117, 0.175971},{0.709898, 0.868751, 0.169257},{0.720391, 0.870350, 0.162603},{0.730889, 0.871916, 0.156029},{0.741388, 0.873449, 0.149561},{0.751884, 0.874951, 0.143228},{0.762373, 0.876424, 0.137064},{0.772852, 0.877868, 0.131109},{0.783315, 0.879285, 0.125405},{0.793760, 0.880678, 0.120005},{0.804182, 0.882046, 0.114965},{0.814576, 0.883393, 0.110347},{0.824940, 0.884720, 0.106217},{0.835270, 0.886029, 0.102646},{0.845561, 0.887322, 0.099702},{0.855810, 0.888601, 0.097452},{0.866013, 0.889868, 0.095953},{0.876168, 0.891125, 0.095250},{0.886271, 0.892374, 0.095374},{0.896320, 0.893616, 0.096335},{0.906311, 0.894855, 0.098125},{0.916242, 0.896091, 0.100717},{0.926106, 0.897330, 0.104071},{0.935904, 0.898570, 0.108131},{0.945636, 0.899815, 0.112838},{0.955300, 0.901065, 0.118128},{0.964894, 0.902323, 0.123941},{0.974417, 0.903590, 0.130215},{0.983868, 0.904867, 0.136897},{0.993248, 0.906157, 0.143936}}}, - {"plasma", {{0.050383, 0.029803, 0.527975},{0.063536, 0.028426, 0.533124},{0.075353, 0.027206, 0.538007},{0.086222, 0.026125, 0.542658},{0.096379, 0.025165, 0.547103},{0.105980, 0.024309, 0.551368},{0.115124, 0.023556, 0.555468},{0.123903, 0.022878, 0.559423},{0.132381, 0.022258, 0.563250},{0.140603, 0.021687, 0.566959},{0.148607, 0.021154, 0.570562},{0.156421, 0.020651, 0.574065},{0.164070, 0.020171, 0.577478},{0.171574, 0.019706, 0.580806},{0.178950, 0.019252, 0.584054},{0.186213, 0.018803, 0.587228},{0.193374, 0.018354, 0.590330},{0.200445, 0.017902, 0.593364},{0.207435, 0.017442, 0.596333},{0.214350, 0.016973, 0.599239},{0.221197, 0.016497, 0.602083},{0.227983, 0.016007, 0.604867},{0.234715, 0.015502, 0.607592},{0.241396, 0.014979, 0.610259},{0.248032, 0.014439, 0.612868},{0.254627, 0.013882, 0.615419},{0.261183, 0.013308, 0.617911},{0.267703, 0.012716, 0.620346},{0.274191, 0.012109, 0.622722},{0.280648, 0.011488, 0.625038},{0.287076, 0.010855, 0.627295},{0.293478, 0.010213, 0.629490},{0.299855, 0.009561, 0.631624},{0.306210, 0.008902, 0.633694},{0.312543, 0.008239, 0.635700},{0.318856, 0.007576, 0.637640},{0.325150, 0.006915, 0.639512},{0.331426, 0.006261, 0.641316},{0.337683, 0.005618, 0.643049},{0.343925, 0.004991, 0.644710},{0.350150, 0.004382, 0.646298},{0.356359, 0.003798, 0.647810},{0.362553, 0.003243, 0.649245},{0.368733, 0.002724, 0.650601},{0.374897, 0.002245, 0.651876},{0.381047, 0.001814, 0.653068},{0.387183, 0.001434, 0.654177},{0.393304, 0.001114, 0.655199},{0.399411, 0.000859, 0.656133},{0.405503, 0.000678, 0.656977},{0.411580, 0.000577, 0.657730},{0.417642, 0.000564, 0.658390},{0.423689, 0.000646, 0.658956},{0.429719, 0.000831, 0.659425},{0.435734, 0.001127, 0.659797},{0.441732, 0.001540, 0.660069},{0.447714, 0.002080, 0.660240},{0.453677, 0.002755, 0.660310},{0.459623, 0.003574, 0.660277},{0.465550, 0.004545, 0.660139},{0.471457, 0.005678, 0.659897},{0.477344, 0.006980, 0.659549},{0.483210, 0.008460, 0.659095},{0.489055, 0.010127, 0.658534},{0.494877, 0.011990, 0.657865},{0.500678, 0.014055, 0.657088},{0.506454, 0.016333, 0.656202},{0.512206, 0.018833, 0.655209},{0.517933, 0.021563, 0.654109},{0.523633, 0.024532, 0.652901},{0.529306, 0.027747, 0.651586},{0.534952, 0.031217, 0.650165},{0.540570, 0.034950, 0.648640},{0.546157, 0.038954, 0.647010},{0.551715, 0.043136, 0.645277},{0.557243, 0.047331, 0.643443},{0.562738, 0.051545, 0.641509},{0.568201, 0.055778, 0.639477},{0.573632, 0.060028, 0.637349},{0.579029, 0.064296, 0.635126},{0.584391, 0.068579, 0.632812},{0.589719, 0.072878, 0.630408},{0.595011, 0.077190, 0.627917},{0.600266, 0.081516, 0.625342},{0.605485, 0.085854, 0.622686},{0.610667, 0.090204, 0.619951},{0.615812, 0.094564, 0.617140},{0.620919, 0.098934, 0.614257},{0.625987, 0.103312, 0.611305},{0.631017, 0.107699, 0.608287},{0.636008, 0.112092, 0.605205},{0.640959, 0.116492, 0.602065},{0.645872, 0.120898, 0.598867},{0.650746, 0.125309, 0.595617},{0.655580, 0.129725, 0.592317},{0.660374, 0.134144, 0.588971},{0.665129, 0.138566, 0.585582},{0.669845, 0.142992, 0.582154},{0.674522, 0.147419, 0.578688},{0.679160, 0.151848, 0.575189},{0.683758, 0.156278, 0.571660},{0.688318, 0.160709, 0.568103},{0.692840, 0.165141, 0.564522},{0.697324, 0.169573, 0.560919},{0.701769, 0.174005, 0.557296},{0.706178, 0.178437, 0.553657},{0.710549, 0.182868, 0.550004},{0.714883, 0.187299, 0.546338},{0.719181, 0.191729, 0.542663},{0.723444, 0.196158, 0.538981},{0.727670, 0.200586, 0.535293},{0.731862, 0.205013, 0.531601},{0.736019, 0.209439, 0.527908},{0.740143, 0.213864, 0.524216},{0.744232, 0.218288, 0.520524},{0.748289, 0.222711, 0.516834},{0.752312, 0.227133, 0.513149},{0.756304, 0.231555, 0.509468},{0.760264, 0.235976, 0.505794},{0.764193, 0.240396, 0.502126},{0.768090, 0.244817, 0.498465},{0.771958, 0.249237, 0.494813},{0.775796, 0.253658, 0.491171},{0.779604, 0.258078, 0.487539},{0.783383, 0.262500, 0.483918},{0.787133, 0.266922, 0.480307},{0.790855, 0.271345, 0.476706},{0.794549, 0.275770, 0.473117},{0.798216, 0.280197, 0.469538},{0.801855, 0.284626, 0.465971},{0.805467, 0.289057, 0.462415},{0.809052, 0.293491, 0.458870},{0.812612, 0.297928, 0.455338},{0.816144, 0.302368, 0.451816},{0.819651, 0.306812, 0.448306},{0.823132, 0.311261, 0.444806},{0.826588, 0.315714, 0.441316},{0.830018, 0.320172, 0.437836},{0.833422, 0.324635, 0.434366},{0.836801, 0.329105, 0.430905},{0.840155, 0.333580, 0.427455},{0.843484, 0.338062, 0.424013},{0.846788, 0.342551, 0.420579},{0.850066, 0.347048, 0.417153},{0.853319, 0.351553, 0.413734},{0.856547, 0.356066, 0.410322},{0.859750, 0.360588, 0.406917},{0.862927, 0.365119, 0.403519},{0.866078, 0.369660, 0.400126},{0.869203, 0.374212, 0.396738},{0.872303, 0.378774, 0.393355},{0.875376, 0.383347, 0.389976},{0.878423, 0.387932, 0.386600},{0.881443, 0.392529, 0.383229},{0.884436, 0.397139, 0.379860},{0.887402, 0.401762, 0.376494},{0.890340, 0.406398, 0.373130},{0.893250, 0.411048, 0.369768},{0.896131, 0.415712, 0.366407},{0.898984, 0.420392, 0.363047},{0.901807, 0.425087, 0.359688},{0.904601, 0.429797, 0.356329},{0.907365, 0.434524, 0.352970},{0.910098, 0.439268, 0.349610},{0.912800, 0.444029, 0.346251},{0.915471, 0.448807, 0.342890},{0.918109, 0.453603, 0.339529},{0.920714, 0.458417, 0.336166},{0.923287, 0.463251, 0.332801},{0.925825, 0.468103, 0.329435},{0.928329, 0.472975, 0.326067},{0.930798, 0.477867, 0.322697},{0.933232, 0.482780, 0.319325},{0.935630, 0.487712, 0.315952},{0.937990, 0.492667, 0.312575},{0.940313, 0.497642, 0.309197},{0.942598, 0.502639, 0.305816},{0.944844, 0.507658, 0.302433},{0.947051, 0.512699, 0.299049},{0.949217, 0.517763, 0.295662},{0.951344, 0.522850, 0.292275},{0.953428, 0.527960, 0.288883},{0.955470, 0.533093, 0.285490},{0.957469, 0.538250, 0.282096},{0.959424, 0.543431, 0.278701},{0.961336, 0.548636, 0.275305},{0.963203, 0.553865, 0.271909},{0.965024, 0.559118, 0.268513},{0.966798, 0.564396, 0.265118},{0.968526, 0.569700, 0.261721},{0.970205, 0.575028, 0.258325},{0.971835, 0.580382, 0.254931},{0.973416, 0.585761, 0.251540},{0.974947, 0.591165, 0.248151},{0.976428, 0.596595, 0.244767},{0.977856, 0.602051, 0.241387},{0.979233, 0.607532, 0.238013},{0.980556, 0.613039, 0.234646},{0.981826, 0.618572, 0.231287},{0.983041, 0.624131, 0.227937},{0.984199, 0.629718, 0.224595},{0.985301, 0.635330, 0.221265},{0.986345, 0.640969, 0.217948},{0.987332, 0.646633, 0.214648},{0.988260, 0.652325, 0.211364},{0.989128, 0.658043, 0.208100},{0.989935, 0.663787, 0.204859},{0.990681, 0.669558, 0.201642},{0.991365, 0.675355, 0.198453},{0.991985, 0.681179, 0.195295},{0.992541, 0.687030, 0.192170},{0.993032, 0.692907, 0.189084},{0.993456, 0.698810, 0.186041},{0.993814, 0.704741, 0.183043},{0.994103, 0.710698, 0.180097},{0.994324, 0.716681, 0.177208},{0.994474, 0.722691, 0.174381},{0.994553, 0.728728, 0.171622},{0.994561, 0.734791, 0.168938},{0.994495, 0.740880, 0.166335},{0.994355, 0.746995, 0.163821},{0.994141, 0.753137, 0.161404},{0.993851, 0.759304, 0.159092},{0.993482, 0.765499, 0.156891},{0.993033, 0.771720, 0.154808},{0.992505, 0.777967, 0.152855},{0.991897, 0.784239, 0.151042},{0.991209, 0.790537, 0.149377},{0.990439, 0.796859, 0.147870},{0.989587, 0.803205, 0.146529},{0.988648, 0.809579, 0.145357},{0.987621, 0.815978, 0.144363},{0.986509, 0.822401, 0.143557},{0.985314, 0.828846, 0.142945},{0.984031, 0.835315, 0.142528},{0.982653, 0.841812, 0.142303},{0.981190, 0.848329, 0.142279},{0.979644, 0.854866, 0.142453},{0.977995, 0.861432, 0.142808},{0.976265, 0.868016, 0.143351},{0.974443, 0.874622, 0.144061},{0.972530, 0.881250, 0.144923},{0.970533, 0.887896, 0.145919},{0.968443, 0.894564, 0.147014},{0.966271, 0.901249, 0.148180},{0.964021, 0.907950, 0.149370},{0.961681, 0.914672, 0.150520},{0.959276, 0.921407, 0.151566},{0.956808, 0.928152, 0.152409},{0.954287, 0.934908, 0.152921},{0.951726, 0.941671, 0.152925},{0.949151, 0.948435, 0.152178},{0.946602, 0.955190, 0.150328},{0.944152, 0.961916, 0.146861},{0.941896, 0.968590, 0.140956},{0.940015, 0.975158, 0.131326}}}, - {"inferno", {{0.001462, 0.000466, 0.013866},{0.002267, 0.001270, 0.018570},{0.003299, 0.002249, 0.024239},{0.004547, 0.003392, 0.030909},{0.006006, 0.004692, 0.038558},{0.007676, 0.006136, 0.046836},{0.009561, 0.007713, 0.055143},{0.011663, 0.009417, 0.063460},{0.013995, 0.011225, 0.071862},{0.016561, 0.013136, 0.080282},{0.019373, 0.015133, 0.088767},{0.022447, 0.017199, 0.097327},{0.025793, 0.019331, 0.105930},{0.029432, 0.021503, 0.114621},{0.033385, 0.023702, 0.123397},{0.037668, 0.025921, 0.132232},{0.042253, 0.028139, 0.141141},{0.046915, 0.030324, 0.150164},{0.051644, 0.032474, 0.159254},{0.056449, 0.034569, 0.168414},{0.061340, 0.036590, 0.177642},{0.066331, 0.038504, 0.186962},{0.071429, 0.040294, 0.196354},{0.076637, 0.041905, 0.205799},{0.081962, 0.043328, 0.215289},{0.087411, 0.044556, 0.224813},{0.092990, 0.045583, 0.234358},{0.098702, 0.046402, 0.243904},{0.104551, 0.047008, 0.253430},{0.110536, 0.047399, 0.262912},{0.116656, 0.047574, 0.272321},{0.122908, 0.047536, 0.281624},{0.129285, 0.047293, 0.290788},{0.135778, 0.046856, 0.299776},{0.142378, 0.046242, 0.308553},{0.149073, 0.045468, 0.317085},{0.155850, 0.044559, 0.325338},{0.162689, 0.043554, 0.333277},{0.169575, 0.042489, 0.340874},{0.176493, 0.041402, 0.348111},{0.183429, 0.040329, 0.354971},{0.190367, 0.039309, 0.361447},{0.197297, 0.038400, 0.367535},{0.204209, 0.037632, 0.373238},{0.211095, 0.037030, 0.378563},{0.217949, 0.036615, 0.383522},{0.224763, 0.036405, 0.388129},{0.231538, 0.036405, 0.392400},{0.238273, 0.036621, 0.396353},{0.244967, 0.037055, 0.400007},{0.251620, 0.037705, 0.403378},{0.258234, 0.038571, 0.406485},{0.264810, 0.039647, 0.409345},{0.271347, 0.040922, 0.411976},{0.277850, 0.042353, 0.414392},{0.284321, 0.043933, 0.416608},{0.290763, 0.045644, 0.418637},{0.297178, 0.047470, 0.420491},{0.303568, 0.049396, 0.422182},{0.309935, 0.051407, 0.423721},{0.316282, 0.053490, 0.425116},{0.322610, 0.055634, 0.426377},{0.328921, 0.057827, 0.427511},{0.335217, 0.060060, 0.428524},{0.341500, 0.062325, 0.429425},{0.347771, 0.064616, 0.430217},{0.354032, 0.066925, 0.430906},{0.360284, 0.069247, 0.431497},{0.366529, 0.071579, 0.431994},{0.372768, 0.073915, 0.432400},{0.379001, 0.076253, 0.432719},{0.385228, 0.078591, 0.432955},{0.391453, 0.080927, 0.433109},{0.397674, 0.083257, 0.433183},{0.403894, 0.085580, 0.433179},{0.410113, 0.087896, 0.433098},{0.416331, 0.090203, 0.432943},{0.422549, 0.092501, 0.432714},{0.428768, 0.094790, 0.432412},{0.434987, 0.097069, 0.432039},{0.441207, 0.099338, 0.431594},{0.447428, 0.101597, 0.431080},{0.453651, 0.103848, 0.430498},{0.459875, 0.106089, 0.429846},{0.466100, 0.108322, 0.429125},{0.472328, 0.110547, 0.428334},{0.478558, 0.112764, 0.427475},{0.484789, 0.114974, 0.426548},{0.491022, 0.117179, 0.425552},{0.497257, 0.119379, 0.424488},{0.503493, 0.121575, 0.423356},{0.509730, 0.123769, 0.422156},{0.515967, 0.125960, 0.420887},{0.522206, 0.128150, 0.419549},{0.528444, 0.130341, 0.418142},{0.534683, 0.132534, 0.416667},{0.540920, 0.134729, 0.415123},{0.547157, 0.136929, 0.413511},{0.553392, 0.139134, 0.411829},{0.559624, 0.141346, 0.410078},{0.565854, 0.143567, 0.408258},{0.572081, 0.145797, 0.406369},{0.578304, 0.148039, 0.404411},{0.584521, 0.150294, 0.402385},{0.590734, 0.152563, 0.400290},{0.596940, 0.154848, 0.398125},{0.603139, 0.157151, 0.395891},{0.609330, 0.159474, 0.393589},{0.615513, 0.161817, 0.391219},{0.621685, 0.164184, 0.388781},{0.627847, 0.166575, 0.386276},{0.633998, 0.168992, 0.383704},{0.640135, 0.171438, 0.381065},{0.646260, 0.173914, 0.378359},{0.652369, 0.176421, 0.375586},{0.658463, 0.178962, 0.372748},{0.664540, 0.181539, 0.369846},{0.670599, 0.184153, 0.366879},{0.676638, 0.186807, 0.363849},{0.682656, 0.189501, 0.360757},{0.688653, 0.192239, 0.357603},{0.694627, 0.195021, 0.354388},{0.700576, 0.197851, 0.351113},{0.706500, 0.200728, 0.347777},{0.712396, 0.203656, 0.344383},{0.718264, 0.206636, 0.340931},{0.724103, 0.209670, 0.337424},{0.729909, 0.212759, 0.333861},{0.735683, 0.215906, 0.330245},{0.741423, 0.219112, 0.326576},{0.747127, 0.222378, 0.322856},{0.752794, 0.225706, 0.319085},{0.758422, 0.229097, 0.315266},{0.764010, 0.232554, 0.311399},{0.769556, 0.236077, 0.307485},{0.775059, 0.239667, 0.303526},{0.780517, 0.243327, 0.299523},{0.785929, 0.247056, 0.295477},{0.791293, 0.250856, 0.291390},{0.796607, 0.254728, 0.287264},{0.801871, 0.258674, 0.283099},{0.807082, 0.262692, 0.278898},{0.812239, 0.266786, 0.274661},{0.817341, 0.270954, 0.270390},{0.822386, 0.275197, 0.266085},{0.827372, 0.279517, 0.261750},{0.832299, 0.283913, 0.257383},{0.837165, 0.288385, 0.252988},{0.841969, 0.292933, 0.248564},{0.846709, 0.297559, 0.244113},{0.851384, 0.302260, 0.239636},{0.855992, 0.307038, 0.235133},{0.860533, 0.311892, 0.230606},{0.865006, 0.316822, 0.226055},{0.869409, 0.321827, 0.221482},{0.873741, 0.326906, 0.216886},{0.878001, 0.332060, 0.212268},{0.882188, 0.337287, 0.207628},{0.886302, 0.342586, 0.202968},{0.890341, 0.347957, 0.198286},{0.894305, 0.353399, 0.193584},{0.898192, 0.358911, 0.188860},{0.902003, 0.364492, 0.184116},{0.905735, 0.370140, 0.179350},{0.909390, 0.375856, 0.174563},{0.912966, 0.381636, 0.169755},{0.916462, 0.387481, 0.164924},{0.919879, 0.393389, 0.160070},{0.923215, 0.399359, 0.155193},{0.926470, 0.405389, 0.150292},{0.929644, 0.411479, 0.145367},{0.932737, 0.417627, 0.140417},{0.935747, 0.423831, 0.135440},{0.938675, 0.430091, 0.130438},{0.941521, 0.436405, 0.125409},{0.944285, 0.442772, 0.120354},{0.946965, 0.449191, 0.115272},{0.949562, 0.455660, 0.110164},{0.952075, 0.462178, 0.105031},{0.954506, 0.468744, 0.099874},{0.956852, 0.475356, 0.094695},{0.959114, 0.482014, 0.089499},{0.961293, 0.488716, 0.084289},{0.963387, 0.495462, 0.079073},{0.965397, 0.502249, 0.073859},{0.967322, 0.509078, 0.068659},{0.969163, 0.515946, 0.063488},{0.970919, 0.522853, 0.058367},{0.972590, 0.529798, 0.053324},{0.974176, 0.536780, 0.048392},{0.975677, 0.543798, 0.043618},{0.977092, 0.550850, 0.039050},{0.978422, 0.557937, 0.034931},{0.979666, 0.565057, 0.031409},{0.980824, 0.572209, 0.028508},{0.981895, 0.579392, 0.026250},{0.982881, 0.586606, 0.024661},{0.983779, 0.593849, 0.023770},{0.984591, 0.601122, 0.023606},{0.985315, 0.608422, 0.024202},{0.985952, 0.615750, 0.025592},{0.986502, 0.623105, 0.027814},{0.986964, 0.630485, 0.030908},{0.987337, 0.637890, 0.034916},{0.987622, 0.645320, 0.039886},{0.987819, 0.652773, 0.045581},{0.987926, 0.660250, 0.051750},{0.987945, 0.667748, 0.058329},{0.987874, 0.675267, 0.065257},{0.987714, 0.682807, 0.072489},{0.987464, 0.690366, 0.079990},{0.987124, 0.697944, 0.087731},{0.986694, 0.705540, 0.095694},{0.986175, 0.713153, 0.103863},{0.985566, 0.720782, 0.112229},{0.984865, 0.728427, 0.120785},{0.984075, 0.736087, 0.129527},{0.983196, 0.743758, 0.138453},{0.982228, 0.751442, 0.147565},{0.981173, 0.759135, 0.156863},{0.980032, 0.766837, 0.166353},{0.978806, 0.774545, 0.176037},{0.977497, 0.782258, 0.185923},{0.976108, 0.789974, 0.196018},{0.974638, 0.797692, 0.206332},{0.973088, 0.805409, 0.216877},{0.971468, 0.813122, 0.227658},{0.969783, 0.820825, 0.238686},{0.968041, 0.828515, 0.249972},{0.966243, 0.836191, 0.261534},{0.964394, 0.843848, 0.273391},{0.962517, 0.851476, 0.285546},{0.960626, 0.859069, 0.298010},{0.958720, 0.866624, 0.310820},{0.956834, 0.874129, 0.323974},{0.954997, 0.881569, 0.337475},{0.953215, 0.888942, 0.351369},{0.951546, 0.896226, 0.365627},{0.950018, 0.903409, 0.380271},{0.948683, 0.910473, 0.395289},{0.947594, 0.917399, 0.410665},{0.946809, 0.924168, 0.426373},{0.946392, 0.930761, 0.442367},{0.946403, 0.937159, 0.458592},{0.946903, 0.943348, 0.474970},{0.947937, 0.949318, 0.491426},{0.949545, 0.955063, 0.507860},{0.951740, 0.960587, 0.524203},{0.954529, 0.965896, 0.540361},{0.957896, 0.971003, 0.556275},{0.961812, 0.975924, 0.571925},{0.966249, 0.980678, 0.587206},{0.971162, 0.985282, 0.602154},{0.976511, 0.989753, 0.616760},{0.982257, 0.994109, 0.631017},{0.988362, 0.998364, 0.644924}}}, - {"magma", {{0.001462, 0.000466, 0.013866},{0.002258, 0.001295, 0.018331},{0.003279, 0.002305, 0.023708},{0.004512, 0.003490, 0.029965},{0.005950, 0.004843, 0.037130},{0.007588, 0.006356, 0.044973},{0.009426, 0.008022, 0.052844},{0.011465, 0.009828, 0.060750},{0.013708, 0.011771, 0.068667},{0.016156, 0.013840, 0.076603},{0.018815, 0.016026, 0.084584},{0.021692, 0.018320, 0.092610},{0.024792, 0.020715, 0.100676},{0.028123, 0.023201, 0.108787},{0.031696, 0.025765, 0.116965},{0.035520, 0.028397, 0.125209},{0.039608, 0.031090, 0.133515},{0.043830, 0.033830, 0.141886},{0.048062, 0.036607, 0.150327},{0.052320, 0.039407, 0.158841},{0.056615, 0.042160, 0.167446},{0.060949, 0.044794, 0.176129},{0.065330, 0.047318, 0.184892},{0.069764, 0.049726, 0.193735},{0.074257, 0.052017, 0.202660},{0.078815, 0.054184, 0.211667},{0.083446, 0.056225, 0.220755},{0.088155, 0.058133, 0.229922},{0.092949, 0.059904, 0.239164},{0.097833, 0.061531, 0.248477},{0.102815, 0.063010, 0.257854},{0.107899, 0.064335, 0.267289},{0.113094, 0.065492, 0.276784},{0.118405, 0.066479, 0.286321},{0.123833, 0.067295, 0.295879},{0.129380, 0.067935, 0.305443},{0.135053, 0.068391, 0.315000},{0.140858, 0.068654, 0.324538},{0.146785, 0.068738, 0.334011},{0.152839, 0.068637, 0.343404},{0.159018, 0.068354, 0.352688},{0.165308, 0.067911, 0.361816},{0.171713, 0.067305, 0.370771},{0.178212, 0.066576, 0.379497},{0.184801, 0.065732, 0.387973},{0.191460, 0.064818, 0.396152},{0.198177, 0.063862, 0.404009},{0.204935, 0.062907, 0.411514},{0.211718, 0.061992, 0.418647},{0.218512, 0.061158, 0.425392},{0.225302, 0.060445, 0.431742},{0.232077, 0.059889, 0.437695},{0.238826, 0.059517, 0.443256},{0.245543, 0.059352, 0.448436},{0.252220, 0.059415, 0.453248},{0.258857, 0.059706, 0.457710},{0.265447, 0.060237, 0.461840},{0.271994, 0.060994, 0.465660},{0.278493, 0.061978, 0.469190},{0.284951, 0.063168, 0.472451},{0.291366, 0.064553, 0.475462},{0.297740, 0.066117, 0.478243},{0.304081, 0.067835, 0.480812},{0.310382, 0.069702, 0.483186},{0.316654, 0.071690, 0.485380},{0.322899, 0.073782, 0.487408},{0.329114, 0.075972, 0.489287},{0.335308, 0.078236, 0.491024},{0.341482, 0.080564, 0.492631},{0.347636, 0.082946, 0.494121},{0.353773, 0.085373, 0.495501},{0.359898, 0.087831, 0.496778},{0.366012, 0.090314, 0.497960},{0.372116, 0.092816, 0.499053},{0.378211, 0.095332, 0.500067},{0.384299, 0.097855, 0.501002},{0.390384, 0.100379, 0.501864},{0.396467, 0.102902, 0.502658},{0.402548, 0.105420, 0.503386},{0.408629, 0.107930, 0.504052},{0.414709, 0.110431, 0.504662},{0.420791, 0.112920, 0.505215},{0.426877, 0.115395, 0.505714},{0.432967, 0.117855, 0.506160},{0.439062, 0.120298, 0.506555},{0.445163, 0.122724, 0.506901},{0.451271, 0.125132, 0.507198},{0.457386, 0.127522, 0.507448},{0.463508, 0.129893, 0.507652},{0.469640, 0.132245, 0.507809},{0.475780, 0.134577, 0.507921},{0.481929, 0.136891, 0.507989},{0.488088, 0.139186, 0.508011},{0.494258, 0.141462, 0.507988},{0.500438, 0.143719, 0.507920},{0.506629, 0.145958, 0.507806},{0.512831, 0.148179, 0.507648},{0.519045, 0.150383, 0.507443},{0.525270, 0.152569, 0.507192},{0.531507, 0.154739, 0.506895},{0.537755, 0.156894, 0.506551},{0.544015, 0.159033, 0.506159},{0.550287, 0.161158, 0.505719},{0.556571, 0.163269, 0.505230},{0.562866, 0.165368, 0.504692},{0.569172, 0.167454, 0.504105},{0.575490, 0.169530, 0.503466},{0.581819, 0.171596, 0.502777},{0.588158, 0.173652, 0.502035},{0.594508, 0.175701, 0.501241},{0.600868, 0.177743, 0.500394},{0.607238, 0.179779, 0.499492},{0.613617, 0.181811, 0.498536},{0.620005, 0.183840, 0.497524},{0.626401, 0.185867, 0.496456},{0.632805, 0.187893, 0.495332},{0.639216, 0.189921, 0.494150},{0.645633, 0.191952, 0.492910},{0.652056, 0.193986, 0.491611},{0.658483, 0.196027, 0.490253},{0.664915, 0.198075, 0.488836},{0.671349, 0.200133, 0.487358},{0.677786, 0.202203, 0.485819},{0.684224, 0.204286, 0.484219},{0.690661, 0.206384, 0.482558},{0.697098, 0.208501, 0.480835},{0.703532, 0.210638, 0.479049},{0.709962, 0.212797, 0.477201},{0.716387, 0.214982, 0.475290},{0.722805, 0.217194, 0.473316},{0.729216, 0.219437, 0.471279},{0.735616, 0.221713, 0.469180},{0.742004, 0.224025, 0.467018},{0.748378, 0.226377, 0.464794},{0.754737, 0.228772, 0.462509},{0.761077, 0.231214, 0.460162},{0.767398, 0.233705, 0.457755},{0.773695, 0.236249, 0.455289},{0.779968, 0.238851, 0.452765},{0.786212, 0.241514, 0.450184},{0.792427, 0.244242, 0.447543},{0.798608, 0.247040, 0.444848},{0.804752, 0.249911, 0.442102},{0.810855, 0.252861, 0.439305},{0.816914, 0.255895, 0.436461},{0.822926, 0.259016, 0.433573},{0.828886, 0.262229, 0.430644},{0.834791, 0.265540, 0.427671},{0.840636, 0.268953, 0.424666},{0.846416, 0.272473, 0.421631},{0.852126, 0.276106, 0.418573},{0.857763, 0.279857, 0.415496},{0.863320, 0.283729, 0.412403},{0.868793, 0.287728, 0.409303},{0.874176, 0.291859, 0.406205},{0.879464, 0.296125, 0.403118},{0.884651, 0.300530, 0.400047},{0.889731, 0.305079, 0.397002},{0.894700, 0.309773, 0.393995},{0.899552, 0.314616, 0.391037},{0.904281, 0.319610, 0.388137},{0.908884, 0.324755, 0.385308},{0.913354, 0.330052, 0.382563},{0.917689, 0.335500, 0.379915},{0.921884, 0.341098, 0.377376},{0.925937, 0.346844, 0.374959},{0.929845, 0.352734, 0.372677},{0.933606, 0.358764, 0.370541},{0.937221, 0.364929, 0.368567},{0.940687, 0.371224, 0.366762},{0.944006, 0.377643, 0.365136},{0.947180, 0.384178, 0.363701},{0.950210, 0.390820, 0.362468},{0.953099, 0.397563, 0.361438},{0.955849, 0.404400, 0.360619},{0.958464, 0.411324, 0.360014},{0.960949, 0.418323, 0.359630},{0.963310, 0.425390, 0.359469},{0.965549, 0.432519, 0.359529},{0.967671, 0.439703, 0.359810},{0.969680, 0.446936, 0.360311},{0.971582, 0.454210, 0.361030},{0.973381, 0.461520, 0.361965},{0.975082, 0.468861, 0.363111},{0.976690, 0.476226, 0.364466},{0.978210, 0.483612, 0.366025},{0.979645, 0.491014, 0.367783},{0.981000, 0.498428, 0.369734},{0.982279, 0.505851, 0.371874},{0.983485, 0.513280, 0.374198},{0.984622, 0.520713, 0.376698},{0.985693, 0.528148, 0.379371},{0.986700, 0.535582, 0.382210},{0.987646, 0.543015, 0.385210},{0.988533, 0.550446, 0.388365},{0.989363, 0.557873, 0.391671},{0.990138, 0.565296, 0.395122},{0.990871, 0.572706, 0.398714},{0.991558, 0.580107, 0.402441},{0.992196, 0.587502, 0.406299},{0.992785, 0.594891, 0.410283},{0.993326, 0.602275, 0.414390},{0.993834, 0.609644, 0.418613},{0.994309, 0.616999, 0.422950},{0.994738, 0.624350, 0.427397},{0.995122, 0.631696, 0.431951},{0.995480, 0.639027, 0.436607},{0.995810, 0.646344, 0.441361},{0.996096, 0.653659, 0.446213},{0.996341, 0.660969, 0.451160},{0.996580, 0.668256, 0.456192},{0.996775, 0.675541, 0.461314},{0.996925, 0.682828, 0.466526},{0.997077, 0.690088, 0.471811},{0.997186, 0.697349, 0.477182},{0.997254, 0.704611, 0.482635},{0.997325, 0.711848, 0.488154},{0.997351, 0.719089, 0.493755},{0.997351, 0.726324, 0.499428},{0.997341, 0.733545, 0.505167},{0.997285, 0.740772, 0.510983},{0.997228, 0.747981, 0.516859},{0.997138, 0.755190, 0.522806},{0.997019, 0.762398, 0.528821},{0.996898, 0.769591, 0.534892},{0.996727, 0.776795, 0.541039},{0.996571, 0.783977, 0.547233},{0.996369, 0.791167, 0.553499},{0.996162, 0.798348, 0.559820},{0.995932, 0.805527, 0.566202},{0.995680, 0.812706, 0.572645},{0.995424, 0.819875, 0.579140},{0.995131, 0.827052, 0.585701},{0.994851, 0.834213, 0.592307},{0.994524, 0.841387, 0.598983},{0.994222, 0.848540, 0.605696},{0.993866, 0.855711, 0.612482},{0.993545, 0.862859, 0.619299},{0.993170, 0.870024, 0.626189},{0.992831, 0.877168, 0.633109},{0.992440, 0.884330, 0.640099},{0.992089, 0.891470, 0.647116},{0.991688, 0.898627, 0.654202},{0.991332, 0.905763, 0.661309},{0.990930, 0.912915, 0.668481},{0.990570, 0.920049, 0.675675},{0.990175, 0.927196, 0.682926},{0.989815, 0.934329, 0.690198},{0.989434, 0.941470, 0.697519},{0.989077, 0.948604, 0.704863},{0.988717, 0.955742, 0.712242},{0.988367, 0.962878, 0.719649},{0.988033, 0.970012, 0.727077},{0.987691, 0.977154, 0.734536},{0.987387, 0.984288, 0.742002},{0.987053, 0.991438, 0.749504}}}, - {"cividis", {{0.000000, 0.135112, 0.304751},{0.000000, 0.138068, 0.311105},{0.000000, 0.141013, 0.317579},{0.000000, 0.143951, 0.323982},{0.000000, 0.146877, 0.330479},{0.000000, 0.149791, 0.337065},{0.000000, 0.152673, 0.343704},{0.000000, 0.155377, 0.350500},{0.000000, 0.157932, 0.357521},{0.000000, 0.160495, 0.364534},{0.000000, 0.163058, 0.371608},{0.000000, 0.165621, 0.378769},{0.000000, 0.168204, 0.385902},{0.000000, 0.170800, 0.393100},{0.000000, 0.173420, 0.400353},{0.000000, 0.176082, 0.407577},{0.000000, 0.178802, 0.414764},{0.000000, 0.181610, 0.421859},{0.000000, 0.184550, 0.428802},{0.000000, 0.186915, 0.435532},{0.000000, 0.188769, 0.439563},{0.000000, 0.190950, 0.441085},{0.000000, 0.193366, 0.441561},{0.003602, 0.195911, 0.441564},{0.017852, 0.198528, 0.441248},{0.032110, 0.201199, 0.440785},{0.046205, 0.203903, 0.440196},{0.058378, 0.206629, 0.439531},{0.068968, 0.209372, 0.438863},{0.078624, 0.212122, 0.438105},{0.087465, 0.214879, 0.437342},{0.095645, 0.217643, 0.436593},{0.103401, 0.220406, 0.435790},{0.110658, 0.223170, 0.435067},{0.117612, 0.225935, 0.434308},{0.124291, 0.228697, 0.433547},{0.130669, 0.231458, 0.432840},{0.136830, 0.234216, 0.432148},{0.142852, 0.236972, 0.431404},{0.148638, 0.239724, 0.430752},{0.154261, 0.242475, 0.430120},{0.159733, 0.245221, 0.429528},{0.165113, 0.247965, 0.428908},{0.170362, 0.250707, 0.428325},{0.175490, 0.253444, 0.427790},{0.180503, 0.256180, 0.427299},{0.185453, 0.258914, 0.426788},{0.190303, 0.261644, 0.426329},{0.195057, 0.264372, 0.425924},{0.199764, 0.267099, 0.425497},{0.204385, 0.269823, 0.425126},{0.208926, 0.272546, 0.424809},{0.213431, 0.275266, 0.424480},{0.217863, 0.277985, 0.424206},{0.222264, 0.280702, 0.423914},{0.226598, 0.283419, 0.423678},{0.230871, 0.286134, 0.423498},{0.235120, 0.288848, 0.423304},{0.239312, 0.291562, 0.423167},{0.243485, 0.294274, 0.423014},{0.247605, 0.296986, 0.422917},{0.251675, 0.299698, 0.422873},{0.255731, 0.302409, 0.422814},{0.259740, 0.305120, 0.422810},{0.263738, 0.307831, 0.422789},{0.267693, 0.310542, 0.422821},{0.271639, 0.313253, 0.422837},{0.275513, 0.315965, 0.422979},{0.279411, 0.318677, 0.423031},{0.283240, 0.321390, 0.423211},{0.287065, 0.324103, 0.423373},{0.290884, 0.326816, 0.423517},{0.294669, 0.329531, 0.423716},{0.298421, 0.332247, 0.423973},{0.302169, 0.334963, 0.424213},{0.305886, 0.337681, 0.424512},{0.309601, 0.340399, 0.424790},{0.313287, 0.343120, 0.425120},{0.316941, 0.345842, 0.425512},{0.320595, 0.348565, 0.425889},{0.324250, 0.351289, 0.426250},{0.327875, 0.354016, 0.426670},{0.331474, 0.356744, 0.427144},{0.335073, 0.359474, 0.427605},{0.338673, 0.362206, 0.428053},{0.342246, 0.364939, 0.428559},{0.345793, 0.367676, 0.429127},{0.349341, 0.370414, 0.429685},{0.352892, 0.373153, 0.430226},{0.356418, 0.375896, 0.430823},{0.359916, 0.378641, 0.431501},{0.363446, 0.381388, 0.432075},{0.366923, 0.384139, 0.432796},{0.370430, 0.386890, 0.433428},{0.373884, 0.389646, 0.434209},{0.377371, 0.392404, 0.434890},{0.380830, 0.395164, 0.435653},{0.384268, 0.397928, 0.436475},{0.387705, 0.400694, 0.437305},{0.391151, 0.403464, 0.438096},{0.394568, 0.406236, 0.438986},{0.397991, 0.409011, 0.439848},{0.401418, 0.411790, 0.440708},{0.404820, 0.414572, 0.441642},{0.408226, 0.417357, 0.442570},{0.411607, 0.420145, 0.443577},{0.414992, 0.422937, 0.444578},{0.418383, 0.425733, 0.445560},{0.421748, 0.428531, 0.446640},{0.425120, 0.431334, 0.447692},{0.428462, 0.434140, 0.448864},{0.431817, 0.436950, 0.449982},{0.435168, 0.439763, 0.451134},{0.438504, 0.442580, 0.452341},{0.441810, 0.445402, 0.453659},{0.445148, 0.448226, 0.454885},{0.448447, 0.451053, 0.456264},{0.451759, 0.453887, 0.457582},{0.455072, 0.456718, 0.458976},{0.458366, 0.459552, 0.460457},{0.461616, 0.462405, 0.461969},{0.464947, 0.465241, 0.463395},{0.468254, 0.468083, 0.464908},{0.471501, 0.470960, 0.466357},{0.474812, 0.473832, 0.467681},{0.478186, 0.476699, 0.468845},{0.481622, 0.479573, 0.469767},{0.485141, 0.482451, 0.470384},{0.488697, 0.485318, 0.471008},{0.492278, 0.488198, 0.471453},{0.495913, 0.491076, 0.471751},{0.499552, 0.493960, 0.472032},{0.503185, 0.496851, 0.472305},{0.506866, 0.499743, 0.472432},{0.510540, 0.502643, 0.472550},{0.514226, 0.505546, 0.472640},{0.517920, 0.508454, 0.472707},{0.521643, 0.511367, 0.472639},{0.525348, 0.514285, 0.472660},{0.529086, 0.517207, 0.472543},{0.532829, 0.520135, 0.472401},{0.536553, 0.523067, 0.472352},{0.540307, 0.526005, 0.472163},{0.544069, 0.528948, 0.471947},{0.547840, 0.531895, 0.471704},{0.551612, 0.534849, 0.471439},{0.555393, 0.537807, 0.471147},{0.559181, 0.540771, 0.470829},{0.562972, 0.543741, 0.470488},{0.566802, 0.546715, 0.469988},{0.570607, 0.549695, 0.469593},{0.574417, 0.552682, 0.469172},{0.578236, 0.555673, 0.468724},{0.582087, 0.558670, 0.468118},{0.585916, 0.561674, 0.467618},{0.589753, 0.564682, 0.467090},{0.593622, 0.567697, 0.466401},{0.597469, 0.570718, 0.465821},{0.601354, 0.573743, 0.465074},{0.605211, 0.576777, 0.464441},{0.609105, 0.579816, 0.463638},{0.612977, 0.582861, 0.462950},{0.616852, 0.585913, 0.462237},{0.620765, 0.588970, 0.461351},{0.624654, 0.592034, 0.460583},{0.628576, 0.595104, 0.459641},{0.632506, 0.598180, 0.458668},{0.636412, 0.601264, 0.457818},{0.640352, 0.604354, 0.456791},{0.644270, 0.607450, 0.455886},{0.648222, 0.610553, 0.454801},{0.652178, 0.613664, 0.453689},{0.656114, 0.616780, 0.452702},{0.660082, 0.619904, 0.451534},{0.664055, 0.623034, 0.450338},{0.668008, 0.626171, 0.449270},{0.671991, 0.629316, 0.448018},{0.675981, 0.632468, 0.446736},{0.679979, 0.635626, 0.445424},{0.683950, 0.638793, 0.444251},{0.687957, 0.641966, 0.442886},{0.691971, 0.645145, 0.441491},{0.695985, 0.648334, 0.440072},{0.700008, 0.651529, 0.438624},{0.704037, 0.654731, 0.437147},{0.708067, 0.657942, 0.435647},{0.712105, 0.661160, 0.434117},{0.716177, 0.664384, 0.432386},{0.720222, 0.667618, 0.430805},{0.724274, 0.670859, 0.429194},{0.728334, 0.674107, 0.427554},{0.732422, 0.677364, 0.425717},{0.736488, 0.680629, 0.424028},{0.740589, 0.683900, 0.422131},{0.744664, 0.687181, 0.420393},{0.748772, 0.690470, 0.418448},{0.752886, 0.693766, 0.416472},{0.756975, 0.697071, 0.414659},{0.761096, 0.700384, 0.412638},{0.765223, 0.703705, 0.410587},{0.769353, 0.707035, 0.408516},{0.773486, 0.710373, 0.406422},{0.777651, 0.713719, 0.404112},{0.781795, 0.717074, 0.401966},{0.785965, 0.720438, 0.399613},{0.790116, 0.723810, 0.397423},{0.794298, 0.727190, 0.395016},{0.798480, 0.730580, 0.392597},{0.802667, 0.733978, 0.390153},{0.806859, 0.737385, 0.387684},{0.811054, 0.740801, 0.385198},{0.815274, 0.744226, 0.382504},{0.819499, 0.747659, 0.379785},{0.823729, 0.751101, 0.377043},{0.827959, 0.754553, 0.374292},{0.832192, 0.758014, 0.371529},{0.836429, 0.761483, 0.368747},{0.840693, 0.764962, 0.365746},{0.844957, 0.768450, 0.362741},{0.849223, 0.771947, 0.359729},{0.853515, 0.775454, 0.356500},{0.857809, 0.778969, 0.353259},{0.862105, 0.782494, 0.350011},{0.866421, 0.786028, 0.346571},{0.870717, 0.789572, 0.343333},{0.875057, 0.793125, 0.339685},{0.879378, 0.796687, 0.336241},{0.883720, 0.800258, 0.332599},{0.888081, 0.803839, 0.328770},{0.892440, 0.807430, 0.324968},{0.896818, 0.811030, 0.320982},{0.901195, 0.814639, 0.317021},{0.905589, 0.818257, 0.312889},{0.910000, 0.821885, 0.308594},{0.914407, 0.825522, 0.304348},{0.918828, 0.829168, 0.299960},{0.923279, 0.832822, 0.295244},{0.927724, 0.836486, 0.290611},{0.932180, 0.840159, 0.285880},{0.936660, 0.843841, 0.280876},{0.941147, 0.847530, 0.275815},{0.945654, 0.851228, 0.270532},{0.950178, 0.854933, 0.265085},{0.954725, 0.858646, 0.259365},{0.959284, 0.862365, 0.253563},{0.963872, 0.866089, 0.247445},{0.968469, 0.869819, 0.241310},{0.973114, 0.873550, 0.234677},{0.977780, 0.877281, 0.227954},{0.982497, 0.881008, 0.220878},{0.987293, 0.884718, 0.213336},{0.992218, 0.888385, 0.205468},{0.994847, 0.892954, 0.203445},{0.995249, 0.898384, 0.207561},{0.995503, 0.903866, 0.212370},{0.995737, 0.909344, 0.217772}}}, - {"gnuplot", {{0.000000, 0.000000, 0.000000},{0.062622, 0.000000, 0.024637},{0.088561, 0.000000, 0.049260},{0.108465, 0.000002, 0.073853},{0.125245, 0.000004, 0.098400},{0.140028, 0.000008, 0.122888},{0.153393, 0.000013, 0.147302},{0.165683, 0.000021, 0.171626},{0.177123, 0.000031, 0.195845},{0.187867, 0.000044, 0.219946},{0.198030, 0.000060, 0.243914},{0.207695, 0.000080, 0.267733},{0.216930, 0.000104, 0.291390},{0.225788, 0.000132, 0.314870},{0.234312, 0.000165, 0.338158},{0.242536, 0.000204, 0.361242},{0.250490, 0.000247, 0.384106},{0.258199, 0.000296, 0.406737},{0.265684, 0.000352, 0.429121},{0.272965, 0.000414, 0.451244},{0.280056, 0.000482, 0.473094},{0.286972, 0.000559, 0.494656},{0.293725, 0.000642, 0.515918},{0.300327, 0.000734, 0.536867},{0.306786, 0.000834, 0.557489},{0.313112, 0.000942, 0.577774},{0.319313, 0.001060, 0.597707},{0.325396, 0.001187, 0.617278},{0.331367, 0.001324, 0.636474},{0.337232, 0.001471, 0.655284},{0.342997, 0.001628, 0.673696},{0.348667, 0.001797, 0.691698},{0.354246, 0.001976, 0.709281},{0.359738, 0.002167, 0.726434},{0.365148, 0.002370, 0.743145},{0.370479, 0.002586, 0.759405},{0.375735, 0.002814, 0.775204},{0.380917, 0.003055, 0.790532},{0.386031, 0.003309, 0.805381},{0.391077, 0.003577, 0.819740},{0.396059, 0.003860, 0.833602},{0.400979, 0.004157, 0.846958},{0.405840, 0.004468, 0.859800},{0.410643, 0.004795, 0.872120},{0.415390, 0.005137, 0.883910},{0.420084, 0.005496, 0.895163},{0.424726, 0.005870, 0.905873},{0.429318, 0.006261, 0.916034},{0.433861, 0.006670, 0.925638},{0.438357, 0.007095, 0.934680},{0.442807, 0.007539, 0.943154},{0.447214, 0.008000, 0.951057},{0.451577, 0.008480, 0.958381},{0.455898, 0.008979, 0.965124},{0.460179, 0.009496, 0.971281},{0.464420, 0.010034, 0.976848},{0.468623, 0.010591, 0.981823},{0.472789, 0.011169, 0.986201},{0.476918, 0.011767, 0.989980},{0.481012, 0.012386, 0.993159},{0.485071, 0.013027, 0.995734},{0.489097, 0.013689, 0.997705},{0.493089, 0.014373, 0.999070},{0.497050, 0.015080, 0.999829},{0.500979, 0.015810, 0.999981},{0.504878, 0.016562, 0.999526},{0.508747, 0.017338, 0.998464},{0.512587, 0.018139, 0.996795},{0.516398, 0.018963, 0.994522},{0.520181, 0.019812, 0.991645},{0.523937, 0.020686, 0.988165},{0.527666, 0.021585, 0.984086},{0.531369, 0.022510, 0.979410},{0.535046, 0.023461, 0.974139},{0.538699, 0.024439, 0.968276},{0.542326, 0.025443, 0.961826},{0.545930, 0.026474, 0.954791},{0.549510, 0.027533, 0.947177},{0.553066, 0.028620, 0.938988},{0.556600, 0.029735, 0.930229},{0.560112, 0.030878, 0.920906},{0.563602, 0.032050, 0.911023},{0.567070, 0.033252, 0.900587},{0.570517, 0.034484, 0.889604},{0.573944, 0.035745, 0.878081},{0.577350, 0.037037, 0.866025},{0.580737, 0.038360, 0.853444},{0.584103, 0.039713, 0.840344},{0.587450, 0.041099, 0.826734},{0.590779, 0.042516, 0.812622},{0.594089, 0.043965, 0.798017},{0.597380, 0.045447, 0.782928},{0.600653, 0.046962, 0.767363},{0.603909, 0.048510, 0.751332},{0.607147, 0.050091, 0.734845},{0.610368, 0.051707, 0.717912},{0.613572, 0.053357, 0.700543},{0.616759, 0.055042, 0.682749},{0.619930, 0.056762, 0.664540},{0.623085, 0.058517, 0.645928},{0.626224, 0.060309, 0.626924},{0.629348, 0.062136, 0.607539},{0.632456, 0.064000, 0.587785},{0.635548, 0.065901, 0.567675},{0.638626, 0.067839, 0.547220},{0.641689, 0.069815, 0.526432},{0.644737, 0.071829, 0.505325},{0.647771, 0.073881, 0.483911},{0.650791, 0.075972, 0.462204},{0.653797, 0.078101, 0.440216},{0.656790, 0.080271, 0.417960},{0.659768, 0.082480, 0.395451},{0.662733, 0.084729, 0.372702},{0.665686, 0.087019, 0.349727},{0.668625, 0.089350, 0.326539},{0.671551, 0.091722, 0.303153},{0.674464, 0.094135, 0.279583},{0.677365, 0.096591, 0.255843},{0.680254, 0.099089, 0.231948},{0.683130, 0.101630, 0.207912},{0.685994, 0.104213, 0.183750},{0.688847, 0.106840, 0.159476},{0.691687, 0.109511, 0.135105},{0.694516, 0.112226, 0.110653},{0.697334, 0.114986, 0.086133},{0.700140, 0.117790, 0.061561},{0.702935, 0.120640, 0.036951},{0.705719, 0.123535, 0.012320},{0.708492, 0.126476, 0.000000},{0.711254, 0.129464, 0.000000},{0.714006, 0.132498, 0.000000},{0.716746, 0.135579, 0.000000},{0.719477, 0.138708, 0.000000},{0.722197, 0.141884, 0.000000},{0.724907, 0.145109, 0.000000},{0.727607, 0.148382, 0.000000},{0.730297, 0.151704, 0.000000},{0.732977, 0.155075, 0.000000},{0.735647, 0.158495, 0.000000},{0.738308, 0.161966, 0.000000},{0.740959, 0.165487, 0.000000},{0.743600, 0.169058, 0.000000},{0.746232, 0.172681, 0.000000},{0.748855, 0.176355, 0.000000},{0.751469, 0.180081, 0.000000},{0.754074, 0.183858, 0.000000},{0.756670, 0.187689, 0.000000},{0.759257, 0.191572, 0.000000},{0.761835, 0.195508, 0.000000},{0.764404, 0.199498, 0.000000},{0.766965, 0.203542, 0.000000},{0.769517, 0.207640, 0.000000},{0.772061, 0.211792, 0.000000},{0.774597, 0.216000, 0.000000},{0.777124, 0.220263, 0.000000},{0.779643, 0.224582, 0.000000},{0.782154, 0.228957, 0.000000},{0.784657, 0.233388, 0.000000},{0.787152, 0.237876, 0.000000},{0.789639, 0.242421, 0.000000},{0.792118, 0.247024, 0.000000},{0.794590, 0.251685, 0.000000},{0.797053, 0.256404, 0.000000},{0.799510, 0.261181, 0.000000},{0.801958, 0.266018, 0.000000},{0.804400, 0.270914, 0.000000},{0.806834, 0.275870, 0.000000},{0.809260, 0.280885, 0.000000},{0.811679, 0.285961, 0.000000},{0.814092, 0.291098, 0.000000},{0.816497, 0.296296, 0.000000},{0.818895, 0.301556, 0.000000},{0.821285, 0.306877, 0.000000},{0.823669, 0.312261, 0.000000},{0.826047, 0.317707, 0.000000},{0.828417, 0.323217, 0.000000},{0.830780, 0.328789, 0.000000},{0.833137, 0.334425, 0.000000},{0.835487, 0.340126, 0.000000},{0.837831, 0.345890, 0.000000},{0.840168, 0.351720, 0.000000},{0.842499, 0.357615, 0.000000},{0.844823, 0.363575, 0.000000},{0.847141, 0.369601, 0.000000},{0.849452, 0.375693, 0.000000},{0.851757, 0.381852, 0.000000},{0.854056, 0.388077, 0.000000},{0.856349, 0.394370, 0.000000},{0.858635, 0.400731, 0.000000},{0.860916, 0.407160, 0.000000},{0.863191, 0.413657, 0.000000},{0.865459, 0.420223, 0.000000},{0.867722, 0.426858, 0.000000},{0.869979, 0.433562, 0.000000},{0.872230, 0.440336, 0.000000},{0.874475, 0.447181, 0.000000},{0.876714, 0.454096, 0.000000},{0.878948, 0.461082, 0.000000},{0.881176, 0.468139, 0.000000},{0.883398, 0.475268, 0.000000},{0.885615, 0.482469, 0.000000},{0.887826, 0.489742, 0.000000},{0.890032, 0.497088, 0.000000},{0.892232, 0.504507, 0.000000},{0.894427, 0.512000, 0.000000},{0.896617, 0.519566, 0.000000},{0.898801, 0.527207, 0.000000},{0.900980, 0.534922, 0.000000},{0.903154, 0.542712, 0.000000},{0.905322, 0.550577, 0.000000},{0.907485, 0.558518, 0.000000},{0.909643, 0.566535, 0.000000},{0.911796, 0.574628, 0.000000},{0.913944, 0.582798, 0.000000},{0.916087, 0.591045, 0.000000},{0.918225, 0.599370, 0.000000},{0.920358, 0.607772, 0.000000},{0.922486, 0.616252, 0.000000},{0.924609, 0.624811, 0.000000},{0.926727, 0.633449, 0.000000},{0.928841, 0.642166, 0.000000},{0.930949, 0.650963, 0.000000},{0.933053, 0.659840, 0.000000},{0.935152, 0.668797, 0.000000},{0.937247, 0.677834, 0.000000},{0.939336, 0.686953, 0.000000},{0.941422, 0.696153, 0.000000},{0.943502, 0.705435, 0.000000},{0.945578, 0.714799, 0.000000},{0.947649, 0.724246, 0.000000},{0.949716, 0.733775, 0.000000},{0.951779, 0.743388, 0.000000},{0.953836, 0.753084, 0.000000},{0.955890, 0.762864, 0.000000},{0.957939, 0.772729, 0.000000},{0.959984, 0.782678, 0.000000},{0.962024, 0.792712, 0.000000},{0.964060, 0.802832, 0.000000},{0.966092, 0.813037, 0.000000},{0.968119, 0.823329, 0.000000},{0.970143, 0.833706, 0.000000},{0.972162, 0.844171, 0.000000},{0.974176, 0.854723, 0.000000},{0.976187, 0.865363, 0.000000},{0.978194, 0.876090, 0.000000},{0.980196, 0.886906, 0.000000},{0.982194, 0.897811, 0.000000},{0.984189, 0.908804, 0.000000},{0.986179, 0.919887, 0.000000},{0.988165, 0.931060, 0.000000},{0.990148, 0.942322, 0.000000},{0.992126, 0.953675, 0.000000},{0.994100, 0.965119, 0.000000},{0.996071, 0.976655, 0.000000},{0.998037, 0.988281, 0.000000},{1.000000, 1.000000, 0.000000}}}, - {"gnuplot2", {{0.000000, 0.000000, 0.000000},{0.000000, 0.000000, 0.015686},{0.000000, 0.000000, 0.031373},{0.000000, 0.000000, 0.047059},{0.000000, 0.000000, 0.062745},{0.000000, 0.000000, 0.078431},{0.000000, 0.000000, 0.094118},{0.000000, 0.000000, 0.109804},{0.000000, 0.000000, 0.125490},{0.000000, 0.000000, 0.141176},{0.000000, 0.000000, 0.156863},{0.000000, 0.000000, 0.172549},{0.000000, 0.000000, 0.188235},{0.000000, 0.000000, 0.203922},{0.000000, 0.000000, 0.219608},{0.000000, 0.000000, 0.235294},{0.000000, 0.000000, 0.250980},{0.000000, 0.000000, 0.266667},{0.000000, 0.000000, 0.282353},{0.000000, 0.000000, 0.298039},{0.000000, 0.000000, 0.313725},{0.000000, 0.000000, 0.329412},{0.000000, 0.000000, 0.345098},{0.000000, 0.000000, 0.360784},{0.000000, 0.000000, 0.376471},{0.000000, 0.000000, 0.392157},{0.000000, 0.000000, 0.407843},{0.000000, 0.000000, 0.423529},{0.000000, 0.000000, 0.439216},{0.000000, 0.000000, 0.454902},{0.000000, 0.000000, 0.470588},{0.000000, 0.000000, 0.486275},{0.000000, 0.000000, 0.501961},{0.000000, 0.000000, 0.517647},{0.000000, 0.000000, 0.533333},{0.000000, 0.000000, 0.549020},{0.000000, 0.000000, 0.564706},{0.000000, 0.000000, 0.580392},{0.000000, 0.000000, 0.596078},{0.000000, 0.000000, 0.611765},{0.000000, 0.000000, 0.627451},{0.000000, 0.000000, 0.643137},{0.000000, 0.000000, 0.658824},{0.000000, 0.000000, 0.674510},{0.000000, 0.000000, 0.690196},{0.000000, 0.000000, 0.705882},{0.000000, 0.000000, 0.721569},{0.000000, 0.000000, 0.737255},{0.000000, 0.000000, 0.752941},{0.000000, 0.000000, 0.768627},{0.000000, 0.000000, 0.784314},{0.000000, 0.000000, 0.800000},{0.000000, 0.000000, 0.815686},{0.000000, 0.000000, 0.831373},{0.000000, 0.000000, 0.847059},{0.000000, 0.000000, 0.862745},{0.000000, 0.000000, 0.878431},{0.000000, 0.000000, 0.894118},{0.000000, 0.000000, 0.909804},{0.000000, 0.000000, 0.925490},{0.000000, 0.000000, 0.941176},{0.000000, 0.000000, 0.956863},{0.000000, 0.000000, 0.972549},{0.000000, 0.000000, 0.988235},{0.003064, 0.000000, 1.000000},{0.015319, 0.000000, 1.000000},{0.027574, 0.000000, 1.000000},{0.039828, 0.000000, 1.000000},{0.052083, 0.000000, 1.000000},{0.064338, 0.000000, 1.000000},{0.076593, 0.000000, 1.000000},{0.088848, 0.000000, 1.000000},{0.101103, 0.000000, 1.000000},{0.113358, 0.000000, 1.000000},{0.125613, 0.000000, 1.000000},{0.137868, 0.000000, 1.000000},{0.150123, 0.000000, 1.000000},{0.162377, 0.000000, 1.000000},{0.174632, 0.000000, 1.000000},{0.186887, 0.000000, 1.000000},{0.199142, 0.000000, 1.000000},{0.211397, 0.000000, 1.000000},{0.223652, 0.000000, 1.000000},{0.235907, 0.000000, 1.000000},{0.248162, 0.000000, 1.000000},{0.260417, 0.000000, 1.000000},{0.272672, 0.000000, 1.000000},{0.284926, 0.000000, 1.000000},{0.297181, 0.000000, 1.000000},{0.309436, 0.000000, 1.000000},{0.321691, 0.000000, 1.000000},{0.333946, 0.000000, 1.000000},{0.346201, 0.000000, 1.000000},{0.358456, 0.000000, 1.000000},{0.370711, 0.000000, 1.000000},{0.382966, 0.000000, 1.000000},{0.395221, 0.000000, 1.000000},{0.407475, 0.000000, 1.000000},{0.419730, 0.000000, 1.000000},{0.431985, 0.000000, 1.000000},{0.444240, 0.000000, 1.000000},{0.456495, 0.000000, 1.000000},{0.468750, 0.000000, 1.000000},{0.481005, 0.000000, 1.000000},{0.493260, 0.000000, 1.000000},{0.505515, 0.000000, 1.000000},{0.517770, 0.000000, 1.000000},{0.530025, 0.000000, 1.000000},{0.542279, 0.007059, 0.992941},{0.554534, 0.014902, 0.985098},{0.566789, 0.022745, 0.977255},{0.579044, 0.030588, 0.969412},{0.591299, 0.038431, 0.961569},{0.603554, 0.046275, 0.953725},{0.615809, 0.054118, 0.945882},{0.628064, 0.061961, 0.938039},{0.640319, 0.069804, 0.930196},{0.652574, 0.077647, 0.922353},{0.664828, 0.085490, 0.914510},{0.677083, 0.093333, 0.906667},{0.689338, 0.101176, 0.898824},{0.701593, 0.109020, 0.890980},{0.713848, 0.116863, 0.883137},{0.726103, 0.124706, 0.875294},{0.738358, 0.132549, 0.867451},{0.750613, 0.140392, 0.859608},{0.762868, 0.148235, 0.851765},{0.775123, 0.156078, 0.843922},{0.787377, 0.163922, 0.836078},{0.799632, 0.171765, 0.828235},{0.811887, 0.179608, 0.820392},{0.824142, 0.187451, 0.812549},{0.836397, 0.195294, 0.804706},{0.848652, 0.203137, 0.796863},{0.860907, 0.210980, 0.789020},{0.873162, 0.218824, 0.781176},{0.885417, 0.226667, 0.773333},{0.897672, 0.234510, 0.765490},{0.909926, 0.242353, 0.757647},{0.922181, 0.250196, 0.749804},{0.934436, 0.258039, 0.741961},{0.946691, 0.265882, 0.734118},{0.958946, 0.273725, 0.726275},{0.971201, 0.281569, 0.718431},{0.983456, 0.289412, 0.710588},{0.995711, 0.297255, 0.702745},{1.000000, 0.305098, 0.694902},{1.000000, 0.312941, 0.687059},{1.000000, 0.320784, 0.679216},{1.000000, 0.328627, 0.671373},{1.000000, 0.336471, 0.663529},{1.000000, 0.344314, 0.655686},{1.000000, 0.352157, 0.647843},{1.000000, 0.360000, 0.640000},{1.000000, 0.367843, 0.632157},{1.000000, 0.375686, 0.624314},{1.000000, 0.383529, 0.616471},{1.000000, 0.391373, 0.608627},{1.000000, 0.399216, 0.600784},{1.000000, 0.407059, 0.592941},{1.000000, 0.414902, 0.585098},{1.000000, 0.422745, 0.577255},{1.000000, 0.430588, 0.569412},{1.000000, 0.438431, 0.561569},{1.000000, 0.446275, 0.553725},{1.000000, 0.454118, 0.545882},{1.000000, 0.461961, 0.538039},{1.000000, 0.469804, 0.530196},{1.000000, 0.477647, 0.522353},{1.000000, 0.485490, 0.514510},{1.000000, 0.493333, 0.506667},{1.000000, 0.501176, 0.498824},{1.000000, 0.509020, 0.490980},{1.000000, 0.516863, 0.483137},{1.000000, 0.524706, 0.475294},{1.000000, 0.532549, 0.467451},{1.000000, 0.540392, 0.459608},{1.000000, 0.548235, 0.451765},{1.000000, 0.556078, 0.443922},{1.000000, 0.563922, 0.436078},{1.000000, 0.571765, 0.428235},{1.000000, 0.579608, 0.420392},{1.000000, 0.587451, 0.412549},{1.000000, 0.595294, 0.404706},{1.000000, 0.603137, 0.396863},{1.000000, 0.610980, 0.389020},{1.000000, 0.618824, 0.381176},{1.000000, 0.626667, 0.373333},{1.000000, 0.634510, 0.365490},{1.000000, 0.642353, 0.357647},{1.000000, 0.650196, 0.349804},{1.000000, 0.658039, 0.341961},{1.000000, 0.665882, 0.334118},{1.000000, 0.673725, 0.326275},{1.000000, 0.681569, 0.318431},{1.000000, 0.689412, 0.310588},{1.000000, 0.697255, 0.302745},{1.000000, 0.705098, 0.294902},{1.000000, 0.712941, 0.287059},{1.000000, 0.720784, 0.279216},{1.000000, 0.728627, 0.271373},{1.000000, 0.736471, 0.263529},{1.000000, 0.744314, 0.255686},{1.000000, 0.752157, 0.247843},{1.000000, 0.760000, 0.240000},{1.000000, 0.767843, 0.232157},{1.000000, 0.775686, 0.224314},{1.000000, 0.783529, 0.216471},{1.000000, 0.791373, 0.208627},{1.000000, 0.799216, 0.200784},{1.000000, 0.807059, 0.192941},{1.000000, 0.814902, 0.185098},{1.000000, 0.822745, 0.177255},{1.000000, 0.830588, 0.169412},{1.000000, 0.838431, 0.161569},{1.000000, 0.846275, 0.153725},{1.000000, 0.854118, 0.145882},{1.000000, 0.861961, 0.138039},{1.000000, 0.869804, 0.130196},{1.000000, 0.877647, 0.122353},{1.000000, 0.885490, 0.114510},{1.000000, 0.893333, 0.106667},{1.000000, 0.901176, 0.098824},{1.000000, 0.909020, 0.090980},{1.000000, 0.916863, 0.083137},{1.000000, 0.924706, 0.075294},{1.000000, 0.932549, 0.067451},{1.000000, 0.940392, 0.059608},{1.000000, 0.948235, 0.051765},{1.000000, 0.956078, 0.043922},{1.000000, 0.963922, 0.036078},{1.000000, 0.971765, 0.028235},{1.000000, 0.979608, 0.020392},{1.000000, 0.987451, 0.012549},{1.000000, 0.995294, 0.004706},{1.000000, 1.000000, 0.019608},{1.000000, 1.000000, 0.068627},{1.000000, 1.000000, 0.117647},{1.000000, 1.000000, 0.166667},{1.000000, 1.000000, 0.215686},{1.000000, 1.000000, 0.264706},{1.000000, 1.000000, 0.313725},{1.000000, 1.000000, 0.362745},{1.000000, 1.000000, 0.411765},{1.000000, 1.000000, 0.460784},{1.000000, 1.000000, 0.509804},{1.000000, 1.000000, 0.558824},{1.000000, 1.000000, 0.607843},{1.000000, 1.000000, 0.656863},{1.000000, 1.000000, 0.705882},{1.000000, 1.000000, 0.754902},{1.000000, 1.000000, 0.803922},{1.000000, 1.000000, 0.852941},{1.000000, 1.000000, 0.901961},{1.000000, 1.000000, 0.950980},{1.000000, 1.000000, 1.000000}}}, - {"gist_rainbow", {{1.000000, 0.000000, 0.160000},{1.000000, 0.000000, 0.139085},{1.000000, 0.000000, 0.118170},{1.000000, 0.000000, 0.097255},{1.000000, 0.000000, 0.076340},{1.000000, 0.000000, 0.055425},{1.000000, 0.000000, 0.034510},{1.000000, 0.000000, 0.013595},{1.000000, 0.007419, 0.000000},{1.000000, 0.028617, 0.000000},{1.000000, 0.049815, 0.000000},{1.000000, 0.071012, 0.000000},{1.000000, 0.092210, 0.000000},{1.000000, 0.113408, 0.000000},{1.000000, 0.134605, 0.000000},{1.000000, 0.155803, 0.000000},{1.000000, 0.177001, 0.000000},{1.000000, 0.198198, 0.000000},{1.000000, 0.219396, 0.000000},{1.000000, 0.240594, 0.000000},{1.000000, 0.261791, 0.000000},{1.000000, 0.282989, 0.000000},{1.000000, 0.304187, 0.000000},{1.000000, 0.325384, 0.000000},{1.000000, 0.346582, 0.000000},{1.000000, 0.367780, 0.000000},{1.000000, 0.388977, 0.000000},{1.000000, 0.410175, 0.000000},{1.000000, 0.431373, 0.000000},{1.000000, 0.452570, 0.000000},{1.000000, 0.473768, 0.000000},{1.000000, 0.494966, 0.000000},{1.000000, 0.516163, 0.000000},{1.000000, 0.537361, 0.000000},{1.000000, 0.558559, 0.000000},{1.000000, 0.579756, 0.000000},{1.000000, 0.600954, 0.000000},{1.000000, 0.622152, 0.000000},{1.000000, 0.643349, 0.000000},{1.000000, 0.664547, 0.000000},{1.000000, 0.685745, 0.000000},{1.000000, 0.706942, 0.000000},{1.000000, 0.728140, 0.000000},{1.000000, 0.749338, 0.000000},{1.000000, 0.770535, 0.000000},{1.000000, 0.791733, 0.000000},{1.000000, 0.812931, 0.000000},{1.000000, 0.834128, 0.000000},{1.000000, 0.855326, 0.000000},{1.000000, 0.876524, 0.000000},{1.000000, 0.897721, 0.000000},{1.000000, 0.918919, 0.000000},{1.000000, 0.940117, 0.000000},{1.000000, 0.961314, 0.000000},{1.000000, 0.982512, 0.000000},{0.996290, 1.000000, 0.000000},{0.975093, 1.000000, 0.000000},{0.953895, 1.000000, 0.000000},{0.932697, 1.000000, 0.000000},{0.911500, 1.000000, 0.000000},{0.890302, 1.000000, 0.000000},{0.869104, 1.000000, 0.000000},{0.847907, 1.000000, 0.000000},{0.826709, 1.000000, 0.000000},{0.805511, 1.000000, 0.000000},{0.784314, 1.000000, 0.000000},{0.763116, 1.000000, 0.000000},{0.741918, 1.000000, 0.000000},{0.720721, 1.000000, 0.000000},{0.699523, 1.000000, 0.000000},{0.678325, 1.000000, 0.000000},{0.657128, 1.000000, 0.000000},{0.635930, 1.000000, 0.000000},{0.614732, 1.000000, 0.000000},{0.593535, 1.000000, 0.000000},{0.572337, 1.000000, 0.000000},{0.551139, 1.000000, 0.000000},{0.529942, 1.000000, 0.000000},{0.508744, 1.000000, 0.000000},{0.487546, 1.000000, 0.000000},{0.466349, 1.000000, 0.000000},{0.445151, 1.000000, 0.000000},{0.423953, 1.000000, 0.000000},{0.402756, 1.000000, 0.000000},{0.381558, 1.000000, 0.000000},{0.360360, 1.000000, 0.000000},{0.339163, 1.000000, 0.000000},{0.317965, 1.000000, 0.000000},{0.296767, 1.000000, 0.000000},{0.275570, 1.000000, 0.000000},{0.254372, 1.000000, 0.000000},{0.233174, 1.000000, 0.000000},{0.211977, 1.000000, 0.000000},{0.190779, 1.000000, 0.000000},{0.169581, 1.000000, 0.000000},{0.148384, 1.000000, 0.000000},{0.127186, 1.000000, 0.000000},{0.105988, 1.000000, 0.000000},{0.084791, 1.000000, 0.000000},{0.063593, 1.000000, 0.000000},{0.042395, 1.000000, 0.000000},{0.021198, 1.000000, 0.000000},{0.000000, 1.000000, 0.000000},{0.000000, 1.000000, 0.021084},{0.000000, 1.000000, 0.042167},{0.000000, 1.000000, 0.063251},{0.000000, 1.000000, 0.084335},{0.000000, 1.000000, 0.105419},{0.000000, 1.000000, 0.126502},{0.000000, 1.000000, 0.147586},{0.000000, 1.000000, 0.168670},{0.000000, 1.000000, 0.189753},{0.000000, 1.000000, 0.210837},{0.000000, 1.000000, 0.231921},{0.000000, 1.000000, 0.253004},{0.000000, 1.000000, 0.274088},{0.000000, 1.000000, 0.295172},{0.000000, 1.000000, 0.316256},{0.000000, 1.000000, 0.337339},{0.000000, 1.000000, 0.358423},{0.000000, 1.000000, 0.379507},{0.000000, 1.000000, 0.400590},{0.000000, 1.000000, 0.421674},{0.000000, 1.000000, 0.442758},{0.000000, 1.000000, 0.463841},{0.000000, 1.000000, 0.484925},{0.000000, 1.000000, 0.506009},{0.000000, 1.000000, 0.527093},{0.000000, 1.000000, 0.548176},{0.000000, 1.000000, 0.569260},{0.000000, 1.000000, 0.590344},{0.000000, 1.000000, 0.611427},{0.000000, 1.000000, 0.632511},{0.000000, 1.000000, 0.653595},{0.000000, 1.000000, 0.674678},{0.000000, 1.000000, 0.695762},{0.000000, 1.000000, 0.716846},{0.000000, 1.000000, 0.737930},{0.000000, 1.000000, 0.759013},{0.000000, 1.000000, 0.780097},{0.000000, 1.000000, 0.801181},{0.000000, 1.000000, 0.822264},{0.000000, 1.000000, 0.843348},{0.000000, 1.000000, 0.864432},{0.000000, 1.000000, 0.885515},{0.000000, 1.000000, 0.906599},{0.000000, 1.000000, 0.927683},{0.000000, 1.000000, 0.948767},{0.000000, 1.000000, 0.969850},{0.000000, 1.000000, 0.990934},{0.000000, 0.987852, 1.000000},{0.000000, 0.966539, 1.000000},{0.000000, 0.945226, 1.000000},{0.000000, 0.923913, 1.000000},{0.000000, 0.902600, 1.000000},{0.000000, 0.881287, 1.000000},{0.000000, 0.859974, 1.000000},{0.000000, 0.838662, 1.000000},{0.000000, 0.817349, 1.000000},{0.000000, 0.796036, 1.000000},{0.000000, 0.774723, 1.000000},{0.000000, 0.753410, 1.000000},{0.000000, 0.732097, 1.000000},{0.000000, 0.710784, 1.000000},{0.000000, 0.689471, 1.000000},{0.000000, 0.668159, 1.000000},{0.000000, 0.646846, 1.000000},{0.000000, 0.625533, 1.000000},{0.000000, 0.604220, 1.000000},{0.000000, 0.582907, 1.000000},{0.000000, 0.561594, 1.000000},{0.000000, 0.540281, 1.000000},{0.000000, 0.518968, 1.000000},{0.000000, 0.497656, 1.000000},{0.000000, 0.476343, 1.000000},{0.000000, 0.455030, 1.000000},{0.000000, 0.433717, 1.000000},{0.000000, 0.412404, 1.000000},{0.000000, 0.391091, 1.000000},{0.000000, 0.369778, 1.000000},{0.000000, 0.348465, 1.000000},{0.000000, 0.327153, 1.000000},{0.000000, 0.305840, 1.000000},{0.000000, 0.284527, 1.000000},{0.000000, 0.263214, 1.000000},{0.000000, 0.241901, 1.000000},{0.000000, 0.220588, 1.000000},{0.000000, 0.199275, 1.000000},{0.000000, 0.177962, 1.000000},{0.000000, 0.156650, 1.000000},{0.000000, 0.135337, 1.000000},{0.000000, 0.114024, 1.000000},{0.000000, 0.092711, 1.000000},{0.000000, 0.071398, 1.000000},{0.000000, 0.050085, 1.000000},{0.000000, 0.028772, 1.000000},{0.000000, 0.007460, 1.000000},{0.013853, 0.000000, 1.000000},{0.035166, 0.000000, 1.000000},{0.056479, 0.000000, 1.000000},{0.077792, 0.000000, 1.000000},{0.099105, 0.000000, 1.000000},{0.120418, 0.000000, 1.000000},{0.141731, 0.000000, 1.000000},{0.163043, 0.000000, 1.000000},{0.184356, 0.000000, 1.000000},{0.205669, 0.000000, 1.000000},{0.226982, 0.000000, 1.000000},{0.248295, 0.000000, 1.000000},{0.269608, 0.000000, 1.000000},{0.290921, 0.000000, 1.000000},{0.312234, 0.000000, 1.000000},{0.333546, 0.000000, 1.000000},{0.354859, 0.000000, 1.000000},{0.376172, 0.000000, 1.000000},{0.397485, 0.000000, 1.000000},{0.418798, 0.000000, 1.000000},{0.440111, 0.000000, 1.000000},{0.461424, 0.000000, 1.000000},{0.482737, 0.000000, 1.000000},{0.504049, 0.000000, 1.000000},{0.525362, 0.000000, 1.000000},{0.546675, 0.000000, 1.000000},{0.567988, 0.000000, 1.000000},{0.589301, 0.000000, 1.000000},{0.610614, 0.000000, 1.000000},{0.631927, 0.000000, 1.000000},{0.653240, 0.000000, 1.000000},{0.674552, 0.000000, 1.000000},{0.695865, 0.000000, 1.000000},{0.717178, 0.000000, 1.000000},{0.738491, 0.000000, 1.000000},{0.759804, 0.000000, 1.000000},{0.781117, 0.000000, 1.000000},{0.802430, 0.000000, 1.000000},{0.823743, 0.000000, 1.000000},{0.845055, 0.000000, 1.000000},{0.866368, 0.000000, 1.000000},{0.887681, 0.000000, 1.000000},{0.908994, 0.000000, 1.000000},{0.930307, 0.000000, 1.000000},{0.951620, 0.000000, 1.000000},{0.972933, 0.000000, 1.000000},{0.994246, 0.000000, 1.000000},{1.000000, 0.000000, 0.984442},{1.000000, 0.000000, 0.963129},{1.000000, 0.000000, 0.941816},{1.000000, 0.000000, 0.920503},{1.000000, 0.000000, 0.899190},{1.000000, 0.000000, 0.877877},{1.000000, 0.000000, 0.856564},{1.000000, 0.000000, 0.835251},{1.000000, 0.000000, 0.813939},{1.000000, 0.000000, 0.792626},{1.000000, 0.000000, 0.771313},{1.000000, 0.000000, 0.750000}}}, - {"rainbow", {{0.500000, 0.000000, 1.000000},{0.492157, 0.012320, 0.999981},{0.484314, 0.024637, 0.999924},{0.476471, 0.036951, 0.999829},{0.468627, 0.049260, 0.999696},{0.460784, 0.061561, 0.999526},{0.452941, 0.073853, 0.999317},{0.445098, 0.086133, 0.999070},{0.437255, 0.098400, 0.998786},{0.429412, 0.110653, 0.998464},{0.421569, 0.122888, 0.998103},{0.413725, 0.135105, 0.997705},{0.405882, 0.147302, 0.997269},{0.398039, 0.159476, 0.996795},{0.390196, 0.171626, 0.996284},{0.382353, 0.183750, 0.995734},{0.374510, 0.195845, 0.995147},{0.366667, 0.207912, 0.994522},{0.358824, 0.219946, 0.993859},{0.350980, 0.231948, 0.993159},{0.343137, 0.243914, 0.992421},{0.335294, 0.255843, 0.991645},{0.327451, 0.267733, 0.990831},{0.319608, 0.279583, 0.989980},{0.311765, 0.291390, 0.989092},{0.303922, 0.303153, 0.988165},{0.296078, 0.314870, 0.987202},{0.288235, 0.326539, 0.986201},{0.280392, 0.338158, 0.985162},{0.272549, 0.349727, 0.984086},{0.264706, 0.361242, 0.982973},{0.256863, 0.372702, 0.981823},{0.249020, 0.384106, 0.980635},{0.241176, 0.395451, 0.979410},{0.233333, 0.406737, 0.978148},{0.225490, 0.417960, 0.976848},{0.217647, 0.429121, 0.975512},{0.209804, 0.440216, 0.974139},{0.201961, 0.451244, 0.972728},{0.194118, 0.462204, 0.971281},{0.186275, 0.473094, 0.969797},{0.178431, 0.483911, 0.968276},{0.170588, 0.494656, 0.966718},{0.162745, 0.505325, 0.965124},{0.154902, 0.515918, 0.963493},{0.147059, 0.526432, 0.961826},{0.139216, 0.536867, 0.960122},{0.131373, 0.547220, 0.958381},{0.123529, 0.557489, 0.956604},{0.115686, 0.567675, 0.954791},{0.107843, 0.577774, 0.952942},{0.100000, 0.587785, 0.951057},{0.092157, 0.597707, 0.949135},{0.084314, 0.607539, 0.947177},{0.076471, 0.617278, 0.945184},{0.068627, 0.626924, 0.943154},{0.060784, 0.636474, 0.941089},{0.052941, 0.645928, 0.938988},{0.045098, 0.655284, 0.936852},{0.037255, 0.664540, 0.934680},{0.029412, 0.673696, 0.932472},{0.021569, 0.682749, 0.930229},{0.013725, 0.691698, 0.927951},{0.005882, 0.700543, 0.925638},{0.001961, 0.709281, 0.923289},{0.009804, 0.717912, 0.920906},{0.017647, 0.726434, 0.918487},{0.025490, 0.734845, 0.916034},{0.033333, 0.743145, 0.913545},{0.041176, 0.751332, 0.911023},{0.049020, 0.759405, 0.908465},{0.056863, 0.767363, 0.905873},{0.064706, 0.775204, 0.903247},{0.072549, 0.782928, 0.900587},{0.080392, 0.790532, 0.897892},{0.088235, 0.798017, 0.895163},{0.096078, 0.805381, 0.892401},{0.103922, 0.812622, 0.889604},{0.111765, 0.819740, 0.886774},{0.119608, 0.826734, 0.883910},{0.127451, 0.833602, 0.881012},{0.135294, 0.840344, 0.878081},{0.143137, 0.846958, 0.875117},{0.150980, 0.853444, 0.872120},{0.158824, 0.859800, 0.869089},{0.166667, 0.866025, 0.866025},{0.174510, 0.872120, 0.862929},{0.182353, 0.878081, 0.859800},{0.190196, 0.883910, 0.856638},{0.198039, 0.889604, 0.853444},{0.205882, 0.895163, 0.850217},{0.213725, 0.900587, 0.846958},{0.221569, 0.905873, 0.843667},{0.229412, 0.911023, 0.840344},{0.237255, 0.916034, 0.836989},{0.245098, 0.920906, 0.833602},{0.252941, 0.925638, 0.830184},{0.260784, 0.930229, 0.826734},{0.268627, 0.934680, 0.823253},{0.276471, 0.938988, 0.819740},{0.284314, 0.943154, 0.816197},{0.292157, 0.947177, 0.812622},{0.300000, 0.951057, 0.809017},{0.307843, 0.954791, 0.805381},{0.315686, 0.958381, 0.801714},{0.323529, 0.961826, 0.798017},{0.331373, 0.965124, 0.794290},{0.339216, 0.968276, 0.790532},{0.347059, 0.971281, 0.786745},{0.354902, 0.974139, 0.782928},{0.362745, 0.976848, 0.779081},{0.370588, 0.979410, 0.775204},{0.378431, 0.981823, 0.771298},{0.386275, 0.984086, 0.767363},{0.394118, 0.986201, 0.763398},{0.401961, 0.988165, 0.759405},{0.409804, 0.989980, 0.755383},{0.417647, 0.991645, 0.751332},{0.425490, 0.993159, 0.747253},{0.433333, 0.994522, 0.743145},{0.441176, 0.995734, 0.739009},{0.449020, 0.996795, 0.734845},{0.456863, 0.997705, 0.730653},{0.464706, 0.998464, 0.726434},{0.472549, 0.999070, 0.722186},{0.480392, 0.999526, 0.717912},{0.488235, 0.999829, 0.713610},{0.496078, 0.999981, 0.709281},{0.503922, 0.999981, 0.704926},{0.511765, 0.999829, 0.700543},{0.519608, 0.999526, 0.696134},{0.527451, 0.999070, 0.691698},{0.535294, 0.998464, 0.687237},{0.543137, 0.997705, 0.682749},{0.550980, 0.996795, 0.678235},{0.558824, 0.995734, 0.673696},{0.566667, 0.994522, 0.669131},{0.574510, 0.993159, 0.664540},{0.582353, 0.991645, 0.659925},{0.590196, 0.989980, 0.655284},{0.598039, 0.988165, 0.650618},{0.605882, 0.986201, 0.645928},{0.613725, 0.984086, 0.641213},{0.621569, 0.981823, 0.636474},{0.629412, 0.979410, 0.631711},{0.637255, 0.976848, 0.626924},{0.645098, 0.974139, 0.622113},{0.652941, 0.971281, 0.617278},{0.660784, 0.968276, 0.612420},{0.668627, 0.965124, 0.607539},{0.676471, 0.961826, 0.602635},{0.684314, 0.958381, 0.597707},{0.692157, 0.954791, 0.592758},{0.700000, 0.951057, 0.587785},{0.707843, 0.947177, 0.582791},{0.715686, 0.943154, 0.577774},{0.723529, 0.938988, 0.572735},{0.731373, 0.934680, 0.567675},{0.739216, 0.930229, 0.562593},{0.747059, 0.925638, 0.557489},{0.754902, 0.920906, 0.552365},{0.762745, 0.916034, 0.547220},{0.770588, 0.911023, 0.542053},{0.778431, 0.905873, 0.536867},{0.786275, 0.900587, 0.531659},{0.794118, 0.895163, 0.526432},{0.801961, 0.889604, 0.521185},{0.809804, 0.883910, 0.515918},{0.817647, 0.878081, 0.510631},{0.825490, 0.872120, 0.505325},{0.833333, 0.866025, 0.500000},{0.841176, 0.859800, 0.494656},{0.849020, 0.853444, 0.489293},{0.856863, 0.846958, 0.483911},{0.864706, 0.840344, 0.478512},{0.872549, 0.833602, 0.473094},{0.880392, 0.826734, 0.467658},{0.888235, 0.819740, 0.462204},{0.896078, 0.812622, 0.456733},{0.903922, 0.805381, 0.451244},{0.911765, 0.798017, 0.445738},{0.919608, 0.790532, 0.440216},{0.927451, 0.782928, 0.434676},{0.935294, 0.775204, 0.429121},{0.943137, 0.767363, 0.423549},{0.950980, 0.759405, 0.417960},{0.958824, 0.751332, 0.412356},{0.966667, 0.743145, 0.406737},{0.974510, 0.734845, 0.401102},{0.982353, 0.726434, 0.395451},{0.990196, 0.717912, 0.389786},{0.998039, 0.709281, 0.384106},{1.000000, 0.700543, 0.378411},{1.000000, 0.691698, 0.372702},{1.000000, 0.682749, 0.366979},{1.000000, 0.673696, 0.361242},{1.000000, 0.664540, 0.355491},{1.000000, 0.655284, 0.349727},{1.000000, 0.645928, 0.343949},{1.000000, 0.636474, 0.338158},{1.000000, 0.626924, 0.332355},{1.000000, 0.617278, 0.326539},{1.000000, 0.607539, 0.320710},{1.000000, 0.597707, 0.314870},{1.000000, 0.587785, 0.309017},{1.000000, 0.577774, 0.303153},{1.000000, 0.567675, 0.297277},{1.000000, 0.557489, 0.291390},{1.000000, 0.547220, 0.285492},{1.000000, 0.536867, 0.279583},{1.000000, 0.526432, 0.273663},{1.000000, 0.515918, 0.267733},{1.000000, 0.505325, 0.261793},{1.000000, 0.494656, 0.255843},{1.000000, 0.483911, 0.249883},{1.000000, 0.473094, 0.243914},{1.000000, 0.462204, 0.237935},{1.000000, 0.451244, 0.231948},{1.000000, 0.440216, 0.225951},{1.000000, 0.429121, 0.219946},{1.000000, 0.417960, 0.213933},{1.000000, 0.406737, 0.207912},{1.000000, 0.395451, 0.201882},{1.000000, 0.384106, 0.195845},{1.000000, 0.372702, 0.189801},{1.000000, 0.361242, 0.183750},{1.000000, 0.349727, 0.177691},{1.000000, 0.338158, 0.171626},{1.000000, 0.326539, 0.165554},{1.000000, 0.314870, 0.159476},{1.000000, 0.303153, 0.153392},{1.000000, 0.291390, 0.147302},{1.000000, 0.279583, 0.141206},{1.000000, 0.267733, 0.135105},{1.000000, 0.255843, 0.128999},{1.000000, 0.243914, 0.122888},{1.000000, 0.231948, 0.116773},{1.000000, 0.219946, 0.110653},{1.000000, 0.207912, 0.104528},{1.000000, 0.195845, 0.098400},{1.000000, 0.183750, 0.092268},{1.000000, 0.171626, 0.086133},{1.000000, 0.159476, 0.079994},{1.000000, 0.147302, 0.073853},{1.000000, 0.135105, 0.067708},{1.000000, 0.122888, 0.061561},{1.000000, 0.110653, 0.055411},{1.000000, 0.098400, 0.049260},{1.000000, 0.086133, 0.043107},{1.000000, 0.073853, 0.036951},{1.000000, 0.061561, 0.030795},{1.000000, 0.049260, 0.024637},{1.000000, 0.036951, 0.018479},{1.000000, 0.024637, 0.012320},{1.000000, 0.012320, 0.006160},{1.000000, 0.000000, 0.000000}}}, - {"spectral", {{0.619608, 0.003922, 0.258824},{0.628066, 0.013303, 0.260823},{0.636524, 0.022684, 0.262822},{0.644983, 0.032065, 0.264821},{0.653441, 0.041446, 0.266820},{0.661899, 0.050827, 0.268820},{0.670358, 0.060208, 0.270819},{0.678816, 0.069589, 0.272818},{0.687274, 0.078970, 0.274817},{0.695732, 0.088351, 0.276817},{0.704191, 0.097732, 0.278816},{0.712649, 0.107113, 0.280815},{0.721107, 0.116494, 0.282814},{0.729566, 0.125875, 0.284814},{0.738024, 0.135256, 0.286813},{0.746482, 0.144637, 0.288812},{0.754940, 0.154018, 0.290811},{0.763399, 0.163399, 0.292810},{0.771857, 0.172780, 0.294810},{0.780315, 0.182161, 0.296809},{0.788774, 0.191542, 0.298808},{0.797232, 0.200923, 0.300807},{0.805690, 0.210304, 0.302807},{0.814148, 0.219685, 0.304806},{0.822607, 0.229066, 0.306805},{0.831065, 0.238447, 0.308804},{0.837678, 0.246751, 0.308881},{0.842445, 0.253979, 0.307036},{0.847213, 0.261207, 0.305190},{0.851980, 0.268435, 0.303345},{0.856747, 0.275663, 0.301499},{0.861515, 0.282891, 0.299654},{0.866282, 0.290119, 0.297809},{0.871050, 0.297347, 0.295963},{0.875817, 0.304575, 0.294118},{0.880584, 0.311803, 0.292272},{0.885352, 0.319031, 0.290427},{0.890119, 0.326259, 0.288581},{0.894887, 0.333487, 0.286736},{0.899654, 0.340715, 0.284890},{0.904421, 0.347943, 0.283045},{0.909189, 0.355171, 0.281200},{0.913956, 0.362399, 0.279354},{0.918724, 0.369627, 0.277509},{0.923491, 0.376855, 0.275663},{0.928258, 0.384083, 0.273818},{0.933026, 0.391311, 0.271972},{0.937793, 0.398539, 0.270127},{0.942561, 0.405767, 0.268281},{0.947328, 0.412995, 0.266436},{0.952095, 0.420223, 0.264591},{0.956863, 0.427451, 0.262745},{0.958247, 0.437447, 0.267359},{0.959631, 0.447443, 0.271972},{0.961015, 0.457439, 0.276586},{0.962399, 0.467436, 0.281200},{0.963783, 0.477432, 0.285813},{0.965167, 0.487428, 0.290427},{0.966551, 0.497424, 0.295040},{0.967935, 0.507420, 0.299654},{0.969319, 0.517416, 0.304268},{0.970704, 0.527413, 0.308881},{0.972088, 0.537409, 0.313495},{0.973472, 0.547405, 0.318108},{0.974856, 0.557401, 0.322722},{0.976240, 0.567397, 0.327336},{0.977624, 0.577393, 0.331949},{0.979008, 0.587389, 0.336563},{0.980392, 0.597386, 0.341176},{0.981776, 0.607382, 0.345790},{0.983160, 0.617378, 0.350404},{0.984544, 0.627374, 0.355017},{0.985928, 0.637370, 0.359631},{0.987313, 0.647366, 0.364245},{0.988697, 0.657363, 0.368858},{0.990081, 0.667359, 0.373472},{0.991465, 0.677355, 0.378085},{0.992234, 0.686198, 0.383622},{0.992388, 0.693887, 0.390081},{0.992541, 0.701576, 0.396540},{0.992695, 0.709266, 0.402999},{0.992849, 0.716955, 0.409458},{0.993003, 0.724644, 0.415917},{0.993156, 0.732334, 0.422376},{0.993310, 0.740023, 0.428835},{0.993464, 0.747712, 0.435294},{0.993618, 0.755402, 0.441753},{0.993772, 0.763091, 0.448212},{0.993925, 0.770780, 0.454671},{0.994079, 0.778470, 0.461130},{0.994233, 0.786159, 0.467589},{0.994387, 0.793849, 0.474048},{0.994541, 0.801538, 0.480507},{0.994694, 0.809227, 0.486967},{0.994848, 0.816917, 0.493426},{0.995002, 0.824606, 0.499885},{0.995156, 0.832295, 0.506344},{0.995309, 0.839985, 0.512803},{0.995463, 0.847674, 0.519262},{0.995617, 0.855363, 0.525721},{0.995771, 0.863053, 0.532180},{0.995925, 0.870742, 0.538639},{0.996078, 0.878431, 0.545098},{0.996232, 0.883199, 0.553095},{0.996386, 0.887966, 0.561092},{0.996540, 0.892734, 0.569089},{0.996694, 0.897501, 0.577086},{0.996847, 0.902268, 0.585083},{0.997001, 0.907036, 0.593080},{0.997155, 0.911803, 0.601077},{0.997309, 0.916571, 0.609073},{0.997463, 0.921338, 0.617070},{0.997616, 0.926105, 0.625067},{0.997770, 0.930873, 0.633064},{0.997924, 0.935640, 0.641061},{0.998078, 0.940408, 0.649058},{0.998231, 0.945175, 0.657055},{0.998385, 0.949942, 0.665052},{0.998539, 0.954710, 0.673049},{0.998693, 0.959477, 0.681046},{0.998847, 0.964245, 0.689043},{0.999000, 0.969012, 0.697040},{0.999154, 0.973779, 0.705037},{0.999308, 0.978547, 0.713033},{0.999462, 0.983314, 0.721030},{0.999616, 0.988082, 0.729027},{0.999769, 0.992849, 0.737024},{0.999923, 0.997616, 0.745021},{0.998078, 0.999231, 0.746021},{0.994233, 0.997693, 0.740023},{0.990388, 0.996155, 0.734025},{0.986544, 0.994617, 0.728028},{0.982699, 0.993080, 0.722030},{0.978854, 0.991542, 0.716032},{0.975010, 0.990004, 0.710035},{0.971165, 0.988466, 0.704037},{0.967320, 0.986928, 0.698039},{0.963476, 0.985390, 0.692042},{0.959631, 0.983852, 0.686044},{0.955786, 0.982314, 0.680046},{0.951942, 0.980777, 0.674048},{0.948097, 0.979239, 0.668051},{0.944252, 0.977701, 0.662053},{0.940408, 0.976163, 0.656055},{0.936563, 0.974625, 0.650058},{0.932718, 0.973087, 0.644060},{0.928874, 0.971549, 0.638062},{0.925029, 0.970012, 0.632065},{0.921184, 0.968474, 0.626067},{0.917339, 0.966936, 0.620069},{0.913495, 0.965398, 0.614072},{0.909650, 0.963860, 0.608074},{0.905805, 0.962322, 0.602076},{0.901961, 0.960784, 0.596078},{0.892887, 0.957093, 0.597924},{0.883814, 0.953403, 0.599769},{0.874740, 0.949712, 0.601615},{0.865667, 0.946021, 0.603460},{0.856594, 0.942330, 0.605306},{0.847520, 0.938639, 0.607151},{0.838447, 0.934948, 0.608997},{0.829373, 0.931257, 0.610842},{0.820300, 0.927566, 0.612687},{0.811226, 0.923875, 0.614533},{0.802153, 0.920185, 0.616378},{0.793080, 0.916494, 0.618224},{0.784006, 0.912803, 0.620069},{0.774933, 0.909112, 0.621915},{0.765859, 0.905421, 0.623760},{0.756786, 0.901730, 0.625606},{0.747712, 0.898039, 0.627451},{0.738639, 0.894348, 0.629296},{0.729566, 0.890657, 0.631142},{0.720492, 0.886967, 0.632987},{0.711419, 0.883276, 0.634833},{0.702345, 0.879585, 0.636678},{0.693272, 0.875894, 0.638524},{0.684198, 0.872203, 0.640369},{0.675125, 0.868512, 0.642215},{0.665283, 0.864591, 0.643214},{0.654671, 0.860438, 0.643368},{0.644060, 0.856286, 0.643522},{0.633449, 0.852134, 0.643676},{0.622837, 0.847982, 0.643829},{0.612226, 0.843829, 0.643983},{0.601615, 0.839677, 0.644137},{0.591003, 0.835525, 0.644291},{0.580392, 0.831373, 0.644444},{0.569781, 0.827220, 0.644598},{0.559170, 0.823068, 0.644752},{0.548558, 0.818916, 0.644906},{0.537947, 0.814764, 0.645060},{0.527336, 0.810611, 0.645213},{0.516724, 0.806459, 0.645367},{0.506113, 0.802307, 0.645521},{0.495502, 0.798155, 0.645675},{0.484890, 0.794002, 0.645829},{0.474279, 0.789850, 0.645982},{0.463668, 0.785698, 0.646136},{0.453057, 0.781546, 0.646290},{0.442445, 0.777393, 0.646444},{0.431834, 0.773241, 0.646597},{0.421223, 0.769089, 0.646751},{0.410611, 0.764937, 0.646905},{0.400000, 0.760784, 0.647059},{0.392003, 0.751865, 0.650750},{0.384006, 0.742945, 0.654441},{0.376009, 0.734025, 0.658131},{0.368012, 0.725106, 0.661822},{0.360015, 0.716186, 0.665513},{0.352018, 0.707266, 0.669204},{0.344022, 0.698347, 0.672895},{0.336025, 0.689427, 0.676586},{0.328028, 0.680507, 0.680277},{0.320031, 0.671588, 0.683968},{0.312034, 0.662668, 0.687659},{0.304037, 0.653749, 0.691349},{0.296040, 0.644829, 0.695040},{0.288043, 0.635909, 0.698731},{0.280046, 0.626990, 0.702422},{0.272049, 0.618070, 0.706113},{0.264052, 0.609150, 0.709804},{0.256055, 0.600231, 0.713495},{0.248058, 0.591311, 0.717186},{0.240062, 0.582391, 0.720877},{0.232065, 0.573472, 0.724567},{0.224068, 0.564552, 0.728258},{0.216071, 0.555632, 0.731949},{0.208074, 0.546713, 0.735640},{0.200077, 0.537793, 0.739331},{0.199462, 0.528950, 0.739100},{0.206228, 0.520185, 0.734948},{0.212995, 0.511419, 0.730796},{0.219762, 0.502653, 0.726644},{0.226528, 0.493887, 0.722491},{0.233295, 0.485121, 0.718339},{0.240062, 0.476355, 0.714187},{0.246828, 0.467589, 0.710035},{0.253595, 0.458824, 0.705882},{0.260361, 0.450058, 0.701730},{0.267128, 0.441292, 0.697578},{0.273895, 0.432526, 0.693426},{0.280661, 0.423760, 0.689273},{0.287428, 0.414994, 0.685121},{0.294195, 0.406228, 0.680969},{0.300961, 0.397463, 0.676817},{0.307728, 0.388697, 0.672664},{0.314494, 0.379931, 0.668512},{0.321261, 0.371165, 0.664360},{0.328028, 0.362399, 0.660208},{0.334794, 0.353633, 0.656055},{0.341561, 0.344867, 0.651903},{0.348328, 0.336101, 0.647751},{0.355094, 0.327336, 0.643599},{0.361861, 0.318570, 0.639446},{0.368627, 0.309804, 0.635294}}}, - {"hot", {{0.041600, 0.000000, 0.000000},{0.051895, 0.000000, 0.000000},{0.062190, 0.000000, 0.000000},{0.072485, 0.000000, 0.000000},{0.082779, 0.000000, 0.000000},{0.093074, 0.000000, 0.000000},{0.103369, 0.000000, 0.000000},{0.113664, 0.000000, 0.000000},{0.123959, 0.000000, 0.000000},{0.134254, 0.000000, 0.000000},{0.144548, 0.000000, 0.000000},{0.154843, 0.000000, 0.000000},{0.165138, 0.000000, 0.000000},{0.175433, 0.000000, 0.000000},{0.185728, 0.000000, 0.000000},{0.196023, 0.000000, 0.000000},{0.206318, 0.000000, 0.000000},{0.216612, 0.000000, 0.000000},{0.226907, 0.000000, 0.000000},{0.237202, 0.000000, 0.000000},{0.247497, 0.000000, 0.000000},{0.257792, 0.000000, 0.000000},{0.268087, 0.000000, 0.000000},{0.278381, 0.000000, 0.000000},{0.288676, 0.000000, 0.000000},{0.298971, 0.000000, 0.000000},{0.309266, 0.000000, 0.000000},{0.319561, 0.000000, 0.000000},{0.329856, 0.000000, 0.000000},{0.340150, 0.000000, 0.000000},{0.350445, 0.000000, 0.000000},{0.360740, 0.000000, 0.000000},{0.371035, 0.000000, 0.000000},{0.381330, 0.000000, 0.000000},{0.391625, 0.000000, 0.000000},{0.401920, 0.000000, 0.000000},{0.412214, 0.000000, 0.000000},{0.422509, 0.000000, 0.000000},{0.432804, 0.000000, 0.000000},{0.443099, 0.000000, 0.000000},{0.453394, 0.000000, 0.000000},{0.463689, 0.000000, 0.000000},{0.473983, 0.000000, 0.000000},{0.484278, 0.000000, 0.000000},{0.494573, 0.000000, 0.000000},{0.504868, 0.000000, 0.000000},{0.515163, 0.000000, 0.000000},{0.525458, 0.000000, 0.000000},{0.535753, 0.000000, 0.000000},{0.546047, 0.000000, 0.000000},{0.556342, 0.000000, 0.000000},{0.566637, 0.000000, 0.000000},{0.576932, 0.000000, 0.000000},{0.587227, 0.000000, 0.000000},{0.597522, 0.000000, 0.000000},{0.607816, 0.000000, 0.000000},{0.618111, 0.000000, 0.000000},{0.628406, 0.000000, 0.000000},{0.638701, 0.000000, 0.000000},{0.648996, 0.000000, 0.000000},{0.659291, 0.000000, 0.000000},{0.669585, 0.000000, 0.000000},{0.679880, 0.000000, 0.000000},{0.690175, 0.000000, 0.000000},{0.700470, 0.000000, 0.000000},{0.710765, 0.000000, 0.000000},{0.721060, 0.000000, 0.000000},{0.731355, 0.000000, 0.000000},{0.741649, 0.000000, 0.000000},{0.751944, 0.000000, 0.000000},{0.762239, 0.000000, 0.000000},{0.772534, 0.000000, 0.000000},{0.782829, 0.000000, 0.000000},{0.793124, 0.000000, 0.000000},{0.803418, 0.000000, 0.000000},{0.813713, 0.000000, 0.000000},{0.824008, 0.000000, 0.000000},{0.834303, 0.000000, 0.000000},{0.844598, 0.000000, 0.000000},{0.854893, 0.000000, 0.000000},{0.865188, 0.000000, 0.000000},{0.875482, 0.000000, 0.000000},{0.885777, 0.000000, 0.000000},{0.896072, 0.000000, 0.000000},{0.906367, 0.000000, 0.000000},{0.916662, 0.000000, 0.000000},{0.926957, 0.000000, 0.000000},{0.937251, 0.000000, 0.000000},{0.947546, 0.000000, 0.000000},{0.957841, 0.000000, 0.000000},{0.968136, 0.000000, 0.000000},{0.978431, 0.000000, 0.000000},{0.988726, 0.000000, 0.000000},{0.999020, 0.000000, 0.000000},{1.000000, 0.009315, 0.000000},{1.000000, 0.019609, 0.000000},{1.000000, 0.029903, 0.000000},{1.000000, 0.040197, 0.000000},{1.000000, 0.050491, 0.000000},{1.000000, 0.060785, 0.000000},{1.000000, 0.071079, 0.000000},{1.000000, 0.081373, 0.000000},{1.000000, 0.091667, 0.000000},{1.000000, 0.101962, 0.000000},{1.000000, 0.112256, 0.000000},{1.000000, 0.122550, 0.000000},{1.000000, 0.132844, 0.000000},{1.000000, 0.143138, 0.000000},{1.000000, 0.153432, 0.000000},{1.000000, 0.163726, 0.000000},{1.000000, 0.174020, 0.000000},{1.000000, 0.184314, 0.000000},{1.000000, 0.194608, 0.000000},{1.000000, 0.204903, 0.000000},{1.000000, 0.215197, 0.000000},{1.000000, 0.225491, 0.000000},{1.000000, 0.235785, 0.000000},{1.000000, 0.246079, 0.000000},{1.000000, 0.256373, 0.000000},{1.000000, 0.266667, 0.000000},{1.000000, 0.276961, 0.000000},{1.000000, 0.287255, 0.000000},{1.000000, 0.297549, 0.000000},{1.000000, 0.307844, 0.000000},{1.000000, 0.318138, 0.000000},{1.000000, 0.328432, 0.000000},{1.000000, 0.338726, 0.000000},{1.000000, 0.349020, 0.000000},{1.000000, 0.359314, 0.000000},{1.000000, 0.369608, 0.000000},{1.000000, 0.379902, 0.000000},{1.000000, 0.390196, 0.000000},{1.000000, 0.400491, 0.000000},{1.000000, 0.410785, 0.000000},{1.000000, 0.421079, 0.000000},{1.000000, 0.431373, 0.000000},{1.000000, 0.441667, 0.000000},{1.000000, 0.451961, 0.000000},{1.000000, 0.462255, 0.000000},{1.000000, 0.472549, 0.000000},{1.000000, 0.482843, 0.000000},{1.000000, 0.493137, 0.000000},{1.000000, 0.503432, 0.000000},{1.000000, 0.513726, 0.000000},{1.000000, 0.524020, 0.000000},{1.000000, 0.534314, 0.000000},{1.000000, 0.544608, 0.000000},{1.000000, 0.554902, 0.000000},{1.000000, 0.565196, 0.000000},{1.000000, 0.575490, 0.000000},{1.000000, 0.585784, 0.000000},{1.000000, 0.596078, 0.000000},{1.000000, 0.606373, 0.000000},{1.000000, 0.616667, 0.000000},{1.000000, 0.626961, 0.000000},{1.000000, 0.637255, 0.000000},{1.000000, 0.647549, 0.000000},{1.000000, 0.657843, 0.000000},{1.000000, 0.668137, 0.000000},{1.000000, 0.678431, 0.000000},{1.000000, 0.688725, 0.000000},{1.000000, 0.699019, 0.000000},{1.000000, 0.709314, 0.000000},{1.000000, 0.719608, 0.000000},{1.000000, 0.729902, 0.000000},{1.000000, 0.740196, 0.000000},{1.000000, 0.750490, 0.000000},{1.000000, 0.760784, 0.000000},{1.000000, 0.771078, 0.000000},{1.000000, 0.781372, 0.000000},{1.000000, 0.791666, 0.000000},{1.000000, 0.801960, 0.000000},{1.000000, 0.812255, 0.000000},{1.000000, 0.822549, 0.000000},{1.000000, 0.832843, 0.000000},{1.000000, 0.843137, 0.000000},{1.000000, 0.853431, 0.000000},{1.000000, 0.863725, 0.000000},{1.000000, 0.874019, 0.000000},{1.000000, 0.884313, 0.000000},{1.000000, 0.894607, 0.000000},{1.000000, 0.904901, 0.000000},{1.000000, 0.915196, 0.000000},{1.000000, 0.925490, 0.000000},{1.000000, 0.935784, 0.000000},{1.000000, 0.946078, 0.000000},{1.000000, 0.956372, 0.000000},{1.000000, 0.966666, 0.000000},{1.000000, 0.976960, 0.000000},{1.000000, 0.987254, 0.000000},{1.000000, 0.997548, 0.000000},{1.000000, 1.000000, 0.011764},{1.000000, 1.000000, 0.027205},{1.000000, 1.000000, 0.042646},{1.000000, 1.000000, 0.058087},{1.000000, 1.000000, 0.073528},{1.000000, 1.000000, 0.088970},{1.000000, 1.000000, 0.104411},{1.000000, 1.000000, 0.119852},{1.000000, 1.000000, 0.135293},{1.000000, 1.000000, 0.150734},{1.000000, 1.000000, 0.166176},{1.000000, 1.000000, 0.181617},{1.000000, 1.000000, 0.197058},{1.000000, 1.000000, 0.212499},{1.000000, 1.000000, 0.227940},{1.000000, 1.000000, 0.243382},{1.000000, 1.000000, 0.258823},{1.000000, 1.000000, 0.274264},{1.000000, 1.000000, 0.289705},{1.000000, 1.000000, 0.305146},{1.000000, 1.000000, 0.320588},{1.000000, 1.000000, 0.336029},{1.000000, 1.000000, 0.351470},{1.000000, 1.000000, 0.366911},{1.000000, 1.000000, 0.382352},{1.000000, 1.000000, 0.397794},{1.000000, 1.000000, 0.413235},{1.000000, 1.000000, 0.428676},{1.000000, 1.000000, 0.444117},{1.000000, 1.000000, 0.459558},{1.000000, 1.000000, 0.474999},{1.000000, 1.000000, 0.490441},{1.000000, 1.000000, 0.505882},{1.000000, 1.000000, 0.521323},{1.000000, 1.000000, 0.536764},{1.000000, 1.000000, 0.552205},{1.000000, 1.000000, 0.567647},{1.000000, 1.000000, 0.583088},{1.000000, 1.000000, 0.598529},{1.000000, 1.000000, 0.613970},{1.000000, 1.000000, 0.629411},{1.000000, 1.000000, 0.644853},{1.000000, 1.000000, 0.660294},{1.000000, 1.000000, 0.675735},{1.000000, 1.000000, 0.691176},{1.000000, 1.000000, 0.706617},{1.000000, 1.000000, 0.722059},{1.000000, 1.000000, 0.737500},{1.000000, 1.000000, 0.752941},{1.000000, 1.000000, 0.768382},{1.000000, 1.000000, 0.783823},{1.000000, 1.000000, 0.799265},{1.000000, 1.000000, 0.814706},{1.000000, 1.000000, 0.830147},{1.000000, 1.000000, 0.845588},{1.000000, 1.000000, 0.861029},{1.000000, 1.000000, 0.876470},{1.000000, 1.000000, 0.891912},{1.000000, 1.000000, 0.907353},{1.000000, 1.000000, 0.922794},{1.000000, 1.000000, 0.938235},{1.000000, 1.000000, 0.953676},{1.000000, 1.000000, 0.969118},{1.000000, 1.000000, 0.984559},{1.000000, 1.000000, 1.000000}}}, - {"afmhot", {{0.000000, 0.000000, 0.000000},{0.007843, 0.000000, 0.000000},{0.015686, 0.000000, 0.000000},{0.023529, 0.000000, 0.000000},{0.031373, 0.000000, 0.000000},{0.039216, 0.000000, 0.000000},{0.047059, 0.000000, 0.000000},{0.054902, 0.000000, 0.000000},{0.062745, 0.000000, 0.000000},{0.070588, 0.000000, 0.000000},{0.078431, 0.000000, 0.000000},{0.086275, 0.000000, 0.000000},{0.094118, 0.000000, 0.000000},{0.101961, 0.000000, 0.000000},{0.109804, 0.000000, 0.000000},{0.117647, 0.000000, 0.000000},{0.125490, 0.000000, 0.000000},{0.133333, 0.000000, 0.000000},{0.141176, 0.000000, 0.000000},{0.149020, 0.000000, 0.000000},{0.156863, 0.000000, 0.000000},{0.164706, 0.000000, 0.000000},{0.172549, 0.000000, 0.000000},{0.180392, 0.000000, 0.000000},{0.188235, 0.000000, 0.000000},{0.196078, 0.000000, 0.000000},{0.203922, 0.000000, 0.000000},{0.211765, 0.000000, 0.000000},{0.219608, 0.000000, 0.000000},{0.227451, 0.000000, 0.000000},{0.235294, 0.000000, 0.000000},{0.243137, 0.000000, 0.000000},{0.250980, 0.000000, 0.000000},{0.258824, 0.000000, 0.000000},{0.266667, 0.000000, 0.000000},{0.274510, 0.000000, 0.000000},{0.282353, 0.000000, 0.000000},{0.290196, 0.000000, 0.000000},{0.298039, 0.000000, 0.000000},{0.305882, 0.000000, 0.000000},{0.313725, 0.000000, 0.000000},{0.321569, 0.000000, 0.000000},{0.329412, 0.000000, 0.000000},{0.337255, 0.000000, 0.000000},{0.345098, 0.000000, 0.000000},{0.352941, 0.000000, 0.000000},{0.360784, 0.000000, 0.000000},{0.368627, 0.000000, 0.000000},{0.376471, 0.000000, 0.000000},{0.384314, 0.000000, 0.000000},{0.392157, 0.000000, 0.000000},{0.400000, 0.000000, 0.000000},{0.407843, 0.000000, 0.000000},{0.415686, 0.000000, 0.000000},{0.423529, 0.000000, 0.000000},{0.431373, 0.000000, 0.000000},{0.439216, 0.000000, 0.000000},{0.447059, 0.000000, 0.000000},{0.454902, 0.000000, 0.000000},{0.462745, 0.000000, 0.000000},{0.470588, 0.000000, 0.000000},{0.478431, 0.000000, 0.000000},{0.486275, 0.000000, 0.000000},{0.494118, 0.000000, 0.000000},{0.501961, 0.001961, 0.000000},{0.509804, 0.009804, 0.000000},{0.517647, 0.017647, 0.000000},{0.525490, 0.025490, 0.000000},{0.533333, 0.033333, 0.000000},{0.541176, 0.041176, 0.000000},{0.549020, 0.049020, 0.000000},{0.556863, 0.056863, 0.000000},{0.564706, 0.064706, 0.000000},{0.572549, 0.072549, 0.000000},{0.580392, 0.080392, 0.000000},{0.588235, 0.088235, 0.000000},{0.596078, 0.096078, 0.000000},{0.603922, 0.103922, 0.000000},{0.611765, 0.111765, 0.000000},{0.619608, 0.119608, 0.000000},{0.627451, 0.127451, 0.000000},{0.635294, 0.135294, 0.000000},{0.643137, 0.143137, 0.000000},{0.650980, 0.150980, 0.000000},{0.658824, 0.158824, 0.000000},{0.666667, 0.166667, 0.000000},{0.674510, 0.174510, 0.000000},{0.682353, 0.182353, 0.000000},{0.690196, 0.190196, 0.000000},{0.698039, 0.198039, 0.000000},{0.705882, 0.205882, 0.000000},{0.713725, 0.213725, 0.000000},{0.721569, 0.221569, 0.000000},{0.729412, 0.229412, 0.000000},{0.737255, 0.237255, 0.000000},{0.745098, 0.245098, 0.000000},{0.752941, 0.252941, 0.000000},{0.760784, 0.260784, 0.000000},{0.768627, 0.268627, 0.000000},{0.776471, 0.276471, 0.000000},{0.784314, 0.284314, 0.000000},{0.792157, 0.292157, 0.000000},{0.800000, 0.300000, 0.000000},{0.807843, 0.307843, 0.000000},{0.815686, 0.315686, 0.000000},{0.823529, 0.323529, 0.000000},{0.831373, 0.331373, 0.000000},{0.839216, 0.339216, 0.000000},{0.847059, 0.347059, 0.000000},{0.854902, 0.354902, 0.000000},{0.862745, 0.362745, 0.000000},{0.870588, 0.370588, 0.000000},{0.878431, 0.378431, 0.000000},{0.886275, 0.386275, 0.000000},{0.894118, 0.394118, 0.000000},{0.901961, 0.401961, 0.000000},{0.909804, 0.409804, 0.000000},{0.917647, 0.417647, 0.000000},{0.925490, 0.425490, 0.000000},{0.933333, 0.433333, 0.000000},{0.941176, 0.441176, 0.000000},{0.949020, 0.449020, 0.000000},{0.956863, 0.456863, 0.000000},{0.964706, 0.464706, 0.000000},{0.972549, 0.472549, 0.000000},{0.980392, 0.480392, 0.000000},{0.988235, 0.488235, 0.000000},{0.996078, 0.496078, 0.000000},{1.000000, 0.503922, 0.003922},{1.000000, 0.511765, 0.011765},{1.000000, 0.519608, 0.019608},{1.000000, 0.527451, 0.027451},{1.000000, 0.535294, 0.035294},{1.000000, 0.543137, 0.043137},{1.000000, 0.550980, 0.050980},{1.000000, 0.558824, 0.058824},{1.000000, 0.566667, 0.066667},{1.000000, 0.574510, 0.074510},{1.000000, 0.582353, 0.082353},{1.000000, 0.590196, 0.090196},{1.000000, 0.598039, 0.098039},{1.000000, 0.605882, 0.105882},{1.000000, 0.613725, 0.113725},{1.000000, 0.621569, 0.121569},{1.000000, 0.629412, 0.129412},{1.000000, 0.637255, 0.137255},{1.000000, 0.645098, 0.145098},{1.000000, 0.652941, 0.152941},{1.000000, 0.660784, 0.160784},{1.000000, 0.668627, 0.168627},{1.000000, 0.676471, 0.176471},{1.000000, 0.684314, 0.184314},{1.000000, 0.692157, 0.192157},{1.000000, 0.700000, 0.200000},{1.000000, 0.707843, 0.207843},{1.000000, 0.715686, 0.215686},{1.000000, 0.723529, 0.223529},{1.000000, 0.731373, 0.231373},{1.000000, 0.739216, 0.239216},{1.000000, 0.747059, 0.247059},{1.000000, 0.754902, 0.254902},{1.000000, 0.762745, 0.262745},{1.000000, 0.770588, 0.270588},{1.000000, 0.778431, 0.278431},{1.000000, 0.786275, 0.286275},{1.000000, 0.794118, 0.294118},{1.000000, 0.801961, 0.301961},{1.000000, 0.809804, 0.309804},{1.000000, 0.817647, 0.317647},{1.000000, 0.825490, 0.325490},{1.000000, 0.833333, 0.333333},{1.000000, 0.841176, 0.341176},{1.000000, 0.849020, 0.349020},{1.000000, 0.856863, 0.356863},{1.000000, 0.864706, 0.364706},{1.000000, 0.872549, 0.372549},{1.000000, 0.880392, 0.380392},{1.000000, 0.888235, 0.388235},{1.000000, 0.896078, 0.396078},{1.000000, 0.903922, 0.403922},{1.000000, 0.911765, 0.411765},{1.000000, 0.919608, 0.419608},{1.000000, 0.927451, 0.427451},{1.000000, 0.935294, 0.435294},{1.000000, 0.943137, 0.443137},{1.000000, 0.950980, 0.450980},{1.000000, 0.958824, 0.458824},{1.000000, 0.966667, 0.466667},{1.000000, 0.974510, 0.474510},{1.000000, 0.982353, 0.482353},{1.000000, 0.990196, 0.490196},{1.000000, 0.998039, 0.498039},{1.000000, 1.000000, 0.505882},{1.000000, 1.000000, 0.513725},{1.000000, 1.000000, 0.521569},{1.000000, 1.000000, 0.529412},{1.000000, 1.000000, 0.537255},{1.000000, 1.000000, 0.545098},{1.000000, 1.000000, 0.552941},{1.000000, 1.000000, 0.560784},{1.000000, 1.000000, 0.568627},{1.000000, 1.000000, 0.576471},{1.000000, 1.000000, 0.584314},{1.000000, 1.000000, 0.592157},{1.000000, 1.000000, 0.600000},{1.000000, 1.000000, 0.607843},{1.000000, 1.000000, 0.615686},{1.000000, 1.000000, 0.623529},{1.000000, 1.000000, 0.631373},{1.000000, 1.000000, 0.639216},{1.000000, 1.000000, 0.647059},{1.000000, 1.000000, 0.654902},{1.000000, 1.000000, 0.662745},{1.000000, 1.000000, 0.670588},{1.000000, 1.000000, 0.678431},{1.000000, 1.000000, 0.686275},{1.000000, 1.000000, 0.694118},{1.000000, 1.000000, 0.701961},{1.000000, 1.000000, 0.709804},{1.000000, 1.000000, 0.717647},{1.000000, 1.000000, 0.725490},{1.000000, 1.000000, 0.733333},{1.000000, 1.000000, 0.741176},{1.000000, 1.000000, 0.749020},{1.000000, 1.000000, 0.756863},{1.000000, 1.000000, 0.764706},{1.000000, 1.000000, 0.772549},{1.000000, 1.000000, 0.780392},{1.000000, 1.000000, 0.788235},{1.000000, 1.000000, 0.796078},{1.000000, 1.000000, 0.803922},{1.000000, 1.000000, 0.811765},{1.000000, 1.000000, 0.819608},{1.000000, 1.000000, 0.827451},{1.000000, 1.000000, 0.835294},{1.000000, 1.000000, 0.843137},{1.000000, 1.000000, 0.850980},{1.000000, 1.000000, 0.858824},{1.000000, 1.000000, 0.866667},{1.000000, 1.000000, 0.874510},{1.000000, 1.000000, 0.882353},{1.000000, 1.000000, 0.890196},{1.000000, 1.000000, 0.898039},{1.000000, 1.000000, 0.905882},{1.000000, 1.000000, 0.913725},{1.000000, 1.000000, 0.921569},{1.000000, 1.000000, 0.929412},{1.000000, 1.000000, 0.937255},{1.000000, 1.000000, 0.945098},{1.000000, 1.000000, 0.952941},{1.000000, 1.000000, 0.960784},{1.000000, 1.000000, 0.968627},{1.000000, 1.000000, 0.976471},{1.000000, 1.000000, 0.984314},{1.000000, 1.000000, 0.992157},{1.000000, 1.000000, 1.000000}}}, - {"copper", {{0.000000, 0.000000, 0.000000},{0.004844, 0.003064, 0.001951},{0.009689, 0.006127, 0.003902},{0.014533, 0.009191, 0.005853},{0.019377, 0.012254, 0.007804},{0.024221, 0.015318, 0.009755},{0.029066, 0.018381, 0.011706},{0.033910, 0.021445, 0.013657},{0.038754, 0.024508, 0.015608},{0.043599, 0.027572, 0.017559},{0.048443, 0.030635, 0.019510},{0.053287, 0.033699, 0.021461},{0.058131, 0.036762, 0.023412},{0.062976, 0.039826, 0.025363},{0.067820, 0.042889, 0.027314},{0.072664, 0.045953, 0.029265},{0.077509, 0.049016, 0.031216},{0.082353, 0.052080, 0.033167},{0.087197, 0.055144, 0.035118},{0.092042, 0.058207, 0.037069},{0.096886, 0.061271, 0.039020},{0.101730, 0.064334, 0.040971},{0.106574, 0.067398, 0.042922},{0.111419, 0.070461, 0.044873},{0.116263, 0.073525, 0.046824},{0.121107, 0.076588, 0.048775},{0.125952, 0.079652, 0.050725},{0.130796, 0.082715, 0.052676},{0.135640, 0.085779, 0.054627},{0.140484, 0.088842, 0.056578},{0.145329, 0.091906, 0.058529},{0.150173, 0.094969, 0.060480},{0.155017, 0.098033, 0.062431},{0.159862, 0.101096, 0.064382},{0.164706, 0.104160, 0.066333},{0.169550, 0.107224, 0.068284},{0.174394, 0.110287, 0.070235},{0.179239, 0.113351, 0.072186},{0.184083, 0.116414, 0.074137},{0.188927, 0.119478, 0.076088},{0.193772, 0.122541, 0.078039},{0.198616, 0.125605, 0.079990},{0.203460, 0.128668, 0.081941},{0.208304, 0.131732, 0.083892},{0.213149, 0.134795, 0.085843},{0.217993, 0.137859, 0.087794},{0.222837, 0.140922, 0.089745},{0.227682, 0.143986, 0.091696},{0.232526, 0.147049, 0.093647},{0.237370, 0.150113, 0.095598},{0.242214, 0.153176, 0.097549},{0.247059, 0.156240, 0.099500},{0.251903, 0.159304, 0.101451},{0.256747, 0.162367, 0.103402},{0.261592, 0.165431, 0.105353},{0.266436, 0.168494, 0.107304},{0.271280, 0.171558, 0.109255},{0.276125, 0.174621, 0.111206},{0.280969, 0.177685, 0.113157},{0.285813, 0.180748, 0.115108},{0.290657, 0.183812, 0.117059},{0.295502, 0.186875, 0.119010},{0.300346, 0.189939, 0.120961},{0.305190, 0.193002, 0.122912},{0.310035, 0.196066, 0.124863},{0.314879, 0.199129, 0.126814},{0.319723, 0.202193, 0.128765},{0.324567, 0.205256, 0.130716},{0.329412, 0.208320, 0.132667},{0.334256, 0.211384, 0.134618},{0.339100, 0.214447, 0.136569},{0.343945, 0.217511, 0.138520},{0.348789, 0.220574, 0.140471},{0.353633, 0.223638, 0.142422},{0.358477, 0.226701, 0.144373},{0.363322, 0.229765, 0.146324},{0.368166, 0.232828, 0.148275},{0.373010, 0.235892, 0.150225},{0.377855, 0.238955, 0.152176},{0.382699, 0.242019, 0.154127},{0.387543, 0.245082, 0.156078},{0.392387, 0.248146, 0.158029},{0.397232, 0.251209, 0.159980},{0.402076, 0.254273, 0.161931},{0.406920, 0.257336, 0.163882},{0.411765, 0.260400, 0.165833},{0.416609, 0.263464, 0.167784},{0.421453, 0.266527, 0.169735},{0.426297, 0.269591, 0.171686},{0.431142, 0.272654, 0.173637},{0.435986, 0.275718, 0.175588},{0.440830, 0.278781, 0.177539},{0.445675, 0.281845, 0.179490},{0.450519, 0.284908, 0.181441},{0.455363, 0.287972, 0.183392},{0.460208, 0.291035, 0.185343},{0.465052, 0.294099, 0.187294},{0.469896, 0.297162, 0.189245},{0.474740, 0.300226, 0.191196},{0.479585, 0.303289, 0.193147},{0.484429, 0.306353, 0.195098},{0.489273, 0.309416, 0.197049},{0.494118, 0.312480, 0.199000},{0.498962, 0.315544, 0.200951},{0.503806, 0.318607, 0.202902},{0.508650, 0.321671, 0.204853},{0.513495, 0.324734, 0.206804},{0.518339, 0.327798, 0.208755},{0.523183, 0.330861, 0.210706},{0.528028, 0.333925, 0.212657},{0.532872, 0.336988, 0.214608},{0.537716, 0.340052, 0.216559},{0.542560, 0.343115, 0.218510},{0.547405, 0.346179, 0.220461},{0.552249, 0.349242, 0.222412},{0.557093, 0.352306, 0.224363},{0.561938, 0.355369, 0.226314},{0.566782, 0.358433, 0.228265},{0.571626, 0.361496, 0.230216},{0.576470, 0.364560, 0.232167},{0.581315, 0.367624, 0.234118},{0.586159, 0.370687, 0.236069},{0.591003, 0.373751, 0.238020},{0.595848, 0.376814, 0.239971},{0.600692, 0.379878, 0.241922},{0.605536, 0.382941, 0.243873},{0.610380, 0.386005, 0.245824},{0.615225, 0.389068, 0.247775},{0.620069, 0.392132, 0.249725},{0.624913, 0.395195, 0.251676},{0.629758, 0.398259, 0.253627},{0.634602, 0.401322, 0.255578},{0.639446, 0.404386, 0.257529},{0.644291, 0.407449, 0.259480},{0.649135, 0.410513, 0.261431},{0.653979, 0.413576, 0.263382},{0.658823, 0.416640, 0.265333},{0.663668, 0.419704, 0.267284},{0.668512, 0.422767, 0.269235},{0.673356, 0.425831, 0.271186},{0.678201, 0.428894, 0.273137},{0.683045, 0.431958, 0.275088},{0.687889, 0.435021, 0.277039},{0.692733, 0.438085, 0.278990},{0.697578, 0.441148, 0.280941},{0.702422, 0.444212, 0.282892},{0.707266, 0.447275, 0.284843},{0.712111, 0.450339, 0.286794},{0.716955, 0.453402, 0.288745},{0.721799, 0.456466, 0.290696},{0.726643, 0.459529, 0.292647},{0.731488, 0.462593, 0.294598},{0.736332, 0.465656, 0.296549},{0.741176, 0.468720, 0.298500},{0.746021, 0.471784, 0.300451},{0.750865, 0.474847, 0.302402},{0.755709, 0.477911, 0.304353},{0.760553, 0.480974, 0.306304},{0.765398, 0.484038, 0.308255},{0.770242, 0.487101, 0.310206},{0.775086, 0.490165, 0.312157},{0.779931, 0.493228, 0.314108},{0.784775, 0.496292, 0.316059},{0.789619, 0.499355, 0.318010},{0.794463, 0.502419, 0.319961},{0.799308, 0.505482, 0.321912},{0.804152, 0.508546, 0.323863},{0.808996, 0.511609, 0.325814},{0.813841, 0.514673, 0.327765},{0.818685, 0.517736, 0.329716},{0.823529, 0.520800, 0.331667},{0.828374, 0.523864, 0.333618},{0.833218, 0.526927, 0.335569},{0.838062, 0.529991, 0.337520},{0.842906, 0.533054, 0.339471},{0.847751, 0.536118, 0.341422},{0.852595, 0.539181, 0.343373},{0.857439, 0.542245, 0.345324},{0.862284, 0.545308, 0.347275},{0.867128, 0.548372, 0.349225},{0.871972, 0.551435, 0.351176},{0.876816, 0.554499, 0.353127},{0.881661, 0.557562, 0.355078},{0.886505, 0.560626, 0.357029},{0.891349, 0.563689, 0.358980},{0.896194, 0.566753, 0.360931},{0.901038, 0.569816, 0.362882},{0.905882, 0.572880, 0.364833},{0.910726, 0.575944, 0.366784},{0.915571, 0.579007, 0.368735},{0.920415, 0.582071, 0.370686},{0.925259, 0.585134, 0.372637},{0.930104, 0.588198, 0.374588},{0.934948, 0.591261, 0.376539},{0.939792, 0.594325, 0.378490},{0.944636, 0.597388, 0.380441},{0.949481, 0.600452, 0.382392},{0.954325, 0.603515, 0.384343},{0.959169, 0.606579, 0.386294},{0.964014, 0.609642, 0.388245},{0.968858, 0.612706, 0.390196},{0.973702, 0.615769, 0.392147},{0.978546, 0.618833, 0.394098},{0.983391, 0.621896, 0.396049},{0.988235, 0.624960, 0.398000},{0.993079, 0.628024, 0.399951},{0.997924, 0.631087, 0.401902},{1.000000, 0.634151, 0.403853},{1.000000, 0.637214, 0.405804},{1.000000, 0.640278, 0.407755},{1.000000, 0.643341, 0.409706},{1.000000, 0.646405, 0.411657},{1.000000, 0.649468, 0.413608},{1.000000, 0.652532, 0.415559},{1.000000, 0.655595, 0.417510},{1.000000, 0.658659, 0.419461},{1.000000, 0.661722, 0.421412},{1.000000, 0.664786, 0.423363},{1.000000, 0.667849, 0.425314},{1.000000, 0.670913, 0.427265},{1.000000, 0.673976, 0.429216},{1.000000, 0.677040, 0.431167},{1.000000, 0.680104, 0.433118},{1.000000, 0.683167, 0.435069},{1.000000, 0.686231, 0.437020},{1.000000, 0.689294, 0.438971},{1.000000, 0.692358, 0.440922},{1.000000, 0.695421, 0.442873},{1.000000, 0.698485, 0.444824},{1.000000, 0.701548, 0.446775},{1.000000, 0.704612, 0.448725},{1.000000, 0.707675, 0.450676},{1.000000, 0.710739, 0.452627},{1.000000, 0.713802, 0.454578},{1.000000, 0.716866, 0.456529},{1.000000, 0.719929, 0.458480},{1.000000, 0.722993, 0.460431},{1.000000, 0.726056, 0.462382},{1.000000, 0.729120, 0.464333},{1.000000, 0.732184, 0.466284},{1.000000, 0.735247, 0.468235},{1.000000, 0.738311, 0.470186},{1.000000, 0.741374, 0.472137},{1.000000, 0.744438, 0.474088},{1.000000, 0.747501, 0.476039},{1.000000, 0.750565, 0.477990},{1.000000, 0.753628, 0.479941},{1.000000, 0.756692, 0.481892},{1.000000, 0.759755, 0.483843},{1.000000, 0.762819, 0.485794},{1.000000, 0.765882, 0.487745},{1.000000, 0.768946, 0.489696},{1.000000, 0.772009, 0.491647},{1.000000, 0.775073, 0.493598},{1.000000, 0.778136, 0.495549},{1.000000, 0.781200, 0.497500}}}, - {"coolwarm", {{0.229806, 0.298718, 0.753683},{0.234377, 0.305542, 0.759680},{0.238948, 0.312365, 0.765676},{0.243520, 0.319189, 0.771672},{0.248091, 0.326013, 0.777669},{0.252663, 0.332837, 0.783665},{0.257234, 0.339661, 0.789661},{0.261805, 0.346484, 0.795658},{0.266381, 0.353304, 0.801637},{0.271104, 0.360011, 0.807095},{0.275827, 0.366717, 0.812553},{0.280550, 0.373423, 0.818011},{0.285273, 0.380129, 0.823469},{0.289996, 0.386836, 0.828926},{0.294718, 0.393542, 0.834384},{0.299441, 0.400248, 0.839842},{0.304174, 0.406945, 0.845263},{0.309060, 0.413498, 0.850128},{0.313946, 0.420052, 0.854993},{0.318832, 0.426605, 0.859857},{0.323718, 0.433158, 0.864722},{0.328604, 0.439712, 0.869587},{0.333490, 0.446265, 0.874452},{0.338377, 0.452819, 0.879317},{0.343278, 0.459354, 0.884122},{0.348323, 0.465711, 0.888346},{0.353369, 0.472069, 0.892570},{0.358415, 0.478426, 0.896795},{0.363461, 0.484784, 0.901019},{0.368507, 0.491141, 0.905243},{0.373552, 0.497499, 0.909467},{0.378598, 0.503856, 0.913692},{0.383662, 0.510183, 0.917831},{0.388852, 0.516298, 0.921373},{0.394042, 0.522413, 0.924916},{0.399231, 0.528528, 0.928459},{0.404421, 0.534643, 0.932002},{0.409611, 0.540759, 0.935545},{0.414801, 0.546874, 0.939088},{0.419991, 0.552989, 0.942630},{0.425199, 0.559058, 0.946061},{0.430507, 0.564883, 0.948889},{0.435815, 0.570707, 0.951717},{0.441123, 0.576532, 0.954545},{0.446431, 0.582356, 0.957373},{0.451739, 0.588181, 0.960201},{0.457046, 0.594006, 0.963029},{0.462354, 0.599830, 0.965857},{0.467678, 0.605591, 0.968546},{0.473070, 0.611077, 0.970634},{0.478462, 0.616564, 0.972721},{0.483854, 0.622050, 0.974808},{0.489246, 0.627536, 0.976896},{0.494638, 0.633022, 0.978983},{0.500031, 0.638508, 0.981070},{0.505423, 0.643995, 0.983157},{0.510824, 0.649397, 0.985079},{0.516260, 0.654498, 0.986407},{0.521696, 0.659599, 0.987736},{0.527132, 0.664700, 0.989065},{0.532568, 0.669801, 0.990393},{0.538004, 0.674902, 0.991722},{0.543440, 0.680003, 0.993051},{0.548876, 0.685104, 0.994379},{0.554312, 0.690097, 0.995516},{0.559747, 0.694768, 0.996075},{0.565182, 0.699438, 0.996635},{0.570616, 0.704109, 0.997195},{0.576051, 0.708780, 0.997755},{0.581486, 0.713451, 0.998314},{0.586921, 0.718121, 0.998874},{0.592356, 0.722792, 0.999434},{0.597777, 0.727330, 0.999777},{0.603162, 0.731527, 0.999565},{0.608547, 0.735725, 0.999354},{0.613933, 0.739923, 0.999142},{0.619318, 0.744121, 0.998931},{0.624703, 0.748318, 0.998719},{0.630089, 0.752516, 0.998508},{0.635474, 0.756714, 0.998297},{0.640828, 0.760752, 0.997846},{0.646113, 0.764436, 0.996868},{0.651398, 0.768121, 0.995891},{0.656683, 0.771806, 0.994914},{0.661968, 0.775491, 0.993937},{0.667253, 0.779176, 0.992959},{0.672538, 0.782861, 0.991982},{0.677823, 0.786546, 0.991005},{0.683056, 0.790043, 0.989768},{0.688188, 0.793178, 0.988038},{0.693321, 0.796314, 0.986308},{0.698454, 0.799450, 0.984577},{0.703587, 0.802586, 0.982847},{0.708720, 0.805721, 0.981117},{0.713852, 0.808857, 0.979386},{0.718985, 0.811993, 0.977656},{0.724041, 0.814910, 0.975651},{0.728970, 0.817464, 0.973188},{0.733898, 0.820018, 0.970724},{0.738826, 0.822572, 0.968261},{0.743754, 0.825125, 0.965798},{0.748682, 0.827679, 0.963334},{0.753611, 0.830233, 0.960871},{0.758539, 0.832787, 0.958408},{0.763363, 0.835092, 0.955658},{0.768034, 0.837035, 0.952488},{0.772706, 0.838978, 0.949319},{0.777378, 0.840921, 0.946149},{0.782049, 0.842864, 0.942980},{0.786721, 0.844807, 0.939810},{0.791392, 0.846750, 0.936641},{0.796064, 0.848693, 0.933471},{0.800601, 0.850358, 0.930008},{0.804965, 0.851666, 0.926165},{0.809329, 0.852974, 0.922323},{0.813693, 0.854282, 0.918480},{0.818056, 0.855590, 0.914638},{0.822420, 0.856898, 0.910795},{0.826784, 0.858205, 0.906953},{0.831148, 0.859513, 0.903110},{0.835345, 0.860514, 0.898970},{0.839351, 0.861167, 0.894494},{0.843358, 0.861820, 0.890017},{0.847365, 0.862472, 0.885540},{0.851372, 0.863125, 0.881064},{0.855378, 0.863778, 0.876587},{0.859385, 0.864431, 0.872111},{0.863392, 0.865084, 0.867634},{0.867428, 0.864377, 0.862602},{0.871493, 0.862309, 0.857016},{0.875557, 0.860242, 0.851430},{0.879622, 0.858175, 0.845844},{0.883687, 0.856108, 0.840258},{0.887752, 0.854040, 0.834671},{0.891817, 0.851973, 0.829085},{0.895882, 0.849906, 0.823499},{0.899543, 0.847500, 0.817789},{0.902849, 0.844796, 0.811970},{0.906154, 0.842091, 0.806151},{0.909460, 0.839386, 0.800331},{0.912765, 0.836682, 0.794512},{0.916071, 0.833977, 0.788693},{0.919376, 0.831273, 0.782874},{0.922681, 0.828568, 0.777054},{0.925563, 0.825517, 0.771136},{0.928116, 0.822197, 0.765141},{0.930669, 0.818877, 0.759146},{0.933221, 0.815557, 0.753151},{0.935774, 0.812237, 0.747156},{0.938326, 0.808917, 0.741162},{0.940879, 0.805596, 0.735167},{0.943432, 0.802276, 0.729172},{0.945540, 0.798606, 0.723105},{0.947345, 0.794696, 0.716991},{0.949151, 0.790785, 0.710876},{0.950956, 0.786875, 0.704761},{0.952761, 0.782965, 0.698646},{0.954566, 0.779055, 0.692531},{0.956371, 0.775144, 0.686416},{0.958176, 0.771234, 0.680301},{0.959518, 0.766973, 0.674145},{0.960581, 0.762501, 0.667964},{0.961645, 0.758029, 0.661782},{0.962708, 0.753557, 0.655601},{0.963772, 0.749086, 0.649420},{0.964835, 0.744614, 0.643239},{0.965899, 0.740142, 0.637058},{0.966962, 0.735670, 0.630877},{0.967544, 0.730850, 0.624685},{0.967874, 0.725847, 0.618489},{0.968203, 0.720844, 0.612293},{0.968533, 0.715841, 0.606097},{0.968863, 0.710838, 0.599901},{0.969192, 0.705836, 0.593704},{0.969522, 0.700833, 0.587508},{0.969851, 0.695830, 0.581312},{0.969683, 0.690484, 0.575138},{0.969289, 0.684982, 0.568975},{0.968894, 0.679480, 0.562812},{0.968500, 0.673977, 0.556649},{0.968105, 0.668475, 0.550486},{0.967711, 0.662973, 0.544323},{0.967317, 0.657471, 0.538160},{0.966922, 0.651969, 0.531997},{0.966017, 0.646130, 0.525890},{0.964911, 0.640159, 0.519806},{0.963806, 0.634188, 0.513721},{0.962701, 0.628218, 0.507636},{0.961595, 0.622247, 0.501551},{0.960490, 0.616276, 0.495467},{0.959385, 0.610306, 0.489382},{0.958279, 0.604335, 0.483297},{0.956653, 0.598034, 0.477302},{0.954853, 0.591622, 0.471337},{0.953054, 0.585211, 0.465373},{0.951254, 0.578799, 0.459408},{0.949454, 0.572388, 0.453443},{0.947654, 0.565976, 0.447478},{0.945854, 0.559565, 0.441513},{0.944055, 0.553153, 0.435548},{0.941728, 0.546413, 0.429707},{0.939254, 0.539581, 0.423900},{0.936780, 0.532750, 0.418093},{0.934305, 0.525918, 0.412286},{0.931831, 0.519086, 0.406480},{0.929357, 0.512254, 0.400673},{0.926883, 0.505422, 0.394866},{0.924409, 0.498590, 0.389059},{0.921406, 0.491420, 0.383408},{0.918282, 0.484173, 0.377794},{0.915157, 0.476927, 0.372179},{0.912033, 0.469680, 0.366565},{0.908908, 0.462433, 0.360950},{0.905783, 0.455186, 0.355336},{0.902659, 0.447939, 0.349721},{0.899534, 0.440692, 0.344107},{0.895885, 0.433075, 0.338681},{0.892138, 0.425389, 0.333289},{0.888390, 0.417703, 0.327898},{0.884643, 0.410017, 0.322507},{0.880896, 0.402331, 0.317115},{0.877149, 0.394645, 0.311724},{0.873402, 0.386960, 0.306332},{0.869655, 0.379274, 0.300941},{0.865391, 0.371128, 0.295769},{0.861054, 0.362916, 0.290628},{0.856716, 0.354704, 0.285487},{0.852378, 0.346492, 0.280346},{0.848040, 0.338280, 0.275206},{0.843703, 0.330068, 0.270065},{0.839365, 0.321856, 0.264924},{0.835027, 0.313644, 0.259783},{0.830187, 0.304733, 0.254891},{0.825294, 0.295749, 0.250025},{0.820401, 0.286765, 0.245160},{0.815508, 0.277781, 0.240294},{0.810616, 0.268797, 0.235428},{0.805723, 0.259813, 0.230562},{0.800830, 0.250829, 0.225696},{0.795938, 0.241845, 0.220830},{0.790562, 0.231397, 0.216242},{0.785153, 0.220851, 0.211673},{0.779745, 0.210305, 0.207104},{0.774337, 0.199759, 0.202535},{0.768929, 0.189213, 0.197965},{0.763520, 0.178667, 0.193396},{0.758112, 0.168122, 0.188827},{0.752704, 0.157576, 0.184258},{0.746838, 0.140021, 0.179996},{0.740957, 0.122240, 0.175744},{0.735077, 0.104460, 0.171492},{0.729196, 0.086679, 0.167240},{0.723315, 0.068898, 0.162989},{0.717435, 0.051118, 0.158737},{0.711554, 0.033337, 0.154485},{0.705673, 0.015556, 0.150233}}}, - {"jet", {{0.000000, 0.000000, 0.500000},{0.000000, 0.000000, 0.517825},{0.000000, 0.000000, 0.535651},{0.000000, 0.000000, 0.553476},{0.000000, 0.000000, 0.571301},{0.000000, 0.000000, 0.589127},{0.000000, 0.000000, 0.606952},{0.000000, 0.000000, 0.624777},{0.000000, 0.000000, 0.642602},{0.000000, 0.000000, 0.660428},{0.000000, 0.000000, 0.678253},{0.000000, 0.000000, 0.696078},{0.000000, 0.000000, 0.713904},{0.000000, 0.000000, 0.731729},{0.000000, 0.000000, 0.749554},{0.000000, 0.000000, 0.767380},{0.000000, 0.000000, 0.785205},{0.000000, 0.000000, 0.803030},{0.000000, 0.000000, 0.820856},{0.000000, 0.000000, 0.838681},{0.000000, 0.000000, 0.856506},{0.000000, 0.000000, 0.874332},{0.000000, 0.000000, 0.892157},{0.000000, 0.000000, 0.909982},{0.000000, 0.000000, 0.927807},{0.000000, 0.000000, 0.945633},{0.000000, 0.000000, 0.963458},{0.000000, 0.000000, 0.981283},{0.000000, 0.000000, 0.999109},{0.000000, 0.000000, 1.000000},{0.000000, 0.000000, 1.000000},{0.000000, 0.000000, 1.000000},{0.000000, 0.001961, 1.000000},{0.000000, 0.017647, 1.000000},{0.000000, 0.033333, 1.000000},{0.000000, 0.049020, 1.000000},{0.000000, 0.064706, 1.000000},{0.000000, 0.080392, 1.000000},{0.000000, 0.096078, 1.000000},{0.000000, 0.111765, 1.000000},{0.000000, 0.127451, 1.000000},{0.000000, 0.143137, 1.000000},{0.000000, 0.158824, 1.000000},{0.000000, 0.174510, 1.000000},{0.000000, 0.190196, 1.000000},{0.000000, 0.205882, 1.000000},{0.000000, 0.221569, 1.000000},{0.000000, 0.237255, 1.000000},{0.000000, 0.252941, 1.000000},{0.000000, 0.268627, 1.000000},{0.000000, 0.284314, 1.000000},{0.000000, 0.300000, 1.000000},{0.000000, 0.315686, 1.000000},{0.000000, 0.331373, 1.000000},{0.000000, 0.347059, 1.000000},{0.000000, 0.362745, 1.000000},{0.000000, 0.378431, 1.000000},{0.000000, 0.394118, 1.000000},{0.000000, 0.409804, 1.000000},{0.000000, 0.425490, 1.000000},{0.000000, 0.441176, 1.000000},{0.000000, 0.456863, 1.000000},{0.000000, 0.472549, 1.000000},{0.000000, 0.488235, 1.000000},{0.000000, 0.503922, 1.000000},{0.000000, 0.519608, 1.000000},{0.000000, 0.535294, 1.000000},{0.000000, 0.550980, 1.000000},{0.000000, 0.566667, 1.000000},{0.000000, 0.582353, 1.000000},{0.000000, 0.598039, 1.000000},{0.000000, 0.613725, 1.000000},{0.000000, 0.629412, 1.000000},{0.000000, 0.645098, 1.000000},{0.000000, 0.660784, 1.000000},{0.000000, 0.676471, 1.000000},{0.000000, 0.692157, 1.000000},{0.000000, 0.707843, 1.000000},{0.000000, 0.723529, 1.000000},{0.000000, 0.739216, 1.000000},{0.000000, 0.754902, 1.000000},{0.000000, 0.770588, 1.000000},{0.000000, 0.786275, 1.000000},{0.000000, 0.801961, 1.000000},{0.000000, 0.817647, 1.000000},{0.000000, 0.833333, 1.000000},{0.000000, 0.849020, 1.000000},{0.000000, 0.864706, 0.996205},{0.000000, 0.880392, 0.983555},{0.000000, 0.896078, 0.970904},{0.009488, 0.911765, 0.958254},{0.022138, 0.927451, 0.945604},{0.034788, 0.943137, 0.932954},{0.047438, 0.958824, 0.920304},{0.060089, 0.974510, 0.907653},{0.072739, 0.990196, 0.895003},{0.085389, 1.000000, 0.882353},{0.098039, 1.000000, 0.869703},{0.110689, 1.000000, 0.857052},{0.123340, 1.000000, 0.844402},{0.135990, 1.000000, 0.831752},{0.148640, 1.000000, 0.819102},{0.161290, 1.000000, 0.806452},{0.173941, 1.000000, 0.793801},{0.186591, 1.000000, 0.781151},{0.199241, 1.000000, 0.768501},{0.211891, 1.000000, 0.755851},{0.224541, 1.000000, 0.743201},{0.237192, 1.000000, 0.730550},{0.249842, 1.000000, 0.717900},{0.262492, 1.000000, 0.705250},{0.275142, 1.000000, 0.692600},{0.287793, 1.000000, 0.679949},{0.300443, 1.000000, 0.667299},{0.313093, 1.000000, 0.654649},{0.325743, 1.000000, 0.641999},{0.338393, 1.000000, 0.629349},{0.351044, 1.000000, 0.616698},{0.363694, 1.000000, 0.604048},{0.376344, 1.000000, 0.591398},{0.388994, 1.000000, 0.578748},{0.401645, 1.000000, 0.566097},{0.414295, 1.000000, 0.553447},{0.426945, 1.000000, 0.540797},{0.439595, 1.000000, 0.528147},{0.452245, 1.000000, 0.515497},{0.464896, 1.000000, 0.502846},{0.477546, 1.000000, 0.490196},{0.490196, 1.000000, 0.477546},{0.502846, 1.000000, 0.464896},{0.515497, 1.000000, 0.452245},{0.528147, 1.000000, 0.439595},{0.540797, 1.000000, 0.426945},{0.553447, 1.000000, 0.414295},{0.566097, 1.000000, 0.401645},{0.578748, 1.000000, 0.388994},{0.591398, 1.000000, 0.376344},{0.604048, 1.000000, 0.363694},{0.616698, 1.000000, 0.351044},{0.629349, 1.000000, 0.338393},{0.641999, 1.000000, 0.325743},{0.654649, 1.000000, 0.313093},{0.667299, 1.000000, 0.300443},{0.679949, 1.000000, 0.287793},{0.692600, 1.000000, 0.275142},{0.705250, 1.000000, 0.262492},{0.717900, 1.000000, 0.249842},{0.730550, 1.000000, 0.237192},{0.743201, 1.000000, 0.224541},{0.755851, 1.000000, 0.211891},{0.768501, 1.000000, 0.199241},{0.781151, 1.000000, 0.186591},{0.793801, 1.000000, 0.173941},{0.806452, 1.000000, 0.161290},{0.819102, 1.000000, 0.148640},{0.831752, 1.000000, 0.135990},{0.844402, 1.000000, 0.123340},{0.857052, 1.000000, 0.110689},{0.869703, 1.000000, 0.098039},{0.882353, 1.000000, 0.085389},{0.895003, 1.000000, 0.072739},{0.907653, 1.000000, 0.060089},{0.920304, 1.000000, 0.047438},{0.932954, 1.000000, 0.034788},{0.945604, 0.988381, 0.022138},{0.958254, 0.973856, 0.009488},{0.970904, 0.959332, 0.000000},{0.983555, 0.944808, 0.000000},{0.996205, 0.930283, 0.000000},{1.000000, 0.915759, 0.000000},{1.000000, 0.901235, 0.000000},{1.000000, 0.886710, 0.000000},{1.000000, 0.872186, 0.000000},{1.000000, 0.857662, 0.000000},{1.000000, 0.843137, 0.000000},{1.000000, 0.828613, 0.000000},{1.000000, 0.814089, 0.000000},{1.000000, 0.799564, 0.000000},{1.000000, 0.785040, 0.000000},{1.000000, 0.770516, 0.000000},{1.000000, 0.755991, 0.000000},{1.000000, 0.741467, 0.000000},{1.000000, 0.726943, 0.000000},{1.000000, 0.712418, 0.000000},{1.000000, 0.697894, 0.000000},{1.000000, 0.683370, 0.000000},{1.000000, 0.668845, 0.000000},{1.000000, 0.654321, 0.000000},{1.000000, 0.639797, 0.000000},{1.000000, 0.625272, 0.000000},{1.000000, 0.610748, 0.000000},{1.000000, 0.596224, 0.000000},{1.000000, 0.581699, 0.000000},{1.000000, 0.567175, 0.000000},{1.000000, 0.552651, 0.000000},{1.000000, 0.538126, 0.000000},{1.000000, 0.523602, 0.000000},{1.000000, 0.509078, 0.000000},{1.000000, 0.494553, 0.000000},{1.000000, 0.480029, 0.000000},{1.000000, 0.465505, 0.000000},{1.000000, 0.450980, 0.000000},{1.000000, 0.436456, 0.000000},{1.000000, 0.421932, 0.000000},{1.000000, 0.407407, 0.000000},{1.000000, 0.392883, 0.000000},{1.000000, 0.378359, 0.000000},{1.000000, 0.363834, 0.000000},{1.000000, 0.349310, 0.000000},{1.000000, 0.334786, 0.000000},{1.000000, 0.320261, 0.000000},{1.000000, 0.305737, 0.000000},{1.000000, 0.291213, 0.000000},{1.000000, 0.276688, 0.000000},{1.000000, 0.262164, 0.000000},{1.000000, 0.247640, 0.000000},{1.000000, 0.233115, 0.000000},{1.000000, 0.218591, 0.000000},{1.000000, 0.204067, 0.000000},{1.000000, 0.189542, 0.000000},{1.000000, 0.175018, 0.000000},{1.000000, 0.160494, 0.000000},{1.000000, 0.145969, 0.000000},{1.000000, 0.131445, 0.000000},{1.000000, 0.116921, 0.000000},{1.000000, 0.102397, 0.000000},{1.000000, 0.087872, 0.000000},{0.999109, 0.073348, 0.000000},{0.981283, 0.058824, 0.000000},{0.963458, 0.044299, 0.000000},{0.945633, 0.029775, 0.000000},{0.927807, 0.015251, 0.000000},{0.909982, 0.000726, 0.000000},{0.892157, 0.000000, 0.000000},{0.874332, 0.000000, 0.000000},{0.856506, 0.000000, 0.000000},{0.838681, 0.000000, 0.000000},{0.820856, 0.000000, 0.000000},{0.803030, 0.000000, 0.000000},{0.785205, 0.000000, 0.000000},{0.767380, 0.000000, 0.000000},{0.749554, 0.000000, 0.000000},{0.731729, 0.000000, 0.000000},{0.713904, 0.000000, 0.000000},{0.696078, 0.000000, 0.000000},{0.678253, 0.000000, 0.000000},{0.660428, 0.000000, 0.000000},{0.642602, 0.000000, 0.000000},{0.624777, 0.000000, 0.000000},{0.606952, 0.000000, 0.000000},{0.589127, 0.000000, 0.000000},{0.571301, 0.000000, 0.000000},{0.553476, 0.000000, 0.000000},{0.535651, 0.000000, 0.000000},{0.517825, 0.000000, 0.000000},{0.500000, 0.000000, 0.000000}}}, - {"cmrmap", {{0.000000, 0.000000, 0.000000},{0.004706, 0.004706, 0.015686},{0.009412, 0.009412, 0.031373},{0.014118, 0.014118, 0.047059},{0.018824, 0.018824, 0.062745},{0.023529, 0.023529, 0.078431},{0.028235, 0.028235, 0.094118},{0.032941, 0.032941, 0.109804},{0.037647, 0.037647, 0.125490},{0.042353, 0.042353, 0.141176},{0.047059, 0.047059, 0.156863},{0.051765, 0.051765, 0.172549},{0.056471, 0.056471, 0.188235},{0.061176, 0.061176, 0.203922},{0.065882, 0.065882, 0.219608},{0.070588, 0.070588, 0.235294},{0.075294, 0.075294, 0.250980},{0.080000, 0.080000, 0.266667},{0.084706, 0.084706, 0.282353},{0.089412, 0.089412, 0.298039},{0.094118, 0.094118, 0.313725},{0.098824, 0.098824, 0.329412},{0.103529, 0.103529, 0.345098},{0.108235, 0.108235, 0.360784},{0.112941, 0.112941, 0.376471},{0.117647, 0.117647, 0.392157},{0.122353, 0.122353, 0.407843},{0.127059, 0.127059, 0.423529},{0.131765, 0.131765, 0.439216},{0.136471, 0.136471, 0.454902},{0.141176, 0.141176, 0.470588},{0.145882, 0.145882, 0.486275},{0.150588, 0.150000, 0.500980},{0.155294, 0.150000, 0.508824},{0.160000, 0.150000, 0.516667},{0.164706, 0.150000, 0.524510},{0.169412, 0.150000, 0.532353},{0.174118, 0.150000, 0.540196},{0.178824, 0.150000, 0.548039},{0.183529, 0.150000, 0.555882},{0.188235, 0.150000, 0.563725},{0.192941, 0.150000, 0.571569},{0.197647, 0.150000, 0.579412},{0.202353, 0.150000, 0.587255},{0.207059, 0.150000, 0.595098},{0.211765, 0.150000, 0.602941},{0.216471, 0.150000, 0.610784},{0.221176, 0.150000, 0.618627},{0.225882, 0.150000, 0.626471},{0.230588, 0.150000, 0.634314},{0.235294, 0.150000, 0.642157},{0.240000, 0.150000, 0.650000},{0.244706, 0.150000, 0.657843},{0.249412, 0.150000, 0.665686},{0.254118, 0.150000, 0.673529},{0.258824, 0.150000, 0.681373},{0.263529, 0.150000, 0.689216},{0.268235, 0.150000, 0.697059},{0.272941, 0.150000, 0.704902},{0.277647, 0.150000, 0.712745},{0.282353, 0.150000, 0.720588},{0.287059, 0.150000, 0.728431},{0.291765, 0.150000, 0.736275},{0.296471, 0.150000, 0.744118},{0.302353, 0.150392, 0.748039},{0.311765, 0.151961, 0.740196},{0.321176, 0.153529, 0.732353},{0.330588, 0.155098, 0.724510},{0.340000, 0.156667, 0.716667},{0.349412, 0.158235, 0.708824},{0.358824, 0.159804, 0.700980},{0.368235, 0.161373, 0.693137},{0.377647, 0.162941, 0.685294},{0.387059, 0.164510, 0.677451},{0.396471, 0.166078, 0.669608},{0.405882, 0.167647, 0.661765},{0.415294, 0.169216, 0.653922},{0.424706, 0.170784, 0.646078},{0.434118, 0.172353, 0.638235},{0.443529, 0.173922, 0.630392},{0.452941, 0.175490, 0.622549},{0.462353, 0.177059, 0.614706},{0.471765, 0.178627, 0.606863},{0.481176, 0.180196, 0.599020},{0.490588, 0.181765, 0.591176},{0.500000, 0.183333, 0.583333},{0.509412, 0.184902, 0.575490},{0.518824, 0.186471, 0.567647},{0.528235, 0.188039, 0.559804},{0.537647, 0.189608, 0.551961},{0.547059, 0.191176, 0.544118},{0.556471, 0.192745, 0.536275},{0.565882, 0.194314, 0.528431},{0.575294, 0.195882, 0.520588},{0.584706, 0.197451, 0.512745},{0.594118, 0.199020, 0.504902},{0.604706, 0.200588, 0.495882},{0.617255, 0.202157, 0.484902},{0.629804, 0.203725, 0.473922},{0.642353, 0.205294, 0.462941},{0.654902, 0.206863, 0.451961},{0.667451, 0.208431, 0.440980},{0.680000, 0.210000, 0.430000},{0.692549, 0.211569, 0.419020},{0.705098, 0.213137, 0.408039},{0.717647, 0.214706, 0.397059},{0.730196, 0.216275, 0.386078},{0.742745, 0.217843, 0.375098},{0.755294, 0.219412, 0.364118},{0.767843, 0.220980, 0.353137},{0.780392, 0.222549, 0.342157},{0.792941, 0.224118, 0.331176},{0.805490, 0.225686, 0.320196},{0.818039, 0.227255, 0.309216},{0.830588, 0.228824, 0.298235},{0.843137, 0.230392, 0.287255},{0.855686, 0.231961, 0.276275},{0.868235, 0.233529, 0.265294},{0.880784, 0.235098, 0.254314},{0.893333, 0.236667, 0.243333},{0.905882, 0.238235, 0.232353},{0.918431, 0.239804, 0.221373},{0.930980, 0.241373, 0.210392},{0.943529, 0.242941, 0.199412},{0.956078, 0.244510, 0.188431},{0.968627, 0.246078, 0.177451},{0.981176, 0.247647, 0.166471},{0.993725, 0.249216, 0.155490},{0.998431, 0.253922, 0.147647},{0.995294, 0.261765, 0.142941},{0.992157, 0.269608, 0.138235},{0.989020, 0.277451, 0.133529},{0.985882, 0.285294, 0.128824},{0.982745, 0.293137, 0.124118},{0.979608, 0.300980, 0.119412},{0.976471, 0.308824, 0.114706},{0.973333, 0.316667, 0.110000},{0.970196, 0.324510, 0.105294},{0.967059, 0.332353, 0.100588},{0.963922, 0.340196, 0.095882},{0.960784, 0.348039, 0.091176},{0.957647, 0.355882, 0.086471},{0.954510, 0.363725, 0.081765},{0.951373, 0.371569, 0.077059},{0.948235, 0.379412, 0.072353},{0.945098, 0.387255, 0.067647},{0.941961, 0.395098, 0.062941},{0.938824, 0.402941, 0.058235},{0.935686, 0.410784, 0.053529},{0.932549, 0.418627, 0.048824},{0.929412, 0.426471, 0.044118},{0.926275, 0.434314, 0.039412},{0.923137, 0.442157, 0.034706},{0.920000, 0.450000, 0.030000},{0.916863, 0.457843, 0.025294},{0.913725, 0.465686, 0.020588},{0.910588, 0.473529, 0.015882},{0.907451, 0.481373, 0.011176},{0.904314, 0.489216, 0.006471},{0.901176, 0.497059, 0.001765},{0.900000, 0.504902, 0.001961},{0.900000, 0.512745, 0.005098},{0.900000, 0.520588, 0.008235},{0.900000, 0.528431, 0.011373},{0.900000, 0.536275, 0.014510},{0.900000, 0.544118, 0.017647},{0.900000, 0.551961, 0.020784},{0.900000, 0.559804, 0.023922},{0.900000, 0.567647, 0.027059},{0.900000, 0.575490, 0.030196},{0.900000, 0.583333, 0.033333},{0.900000, 0.591176, 0.036471},{0.900000, 0.599020, 0.039608},{0.900000, 0.606863, 0.042745},{0.900000, 0.614706, 0.045882},{0.900000, 0.622549, 0.049020},{0.900000, 0.630392, 0.052157},{0.900000, 0.638235, 0.055294},{0.900000, 0.646078, 0.058431},{0.900000, 0.653922, 0.061569},{0.900000, 0.661765, 0.064706},{0.900000, 0.669608, 0.067843},{0.900000, 0.677451, 0.070980},{0.900000, 0.685294, 0.074118},{0.900000, 0.693137, 0.077255},{0.900000, 0.700980, 0.080392},{0.900000, 0.708824, 0.083529},{0.900000, 0.716667, 0.086667},{0.900000, 0.724510, 0.089804},{0.900000, 0.732353, 0.092941},{0.900000, 0.740196, 0.096078},{0.900000, 0.748039, 0.099216},{0.900000, 0.753529, 0.109412},{0.900000, 0.758235, 0.121961},{0.900000, 0.762941, 0.134510},{0.900000, 0.767647, 0.147059},{0.900000, 0.772353, 0.159608},{0.900000, 0.777059, 0.172157},{0.900000, 0.781765, 0.184706},{0.900000, 0.786471, 0.197255},{0.900000, 0.791176, 0.209804},{0.900000, 0.795882, 0.222353},{0.900000, 0.800588, 0.234902},{0.900000, 0.805294, 0.247451},{0.900000, 0.810000, 0.260000},{0.900000, 0.814706, 0.272549},{0.900000, 0.819412, 0.285098},{0.900000, 0.824118, 0.297647},{0.900000, 0.828824, 0.310196},{0.900000, 0.833529, 0.322745},{0.900000, 0.838235, 0.335294},{0.900000, 0.842941, 0.347843},{0.900000, 0.847647, 0.360392},{0.900000, 0.852353, 0.372941},{0.900000, 0.857059, 0.385490},{0.900000, 0.861765, 0.398039},{0.900000, 0.866471, 0.410588},{0.900000, 0.871176, 0.423137},{0.900000, 0.875882, 0.435686},{0.900000, 0.880588, 0.448235},{0.900000, 0.885294, 0.460784},{0.900000, 0.890000, 0.473333},{0.900000, 0.894706, 0.485882},{0.900000, 0.899412, 0.498431},{0.902745, 0.902745, 0.513725},{0.905882, 0.905882, 0.529412},{0.909020, 0.909020, 0.545098},{0.912157, 0.912157, 0.560784},{0.915294, 0.915294, 0.576471},{0.918431, 0.918431, 0.592157},{0.921569, 0.921569, 0.607843},{0.924706, 0.924706, 0.623529},{0.927843, 0.927843, 0.639216},{0.930980, 0.930980, 0.654902},{0.934118, 0.934118, 0.670588},{0.937255, 0.937255, 0.686275},{0.940392, 0.940392, 0.701961},{0.943529, 0.943529, 0.717647},{0.946667, 0.946667, 0.733333},{0.949804, 0.949804, 0.749020},{0.952941, 0.952941, 0.764706},{0.956078, 0.956078, 0.780392},{0.959216, 0.959216, 0.796078},{0.962353, 0.962353, 0.811765},{0.965490, 0.965490, 0.827451},{0.968627, 0.968627, 0.843137},{0.971765, 0.971765, 0.858824},{0.974902, 0.974902, 0.874510},{0.978039, 0.978039, 0.890196},{0.981176, 0.981176, 0.905882},{0.984314, 0.984314, 0.921569},{0.987451, 0.987451, 0.937255},{0.990588, 0.990588, 0.952941},{0.993725, 0.993725, 0.968627},{0.996863, 0.996863, 0.984314},{1.000000, 1.000000, 1.000000}}}, - {"ocean", {{0.000000, 0.500000, 0.000000},{0.000000, 0.494118, 0.003922},{0.000000, 0.488235, 0.007843},{0.000000, 0.482353, 0.011765},{0.000000, 0.476471, 0.015686},{0.000000, 0.470588, 0.019608},{0.000000, 0.464706, 0.023529},{0.000000, 0.458824, 0.027451},{0.000000, 0.452941, 0.031373},{0.000000, 0.447059, 0.035294},{0.000000, 0.441176, 0.039216},{0.000000, 0.435294, 0.043137},{0.000000, 0.429412, 0.047059},{0.000000, 0.423529, 0.050980},{0.000000, 0.417647, 0.054902},{0.000000, 0.411765, 0.058824},{0.000000, 0.405882, 0.062745},{0.000000, 0.400000, 0.066667},{0.000000, 0.394118, 0.070588},{0.000000, 0.388235, 0.074510},{0.000000, 0.382353, 0.078431},{0.000000, 0.376471, 0.082353},{0.000000, 0.370588, 0.086275},{0.000000, 0.364706, 0.090196},{0.000000, 0.358824, 0.094118},{0.000000, 0.352941, 0.098039},{0.000000, 0.347059, 0.101961},{0.000000, 0.341176, 0.105882},{0.000000, 0.335294, 0.109804},{0.000000, 0.329412, 0.113725},{0.000000, 0.323529, 0.117647},{0.000000, 0.317647, 0.121569},{0.000000, 0.311765, 0.125490},{0.000000, 0.305882, 0.129412},{0.000000, 0.300000, 0.133333},{0.000000, 0.294118, 0.137255},{0.000000, 0.288235, 0.141176},{0.000000, 0.282353, 0.145098},{0.000000, 0.276471, 0.149020},{0.000000, 0.270588, 0.152941},{0.000000, 0.264706, 0.156863},{0.000000, 0.258824, 0.160784},{0.000000, 0.252941, 0.164706},{0.000000, 0.247059, 0.168627},{0.000000, 0.241176, 0.172549},{0.000000, 0.235294, 0.176471},{0.000000, 0.229412, 0.180392},{0.000000, 0.223529, 0.184314},{0.000000, 0.217647, 0.188235},{0.000000, 0.211765, 0.192157},{0.000000, 0.205882, 0.196078},{0.000000, 0.200000, 0.200000},{0.000000, 0.194118, 0.203922},{0.000000, 0.188235, 0.207843},{0.000000, 0.182353, 0.211765},{0.000000, 0.176471, 0.215686},{0.000000, 0.170588, 0.219608},{0.000000, 0.164706, 0.223529},{0.000000, 0.158824, 0.227451},{0.000000, 0.152941, 0.231373},{0.000000, 0.147059, 0.235294},{0.000000, 0.141176, 0.239216},{0.000000, 0.135294, 0.243137},{0.000000, 0.129412, 0.247059},{0.000000, 0.123529, 0.250980},{0.000000, 0.117647, 0.254902},{0.000000, 0.111765, 0.258824},{0.000000, 0.105882, 0.262745},{0.000000, 0.100000, 0.266667},{0.000000, 0.094118, 0.270588},{0.000000, 0.088235, 0.274510},{0.000000, 0.082353, 0.278431},{0.000000, 0.076471, 0.282353},{0.000000, 0.070588, 0.286275},{0.000000, 0.064706, 0.290196},{0.000000, 0.058824, 0.294118},{0.000000, 0.052941, 0.298039},{0.000000, 0.047059, 0.301961},{0.000000, 0.041176, 0.305882},{0.000000, 0.035294, 0.309804},{0.000000, 0.029412, 0.313725},{0.000000, 0.023529, 0.317647},{0.000000, 0.017647, 0.321569},{0.000000, 0.011765, 0.325490},{0.000000, 0.005882, 0.329412},{0.000000, 0.000000, 0.333333},{0.000000, 0.005882, 0.337255},{0.000000, 0.011765, 0.341176},{0.000000, 0.017647, 0.345098},{0.000000, 0.023529, 0.349020},{0.000000, 0.029412, 0.352941},{0.000000, 0.035294, 0.356863},{0.000000, 0.041176, 0.360784},{0.000000, 0.047059, 0.364706},{0.000000, 0.052941, 0.368627},{0.000000, 0.058824, 0.372549},{0.000000, 0.064706, 0.376471},{0.000000, 0.070588, 0.380392},{0.000000, 0.076471, 0.384314},{0.000000, 0.082353, 0.388235},{0.000000, 0.088235, 0.392157},{0.000000, 0.094118, 0.396078},{0.000000, 0.100000, 0.400000},{0.000000, 0.105882, 0.403922},{0.000000, 0.111765, 0.407843},{0.000000, 0.117647, 0.411765},{0.000000, 0.123529, 0.415686},{0.000000, 0.129412, 0.419608},{0.000000, 0.135294, 0.423529},{0.000000, 0.141176, 0.427451},{0.000000, 0.147059, 0.431373},{0.000000, 0.152941, 0.435294},{0.000000, 0.158824, 0.439216},{0.000000, 0.164706, 0.443137},{0.000000, 0.170588, 0.447059},{0.000000, 0.176471, 0.450980},{0.000000, 0.182353, 0.454902},{0.000000, 0.188235, 0.458824},{0.000000, 0.194118, 0.462745},{0.000000, 0.200000, 0.466667},{0.000000, 0.205882, 0.470588},{0.000000, 0.211765, 0.474510},{0.000000, 0.217647, 0.478431},{0.000000, 0.223529, 0.482353},{0.000000, 0.229412, 0.486275},{0.000000, 0.235294, 0.490196},{0.000000, 0.241176, 0.494118},{0.000000, 0.247059, 0.498039},{0.000000, 0.252941, 0.501961},{0.000000, 0.258824, 0.505882},{0.000000, 0.264706, 0.509804},{0.000000, 0.270588, 0.513725},{0.000000, 0.276471, 0.517647},{0.000000, 0.282353, 0.521569},{0.000000, 0.288235, 0.525490},{0.000000, 0.294118, 0.529412},{0.000000, 0.300000, 0.533333},{0.000000, 0.305882, 0.537255},{0.000000, 0.311765, 0.541176},{0.000000, 0.317647, 0.545098},{0.000000, 0.323529, 0.549020},{0.000000, 0.329412, 0.552941},{0.000000, 0.335294, 0.556863},{0.000000, 0.341176, 0.560784},{0.000000, 0.347059, 0.564706},{0.000000, 0.352941, 0.568627},{0.000000, 0.358824, 0.572549},{0.000000, 0.364706, 0.576471},{0.000000, 0.370588, 0.580392},{0.000000, 0.376471, 0.584314},{0.000000, 0.382353, 0.588235},{0.000000, 0.388235, 0.592157},{0.000000, 0.394118, 0.596078},{0.000000, 0.400000, 0.600000},{0.000000, 0.405882, 0.603922},{0.000000, 0.411765, 0.607843},{0.000000, 0.417647, 0.611765},{0.000000, 0.423529, 0.615686},{0.000000, 0.429412, 0.619608},{0.000000, 0.435294, 0.623529},{0.000000, 0.441176, 0.627451},{0.000000, 0.447059, 0.631373},{0.000000, 0.452941, 0.635294},{0.000000, 0.458824, 0.639216},{0.000000, 0.464706, 0.643137},{0.000000, 0.470588, 0.647059},{0.000000, 0.476471, 0.650980},{0.000000, 0.482353, 0.654902},{0.000000, 0.488235, 0.658824},{0.000000, 0.494118, 0.662745},{0.000000, 0.500000, 0.666667},{0.011765, 0.505882, 0.670588},{0.023529, 0.511765, 0.674510},{0.035294, 0.517647, 0.678431},{0.047059, 0.523529, 0.682353},{0.058824, 0.529412, 0.686275},{0.070588, 0.535294, 0.690196},{0.082353, 0.541176, 0.694118},{0.094118, 0.547059, 0.698039},{0.105882, 0.552941, 0.701961},{0.117647, 0.558824, 0.705882},{0.129412, 0.564706, 0.709804},{0.141176, 0.570588, 0.713725},{0.152941, 0.576471, 0.717647},{0.164706, 0.582353, 0.721569},{0.176471, 0.588235, 0.725490},{0.188235, 0.594118, 0.729412},{0.200000, 0.600000, 0.733333},{0.211765, 0.605882, 0.737255},{0.223529, 0.611765, 0.741176},{0.235294, 0.617647, 0.745098},{0.247059, 0.623529, 0.749020},{0.258824, 0.629412, 0.752941},{0.270588, 0.635294, 0.756863},{0.282353, 0.641176, 0.760784},{0.294118, 0.647059, 0.764706},{0.305882, 0.652941, 0.768627},{0.317647, 0.658824, 0.772549},{0.329412, 0.664706, 0.776471},{0.341176, 0.670588, 0.780392},{0.352941, 0.676471, 0.784314},{0.364706, 0.682353, 0.788235},{0.376471, 0.688235, 0.792157},{0.388235, 0.694118, 0.796078},{0.400000, 0.700000, 0.800000},{0.411765, 0.705882, 0.803922},{0.423529, 0.711765, 0.807843},{0.435294, 0.717647, 0.811765},{0.447059, 0.723529, 0.815686},{0.458824, 0.729412, 0.819608},{0.470588, 0.735294, 0.823529},{0.482353, 0.741176, 0.827451},{0.494118, 0.747059, 0.831373},{0.505882, 0.752941, 0.835294},{0.517647, 0.758824, 0.839216},{0.529412, 0.764706, 0.843137},{0.541176, 0.770588, 0.847059},{0.552941, 0.776471, 0.850980},{0.564706, 0.782353, 0.854902},{0.576471, 0.788235, 0.858824},{0.588235, 0.794118, 0.862745},{0.600000, 0.800000, 0.866667},{0.611765, 0.805882, 0.870588},{0.623529, 0.811765, 0.874510},{0.635294, 0.817647, 0.878431},{0.647059, 0.823529, 0.882353},{0.658824, 0.829412, 0.886275},{0.670588, 0.835294, 0.890196},{0.682353, 0.841176, 0.894118},{0.694118, 0.847059, 0.898039},{0.705882, 0.852941, 0.901961},{0.717647, 0.858824, 0.905882},{0.729412, 0.864706, 0.909804},{0.741176, 0.870588, 0.913725},{0.752941, 0.876471, 0.917647},{0.764706, 0.882353, 0.921569},{0.776471, 0.888235, 0.925490},{0.788235, 0.894118, 0.929412},{0.800000, 0.900000, 0.933333},{0.811765, 0.905882, 0.937255},{0.823529, 0.911765, 0.941176},{0.835294, 0.917647, 0.945098},{0.847059, 0.923529, 0.949020},{0.858824, 0.929412, 0.952941},{0.870588, 0.935294, 0.956863},{0.882353, 0.941176, 0.960784},{0.894118, 0.947059, 0.964706},{0.905882, 0.952941, 0.968627},{0.917647, 0.958824, 0.972549},{0.929412, 0.964706, 0.976471},{0.941176, 0.970588, 0.980392},{0.952941, 0.976471, 0.984314},{0.964706, 0.982353, 0.988235},{0.976471, 0.988235, 0.992157},{0.988235, 0.994118, 0.996078},{1.000000, 1.000000, 1.000000}}}, - {"gist_earth", {{0.000000, 0.000000, 0.000000},{0.002613, 0.000000, 0.168692},{0.005227, 0.000000, 0.221664},{0.007840, 0.000000, 0.263805},{0.010454, 0.000000, 0.305947},{0.013067, 0.000000, 0.348089},{0.015681, 0.000000, 0.390231},{0.018294, 0.000000, 0.432373},{0.020908, 0.008907, 0.454745},{0.023521, 0.017927, 0.455606},{0.026135, 0.026948, 0.456317},{0.028748, 0.035968, 0.457028},{0.031361, 0.044988, 0.457739},{0.033975, 0.054008, 0.458449},{0.036588, 0.063028, 0.459160},{0.039202, 0.072048, 0.459871},{0.041815, 0.081068, 0.460582},{0.044429, 0.090088, 0.461293},{0.047042, 0.099108, 0.462004},{0.049656, 0.108128, 0.462715},{0.052269, 0.117148, 0.463426},{0.054883, 0.126168, 0.464136},{0.057496, 0.135189, 0.464847},{0.060109, 0.144209, 0.465558},{0.062723, 0.153229, 0.466269},{0.065336, 0.162249, 0.466980},{0.067950, 0.171269, 0.467691},{0.070563, 0.180289, 0.468402},{0.073177, 0.189308, 0.469113},{0.075790, 0.197466, 0.469824},{0.078404, 0.205623, 0.470534},{0.081017, 0.213780, 0.471245},{0.083631, 0.221938, 0.471956},{0.086244, 0.230095, 0.472667},{0.088857, 0.238253, 0.473378},{0.091471, 0.246410, 0.474089},{0.094084, 0.254568, 0.474800},{0.096698, 0.262725, 0.475511},{0.099311, 0.270882, 0.476221},{0.101925, 0.279040, 0.476932},{0.104538, 0.287197, 0.477643},{0.107152, 0.295355, 0.478354},{0.109765, 0.303511, 0.479065},{0.112378, 0.310845, 0.479776},{0.114992, 0.318178, 0.480487},{0.117605, 0.325512, 0.481198},{0.120219, 0.332845, 0.481909},{0.122832, 0.340179, 0.482619},{0.125446, 0.347513, 0.483330},{0.128059, 0.354846, 0.484041},{0.130673, 0.362180, 0.484752},{0.133286, 0.369513, 0.485463},{0.135900, 0.376847, 0.486174},{0.138513, 0.384168, 0.486885},{0.141126, 0.390366, 0.487596},{0.143740, 0.396564, 0.488306},{0.146353, 0.402761, 0.489017},{0.148967, 0.408959, 0.489728},{0.151580, 0.415157, 0.490439},{0.154194, 0.421355, 0.491150},{0.156807, 0.427552, 0.491861},{0.159421, 0.433750, 0.492572},{0.162034, 0.439948, 0.493283},{0.164648, 0.446146, 0.493994},{0.167261, 0.452344, 0.494704},{0.169874, 0.458541, 0.495415},{0.172488, 0.464739, 0.496126},{0.175101, 0.470937, 0.496837},{0.177715, 0.477135, 0.497548},{0.180328, 0.483332, 0.498259},{0.182942, 0.489530, 0.498970},{0.185555, 0.495728, 0.499681},{0.188169, 0.501926, 0.500391},{0.190027, 0.504230, 0.495657},{0.191877, 0.506488, 0.490857},{0.193727, 0.508745, 0.486057},{0.195576, 0.511003, 0.481256},{0.197426, 0.513261, 0.476456},{0.199276, 0.515518, 0.471655},{0.201125, 0.517776, 0.466855},{0.202975, 0.520033, 0.462055},{0.204824, 0.522291, 0.457254},{0.206674, 0.524548, 0.452454},{0.208524, 0.526806, 0.447654},{0.210373, 0.529063, 0.442853},{0.212223, 0.531321, 0.438053},{0.214073, 0.533578, 0.433253},{0.215922, 0.535836, 0.428452},{0.217772, 0.538093, 0.423652},{0.219621, 0.540351, 0.418852},{0.221471, 0.542608, 0.414051},{0.223321, 0.544866, 0.409251},{0.225170, 0.547123, 0.404450},{0.227020, 0.549381, 0.399650},{0.228870, 0.551638, 0.394850},{0.230719, 0.553896, 0.390049},{0.232569, 0.556154, 0.385249},{0.234419, 0.558411, 0.380449},{0.236268, 0.560669, 0.375648},{0.238118, 0.562926, 0.370848},{0.239967, 0.565184, 0.366048},{0.241817, 0.567441, 0.361247},{0.243667, 0.569699, 0.356447},{0.245516, 0.571956, 0.351647},{0.247366, 0.574214, 0.346846},{0.249216, 0.576471, 0.342046},{0.251065, 0.578729, 0.337245},{0.252915, 0.580986, 0.332445},{0.254764, 0.583244, 0.327645},{0.256614, 0.585501, 0.322844},{0.258464, 0.587759, 0.318044},{0.260313, 0.590016, 0.313244},{0.262163, 0.592274, 0.308443},{0.264013, 0.594531, 0.303643},{0.265862, 0.596789, 0.298843},{0.267712, 0.599046, 0.294042},{0.269561, 0.601304, 0.289242},{0.271452, 0.603562, 0.284442},{0.280169, 0.605819, 0.279641},{0.288886, 0.608077, 0.274841},{0.297603, 0.610334, 0.277066},{0.306320, 0.612592, 0.279352},{0.315037, 0.614849, 0.281638},{0.323754, 0.617107, 0.283924},{0.332471, 0.619364, 0.286210},{0.341188, 0.621622, 0.288496},{0.349905, 0.623879, 0.290782},{0.358622, 0.626137, 0.293068},{0.367339, 0.628394, 0.295354},{0.376056, 0.630652, 0.297640},{0.384773, 0.632909, 0.299926},{0.393490, 0.635167, 0.302212},{0.402207, 0.637424, 0.304497},{0.410924, 0.639682, 0.306783},{0.419642, 0.641407, 0.309069},{0.428359, 0.643128, 0.311355},{0.437076, 0.644848, 0.313641},{0.445793, 0.646569, 0.315927},{0.454510, 0.648290, 0.318213},{0.463227, 0.650010, 0.320499},{0.471932, 0.651731, 0.321739},{0.478399, 0.653452, 0.322978},{0.484866, 0.655172, 0.324218},{0.491332, 0.656893, 0.325457},{0.497799, 0.658614, 0.326697},{0.504266, 0.660334, 0.327936},{0.510732, 0.662055, 0.329175},{0.517199, 0.663776, 0.330415},{0.523665, 0.665497, 0.331654},{0.530132, 0.667217, 0.332894},{0.536599, 0.668938, 0.334133},{0.543065, 0.670659, 0.335372},{0.549532, 0.672379, 0.336612},{0.555999, 0.674100, 0.337851},{0.562465, 0.675821, 0.339091},{0.568932, 0.677541, 0.340330},{0.575399, 0.679262, 0.341570},{0.581865, 0.680983, 0.342809},{0.588332, 0.682703, 0.344048},{0.594798, 0.684424, 0.345288},{0.601265, 0.686145, 0.346527},{0.607732, 0.687866, 0.347767},{0.614198, 0.689586, 0.349006},{0.620665, 0.691307, 0.350246},{0.627132, 0.693028, 0.351485},{0.633598, 0.694748, 0.352724},{0.640065, 0.696469, 0.353964},{0.646532, 0.698190, 0.355203},{0.652998, 0.699910, 0.356443},{0.659465, 0.701631, 0.357682},{0.665932, 0.703352, 0.358922},{0.672398, 0.705072, 0.360161},{0.678865, 0.706793, 0.361400},{0.685331, 0.708514, 0.362640},{0.691798, 0.710234, 0.363879},{0.698265, 0.711955, 0.365119},{0.704731, 0.713676, 0.366358},{0.711198, 0.715397, 0.367598},{0.717616, 0.717066, 0.368837},{0.719255, 0.713679, 0.370076},{0.720895, 0.710293, 0.371316},{0.722534, 0.706906, 0.372555},{0.724173, 0.703519, 0.373795},{0.725812, 0.700132, 0.375034},{0.727451, 0.696745, 0.376274},{0.729090, 0.693358, 0.377513},{0.730729, 0.689972, 0.378752},{0.732368, 0.686585, 0.379992},{0.734007, 0.683198, 0.381231},{0.735646, 0.679811, 0.382471},{0.737285, 0.676424, 0.383710},{0.738924, 0.673038, 0.384950},{0.740563, 0.669651, 0.386189},{0.742202, 0.666264, 0.387428},{0.743841, 0.662877, 0.388668},{0.745480, 0.659490, 0.389907},{0.747119, 0.656104, 0.391147},{0.748759, 0.652717, 0.392386},{0.750398, 0.649330, 0.393625},{0.752037, 0.645943, 0.394865},{0.753676, 0.642556, 0.396134},{0.755339, 0.639219, 0.405741},{0.759726, 0.641277, 0.415349},{0.764112, 0.642991, 0.424956},{0.768498, 0.644700, 0.434564},{0.772885, 0.646409, 0.444171},{0.777271, 0.648137, 0.453779},{0.781657, 0.651513, 0.463386},{0.786044, 0.654888, 0.472994},{0.790430, 0.658287, 0.482601},{0.794816, 0.661685, 0.492208},{0.799203, 0.665084, 0.501816},{0.803589, 0.668483, 0.511423},{0.807975, 0.671882, 0.521031},{0.812361, 0.675280, 0.530638},{0.816748, 0.678679, 0.540246},{0.821134, 0.682078, 0.549853},{0.825520, 0.685476, 0.559461},{0.829907, 0.688875, 0.569068},{0.834293, 0.692274, 0.578676},{0.838679, 0.695672, 0.588283},{0.843066, 0.699071, 0.597891},{0.847452, 0.704683, 0.607498},{0.851838, 0.710314, 0.617106},{0.856225, 0.715923, 0.626713},{0.860611, 0.721533, 0.636321},{0.864997, 0.726915, 0.645928},{0.869383, 0.732295, 0.655536},{0.873770, 0.737674, 0.665153},{0.878156, 0.743077, 0.676973},{0.882542, 0.750747, 0.688794},{0.886929, 0.758418, 0.700614},{0.891315, 0.766089, 0.712434},{0.895701, 0.773759, 0.724254},{0.900088, 0.781430, 0.736075},{0.904474, 0.789101, 0.747895},{0.908860, 0.796771, 0.759715},{0.913246, 0.804442, 0.771535},{0.917633, 0.812113, 0.783356},{0.922019, 0.819783, 0.795176},{0.926405, 0.827454, 0.806996},{0.930792, 0.836438, 0.818816},{0.935178, 0.845430, 0.830637},{0.939564, 0.854422, 0.842457},{0.943951, 0.863415, 0.854277},{0.948337, 0.872514, 0.866097},{0.952723, 0.881617, 0.877918},{0.957110, 0.893070, 0.889738},{0.961496, 0.904522, 0.901558},{0.965882, 0.915975, 0.913378},{0.970268, 0.927427, 0.925199},{0.974655, 0.938880, 0.937019},{0.979041, 0.950332, 0.948839},{0.983427, 0.961785, 0.960659},{0.987814, 0.973237, 0.972480},{0.992200, 0.984300, 0.984300}}}, - {"terrain", {{0.200000, 0.200000, 0.600000},{0.194771, 0.210458, 0.610458},{0.189542, 0.220915, 0.620915},{0.184314, 0.231373, 0.631373},{0.179085, 0.241830, 0.641830},{0.173856, 0.252288, 0.652288},{0.168627, 0.262745, 0.662745},{0.163399, 0.273203, 0.673203},{0.158170, 0.283660, 0.683660},{0.152941, 0.294118, 0.694118},{0.147712, 0.304575, 0.704575},{0.142484, 0.315033, 0.715033},{0.137255, 0.325490, 0.725490},{0.132026, 0.335948, 0.735948},{0.126797, 0.346405, 0.746405},{0.121569, 0.356863, 0.756863},{0.116340, 0.367320, 0.767320},{0.111111, 0.377778, 0.777778},{0.105882, 0.388235, 0.788235},{0.100654, 0.398693, 0.798693},{0.095425, 0.409150, 0.809150},{0.090196, 0.419608, 0.819608},{0.084967, 0.430065, 0.830065},{0.079739, 0.440523, 0.840523},{0.074510, 0.450980, 0.850980},{0.069281, 0.461438, 0.861438},{0.064052, 0.471895, 0.871895},{0.058824, 0.482353, 0.882353},{0.053595, 0.492810, 0.892810},{0.048366, 0.503268, 0.903268},{0.043137, 0.513725, 0.913725},{0.037908, 0.524183, 0.924183},{0.032680, 0.534641, 0.934641},{0.027451, 0.545098, 0.945098},{0.022222, 0.555556, 0.955556},{0.016993, 0.566013, 0.966013},{0.011765, 0.576471, 0.976471},{0.006536, 0.586928, 0.986928},{0.001307, 0.597386, 0.997386},{0.000000, 0.605882, 0.982353},{0.000000, 0.613725, 0.958824},{0.000000, 0.621569, 0.935294},{0.000000, 0.629412, 0.911765},{0.000000, 0.637255, 0.888235},{0.000000, 0.645098, 0.864706},{0.000000, 0.652941, 0.841176},{0.000000, 0.660784, 0.817647},{0.000000, 0.668627, 0.794118},{0.000000, 0.676471, 0.770588},{0.000000, 0.684314, 0.747059},{0.000000, 0.692157, 0.723529},{0.000000, 0.700000, 0.700000},{0.000000, 0.707843, 0.676471},{0.000000, 0.715686, 0.652941},{0.000000, 0.723529, 0.629412},{0.000000, 0.731373, 0.605882},{0.000000, 0.739216, 0.582353},{0.000000, 0.747059, 0.558824},{0.000000, 0.754902, 0.535294},{0.000000, 0.762745, 0.511765},{0.000000, 0.770588, 0.488235},{0.000000, 0.778431, 0.464706},{0.000000, 0.786275, 0.441176},{0.000000, 0.794118, 0.417647},{0.003922, 0.800784, 0.400784},{0.019608, 0.803922, 0.403922},{0.035294, 0.807059, 0.407059},{0.050980, 0.810196, 0.410196},{0.066667, 0.813333, 0.413333},{0.082353, 0.816471, 0.416471},{0.098039, 0.819608, 0.419608},{0.113725, 0.822745, 0.422745},{0.129412, 0.825882, 0.425882},{0.145098, 0.829020, 0.429020},{0.160784, 0.832157, 0.432157},{0.176471, 0.835294, 0.435294},{0.192157, 0.838431, 0.438431},{0.207843, 0.841569, 0.441569},{0.223529, 0.844706, 0.444706},{0.239216, 0.847843, 0.447843},{0.254902, 0.850980, 0.450980},{0.270588, 0.854118, 0.454118},{0.286275, 0.857255, 0.457255},{0.301961, 0.860392, 0.460392},{0.317647, 0.863529, 0.463529},{0.333333, 0.866667, 0.466667},{0.349020, 0.869804, 0.469804},{0.364706, 0.872941, 0.472941},{0.380392, 0.876078, 0.476078},{0.396078, 0.879216, 0.479216},{0.411765, 0.882353, 0.482353},{0.427451, 0.885490, 0.485490},{0.443137, 0.888627, 0.488627},{0.458824, 0.891765, 0.491765},{0.474510, 0.894902, 0.494902},{0.490196, 0.898039, 0.498039},{0.505882, 0.901176, 0.501176},{0.521569, 0.904314, 0.504314},{0.537255, 0.907451, 0.507451},{0.552941, 0.910588, 0.510588},{0.568627, 0.913725, 0.513725},{0.584314, 0.916863, 0.516863},{0.600000, 0.920000, 0.520000},{0.615686, 0.923137, 0.523137},{0.631373, 0.926275, 0.526275},{0.647059, 0.929412, 0.529412},{0.662745, 0.932549, 0.532549},{0.678431, 0.935686, 0.535686},{0.694118, 0.938824, 0.538824},{0.709804, 0.941961, 0.541961},{0.725490, 0.945098, 0.545098},{0.741176, 0.948235, 0.548235},{0.756863, 0.951373, 0.551373},{0.772549, 0.954510, 0.554510},{0.788235, 0.957647, 0.557647},{0.803922, 0.960784, 0.560784},{0.819608, 0.963922, 0.563922},{0.835294, 0.967059, 0.567059},{0.850980, 0.970196, 0.570196},{0.866667, 0.973333, 0.573333},{0.882353, 0.976471, 0.576471},{0.898039, 0.979608, 0.579608},{0.913725, 0.982745, 0.582745},{0.929412, 0.985882, 0.585882},{0.945098, 0.989020, 0.589020},{0.960784, 0.992157, 0.592157},{0.976471, 0.995294, 0.595294},{0.992157, 0.998431, 0.598431},{0.996078, 0.994980, 0.597882},{0.988235, 0.984941, 0.593647},{0.980392, 0.974902, 0.589412},{0.972549, 0.964863, 0.585176},{0.964706, 0.954824, 0.580941},{0.956863, 0.944784, 0.576706},{0.949020, 0.934745, 0.572471},{0.941176, 0.924706, 0.568235},{0.933333, 0.914667, 0.564000},{0.925490, 0.904627, 0.559765},{0.917647, 0.894588, 0.555529},{0.909804, 0.884549, 0.551294},{0.901961, 0.874510, 0.547059},{0.894118, 0.864471, 0.542824},{0.886275, 0.854431, 0.538588},{0.878431, 0.844392, 0.534353},{0.870588, 0.834353, 0.530118},{0.862745, 0.824314, 0.525882},{0.854902, 0.814275, 0.521647},{0.847059, 0.804235, 0.517412},{0.839216, 0.794196, 0.513176},{0.831373, 0.784157, 0.508941},{0.823529, 0.774118, 0.504706},{0.815686, 0.764078, 0.500471},{0.807843, 0.754039, 0.496235},{0.800000, 0.744000, 0.492000},{0.792157, 0.733961, 0.487765},{0.784314, 0.723922, 0.483529},{0.776471, 0.713882, 0.479294},{0.768627, 0.703843, 0.475059},{0.760784, 0.693804, 0.470824},{0.752941, 0.683765, 0.466588},{0.745098, 0.673725, 0.462353},{0.737255, 0.663686, 0.458118},{0.729412, 0.653647, 0.453882},{0.721569, 0.643608, 0.449647},{0.713725, 0.633569, 0.445412},{0.705882, 0.623529, 0.441176},{0.698039, 0.613490, 0.436941},{0.690196, 0.603451, 0.432706},{0.682353, 0.593412, 0.428471},{0.674510, 0.583373, 0.424235},{0.666667, 0.573333, 0.420000},{0.658824, 0.563294, 0.415765},{0.650980, 0.553255, 0.411529},{0.643137, 0.543216, 0.407294},{0.635294, 0.533176, 0.403059},{0.627451, 0.523137, 0.398824},{0.619608, 0.513098, 0.394588},{0.611765, 0.503059, 0.390353},{0.603922, 0.493020, 0.386118},{0.596078, 0.482980, 0.381882},{0.588235, 0.472941, 0.377647},{0.580392, 0.462902, 0.373412},{0.572549, 0.452863, 0.369176},{0.564706, 0.442824, 0.364941},{0.556863, 0.432784, 0.360706},{0.549020, 0.422745, 0.356471},{0.541176, 0.412706, 0.352235},{0.533333, 0.402667, 0.348000},{0.525490, 0.392627, 0.343765},{0.517647, 0.382588, 0.339529},{0.509804, 0.372549, 0.335294},{0.501961, 0.362510, 0.331059},{0.505882, 0.367529, 0.337882},{0.513725, 0.377569, 0.348392},{0.521569, 0.387608, 0.358902},{0.529412, 0.397647, 0.369412},{0.537255, 0.407686, 0.379922},{0.545098, 0.417725, 0.390431},{0.552941, 0.427765, 0.400941},{0.560784, 0.437804, 0.411451},{0.568627, 0.447843, 0.421961},{0.576471, 0.457882, 0.432471},{0.584314, 0.467922, 0.442980},{0.592157, 0.477961, 0.453490},{0.600000, 0.488000, 0.464000},{0.607843, 0.498039, 0.474510},{0.615686, 0.508078, 0.485020},{0.623529, 0.518118, 0.495529},{0.631373, 0.528157, 0.506039},{0.639216, 0.538196, 0.516549},{0.647059, 0.548235, 0.527059},{0.654902, 0.558275, 0.537569},{0.662745, 0.568314, 0.548078},{0.670588, 0.578353, 0.558588},{0.678431, 0.588392, 0.569098},{0.686275, 0.598431, 0.579608},{0.694118, 0.608471, 0.590118},{0.701961, 0.618510, 0.600627},{0.709804, 0.628549, 0.611137},{0.717647, 0.638588, 0.621647},{0.725490, 0.648627, 0.632157},{0.733333, 0.658667, 0.642667},{0.741176, 0.668706, 0.653176},{0.749020, 0.678745, 0.663686},{0.756863, 0.688784, 0.674196},{0.764706, 0.698824, 0.684706},{0.772549, 0.708863, 0.695216},{0.780392, 0.718902, 0.705725},{0.788235, 0.728941, 0.716235},{0.796078, 0.738980, 0.726745},{0.803922, 0.749020, 0.737255},{0.811765, 0.759059, 0.747765},{0.819608, 0.769098, 0.758275},{0.827451, 0.779137, 0.768784},{0.835294, 0.789176, 0.779294},{0.843137, 0.799216, 0.789804},{0.850980, 0.809255, 0.800314},{0.858824, 0.819294, 0.810824},{0.866667, 0.829333, 0.821333},{0.874510, 0.839373, 0.831843},{0.882353, 0.849412, 0.842353},{0.890196, 0.859451, 0.852863},{0.898039, 0.869490, 0.863373},{0.905882, 0.879529, 0.873882},{0.913725, 0.889569, 0.884392},{0.921569, 0.899608, 0.894902},{0.929412, 0.909647, 0.905412},{0.937255, 0.919686, 0.915922},{0.945098, 0.929725, 0.926431},{0.952941, 0.939765, 0.936941},{0.960784, 0.949804, 0.947451},{0.968627, 0.959843, 0.957961},{0.976471, 0.969882, 0.968471},{0.984314, 0.979922, 0.978980},{0.992157, 0.989961, 0.989490},{1.000000, 1.000000, 1.000000}}}, - {"twilight", {{0.885750, 0.850009, 0.887974},{0.881722, 0.851276, 0.886381},{0.877249, 0.851870, 0.884341},{0.872331, 0.851802, 0.881897},{0.866960, 0.851090, 0.879098},{0.861102, 0.849768, 0.875992},{0.854726, 0.847875, 0.872628},{0.847807, 0.845455, 0.869040},{0.840304, 0.842561, 0.865251},{0.832227, 0.839235, 0.861276},{0.823574, 0.835525, 0.857132},{0.814390, 0.831466, 0.852838},{0.804692, 0.827098, 0.848424},{0.794543, 0.822451, 0.843922},{0.783991, 0.817554, 0.839367},{0.773084, 0.812435, 0.834802},{0.761869, 0.807119, 0.830266},{0.750403, 0.801627, 0.825797},{0.738738, 0.795977, 0.821429},{0.726922, 0.790185, 0.817192},{0.715004, 0.784265, 0.813111},{0.703030, 0.778229, 0.809206},{0.691046, 0.772086, 0.805488},{0.679096, 0.765845, 0.801965},{0.667215, 0.759511, 0.798637},{0.655437, 0.753092, 0.795503},{0.643791, 0.746592, 0.792557},{0.632303, 0.740017, 0.789789},{0.620992, 0.733369, 0.787190},{0.609875, 0.726654, 0.784748},{0.598967, 0.719874, 0.782453},{0.588276, 0.713032, 0.780291},{0.577812, 0.706131, 0.778253},{0.567581, 0.699173, 0.776327},{0.557589, 0.692159, 0.774504},{0.547841, 0.685091, 0.772774},{0.538340, 0.677971, 0.771127},{0.529091, 0.670798, 0.769556},{0.520096, 0.663574, 0.768051},{0.511360, 0.656299, 0.766607},{0.502885, 0.648972, 0.765214},{0.494676, 0.641595, 0.763867},{0.486736, 0.634166, 0.762558},{0.479068, 0.626687, 0.761280},{0.471676, 0.619155, 0.760027},{0.464564, 0.611572, 0.758792},{0.457734, 0.603936, 0.757569},{0.451189, 0.596248, 0.756351},{0.444932, 0.588506, 0.755131},{0.438966, 0.580710, 0.753903},{0.433290, 0.572859, 0.752659},{0.427907, 0.564954, 0.751394},{0.422815, 0.556994, 0.750101},{0.418014, 0.548978, 0.748772},{0.413502, 0.540906, 0.747401},{0.409277, 0.532777, 0.745980},{0.405333, 0.524592, 0.744504},{0.401667, 0.516350, 0.742964},{0.398272, 0.508052, 0.741355},{0.395141, 0.499696, 0.739668},{0.392265, 0.491283, 0.737898},{0.389636, 0.482813, 0.736038},{0.387243, 0.474286, 0.734080},{0.385076, 0.465703, 0.732019},{0.383122, 0.457063, 0.729846},{0.381369, 0.448367, 0.727557},{0.379804, 0.439616, 0.725143},{0.378414, 0.430809, 0.722599},{0.377184, 0.421947, 0.719918},{0.376100, 0.413031, 0.717094},{0.375148, 0.404061, 0.714119},{0.374313, 0.395039, 0.710988},{0.373581, 0.385965, 0.707693},{0.372936, 0.376840, 0.704228},{0.372364, 0.367665, 0.700585},{0.371851, 0.358441, 0.696757},{0.371381, 0.349171, 0.692737},{0.370942, 0.339856, 0.688517},{0.370517, 0.330497, 0.684089},{0.370095, 0.321098, 0.679444},{0.369660, 0.311661, 0.674573},{0.369198, 0.302189, 0.669468},{0.368697, 0.292687, 0.664116},{0.368141, 0.283159, 0.658509},{0.367517, 0.273611, 0.652634},{0.366811, 0.264049, 0.646480},{0.366009, 0.254480, 0.640034},{0.365096, 0.244915, 0.633282},{0.364057, 0.235365, 0.626210},{0.362876, 0.225841, 0.618804},{0.361538, 0.216361, 0.611049},{0.360027, 0.206941, 0.602928},{0.358325, 0.197603, 0.594428},{0.356414, 0.188371, 0.585532},{0.354275, 0.179274, 0.576228},{0.351892, 0.170343, 0.566503},{0.349245, 0.161615, 0.556348},{0.346315, 0.153128, 0.545760},{0.343086, 0.144925, 0.534737},{0.339542, 0.137048, 0.523288},{0.335670, 0.129541, 0.511428},{0.331462, 0.122442, 0.499183},{0.326914, 0.115787, 0.486586},{0.322029, 0.109601, 0.473685},{0.316816, 0.103899, 0.460534},{0.311294, 0.098685, 0.447193},{0.305487, 0.093953, 0.433728},{0.299425, 0.089682, 0.420216},{0.293146, 0.085851, 0.406722},{0.286692, 0.082430, 0.393312},{0.280106, 0.079390, 0.380050},{0.273437, 0.076703, 0.366996},{0.266732, 0.074344, 0.354203},{0.260039, 0.072295, 0.341718},{0.253407, 0.070534, 0.329595},{0.246882, 0.069054, 0.317870},{0.240508, 0.067857, 0.306571},{0.234331, 0.066936, 0.295740},{0.228392, 0.066290, 0.285411},{0.222727, 0.065934, 0.275597},{0.217378, 0.065860, 0.266342},{0.212374, 0.066085, 0.257652},{0.207744, 0.066615, 0.249546},{0.203520, 0.067444, 0.242056},{0.199716, 0.068593, 0.235171},{0.196083, 0.070321, 0.228747},{0.191994, 0.073183, 0.222434},{0.187392, 0.077102, 0.216189},{0.187745, 0.077252, 0.213874},{0.193155, 0.073607, 0.215424},{0.198193, 0.070975, 0.216910},{0.202904, 0.069435, 0.218332},{0.207857, 0.068484, 0.220001},{0.213331, 0.067830, 0.222070},{0.219305, 0.067466, 0.224510},{0.225754, 0.067382, 0.227290},{0.232663, 0.067557, 0.230376},{0.239996, 0.067985, 0.233734},{0.247721, 0.068653, 0.237329},{0.255821, 0.069532, 0.241122},{0.264255, 0.070617, 0.245078},{0.272997, 0.071884, 0.249158},{0.282017, 0.073316, 0.253328},{0.291285, 0.074899, 0.257551},{0.300773, 0.076618, 0.261793},{0.310455, 0.078457, 0.266020},{0.320300, 0.080413, 0.270203},{0.330292, 0.082468, 0.274309},{0.340402, 0.084622, 0.278313},{0.350607, 0.086876, 0.282188},{0.360888, 0.089227, 0.285911},{0.371225, 0.091680, 0.289459},{0.381602, 0.094239, 0.292811},{0.391999, 0.096916, 0.295952},{0.402397, 0.099723, 0.298867},{0.412780, 0.102673, 0.301542},{0.423132, 0.105781, 0.303968},{0.433436, 0.109064, 0.306138},{0.443674, 0.112539, 0.308050},{0.453830, 0.116222, 0.309704},{0.463891, 0.120126, 0.311103},{0.473841, 0.124264, 0.312255},{0.483666, 0.128647, 0.313172},{0.493355, 0.133281, 0.313866},{0.502895, 0.138171, 0.314357},{0.512278, 0.143317, 0.314663},{0.521497, 0.148715, 0.314808},{0.530544, 0.154362, 0.314813},{0.539417, 0.160248, 0.314703},{0.548114, 0.166363, 0.314501},{0.556632, 0.172697, 0.314230},{0.564973, 0.179237, 0.313914},{0.573138, 0.185970, 0.313571},{0.581129, 0.192885, 0.313224},{0.588949, 0.199970, 0.312889},{0.596599, 0.207213, 0.312585},{0.604084, 0.214603, 0.312327},{0.611406, 0.222131, 0.312129},{0.618569, 0.229788, 0.312005},{0.625574, 0.237565, 0.311967},{0.632425, 0.245456, 0.312028},{0.639124, 0.253454, 0.312197},{0.645673, 0.261552, 0.312487},{0.652074, 0.269747, 0.312906},{0.658328, 0.278032, 0.313464},{0.664436, 0.286405, 0.314172},{0.670400, 0.294861, 0.315038},{0.676219, 0.303398, 0.316072},{0.681895, 0.312011, 0.317284},{0.687427, 0.320700, 0.318681},{0.692815, 0.329460, 0.320275},{0.698061, 0.338290, 0.322075},{0.703162, 0.347187, 0.324089},{0.708121, 0.356150, 0.326329},{0.712935, 0.365176, 0.328803},{0.717604, 0.374263, 0.331521},{0.722130, 0.383409, 0.334495},{0.726511, 0.392611, 0.337733},{0.730748, 0.401869, 0.341245},{0.734841, 0.411178, 0.345042},{0.738791, 0.420537, 0.349133},{0.742599, 0.429943, 0.353527},{0.746266, 0.439392, 0.358234},{0.749794, 0.448883, 0.363263},{0.753186, 0.458412, 0.368622},{0.756443, 0.467975, 0.374319},{0.759571, 0.477569, 0.380361},{0.762573, 0.487189, 0.386753},{0.765455, 0.496832, 0.393503},{0.768222, 0.506494, 0.400613},{0.770881, 0.516169, 0.408087},{0.773440, 0.525853, 0.415927},{0.775908, 0.535542, 0.424134},{0.778293, 0.545231, 0.432707},{0.780608, 0.554913, 0.441643},{0.782862, 0.564585, 0.450940},{0.785068, 0.574242, 0.460591},{0.787239, 0.583877, 0.470590},{0.789387, 0.593488, 0.480929},{0.791528, 0.603067, 0.491597},{0.793676, 0.612610, 0.502582},{0.795843, 0.622114, 0.513871},{0.798044, 0.631573, 0.525451},{0.800294, 0.640982, 0.537305},{0.802605, 0.650338, 0.549417},{0.804991, 0.659635, 0.561767},{0.807461, 0.668870, 0.574337},{0.810028, 0.678037, 0.587106},{0.812699, 0.687130, 0.600052},{0.815481, 0.696145, 0.613152},{0.818379, 0.705074, 0.626382},{0.821395, 0.713911, 0.639718},{0.824527, 0.722646, 0.653131},{0.827772, 0.731270, 0.666596},{0.831122, 0.739772, 0.680081},{0.834566, 0.748138, 0.693557},{0.838091, 0.756353, 0.706986},{0.841678, 0.764401, 0.720333},{0.845298, 0.772263, 0.733564},{0.848922, 0.779920, 0.746637},{0.852519, 0.787349, 0.759499},{0.856040, 0.794530, 0.772106},{0.859435, 0.801439, 0.784398},{0.862656, 0.808055, 0.796283},{0.865649, 0.814355, 0.807670},{0.868400, 0.820309, 0.818416},{0.870938, 0.825869, 0.828385},{0.873352, 0.830967, 0.837489},{0.875715, 0.835530, 0.845755},{0.878023, 0.839502, 0.853306},{0.880193, 0.842852, 0.860274},{0.882115, 0.845570, 0.866738},{0.883691, 0.847649, 0.872741},{0.884851, 0.849084, 0.878282},{0.885547, 0.849872, 0.883362},{0.885712, 0.850022, 0.885725}}}, - {"ylgn", {{1.000000, 1.000000, 0.898039},{0.999016, 0.999631, 0.892626},{0.998032, 0.999262, 0.887213},{0.997047, 0.998893, 0.881799},{0.996063, 0.998524, 0.876386},{0.995079, 0.998155, 0.870973},{0.994095, 0.997785, 0.865559},{0.993110, 0.997416, 0.860146},{0.992126, 0.997047, 0.854733},{0.991142, 0.996678, 0.849319},{0.990158, 0.996309, 0.843906},{0.989173, 0.995940, 0.838493},{0.988189, 0.995571, 0.833080},{0.987205, 0.995202, 0.827666},{0.986221, 0.994833, 0.822253},{0.985236, 0.994464, 0.816840},{0.984252, 0.994095, 0.811426},{0.983268, 0.993725, 0.806013},{0.982284, 0.993356, 0.800600},{0.981300, 0.992987, 0.795186},{0.980315, 0.992618, 0.789773},{0.979331, 0.992249, 0.784360},{0.978347, 0.991880, 0.778947},{0.977363, 0.991511, 0.773533},{0.976378, 0.991142, 0.768120},{0.975394, 0.990773, 0.762707},{0.974410, 0.990404, 0.757293},{0.973426, 0.990035, 0.751880},{0.972441, 0.989666, 0.746467},{0.971457, 0.989296, 0.741053},{0.970473, 0.988927, 0.735640},{0.969489, 0.988558, 0.730227},{0.968166, 0.988051, 0.725152},{0.964475, 0.986574, 0.722445},{0.960784, 0.985098, 0.719739},{0.957093, 0.983622, 0.717032},{0.953403, 0.982145, 0.714325},{0.949712, 0.980669, 0.711619},{0.946021, 0.979193, 0.708912},{0.942330, 0.977716, 0.706205},{0.938639, 0.976240, 0.703499},{0.934948, 0.974764, 0.700792},{0.931257, 0.973287, 0.698085},{0.927566, 0.971811, 0.695379},{0.923875, 0.970334, 0.692672},{0.920185, 0.968858, 0.689965},{0.916494, 0.967382, 0.687259},{0.912803, 0.965905, 0.684552},{0.909112, 0.964429, 0.681845},{0.905421, 0.962953, 0.679139},{0.901730, 0.961476, 0.676432},{0.898039, 0.960000, 0.673725},{0.894348, 0.958524, 0.671019},{0.890657, 0.957047, 0.668312},{0.886967, 0.955571, 0.665606},{0.883276, 0.954095, 0.662899},{0.879585, 0.952618, 0.660192},{0.875894, 0.951142, 0.657486},{0.872203, 0.949666, 0.654779},{0.868512, 0.948189, 0.652072},{0.864821, 0.946713, 0.649366},{0.861130, 0.945236, 0.646659},{0.857439, 0.943760, 0.643952},{0.853749, 0.942284, 0.641246},{0.849627, 0.940592, 0.638570},{0.844214, 0.938255, 0.635986},{0.838800, 0.935917, 0.633403},{0.833387, 0.933579, 0.630819},{0.827974, 0.931242, 0.628235},{0.822561, 0.928904, 0.625652},{0.817147, 0.926567, 0.623068},{0.811734, 0.924229, 0.620484},{0.806321, 0.921892, 0.617901},{0.800907, 0.919554, 0.615317},{0.795494, 0.917216, 0.612734},{0.790081, 0.914879, 0.610150},{0.784667, 0.912541, 0.607566},{0.779254, 0.910204, 0.604983},{0.773841, 0.907866, 0.602399},{0.768428, 0.905529, 0.599815},{0.763014, 0.903191, 0.597232},{0.757601, 0.900854, 0.594648},{0.752188, 0.898516, 0.592065},{0.746774, 0.896178, 0.589481},{0.741361, 0.893841, 0.586897},{0.735948, 0.891503, 0.584314},{0.730534, 0.889166, 0.581730},{0.725121, 0.886828, 0.579146},{0.719708, 0.884491, 0.576563},{0.714295, 0.882153, 0.573979},{0.708881, 0.879815, 0.571396},{0.703468, 0.877478, 0.568812},{0.698055, 0.875140, 0.566228},{0.692641, 0.872803, 0.563645},{0.687228, 0.870465, 0.561061},{0.681815, 0.868128, 0.558478},{0.675986, 0.865606, 0.555894},{0.669466, 0.862776, 0.553310},{0.662945, 0.859946, 0.550727},{0.656424, 0.857116, 0.548143},{0.649904, 0.854287, 0.545559},{0.643383, 0.851457, 0.542976},{0.636863, 0.848627, 0.540392},{0.630342, 0.845798, 0.537809},{0.623822, 0.842968, 0.535225},{0.617301, 0.840138, 0.532641},{0.610780, 0.837309, 0.530058},{0.604260, 0.834479, 0.527474},{0.597739, 0.831649, 0.524890},{0.591219, 0.828820, 0.522307},{0.584698, 0.825990, 0.519723},{0.578178, 0.823160, 0.517140},{0.571657, 0.820331, 0.514556},{0.565136, 0.817501, 0.511972},{0.558616, 0.814671, 0.509389},{0.552095, 0.811842, 0.506805},{0.545575, 0.809012, 0.504221},{0.539054, 0.806182, 0.501638},{0.532534, 0.803353, 0.499054},{0.526013, 0.800523, 0.496471},{0.519493, 0.797693, 0.493887},{0.512972, 0.794864, 0.491303},{0.506451, 0.792034, 0.488720},{0.499931, 0.789204, 0.486136},{0.493410, 0.786374, 0.483552},{0.486890, 0.783545, 0.480969},{0.480369, 0.780715, 0.478385},{0.473849, 0.777885, 0.475802},{0.467205, 0.774810, 0.472787},{0.460438, 0.771488, 0.469343},{0.453672, 0.768166, 0.465898},{0.446905, 0.764844, 0.462453},{0.440138, 0.761522, 0.459008},{0.433372, 0.758201, 0.455563},{0.426605, 0.754879, 0.452118},{0.419839, 0.751557, 0.448674},{0.413072, 0.748235, 0.445229},{0.406305, 0.744913, 0.441784},{0.399539, 0.741592, 0.438339},{0.392772, 0.738270, 0.434894},{0.386005, 0.734948, 0.431449},{0.379239, 0.731626, 0.428005},{0.372472, 0.728304, 0.424560},{0.365705, 0.724983, 0.421115},{0.358939, 0.721661, 0.417670},{0.352172, 0.718339, 0.414225},{0.345406, 0.715017, 0.410780},{0.338639, 0.711696, 0.407336},{0.331872, 0.708374, 0.403891},{0.325106, 0.705052, 0.400446},{0.318339, 0.701730, 0.397001},{0.311572, 0.698408, 0.393556},{0.304806, 0.695087, 0.390111},{0.298039, 0.691765, 0.386667},{0.291273, 0.688443, 0.383222},{0.284506, 0.685121, 0.379777},{0.277739, 0.681799, 0.376332},{0.270973, 0.678478, 0.372887},{0.264206, 0.675156, 0.369443},{0.257439, 0.671834, 0.365998},{0.252595, 0.667589, 0.362707},{0.248904, 0.662791, 0.359508},{0.245213, 0.657993, 0.356309},{0.241522, 0.653195, 0.353110},{0.237832, 0.648397, 0.349912},{0.234141, 0.643599, 0.346713},{0.230450, 0.638800, 0.343514},{0.226759, 0.634002, 0.340315},{0.223068, 0.629204, 0.337116},{0.219377, 0.624406, 0.333918},{0.215686, 0.619608, 0.330719},{0.211995, 0.614810, 0.327520},{0.208304, 0.610012, 0.324321},{0.204614, 0.605213, 0.321123},{0.200923, 0.600415, 0.317924},{0.197232, 0.595617, 0.314725},{0.193541, 0.590819, 0.311526},{0.189850, 0.586021, 0.308328},{0.186159, 0.581223, 0.305129},{0.182468, 0.576424, 0.301930},{0.178777, 0.571626, 0.298731},{0.175087, 0.566828, 0.295532},{0.171396, 0.562030, 0.292334},{0.167705, 0.557232, 0.289135},{0.164014, 0.552434, 0.285936},{0.160323, 0.547636, 0.282737},{0.156632, 0.542837, 0.279539},{0.152941, 0.538039, 0.276340},{0.149250, 0.533241, 0.273141},{0.145559, 0.528443, 0.269942},{0.141869, 0.523645, 0.266744},{0.138178, 0.518847, 0.263545},{0.134025, 0.515063, 0.261638},{0.129719, 0.511619, 0.260161},{0.125413, 0.508174, 0.258685},{0.121107, 0.504729, 0.257209},{0.116801, 0.501284, 0.255732},{0.112495, 0.497839, 0.254256},{0.108189, 0.494394, 0.252780},{0.103883, 0.490950, 0.251303},{0.099577, 0.487505, 0.249827},{0.095271, 0.484060, 0.248351},{0.090965, 0.480615, 0.246874},{0.086659, 0.477170, 0.245398},{0.082353, 0.473725, 0.243922},{0.078047, 0.470281, 0.242445},{0.073741, 0.466836, 0.240969},{0.069435, 0.463391, 0.239493},{0.065129, 0.459946, 0.238016},{0.060823, 0.456501, 0.236540},{0.056517, 0.453057, 0.235063},{0.052211, 0.449612, 0.233587},{0.047905, 0.446167, 0.232111},{0.043599, 0.442722, 0.230634},{0.039293, 0.439277, 0.229158},{0.034987, 0.435832, 0.227682},{0.030681, 0.432388, 0.226205},{0.026374, 0.428943, 0.224729},{0.022068, 0.425498, 0.223253},{0.017762, 0.422053, 0.221776},{0.013456, 0.418608, 0.220300},{0.009150, 0.415163, 0.218824},{0.004844, 0.411719, 0.217347},{0.000538, 0.408274, 0.215871},{0.000000, 0.404075, 0.214179},{0.000000, 0.399769, 0.212457},{0.000000, 0.395463, 0.210734},{0.000000, 0.391157, 0.209012},{0.000000, 0.386851, 0.207290},{0.000000, 0.382545, 0.205567},{0.000000, 0.378239, 0.203845},{0.000000, 0.373933, 0.202122},{0.000000, 0.369627, 0.200400},{0.000000, 0.365321, 0.198677},{0.000000, 0.361015, 0.196955},{0.000000, 0.356709, 0.195233},{0.000000, 0.352403, 0.193510},{0.000000, 0.348097, 0.191788},{0.000000, 0.343791, 0.190065},{0.000000, 0.339485, 0.188343},{0.000000, 0.335179, 0.186621},{0.000000, 0.330873, 0.184898},{0.000000, 0.326567, 0.183176},{0.000000, 0.322261, 0.181453},{0.000000, 0.317955, 0.179731},{0.000000, 0.313649, 0.178008},{0.000000, 0.309343, 0.176286},{0.000000, 0.305037, 0.174564},{0.000000, 0.300730, 0.172841},{0.000000, 0.296424, 0.171119},{0.000000, 0.292118, 0.169396},{0.000000, 0.287812, 0.167674},{0.000000, 0.283506, 0.165952},{0.000000, 0.279200, 0.164229},{0.000000, 0.274894, 0.162507},{0.000000, 0.270588, 0.160784}}}, - {"ylgnbu", {{1.000000, 1.000000, 0.850980},{0.997785, 0.999139, 0.846059},{0.995571, 0.998278, 0.841138},{0.993356, 0.997416, 0.836217},{0.991142, 0.996555, 0.831296},{0.988927, 0.995694, 0.826374},{0.986713, 0.994833, 0.821453},{0.984498, 0.993972, 0.816532},{0.982284, 0.993110, 0.811611},{0.980069, 0.992249, 0.806690},{0.977855, 0.991388, 0.801769},{0.975640, 0.990527, 0.796847},{0.973426, 0.989666, 0.791926},{0.971211, 0.988804, 0.787005},{0.968997, 0.987943, 0.782084},{0.966782, 0.987082, 0.777163},{0.964567, 0.986221, 0.772241},{0.962353, 0.985359, 0.767320},{0.960138, 0.984498, 0.762399},{0.957924, 0.983637, 0.757478},{0.955709, 0.982776, 0.752557},{0.953495, 0.981915, 0.747636},{0.951280, 0.981053, 0.742714},{0.949066, 0.980192, 0.737793},{0.946851, 0.979331, 0.732872},{0.944637, 0.978470, 0.727951},{0.942422, 0.977609, 0.723030},{0.940208, 0.976747, 0.718108},{0.937993, 0.975886, 0.713187},{0.935779, 0.975025, 0.708266},{0.933564, 0.974164, 0.703345},{0.931349, 0.973303, 0.698424},{0.928827, 0.972318, 0.694164},{0.924152, 0.970473, 0.694533},{0.919477, 0.968627, 0.694902},{0.914802, 0.966782, 0.695271},{0.910127, 0.964937, 0.695640},{0.905452, 0.963091, 0.696009},{0.900777, 0.961246, 0.696378},{0.896101, 0.959400, 0.696747},{0.891426, 0.957555, 0.697116},{0.886751, 0.955709, 0.697486},{0.882076, 0.953864, 0.697855},{0.877401, 0.952018, 0.698224},{0.872726, 0.950173, 0.698593},{0.868051, 0.948328, 0.698962},{0.863376, 0.946482, 0.699331},{0.858700, 0.944637, 0.699700},{0.854025, 0.942791, 0.700069},{0.849350, 0.940946, 0.700438},{0.844675, 0.939100, 0.700807},{0.840000, 0.937255, 0.701176},{0.835325, 0.935409, 0.701546},{0.830650, 0.933564, 0.701915},{0.825975, 0.931719, 0.702284},{0.821300, 0.929873, 0.702653},{0.816624, 0.928028, 0.703022},{0.811949, 0.926182, 0.703391},{0.807274, 0.924337, 0.703760},{0.802599, 0.922491, 0.704129},{0.797924, 0.920646, 0.704498},{0.793249, 0.918800, 0.704867},{0.788574, 0.916955, 0.705236},{0.783899, 0.915110, 0.705606},{0.778178, 0.912864, 0.706098},{0.769319, 0.909419, 0.706959},{0.760461, 0.905975, 0.707820},{0.751603, 0.902530, 0.708681},{0.742745, 0.899085, 0.709542},{0.733887, 0.895640, 0.710404},{0.725029, 0.892195, 0.711265},{0.716171, 0.888750, 0.712126},{0.707313, 0.885306, 0.712987},{0.698454, 0.881861, 0.713849},{0.689596, 0.878416, 0.714710},{0.680738, 0.874971, 0.715571},{0.671880, 0.871526, 0.716432},{0.663022, 0.868082, 0.717293},{0.654164, 0.864637, 0.718155},{0.645306, 0.861192, 0.719016},{0.636448, 0.857747, 0.719877},{0.627589, 0.854302, 0.720738},{0.618731, 0.850857, 0.721599},{0.609873, 0.847413, 0.722461},{0.601015, 0.843968, 0.723322},{0.592157, 0.840523, 0.724183},{0.583299, 0.837078, 0.725044},{0.574441, 0.833633, 0.725905},{0.565582, 0.830188, 0.726767},{0.556724, 0.826744, 0.727628},{0.547866, 0.823299, 0.728489},{0.539008, 0.819854, 0.729350},{0.530150, 0.816409, 0.730211},{0.521292, 0.812964, 0.731073},{0.512434, 0.809519, 0.731934},{0.503576, 0.806075, 0.732795},{0.495179, 0.802860, 0.733749},{0.487551, 0.800031, 0.734856},{0.479923, 0.797201, 0.735963},{0.472295, 0.794371, 0.737070},{0.464667, 0.791542, 0.738178},{0.457040, 0.788712, 0.739285},{0.449412, 0.785882, 0.740392},{0.441784, 0.783053, 0.741499},{0.434156, 0.780223, 0.742607},{0.426528, 0.777393, 0.743714},{0.418900, 0.774564, 0.744821},{0.411273, 0.771734, 0.745928},{0.403645, 0.768904, 0.747036},{0.396017, 0.766075, 0.748143},{0.388389, 0.763245, 0.749250},{0.380761, 0.760415, 0.750358},{0.373133, 0.757586, 0.751465},{0.365506, 0.754756, 0.752572},{0.357878, 0.751926, 0.753679},{0.350250, 0.749097, 0.754787},{0.342622, 0.746267, 0.755894},{0.334994, 0.743437, 0.757001},{0.327366, 0.740607, 0.758108},{0.319739, 0.737778, 0.759216},{0.312111, 0.734948, 0.760323},{0.304483, 0.732118, 0.761430},{0.296855, 0.729289, 0.762537},{0.289227, 0.726459, 0.763645},{0.281599, 0.723629, 0.764752},{0.273972, 0.720800, 0.765859},{0.266344, 0.717970, 0.766967},{0.258716, 0.715140, 0.768074},{0.252687, 0.711449, 0.768381},{0.248258, 0.706897, 0.767889},{0.243829, 0.702345, 0.767397},{0.239400, 0.697793, 0.766905},{0.234971, 0.693241, 0.766413},{0.230542, 0.688689, 0.765921},{0.226113, 0.684137, 0.765429},{0.221684, 0.679585, 0.764937},{0.217255, 0.675033, 0.764444},{0.212826, 0.670481, 0.763952},{0.208397, 0.665928, 0.763460},{0.203968, 0.661376, 0.762968},{0.199539, 0.656824, 0.762476},{0.195110, 0.652272, 0.761984},{0.190681, 0.647720, 0.761492},{0.186251, 0.643168, 0.761000},{0.181822, 0.638616, 0.760507},{0.177393, 0.634064, 0.760015},{0.172964, 0.629512, 0.759523},{0.168535, 0.624960, 0.759031},{0.164106, 0.620408, 0.758539},{0.159677, 0.615855, 0.758047},{0.155248, 0.611303, 0.757555},{0.150819, 0.606751, 0.757063},{0.146390, 0.602199, 0.756571},{0.141961, 0.597647, 0.756078},{0.137532, 0.593095, 0.755586},{0.133103, 0.588543, 0.755094},{0.128674, 0.583991, 0.754602},{0.124245, 0.579439, 0.754110},{0.119815, 0.574887, 0.753618},{0.115386, 0.570334, 0.753126},{0.114110, 0.564706, 0.751096},{0.114725, 0.558431, 0.748143},{0.115340, 0.552157, 0.745190},{0.115955, 0.545882, 0.742238},{0.116571, 0.539608, 0.739285},{0.117186, 0.533333, 0.736332},{0.117801, 0.527059, 0.733379},{0.118416, 0.520784, 0.730427},{0.119031, 0.514510, 0.727474},{0.119646, 0.508235, 0.724521},{0.120261, 0.501961, 0.721569},{0.120877, 0.495686, 0.718616},{0.121492, 0.489412, 0.715663},{0.122107, 0.483137, 0.712710},{0.122722, 0.476863, 0.709758},{0.123337, 0.470588, 0.706805},{0.123952, 0.464314, 0.703852},{0.124567, 0.458039, 0.700900},{0.125183, 0.451765, 0.697947},{0.125798, 0.445490, 0.694994},{0.126413, 0.439216, 0.692042},{0.127028, 0.432941, 0.689089},{0.127643, 0.426667, 0.686136},{0.128258, 0.420392, 0.683183},{0.128874, 0.414118, 0.680231},{0.129489, 0.407843, 0.677278},{0.130104, 0.401569, 0.674325},{0.130719, 0.395294, 0.671373},{0.131334, 0.389020, 0.668420},{0.131949, 0.382745, 0.665467},{0.132564, 0.376471, 0.662514},{0.133180, 0.370196, 0.659562},{0.133610, 0.364752, 0.656978},{0.133979, 0.359585, 0.654517},{0.134348, 0.354418, 0.652057},{0.134717, 0.349250, 0.649596},{0.135087, 0.344083, 0.647136},{0.135456, 0.338916, 0.644675},{0.135825, 0.333749, 0.642215},{0.136194, 0.328581, 0.639754},{0.136563, 0.323414, 0.637293},{0.136932, 0.318247, 0.634833},{0.137301, 0.313080, 0.632372},{0.137670, 0.307912, 0.629912},{0.138039, 0.302745, 0.627451},{0.138408, 0.297578, 0.624990},{0.138777, 0.292411, 0.622530},{0.139146, 0.287243, 0.620069},{0.139516, 0.282076, 0.617609},{0.139885, 0.276909, 0.615148},{0.140254, 0.271742, 0.612687},{0.140623, 0.266574, 0.610227},{0.140992, 0.261407, 0.607766},{0.141361, 0.256240, 0.605306},{0.141730, 0.251073, 0.602845},{0.142099, 0.245905, 0.600384},{0.142468, 0.240738, 0.597924},{0.142837, 0.235571, 0.595463},{0.143206, 0.230404, 0.593003},{0.143576, 0.225236, 0.590542},{0.143945, 0.220069, 0.588082},{0.144314, 0.214902, 0.585621},{0.144683, 0.209735, 0.583160},{0.145052, 0.204567, 0.580700},{0.141976, 0.201446, 0.573933},{0.138408, 0.198616, 0.566551},{0.134840, 0.195786, 0.559170},{0.131273, 0.192957, 0.551788},{0.127705, 0.190127, 0.544406},{0.124137, 0.187297, 0.537024},{0.120569, 0.184468, 0.529642},{0.117001, 0.181638, 0.522261},{0.113433, 0.178808, 0.514879},{0.109865, 0.175978, 0.507497},{0.106298, 0.173149, 0.500115},{0.102730, 0.170319, 0.492734},{0.099162, 0.167489, 0.485352},{0.095594, 0.164660, 0.477970},{0.092026, 0.161830, 0.470588},{0.088458, 0.159000, 0.463206},{0.084890, 0.156171, 0.455825},{0.081323, 0.153341, 0.448443},{0.077755, 0.150511, 0.441061},{0.074187, 0.147682, 0.433679},{0.070619, 0.144852, 0.426298},{0.067051, 0.142022, 0.418916},{0.063483, 0.139193, 0.411534},{0.059915, 0.136363, 0.404152},{0.056348, 0.133533, 0.396770},{0.052780, 0.130704, 0.389389},{0.049212, 0.127874, 0.382007},{0.045644, 0.125044, 0.374625},{0.042076, 0.122215, 0.367243},{0.038508, 0.119385, 0.359862},{0.034940, 0.116555, 0.352480},{0.031373, 0.113725, 0.345098}}}, - {"piyg", {{0.556863, 0.003922, 0.321569},{0.565321, 0.007920, 0.328181},{0.573779, 0.011918, 0.334794},{0.582238, 0.015917, 0.341407},{0.590696, 0.019915, 0.348020},{0.599154, 0.023914, 0.354633},{0.607612, 0.027912, 0.361246},{0.616071, 0.031911, 0.367859},{0.624529, 0.035909, 0.374471},{0.632987, 0.039908, 0.381084},{0.641446, 0.043906, 0.387697},{0.649904, 0.047905, 0.394310},{0.658362, 0.051903, 0.400923},{0.666820, 0.055902, 0.407536},{0.675279, 0.059900, 0.414148},{0.683737, 0.063899, 0.420761},{0.692195, 0.067897, 0.427374},{0.700654, 0.071895, 0.433987},{0.709112, 0.075894, 0.440600},{0.717570, 0.079892, 0.447213},{0.726028, 0.083891, 0.453825},{0.734487, 0.087889, 0.460438},{0.742945, 0.091888, 0.467051},{0.751403, 0.095886, 0.473664},{0.759862, 0.099885, 0.480277},{0.768320, 0.103883, 0.486890},{0.774471, 0.112957, 0.493964},{0.778316, 0.127105, 0.501499},{0.782161, 0.141253, 0.509035},{0.786005, 0.155402, 0.516571},{0.789850, 0.169550, 0.524106},{0.793695, 0.183699, 0.531642},{0.797539, 0.197847, 0.539177},{0.801384, 0.211995, 0.546713},{0.805229, 0.226144, 0.554248},{0.809073, 0.240292, 0.561784},{0.812918, 0.254441, 0.569319},{0.816763, 0.268589, 0.576855},{0.820607, 0.282737, 0.584391},{0.824452, 0.296886, 0.591926},{0.828297, 0.311034, 0.599462},{0.832141, 0.325183, 0.606997},{0.835986, 0.339331, 0.614533},{0.839831, 0.353479, 0.622068},{0.843676, 0.367628, 0.629604},{0.847520, 0.381776, 0.637140},{0.851365, 0.395925, 0.644675},{0.855210, 0.410073, 0.652211},{0.859054, 0.424221, 0.659746},{0.862899, 0.438370, 0.667282},{0.866744, 0.452518, 0.674817},{0.870588, 0.466667, 0.682353},{0.873510, 0.476355, 0.689120},{0.876432, 0.486044, 0.695886},{0.879354, 0.495732, 0.702653},{0.882276, 0.505421, 0.709419},{0.885198, 0.515110, 0.716186},{0.888120, 0.524798, 0.722953},{0.891042, 0.534487, 0.729719},{0.893964, 0.544175, 0.736486},{0.896886, 0.553864, 0.743253},{0.899808, 0.563552, 0.750019},{0.902730, 0.573241, 0.756786},{0.905652, 0.582930, 0.763552},{0.908574, 0.592618, 0.770319},{0.911496, 0.602307, 0.777086},{0.914418, 0.611995, 0.783852},{0.917339, 0.621684, 0.790619},{0.920261, 0.631373, 0.797386},{0.923183, 0.641061, 0.804152},{0.926105, 0.650750, 0.810919},{0.929027, 0.660438, 0.817686},{0.931949, 0.670127, 0.824452},{0.934871, 0.679815, 0.831219},{0.937793, 0.689504, 0.837985},{0.940715, 0.699193, 0.844752},{0.943637, 0.708881, 0.851519},{0.946021, 0.716955, 0.856517},{0.947866, 0.723414, 0.859746},{0.949712, 0.729873, 0.862976},{0.951557, 0.736332, 0.866205},{0.953403, 0.742791, 0.869435},{0.955248, 0.749250, 0.872664},{0.957093, 0.755709, 0.875894},{0.958939, 0.762168, 0.879123},{0.960784, 0.768627, 0.882353},{0.962630, 0.775087, 0.885582},{0.964475, 0.781546, 0.888812},{0.966321, 0.788005, 0.892042},{0.968166, 0.794464, 0.895271},{0.970012, 0.800923, 0.898501},{0.971857, 0.807382, 0.901730},{0.973702, 0.813841, 0.904960},{0.975548, 0.820300, 0.908189},{0.977393, 0.826759, 0.911419},{0.979239, 0.833218, 0.914648},{0.981084, 0.839677, 0.917878},{0.982930, 0.846136, 0.921107},{0.984775, 0.852595, 0.924337},{0.986621, 0.859054, 0.927566},{0.988466, 0.865513, 0.930796},{0.990311, 0.871972, 0.934025},{0.992157, 0.878431, 0.937255},{0.991234, 0.881968, 0.938485},{0.990311, 0.885506, 0.939715},{0.989389, 0.889043, 0.940946},{0.988466, 0.892580, 0.942176},{0.987543, 0.896117, 0.943406},{0.986621, 0.899654, 0.944637},{0.985698, 0.903191, 0.945867},{0.984775, 0.906728, 0.947097},{0.983852, 0.910265, 0.948328},{0.982930, 0.913802, 0.949558},{0.982007, 0.917339, 0.950788},{0.981084, 0.920877, 0.952018},{0.980161, 0.924414, 0.953249},{0.979239, 0.927951, 0.954479},{0.978316, 0.931488, 0.955709},{0.977393, 0.935025, 0.956940},{0.976471, 0.938562, 0.958170},{0.975548, 0.942099, 0.959400},{0.974625, 0.945636, 0.960631},{0.973702, 0.949173, 0.961861},{0.972780, 0.952710, 0.963091},{0.971857, 0.956248, 0.964321},{0.970934, 0.959785, 0.965552},{0.970012, 0.963322, 0.966782},{0.969089, 0.966859, 0.968012},{0.967320, 0.968474, 0.965629},{0.964706, 0.968166, 0.959631},{0.962092, 0.967859, 0.953633},{0.959477, 0.967551, 0.947636},{0.956863, 0.967243, 0.941638},{0.954248, 0.966936, 0.935640},{0.951634, 0.966628, 0.929642},{0.949020, 0.966321, 0.923645},{0.946405, 0.966013, 0.917647},{0.943791, 0.965705, 0.911649},{0.941176, 0.965398, 0.905652},{0.938562, 0.965090, 0.899654},{0.935948, 0.964783, 0.893656},{0.933333, 0.964475, 0.887659},{0.930719, 0.964168, 0.881661},{0.928105, 0.963860, 0.875663},{0.925490, 0.963552, 0.869666},{0.922876, 0.963245, 0.863668},{0.920261, 0.962937, 0.857670},{0.917647, 0.962630, 0.851672},{0.915033, 0.962322, 0.845675},{0.912418, 0.962015, 0.839677},{0.909804, 0.961707, 0.833679},{0.907190, 0.961399, 0.827682},{0.904575, 0.961092, 0.821684},{0.901961, 0.960784, 0.815686},{0.894887, 0.957709, 0.804306},{0.887812, 0.954633, 0.792926},{0.880738, 0.951557, 0.781546},{0.873664, 0.948481, 0.770165},{0.866590, 0.945406, 0.758785},{0.859516, 0.942330, 0.747405},{0.852441, 0.939254, 0.736025},{0.845367, 0.936178, 0.724644},{0.838293, 0.933103, 0.713264},{0.831219, 0.930027, 0.701884},{0.824145, 0.926951, 0.690504},{0.817070, 0.923875, 0.679123},{0.809996, 0.920800, 0.667743},{0.802922, 0.917724, 0.656363},{0.795848, 0.914648, 0.644983},{0.788774, 0.911572, 0.633602},{0.781699, 0.908497, 0.622222},{0.774625, 0.905421, 0.610842},{0.767551, 0.902345, 0.599462},{0.760477, 0.899270, 0.588082},{0.753403, 0.896194, 0.576701},{0.746328, 0.893118, 0.565321},{0.739254, 0.890042, 0.553941},{0.732180, 0.886967, 0.542561},{0.725106, 0.883891, 0.531180},{0.717186, 0.879508, 0.520185},{0.708420, 0.873818, 0.509573},{0.699654, 0.868128, 0.498962},{0.690888, 0.862438, 0.488351},{0.682122, 0.856747, 0.477739},{0.673356, 0.851057, 0.467128},{0.664591, 0.845367, 0.456517},{0.655825, 0.839677, 0.445905},{0.647059, 0.833987, 0.435294},{0.638293, 0.828297, 0.424683},{0.629527, 0.822607, 0.414072},{0.620761, 0.816917, 0.403460},{0.611995, 0.811226, 0.392849},{0.603230, 0.805536, 0.382238},{0.594464, 0.799846, 0.371626},{0.585698, 0.794156, 0.361015},{0.576932, 0.788466, 0.350404},{0.568166, 0.782776, 0.339792},{0.559400, 0.777086, 0.329181},{0.550634, 0.771396, 0.318570},{0.541869, 0.765705, 0.307958},{0.533103, 0.760015, 0.297347},{0.524337, 0.754325, 0.286736},{0.515571, 0.748635, 0.276125},{0.506805, 0.742945, 0.265513},{0.498039, 0.737255, 0.254902},{0.490350, 0.730796, 0.249981},{0.482661, 0.724337, 0.245060},{0.474971, 0.717878, 0.240138},{0.467282, 0.711419, 0.235217},{0.459592, 0.704960, 0.230296},{0.451903, 0.698501, 0.225375},{0.444214, 0.692042, 0.220454},{0.436524, 0.685582, 0.215532},{0.428835, 0.679123, 0.210611},{0.421146, 0.672664, 0.205690},{0.413456, 0.666205, 0.200769},{0.405767, 0.659746, 0.195848},{0.398078, 0.653287, 0.190927},{0.390388, 0.646828, 0.186005},{0.382699, 0.640369, 0.181084},{0.375010, 0.633910, 0.176163},{0.367320, 0.627451, 0.171242},{0.359631, 0.620992, 0.166321},{0.351942, 0.614533, 0.161399},{0.344252, 0.608074, 0.156478},{0.336563, 0.601615, 0.151557},{0.328874, 0.595156, 0.146636},{0.321184, 0.588697, 0.141715},{0.313495, 0.582238, 0.136794},{0.305805, 0.575779, 0.131872},{0.299039, 0.569012, 0.128797},{0.293195, 0.561938, 0.127566},{0.287351, 0.554864, 0.126336},{0.281507, 0.547789, 0.125106},{0.275663, 0.540715, 0.123875},{0.269819, 0.533641, 0.122645},{0.263975, 0.526567, 0.121415},{0.258131, 0.519493, 0.120185},{0.252288, 0.512418, 0.118954},{0.246444, 0.505344, 0.117724},{0.240600, 0.498270, 0.116494},{0.234756, 0.491196, 0.115263},{0.228912, 0.484121, 0.114033},{0.223068, 0.477047, 0.112803},{0.217224, 0.469973, 0.111572},{0.211380, 0.462899, 0.110342},{0.205536, 0.455825, 0.109112},{0.199692, 0.448750, 0.107882},{0.193849, 0.441676, 0.106651},{0.188005, 0.434602, 0.105421},{0.182161, 0.427528, 0.104191},{0.176317, 0.420454, 0.102960},{0.170473, 0.413379, 0.101730},{0.164629, 0.406305, 0.100500},{0.158785, 0.399231, 0.099270},{0.152941, 0.392157, 0.098039}}}, - {"bwr", {{0.000000, 0.000000, 1.000000},{0.007843, 0.007843, 1.000000},{0.015686, 0.015686, 1.000000},{0.023529, 0.023529, 1.000000},{0.031373, 0.031373, 1.000000},{0.039216, 0.039216, 1.000000},{0.047059, 0.047059, 1.000000},{0.054902, 0.054902, 1.000000},{0.062745, 0.062745, 1.000000},{0.070588, 0.070588, 1.000000},{0.078431, 0.078431, 1.000000},{0.086275, 0.086275, 1.000000},{0.094118, 0.094118, 1.000000},{0.101961, 0.101961, 1.000000},{0.109804, 0.109804, 1.000000},{0.117647, 0.117647, 1.000000},{0.125490, 0.125490, 1.000000},{0.133333, 0.133333, 1.000000},{0.141176, 0.141176, 1.000000},{0.149020, 0.149020, 1.000000},{0.156863, 0.156863, 1.000000},{0.164706, 0.164706, 1.000000},{0.172549, 0.172549, 1.000000},{0.180392, 0.180392, 1.000000},{0.188235, 0.188235, 1.000000},{0.196078, 0.196078, 1.000000},{0.203922, 0.203922, 1.000000},{0.211765, 0.211765, 1.000000},{0.219608, 0.219608, 1.000000},{0.227451, 0.227451, 1.000000},{0.235294, 0.235294, 1.000000},{0.243137, 0.243137, 1.000000},{0.250980, 0.250980, 1.000000},{0.258824, 0.258824, 1.000000},{0.266667, 0.266667, 1.000000},{0.274510, 0.274510, 1.000000},{0.282353, 0.282353, 1.000000},{0.290196, 0.290196, 1.000000},{0.298039, 0.298039, 1.000000},{0.305882, 0.305882, 1.000000},{0.313725, 0.313725, 1.000000},{0.321569, 0.321569, 1.000000},{0.329412, 0.329412, 1.000000},{0.337255, 0.337255, 1.000000},{0.345098, 0.345098, 1.000000},{0.352941, 0.352941, 1.000000},{0.360784, 0.360784, 1.000000},{0.368627, 0.368627, 1.000000},{0.376471, 0.376471, 1.000000},{0.384314, 0.384314, 1.000000},{0.392157, 0.392157, 1.000000},{0.400000, 0.400000, 1.000000},{0.407843, 0.407843, 1.000000},{0.415686, 0.415686, 1.000000},{0.423529, 0.423529, 1.000000},{0.431373, 0.431373, 1.000000},{0.439216, 0.439216, 1.000000},{0.447059, 0.447059, 1.000000},{0.454902, 0.454902, 1.000000},{0.462745, 0.462745, 1.000000},{0.470588, 0.470588, 1.000000},{0.478431, 0.478431, 1.000000},{0.486275, 0.486275, 1.000000},{0.494118, 0.494118, 1.000000},{0.501961, 0.501961, 1.000000},{0.509804, 0.509804, 1.000000},{0.517647, 0.517647, 1.000000},{0.525490, 0.525490, 1.000000},{0.533333, 0.533333, 1.000000},{0.541176, 0.541176, 1.000000},{0.549020, 0.549020, 1.000000},{0.556863, 0.556863, 1.000000},{0.564706, 0.564706, 1.000000},{0.572549, 0.572549, 1.000000},{0.580392, 0.580392, 1.000000},{0.588235, 0.588235, 1.000000},{0.596078, 0.596078, 1.000000},{0.603922, 0.603922, 1.000000},{0.611765, 0.611765, 1.000000},{0.619608, 0.619608, 1.000000},{0.627451, 0.627451, 1.000000},{0.635294, 0.635294, 1.000000},{0.643137, 0.643137, 1.000000},{0.650980, 0.650980, 1.000000},{0.658824, 0.658824, 1.000000},{0.666667, 0.666667, 1.000000},{0.674510, 0.674510, 1.000000},{0.682353, 0.682353, 1.000000},{0.690196, 0.690196, 1.000000},{0.698039, 0.698039, 1.000000},{0.705882, 0.705882, 1.000000},{0.713725, 0.713725, 1.000000},{0.721569, 0.721569, 1.000000},{0.729412, 0.729412, 1.000000},{0.737255, 0.737255, 1.000000},{0.745098, 0.745098, 1.000000},{0.752941, 0.752941, 1.000000},{0.760784, 0.760784, 1.000000},{0.768627, 0.768627, 1.000000},{0.776471, 0.776471, 1.000000},{0.784314, 0.784314, 1.000000},{0.792157, 0.792157, 1.000000},{0.800000, 0.800000, 1.000000},{0.807843, 0.807843, 1.000000},{0.815686, 0.815686, 1.000000},{0.823529, 0.823529, 1.000000},{0.831373, 0.831373, 1.000000},{0.839216, 0.839216, 1.000000},{0.847059, 0.847059, 1.000000},{0.854902, 0.854902, 1.000000},{0.862745, 0.862745, 1.000000},{0.870588, 0.870588, 1.000000},{0.878431, 0.878431, 1.000000},{0.886275, 0.886275, 1.000000},{0.894118, 0.894118, 1.000000},{0.901961, 0.901961, 1.000000},{0.909804, 0.909804, 1.000000},{0.917647, 0.917647, 1.000000},{0.925490, 0.925490, 1.000000},{0.933333, 0.933333, 1.000000},{0.941176, 0.941176, 1.000000},{0.949020, 0.949020, 1.000000},{0.956863, 0.956863, 1.000000},{0.964706, 0.964706, 1.000000},{0.972549, 0.972549, 1.000000},{0.980392, 0.980392, 1.000000},{0.988235, 0.988235, 1.000000},{0.996078, 0.996078, 1.000000},{1.000000, 0.996078, 0.996078},{1.000000, 0.988235, 0.988235},{1.000000, 0.980392, 0.980392},{1.000000, 0.972549, 0.972549},{1.000000, 0.964706, 0.964706},{1.000000, 0.956863, 0.956863},{1.000000, 0.949020, 0.949020},{1.000000, 0.941176, 0.941176},{1.000000, 0.933333, 0.933333},{1.000000, 0.925490, 0.925490},{1.000000, 0.917647, 0.917647},{1.000000, 0.909804, 0.909804},{1.000000, 0.901961, 0.901961},{1.000000, 0.894118, 0.894118},{1.000000, 0.886275, 0.886275},{1.000000, 0.878431, 0.878431},{1.000000, 0.870588, 0.870588},{1.000000, 0.862745, 0.862745},{1.000000, 0.854902, 0.854902},{1.000000, 0.847059, 0.847059},{1.000000, 0.839216, 0.839216},{1.000000, 0.831373, 0.831373},{1.000000, 0.823529, 0.823529},{1.000000, 0.815686, 0.815686},{1.000000, 0.807843, 0.807843},{1.000000, 0.800000, 0.800000},{1.000000, 0.792157, 0.792157},{1.000000, 0.784314, 0.784314},{1.000000, 0.776471, 0.776471},{1.000000, 0.768627, 0.768627},{1.000000, 0.760784, 0.760784},{1.000000, 0.752941, 0.752941},{1.000000, 0.745098, 0.745098},{1.000000, 0.737255, 0.737255},{1.000000, 0.729412, 0.729412},{1.000000, 0.721569, 0.721569},{1.000000, 0.713725, 0.713725},{1.000000, 0.705882, 0.705882},{1.000000, 0.698039, 0.698039},{1.000000, 0.690196, 0.690196},{1.000000, 0.682353, 0.682353},{1.000000, 0.674510, 0.674510},{1.000000, 0.666667, 0.666667},{1.000000, 0.658824, 0.658824},{1.000000, 0.650980, 0.650980},{1.000000, 0.643137, 0.643137},{1.000000, 0.635294, 0.635294},{1.000000, 0.627451, 0.627451},{1.000000, 0.619608, 0.619608},{1.000000, 0.611765, 0.611765},{1.000000, 0.603922, 0.603922},{1.000000, 0.596078, 0.596078},{1.000000, 0.588235, 0.588235},{1.000000, 0.580392, 0.580392},{1.000000, 0.572549, 0.572549},{1.000000, 0.564706, 0.564706},{1.000000, 0.556863, 0.556863},{1.000000, 0.549020, 0.549020},{1.000000, 0.541176, 0.541176},{1.000000, 0.533333, 0.533333},{1.000000, 0.525490, 0.525490},{1.000000, 0.517647, 0.517647},{1.000000, 0.509804, 0.509804},{1.000000, 0.501961, 0.501961},{1.000000, 0.494118, 0.494118},{1.000000, 0.486275, 0.486275},{1.000000, 0.478431, 0.478431},{1.000000, 0.470588, 0.470588},{1.000000, 0.462745, 0.462745},{1.000000, 0.454902, 0.454902},{1.000000, 0.447059, 0.447059},{1.000000, 0.439216, 0.439216},{1.000000, 0.431373, 0.431373},{1.000000, 0.423529, 0.423529},{1.000000, 0.415686, 0.415686},{1.000000, 0.407843, 0.407843},{1.000000, 0.400000, 0.400000},{1.000000, 0.392157, 0.392157},{1.000000, 0.384314, 0.384314},{1.000000, 0.376471, 0.376471},{1.000000, 0.368627, 0.368627},{1.000000, 0.360784, 0.360784},{1.000000, 0.352941, 0.352941},{1.000000, 0.345098, 0.345098},{1.000000, 0.337255, 0.337255},{1.000000, 0.329412, 0.329412},{1.000000, 0.321569, 0.321569},{1.000000, 0.313725, 0.313725},{1.000000, 0.305882, 0.305882},{1.000000, 0.298039, 0.298039},{1.000000, 0.290196, 0.290196},{1.000000, 0.282353, 0.282353},{1.000000, 0.274510, 0.274510},{1.000000, 0.266667, 0.266667},{1.000000, 0.258824, 0.258824},{1.000000, 0.250980, 0.250980},{1.000000, 0.243137, 0.243137},{1.000000, 0.235294, 0.235294},{1.000000, 0.227451, 0.227451},{1.000000, 0.219608, 0.219608},{1.000000, 0.211765, 0.211765},{1.000000, 0.203922, 0.203922},{1.000000, 0.196078, 0.196078},{1.000000, 0.188235, 0.188235},{1.000000, 0.180392, 0.180392},{1.000000, 0.172549, 0.172549},{1.000000, 0.164706, 0.164706},{1.000000, 0.156863, 0.156863},{1.000000, 0.149020, 0.149020},{1.000000, 0.141176, 0.141176},{1.000000, 0.133333, 0.133333},{1.000000, 0.125490, 0.125490},{1.000000, 0.117647, 0.117647},{1.000000, 0.109804, 0.109804},{1.000000, 0.101961, 0.101961},{1.000000, 0.094118, 0.094118},{1.000000, 0.086275, 0.086275},{1.000000, 0.078431, 0.078431},{1.000000, 0.070588, 0.070588},{1.000000, 0.062745, 0.062745},{1.000000, 0.054902, 0.054902},{1.000000, 0.047059, 0.047059},{1.000000, 0.039216, 0.039216},{1.000000, 0.031373, 0.031373},{1.000000, 0.023529, 0.023529},{1.000000, 0.015686, 0.015686},{1.000000, 0.007843, 0.007843},{1.000000, 0.000000, 0.000000}}}, - {"seismic", {{0.000000, 0.000000, 0.300000},{0.000000, 0.000000, 0.310980},{0.000000, 0.000000, 0.321961},{0.000000, 0.000000, 0.332941},{0.000000, 0.000000, 0.343922},{0.000000, 0.000000, 0.354902},{0.000000, 0.000000, 0.365882},{0.000000, 0.000000, 0.376863},{0.000000, 0.000000, 0.387843},{0.000000, 0.000000, 0.398824},{0.000000, 0.000000, 0.409804},{0.000000, 0.000000, 0.420784},{0.000000, 0.000000, 0.431765},{0.000000, 0.000000, 0.442745},{0.000000, 0.000000, 0.453725},{0.000000, 0.000000, 0.464706},{0.000000, 0.000000, 0.475686},{0.000000, 0.000000, 0.486667},{0.000000, 0.000000, 0.497647},{0.000000, 0.000000, 0.508627},{0.000000, 0.000000, 0.519608},{0.000000, 0.000000, 0.530588},{0.000000, 0.000000, 0.541569},{0.000000, 0.000000, 0.552549},{0.000000, 0.000000, 0.563529},{0.000000, 0.000000, 0.574510},{0.000000, 0.000000, 0.585490},{0.000000, 0.000000, 0.596471},{0.000000, 0.000000, 0.607451},{0.000000, 0.000000, 0.618431},{0.000000, 0.000000, 0.629412},{0.000000, 0.000000, 0.640392},{0.000000, 0.000000, 0.651373},{0.000000, 0.000000, 0.662353},{0.000000, 0.000000, 0.673333},{0.000000, 0.000000, 0.684314},{0.000000, 0.000000, 0.695294},{0.000000, 0.000000, 0.706275},{0.000000, 0.000000, 0.717255},{0.000000, 0.000000, 0.728235},{0.000000, 0.000000, 0.739216},{0.000000, 0.000000, 0.750196},{0.000000, 0.000000, 0.761176},{0.000000, 0.000000, 0.772157},{0.000000, 0.000000, 0.783137},{0.000000, 0.000000, 0.794118},{0.000000, 0.000000, 0.805098},{0.000000, 0.000000, 0.816078},{0.000000, 0.000000, 0.827059},{0.000000, 0.000000, 0.838039},{0.000000, 0.000000, 0.849020},{0.000000, 0.000000, 0.860000},{0.000000, 0.000000, 0.870980},{0.000000, 0.000000, 0.881961},{0.000000, 0.000000, 0.892941},{0.000000, 0.000000, 0.903922},{0.000000, 0.000000, 0.914902},{0.000000, 0.000000, 0.925882},{0.000000, 0.000000, 0.936863},{0.000000, 0.000000, 0.947843},{0.000000, 0.000000, 0.958824},{0.000000, 0.000000, 0.969804},{0.000000, 0.000000, 0.980784},{0.000000, 0.000000, 0.991765},{0.003922, 0.003922, 1.000000},{0.019608, 0.019608, 1.000000},{0.035294, 0.035294, 1.000000},{0.050980, 0.050980, 1.000000},{0.066667, 0.066667, 1.000000},{0.082353, 0.082353, 1.000000},{0.098039, 0.098039, 1.000000},{0.113725, 0.113725, 1.000000},{0.129412, 0.129412, 1.000000},{0.145098, 0.145098, 1.000000},{0.160784, 0.160784, 1.000000},{0.176471, 0.176471, 1.000000},{0.192157, 0.192157, 1.000000},{0.207843, 0.207843, 1.000000},{0.223529, 0.223529, 1.000000},{0.239216, 0.239216, 1.000000},{0.254902, 0.254902, 1.000000},{0.270588, 0.270588, 1.000000},{0.286275, 0.286275, 1.000000},{0.301961, 0.301961, 1.000000},{0.317647, 0.317647, 1.000000},{0.333333, 0.333333, 1.000000},{0.349020, 0.349020, 1.000000},{0.364706, 0.364706, 1.000000},{0.380392, 0.380392, 1.000000},{0.396078, 0.396078, 1.000000},{0.411765, 0.411765, 1.000000},{0.427451, 0.427451, 1.000000},{0.443137, 0.443137, 1.000000},{0.458824, 0.458824, 1.000000},{0.474510, 0.474510, 1.000000},{0.490196, 0.490196, 1.000000},{0.505882, 0.505882, 1.000000},{0.521569, 0.521569, 1.000000},{0.537255, 0.537255, 1.000000},{0.552941, 0.552941, 1.000000},{0.568627, 0.568627, 1.000000},{0.584314, 0.584314, 1.000000},{0.600000, 0.600000, 1.000000},{0.615686, 0.615686, 1.000000},{0.631373, 0.631373, 1.000000},{0.647059, 0.647059, 1.000000},{0.662745, 0.662745, 1.000000},{0.678431, 0.678431, 1.000000},{0.694118, 0.694118, 1.000000},{0.709804, 0.709804, 1.000000},{0.725490, 0.725490, 1.000000},{0.741176, 0.741176, 1.000000},{0.756863, 0.756863, 1.000000},{0.772549, 0.772549, 1.000000},{0.788235, 0.788235, 1.000000},{0.803922, 0.803922, 1.000000},{0.819608, 0.819608, 1.000000},{0.835294, 0.835294, 1.000000},{0.850980, 0.850980, 1.000000},{0.866667, 0.866667, 1.000000},{0.882353, 0.882353, 1.000000},{0.898039, 0.898039, 1.000000},{0.913725, 0.913725, 1.000000},{0.929412, 0.929412, 1.000000},{0.945098, 0.945098, 1.000000},{0.960784, 0.960784, 1.000000},{0.976471, 0.976471, 1.000000},{0.992157, 0.992157, 1.000000},{1.000000, 0.992157, 0.992157},{1.000000, 0.976471, 0.976471},{1.000000, 0.960784, 0.960784},{1.000000, 0.945098, 0.945098},{1.000000, 0.929412, 0.929412},{1.000000, 0.913725, 0.913725},{1.000000, 0.898039, 0.898039},{1.000000, 0.882353, 0.882353},{1.000000, 0.866667, 0.866667},{1.000000, 0.850980, 0.850980},{1.000000, 0.835294, 0.835294},{1.000000, 0.819608, 0.819608},{1.000000, 0.803922, 0.803922},{1.000000, 0.788235, 0.788235},{1.000000, 0.772549, 0.772549},{1.000000, 0.756863, 0.756863},{1.000000, 0.741176, 0.741176},{1.000000, 0.725490, 0.725490},{1.000000, 0.709804, 0.709804},{1.000000, 0.694118, 0.694118},{1.000000, 0.678431, 0.678431},{1.000000, 0.662745, 0.662745},{1.000000, 0.647059, 0.647059},{1.000000, 0.631373, 0.631373},{1.000000, 0.615686, 0.615686},{1.000000, 0.600000, 0.600000},{1.000000, 0.584314, 0.584314},{1.000000, 0.568627, 0.568627},{1.000000, 0.552941, 0.552941},{1.000000, 0.537255, 0.537255},{1.000000, 0.521569, 0.521569},{1.000000, 0.505882, 0.505882},{1.000000, 0.490196, 0.490196},{1.000000, 0.474510, 0.474510},{1.000000, 0.458824, 0.458824},{1.000000, 0.443137, 0.443137},{1.000000, 0.427451, 0.427451},{1.000000, 0.411765, 0.411765},{1.000000, 0.396078, 0.396078},{1.000000, 0.380392, 0.380392},{1.000000, 0.364706, 0.364706},{1.000000, 0.349020, 0.349020},{1.000000, 0.333333, 0.333333},{1.000000, 0.317647, 0.317647},{1.000000, 0.301961, 0.301961},{1.000000, 0.286275, 0.286275},{1.000000, 0.270588, 0.270588},{1.000000, 0.254902, 0.254902},{1.000000, 0.239216, 0.239216},{1.000000, 0.223529, 0.223529},{1.000000, 0.207843, 0.207843},{1.000000, 0.192157, 0.192157},{1.000000, 0.176471, 0.176471},{1.000000, 0.160784, 0.160784},{1.000000, 0.145098, 0.145098},{1.000000, 0.129412, 0.129412},{1.000000, 0.113725, 0.113725},{1.000000, 0.098039, 0.098039},{1.000000, 0.082353, 0.082353},{1.000000, 0.066667, 0.066667},{1.000000, 0.050980, 0.050980},{1.000000, 0.035294, 0.035294},{1.000000, 0.019608, 0.019608},{1.000000, 0.003922, 0.003922},{0.994118, 0.000000, 0.000000},{0.986275, 0.000000, 0.000000},{0.978431, 0.000000, 0.000000},{0.970588, 0.000000, 0.000000},{0.962745, 0.000000, 0.000000},{0.954902, 0.000000, 0.000000},{0.947059, 0.000000, 0.000000},{0.939216, 0.000000, 0.000000},{0.931373, 0.000000, 0.000000},{0.923529, 0.000000, 0.000000},{0.915686, 0.000000, 0.000000},{0.907843, 0.000000, 0.000000},{0.900000, 0.000000, 0.000000},{0.892157, 0.000000, 0.000000},{0.884314, 0.000000, 0.000000},{0.876471, 0.000000, 0.000000},{0.868627, 0.000000, 0.000000},{0.860784, 0.000000, 0.000000},{0.852941, 0.000000, 0.000000},{0.845098, 0.000000, 0.000000},{0.837255, 0.000000, 0.000000},{0.829412, 0.000000, 0.000000},{0.821569, 0.000000, 0.000000},{0.813725, 0.000000, 0.000000},{0.805882, 0.000000, 0.000000},{0.798039, 0.000000, 0.000000},{0.790196, 0.000000, 0.000000},{0.782353, 0.000000, 0.000000},{0.774510, 0.000000, 0.000000},{0.766667, 0.000000, 0.000000},{0.758824, 0.000000, 0.000000},{0.750980, 0.000000, 0.000000},{0.743137, 0.000000, 0.000000},{0.735294, 0.000000, 0.000000},{0.727451, 0.000000, 0.000000},{0.719608, 0.000000, 0.000000},{0.711765, 0.000000, 0.000000},{0.703922, 0.000000, 0.000000},{0.696078, 0.000000, 0.000000},{0.688235, 0.000000, 0.000000},{0.680392, 0.000000, 0.000000},{0.672549, 0.000000, 0.000000},{0.664706, 0.000000, 0.000000},{0.656863, 0.000000, 0.000000},{0.649020, 0.000000, 0.000000},{0.641176, 0.000000, 0.000000},{0.633333, 0.000000, 0.000000},{0.625490, 0.000000, 0.000000},{0.617647, 0.000000, 0.000000},{0.609804, 0.000000, 0.000000},{0.601961, 0.000000, 0.000000},{0.594118, 0.000000, 0.000000},{0.586275, 0.000000, 0.000000},{0.578431, 0.000000, 0.000000},{0.570588, 0.000000, 0.000000},{0.562745, 0.000000, 0.000000},{0.554902, 0.000000, 0.000000},{0.547059, 0.000000, 0.000000},{0.539216, 0.000000, 0.000000},{0.531373, 0.000000, 0.000000},{0.523529, 0.000000, 0.000000},{0.515686, 0.000000, 0.000000},{0.507843, 0.000000, 0.000000},{0.500000, 0.000000, 0.000000}}}, - {"turbo", {{0.18995,0.07176,0.23217},{0.19483,0.08339,0.26149},{0.19956,0.09498,0.29024},{0.20415,0.10652,0.31844},{0.20860,0.11802,0.34607},{0.21291,0.12947,0.37314},{0.21708,0.14087,0.39964},{0.22111,0.15223,0.42558},{0.22500,0.16354,0.45096},{0.22875,0.17481,0.47578},{0.23236,0.18603,0.50004},{0.23582,0.19720,0.52373},{0.23915,0.20833,0.54686},{0.24234,0.21941,0.56942},{0.24539,0.23044,0.59142},{0.24830,0.24143,0.61286},{0.25107,0.25237,0.63374},{0.25369,0.26327,0.65406},{0.25618,0.27412,0.67381},{0.25853,0.28492,0.69300},{0.26074,0.29568,0.71162},{0.26280,0.30639,0.72968},{0.26473,0.31706,0.74718},{0.26652,0.32768,0.76412},{0.26816,0.33825,0.78050},{0.26967,0.34878,0.79631},{0.27103,0.35926,0.81156},{0.27226,0.36970,0.82624},{0.27334,0.38008,0.84037},{0.27429,0.39043,0.85393},{0.27509,0.40072,0.86692},{0.27576,0.41097,0.87936},{0.27628,0.42118,0.89123},{0.27667,0.43134,0.90254},{0.27691,0.44145,0.91328},{0.27701,0.45152,0.92347},{0.27698,0.46153,0.93309},{0.27680,0.47151,0.94214},{0.27648,0.48144,0.95064},{0.27603,0.49132,0.95857},{0.27543,0.50115,0.96594},{0.27469,0.51094,0.97275},{0.27381,0.52069,0.97899},{0.27273,0.53040,0.98461},{0.27106,0.54015,0.98930},{0.26878,0.54995,0.99303},{0.26592,0.55979,0.99583},{0.26252,0.56967,0.99773},{0.25862,0.57958,0.99876},{0.25425,0.58950,0.99896},{0.24946,0.59943,0.99835},{0.24427,0.60937,0.99697},{0.23874,0.61931,0.99485},{0.23288,0.62923,0.99202},{0.22676,0.63913,0.98851},{0.22039,0.64901,0.98436},{0.21382,0.65886,0.97959},{0.20708,0.66866,0.97423},{0.20021,0.67842,0.96833},{0.19326,0.68812,0.96190},{0.18625,0.69775,0.95498},{0.17923,0.70732,0.94761},{0.17223,0.71680,0.93981},{0.16529,0.72620,0.93161},{0.15844,0.73551,0.92305},{0.15173,0.74472,0.91416},{0.14519,0.75381,0.90496},{0.13886,0.76279,0.89550},{0.13278,0.77165,0.88580},{0.12698,0.78037,0.87590},{0.12151,0.78896,0.86581},{0.11639,0.79740,0.85559},{0.11167,0.80569,0.84525},{0.10738,0.81381,0.83484},{0.10357,0.82177,0.82437},{0.10026,0.82955,0.81389},{0.09750,0.83714,0.80342},{0.09532,0.84455,0.79299},{0.09377,0.85175,0.78264},{0.09287,0.85875,0.77240},{0.09267,0.86554,0.76230},{0.09320,0.87211,0.75237},{0.09451,0.87844,0.74265},{0.09662,0.88454,0.73316},{0.09958,0.89040,0.72393},{0.10342,0.89600,0.71500},{0.10815,0.90142,0.70599},{0.11374,0.90673,0.69651},{0.12014,0.91193,0.68660},{0.12733,0.91701,0.67627},{0.13526,0.92197,0.66556},{0.14391,0.92680,0.65448},{0.15323,0.93151,0.64308},{0.16319,0.93609,0.63137},{0.17377,0.94053,0.61938},{0.18491,0.94484,0.60713},{0.19659,0.94901,0.59466},{0.20877,0.95304,0.58199},{0.22142,0.95692,0.56914},{0.23449,0.96065,0.55614},{0.24797,0.96423,0.54303},{0.26180,0.96765,0.52981},{0.27597,0.97092,0.51653},{0.29042,0.97403,0.50321},{0.30513,0.97697,0.48987},{0.32006,0.97974,0.47654},{0.33517,0.98234,0.46325},{0.35043,0.98477,0.45002},{0.36581,0.98702,0.43688},{0.38127,0.98909,0.42386},{0.39678,0.99098,0.41098},{0.41229,0.99268,0.39826},{0.42778,0.99419,0.38575},{0.44321,0.99551,0.37345},{0.45854,0.99663,0.36140},{0.47375,0.99755,0.34963},{0.48879,0.99828,0.33816},{0.50362,0.99879,0.32701},{0.51822,0.99910,0.31622},{0.53255,0.99919,0.30581},{0.54658,0.99907,0.29581},{0.56026,0.99873,0.28623},{0.57357,0.99817,0.27712},{0.58646,0.99739,0.26849},{0.59891,0.99638,0.26038},{0.61088,0.99514,0.25280},{0.62233,0.99366,0.24579},{0.63323,0.99195,0.23937},{0.64362,0.98999,0.23356},{0.65394,0.98775,0.22835},{0.66428,0.98524,0.22370},{0.67462,0.98246,0.21960},{0.68494,0.97941,0.21602},{0.69525,0.97610,0.21294},{0.70553,0.97255,0.21032},{0.71577,0.96875,0.20815},{0.72596,0.96470,0.20640},{0.73610,0.96043,0.20504},{0.74617,0.95593,0.20406},{0.75617,0.95121,0.20343},{0.76608,0.94627,0.20311},{0.77591,0.94113,0.20310},{0.78563,0.93579,0.20336},{0.79524,0.93025,0.20386},{0.80473,0.92452,0.20459},{0.81410,0.91861,0.20552},{0.82333,0.91253,0.20663},{0.83241,0.90627,0.20788},{0.84133,0.89986,0.20926},{0.85010,0.89328,0.21074},{0.85868,0.88655,0.21230},{0.86709,0.87968,0.21391},{0.87530,0.87267,0.21555},{0.88331,0.86553,0.21719},{0.89112,0.85826,0.21880},{0.89870,0.85087,0.22038},{0.90605,0.84337,0.22188},{0.91317,0.83576,0.22328},{0.92004,0.82806,0.22456},{0.92666,0.82025,0.22570},{0.93301,0.81236,0.22667},{0.93909,0.80439,0.22744},{0.94489,0.79634,0.22800},{0.95039,0.78823,0.22831},{0.95560,0.78005,0.22836},{0.96049,0.77181,0.22811},{0.96507,0.76352,0.22754},{0.96931,0.75519,0.22663},{0.97323,0.74682,0.22536},{0.97679,0.73842,0.22369},{0.98000,0.73000,0.22161},{0.98289,0.72140,0.21918},{0.98549,0.71250,0.21650},{0.98781,0.70330,0.21358},{0.98986,0.69382,0.21043},{0.99163,0.68408,0.20706},{0.99314,0.67408,0.20348},{0.99438,0.66386,0.19971},{0.99535,0.65341,0.19577},{0.99607,0.64277,0.19165},{0.99654,0.63193,0.18738},{0.99675,0.62093,0.18297},{0.99672,0.60977,0.17842},{0.99644,0.59846,0.17376},{0.99593,0.58703,0.16899},{0.99517,0.57549,0.16412},{0.99419,0.56386,0.15918},{0.99297,0.55214,0.15417},{0.99153,0.54036,0.14910},{0.98987,0.52854,0.14398},{0.98799,0.51667,0.13883},{0.98590,0.50479,0.13367},{0.98360,0.49291,0.12849},{0.98108,0.48104,0.12332},{0.97837,0.46920,0.11817},{0.97545,0.45740,0.11305},{0.97234,0.44565,0.10797},{0.96904,0.43399,0.10294},{0.96555,0.42241,0.09798},{0.96187,0.41093,0.09310},{0.95801,0.39958,0.08831},{0.95398,0.38836,0.08362},{0.94977,0.37729,0.07905},{0.94538,0.36638,0.07461},{0.94084,0.35566,0.07031},{0.93612,0.34513,0.06616},{0.93125,0.33482,0.06218},{0.92623,0.32473,0.05837},{0.92105,0.31489,0.05475},{0.91572,0.30530,0.05134},{0.91024,0.29599,0.04814},{0.90463,0.28696,0.04516},{0.89888,0.27824,0.04243},{0.89298,0.26981,0.03993},{0.88691,0.26152,0.03753},{0.88066,0.25334,0.03521},{0.87422,0.24526,0.03297},{0.86760,0.23730,0.03082},{0.86079,0.22945,0.02875},{0.85380,0.22170,0.02677},{0.84662,0.21407,0.02487},{0.83926,0.20654,0.02305},{0.83172,0.19912,0.02131},{0.82399,0.19182,0.01966},{0.81608,0.18462,0.01809},{0.80799,0.17753,0.01660},{0.79971,0.17055,0.01520},{0.79125,0.16368,0.01387},{0.78260,0.15693,0.01264},{0.77377,0.15028,0.01148},{0.76476,0.14374,0.01041},{0.75556,0.13731,0.00942},{0.74617,0.13098,0.00851},{0.73661,0.12477,0.00769},{0.72686,0.11867,0.00695},{0.71692,0.11268,0.00629},{0.70680,0.10680,0.00571},{0.69650,0.10102,0.00522},{0.68602,0.09536,0.00481},{0.67535,0.08980,0.00449},{0.66449,0.08436,0.00424},{0.65345,0.07902,0.00408},{0.64223,0.07380,0.00401},{0.63082,0.06868,0.00401},{0.61923,0.06367,0.00410},{0.60746,0.05878,0.00427},{0.59550,0.05399,0.00453},{0.58336,0.04931,0.00486},{0.57103,0.04474,0.00529},{0.55852,0.04028,0.00579},{0.54583,0.03593,0.00638},{0.53295,0.03169,0.00705},{0.51989,0.02756,0.00780},{0.50664,0.02354,0.00863},{0.49321,0.01963,0.00955},{0.47960,0.01583,0.01055}}}, - {"default", {{1.0, 0, 1}, {0.9803921568627452, 0, 1}, {0.9607843137254901, 0, 1}, {0.9411764705882353, 0, 1}, {0.9215686274509804, 0, 1}, {0.9019607843137254, 0, 1}, {0.8823529411764706, 0, 1}, {0.8627450980392157, 0, 1}, {0.8431372549019609, 0, 1}, {0.8235294117647058, 0, 1}, {0.803921568627451, 0, 1}, {0.784313725490196, 0, 1}, {0.7647058823529411, 0, 1}, {0.7450980392156863, 0, 1}, {0.7254901960784315, 0, 1}, {0.7058823529411764, 0, 1}, {0.6862745098039216, 0, 1}, {0.6666666666666667, 0, 1}, {0.6470588235294117, 0, 1}, {0.6274509803921569, 0, 1}, {0.607843137254902, 0, 1}, {0.5882352941176472, 0, 1}, {0.5686274509803921, 0, 1}, {0.5490196078431373, 0, 1}, {0.5294117647058822, 0, 1}, {0.5098039215686274, 0, 1}, {0.4901960784313726, 0, 1}, {0.47058823529411775, 0, 1}, {0.4509803921568627, 0, 1}, {0.43137254901960786, 0, 1}, {0.4117647058823528, 0, 1}, {0.392156862745098, 0, 1}, {0.37254901960784315, 0, 1}, {0.3529411764705883, 0, 1}, {0.3333333333333335, 0, 1}, {0.3137254901960784, 0, 1}, {0.2941176470588236, 0, 1}, {0.27450980392156854, 0, 1}, {0.2549019607843137, 0, 1}, {0.23529411764705888, 0, 1}, {0.21568627450980404, 0, 1}, {0.196078431372549, 0, 1}, {0.17647058823529416, 0, 1}, {0.1568627450980391, 0, 1}, {0.13725490196078427, 0, 1}, {0.11764705882352944, 0, 1}, {0.0980392156862746, 0, 1}, {0.07843137254901955, 0, 1}, {0.05882352941176472, 0, 1}, {0.039215686274509665, 0, 1}, {0.019607843137254832, 0, 1}, {0, 0.0, 1}, {0, 0.019607843137254832, 1}, {0, 0.039215686274509665, 1}, {0, 0.0588235294117645, 1}, {0, 0.07843137254901977, 1}, {0, 0.0980392156862746, 1}, {0, 0.11764705882352944, 1}, {0, 0.13725490196078427, 1}, {0, 0.15686274509803955, 1}, {0, 0.17647058823529438, 1}, {0, 0.1960784313725492, 1}, {0, 0.21568627450980404, 1}, {0, 0.23529411764705888, 1}, {0, 0.2549019607843137, 1}, {0, 0.27450980392156854, 1}, {0, 0.2941176470588234, 1}, {0, 0.3137254901960782, 1}, {0, 0.33333333333333304, 1}, {0, 0.35294117647058787, 1}, {0, 0.37254901960784315, 1}, {0, 0.392156862745098, 1}, {0, 0.4117647058823528, 1}, {0, 0.43137254901960764, 1}, {0, 0.4509803921568629, 1}, {0, 0.47058823529411775, 1}, {0, 0.4901960784313726, 1}, {0, 0.5098039215686274, 1}, {0, 0.5294117647058822, 1}, {0, 0.5490196078431371, 1}, {0, 0.5686274509803919, 1}, {0, 0.5882352941176467, 1}, {0, 0.607843137254902, 1}, {0, 0.6274509803921569, 1}, {0, 0.6470588235294117, 1}, {0, 0.6666666666666665, 1}, {0, 0.6862745098039218, 1}, {0, 0.7058823529411766, 1}, {0, 0.7254901960784315, 1}, {0, 0.7450980392156863, 1}, {0, 0.7647058823529411, 1}, {0, 0.784313725490196, 1}, {0, 0.8039215686274508, 1}, {0, 0.8235294117647056, 1}, {0, 0.8431372549019609, 1}, {0, 0.8627450980392157, 1}, {0, 0.8823529411764706, 1}, {0, 0.9019607843137254, 1}, {0, 0.9215686274509807, 1}, {0, 0.9411764705882355, 1}, {0, 0.9607843137254903, 1}, {0, 0.9803921568627452, 1}, {0, 1, 1.0}, {0, 1, 0.9803921568627452}, {0, 1, 0.9607843137254903}, {0, 1, 0.9411764705882355}, {0, 1, 0.9215686274509802}, {0, 1, 0.9019607843137254}, {0, 1, 0.8823529411764706}, {0, 1, 0.8627450980392157}, {0, 1, 0.8431372549019605}, {0, 1, 0.8235294117647056}, {0, 1, 0.8039215686274508}, {0, 1, 0.784313725490196}, {0, 1, 0.7647058823529411}, {0, 1, 0.7450980392156863}, {0, 1, 0.7254901960784315}, {0, 1, 0.7058823529411766}, {0, 1, 0.6862745098039214}, {0, 1, 0.6666666666666665}, {0, 1, 0.6470588235294117}, {0, 1, 0.6274509803921569}, {0, 1, 0.607843137254902}, {0, 1, 0.5882352941176472}, {0, 1, 0.5686274509803924}, {0, 1, 0.5490196078431375}, {0, 1, 0.5294117647058822}, {0, 1, 0.5098039215686274}, {0, 1, 0.4901960784313726}, {0, 1, 0.47058823529411775}, {0, 1, 0.4509803921568629}, {0, 1, 0.4313725490196081}, {0, 1, 0.4117647058823528}, {0, 1, 0.392156862745098}, {0, 1, 0.37254901960784315}, {0, 1, 0.3529411764705883}, {0, 1, 0.3333333333333335}, {0, 1, 0.31372549019607865}, {0, 1, 0.2941176470588238}, {0, 1, 0.274509803921569}, {0, 1, 0.2549019607843137}, {0, 1, 0.23529411764705888}, {0, 1, 0.21568627450980404}, {0, 1, 0.1960784313725492}, {0, 1, 0.17647058823529438}, {0, 1, 0.15686274509803955}, {0, 1, 0.13725490196078471}, {0, 1, 0.11764705882352988}, {0, 1, 0.09803921568627416}, {0, 1, 0.07843137254901933}, {0, 1, 0.0588235294117645}, {0, 1, 0.039215686274509665}, {0, 1, 0.019607843137254832}, {0.0, 1, 0}, {0.019607843137254832, 1, 0}, {0.039215686274509665, 1, 0}, {0.0588235294117645, 1, 0}, {0.07843137254901933, 1, 0}, {0.09803921568627416, 1, 0}, {0.117647058823529, 1, 0}, {0.13725490196078383, 1, 0}, {0.15686274509803866, 1, 0}, {0.1764705882352935, 1, 0}, {0.19607843137254832, 1, 0}, {0.21568627450980404, 1, 0}, {0.23529411764705888, 1, 0}, {0.2549019607843137, 1, 0}, {0.27450980392156854, 1, 0}, {0.2941176470588234, 1, 0}, {0.3137254901960782, 1, 0}, {0.33333333333333304, 1, 0}, {0.35294117647058787, 1, 0}, {0.3725490196078436, 1, 0}, {0.3921568627450984, 1, 0}, {0.41176470588235325, 1, 0}, {0.4313725490196081, 1, 0}, {0.4509803921568629, 1, 0}, {0.47058823529411775, 1, 0}, {0.4901960784313726, 1, 0}, {0.5098039215686274, 1, 0}, {0.5294117647058822, 1, 0}, {0.5490196078431371, 1, 0}, {0.5686274509803919, 1, 0}, {0.5882352941176467, 1, 0}, {0.6078431372549016, 1, 0}, {0.6274509803921564, 1, 0}, {0.6470588235294112, 1, 0}, {0.6666666666666661, 1, 0}, {0.6862745098039218, 1, 0}, {0.7058823529411766, 1, 0}, {0.7254901960784315, 1, 0}, {0.7450980392156863, 1, 0}, {0.7647058823529411, 1, 0}, {0.784313725490196, 1, 0}, {0.8039215686274508, 1, 0}, {0.8235294117647056, 1, 0}, {0.8431372549019613, 1, 0}, {0.8627450980392162, 1, 0}, {0.882352941176471, 1, 0}, {0.9019607843137258, 1, 0}, {0.9215686274509807, 1, 0}, {0.9411764705882355, 1, 0}, {0.9607843137254903, 1, 0}, {0.9803921568627452, 1, 0}, {1, 1.0, 0}, {1, 0.9803921568627452, 0}, {1, 0.9607843137254903, 0}, {1, 0.9411764705882355, 0}, {1, 0.9215686274509807, 0}, {1, 0.9019607843137258, 0}, {1, 0.882352941176471, 0}, {1, 0.8627450980392162, 0}, {1, 0.8431372549019605, 0}, {1, 0.8235294117647056, 0}, {1, 0.8039215686274508, 0}, {1, 0.784313725490196, 0}, {1, 0.7647058823529411, 0}, {1, 0.7450980392156863, 0}, {1, 0.7254901960784315, 0}, {1, 0.7058823529411766, 0}, {1, 0.6862745098039209, 0}, {1, 0.6666666666666661, 0}, {1, 0.6470588235294112, 0}, {1, 0.6274509803921564, 0}, {1, 0.6078431372549016, 0}, {1, 0.5882352941176467, 0}, {1, 0.5686274509803919, 0}, {1, 0.5490196078431371, 0}, {1, 0.5294117647058822, 0}, {1, 0.5098039215686274, 0}, {1, 0.4901960784313726, 0}, {1, 0.47058823529411775, 0}, {1, 0.4509803921568629, 0}, {1, 0.4313725490196081, 0}, {1, 0.41176470588235325, 0}, {1, 0.3921568627450984, 0}, {1, 0.3725490196078427, 0}, {1, 0.35294117647058787, 0}, {1, 0.33333333333333304, 0}, {1, 0.3137254901960782, 0}, {1, 0.2941176470588234, 0}, {1, 0.27450980392156854, 0}, {1, 0.2549019607843137, 0}, {1, 0.23529411764705888, 0}, {1, 0.21568627450980404, 0}, {1, 0.1960784313725492, 0}, {1, 0.17647058823529438, 0}, {1, 0.15686274509803955, 0}, {1, 0.13725490196078471, 0}, {1, 0.11764705882352988, 0}, {1, 0.09803921568627505, 0}, {1, 0.07843137254902022, 0}, {1, 0.0588235294117645, 0}, {1, 0.039215686274509665, 0}, {1, 0.019607843137254832, 0}, {1, 0.0, 0}}}, - {"anybotics", {{1.00000, 0.32549, 0.29020},{1.00000, 0.33333, 0.29412},{1.00000, 0.33725, 0.29804},{0.99608, 0.34510, 0.29804},{0.99608, 0.35294, 0.30196},{0.99608, 0.36078, 0.30588},{0.99216, 0.36863, 0.30980},{0.99216, 0.37647, 0.31373},{0.98824, 0.38431, 0.31373},{0.98824, 0.38824, 0.31765},{0.98431, 0.39608, 0.32157},{0.98431, 0.40392, 0.32549},{0.98431, 0.41176, 0.32549},{0.98039, 0.41961, 0.32941},{0.98039, 0.42745, 0.33333},{0.97647, 0.43529, 0.33725},{0.97647, 0.44314, 0.33725},{0.97255, 0.44706, 0.34118},{0.97255, 0.45490, 0.34510},{0.96863, 0.46275, 0.34902},{0.96863, 0.47059, 0.34902},{0.96863, 0.47843, 0.35294},{0.96471, 0.48627, 0.35686},{0.96471, 0.49412, 0.36078},{0.96078, 0.49804, 0.36471},{0.96078, 0.50588, 0.36471},{0.95686, 0.51373, 0.36863},{0.95686, 0.52157, 0.37255},{0.95686, 0.52941, 0.37647},{0.95294, 0.53725, 0.37647},{0.95294, 0.54510, 0.38039},{0.94902, 0.55294, 0.38431},{0.94902, 0.55686, 0.38824},{0.94510, 0.56471, 0.38824},{0.94510, 0.57255, 0.39216},{0.94510, 0.58039, 0.39608},{0.94118, 0.58824, 0.40000},{0.94118, 0.59608, 0.40000},{0.93725, 0.60392, 0.40392},{0.93725, 0.60784, 0.40784},{0.93333, 0.61569, 0.41176},{0.93333, 0.62353, 0.41176},{0.92941, 0.63137, 0.41569},{0.92941, 0.63922, 0.41961},{0.92941, 0.64706, 0.42353},{0.92549, 0.65490, 0.42745},{0.92549, 0.66275, 0.42745},{0.92157, 0.66667, 0.43137},{0.92157, 0.67451, 0.43529},{0.91765, 0.68235, 0.43922},{0.91765, 0.69020, 0.43922},{0.91765, 0.69804, 0.44314},{0.91373, 0.70588, 0.44706},{0.91373, 0.71373, 0.45098},{0.90980, 0.71765, 0.45098},{0.90980, 0.72549, 0.45490},{0.90588, 0.73333, 0.45882},{0.90588, 0.74118, 0.46275},{0.90196, 0.74902, 0.46275},{0.90196, 0.75686, 0.46667},{0.90196, 0.76471, 0.47059},{0.89804, 0.77255, 0.47451},{0.89804, 0.77647, 0.47843},{0.89412, 0.78431, 0.47843},{0.89412, 0.79216, 0.48235},{0.89412, 0.79216, 0.48235},{0.89412, 0.79216, 0.48627},{0.89412, 0.79216, 0.48627},{0.89804, 0.79608, 0.49020},{0.89804, 0.79608, 0.49020},{0.89804, 0.79608, 0.49412},{0.89804, 0.79608, 0.49412},{0.89804, 0.79608, 0.49804},{0.89804, 0.79608, 0.49804},{0.89804, 0.80000, 0.50196},{0.89804, 0.80000, 0.50196},{0.90196, 0.80000, 0.50588},{0.90196, 0.80000, 0.50588},{0.90196, 0.80000, 0.50588},{0.90196, 0.80392, 0.50980},{0.90196, 0.80392, 0.50980},{0.90196, 0.80392, 0.51373},{0.90196, 0.80392, 0.51373},{0.90588, 0.80392, 0.51765},{0.90588, 0.80784, 0.51765},{0.90588, 0.80784, 0.52157},{0.90588, 0.80784, 0.52157},{0.90588, 0.80784, 0.52549},{0.90588, 0.80784, 0.52549},{0.90588, 0.81176, 0.52549},{0.90588, 0.81176, 0.52941},{0.90980, 0.81176, 0.52941},{0.90980, 0.81176, 0.53333},{0.90980, 0.81176, 0.53333},{0.90980, 0.81569, 0.53725},{0.90980, 0.81569, 0.53725},{0.90980, 0.81569, 0.54118},{0.90980, 0.81569, 0.54118},{0.91373, 0.81569, 0.54510},{0.91373, 0.81961, 0.54510},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.55294},{0.91373, 0.81961, 0.55294},{0.91373, 0.82353, 0.55686},{0.91765, 0.82353, 0.55686},{0.91765, 0.82353, 0.56078},{0.91765, 0.82353, 0.56078},{0.91765, 0.82353, 0.56471},{0.91765, 0.82745, 0.56471},{0.91765, 0.82745, 0.56863},{0.91765, 0.82745, 0.56863},{0.92157, 0.82745, 0.57255},{0.92157, 0.82745, 0.57255},{0.92157, 0.83137, 0.57255},{0.92157, 0.83137, 0.57647},{0.92157, 0.83137, 0.57647},{0.92157, 0.83137, 0.58039},{0.92157, 0.83137, 0.58039},{0.92157, 0.83529, 0.58431},{0.92549, 0.83529, 0.58431},{0.92549, 0.83529, 0.58824},{0.92549, 0.83529, 0.58824},{0.92549, 0.83529, 0.59216},{0.92549, 0.83922, 0.59216},{0.92549, 0.83922, 0.59608},{0.92549, 0.83922, 0.59608},{0.92549, 0.83529, 0.59608},{0.91765, 0.83137, 0.59608},{0.90980, 0.82745, 0.59608},{0.90196, 0.81961, 0.59216},{0.89412, 0.81569, 0.59216},{0.88627, 0.81176, 0.59216},{0.87843, 0.80392, 0.58824},{0.87059, 0.80000, 0.58824},{0.86275, 0.79608, 0.58824},{0.85882, 0.78824, 0.58431},{0.85098, 0.78431, 0.58431},{0.84314, 0.78039, 0.58431},{0.83529, 0.77255, 0.58431},{0.82745, 0.76863, 0.58039},{0.81961, 0.76471, 0.58039},{0.81176, 0.75686, 0.58039},{0.80392, 0.75294, 0.57647},{0.80000, 0.74902, 0.57647},{0.79216, 0.74118, 0.57647},{0.78431, 0.73725, 0.57647},{0.77647, 0.72941, 0.57255},{0.76863, 0.72549, 0.57255},{0.76078, 0.72157, 0.57255},{0.75294, 0.71373, 0.56863},{0.74510, 0.70980, 0.56863},{0.74118, 0.70588, 0.56863},{0.73333, 0.69804, 0.56863},{0.72549, 0.69412, 0.56471},{0.71765, 0.69020, 0.56471},{0.70980, 0.68235, 0.56471},{0.70196, 0.67843, 0.56078},{0.69412, 0.67451, 0.56078},{0.68627, 0.66667, 0.56078},{0.68235, 0.66275, 0.55686},{0.67451, 0.65882, 0.55686},{0.66667, 0.65098, 0.55686},{0.65882, 0.64706, 0.55686},{0.65098, 0.64314, 0.55294},{0.64314, 0.63529, 0.55294},{0.63529, 0.63137, 0.55294},{0.62745, 0.62745, 0.54902},{0.61961, 0.61961, 0.54902},{0.61569, 0.61569, 0.54902},{0.60784, 0.61176, 0.54902},{0.60000, 0.60392, 0.54510},{0.59216, 0.60000, 0.54510},{0.58431, 0.59216, 0.54510},{0.57647, 0.58824, 0.54118},{0.56863, 0.58431, 0.54118},{0.56078, 0.57647, 0.54118},{0.55686, 0.57255, 0.54118},{0.54902, 0.56863, 0.53725},{0.54118, 0.56078, 0.53725},{0.53333, 0.55686, 0.53725},{0.52549, 0.55294, 0.53333},{0.51765, 0.54510, 0.53333},{0.50980, 0.54118, 0.53333},{0.50196, 0.53725, 0.53333},{0.49804, 0.52941, 0.52941},{0.49020, 0.52549, 0.52941},{0.48235, 0.52157, 0.52941},{0.47451, 0.51373, 0.52549},{0.46667, 0.50980, 0.52549},{0.45882, 0.50588, 0.52549},{0.45098, 0.49804, 0.51765},{0.44706, 0.49020, 0.51373},{0.43922, 0.48627, 0.50588},{0.43529, 0.47843, 0.50196},{0.42745, 0.47451, 0.49412},{0.42353, 0.46667, 0.49020},{0.41569, 0.45882, 0.48235},{0.40784, 0.45490, 0.47451},{0.40392, 0.44706, 0.47059},{0.39608, 0.43922, 0.46275},{0.39216, 0.43529, 0.45882},{0.38431, 0.42745, 0.45098},{0.38039, 0.41961, 0.44314},{0.37255, 0.41569, 0.43922},{0.36471, 0.40784, 0.43137},{0.36078, 0.40000, 0.42745},{0.35294, 0.39608, 0.41961},{0.34902, 0.38824, 0.41176},{0.34118, 0.38431, 0.40784},{0.33725, 0.37647, 0.40000},{0.32941, 0.36863, 0.39608},{0.32157, 0.36471, 0.38824},{0.31765, 0.35686, 0.38431},{0.30980, 0.34902, 0.37647},{0.30588, 0.34510, 0.36863},{0.29804, 0.33725, 0.36471},{0.29412, 0.33333, 0.35686},{0.28627, 0.32549, 0.35294},{0.27843, 0.31765, 0.34510},{0.27451, 0.31373, 0.33725},{0.26667, 0.30588, 0.33333},{0.26275, 0.29804, 0.32549},{0.25490, 0.29412, 0.32157},{0.24706, 0.28627, 0.31373},{0.24314, 0.27843, 0.30980},{0.23529, 0.27451, 0.30196},{0.23137, 0.26667, 0.29412},{0.22353, 0.25882, 0.29020},{0.21961, 0.25490, 0.28235},{0.21176, 0.24706, 0.27843},{0.20392, 0.24314, 0.27059},{0.20000, 0.23529, 0.26275},{0.19216, 0.22745, 0.25882},{0.18824, 0.22353, 0.25098},{0.18039, 0.21569, 0.24706},{0.17647, 0.20784, 0.23922},{0.16863, 0.20392, 0.23137},{0.16078, 0.19608, 0.22745},{0.15686, 0.19216, 0.21961},{0.14902, 0.18431, 0.21569},{0.14510, 0.17647, 0.20784},{0.13725, 0.17255, 0.20392},{0.13333, 0.16471, 0.19608},{0.12549, 0.15686, 0.18824},{0.11765, 0.15294, 0.18431},{0.11373, 0.14510, 0.17647},{0.10588, 0.13725, 0.17255},{0.10196, 0.13333, 0.16471},{0.09412, 0.12549, 0.15686},{0.09020, 0.12157, 0.15294},{0.08235, 0.11373, 0.14510},{0.07451, 0.10588, 0.14118},{0.07059, 0.10196, 0.13333},{0.06275, 0.09412, 0.12549}}}, -}; +extern std::map>> const colorMap; -static Ogre::ColourValue getColorMap(float intensity, const std::vector>& ctable) { +inline Ogre::ColourValue getColorMap(float intensity, const std::vector>& ctable) { intensity = std::min(intensity, 1.0f); intensity = std::max(intensity, 0.0f); @@ -54,7 +27,7 @@ static Ogre::ColourValue getColorMap(float intensity, const std::vector rgb = ctable.at(idx); + std::vector const& rgb = ctable.at(idx); Ogre::ColourValue color; color.r = rgb[0]; @@ -64,12 +37,12 @@ static Ogre::ColourValue getColorMap(float intensity, const std::vector getColorMapNames() { +inline std::vector getColorMapNames() { std::vector types; types.reserve(colorMap.size()); - for(auto it : colorMap) { - types.push_back(it.first); + for(auto const& pair : colorMap) { + types.push_back(pair.first); } return types; diff --git a/grid_map_rviz_plugin/src/GridMapColorMaps.cpp b/grid_map_rviz_plugin/src/GridMapColorMaps.cpp new file mode 100644 index 000000000..3f70c2725 --- /dev/null +++ b/grid_map_rviz_plugin/src/GridMapColorMaps.cpp @@ -0,0 +1,38 @@ + +#include "grid_map_rviz_plugin/GridMapColorMaps.hpp" + +namespace grid_map_rviz_plugin { + +std::map>> const colorMap +{ + {"viridis", {{0.267004, 0.004874, 0.329415},{0.268510, 0.009605, 0.335427},{0.269944, 0.014625, 0.341379},{0.271305, 0.019942, 0.347269},{0.272594, 0.025563, 0.353093},{0.273809, 0.031497, 0.358853},{0.274952, 0.037752, 0.364543},{0.276022, 0.044167, 0.370164},{0.277018, 0.050344, 0.375715},{0.277941, 0.056324, 0.381191},{0.278791, 0.062145, 0.386592},{0.279566, 0.067836, 0.391917},{0.280267, 0.073417, 0.397163},{0.280894, 0.078907, 0.402329},{0.281446, 0.084320, 0.407414},{0.281924, 0.089666, 0.412415},{0.282327, 0.094955, 0.417331},{0.282656, 0.100196, 0.422160},{0.282910, 0.105393, 0.426902},{0.283091, 0.110553, 0.431554},{0.283197, 0.115680, 0.436115},{0.283229, 0.120777, 0.440584},{0.283187, 0.125848, 0.444960},{0.283072, 0.130895, 0.449241},{0.282884, 0.135920, 0.453427},{0.282623, 0.140926, 0.457517},{0.282290, 0.145912, 0.461510},{0.281887, 0.150881, 0.465405},{0.281412, 0.155834, 0.469201},{0.280868, 0.160771, 0.472899},{0.280255, 0.165693, 0.476498},{0.279574, 0.170599, 0.479997},{0.278826, 0.175490, 0.483397},{0.278012, 0.180367, 0.486697},{0.277134, 0.185228, 0.489898},{0.276194, 0.190074, 0.493001},{0.275191, 0.194905, 0.496005},{0.274128, 0.199721, 0.498911},{0.273006, 0.204520, 0.501721},{0.271828, 0.209303, 0.504434},{0.270595, 0.214069, 0.507052},{0.269308, 0.218818, 0.509577},{0.267968, 0.223549, 0.512008},{0.266580, 0.228262, 0.514349},{0.265145, 0.232956, 0.516599},{0.263663, 0.237631, 0.518762},{0.262138, 0.242286, 0.520837},{0.260571, 0.246922, 0.522828},{0.258965, 0.251537, 0.524736},{0.257322, 0.256130, 0.526563},{0.255645, 0.260703, 0.528312},{0.253935, 0.265254, 0.529983},{0.252194, 0.269783, 0.531579},{0.250425, 0.274290, 0.533103},{0.248629, 0.278775, 0.534556},{0.246811, 0.283237, 0.535941},{0.244972, 0.287675, 0.537260},{0.243113, 0.292092, 0.538516},{0.241237, 0.296485, 0.539709},{0.239346, 0.300855, 0.540844},{0.237441, 0.305202, 0.541921},{0.235526, 0.309527, 0.542944},{0.233603, 0.313828, 0.543914},{0.231674, 0.318106, 0.544834},{0.229739, 0.322361, 0.545706},{0.227802, 0.326594, 0.546532},{0.225863, 0.330805, 0.547314},{0.223925, 0.334994, 0.548053},{0.221989, 0.339161, 0.548752},{0.220057, 0.343307, 0.549413},{0.218130, 0.347432, 0.550038},{0.216210, 0.351535, 0.550627},{0.214298, 0.355619, 0.551184},{0.212395, 0.359683, 0.551710},{0.210503, 0.363727, 0.552206},{0.208623, 0.367752, 0.552675},{0.206756, 0.371758, 0.553117},{0.204903, 0.375746, 0.553533},{0.203063, 0.379716, 0.553925},{0.201239, 0.383670, 0.554294},{0.199430, 0.387607, 0.554642},{0.197636, 0.391528, 0.554969},{0.195860, 0.395433, 0.555276},{0.194100, 0.399323, 0.555565},{0.192357, 0.403199, 0.555836},{0.190631, 0.407061, 0.556089},{0.188923, 0.410910, 0.556326},{0.187231, 0.414746, 0.556547},{0.185556, 0.418570, 0.556753},{0.183898, 0.422383, 0.556944},{0.182256, 0.426184, 0.557120},{0.180629, 0.429975, 0.557282},{0.179019, 0.433756, 0.557430},{0.177423, 0.437527, 0.557565},{0.175841, 0.441290, 0.557685},{0.174274, 0.445044, 0.557792},{0.172719, 0.448791, 0.557885},{0.171176, 0.452530, 0.557965},{0.169646, 0.456262, 0.558030},{0.168126, 0.459988, 0.558082},{0.166617, 0.463708, 0.558119},{0.165117, 0.467423, 0.558141},{0.163625, 0.471133, 0.558148},{0.162142, 0.474838, 0.558140},{0.160665, 0.478540, 0.558115},{0.159194, 0.482237, 0.558073},{0.157729, 0.485932, 0.558013},{0.156270, 0.489624, 0.557936},{0.154815, 0.493313, 0.557840},{0.153364, 0.497000, 0.557724},{0.151918, 0.500685, 0.557587},{0.150476, 0.504369, 0.557430},{0.149039, 0.508051, 0.557250},{0.147607, 0.511733, 0.557049},{0.146180, 0.515413, 0.556823},{0.144759, 0.519093, 0.556572},{0.143343, 0.522773, 0.556295},{0.141935, 0.526453, 0.555991},{0.140536, 0.530132, 0.555659},{0.139147, 0.533812, 0.555298},{0.137770, 0.537492, 0.554906},{0.136408, 0.541173, 0.554483},{0.135066, 0.544853, 0.554029},{0.133743, 0.548535, 0.553541},{0.132444, 0.552216, 0.553018},{0.131172, 0.555899, 0.552459},{0.129933, 0.559582, 0.551864},{0.128729, 0.563265, 0.551229},{0.127568, 0.566949, 0.550556},{0.126453, 0.570633, 0.549841},{0.125394, 0.574318, 0.549086},{0.124395, 0.578002, 0.548287},{0.123463, 0.581687, 0.547445},{0.122606, 0.585371, 0.546557},{0.121831, 0.589055, 0.545623},{0.121148, 0.592739, 0.544641},{0.120565, 0.596422, 0.543611},{0.120092, 0.600104, 0.542530},{0.119738, 0.603785, 0.541400},{0.119512, 0.607464, 0.540218},{0.119423, 0.611141, 0.538982},{0.119483, 0.614817, 0.537692},{0.119699, 0.618490, 0.536347},{0.120081, 0.622161, 0.534946},{0.120638, 0.625828, 0.533488},{0.121380, 0.629492, 0.531973},{0.122312, 0.633153, 0.530398},{0.123444, 0.636809, 0.528763},{0.124780, 0.640461, 0.527068},{0.126326, 0.644107, 0.525311},{0.128087, 0.647749, 0.523491},{0.130067, 0.651384, 0.521608},{0.132268, 0.655014, 0.519661},{0.134692, 0.658636, 0.517649},{0.137339, 0.662252, 0.515571},{0.140210, 0.665859, 0.513427},{0.143303, 0.669459, 0.511215},{0.146616, 0.673050, 0.508936},{0.150148, 0.676631, 0.506589},{0.153894, 0.680203, 0.504172},{0.157851, 0.683765, 0.501686},{0.162016, 0.687316, 0.499129},{0.166383, 0.690856, 0.496502},{0.170948, 0.694384, 0.493803},{0.175707, 0.697900, 0.491033},{0.180653, 0.701402, 0.488189},{0.185783, 0.704891, 0.485273},{0.191090, 0.708366, 0.482284},{0.196571, 0.711827, 0.479221},{0.202219, 0.715272, 0.476084},{0.208030, 0.718701, 0.472873},{0.214000, 0.722114, 0.469588},{0.220124, 0.725509, 0.466226},{0.226397, 0.728888, 0.462789},{0.232815, 0.732247, 0.459277},{0.239374, 0.735588, 0.455688},{0.246070, 0.738910, 0.452024},{0.252899, 0.742211, 0.448284},{0.259857, 0.745492, 0.444467},{0.266941, 0.748751, 0.440573},{0.274149, 0.751988, 0.436601},{0.281477, 0.755203, 0.432552},{0.288921, 0.758394, 0.428426},{0.296479, 0.761561, 0.424223},{0.304148, 0.764704, 0.419943},{0.311925, 0.767822, 0.415586},{0.319809, 0.770914, 0.411152},{0.327796, 0.773980, 0.406640},{0.335885, 0.777018, 0.402049},{0.344074, 0.780029, 0.397381},{0.352360, 0.783011, 0.392636},{0.360741, 0.785964, 0.387814},{0.369214, 0.788888, 0.382914},{0.377779, 0.791781, 0.377939},{0.386433, 0.794644, 0.372886},{0.395174, 0.797475, 0.367757},{0.404001, 0.800275, 0.362552},{0.412913, 0.803041, 0.357269},{0.421908, 0.805774, 0.351910},{0.430983, 0.808473, 0.346476},{0.440137, 0.811138, 0.340967},{0.449368, 0.813768, 0.335384},{0.458674, 0.816363, 0.329727},{0.468053, 0.818921, 0.323998},{0.477504, 0.821444, 0.318195},{0.487026, 0.823929, 0.312321},{0.496615, 0.826376, 0.306377},{0.506271, 0.828786, 0.300362},{0.515992, 0.831158, 0.294279},{0.525776, 0.833491, 0.288127},{0.535621, 0.835785, 0.281908},{0.545524, 0.838039, 0.275626},{0.555484, 0.840254, 0.269281},{0.565498, 0.842430, 0.262877},{0.575563, 0.844566, 0.256415},{0.585678, 0.846661, 0.249897},{0.595839, 0.848717, 0.243329},{0.606045, 0.850733, 0.236712},{0.616293, 0.852709, 0.230052},{0.626579, 0.854645, 0.223353},{0.636902, 0.856542, 0.216620},{0.647257, 0.858400, 0.209861},{0.657642, 0.860219, 0.203082},{0.668054, 0.861999, 0.196293},{0.678489, 0.863742, 0.189503},{0.688944, 0.865448, 0.182725},{0.699415, 0.867117, 0.175971},{0.709898, 0.868751, 0.169257},{0.720391, 0.870350, 0.162603},{0.730889, 0.871916, 0.156029},{0.741388, 0.873449, 0.149561},{0.751884, 0.874951, 0.143228},{0.762373, 0.876424, 0.137064},{0.772852, 0.877868, 0.131109},{0.783315, 0.879285, 0.125405},{0.793760, 0.880678, 0.120005},{0.804182, 0.882046, 0.114965},{0.814576, 0.883393, 0.110347},{0.824940, 0.884720, 0.106217},{0.835270, 0.886029, 0.102646},{0.845561, 0.887322, 0.099702},{0.855810, 0.888601, 0.097452},{0.866013, 0.889868, 0.095953},{0.876168, 0.891125, 0.095250},{0.886271, 0.892374, 0.095374},{0.896320, 0.893616, 0.096335},{0.906311, 0.894855, 0.098125},{0.916242, 0.896091, 0.100717},{0.926106, 0.897330, 0.104071},{0.935904, 0.898570, 0.108131},{0.945636, 0.899815, 0.112838},{0.955300, 0.901065, 0.118128},{0.964894, 0.902323, 0.123941},{0.974417, 0.903590, 0.130215},{0.983868, 0.904867, 0.136897},{0.993248, 0.906157, 0.143936}}}, + {"plasma", {{0.050383, 0.029803, 0.527975},{0.063536, 0.028426, 0.533124},{0.075353, 0.027206, 0.538007},{0.086222, 0.026125, 0.542658},{0.096379, 0.025165, 0.547103},{0.105980, 0.024309, 0.551368},{0.115124, 0.023556, 0.555468},{0.123903, 0.022878, 0.559423},{0.132381, 0.022258, 0.563250},{0.140603, 0.021687, 0.566959},{0.148607, 0.021154, 0.570562},{0.156421, 0.020651, 0.574065},{0.164070, 0.020171, 0.577478},{0.171574, 0.019706, 0.580806},{0.178950, 0.019252, 0.584054},{0.186213, 0.018803, 0.587228},{0.193374, 0.018354, 0.590330},{0.200445, 0.017902, 0.593364},{0.207435, 0.017442, 0.596333},{0.214350, 0.016973, 0.599239},{0.221197, 0.016497, 0.602083},{0.227983, 0.016007, 0.604867},{0.234715, 0.015502, 0.607592},{0.241396, 0.014979, 0.610259},{0.248032, 0.014439, 0.612868},{0.254627, 0.013882, 0.615419},{0.261183, 0.013308, 0.617911},{0.267703, 0.012716, 0.620346},{0.274191, 0.012109, 0.622722},{0.280648, 0.011488, 0.625038},{0.287076, 0.010855, 0.627295},{0.293478, 0.010213, 0.629490},{0.299855, 0.009561, 0.631624},{0.306210, 0.008902, 0.633694},{0.312543, 0.008239, 0.635700},{0.318856, 0.007576, 0.637640},{0.325150, 0.006915, 0.639512},{0.331426, 0.006261, 0.641316},{0.337683, 0.005618, 0.643049},{0.343925, 0.004991, 0.644710},{0.350150, 0.004382, 0.646298},{0.356359, 0.003798, 0.647810},{0.362553, 0.003243, 0.649245},{0.368733, 0.002724, 0.650601},{0.374897, 0.002245, 0.651876},{0.381047, 0.001814, 0.653068},{0.387183, 0.001434, 0.654177},{0.393304, 0.001114, 0.655199},{0.399411, 0.000859, 0.656133},{0.405503, 0.000678, 0.656977},{0.411580, 0.000577, 0.657730},{0.417642, 0.000564, 0.658390},{0.423689, 0.000646, 0.658956},{0.429719, 0.000831, 0.659425},{0.435734, 0.001127, 0.659797},{0.441732, 0.001540, 0.660069},{0.447714, 0.002080, 0.660240},{0.453677, 0.002755, 0.660310},{0.459623, 0.003574, 0.660277},{0.465550, 0.004545, 0.660139},{0.471457, 0.005678, 0.659897},{0.477344, 0.006980, 0.659549},{0.483210, 0.008460, 0.659095},{0.489055, 0.010127, 0.658534},{0.494877, 0.011990, 0.657865},{0.500678, 0.014055, 0.657088},{0.506454, 0.016333, 0.656202},{0.512206, 0.018833, 0.655209},{0.517933, 0.021563, 0.654109},{0.523633, 0.024532, 0.652901},{0.529306, 0.027747, 0.651586},{0.534952, 0.031217, 0.650165},{0.540570, 0.034950, 0.648640},{0.546157, 0.038954, 0.647010},{0.551715, 0.043136, 0.645277},{0.557243, 0.047331, 0.643443},{0.562738, 0.051545, 0.641509},{0.568201, 0.055778, 0.639477},{0.573632, 0.060028, 0.637349},{0.579029, 0.064296, 0.635126},{0.584391, 0.068579, 0.632812},{0.589719, 0.072878, 0.630408},{0.595011, 0.077190, 0.627917},{0.600266, 0.081516, 0.625342},{0.605485, 0.085854, 0.622686},{0.610667, 0.090204, 0.619951},{0.615812, 0.094564, 0.617140},{0.620919, 0.098934, 0.614257},{0.625987, 0.103312, 0.611305},{0.631017, 0.107699, 0.608287},{0.636008, 0.112092, 0.605205},{0.640959, 0.116492, 0.602065},{0.645872, 0.120898, 0.598867},{0.650746, 0.125309, 0.595617},{0.655580, 0.129725, 0.592317},{0.660374, 0.134144, 0.588971},{0.665129, 0.138566, 0.585582},{0.669845, 0.142992, 0.582154},{0.674522, 0.147419, 0.578688},{0.679160, 0.151848, 0.575189},{0.683758, 0.156278, 0.571660},{0.688318, 0.160709, 0.568103},{0.692840, 0.165141, 0.564522},{0.697324, 0.169573, 0.560919},{0.701769, 0.174005, 0.557296},{0.706178, 0.178437, 0.553657},{0.710549, 0.182868, 0.550004},{0.714883, 0.187299, 0.546338},{0.719181, 0.191729, 0.542663},{0.723444, 0.196158, 0.538981},{0.727670, 0.200586, 0.535293},{0.731862, 0.205013, 0.531601},{0.736019, 0.209439, 0.527908},{0.740143, 0.213864, 0.524216},{0.744232, 0.218288, 0.520524},{0.748289, 0.222711, 0.516834},{0.752312, 0.227133, 0.513149},{0.756304, 0.231555, 0.509468},{0.760264, 0.235976, 0.505794},{0.764193, 0.240396, 0.502126},{0.768090, 0.244817, 0.498465},{0.771958, 0.249237, 0.494813},{0.775796, 0.253658, 0.491171},{0.779604, 0.258078, 0.487539},{0.783383, 0.262500, 0.483918},{0.787133, 0.266922, 0.480307},{0.790855, 0.271345, 0.476706},{0.794549, 0.275770, 0.473117},{0.798216, 0.280197, 0.469538},{0.801855, 0.284626, 0.465971},{0.805467, 0.289057, 0.462415},{0.809052, 0.293491, 0.458870},{0.812612, 0.297928, 0.455338},{0.816144, 0.302368, 0.451816},{0.819651, 0.306812, 0.448306},{0.823132, 0.311261, 0.444806},{0.826588, 0.315714, 0.441316},{0.830018, 0.320172, 0.437836},{0.833422, 0.324635, 0.434366},{0.836801, 0.329105, 0.430905},{0.840155, 0.333580, 0.427455},{0.843484, 0.338062, 0.424013},{0.846788, 0.342551, 0.420579},{0.850066, 0.347048, 0.417153},{0.853319, 0.351553, 0.413734},{0.856547, 0.356066, 0.410322},{0.859750, 0.360588, 0.406917},{0.862927, 0.365119, 0.403519},{0.866078, 0.369660, 0.400126},{0.869203, 0.374212, 0.396738},{0.872303, 0.378774, 0.393355},{0.875376, 0.383347, 0.389976},{0.878423, 0.387932, 0.386600},{0.881443, 0.392529, 0.383229},{0.884436, 0.397139, 0.379860},{0.887402, 0.401762, 0.376494},{0.890340, 0.406398, 0.373130},{0.893250, 0.411048, 0.369768},{0.896131, 0.415712, 0.366407},{0.898984, 0.420392, 0.363047},{0.901807, 0.425087, 0.359688},{0.904601, 0.429797, 0.356329},{0.907365, 0.434524, 0.352970},{0.910098, 0.439268, 0.349610},{0.912800, 0.444029, 0.346251},{0.915471, 0.448807, 0.342890},{0.918109, 0.453603, 0.339529},{0.920714, 0.458417, 0.336166},{0.923287, 0.463251, 0.332801},{0.925825, 0.468103, 0.329435},{0.928329, 0.472975, 0.326067},{0.930798, 0.477867, 0.322697},{0.933232, 0.482780, 0.319325},{0.935630, 0.487712, 0.315952},{0.937990, 0.492667, 0.312575},{0.940313, 0.497642, 0.309197},{0.942598, 0.502639, 0.305816},{0.944844, 0.507658, 0.302433},{0.947051, 0.512699, 0.299049},{0.949217, 0.517763, 0.295662},{0.951344, 0.522850, 0.292275},{0.953428, 0.527960, 0.288883},{0.955470, 0.533093, 0.285490},{0.957469, 0.538250, 0.282096},{0.959424, 0.543431, 0.278701},{0.961336, 0.548636, 0.275305},{0.963203, 0.553865, 0.271909},{0.965024, 0.559118, 0.268513},{0.966798, 0.564396, 0.265118},{0.968526, 0.569700, 0.261721},{0.970205, 0.575028, 0.258325},{0.971835, 0.580382, 0.254931},{0.973416, 0.585761, 0.251540},{0.974947, 0.591165, 0.248151},{0.976428, 0.596595, 0.244767},{0.977856, 0.602051, 0.241387},{0.979233, 0.607532, 0.238013},{0.980556, 0.613039, 0.234646},{0.981826, 0.618572, 0.231287},{0.983041, 0.624131, 0.227937},{0.984199, 0.629718, 0.224595},{0.985301, 0.635330, 0.221265},{0.986345, 0.640969, 0.217948},{0.987332, 0.646633, 0.214648},{0.988260, 0.652325, 0.211364},{0.989128, 0.658043, 0.208100},{0.989935, 0.663787, 0.204859},{0.990681, 0.669558, 0.201642},{0.991365, 0.675355, 0.198453},{0.991985, 0.681179, 0.195295},{0.992541, 0.687030, 0.192170},{0.993032, 0.692907, 0.189084},{0.993456, 0.698810, 0.186041},{0.993814, 0.704741, 0.183043},{0.994103, 0.710698, 0.180097},{0.994324, 0.716681, 0.177208},{0.994474, 0.722691, 0.174381},{0.994553, 0.728728, 0.171622},{0.994561, 0.734791, 0.168938},{0.994495, 0.740880, 0.166335},{0.994355, 0.746995, 0.163821},{0.994141, 0.753137, 0.161404},{0.993851, 0.759304, 0.159092},{0.993482, 0.765499, 0.156891},{0.993033, 0.771720, 0.154808},{0.992505, 0.777967, 0.152855},{0.991897, 0.784239, 0.151042},{0.991209, 0.790537, 0.149377},{0.990439, 0.796859, 0.147870},{0.989587, 0.803205, 0.146529},{0.988648, 0.809579, 0.145357},{0.987621, 0.815978, 0.144363},{0.986509, 0.822401, 0.143557},{0.985314, 0.828846, 0.142945},{0.984031, 0.835315, 0.142528},{0.982653, 0.841812, 0.142303},{0.981190, 0.848329, 0.142279},{0.979644, 0.854866, 0.142453},{0.977995, 0.861432, 0.142808},{0.976265, 0.868016, 0.143351},{0.974443, 0.874622, 0.144061},{0.972530, 0.881250, 0.144923},{0.970533, 0.887896, 0.145919},{0.968443, 0.894564, 0.147014},{0.966271, 0.901249, 0.148180},{0.964021, 0.907950, 0.149370},{0.961681, 0.914672, 0.150520},{0.959276, 0.921407, 0.151566},{0.956808, 0.928152, 0.152409},{0.954287, 0.934908, 0.152921},{0.951726, 0.941671, 0.152925},{0.949151, 0.948435, 0.152178},{0.946602, 0.955190, 0.150328},{0.944152, 0.961916, 0.146861},{0.941896, 0.968590, 0.140956},{0.940015, 0.975158, 0.131326}}}, + {"inferno", {{0.001462, 0.000466, 0.013866},{0.002267, 0.001270, 0.018570},{0.003299, 0.002249, 0.024239},{0.004547, 0.003392, 0.030909},{0.006006, 0.004692, 0.038558},{0.007676, 0.006136, 0.046836},{0.009561, 0.007713, 0.055143},{0.011663, 0.009417, 0.063460},{0.013995, 0.011225, 0.071862},{0.016561, 0.013136, 0.080282},{0.019373, 0.015133, 0.088767},{0.022447, 0.017199, 0.097327},{0.025793, 0.019331, 0.105930},{0.029432, 0.021503, 0.114621},{0.033385, 0.023702, 0.123397},{0.037668, 0.025921, 0.132232},{0.042253, 0.028139, 0.141141},{0.046915, 0.030324, 0.150164},{0.051644, 0.032474, 0.159254},{0.056449, 0.034569, 0.168414},{0.061340, 0.036590, 0.177642},{0.066331, 0.038504, 0.186962},{0.071429, 0.040294, 0.196354},{0.076637, 0.041905, 0.205799},{0.081962, 0.043328, 0.215289},{0.087411, 0.044556, 0.224813},{0.092990, 0.045583, 0.234358},{0.098702, 0.046402, 0.243904},{0.104551, 0.047008, 0.253430},{0.110536, 0.047399, 0.262912},{0.116656, 0.047574, 0.272321},{0.122908, 0.047536, 0.281624},{0.129285, 0.047293, 0.290788},{0.135778, 0.046856, 0.299776},{0.142378, 0.046242, 0.308553},{0.149073, 0.045468, 0.317085},{0.155850, 0.044559, 0.325338},{0.162689, 0.043554, 0.333277},{0.169575, 0.042489, 0.340874},{0.176493, 0.041402, 0.348111},{0.183429, 0.040329, 0.354971},{0.190367, 0.039309, 0.361447},{0.197297, 0.038400, 0.367535},{0.204209, 0.037632, 0.373238},{0.211095, 0.037030, 0.378563},{0.217949, 0.036615, 0.383522},{0.224763, 0.036405, 0.388129},{0.231538, 0.036405, 0.392400},{0.238273, 0.036621, 0.396353},{0.244967, 0.037055, 0.400007},{0.251620, 0.037705, 0.403378},{0.258234, 0.038571, 0.406485},{0.264810, 0.039647, 0.409345},{0.271347, 0.040922, 0.411976},{0.277850, 0.042353, 0.414392},{0.284321, 0.043933, 0.416608},{0.290763, 0.045644, 0.418637},{0.297178, 0.047470, 0.420491},{0.303568, 0.049396, 0.422182},{0.309935, 0.051407, 0.423721},{0.316282, 0.053490, 0.425116},{0.322610, 0.055634, 0.426377},{0.328921, 0.057827, 0.427511},{0.335217, 0.060060, 0.428524},{0.341500, 0.062325, 0.429425},{0.347771, 0.064616, 0.430217},{0.354032, 0.066925, 0.430906},{0.360284, 0.069247, 0.431497},{0.366529, 0.071579, 0.431994},{0.372768, 0.073915, 0.432400},{0.379001, 0.076253, 0.432719},{0.385228, 0.078591, 0.432955},{0.391453, 0.080927, 0.433109},{0.397674, 0.083257, 0.433183},{0.403894, 0.085580, 0.433179},{0.410113, 0.087896, 0.433098},{0.416331, 0.090203, 0.432943},{0.422549, 0.092501, 0.432714},{0.428768, 0.094790, 0.432412},{0.434987, 0.097069, 0.432039},{0.441207, 0.099338, 0.431594},{0.447428, 0.101597, 0.431080},{0.453651, 0.103848, 0.430498},{0.459875, 0.106089, 0.429846},{0.466100, 0.108322, 0.429125},{0.472328, 0.110547, 0.428334},{0.478558, 0.112764, 0.427475},{0.484789, 0.114974, 0.426548},{0.491022, 0.117179, 0.425552},{0.497257, 0.119379, 0.424488},{0.503493, 0.121575, 0.423356},{0.509730, 0.123769, 0.422156},{0.515967, 0.125960, 0.420887},{0.522206, 0.128150, 0.419549},{0.528444, 0.130341, 0.418142},{0.534683, 0.132534, 0.416667},{0.540920, 0.134729, 0.415123},{0.547157, 0.136929, 0.413511},{0.553392, 0.139134, 0.411829},{0.559624, 0.141346, 0.410078},{0.565854, 0.143567, 0.408258},{0.572081, 0.145797, 0.406369},{0.578304, 0.148039, 0.404411},{0.584521, 0.150294, 0.402385},{0.590734, 0.152563, 0.400290},{0.596940, 0.154848, 0.398125},{0.603139, 0.157151, 0.395891},{0.609330, 0.159474, 0.393589},{0.615513, 0.161817, 0.391219},{0.621685, 0.164184, 0.388781},{0.627847, 0.166575, 0.386276},{0.633998, 0.168992, 0.383704},{0.640135, 0.171438, 0.381065},{0.646260, 0.173914, 0.378359},{0.652369, 0.176421, 0.375586},{0.658463, 0.178962, 0.372748},{0.664540, 0.181539, 0.369846},{0.670599, 0.184153, 0.366879},{0.676638, 0.186807, 0.363849},{0.682656, 0.189501, 0.360757},{0.688653, 0.192239, 0.357603},{0.694627, 0.195021, 0.354388},{0.700576, 0.197851, 0.351113},{0.706500, 0.200728, 0.347777},{0.712396, 0.203656, 0.344383},{0.718264, 0.206636, 0.340931},{0.724103, 0.209670, 0.337424},{0.729909, 0.212759, 0.333861},{0.735683, 0.215906, 0.330245},{0.741423, 0.219112, 0.326576},{0.747127, 0.222378, 0.322856},{0.752794, 0.225706, 0.319085},{0.758422, 0.229097, 0.315266},{0.764010, 0.232554, 0.311399},{0.769556, 0.236077, 0.307485},{0.775059, 0.239667, 0.303526},{0.780517, 0.243327, 0.299523},{0.785929, 0.247056, 0.295477},{0.791293, 0.250856, 0.291390},{0.796607, 0.254728, 0.287264},{0.801871, 0.258674, 0.283099},{0.807082, 0.262692, 0.278898},{0.812239, 0.266786, 0.274661},{0.817341, 0.270954, 0.270390},{0.822386, 0.275197, 0.266085},{0.827372, 0.279517, 0.261750},{0.832299, 0.283913, 0.257383},{0.837165, 0.288385, 0.252988},{0.841969, 0.292933, 0.248564},{0.846709, 0.297559, 0.244113},{0.851384, 0.302260, 0.239636},{0.855992, 0.307038, 0.235133},{0.860533, 0.311892, 0.230606},{0.865006, 0.316822, 0.226055},{0.869409, 0.321827, 0.221482},{0.873741, 0.326906, 0.216886},{0.878001, 0.332060, 0.212268},{0.882188, 0.337287, 0.207628},{0.886302, 0.342586, 0.202968},{0.890341, 0.347957, 0.198286},{0.894305, 0.353399, 0.193584},{0.898192, 0.358911, 0.188860},{0.902003, 0.364492, 0.184116},{0.905735, 0.370140, 0.179350},{0.909390, 0.375856, 0.174563},{0.912966, 0.381636, 0.169755},{0.916462, 0.387481, 0.164924},{0.919879, 0.393389, 0.160070},{0.923215, 0.399359, 0.155193},{0.926470, 0.405389, 0.150292},{0.929644, 0.411479, 0.145367},{0.932737, 0.417627, 0.140417},{0.935747, 0.423831, 0.135440},{0.938675, 0.430091, 0.130438},{0.941521, 0.436405, 0.125409},{0.944285, 0.442772, 0.120354},{0.946965, 0.449191, 0.115272},{0.949562, 0.455660, 0.110164},{0.952075, 0.462178, 0.105031},{0.954506, 0.468744, 0.099874},{0.956852, 0.475356, 0.094695},{0.959114, 0.482014, 0.089499},{0.961293, 0.488716, 0.084289},{0.963387, 0.495462, 0.079073},{0.965397, 0.502249, 0.073859},{0.967322, 0.509078, 0.068659},{0.969163, 0.515946, 0.063488},{0.970919, 0.522853, 0.058367},{0.972590, 0.529798, 0.053324},{0.974176, 0.536780, 0.048392},{0.975677, 0.543798, 0.043618},{0.977092, 0.550850, 0.039050},{0.978422, 0.557937, 0.034931},{0.979666, 0.565057, 0.031409},{0.980824, 0.572209, 0.028508},{0.981895, 0.579392, 0.026250},{0.982881, 0.586606, 0.024661},{0.983779, 0.593849, 0.023770},{0.984591, 0.601122, 0.023606},{0.985315, 0.608422, 0.024202},{0.985952, 0.615750, 0.025592},{0.986502, 0.623105, 0.027814},{0.986964, 0.630485, 0.030908},{0.987337, 0.637890, 0.034916},{0.987622, 0.645320, 0.039886},{0.987819, 0.652773, 0.045581},{0.987926, 0.660250, 0.051750},{0.987945, 0.667748, 0.058329},{0.987874, 0.675267, 0.065257},{0.987714, 0.682807, 0.072489},{0.987464, 0.690366, 0.079990},{0.987124, 0.697944, 0.087731},{0.986694, 0.705540, 0.095694},{0.986175, 0.713153, 0.103863},{0.985566, 0.720782, 0.112229},{0.984865, 0.728427, 0.120785},{0.984075, 0.736087, 0.129527},{0.983196, 0.743758, 0.138453},{0.982228, 0.751442, 0.147565},{0.981173, 0.759135, 0.156863},{0.980032, 0.766837, 0.166353},{0.978806, 0.774545, 0.176037},{0.977497, 0.782258, 0.185923},{0.976108, 0.789974, 0.196018},{0.974638, 0.797692, 0.206332},{0.973088, 0.805409, 0.216877},{0.971468, 0.813122, 0.227658},{0.969783, 0.820825, 0.238686},{0.968041, 0.828515, 0.249972},{0.966243, 0.836191, 0.261534},{0.964394, 0.843848, 0.273391},{0.962517, 0.851476, 0.285546},{0.960626, 0.859069, 0.298010},{0.958720, 0.866624, 0.310820},{0.956834, 0.874129, 0.323974},{0.954997, 0.881569, 0.337475},{0.953215, 0.888942, 0.351369},{0.951546, 0.896226, 0.365627},{0.950018, 0.903409, 0.380271},{0.948683, 0.910473, 0.395289},{0.947594, 0.917399, 0.410665},{0.946809, 0.924168, 0.426373},{0.946392, 0.930761, 0.442367},{0.946403, 0.937159, 0.458592},{0.946903, 0.943348, 0.474970},{0.947937, 0.949318, 0.491426},{0.949545, 0.955063, 0.507860},{0.951740, 0.960587, 0.524203},{0.954529, 0.965896, 0.540361},{0.957896, 0.971003, 0.556275},{0.961812, 0.975924, 0.571925},{0.966249, 0.980678, 0.587206},{0.971162, 0.985282, 0.602154},{0.976511, 0.989753, 0.616760},{0.982257, 0.994109, 0.631017},{0.988362, 0.998364, 0.644924}}}, + {"magma", {{0.001462, 0.000466, 0.013866},{0.002258, 0.001295, 0.018331},{0.003279, 0.002305, 0.023708},{0.004512, 0.003490, 0.029965},{0.005950, 0.004843, 0.037130},{0.007588, 0.006356, 0.044973},{0.009426, 0.008022, 0.052844},{0.011465, 0.009828, 0.060750},{0.013708, 0.011771, 0.068667},{0.016156, 0.013840, 0.076603},{0.018815, 0.016026, 0.084584},{0.021692, 0.018320, 0.092610},{0.024792, 0.020715, 0.100676},{0.028123, 0.023201, 0.108787},{0.031696, 0.025765, 0.116965},{0.035520, 0.028397, 0.125209},{0.039608, 0.031090, 0.133515},{0.043830, 0.033830, 0.141886},{0.048062, 0.036607, 0.150327},{0.052320, 0.039407, 0.158841},{0.056615, 0.042160, 0.167446},{0.060949, 0.044794, 0.176129},{0.065330, 0.047318, 0.184892},{0.069764, 0.049726, 0.193735},{0.074257, 0.052017, 0.202660},{0.078815, 0.054184, 0.211667},{0.083446, 0.056225, 0.220755},{0.088155, 0.058133, 0.229922},{0.092949, 0.059904, 0.239164},{0.097833, 0.061531, 0.248477},{0.102815, 0.063010, 0.257854},{0.107899, 0.064335, 0.267289},{0.113094, 0.065492, 0.276784},{0.118405, 0.066479, 0.286321},{0.123833, 0.067295, 0.295879},{0.129380, 0.067935, 0.305443},{0.135053, 0.068391, 0.315000},{0.140858, 0.068654, 0.324538},{0.146785, 0.068738, 0.334011},{0.152839, 0.068637, 0.343404},{0.159018, 0.068354, 0.352688},{0.165308, 0.067911, 0.361816},{0.171713, 0.067305, 0.370771},{0.178212, 0.066576, 0.379497},{0.184801, 0.065732, 0.387973},{0.191460, 0.064818, 0.396152},{0.198177, 0.063862, 0.404009},{0.204935, 0.062907, 0.411514},{0.211718, 0.061992, 0.418647},{0.218512, 0.061158, 0.425392},{0.225302, 0.060445, 0.431742},{0.232077, 0.059889, 0.437695},{0.238826, 0.059517, 0.443256},{0.245543, 0.059352, 0.448436},{0.252220, 0.059415, 0.453248},{0.258857, 0.059706, 0.457710},{0.265447, 0.060237, 0.461840},{0.271994, 0.060994, 0.465660},{0.278493, 0.061978, 0.469190},{0.284951, 0.063168, 0.472451},{0.291366, 0.064553, 0.475462},{0.297740, 0.066117, 0.478243},{0.304081, 0.067835, 0.480812},{0.310382, 0.069702, 0.483186},{0.316654, 0.071690, 0.485380},{0.322899, 0.073782, 0.487408},{0.329114, 0.075972, 0.489287},{0.335308, 0.078236, 0.491024},{0.341482, 0.080564, 0.492631},{0.347636, 0.082946, 0.494121},{0.353773, 0.085373, 0.495501},{0.359898, 0.087831, 0.496778},{0.366012, 0.090314, 0.497960},{0.372116, 0.092816, 0.499053},{0.378211, 0.095332, 0.500067},{0.384299, 0.097855, 0.501002},{0.390384, 0.100379, 0.501864},{0.396467, 0.102902, 0.502658},{0.402548, 0.105420, 0.503386},{0.408629, 0.107930, 0.504052},{0.414709, 0.110431, 0.504662},{0.420791, 0.112920, 0.505215},{0.426877, 0.115395, 0.505714},{0.432967, 0.117855, 0.506160},{0.439062, 0.120298, 0.506555},{0.445163, 0.122724, 0.506901},{0.451271, 0.125132, 0.507198},{0.457386, 0.127522, 0.507448},{0.463508, 0.129893, 0.507652},{0.469640, 0.132245, 0.507809},{0.475780, 0.134577, 0.507921},{0.481929, 0.136891, 0.507989},{0.488088, 0.139186, 0.508011},{0.494258, 0.141462, 0.507988},{0.500438, 0.143719, 0.507920},{0.506629, 0.145958, 0.507806},{0.512831, 0.148179, 0.507648},{0.519045, 0.150383, 0.507443},{0.525270, 0.152569, 0.507192},{0.531507, 0.154739, 0.506895},{0.537755, 0.156894, 0.506551},{0.544015, 0.159033, 0.506159},{0.550287, 0.161158, 0.505719},{0.556571, 0.163269, 0.505230},{0.562866, 0.165368, 0.504692},{0.569172, 0.167454, 0.504105},{0.575490, 0.169530, 0.503466},{0.581819, 0.171596, 0.502777},{0.588158, 0.173652, 0.502035},{0.594508, 0.175701, 0.501241},{0.600868, 0.177743, 0.500394},{0.607238, 0.179779, 0.499492},{0.613617, 0.181811, 0.498536},{0.620005, 0.183840, 0.497524},{0.626401, 0.185867, 0.496456},{0.632805, 0.187893, 0.495332},{0.639216, 0.189921, 0.494150},{0.645633, 0.191952, 0.492910},{0.652056, 0.193986, 0.491611},{0.658483, 0.196027, 0.490253},{0.664915, 0.198075, 0.488836},{0.671349, 0.200133, 0.487358},{0.677786, 0.202203, 0.485819},{0.684224, 0.204286, 0.484219},{0.690661, 0.206384, 0.482558},{0.697098, 0.208501, 0.480835},{0.703532, 0.210638, 0.479049},{0.709962, 0.212797, 0.477201},{0.716387, 0.214982, 0.475290},{0.722805, 0.217194, 0.473316},{0.729216, 0.219437, 0.471279},{0.735616, 0.221713, 0.469180},{0.742004, 0.224025, 0.467018},{0.748378, 0.226377, 0.464794},{0.754737, 0.228772, 0.462509},{0.761077, 0.231214, 0.460162},{0.767398, 0.233705, 0.457755},{0.773695, 0.236249, 0.455289},{0.779968, 0.238851, 0.452765},{0.786212, 0.241514, 0.450184},{0.792427, 0.244242, 0.447543},{0.798608, 0.247040, 0.444848},{0.804752, 0.249911, 0.442102},{0.810855, 0.252861, 0.439305},{0.816914, 0.255895, 0.436461},{0.822926, 0.259016, 0.433573},{0.828886, 0.262229, 0.430644},{0.834791, 0.265540, 0.427671},{0.840636, 0.268953, 0.424666},{0.846416, 0.272473, 0.421631},{0.852126, 0.276106, 0.418573},{0.857763, 0.279857, 0.415496},{0.863320, 0.283729, 0.412403},{0.868793, 0.287728, 0.409303},{0.874176, 0.291859, 0.406205},{0.879464, 0.296125, 0.403118},{0.884651, 0.300530, 0.400047},{0.889731, 0.305079, 0.397002},{0.894700, 0.309773, 0.393995},{0.899552, 0.314616, 0.391037},{0.904281, 0.319610, 0.388137},{0.908884, 0.324755, 0.385308},{0.913354, 0.330052, 0.382563},{0.917689, 0.335500, 0.379915},{0.921884, 0.341098, 0.377376},{0.925937, 0.346844, 0.374959},{0.929845, 0.352734, 0.372677},{0.933606, 0.358764, 0.370541},{0.937221, 0.364929, 0.368567},{0.940687, 0.371224, 0.366762},{0.944006, 0.377643, 0.365136},{0.947180, 0.384178, 0.363701},{0.950210, 0.390820, 0.362468},{0.953099, 0.397563, 0.361438},{0.955849, 0.404400, 0.360619},{0.958464, 0.411324, 0.360014},{0.960949, 0.418323, 0.359630},{0.963310, 0.425390, 0.359469},{0.965549, 0.432519, 0.359529},{0.967671, 0.439703, 0.359810},{0.969680, 0.446936, 0.360311},{0.971582, 0.454210, 0.361030},{0.973381, 0.461520, 0.361965},{0.975082, 0.468861, 0.363111},{0.976690, 0.476226, 0.364466},{0.978210, 0.483612, 0.366025},{0.979645, 0.491014, 0.367783},{0.981000, 0.498428, 0.369734},{0.982279, 0.505851, 0.371874},{0.983485, 0.513280, 0.374198},{0.984622, 0.520713, 0.376698},{0.985693, 0.528148, 0.379371},{0.986700, 0.535582, 0.382210},{0.987646, 0.543015, 0.385210},{0.988533, 0.550446, 0.388365},{0.989363, 0.557873, 0.391671},{0.990138, 0.565296, 0.395122},{0.990871, 0.572706, 0.398714},{0.991558, 0.580107, 0.402441},{0.992196, 0.587502, 0.406299},{0.992785, 0.594891, 0.410283},{0.993326, 0.602275, 0.414390},{0.993834, 0.609644, 0.418613},{0.994309, 0.616999, 0.422950},{0.994738, 0.624350, 0.427397},{0.995122, 0.631696, 0.431951},{0.995480, 0.639027, 0.436607},{0.995810, 0.646344, 0.441361},{0.996096, 0.653659, 0.446213},{0.996341, 0.660969, 0.451160},{0.996580, 0.668256, 0.456192},{0.996775, 0.675541, 0.461314},{0.996925, 0.682828, 0.466526},{0.997077, 0.690088, 0.471811},{0.997186, 0.697349, 0.477182},{0.997254, 0.704611, 0.482635},{0.997325, 0.711848, 0.488154},{0.997351, 0.719089, 0.493755},{0.997351, 0.726324, 0.499428},{0.997341, 0.733545, 0.505167},{0.997285, 0.740772, 0.510983},{0.997228, 0.747981, 0.516859},{0.997138, 0.755190, 0.522806},{0.997019, 0.762398, 0.528821},{0.996898, 0.769591, 0.534892},{0.996727, 0.776795, 0.541039},{0.996571, 0.783977, 0.547233},{0.996369, 0.791167, 0.553499},{0.996162, 0.798348, 0.559820},{0.995932, 0.805527, 0.566202},{0.995680, 0.812706, 0.572645},{0.995424, 0.819875, 0.579140},{0.995131, 0.827052, 0.585701},{0.994851, 0.834213, 0.592307},{0.994524, 0.841387, 0.598983},{0.994222, 0.848540, 0.605696},{0.993866, 0.855711, 0.612482},{0.993545, 0.862859, 0.619299},{0.993170, 0.870024, 0.626189},{0.992831, 0.877168, 0.633109},{0.992440, 0.884330, 0.640099},{0.992089, 0.891470, 0.647116},{0.991688, 0.898627, 0.654202},{0.991332, 0.905763, 0.661309},{0.990930, 0.912915, 0.668481},{0.990570, 0.920049, 0.675675},{0.990175, 0.927196, 0.682926},{0.989815, 0.934329, 0.690198},{0.989434, 0.941470, 0.697519},{0.989077, 0.948604, 0.704863},{0.988717, 0.955742, 0.712242},{0.988367, 0.962878, 0.719649},{0.988033, 0.970012, 0.727077},{0.987691, 0.977154, 0.734536},{0.987387, 0.984288, 0.742002},{0.987053, 0.991438, 0.749504}}}, + {"cividis", {{0.000000, 0.135112, 0.304751},{0.000000, 0.138068, 0.311105},{0.000000, 0.141013, 0.317579},{0.000000, 0.143951, 0.323982},{0.000000, 0.146877, 0.330479},{0.000000, 0.149791, 0.337065},{0.000000, 0.152673, 0.343704},{0.000000, 0.155377, 0.350500},{0.000000, 0.157932, 0.357521},{0.000000, 0.160495, 0.364534},{0.000000, 0.163058, 0.371608},{0.000000, 0.165621, 0.378769},{0.000000, 0.168204, 0.385902},{0.000000, 0.170800, 0.393100},{0.000000, 0.173420, 0.400353},{0.000000, 0.176082, 0.407577},{0.000000, 0.178802, 0.414764},{0.000000, 0.181610, 0.421859},{0.000000, 0.184550, 0.428802},{0.000000, 0.186915, 0.435532},{0.000000, 0.188769, 0.439563},{0.000000, 0.190950, 0.441085},{0.000000, 0.193366, 0.441561},{0.003602, 0.195911, 0.441564},{0.017852, 0.198528, 0.441248},{0.032110, 0.201199, 0.440785},{0.046205, 0.203903, 0.440196},{0.058378, 0.206629, 0.439531},{0.068968, 0.209372, 0.438863},{0.078624, 0.212122, 0.438105},{0.087465, 0.214879, 0.437342},{0.095645, 0.217643, 0.436593},{0.103401, 0.220406, 0.435790},{0.110658, 0.223170, 0.435067},{0.117612, 0.225935, 0.434308},{0.124291, 0.228697, 0.433547},{0.130669, 0.231458, 0.432840},{0.136830, 0.234216, 0.432148},{0.142852, 0.236972, 0.431404},{0.148638, 0.239724, 0.430752},{0.154261, 0.242475, 0.430120},{0.159733, 0.245221, 0.429528},{0.165113, 0.247965, 0.428908},{0.170362, 0.250707, 0.428325},{0.175490, 0.253444, 0.427790},{0.180503, 0.256180, 0.427299},{0.185453, 0.258914, 0.426788},{0.190303, 0.261644, 0.426329},{0.195057, 0.264372, 0.425924},{0.199764, 0.267099, 0.425497},{0.204385, 0.269823, 0.425126},{0.208926, 0.272546, 0.424809},{0.213431, 0.275266, 0.424480},{0.217863, 0.277985, 0.424206},{0.222264, 0.280702, 0.423914},{0.226598, 0.283419, 0.423678},{0.230871, 0.286134, 0.423498},{0.235120, 0.288848, 0.423304},{0.239312, 0.291562, 0.423167},{0.243485, 0.294274, 0.423014},{0.247605, 0.296986, 0.422917},{0.251675, 0.299698, 0.422873},{0.255731, 0.302409, 0.422814},{0.259740, 0.305120, 0.422810},{0.263738, 0.307831, 0.422789},{0.267693, 0.310542, 0.422821},{0.271639, 0.313253, 0.422837},{0.275513, 0.315965, 0.422979},{0.279411, 0.318677, 0.423031},{0.283240, 0.321390, 0.423211},{0.287065, 0.324103, 0.423373},{0.290884, 0.326816, 0.423517},{0.294669, 0.329531, 0.423716},{0.298421, 0.332247, 0.423973},{0.302169, 0.334963, 0.424213},{0.305886, 0.337681, 0.424512},{0.309601, 0.340399, 0.424790},{0.313287, 0.343120, 0.425120},{0.316941, 0.345842, 0.425512},{0.320595, 0.348565, 0.425889},{0.324250, 0.351289, 0.426250},{0.327875, 0.354016, 0.426670},{0.331474, 0.356744, 0.427144},{0.335073, 0.359474, 0.427605},{0.338673, 0.362206, 0.428053},{0.342246, 0.364939, 0.428559},{0.345793, 0.367676, 0.429127},{0.349341, 0.370414, 0.429685},{0.352892, 0.373153, 0.430226},{0.356418, 0.375896, 0.430823},{0.359916, 0.378641, 0.431501},{0.363446, 0.381388, 0.432075},{0.366923, 0.384139, 0.432796},{0.370430, 0.386890, 0.433428},{0.373884, 0.389646, 0.434209},{0.377371, 0.392404, 0.434890},{0.380830, 0.395164, 0.435653},{0.384268, 0.397928, 0.436475},{0.387705, 0.400694, 0.437305},{0.391151, 0.403464, 0.438096},{0.394568, 0.406236, 0.438986},{0.397991, 0.409011, 0.439848},{0.401418, 0.411790, 0.440708},{0.404820, 0.414572, 0.441642},{0.408226, 0.417357, 0.442570},{0.411607, 0.420145, 0.443577},{0.414992, 0.422937, 0.444578},{0.418383, 0.425733, 0.445560},{0.421748, 0.428531, 0.446640},{0.425120, 0.431334, 0.447692},{0.428462, 0.434140, 0.448864},{0.431817, 0.436950, 0.449982},{0.435168, 0.439763, 0.451134},{0.438504, 0.442580, 0.452341},{0.441810, 0.445402, 0.453659},{0.445148, 0.448226, 0.454885},{0.448447, 0.451053, 0.456264},{0.451759, 0.453887, 0.457582},{0.455072, 0.456718, 0.458976},{0.458366, 0.459552, 0.460457},{0.461616, 0.462405, 0.461969},{0.464947, 0.465241, 0.463395},{0.468254, 0.468083, 0.464908},{0.471501, 0.470960, 0.466357},{0.474812, 0.473832, 0.467681},{0.478186, 0.476699, 0.468845},{0.481622, 0.479573, 0.469767},{0.485141, 0.482451, 0.470384},{0.488697, 0.485318, 0.471008},{0.492278, 0.488198, 0.471453},{0.495913, 0.491076, 0.471751},{0.499552, 0.493960, 0.472032},{0.503185, 0.496851, 0.472305},{0.506866, 0.499743, 0.472432},{0.510540, 0.502643, 0.472550},{0.514226, 0.505546, 0.472640},{0.517920, 0.508454, 0.472707},{0.521643, 0.511367, 0.472639},{0.525348, 0.514285, 0.472660},{0.529086, 0.517207, 0.472543},{0.532829, 0.520135, 0.472401},{0.536553, 0.523067, 0.472352},{0.540307, 0.526005, 0.472163},{0.544069, 0.528948, 0.471947},{0.547840, 0.531895, 0.471704},{0.551612, 0.534849, 0.471439},{0.555393, 0.537807, 0.471147},{0.559181, 0.540771, 0.470829},{0.562972, 0.543741, 0.470488},{0.566802, 0.546715, 0.469988},{0.570607, 0.549695, 0.469593},{0.574417, 0.552682, 0.469172},{0.578236, 0.555673, 0.468724},{0.582087, 0.558670, 0.468118},{0.585916, 0.561674, 0.467618},{0.589753, 0.564682, 0.467090},{0.593622, 0.567697, 0.466401},{0.597469, 0.570718, 0.465821},{0.601354, 0.573743, 0.465074},{0.605211, 0.576777, 0.464441},{0.609105, 0.579816, 0.463638},{0.612977, 0.582861, 0.462950},{0.616852, 0.585913, 0.462237},{0.620765, 0.588970, 0.461351},{0.624654, 0.592034, 0.460583},{0.628576, 0.595104, 0.459641},{0.632506, 0.598180, 0.458668},{0.636412, 0.601264, 0.457818},{0.640352, 0.604354, 0.456791},{0.644270, 0.607450, 0.455886},{0.648222, 0.610553, 0.454801},{0.652178, 0.613664, 0.453689},{0.656114, 0.616780, 0.452702},{0.660082, 0.619904, 0.451534},{0.664055, 0.623034, 0.450338},{0.668008, 0.626171, 0.449270},{0.671991, 0.629316, 0.448018},{0.675981, 0.632468, 0.446736},{0.679979, 0.635626, 0.445424},{0.683950, 0.638793, 0.444251},{0.687957, 0.641966, 0.442886},{0.691971, 0.645145, 0.441491},{0.695985, 0.648334, 0.440072},{0.700008, 0.651529, 0.438624},{0.704037, 0.654731, 0.437147},{0.708067, 0.657942, 0.435647},{0.712105, 0.661160, 0.434117},{0.716177, 0.664384, 0.432386},{0.720222, 0.667618, 0.430805},{0.724274, 0.670859, 0.429194},{0.728334, 0.674107, 0.427554},{0.732422, 0.677364, 0.425717},{0.736488, 0.680629, 0.424028},{0.740589, 0.683900, 0.422131},{0.744664, 0.687181, 0.420393},{0.748772, 0.690470, 0.418448},{0.752886, 0.693766, 0.416472},{0.756975, 0.697071, 0.414659},{0.761096, 0.700384, 0.412638},{0.765223, 0.703705, 0.410587},{0.769353, 0.707035, 0.408516},{0.773486, 0.710373, 0.406422},{0.777651, 0.713719, 0.404112},{0.781795, 0.717074, 0.401966},{0.785965, 0.720438, 0.399613},{0.790116, 0.723810, 0.397423},{0.794298, 0.727190, 0.395016},{0.798480, 0.730580, 0.392597},{0.802667, 0.733978, 0.390153},{0.806859, 0.737385, 0.387684},{0.811054, 0.740801, 0.385198},{0.815274, 0.744226, 0.382504},{0.819499, 0.747659, 0.379785},{0.823729, 0.751101, 0.377043},{0.827959, 0.754553, 0.374292},{0.832192, 0.758014, 0.371529},{0.836429, 0.761483, 0.368747},{0.840693, 0.764962, 0.365746},{0.844957, 0.768450, 0.362741},{0.849223, 0.771947, 0.359729},{0.853515, 0.775454, 0.356500},{0.857809, 0.778969, 0.353259},{0.862105, 0.782494, 0.350011},{0.866421, 0.786028, 0.346571},{0.870717, 0.789572, 0.343333},{0.875057, 0.793125, 0.339685},{0.879378, 0.796687, 0.336241},{0.883720, 0.800258, 0.332599},{0.888081, 0.803839, 0.328770},{0.892440, 0.807430, 0.324968},{0.896818, 0.811030, 0.320982},{0.901195, 0.814639, 0.317021},{0.905589, 0.818257, 0.312889},{0.910000, 0.821885, 0.308594},{0.914407, 0.825522, 0.304348},{0.918828, 0.829168, 0.299960},{0.923279, 0.832822, 0.295244},{0.927724, 0.836486, 0.290611},{0.932180, 0.840159, 0.285880},{0.936660, 0.843841, 0.280876},{0.941147, 0.847530, 0.275815},{0.945654, 0.851228, 0.270532},{0.950178, 0.854933, 0.265085},{0.954725, 0.858646, 0.259365},{0.959284, 0.862365, 0.253563},{0.963872, 0.866089, 0.247445},{0.968469, 0.869819, 0.241310},{0.973114, 0.873550, 0.234677},{0.977780, 0.877281, 0.227954},{0.982497, 0.881008, 0.220878},{0.987293, 0.884718, 0.213336},{0.992218, 0.888385, 0.205468},{0.994847, 0.892954, 0.203445},{0.995249, 0.898384, 0.207561},{0.995503, 0.903866, 0.212370},{0.995737, 0.909344, 0.217772}}}, + {"gnuplot", {{0.000000, 0.000000, 0.000000},{0.062622, 0.000000, 0.024637},{0.088561, 0.000000, 0.049260},{0.108465, 0.000002, 0.073853},{0.125245, 0.000004, 0.098400},{0.140028, 0.000008, 0.122888},{0.153393, 0.000013, 0.147302},{0.165683, 0.000021, 0.171626},{0.177123, 0.000031, 0.195845},{0.187867, 0.000044, 0.219946},{0.198030, 0.000060, 0.243914},{0.207695, 0.000080, 0.267733},{0.216930, 0.000104, 0.291390},{0.225788, 0.000132, 0.314870},{0.234312, 0.000165, 0.338158},{0.242536, 0.000204, 0.361242},{0.250490, 0.000247, 0.384106},{0.258199, 0.000296, 0.406737},{0.265684, 0.000352, 0.429121},{0.272965, 0.000414, 0.451244},{0.280056, 0.000482, 0.473094},{0.286972, 0.000559, 0.494656},{0.293725, 0.000642, 0.515918},{0.300327, 0.000734, 0.536867},{0.306786, 0.000834, 0.557489},{0.313112, 0.000942, 0.577774},{0.319313, 0.001060, 0.597707},{0.325396, 0.001187, 0.617278},{0.331367, 0.001324, 0.636474},{0.337232, 0.001471, 0.655284},{0.342997, 0.001628, 0.673696},{0.348667, 0.001797, 0.691698},{0.354246, 0.001976, 0.709281},{0.359738, 0.002167, 0.726434},{0.365148, 0.002370, 0.743145},{0.370479, 0.002586, 0.759405},{0.375735, 0.002814, 0.775204},{0.380917, 0.003055, 0.790532},{0.386031, 0.003309, 0.805381},{0.391077, 0.003577, 0.819740},{0.396059, 0.003860, 0.833602},{0.400979, 0.004157, 0.846958},{0.405840, 0.004468, 0.859800},{0.410643, 0.004795, 0.872120},{0.415390, 0.005137, 0.883910},{0.420084, 0.005496, 0.895163},{0.424726, 0.005870, 0.905873},{0.429318, 0.006261, 0.916034},{0.433861, 0.006670, 0.925638},{0.438357, 0.007095, 0.934680},{0.442807, 0.007539, 0.943154},{0.447214, 0.008000, 0.951057},{0.451577, 0.008480, 0.958381},{0.455898, 0.008979, 0.965124},{0.460179, 0.009496, 0.971281},{0.464420, 0.010034, 0.976848},{0.468623, 0.010591, 0.981823},{0.472789, 0.011169, 0.986201},{0.476918, 0.011767, 0.989980},{0.481012, 0.012386, 0.993159},{0.485071, 0.013027, 0.995734},{0.489097, 0.013689, 0.997705},{0.493089, 0.014373, 0.999070},{0.497050, 0.015080, 0.999829},{0.500979, 0.015810, 0.999981},{0.504878, 0.016562, 0.999526},{0.508747, 0.017338, 0.998464},{0.512587, 0.018139, 0.996795},{0.516398, 0.018963, 0.994522},{0.520181, 0.019812, 0.991645},{0.523937, 0.020686, 0.988165},{0.527666, 0.021585, 0.984086},{0.531369, 0.022510, 0.979410},{0.535046, 0.023461, 0.974139},{0.538699, 0.024439, 0.968276},{0.542326, 0.025443, 0.961826},{0.545930, 0.026474, 0.954791},{0.549510, 0.027533, 0.947177},{0.553066, 0.028620, 0.938988},{0.556600, 0.029735, 0.930229},{0.560112, 0.030878, 0.920906},{0.563602, 0.032050, 0.911023},{0.567070, 0.033252, 0.900587},{0.570517, 0.034484, 0.889604},{0.573944, 0.035745, 0.878081},{0.577350, 0.037037, 0.866025},{0.580737, 0.038360, 0.853444},{0.584103, 0.039713, 0.840344},{0.587450, 0.041099, 0.826734},{0.590779, 0.042516, 0.812622},{0.594089, 0.043965, 0.798017},{0.597380, 0.045447, 0.782928},{0.600653, 0.046962, 0.767363},{0.603909, 0.048510, 0.751332},{0.607147, 0.050091, 0.734845},{0.610368, 0.051707, 0.717912},{0.613572, 0.053357, 0.700543},{0.616759, 0.055042, 0.682749},{0.619930, 0.056762, 0.664540},{0.623085, 0.058517, 0.645928},{0.626224, 0.060309, 0.626924},{0.629348, 0.062136, 0.607539},{0.632456, 0.064000, 0.587785},{0.635548, 0.065901, 0.567675},{0.638626, 0.067839, 0.547220},{0.641689, 0.069815, 0.526432},{0.644737, 0.071829, 0.505325},{0.647771, 0.073881, 0.483911},{0.650791, 0.075972, 0.462204},{0.653797, 0.078101, 0.440216},{0.656790, 0.080271, 0.417960},{0.659768, 0.082480, 0.395451},{0.662733, 0.084729, 0.372702},{0.665686, 0.087019, 0.349727},{0.668625, 0.089350, 0.326539},{0.671551, 0.091722, 0.303153},{0.674464, 0.094135, 0.279583},{0.677365, 0.096591, 0.255843},{0.680254, 0.099089, 0.231948},{0.683130, 0.101630, 0.207912},{0.685994, 0.104213, 0.183750},{0.688847, 0.106840, 0.159476},{0.691687, 0.109511, 0.135105},{0.694516, 0.112226, 0.110653},{0.697334, 0.114986, 0.086133},{0.700140, 0.117790, 0.061561},{0.702935, 0.120640, 0.036951},{0.705719, 0.123535, 0.012320},{0.708492, 0.126476, 0.000000},{0.711254, 0.129464, 0.000000},{0.714006, 0.132498, 0.000000},{0.716746, 0.135579, 0.000000},{0.719477, 0.138708, 0.000000},{0.722197, 0.141884, 0.000000},{0.724907, 0.145109, 0.000000},{0.727607, 0.148382, 0.000000},{0.730297, 0.151704, 0.000000},{0.732977, 0.155075, 0.000000},{0.735647, 0.158495, 0.000000},{0.738308, 0.161966, 0.000000},{0.740959, 0.165487, 0.000000},{0.743600, 0.169058, 0.000000},{0.746232, 0.172681, 0.000000},{0.748855, 0.176355, 0.000000},{0.751469, 0.180081, 0.000000},{0.754074, 0.183858, 0.000000},{0.756670, 0.187689, 0.000000},{0.759257, 0.191572, 0.000000},{0.761835, 0.195508, 0.000000},{0.764404, 0.199498, 0.000000},{0.766965, 0.203542, 0.000000},{0.769517, 0.207640, 0.000000},{0.772061, 0.211792, 0.000000},{0.774597, 0.216000, 0.000000},{0.777124, 0.220263, 0.000000},{0.779643, 0.224582, 0.000000},{0.782154, 0.228957, 0.000000},{0.784657, 0.233388, 0.000000},{0.787152, 0.237876, 0.000000},{0.789639, 0.242421, 0.000000},{0.792118, 0.247024, 0.000000},{0.794590, 0.251685, 0.000000},{0.797053, 0.256404, 0.000000},{0.799510, 0.261181, 0.000000},{0.801958, 0.266018, 0.000000},{0.804400, 0.270914, 0.000000},{0.806834, 0.275870, 0.000000},{0.809260, 0.280885, 0.000000},{0.811679, 0.285961, 0.000000},{0.814092, 0.291098, 0.000000},{0.816497, 0.296296, 0.000000},{0.818895, 0.301556, 0.000000},{0.821285, 0.306877, 0.000000},{0.823669, 0.312261, 0.000000},{0.826047, 0.317707, 0.000000},{0.828417, 0.323217, 0.000000},{0.830780, 0.328789, 0.000000},{0.833137, 0.334425, 0.000000},{0.835487, 0.340126, 0.000000},{0.837831, 0.345890, 0.000000},{0.840168, 0.351720, 0.000000},{0.842499, 0.357615, 0.000000},{0.844823, 0.363575, 0.000000},{0.847141, 0.369601, 0.000000},{0.849452, 0.375693, 0.000000},{0.851757, 0.381852, 0.000000},{0.854056, 0.388077, 0.000000},{0.856349, 0.394370, 0.000000},{0.858635, 0.400731, 0.000000},{0.860916, 0.407160, 0.000000},{0.863191, 0.413657, 0.000000},{0.865459, 0.420223, 0.000000},{0.867722, 0.426858, 0.000000},{0.869979, 0.433562, 0.000000},{0.872230, 0.440336, 0.000000},{0.874475, 0.447181, 0.000000},{0.876714, 0.454096, 0.000000},{0.878948, 0.461082, 0.000000},{0.881176, 0.468139, 0.000000},{0.883398, 0.475268, 0.000000},{0.885615, 0.482469, 0.000000},{0.887826, 0.489742, 0.000000},{0.890032, 0.497088, 0.000000},{0.892232, 0.504507, 0.000000},{0.894427, 0.512000, 0.000000},{0.896617, 0.519566, 0.000000},{0.898801, 0.527207, 0.000000},{0.900980, 0.534922, 0.000000},{0.903154, 0.542712, 0.000000},{0.905322, 0.550577, 0.000000},{0.907485, 0.558518, 0.000000},{0.909643, 0.566535, 0.000000},{0.911796, 0.574628, 0.000000},{0.913944, 0.582798, 0.000000},{0.916087, 0.591045, 0.000000},{0.918225, 0.599370, 0.000000},{0.920358, 0.607772, 0.000000},{0.922486, 0.616252, 0.000000},{0.924609, 0.624811, 0.000000},{0.926727, 0.633449, 0.000000},{0.928841, 0.642166, 0.000000},{0.930949, 0.650963, 0.000000},{0.933053, 0.659840, 0.000000},{0.935152, 0.668797, 0.000000},{0.937247, 0.677834, 0.000000},{0.939336, 0.686953, 0.000000},{0.941422, 0.696153, 0.000000},{0.943502, 0.705435, 0.000000},{0.945578, 0.714799, 0.000000},{0.947649, 0.724246, 0.000000},{0.949716, 0.733775, 0.000000},{0.951779, 0.743388, 0.000000},{0.953836, 0.753084, 0.000000},{0.955890, 0.762864, 0.000000},{0.957939, 0.772729, 0.000000},{0.959984, 0.782678, 0.000000},{0.962024, 0.792712, 0.000000},{0.964060, 0.802832, 0.000000},{0.966092, 0.813037, 0.000000},{0.968119, 0.823329, 0.000000},{0.970143, 0.833706, 0.000000},{0.972162, 0.844171, 0.000000},{0.974176, 0.854723, 0.000000},{0.976187, 0.865363, 0.000000},{0.978194, 0.876090, 0.000000},{0.980196, 0.886906, 0.000000},{0.982194, 0.897811, 0.000000},{0.984189, 0.908804, 0.000000},{0.986179, 0.919887, 0.000000},{0.988165, 0.931060, 0.000000},{0.990148, 0.942322, 0.000000},{0.992126, 0.953675, 0.000000},{0.994100, 0.965119, 0.000000},{0.996071, 0.976655, 0.000000},{0.998037, 0.988281, 0.000000},{1.000000, 1.000000, 0.000000}}}, + {"gnuplot2", {{0.000000, 0.000000, 0.000000},{0.000000, 0.000000, 0.015686},{0.000000, 0.000000, 0.031373},{0.000000, 0.000000, 0.047059},{0.000000, 0.000000, 0.062745},{0.000000, 0.000000, 0.078431},{0.000000, 0.000000, 0.094118},{0.000000, 0.000000, 0.109804},{0.000000, 0.000000, 0.125490},{0.000000, 0.000000, 0.141176},{0.000000, 0.000000, 0.156863},{0.000000, 0.000000, 0.172549},{0.000000, 0.000000, 0.188235},{0.000000, 0.000000, 0.203922},{0.000000, 0.000000, 0.219608},{0.000000, 0.000000, 0.235294},{0.000000, 0.000000, 0.250980},{0.000000, 0.000000, 0.266667},{0.000000, 0.000000, 0.282353},{0.000000, 0.000000, 0.298039},{0.000000, 0.000000, 0.313725},{0.000000, 0.000000, 0.329412},{0.000000, 0.000000, 0.345098},{0.000000, 0.000000, 0.360784},{0.000000, 0.000000, 0.376471},{0.000000, 0.000000, 0.392157},{0.000000, 0.000000, 0.407843},{0.000000, 0.000000, 0.423529},{0.000000, 0.000000, 0.439216},{0.000000, 0.000000, 0.454902},{0.000000, 0.000000, 0.470588},{0.000000, 0.000000, 0.486275},{0.000000, 0.000000, 0.501961},{0.000000, 0.000000, 0.517647},{0.000000, 0.000000, 0.533333},{0.000000, 0.000000, 0.549020},{0.000000, 0.000000, 0.564706},{0.000000, 0.000000, 0.580392},{0.000000, 0.000000, 0.596078},{0.000000, 0.000000, 0.611765},{0.000000, 0.000000, 0.627451},{0.000000, 0.000000, 0.643137},{0.000000, 0.000000, 0.658824},{0.000000, 0.000000, 0.674510},{0.000000, 0.000000, 0.690196},{0.000000, 0.000000, 0.705882},{0.000000, 0.000000, 0.721569},{0.000000, 0.000000, 0.737255},{0.000000, 0.000000, 0.752941},{0.000000, 0.000000, 0.768627},{0.000000, 0.000000, 0.784314},{0.000000, 0.000000, 0.800000},{0.000000, 0.000000, 0.815686},{0.000000, 0.000000, 0.831373},{0.000000, 0.000000, 0.847059},{0.000000, 0.000000, 0.862745},{0.000000, 0.000000, 0.878431},{0.000000, 0.000000, 0.894118},{0.000000, 0.000000, 0.909804},{0.000000, 0.000000, 0.925490},{0.000000, 0.000000, 0.941176},{0.000000, 0.000000, 0.956863},{0.000000, 0.000000, 0.972549},{0.000000, 0.000000, 0.988235},{0.003064, 0.000000, 1.000000},{0.015319, 0.000000, 1.000000},{0.027574, 0.000000, 1.000000},{0.039828, 0.000000, 1.000000},{0.052083, 0.000000, 1.000000},{0.064338, 0.000000, 1.000000},{0.076593, 0.000000, 1.000000},{0.088848, 0.000000, 1.000000},{0.101103, 0.000000, 1.000000},{0.113358, 0.000000, 1.000000},{0.125613, 0.000000, 1.000000},{0.137868, 0.000000, 1.000000},{0.150123, 0.000000, 1.000000},{0.162377, 0.000000, 1.000000},{0.174632, 0.000000, 1.000000},{0.186887, 0.000000, 1.000000},{0.199142, 0.000000, 1.000000},{0.211397, 0.000000, 1.000000},{0.223652, 0.000000, 1.000000},{0.235907, 0.000000, 1.000000},{0.248162, 0.000000, 1.000000},{0.260417, 0.000000, 1.000000},{0.272672, 0.000000, 1.000000},{0.284926, 0.000000, 1.000000},{0.297181, 0.000000, 1.000000},{0.309436, 0.000000, 1.000000},{0.321691, 0.000000, 1.000000},{0.333946, 0.000000, 1.000000},{0.346201, 0.000000, 1.000000},{0.358456, 0.000000, 1.000000},{0.370711, 0.000000, 1.000000},{0.382966, 0.000000, 1.000000},{0.395221, 0.000000, 1.000000},{0.407475, 0.000000, 1.000000},{0.419730, 0.000000, 1.000000},{0.431985, 0.000000, 1.000000},{0.444240, 0.000000, 1.000000},{0.456495, 0.000000, 1.000000},{0.468750, 0.000000, 1.000000},{0.481005, 0.000000, 1.000000},{0.493260, 0.000000, 1.000000},{0.505515, 0.000000, 1.000000},{0.517770, 0.000000, 1.000000},{0.530025, 0.000000, 1.000000},{0.542279, 0.007059, 0.992941},{0.554534, 0.014902, 0.985098},{0.566789, 0.022745, 0.977255},{0.579044, 0.030588, 0.969412},{0.591299, 0.038431, 0.961569},{0.603554, 0.046275, 0.953725},{0.615809, 0.054118, 0.945882},{0.628064, 0.061961, 0.938039},{0.640319, 0.069804, 0.930196},{0.652574, 0.077647, 0.922353},{0.664828, 0.085490, 0.914510},{0.677083, 0.093333, 0.906667},{0.689338, 0.101176, 0.898824},{0.701593, 0.109020, 0.890980},{0.713848, 0.116863, 0.883137},{0.726103, 0.124706, 0.875294},{0.738358, 0.132549, 0.867451},{0.750613, 0.140392, 0.859608},{0.762868, 0.148235, 0.851765},{0.775123, 0.156078, 0.843922},{0.787377, 0.163922, 0.836078},{0.799632, 0.171765, 0.828235},{0.811887, 0.179608, 0.820392},{0.824142, 0.187451, 0.812549},{0.836397, 0.195294, 0.804706},{0.848652, 0.203137, 0.796863},{0.860907, 0.210980, 0.789020},{0.873162, 0.218824, 0.781176},{0.885417, 0.226667, 0.773333},{0.897672, 0.234510, 0.765490},{0.909926, 0.242353, 0.757647},{0.922181, 0.250196, 0.749804},{0.934436, 0.258039, 0.741961},{0.946691, 0.265882, 0.734118},{0.958946, 0.273725, 0.726275},{0.971201, 0.281569, 0.718431},{0.983456, 0.289412, 0.710588},{0.995711, 0.297255, 0.702745},{1.000000, 0.305098, 0.694902},{1.000000, 0.312941, 0.687059},{1.000000, 0.320784, 0.679216},{1.000000, 0.328627, 0.671373},{1.000000, 0.336471, 0.663529},{1.000000, 0.344314, 0.655686},{1.000000, 0.352157, 0.647843},{1.000000, 0.360000, 0.640000},{1.000000, 0.367843, 0.632157},{1.000000, 0.375686, 0.624314},{1.000000, 0.383529, 0.616471},{1.000000, 0.391373, 0.608627},{1.000000, 0.399216, 0.600784},{1.000000, 0.407059, 0.592941},{1.000000, 0.414902, 0.585098},{1.000000, 0.422745, 0.577255},{1.000000, 0.430588, 0.569412},{1.000000, 0.438431, 0.561569},{1.000000, 0.446275, 0.553725},{1.000000, 0.454118, 0.545882},{1.000000, 0.461961, 0.538039},{1.000000, 0.469804, 0.530196},{1.000000, 0.477647, 0.522353},{1.000000, 0.485490, 0.514510},{1.000000, 0.493333, 0.506667},{1.000000, 0.501176, 0.498824},{1.000000, 0.509020, 0.490980},{1.000000, 0.516863, 0.483137},{1.000000, 0.524706, 0.475294},{1.000000, 0.532549, 0.467451},{1.000000, 0.540392, 0.459608},{1.000000, 0.548235, 0.451765},{1.000000, 0.556078, 0.443922},{1.000000, 0.563922, 0.436078},{1.000000, 0.571765, 0.428235},{1.000000, 0.579608, 0.420392},{1.000000, 0.587451, 0.412549},{1.000000, 0.595294, 0.404706},{1.000000, 0.603137, 0.396863},{1.000000, 0.610980, 0.389020},{1.000000, 0.618824, 0.381176},{1.000000, 0.626667, 0.373333},{1.000000, 0.634510, 0.365490},{1.000000, 0.642353, 0.357647},{1.000000, 0.650196, 0.349804},{1.000000, 0.658039, 0.341961},{1.000000, 0.665882, 0.334118},{1.000000, 0.673725, 0.326275},{1.000000, 0.681569, 0.318431},{1.000000, 0.689412, 0.310588},{1.000000, 0.697255, 0.302745},{1.000000, 0.705098, 0.294902},{1.000000, 0.712941, 0.287059},{1.000000, 0.720784, 0.279216},{1.000000, 0.728627, 0.271373},{1.000000, 0.736471, 0.263529},{1.000000, 0.744314, 0.255686},{1.000000, 0.752157, 0.247843},{1.000000, 0.760000, 0.240000},{1.000000, 0.767843, 0.232157},{1.000000, 0.775686, 0.224314},{1.000000, 0.783529, 0.216471},{1.000000, 0.791373, 0.208627},{1.000000, 0.799216, 0.200784},{1.000000, 0.807059, 0.192941},{1.000000, 0.814902, 0.185098},{1.000000, 0.822745, 0.177255},{1.000000, 0.830588, 0.169412},{1.000000, 0.838431, 0.161569},{1.000000, 0.846275, 0.153725},{1.000000, 0.854118, 0.145882},{1.000000, 0.861961, 0.138039},{1.000000, 0.869804, 0.130196},{1.000000, 0.877647, 0.122353},{1.000000, 0.885490, 0.114510},{1.000000, 0.893333, 0.106667},{1.000000, 0.901176, 0.098824},{1.000000, 0.909020, 0.090980},{1.000000, 0.916863, 0.083137},{1.000000, 0.924706, 0.075294},{1.000000, 0.932549, 0.067451},{1.000000, 0.940392, 0.059608},{1.000000, 0.948235, 0.051765},{1.000000, 0.956078, 0.043922},{1.000000, 0.963922, 0.036078},{1.000000, 0.971765, 0.028235},{1.000000, 0.979608, 0.020392},{1.000000, 0.987451, 0.012549},{1.000000, 0.995294, 0.004706},{1.000000, 1.000000, 0.019608},{1.000000, 1.000000, 0.068627},{1.000000, 1.000000, 0.117647},{1.000000, 1.000000, 0.166667},{1.000000, 1.000000, 0.215686},{1.000000, 1.000000, 0.264706},{1.000000, 1.000000, 0.313725},{1.000000, 1.000000, 0.362745},{1.000000, 1.000000, 0.411765},{1.000000, 1.000000, 0.460784},{1.000000, 1.000000, 0.509804},{1.000000, 1.000000, 0.558824},{1.000000, 1.000000, 0.607843},{1.000000, 1.000000, 0.656863},{1.000000, 1.000000, 0.705882},{1.000000, 1.000000, 0.754902},{1.000000, 1.000000, 0.803922},{1.000000, 1.000000, 0.852941},{1.000000, 1.000000, 0.901961},{1.000000, 1.000000, 0.950980},{1.000000, 1.000000, 1.000000}}}, + {"gist_rainbow", {{1.000000, 0.000000, 0.160000},{1.000000, 0.000000, 0.139085},{1.000000, 0.000000, 0.118170},{1.000000, 0.000000, 0.097255},{1.000000, 0.000000, 0.076340},{1.000000, 0.000000, 0.055425},{1.000000, 0.000000, 0.034510},{1.000000, 0.000000, 0.013595},{1.000000, 0.007419, 0.000000},{1.000000, 0.028617, 0.000000},{1.000000, 0.049815, 0.000000},{1.000000, 0.071012, 0.000000},{1.000000, 0.092210, 0.000000},{1.000000, 0.113408, 0.000000},{1.000000, 0.134605, 0.000000},{1.000000, 0.155803, 0.000000},{1.000000, 0.177001, 0.000000},{1.000000, 0.198198, 0.000000},{1.000000, 0.219396, 0.000000},{1.000000, 0.240594, 0.000000},{1.000000, 0.261791, 0.000000},{1.000000, 0.282989, 0.000000},{1.000000, 0.304187, 0.000000},{1.000000, 0.325384, 0.000000},{1.000000, 0.346582, 0.000000},{1.000000, 0.367780, 0.000000},{1.000000, 0.388977, 0.000000},{1.000000, 0.410175, 0.000000},{1.000000, 0.431373, 0.000000},{1.000000, 0.452570, 0.000000},{1.000000, 0.473768, 0.000000},{1.000000, 0.494966, 0.000000},{1.000000, 0.516163, 0.000000},{1.000000, 0.537361, 0.000000},{1.000000, 0.558559, 0.000000},{1.000000, 0.579756, 0.000000},{1.000000, 0.600954, 0.000000},{1.000000, 0.622152, 0.000000},{1.000000, 0.643349, 0.000000},{1.000000, 0.664547, 0.000000},{1.000000, 0.685745, 0.000000},{1.000000, 0.706942, 0.000000},{1.000000, 0.728140, 0.000000},{1.000000, 0.749338, 0.000000},{1.000000, 0.770535, 0.000000},{1.000000, 0.791733, 0.000000},{1.000000, 0.812931, 0.000000},{1.000000, 0.834128, 0.000000},{1.000000, 0.855326, 0.000000},{1.000000, 0.876524, 0.000000},{1.000000, 0.897721, 0.000000},{1.000000, 0.918919, 0.000000},{1.000000, 0.940117, 0.000000},{1.000000, 0.961314, 0.000000},{1.000000, 0.982512, 0.000000},{0.996290, 1.000000, 0.000000},{0.975093, 1.000000, 0.000000},{0.953895, 1.000000, 0.000000},{0.932697, 1.000000, 0.000000},{0.911500, 1.000000, 0.000000},{0.890302, 1.000000, 0.000000},{0.869104, 1.000000, 0.000000},{0.847907, 1.000000, 0.000000},{0.826709, 1.000000, 0.000000},{0.805511, 1.000000, 0.000000},{0.784314, 1.000000, 0.000000},{0.763116, 1.000000, 0.000000},{0.741918, 1.000000, 0.000000},{0.720721, 1.000000, 0.000000},{0.699523, 1.000000, 0.000000},{0.678325, 1.000000, 0.000000},{0.657128, 1.000000, 0.000000},{0.635930, 1.000000, 0.000000},{0.614732, 1.000000, 0.000000},{0.593535, 1.000000, 0.000000},{0.572337, 1.000000, 0.000000},{0.551139, 1.000000, 0.000000},{0.529942, 1.000000, 0.000000},{0.508744, 1.000000, 0.000000},{0.487546, 1.000000, 0.000000},{0.466349, 1.000000, 0.000000},{0.445151, 1.000000, 0.000000},{0.423953, 1.000000, 0.000000},{0.402756, 1.000000, 0.000000},{0.381558, 1.000000, 0.000000},{0.360360, 1.000000, 0.000000},{0.339163, 1.000000, 0.000000},{0.317965, 1.000000, 0.000000},{0.296767, 1.000000, 0.000000},{0.275570, 1.000000, 0.000000},{0.254372, 1.000000, 0.000000},{0.233174, 1.000000, 0.000000},{0.211977, 1.000000, 0.000000},{0.190779, 1.000000, 0.000000},{0.169581, 1.000000, 0.000000},{0.148384, 1.000000, 0.000000},{0.127186, 1.000000, 0.000000},{0.105988, 1.000000, 0.000000},{0.084791, 1.000000, 0.000000},{0.063593, 1.000000, 0.000000},{0.042395, 1.000000, 0.000000},{0.021198, 1.000000, 0.000000},{0.000000, 1.000000, 0.000000},{0.000000, 1.000000, 0.021084},{0.000000, 1.000000, 0.042167},{0.000000, 1.000000, 0.063251},{0.000000, 1.000000, 0.084335},{0.000000, 1.000000, 0.105419},{0.000000, 1.000000, 0.126502},{0.000000, 1.000000, 0.147586},{0.000000, 1.000000, 0.168670},{0.000000, 1.000000, 0.189753},{0.000000, 1.000000, 0.210837},{0.000000, 1.000000, 0.231921},{0.000000, 1.000000, 0.253004},{0.000000, 1.000000, 0.274088},{0.000000, 1.000000, 0.295172},{0.000000, 1.000000, 0.316256},{0.000000, 1.000000, 0.337339},{0.000000, 1.000000, 0.358423},{0.000000, 1.000000, 0.379507},{0.000000, 1.000000, 0.400590},{0.000000, 1.000000, 0.421674},{0.000000, 1.000000, 0.442758},{0.000000, 1.000000, 0.463841},{0.000000, 1.000000, 0.484925},{0.000000, 1.000000, 0.506009},{0.000000, 1.000000, 0.527093},{0.000000, 1.000000, 0.548176},{0.000000, 1.000000, 0.569260},{0.000000, 1.000000, 0.590344},{0.000000, 1.000000, 0.611427},{0.000000, 1.000000, 0.632511},{0.000000, 1.000000, 0.653595},{0.000000, 1.000000, 0.674678},{0.000000, 1.000000, 0.695762},{0.000000, 1.000000, 0.716846},{0.000000, 1.000000, 0.737930},{0.000000, 1.000000, 0.759013},{0.000000, 1.000000, 0.780097},{0.000000, 1.000000, 0.801181},{0.000000, 1.000000, 0.822264},{0.000000, 1.000000, 0.843348},{0.000000, 1.000000, 0.864432},{0.000000, 1.000000, 0.885515},{0.000000, 1.000000, 0.906599},{0.000000, 1.000000, 0.927683},{0.000000, 1.000000, 0.948767},{0.000000, 1.000000, 0.969850},{0.000000, 1.000000, 0.990934},{0.000000, 0.987852, 1.000000},{0.000000, 0.966539, 1.000000},{0.000000, 0.945226, 1.000000},{0.000000, 0.923913, 1.000000},{0.000000, 0.902600, 1.000000},{0.000000, 0.881287, 1.000000},{0.000000, 0.859974, 1.000000},{0.000000, 0.838662, 1.000000},{0.000000, 0.817349, 1.000000},{0.000000, 0.796036, 1.000000},{0.000000, 0.774723, 1.000000},{0.000000, 0.753410, 1.000000},{0.000000, 0.732097, 1.000000},{0.000000, 0.710784, 1.000000},{0.000000, 0.689471, 1.000000},{0.000000, 0.668159, 1.000000},{0.000000, 0.646846, 1.000000},{0.000000, 0.625533, 1.000000},{0.000000, 0.604220, 1.000000},{0.000000, 0.582907, 1.000000},{0.000000, 0.561594, 1.000000},{0.000000, 0.540281, 1.000000},{0.000000, 0.518968, 1.000000},{0.000000, 0.497656, 1.000000},{0.000000, 0.476343, 1.000000},{0.000000, 0.455030, 1.000000},{0.000000, 0.433717, 1.000000},{0.000000, 0.412404, 1.000000},{0.000000, 0.391091, 1.000000},{0.000000, 0.369778, 1.000000},{0.000000, 0.348465, 1.000000},{0.000000, 0.327153, 1.000000},{0.000000, 0.305840, 1.000000},{0.000000, 0.284527, 1.000000},{0.000000, 0.263214, 1.000000},{0.000000, 0.241901, 1.000000},{0.000000, 0.220588, 1.000000},{0.000000, 0.199275, 1.000000},{0.000000, 0.177962, 1.000000},{0.000000, 0.156650, 1.000000},{0.000000, 0.135337, 1.000000},{0.000000, 0.114024, 1.000000},{0.000000, 0.092711, 1.000000},{0.000000, 0.071398, 1.000000},{0.000000, 0.050085, 1.000000},{0.000000, 0.028772, 1.000000},{0.000000, 0.007460, 1.000000},{0.013853, 0.000000, 1.000000},{0.035166, 0.000000, 1.000000},{0.056479, 0.000000, 1.000000},{0.077792, 0.000000, 1.000000},{0.099105, 0.000000, 1.000000},{0.120418, 0.000000, 1.000000},{0.141731, 0.000000, 1.000000},{0.163043, 0.000000, 1.000000},{0.184356, 0.000000, 1.000000},{0.205669, 0.000000, 1.000000},{0.226982, 0.000000, 1.000000},{0.248295, 0.000000, 1.000000},{0.269608, 0.000000, 1.000000},{0.290921, 0.000000, 1.000000},{0.312234, 0.000000, 1.000000},{0.333546, 0.000000, 1.000000},{0.354859, 0.000000, 1.000000},{0.376172, 0.000000, 1.000000},{0.397485, 0.000000, 1.000000},{0.418798, 0.000000, 1.000000},{0.440111, 0.000000, 1.000000},{0.461424, 0.000000, 1.000000},{0.482737, 0.000000, 1.000000},{0.504049, 0.000000, 1.000000},{0.525362, 0.000000, 1.000000},{0.546675, 0.000000, 1.000000},{0.567988, 0.000000, 1.000000},{0.589301, 0.000000, 1.000000},{0.610614, 0.000000, 1.000000},{0.631927, 0.000000, 1.000000},{0.653240, 0.000000, 1.000000},{0.674552, 0.000000, 1.000000},{0.695865, 0.000000, 1.000000},{0.717178, 0.000000, 1.000000},{0.738491, 0.000000, 1.000000},{0.759804, 0.000000, 1.000000},{0.781117, 0.000000, 1.000000},{0.802430, 0.000000, 1.000000},{0.823743, 0.000000, 1.000000},{0.845055, 0.000000, 1.000000},{0.866368, 0.000000, 1.000000},{0.887681, 0.000000, 1.000000},{0.908994, 0.000000, 1.000000},{0.930307, 0.000000, 1.000000},{0.951620, 0.000000, 1.000000},{0.972933, 0.000000, 1.000000},{0.994246, 0.000000, 1.000000},{1.000000, 0.000000, 0.984442},{1.000000, 0.000000, 0.963129},{1.000000, 0.000000, 0.941816},{1.000000, 0.000000, 0.920503},{1.000000, 0.000000, 0.899190},{1.000000, 0.000000, 0.877877},{1.000000, 0.000000, 0.856564},{1.000000, 0.000000, 0.835251},{1.000000, 0.000000, 0.813939},{1.000000, 0.000000, 0.792626},{1.000000, 0.000000, 0.771313},{1.000000, 0.000000, 0.750000}}}, + {"rainbow", {{0.500000, 0.000000, 1.000000},{0.492157, 0.012320, 0.999981},{0.484314, 0.024637, 0.999924},{0.476471, 0.036951, 0.999829},{0.468627, 0.049260, 0.999696},{0.460784, 0.061561, 0.999526},{0.452941, 0.073853, 0.999317},{0.445098, 0.086133, 0.999070},{0.437255, 0.098400, 0.998786},{0.429412, 0.110653, 0.998464},{0.421569, 0.122888, 0.998103},{0.413725, 0.135105, 0.997705},{0.405882, 0.147302, 0.997269},{0.398039, 0.159476, 0.996795},{0.390196, 0.171626, 0.996284},{0.382353, 0.183750, 0.995734},{0.374510, 0.195845, 0.995147},{0.366667, 0.207912, 0.994522},{0.358824, 0.219946, 0.993859},{0.350980, 0.231948, 0.993159},{0.343137, 0.243914, 0.992421},{0.335294, 0.255843, 0.991645},{0.327451, 0.267733, 0.990831},{0.319608, 0.279583, 0.989980},{0.311765, 0.291390, 0.989092},{0.303922, 0.303153, 0.988165},{0.296078, 0.314870, 0.987202},{0.288235, 0.326539, 0.986201},{0.280392, 0.338158, 0.985162},{0.272549, 0.349727, 0.984086},{0.264706, 0.361242, 0.982973},{0.256863, 0.372702, 0.981823},{0.249020, 0.384106, 0.980635},{0.241176, 0.395451, 0.979410},{0.233333, 0.406737, 0.978148},{0.225490, 0.417960, 0.976848},{0.217647, 0.429121, 0.975512},{0.209804, 0.440216, 0.974139},{0.201961, 0.451244, 0.972728},{0.194118, 0.462204, 0.971281},{0.186275, 0.473094, 0.969797},{0.178431, 0.483911, 0.968276},{0.170588, 0.494656, 0.966718},{0.162745, 0.505325, 0.965124},{0.154902, 0.515918, 0.963493},{0.147059, 0.526432, 0.961826},{0.139216, 0.536867, 0.960122},{0.131373, 0.547220, 0.958381},{0.123529, 0.557489, 0.956604},{0.115686, 0.567675, 0.954791},{0.107843, 0.577774, 0.952942},{0.100000, 0.587785, 0.951057},{0.092157, 0.597707, 0.949135},{0.084314, 0.607539, 0.947177},{0.076471, 0.617278, 0.945184},{0.068627, 0.626924, 0.943154},{0.060784, 0.636474, 0.941089},{0.052941, 0.645928, 0.938988},{0.045098, 0.655284, 0.936852},{0.037255, 0.664540, 0.934680},{0.029412, 0.673696, 0.932472},{0.021569, 0.682749, 0.930229},{0.013725, 0.691698, 0.927951},{0.005882, 0.700543, 0.925638},{0.001961, 0.709281, 0.923289},{0.009804, 0.717912, 0.920906},{0.017647, 0.726434, 0.918487},{0.025490, 0.734845, 0.916034},{0.033333, 0.743145, 0.913545},{0.041176, 0.751332, 0.911023},{0.049020, 0.759405, 0.908465},{0.056863, 0.767363, 0.905873},{0.064706, 0.775204, 0.903247},{0.072549, 0.782928, 0.900587},{0.080392, 0.790532, 0.897892},{0.088235, 0.798017, 0.895163},{0.096078, 0.805381, 0.892401},{0.103922, 0.812622, 0.889604},{0.111765, 0.819740, 0.886774},{0.119608, 0.826734, 0.883910},{0.127451, 0.833602, 0.881012},{0.135294, 0.840344, 0.878081},{0.143137, 0.846958, 0.875117},{0.150980, 0.853444, 0.872120},{0.158824, 0.859800, 0.869089},{0.166667, 0.866025, 0.866025},{0.174510, 0.872120, 0.862929},{0.182353, 0.878081, 0.859800},{0.190196, 0.883910, 0.856638},{0.198039, 0.889604, 0.853444},{0.205882, 0.895163, 0.850217},{0.213725, 0.900587, 0.846958},{0.221569, 0.905873, 0.843667},{0.229412, 0.911023, 0.840344},{0.237255, 0.916034, 0.836989},{0.245098, 0.920906, 0.833602},{0.252941, 0.925638, 0.830184},{0.260784, 0.930229, 0.826734},{0.268627, 0.934680, 0.823253},{0.276471, 0.938988, 0.819740},{0.284314, 0.943154, 0.816197},{0.292157, 0.947177, 0.812622},{0.300000, 0.951057, 0.809017},{0.307843, 0.954791, 0.805381},{0.315686, 0.958381, 0.801714},{0.323529, 0.961826, 0.798017},{0.331373, 0.965124, 0.794290},{0.339216, 0.968276, 0.790532},{0.347059, 0.971281, 0.786745},{0.354902, 0.974139, 0.782928},{0.362745, 0.976848, 0.779081},{0.370588, 0.979410, 0.775204},{0.378431, 0.981823, 0.771298},{0.386275, 0.984086, 0.767363},{0.394118, 0.986201, 0.763398},{0.401961, 0.988165, 0.759405},{0.409804, 0.989980, 0.755383},{0.417647, 0.991645, 0.751332},{0.425490, 0.993159, 0.747253},{0.433333, 0.994522, 0.743145},{0.441176, 0.995734, 0.739009},{0.449020, 0.996795, 0.734845},{0.456863, 0.997705, 0.730653},{0.464706, 0.998464, 0.726434},{0.472549, 0.999070, 0.722186},{0.480392, 0.999526, 0.717912},{0.488235, 0.999829, 0.713610},{0.496078, 0.999981, 0.709281},{0.503922, 0.999981, 0.704926},{0.511765, 0.999829, 0.700543},{0.519608, 0.999526, 0.696134},{0.527451, 0.999070, 0.691698},{0.535294, 0.998464, 0.687237},{0.543137, 0.997705, 0.682749},{0.550980, 0.996795, 0.678235},{0.558824, 0.995734, 0.673696},{0.566667, 0.994522, 0.669131},{0.574510, 0.993159, 0.664540},{0.582353, 0.991645, 0.659925},{0.590196, 0.989980, 0.655284},{0.598039, 0.988165, 0.650618},{0.605882, 0.986201, 0.645928},{0.613725, 0.984086, 0.641213},{0.621569, 0.981823, 0.636474},{0.629412, 0.979410, 0.631711},{0.637255, 0.976848, 0.626924},{0.645098, 0.974139, 0.622113},{0.652941, 0.971281, 0.617278},{0.660784, 0.968276, 0.612420},{0.668627, 0.965124, 0.607539},{0.676471, 0.961826, 0.602635},{0.684314, 0.958381, 0.597707},{0.692157, 0.954791, 0.592758},{0.700000, 0.951057, 0.587785},{0.707843, 0.947177, 0.582791},{0.715686, 0.943154, 0.577774},{0.723529, 0.938988, 0.572735},{0.731373, 0.934680, 0.567675},{0.739216, 0.930229, 0.562593},{0.747059, 0.925638, 0.557489},{0.754902, 0.920906, 0.552365},{0.762745, 0.916034, 0.547220},{0.770588, 0.911023, 0.542053},{0.778431, 0.905873, 0.536867},{0.786275, 0.900587, 0.531659},{0.794118, 0.895163, 0.526432},{0.801961, 0.889604, 0.521185},{0.809804, 0.883910, 0.515918},{0.817647, 0.878081, 0.510631},{0.825490, 0.872120, 0.505325},{0.833333, 0.866025, 0.500000},{0.841176, 0.859800, 0.494656},{0.849020, 0.853444, 0.489293},{0.856863, 0.846958, 0.483911},{0.864706, 0.840344, 0.478512},{0.872549, 0.833602, 0.473094},{0.880392, 0.826734, 0.467658},{0.888235, 0.819740, 0.462204},{0.896078, 0.812622, 0.456733},{0.903922, 0.805381, 0.451244},{0.911765, 0.798017, 0.445738},{0.919608, 0.790532, 0.440216},{0.927451, 0.782928, 0.434676},{0.935294, 0.775204, 0.429121},{0.943137, 0.767363, 0.423549},{0.950980, 0.759405, 0.417960},{0.958824, 0.751332, 0.412356},{0.966667, 0.743145, 0.406737},{0.974510, 0.734845, 0.401102},{0.982353, 0.726434, 0.395451},{0.990196, 0.717912, 0.389786},{0.998039, 0.709281, 0.384106},{1.000000, 0.700543, 0.378411},{1.000000, 0.691698, 0.372702},{1.000000, 0.682749, 0.366979},{1.000000, 0.673696, 0.361242},{1.000000, 0.664540, 0.355491},{1.000000, 0.655284, 0.349727},{1.000000, 0.645928, 0.343949},{1.000000, 0.636474, 0.338158},{1.000000, 0.626924, 0.332355},{1.000000, 0.617278, 0.326539},{1.000000, 0.607539, 0.320710},{1.000000, 0.597707, 0.314870},{1.000000, 0.587785, 0.309017},{1.000000, 0.577774, 0.303153},{1.000000, 0.567675, 0.297277},{1.000000, 0.557489, 0.291390},{1.000000, 0.547220, 0.285492},{1.000000, 0.536867, 0.279583},{1.000000, 0.526432, 0.273663},{1.000000, 0.515918, 0.267733},{1.000000, 0.505325, 0.261793},{1.000000, 0.494656, 0.255843},{1.000000, 0.483911, 0.249883},{1.000000, 0.473094, 0.243914},{1.000000, 0.462204, 0.237935},{1.000000, 0.451244, 0.231948},{1.000000, 0.440216, 0.225951},{1.000000, 0.429121, 0.219946},{1.000000, 0.417960, 0.213933},{1.000000, 0.406737, 0.207912},{1.000000, 0.395451, 0.201882},{1.000000, 0.384106, 0.195845},{1.000000, 0.372702, 0.189801},{1.000000, 0.361242, 0.183750},{1.000000, 0.349727, 0.177691},{1.000000, 0.338158, 0.171626},{1.000000, 0.326539, 0.165554},{1.000000, 0.314870, 0.159476},{1.000000, 0.303153, 0.153392},{1.000000, 0.291390, 0.147302},{1.000000, 0.279583, 0.141206},{1.000000, 0.267733, 0.135105},{1.000000, 0.255843, 0.128999},{1.000000, 0.243914, 0.122888},{1.000000, 0.231948, 0.116773},{1.000000, 0.219946, 0.110653},{1.000000, 0.207912, 0.104528},{1.000000, 0.195845, 0.098400},{1.000000, 0.183750, 0.092268},{1.000000, 0.171626, 0.086133},{1.000000, 0.159476, 0.079994},{1.000000, 0.147302, 0.073853},{1.000000, 0.135105, 0.067708},{1.000000, 0.122888, 0.061561},{1.000000, 0.110653, 0.055411},{1.000000, 0.098400, 0.049260},{1.000000, 0.086133, 0.043107},{1.000000, 0.073853, 0.036951},{1.000000, 0.061561, 0.030795},{1.000000, 0.049260, 0.024637},{1.000000, 0.036951, 0.018479},{1.000000, 0.024637, 0.012320},{1.000000, 0.012320, 0.006160},{1.000000, 0.000000, 0.000000}}}, + {"spectral", {{0.619608, 0.003922, 0.258824},{0.628066, 0.013303, 0.260823},{0.636524, 0.022684, 0.262822},{0.644983, 0.032065, 0.264821},{0.653441, 0.041446, 0.266820},{0.661899, 0.050827, 0.268820},{0.670358, 0.060208, 0.270819},{0.678816, 0.069589, 0.272818},{0.687274, 0.078970, 0.274817},{0.695732, 0.088351, 0.276817},{0.704191, 0.097732, 0.278816},{0.712649, 0.107113, 0.280815},{0.721107, 0.116494, 0.282814},{0.729566, 0.125875, 0.284814},{0.738024, 0.135256, 0.286813},{0.746482, 0.144637, 0.288812},{0.754940, 0.154018, 0.290811},{0.763399, 0.163399, 0.292810},{0.771857, 0.172780, 0.294810},{0.780315, 0.182161, 0.296809},{0.788774, 0.191542, 0.298808},{0.797232, 0.200923, 0.300807},{0.805690, 0.210304, 0.302807},{0.814148, 0.219685, 0.304806},{0.822607, 0.229066, 0.306805},{0.831065, 0.238447, 0.308804},{0.837678, 0.246751, 0.308881},{0.842445, 0.253979, 0.307036},{0.847213, 0.261207, 0.305190},{0.851980, 0.268435, 0.303345},{0.856747, 0.275663, 0.301499},{0.861515, 0.282891, 0.299654},{0.866282, 0.290119, 0.297809},{0.871050, 0.297347, 0.295963},{0.875817, 0.304575, 0.294118},{0.880584, 0.311803, 0.292272},{0.885352, 0.319031, 0.290427},{0.890119, 0.326259, 0.288581},{0.894887, 0.333487, 0.286736},{0.899654, 0.340715, 0.284890},{0.904421, 0.347943, 0.283045},{0.909189, 0.355171, 0.281200},{0.913956, 0.362399, 0.279354},{0.918724, 0.369627, 0.277509},{0.923491, 0.376855, 0.275663},{0.928258, 0.384083, 0.273818},{0.933026, 0.391311, 0.271972},{0.937793, 0.398539, 0.270127},{0.942561, 0.405767, 0.268281},{0.947328, 0.412995, 0.266436},{0.952095, 0.420223, 0.264591},{0.956863, 0.427451, 0.262745},{0.958247, 0.437447, 0.267359},{0.959631, 0.447443, 0.271972},{0.961015, 0.457439, 0.276586},{0.962399, 0.467436, 0.281200},{0.963783, 0.477432, 0.285813},{0.965167, 0.487428, 0.290427},{0.966551, 0.497424, 0.295040},{0.967935, 0.507420, 0.299654},{0.969319, 0.517416, 0.304268},{0.970704, 0.527413, 0.308881},{0.972088, 0.537409, 0.313495},{0.973472, 0.547405, 0.318108},{0.974856, 0.557401, 0.322722},{0.976240, 0.567397, 0.327336},{0.977624, 0.577393, 0.331949},{0.979008, 0.587389, 0.336563},{0.980392, 0.597386, 0.341176},{0.981776, 0.607382, 0.345790},{0.983160, 0.617378, 0.350404},{0.984544, 0.627374, 0.355017},{0.985928, 0.637370, 0.359631},{0.987313, 0.647366, 0.364245},{0.988697, 0.657363, 0.368858},{0.990081, 0.667359, 0.373472},{0.991465, 0.677355, 0.378085},{0.992234, 0.686198, 0.383622},{0.992388, 0.693887, 0.390081},{0.992541, 0.701576, 0.396540},{0.992695, 0.709266, 0.402999},{0.992849, 0.716955, 0.409458},{0.993003, 0.724644, 0.415917},{0.993156, 0.732334, 0.422376},{0.993310, 0.740023, 0.428835},{0.993464, 0.747712, 0.435294},{0.993618, 0.755402, 0.441753},{0.993772, 0.763091, 0.448212},{0.993925, 0.770780, 0.454671},{0.994079, 0.778470, 0.461130},{0.994233, 0.786159, 0.467589},{0.994387, 0.793849, 0.474048},{0.994541, 0.801538, 0.480507},{0.994694, 0.809227, 0.486967},{0.994848, 0.816917, 0.493426},{0.995002, 0.824606, 0.499885},{0.995156, 0.832295, 0.506344},{0.995309, 0.839985, 0.512803},{0.995463, 0.847674, 0.519262},{0.995617, 0.855363, 0.525721},{0.995771, 0.863053, 0.532180},{0.995925, 0.870742, 0.538639},{0.996078, 0.878431, 0.545098},{0.996232, 0.883199, 0.553095},{0.996386, 0.887966, 0.561092},{0.996540, 0.892734, 0.569089},{0.996694, 0.897501, 0.577086},{0.996847, 0.902268, 0.585083},{0.997001, 0.907036, 0.593080},{0.997155, 0.911803, 0.601077},{0.997309, 0.916571, 0.609073},{0.997463, 0.921338, 0.617070},{0.997616, 0.926105, 0.625067},{0.997770, 0.930873, 0.633064},{0.997924, 0.935640, 0.641061},{0.998078, 0.940408, 0.649058},{0.998231, 0.945175, 0.657055},{0.998385, 0.949942, 0.665052},{0.998539, 0.954710, 0.673049},{0.998693, 0.959477, 0.681046},{0.998847, 0.964245, 0.689043},{0.999000, 0.969012, 0.697040},{0.999154, 0.973779, 0.705037},{0.999308, 0.978547, 0.713033},{0.999462, 0.983314, 0.721030},{0.999616, 0.988082, 0.729027},{0.999769, 0.992849, 0.737024},{0.999923, 0.997616, 0.745021},{0.998078, 0.999231, 0.746021},{0.994233, 0.997693, 0.740023},{0.990388, 0.996155, 0.734025},{0.986544, 0.994617, 0.728028},{0.982699, 0.993080, 0.722030},{0.978854, 0.991542, 0.716032},{0.975010, 0.990004, 0.710035},{0.971165, 0.988466, 0.704037},{0.967320, 0.986928, 0.698039},{0.963476, 0.985390, 0.692042},{0.959631, 0.983852, 0.686044},{0.955786, 0.982314, 0.680046},{0.951942, 0.980777, 0.674048},{0.948097, 0.979239, 0.668051},{0.944252, 0.977701, 0.662053},{0.940408, 0.976163, 0.656055},{0.936563, 0.974625, 0.650058},{0.932718, 0.973087, 0.644060},{0.928874, 0.971549, 0.638062},{0.925029, 0.970012, 0.632065},{0.921184, 0.968474, 0.626067},{0.917339, 0.966936, 0.620069},{0.913495, 0.965398, 0.614072},{0.909650, 0.963860, 0.608074},{0.905805, 0.962322, 0.602076},{0.901961, 0.960784, 0.596078},{0.892887, 0.957093, 0.597924},{0.883814, 0.953403, 0.599769},{0.874740, 0.949712, 0.601615},{0.865667, 0.946021, 0.603460},{0.856594, 0.942330, 0.605306},{0.847520, 0.938639, 0.607151},{0.838447, 0.934948, 0.608997},{0.829373, 0.931257, 0.610842},{0.820300, 0.927566, 0.612687},{0.811226, 0.923875, 0.614533},{0.802153, 0.920185, 0.616378},{0.793080, 0.916494, 0.618224},{0.784006, 0.912803, 0.620069},{0.774933, 0.909112, 0.621915},{0.765859, 0.905421, 0.623760},{0.756786, 0.901730, 0.625606},{0.747712, 0.898039, 0.627451},{0.738639, 0.894348, 0.629296},{0.729566, 0.890657, 0.631142},{0.720492, 0.886967, 0.632987},{0.711419, 0.883276, 0.634833},{0.702345, 0.879585, 0.636678},{0.693272, 0.875894, 0.638524},{0.684198, 0.872203, 0.640369},{0.675125, 0.868512, 0.642215},{0.665283, 0.864591, 0.643214},{0.654671, 0.860438, 0.643368},{0.644060, 0.856286, 0.643522},{0.633449, 0.852134, 0.643676},{0.622837, 0.847982, 0.643829},{0.612226, 0.843829, 0.643983},{0.601615, 0.839677, 0.644137},{0.591003, 0.835525, 0.644291},{0.580392, 0.831373, 0.644444},{0.569781, 0.827220, 0.644598},{0.559170, 0.823068, 0.644752},{0.548558, 0.818916, 0.644906},{0.537947, 0.814764, 0.645060},{0.527336, 0.810611, 0.645213},{0.516724, 0.806459, 0.645367},{0.506113, 0.802307, 0.645521},{0.495502, 0.798155, 0.645675},{0.484890, 0.794002, 0.645829},{0.474279, 0.789850, 0.645982},{0.463668, 0.785698, 0.646136},{0.453057, 0.781546, 0.646290},{0.442445, 0.777393, 0.646444},{0.431834, 0.773241, 0.646597},{0.421223, 0.769089, 0.646751},{0.410611, 0.764937, 0.646905},{0.400000, 0.760784, 0.647059},{0.392003, 0.751865, 0.650750},{0.384006, 0.742945, 0.654441},{0.376009, 0.734025, 0.658131},{0.368012, 0.725106, 0.661822},{0.360015, 0.716186, 0.665513},{0.352018, 0.707266, 0.669204},{0.344022, 0.698347, 0.672895},{0.336025, 0.689427, 0.676586},{0.328028, 0.680507, 0.680277},{0.320031, 0.671588, 0.683968},{0.312034, 0.662668, 0.687659},{0.304037, 0.653749, 0.691349},{0.296040, 0.644829, 0.695040},{0.288043, 0.635909, 0.698731},{0.280046, 0.626990, 0.702422},{0.272049, 0.618070, 0.706113},{0.264052, 0.609150, 0.709804},{0.256055, 0.600231, 0.713495},{0.248058, 0.591311, 0.717186},{0.240062, 0.582391, 0.720877},{0.232065, 0.573472, 0.724567},{0.224068, 0.564552, 0.728258},{0.216071, 0.555632, 0.731949},{0.208074, 0.546713, 0.735640},{0.200077, 0.537793, 0.739331},{0.199462, 0.528950, 0.739100},{0.206228, 0.520185, 0.734948},{0.212995, 0.511419, 0.730796},{0.219762, 0.502653, 0.726644},{0.226528, 0.493887, 0.722491},{0.233295, 0.485121, 0.718339},{0.240062, 0.476355, 0.714187},{0.246828, 0.467589, 0.710035},{0.253595, 0.458824, 0.705882},{0.260361, 0.450058, 0.701730},{0.267128, 0.441292, 0.697578},{0.273895, 0.432526, 0.693426},{0.280661, 0.423760, 0.689273},{0.287428, 0.414994, 0.685121},{0.294195, 0.406228, 0.680969},{0.300961, 0.397463, 0.676817},{0.307728, 0.388697, 0.672664},{0.314494, 0.379931, 0.668512},{0.321261, 0.371165, 0.664360},{0.328028, 0.362399, 0.660208},{0.334794, 0.353633, 0.656055},{0.341561, 0.344867, 0.651903},{0.348328, 0.336101, 0.647751},{0.355094, 0.327336, 0.643599},{0.361861, 0.318570, 0.639446},{0.368627, 0.309804, 0.635294}}}, + {"hot", {{0.041600, 0.000000, 0.000000},{0.051895, 0.000000, 0.000000},{0.062190, 0.000000, 0.000000},{0.072485, 0.000000, 0.000000},{0.082779, 0.000000, 0.000000},{0.093074, 0.000000, 0.000000},{0.103369, 0.000000, 0.000000},{0.113664, 0.000000, 0.000000},{0.123959, 0.000000, 0.000000},{0.134254, 0.000000, 0.000000},{0.144548, 0.000000, 0.000000},{0.154843, 0.000000, 0.000000},{0.165138, 0.000000, 0.000000},{0.175433, 0.000000, 0.000000},{0.185728, 0.000000, 0.000000},{0.196023, 0.000000, 0.000000},{0.206318, 0.000000, 0.000000},{0.216612, 0.000000, 0.000000},{0.226907, 0.000000, 0.000000},{0.237202, 0.000000, 0.000000},{0.247497, 0.000000, 0.000000},{0.257792, 0.000000, 0.000000},{0.268087, 0.000000, 0.000000},{0.278381, 0.000000, 0.000000},{0.288676, 0.000000, 0.000000},{0.298971, 0.000000, 0.000000},{0.309266, 0.000000, 0.000000},{0.319561, 0.000000, 0.000000},{0.329856, 0.000000, 0.000000},{0.340150, 0.000000, 0.000000},{0.350445, 0.000000, 0.000000},{0.360740, 0.000000, 0.000000},{0.371035, 0.000000, 0.000000},{0.381330, 0.000000, 0.000000},{0.391625, 0.000000, 0.000000},{0.401920, 0.000000, 0.000000},{0.412214, 0.000000, 0.000000},{0.422509, 0.000000, 0.000000},{0.432804, 0.000000, 0.000000},{0.443099, 0.000000, 0.000000},{0.453394, 0.000000, 0.000000},{0.463689, 0.000000, 0.000000},{0.473983, 0.000000, 0.000000},{0.484278, 0.000000, 0.000000},{0.494573, 0.000000, 0.000000},{0.504868, 0.000000, 0.000000},{0.515163, 0.000000, 0.000000},{0.525458, 0.000000, 0.000000},{0.535753, 0.000000, 0.000000},{0.546047, 0.000000, 0.000000},{0.556342, 0.000000, 0.000000},{0.566637, 0.000000, 0.000000},{0.576932, 0.000000, 0.000000},{0.587227, 0.000000, 0.000000},{0.597522, 0.000000, 0.000000},{0.607816, 0.000000, 0.000000},{0.618111, 0.000000, 0.000000},{0.628406, 0.000000, 0.000000},{0.638701, 0.000000, 0.000000},{0.648996, 0.000000, 0.000000},{0.659291, 0.000000, 0.000000},{0.669585, 0.000000, 0.000000},{0.679880, 0.000000, 0.000000},{0.690175, 0.000000, 0.000000},{0.700470, 0.000000, 0.000000},{0.710765, 0.000000, 0.000000},{0.721060, 0.000000, 0.000000},{0.731355, 0.000000, 0.000000},{0.741649, 0.000000, 0.000000},{0.751944, 0.000000, 0.000000},{0.762239, 0.000000, 0.000000},{0.772534, 0.000000, 0.000000},{0.782829, 0.000000, 0.000000},{0.793124, 0.000000, 0.000000},{0.803418, 0.000000, 0.000000},{0.813713, 0.000000, 0.000000},{0.824008, 0.000000, 0.000000},{0.834303, 0.000000, 0.000000},{0.844598, 0.000000, 0.000000},{0.854893, 0.000000, 0.000000},{0.865188, 0.000000, 0.000000},{0.875482, 0.000000, 0.000000},{0.885777, 0.000000, 0.000000},{0.896072, 0.000000, 0.000000},{0.906367, 0.000000, 0.000000},{0.916662, 0.000000, 0.000000},{0.926957, 0.000000, 0.000000},{0.937251, 0.000000, 0.000000},{0.947546, 0.000000, 0.000000},{0.957841, 0.000000, 0.000000},{0.968136, 0.000000, 0.000000},{0.978431, 0.000000, 0.000000},{0.988726, 0.000000, 0.000000},{0.999020, 0.000000, 0.000000},{1.000000, 0.009315, 0.000000},{1.000000, 0.019609, 0.000000},{1.000000, 0.029903, 0.000000},{1.000000, 0.040197, 0.000000},{1.000000, 0.050491, 0.000000},{1.000000, 0.060785, 0.000000},{1.000000, 0.071079, 0.000000},{1.000000, 0.081373, 0.000000},{1.000000, 0.091667, 0.000000},{1.000000, 0.101962, 0.000000},{1.000000, 0.112256, 0.000000},{1.000000, 0.122550, 0.000000},{1.000000, 0.132844, 0.000000},{1.000000, 0.143138, 0.000000},{1.000000, 0.153432, 0.000000},{1.000000, 0.163726, 0.000000},{1.000000, 0.174020, 0.000000},{1.000000, 0.184314, 0.000000},{1.000000, 0.194608, 0.000000},{1.000000, 0.204903, 0.000000},{1.000000, 0.215197, 0.000000},{1.000000, 0.225491, 0.000000},{1.000000, 0.235785, 0.000000},{1.000000, 0.246079, 0.000000},{1.000000, 0.256373, 0.000000},{1.000000, 0.266667, 0.000000},{1.000000, 0.276961, 0.000000},{1.000000, 0.287255, 0.000000},{1.000000, 0.297549, 0.000000},{1.000000, 0.307844, 0.000000},{1.000000, 0.318138, 0.000000},{1.000000, 0.328432, 0.000000},{1.000000, 0.338726, 0.000000},{1.000000, 0.349020, 0.000000},{1.000000, 0.359314, 0.000000},{1.000000, 0.369608, 0.000000},{1.000000, 0.379902, 0.000000},{1.000000, 0.390196, 0.000000},{1.000000, 0.400491, 0.000000},{1.000000, 0.410785, 0.000000},{1.000000, 0.421079, 0.000000},{1.000000, 0.431373, 0.000000},{1.000000, 0.441667, 0.000000},{1.000000, 0.451961, 0.000000},{1.000000, 0.462255, 0.000000},{1.000000, 0.472549, 0.000000},{1.000000, 0.482843, 0.000000},{1.000000, 0.493137, 0.000000},{1.000000, 0.503432, 0.000000},{1.000000, 0.513726, 0.000000},{1.000000, 0.524020, 0.000000},{1.000000, 0.534314, 0.000000},{1.000000, 0.544608, 0.000000},{1.000000, 0.554902, 0.000000},{1.000000, 0.565196, 0.000000},{1.000000, 0.575490, 0.000000},{1.000000, 0.585784, 0.000000},{1.000000, 0.596078, 0.000000},{1.000000, 0.606373, 0.000000},{1.000000, 0.616667, 0.000000},{1.000000, 0.626961, 0.000000},{1.000000, 0.637255, 0.000000},{1.000000, 0.647549, 0.000000},{1.000000, 0.657843, 0.000000},{1.000000, 0.668137, 0.000000},{1.000000, 0.678431, 0.000000},{1.000000, 0.688725, 0.000000},{1.000000, 0.699019, 0.000000},{1.000000, 0.709314, 0.000000},{1.000000, 0.719608, 0.000000},{1.000000, 0.729902, 0.000000},{1.000000, 0.740196, 0.000000},{1.000000, 0.750490, 0.000000},{1.000000, 0.760784, 0.000000},{1.000000, 0.771078, 0.000000},{1.000000, 0.781372, 0.000000},{1.000000, 0.791666, 0.000000},{1.000000, 0.801960, 0.000000},{1.000000, 0.812255, 0.000000},{1.000000, 0.822549, 0.000000},{1.000000, 0.832843, 0.000000},{1.000000, 0.843137, 0.000000},{1.000000, 0.853431, 0.000000},{1.000000, 0.863725, 0.000000},{1.000000, 0.874019, 0.000000},{1.000000, 0.884313, 0.000000},{1.000000, 0.894607, 0.000000},{1.000000, 0.904901, 0.000000},{1.000000, 0.915196, 0.000000},{1.000000, 0.925490, 0.000000},{1.000000, 0.935784, 0.000000},{1.000000, 0.946078, 0.000000},{1.000000, 0.956372, 0.000000},{1.000000, 0.966666, 0.000000},{1.000000, 0.976960, 0.000000},{1.000000, 0.987254, 0.000000},{1.000000, 0.997548, 0.000000},{1.000000, 1.000000, 0.011764},{1.000000, 1.000000, 0.027205},{1.000000, 1.000000, 0.042646},{1.000000, 1.000000, 0.058087},{1.000000, 1.000000, 0.073528},{1.000000, 1.000000, 0.088970},{1.000000, 1.000000, 0.104411},{1.000000, 1.000000, 0.119852},{1.000000, 1.000000, 0.135293},{1.000000, 1.000000, 0.150734},{1.000000, 1.000000, 0.166176},{1.000000, 1.000000, 0.181617},{1.000000, 1.000000, 0.197058},{1.000000, 1.000000, 0.212499},{1.000000, 1.000000, 0.227940},{1.000000, 1.000000, 0.243382},{1.000000, 1.000000, 0.258823},{1.000000, 1.000000, 0.274264},{1.000000, 1.000000, 0.289705},{1.000000, 1.000000, 0.305146},{1.000000, 1.000000, 0.320588},{1.000000, 1.000000, 0.336029},{1.000000, 1.000000, 0.351470},{1.000000, 1.000000, 0.366911},{1.000000, 1.000000, 0.382352},{1.000000, 1.000000, 0.397794},{1.000000, 1.000000, 0.413235},{1.000000, 1.000000, 0.428676},{1.000000, 1.000000, 0.444117},{1.000000, 1.000000, 0.459558},{1.000000, 1.000000, 0.474999},{1.000000, 1.000000, 0.490441},{1.000000, 1.000000, 0.505882},{1.000000, 1.000000, 0.521323},{1.000000, 1.000000, 0.536764},{1.000000, 1.000000, 0.552205},{1.000000, 1.000000, 0.567647},{1.000000, 1.000000, 0.583088},{1.000000, 1.000000, 0.598529},{1.000000, 1.000000, 0.613970},{1.000000, 1.000000, 0.629411},{1.000000, 1.000000, 0.644853},{1.000000, 1.000000, 0.660294},{1.000000, 1.000000, 0.675735},{1.000000, 1.000000, 0.691176},{1.000000, 1.000000, 0.706617},{1.000000, 1.000000, 0.722059},{1.000000, 1.000000, 0.737500},{1.000000, 1.000000, 0.752941},{1.000000, 1.000000, 0.768382},{1.000000, 1.000000, 0.783823},{1.000000, 1.000000, 0.799265},{1.000000, 1.000000, 0.814706},{1.000000, 1.000000, 0.830147},{1.000000, 1.000000, 0.845588},{1.000000, 1.000000, 0.861029},{1.000000, 1.000000, 0.876470},{1.000000, 1.000000, 0.891912},{1.000000, 1.000000, 0.907353},{1.000000, 1.000000, 0.922794},{1.000000, 1.000000, 0.938235},{1.000000, 1.000000, 0.953676},{1.000000, 1.000000, 0.969118},{1.000000, 1.000000, 0.984559},{1.000000, 1.000000, 1.000000}}}, + {"afmhot", {{0.000000, 0.000000, 0.000000},{0.007843, 0.000000, 0.000000},{0.015686, 0.000000, 0.000000},{0.023529, 0.000000, 0.000000},{0.031373, 0.000000, 0.000000},{0.039216, 0.000000, 0.000000},{0.047059, 0.000000, 0.000000},{0.054902, 0.000000, 0.000000},{0.062745, 0.000000, 0.000000},{0.070588, 0.000000, 0.000000},{0.078431, 0.000000, 0.000000},{0.086275, 0.000000, 0.000000},{0.094118, 0.000000, 0.000000},{0.101961, 0.000000, 0.000000},{0.109804, 0.000000, 0.000000},{0.117647, 0.000000, 0.000000},{0.125490, 0.000000, 0.000000},{0.133333, 0.000000, 0.000000},{0.141176, 0.000000, 0.000000},{0.149020, 0.000000, 0.000000},{0.156863, 0.000000, 0.000000},{0.164706, 0.000000, 0.000000},{0.172549, 0.000000, 0.000000},{0.180392, 0.000000, 0.000000},{0.188235, 0.000000, 0.000000},{0.196078, 0.000000, 0.000000},{0.203922, 0.000000, 0.000000},{0.211765, 0.000000, 0.000000},{0.219608, 0.000000, 0.000000},{0.227451, 0.000000, 0.000000},{0.235294, 0.000000, 0.000000},{0.243137, 0.000000, 0.000000},{0.250980, 0.000000, 0.000000},{0.258824, 0.000000, 0.000000},{0.266667, 0.000000, 0.000000},{0.274510, 0.000000, 0.000000},{0.282353, 0.000000, 0.000000},{0.290196, 0.000000, 0.000000},{0.298039, 0.000000, 0.000000},{0.305882, 0.000000, 0.000000},{0.313725, 0.000000, 0.000000},{0.321569, 0.000000, 0.000000},{0.329412, 0.000000, 0.000000},{0.337255, 0.000000, 0.000000},{0.345098, 0.000000, 0.000000},{0.352941, 0.000000, 0.000000},{0.360784, 0.000000, 0.000000},{0.368627, 0.000000, 0.000000},{0.376471, 0.000000, 0.000000},{0.384314, 0.000000, 0.000000},{0.392157, 0.000000, 0.000000},{0.400000, 0.000000, 0.000000},{0.407843, 0.000000, 0.000000},{0.415686, 0.000000, 0.000000},{0.423529, 0.000000, 0.000000},{0.431373, 0.000000, 0.000000},{0.439216, 0.000000, 0.000000},{0.447059, 0.000000, 0.000000},{0.454902, 0.000000, 0.000000},{0.462745, 0.000000, 0.000000},{0.470588, 0.000000, 0.000000},{0.478431, 0.000000, 0.000000},{0.486275, 0.000000, 0.000000},{0.494118, 0.000000, 0.000000},{0.501961, 0.001961, 0.000000},{0.509804, 0.009804, 0.000000},{0.517647, 0.017647, 0.000000},{0.525490, 0.025490, 0.000000},{0.533333, 0.033333, 0.000000},{0.541176, 0.041176, 0.000000},{0.549020, 0.049020, 0.000000},{0.556863, 0.056863, 0.000000},{0.564706, 0.064706, 0.000000},{0.572549, 0.072549, 0.000000},{0.580392, 0.080392, 0.000000},{0.588235, 0.088235, 0.000000},{0.596078, 0.096078, 0.000000},{0.603922, 0.103922, 0.000000},{0.611765, 0.111765, 0.000000},{0.619608, 0.119608, 0.000000},{0.627451, 0.127451, 0.000000},{0.635294, 0.135294, 0.000000},{0.643137, 0.143137, 0.000000},{0.650980, 0.150980, 0.000000},{0.658824, 0.158824, 0.000000},{0.666667, 0.166667, 0.000000},{0.674510, 0.174510, 0.000000},{0.682353, 0.182353, 0.000000},{0.690196, 0.190196, 0.000000},{0.698039, 0.198039, 0.000000},{0.705882, 0.205882, 0.000000},{0.713725, 0.213725, 0.000000},{0.721569, 0.221569, 0.000000},{0.729412, 0.229412, 0.000000},{0.737255, 0.237255, 0.000000},{0.745098, 0.245098, 0.000000},{0.752941, 0.252941, 0.000000},{0.760784, 0.260784, 0.000000},{0.768627, 0.268627, 0.000000},{0.776471, 0.276471, 0.000000},{0.784314, 0.284314, 0.000000},{0.792157, 0.292157, 0.000000},{0.800000, 0.300000, 0.000000},{0.807843, 0.307843, 0.000000},{0.815686, 0.315686, 0.000000},{0.823529, 0.323529, 0.000000},{0.831373, 0.331373, 0.000000},{0.839216, 0.339216, 0.000000},{0.847059, 0.347059, 0.000000},{0.854902, 0.354902, 0.000000},{0.862745, 0.362745, 0.000000},{0.870588, 0.370588, 0.000000},{0.878431, 0.378431, 0.000000},{0.886275, 0.386275, 0.000000},{0.894118, 0.394118, 0.000000},{0.901961, 0.401961, 0.000000},{0.909804, 0.409804, 0.000000},{0.917647, 0.417647, 0.000000},{0.925490, 0.425490, 0.000000},{0.933333, 0.433333, 0.000000},{0.941176, 0.441176, 0.000000},{0.949020, 0.449020, 0.000000},{0.956863, 0.456863, 0.000000},{0.964706, 0.464706, 0.000000},{0.972549, 0.472549, 0.000000},{0.980392, 0.480392, 0.000000},{0.988235, 0.488235, 0.000000},{0.996078, 0.496078, 0.000000},{1.000000, 0.503922, 0.003922},{1.000000, 0.511765, 0.011765},{1.000000, 0.519608, 0.019608},{1.000000, 0.527451, 0.027451},{1.000000, 0.535294, 0.035294},{1.000000, 0.543137, 0.043137},{1.000000, 0.550980, 0.050980},{1.000000, 0.558824, 0.058824},{1.000000, 0.566667, 0.066667},{1.000000, 0.574510, 0.074510},{1.000000, 0.582353, 0.082353},{1.000000, 0.590196, 0.090196},{1.000000, 0.598039, 0.098039},{1.000000, 0.605882, 0.105882},{1.000000, 0.613725, 0.113725},{1.000000, 0.621569, 0.121569},{1.000000, 0.629412, 0.129412},{1.000000, 0.637255, 0.137255},{1.000000, 0.645098, 0.145098},{1.000000, 0.652941, 0.152941},{1.000000, 0.660784, 0.160784},{1.000000, 0.668627, 0.168627},{1.000000, 0.676471, 0.176471},{1.000000, 0.684314, 0.184314},{1.000000, 0.692157, 0.192157},{1.000000, 0.700000, 0.200000},{1.000000, 0.707843, 0.207843},{1.000000, 0.715686, 0.215686},{1.000000, 0.723529, 0.223529},{1.000000, 0.731373, 0.231373},{1.000000, 0.739216, 0.239216},{1.000000, 0.747059, 0.247059},{1.000000, 0.754902, 0.254902},{1.000000, 0.762745, 0.262745},{1.000000, 0.770588, 0.270588},{1.000000, 0.778431, 0.278431},{1.000000, 0.786275, 0.286275},{1.000000, 0.794118, 0.294118},{1.000000, 0.801961, 0.301961},{1.000000, 0.809804, 0.309804},{1.000000, 0.817647, 0.317647},{1.000000, 0.825490, 0.325490},{1.000000, 0.833333, 0.333333},{1.000000, 0.841176, 0.341176},{1.000000, 0.849020, 0.349020},{1.000000, 0.856863, 0.356863},{1.000000, 0.864706, 0.364706},{1.000000, 0.872549, 0.372549},{1.000000, 0.880392, 0.380392},{1.000000, 0.888235, 0.388235},{1.000000, 0.896078, 0.396078},{1.000000, 0.903922, 0.403922},{1.000000, 0.911765, 0.411765},{1.000000, 0.919608, 0.419608},{1.000000, 0.927451, 0.427451},{1.000000, 0.935294, 0.435294},{1.000000, 0.943137, 0.443137},{1.000000, 0.950980, 0.450980},{1.000000, 0.958824, 0.458824},{1.000000, 0.966667, 0.466667},{1.000000, 0.974510, 0.474510},{1.000000, 0.982353, 0.482353},{1.000000, 0.990196, 0.490196},{1.000000, 0.998039, 0.498039},{1.000000, 1.000000, 0.505882},{1.000000, 1.000000, 0.513725},{1.000000, 1.000000, 0.521569},{1.000000, 1.000000, 0.529412},{1.000000, 1.000000, 0.537255},{1.000000, 1.000000, 0.545098},{1.000000, 1.000000, 0.552941},{1.000000, 1.000000, 0.560784},{1.000000, 1.000000, 0.568627},{1.000000, 1.000000, 0.576471},{1.000000, 1.000000, 0.584314},{1.000000, 1.000000, 0.592157},{1.000000, 1.000000, 0.600000},{1.000000, 1.000000, 0.607843},{1.000000, 1.000000, 0.615686},{1.000000, 1.000000, 0.623529},{1.000000, 1.000000, 0.631373},{1.000000, 1.000000, 0.639216},{1.000000, 1.000000, 0.647059},{1.000000, 1.000000, 0.654902},{1.000000, 1.000000, 0.662745},{1.000000, 1.000000, 0.670588},{1.000000, 1.000000, 0.678431},{1.000000, 1.000000, 0.686275},{1.000000, 1.000000, 0.694118},{1.000000, 1.000000, 0.701961},{1.000000, 1.000000, 0.709804},{1.000000, 1.000000, 0.717647},{1.000000, 1.000000, 0.725490},{1.000000, 1.000000, 0.733333},{1.000000, 1.000000, 0.741176},{1.000000, 1.000000, 0.749020},{1.000000, 1.000000, 0.756863},{1.000000, 1.000000, 0.764706},{1.000000, 1.000000, 0.772549},{1.000000, 1.000000, 0.780392},{1.000000, 1.000000, 0.788235},{1.000000, 1.000000, 0.796078},{1.000000, 1.000000, 0.803922},{1.000000, 1.000000, 0.811765},{1.000000, 1.000000, 0.819608},{1.000000, 1.000000, 0.827451},{1.000000, 1.000000, 0.835294},{1.000000, 1.000000, 0.843137},{1.000000, 1.000000, 0.850980},{1.000000, 1.000000, 0.858824},{1.000000, 1.000000, 0.866667},{1.000000, 1.000000, 0.874510},{1.000000, 1.000000, 0.882353},{1.000000, 1.000000, 0.890196},{1.000000, 1.000000, 0.898039},{1.000000, 1.000000, 0.905882},{1.000000, 1.000000, 0.913725},{1.000000, 1.000000, 0.921569},{1.000000, 1.000000, 0.929412},{1.000000, 1.000000, 0.937255},{1.000000, 1.000000, 0.945098},{1.000000, 1.000000, 0.952941},{1.000000, 1.000000, 0.960784},{1.000000, 1.000000, 0.968627},{1.000000, 1.000000, 0.976471},{1.000000, 1.000000, 0.984314},{1.000000, 1.000000, 0.992157},{1.000000, 1.000000, 1.000000}}}, + {"copper", {{0.000000, 0.000000, 0.000000},{0.004844, 0.003064, 0.001951},{0.009689, 0.006127, 0.003902},{0.014533, 0.009191, 0.005853},{0.019377, 0.012254, 0.007804},{0.024221, 0.015318, 0.009755},{0.029066, 0.018381, 0.011706},{0.033910, 0.021445, 0.013657},{0.038754, 0.024508, 0.015608},{0.043599, 0.027572, 0.017559},{0.048443, 0.030635, 0.019510},{0.053287, 0.033699, 0.021461},{0.058131, 0.036762, 0.023412},{0.062976, 0.039826, 0.025363},{0.067820, 0.042889, 0.027314},{0.072664, 0.045953, 0.029265},{0.077509, 0.049016, 0.031216},{0.082353, 0.052080, 0.033167},{0.087197, 0.055144, 0.035118},{0.092042, 0.058207, 0.037069},{0.096886, 0.061271, 0.039020},{0.101730, 0.064334, 0.040971},{0.106574, 0.067398, 0.042922},{0.111419, 0.070461, 0.044873},{0.116263, 0.073525, 0.046824},{0.121107, 0.076588, 0.048775},{0.125952, 0.079652, 0.050725},{0.130796, 0.082715, 0.052676},{0.135640, 0.085779, 0.054627},{0.140484, 0.088842, 0.056578},{0.145329, 0.091906, 0.058529},{0.150173, 0.094969, 0.060480},{0.155017, 0.098033, 0.062431},{0.159862, 0.101096, 0.064382},{0.164706, 0.104160, 0.066333},{0.169550, 0.107224, 0.068284},{0.174394, 0.110287, 0.070235},{0.179239, 0.113351, 0.072186},{0.184083, 0.116414, 0.074137},{0.188927, 0.119478, 0.076088},{0.193772, 0.122541, 0.078039},{0.198616, 0.125605, 0.079990},{0.203460, 0.128668, 0.081941},{0.208304, 0.131732, 0.083892},{0.213149, 0.134795, 0.085843},{0.217993, 0.137859, 0.087794},{0.222837, 0.140922, 0.089745},{0.227682, 0.143986, 0.091696},{0.232526, 0.147049, 0.093647},{0.237370, 0.150113, 0.095598},{0.242214, 0.153176, 0.097549},{0.247059, 0.156240, 0.099500},{0.251903, 0.159304, 0.101451},{0.256747, 0.162367, 0.103402},{0.261592, 0.165431, 0.105353},{0.266436, 0.168494, 0.107304},{0.271280, 0.171558, 0.109255},{0.276125, 0.174621, 0.111206},{0.280969, 0.177685, 0.113157},{0.285813, 0.180748, 0.115108},{0.290657, 0.183812, 0.117059},{0.295502, 0.186875, 0.119010},{0.300346, 0.189939, 0.120961},{0.305190, 0.193002, 0.122912},{0.310035, 0.196066, 0.124863},{0.314879, 0.199129, 0.126814},{0.319723, 0.202193, 0.128765},{0.324567, 0.205256, 0.130716},{0.329412, 0.208320, 0.132667},{0.334256, 0.211384, 0.134618},{0.339100, 0.214447, 0.136569},{0.343945, 0.217511, 0.138520},{0.348789, 0.220574, 0.140471},{0.353633, 0.223638, 0.142422},{0.358477, 0.226701, 0.144373},{0.363322, 0.229765, 0.146324},{0.368166, 0.232828, 0.148275},{0.373010, 0.235892, 0.150225},{0.377855, 0.238955, 0.152176},{0.382699, 0.242019, 0.154127},{0.387543, 0.245082, 0.156078},{0.392387, 0.248146, 0.158029},{0.397232, 0.251209, 0.159980},{0.402076, 0.254273, 0.161931},{0.406920, 0.257336, 0.163882},{0.411765, 0.260400, 0.165833},{0.416609, 0.263464, 0.167784},{0.421453, 0.266527, 0.169735},{0.426297, 0.269591, 0.171686},{0.431142, 0.272654, 0.173637},{0.435986, 0.275718, 0.175588},{0.440830, 0.278781, 0.177539},{0.445675, 0.281845, 0.179490},{0.450519, 0.284908, 0.181441},{0.455363, 0.287972, 0.183392},{0.460208, 0.291035, 0.185343},{0.465052, 0.294099, 0.187294},{0.469896, 0.297162, 0.189245},{0.474740, 0.300226, 0.191196},{0.479585, 0.303289, 0.193147},{0.484429, 0.306353, 0.195098},{0.489273, 0.309416, 0.197049},{0.494118, 0.312480, 0.199000},{0.498962, 0.315544, 0.200951},{0.503806, 0.318607, 0.202902},{0.508650, 0.321671, 0.204853},{0.513495, 0.324734, 0.206804},{0.518339, 0.327798, 0.208755},{0.523183, 0.330861, 0.210706},{0.528028, 0.333925, 0.212657},{0.532872, 0.336988, 0.214608},{0.537716, 0.340052, 0.216559},{0.542560, 0.343115, 0.218510},{0.547405, 0.346179, 0.220461},{0.552249, 0.349242, 0.222412},{0.557093, 0.352306, 0.224363},{0.561938, 0.355369, 0.226314},{0.566782, 0.358433, 0.228265},{0.571626, 0.361496, 0.230216},{0.576470, 0.364560, 0.232167},{0.581315, 0.367624, 0.234118},{0.586159, 0.370687, 0.236069},{0.591003, 0.373751, 0.238020},{0.595848, 0.376814, 0.239971},{0.600692, 0.379878, 0.241922},{0.605536, 0.382941, 0.243873},{0.610380, 0.386005, 0.245824},{0.615225, 0.389068, 0.247775},{0.620069, 0.392132, 0.249725},{0.624913, 0.395195, 0.251676},{0.629758, 0.398259, 0.253627},{0.634602, 0.401322, 0.255578},{0.639446, 0.404386, 0.257529},{0.644291, 0.407449, 0.259480},{0.649135, 0.410513, 0.261431},{0.653979, 0.413576, 0.263382},{0.658823, 0.416640, 0.265333},{0.663668, 0.419704, 0.267284},{0.668512, 0.422767, 0.269235},{0.673356, 0.425831, 0.271186},{0.678201, 0.428894, 0.273137},{0.683045, 0.431958, 0.275088},{0.687889, 0.435021, 0.277039},{0.692733, 0.438085, 0.278990},{0.697578, 0.441148, 0.280941},{0.702422, 0.444212, 0.282892},{0.707266, 0.447275, 0.284843},{0.712111, 0.450339, 0.286794},{0.716955, 0.453402, 0.288745},{0.721799, 0.456466, 0.290696},{0.726643, 0.459529, 0.292647},{0.731488, 0.462593, 0.294598},{0.736332, 0.465656, 0.296549},{0.741176, 0.468720, 0.298500},{0.746021, 0.471784, 0.300451},{0.750865, 0.474847, 0.302402},{0.755709, 0.477911, 0.304353},{0.760553, 0.480974, 0.306304},{0.765398, 0.484038, 0.308255},{0.770242, 0.487101, 0.310206},{0.775086, 0.490165, 0.312157},{0.779931, 0.493228, 0.314108},{0.784775, 0.496292, 0.316059},{0.789619, 0.499355, 0.318010},{0.794463, 0.502419, 0.319961},{0.799308, 0.505482, 0.321912},{0.804152, 0.508546, 0.323863},{0.808996, 0.511609, 0.325814},{0.813841, 0.514673, 0.327765},{0.818685, 0.517736, 0.329716},{0.823529, 0.520800, 0.331667},{0.828374, 0.523864, 0.333618},{0.833218, 0.526927, 0.335569},{0.838062, 0.529991, 0.337520},{0.842906, 0.533054, 0.339471},{0.847751, 0.536118, 0.341422},{0.852595, 0.539181, 0.343373},{0.857439, 0.542245, 0.345324},{0.862284, 0.545308, 0.347275},{0.867128, 0.548372, 0.349225},{0.871972, 0.551435, 0.351176},{0.876816, 0.554499, 0.353127},{0.881661, 0.557562, 0.355078},{0.886505, 0.560626, 0.357029},{0.891349, 0.563689, 0.358980},{0.896194, 0.566753, 0.360931},{0.901038, 0.569816, 0.362882},{0.905882, 0.572880, 0.364833},{0.910726, 0.575944, 0.366784},{0.915571, 0.579007, 0.368735},{0.920415, 0.582071, 0.370686},{0.925259, 0.585134, 0.372637},{0.930104, 0.588198, 0.374588},{0.934948, 0.591261, 0.376539},{0.939792, 0.594325, 0.378490},{0.944636, 0.597388, 0.380441},{0.949481, 0.600452, 0.382392},{0.954325, 0.603515, 0.384343},{0.959169, 0.606579, 0.386294},{0.964014, 0.609642, 0.388245},{0.968858, 0.612706, 0.390196},{0.973702, 0.615769, 0.392147},{0.978546, 0.618833, 0.394098},{0.983391, 0.621896, 0.396049},{0.988235, 0.624960, 0.398000},{0.993079, 0.628024, 0.399951},{0.997924, 0.631087, 0.401902},{1.000000, 0.634151, 0.403853},{1.000000, 0.637214, 0.405804},{1.000000, 0.640278, 0.407755},{1.000000, 0.643341, 0.409706},{1.000000, 0.646405, 0.411657},{1.000000, 0.649468, 0.413608},{1.000000, 0.652532, 0.415559},{1.000000, 0.655595, 0.417510},{1.000000, 0.658659, 0.419461},{1.000000, 0.661722, 0.421412},{1.000000, 0.664786, 0.423363},{1.000000, 0.667849, 0.425314},{1.000000, 0.670913, 0.427265},{1.000000, 0.673976, 0.429216},{1.000000, 0.677040, 0.431167},{1.000000, 0.680104, 0.433118},{1.000000, 0.683167, 0.435069},{1.000000, 0.686231, 0.437020},{1.000000, 0.689294, 0.438971},{1.000000, 0.692358, 0.440922},{1.000000, 0.695421, 0.442873},{1.000000, 0.698485, 0.444824},{1.000000, 0.701548, 0.446775},{1.000000, 0.704612, 0.448725},{1.000000, 0.707675, 0.450676},{1.000000, 0.710739, 0.452627},{1.000000, 0.713802, 0.454578},{1.000000, 0.716866, 0.456529},{1.000000, 0.719929, 0.458480},{1.000000, 0.722993, 0.460431},{1.000000, 0.726056, 0.462382},{1.000000, 0.729120, 0.464333},{1.000000, 0.732184, 0.466284},{1.000000, 0.735247, 0.468235},{1.000000, 0.738311, 0.470186},{1.000000, 0.741374, 0.472137},{1.000000, 0.744438, 0.474088},{1.000000, 0.747501, 0.476039},{1.000000, 0.750565, 0.477990},{1.000000, 0.753628, 0.479941},{1.000000, 0.756692, 0.481892},{1.000000, 0.759755, 0.483843},{1.000000, 0.762819, 0.485794},{1.000000, 0.765882, 0.487745},{1.000000, 0.768946, 0.489696},{1.000000, 0.772009, 0.491647},{1.000000, 0.775073, 0.493598},{1.000000, 0.778136, 0.495549},{1.000000, 0.781200, 0.497500}}}, + {"coolwarm", {{0.229806, 0.298718, 0.753683},{0.234377, 0.305542, 0.759680},{0.238948, 0.312365, 0.765676},{0.243520, 0.319189, 0.771672},{0.248091, 0.326013, 0.777669},{0.252663, 0.332837, 0.783665},{0.257234, 0.339661, 0.789661},{0.261805, 0.346484, 0.795658},{0.266381, 0.353304, 0.801637},{0.271104, 0.360011, 0.807095},{0.275827, 0.366717, 0.812553},{0.280550, 0.373423, 0.818011},{0.285273, 0.380129, 0.823469},{0.289996, 0.386836, 0.828926},{0.294718, 0.393542, 0.834384},{0.299441, 0.400248, 0.839842},{0.304174, 0.406945, 0.845263},{0.309060, 0.413498, 0.850128},{0.313946, 0.420052, 0.854993},{0.318832, 0.426605, 0.859857},{0.323718, 0.433158, 0.864722},{0.328604, 0.439712, 0.869587},{0.333490, 0.446265, 0.874452},{0.338377, 0.452819, 0.879317},{0.343278, 0.459354, 0.884122},{0.348323, 0.465711, 0.888346},{0.353369, 0.472069, 0.892570},{0.358415, 0.478426, 0.896795},{0.363461, 0.484784, 0.901019},{0.368507, 0.491141, 0.905243},{0.373552, 0.497499, 0.909467},{0.378598, 0.503856, 0.913692},{0.383662, 0.510183, 0.917831},{0.388852, 0.516298, 0.921373},{0.394042, 0.522413, 0.924916},{0.399231, 0.528528, 0.928459},{0.404421, 0.534643, 0.932002},{0.409611, 0.540759, 0.935545},{0.414801, 0.546874, 0.939088},{0.419991, 0.552989, 0.942630},{0.425199, 0.559058, 0.946061},{0.430507, 0.564883, 0.948889},{0.435815, 0.570707, 0.951717},{0.441123, 0.576532, 0.954545},{0.446431, 0.582356, 0.957373},{0.451739, 0.588181, 0.960201},{0.457046, 0.594006, 0.963029},{0.462354, 0.599830, 0.965857},{0.467678, 0.605591, 0.968546},{0.473070, 0.611077, 0.970634},{0.478462, 0.616564, 0.972721},{0.483854, 0.622050, 0.974808},{0.489246, 0.627536, 0.976896},{0.494638, 0.633022, 0.978983},{0.500031, 0.638508, 0.981070},{0.505423, 0.643995, 0.983157},{0.510824, 0.649397, 0.985079},{0.516260, 0.654498, 0.986407},{0.521696, 0.659599, 0.987736},{0.527132, 0.664700, 0.989065},{0.532568, 0.669801, 0.990393},{0.538004, 0.674902, 0.991722},{0.543440, 0.680003, 0.993051},{0.548876, 0.685104, 0.994379},{0.554312, 0.690097, 0.995516},{0.559747, 0.694768, 0.996075},{0.565182, 0.699438, 0.996635},{0.570616, 0.704109, 0.997195},{0.576051, 0.708780, 0.997755},{0.581486, 0.713451, 0.998314},{0.586921, 0.718121, 0.998874},{0.592356, 0.722792, 0.999434},{0.597777, 0.727330, 0.999777},{0.603162, 0.731527, 0.999565},{0.608547, 0.735725, 0.999354},{0.613933, 0.739923, 0.999142},{0.619318, 0.744121, 0.998931},{0.624703, 0.748318, 0.998719},{0.630089, 0.752516, 0.998508},{0.635474, 0.756714, 0.998297},{0.640828, 0.760752, 0.997846},{0.646113, 0.764436, 0.996868},{0.651398, 0.768121, 0.995891},{0.656683, 0.771806, 0.994914},{0.661968, 0.775491, 0.993937},{0.667253, 0.779176, 0.992959},{0.672538, 0.782861, 0.991982},{0.677823, 0.786546, 0.991005},{0.683056, 0.790043, 0.989768},{0.688188, 0.793178, 0.988038},{0.693321, 0.796314, 0.986308},{0.698454, 0.799450, 0.984577},{0.703587, 0.802586, 0.982847},{0.708720, 0.805721, 0.981117},{0.713852, 0.808857, 0.979386},{0.718985, 0.811993, 0.977656},{0.724041, 0.814910, 0.975651},{0.728970, 0.817464, 0.973188},{0.733898, 0.820018, 0.970724},{0.738826, 0.822572, 0.968261},{0.743754, 0.825125, 0.965798},{0.748682, 0.827679, 0.963334},{0.753611, 0.830233, 0.960871},{0.758539, 0.832787, 0.958408},{0.763363, 0.835092, 0.955658},{0.768034, 0.837035, 0.952488},{0.772706, 0.838978, 0.949319},{0.777378, 0.840921, 0.946149},{0.782049, 0.842864, 0.942980},{0.786721, 0.844807, 0.939810},{0.791392, 0.846750, 0.936641},{0.796064, 0.848693, 0.933471},{0.800601, 0.850358, 0.930008},{0.804965, 0.851666, 0.926165},{0.809329, 0.852974, 0.922323},{0.813693, 0.854282, 0.918480},{0.818056, 0.855590, 0.914638},{0.822420, 0.856898, 0.910795},{0.826784, 0.858205, 0.906953},{0.831148, 0.859513, 0.903110},{0.835345, 0.860514, 0.898970},{0.839351, 0.861167, 0.894494},{0.843358, 0.861820, 0.890017},{0.847365, 0.862472, 0.885540},{0.851372, 0.863125, 0.881064},{0.855378, 0.863778, 0.876587},{0.859385, 0.864431, 0.872111},{0.863392, 0.865084, 0.867634},{0.867428, 0.864377, 0.862602},{0.871493, 0.862309, 0.857016},{0.875557, 0.860242, 0.851430},{0.879622, 0.858175, 0.845844},{0.883687, 0.856108, 0.840258},{0.887752, 0.854040, 0.834671},{0.891817, 0.851973, 0.829085},{0.895882, 0.849906, 0.823499},{0.899543, 0.847500, 0.817789},{0.902849, 0.844796, 0.811970},{0.906154, 0.842091, 0.806151},{0.909460, 0.839386, 0.800331},{0.912765, 0.836682, 0.794512},{0.916071, 0.833977, 0.788693},{0.919376, 0.831273, 0.782874},{0.922681, 0.828568, 0.777054},{0.925563, 0.825517, 0.771136},{0.928116, 0.822197, 0.765141},{0.930669, 0.818877, 0.759146},{0.933221, 0.815557, 0.753151},{0.935774, 0.812237, 0.747156},{0.938326, 0.808917, 0.741162},{0.940879, 0.805596, 0.735167},{0.943432, 0.802276, 0.729172},{0.945540, 0.798606, 0.723105},{0.947345, 0.794696, 0.716991},{0.949151, 0.790785, 0.710876},{0.950956, 0.786875, 0.704761},{0.952761, 0.782965, 0.698646},{0.954566, 0.779055, 0.692531},{0.956371, 0.775144, 0.686416},{0.958176, 0.771234, 0.680301},{0.959518, 0.766973, 0.674145},{0.960581, 0.762501, 0.667964},{0.961645, 0.758029, 0.661782},{0.962708, 0.753557, 0.655601},{0.963772, 0.749086, 0.649420},{0.964835, 0.744614, 0.643239},{0.965899, 0.740142, 0.637058},{0.966962, 0.735670, 0.630877},{0.967544, 0.730850, 0.624685},{0.967874, 0.725847, 0.618489},{0.968203, 0.720844, 0.612293},{0.968533, 0.715841, 0.606097},{0.968863, 0.710838, 0.599901},{0.969192, 0.705836, 0.593704},{0.969522, 0.700833, 0.587508},{0.969851, 0.695830, 0.581312},{0.969683, 0.690484, 0.575138},{0.969289, 0.684982, 0.568975},{0.968894, 0.679480, 0.562812},{0.968500, 0.673977, 0.556649},{0.968105, 0.668475, 0.550486},{0.967711, 0.662973, 0.544323},{0.967317, 0.657471, 0.538160},{0.966922, 0.651969, 0.531997},{0.966017, 0.646130, 0.525890},{0.964911, 0.640159, 0.519806},{0.963806, 0.634188, 0.513721},{0.962701, 0.628218, 0.507636},{0.961595, 0.622247, 0.501551},{0.960490, 0.616276, 0.495467},{0.959385, 0.610306, 0.489382},{0.958279, 0.604335, 0.483297},{0.956653, 0.598034, 0.477302},{0.954853, 0.591622, 0.471337},{0.953054, 0.585211, 0.465373},{0.951254, 0.578799, 0.459408},{0.949454, 0.572388, 0.453443},{0.947654, 0.565976, 0.447478},{0.945854, 0.559565, 0.441513},{0.944055, 0.553153, 0.435548},{0.941728, 0.546413, 0.429707},{0.939254, 0.539581, 0.423900},{0.936780, 0.532750, 0.418093},{0.934305, 0.525918, 0.412286},{0.931831, 0.519086, 0.406480},{0.929357, 0.512254, 0.400673},{0.926883, 0.505422, 0.394866},{0.924409, 0.498590, 0.389059},{0.921406, 0.491420, 0.383408},{0.918282, 0.484173, 0.377794},{0.915157, 0.476927, 0.372179},{0.912033, 0.469680, 0.366565},{0.908908, 0.462433, 0.360950},{0.905783, 0.455186, 0.355336},{0.902659, 0.447939, 0.349721},{0.899534, 0.440692, 0.344107},{0.895885, 0.433075, 0.338681},{0.892138, 0.425389, 0.333289},{0.888390, 0.417703, 0.327898},{0.884643, 0.410017, 0.322507},{0.880896, 0.402331, 0.317115},{0.877149, 0.394645, 0.311724},{0.873402, 0.386960, 0.306332},{0.869655, 0.379274, 0.300941},{0.865391, 0.371128, 0.295769},{0.861054, 0.362916, 0.290628},{0.856716, 0.354704, 0.285487},{0.852378, 0.346492, 0.280346},{0.848040, 0.338280, 0.275206},{0.843703, 0.330068, 0.270065},{0.839365, 0.321856, 0.264924},{0.835027, 0.313644, 0.259783},{0.830187, 0.304733, 0.254891},{0.825294, 0.295749, 0.250025},{0.820401, 0.286765, 0.245160},{0.815508, 0.277781, 0.240294},{0.810616, 0.268797, 0.235428},{0.805723, 0.259813, 0.230562},{0.800830, 0.250829, 0.225696},{0.795938, 0.241845, 0.220830},{0.790562, 0.231397, 0.216242},{0.785153, 0.220851, 0.211673},{0.779745, 0.210305, 0.207104},{0.774337, 0.199759, 0.202535},{0.768929, 0.189213, 0.197965},{0.763520, 0.178667, 0.193396},{0.758112, 0.168122, 0.188827},{0.752704, 0.157576, 0.184258},{0.746838, 0.140021, 0.179996},{0.740957, 0.122240, 0.175744},{0.735077, 0.104460, 0.171492},{0.729196, 0.086679, 0.167240},{0.723315, 0.068898, 0.162989},{0.717435, 0.051118, 0.158737},{0.711554, 0.033337, 0.154485},{0.705673, 0.015556, 0.150233}}}, + {"jet", {{0.000000, 0.000000, 0.500000},{0.000000, 0.000000, 0.517825},{0.000000, 0.000000, 0.535651},{0.000000, 0.000000, 0.553476},{0.000000, 0.000000, 0.571301},{0.000000, 0.000000, 0.589127},{0.000000, 0.000000, 0.606952},{0.000000, 0.000000, 0.624777},{0.000000, 0.000000, 0.642602},{0.000000, 0.000000, 0.660428},{0.000000, 0.000000, 0.678253},{0.000000, 0.000000, 0.696078},{0.000000, 0.000000, 0.713904},{0.000000, 0.000000, 0.731729},{0.000000, 0.000000, 0.749554},{0.000000, 0.000000, 0.767380},{0.000000, 0.000000, 0.785205},{0.000000, 0.000000, 0.803030},{0.000000, 0.000000, 0.820856},{0.000000, 0.000000, 0.838681},{0.000000, 0.000000, 0.856506},{0.000000, 0.000000, 0.874332},{0.000000, 0.000000, 0.892157},{0.000000, 0.000000, 0.909982},{0.000000, 0.000000, 0.927807},{0.000000, 0.000000, 0.945633},{0.000000, 0.000000, 0.963458},{0.000000, 0.000000, 0.981283},{0.000000, 0.000000, 0.999109},{0.000000, 0.000000, 1.000000},{0.000000, 0.000000, 1.000000},{0.000000, 0.000000, 1.000000},{0.000000, 0.001961, 1.000000},{0.000000, 0.017647, 1.000000},{0.000000, 0.033333, 1.000000},{0.000000, 0.049020, 1.000000},{0.000000, 0.064706, 1.000000},{0.000000, 0.080392, 1.000000},{0.000000, 0.096078, 1.000000},{0.000000, 0.111765, 1.000000},{0.000000, 0.127451, 1.000000},{0.000000, 0.143137, 1.000000},{0.000000, 0.158824, 1.000000},{0.000000, 0.174510, 1.000000},{0.000000, 0.190196, 1.000000},{0.000000, 0.205882, 1.000000},{0.000000, 0.221569, 1.000000},{0.000000, 0.237255, 1.000000},{0.000000, 0.252941, 1.000000},{0.000000, 0.268627, 1.000000},{0.000000, 0.284314, 1.000000},{0.000000, 0.300000, 1.000000},{0.000000, 0.315686, 1.000000},{0.000000, 0.331373, 1.000000},{0.000000, 0.347059, 1.000000},{0.000000, 0.362745, 1.000000},{0.000000, 0.378431, 1.000000},{0.000000, 0.394118, 1.000000},{0.000000, 0.409804, 1.000000},{0.000000, 0.425490, 1.000000},{0.000000, 0.441176, 1.000000},{0.000000, 0.456863, 1.000000},{0.000000, 0.472549, 1.000000},{0.000000, 0.488235, 1.000000},{0.000000, 0.503922, 1.000000},{0.000000, 0.519608, 1.000000},{0.000000, 0.535294, 1.000000},{0.000000, 0.550980, 1.000000},{0.000000, 0.566667, 1.000000},{0.000000, 0.582353, 1.000000},{0.000000, 0.598039, 1.000000},{0.000000, 0.613725, 1.000000},{0.000000, 0.629412, 1.000000},{0.000000, 0.645098, 1.000000},{0.000000, 0.660784, 1.000000},{0.000000, 0.676471, 1.000000},{0.000000, 0.692157, 1.000000},{0.000000, 0.707843, 1.000000},{0.000000, 0.723529, 1.000000},{0.000000, 0.739216, 1.000000},{0.000000, 0.754902, 1.000000},{0.000000, 0.770588, 1.000000},{0.000000, 0.786275, 1.000000},{0.000000, 0.801961, 1.000000},{0.000000, 0.817647, 1.000000},{0.000000, 0.833333, 1.000000},{0.000000, 0.849020, 1.000000},{0.000000, 0.864706, 0.996205},{0.000000, 0.880392, 0.983555},{0.000000, 0.896078, 0.970904},{0.009488, 0.911765, 0.958254},{0.022138, 0.927451, 0.945604},{0.034788, 0.943137, 0.932954},{0.047438, 0.958824, 0.920304},{0.060089, 0.974510, 0.907653},{0.072739, 0.990196, 0.895003},{0.085389, 1.000000, 0.882353},{0.098039, 1.000000, 0.869703},{0.110689, 1.000000, 0.857052},{0.123340, 1.000000, 0.844402},{0.135990, 1.000000, 0.831752},{0.148640, 1.000000, 0.819102},{0.161290, 1.000000, 0.806452},{0.173941, 1.000000, 0.793801},{0.186591, 1.000000, 0.781151},{0.199241, 1.000000, 0.768501},{0.211891, 1.000000, 0.755851},{0.224541, 1.000000, 0.743201},{0.237192, 1.000000, 0.730550},{0.249842, 1.000000, 0.717900},{0.262492, 1.000000, 0.705250},{0.275142, 1.000000, 0.692600},{0.287793, 1.000000, 0.679949},{0.300443, 1.000000, 0.667299},{0.313093, 1.000000, 0.654649},{0.325743, 1.000000, 0.641999},{0.338393, 1.000000, 0.629349},{0.351044, 1.000000, 0.616698},{0.363694, 1.000000, 0.604048},{0.376344, 1.000000, 0.591398},{0.388994, 1.000000, 0.578748},{0.401645, 1.000000, 0.566097},{0.414295, 1.000000, 0.553447},{0.426945, 1.000000, 0.540797},{0.439595, 1.000000, 0.528147},{0.452245, 1.000000, 0.515497},{0.464896, 1.000000, 0.502846},{0.477546, 1.000000, 0.490196},{0.490196, 1.000000, 0.477546},{0.502846, 1.000000, 0.464896},{0.515497, 1.000000, 0.452245},{0.528147, 1.000000, 0.439595},{0.540797, 1.000000, 0.426945},{0.553447, 1.000000, 0.414295},{0.566097, 1.000000, 0.401645},{0.578748, 1.000000, 0.388994},{0.591398, 1.000000, 0.376344},{0.604048, 1.000000, 0.363694},{0.616698, 1.000000, 0.351044},{0.629349, 1.000000, 0.338393},{0.641999, 1.000000, 0.325743},{0.654649, 1.000000, 0.313093},{0.667299, 1.000000, 0.300443},{0.679949, 1.000000, 0.287793},{0.692600, 1.000000, 0.275142},{0.705250, 1.000000, 0.262492},{0.717900, 1.000000, 0.249842},{0.730550, 1.000000, 0.237192},{0.743201, 1.000000, 0.224541},{0.755851, 1.000000, 0.211891},{0.768501, 1.000000, 0.199241},{0.781151, 1.000000, 0.186591},{0.793801, 1.000000, 0.173941},{0.806452, 1.000000, 0.161290},{0.819102, 1.000000, 0.148640},{0.831752, 1.000000, 0.135990},{0.844402, 1.000000, 0.123340},{0.857052, 1.000000, 0.110689},{0.869703, 1.000000, 0.098039},{0.882353, 1.000000, 0.085389},{0.895003, 1.000000, 0.072739},{0.907653, 1.000000, 0.060089},{0.920304, 1.000000, 0.047438},{0.932954, 1.000000, 0.034788},{0.945604, 0.988381, 0.022138},{0.958254, 0.973856, 0.009488},{0.970904, 0.959332, 0.000000},{0.983555, 0.944808, 0.000000},{0.996205, 0.930283, 0.000000},{1.000000, 0.915759, 0.000000},{1.000000, 0.901235, 0.000000},{1.000000, 0.886710, 0.000000},{1.000000, 0.872186, 0.000000},{1.000000, 0.857662, 0.000000},{1.000000, 0.843137, 0.000000},{1.000000, 0.828613, 0.000000},{1.000000, 0.814089, 0.000000},{1.000000, 0.799564, 0.000000},{1.000000, 0.785040, 0.000000},{1.000000, 0.770516, 0.000000},{1.000000, 0.755991, 0.000000},{1.000000, 0.741467, 0.000000},{1.000000, 0.726943, 0.000000},{1.000000, 0.712418, 0.000000},{1.000000, 0.697894, 0.000000},{1.000000, 0.683370, 0.000000},{1.000000, 0.668845, 0.000000},{1.000000, 0.654321, 0.000000},{1.000000, 0.639797, 0.000000},{1.000000, 0.625272, 0.000000},{1.000000, 0.610748, 0.000000},{1.000000, 0.596224, 0.000000},{1.000000, 0.581699, 0.000000},{1.000000, 0.567175, 0.000000},{1.000000, 0.552651, 0.000000},{1.000000, 0.538126, 0.000000},{1.000000, 0.523602, 0.000000},{1.000000, 0.509078, 0.000000},{1.000000, 0.494553, 0.000000},{1.000000, 0.480029, 0.000000},{1.000000, 0.465505, 0.000000},{1.000000, 0.450980, 0.000000},{1.000000, 0.436456, 0.000000},{1.000000, 0.421932, 0.000000},{1.000000, 0.407407, 0.000000},{1.000000, 0.392883, 0.000000},{1.000000, 0.378359, 0.000000},{1.000000, 0.363834, 0.000000},{1.000000, 0.349310, 0.000000},{1.000000, 0.334786, 0.000000},{1.000000, 0.320261, 0.000000},{1.000000, 0.305737, 0.000000},{1.000000, 0.291213, 0.000000},{1.000000, 0.276688, 0.000000},{1.000000, 0.262164, 0.000000},{1.000000, 0.247640, 0.000000},{1.000000, 0.233115, 0.000000},{1.000000, 0.218591, 0.000000},{1.000000, 0.204067, 0.000000},{1.000000, 0.189542, 0.000000},{1.000000, 0.175018, 0.000000},{1.000000, 0.160494, 0.000000},{1.000000, 0.145969, 0.000000},{1.000000, 0.131445, 0.000000},{1.000000, 0.116921, 0.000000},{1.000000, 0.102397, 0.000000},{1.000000, 0.087872, 0.000000},{0.999109, 0.073348, 0.000000},{0.981283, 0.058824, 0.000000},{0.963458, 0.044299, 0.000000},{0.945633, 0.029775, 0.000000},{0.927807, 0.015251, 0.000000},{0.909982, 0.000726, 0.000000},{0.892157, 0.000000, 0.000000},{0.874332, 0.000000, 0.000000},{0.856506, 0.000000, 0.000000},{0.838681, 0.000000, 0.000000},{0.820856, 0.000000, 0.000000},{0.803030, 0.000000, 0.000000},{0.785205, 0.000000, 0.000000},{0.767380, 0.000000, 0.000000},{0.749554, 0.000000, 0.000000},{0.731729, 0.000000, 0.000000},{0.713904, 0.000000, 0.000000},{0.696078, 0.000000, 0.000000},{0.678253, 0.000000, 0.000000},{0.660428, 0.000000, 0.000000},{0.642602, 0.000000, 0.000000},{0.624777, 0.000000, 0.000000},{0.606952, 0.000000, 0.000000},{0.589127, 0.000000, 0.000000},{0.571301, 0.000000, 0.000000},{0.553476, 0.000000, 0.000000},{0.535651, 0.000000, 0.000000},{0.517825, 0.000000, 0.000000},{0.500000, 0.000000, 0.000000}}}, + {"cmrmap", {{0.000000, 0.000000, 0.000000},{0.004706, 0.004706, 0.015686},{0.009412, 0.009412, 0.031373},{0.014118, 0.014118, 0.047059},{0.018824, 0.018824, 0.062745},{0.023529, 0.023529, 0.078431},{0.028235, 0.028235, 0.094118},{0.032941, 0.032941, 0.109804},{0.037647, 0.037647, 0.125490},{0.042353, 0.042353, 0.141176},{0.047059, 0.047059, 0.156863},{0.051765, 0.051765, 0.172549},{0.056471, 0.056471, 0.188235},{0.061176, 0.061176, 0.203922},{0.065882, 0.065882, 0.219608},{0.070588, 0.070588, 0.235294},{0.075294, 0.075294, 0.250980},{0.080000, 0.080000, 0.266667},{0.084706, 0.084706, 0.282353},{0.089412, 0.089412, 0.298039},{0.094118, 0.094118, 0.313725},{0.098824, 0.098824, 0.329412},{0.103529, 0.103529, 0.345098},{0.108235, 0.108235, 0.360784},{0.112941, 0.112941, 0.376471},{0.117647, 0.117647, 0.392157},{0.122353, 0.122353, 0.407843},{0.127059, 0.127059, 0.423529},{0.131765, 0.131765, 0.439216},{0.136471, 0.136471, 0.454902},{0.141176, 0.141176, 0.470588},{0.145882, 0.145882, 0.486275},{0.150588, 0.150000, 0.500980},{0.155294, 0.150000, 0.508824},{0.160000, 0.150000, 0.516667},{0.164706, 0.150000, 0.524510},{0.169412, 0.150000, 0.532353},{0.174118, 0.150000, 0.540196},{0.178824, 0.150000, 0.548039},{0.183529, 0.150000, 0.555882},{0.188235, 0.150000, 0.563725},{0.192941, 0.150000, 0.571569},{0.197647, 0.150000, 0.579412},{0.202353, 0.150000, 0.587255},{0.207059, 0.150000, 0.595098},{0.211765, 0.150000, 0.602941},{0.216471, 0.150000, 0.610784},{0.221176, 0.150000, 0.618627},{0.225882, 0.150000, 0.626471},{0.230588, 0.150000, 0.634314},{0.235294, 0.150000, 0.642157},{0.240000, 0.150000, 0.650000},{0.244706, 0.150000, 0.657843},{0.249412, 0.150000, 0.665686},{0.254118, 0.150000, 0.673529},{0.258824, 0.150000, 0.681373},{0.263529, 0.150000, 0.689216},{0.268235, 0.150000, 0.697059},{0.272941, 0.150000, 0.704902},{0.277647, 0.150000, 0.712745},{0.282353, 0.150000, 0.720588},{0.287059, 0.150000, 0.728431},{0.291765, 0.150000, 0.736275},{0.296471, 0.150000, 0.744118},{0.302353, 0.150392, 0.748039},{0.311765, 0.151961, 0.740196},{0.321176, 0.153529, 0.732353},{0.330588, 0.155098, 0.724510},{0.340000, 0.156667, 0.716667},{0.349412, 0.158235, 0.708824},{0.358824, 0.159804, 0.700980},{0.368235, 0.161373, 0.693137},{0.377647, 0.162941, 0.685294},{0.387059, 0.164510, 0.677451},{0.396471, 0.166078, 0.669608},{0.405882, 0.167647, 0.661765},{0.415294, 0.169216, 0.653922},{0.424706, 0.170784, 0.646078},{0.434118, 0.172353, 0.638235},{0.443529, 0.173922, 0.630392},{0.452941, 0.175490, 0.622549},{0.462353, 0.177059, 0.614706},{0.471765, 0.178627, 0.606863},{0.481176, 0.180196, 0.599020},{0.490588, 0.181765, 0.591176},{0.500000, 0.183333, 0.583333},{0.509412, 0.184902, 0.575490},{0.518824, 0.186471, 0.567647},{0.528235, 0.188039, 0.559804},{0.537647, 0.189608, 0.551961},{0.547059, 0.191176, 0.544118},{0.556471, 0.192745, 0.536275},{0.565882, 0.194314, 0.528431},{0.575294, 0.195882, 0.520588},{0.584706, 0.197451, 0.512745},{0.594118, 0.199020, 0.504902},{0.604706, 0.200588, 0.495882},{0.617255, 0.202157, 0.484902},{0.629804, 0.203725, 0.473922},{0.642353, 0.205294, 0.462941},{0.654902, 0.206863, 0.451961},{0.667451, 0.208431, 0.440980},{0.680000, 0.210000, 0.430000},{0.692549, 0.211569, 0.419020},{0.705098, 0.213137, 0.408039},{0.717647, 0.214706, 0.397059},{0.730196, 0.216275, 0.386078},{0.742745, 0.217843, 0.375098},{0.755294, 0.219412, 0.364118},{0.767843, 0.220980, 0.353137},{0.780392, 0.222549, 0.342157},{0.792941, 0.224118, 0.331176},{0.805490, 0.225686, 0.320196},{0.818039, 0.227255, 0.309216},{0.830588, 0.228824, 0.298235},{0.843137, 0.230392, 0.287255},{0.855686, 0.231961, 0.276275},{0.868235, 0.233529, 0.265294},{0.880784, 0.235098, 0.254314},{0.893333, 0.236667, 0.243333},{0.905882, 0.238235, 0.232353},{0.918431, 0.239804, 0.221373},{0.930980, 0.241373, 0.210392},{0.943529, 0.242941, 0.199412},{0.956078, 0.244510, 0.188431},{0.968627, 0.246078, 0.177451},{0.981176, 0.247647, 0.166471},{0.993725, 0.249216, 0.155490},{0.998431, 0.253922, 0.147647},{0.995294, 0.261765, 0.142941},{0.992157, 0.269608, 0.138235},{0.989020, 0.277451, 0.133529},{0.985882, 0.285294, 0.128824},{0.982745, 0.293137, 0.124118},{0.979608, 0.300980, 0.119412},{0.976471, 0.308824, 0.114706},{0.973333, 0.316667, 0.110000},{0.970196, 0.324510, 0.105294},{0.967059, 0.332353, 0.100588},{0.963922, 0.340196, 0.095882},{0.960784, 0.348039, 0.091176},{0.957647, 0.355882, 0.086471},{0.954510, 0.363725, 0.081765},{0.951373, 0.371569, 0.077059},{0.948235, 0.379412, 0.072353},{0.945098, 0.387255, 0.067647},{0.941961, 0.395098, 0.062941},{0.938824, 0.402941, 0.058235},{0.935686, 0.410784, 0.053529},{0.932549, 0.418627, 0.048824},{0.929412, 0.426471, 0.044118},{0.926275, 0.434314, 0.039412},{0.923137, 0.442157, 0.034706},{0.920000, 0.450000, 0.030000},{0.916863, 0.457843, 0.025294},{0.913725, 0.465686, 0.020588},{0.910588, 0.473529, 0.015882},{0.907451, 0.481373, 0.011176},{0.904314, 0.489216, 0.006471},{0.901176, 0.497059, 0.001765},{0.900000, 0.504902, 0.001961},{0.900000, 0.512745, 0.005098},{0.900000, 0.520588, 0.008235},{0.900000, 0.528431, 0.011373},{0.900000, 0.536275, 0.014510},{0.900000, 0.544118, 0.017647},{0.900000, 0.551961, 0.020784},{0.900000, 0.559804, 0.023922},{0.900000, 0.567647, 0.027059},{0.900000, 0.575490, 0.030196},{0.900000, 0.583333, 0.033333},{0.900000, 0.591176, 0.036471},{0.900000, 0.599020, 0.039608},{0.900000, 0.606863, 0.042745},{0.900000, 0.614706, 0.045882},{0.900000, 0.622549, 0.049020},{0.900000, 0.630392, 0.052157},{0.900000, 0.638235, 0.055294},{0.900000, 0.646078, 0.058431},{0.900000, 0.653922, 0.061569},{0.900000, 0.661765, 0.064706},{0.900000, 0.669608, 0.067843},{0.900000, 0.677451, 0.070980},{0.900000, 0.685294, 0.074118},{0.900000, 0.693137, 0.077255},{0.900000, 0.700980, 0.080392},{0.900000, 0.708824, 0.083529},{0.900000, 0.716667, 0.086667},{0.900000, 0.724510, 0.089804},{0.900000, 0.732353, 0.092941},{0.900000, 0.740196, 0.096078},{0.900000, 0.748039, 0.099216},{0.900000, 0.753529, 0.109412},{0.900000, 0.758235, 0.121961},{0.900000, 0.762941, 0.134510},{0.900000, 0.767647, 0.147059},{0.900000, 0.772353, 0.159608},{0.900000, 0.777059, 0.172157},{0.900000, 0.781765, 0.184706},{0.900000, 0.786471, 0.197255},{0.900000, 0.791176, 0.209804},{0.900000, 0.795882, 0.222353},{0.900000, 0.800588, 0.234902},{0.900000, 0.805294, 0.247451},{0.900000, 0.810000, 0.260000},{0.900000, 0.814706, 0.272549},{0.900000, 0.819412, 0.285098},{0.900000, 0.824118, 0.297647},{0.900000, 0.828824, 0.310196},{0.900000, 0.833529, 0.322745},{0.900000, 0.838235, 0.335294},{0.900000, 0.842941, 0.347843},{0.900000, 0.847647, 0.360392},{0.900000, 0.852353, 0.372941},{0.900000, 0.857059, 0.385490},{0.900000, 0.861765, 0.398039},{0.900000, 0.866471, 0.410588},{0.900000, 0.871176, 0.423137},{0.900000, 0.875882, 0.435686},{0.900000, 0.880588, 0.448235},{0.900000, 0.885294, 0.460784},{0.900000, 0.890000, 0.473333},{0.900000, 0.894706, 0.485882},{0.900000, 0.899412, 0.498431},{0.902745, 0.902745, 0.513725},{0.905882, 0.905882, 0.529412},{0.909020, 0.909020, 0.545098},{0.912157, 0.912157, 0.560784},{0.915294, 0.915294, 0.576471},{0.918431, 0.918431, 0.592157},{0.921569, 0.921569, 0.607843},{0.924706, 0.924706, 0.623529},{0.927843, 0.927843, 0.639216},{0.930980, 0.930980, 0.654902},{0.934118, 0.934118, 0.670588},{0.937255, 0.937255, 0.686275},{0.940392, 0.940392, 0.701961},{0.943529, 0.943529, 0.717647},{0.946667, 0.946667, 0.733333},{0.949804, 0.949804, 0.749020},{0.952941, 0.952941, 0.764706},{0.956078, 0.956078, 0.780392},{0.959216, 0.959216, 0.796078},{0.962353, 0.962353, 0.811765},{0.965490, 0.965490, 0.827451},{0.968627, 0.968627, 0.843137},{0.971765, 0.971765, 0.858824},{0.974902, 0.974902, 0.874510},{0.978039, 0.978039, 0.890196},{0.981176, 0.981176, 0.905882},{0.984314, 0.984314, 0.921569},{0.987451, 0.987451, 0.937255},{0.990588, 0.990588, 0.952941},{0.993725, 0.993725, 0.968627},{0.996863, 0.996863, 0.984314},{1.000000, 1.000000, 1.000000}}}, + {"ocean", {{0.000000, 0.500000, 0.000000},{0.000000, 0.494118, 0.003922},{0.000000, 0.488235, 0.007843},{0.000000, 0.482353, 0.011765},{0.000000, 0.476471, 0.015686},{0.000000, 0.470588, 0.019608},{0.000000, 0.464706, 0.023529},{0.000000, 0.458824, 0.027451},{0.000000, 0.452941, 0.031373},{0.000000, 0.447059, 0.035294},{0.000000, 0.441176, 0.039216},{0.000000, 0.435294, 0.043137},{0.000000, 0.429412, 0.047059},{0.000000, 0.423529, 0.050980},{0.000000, 0.417647, 0.054902},{0.000000, 0.411765, 0.058824},{0.000000, 0.405882, 0.062745},{0.000000, 0.400000, 0.066667},{0.000000, 0.394118, 0.070588},{0.000000, 0.388235, 0.074510},{0.000000, 0.382353, 0.078431},{0.000000, 0.376471, 0.082353},{0.000000, 0.370588, 0.086275},{0.000000, 0.364706, 0.090196},{0.000000, 0.358824, 0.094118},{0.000000, 0.352941, 0.098039},{0.000000, 0.347059, 0.101961},{0.000000, 0.341176, 0.105882},{0.000000, 0.335294, 0.109804},{0.000000, 0.329412, 0.113725},{0.000000, 0.323529, 0.117647},{0.000000, 0.317647, 0.121569},{0.000000, 0.311765, 0.125490},{0.000000, 0.305882, 0.129412},{0.000000, 0.300000, 0.133333},{0.000000, 0.294118, 0.137255},{0.000000, 0.288235, 0.141176},{0.000000, 0.282353, 0.145098},{0.000000, 0.276471, 0.149020},{0.000000, 0.270588, 0.152941},{0.000000, 0.264706, 0.156863},{0.000000, 0.258824, 0.160784},{0.000000, 0.252941, 0.164706},{0.000000, 0.247059, 0.168627},{0.000000, 0.241176, 0.172549},{0.000000, 0.235294, 0.176471},{0.000000, 0.229412, 0.180392},{0.000000, 0.223529, 0.184314},{0.000000, 0.217647, 0.188235},{0.000000, 0.211765, 0.192157},{0.000000, 0.205882, 0.196078},{0.000000, 0.200000, 0.200000},{0.000000, 0.194118, 0.203922},{0.000000, 0.188235, 0.207843},{0.000000, 0.182353, 0.211765},{0.000000, 0.176471, 0.215686},{0.000000, 0.170588, 0.219608},{0.000000, 0.164706, 0.223529},{0.000000, 0.158824, 0.227451},{0.000000, 0.152941, 0.231373},{0.000000, 0.147059, 0.235294},{0.000000, 0.141176, 0.239216},{0.000000, 0.135294, 0.243137},{0.000000, 0.129412, 0.247059},{0.000000, 0.123529, 0.250980},{0.000000, 0.117647, 0.254902},{0.000000, 0.111765, 0.258824},{0.000000, 0.105882, 0.262745},{0.000000, 0.100000, 0.266667},{0.000000, 0.094118, 0.270588},{0.000000, 0.088235, 0.274510},{0.000000, 0.082353, 0.278431},{0.000000, 0.076471, 0.282353},{0.000000, 0.070588, 0.286275},{0.000000, 0.064706, 0.290196},{0.000000, 0.058824, 0.294118},{0.000000, 0.052941, 0.298039},{0.000000, 0.047059, 0.301961},{0.000000, 0.041176, 0.305882},{0.000000, 0.035294, 0.309804},{0.000000, 0.029412, 0.313725},{0.000000, 0.023529, 0.317647},{0.000000, 0.017647, 0.321569},{0.000000, 0.011765, 0.325490},{0.000000, 0.005882, 0.329412},{0.000000, 0.000000, 0.333333},{0.000000, 0.005882, 0.337255},{0.000000, 0.011765, 0.341176},{0.000000, 0.017647, 0.345098},{0.000000, 0.023529, 0.349020},{0.000000, 0.029412, 0.352941},{0.000000, 0.035294, 0.356863},{0.000000, 0.041176, 0.360784},{0.000000, 0.047059, 0.364706},{0.000000, 0.052941, 0.368627},{0.000000, 0.058824, 0.372549},{0.000000, 0.064706, 0.376471},{0.000000, 0.070588, 0.380392},{0.000000, 0.076471, 0.384314},{0.000000, 0.082353, 0.388235},{0.000000, 0.088235, 0.392157},{0.000000, 0.094118, 0.396078},{0.000000, 0.100000, 0.400000},{0.000000, 0.105882, 0.403922},{0.000000, 0.111765, 0.407843},{0.000000, 0.117647, 0.411765},{0.000000, 0.123529, 0.415686},{0.000000, 0.129412, 0.419608},{0.000000, 0.135294, 0.423529},{0.000000, 0.141176, 0.427451},{0.000000, 0.147059, 0.431373},{0.000000, 0.152941, 0.435294},{0.000000, 0.158824, 0.439216},{0.000000, 0.164706, 0.443137},{0.000000, 0.170588, 0.447059},{0.000000, 0.176471, 0.450980},{0.000000, 0.182353, 0.454902},{0.000000, 0.188235, 0.458824},{0.000000, 0.194118, 0.462745},{0.000000, 0.200000, 0.466667},{0.000000, 0.205882, 0.470588},{0.000000, 0.211765, 0.474510},{0.000000, 0.217647, 0.478431},{0.000000, 0.223529, 0.482353},{0.000000, 0.229412, 0.486275},{0.000000, 0.235294, 0.490196},{0.000000, 0.241176, 0.494118},{0.000000, 0.247059, 0.498039},{0.000000, 0.252941, 0.501961},{0.000000, 0.258824, 0.505882},{0.000000, 0.264706, 0.509804},{0.000000, 0.270588, 0.513725},{0.000000, 0.276471, 0.517647},{0.000000, 0.282353, 0.521569},{0.000000, 0.288235, 0.525490},{0.000000, 0.294118, 0.529412},{0.000000, 0.300000, 0.533333},{0.000000, 0.305882, 0.537255},{0.000000, 0.311765, 0.541176},{0.000000, 0.317647, 0.545098},{0.000000, 0.323529, 0.549020},{0.000000, 0.329412, 0.552941},{0.000000, 0.335294, 0.556863},{0.000000, 0.341176, 0.560784},{0.000000, 0.347059, 0.564706},{0.000000, 0.352941, 0.568627},{0.000000, 0.358824, 0.572549},{0.000000, 0.364706, 0.576471},{0.000000, 0.370588, 0.580392},{0.000000, 0.376471, 0.584314},{0.000000, 0.382353, 0.588235},{0.000000, 0.388235, 0.592157},{0.000000, 0.394118, 0.596078},{0.000000, 0.400000, 0.600000},{0.000000, 0.405882, 0.603922},{0.000000, 0.411765, 0.607843},{0.000000, 0.417647, 0.611765},{0.000000, 0.423529, 0.615686},{0.000000, 0.429412, 0.619608},{0.000000, 0.435294, 0.623529},{0.000000, 0.441176, 0.627451},{0.000000, 0.447059, 0.631373},{0.000000, 0.452941, 0.635294},{0.000000, 0.458824, 0.639216},{0.000000, 0.464706, 0.643137},{0.000000, 0.470588, 0.647059},{0.000000, 0.476471, 0.650980},{0.000000, 0.482353, 0.654902},{0.000000, 0.488235, 0.658824},{0.000000, 0.494118, 0.662745},{0.000000, 0.500000, 0.666667},{0.011765, 0.505882, 0.670588},{0.023529, 0.511765, 0.674510},{0.035294, 0.517647, 0.678431},{0.047059, 0.523529, 0.682353},{0.058824, 0.529412, 0.686275},{0.070588, 0.535294, 0.690196},{0.082353, 0.541176, 0.694118},{0.094118, 0.547059, 0.698039},{0.105882, 0.552941, 0.701961},{0.117647, 0.558824, 0.705882},{0.129412, 0.564706, 0.709804},{0.141176, 0.570588, 0.713725},{0.152941, 0.576471, 0.717647},{0.164706, 0.582353, 0.721569},{0.176471, 0.588235, 0.725490},{0.188235, 0.594118, 0.729412},{0.200000, 0.600000, 0.733333},{0.211765, 0.605882, 0.737255},{0.223529, 0.611765, 0.741176},{0.235294, 0.617647, 0.745098},{0.247059, 0.623529, 0.749020},{0.258824, 0.629412, 0.752941},{0.270588, 0.635294, 0.756863},{0.282353, 0.641176, 0.760784},{0.294118, 0.647059, 0.764706},{0.305882, 0.652941, 0.768627},{0.317647, 0.658824, 0.772549},{0.329412, 0.664706, 0.776471},{0.341176, 0.670588, 0.780392},{0.352941, 0.676471, 0.784314},{0.364706, 0.682353, 0.788235},{0.376471, 0.688235, 0.792157},{0.388235, 0.694118, 0.796078},{0.400000, 0.700000, 0.800000},{0.411765, 0.705882, 0.803922},{0.423529, 0.711765, 0.807843},{0.435294, 0.717647, 0.811765},{0.447059, 0.723529, 0.815686},{0.458824, 0.729412, 0.819608},{0.470588, 0.735294, 0.823529},{0.482353, 0.741176, 0.827451},{0.494118, 0.747059, 0.831373},{0.505882, 0.752941, 0.835294},{0.517647, 0.758824, 0.839216},{0.529412, 0.764706, 0.843137},{0.541176, 0.770588, 0.847059},{0.552941, 0.776471, 0.850980},{0.564706, 0.782353, 0.854902},{0.576471, 0.788235, 0.858824},{0.588235, 0.794118, 0.862745},{0.600000, 0.800000, 0.866667},{0.611765, 0.805882, 0.870588},{0.623529, 0.811765, 0.874510},{0.635294, 0.817647, 0.878431},{0.647059, 0.823529, 0.882353},{0.658824, 0.829412, 0.886275},{0.670588, 0.835294, 0.890196},{0.682353, 0.841176, 0.894118},{0.694118, 0.847059, 0.898039},{0.705882, 0.852941, 0.901961},{0.717647, 0.858824, 0.905882},{0.729412, 0.864706, 0.909804},{0.741176, 0.870588, 0.913725},{0.752941, 0.876471, 0.917647},{0.764706, 0.882353, 0.921569},{0.776471, 0.888235, 0.925490},{0.788235, 0.894118, 0.929412},{0.800000, 0.900000, 0.933333},{0.811765, 0.905882, 0.937255},{0.823529, 0.911765, 0.941176},{0.835294, 0.917647, 0.945098},{0.847059, 0.923529, 0.949020},{0.858824, 0.929412, 0.952941},{0.870588, 0.935294, 0.956863},{0.882353, 0.941176, 0.960784},{0.894118, 0.947059, 0.964706},{0.905882, 0.952941, 0.968627},{0.917647, 0.958824, 0.972549},{0.929412, 0.964706, 0.976471},{0.941176, 0.970588, 0.980392},{0.952941, 0.976471, 0.984314},{0.964706, 0.982353, 0.988235},{0.976471, 0.988235, 0.992157},{0.988235, 0.994118, 0.996078},{1.000000, 1.000000, 1.000000}}}, + {"gist_earth", {{0.000000, 0.000000, 0.000000},{0.002613, 0.000000, 0.168692},{0.005227, 0.000000, 0.221664},{0.007840, 0.000000, 0.263805},{0.010454, 0.000000, 0.305947},{0.013067, 0.000000, 0.348089},{0.015681, 0.000000, 0.390231},{0.018294, 0.000000, 0.432373},{0.020908, 0.008907, 0.454745},{0.023521, 0.017927, 0.455606},{0.026135, 0.026948, 0.456317},{0.028748, 0.035968, 0.457028},{0.031361, 0.044988, 0.457739},{0.033975, 0.054008, 0.458449},{0.036588, 0.063028, 0.459160},{0.039202, 0.072048, 0.459871},{0.041815, 0.081068, 0.460582},{0.044429, 0.090088, 0.461293},{0.047042, 0.099108, 0.462004},{0.049656, 0.108128, 0.462715},{0.052269, 0.117148, 0.463426},{0.054883, 0.126168, 0.464136},{0.057496, 0.135189, 0.464847},{0.060109, 0.144209, 0.465558},{0.062723, 0.153229, 0.466269},{0.065336, 0.162249, 0.466980},{0.067950, 0.171269, 0.467691},{0.070563, 0.180289, 0.468402},{0.073177, 0.189308, 0.469113},{0.075790, 0.197466, 0.469824},{0.078404, 0.205623, 0.470534},{0.081017, 0.213780, 0.471245},{0.083631, 0.221938, 0.471956},{0.086244, 0.230095, 0.472667},{0.088857, 0.238253, 0.473378},{0.091471, 0.246410, 0.474089},{0.094084, 0.254568, 0.474800},{0.096698, 0.262725, 0.475511},{0.099311, 0.270882, 0.476221},{0.101925, 0.279040, 0.476932},{0.104538, 0.287197, 0.477643},{0.107152, 0.295355, 0.478354},{0.109765, 0.303511, 0.479065},{0.112378, 0.310845, 0.479776},{0.114992, 0.318178, 0.480487},{0.117605, 0.325512, 0.481198},{0.120219, 0.332845, 0.481909},{0.122832, 0.340179, 0.482619},{0.125446, 0.347513, 0.483330},{0.128059, 0.354846, 0.484041},{0.130673, 0.362180, 0.484752},{0.133286, 0.369513, 0.485463},{0.135900, 0.376847, 0.486174},{0.138513, 0.384168, 0.486885},{0.141126, 0.390366, 0.487596},{0.143740, 0.396564, 0.488306},{0.146353, 0.402761, 0.489017},{0.148967, 0.408959, 0.489728},{0.151580, 0.415157, 0.490439},{0.154194, 0.421355, 0.491150},{0.156807, 0.427552, 0.491861},{0.159421, 0.433750, 0.492572},{0.162034, 0.439948, 0.493283},{0.164648, 0.446146, 0.493994},{0.167261, 0.452344, 0.494704},{0.169874, 0.458541, 0.495415},{0.172488, 0.464739, 0.496126},{0.175101, 0.470937, 0.496837},{0.177715, 0.477135, 0.497548},{0.180328, 0.483332, 0.498259},{0.182942, 0.489530, 0.498970},{0.185555, 0.495728, 0.499681},{0.188169, 0.501926, 0.500391},{0.190027, 0.504230, 0.495657},{0.191877, 0.506488, 0.490857},{0.193727, 0.508745, 0.486057},{0.195576, 0.511003, 0.481256},{0.197426, 0.513261, 0.476456},{0.199276, 0.515518, 0.471655},{0.201125, 0.517776, 0.466855},{0.202975, 0.520033, 0.462055},{0.204824, 0.522291, 0.457254},{0.206674, 0.524548, 0.452454},{0.208524, 0.526806, 0.447654},{0.210373, 0.529063, 0.442853},{0.212223, 0.531321, 0.438053},{0.214073, 0.533578, 0.433253},{0.215922, 0.535836, 0.428452},{0.217772, 0.538093, 0.423652},{0.219621, 0.540351, 0.418852},{0.221471, 0.542608, 0.414051},{0.223321, 0.544866, 0.409251},{0.225170, 0.547123, 0.404450},{0.227020, 0.549381, 0.399650},{0.228870, 0.551638, 0.394850},{0.230719, 0.553896, 0.390049},{0.232569, 0.556154, 0.385249},{0.234419, 0.558411, 0.380449},{0.236268, 0.560669, 0.375648},{0.238118, 0.562926, 0.370848},{0.239967, 0.565184, 0.366048},{0.241817, 0.567441, 0.361247},{0.243667, 0.569699, 0.356447},{0.245516, 0.571956, 0.351647},{0.247366, 0.574214, 0.346846},{0.249216, 0.576471, 0.342046},{0.251065, 0.578729, 0.337245},{0.252915, 0.580986, 0.332445},{0.254764, 0.583244, 0.327645},{0.256614, 0.585501, 0.322844},{0.258464, 0.587759, 0.318044},{0.260313, 0.590016, 0.313244},{0.262163, 0.592274, 0.308443},{0.264013, 0.594531, 0.303643},{0.265862, 0.596789, 0.298843},{0.267712, 0.599046, 0.294042},{0.269561, 0.601304, 0.289242},{0.271452, 0.603562, 0.284442},{0.280169, 0.605819, 0.279641},{0.288886, 0.608077, 0.274841},{0.297603, 0.610334, 0.277066},{0.306320, 0.612592, 0.279352},{0.315037, 0.614849, 0.281638},{0.323754, 0.617107, 0.283924},{0.332471, 0.619364, 0.286210},{0.341188, 0.621622, 0.288496},{0.349905, 0.623879, 0.290782},{0.358622, 0.626137, 0.293068},{0.367339, 0.628394, 0.295354},{0.376056, 0.630652, 0.297640},{0.384773, 0.632909, 0.299926},{0.393490, 0.635167, 0.302212},{0.402207, 0.637424, 0.304497},{0.410924, 0.639682, 0.306783},{0.419642, 0.641407, 0.309069},{0.428359, 0.643128, 0.311355},{0.437076, 0.644848, 0.313641},{0.445793, 0.646569, 0.315927},{0.454510, 0.648290, 0.318213},{0.463227, 0.650010, 0.320499},{0.471932, 0.651731, 0.321739},{0.478399, 0.653452, 0.322978},{0.484866, 0.655172, 0.324218},{0.491332, 0.656893, 0.325457},{0.497799, 0.658614, 0.326697},{0.504266, 0.660334, 0.327936},{0.510732, 0.662055, 0.329175},{0.517199, 0.663776, 0.330415},{0.523665, 0.665497, 0.331654},{0.530132, 0.667217, 0.332894},{0.536599, 0.668938, 0.334133},{0.543065, 0.670659, 0.335372},{0.549532, 0.672379, 0.336612},{0.555999, 0.674100, 0.337851},{0.562465, 0.675821, 0.339091},{0.568932, 0.677541, 0.340330},{0.575399, 0.679262, 0.341570},{0.581865, 0.680983, 0.342809},{0.588332, 0.682703, 0.344048},{0.594798, 0.684424, 0.345288},{0.601265, 0.686145, 0.346527},{0.607732, 0.687866, 0.347767},{0.614198, 0.689586, 0.349006},{0.620665, 0.691307, 0.350246},{0.627132, 0.693028, 0.351485},{0.633598, 0.694748, 0.352724},{0.640065, 0.696469, 0.353964},{0.646532, 0.698190, 0.355203},{0.652998, 0.699910, 0.356443},{0.659465, 0.701631, 0.357682},{0.665932, 0.703352, 0.358922},{0.672398, 0.705072, 0.360161},{0.678865, 0.706793, 0.361400},{0.685331, 0.708514, 0.362640},{0.691798, 0.710234, 0.363879},{0.698265, 0.711955, 0.365119},{0.704731, 0.713676, 0.366358},{0.711198, 0.715397, 0.367598},{0.717616, 0.717066, 0.368837},{0.719255, 0.713679, 0.370076},{0.720895, 0.710293, 0.371316},{0.722534, 0.706906, 0.372555},{0.724173, 0.703519, 0.373795},{0.725812, 0.700132, 0.375034},{0.727451, 0.696745, 0.376274},{0.729090, 0.693358, 0.377513},{0.730729, 0.689972, 0.378752},{0.732368, 0.686585, 0.379992},{0.734007, 0.683198, 0.381231},{0.735646, 0.679811, 0.382471},{0.737285, 0.676424, 0.383710},{0.738924, 0.673038, 0.384950},{0.740563, 0.669651, 0.386189},{0.742202, 0.666264, 0.387428},{0.743841, 0.662877, 0.388668},{0.745480, 0.659490, 0.389907},{0.747119, 0.656104, 0.391147},{0.748759, 0.652717, 0.392386},{0.750398, 0.649330, 0.393625},{0.752037, 0.645943, 0.394865},{0.753676, 0.642556, 0.396134},{0.755339, 0.639219, 0.405741},{0.759726, 0.641277, 0.415349},{0.764112, 0.642991, 0.424956},{0.768498, 0.644700, 0.434564},{0.772885, 0.646409, 0.444171},{0.777271, 0.648137, 0.453779},{0.781657, 0.651513, 0.463386},{0.786044, 0.654888, 0.472994},{0.790430, 0.658287, 0.482601},{0.794816, 0.661685, 0.492208},{0.799203, 0.665084, 0.501816},{0.803589, 0.668483, 0.511423},{0.807975, 0.671882, 0.521031},{0.812361, 0.675280, 0.530638},{0.816748, 0.678679, 0.540246},{0.821134, 0.682078, 0.549853},{0.825520, 0.685476, 0.559461},{0.829907, 0.688875, 0.569068},{0.834293, 0.692274, 0.578676},{0.838679, 0.695672, 0.588283},{0.843066, 0.699071, 0.597891},{0.847452, 0.704683, 0.607498},{0.851838, 0.710314, 0.617106},{0.856225, 0.715923, 0.626713},{0.860611, 0.721533, 0.636321},{0.864997, 0.726915, 0.645928},{0.869383, 0.732295, 0.655536},{0.873770, 0.737674, 0.665153},{0.878156, 0.743077, 0.676973},{0.882542, 0.750747, 0.688794},{0.886929, 0.758418, 0.700614},{0.891315, 0.766089, 0.712434},{0.895701, 0.773759, 0.724254},{0.900088, 0.781430, 0.736075},{0.904474, 0.789101, 0.747895},{0.908860, 0.796771, 0.759715},{0.913246, 0.804442, 0.771535},{0.917633, 0.812113, 0.783356},{0.922019, 0.819783, 0.795176},{0.926405, 0.827454, 0.806996},{0.930792, 0.836438, 0.818816},{0.935178, 0.845430, 0.830637},{0.939564, 0.854422, 0.842457},{0.943951, 0.863415, 0.854277},{0.948337, 0.872514, 0.866097},{0.952723, 0.881617, 0.877918},{0.957110, 0.893070, 0.889738},{0.961496, 0.904522, 0.901558},{0.965882, 0.915975, 0.913378},{0.970268, 0.927427, 0.925199},{0.974655, 0.938880, 0.937019},{0.979041, 0.950332, 0.948839},{0.983427, 0.961785, 0.960659},{0.987814, 0.973237, 0.972480},{0.992200, 0.984300, 0.984300}}}, + {"terrain", {{0.200000, 0.200000, 0.600000},{0.194771, 0.210458, 0.610458},{0.189542, 0.220915, 0.620915},{0.184314, 0.231373, 0.631373},{0.179085, 0.241830, 0.641830},{0.173856, 0.252288, 0.652288},{0.168627, 0.262745, 0.662745},{0.163399, 0.273203, 0.673203},{0.158170, 0.283660, 0.683660},{0.152941, 0.294118, 0.694118},{0.147712, 0.304575, 0.704575},{0.142484, 0.315033, 0.715033},{0.137255, 0.325490, 0.725490},{0.132026, 0.335948, 0.735948},{0.126797, 0.346405, 0.746405},{0.121569, 0.356863, 0.756863},{0.116340, 0.367320, 0.767320},{0.111111, 0.377778, 0.777778},{0.105882, 0.388235, 0.788235},{0.100654, 0.398693, 0.798693},{0.095425, 0.409150, 0.809150},{0.090196, 0.419608, 0.819608},{0.084967, 0.430065, 0.830065},{0.079739, 0.440523, 0.840523},{0.074510, 0.450980, 0.850980},{0.069281, 0.461438, 0.861438},{0.064052, 0.471895, 0.871895},{0.058824, 0.482353, 0.882353},{0.053595, 0.492810, 0.892810},{0.048366, 0.503268, 0.903268},{0.043137, 0.513725, 0.913725},{0.037908, 0.524183, 0.924183},{0.032680, 0.534641, 0.934641},{0.027451, 0.545098, 0.945098},{0.022222, 0.555556, 0.955556},{0.016993, 0.566013, 0.966013},{0.011765, 0.576471, 0.976471},{0.006536, 0.586928, 0.986928},{0.001307, 0.597386, 0.997386},{0.000000, 0.605882, 0.982353},{0.000000, 0.613725, 0.958824},{0.000000, 0.621569, 0.935294},{0.000000, 0.629412, 0.911765},{0.000000, 0.637255, 0.888235},{0.000000, 0.645098, 0.864706},{0.000000, 0.652941, 0.841176},{0.000000, 0.660784, 0.817647},{0.000000, 0.668627, 0.794118},{0.000000, 0.676471, 0.770588},{0.000000, 0.684314, 0.747059},{0.000000, 0.692157, 0.723529},{0.000000, 0.700000, 0.700000},{0.000000, 0.707843, 0.676471},{0.000000, 0.715686, 0.652941},{0.000000, 0.723529, 0.629412},{0.000000, 0.731373, 0.605882},{0.000000, 0.739216, 0.582353},{0.000000, 0.747059, 0.558824},{0.000000, 0.754902, 0.535294},{0.000000, 0.762745, 0.511765},{0.000000, 0.770588, 0.488235},{0.000000, 0.778431, 0.464706},{0.000000, 0.786275, 0.441176},{0.000000, 0.794118, 0.417647},{0.003922, 0.800784, 0.400784},{0.019608, 0.803922, 0.403922},{0.035294, 0.807059, 0.407059},{0.050980, 0.810196, 0.410196},{0.066667, 0.813333, 0.413333},{0.082353, 0.816471, 0.416471},{0.098039, 0.819608, 0.419608},{0.113725, 0.822745, 0.422745},{0.129412, 0.825882, 0.425882},{0.145098, 0.829020, 0.429020},{0.160784, 0.832157, 0.432157},{0.176471, 0.835294, 0.435294},{0.192157, 0.838431, 0.438431},{0.207843, 0.841569, 0.441569},{0.223529, 0.844706, 0.444706},{0.239216, 0.847843, 0.447843},{0.254902, 0.850980, 0.450980},{0.270588, 0.854118, 0.454118},{0.286275, 0.857255, 0.457255},{0.301961, 0.860392, 0.460392},{0.317647, 0.863529, 0.463529},{0.333333, 0.866667, 0.466667},{0.349020, 0.869804, 0.469804},{0.364706, 0.872941, 0.472941},{0.380392, 0.876078, 0.476078},{0.396078, 0.879216, 0.479216},{0.411765, 0.882353, 0.482353},{0.427451, 0.885490, 0.485490},{0.443137, 0.888627, 0.488627},{0.458824, 0.891765, 0.491765},{0.474510, 0.894902, 0.494902},{0.490196, 0.898039, 0.498039},{0.505882, 0.901176, 0.501176},{0.521569, 0.904314, 0.504314},{0.537255, 0.907451, 0.507451},{0.552941, 0.910588, 0.510588},{0.568627, 0.913725, 0.513725},{0.584314, 0.916863, 0.516863},{0.600000, 0.920000, 0.520000},{0.615686, 0.923137, 0.523137},{0.631373, 0.926275, 0.526275},{0.647059, 0.929412, 0.529412},{0.662745, 0.932549, 0.532549},{0.678431, 0.935686, 0.535686},{0.694118, 0.938824, 0.538824},{0.709804, 0.941961, 0.541961},{0.725490, 0.945098, 0.545098},{0.741176, 0.948235, 0.548235},{0.756863, 0.951373, 0.551373},{0.772549, 0.954510, 0.554510},{0.788235, 0.957647, 0.557647},{0.803922, 0.960784, 0.560784},{0.819608, 0.963922, 0.563922},{0.835294, 0.967059, 0.567059},{0.850980, 0.970196, 0.570196},{0.866667, 0.973333, 0.573333},{0.882353, 0.976471, 0.576471},{0.898039, 0.979608, 0.579608},{0.913725, 0.982745, 0.582745},{0.929412, 0.985882, 0.585882},{0.945098, 0.989020, 0.589020},{0.960784, 0.992157, 0.592157},{0.976471, 0.995294, 0.595294},{0.992157, 0.998431, 0.598431},{0.996078, 0.994980, 0.597882},{0.988235, 0.984941, 0.593647},{0.980392, 0.974902, 0.589412},{0.972549, 0.964863, 0.585176},{0.964706, 0.954824, 0.580941},{0.956863, 0.944784, 0.576706},{0.949020, 0.934745, 0.572471},{0.941176, 0.924706, 0.568235},{0.933333, 0.914667, 0.564000},{0.925490, 0.904627, 0.559765},{0.917647, 0.894588, 0.555529},{0.909804, 0.884549, 0.551294},{0.901961, 0.874510, 0.547059},{0.894118, 0.864471, 0.542824},{0.886275, 0.854431, 0.538588},{0.878431, 0.844392, 0.534353},{0.870588, 0.834353, 0.530118},{0.862745, 0.824314, 0.525882},{0.854902, 0.814275, 0.521647},{0.847059, 0.804235, 0.517412},{0.839216, 0.794196, 0.513176},{0.831373, 0.784157, 0.508941},{0.823529, 0.774118, 0.504706},{0.815686, 0.764078, 0.500471},{0.807843, 0.754039, 0.496235},{0.800000, 0.744000, 0.492000},{0.792157, 0.733961, 0.487765},{0.784314, 0.723922, 0.483529},{0.776471, 0.713882, 0.479294},{0.768627, 0.703843, 0.475059},{0.760784, 0.693804, 0.470824},{0.752941, 0.683765, 0.466588},{0.745098, 0.673725, 0.462353},{0.737255, 0.663686, 0.458118},{0.729412, 0.653647, 0.453882},{0.721569, 0.643608, 0.449647},{0.713725, 0.633569, 0.445412},{0.705882, 0.623529, 0.441176},{0.698039, 0.613490, 0.436941},{0.690196, 0.603451, 0.432706},{0.682353, 0.593412, 0.428471},{0.674510, 0.583373, 0.424235},{0.666667, 0.573333, 0.420000},{0.658824, 0.563294, 0.415765},{0.650980, 0.553255, 0.411529},{0.643137, 0.543216, 0.407294},{0.635294, 0.533176, 0.403059},{0.627451, 0.523137, 0.398824},{0.619608, 0.513098, 0.394588},{0.611765, 0.503059, 0.390353},{0.603922, 0.493020, 0.386118},{0.596078, 0.482980, 0.381882},{0.588235, 0.472941, 0.377647},{0.580392, 0.462902, 0.373412},{0.572549, 0.452863, 0.369176},{0.564706, 0.442824, 0.364941},{0.556863, 0.432784, 0.360706},{0.549020, 0.422745, 0.356471},{0.541176, 0.412706, 0.352235},{0.533333, 0.402667, 0.348000},{0.525490, 0.392627, 0.343765},{0.517647, 0.382588, 0.339529},{0.509804, 0.372549, 0.335294},{0.501961, 0.362510, 0.331059},{0.505882, 0.367529, 0.337882},{0.513725, 0.377569, 0.348392},{0.521569, 0.387608, 0.358902},{0.529412, 0.397647, 0.369412},{0.537255, 0.407686, 0.379922},{0.545098, 0.417725, 0.390431},{0.552941, 0.427765, 0.400941},{0.560784, 0.437804, 0.411451},{0.568627, 0.447843, 0.421961},{0.576471, 0.457882, 0.432471},{0.584314, 0.467922, 0.442980},{0.592157, 0.477961, 0.453490},{0.600000, 0.488000, 0.464000},{0.607843, 0.498039, 0.474510},{0.615686, 0.508078, 0.485020},{0.623529, 0.518118, 0.495529},{0.631373, 0.528157, 0.506039},{0.639216, 0.538196, 0.516549},{0.647059, 0.548235, 0.527059},{0.654902, 0.558275, 0.537569},{0.662745, 0.568314, 0.548078},{0.670588, 0.578353, 0.558588},{0.678431, 0.588392, 0.569098},{0.686275, 0.598431, 0.579608},{0.694118, 0.608471, 0.590118},{0.701961, 0.618510, 0.600627},{0.709804, 0.628549, 0.611137},{0.717647, 0.638588, 0.621647},{0.725490, 0.648627, 0.632157},{0.733333, 0.658667, 0.642667},{0.741176, 0.668706, 0.653176},{0.749020, 0.678745, 0.663686},{0.756863, 0.688784, 0.674196},{0.764706, 0.698824, 0.684706},{0.772549, 0.708863, 0.695216},{0.780392, 0.718902, 0.705725},{0.788235, 0.728941, 0.716235},{0.796078, 0.738980, 0.726745},{0.803922, 0.749020, 0.737255},{0.811765, 0.759059, 0.747765},{0.819608, 0.769098, 0.758275},{0.827451, 0.779137, 0.768784},{0.835294, 0.789176, 0.779294},{0.843137, 0.799216, 0.789804},{0.850980, 0.809255, 0.800314},{0.858824, 0.819294, 0.810824},{0.866667, 0.829333, 0.821333},{0.874510, 0.839373, 0.831843},{0.882353, 0.849412, 0.842353},{0.890196, 0.859451, 0.852863},{0.898039, 0.869490, 0.863373},{0.905882, 0.879529, 0.873882},{0.913725, 0.889569, 0.884392},{0.921569, 0.899608, 0.894902},{0.929412, 0.909647, 0.905412},{0.937255, 0.919686, 0.915922},{0.945098, 0.929725, 0.926431},{0.952941, 0.939765, 0.936941},{0.960784, 0.949804, 0.947451},{0.968627, 0.959843, 0.957961},{0.976471, 0.969882, 0.968471},{0.984314, 0.979922, 0.978980},{0.992157, 0.989961, 0.989490},{1.000000, 1.000000, 1.000000}}}, + {"twilight", {{0.885750, 0.850009, 0.887974},{0.881722, 0.851276, 0.886381},{0.877249, 0.851870, 0.884341},{0.872331, 0.851802, 0.881897},{0.866960, 0.851090, 0.879098},{0.861102, 0.849768, 0.875992},{0.854726, 0.847875, 0.872628},{0.847807, 0.845455, 0.869040},{0.840304, 0.842561, 0.865251},{0.832227, 0.839235, 0.861276},{0.823574, 0.835525, 0.857132},{0.814390, 0.831466, 0.852838},{0.804692, 0.827098, 0.848424},{0.794543, 0.822451, 0.843922},{0.783991, 0.817554, 0.839367},{0.773084, 0.812435, 0.834802},{0.761869, 0.807119, 0.830266},{0.750403, 0.801627, 0.825797},{0.738738, 0.795977, 0.821429},{0.726922, 0.790185, 0.817192},{0.715004, 0.784265, 0.813111},{0.703030, 0.778229, 0.809206},{0.691046, 0.772086, 0.805488},{0.679096, 0.765845, 0.801965},{0.667215, 0.759511, 0.798637},{0.655437, 0.753092, 0.795503},{0.643791, 0.746592, 0.792557},{0.632303, 0.740017, 0.789789},{0.620992, 0.733369, 0.787190},{0.609875, 0.726654, 0.784748},{0.598967, 0.719874, 0.782453},{0.588276, 0.713032, 0.780291},{0.577812, 0.706131, 0.778253},{0.567581, 0.699173, 0.776327},{0.557589, 0.692159, 0.774504},{0.547841, 0.685091, 0.772774},{0.538340, 0.677971, 0.771127},{0.529091, 0.670798, 0.769556},{0.520096, 0.663574, 0.768051},{0.511360, 0.656299, 0.766607},{0.502885, 0.648972, 0.765214},{0.494676, 0.641595, 0.763867},{0.486736, 0.634166, 0.762558},{0.479068, 0.626687, 0.761280},{0.471676, 0.619155, 0.760027},{0.464564, 0.611572, 0.758792},{0.457734, 0.603936, 0.757569},{0.451189, 0.596248, 0.756351},{0.444932, 0.588506, 0.755131},{0.438966, 0.580710, 0.753903},{0.433290, 0.572859, 0.752659},{0.427907, 0.564954, 0.751394},{0.422815, 0.556994, 0.750101},{0.418014, 0.548978, 0.748772},{0.413502, 0.540906, 0.747401},{0.409277, 0.532777, 0.745980},{0.405333, 0.524592, 0.744504},{0.401667, 0.516350, 0.742964},{0.398272, 0.508052, 0.741355},{0.395141, 0.499696, 0.739668},{0.392265, 0.491283, 0.737898},{0.389636, 0.482813, 0.736038},{0.387243, 0.474286, 0.734080},{0.385076, 0.465703, 0.732019},{0.383122, 0.457063, 0.729846},{0.381369, 0.448367, 0.727557},{0.379804, 0.439616, 0.725143},{0.378414, 0.430809, 0.722599},{0.377184, 0.421947, 0.719918},{0.376100, 0.413031, 0.717094},{0.375148, 0.404061, 0.714119},{0.374313, 0.395039, 0.710988},{0.373581, 0.385965, 0.707693},{0.372936, 0.376840, 0.704228},{0.372364, 0.367665, 0.700585},{0.371851, 0.358441, 0.696757},{0.371381, 0.349171, 0.692737},{0.370942, 0.339856, 0.688517},{0.370517, 0.330497, 0.684089},{0.370095, 0.321098, 0.679444},{0.369660, 0.311661, 0.674573},{0.369198, 0.302189, 0.669468},{0.368697, 0.292687, 0.664116},{0.368141, 0.283159, 0.658509},{0.367517, 0.273611, 0.652634},{0.366811, 0.264049, 0.646480},{0.366009, 0.254480, 0.640034},{0.365096, 0.244915, 0.633282},{0.364057, 0.235365, 0.626210},{0.362876, 0.225841, 0.618804},{0.361538, 0.216361, 0.611049},{0.360027, 0.206941, 0.602928},{0.358325, 0.197603, 0.594428},{0.356414, 0.188371, 0.585532},{0.354275, 0.179274, 0.576228},{0.351892, 0.170343, 0.566503},{0.349245, 0.161615, 0.556348},{0.346315, 0.153128, 0.545760},{0.343086, 0.144925, 0.534737},{0.339542, 0.137048, 0.523288},{0.335670, 0.129541, 0.511428},{0.331462, 0.122442, 0.499183},{0.326914, 0.115787, 0.486586},{0.322029, 0.109601, 0.473685},{0.316816, 0.103899, 0.460534},{0.311294, 0.098685, 0.447193},{0.305487, 0.093953, 0.433728},{0.299425, 0.089682, 0.420216},{0.293146, 0.085851, 0.406722},{0.286692, 0.082430, 0.393312},{0.280106, 0.079390, 0.380050},{0.273437, 0.076703, 0.366996},{0.266732, 0.074344, 0.354203},{0.260039, 0.072295, 0.341718},{0.253407, 0.070534, 0.329595},{0.246882, 0.069054, 0.317870},{0.240508, 0.067857, 0.306571},{0.234331, 0.066936, 0.295740},{0.228392, 0.066290, 0.285411},{0.222727, 0.065934, 0.275597},{0.217378, 0.065860, 0.266342},{0.212374, 0.066085, 0.257652},{0.207744, 0.066615, 0.249546},{0.203520, 0.067444, 0.242056},{0.199716, 0.068593, 0.235171},{0.196083, 0.070321, 0.228747},{0.191994, 0.073183, 0.222434},{0.187392, 0.077102, 0.216189},{0.187745, 0.077252, 0.213874},{0.193155, 0.073607, 0.215424},{0.198193, 0.070975, 0.216910},{0.202904, 0.069435, 0.218332},{0.207857, 0.068484, 0.220001},{0.213331, 0.067830, 0.222070},{0.219305, 0.067466, 0.224510},{0.225754, 0.067382, 0.227290},{0.232663, 0.067557, 0.230376},{0.239996, 0.067985, 0.233734},{0.247721, 0.068653, 0.237329},{0.255821, 0.069532, 0.241122},{0.264255, 0.070617, 0.245078},{0.272997, 0.071884, 0.249158},{0.282017, 0.073316, 0.253328},{0.291285, 0.074899, 0.257551},{0.300773, 0.076618, 0.261793},{0.310455, 0.078457, 0.266020},{0.320300, 0.080413, 0.270203},{0.330292, 0.082468, 0.274309},{0.340402, 0.084622, 0.278313},{0.350607, 0.086876, 0.282188},{0.360888, 0.089227, 0.285911},{0.371225, 0.091680, 0.289459},{0.381602, 0.094239, 0.292811},{0.391999, 0.096916, 0.295952},{0.402397, 0.099723, 0.298867},{0.412780, 0.102673, 0.301542},{0.423132, 0.105781, 0.303968},{0.433436, 0.109064, 0.306138},{0.443674, 0.112539, 0.308050},{0.453830, 0.116222, 0.309704},{0.463891, 0.120126, 0.311103},{0.473841, 0.124264, 0.312255},{0.483666, 0.128647, 0.313172},{0.493355, 0.133281, 0.313866},{0.502895, 0.138171, 0.314357},{0.512278, 0.143317, 0.314663},{0.521497, 0.148715, 0.314808},{0.530544, 0.154362, 0.314813},{0.539417, 0.160248, 0.314703},{0.548114, 0.166363, 0.314501},{0.556632, 0.172697, 0.314230},{0.564973, 0.179237, 0.313914},{0.573138, 0.185970, 0.313571},{0.581129, 0.192885, 0.313224},{0.588949, 0.199970, 0.312889},{0.596599, 0.207213, 0.312585},{0.604084, 0.214603, 0.312327},{0.611406, 0.222131, 0.312129},{0.618569, 0.229788, 0.312005},{0.625574, 0.237565, 0.311967},{0.632425, 0.245456, 0.312028},{0.639124, 0.253454, 0.312197},{0.645673, 0.261552, 0.312487},{0.652074, 0.269747, 0.312906},{0.658328, 0.278032, 0.313464},{0.664436, 0.286405, 0.314172},{0.670400, 0.294861, 0.315038},{0.676219, 0.303398, 0.316072},{0.681895, 0.312011, 0.317284},{0.687427, 0.320700, 0.318681},{0.692815, 0.329460, 0.320275},{0.698061, 0.338290, 0.322075},{0.703162, 0.347187, 0.324089},{0.708121, 0.356150, 0.326329},{0.712935, 0.365176, 0.328803},{0.717604, 0.374263, 0.331521},{0.722130, 0.383409, 0.334495},{0.726511, 0.392611, 0.337733},{0.730748, 0.401869, 0.341245},{0.734841, 0.411178, 0.345042},{0.738791, 0.420537, 0.349133},{0.742599, 0.429943, 0.353527},{0.746266, 0.439392, 0.358234},{0.749794, 0.448883, 0.363263},{0.753186, 0.458412, 0.368622},{0.756443, 0.467975, 0.374319},{0.759571, 0.477569, 0.380361},{0.762573, 0.487189, 0.386753},{0.765455, 0.496832, 0.393503},{0.768222, 0.506494, 0.400613},{0.770881, 0.516169, 0.408087},{0.773440, 0.525853, 0.415927},{0.775908, 0.535542, 0.424134},{0.778293, 0.545231, 0.432707},{0.780608, 0.554913, 0.441643},{0.782862, 0.564585, 0.450940},{0.785068, 0.574242, 0.460591},{0.787239, 0.583877, 0.470590},{0.789387, 0.593488, 0.480929},{0.791528, 0.603067, 0.491597},{0.793676, 0.612610, 0.502582},{0.795843, 0.622114, 0.513871},{0.798044, 0.631573, 0.525451},{0.800294, 0.640982, 0.537305},{0.802605, 0.650338, 0.549417},{0.804991, 0.659635, 0.561767},{0.807461, 0.668870, 0.574337},{0.810028, 0.678037, 0.587106},{0.812699, 0.687130, 0.600052},{0.815481, 0.696145, 0.613152},{0.818379, 0.705074, 0.626382},{0.821395, 0.713911, 0.639718},{0.824527, 0.722646, 0.653131},{0.827772, 0.731270, 0.666596},{0.831122, 0.739772, 0.680081},{0.834566, 0.748138, 0.693557},{0.838091, 0.756353, 0.706986},{0.841678, 0.764401, 0.720333},{0.845298, 0.772263, 0.733564},{0.848922, 0.779920, 0.746637},{0.852519, 0.787349, 0.759499},{0.856040, 0.794530, 0.772106},{0.859435, 0.801439, 0.784398},{0.862656, 0.808055, 0.796283},{0.865649, 0.814355, 0.807670},{0.868400, 0.820309, 0.818416},{0.870938, 0.825869, 0.828385},{0.873352, 0.830967, 0.837489},{0.875715, 0.835530, 0.845755},{0.878023, 0.839502, 0.853306},{0.880193, 0.842852, 0.860274},{0.882115, 0.845570, 0.866738},{0.883691, 0.847649, 0.872741},{0.884851, 0.849084, 0.878282},{0.885547, 0.849872, 0.883362},{0.885712, 0.850022, 0.885725}}}, + {"ylgn", {{1.000000, 1.000000, 0.898039},{0.999016, 0.999631, 0.892626},{0.998032, 0.999262, 0.887213},{0.997047, 0.998893, 0.881799},{0.996063, 0.998524, 0.876386},{0.995079, 0.998155, 0.870973},{0.994095, 0.997785, 0.865559},{0.993110, 0.997416, 0.860146},{0.992126, 0.997047, 0.854733},{0.991142, 0.996678, 0.849319},{0.990158, 0.996309, 0.843906},{0.989173, 0.995940, 0.838493},{0.988189, 0.995571, 0.833080},{0.987205, 0.995202, 0.827666},{0.986221, 0.994833, 0.822253},{0.985236, 0.994464, 0.816840},{0.984252, 0.994095, 0.811426},{0.983268, 0.993725, 0.806013},{0.982284, 0.993356, 0.800600},{0.981300, 0.992987, 0.795186},{0.980315, 0.992618, 0.789773},{0.979331, 0.992249, 0.784360},{0.978347, 0.991880, 0.778947},{0.977363, 0.991511, 0.773533},{0.976378, 0.991142, 0.768120},{0.975394, 0.990773, 0.762707},{0.974410, 0.990404, 0.757293},{0.973426, 0.990035, 0.751880},{0.972441, 0.989666, 0.746467},{0.971457, 0.989296, 0.741053},{0.970473, 0.988927, 0.735640},{0.969489, 0.988558, 0.730227},{0.968166, 0.988051, 0.725152},{0.964475, 0.986574, 0.722445},{0.960784, 0.985098, 0.719739},{0.957093, 0.983622, 0.717032},{0.953403, 0.982145, 0.714325},{0.949712, 0.980669, 0.711619},{0.946021, 0.979193, 0.708912},{0.942330, 0.977716, 0.706205},{0.938639, 0.976240, 0.703499},{0.934948, 0.974764, 0.700792},{0.931257, 0.973287, 0.698085},{0.927566, 0.971811, 0.695379},{0.923875, 0.970334, 0.692672},{0.920185, 0.968858, 0.689965},{0.916494, 0.967382, 0.687259},{0.912803, 0.965905, 0.684552},{0.909112, 0.964429, 0.681845},{0.905421, 0.962953, 0.679139},{0.901730, 0.961476, 0.676432},{0.898039, 0.960000, 0.673725},{0.894348, 0.958524, 0.671019},{0.890657, 0.957047, 0.668312},{0.886967, 0.955571, 0.665606},{0.883276, 0.954095, 0.662899},{0.879585, 0.952618, 0.660192},{0.875894, 0.951142, 0.657486},{0.872203, 0.949666, 0.654779},{0.868512, 0.948189, 0.652072},{0.864821, 0.946713, 0.649366},{0.861130, 0.945236, 0.646659},{0.857439, 0.943760, 0.643952},{0.853749, 0.942284, 0.641246},{0.849627, 0.940592, 0.638570},{0.844214, 0.938255, 0.635986},{0.838800, 0.935917, 0.633403},{0.833387, 0.933579, 0.630819},{0.827974, 0.931242, 0.628235},{0.822561, 0.928904, 0.625652},{0.817147, 0.926567, 0.623068},{0.811734, 0.924229, 0.620484},{0.806321, 0.921892, 0.617901},{0.800907, 0.919554, 0.615317},{0.795494, 0.917216, 0.612734},{0.790081, 0.914879, 0.610150},{0.784667, 0.912541, 0.607566},{0.779254, 0.910204, 0.604983},{0.773841, 0.907866, 0.602399},{0.768428, 0.905529, 0.599815},{0.763014, 0.903191, 0.597232},{0.757601, 0.900854, 0.594648},{0.752188, 0.898516, 0.592065},{0.746774, 0.896178, 0.589481},{0.741361, 0.893841, 0.586897},{0.735948, 0.891503, 0.584314},{0.730534, 0.889166, 0.581730},{0.725121, 0.886828, 0.579146},{0.719708, 0.884491, 0.576563},{0.714295, 0.882153, 0.573979},{0.708881, 0.879815, 0.571396},{0.703468, 0.877478, 0.568812},{0.698055, 0.875140, 0.566228},{0.692641, 0.872803, 0.563645},{0.687228, 0.870465, 0.561061},{0.681815, 0.868128, 0.558478},{0.675986, 0.865606, 0.555894},{0.669466, 0.862776, 0.553310},{0.662945, 0.859946, 0.550727},{0.656424, 0.857116, 0.548143},{0.649904, 0.854287, 0.545559},{0.643383, 0.851457, 0.542976},{0.636863, 0.848627, 0.540392},{0.630342, 0.845798, 0.537809},{0.623822, 0.842968, 0.535225},{0.617301, 0.840138, 0.532641},{0.610780, 0.837309, 0.530058},{0.604260, 0.834479, 0.527474},{0.597739, 0.831649, 0.524890},{0.591219, 0.828820, 0.522307},{0.584698, 0.825990, 0.519723},{0.578178, 0.823160, 0.517140},{0.571657, 0.820331, 0.514556},{0.565136, 0.817501, 0.511972},{0.558616, 0.814671, 0.509389},{0.552095, 0.811842, 0.506805},{0.545575, 0.809012, 0.504221},{0.539054, 0.806182, 0.501638},{0.532534, 0.803353, 0.499054},{0.526013, 0.800523, 0.496471},{0.519493, 0.797693, 0.493887},{0.512972, 0.794864, 0.491303},{0.506451, 0.792034, 0.488720},{0.499931, 0.789204, 0.486136},{0.493410, 0.786374, 0.483552},{0.486890, 0.783545, 0.480969},{0.480369, 0.780715, 0.478385},{0.473849, 0.777885, 0.475802},{0.467205, 0.774810, 0.472787},{0.460438, 0.771488, 0.469343},{0.453672, 0.768166, 0.465898},{0.446905, 0.764844, 0.462453},{0.440138, 0.761522, 0.459008},{0.433372, 0.758201, 0.455563},{0.426605, 0.754879, 0.452118},{0.419839, 0.751557, 0.448674},{0.413072, 0.748235, 0.445229},{0.406305, 0.744913, 0.441784},{0.399539, 0.741592, 0.438339},{0.392772, 0.738270, 0.434894},{0.386005, 0.734948, 0.431449},{0.379239, 0.731626, 0.428005},{0.372472, 0.728304, 0.424560},{0.365705, 0.724983, 0.421115},{0.358939, 0.721661, 0.417670},{0.352172, 0.718339, 0.414225},{0.345406, 0.715017, 0.410780},{0.338639, 0.711696, 0.407336},{0.331872, 0.708374, 0.403891},{0.325106, 0.705052, 0.400446},{0.318339, 0.701730, 0.397001},{0.311572, 0.698408, 0.393556},{0.304806, 0.695087, 0.390111},{0.298039, 0.691765, 0.386667},{0.291273, 0.688443, 0.383222},{0.284506, 0.685121, 0.379777},{0.277739, 0.681799, 0.376332},{0.270973, 0.678478, 0.372887},{0.264206, 0.675156, 0.369443},{0.257439, 0.671834, 0.365998},{0.252595, 0.667589, 0.362707},{0.248904, 0.662791, 0.359508},{0.245213, 0.657993, 0.356309},{0.241522, 0.653195, 0.353110},{0.237832, 0.648397, 0.349912},{0.234141, 0.643599, 0.346713},{0.230450, 0.638800, 0.343514},{0.226759, 0.634002, 0.340315},{0.223068, 0.629204, 0.337116},{0.219377, 0.624406, 0.333918},{0.215686, 0.619608, 0.330719},{0.211995, 0.614810, 0.327520},{0.208304, 0.610012, 0.324321},{0.204614, 0.605213, 0.321123},{0.200923, 0.600415, 0.317924},{0.197232, 0.595617, 0.314725},{0.193541, 0.590819, 0.311526},{0.189850, 0.586021, 0.308328},{0.186159, 0.581223, 0.305129},{0.182468, 0.576424, 0.301930},{0.178777, 0.571626, 0.298731},{0.175087, 0.566828, 0.295532},{0.171396, 0.562030, 0.292334},{0.167705, 0.557232, 0.289135},{0.164014, 0.552434, 0.285936},{0.160323, 0.547636, 0.282737},{0.156632, 0.542837, 0.279539},{0.152941, 0.538039, 0.276340},{0.149250, 0.533241, 0.273141},{0.145559, 0.528443, 0.269942},{0.141869, 0.523645, 0.266744},{0.138178, 0.518847, 0.263545},{0.134025, 0.515063, 0.261638},{0.129719, 0.511619, 0.260161},{0.125413, 0.508174, 0.258685},{0.121107, 0.504729, 0.257209},{0.116801, 0.501284, 0.255732},{0.112495, 0.497839, 0.254256},{0.108189, 0.494394, 0.252780},{0.103883, 0.490950, 0.251303},{0.099577, 0.487505, 0.249827},{0.095271, 0.484060, 0.248351},{0.090965, 0.480615, 0.246874},{0.086659, 0.477170, 0.245398},{0.082353, 0.473725, 0.243922},{0.078047, 0.470281, 0.242445},{0.073741, 0.466836, 0.240969},{0.069435, 0.463391, 0.239493},{0.065129, 0.459946, 0.238016},{0.060823, 0.456501, 0.236540},{0.056517, 0.453057, 0.235063},{0.052211, 0.449612, 0.233587},{0.047905, 0.446167, 0.232111},{0.043599, 0.442722, 0.230634},{0.039293, 0.439277, 0.229158},{0.034987, 0.435832, 0.227682},{0.030681, 0.432388, 0.226205},{0.026374, 0.428943, 0.224729},{0.022068, 0.425498, 0.223253},{0.017762, 0.422053, 0.221776},{0.013456, 0.418608, 0.220300},{0.009150, 0.415163, 0.218824},{0.004844, 0.411719, 0.217347},{0.000538, 0.408274, 0.215871},{0.000000, 0.404075, 0.214179},{0.000000, 0.399769, 0.212457},{0.000000, 0.395463, 0.210734},{0.000000, 0.391157, 0.209012},{0.000000, 0.386851, 0.207290},{0.000000, 0.382545, 0.205567},{0.000000, 0.378239, 0.203845},{0.000000, 0.373933, 0.202122},{0.000000, 0.369627, 0.200400},{0.000000, 0.365321, 0.198677},{0.000000, 0.361015, 0.196955},{0.000000, 0.356709, 0.195233},{0.000000, 0.352403, 0.193510},{0.000000, 0.348097, 0.191788},{0.000000, 0.343791, 0.190065},{0.000000, 0.339485, 0.188343},{0.000000, 0.335179, 0.186621},{0.000000, 0.330873, 0.184898},{0.000000, 0.326567, 0.183176},{0.000000, 0.322261, 0.181453},{0.000000, 0.317955, 0.179731},{0.000000, 0.313649, 0.178008},{0.000000, 0.309343, 0.176286},{0.000000, 0.305037, 0.174564},{0.000000, 0.300730, 0.172841},{0.000000, 0.296424, 0.171119},{0.000000, 0.292118, 0.169396},{0.000000, 0.287812, 0.167674},{0.000000, 0.283506, 0.165952},{0.000000, 0.279200, 0.164229},{0.000000, 0.274894, 0.162507},{0.000000, 0.270588, 0.160784}}}, + {"ylgnbu", {{1.000000, 1.000000, 0.850980},{0.997785, 0.999139, 0.846059},{0.995571, 0.998278, 0.841138},{0.993356, 0.997416, 0.836217},{0.991142, 0.996555, 0.831296},{0.988927, 0.995694, 0.826374},{0.986713, 0.994833, 0.821453},{0.984498, 0.993972, 0.816532},{0.982284, 0.993110, 0.811611},{0.980069, 0.992249, 0.806690},{0.977855, 0.991388, 0.801769},{0.975640, 0.990527, 0.796847},{0.973426, 0.989666, 0.791926},{0.971211, 0.988804, 0.787005},{0.968997, 0.987943, 0.782084},{0.966782, 0.987082, 0.777163},{0.964567, 0.986221, 0.772241},{0.962353, 0.985359, 0.767320},{0.960138, 0.984498, 0.762399},{0.957924, 0.983637, 0.757478},{0.955709, 0.982776, 0.752557},{0.953495, 0.981915, 0.747636},{0.951280, 0.981053, 0.742714},{0.949066, 0.980192, 0.737793},{0.946851, 0.979331, 0.732872},{0.944637, 0.978470, 0.727951},{0.942422, 0.977609, 0.723030},{0.940208, 0.976747, 0.718108},{0.937993, 0.975886, 0.713187},{0.935779, 0.975025, 0.708266},{0.933564, 0.974164, 0.703345},{0.931349, 0.973303, 0.698424},{0.928827, 0.972318, 0.694164},{0.924152, 0.970473, 0.694533},{0.919477, 0.968627, 0.694902},{0.914802, 0.966782, 0.695271},{0.910127, 0.964937, 0.695640},{0.905452, 0.963091, 0.696009},{0.900777, 0.961246, 0.696378},{0.896101, 0.959400, 0.696747},{0.891426, 0.957555, 0.697116},{0.886751, 0.955709, 0.697486},{0.882076, 0.953864, 0.697855},{0.877401, 0.952018, 0.698224},{0.872726, 0.950173, 0.698593},{0.868051, 0.948328, 0.698962},{0.863376, 0.946482, 0.699331},{0.858700, 0.944637, 0.699700},{0.854025, 0.942791, 0.700069},{0.849350, 0.940946, 0.700438},{0.844675, 0.939100, 0.700807},{0.840000, 0.937255, 0.701176},{0.835325, 0.935409, 0.701546},{0.830650, 0.933564, 0.701915},{0.825975, 0.931719, 0.702284},{0.821300, 0.929873, 0.702653},{0.816624, 0.928028, 0.703022},{0.811949, 0.926182, 0.703391},{0.807274, 0.924337, 0.703760},{0.802599, 0.922491, 0.704129},{0.797924, 0.920646, 0.704498},{0.793249, 0.918800, 0.704867},{0.788574, 0.916955, 0.705236},{0.783899, 0.915110, 0.705606},{0.778178, 0.912864, 0.706098},{0.769319, 0.909419, 0.706959},{0.760461, 0.905975, 0.707820},{0.751603, 0.902530, 0.708681},{0.742745, 0.899085, 0.709542},{0.733887, 0.895640, 0.710404},{0.725029, 0.892195, 0.711265},{0.716171, 0.888750, 0.712126},{0.707313, 0.885306, 0.712987},{0.698454, 0.881861, 0.713849},{0.689596, 0.878416, 0.714710},{0.680738, 0.874971, 0.715571},{0.671880, 0.871526, 0.716432},{0.663022, 0.868082, 0.717293},{0.654164, 0.864637, 0.718155},{0.645306, 0.861192, 0.719016},{0.636448, 0.857747, 0.719877},{0.627589, 0.854302, 0.720738},{0.618731, 0.850857, 0.721599},{0.609873, 0.847413, 0.722461},{0.601015, 0.843968, 0.723322},{0.592157, 0.840523, 0.724183},{0.583299, 0.837078, 0.725044},{0.574441, 0.833633, 0.725905},{0.565582, 0.830188, 0.726767},{0.556724, 0.826744, 0.727628},{0.547866, 0.823299, 0.728489},{0.539008, 0.819854, 0.729350},{0.530150, 0.816409, 0.730211},{0.521292, 0.812964, 0.731073},{0.512434, 0.809519, 0.731934},{0.503576, 0.806075, 0.732795},{0.495179, 0.802860, 0.733749},{0.487551, 0.800031, 0.734856},{0.479923, 0.797201, 0.735963},{0.472295, 0.794371, 0.737070},{0.464667, 0.791542, 0.738178},{0.457040, 0.788712, 0.739285},{0.449412, 0.785882, 0.740392},{0.441784, 0.783053, 0.741499},{0.434156, 0.780223, 0.742607},{0.426528, 0.777393, 0.743714},{0.418900, 0.774564, 0.744821},{0.411273, 0.771734, 0.745928},{0.403645, 0.768904, 0.747036},{0.396017, 0.766075, 0.748143},{0.388389, 0.763245, 0.749250},{0.380761, 0.760415, 0.750358},{0.373133, 0.757586, 0.751465},{0.365506, 0.754756, 0.752572},{0.357878, 0.751926, 0.753679},{0.350250, 0.749097, 0.754787},{0.342622, 0.746267, 0.755894},{0.334994, 0.743437, 0.757001},{0.327366, 0.740607, 0.758108},{0.319739, 0.737778, 0.759216},{0.312111, 0.734948, 0.760323},{0.304483, 0.732118, 0.761430},{0.296855, 0.729289, 0.762537},{0.289227, 0.726459, 0.763645},{0.281599, 0.723629, 0.764752},{0.273972, 0.720800, 0.765859},{0.266344, 0.717970, 0.766967},{0.258716, 0.715140, 0.768074},{0.252687, 0.711449, 0.768381},{0.248258, 0.706897, 0.767889},{0.243829, 0.702345, 0.767397},{0.239400, 0.697793, 0.766905},{0.234971, 0.693241, 0.766413},{0.230542, 0.688689, 0.765921},{0.226113, 0.684137, 0.765429},{0.221684, 0.679585, 0.764937},{0.217255, 0.675033, 0.764444},{0.212826, 0.670481, 0.763952},{0.208397, 0.665928, 0.763460},{0.203968, 0.661376, 0.762968},{0.199539, 0.656824, 0.762476},{0.195110, 0.652272, 0.761984},{0.190681, 0.647720, 0.761492},{0.186251, 0.643168, 0.761000},{0.181822, 0.638616, 0.760507},{0.177393, 0.634064, 0.760015},{0.172964, 0.629512, 0.759523},{0.168535, 0.624960, 0.759031},{0.164106, 0.620408, 0.758539},{0.159677, 0.615855, 0.758047},{0.155248, 0.611303, 0.757555},{0.150819, 0.606751, 0.757063},{0.146390, 0.602199, 0.756571},{0.141961, 0.597647, 0.756078},{0.137532, 0.593095, 0.755586},{0.133103, 0.588543, 0.755094},{0.128674, 0.583991, 0.754602},{0.124245, 0.579439, 0.754110},{0.119815, 0.574887, 0.753618},{0.115386, 0.570334, 0.753126},{0.114110, 0.564706, 0.751096},{0.114725, 0.558431, 0.748143},{0.115340, 0.552157, 0.745190},{0.115955, 0.545882, 0.742238},{0.116571, 0.539608, 0.739285},{0.117186, 0.533333, 0.736332},{0.117801, 0.527059, 0.733379},{0.118416, 0.520784, 0.730427},{0.119031, 0.514510, 0.727474},{0.119646, 0.508235, 0.724521},{0.120261, 0.501961, 0.721569},{0.120877, 0.495686, 0.718616},{0.121492, 0.489412, 0.715663},{0.122107, 0.483137, 0.712710},{0.122722, 0.476863, 0.709758},{0.123337, 0.470588, 0.706805},{0.123952, 0.464314, 0.703852},{0.124567, 0.458039, 0.700900},{0.125183, 0.451765, 0.697947},{0.125798, 0.445490, 0.694994},{0.126413, 0.439216, 0.692042},{0.127028, 0.432941, 0.689089},{0.127643, 0.426667, 0.686136},{0.128258, 0.420392, 0.683183},{0.128874, 0.414118, 0.680231},{0.129489, 0.407843, 0.677278},{0.130104, 0.401569, 0.674325},{0.130719, 0.395294, 0.671373},{0.131334, 0.389020, 0.668420},{0.131949, 0.382745, 0.665467},{0.132564, 0.376471, 0.662514},{0.133180, 0.370196, 0.659562},{0.133610, 0.364752, 0.656978},{0.133979, 0.359585, 0.654517},{0.134348, 0.354418, 0.652057},{0.134717, 0.349250, 0.649596},{0.135087, 0.344083, 0.647136},{0.135456, 0.338916, 0.644675},{0.135825, 0.333749, 0.642215},{0.136194, 0.328581, 0.639754},{0.136563, 0.323414, 0.637293},{0.136932, 0.318247, 0.634833},{0.137301, 0.313080, 0.632372},{0.137670, 0.307912, 0.629912},{0.138039, 0.302745, 0.627451},{0.138408, 0.297578, 0.624990},{0.138777, 0.292411, 0.622530},{0.139146, 0.287243, 0.620069},{0.139516, 0.282076, 0.617609},{0.139885, 0.276909, 0.615148},{0.140254, 0.271742, 0.612687},{0.140623, 0.266574, 0.610227},{0.140992, 0.261407, 0.607766},{0.141361, 0.256240, 0.605306},{0.141730, 0.251073, 0.602845},{0.142099, 0.245905, 0.600384},{0.142468, 0.240738, 0.597924},{0.142837, 0.235571, 0.595463},{0.143206, 0.230404, 0.593003},{0.143576, 0.225236, 0.590542},{0.143945, 0.220069, 0.588082},{0.144314, 0.214902, 0.585621},{0.144683, 0.209735, 0.583160},{0.145052, 0.204567, 0.580700},{0.141976, 0.201446, 0.573933},{0.138408, 0.198616, 0.566551},{0.134840, 0.195786, 0.559170},{0.131273, 0.192957, 0.551788},{0.127705, 0.190127, 0.544406},{0.124137, 0.187297, 0.537024},{0.120569, 0.184468, 0.529642},{0.117001, 0.181638, 0.522261},{0.113433, 0.178808, 0.514879},{0.109865, 0.175978, 0.507497},{0.106298, 0.173149, 0.500115},{0.102730, 0.170319, 0.492734},{0.099162, 0.167489, 0.485352},{0.095594, 0.164660, 0.477970},{0.092026, 0.161830, 0.470588},{0.088458, 0.159000, 0.463206},{0.084890, 0.156171, 0.455825},{0.081323, 0.153341, 0.448443},{0.077755, 0.150511, 0.441061},{0.074187, 0.147682, 0.433679},{0.070619, 0.144852, 0.426298},{0.067051, 0.142022, 0.418916},{0.063483, 0.139193, 0.411534},{0.059915, 0.136363, 0.404152},{0.056348, 0.133533, 0.396770},{0.052780, 0.130704, 0.389389},{0.049212, 0.127874, 0.382007},{0.045644, 0.125044, 0.374625},{0.042076, 0.122215, 0.367243},{0.038508, 0.119385, 0.359862},{0.034940, 0.116555, 0.352480},{0.031373, 0.113725, 0.345098}}}, + {"piyg", {{0.556863, 0.003922, 0.321569},{0.565321, 0.007920, 0.328181},{0.573779, 0.011918, 0.334794},{0.582238, 0.015917, 0.341407},{0.590696, 0.019915, 0.348020},{0.599154, 0.023914, 0.354633},{0.607612, 0.027912, 0.361246},{0.616071, 0.031911, 0.367859},{0.624529, 0.035909, 0.374471},{0.632987, 0.039908, 0.381084},{0.641446, 0.043906, 0.387697},{0.649904, 0.047905, 0.394310},{0.658362, 0.051903, 0.400923},{0.666820, 0.055902, 0.407536},{0.675279, 0.059900, 0.414148},{0.683737, 0.063899, 0.420761},{0.692195, 0.067897, 0.427374},{0.700654, 0.071895, 0.433987},{0.709112, 0.075894, 0.440600},{0.717570, 0.079892, 0.447213},{0.726028, 0.083891, 0.453825},{0.734487, 0.087889, 0.460438},{0.742945, 0.091888, 0.467051},{0.751403, 0.095886, 0.473664},{0.759862, 0.099885, 0.480277},{0.768320, 0.103883, 0.486890},{0.774471, 0.112957, 0.493964},{0.778316, 0.127105, 0.501499},{0.782161, 0.141253, 0.509035},{0.786005, 0.155402, 0.516571},{0.789850, 0.169550, 0.524106},{0.793695, 0.183699, 0.531642},{0.797539, 0.197847, 0.539177},{0.801384, 0.211995, 0.546713},{0.805229, 0.226144, 0.554248},{0.809073, 0.240292, 0.561784},{0.812918, 0.254441, 0.569319},{0.816763, 0.268589, 0.576855},{0.820607, 0.282737, 0.584391},{0.824452, 0.296886, 0.591926},{0.828297, 0.311034, 0.599462},{0.832141, 0.325183, 0.606997},{0.835986, 0.339331, 0.614533},{0.839831, 0.353479, 0.622068},{0.843676, 0.367628, 0.629604},{0.847520, 0.381776, 0.637140},{0.851365, 0.395925, 0.644675},{0.855210, 0.410073, 0.652211},{0.859054, 0.424221, 0.659746},{0.862899, 0.438370, 0.667282},{0.866744, 0.452518, 0.674817},{0.870588, 0.466667, 0.682353},{0.873510, 0.476355, 0.689120},{0.876432, 0.486044, 0.695886},{0.879354, 0.495732, 0.702653},{0.882276, 0.505421, 0.709419},{0.885198, 0.515110, 0.716186},{0.888120, 0.524798, 0.722953},{0.891042, 0.534487, 0.729719},{0.893964, 0.544175, 0.736486},{0.896886, 0.553864, 0.743253},{0.899808, 0.563552, 0.750019},{0.902730, 0.573241, 0.756786},{0.905652, 0.582930, 0.763552},{0.908574, 0.592618, 0.770319},{0.911496, 0.602307, 0.777086},{0.914418, 0.611995, 0.783852},{0.917339, 0.621684, 0.790619},{0.920261, 0.631373, 0.797386},{0.923183, 0.641061, 0.804152},{0.926105, 0.650750, 0.810919},{0.929027, 0.660438, 0.817686},{0.931949, 0.670127, 0.824452},{0.934871, 0.679815, 0.831219},{0.937793, 0.689504, 0.837985},{0.940715, 0.699193, 0.844752},{0.943637, 0.708881, 0.851519},{0.946021, 0.716955, 0.856517},{0.947866, 0.723414, 0.859746},{0.949712, 0.729873, 0.862976},{0.951557, 0.736332, 0.866205},{0.953403, 0.742791, 0.869435},{0.955248, 0.749250, 0.872664},{0.957093, 0.755709, 0.875894},{0.958939, 0.762168, 0.879123},{0.960784, 0.768627, 0.882353},{0.962630, 0.775087, 0.885582},{0.964475, 0.781546, 0.888812},{0.966321, 0.788005, 0.892042},{0.968166, 0.794464, 0.895271},{0.970012, 0.800923, 0.898501},{0.971857, 0.807382, 0.901730},{0.973702, 0.813841, 0.904960},{0.975548, 0.820300, 0.908189},{0.977393, 0.826759, 0.911419},{0.979239, 0.833218, 0.914648},{0.981084, 0.839677, 0.917878},{0.982930, 0.846136, 0.921107},{0.984775, 0.852595, 0.924337},{0.986621, 0.859054, 0.927566},{0.988466, 0.865513, 0.930796},{0.990311, 0.871972, 0.934025},{0.992157, 0.878431, 0.937255},{0.991234, 0.881968, 0.938485},{0.990311, 0.885506, 0.939715},{0.989389, 0.889043, 0.940946},{0.988466, 0.892580, 0.942176},{0.987543, 0.896117, 0.943406},{0.986621, 0.899654, 0.944637},{0.985698, 0.903191, 0.945867},{0.984775, 0.906728, 0.947097},{0.983852, 0.910265, 0.948328},{0.982930, 0.913802, 0.949558},{0.982007, 0.917339, 0.950788},{0.981084, 0.920877, 0.952018},{0.980161, 0.924414, 0.953249},{0.979239, 0.927951, 0.954479},{0.978316, 0.931488, 0.955709},{0.977393, 0.935025, 0.956940},{0.976471, 0.938562, 0.958170},{0.975548, 0.942099, 0.959400},{0.974625, 0.945636, 0.960631},{0.973702, 0.949173, 0.961861},{0.972780, 0.952710, 0.963091},{0.971857, 0.956248, 0.964321},{0.970934, 0.959785, 0.965552},{0.970012, 0.963322, 0.966782},{0.969089, 0.966859, 0.968012},{0.967320, 0.968474, 0.965629},{0.964706, 0.968166, 0.959631},{0.962092, 0.967859, 0.953633},{0.959477, 0.967551, 0.947636},{0.956863, 0.967243, 0.941638},{0.954248, 0.966936, 0.935640},{0.951634, 0.966628, 0.929642},{0.949020, 0.966321, 0.923645},{0.946405, 0.966013, 0.917647},{0.943791, 0.965705, 0.911649},{0.941176, 0.965398, 0.905652},{0.938562, 0.965090, 0.899654},{0.935948, 0.964783, 0.893656},{0.933333, 0.964475, 0.887659},{0.930719, 0.964168, 0.881661},{0.928105, 0.963860, 0.875663},{0.925490, 0.963552, 0.869666},{0.922876, 0.963245, 0.863668},{0.920261, 0.962937, 0.857670},{0.917647, 0.962630, 0.851672},{0.915033, 0.962322, 0.845675},{0.912418, 0.962015, 0.839677},{0.909804, 0.961707, 0.833679},{0.907190, 0.961399, 0.827682},{0.904575, 0.961092, 0.821684},{0.901961, 0.960784, 0.815686},{0.894887, 0.957709, 0.804306},{0.887812, 0.954633, 0.792926},{0.880738, 0.951557, 0.781546},{0.873664, 0.948481, 0.770165},{0.866590, 0.945406, 0.758785},{0.859516, 0.942330, 0.747405},{0.852441, 0.939254, 0.736025},{0.845367, 0.936178, 0.724644},{0.838293, 0.933103, 0.713264},{0.831219, 0.930027, 0.701884},{0.824145, 0.926951, 0.690504},{0.817070, 0.923875, 0.679123},{0.809996, 0.920800, 0.667743},{0.802922, 0.917724, 0.656363},{0.795848, 0.914648, 0.644983},{0.788774, 0.911572, 0.633602},{0.781699, 0.908497, 0.622222},{0.774625, 0.905421, 0.610842},{0.767551, 0.902345, 0.599462},{0.760477, 0.899270, 0.588082},{0.753403, 0.896194, 0.576701},{0.746328, 0.893118, 0.565321},{0.739254, 0.890042, 0.553941},{0.732180, 0.886967, 0.542561},{0.725106, 0.883891, 0.531180},{0.717186, 0.879508, 0.520185},{0.708420, 0.873818, 0.509573},{0.699654, 0.868128, 0.498962},{0.690888, 0.862438, 0.488351},{0.682122, 0.856747, 0.477739},{0.673356, 0.851057, 0.467128},{0.664591, 0.845367, 0.456517},{0.655825, 0.839677, 0.445905},{0.647059, 0.833987, 0.435294},{0.638293, 0.828297, 0.424683},{0.629527, 0.822607, 0.414072},{0.620761, 0.816917, 0.403460},{0.611995, 0.811226, 0.392849},{0.603230, 0.805536, 0.382238},{0.594464, 0.799846, 0.371626},{0.585698, 0.794156, 0.361015},{0.576932, 0.788466, 0.350404},{0.568166, 0.782776, 0.339792},{0.559400, 0.777086, 0.329181},{0.550634, 0.771396, 0.318570},{0.541869, 0.765705, 0.307958},{0.533103, 0.760015, 0.297347},{0.524337, 0.754325, 0.286736},{0.515571, 0.748635, 0.276125},{0.506805, 0.742945, 0.265513},{0.498039, 0.737255, 0.254902},{0.490350, 0.730796, 0.249981},{0.482661, 0.724337, 0.245060},{0.474971, 0.717878, 0.240138},{0.467282, 0.711419, 0.235217},{0.459592, 0.704960, 0.230296},{0.451903, 0.698501, 0.225375},{0.444214, 0.692042, 0.220454},{0.436524, 0.685582, 0.215532},{0.428835, 0.679123, 0.210611},{0.421146, 0.672664, 0.205690},{0.413456, 0.666205, 0.200769},{0.405767, 0.659746, 0.195848},{0.398078, 0.653287, 0.190927},{0.390388, 0.646828, 0.186005},{0.382699, 0.640369, 0.181084},{0.375010, 0.633910, 0.176163},{0.367320, 0.627451, 0.171242},{0.359631, 0.620992, 0.166321},{0.351942, 0.614533, 0.161399},{0.344252, 0.608074, 0.156478},{0.336563, 0.601615, 0.151557},{0.328874, 0.595156, 0.146636},{0.321184, 0.588697, 0.141715},{0.313495, 0.582238, 0.136794},{0.305805, 0.575779, 0.131872},{0.299039, 0.569012, 0.128797},{0.293195, 0.561938, 0.127566},{0.287351, 0.554864, 0.126336},{0.281507, 0.547789, 0.125106},{0.275663, 0.540715, 0.123875},{0.269819, 0.533641, 0.122645},{0.263975, 0.526567, 0.121415},{0.258131, 0.519493, 0.120185},{0.252288, 0.512418, 0.118954},{0.246444, 0.505344, 0.117724},{0.240600, 0.498270, 0.116494},{0.234756, 0.491196, 0.115263},{0.228912, 0.484121, 0.114033},{0.223068, 0.477047, 0.112803},{0.217224, 0.469973, 0.111572},{0.211380, 0.462899, 0.110342},{0.205536, 0.455825, 0.109112},{0.199692, 0.448750, 0.107882},{0.193849, 0.441676, 0.106651},{0.188005, 0.434602, 0.105421},{0.182161, 0.427528, 0.104191},{0.176317, 0.420454, 0.102960},{0.170473, 0.413379, 0.101730},{0.164629, 0.406305, 0.100500},{0.158785, 0.399231, 0.099270},{0.152941, 0.392157, 0.098039}}}, + {"bwr", {{0.000000, 0.000000, 1.000000},{0.007843, 0.007843, 1.000000},{0.015686, 0.015686, 1.000000},{0.023529, 0.023529, 1.000000},{0.031373, 0.031373, 1.000000},{0.039216, 0.039216, 1.000000},{0.047059, 0.047059, 1.000000},{0.054902, 0.054902, 1.000000},{0.062745, 0.062745, 1.000000},{0.070588, 0.070588, 1.000000},{0.078431, 0.078431, 1.000000},{0.086275, 0.086275, 1.000000},{0.094118, 0.094118, 1.000000},{0.101961, 0.101961, 1.000000},{0.109804, 0.109804, 1.000000},{0.117647, 0.117647, 1.000000},{0.125490, 0.125490, 1.000000},{0.133333, 0.133333, 1.000000},{0.141176, 0.141176, 1.000000},{0.149020, 0.149020, 1.000000},{0.156863, 0.156863, 1.000000},{0.164706, 0.164706, 1.000000},{0.172549, 0.172549, 1.000000},{0.180392, 0.180392, 1.000000},{0.188235, 0.188235, 1.000000},{0.196078, 0.196078, 1.000000},{0.203922, 0.203922, 1.000000},{0.211765, 0.211765, 1.000000},{0.219608, 0.219608, 1.000000},{0.227451, 0.227451, 1.000000},{0.235294, 0.235294, 1.000000},{0.243137, 0.243137, 1.000000},{0.250980, 0.250980, 1.000000},{0.258824, 0.258824, 1.000000},{0.266667, 0.266667, 1.000000},{0.274510, 0.274510, 1.000000},{0.282353, 0.282353, 1.000000},{0.290196, 0.290196, 1.000000},{0.298039, 0.298039, 1.000000},{0.305882, 0.305882, 1.000000},{0.313725, 0.313725, 1.000000},{0.321569, 0.321569, 1.000000},{0.329412, 0.329412, 1.000000},{0.337255, 0.337255, 1.000000},{0.345098, 0.345098, 1.000000},{0.352941, 0.352941, 1.000000},{0.360784, 0.360784, 1.000000},{0.368627, 0.368627, 1.000000},{0.376471, 0.376471, 1.000000},{0.384314, 0.384314, 1.000000},{0.392157, 0.392157, 1.000000},{0.400000, 0.400000, 1.000000},{0.407843, 0.407843, 1.000000},{0.415686, 0.415686, 1.000000},{0.423529, 0.423529, 1.000000},{0.431373, 0.431373, 1.000000},{0.439216, 0.439216, 1.000000},{0.447059, 0.447059, 1.000000},{0.454902, 0.454902, 1.000000},{0.462745, 0.462745, 1.000000},{0.470588, 0.470588, 1.000000},{0.478431, 0.478431, 1.000000},{0.486275, 0.486275, 1.000000},{0.494118, 0.494118, 1.000000},{0.501961, 0.501961, 1.000000},{0.509804, 0.509804, 1.000000},{0.517647, 0.517647, 1.000000},{0.525490, 0.525490, 1.000000},{0.533333, 0.533333, 1.000000},{0.541176, 0.541176, 1.000000},{0.549020, 0.549020, 1.000000},{0.556863, 0.556863, 1.000000},{0.564706, 0.564706, 1.000000},{0.572549, 0.572549, 1.000000},{0.580392, 0.580392, 1.000000},{0.588235, 0.588235, 1.000000},{0.596078, 0.596078, 1.000000},{0.603922, 0.603922, 1.000000},{0.611765, 0.611765, 1.000000},{0.619608, 0.619608, 1.000000},{0.627451, 0.627451, 1.000000},{0.635294, 0.635294, 1.000000},{0.643137, 0.643137, 1.000000},{0.650980, 0.650980, 1.000000},{0.658824, 0.658824, 1.000000},{0.666667, 0.666667, 1.000000},{0.674510, 0.674510, 1.000000},{0.682353, 0.682353, 1.000000},{0.690196, 0.690196, 1.000000},{0.698039, 0.698039, 1.000000},{0.705882, 0.705882, 1.000000},{0.713725, 0.713725, 1.000000},{0.721569, 0.721569, 1.000000},{0.729412, 0.729412, 1.000000},{0.737255, 0.737255, 1.000000},{0.745098, 0.745098, 1.000000},{0.752941, 0.752941, 1.000000},{0.760784, 0.760784, 1.000000},{0.768627, 0.768627, 1.000000},{0.776471, 0.776471, 1.000000},{0.784314, 0.784314, 1.000000},{0.792157, 0.792157, 1.000000},{0.800000, 0.800000, 1.000000},{0.807843, 0.807843, 1.000000},{0.815686, 0.815686, 1.000000},{0.823529, 0.823529, 1.000000},{0.831373, 0.831373, 1.000000},{0.839216, 0.839216, 1.000000},{0.847059, 0.847059, 1.000000},{0.854902, 0.854902, 1.000000},{0.862745, 0.862745, 1.000000},{0.870588, 0.870588, 1.000000},{0.878431, 0.878431, 1.000000},{0.886275, 0.886275, 1.000000},{0.894118, 0.894118, 1.000000},{0.901961, 0.901961, 1.000000},{0.909804, 0.909804, 1.000000},{0.917647, 0.917647, 1.000000},{0.925490, 0.925490, 1.000000},{0.933333, 0.933333, 1.000000},{0.941176, 0.941176, 1.000000},{0.949020, 0.949020, 1.000000},{0.956863, 0.956863, 1.000000},{0.964706, 0.964706, 1.000000},{0.972549, 0.972549, 1.000000},{0.980392, 0.980392, 1.000000},{0.988235, 0.988235, 1.000000},{0.996078, 0.996078, 1.000000},{1.000000, 0.996078, 0.996078},{1.000000, 0.988235, 0.988235},{1.000000, 0.980392, 0.980392},{1.000000, 0.972549, 0.972549},{1.000000, 0.964706, 0.964706},{1.000000, 0.956863, 0.956863},{1.000000, 0.949020, 0.949020},{1.000000, 0.941176, 0.941176},{1.000000, 0.933333, 0.933333},{1.000000, 0.925490, 0.925490},{1.000000, 0.917647, 0.917647},{1.000000, 0.909804, 0.909804},{1.000000, 0.901961, 0.901961},{1.000000, 0.894118, 0.894118},{1.000000, 0.886275, 0.886275},{1.000000, 0.878431, 0.878431},{1.000000, 0.870588, 0.870588},{1.000000, 0.862745, 0.862745},{1.000000, 0.854902, 0.854902},{1.000000, 0.847059, 0.847059},{1.000000, 0.839216, 0.839216},{1.000000, 0.831373, 0.831373},{1.000000, 0.823529, 0.823529},{1.000000, 0.815686, 0.815686},{1.000000, 0.807843, 0.807843},{1.000000, 0.800000, 0.800000},{1.000000, 0.792157, 0.792157},{1.000000, 0.784314, 0.784314},{1.000000, 0.776471, 0.776471},{1.000000, 0.768627, 0.768627},{1.000000, 0.760784, 0.760784},{1.000000, 0.752941, 0.752941},{1.000000, 0.745098, 0.745098},{1.000000, 0.737255, 0.737255},{1.000000, 0.729412, 0.729412},{1.000000, 0.721569, 0.721569},{1.000000, 0.713725, 0.713725},{1.000000, 0.705882, 0.705882},{1.000000, 0.698039, 0.698039},{1.000000, 0.690196, 0.690196},{1.000000, 0.682353, 0.682353},{1.000000, 0.674510, 0.674510},{1.000000, 0.666667, 0.666667},{1.000000, 0.658824, 0.658824},{1.000000, 0.650980, 0.650980},{1.000000, 0.643137, 0.643137},{1.000000, 0.635294, 0.635294},{1.000000, 0.627451, 0.627451},{1.000000, 0.619608, 0.619608},{1.000000, 0.611765, 0.611765},{1.000000, 0.603922, 0.603922},{1.000000, 0.596078, 0.596078},{1.000000, 0.588235, 0.588235},{1.000000, 0.580392, 0.580392},{1.000000, 0.572549, 0.572549},{1.000000, 0.564706, 0.564706},{1.000000, 0.556863, 0.556863},{1.000000, 0.549020, 0.549020},{1.000000, 0.541176, 0.541176},{1.000000, 0.533333, 0.533333},{1.000000, 0.525490, 0.525490},{1.000000, 0.517647, 0.517647},{1.000000, 0.509804, 0.509804},{1.000000, 0.501961, 0.501961},{1.000000, 0.494118, 0.494118},{1.000000, 0.486275, 0.486275},{1.000000, 0.478431, 0.478431},{1.000000, 0.470588, 0.470588},{1.000000, 0.462745, 0.462745},{1.000000, 0.454902, 0.454902},{1.000000, 0.447059, 0.447059},{1.000000, 0.439216, 0.439216},{1.000000, 0.431373, 0.431373},{1.000000, 0.423529, 0.423529},{1.000000, 0.415686, 0.415686},{1.000000, 0.407843, 0.407843},{1.000000, 0.400000, 0.400000},{1.000000, 0.392157, 0.392157},{1.000000, 0.384314, 0.384314},{1.000000, 0.376471, 0.376471},{1.000000, 0.368627, 0.368627},{1.000000, 0.360784, 0.360784},{1.000000, 0.352941, 0.352941},{1.000000, 0.345098, 0.345098},{1.000000, 0.337255, 0.337255},{1.000000, 0.329412, 0.329412},{1.000000, 0.321569, 0.321569},{1.000000, 0.313725, 0.313725},{1.000000, 0.305882, 0.305882},{1.000000, 0.298039, 0.298039},{1.000000, 0.290196, 0.290196},{1.000000, 0.282353, 0.282353},{1.000000, 0.274510, 0.274510},{1.000000, 0.266667, 0.266667},{1.000000, 0.258824, 0.258824},{1.000000, 0.250980, 0.250980},{1.000000, 0.243137, 0.243137},{1.000000, 0.235294, 0.235294},{1.000000, 0.227451, 0.227451},{1.000000, 0.219608, 0.219608},{1.000000, 0.211765, 0.211765},{1.000000, 0.203922, 0.203922},{1.000000, 0.196078, 0.196078},{1.000000, 0.188235, 0.188235},{1.000000, 0.180392, 0.180392},{1.000000, 0.172549, 0.172549},{1.000000, 0.164706, 0.164706},{1.000000, 0.156863, 0.156863},{1.000000, 0.149020, 0.149020},{1.000000, 0.141176, 0.141176},{1.000000, 0.133333, 0.133333},{1.000000, 0.125490, 0.125490},{1.000000, 0.117647, 0.117647},{1.000000, 0.109804, 0.109804},{1.000000, 0.101961, 0.101961},{1.000000, 0.094118, 0.094118},{1.000000, 0.086275, 0.086275},{1.000000, 0.078431, 0.078431},{1.000000, 0.070588, 0.070588},{1.000000, 0.062745, 0.062745},{1.000000, 0.054902, 0.054902},{1.000000, 0.047059, 0.047059},{1.000000, 0.039216, 0.039216},{1.000000, 0.031373, 0.031373},{1.000000, 0.023529, 0.023529},{1.000000, 0.015686, 0.015686},{1.000000, 0.007843, 0.007843},{1.000000, 0.000000, 0.000000}}}, + {"seismic", {{0.000000, 0.000000, 0.300000},{0.000000, 0.000000, 0.310980},{0.000000, 0.000000, 0.321961},{0.000000, 0.000000, 0.332941},{0.000000, 0.000000, 0.343922},{0.000000, 0.000000, 0.354902},{0.000000, 0.000000, 0.365882},{0.000000, 0.000000, 0.376863},{0.000000, 0.000000, 0.387843},{0.000000, 0.000000, 0.398824},{0.000000, 0.000000, 0.409804},{0.000000, 0.000000, 0.420784},{0.000000, 0.000000, 0.431765},{0.000000, 0.000000, 0.442745},{0.000000, 0.000000, 0.453725},{0.000000, 0.000000, 0.464706},{0.000000, 0.000000, 0.475686},{0.000000, 0.000000, 0.486667},{0.000000, 0.000000, 0.497647},{0.000000, 0.000000, 0.508627},{0.000000, 0.000000, 0.519608},{0.000000, 0.000000, 0.530588},{0.000000, 0.000000, 0.541569},{0.000000, 0.000000, 0.552549},{0.000000, 0.000000, 0.563529},{0.000000, 0.000000, 0.574510},{0.000000, 0.000000, 0.585490},{0.000000, 0.000000, 0.596471},{0.000000, 0.000000, 0.607451},{0.000000, 0.000000, 0.618431},{0.000000, 0.000000, 0.629412},{0.000000, 0.000000, 0.640392},{0.000000, 0.000000, 0.651373},{0.000000, 0.000000, 0.662353},{0.000000, 0.000000, 0.673333},{0.000000, 0.000000, 0.684314},{0.000000, 0.000000, 0.695294},{0.000000, 0.000000, 0.706275},{0.000000, 0.000000, 0.717255},{0.000000, 0.000000, 0.728235},{0.000000, 0.000000, 0.739216},{0.000000, 0.000000, 0.750196},{0.000000, 0.000000, 0.761176},{0.000000, 0.000000, 0.772157},{0.000000, 0.000000, 0.783137},{0.000000, 0.000000, 0.794118},{0.000000, 0.000000, 0.805098},{0.000000, 0.000000, 0.816078},{0.000000, 0.000000, 0.827059},{0.000000, 0.000000, 0.838039},{0.000000, 0.000000, 0.849020},{0.000000, 0.000000, 0.860000},{0.000000, 0.000000, 0.870980},{0.000000, 0.000000, 0.881961},{0.000000, 0.000000, 0.892941},{0.000000, 0.000000, 0.903922},{0.000000, 0.000000, 0.914902},{0.000000, 0.000000, 0.925882},{0.000000, 0.000000, 0.936863},{0.000000, 0.000000, 0.947843},{0.000000, 0.000000, 0.958824},{0.000000, 0.000000, 0.969804},{0.000000, 0.000000, 0.980784},{0.000000, 0.000000, 0.991765},{0.003922, 0.003922, 1.000000},{0.019608, 0.019608, 1.000000},{0.035294, 0.035294, 1.000000},{0.050980, 0.050980, 1.000000},{0.066667, 0.066667, 1.000000},{0.082353, 0.082353, 1.000000},{0.098039, 0.098039, 1.000000},{0.113725, 0.113725, 1.000000},{0.129412, 0.129412, 1.000000},{0.145098, 0.145098, 1.000000},{0.160784, 0.160784, 1.000000},{0.176471, 0.176471, 1.000000},{0.192157, 0.192157, 1.000000},{0.207843, 0.207843, 1.000000},{0.223529, 0.223529, 1.000000},{0.239216, 0.239216, 1.000000},{0.254902, 0.254902, 1.000000},{0.270588, 0.270588, 1.000000},{0.286275, 0.286275, 1.000000},{0.301961, 0.301961, 1.000000},{0.317647, 0.317647, 1.000000},{0.333333, 0.333333, 1.000000},{0.349020, 0.349020, 1.000000},{0.364706, 0.364706, 1.000000},{0.380392, 0.380392, 1.000000},{0.396078, 0.396078, 1.000000},{0.411765, 0.411765, 1.000000},{0.427451, 0.427451, 1.000000},{0.443137, 0.443137, 1.000000},{0.458824, 0.458824, 1.000000},{0.474510, 0.474510, 1.000000},{0.490196, 0.490196, 1.000000},{0.505882, 0.505882, 1.000000},{0.521569, 0.521569, 1.000000},{0.537255, 0.537255, 1.000000},{0.552941, 0.552941, 1.000000},{0.568627, 0.568627, 1.000000},{0.584314, 0.584314, 1.000000},{0.600000, 0.600000, 1.000000},{0.615686, 0.615686, 1.000000},{0.631373, 0.631373, 1.000000},{0.647059, 0.647059, 1.000000},{0.662745, 0.662745, 1.000000},{0.678431, 0.678431, 1.000000},{0.694118, 0.694118, 1.000000},{0.709804, 0.709804, 1.000000},{0.725490, 0.725490, 1.000000},{0.741176, 0.741176, 1.000000},{0.756863, 0.756863, 1.000000},{0.772549, 0.772549, 1.000000},{0.788235, 0.788235, 1.000000},{0.803922, 0.803922, 1.000000},{0.819608, 0.819608, 1.000000},{0.835294, 0.835294, 1.000000},{0.850980, 0.850980, 1.000000},{0.866667, 0.866667, 1.000000},{0.882353, 0.882353, 1.000000},{0.898039, 0.898039, 1.000000},{0.913725, 0.913725, 1.000000},{0.929412, 0.929412, 1.000000},{0.945098, 0.945098, 1.000000},{0.960784, 0.960784, 1.000000},{0.976471, 0.976471, 1.000000},{0.992157, 0.992157, 1.000000},{1.000000, 0.992157, 0.992157},{1.000000, 0.976471, 0.976471},{1.000000, 0.960784, 0.960784},{1.000000, 0.945098, 0.945098},{1.000000, 0.929412, 0.929412},{1.000000, 0.913725, 0.913725},{1.000000, 0.898039, 0.898039},{1.000000, 0.882353, 0.882353},{1.000000, 0.866667, 0.866667},{1.000000, 0.850980, 0.850980},{1.000000, 0.835294, 0.835294},{1.000000, 0.819608, 0.819608},{1.000000, 0.803922, 0.803922},{1.000000, 0.788235, 0.788235},{1.000000, 0.772549, 0.772549},{1.000000, 0.756863, 0.756863},{1.000000, 0.741176, 0.741176},{1.000000, 0.725490, 0.725490},{1.000000, 0.709804, 0.709804},{1.000000, 0.694118, 0.694118},{1.000000, 0.678431, 0.678431},{1.000000, 0.662745, 0.662745},{1.000000, 0.647059, 0.647059},{1.000000, 0.631373, 0.631373},{1.000000, 0.615686, 0.615686},{1.000000, 0.600000, 0.600000},{1.000000, 0.584314, 0.584314},{1.000000, 0.568627, 0.568627},{1.000000, 0.552941, 0.552941},{1.000000, 0.537255, 0.537255},{1.000000, 0.521569, 0.521569},{1.000000, 0.505882, 0.505882},{1.000000, 0.490196, 0.490196},{1.000000, 0.474510, 0.474510},{1.000000, 0.458824, 0.458824},{1.000000, 0.443137, 0.443137},{1.000000, 0.427451, 0.427451},{1.000000, 0.411765, 0.411765},{1.000000, 0.396078, 0.396078},{1.000000, 0.380392, 0.380392},{1.000000, 0.364706, 0.364706},{1.000000, 0.349020, 0.349020},{1.000000, 0.333333, 0.333333},{1.000000, 0.317647, 0.317647},{1.000000, 0.301961, 0.301961},{1.000000, 0.286275, 0.286275},{1.000000, 0.270588, 0.270588},{1.000000, 0.254902, 0.254902},{1.000000, 0.239216, 0.239216},{1.000000, 0.223529, 0.223529},{1.000000, 0.207843, 0.207843},{1.000000, 0.192157, 0.192157},{1.000000, 0.176471, 0.176471},{1.000000, 0.160784, 0.160784},{1.000000, 0.145098, 0.145098},{1.000000, 0.129412, 0.129412},{1.000000, 0.113725, 0.113725},{1.000000, 0.098039, 0.098039},{1.000000, 0.082353, 0.082353},{1.000000, 0.066667, 0.066667},{1.000000, 0.050980, 0.050980},{1.000000, 0.035294, 0.035294},{1.000000, 0.019608, 0.019608},{1.000000, 0.003922, 0.003922},{0.994118, 0.000000, 0.000000},{0.986275, 0.000000, 0.000000},{0.978431, 0.000000, 0.000000},{0.970588, 0.000000, 0.000000},{0.962745, 0.000000, 0.000000},{0.954902, 0.000000, 0.000000},{0.947059, 0.000000, 0.000000},{0.939216, 0.000000, 0.000000},{0.931373, 0.000000, 0.000000},{0.923529, 0.000000, 0.000000},{0.915686, 0.000000, 0.000000},{0.907843, 0.000000, 0.000000},{0.900000, 0.000000, 0.000000},{0.892157, 0.000000, 0.000000},{0.884314, 0.000000, 0.000000},{0.876471, 0.000000, 0.000000},{0.868627, 0.000000, 0.000000},{0.860784, 0.000000, 0.000000},{0.852941, 0.000000, 0.000000},{0.845098, 0.000000, 0.000000},{0.837255, 0.000000, 0.000000},{0.829412, 0.000000, 0.000000},{0.821569, 0.000000, 0.000000},{0.813725, 0.000000, 0.000000},{0.805882, 0.000000, 0.000000},{0.798039, 0.000000, 0.000000},{0.790196, 0.000000, 0.000000},{0.782353, 0.000000, 0.000000},{0.774510, 0.000000, 0.000000},{0.766667, 0.000000, 0.000000},{0.758824, 0.000000, 0.000000},{0.750980, 0.000000, 0.000000},{0.743137, 0.000000, 0.000000},{0.735294, 0.000000, 0.000000},{0.727451, 0.000000, 0.000000},{0.719608, 0.000000, 0.000000},{0.711765, 0.000000, 0.000000},{0.703922, 0.000000, 0.000000},{0.696078, 0.000000, 0.000000},{0.688235, 0.000000, 0.000000},{0.680392, 0.000000, 0.000000},{0.672549, 0.000000, 0.000000},{0.664706, 0.000000, 0.000000},{0.656863, 0.000000, 0.000000},{0.649020, 0.000000, 0.000000},{0.641176, 0.000000, 0.000000},{0.633333, 0.000000, 0.000000},{0.625490, 0.000000, 0.000000},{0.617647, 0.000000, 0.000000},{0.609804, 0.000000, 0.000000},{0.601961, 0.000000, 0.000000},{0.594118, 0.000000, 0.000000},{0.586275, 0.000000, 0.000000},{0.578431, 0.000000, 0.000000},{0.570588, 0.000000, 0.000000},{0.562745, 0.000000, 0.000000},{0.554902, 0.000000, 0.000000},{0.547059, 0.000000, 0.000000},{0.539216, 0.000000, 0.000000},{0.531373, 0.000000, 0.000000},{0.523529, 0.000000, 0.000000},{0.515686, 0.000000, 0.000000},{0.507843, 0.000000, 0.000000},{0.500000, 0.000000, 0.000000}}}, + {"turbo", {{0.18995,0.07176,0.23217},{0.19483,0.08339,0.26149},{0.19956,0.09498,0.29024},{0.20415,0.10652,0.31844},{0.20860,0.11802,0.34607},{0.21291,0.12947,0.37314},{0.21708,0.14087,0.39964},{0.22111,0.15223,0.42558},{0.22500,0.16354,0.45096},{0.22875,0.17481,0.47578},{0.23236,0.18603,0.50004},{0.23582,0.19720,0.52373},{0.23915,0.20833,0.54686},{0.24234,0.21941,0.56942},{0.24539,0.23044,0.59142},{0.24830,0.24143,0.61286},{0.25107,0.25237,0.63374},{0.25369,0.26327,0.65406},{0.25618,0.27412,0.67381},{0.25853,0.28492,0.69300},{0.26074,0.29568,0.71162},{0.26280,0.30639,0.72968},{0.26473,0.31706,0.74718},{0.26652,0.32768,0.76412},{0.26816,0.33825,0.78050},{0.26967,0.34878,0.79631},{0.27103,0.35926,0.81156},{0.27226,0.36970,0.82624},{0.27334,0.38008,0.84037},{0.27429,0.39043,0.85393},{0.27509,0.40072,0.86692},{0.27576,0.41097,0.87936},{0.27628,0.42118,0.89123},{0.27667,0.43134,0.90254},{0.27691,0.44145,0.91328},{0.27701,0.45152,0.92347},{0.27698,0.46153,0.93309},{0.27680,0.47151,0.94214},{0.27648,0.48144,0.95064},{0.27603,0.49132,0.95857},{0.27543,0.50115,0.96594},{0.27469,0.51094,0.97275},{0.27381,0.52069,0.97899},{0.27273,0.53040,0.98461},{0.27106,0.54015,0.98930},{0.26878,0.54995,0.99303},{0.26592,0.55979,0.99583},{0.26252,0.56967,0.99773},{0.25862,0.57958,0.99876},{0.25425,0.58950,0.99896},{0.24946,0.59943,0.99835},{0.24427,0.60937,0.99697},{0.23874,0.61931,0.99485},{0.23288,0.62923,0.99202},{0.22676,0.63913,0.98851},{0.22039,0.64901,0.98436},{0.21382,0.65886,0.97959},{0.20708,0.66866,0.97423},{0.20021,0.67842,0.96833},{0.19326,0.68812,0.96190},{0.18625,0.69775,0.95498},{0.17923,0.70732,0.94761},{0.17223,0.71680,0.93981},{0.16529,0.72620,0.93161},{0.15844,0.73551,0.92305},{0.15173,0.74472,0.91416},{0.14519,0.75381,0.90496},{0.13886,0.76279,0.89550},{0.13278,0.77165,0.88580},{0.12698,0.78037,0.87590},{0.12151,0.78896,0.86581},{0.11639,0.79740,0.85559},{0.11167,0.80569,0.84525},{0.10738,0.81381,0.83484},{0.10357,0.82177,0.82437},{0.10026,0.82955,0.81389},{0.09750,0.83714,0.80342},{0.09532,0.84455,0.79299},{0.09377,0.85175,0.78264},{0.09287,0.85875,0.77240},{0.09267,0.86554,0.76230},{0.09320,0.87211,0.75237},{0.09451,0.87844,0.74265},{0.09662,0.88454,0.73316},{0.09958,0.89040,0.72393},{0.10342,0.89600,0.71500},{0.10815,0.90142,0.70599},{0.11374,0.90673,0.69651},{0.12014,0.91193,0.68660},{0.12733,0.91701,0.67627},{0.13526,0.92197,0.66556},{0.14391,0.92680,0.65448},{0.15323,0.93151,0.64308},{0.16319,0.93609,0.63137},{0.17377,0.94053,0.61938},{0.18491,0.94484,0.60713},{0.19659,0.94901,0.59466},{0.20877,0.95304,0.58199},{0.22142,0.95692,0.56914},{0.23449,0.96065,0.55614},{0.24797,0.96423,0.54303},{0.26180,0.96765,0.52981},{0.27597,0.97092,0.51653},{0.29042,0.97403,0.50321},{0.30513,0.97697,0.48987},{0.32006,0.97974,0.47654},{0.33517,0.98234,0.46325},{0.35043,0.98477,0.45002},{0.36581,0.98702,0.43688},{0.38127,0.98909,0.42386},{0.39678,0.99098,0.41098},{0.41229,0.99268,0.39826},{0.42778,0.99419,0.38575},{0.44321,0.99551,0.37345},{0.45854,0.99663,0.36140},{0.47375,0.99755,0.34963},{0.48879,0.99828,0.33816},{0.50362,0.99879,0.32701},{0.51822,0.99910,0.31622},{0.53255,0.99919,0.30581},{0.54658,0.99907,0.29581},{0.56026,0.99873,0.28623},{0.57357,0.99817,0.27712},{0.58646,0.99739,0.26849},{0.59891,0.99638,0.26038},{0.61088,0.99514,0.25280},{0.62233,0.99366,0.24579},{0.63323,0.99195,0.23937},{0.64362,0.98999,0.23356},{0.65394,0.98775,0.22835},{0.66428,0.98524,0.22370},{0.67462,0.98246,0.21960},{0.68494,0.97941,0.21602},{0.69525,0.97610,0.21294},{0.70553,0.97255,0.21032},{0.71577,0.96875,0.20815},{0.72596,0.96470,0.20640},{0.73610,0.96043,0.20504},{0.74617,0.95593,0.20406},{0.75617,0.95121,0.20343},{0.76608,0.94627,0.20311},{0.77591,0.94113,0.20310},{0.78563,0.93579,0.20336},{0.79524,0.93025,0.20386},{0.80473,0.92452,0.20459},{0.81410,0.91861,0.20552},{0.82333,0.91253,0.20663},{0.83241,0.90627,0.20788},{0.84133,0.89986,0.20926},{0.85010,0.89328,0.21074},{0.85868,0.88655,0.21230},{0.86709,0.87968,0.21391},{0.87530,0.87267,0.21555},{0.88331,0.86553,0.21719},{0.89112,0.85826,0.21880},{0.89870,0.85087,0.22038},{0.90605,0.84337,0.22188},{0.91317,0.83576,0.22328},{0.92004,0.82806,0.22456},{0.92666,0.82025,0.22570},{0.93301,0.81236,0.22667},{0.93909,0.80439,0.22744},{0.94489,0.79634,0.22800},{0.95039,0.78823,0.22831},{0.95560,0.78005,0.22836},{0.96049,0.77181,0.22811},{0.96507,0.76352,0.22754},{0.96931,0.75519,0.22663},{0.97323,0.74682,0.22536},{0.97679,0.73842,0.22369},{0.98000,0.73000,0.22161},{0.98289,0.72140,0.21918},{0.98549,0.71250,0.21650},{0.98781,0.70330,0.21358},{0.98986,0.69382,0.21043},{0.99163,0.68408,0.20706},{0.99314,0.67408,0.20348},{0.99438,0.66386,0.19971},{0.99535,0.65341,0.19577},{0.99607,0.64277,0.19165},{0.99654,0.63193,0.18738},{0.99675,0.62093,0.18297},{0.99672,0.60977,0.17842},{0.99644,0.59846,0.17376},{0.99593,0.58703,0.16899},{0.99517,0.57549,0.16412},{0.99419,0.56386,0.15918},{0.99297,0.55214,0.15417},{0.99153,0.54036,0.14910},{0.98987,0.52854,0.14398},{0.98799,0.51667,0.13883},{0.98590,0.50479,0.13367},{0.98360,0.49291,0.12849},{0.98108,0.48104,0.12332},{0.97837,0.46920,0.11817},{0.97545,0.45740,0.11305},{0.97234,0.44565,0.10797},{0.96904,0.43399,0.10294},{0.96555,0.42241,0.09798},{0.96187,0.41093,0.09310},{0.95801,0.39958,0.08831},{0.95398,0.38836,0.08362},{0.94977,0.37729,0.07905},{0.94538,0.36638,0.07461},{0.94084,0.35566,0.07031},{0.93612,0.34513,0.06616},{0.93125,0.33482,0.06218},{0.92623,0.32473,0.05837},{0.92105,0.31489,0.05475},{0.91572,0.30530,0.05134},{0.91024,0.29599,0.04814},{0.90463,0.28696,0.04516},{0.89888,0.27824,0.04243},{0.89298,0.26981,0.03993},{0.88691,0.26152,0.03753},{0.88066,0.25334,0.03521},{0.87422,0.24526,0.03297},{0.86760,0.23730,0.03082},{0.86079,0.22945,0.02875},{0.85380,0.22170,0.02677},{0.84662,0.21407,0.02487},{0.83926,0.20654,0.02305},{0.83172,0.19912,0.02131},{0.82399,0.19182,0.01966},{0.81608,0.18462,0.01809},{0.80799,0.17753,0.01660},{0.79971,0.17055,0.01520},{0.79125,0.16368,0.01387},{0.78260,0.15693,0.01264},{0.77377,0.15028,0.01148},{0.76476,0.14374,0.01041},{0.75556,0.13731,0.00942},{0.74617,0.13098,0.00851},{0.73661,0.12477,0.00769},{0.72686,0.11867,0.00695},{0.71692,0.11268,0.00629},{0.70680,0.10680,0.00571},{0.69650,0.10102,0.00522},{0.68602,0.09536,0.00481},{0.67535,0.08980,0.00449},{0.66449,0.08436,0.00424},{0.65345,0.07902,0.00408},{0.64223,0.07380,0.00401},{0.63082,0.06868,0.00401},{0.61923,0.06367,0.00410},{0.60746,0.05878,0.00427},{0.59550,0.05399,0.00453},{0.58336,0.04931,0.00486},{0.57103,0.04474,0.00529},{0.55852,0.04028,0.00579},{0.54583,0.03593,0.00638},{0.53295,0.03169,0.00705},{0.51989,0.02756,0.00780},{0.50664,0.02354,0.00863},{0.49321,0.01963,0.00955},{0.47960,0.01583,0.01055}}}, + {"default", {{1.0, 0, 1}, {0.9803921568627452, 0, 1}, {0.9607843137254901, 0, 1}, {0.9411764705882353, 0, 1}, {0.9215686274509804, 0, 1}, {0.9019607843137254, 0, 1}, {0.8823529411764706, 0, 1}, {0.8627450980392157, 0, 1}, {0.8431372549019609, 0, 1}, {0.8235294117647058, 0, 1}, {0.803921568627451, 0, 1}, {0.784313725490196, 0, 1}, {0.7647058823529411, 0, 1}, {0.7450980392156863, 0, 1}, {0.7254901960784315, 0, 1}, {0.7058823529411764, 0, 1}, {0.6862745098039216, 0, 1}, {0.6666666666666667, 0, 1}, {0.6470588235294117, 0, 1}, {0.6274509803921569, 0, 1}, {0.607843137254902, 0, 1}, {0.5882352941176472, 0, 1}, {0.5686274509803921, 0, 1}, {0.5490196078431373, 0, 1}, {0.5294117647058822, 0, 1}, {0.5098039215686274, 0, 1}, {0.4901960784313726, 0, 1}, {0.47058823529411775, 0, 1}, {0.4509803921568627, 0, 1}, {0.43137254901960786, 0, 1}, {0.4117647058823528, 0, 1}, {0.392156862745098, 0, 1}, {0.37254901960784315, 0, 1}, {0.3529411764705883, 0, 1}, {0.3333333333333335, 0, 1}, {0.3137254901960784, 0, 1}, {0.2941176470588236, 0, 1}, {0.27450980392156854, 0, 1}, {0.2549019607843137, 0, 1}, {0.23529411764705888, 0, 1}, {0.21568627450980404, 0, 1}, {0.196078431372549, 0, 1}, {0.17647058823529416, 0, 1}, {0.1568627450980391, 0, 1}, {0.13725490196078427, 0, 1}, {0.11764705882352944, 0, 1}, {0.0980392156862746, 0, 1}, {0.07843137254901955, 0, 1}, {0.05882352941176472, 0, 1}, {0.039215686274509665, 0, 1}, {0.019607843137254832, 0, 1}, {0, 0.0, 1}, {0, 0.019607843137254832, 1}, {0, 0.039215686274509665, 1}, {0, 0.0588235294117645, 1}, {0, 0.07843137254901977, 1}, {0, 0.0980392156862746, 1}, {0, 0.11764705882352944, 1}, {0, 0.13725490196078427, 1}, {0, 0.15686274509803955, 1}, {0, 0.17647058823529438, 1}, {0, 0.1960784313725492, 1}, {0, 0.21568627450980404, 1}, {0, 0.23529411764705888, 1}, {0, 0.2549019607843137, 1}, {0, 0.27450980392156854, 1}, {0, 0.2941176470588234, 1}, {0, 0.3137254901960782, 1}, {0, 0.33333333333333304, 1}, {0, 0.35294117647058787, 1}, {0, 0.37254901960784315, 1}, {0, 0.392156862745098, 1}, {0, 0.4117647058823528, 1}, {0, 0.43137254901960764, 1}, {0, 0.4509803921568629, 1}, {0, 0.47058823529411775, 1}, {0, 0.4901960784313726, 1}, {0, 0.5098039215686274, 1}, {0, 0.5294117647058822, 1}, {0, 0.5490196078431371, 1}, {0, 0.5686274509803919, 1}, {0, 0.5882352941176467, 1}, {0, 0.607843137254902, 1}, {0, 0.6274509803921569, 1}, {0, 0.6470588235294117, 1}, {0, 0.6666666666666665, 1}, {0, 0.6862745098039218, 1}, {0, 0.7058823529411766, 1}, {0, 0.7254901960784315, 1}, {0, 0.7450980392156863, 1}, {0, 0.7647058823529411, 1}, {0, 0.784313725490196, 1}, {0, 0.8039215686274508, 1}, {0, 0.8235294117647056, 1}, {0, 0.8431372549019609, 1}, {0, 0.8627450980392157, 1}, {0, 0.8823529411764706, 1}, {0, 0.9019607843137254, 1}, {0, 0.9215686274509807, 1}, {0, 0.9411764705882355, 1}, {0, 0.9607843137254903, 1}, {0, 0.9803921568627452, 1}, {0, 1, 1.0}, {0, 1, 0.9803921568627452}, {0, 1, 0.9607843137254903}, {0, 1, 0.9411764705882355}, {0, 1, 0.9215686274509802}, {0, 1, 0.9019607843137254}, {0, 1, 0.8823529411764706}, {0, 1, 0.8627450980392157}, {0, 1, 0.8431372549019605}, {0, 1, 0.8235294117647056}, {0, 1, 0.8039215686274508}, {0, 1, 0.784313725490196}, {0, 1, 0.7647058823529411}, {0, 1, 0.7450980392156863}, {0, 1, 0.7254901960784315}, {0, 1, 0.7058823529411766}, {0, 1, 0.6862745098039214}, {0, 1, 0.6666666666666665}, {0, 1, 0.6470588235294117}, {0, 1, 0.6274509803921569}, {0, 1, 0.607843137254902}, {0, 1, 0.5882352941176472}, {0, 1, 0.5686274509803924}, {0, 1, 0.5490196078431375}, {0, 1, 0.5294117647058822}, {0, 1, 0.5098039215686274}, {0, 1, 0.4901960784313726}, {0, 1, 0.47058823529411775}, {0, 1, 0.4509803921568629}, {0, 1, 0.4313725490196081}, {0, 1, 0.4117647058823528}, {0, 1, 0.392156862745098}, {0, 1, 0.37254901960784315}, {0, 1, 0.3529411764705883}, {0, 1, 0.3333333333333335}, {0, 1, 0.31372549019607865}, {0, 1, 0.2941176470588238}, {0, 1, 0.274509803921569}, {0, 1, 0.2549019607843137}, {0, 1, 0.23529411764705888}, {0, 1, 0.21568627450980404}, {0, 1, 0.1960784313725492}, {0, 1, 0.17647058823529438}, {0, 1, 0.15686274509803955}, {0, 1, 0.13725490196078471}, {0, 1, 0.11764705882352988}, {0, 1, 0.09803921568627416}, {0, 1, 0.07843137254901933}, {0, 1, 0.0588235294117645}, {0, 1, 0.039215686274509665}, {0, 1, 0.019607843137254832}, {0.0, 1, 0}, {0.019607843137254832, 1, 0}, {0.039215686274509665, 1, 0}, {0.0588235294117645, 1, 0}, {0.07843137254901933, 1, 0}, {0.09803921568627416, 1, 0}, {0.117647058823529, 1, 0}, {0.13725490196078383, 1, 0}, {0.15686274509803866, 1, 0}, {0.1764705882352935, 1, 0}, {0.19607843137254832, 1, 0}, {0.21568627450980404, 1, 0}, {0.23529411764705888, 1, 0}, {0.2549019607843137, 1, 0}, {0.27450980392156854, 1, 0}, {0.2941176470588234, 1, 0}, {0.3137254901960782, 1, 0}, {0.33333333333333304, 1, 0}, {0.35294117647058787, 1, 0}, {0.3725490196078436, 1, 0}, {0.3921568627450984, 1, 0}, {0.41176470588235325, 1, 0}, {0.4313725490196081, 1, 0}, {0.4509803921568629, 1, 0}, {0.47058823529411775, 1, 0}, {0.4901960784313726, 1, 0}, {0.5098039215686274, 1, 0}, {0.5294117647058822, 1, 0}, {0.5490196078431371, 1, 0}, {0.5686274509803919, 1, 0}, {0.5882352941176467, 1, 0}, {0.6078431372549016, 1, 0}, {0.6274509803921564, 1, 0}, {0.6470588235294112, 1, 0}, {0.6666666666666661, 1, 0}, {0.6862745098039218, 1, 0}, {0.7058823529411766, 1, 0}, {0.7254901960784315, 1, 0}, {0.7450980392156863, 1, 0}, {0.7647058823529411, 1, 0}, {0.784313725490196, 1, 0}, {0.8039215686274508, 1, 0}, {0.8235294117647056, 1, 0}, {0.8431372549019613, 1, 0}, {0.8627450980392162, 1, 0}, {0.882352941176471, 1, 0}, {0.9019607843137258, 1, 0}, {0.9215686274509807, 1, 0}, {0.9411764705882355, 1, 0}, {0.9607843137254903, 1, 0}, {0.9803921568627452, 1, 0}, {1, 1.0, 0}, {1, 0.9803921568627452, 0}, {1, 0.9607843137254903, 0}, {1, 0.9411764705882355, 0}, {1, 0.9215686274509807, 0}, {1, 0.9019607843137258, 0}, {1, 0.882352941176471, 0}, {1, 0.8627450980392162, 0}, {1, 0.8431372549019605, 0}, {1, 0.8235294117647056, 0}, {1, 0.8039215686274508, 0}, {1, 0.784313725490196, 0}, {1, 0.7647058823529411, 0}, {1, 0.7450980392156863, 0}, {1, 0.7254901960784315, 0}, {1, 0.7058823529411766, 0}, {1, 0.6862745098039209, 0}, {1, 0.6666666666666661, 0}, {1, 0.6470588235294112, 0}, {1, 0.6274509803921564, 0}, {1, 0.6078431372549016, 0}, {1, 0.5882352941176467, 0}, {1, 0.5686274509803919, 0}, {1, 0.5490196078431371, 0}, {1, 0.5294117647058822, 0}, {1, 0.5098039215686274, 0}, {1, 0.4901960784313726, 0}, {1, 0.47058823529411775, 0}, {1, 0.4509803921568629, 0}, {1, 0.4313725490196081, 0}, {1, 0.41176470588235325, 0}, {1, 0.3921568627450984, 0}, {1, 0.3725490196078427, 0}, {1, 0.35294117647058787, 0}, {1, 0.33333333333333304, 0}, {1, 0.3137254901960782, 0}, {1, 0.2941176470588234, 0}, {1, 0.27450980392156854, 0}, {1, 0.2549019607843137, 0}, {1, 0.23529411764705888, 0}, {1, 0.21568627450980404, 0}, {1, 0.1960784313725492, 0}, {1, 0.17647058823529438, 0}, {1, 0.15686274509803955, 0}, {1, 0.13725490196078471, 0}, {1, 0.11764705882352988, 0}, {1, 0.09803921568627505, 0}, {1, 0.07843137254902022, 0}, {1, 0.0588235294117645, 0}, {1, 0.039215686274509665, 0}, {1, 0.019607843137254832, 0}, {1, 0.0, 0}}}, + {"anybotics", {{1.00000, 0.32549, 0.29020},{1.00000, 0.33333, 0.29412},{1.00000, 0.33725, 0.29804},{0.99608, 0.34510, 0.29804},{0.99608, 0.35294, 0.30196},{0.99608, 0.36078, 0.30588},{0.99216, 0.36863, 0.30980},{0.99216, 0.37647, 0.31373},{0.98824, 0.38431, 0.31373},{0.98824, 0.38824, 0.31765},{0.98431, 0.39608, 0.32157},{0.98431, 0.40392, 0.32549},{0.98431, 0.41176, 0.32549},{0.98039, 0.41961, 0.32941},{0.98039, 0.42745, 0.33333},{0.97647, 0.43529, 0.33725},{0.97647, 0.44314, 0.33725},{0.97255, 0.44706, 0.34118},{0.97255, 0.45490, 0.34510},{0.96863, 0.46275, 0.34902},{0.96863, 0.47059, 0.34902},{0.96863, 0.47843, 0.35294},{0.96471, 0.48627, 0.35686},{0.96471, 0.49412, 0.36078},{0.96078, 0.49804, 0.36471},{0.96078, 0.50588, 0.36471},{0.95686, 0.51373, 0.36863},{0.95686, 0.52157, 0.37255},{0.95686, 0.52941, 0.37647},{0.95294, 0.53725, 0.37647},{0.95294, 0.54510, 0.38039},{0.94902, 0.55294, 0.38431},{0.94902, 0.55686, 0.38824},{0.94510, 0.56471, 0.38824},{0.94510, 0.57255, 0.39216},{0.94510, 0.58039, 0.39608},{0.94118, 0.58824, 0.40000},{0.94118, 0.59608, 0.40000},{0.93725, 0.60392, 0.40392},{0.93725, 0.60784, 0.40784},{0.93333, 0.61569, 0.41176},{0.93333, 0.62353, 0.41176},{0.92941, 0.63137, 0.41569},{0.92941, 0.63922, 0.41961},{0.92941, 0.64706, 0.42353},{0.92549, 0.65490, 0.42745},{0.92549, 0.66275, 0.42745},{0.92157, 0.66667, 0.43137},{0.92157, 0.67451, 0.43529},{0.91765, 0.68235, 0.43922},{0.91765, 0.69020, 0.43922},{0.91765, 0.69804, 0.44314},{0.91373, 0.70588, 0.44706},{0.91373, 0.71373, 0.45098},{0.90980, 0.71765, 0.45098},{0.90980, 0.72549, 0.45490},{0.90588, 0.73333, 0.45882},{0.90588, 0.74118, 0.46275},{0.90196, 0.74902, 0.46275},{0.90196, 0.75686, 0.46667},{0.90196, 0.76471, 0.47059},{0.89804, 0.77255, 0.47451},{0.89804, 0.77647, 0.47843},{0.89412, 0.78431, 0.47843},{0.89412, 0.79216, 0.48235},{0.89412, 0.79216, 0.48235},{0.89412, 0.79216, 0.48627},{0.89412, 0.79216, 0.48627},{0.89804, 0.79608, 0.49020},{0.89804, 0.79608, 0.49020},{0.89804, 0.79608, 0.49412},{0.89804, 0.79608, 0.49412},{0.89804, 0.79608, 0.49804},{0.89804, 0.79608, 0.49804},{0.89804, 0.80000, 0.50196},{0.89804, 0.80000, 0.50196},{0.90196, 0.80000, 0.50588},{0.90196, 0.80000, 0.50588},{0.90196, 0.80000, 0.50588},{0.90196, 0.80392, 0.50980},{0.90196, 0.80392, 0.50980},{0.90196, 0.80392, 0.51373},{0.90196, 0.80392, 0.51373},{0.90588, 0.80392, 0.51765},{0.90588, 0.80784, 0.51765},{0.90588, 0.80784, 0.52157},{0.90588, 0.80784, 0.52157},{0.90588, 0.80784, 0.52549},{0.90588, 0.80784, 0.52549},{0.90588, 0.81176, 0.52549},{0.90588, 0.81176, 0.52941},{0.90980, 0.81176, 0.52941},{0.90980, 0.81176, 0.53333},{0.90980, 0.81176, 0.53333},{0.90980, 0.81569, 0.53725},{0.90980, 0.81569, 0.53725},{0.90980, 0.81569, 0.54118},{0.90980, 0.81569, 0.54118},{0.91373, 0.81569, 0.54510},{0.91373, 0.81961, 0.54510},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.54902},{0.91373, 0.81961, 0.55294},{0.91373, 0.81961, 0.55294},{0.91373, 0.82353, 0.55686},{0.91765, 0.82353, 0.55686},{0.91765, 0.82353, 0.56078},{0.91765, 0.82353, 0.56078},{0.91765, 0.82353, 0.56471},{0.91765, 0.82745, 0.56471},{0.91765, 0.82745, 0.56863},{0.91765, 0.82745, 0.56863},{0.92157, 0.82745, 0.57255},{0.92157, 0.82745, 0.57255},{0.92157, 0.83137, 0.57255},{0.92157, 0.83137, 0.57647},{0.92157, 0.83137, 0.57647},{0.92157, 0.83137, 0.58039},{0.92157, 0.83137, 0.58039},{0.92157, 0.83529, 0.58431},{0.92549, 0.83529, 0.58431},{0.92549, 0.83529, 0.58824},{0.92549, 0.83529, 0.58824},{0.92549, 0.83529, 0.59216},{0.92549, 0.83922, 0.59216},{0.92549, 0.83922, 0.59608},{0.92549, 0.83922, 0.59608},{0.92549, 0.83529, 0.59608},{0.91765, 0.83137, 0.59608},{0.90980, 0.82745, 0.59608},{0.90196, 0.81961, 0.59216},{0.89412, 0.81569, 0.59216},{0.88627, 0.81176, 0.59216},{0.87843, 0.80392, 0.58824},{0.87059, 0.80000, 0.58824},{0.86275, 0.79608, 0.58824},{0.85882, 0.78824, 0.58431},{0.85098, 0.78431, 0.58431},{0.84314, 0.78039, 0.58431},{0.83529, 0.77255, 0.58431},{0.82745, 0.76863, 0.58039},{0.81961, 0.76471, 0.58039},{0.81176, 0.75686, 0.58039},{0.80392, 0.75294, 0.57647},{0.80000, 0.74902, 0.57647},{0.79216, 0.74118, 0.57647},{0.78431, 0.73725, 0.57647},{0.77647, 0.72941, 0.57255},{0.76863, 0.72549, 0.57255},{0.76078, 0.72157, 0.57255},{0.75294, 0.71373, 0.56863},{0.74510, 0.70980, 0.56863},{0.74118, 0.70588, 0.56863},{0.73333, 0.69804, 0.56863},{0.72549, 0.69412, 0.56471},{0.71765, 0.69020, 0.56471},{0.70980, 0.68235, 0.56471},{0.70196, 0.67843, 0.56078},{0.69412, 0.67451, 0.56078},{0.68627, 0.66667, 0.56078},{0.68235, 0.66275, 0.55686},{0.67451, 0.65882, 0.55686},{0.66667, 0.65098, 0.55686},{0.65882, 0.64706, 0.55686},{0.65098, 0.64314, 0.55294},{0.64314, 0.63529, 0.55294},{0.63529, 0.63137, 0.55294},{0.62745, 0.62745, 0.54902},{0.61961, 0.61961, 0.54902},{0.61569, 0.61569, 0.54902},{0.60784, 0.61176, 0.54902},{0.60000, 0.60392, 0.54510},{0.59216, 0.60000, 0.54510},{0.58431, 0.59216, 0.54510},{0.57647, 0.58824, 0.54118},{0.56863, 0.58431, 0.54118},{0.56078, 0.57647, 0.54118},{0.55686, 0.57255, 0.54118},{0.54902, 0.56863, 0.53725},{0.54118, 0.56078, 0.53725},{0.53333, 0.55686, 0.53725},{0.52549, 0.55294, 0.53333},{0.51765, 0.54510, 0.53333},{0.50980, 0.54118, 0.53333},{0.50196, 0.53725, 0.53333},{0.49804, 0.52941, 0.52941},{0.49020, 0.52549, 0.52941},{0.48235, 0.52157, 0.52941},{0.47451, 0.51373, 0.52549},{0.46667, 0.50980, 0.52549},{0.45882, 0.50588, 0.52549},{0.45098, 0.49804, 0.51765},{0.44706, 0.49020, 0.51373},{0.43922, 0.48627, 0.50588},{0.43529, 0.47843, 0.50196},{0.42745, 0.47451, 0.49412},{0.42353, 0.46667, 0.49020},{0.41569, 0.45882, 0.48235},{0.40784, 0.45490, 0.47451},{0.40392, 0.44706, 0.47059},{0.39608, 0.43922, 0.46275},{0.39216, 0.43529, 0.45882},{0.38431, 0.42745, 0.45098},{0.38039, 0.41961, 0.44314},{0.37255, 0.41569, 0.43922},{0.36471, 0.40784, 0.43137},{0.36078, 0.40000, 0.42745},{0.35294, 0.39608, 0.41961},{0.34902, 0.38824, 0.41176},{0.34118, 0.38431, 0.40784},{0.33725, 0.37647, 0.40000},{0.32941, 0.36863, 0.39608},{0.32157, 0.36471, 0.38824},{0.31765, 0.35686, 0.38431},{0.30980, 0.34902, 0.37647},{0.30588, 0.34510, 0.36863},{0.29804, 0.33725, 0.36471},{0.29412, 0.33333, 0.35686},{0.28627, 0.32549, 0.35294},{0.27843, 0.31765, 0.34510},{0.27451, 0.31373, 0.33725},{0.26667, 0.30588, 0.33333},{0.26275, 0.29804, 0.32549},{0.25490, 0.29412, 0.32157},{0.24706, 0.28627, 0.31373},{0.24314, 0.27843, 0.30980},{0.23529, 0.27451, 0.30196},{0.23137, 0.26667, 0.29412},{0.22353, 0.25882, 0.29020},{0.21961, 0.25490, 0.28235},{0.21176, 0.24706, 0.27843},{0.20392, 0.24314, 0.27059},{0.20000, 0.23529, 0.26275},{0.19216, 0.22745, 0.25882},{0.18824, 0.22353, 0.25098},{0.18039, 0.21569, 0.24706},{0.17647, 0.20784, 0.23922},{0.16863, 0.20392, 0.23137},{0.16078, 0.19608, 0.22745},{0.15686, 0.19216, 0.21961},{0.14902, 0.18431, 0.21569},{0.14510, 0.17647, 0.20784},{0.13725, 0.17255, 0.20392},{0.13333, 0.16471, 0.19608},{0.12549, 0.15686, 0.18824},{0.11765, 0.15294, 0.18431},{0.11373, 0.14510, 0.17647},{0.10588, 0.13725, 0.17255},{0.10196, 0.13333, 0.16471},{0.09412, 0.12549, 0.15686},{0.09020, 0.12157, 0.15294},{0.08235, 0.11373, 0.14510},{0.07451, 0.10588, 0.14118},{0.07059, 0.10196, 0.13333},{0.06275, 0.09412, 0.12549}}}, +}; + +} From e3e24f08f61441b600ce352d760c37750923b357 Mon Sep 17 00:00:00 2001 From: Francisco Vina Date: Fri, 14 Feb 2025 17:12:34 +0100 Subject: [PATCH 79/83] Merge remote-tracking branch 'origin/release-25.03' GitOrigin-RevId: 58e32041de953fd0703933d53d32d4902cd7b4b8 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index c2046b61d..369e741ae 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.7.17 + 1.7.18 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index de296109b..ac020f69d 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.7.17 + 1.7.18 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index e51890741..4a47fd25e 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.7.17 + 1.7.18 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 7793dfcd9..39492ec7a 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.7.17 + 1.7.18 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 613f78e63..7a76704d0 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.7.17 + 1.7.18 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index f6dbeef40..2da3ee061 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.7.17 + 1.7.18 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index c1b67b818..b2ee40d03 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.7.17 + 1.7.18 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 93207f549..a55eb9564 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.7.17 + 1.7.18 Definition of the multi-layered grid map message type. BSD diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index a798c57cb..a45ae0043 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.7.17 + 1.7.18 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 5ec677c3a..fc29858bb 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.7.17 + 1.7.18 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 1fdfb1f89..ab494d722 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.7.17 + 1.7.18 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index eddf74b18..6e53fda34 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.7.17 + 1.7.18 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index ca9c61a7b..a7b8ee358 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.7.17 + 1.7.18 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index fb8a4c631..a47f33495 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.7.17 + 1.7.18 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 73a5b61fc80c09be8a5744997b3ee3e6902a98fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Fri, 21 Feb 2025 15:16:57 +0000 Subject: [PATCH 80/83] Merge branch 'fix/grid_map/conversion_warnings' into 'master' [grid_map] fix grid_map_conversion warnings GitOrigin-RevId: 5a1af2378cf726b189e9d4d179f317ead6ea7f47 --- .../include/grid_map_core/GridMap.hpp | 4 ++-- grid_map_core/src/CubicInterpolation.cpp | 4 ++-- grid_map_core/src/GridMap.cpp | 19 ++++++++++--------- .../src/iterators/SpiralIterator.cpp | 2 +- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/grid_map_core/include/grid_map_core/GridMap.hpp b/grid_map_core/include/grid_map_core/GridMap.hpp index 503e1b11f..74a62b701 100644 --- a/grid_map_core/include/grid_map_core/GridMap.hpp +++ b/grid_map_core/include/grid_map_core/GridMap.hpp @@ -47,7 +47,7 @@ class GridMap { * Constructor. * @param layers a vector of strings containing the definition/description of the data layer. */ - GridMap(const std::vector& layers); + explicit GridMap(const std::vector& layers); /*! * Emtpy constructor. @@ -86,7 +86,7 @@ class GridMap { * @param layer the name of the layer. * @value value the value to initialize the cells with. */ - void add(const std::string& layer, const double value = NAN); + void add(const std::string& layer, const float value = NAN); /*! * Add a new data layer (if the layer already exists, overwrite its data, otherwise add layer and data). diff --git a/grid_map_core/src/CubicInterpolation.cpp b/grid_map_core/src/CubicInterpolation.cpp index 919530046..d9eb2fc54 100644 --- a/grid_map_core/src/CubicInterpolation.cpp +++ b/grid_map_core/src/CubicInterpolation.cpp @@ -22,8 +22,8 @@ unsigned int bindIndexToRange(unsigned int idReq, unsigned int nElem) double getLayerValue(const Matrix &layerMat, unsigned int rowReq, unsigned int colReq) { - const auto numCol = layerMat.cols(); - const auto numRow = layerMat.rows(); + const auto numCol = static_cast(layerMat.cols()); + const auto numRow = static_cast(layerMat.rows()); const unsigned int iBoundToRange = bindIndexToRange(rowReq, numRow); const unsigned int jBoundToRange = bindIndexToRange(colReq, numCol); return layerMat(iBoundToRange, jBoundToRange); diff --git a/grid_map_core/src/GridMap.cpp b/grid_map_core/src/GridMap.cpp index b8633a661..b72ea4c2a 100644 --- a/grid_map_core/src/GridMap.cpp +++ b/grid_map_core/src/GridMap.cpp @@ -79,7 +79,7 @@ bool GridMap::hasSameLayers(const GridMap& other) const { [&](const std::string& layer){return other.exists(layer);}); } -void GridMap::add(const std::string& layer, const double value) { +void GridMap::add(const std::string& layer, const float value) { add(layer, Matrix::Constant(size_(0), size_(1), value)); } @@ -271,7 +271,7 @@ bool GridMap::getPosition3(const std::string& layer, const Index& index, Positio bool GridMap::getVector(const std::string& layerPrefix, const Index& index, Eigen::Vector3d& vector) const { Eigen::Vector3d temp{at(layerPrefix + "x", index), at(layerPrefix + "y", index), at(layerPrefix + "z", index)}; - if (!isValid(temp[0]) || !isValid(temp[1]) || !isValid(temp[2])) { + if (!isValid(temp[0]) || !isValid(temp[1]) || !isValid(temp[2])) { // NOLINT (implicit-float-conversion) return false; } else { vector = temp; @@ -294,7 +294,7 @@ GridMap GridMap::getSubmap(const Position& position, const Length& length, Index // Get submap geometric information. SubmapGeometry submapInformation(*this, position, length, isSuccess); if (!isSuccess) { - return {layers_}; + return GridMap{layers_}; } submap.setGeometry(submapInformation); submap.startIndex_.setZero(); // Because of the way we copy the data below. @@ -305,7 +305,7 @@ GridMap GridMap::getSubmap(const Position& position, const Length& length, Index if (!getBufferRegionsForSubmap(bufferRegions, submapInformation.getStartIndex(), submap.getSize(), size_, startIndex_)) { cout << "Cannot access submap of this size." << endl; isSuccess = false; - return {layers_}; + return GridMap{layers_}; } for (const auto& data : data_) { @@ -423,7 +423,7 @@ GridMap GridMap::getTransformedMap(const Eigen::Isometry3d& transform, const std const auto currentValueInOldGrid = at(layer, *iterator); auto& newValue = newMap.at(layer, newIndex); if (layer == heightLayerName) { - newValue = transformedPosition.z(); + newValue = static_cast(transformedPosition.z()); } // adjust height else { newValue = currentValueInOldGrid; @@ -840,8 +840,9 @@ bool GridMap::atPositionLinearInterpolated(const std::string& layer, const Posit const Position positionRed = (position - point) / resolution_; const Position positionRedFlip = Position(1., 1.) - positionRed; - value = f[0] * positionRedFlip.x() * positionRedFlip.y() + f[1] * positionRed.x() * positionRedFlip.y() + - f[2] * positionRedFlip.x() * positionRed.y() + f[3] * positionRed.x() * positionRed.y(); + + value = f[0] * positionRedFlip.x() * positionRedFlip.y() + f[1] * positionRed.x() * positionRedFlip.y() + // NOLINT (implicit-float-conversion) + f[2] * positionRedFlip.x() * positionRed.y() + f[3] * positionRed.x() * positionRed.y(); // NOLINT (implicit-float-conversion) return true; } @@ -864,7 +865,7 @@ bool GridMap::atPositionBicubicConvolutionInterpolated(const std::string& layer, if (!std::isfinite(interpolatedValue)) { return false; } - value = interpolatedValue; + value = static_cast(interpolatedValue); return true; } @@ -880,7 +881,7 @@ bool GridMap::atPositionBicubicInterpolated(const std::string& layer, const Posi if (!std::isfinite(interpolatedValue)) { return false; } - value = interpolatedValue; + value = static_cast(interpolatedValue); return true; diff --git a/grid_map_core/src/iterators/SpiralIterator.cpp b/grid_map_core/src/iterators/SpiralIterator.cpp index 2284d2576..9ee5b3cd9 100644 --- a/grid_map_core/src/iterators/SpiralIterator.cpp +++ b/grid_map_core/src/iterators/SpiralIterator.cpp @@ -27,7 +27,7 @@ SpiralIterator::SpiralIterator(const grid_map::GridMap& gridMap, Eigen::Vector2d resolution_ = gridMap.getResolution(); bufferSize_ = gridMap.getSize(); gridMap.getIndex(center_, indexCenter_); - nRings_ = std::ceil(radius_ / resolution_); + nRings_ = static_cast(std::ceil(radius_ / resolution_)); if (checkIfIndexInRange(indexCenter_, bufferSize_)) { pointsRing_.push_back(indexCenter_); } else { From d467025f1e2c1a3b4747cba857332aca126d1e6d Mon Sep 17 00:00:00 2001 From: Zichong Li Date: Fri, 12 Sep 2025 11:15:25 +0000 Subject: [PATCH 81/83] Merge branch 'feature/reverted_grid_map_msgs_port' into 'master' [grid_map_msgs] Reverted the ROS2 port GitOrigin-RevId: fe90ce335373d15491c2b584b38df5a0994366a9 --- grid_map_msgs/CMakeLists.txt | 32 ++------------------------------ grid_map_msgs/package.xml | 29 ++++++++--------------------- 2 files changed, 10 insertions(+), 51 deletions(-) diff --git a/grid_map_msgs/CMakeLists.txt b/grid_map_msgs/CMakeLists.txt index aaf4a9d4d..216ac9541 100644 --- a/grid_map_msgs/CMakeLists.txt +++ b/grid_map_msgs/CMakeLists.txt @@ -1,8 +1,6 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_msgs) -if("$ENV{ROS_VERSION}" STREQUAL "1") - ## Find catkin macros and libraries find_package(catkin REQUIRED COMPONENTS std_msgs @@ -48,6 +46,8 @@ generate_messages( ## DEPENDS: system dependencies of this project that dependent projects also need catkin_package( + #INCLUDE_DIRS include + #LIBRARIES CATKIN_DEPENDS geometry_msgs message_runtime @@ -55,31 +55,3 @@ catkin_package( #DEPENDS ) -else() # ROS version 2 - -set(PACKAGE_DEPENDENCIES - geometry_msgs - std_msgs -) - -find_package(ament_cmake REQUIRED) -find_package(rosidl_default_generators REQUIRED) -foreach(PKG IN LISTS PACKAGE_DEPENDENCIES) - find_package(${PKG} REQUIRED) -endforeach() - -rosidl_generate_interfaces(${PROJECT_NAME} - "msg/GridMapInfo.msg" - "msg/GridMap.msg" - "srv/SetGridMap.srv" - "srv/GetGridMap.srv" - "srv/GetGridMapInfo.srv" - "srv/ProcessFile.srv" - DEPENDENCIES ${PACKAGE_DEPENDENCIES} -) - -ament_export_dependencies(rosidl_default_runtime) - -ament_package() - -endif() diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index a55eb9564..6e44c9f0a 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,31 +1,18 @@ - - + + grid_map_msgs 1.7.18 Definition of the multi-layered grid map message type. - - BSD - Péter Fankhauser Maximilian Wulf Yoshua Nava + BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues - - catkin - ament_cmake - rosidl_default_generators - - message_generation - + Péter Fankhauser + catkin + roscpp + message_generation std_msgs geometry_msgs - - message_runtime - rosidl_default_runtime - - rosidl_interface_packages - - - ament_cmake - + message_runtime From c91cd28f6def0eba93433b1ed2b4a04877b277f7 Mon Sep 17 00:00:00 2001 From: Zichong Li Date: Mon, 29 Sep 2025 13:54:08 +0000 Subject: [PATCH 82/83] Merge branch 'feature/grid_map_msgs_maintainer' into 'master' [grid_map_msgs] Updated maintainer GitOrigin-RevId: 000d2f669564d12c0aeb2423b277b196333a16cc --- grid_map_msgs/package.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 6e44c9f0a..5f2b51048 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -4,7 +4,8 @@ 1.7.18 Definition of the multi-layered grid map message type. Maximilian Wulf - Yoshua Nava + Daniel López Madrid + Zichong Li BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues From cdd0ea25724723302fa7c1a2e30e3fb8b0a578f4 Mon Sep 17 00:00:00 2001 From: magnus Date: Mon, 12 Jan 2026 09:22:47 +0100 Subject: [PATCH 83/83] manual squash to master, see https://git.anybotics.com/anybotics/anybotics/-/merge_requests/23700 GitOrigin-RevId: 322976fc0a0f6f0fa01864a1858143e250201b16 --- grid_map/package.xml | 4 ++-- grid_map_core/package.xml | 4 ++-- grid_map_costmap_2d/package.xml | 4 ++-- grid_map_cv/package.xml | 4 ++-- grid_map_demos/package.xml | 4 ++-- grid_map_filters/package.xml | 4 ++-- grid_map_loader/package.xml | 4 ++-- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 4 ++-- grid_map_pcl/package.xml | 12 ++++++------ grid_map_ros/package.xml | 4 ++-- grid_map_rviz_plugin/package.xml | 4 ++-- grid_map_sdf/package.xml | 4 ++-- grid_map_visualization/package.xml | 4 ++-- 14 files changed, 31 insertions(+), 31 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 369e741ae..2e9e139dd 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -3,8 +3,8 @@ grid_map 1.7.18 Meta-package for the universal grid map library. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index ac020f69d..445ef048e 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -3,8 +3,8 @@ grid_map_core 1.7.18 Universal grid map library to manage two-dimensional grid maps with multiple data layers. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 4a47fd25e..18b4d1c6a 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -3,8 +3,8 @@ grid_map_costmap_2d 1.7.18 Interface for grid maps to the costmap_2d format. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Francisco Eli Viña Barrientos BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index 39492ec7a..377ceaa27 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -3,8 +3,8 @@ grid_map_cv 1.7.18 Conversions between grid maps and OpenCV images. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 7a76704d0..98b4650f9 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -3,8 +3,8 @@ grid_map_demos 1.7.18 Demo nodes to demonstrate the usage of the grid map library. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 2da3ee061..1358882b5 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -3,8 +3,8 @@ grid_map_filters 1.7.18 Processing grid maps as a sequence of ROS filters. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index b2ee40d03..210e331c2 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -3,8 +3,8 @@ grid_map_loader 1.7.18 Loading and publishing grid maps from bag files. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Daniel López Madrid BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 5f2b51048..643ecbf65 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -3,7 +3,7 @@ grid_map_msgs 1.7.18 Definition of the multi-layered grid map message type. - Maximilian Wulf + Magnus Gaertner Daniel López Madrid Zichong Li BSD diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index a45ae0043..04bbb69f4 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -3,8 +3,8 @@ grid_map_octomap 1.7.18 Conversions between grid maps and OctoMap types. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index fc29858bb..15a9c91bd 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -3,18 +3,18 @@ grid_map_pcl 1.7.18 Conversions between grid maps and Point Cloud Library (PCL) types. - Maximilian Wulf - Yoshua Nava + Guoxiang Zhou + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues Dominic Jud Edo Jelavic - + catkin - + - + grid_map_core grid_map_msgs grid_map_ros @@ -24,7 +24,7 @@ yaml-cpp rviz - + gtest diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index ab494d722..7ab54b6f5 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -3,8 +3,8 @@ grid_map_ros 1.7.18 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Guoxiang Zhou BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 6e53fda34..8b48a4691 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -3,8 +3,8 @@ grid_map_rviz_plugin 1.7.18 RViz plugin for displaying grid map messages. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Guoxiang Zhou BSD Philipp Krüsi Péter Fankhauser diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index a7b8ee358..f75f43eaf 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -3,8 +3,8 @@ grid_map_sdf 1.7.18 Generates signed distance fields from grid maps. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Mathieu Agostinucci BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index a47f33495..f7a3fd2d4 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -3,8 +3,8 @@ grid_map_visualization 1.7.18 Configurable tool to visualize grid maps in RViz. - Maximilian Wulf - Yoshua Nava + Magnus Gaertner + Guoxiang Zhou BSD http://github.com/anybotics/grid_map http://github.com/anybotics/grid_map/issues

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 - - + + + - + + - - + + + - + - \ No newline at end of file + + + + + + + + + + diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 3ab1dc593..d0300f88d 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -12,7 +12,9 @@ Edo Jelavic catkin + + grid_map_core grid_map_msgs grid_map_ros @@ -20,6 +22,9 @@ pcl_ros roscpp yaml-cpp + + rviz + gtest diff --git a/grid_map_pcl/rviz/grid_map_vis.rviz b/grid_map_pcl/rviz/grid_map_vis.rviz new file mode 100644 index 000000000..4e753d636 --- /dev/null +++ b/grid_map_pcl/rviz/grid_map_vis.rviz @@ -0,0 +1,162 @@ +Panels: + - Class: rviz/Displays + Help Height: 0 + Name: Displays + Property Tree Widget: + Expanded: + - /Global Options1 + - /PointCloud21/Autocompute Value Bounds1 + Splitter Ratio: 0.6114649772644043 + Tree Height: 797 + - Class: rviz/Selection + Name: Selection + - Class: rviz/Tool Properties + Expanded: + - /2D Pose Estimate1 + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rviz/Time + Experimental: false + Name: Time + SyncMode: 0 + SyncSource: PointCloud2 +Preferences: + PromptSaveOnExit: true +Toolbars: + toolButtonStyle: 2 +Visualization Manager: + Class: "" + Displays: + - Alpha: 1 + Class: rviz/Axes + Enabled: true + Length: 2 + Name: Axes + Radius: 0.20000000298023224 + Reference Frame: + Value: true + - Alpha: 1 + Autocompute Intensity Bounds: true + Class: grid_map_rviz_plugin/GridMap + Color: 200; 200; 200 + Color Layer: elevation + Color Transformer: GridMapLayer + ColorMap: default + Enabled: false + Grid Cell Decimation: 1 + Grid Line Thickness: 0.10000000149011612 + Height Layer: elevation + Height Transformer: GridMapLayer + History Length: 1 + Invert ColorMap: false + Max Color: 255; 255; 255 + Max Intensity: 10 + Min Color: 85; 87; 83 + Min Intensity: 0 + Name: GridMap + Show Grid Lines: true + Topic: /grid_map_pcl_loader_node/grid_map_from_raw_pointcloud + Unreliable: false + Use ColorMap: true + Value: false + - Alpha: 0.9900000095367432 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 4.018562316894531 + Min Value: -2.210437059402466 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 164; 0; 0 + Color Transformer: AxisColor + Decay Time: 0 + Enabled: false + Invert Rainbow: false + Max Color: 255; 255; 255 + Min Color: 0; 0; 0 + Name: PointCloud2 + Position Transformer: XYZ + Queue Size: 1 + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Flat Squares + Topic: /point_cloud_publisher_node/raw_pointcloud + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: false + Enabled: true + Global Options: + Background Color: 46; 52; 54 + Default Light: true + Fixed Frame: map + Frame Rate: 30 + Name: root + Tools: + - Class: rviz/Interact + Hide Inactive Objects: true + - Class: rviz/MoveCamera + - Class: rviz/Select + - Class: rviz/FocusCamera + - Class: rviz/Measure + - Class: rviz/SetInitialPose + Theta std deviation: 0.2617993950843811 + Topic: /initialpose + X std deviation: 0.5 + Y std deviation: 0.5 + - Class: rviz/SetGoal + Topic: /move_base_simple/goal + - Class: rviz/PublishPoint + Single click: true + Topic: /clicked_point + Value: true + Views: + Current: + Class: rviz/Orbit + Distance: 26.305757522583008 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Field of View: 0.7853981852531433 + Focal Point: + X: -3.3914899826049805 + Y: -4.434649467468262 + Z: -1.8720630407333374 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 0.5947977900505066 + Target Frame: + Yaw: 1.7004344463348389 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 1016 + Hide Left Dock: false + Hide Right Dock: true + QMainWindow State: 000000ff00000000fd00000004000000000000016a0000035afc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d0000035a000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000040efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a0056006900650077007300000000280000040e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000007380000003efc0100000002fb0000000800540069006d0065010000000000000738000002eb00fffffffb0000000800540069006d00650100000000000004500000000000000000000005c80000035a00000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Time: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: true + Width: 1848 + X: 72 + Y: 27 diff --git a/grid_map_pcl/src/GridMapPclLoader.cpp b/grid_map_pcl/src/GridMapPclLoader.cpp index 50ef8a8d4..281d39dd7 100644 --- a/grid_map_pcl/src/GridMapPclLoader.cpp +++ b/grid_map_pcl/src/GridMapPclLoader.cpp @@ -100,17 +100,18 @@ void GridMapPclLoader::addLayerFromInputCloud(const std::string& layer) { ROS_INFO_STREAM("Started adding layer: " << layer); // Preprocess: allocate memory in the internal data structure preprocessGridMapCells(); + ROS_INFO("Finished preprocessing"); workingGridMap_.add(layer); grid_map::Matrix& gridMapData = workingGridMap_.get(layer); unsigned int linearGridMapSize = workingGridMap_.getSize().prod(); + // Iterate through grid map and calculate the corresponding height based on the point cloud #ifndef GRID_MAP_PCL_OPENMP_FOUND ROS_WARN_STREAM("OpemMP not found, defaulting to single threaded implementation"); #else omp_set_num_threads(params_.get().numThreads_); #pragma omp parallel for schedule(dynamic, 10) #endif - // Iterate through grid map and calculate the corresponding height based on the point cloud for (unsigned int linearIndex = 0; linearIndex < linearGridMapSize; ++linearIndex) { processGridMapCell(linearIndex, &gridMapData); } @@ -125,7 +126,11 @@ void GridMapPclLoader::processGridMapCell(const unsigned int linearGridMapIndex, pointsInsideCellBorder = getPointcloudInsideGridMapCellBorder(index); const bool isTooFewPointsInCell = pointsInsideCellBorder->size() < params_.get().gridMap_.minCloudPointsPerCell_; if (isTooFewPointsInCell) { - ROS_WARN_STREAM_THROTTLE(10.0, "Less than " << params_.get().gridMap_.minCloudPointsPerCell_ << " points in a cell"); + ROS_WARN_STREAM_THROTTLE(10.0, "Less than " << params_.get().gridMap_.minCloudPointsPerCell_ << " points in a cell. Skipping."); + return; + } + if (pointsInsideCellBorder->size() > params_.get().gridMap_.maxCloudPointsPerCell_) { + ROS_WARN_STREAM_THROTTLE(10.0, "More than " << params_.get().gridMap_.maxCloudPointsPerCell_ << " points in a cell. Skipping."); return; } auto& clusterHeights = clusterHeightsWithingGridMapCell_[index(0)][index(1)]; @@ -165,6 +170,10 @@ void GridMapPclLoader::loadParameters(const std::string& filename) { pointcloudProcessor_.loadParameters(filename); } +void GridMapPclLoader::setParameters(grid_map_pcl::PclLoaderParameters::Parameters parameters) { + params_.parameters_ = std::move(parameters); +} + void GridMapPclLoader::savePointCloudAsPcdFile(const std::string& filename) const { pointcloudProcessor_.savePointCloudAsPcdFile(filename, *workingCloud_); } diff --git a/grid_map_pcl/src/PclLoaderParameters.cpp b/grid_map_pcl/src/PclLoaderParameters.cpp index 35c0fd817..29fc80380 100644 --- a/grid_map_pcl/src/PclLoaderParameters.cpp +++ b/grid_map_pcl/src/PclLoaderParameters.cpp @@ -14,36 +14,35 @@ namespace grid_map { namespace grid_map_pcl { -void PclLoaderParameters::handleYamlNode(const YAML::Node& yamlNode) { - const std::string prefix = "pcl_grid_map_extraction"; +void PclLoaderParameters::loadParameters(const YAML::Node& yamlNode) { + parameters_.numThreads_ = yamlNode["num_processing_threads"].as(); - parameters_.numThreads_ = yamlNode[prefix]["num_processing_threads"].as(); + parameters_.cloudTransformation_.translation_.x() = yamlNode["cloud_transform"]["translation"]["x"].as(); + parameters_.cloudTransformation_.translation_.y() = yamlNode["cloud_transform"]["translation"]["y"].as(); + parameters_.cloudTransformation_.translation_.z() = yamlNode["cloud_transform"]["translation"]["z"].as(); - parameters_.cloudTransformation_.translation_.x() = yamlNode[prefix]["cloud_transform"]["translation"]["x"].as(); - parameters_.cloudTransformation_.translation_.y() = yamlNode[prefix]["cloud_transform"]["translation"]["y"].as(); - parameters_.cloudTransformation_.translation_.z() = yamlNode[prefix]["cloud_transform"]["translation"]["z"].as(); - - parameters_.cloudTransformation_.rpyIntrinsic_.x() = yamlNode[prefix]["cloud_transform"]["rotation"]["r"].as(); - parameters_.cloudTransformation_.rpyIntrinsic_.y() = yamlNode[prefix]["cloud_transform"]["rotation"]["p"].as(); - parameters_.cloudTransformation_.rpyIntrinsic_.z() = yamlNode[prefix]["cloud_transform"]["rotation"]["y"].as(); + parameters_.cloudTransformation_.rpyIntrinsic_.x() = yamlNode["cloud_transform"]["rotation"]["r"].as(); + parameters_.cloudTransformation_.rpyIntrinsic_.y() = yamlNode["cloud_transform"]["rotation"]["p"].as(); + parameters_.cloudTransformation_.rpyIntrinsic_.z() = yamlNode["cloud_transform"]["rotation"]["y"].as(); parameters_.clusterExtraction_.useMaxHeightAsCellElevation_ = - yamlNode[prefix]["cluster_extraction"]["use_max_height_as_cell_elevation"].as(); - parameters_.clusterExtraction_.clusterTolerance_ = yamlNode[prefix]["cluster_extraction"]["cluster_tolerance"].as(); - parameters_.clusterExtraction_.minNumPoints_ = yamlNode[prefix]["cluster_extraction"]["min_num_points"].as(); - parameters_.clusterExtraction_.maxNumPoints_ = yamlNode[prefix]["cluster_extraction"]["max_num_points"].as(); - - parameters_.outlierRemoval_.isRemoveOutliers_ = yamlNode[prefix]["outlier_removal"]["is_remove_outliers"].as(); - parameters_.outlierRemoval_.meanK_ = yamlNode[prefix]["outlier_removal"]["mean_K"].as(); - parameters_.outlierRemoval_.stddevThreshold_ = yamlNode[prefix]["outlier_removal"]["stddev_threshold"].as(); - - parameters_.gridMap_.resolution_ = yamlNode[prefix]["grid_map"]["resolution"].as(); - parameters_.gridMap_.minCloudPointsPerCell_ = yamlNode[prefix]["grid_map"]["min_num_points_per_cell"].as(); - - parameters_.downsampling_.isDownsampleCloud_ = yamlNode[prefix]["downsampling"]["is_downsample_cloud"].as(); - parameters_.downsampling_.voxelSize_.x() = yamlNode[prefix]["downsampling"]["voxel_size"]["x"].as(); - parameters_.downsampling_.voxelSize_.y() = yamlNode[prefix]["downsampling"]["voxel_size"]["y"].as(); - parameters_.downsampling_.voxelSize_.z() = yamlNode[prefix]["downsampling"]["voxel_size"]["z"].as(); + yamlNode["cluster_extraction"]["use_max_height_as_cell_elevation"].as(); + parameters_.clusterExtraction_.clusterTolerance_ = yamlNode["cluster_extraction"]["cluster_tolerance"].as(); + parameters_.clusterExtraction_.minNumPoints_ = yamlNode["cluster_extraction"]["min_num_points"].as(); + parameters_.clusterExtraction_.maxNumPoints_ = yamlNode["cluster_extraction"]["max_num_points"].as(); + + parameters_.outlierRemoval_.isRemoveOutliers_ = yamlNode["outlier_removal"]["is_remove_outliers"].as(); + parameters_.outlierRemoval_.meanK_ = yamlNode["outlier_removal"]["mean_K"].as(); + parameters_.outlierRemoval_.stddevThreshold_ = yamlNode["outlier_removal"]["stddev_threshold"].as(); + + parameters_.gridMap_.resolution_ = yamlNode["grid_map"]["resolution"].as(); + parameters_.gridMap_.minCloudPointsPerCell_ = yamlNode["grid_map"]["min_num_points_per_cell"].as(); + parameters_.gridMap_.maxCloudPointsPerCell_ = yamlNode["grid_map"]["max_num_points_per_cell"].as(); + + parameters_.downsampling_.isDownsampleCloud_ = yamlNode["downsampling"]["is_downsample_cloud"].as(); + parameters_.downsampling_.voxelSize_.x() = yamlNode["downsampling"]["voxel_size"]["x"].as(); + parameters_.downsampling_.voxelSize_.y() = yamlNode["downsampling"]["voxel_size"]["y"].as(); + parameters_.downsampling_.voxelSize_.z() = yamlNode["downsampling"]["voxel_size"]["z"].as(); } bool PclLoaderParameters::loadParameters(const std::string& filename) { @@ -56,7 +55,8 @@ bool PclLoaderParameters::loadParameters(const std::string& filename) { } try { - handleYamlNode(yamlNode); + const std::string prefix{"pcl_grid_map_extraction"}; + loadParameters(yamlNode[prefix]); } catch (const std::runtime_error& exception) { ROS_ERROR_STREAM("PclLoaderParameters: Loading parameters failed: " << exception.what()); return false; diff --git a/grid_map_pcl/src/grid_map_pcl_loader_node.cpp b/grid_map_pcl/src/grid_map_pcl_loader_node.cpp index 7371a6e75..16531050c 100644 --- a/grid_map_pcl/src/grid_map_pcl_loader_node.cpp +++ b/grid_map_pcl/src/grid_map_pcl_loader_node.cpp @@ -26,7 +26,7 @@ int main(int argc, char** argv) { grid_map::GridMapPclLoader gridMapPclLoader; const std::string pathToCloud = gm::getPcdFilePath(nh); - gridMapPclLoader.loadParameters(gm::getParameterPath()); + gridMapPclLoader.loadParameters(gm::getParameterPath(nh)); gridMapPclLoader.loadCloudFromPcdFile(pathToCloud); gm::processPointcloud(&gridMapPclLoader, nh); @@ -37,7 +37,6 @@ int main(int argc, char** argv) { gm::saveGridMap(gridMap, nh, gm::getMapRosbagTopic(nh)); // publish grid map - grid_map_msgs::GridMap msg; grid_map::GridMapRosConverter::toMessage(gridMap, msg); gridMapPub.publish(msg); diff --git a/grid_map_pcl/src/helpers.cpp b/grid_map_pcl/src/helpers.cpp index bdcad43c2..4c016c26f 100644 --- a/grid_map_pcl/src/helpers.cpp +++ b/grid_map_pcl/src/helpers.cpp @@ -41,25 +41,27 @@ void setVerbosityLevelToDebugIfFlagSet(const ros::NodeHandle& nh) { } } -std::string getParameterPath() { - std::string filePath = ros::package::getPath("grid_map_pcl") + "/config/parameters.yaml"; - return filePath; +std::string getParameterPath(const ros::NodeHandle& nh) { + std::string defaultPath = ros::package::getPath("grid_map_pcl") + "/config/parameters.yaml"; + std::string pathToConfig; + nh.param("config_file_path", pathToConfig, defaultPath); + return pathToConfig; } std::string getOutputBagPath(const ros::NodeHandle& nh) { - std::string outputRosbagName, folderPath; - nh.param("folder_path", folderPath, ""); - nh.param("output_grid_map", outputRosbagName, "output_grid_map.bag"); - std::string pathToOutputBag = folderPath + "/" + outputRosbagName; + std::string pathToOutputBag; + const std::string defaultPath = ros::package::getPath("grid_map_pcl") + "/data/output_grid_map.bag"; + nh.param("output_grid_map", pathToOutputBag, defaultPath); return pathToOutputBag; } std::string getPcdFilePath(const ros::NodeHandle& nh) { - std::string inputCloudName, folderPath; - nh.param("folder_path", folderPath, ""); - nh.param("pcd_filename", inputCloudName, "input_cloud"); - std::string pathToCloud = folderPath + "/" + inputCloudName; - return pathToCloud; + std::string pathToCloud, folderPath; + const std::string defaultPathToCloud = "/data/input_cloud.pcd"; + const std::string defaultFolderPath = ros::package::getPath("grid_map_pcl"); + nh.param("pcd_filename", pathToCloud, defaultPathToCloud); + nh.param("folder_path", folderPath, defaultFolderPath); + return folderPath + "/" + pathToCloud; } std::string getMapFrame(const ros::NodeHandle& nh) { diff --git a/grid_map_pcl/src/pointcloud_publisher_node.cpp b/grid_map_pcl/src/pointcloud_publisher_node.cpp new file mode 100644 index 000000000..82e2b8e0f --- /dev/null +++ b/grid_map_pcl/src/pointcloud_publisher_node.cpp @@ -0,0 +1,42 @@ +/* + * pointcloud_publisher_node.cpp + * + * Created on: Aug 19, 2021 + * Author: Edo Jelavic + * Institute: ETH Zurich, Robotic Systems Lab + */ + +#include +#include +#include +#include "grid_map_pcl/helpers.hpp" + +namespace gm = ::grid_map::grid_map_pcl; +using Point = ::pcl::PointXYZ; +using PointCloud = ::pcl::PointCloud; + +void publishCloud(const std::string& filename, const ros::Publisher& pub, const std::string& frame) { + PointCloud::Ptr cloud(new pcl::PointCloud); + cloud = gm::loadPointcloudFromPcd(filename); + cloud->header.frame_id = frame; + sensor_msgs::PointCloud2 msg; + pcl::toROSMsg(*cloud, msg); + ROS_INFO_STREAM("Publishing loaded cloud, number of points: " << cloud->points.size()); + msg.header.stamp = ros::Time::now(); + pub.publish(msg); +} + +int main(int argc, char** argv) { + ros::init(argc, argv, "point_cloud_pub_node"); + ros::NodeHandle nh("~"); + + const std::string pathToCloud = gm::getPcdFilePath(nh); + const std::string cloudFrame = nh.param("cloud_frame", ""); + // publish cloud + ros::Publisher cloudPub = nh.advertise("raw_pointcloud", 1, true); + publishCloud(pathToCloud, cloudPub, cloudFrame); + + // run + ros::spin(); + return EXIT_SUCCESS; +} diff --git a/grid_map_pcl/test/test_data/parameters.yaml b/grid_map_pcl/test/test_data/parameters.yaml index ea4854ab9..772a8dadd 100644 --- a/grid_map_pcl/test/test_data/parameters.yaml +++ b/grid_map_pcl/test/test_data/parameters.yaml @@ -26,6 +26,7 @@ pcl_grid_map_extraction: z: 0.02 grid_map: min_num_points_per_cell: 4 + max_num_points_per_cell: 100000 resolution: 0.1 From a2eb6b1757122c27028335c52654982d615e62fd Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Fri, 3 Dec 2021 11:02:25 +0000 Subject: [PATCH 34/83] Merge branch 'feature/grid_map/update_maintainers' into 'master' [elevation_mapping][grid_map] Change maintainer GitOrigin-RevId: 885454c2804adf337030290e9467abce9613ef99 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 47db32aec..e5a7ff9e5 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ The source code is released under a [BSD 3-Clause license](LICENSE). **Author: Péter Fankhauser
Affiliation: [ANYbotics](https://www.anybotics.com/)
-Maintainer: Maximilian Wulf, mwulf@anybotics.com
** +Maintainer: Maximilian Wulf, mwulf@anybotics.com, Magnus Gärtner, mgaertner@anybotics.com
** With contributions by: Simone Arreghini, Tanja Baumann, Jeff Delmerico, Remo Diethelm, Perry Franklin, Magnus Gärtner, Ruben Grandia, Edo Jelavic, Dominic Jud, Ralph Kaestner, Philipp Krüsi, Alex Millane, Daniel Stonier, Elena Stumm, Martin Wermelinger, Christos Zalidis This projected was initially developed at ETH Zurich (Autonomous Systems Lab & Robotic Systems Lab). From b59cd8c6a65930e499fbcb505a362adc3cce96b0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Tue, 21 Dec 2021 09:55:34 +0000 Subject: [PATCH 35/83] Merge branch 'feature/grid_map_filters_improve_template_definitions' into 'master' [grid_map] cleanup grid_map_filters Closes #UNKNOWN GitOrigin-RevId: 3d7bf178ee3235f0c5d4b600109c5b10d5fc0af6 --- .../config/filters_demo_filter_chain.yaml | 1 + grid_map_filters/CHANGELOG.rst | 5 ++ grid_map_filters/CMakeLists.txt | 88 +++++++++++++++---- grid_map_filters/filter_plugins.xml | 38 ++++---- .../BufferNormalizerFilter.hpp | 18 ++-- .../grid_map_filters/ColorBlendingFilter.hpp | 24 ++--- .../grid_map_filters/ColorFillFilter.hpp | 19 ++-- .../grid_map_filters/ColorMapFilter.hpp | 20 ++--- .../grid_map_filters/CurvatureFilter.hpp | 18 ++-- .../grid_map_filters/DeletionFilter.hpp | 22 ++--- .../grid_map_filters/DuplicationFilter.hpp | 18 ++-- .../grid_map_filters/LightIntensityFilter.hpp | 18 ++-- .../grid_map_filters/MathExpressionFilter.hpp | 17 ++-- .../grid_map_filters/MeanInRadiusFilter.hpp | 18 ++-- .../grid_map_filters/MedianFillFilter.hpp | 24 +++-- .../grid_map_filters/MinInRadiusFilter.hpp | 17 ++-- .../include/grid_map_filters/MockFilter.hpp | 23 +++-- .../grid_map_filters/NormalColorMapFilter.hpp | 18 ++-- .../grid_map_filters/NormalVectorsFilter.hpp | 15 ++-- .../grid_map_filters/SetBasicLayersFilter.hpp | 20 ++--- .../SlidingWindowMathExpressionFilter.hpp | 22 ++--- .../grid_map_filters/ThresholdFilter.hpp | 15 ++-- grid_map_filters/package.xml | 2 +- .../src/BufferNormalizerFilter.cpp | 24 ++--- grid_map_filters/src/ColorBlendingFilter.cpp | 74 +++++++--------- grid_map_filters/src/ColorFillFilter.cpp | 45 ++++------ grid_map_filters/src/ColorMapFilter.cpp | 49 ++++------- grid_map_filters/src/CurvatureFilter.cpp | 54 +++++------- grid_map_filters/src/DeletionFilter.cpp | 28 ++---- grid_map_filters/src/DuplicationFilter.cpp | 27 ++---- grid_map_filters/src/LightIntensityFilter.cpp | 35 +++----- grid_map_filters/src/MathExpressionFilter.cpp | 29 ++---- grid_map_filters/src/MeanInRadiusFilter.cpp | 43 ++++----- grid_map_filters/src/MedianFillFilter.cpp | 80 +++++++---------- grid_map_filters/src/MinInRadiusFilter.cpp | 48 ++++------ grid_map_filters/src/MockFilter.cpp | 38 +++----- grid_map_filters/src/NormalColorMapFilter.cpp | 37 +++----- grid_map_filters/src/NormalVectorsFilter.cpp | 68 ++++++-------- grid_map_filters/src/SetBasicLayersFilter.cpp | 27 ++---- .../src/SlidingWindowMathExpressionFilter.cpp | 70 +++++++-------- grid_map_filters/src/ThresholdFilter.cpp | 50 +++-------- grid_map_filters/src/plugins.cpp | 39 ++++++++ .../test/median_fill_filter_test.cpp | 34 +++---- grid_map_filters/test/mock_filter_test.cpp | 11 +++ .../test/threshold_filter_test.cpp | 30 +++---- 45 files changed, 624 insertions(+), 796 deletions(-) create mode 100644 grid_map_filters/src/plugins.cpp create mode 100644 grid_map_filters/test/mock_filter_test.cpp diff --git a/grid_map_demos/config/filters_demo_filter_chain.yaml b/grid_map_demos/config/filters_demo_filter_chain.yaml index fd32a9370..5de01d98a 100644 --- a/grid_map_demos/config/filters_demo_filter_chain.yaml +++ b/grid_map_demos/config/filters_demo_filter_chain.yaml @@ -3,6 +3,7 @@ grid_map_filters: type: gridMapFilters/MockFilter params: processing_time: 100 + print_name: true - name: buffer_normalizer type: gridMapFilters/BufferNormalizerFilter diff --git a/grid_map_filters/CHANGELOG.rst b/grid_map_filters/CHANGELOG.rst index 9db33b066..bb5a13f3a 100644 --- a/grid_map_filters/CHANGELOG.rst +++ b/grid_map_filters/CHANGELOG.rst @@ -1,6 +1,11 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Changelog for package grid_map_filters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.6.8 (2021-12-15) +------------------ +* Improved the template definition structure: +* - grid_map_filters do not need to be template classes anymore. +* Contributors: Magnus Gärtner 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_filters/CMakeLists.txt b/grid_map_filters/CMakeLists.txt index 24ff49352..270bed529 100644 --- a/grid_map_filters/CMakeLists.txt +++ b/grid_map_filters/CMakeLists.txt @@ -1,9 +1,6 @@ cmake_minimum_required(VERSION 3.5.1) project(grid_map_filters) -# Better with parallelized algorithms. -#set(CMAKE_CXX_FLAGS "-std=c++11 ${CMAKE_CXX_FLAGS} -ffast-math") - # Better with serial algorithms. set(CMAKE_CXX_STANDARD 11) # We want performance (fast-math) but also need a representation for NaN values to represent missing values. @@ -16,14 +13,25 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=native -mtune=native -ffast-math") #set(TARGET_ARCHITECTURE "kaby-lake") -## Find catkin macros and libraries -find_package(catkin REQUIRED COMPONENTS +## Create a list of catkin package dependencies used in header files of this package. +set(CATKIN_PACKAGE_HEADER_DEPENDENCIES grid_map_core grid_map_ros grid_map_msgs filters ) +## Create a list of catkin package dependencies, now for both header and source files. +set(CATKIN_PACKAGE_DEPENDENCIES + ${CATKIN_PACKAGE_HEADER_DEPENDENCIES} +) + +## Find catkin dependencies for building this package. +find_package(catkin REQUIRED + COMPONENTS + ${CATKIN_PACKAGE_DEPENDENCIES} +) + ## System dependencies are found with CMake's conventions find_package(PkgConfig REQUIRED) @@ -51,14 +59,12 @@ find_package(OpenCV REQUIRED) catkin_package( INCLUDE_DIRS include - ${TBB_INCLUDE_DIRS} + ${OpenCV_INCLUDE_DIRS} # TODO Remove this include directory, currently it exported by the medianFillFilter header. LIBRARIES ${PROJECT_NAME} + ${PROJECT_NAME}_plugins CATKIN_DEPENDS - grid_map_ros - grid_map_core - grid_map_msgs - filters + ${CATKIN_PACKAGE_HEADER_DEPENDENCIES} DEPENDS OpenCV ) @@ -72,7 +78,6 @@ include_directories( include SYSTEM ${catkin_INCLUDE_DIRS} - ${TBB_INCLUDE_DIRS} ${OpenCV_INCLUDE_DIRS} ) @@ -98,35 +103,79 @@ add_library(${PROJECT_NAME} src/BufferNormalizerFilter.cpp ) +target_include_directories(${PROJECT_NAME} + PRIVATE + ${TBB_INCLUDE_DIRS} +) + +target_include_directories(${PROJECT_NAME} + SYSTEM PUBLIC + ${catkin_INCLUDE_DIRS} +) + target_link_libraries(${PROJECT_NAME} ${catkin_LIBRARIES} ${TBB_LIBRARIES} ${OpenCV_LIBRARIES} ) +add_dependencies(${PROJECT_NAME} + ${catkin_EXPORTED_TARGETS} +) + +# Instantiate plugin exports for every filter in this package. +add_library(${PROJECT_NAME}_plugins + src/plugins.cpp +) + +target_include_directories(${PROJECT_NAME}_plugins + SYSTEM PUBLIC + ${catkin_INCLUDE_DIRS} +) + +target_link_libraries(${PROJECT_NAME}_plugins + ${PROJECT_NAME} + ${TBB_LIBRARIES} # is this necessary? + ${OpenCV_LIBRARIES} # is this necessary? +) + +add_dependencies(${PROJECT_NAME}_plugins + ${catkin_EXPORTED_TARGETS} + ${PROJECT_NAME} +) + ############# ## Install ## ############# # Mark executables and/or libraries for installation install( - TARGETS ${PROJECT_NAME} - ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} - RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} + TARGETS + ${PROJECT_NAME} + ${PROJECT_NAME}_plugins + ARCHIVE DESTINATION + ${CATKIN_PACKAGE_LIB_DESTINATION} + LIBRARY DESTINATION + ${CATKIN_PACKAGE_LIB_DESTINATION} + RUNTIME DESTINATION + ${CATKIN_PACKAGE_BIN_DESTINATION} ) # Mark cpp header files for installation install( - DIRECTORY include/${PROJECT_NAME}/ - DESTINATION ${CATKIN_PACKAGE_INCLUDE_DESTINATION} + DIRECTORY + include/${PROJECT_NAME}/ + DESTINATION + ${CATKIN_PACKAGE_INCLUDE_DESTINATION} FILES_MATCHING PATTERN "*.hpp" ) # Mark other files for installation install( - FILES filter_plugins.xml - DESTINATION ${CATKIN_PACKAGE_SHARE_DESTINATION} + FILES + filter_plugins.xml + DESTINATION + ${CATKIN_PACKAGE_SHARE_DESTINATION} ) ############# @@ -137,6 +186,7 @@ if (CATKIN_ENABLE_TESTING) catkin_add_gtest(${PROJECT_NAME}-test test/test_grid_map_filters.cpp test/median_fill_filter_test.cpp + test/mock_filter_test.cpp test/threshold_filter_test.cpp ) target_include_directories(${PROJECT_NAME}-test PRIVATE diff --git a/grid_map_filters/filter_plugins.xml b/grid_map_filters/filter_plugins.xml index 669d80a1a..d8e96ac60 100644 --- a/grid_map_filters/filter_plugins.xml +++ b/grid_map_filters/filter_plugins.xml @@ -1,91 +1,91 @@ - - + + Set values below/above a threshold to a specified value. - + Compute for each cell of a layer the minimal value inside a radius. - + Compute for each cell of a layer the mean value inside a radius. - + Fill holes (NaNs) in a layer using the median value inside a radius. Optionally, apply median calculations for values that are already finite. - + Does Identity, but allows to set a delay and debug prints. Used for testing purposes. - + Compute the normal vectors of a layer in a map. - + Compute the curvature (second derivative) of a layer in the map. - + Compute a new color layer based on normal vectors layers. - + Compute the diffuse lighting of a surface as new black and white color layer. - + Parse and evaluate a mathematical matrix expression with layers of a grid map. - + Parse and evaluate a mathematical matrix expression within a sliding window on a layer of a grid map. - + Duplicate a layer of a grid map. - + Delete layers from a grid map. - + Creates a new color layer. - + Creates a new color layer with the color mapped between min. and max. value. - + Blend two color layers. - + Set specified layers of a grid map as basic layers. - + Normalizes the buffer of a map such that it has default (zero) start index. diff --git a/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp b/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp index d00b5fc34..a22a8f3dd 100644 --- a/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/BufferNormalizerFilter.hpp @@ -8,19 +8,17 @@ #pragma once -#include - #include +#include +#include + namespace grid_map { /*! * Normalizes the buffer of a map such that it has default (zero) start index. */ -template -class BufferNormalizerFilter : public filters::FilterBase -{ - +class BufferNormalizerFilter : public filters::FilterBase { public: /*! * Constructor @@ -30,19 +28,19 @@ class BufferNormalizerFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~BufferNormalizerFilter(); + ~BufferNormalizerFilter() override; /*! * Configures the filter from parameters on the parameter server. */ - virtual bool configure(); + bool configure() override; /*! * Normalizes the buffer of a map. * @param mapIn the input map before normalization. * @param mapOut the normalized map. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp b/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp index 3e06a1761..3f4c56645 100644 --- a/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ColorBlendingFilter.hpp @@ -8,19 +8,18 @@ #pragma once -#include - #include #include +#include +#include + namespace grid_map { /*! * Blend two color layers. */ -template -class ColorBlendingFilter : public filters::FilterBase -{ +class ColorBlendingFilter : public filters::FilterBase { public: /*! * Constructor @@ -30,27 +29,22 @@ class ColorBlendingFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~ColorBlendingFilter(); + ~ColorBlendingFilter() override; /*! * Configures the filter. */ - virtual bool configure(); + bool configure() override; /*! * Compute a new color layer based on blending two color layers. * @param mapIn grid map containing the two color layers. * @param mapOut grid map containing mapIn and the blended color layer. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: - - enum class BlendModes { - Normal, - HardLight, - SoftLight - }; + enum class BlendModes { Normal, HardLight, SoftLight }; //! Input layers. std::string backgroundLayer_, foregroundLayer_; @@ -65,4 +59,4 @@ class ColorBlendingFilter : public filters::FilterBase std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp b/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp index 4cc3fdfcd..a6ccfac72 100644 --- a/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ColorFillFilter.hpp @@ -8,20 +8,17 @@ #pragma once -#include - #include -#include + +#include +#include namespace grid_map { /*! * Creates a new color layer. */ -template -class ColorFillFilter : public filters::FilterBase -{ - +class ColorFillFilter : public filters::FilterBase { public: /*! * Constructor @@ -31,19 +28,19 @@ class ColorFillFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~ColorFillFilter(); + ~ColorFillFilter() override; /*! * Configures the filter. */ - virtual bool configure(); + bool configure() override; /*! * Adds a new color layer. * @param mapIn grid map to add the new layer. * @param mapOut grid map the grid map with the new color layer. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Color. @@ -56,4 +53,4 @@ class ColorFillFilter : public filters::FilterBase std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp b/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp index dbc56d65a..d19e2d1ce 100644 --- a/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ColorMapFilter.hpp @@ -8,21 +8,19 @@ #pragma once -#include -#include - #include #include +#include +#include +#include + namespace grid_map { /*! * Creates a new color layer with the color mapped between min. and max. value. */ -template -class ColorMapFilter : public filters::FilterBase -{ - +class ColorMapFilter : public filters::FilterBase { public: /*! * Constructor @@ -32,19 +30,19 @@ class ColorMapFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~ColorMapFilter(); + ~ColorMapFilter() override; /*! * Configures the filter. */ - virtual bool configure(); + bool configure() override; /*! * Adds a new color layer. * @param mapIn grid map to add the new layer. * @param mapOut grid map the grid map with the new color layer. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Min./max. colors. @@ -60,4 +58,4 @@ class ColorMapFilter : public filters::FilterBase std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp b/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp index e6155c98d..0f3762a32 100644 --- a/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/CurvatureFilter.hpp @@ -8,20 +8,18 @@ #pragma once -#include - #include #include +#include +#include + namespace grid_map { /*! * Compute the curvature (second derivative) of a layer in the map. */ -template -class CurvatureFilter : public filters::FilterBase -{ - +class CurvatureFilter : public filters::FilterBase { public: /*! * Constructor @@ -31,12 +29,12 @@ class CurvatureFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~CurvatureFilter(); + ~CurvatureFilter() override; /*! * Configures the filter from parameters on the Parameter Server */ - virtual bool configure(); + bool configure() override; /*! * Compute the curvature of a layer in a map and @@ -44,7 +42,7 @@ class CurvatureFilter : public filters::FilterBase * @param mapIn grid map containing the layer for which the curvature is computed for. * @param mapOut grid map containing mapIn and the new layer for the curvature. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Input layer name. @@ -54,4 +52,4 @@ class CurvatureFilter : public filters::FilterBase std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp b/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp index e30022b43..658b02720 100644 --- a/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/DeletionFilter.hpp @@ -8,20 +8,18 @@ #pragma once -#include - -#include #include +#include + +#include +#include namespace grid_map { /*! * Deletion filter class deletes layers of a grid map. */ -template -class DeletionFilter : public filters::FilterBase -{ - +class DeletionFilter : public filters::FilterBase { public: /*! * Constructor @@ -31,25 +29,23 @@ class DeletionFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~DeletionFilter(); + ~DeletionFilter() override; /*! * Configures the filter from parameters on the parameter server. */ - virtual bool configure(); + bool configure() override; /*! * Deletes the specified layers of a grid map. * @param mapIn gridMap with the different layers. * @param mapOut gridMap without the deleted layers. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: - //! List of layers that should be deleted. std::vector layers_; - }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp b/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp index 8639cb059..825518b6e 100644 --- a/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/DuplicationFilter.hpp @@ -8,19 +8,17 @@ #pragma once -#include - #include +#include +#include + namespace grid_map { /*! * Duplication filter class duplicates a layer of a grid map. */ -template -class DuplicationFilter : public filters::FilterBase -{ - +class DuplicationFilter : public filters::FilterBase { public: /*! * Constructor @@ -30,19 +28,19 @@ class DuplicationFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~DuplicationFilter(); + ~DuplicationFilter() override; /*! * Configures the filter from parameters on the parameter server. */ - virtual bool configure(); + bool configure() override; /*! * Duplicates the specified layers of a grid map. * @param mapIn with the layer to duplicate. * @param mapOut with the layer duplicated. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Name of the layer that is duplicated. @@ -52,4 +50,4 @@ class DuplicationFilter : public filters::FilterBase std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp b/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp index 476373480..0572c84ec 100644 --- a/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/LightIntensityFilter.hpp @@ -8,20 +8,18 @@ #pragma once -#include - #include #include +#include +#include + namespace grid_map { /*! * Compute the diffuse lighting of a surface as new black and white color layer. */ -template -class LightIntensityFilter : public filters::FilterBase -{ - +class LightIntensityFilter : public filters::FilterBase { public: /*! * Constructor @@ -31,19 +29,19 @@ class LightIntensityFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~LightIntensityFilter(); + ~LightIntensityFilter() override; /*! * Configures the filter from parameters on the Parameter Server */ - virtual bool configure(); + bool configure() override; /*! * Compute the diffuse lighting layer. * @param mapIn grid map containing the layers of the normal vectors. * @param mapOut grid map containing mapIn and the black and white lighting color layer. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Input layers prefix. @@ -56,4 +54,4 @@ class LightIntensityFilter : public filters::FilterBase Eigen::Vector3f lightDirection_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp b/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp index 48551dd38..c909b8ae8 100644 --- a/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MathExpressionFilter.hpp @@ -8,21 +8,18 @@ #pragma once +#include #include "EigenLab/EigenLab.h" #include - -#include +#include namespace grid_map { /*! * Parses and evaluates a mathematical matrix expression with layers of a grid map. */ -template -class MathExpressionFilter : public filters::FilterBase -{ - +class MathExpressionFilter : public filters::FilterBase { public: /*! * Constructor @@ -32,19 +29,19 @@ class MathExpressionFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~MathExpressionFilter(); + ~MathExpressionFilter() override; /*! * Configures the filter from parameters on the parameter server. */ - virtual bool configure(); + bool configure() override; /*! * Takes the minimum out of different layers of a grid map. * @param mapIn gridMap with the different layers to take the min. * @param mapOut gridMap with an additional layer containing the sum. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! EigenLab parser. @@ -57,4 +54,4 @@ class MathExpressionFilter : public filters::FilterBase std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp b/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp index 72a11f0cc..78de1151b 100644 --- a/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MeanInRadiusFilter.hpp @@ -8,19 +8,17 @@ #pragma once -#include - -#include #include +#include +#include + namespace grid_map { /*! * Filter class to find the mean of the values inside a radius. */ -template -class MeanInRadiusFilter : public filters::FilterBase { - +class MeanInRadiusFilter : public filters::FilterBase { public: /*! * Constructor @@ -30,12 +28,12 @@ class MeanInRadiusFilter : public filters::FilterBase { /*! * Destructor. */ - virtual ~MeanInRadiusFilter(); + ~MeanInRadiusFilter() override; /*! * Configures the filter from parameters on the Parameter Server */ - virtual bool configure(); + bool configure() override; /*! * Computes for each value in the input layer the mean of all values in a radius around it @@ -43,7 +41,7 @@ class MeanInRadiusFilter : public filters::FilterBase { * @param mapIn grid map containing the input layer. * @param mapOut grid map containing the layers of the input map and the new layer. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Radius to take the mean from. @@ -56,4 +54,4 @@ class MeanInRadiusFilter : public filters::FilterBase { std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp index 25b41a37a..be05a8551 100644 --- a/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MedianFillFilter.hpp @@ -8,11 +8,11 @@ #pragma once -#include - #include #include +#include +#include #include #include @@ -22,8 +22,7 @@ namespace grid_map { * Uses std::nth_element to fill holes in the input layer by the median of the surrounding values. The result is put into the output_layer. * Note: Only values for which the fill_layer is true will be filled. The fill_layer is auto computed if not present in the input. */ -template -class MedianFillFilter : public filters::FilterBase { +class MedianFillFilter : public filters::FilterBase { public: /*! * Constructor @@ -33,12 +32,12 @@ class MedianFillFilter : public filters::FilterBase { /*! * Destructor. */ - virtual ~MedianFillFilter(); + ~MedianFillFilter() override; /*! * Configures the filter from parameters on the Parameter Server */ - virtual bool configure(); + bool configure() override; /*! * Adds a new output layer to the map. @@ -47,7 +46,7 @@ class MedianFillFilter : public filters::FilterBase { * @param mapIn grid map containing input layer * @param mapOut grid map containing mapIn and median filtered input layer. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; protected: /*! @@ -60,8 +59,7 @@ class MedianFillFilter : public filters::FilterBase { * @param bufferSize The buffer size of the input * @return The median of finites in the specified neighbourhood. */ - float getMedian(Eigen::Ref inputMap, const grid_map::Index& centerIndex, const size_t radiusInPixels, - const grid_map::Size bufferSize); + static float getMedian(Eigen::Ref inputMap, const Index& centerIndex, size_t radiusInPixels, Size bufferSize); /** * Computes a mask of which cells to fill-in based on the validity of input cells. I.e small holes between (and including) valid cells are @@ -73,7 +71,7 @@ class MedianFillFilter : public filters::FilterBase { * @param mapOut The output GridMap will contain the additional fill_mask layer afterwards. * @return An eigen mask indicating which cells should be filled by the median filter. */ - Eigen::MatrixXf computeAndAddFillMask(const Eigen::MatrixXf& inputMap, T& mapOut); + Eigen::MatrixXf computeAndAddFillMask(const Eigen::MatrixXf& inputMap, GridMap& mapOut); /** * Remove sparse valid regions by morphological opening. @@ -82,7 +80,7 @@ class MedianFillFilter : public filters::FilterBase { * @param inputMask Initial mask possibly containing also sparse valid regions that will be removed. * @return An opencv mask of the same size as input mask with small sparse valid regions removed. */ - cv::Mat_ cleanedMask(const cv::Mat_& inputMask); + static cv::Mat_ cleanedMask(const cv::Mat_& inputMask); /** * Performs morphological closing on a boolean cv matrix mask. @@ -90,7 +88,7 @@ class MedianFillFilter : public filters::FilterBase { * @param [in] numDilationClosingIterations Algorithm specific parameter. Higher means that bigger holes will still be filled. * @return A mask of the same size as isValidMask but with small holes filled. */ - cv::Mat_ fillHoles(const cv::Mat_& isValidMask, const size_t numDilationClosingIterations); + static cv::Mat_ fillHoles(const cv::Mat_& isValidMask, size_t numDilationClosingIterations); /** * Adds a float cv matrix as layer to a given map. @@ -98,7 +96,7 @@ class MedianFillFilter : public filters::FilterBase { * @param [in] cvLayer The cv matrix to add. * @param [in] layerName The layer name */ - void addCvMatAsLayer(T& gridMap, const cv::Mat& cvLayer, const std::string& layerName); + static void addCvMatAsLayer(GridMap& gridMap, const cv::Mat& cvLayer, const std::string& layerName); private: //! Median filtering radius of NaN values in the input. diff --git a/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp b/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp index b000b4063..521d244eb 100644 --- a/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MinInRadiusFilter.hpp @@ -8,18 +8,17 @@ #pragma once -#include - #include +#include +#include + namespace grid_map { /*! * Filter class to compute the minimal value inside a radius. */ -template -class MinInRadiusFilter : public filters::FilterBase { - +class MinInRadiusFilter : public filters::FilterBase { public: /*! * Constructor. @@ -29,12 +28,12 @@ class MinInRadiusFilter : public filters::FilterBase { /*! * Destructor. */ - virtual ~MinInRadiusFilter(); + ~MinInRadiusFilter() override; /*! * Configures the filter from parameters on the Parameter Server */ - virtual bool configure(); + bool configure() override; /*! * Computes for each value in the input layer the minimum of all values in a radius around it. @@ -42,7 +41,7 @@ class MinInRadiusFilter : public filters::FilterBase { * @param mapIn grid map containing the input layer. * @param mapOut grid map containing the original layers and the new layer with the minimal values. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Radius to take the minimum in. @@ -55,4 +54,4 @@ class MinInRadiusFilter : public filters::FilterBase { std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/MockFilter.hpp b/grid_map_filters/include/grid_map_filters/MockFilter.hpp index 15da96bfd..f7d174f8b 100644 --- a/grid_map_filters/include/grid_map_filters/MockFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/MockFilter.hpp @@ -8,19 +8,17 @@ #pragma once -#include - #include +#include +#include + namespace grid_map { /*! * Duplication filter class duplicates a layer of a grid map. */ -template -class MockFilter : public filters::FilterBase -{ - +class MockFilter : public filters::FilterBase { public: /*! * Constructor @@ -30,27 +28,26 @@ class MockFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~MockFilter(); + ~MockFilter() override; /*! * Configures the filter from parameters on the parameter server. */ - virtual bool configure(); + bool configure() override; /*! * Copies the input to the output. The time for the update is specified by processingTime_. Optionally the update is logged. * @param mapIn Input. * @param mapOut Output. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: - //! Flag indicating wheter to also log on update. - bool printName_; + bool printName_{false}; //! The time [ms] that the update function takes. - uint processingTime_; + uint processingTime_{0}; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp b/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp index 793c4778a..26093bf5f 100644 --- a/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/NormalColorMapFilter.hpp @@ -8,20 +8,18 @@ #pragma once -#include - #include #include +#include +#include + namespace grid_map { /*! * Compute a new color layer based on normal vectors layers. */ -template -class NormalColorMapFilter : public filters::FilterBase -{ - +class NormalColorMapFilter : public filters::FilterBase { public: /*! * Constructor @@ -31,19 +29,19 @@ class NormalColorMapFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~NormalColorMapFilter(); + ~NormalColorMapFilter() override; /*! * Configures the filter from parameters on the Parameter Server */ - virtual bool configure(); + bool configure() override; /*! * Compute a new color layer based on normal vectors layers. * @param mapIn grid map containing the layers of the normal vectors. * @param mapOut grid map containing mapIn and the new color layer. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Input layers prefix. @@ -53,4 +51,4 @@ class NormalColorMapFilter : public filters::FilterBase std::string outputLayer_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp b/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp index 13c7fe3c3..0d01850ae 100644 --- a/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/NormalVectorsFilter.hpp @@ -8,19 +8,18 @@ #pragma once -#include -#include - #include #include +#include +#include + namespace grid_map { /*! * Compute the normal vectors of a layer in a map. */ -template -class NormalVectorsFilter : public filters::FilterBase { +class NormalVectorsFilter : public filters::FilterBase { public: /*! * Constructor @@ -56,7 +55,7 @@ class NormalVectorsFilter : public filters::FilterBase { * @param mapIn grid map containing the layer for which the normal vectors are computed for. * @param mapOut grid map containing mapIn and the new layers for the normal vectors. */ - bool update(const T& mapIn, T& mapOut) override; + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: /*! @@ -106,7 +105,7 @@ class NormalVectorsFilter : public filters::FilterBase { * @param index: Index of point in the grid map for which this function calculates the normal vector. */ void areaSingleNormalComputation(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix, - const grid_map::Index& index); + const grid_map::Index& index); /*! * Estimate the normal vector at each point of the input layer by using the rasterSingleNormalComputation function. * This function makes use of the raster method and is the serial version of such normal vector computation using a @@ -160,7 +159,7 @@ class NormalVectorsFilter : public filters::FilterBase { * @param index: Index of point in the grid map for which this function calculates the normal vector. */ void rasterSingleNormalComputation(GridMap& map, const std::string& outputLayersPrefix, const grid_map::Matrix& dataMap, - const grid_map::Index& index); + const grid_map::Index& index); enum class Method { AreaSerial, AreaParallel, RasterSerial, RasterParallel }; diff --git a/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp b/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp index 90ca68d23..e8d598118 100644 --- a/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/SetBasicLayersFilter.hpp @@ -8,19 +8,18 @@ #pragma once -#include - -#include #include +#include + +#include +#include namespace grid_map { /*! * Set specified layers of a grid map as basic layers. */ -template -class SetBasicLayersFilter : public filters::FilterBase -{ +class SetBasicLayersFilter : public filters::FilterBase { public: /*! * Constructor @@ -30,24 +29,23 @@ class SetBasicLayersFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~SetBasicLayersFilter(); + ~SetBasicLayersFilter() override; /*! * Configures the filter from parameters on the parameter server. */ - virtual bool configure(); + bool configure() override; /*! * Set the specified layers as basic layers. * @param mapIn input grid map. * @param mapOut output grid map with basic layers set. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! List of layers that should be set as basic layers. std::vector layers_; - }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp b/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp index 03ae2f52d..f759bf2d2 100644 --- a/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/SlidingWindowMathExpressionFilter.hpp @@ -8,24 +8,20 @@ #pragma once -#include "EigenLab/EigenLab.h" - -#include +#include +#include #include +#include -#include -#include +#include "EigenLab/EigenLab.h" namespace grid_map { /*! * Parse and evaluate a mathematical matrix expression within a sliding window on a layer of a grid map. */ -template -class SlidingWindowMathExpressionFilter : public filters::FilterBase -{ - +class SlidingWindowMathExpressionFilter : public filters::FilterBase { public: /*! * Constructor @@ -35,19 +31,19 @@ class SlidingWindowMathExpressionFilter : public filters::FilterBase /*! * Destructor. */ - virtual ~SlidingWindowMathExpressionFilter(); + ~SlidingWindowMathExpressionFilter() override; /*! * Configures the filter from parameters on the parameter server. */ - virtual bool configure(); + bool configure() override; /*! * Takes the minimum out of different layers of a grid map. * @param mapIn gridMap with the different layers to take the min. * @param mapOut gridMap with an additional layer containing the sum. */ - virtual bool update(const T& mapIn, T& mapOut); + bool update(const GridMap& mapIn, GridMap& mapOut) override; private: //! Input layer name. @@ -78,4 +74,4 @@ class SlidingWindowMathExpressionFilter : public filters::FilterBase SlidingWindowIterator::EdgeHandling edgeHandling_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp b/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp index b67ebf363..7073b50dc 100644 --- a/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp +++ b/grid_map_filters/include/grid_map_filters/ThresholdFilter.hpp @@ -8,21 +8,19 @@ #pragma once -#include - #include #include +#include +#include + namespace grid_map { /*! * Threshold filter class to set values below/above a threshold to a * specified value. */ -template -class ThresholdFilter : public filters::FilterBase -{ - +class ThresholdFilter : public filters::FilterBase { public: /*! * Constructor @@ -45,10 +43,9 @@ class ThresholdFilter : public filters::FilterBase * @param mapIn GridMap with the different layers to apply a threshold. * @param mapOut GridMap with the threshold applied to the layers. */ - virtual bool update(const T& mapIn, T& mapOut); + virtual bool update(const GridMap& mapIn, GridMap& mapOut); private: - //! Layer the threshold will be evaluated. std::string conditionLayer_; @@ -68,4 +65,4 @@ class ThresholdFilter : public filters::FilterBase double setTo_; }; -} /* namespace */ +} // namespace grid_map diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index e59efd2eb..523d68fc0 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.7 + 1.6.8 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/src/BufferNormalizerFilter.cpp b/grid_map_filters/src/BufferNormalizerFilter.cpp index 40fed7272..aac60d577 100644 --- a/grid_map_filters/src/BufferNormalizerFilter.cpp +++ b/grid_map_filters/src/BufferNormalizerFilter.cpp @@ -9,36 +9,24 @@ #include "grid_map_filters/BufferNormalizerFilter.hpp" #include -#include using namespace filters; namespace grid_map { -template -BufferNormalizerFilter::BufferNormalizerFilter() -{ -} +BufferNormalizerFilter::BufferNormalizerFilter() = default; -template -BufferNormalizerFilter::~BufferNormalizerFilter() -{ -} +BufferNormalizerFilter::~BufferNormalizerFilter() = default; -template -bool BufferNormalizerFilter::configure() -{ +bool BufferNormalizerFilter::configure() { return true; } -template -bool BufferNormalizerFilter::update(const T& mapIn, T& mapOut) -{ +bool BufferNormalizerFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; mapOut.convertToDefaultStartIndex(); + return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::BufferNormalizerFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/ColorBlendingFilter.cpp b/grid_map_filters/src/ColorBlendingFilter.cpp index 1c42327f1..82b0eb42f 100644 --- a/grid_map_filters/src/ColorBlendingFilter.cpp +++ b/grid_map_filters/src/ColorBlendingFilter.cpp @@ -6,65 +6,58 @@ * Institute: ETH Zurich, ANYbotics */ -#include +#include "grid_map_filters/ColorBlendingFilter.hpp" -#include -#include +#include #include -#include + +#include using namespace filters; namespace grid_map { -template -ColorBlendingFilter::ColorBlendingFilter() - : opacity_(1.0), - blendMode_(BlendModes::Normal) -{ -} +ColorBlendingFilter::ColorBlendingFilter() : opacity_(1.0), blendMode_(BlendModes::Normal) {} -template -ColorBlendingFilter::~ColorBlendingFilter() -{ -} +ColorBlendingFilter::~ColorBlendingFilter() = default; -template -bool ColorBlendingFilter::configure() -{ - if (!FilterBase < T > ::getParam(std::string("background_layer"), backgroundLayer_)) { +bool ColorBlendingFilter::configure() { + if (!FilterBase::getParam(std::string("background_layer"), backgroundLayer_)) { ROS_ERROR("Color blending filter did not find parameter `background_layer`."); return false; } ROS_DEBUG("Color blending filter background layer is = %s.", backgroundLayer_.c_str()); - if (!FilterBase < T > ::getParam(std::string("foreground_layer"), foregroundLayer_)) { + if (!FilterBase::getParam(std::string("foreground_layer"), foregroundLayer_)) { ROS_ERROR("Color blending filter did not find parameter `foreground_layer`."); return false; } ROS_DEBUG("Color blending filter foreground layer is = %s.", foregroundLayer_.c_str()); std::string blendMode; - if (!FilterBase < T > ::getParam(std::string("blend_mode"), blendMode)) { + if (!FilterBase::getParam(std::string("blend_mode"), blendMode)) { blendMode = "normal"; } ROS_DEBUG("Color blending filter blend mode is = %s.", blendMode.c_str()); - if (blendMode == "normal") blendMode_ = BlendModes::Normal; - else if (blendMode == "hard_light") blendMode_ = BlendModes::HardLight; - else if (blendMode == "soft_light") blendMode_ = BlendModes::SoftLight; - else { + if (blendMode == "normal") { + blendMode_ = BlendModes::Normal; + } else if (blendMode == "hard_light") { + blendMode_ = BlendModes::HardLight; + } else if (blendMode == "soft_light") { + blendMode_ = BlendModes::SoftLight; + } else { ROS_ERROR("Color blending filter blend mode `%s` does not exist.", blendMode.c_str()); return false; } - if (!FilterBase < T > ::getParam(std::string("opacity"), opacity_)) { + if (!FilterBase::getParam(std::string("opacity"), opacity_)) { ROS_ERROR("Color blending filter did not find parameter `opacity`."); return false; } ROS_DEBUG("Color blending filter opacity is = %f.", opacity_); - if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Color blending filter did not find parameter `output_layer`."); return false; } @@ -72,9 +65,7 @@ bool ColorBlendingFilter::configure() return true; } -template -bool ColorBlendingFilter::update(const T& mapIn, T& mapOut) -{ +bool ColorBlendingFilter::update(const GridMap& mapIn, GridMap& mapOut) { const auto& background = mapIn[backgroundLayer_]; const auto& foreground = mapIn[foregroundLayer_]; @@ -89,7 +80,9 @@ bool ColorBlendingFilter::update(const T& mapIn, T& mapOut) } else if (std::isnan(foreground(i))) { output(i) = background(i); } else { - Eigen::Array3f backgroundColor, foregroundColor, outputColor; + Eigen::Array3f backgroundColor; + Eigen::Array3f foregroundColor; + Eigen::Array3f outputColor; Eigen::Vector3f color; colorValueToVector(background(i), color); backgroundColor = color.array(); @@ -100,8 +93,7 @@ bool ColorBlendingFilter::update(const T& mapIn, T& mapOut) case BlendModes::Normal: outputColor = (1.0 - opacity_) * backgroundColor + opacity_ * foregroundColor; break; - case BlendModes::HardLight: - { + case BlendModes::HardLight: { Eigen::Array3f blendedColor; if (foregroundColor.mean() < 0.5) { blendedColor = 2.0 * backgroundColor * foregroundColor; @@ -116,15 +108,15 @@ bool ColorBlendingFilter::update(const T& mapIn, T& mapOut) break; } - case BlendModes::SoftLight: - { + case BlendModes::SoftLight: { Eigen::Array3f blendedColor; // Photoshop. -// if (foregroundColor.mean() < 0.5) { -// blendedColor = 2.0 * backgroundColor * foregroundColor + backgroundColor.square() * (1.0 - 2.0 * foregroundColor); -// } else { -// blendedColor = 2.0 * backgroundColor * (1.0 - foregroundColor) + backgroundColor.sqrt() * (2.0 * foregroundColor - 1.0); -// } + // if (foregroundColor.mean() < 0.5) { + // blendedColor = 2.0 * backgroundColor * foregroundColor + backgroundColor.square() * (1.0 - 2.0 * foregroundColor); + // } else { + // blendedColor = 2.0 * backgroundColor * (1.0 - foregroundColor) + backgroundColor.sqrt() * (2.0 * foregroundColor + // - 1.0); + // } // Pegtop. blendedColor = ((1.0 - 2.0 * foregroundColor) * backgroundColor.square() + 2.0 * backgroundColor * foregroundColor); if (opacity_ == 1.0) { @@ -144,6 +136,4 @@ bool ColorBlendingFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::ColorBlendingFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/ColorFillFilter.cpp b/grid_map_filters/src/ColorFillFilter.cpp index 1f620a8e0..0076449bc 100644 --- a/grid_map_filters/src/ColorFillFilter.cpp +++ b/grid_map_filters/src/ColorFillFilter.cpp @@ -6,58 +6,47 @@ * Institute: ETH Zurich, ANYbotics */ -#include - -#include -#include +#include "grid_map_filters/ColorFillFilter.hpp" +#include #include +#include + using namespace filters; namespace grid_map { -template -ColorFillFilter::ColorFillFilter() - : r_(0.0), - g_(0.0), - b_(0.0) -{ -} +ColorFillFilter::ColorFillFilter() : r_(0.0), g_(0.0), b_(0.0) {} -template -ColorFillFilter::~ColorFillFilter() -{ -} +ColorFillFilter::~ColorFillFilter() = default; -template -bool ColorFillFilter::configure() -{ - if (!FilterBase < T > ::getParam(std::string("red"), r_)) { +bool ColorFillFilter::configure() { + if (!FilterBase::getParam(std::string("red"), r_)) { ROS_ERROR("Color fill filter did not find parameter `red`."); return false; } ROS_DEBUG("Color fill filter red is = %f.", r_); - if (!FilterBase < T > ::getParam(std::string("green"), g_)) { + if (!FilterBase::getParam(std::string("green"), g_)) { ROS_ERROR("Color fill filter did not find parameter `green`."); return false; } ROS_DEBUG("Color fill filter green is = %f.", g_); - if (!FilterBase < T > ::getParam(std::string("blue"), b_)) { + if (!FilterBase::getParam(std::string("blue"), b_)) { ROS_ERROR("Color fill filter did not find parameter `blue`."); return false; } ROS_DEBUG("Color fill filter blue is = %f.", b_); - if (!FilterBase < T > ::getParam(std::string("mask_layer"), maskLayer_)) { + if (!FilterBase::getParam(std::string("mask_layer"), maskLayer_)) { ROS_WARN("Color fill filter did not find parameter `mask_layer`."); } else { ROS_DEBUG("Color fill filter mask_layer = %s.", maskLayer_.c_str()); } - if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Color fill filter did not find parameter `output_layer`."); return false; } @@ -65,12 +54,10 @@ bool ColorFillFilter::configure() return true; } -template -bool ColorFillFilter::update(const T& mapIn, T& mapOut) -{ +bool ColorFillFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; const Eigen::Vector3f colorVector(r_, g_, b_); - float colorValue; + float colorValue{NAN}; colorVectorToValue(colorVector, colorValue); if (maskLayer_.empty()) { @@ -89,6 +76,4 @@ bool ColorFillFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::ColorFillFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/ColorMapFilter.cpp b/grid_map_filters/src/ColorMapFilter.cpp index ef58d93df..4ad6301a7 100644 --- a/grid_map_filters/src/ColorMapFilter.cpp +++ b/grid_map_filters/src/ColorMapFilter.cpp @@ -6,55 +6,44 @@ * Institute: ETH Zurich, ANYbotics */ -#include - -#include -#include +#include "grid_map_filters/ColorMapFilter.hpp" #include +#include + using namespace filters; namespace grid_map { -template -ColorMapFilter::ColorMapFilter() - : min_(0.0), - max_(1.0) -{ -} +ColorMapFilter::ColorMapFilter() : min_(0.0), max_(1.0) {} -template -ColorMapFilter::~ColorMapFilter() -{ -} +ColorMapFilter::~ColorMapFilter() = default; -template -bool ColorMapFilter::configure() -{ - if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { +bool ColorMapFilter::configure() { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("Color map filter did not find parameter `input_layer`."); return false; } ROS_DEBUG("Color map filter input_layer = %s.", inputLayer_.c_str()); - if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Color map filter did not find parameter `output_layer`."); return false; } ROS_DEBUG("Color map filter output_layer = %s.", outputLayer_.c_str()); - if (!FilterBase::getParam(std::string("min/value"), min_)) { + if (!FilterBase::getParam(std::string("min/value"), min_)) { ROS_ERROR("Color map filter did not find parameter `min/value`."); return false; } - if (!FilterBase::getParam(std::string("max/value"), max_)) { + if (!FilterBase::getParam(std::string("max/value"), max_)) { ROS_ERROR("Color map filter did not find parameter `max/value`."); return false; } std::vector minColor; - if (!FilterBase::getParam(std::string("min/color"), minColor)) { + if (!FilterBase::getParam(std::string("min/color"), minColor)) { ROS_ERROR("Color map filter did not find parameter `min/color`."); return false; } @@ -65,7 +54,7 @@ bool ColorMapFilter::configure() minColor_ << minColor[0], minColor[1], minColor[2]; std::vector maxColor; - if (!FilterBase::getParam(std::string("max/color"), maxColor)) { + if (!FilterBase::getParam(std::string("max/color"), maxColor)) { ROS_ERROR("Color map filter did not find parameter `max/color`."); return false; } @@ -78,11 +67,9 @@ bool ColorMapFilter::configure() return true; } -template -bool ColorMapFilter::update(const T& mapIn, T& mapOut) -{ +bool ColorMapFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; - auto& input = mapIn[inputLayer_]; + const auto& input = mapIn[inputLayer_]; mapOut.add(outputLayer_); auto& output = mapOut[outputLayer_]; @@ -91,7 +78,9 @@ bool ColorMapFilter::update(const T& mapIn, T& mapOut) // For each cell in map. for (Eigen::Index i = 0; i < output.size(); ++i) { - if (!std::isfinite(input(i))) continue; + if (!std::isfinite(input(i))) { + continue; + } const double value = std::min(std::max(input(i), min_), max_); const double factor = (value - min_) / range; const Eigen::Vector3f color = minColor_ + factor * colorRange; @@ -101,6 +90,4 @@ bool ColorMapFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::ColorMapFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/CurvatureFilter.cpp b/grid_map_filters/src/CurvatureFilter.cpp index b880f2285..7f5b2c21d 100644 --- a/grid_map_filters/src/CurvatureFilter.cpp +++ b/grid_map_filters/src/CurvatureFilter.cpp @@ -6,37 +6,28 @@ * Institute: ETH Zurich, ANYbotics */ -#include - -#include -#include +#include "grid_map_filters/CurvatureFilter.hpp" #include +#include + using namespace filters; namespace grid_map { -template -CurvatureFilter::CurvatureFilter() -{ -} +CurvatureFilter::CurvatureFilter() = default; -template -CurvatureFilter::~CurvatureFilter() -{ -} +CurvatureFilter::~CurvatureFilter() = default; -template -bool CurvatureFilter::configure() -{ - if (!FilterBase < T > ::getParam(std::string("input_layer"), inputLayer_)) { +bool CurvatureFilter::configure() { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("Curvature filter did not find parameter `input_layer`."); return false; } ROS_DEBUG("Curvature filter input layer is = %s.", inputLayer_.c_str()); - if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Curvature filter did not find parameter `output_layer`."); return false; } @@ -45,11 +36,10 @@ bool CurvatureFilter::configure() return true; } -template -bool CurvatureFilter::update(const T& mapIn, T& mapOut) -{ - if (!mapIn.isDefaultStartIndex()) throw std::runtime_error( - "CurvatureFilter cannot be used with grid maps that don't have a default buffer start index."); +bool CurvatureFilter::update(const GridMap& mapIn, GridMap& mapOut) { + if (!mapIn.isDefaultStartIndex()) { + throw std::runtime_error("CurvatureFilter cannot be used with grid maps that don't have a default buffer start index."); + } mapOut = mapIn; mapOut.add(outputLayer_); @@ -60,11 +50,17 @@ bool CurvatureFilter::update(const T& mapIn, T& mapOut) for (Eigen::Index j{0}; j < input.cols(); ++j) { for (Eigen::Index i{0}; i < input.rows(); ++i) { // http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/How_Curvature_works/00q90000000t000000/ - if (!std::isfinite(input(i, j))) continue; - float D = ((input(i, j==0 ? j : j-1) + input(i, j==input.cols()-1 ? j : j + 1)) / 2.0 - input(i, j)) / L2; - float E = ((input(i==0 ? i : i-1, j) + input(i==input.rows()-1 ? i : i + 1, j)) / 2.0 - input(i, j)) / L2; - if (!std::isfinite(D)) D = 0.0; - if (!std::isfinite(E)) E = 0.0; + if (!std::isfinite(input(i, j))) { + continue; + } + float D = ((input(i, j == 0 ? j : j - 1) + input(i, j == input.cols() - 1 ? j : j + 1)) / 2.0 - input(i, j)) / L2; + float E = ((input(i == 0 ? i : i - 1, j) + input(i == input.rows() - 1 ? i : i + 1, j)) / 2.0 - input(i, j)) / L2; + if (!std::isfinite(D)) { + D = 0.0; + } + if (!std::isfinite(E)) { + E = 0.0; + } curvature(i, j) = -2.0 * (D + E); } } @@ -72,6 +68,4 @@ bool CurvatureFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::CurvatureFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/DeletionFilter.cpp b/grid_map_filters/src/DeletionFilter.cpp index d916a9f12..4d9e42b1b 100644 --- a/grid_map_filters/src/DeletionFilter.cpp +++ b/grid_map_filters/src/DeletionFilter.cpp @@ -9,27 +9,18 @@ #include "grid_map_filters/DeletionFilter.hpp" #include -#include using namespace filters; namespace grid_map { -template -DeletionFilter::DeletionFilter() -{ -} +DeletionFilter::DeletionFilter() = default; -template -DeletionFilter::~DeletionFilter() -{ -} +DeletionFilter::~DeletionFilter() = default; -template -bool DeletionFilter::configure() -{ +bool DeletionFilter::configure() { // Load Parameters - if (!FilterBase::getParam(std::string("layers"), layers_)) { + if (!FilterBase::getParam(std::string("layers"), layers_)) { ROS_ERROR("DeletionFilter did not find parameter 'layers'."); return false; } @@ -37,16 +28,13 @@ bool DeletionFilter::configure() return true; } -template -bool DeletionFilter::update(const T& mapIn, T& mapOut) -{ +bool DeletionFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; for (const auto& layer : layers_) { // Check if layer exists. if (!mapOut.exists(layer)) { - ROS_ERROR("Check your deletion layers! Type %s does not exist.", - layer.c_str()); + ROS_ERROR("Check your deletion layers! Type %s does not exist.", layer.c_str()); continue; } @@ -58,6 +46,4 @@ bool DeletionFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::DeletionFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/DuplicationFilter.cpp b/grid_map_filters/src/DuplicationFilter.cpp index 1244bca67..f5ef2fca5 100644 --- a/grid_map_filters/src/DuplicationFilter.cpp +++ b/grid_map_filters/src/DuplicationFilter.cpp @@ -9,31 +9,22 @@ #include "grid_map_filters/DuplicationFilter.hpp" #include -#include using namespace filters; namespace grid_map { -template -DuplicationFilter::DuplicationFilter() -{ -} +DuplicationFilter::DuplicationFilter() = default; -template -DuplicationFilter::~DuplicationFilter() -{ -} +DuplicationFilter::~DuplicationFilter() = default; -template -bool DuplicationFilter::configure() -{ - if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { +bool DuplicationFilter::configure() { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("DuplicationFilter did not find parameter 'input_layer'."); return false; } - if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("DuplicationFilter did not find parameter 'output_layer'."); return false; } @@ -41,14 +32,10 @@ bool DuplicationFilter::configure() return true; } -template -bool DuplicationFilter::update(const T& mapIn, T& mapOut) -{ +bool DuplicationFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; mapOut.add(outputLayer_, mapIn[inputLayer_]); return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::DuplicationFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/LightIntensityFilter.cpp b/grid_map_filters/src/LightIntensityFilter.cpp index d9f7bd9eb..df676a61f 100644 --- a/grid_map_filters/src/LightIntensityFilter.cpp +++ b/grid_map_filters/src/LightIntensityFilter.cpp @@ -6,44 +6,35 @@ * Institute: ETH Zurich, ANYbotics */ -#include - -#include -#include +#include "grid_map_filters/LightIntensityFilter.hpp" #include +#include + using namespace filters; namespace grid_map { -template -LightIntensityFilter::LightIntensityFilter() -{ -} +LightIntensityFilter::LightIntensityFilter() = default; -template -LightIntensityFilter::~LightIntensityFilter() -{ -} +LightIntensityFilter::~LightIntensityFilter() = default; -template -bool LightIntensityFilter::configure() -{ - if (!FilterBase < T > ::getParam(std::string("input_layers_prefix"), inputLayersPrefix_)) { +bool LightIntensityFilter::configure() { + if (!FilterBase::getParam(std::string("input_layers_prefix"), inputLayersPrefix_)) { ROS_ERROR("Light intensity filter did not find parameter `input_layers_prefix`."); return false; } ROS_DEBUG("Light intensity filter input layers prefix is = %s.", inputLayersPrefix_.c_str()); - if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Light intensity filter did not find parameter `output_layer`."); return false; } ROS_DEBUG("Light intensity filter output_layer = %s.", outputLayer_.c_str()); std::vector lightDirection; - if (!FilterBase < T > ::getParam(std::string("light_direction"), lightDirection)) { + if (!FilterBase::getParam(std::string("light_direction"), lightDirection)) { ROS_ERROR("Light intensity filter did not find parameter `light_direction`."); return false; } @@ -58,9 +49,7 @@ bool LightIntensityFilter::configure() return true; } -template -bool LightIntensityFilter::update(const T& mapIn, T& mapOut) -{ +bool LightIntensityFilter::update(const GridMap& mapIn, GridMap& mapOut) { const auto& normalX = mapIn[inputLayersPrefix_ + "x"]; const auto& normalY = mapIn[inputLayersPrefix_ + "y"]; const auto& normalZ = mapIn[inputLayersPrefix_ + "z"]; @@ -84,6 +73,4 @@ bool LightIntensityFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::LightIntensityFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/MathExpressionFilter.cpp b/grid_map_filters/src/MathExpressionFilter.cpp index 961af417a..faac76bad 100644 --- a/grid_map_filters/src/MathExpressionFilter.cpp +++ b/grid_map_filters/src/MathExpressionFilter.cpp @@ -9,43 +9,32 @@ #include "grid_map_filters/MathExpressionFilter.hpp" #include -#include using namespace filters; namespace grid_map { -template -MathExpressionFilter::MathExpressionFilter() -{ -} +MathExpressionFilter::MathExpressionFilter() = default; -template -MathExpressionFilter::~MathExpressionFilter() -{ -} +MathExpressionFilter::~MathExpressionFilter() = default; -template -bool MathExpressionFilter::configure() -{ - if (!FilterBase::getParam(std::string("expression"), expression_)) { +bool MathExpressionFilter::configure() { + if (!FilterBase::getParam(std::string("expression"), expression_)) { ROS_ERROR("MathExpressionFilter did not find parameter 'expression'."); return false; } - if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("MathExpressionFilter did not find parameter 'output_layer'."); return false; } // TODO Can we make caching work with changing shared variable? -// parser_.setCacheExpressions(true); + // parser_.setCacheExpressions(true); return true; } -template -bool MathExpressionFilter::update(const T& mapIn, T& mapOut) -{ +bool MathExpressionFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; for (const auto& layer : mapOut.getLayers()) { parser_.var(layer).setShared(mapOut[layer]); @@ -55,6 +44,4 @@ bool MathExpressionFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::MathExpressionFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/MeanInRadiusFilter.cpp b/grid_map_filters/src/MeanInRadiusFilter.cpp index 956f82cb0..b06257fcc 100644 --- a/grid_map_filters/src/MeanInRadiusFilter.cpp +++ b/grid_map_filters/src/MeanInRadiusFilter.cpp @@ -8,28 +8,19 @@ #include "grid_map_filters/MeanInRadiusFilter.hpp" +#include #include -#include using namespace filters; namespace grid_map { -template -MeanInRadiusFilter::MeanInRadiusFilter() - : radius_(0.0) -{ -} +MeanInRadiusFilter::MeanInRadiusFilter() : radius_(0.0) {} -template -MeanInRadiusFilter::~MeanInRadiusFilter() -{ -} +MeanInRadiusFilter::~MeanInRadiusFilter() = default; -template -bool MeanInRadiusFilter::configure() -{ - if (!FilterBase < T > ::getParam(std::string("radius"), radius_)) { +bool MeanInRadiusFilter::configure() { + if (!FilterBase::getParam(std::string("radius"), radius_)) { ROS_ERROR("MeanInRadius filter did not find parameter `radius`."); return false; } @@ -41,14 +32,14 @@ bool MeanInRadiusFilter::configure() ROS_DEBUG("Radius = %f.", radius_); - if (!FilterBase < T > ::getParam(std::string("input_layer"), inputLayer_)) { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("MeanInRadius filter did not find parameter `input_layer`."); return false; } ROS_DEBUG("MeanInRadius input layer is = %s.", inputLayer_.c_str()); - if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("MeanInRadius filter did not find parameter `output_layer`."); return false; } @@ -57,18 +48,15 @@ bool MeanInRadiusFilter::configure() return true; } -template -bool MeanInRadiusFilter::update(const T& mapIn, T& mapOut) -{ +bool MeanInRadiusFilter::update(const GridMap& mapIn, GridMap& mapOut) { // Add new layers to the elevation map. mapOut = mapIn; mapOut.add(outputLayer_); - double value; + double value{NAN}; // First iteration through the elevation map. for (grid_map::GridMapIterator iterator(mapOut); !iterator.isPastEnd(); ++iterator) { - double valueSum = 0.0; int counter = 0; // Requested position (center) of circle in map. @@ -76,22 +64,21 @@ bool MeanInRadiusFilter::update(const T& mapIn, T& mapOut) mapOut.getPosition(*iterator, center); // Find the mean in a circle around the center - for (grid_map::CircleIterator submapIterator(mapOut, center, radius_); !submapIterator.isPastEnd(); - ++submapIterator) { - if (!mapOut.isValid(*submapIterator, inputLayer_)) + for (grid_map::CircleIterator submapIterator(mapOut, center, radius_); !submapIterator.isPastEnd(); ++submapIterator) { + if (!mapOut.isValid(*submapIterator, inputLayer_)) { continue; + } value = mapOut.at(inputLayer_, *submapIterator); valueSum += value; counter++; } - if (counter != 0) + if (counter != 0) { mapOut.at(outputLayer_, *iterator) = valueSum / counter; + } } return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::MeanInRadiusFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/MedianFillFilter.cpp b/grid_map_filters/src/MedianFillFilter.cpp index 097f14bd7..6ee643477 100644 --- a/grid_map_filters/src/MedianFillFilter.cpp +++ b/grid_map_filters/src/MedianFillFilter.cpp @@ -8,9 +8,6 @@ #include "grid_map_filters/MedianFillFilter.hpp" -// Wrap as ROS Filter -#include - #include // Grid Map @@ -24,15 +21,13 @@ using namespace filters; namespace grid_map { -template -MedianFillFilter::MedianFillFilter() : fillHoleRadius_(0.05), filterExistingValues_(false), numErodeDilationIterations_(4) {} +MedianFillFilter::MedianFillFilter() + : fillHoleRadius_(0.05), existingValueRadius_(0.0), filterExistingValues_(false), numErodeDilationIterations_(4), debug_(false) {} -template -MedianFillFilter::~MedianFillFilter() = default; +MedianFillFilter::~MedianFillFilter() = default; -template -bool MedianFillFilter::configure() { - if (!FilterBase::getParam(std::string("fill_hole_radius"), fillHoleRadius_)) { +bool MedianFillFilter::configure() { + if (!FilterBase::getParam(std::string("fill_hole_radius"), fillHoleRadius_)) { ROS_ERROR("Median filter did not find parameter fill_hole_radius."); return false; } @@ -44,25 +39,25 @@ bool MedianFillFilter::configure() { ROS_DEBUG("fill_hole_radius = %f.", fillHoleRadius_); - if (!FilterBase::getParam(std::string("filter_existing_values"), filterExistingValues_)) { + if (!FilterBase::getParam(std::string("filter_existing_values"), filterExistingValues_)) { ROS_INFO("Median filter did not find parameter filter_existing_values. Not filtering existing values."); filterExistingValues_ = false; } ROS_DEBUG("Filter_existing_values = %s.", filterExistingValues_ ? "true" : "false"); - if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("Median filter did not find parameter `input_layer`."); return false; } - if (!FilterBase::getParam(std::string("num_erode_dilation_iterations"), numErodeDilationIterations_)) { + if (!FilterBase::getParam(std::string("num_erode_dilation_iterations"), numErodeDilationIterations_)) { ROS_ERROR("Median filter did not find parameter `num_erode_dilation_iterations`."); return false; } if (filterExistingValues_) { - if (!FilterBase::getParam(std::string("existing_value_radius"), existingValueRadius_)) { + if (!FilterBase::getParam(std::string("existing_value_radius"), existingValueRadius_)) { ROS_ERROR("Median filter did not find parameter existing_value_radius."); return false; } @@ -77,28 +72,28 @@ bool MedianFillFilter::configure() { ROS_DEBUG("Median input layer is = %s.", inputLayer_.c_str()); - if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Median filter did not find parameter `output_layer`."); return false; } ROS_DEBUG("Median output layer = %s.", outputLayer_.c_str()); - if (!FilterBase::getParam(std::string("fill_mask_layer"), fillMaskLayer_)) { + if (!FilterBase::getParam(std::string("fill_mask_layer"), fillMaskLayer_)) { ROS_ERROR("Median filter did not find parameter `fill_mask_layer`."); return false; } ROS_DEBUG("Median fill mask layer = %s.", fillMaskLayer_.c_str()); - if (!FilterBase::getParam(std::string("debug"), debug_)) { + if (!FilterBase::getParam(std::string("debug"), debug_)) { ROS_INFO("Median filter did not find parameter debug. Disabling debug output."); debug_ = false; } ROS_DEBUG("Debug mode= %s.", debug_ ? "true" : "false"); - if (debug_ && !FilterBase::getParam(std::string("debug_infill_mask_layer"), debugInfillMaskLayer_)) { + if (debug_ && !FilterBase::getParam(std::string("debug_infill_mask_layer"), debugInfillMaskLayer_)) { ROS_ERROR("Median filter did not find parameter `debug_infill_mask_layer`."); return false; } @@ -108,8 +103,7 @@ bool MedianFillFilter::configure() { return true; } -template -bool MedianFillFilter::update(const T& mapIn, T& mapOut) { +bool MedianFillFilter::update(const GridMap& mapIn, GridMap& mapOut) { // Copy input map and add new layer to it. mapOut = mapIn; if (!mapOut.exists(outputLayer_)) { @@ -119,8 +113,8 @@ bool MedianFillFilter::update(const T& mapIn, T& mapOut) { mapOut.convertToDefaultStartIndex(); // Avoid hash map lookups afterwards. I.e, get data matrices as references. - grid_map::Matrix inputMap{mapOut[inputLayer_]}; // copy by value to do filtering first. - grid_map::Matrix& outputMap{mapOut[outputLayer_]}; + Matrix inputMap{mapOut[inputLayer_]}; // copy by value to do filtering first. + Matrix& outputMap{mapOut[outputLayer_]}; // Check if mask is already computed from a previous iteration. Eigen::MatrixXf shouldFill; @@ -132,7 +126,7 @@ bool MedianFillFilter::update(const T& mapIn, T& mapOut) { const size_t radiusInPixels{static_cast(fillHoleRadius_ / mapIn.getResolution())}; const size_t existingValueRadiusInPixels{static_cast(existingValueRadius_ / mapIn.getResolution())}; - const grid_map::Index& bufferSize{mapOut.getSize()}; + const Index& bufferSize{mapOut.getSize()}; unsigned int numNans{0u}; // Iterate through the entire GridMap and update NaN values with the median. for (GridMapIterator iterator(mapOut); !iterator.isPastEnd(); ++iterator) { @@ -140,10 +134,10 @@ bool MedianFillFilter::update(const T& mapIn, T& mapOut) { const auto& inputValue{inputMap(index(0), index(1))}; const float& shouldFillThisCell{shouldFill(index(0), index(1))}; auto& outputValue{outputMap(index(0), index(1))}; - if (!std::isfinite(inputValue) && shouldFillThisCell) { // Fill the NaN input value with the median. + if (!std::isfinite(inputValue) && (shouldFillThisCell != 0.0f)) { // Fill the NaN input value with the median. outputValue = getMedian(inputMap, index, radiusInPixels, bufferSize); numNans++; - } else if (filterExistingValues_ && shouldFillThisCell) { // Value is already finite. Optionally add some filtering. + } else if (filterExistingValues_ && (shouldFillThisCell != 0.0f)) { // Value is already finite. Optionally add some filtering. outputValue = getMedian(inputMap, index, existingValueRadiusInPixels, bufferSize); } else { // Dont do any filtering, just take the input value. outputValue = inputValue; @@ -156,15 +150,14 @@ bool MedianFillFilter::update(const T& mapIn, T& mapOut) { return true; } -template -float MedianFillFilter::getMedian(Eigen::Ref inputMap, const grid_map::Index& centerIndex, - const size_t radiusInPixels, const grid_map::Size bufferSize) { +float MedianFillFilter::getMedian(Eigen::Ref inputMap, const Index& centerIndex, const size_t radiusInPixels, + const Size bufferSize) { // Bound the median window to the GridMap boundaries. Calculate the neighbour patch. - grid_map::Index topLeftIndex{centerIndex - grid_map::Index(radiusInPixels, radiusInPixels)}; - grid_map::Index bottomRightIndex{centerIndex + grid_map::Index(radiusInPixels, radiusInPixels)}; - grid_map::boundIndexToRange(topLeftIndex, bufferSize); - grid_map::boundIndexToRange(bottomRightIndex, bufferSize); - const grid_map::Index neighbourPatchSize{bottomRightIndex - topLeftIndex + grid_map::Index{1, 1}}; + Index topLeftIndex{centerIndex - Index(radiusInPixels, radiusInPixels)}; + Index bottomRightIndex{centerIndex + Index(radiusInPixels, radiusInPixels)}; + boundIndexToRange(topLeftIndex, bufferSize); + boundIndexToRange(bottomRightIndex, bufferSize); + const Index neighbourPatchSize{bottomRightIndex - topLeftIndex + Index{1, 1}}; // Extract local neighbourhood. const auto& neighbourhood{inputMap.block(topLeftIndex(0), topLeftIndex(1), neighbourPatchSize(0), neighbourPatchSize(1))}; @@ -192,8 +185,7 @@ float MedianFillFilter::getMedian(Eigen::Ref inputMap } } -template -Eigen::MatrixXf MedianFillFilter::computeAndAddFillMask(const Eigen::MatrixXf& inputMap, T& mapOut) { +Eigen::MatrixXf MedianFillFilter::computeAndAddFillMask(const Eigen::MatrixXf& inputMap, GridMap& mapOut) { Eigen::MatrixXf shouldFill; // Precompute mask of valid height values using MaskMatrix = Eigen::Matrix; @@ -217,11 +209,10 @@ Eigen::MatrixXf MedianFillFilter::computeAndAddFillMask(const Eigen::MatrixXf return shouldFill; } -template -cv::Mat_ MedianFillFilter::cleanedMask(const cv::Mat_& inputMask) { +cv::Mat_ MedianFillFilter::cleanedMask(const cv::Mat_& inputMask) { auto element{cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3), cv::Point(1, 1))}; - cv::Mat_ cleanedInputMask(inputMask.size(), inputMask.type()); + cv::Mat_ cleanedInputMask(inputMask.size(), false); // Erode then dilate to remove sparse points cv::dilate(inputMask, cleanedInputMask, element); @@ -232,10 +223,9 @@ cv::Mat_ MedianFillFilter::cleanedMask(const cv::Mat_& inputMask) return cleanedInputMask; } -template -cv::Mat_ MedianFillFilter::fillHoles(const cv::Mat_& isValidMask, const size_t numDilationClosingIterations) { +cv::Mat_ MedianFillFilter::fillHoles(const cv::Mat_& isValidMask, const size_t numDilationClosingIterations) { auto element{cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3), cv::Point(1, 1))}; - cv::Mat_ holesFilledMask(isValidMask.size(), isValidMask.type()); + cv::Mat_ holesFilledMask(isValidMask.size(), false); // Remove holes in the mask by morphological closing. cv::dilate(isValidMask, holesFilledMask, element); for (size_t iteration = 1; iteration < numDilationClosingIterations; iteration++) { @@ -248,16 +238,10 @@ cv::Mat_ MedianFillFilter::fillHoles(const cv::Mat_& isValidMask, return holesFilledMask; } -template -void MedianFillFilter::addCvMatAsLayer(T& gridMap, const cv::Mat& cvLayer, const std::string& layerName) { +void MedianFillFilter::addCvMatAsLayer(GridMap& gridMap, const cv::Mat& cvLayer, const std::string& layerName) { Eigen::MatrixXf tmpEigenMatrix; cv::cv2eigen(cvLayer, tmpEigenMatrix); gridMap.add(layerName, tmpEigenMatrix); } } // namespace grid_map - -// Explicitly define the specialization for GridMap to have the filter implementation available for testing. -template class grid_map::MedianFillFilter; -// Export the filter. -PLUGINLIB_EXPORT_CLASS(grid_map::MedianFillFilter, filters::FilterBase) diff --git a/grid_map_filters/src/MinInRadiusFilter.cpp b/grid_map_filters/src/MinInRadiusFilter.cpp index 5934c1460..0967217a9 100644 --- a/grid_map_filters/src/MinInRadiusFilter.cpp +++ b/grid_map_filters/src/MinInRadiusFilter.cpp @@ -8,28 +8,19 @@ #include "grid_map_filters/MinInRadiusFilter.hpp" +#include #include -#include using namespace filters; namespace grid_map { -template -MinInRadiusFilter::MinInRadiusFilter() - : radius_(0.0) -{ -} +MinInRadiusFilter::MinInRadiusFilter() : radius_(0.0) {} -template -MinInRadiusFilter::~MinInRadiusFilter() -{ -} +MinInRadiusFilter::~MinInRadiusFilter() = default; -template -bool MinInRadiusFilter::configure() -{ - if (!FilterBase < T > ::getParam(std::string("radius"), radius_)) { +bool MinInRadiusFilter::configure() { + if (!FilterBase::getParam(std::string("radius"), radius_)) { ROS_ERROR("MinInRadius filter did not find parameter `radius`."); return false; } @@ -40,14 +31,14 @@ bool MinInRadiusFilter::configure() } ROS_DEBUG("Radius = %f.", radius_); - if (!FilterBase < T > ::getParam(std::string("input_layer"), inputLayer_)) { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("MinInRadius filter did not find parameter `input_layer`."); return false; } ROS_DEBUG("MinInRadius input layer is = %s.", inputLayer_.c_str()); - if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Step filter did not find parameter `output_layer`."); return false; } @@ -56,19 +47,18 @@ bool MinInRadiusFilter::configure() return true; } -template -bool MinInRadiusFilter::update(const T& mapIn, T& mapOut) -{ +bool MinInRadiusFilter::update(const GridMap& mapIn, GridMap& mapOut) { // Add new layer to the elevation map. mapOut = mapIn; mapOut.add(outputLayer_); - double value; + double value{NAN}; // First iteration through the elevation map. for (grid_map::GridMapIterator iterator(mapOut); !iterator.isPastEnd(); ++iterator) { - if (!mapOut.isValid(*iterator, inputLayer_)) + if (!mapOut.isValid(*iterator, inputLayer_)) { continue; + } value = mapOut.at(inputLayer_, *iterator); double valueMin = 0.0; @@ -78,10 +68,10 @@ bool MinInRadiusFilter::update(const T& mapIn, T& mapOut) // Get minimal value in the circular window. bool init = false; - for (grid_map::CircleIterator submapIterator(mapOut, center, radius_); !submapIterator.isPastEnd(); - ++submapIterator) { - if (!mapOut.isValid(*submapIterator, inputLayer_)) + for (grid_map::CircleIterator submapIterator(mapOut, center, radius_); !submapIterator.isPastEnd(); ++submapIterator) { + if (!mapOut.isValid(*submapIterator, inputLayer_)) { continue; + } value = mapOut.at(inputLayer_, *submapIterator); if (!init) { @@ -89,17 +79,17 @@ bool MinInRadiusFilter::update(const T& mapIn, T& mapOut) init = true; continue; } - if (value < valueMin) + if (value < valueMin) { valueMin = value; + } } - if (init) + if (init) { mapOut.at(outputLayer_, *iterator) = valueMin; + } } return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::MinInRadiusFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/MockFilter.cpp b/grid_map_filters/src/MockFilter.cpp index 00c1fe92a..7643e6f62 100644 --- a/grid_map_filters/src/MockFilter.cpp +++ b/grid_map_filters/src/MockFilter.cpp @@ -6,36 +6,28 @@ * Institute: ETH Zurich, ANYbotics */ -#include -#include -#include +#include "grid_map_filters/MockFilter.hpp" + #include +#include -#include "grid_map_filters/MockFilter.hpp" +#include using namespace filters; namespace grid_map { -template -MockFilter::MockFilter() -{ -} +MockFilter::MockFilter() = default; -template -MockFilter::~MockFilter() -{ -} +MockFilter::~MockFilter() = default; -template -bool MockFilter::configure() -{ - if (!FilterBase::getParam(std::string("processing_time"), processingTime_)) { +bool MockFilter::configure() { + if (!FilterBase::getParam(std::string("processing_time"), processingTime_)) { ROS_ERROR("MockFilter did not find parameter 'processing_time'."); return false; } - if (!FilterBase::getParam(std::string("print_name"), printName_)) { + if (!FilterBase::getParam(std::string("print_name"), printName_)) { ROS_INFO("MockFilter did not find parameter 'print_name'. Not printing the name. "); printName_ = false; } @@ -43,17 +35,13 @@ bool MockFilter::configure() return true; } -template -bool MockFilter::update(const T& mapIn, T& mapOut) -{ +bool MockFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; - if(printName_){ - ROS_INFO_STREAM(this->getName()<<": update()"); + if (printName_) { + ROS_INFO_STREAM(this->getName() << ": update()"); } std::this_thread::sleep_for(std::chrono::milliseconds(processingTime_)); return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::MockFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/NormalColorMapFilter.cpp b/grid_map_filters/src/NormalColorMapFilter.cpp index 01f672076..9a8e92b16 100644 --- a/grid_map_filters/src/NormalColorMapFilter.cpp +++ b/grid_map_filters/src/NormalColorMapFilter.cpp @@ -6,37 +6,28 @@ * Institute: ETH Zurich, ANYbotics */ -#include - -#include -#include +#include "grid_map_filters/NormalColorMapFilter.hpp" #include +#include + using namespace filters; namespace grid_map { -template -NormalColorMapFilter::NormalColorMapFilter() -{ -} +NormalColorMapFilter::NormalColorMapFilter() = default; -template -NormalColorMapFilter::~NormalColorMapFilter() -{ -} +NormalColorMapFilter::~NormalColorMapFilter() = default; -template -bool NormalColorMapFilter::configure() -{ - if (!FilterBase < T > ::getParam(std::string("input_layers_prefix"), inputLayersPrefix_)) { +bool NormalColorMapFilter::configure() { + if (!FilterBase::getParam(std::string("input_layers_prefix"), inputLayersPrefix_)) { ROS_ERROR("Normal color map filter did not find parameter `input_layers_prefix`."); return false; } ROS_DEBUG("Normal color map filter input layers prefix is = %s.", inputLayersPrefix_.c_str()); - if (!FilterBase < T > ::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("Normal color map filter did not find parameter `output_layer`."); return false; } @@ -44,9 +35,7 @@ bool NormalColorMapFilter::configure() return true; } -template -bool NormalColorMapFilter::update(const T& mapIn, T& mapOut) -{ +bool NormalColorMapFilter::update(const GridMap& mapIn, GridMap& mapOut) { const auto& normalX = mapIn[inputLayersPrefix_ + "x"]; const auto& normalY = mapIn[inputLayersPrefix_ + "y"]; const auto& normalZ = mapIn[inputLayersPrefix_ + "z"]; @@ -61,15 +50,11 @@ bool NormalColorMapFilter::update(const T& mapIn, T& mapOut) // For each cell in map. for (Eigen::Index i = 0; i < color.size(); ++i) { - const Eigen::Vector3f colorVector((normalX(i) + 1.0) / 2.0, - (normalY(i) + 1.0) / 2.0, - (normalZ(i) / 2.0) + 0.5); + const Eigen::Vector3f colorVector((normalX(i) + 1.0) / 2.0, (normalY(i) + 1.0) / 2.0, (normalZ(i) / 2.0) + 0.5); colorVectorToValue(colorVector, color(i)); } return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::NormalColorMapFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/NormalVectorsFilter.cpp b/grid_map_filters/src/NormalVectorsFilter.cpp index f43b19a89..f6cdce240 100644 --- a/grid_map_filters/src/NormalVectorsFilter.cpp +++ b/grid_map_filters/src/NormalVectorsFilter.cpp @@ -6,32 +6,29 @@ * Institute: ETH Zurich, ANYbotics */ -#include -#include +#include "grid_map_filters/NormalVectorsFilter.hpp" + +#include #include #include #include #include +#include #include -#include - namespace grid_map { -template -NormalVectorsFilter::NormalVectorsFilter() +NormalVectorsFilter::NormalVectorsFilter() : method_(Method::RasterSerial), estimationRadius_(0.0), parallelizationEnabled_(false), threadCount_(1), gridMapResolution_(0.02) {} -template -NormalVectorsFilter::~NormalVectorsFilter() = default; +NormalVectorsFilter::~NormalVectorsFilter() = default; -template -bool NormalVectorsFilter::configure() { +bool NormalVectorsFilter::configure() { // Read which algorithm is chosen: area or raster. std::string algorithm; - if (!filters::FilterBase::getParam(std::string("algorithm"), algorithm)) { + if (!FilterBase::getParam(std::string("algorithm"), algorithm)) { ROS_WARN("Could not find the parameter: `algorithm`. Setting to default value: 'area'."); // Default value. algorithm = "area"; @@ -41,7 +38,7 @@ bool NormalVectorsFilter::configure() { // on purpose it throws unwanted errors. if (algorithm != "raster") { // Read radius, if found, its value will be used for area method. If radius parameter is not found, raster method will be used. - if (!filters::FilterBase::getParam(std::string("radius"), estimationRadius_)) { + if (!FilterBase::getParam(std::string("radius"), estimationRadius_)) { ROS_WARN("Could not find the parameter: `radius`. Switching to raster method."); algorithm = "raster"; } @@ -55,7 +52,7 @@ bool NormalVectorsFilter::configure() { // Read parallelization_enabled to decide whether parallelization has to be used, if parameter is not found an error is thrown and // the false default value will be used. - if (!filters::FilterBase::getParam(std::string("parallelization_enabled"), parallelizationEnabled_)) { + if (!FilterBase::getParam(std::string("parallelization_enabled"), parallelizationEnabled_)) { ROS_WARN("Could not find the parameter: `parallelization_enabled`. Setting to default value: 'false'."); parallelizationEnabled_ = false; } @@ -63,7 +60,7 @@ bool NormalVectorsFilter::configure() { // Read thread_number to set the number of threads to be used if parallelization is enebled, // if parameter is not found an error is thrown and the default is to set it to automatic. - if (!filters::FilterBase::getParam(std::string("thread_number"), threadCount_)) { + if (!FilterBase::getParam(std::string("thread_number"), threadCount_)) { ROS_WARN("Could not find the parameter: `thread_number`. Setting to default value: 'automatic'."); threadCount_ = tbb::task_scheduler_init::automatic; } @@ -94,7 +91,7 @@ bool NormalVectorsFilter::configure() { // Read normal_vector_positive_axis, to define normal vector positive direction. std::string normalVectorPositiveAxis; - if (!filters::FilterBase::getParam(std::string("normal_vector_positive_axis"), normalVectorPositiveAxis)) { + if (!FilterBase::getParam(std::string("normal_vector_positive_axis"), normalVectorPositiveAxis)) { ROS_ERROR("Normal vectors filter did not find parameter `normal_vector_positive_axis`."); return false; } @@ -110,14 +107,14 @@ bool NormalVectorsFilter::configure() { } // Read input_layer, to define input grid map layer. - if (!filters::FilterBase::getParam(std::string("input_layer"), inputLayer_)) { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("Normal vectors filter did not find parameter `input_layer`."); return false; } ROS_DEBUG("Normal vectors filter input layer is = %s.", inputLayer_.c_str()); // Read output_layers_prefix, to define output grid map layers prefix. - if (!filters::FilterBase::getParam(std::string("output_layers_prefix"), outputLayersPrefix_)) { + if (!FilterBase::getParam(std::string("output_layers_prefix"), outputLayersPrefix_)) { ROS_ERROR("Normal vectors filter did not find parameter `output_layers_prefix`."); return false; } @@ -127,8 +124,7 @@ bool NormalVectorsFilter::configure() { return true; } -template -bool NormalVectorsFilter::update(const T& mapIn, T& mapOut) { +bool NormalVectorsFilter::update(const GridMap& mapIn, GridMap& mapOut) { std::vector normalVectorsLayers; normalVectorsLayers.push_back(outputLayersPrefix_ + "x"); normalVectorsLayers.push_back(outputLayersPrefix_ + "y"); @@ -157,8 +153,7 @@ bool NormalVectorsFilter::update(const T& mapIn, T& mapOut) { } // SVD Area based methods. -template -void NormalVectorsFilter::computeWithAreaSerial(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { +void NormalVectorsFilter::computeWithAreaSerial(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { const double start = ros::Time::now().toSec(); // For each cell in submap. @@ -174,8 +169,7 @@ void NormalVectorsFilter::computeWithAreaSerial(GridMap& map, const std::stri ROS_DEBUG_THROTTLE(2.0, "NORMAL COMPUTATION TIME = %f", (end - start)); } -template -void NormalVectorsFilter::computeWithAreaParallel(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { +void NormalVectorsFilter::computeWithAreaParallel(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { const double start = ros::Time::now().toSec(); grid_map::Size gridMapSize = map.getSize(); @@ -198,9 +192,8 @@ void NormalVectorsFilter::computeWithAreaParallel(GridMap& map, const std::st ROS_DEBUG_THROTTLE(2.0, "NORMAL COMPUTATION TIME = %f", (end - start)); } -template -void NormalVectorsFilter::areaSingleNormalComputation(GridMap& map, const std::string& inputLayer, - const std::string& outputLayersPrefix, const grid_map::Index& index) { +void NormalVectorsFilter::areaSingleNormalComputation(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix, + const grid_map::Index& index) { // Requested position (center) of circle in map. Position center; map.getPosition(index, center); @@ -257,8 +250,7 @@ void NormalVectorsFilter::areaSingleNormalComputation(GridMap& map, const std map.at(outputLayersPrefix + "z", index) = unitaryNormalVector.z(); } // Raster based methods. -template -void NormalVectorsFilter::computeWithRasterSerial(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { +void NormalVectorsFilter::computeWithRasterSerial(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { // Inspiration for algorithm: http://www.flipcode.com/archives/Calculating_Vertex_Normals_for_Height_Maps.shtml const double start = ros::Time::now().toSec(); @@ -280,8 +272,7 @@ void NormalVectorsFilter::computeWithRasterSerial(GridMap& map, const std::st ROS_DEBUG_THROTTLE(2.0, "NORMAL COMPUTATION TIME = %f", (end - start)); } -template -void NormalVectorsFilter::computeWithRasterParallel(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { +void NormalVectorsFilter::computeWithRasterParallel(GridMap& map, const std::string& inputLayer, const std::string& outputLayersPrefix) { const double start = ros::Time::now().toSec(); const grid_map::Size gridMapSize = map.getSize(); @@ -291,7 +282,7 @@ void NormalVectorsFilter::computeWithRasterParallel(GridMap& map, const std:: // Height and width of submap. Submap is Map without the outermost line of cells, no need to check if index is inside. const Index submapStartIndex(1, 1); const Index submapBufferSize(gridMapSize(0) - 2, gridMapSize(1) - 2); - if (submapBufferSize(1)!=0) { + if (submapBufferSize(1) != 0) { // Set number of thread to use for parallel programming std::unique_ptr TBBInitPtr; if (threadCount_ != -1) { @@ -310,9 +301,8 @@ void NormalVectorsFilter::computeWithRasterParallel(GridMap& map, const std:: ROS_DEBUG_THROTTLE(2.0, "NORMAL COMPUTATION TIME = %f", (end - start)); } -template -void NormalVectorsFilter::rasterSingleNormalComputation(GridMap& map, const std::string& outputLayersPrefix, - const grid_map::Matrix& dataMap, const grid_map::Index& index) { +void NormalVectorsFilter::rasterSingleNormalComputation(GridMap& map, const std::string& outputLayersPrefix, + const grid_map::Matrix& dataMap, const grid_map::Index& index) { // Inspiration for algorithm: // http://www.flipcode.com/archives/Calculating_Vertex_Normals_for_Height_Maps.shtml const double centralCell = dataMap(index(0), index(1)); @@ -331,14 +321,14 @@ void NormalVectorsFilter::rasterSingleNormalComputation(GridMap& map, const s // Each configuration will have a different number associated with it and then use a switch. const int configurationDirX = 1 * static_cast(std::isfinite(topCell)) + 2 * static_cast(std::isfinite(centralCell)) + - 4 * static_cast(std::isfinite(bottomCell)); + 4 * static_cast(std::isfinite(bottomCell)); const int configurationDirY = 1 * static_cast(std::isfinite(leftCell)) + 2 * static_cast(std::isfinite(centralCell)) + - 4 * static_cast(std::isfinite(rightCell)); + 4 * static_cast(std::isfinite(rightCell)); // If outer cell height value is missing use the central value, however the formula for the normal calculation // has to take into account that the distance of the cells used for normal calculation is different. bool validConfiguration = true; - double distanceX; + double distanceX{NAN}; switch (configurationDirX) { case 7: // All 3 cell height values are valid. distanceX = 2 * gridMapResolution_; // Top and bottom cell centers are 2 cell resolution distant. @@ -359,7 +349,7 @@ void NormalVectorsFilter::rasterSingleNormalComputation(GridMap& map, const s validConfiguration = false; } - double distanceY; + double distanceY{NAN}; switch (configurationDirY) { case 7: // All 3 cell height values are valid. distanceY = 2 * gridMapResolution_; // Left and right cell centers are 2 call resolution distant. @@ -404,5 +394,3 @@ void NormalVectorsFilter::rasterSingleNormalComputation(GridMap& map, const s } } // namespace grid_map - -PLUGINLIB_EXPORT_CLASS(grid_map::NormalVectorsFilter, filters::FilterBase) diff --git a/grid_map_filters/src/SetBasicLayersFilter.cpp b/grid_map_filters/src/SetBasicLayersFilter.cpp index 458bc64f2..967399b49 100644 --- a/grid_map_filters/src/SetBasicLayersFilter.cpp +++ b/grid_map_filters/src/SetBasicLayersFilter.cpp @@ -6,29 +6,20 @@ * Institute: ETH Zurich, ANYbotics */ -#include "../include/grid_map_filters/SetBasicLayersFilter.hpp" +#include "grid_map_filters/SetBasicLayersFilter.hpp" #include -#include using namespace filters; namespace grid_map { -template -SetBasicLayersFilter::SetBasicLayersFilter() -{ -} +SetBasicLayersFilter::SetBasicLayersFilter() = default; -template -SetBasicLayersFilter::~SetBasicLayersFilter() -{ -} +SetBasicLayersFilter::~SetBasicLayersFilter() = default; -template -bool SetBasicLayersFilter::configure() -{ - if (!FilterBase::getParam(std::string("layers"), layers_)) { +bool SetBasicLayersFilter::configure() { + if (!FilterBase::getParam(std::string("layers"), layers_)) { ROS_ERROR("SetBasicLayersFilters did not find parameter 'layers'."); return false; } @@ -36,9 +27,7 @@ bool SetBasicLayersFilter::configure() return true; } -template -bool SetBasicLayersFilter::update(const T& mapIn, T& mapOut) -{ +bool SetBasicLayersFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; std::vector layersChecked; @@ -54,6 +43,4 @@ bool SetBasicLayersFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::SetBasicLayersFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/SlidingWindowMathExpressionFilter.cpp b/grid_map_filters/src/SlidingWindowMathExpressionFilter.cpp index 5f7e4b096..7c983727f 100644 --- a/grid_map_filters/src/SlidingWindowMathExpressionFilter.cpp +++ b/grid_map_filters/src/SlidingWindowMathExpressionFilter.cpp @@ -8,83 +8,77 @@ #include "grid_map_filters/SlidingWindowMathExpressionFilter.hpp" -#include - using namespace filters; namespace grid_map { -template -SlidingWindowMathExpressionFilter::SlidingWindowMathExpressionFilter() -: windowSize_(3), - useWindowLength_(false), - windowLength_(0.0), - isComputeEmptyCells_(true), - edgeHandling_(SlidingWindowIterator::EdgeHandling::INSIDE) -{ -} +SlidingWindowMathExpressionFilter::SlidingWindowMathExpressionFilter() + : windowSize_(3), + useWindowLength_(false), + windowLength_(0.0), + isComputeEmptyCells_(true), + edgeHandling_(SlidingWindowIterator::EdgeHandling::INSIDE) {} -template -SlidingWindowMathExpressionFilter::~SlidingWindowMathExpressionFilter() -{ -} +SlidingWindowMathExpressionFilter::~SlidingWindowMathExpressionFilter() = default; -template -bool SlidingWindowMathExpressionFilter::configure() -{ - if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { +bool SlidingWindowMathExpressionFilter::configure() { + if (!FilterBase::getParam(std::string("input_layer"), inputLayer_)) { ROS_ERROR("SlidingWindowMathExpressionFilter did not find parameter 'input_layer'."); return false; } - if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("SlidingWindowMathExpressionFilter did not find parameter 'output_layer'."); return false; } - if (!FilterBase::getParam(std::string("expression"), expression_)) { + if (!FilterBase::getParam(std::string("expression"), expression_)) { ROS_ERROR("SlidingWindowMathExpressionFilter did not find parameter 'expression'."); return false; } - if (!FilterBase::getParam(std::string("window_size"), windowSize_)) { - if (FilterBase::getParam(std::string("window_length"), windowLength_)) { + if (!FilterBase::getParam(std::string("window_size"), windowSize_)) { + if (FilterBase::getParam(std::string("window_length"), windowLength_)) { useWindowLength_ = true; } } - if (!FilterBase::getParam(std::string("compute_empty_cells"), isComputeEmptyCells_)) { + if (!FilterBase::getParam(std::string("compute_empty_cells"), isComputeEmptyCells_)) { ROS_ERROR("SlidingWindowMathExpressionFilter did not find parameter 'compute_empty_cells'."); return false; } std::string edgeHandlingMethod; - if (!FilterBase::getParam(std::string("edge_handling"), edgeHandlingMethod)) { + if (!FilterBase::getParam(std::string("edge_handling"), edgeHandlingMethod)) { ROS_ERROR("SlidingWindowMathExpressionFilter did not find parameter 'edge_handling'."); return false; } - if (edgeHandlingMethod == "inside") edgeHandling_ = SlidingWindowIterator::EdgeHandling::INSIDE; - else if (edgeHandlingMethod == "crop") edgeHandling_ = SlidingWindowIterator::EdgeHandling::CROP; - else if (edgeHandlingMethod == "empty") edgeHandling_ = SlidingWindowIterator::EdgeHandling::EMPTY; - else if (edgeHandlingMethod == "mean") edgeHandling_ = SlidingWindowIterator::EdgeHandling::MEAN; - else { + if (edgeHandlingMethod == "inside") { + edgeHandling_ = SlidingWindowIterator::EdgeHandling::INSIDE; + } else if (edgeHandlingMethod == "crop") { + edgeHandling_ = SlidingWindowIterator::EdgeHandling::CROP; + } else if (edgeHandlingMethod == "empty") { + edgeHandling_ = SlidingWindowIterator::EdgeHandling::EMPTY; + } else if (edgeHandlingMethod == "mean") { + edgeHandling_ = SlidingWindowIterator::EdgeHandling::MEAN; + } else { ROS_ERROR("SlidingWindowMathExpressionFilter did not find method '%s' for edge handling.", edgeHandlingMethod.c_str()); return false; } - // TODO Can we make caching work with changing shared variable? -// parser_.setCacheExpressions(true); + // TODO(magnus): Can we make caching work with changing shared variable? + // parser_.setCacheExpressions(true); return true; } -template -bool SlidingWindowMathExpressionFilter::update(const T& mapIn, T& mapOut) -{ +bool SlidingWindowMathExpressionFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; mapOut.add(outputLayer_); Matrix& outputData = mapOut[outputLayer_]; grid_map::SlidingWindowIterator iterator(mapIn, inputLayer_, edgeHandling_, windowSize_); - if (useWindowLength_) iterator.setWindowLength(mapIn, windowLength_); + if (useWindowLength_) { + iterator.setWindowLength(mapIn, windowLength_); + } for (; !iterator.isPastEnd(); ++iterator) { parser_.var(inputLayer_).setLocal(iterator.getData()); EigenLab::Value result(parser_.eval(expression_)); @@ -97,6 +91,4 @@ bool SlidingWindowMathExpressionFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -PLUGINLIB_EXPORT_CLASS(grid_map::SlidingWindowMathExpressionFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/ThresholdFilter.cpp b/grid_map_filters/src/ThresholdFilter.cpp index 197442005..ff0471719 100644 --- a/grid_map_filters/src/ThresholdFilter.cpp +++ b/grid_map_filters/src/ThresholdFilter.cpp @@ -9,66 +9,49 @@ #include "grid_map_filters/ThresholdFilter.hpp" #include -#include using namespace filters; namespace grid_map { -template -ThresholdFilter::ThresholdFilter() - : lowerThreshold_(0.0), - upperThreshold_(1.0), - useLowerThreshold_(false), - useUpperThreshold_(false), - setTo_(0.5) -{ -} +ThresholdFilter::ThresholdFilter() + : lowerThreshold_(0.0), upperThreshold_(1.0), useLowerThreshold_(false), useUpperThreshold_(false), setTo_(0.5) {} -template -ThresholdFilter::~ThresholdFilter() -{ -} +ThresholdFilter::~ThresholdFilter() = default; -template -bool ThresholdFilter::configure() -{ +bool ThresholdFilter::configure() { // Load Parameters - if (FilterBase::getParam(std::string("lower_threshold"), - lowerThreshold_)) { + if (FilterBase::getParam(std::string("lower_threshold"), lowerThreshold_)) { useLowerThreshold_ = true; ROS_DEBUG("lower threshold = %f", lowerThreshold_); } - if (FilterBase::getParam(std::string("upper_threshold"), - upperThreshold_)) { + if (FilterBase::getParam(std::string("upper_threshold"), upperThreshold_)) { useUpperThreshold_ = true; ROS_DEBUG("upper threshold = %f", upperThreshold_); } if (!useLowerThreshold_ && !useUpperThreshold_) { - ROS_ERROR( - "ThresholdFilter did not find parameter 'lower_threshold' or 'upper_threshold',"); + ROS_ERROR("ThresholdFilter did not find parameter 'lower_threshold' or 'upper_threshold',"); return false; } if (useLowerThreshold_ && useUpperThreshold_) { - ROS_ERROR( - "Set either 'lower_threshold' or 'upper_threshold'! Only one threshold can be used!"); + ROS_ERROR("Set either 'lower_threshold' or 'upper_threshold'! Only one threshold can be used!"); return false; } - if (!FilterBase::getParam(std::string("set_to"), setTo_)) { + if (!FilterBase::getParam(std::string("set_to"), setTo_)) { ROS_ERROR("ThresholdFilter did not find parameter 'set_to'."); return false; } - if (!FilterBase::getParam(std::string("condition_layer"), conditionLayer_)) { + if (!FilterBase::getParam(std::string("condition_layer"), conditionLayer_)) { ROS_ERROR("ThresholdFilter did not find parameter 'condition_layer'."); return false; } - if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { + if (!FilterBase::getParam(std::string("output_layer"), outputLayer_)) { ROS_ERROR("ThresholdFilter did not find parameter 'ouput_layer'."); return false; } @@ -76,9 +59,7 @@ bool ThresholdFilter::configure() return true; } -template -bool ThresholdFilter::update(const T& mapIn, T& mapOut) -{ +bool ThresholdFilter::update(const GridMap& mapIn, GridMap& mapOut) { mapOut = mapIn; // Check if layer exists. @@ -111,9 +92,4 @@ bool ThresholdFilter::update(const T& mapIn, T& mapOut) return true; } -} /* namespace */ - -// Explicitly define the specialization for GridMap to have the filter implementation available for testing. -template class grid_map::ThresholdFilter; -// Export the filter. -PLUGINLIB_EXPORT_CLASS(grid_map::ThresholdFilter, filters::FilterBase) +} // namespace grid_map diff --git a/grid_map_filters/src/plugins.cpp b/grid_map_filters/src/plugins.cpp new file mode 100644 index 000000000..b8aa5a209 --- /dev/null +++ b/grid_map_filters/src/plugins.cpp @@ -0,0 +1,39 @@ +#include + +#include "grid_map_filters/BufferNormalizerFilter.hpp" +#include "grid_map_filters/ColorBlendingFilter.hpp" +#include "grid_map_filters/ColorFillFilter.hpp" +#include "grid_map_filters/ColorMapFilter.hpp" +#include "grid_map_filters/CurvatureFilter.hpp" +#include "grid_map_filters/DeletionFilter.hpp" +#include "grid_map_filters/DuplicationFilter.hpp" +#include "grid_map_filters/LightIntensityFilter.hpp" +#include "grid_map_filters/MathExpressionFilter.hpp" +#include "grid_map_filters/MeanInRadiusFilter.hpp" +#include "grid_map_filters/MedianFillFilter.hpp" +#include "grid_map_filters/MinInRadiusFilter.hpp" +#include "grid_map_filters/MockFilter.hpp" +#include "grid_map_filters/NormalColorMapFilter.hpp" +#include "grid_map_filters/NormalVectorsFilter.hpp" +#include "grid_map_filters/SetBasicLayersFilter.hpp" +#include "grid_map_filters/SlidingWindowMathExpressionFilter.hpp" +#include "grid_map_filters/ThresholdFilter.hpp" + +PLUGINLIB_EXPORT_CLASS(grid_map::BufferNormalizerFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::ColorBlendingFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::ColorFillFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::ColorMapFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::CurvatureFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::DeletionFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::DuplicationFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::LightIntensityFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::MathExpressionFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::MeanInRadiusFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::MedianFillFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::MinInRadiusFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::MockFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::NormalColorMapFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::NormalVectorsFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::SetBasicLayersFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::SlidingWindowMathExpressionFilter, filters::FilterBase) +PLUGINLIB_EXPORT_CLASS(grid_map::ThresholdFilter, filters::FilterBase) diff --git a/grid_map_filters/test/median_fill_filter_test.cpp b/grid_map_filters/test/median_fill_filter_test.cpp index 6d62b51ee..e4ecd5196 100644 --- a/grid_map_filters/test/median_fill_filter_test.cpp +++ b/grid_map_filters/test/median_fill_filter_test.cpp @@ -1,7 +1,7 @@ #include #include -#include +#include #include #include "grid_map_filters/MedianFillFilter.hpp" @@ -10,43 +10,43 @@ using namespace grid_map; using namespace ::testing; using BASE = filters::FilterBase; -using MedianFillFilterT = MedianFillFilter; #define ASSERT_MATRICES_EQ_WITH_NAN(first, second) assertMatrixesEqualWithNan((first), #first, (second), #second, __LINE__) -static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, Eigen::Ref second, std::string secondName, int line){ +static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, + Eigen::Ref second, std::string secondName, int line) { ASSERT_EQ(first.rows(), second.rows()); ASSERT_EQ(first.cols(), second.cols()); bool matricesAreEqual = true; - for(size_t row = 0; row < first.rows() && matricesAreEqual; ++row){ - for(size_t col = 0; col < first.cols() && matricesAreEqual; ++col){ + for (Eigen::Index row = 0; row < first.rows() && matricesAreEqual; ++row) { + for (Eigen::Index col = 0; col < first.cols() && matricesAreEqual; ++col) { bool ifRealThenValid = first.block<1, 1>(row, col).isApprox(second.block<1, 1>(row, col)); bool bothNaN = std::isnan(first(row, col)) && std::isnan(second(row, col)); - if(ifRealThenValid || bothNaN){ + if (ifRealThenValid || bothNaN) { continue; - }else{ + } else { matricesAreEqual = false; } } } Eigen::IOFormat compactFormat(2, 0, ",", "\n", "[", "]"); - ASSERT_TRUE(matricesAreEqual) // NO LINT - << "L. " << std::to_string(line) << ": Matrices are not equal" // NO LINT - << "\n"<().setConstant(NAN); + filterInput["elevation"].bottomRightCorner<5, 5>().setConstant(NAN); GridMap noisyFilterInput{filterInput}; diff --git a/grid_map_filters/test/mock_filter_test.cpp b/grid_map_filters/test/mock_filter_test.cpp new file mode 100644 index 000000000..37078f26a --- /dev/null +++ b/grid_map_filters/test/mock_filter_test.cpp @@ -0,0 +1,11 @@ +#include + +#include "grid_map_filters/MockFilter.hpp" + +using namespace grid_map; +using namespace ::testing; + +TEST(MockFilter, ConstructFilterTest) { // NOLINT + MockFilter mockFilter{}; + SUCCEED(); +} \ No newline at end of file diff --git a/grid_map_filters/test/threshold_filter_test.cpp b/grid_map_filters/test/threshold_filter_test.cpp index 20087c3f9..bc95fa610 100644 --- a/grid_map_filters/test/threshold_filter_test.cpp +++ b/grid_map_filters/test/threshold_filter_test.cpp @@ -1,7 +1,7 @@ #include #include -#include +#include #include #include "grid_map_filters/ThresholdFilter.hpp" @@ -12,38 +12,38 @@ using namespace grid_map; using namespace ::testing; using BASE = filters::FilterBase; -using ThresholdFilterT = ThresholdFilter; #define ASSERT_MATRICES_EQ_WITH_NAN(first, second) assertMatrixesEqualWithNan((first), #first, (second), #second, __LINE__) -static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, Eigen::Ref second, std::string secondName, int line){ +static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, + Eigen::Ref second, std::string secondName, int line) { ASSERT_EQ(first.rows(), second.rows()); ASSERT_EQ(first.cols(), second.cols()); bool matricesAreEqual = true; - for(size_t row = 0; row < first.rows() && matricesAreEqual; ++row){ - for(size_t col = 0; col < first.cols() && matricesAreEqual; ++col){ + for (Eigen::Index row = 0; row < first.rows() && matricesAreEqual; ++row) { + for (Eigen::Index col = 0; col < first.cols() && matricesAreEqual; ++col) { bool ifRealThenValid = first.block<1, 1>(row, col).isApprox(second.block<1, 1>(row, col)); bool bothNaN = std::isnan(first(row, col)) && std::isnan(second(row, col)); - if(ifRealThenValid || bothNaN){ + if (ifRealThenValid || bothNaN) { continue; - }else{ + } else { matricesAreEqual = false; } } } Eigen::IOFormat compactFormat(2, 0, ",", "\n", "[", "]"); - ASSERT_TRUE(matricesAreEqual) // NO LINT - << "L. " << std::to_string(line) << ": Matrices are not equal" // NO LINT - << "\n"< Date: Wed, 5 Jan 2022 19:16:54 +0000 Subject: [PATCH 36/83] Merge branch 'feature/documentation_on_grid_map_move' into 'master' [grid_map] Improve documentation on grid_map::move. Closes #UNKNOWN GitOrigin-RevId: 85c51a29593d086772b8126f385d6d944a3c9aa1 --- README.md | 20 +++-- .../include/grid_map_core/GridMap.hpp | 76 +++++++++---------- 2 files changed, 52 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index e5a7ff9e5..a2c33f742 100644 --- a/README.md +++ b/README.md @@ -258,11 +258,21 @@ Beware that while iterators are convenient, it is often the cleanest and most ef There are two different methods to change the position of the map: * `setPosition(...)`: Changes the position of the map without changing data stored in the map. This changes the corresponce between the data and the map frame. -* `move(...)`: Relocates the grid map such that the corresponce between data and the map frame does not change. Data in the overlapping region before and after the position change remains stored. Data that falls outside of the map at its new position is discarded. Cells that cover previously unknown regions are emptied (set to nan). The data storage is implemented as two-dimensional circular buffer to minimize computational effort. - -`setPosition(...)` | `move(...)` -:---: | :---: -![Grid map iterator](grid_map_core/doc/setposition_method.gif) | ![Submap iterator](grid_map_core/doc/move_method.gif)| +* `move(...)`: + Relocates the region captured by grid map w.r.t. to the static grid map frame. Use this to move the grid map boundaries + without relocating the grid map data. Takes care of all the data handling, such that the grid map data is stationary in the grid map + frame. + - Data in the overlapping region before and after the position change remains stored. + - Data that falls outside the map at its new position is discarded. + - Cells that cover previously unknown regions are emptied (set to nan). + The data storage is implemented as two-dimensional circular buffer to minimize computational effort. + + **Note**: Due to the circular buffer structure, neighbouring indices might not fall close in the map frame. + This assumption only holds for indices obtained by getUnwrappedIndex(). + + `setPosition(...)` | `move(...)` + :---: | :---: + ![Grid map iterator](grid_map_core/doc/setposition_method.gif) | ![Submap iterator](grid_map_core/doc/move_method.gif)| ## Packages diff --git a/grid_map_core/include/grid_map_core/GridMap.hpp b/grid_map_core/include/grid_map_core/GridMap.hpp index 9bc1d78f2..b07123059 100644 --- a/grid_map_core/include/grid_map_core/GridMap.hpp +++ b/grid_map_core/include/grid_map_core/GridMap.hpp @@ -8,13 +8,13 @@ #pragma once -#include "grid_map_core/TypeDefs.hpp" -#include "grid_map_core/SubmapGeometry.hpp" #include "grid_map_core/BufferRegion.hpp" +#include "grid_map_core/SubmapGeometry.hpp" +#include "grid_map_core/TypeDefs.hpp" // STL -#include #include +#include // Eigen #include @@ -37,8 +37,7 @@ class SubmapGeometry; * - "surface_normal_x", "surface_normal_y", "surface_normal_z" * etc. */ -class GridMap -{ +class GridMap { public: // Type traits for use with template methods/classes using GridMap as a template parameter. typedef grid_map::DataType DataType; @@ -74,8 +73,7 @@ class GridMap * @param resolution the cell size in [m/cell]. * @param position the 2d position of the grid map in the grid map frame [m]. */ - void setGeometry(const Length& length, const double resolution, - const Position& position = Position::Zero()); + void setGeometry(const Length& length, const double resolution, const Position& position = Position::Zero()); /*! * Set the geometry of the grid map from submap geometry information. @@ -127,7 +125,7 @@ class GridMap * @return grid map data as matrix. * @throw std::out_of_range if no map layer with name `layer` is present. */ - const Matrix& operator [](const std::string& layer) const; + const Matrix& operator[](const std::string& layer) const; /*! * Returns the grid map data for a layer as non-const. Use this method @@ -136,7 +134,7 @@ class GridMap * @return grid map data. * @throw std::out_of_range if no map layer with name `layer` is present. */ - Matrix& operator [](const std::string& layer); + Matrix& operator[](const std::string& layer); /*! * Removes a layer from the grid map. @@ -283,8 +281,7 @@ class GridMap * @param vector the vector with the values of the data type. * @return true if successful, false if no valid data available. */ - bool getVector(const std::string& layerPrefix, const Index& index, - Eigen::Vector3d& vector) const; + bool getVector(const std::string& layerPrefix, const Index& index, Eigen::Vector3d& vector) const; /*! * Gets a submap from the map. The requested submap is specified with the requested @@ -309,8 +306,7 @@ class GridMap * @param[out] isSuccess true if successful, false otherwise. * @return submap (is empty if success is false). */ - GridMap getSubmap(const Position& position, const Length& length, Index& indexInSubmap, - bool& isSuccess) const; + GridMap getSubmap(const Position& position, const Length& length, Index& indexInSubmap, bool& isSuccess) const; /*! * Apply isometric transformation (rotation + offset) to grid map and returns the transformed map. @@ -325,26 +321,33 @@ class GridMap * @return transformed map. * @throw std::out_of_range if no map layer with name `heightLayerName` is present. */ - GridMap getTransformedMap(const Eigen::Isometry3d& transform, const std::string& heightLayerName, - const std::string& newFrameId, + GridMap getTransformedMap(const Eigen::Isometry3d& transform, const std::string& heightLayerName, const std::string& newFrameId, const double sampleRatio = 0.0) const; - /*! - * Set the position of the grid map. - * Note: This method does not change the data stored in the grid map and - * is complementary to the `move(...)` method. For a comparison between - * the `setPosition` and the `move` method, see the `move_demo_node.cpp` - * file of the `grid_map_demos` package. - * @param position the 2d position of the grid map in the grid map frame [m]. - */ - void setPosition(const Position& position); - /*! - * Move the grid map w.r.t. to the grid map frame. Use this to move the grid map - * boundaries without moving the grid map data. Takes care of all the data handling, - * such that the grid map data is stationary in the grid map frame. - * Note: For a comparison between the `setPosition` and the `move` method, - * see the `move_demo_node.cpp` file of the `grid_map_demos` package. + * Set the position of the grid map. + * Note: This method does not change the data stored in the grid map and + * is complementary to the `move(...)` method. For a comparison between + * the `setPosition` and the `move` method, see the `move_demo_node.cpp` + * file of the `grid_map_demos` package. + * @param position the 2d position of the grid map in the grid map frame [m]. + */ + void setPosition(const Position& position); + + /*! + * Relocates the region captured by grid map w.r.t. to the static grid map frame. Use this to move the grid map boundaries + * without relocating the grid map data. Takes care of all the data handling, such that the grid map data is stationary in the grid map + * frame. + * - Data in the overlapping region before and after the position change remains stored. + * - Data that falls outside the map at its new position is discarded. + * - Cells that cover previously unknown regions are emptied (set to nan). + * The data storage is implemented as two-dimensional circular buffer to minimize computational effort. + * + * Note: Due to the circular buffer structure, neighbouring indices might not fall close in the map frame. + * This assumption only holds for indices obtained by getUnwrappedIndex(). + * + * Note: For a comparison between the `setPosition` and the `move` method, see the `move_demo_node.cpp` file of the `grid_map_demos` package. + * * @param position the new location of the grid map in the map frame. * @param newRegions the regions of the newly covered / previously uncovered regions of the buffer. * @return true if map has been moved, false otherwise. @@ -369,8 +372,7 @@ class GridMap * @param layers the layers that are copied if not all layers are used. * @return true if successful. */ - bool addDataFrom(const GridMap& other, bool extendMap, - bool overwriteData, bool copyAllLayers, + bool addDataFrom(const GridMap& other, bool extendMap, bool overwriteData, bool copyAllLayers, std::vector layers = std::vector()); /*! @@ -515,7 +517,6 @@ class GridMap */ bool atPositionLinearInterpolated(const std::string& layer, const Position& position, float& value) const; - /*! * Get cell data at requested position, cubic convolution * interpolated from 4x4 cells. At the edge of the map, @@ -527,8 +528,7 @@ class GridMap * @param[out] value the data of the cell. * @return true if bicubic convolution interpolation was successful. */ - bool atPositionBicubicConvolutionInterpolated(const std::string& layer, const Position& position, - float& value) const; + bool atPositionBicubicConvolutionInterpolated(const std::string& layer, const Position& position, float& value) const; /*! * Get cell data at requested position, cubic interpolated @@ -541,9 +541,7 @@ class GridMap * @param[out] value the data of the cell. * @return true if bicubic interpolation was successful. */ - bool atPositionBicubicInterpolated(const std::string& layer, const Position& position, - float& value) const; - + bool atPositionBicubicInterpolated(const std::string& layer, const Position& position, float& value) const; /*! * Resize the buffer. @@ -587,4 +585,4 @@ class GridMap EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map From d6d465035745553dcd5c59c3df80be57a67c206d Mon Sep 17 00:00:00 2001 From: Domingo Esteban Date: Wed, 2 Feb 2022 22:02:41 +0100 Subject: [PATCH 37/83] Merge remote-tracking branch 'origin/release-22.01' GitOrigin-RevId: 8802aa04b996f593798b40ed4e9ef008a4628953 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 37e44529b..8e99a3b3a 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.7 + 1.6.8 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 4b62626da..b3318593d 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.7 + 1.6.8 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 428a8bb28..9c457e371 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.7 + 1.6.8 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index ae0c231f1..ca994bff7 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.7 + 1.6.8 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 17cd86ea6..61a457ae2 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.7 + 1.6.8 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 523d68fc0..616a30097 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.8 + 1.6.9 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 969724d52..998d70462 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.7 + 1.6.8 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index 090e1c7cc..f791ecd0a 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.7 + 1.6.8 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index a25131101..a46fb62a1 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.7 + 1.6.8 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index d0300f88d..2fbd4a2df 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.7 + 1.6.8 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 3df080401..b2e47a35d 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.7 + 1.6.8 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index 88c1cfd3d..fb160fff9 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.7 + 1.6.8 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 9f186db58..a15e5bef7 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.7 + 1.6.8 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index c35bafdd0..255c16951 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.7 + 1.6.8 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 6b9a948b85f5e598d7d79728b13b69d4a042f5fa Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Wed, 9 Feb 2022 11:42:29 +0000 Subject: [PATCH 38/83] Merge branch 'fix/grid_map/failing_costmap_rostest' into 'master' [grid_map] Disable failing costmap rostest GitOrigin-RevId: 22a64f19d500a2ea68f0d55fc5ca89a31c760dcc --- grid_map_costmap_2d/CMakeLists.txt | 5 +++-- grid_map_costmap_2d/rostest/README.md | 1 - 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/grid_map_costmap_2d/CMakeLists.txt b/grid_map_costmap_2d/CMakeLists.txt index d81a4a473..33737e8f5 100644 --- a/grid_map_costmap_2d/CMakeLists.txt +++ b/grid_map_costmap_2d/CMakeLists.txt @@ -71,7 +71,8 @@ if(CATKIN_ENABLE_TESTING) test/test_grid_map_costmap_2d.cpp test/Costmap2DConverterTest.cpp ) - add_subdirectory(rostest) + # TODO(mw): Disabled rostest because pipeline was failing. Locally not reproducible. + # add_subdirectory(rostest) target_include_directories(${PROJECT_NAME}-test PRIVATE include ) @@ -103,4 +104,4 @@ if(cmake_clang_tools_FOUND) add_default_clang_tooling( DISABLE_CLANG_FORMAT ) -endif(cmake_clang_tools_FOUND) \ No newline at end of file +endif(cmake_clang_tools_FOUND) diff --git a/grid_map_costmap_2d/rostest/README.md b/grid_map_costmap_2d/rostest/README.md index 9a1f1c28e..4ca99ae30 100644 --- a/grid_map_costmap_2d/rostest/README.md +++ b/grid_map_costmap_2d/rostest/README.md @@ -7,4 +7,3 @@ I can never remember how to run them... rostest --text mytest.test ``` - From 6ad3affd501588e78be4a4dfc6725289916485ef Mon Sep 17 00:00:00 2001 From: Kaixian Qu Date: Wed, 16 Feb 2022 10:33:57 +0000 Subject: [PATCH 39/83] Merge branch 'fix/threshold_obstacle_frame' into 'master' [obstacle_pipelines] Use the correct frameId for LiDAR's height-based obstacle detection (threshold_obstacle) GitOrigin-RevId: 8721bd531c018981d5c56feb44b3c9226dac4c41 --- .../include/grid_map_core/utils/testing.hpp | 33 +++++++++++++++++++ .../test/median_fill_filter_test.cpp | 30 +---------------- .../test/threshold_filter_test.cpp | 30 +---------------- 3 files changed, 35 insertions(+), 58 deletions(-) create mode 100644 grid_map_core/include/grid_map_core/utils/testing.hpp diff --git a/grid_map_core/include/grid_map_core/utils/testing.hpp b/grid_map_core/include/grid_map_core/utils/testing.hpp new file mode 100644 index 000000000..c83593cc8 --- /dev/null +++ b/grid_map_core/include/grid_map_core/utils/testing.hpp @@ -0,0 +1,33 @@ +#pragma once + +#include +#include + +#define ASSERT_MATRICES_EQ_WITH_NAN(first, second) assertMatrixesEqualWithNan((first), #first, (second), #second, __LINE__) +static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, + Eigen::Ref second, std::string secondName, int line) { + ASSERT_EQ(first.rows(), second.rows()); + ASSERT_EQ(first.cols(), second.cols()); + + bool matricesAreEqual = true; + for (Eigen::Index row = 0; row < first.rows() && matricesAreEqual; ++row) { + for (Eigen::Index col = 0; col < first.cols() && matricesAreEqual; ++col) { + bool ifRealThenValid = first.block<1, 1>(row, col).isApprox(second.block<1, 1>(row, col)); + bool bothNaN = std::isnan(first(row, col)) && std::isnan(second(row, col)); + if (ifRealThenValid || bothNaN) { + continue; + } else { + matricesAreEqual = false; + } + } + } + + Eigen::IOFormat compactFormat(2, 0, ",", "\n", "[", "]"); + ASSERT_TRUE(matricesAreEqual) // NO LINT + << "L. " << std::to_string(line) << ": Matrices are not equal" // NO LINT + << "\n" // NO LINT + << firstName << "\n" // NO LINT + << first.format(compactFormat) << "\n" // NO LINT + << secondName << "\n" // NO LINT + << second.format(compactFormat) << "\n"; // NO LINT +} diff --git a/grid_map_filters/test/median_fill_filter_test.cpp b/grid_map_filters/test/median_fill_filter_test.cpp index e4ecd5196..28012f26c 100644 --- a/grid_map_filters/test/median_fill_filter_test.cpp +++ b/grid_map_filters/test/median_fill_filter_test.cpp @@ -3,6 +3,7 @@ #include #include +#include #include "grid_map_filters/MedianFillFilter.hpp" @@ -11,35 +12,6 @@ using namespace ::testing; using BASE = filters::FilterBase; -#define ASSERT_MATRICES_EQ_WITH_NAN(first, second) assertMatrixesEqualWithNan((first), #first, (second), #second, __LINE__) -static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, - Eigen::Ref second, std::string secondName, int line) { - ASSERT_EQ(first.rows(), second.rows()); - ASSERT_EQ(first.cols(), second.cols()); - - bool matricesAreEqual = true; - for (Eigen::Index row = 0; row < first.rows() && matricesAreEqual; ++row) { - for (Eigen::Index col = 0; col < first.cols() && matricesAreEqual; ++col) { - bool ifRealThenValid = first.block<1, 1>(row, col).isApprox(second.block<1, 1>(row, col)); - bool bothNaN = std::isnan(first(row, col)) && std::isnan(second(row, col)); - if (ifRealThenValid || bothNaN) { - continue; - } else { - matricesAreEqual = false; - } - } - } - - Eigen::IOFormat compactFormat(2, 0, ",", "\n", "[", "]"); - ASSERT_TRUE(matricesAreEqual) // NO LINT - << "L. " << std::to_string(line) << ": Matrices are not equal" // NO LINT - << "\n" // NO LINT - << firstName << "\n" // NO LINT - << first.format(compactFormat) << "\n" // NO LINT - << secondName << "\n" // NO LINT - << second.format(compactFormat) << "\n"; // NO LINT -} - TEST(MedianFillFilter, ConstructFilterTest) { // NOLINT MedianFillFilter medianFillFilter{}; SUCCEED(); diff --git a/grid_map_filters/test/threshold_filter_test.cpp b/grid_map_filters/test/threshold_filter_test.cpp index bc95fa610..cd0197ea4 100644 --- a/grid_map_filters/test/threshold_filter_test.cpp +++ b/grid_map_filters/test/threshold_filter_test.cpp @@ -3,6 +3,7 @@ #include #include +#include #include "grid_map_filters/ThresholdFilter.hpp" @@ -13,35 +14,6 @@ using namespace ::testing; using BASE = filters::FilterBase; -#define ASSERT_MATRICES_EQ_WITH_NAN(first, second) assertMatrixesEqualWithNan((first), #first, (second), #second, __LINE__) -static void assertMatrixesEqualWithNan(Eigen::Ref first, std::string firstName, - Eigen::Ref second, std::string secondName, int line) { - ASSERT_EQ(first.rows(), second.rows()); - ASSERT_EQ(first.cols(), second.cols()); - - bool matricesAreEqual = true; - for (Eigen::Index row = 0; row < first.rows() && matricesAreEqual; ++row) { - for (Eigen::Index col = 0; col < first.cols() && matricesAreEqual; ++col) { - bool ifRealThenValid = first.block<1, 1>(row, col).isApprox(second.block<1, 1>(row, col)); - bool bothNaN = std::isnan(first(row, col)) && std::isnan(second(row, col)); - if (ifRealThenValid || bothNaN) { - continue; - } else { - matricesAreEqual = false; - } - } - } - - Eigen::IOFormat compactFormat(2, 0, ",", "\n", "[", "]"); - ASSERT_TRUE(matricesAreEqual) // NO LINT - << "L. " << std::to_string(line) << ": Matrices are not equal" // NO LINT - << "\n" // NO LINT - << firstName << "\n" // NO LINT - << first.format(compactFormat) << "\n" // NO LINT - << secondName << "\n" // NO LINT - << second.format(compactFormat) << "\n"; // NO LINT -} - TEST(ThresholdFilter, LoadParametersAndUpdateTest) { // NOLINT ThresholdFilter thresholdFilter{}; From ba52294cbd28223dbbe9d1210dde7eb978944ee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Thu, 24 Mar 2022 10:54:51 +0000 Subject: [PATCH 40/83] Merge branch 'feature/eigen_utils_/dependencies' into 'master' eigen_utils dependencies for obstacle_pipelines GitOrigin-RevId: 325a274516b874ec9ec22ef2f6e88a69d3d93ee6 --- grid_map_core/include/grid_map_core/utils/testing.hpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/grid_map_core/include/grid_map_core/utils/testing.hpp b/grid_map_core/include/grid_map_core/utils/testing.hpp index c83593cc8..e997c2f86 100644 --- a/grid_map_core/include/grid_map_core/utils/testing.hpp +++ b/grid_map_core/include/grid_map_core/utils/testing.hpp @@ -1,3 +1,7 @@ +/** + * Copied from ANYbotics/eigen_utils, to avoid testing dependency. + */ + #pragma once #include From c23dcde8f0fc5ead0a30d24179344d71a7eba163 Mon Sep 17 00:00:00 2001 From: Hannes Wyss Date: Wed, 13 Apr 2022 12:39:27 +0200 Subject: [PATCH 41/83] Merge remote-tracking branch 'origin/feature/merge/release-22.04-into-master' GitOrigin-RevId: 727517bf53e57d4e7398ae6f8176859a82c33733 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index 8e99a3b3a..c4c76d71c 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.8 + 1.6.9 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index b3318593d..239654179 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.8 + 1.6.9 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 9c457e371..94bd72996 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.8 + 1.6.9 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index ca994bff7..d7c89a93b 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.8 + 1.6.9 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 61a457ae2..5ed52a139 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.8 + 1.6.9 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 616a30097..30d60e3ee 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.9 + 1.6.10 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 998d70462..12e4391b9 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.8 + 1.6.9 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index f791ecd0a..f69b6e75e 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.8 + 1.6.9 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index a46fb62a1..d720821d5 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.8 + 1.6.9 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 2fbd4a2df..05657b0de 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.8 + 1.6.9 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index b2e47a35d..637216aeb 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.8 + 1.6.9 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index fb160fff9..a4f00ec35 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.8 + 1.6.9 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index a15e5bef7..5bf4d6e8a 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.8 + 1.6.9 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 255c16951..636f877ce 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.8 + 1.6.9 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From 2459bdea1db7c813bdea69708d23122be0256158 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Fri, 6 May 2022 11:12:59 +0000 Subject: [PATCH 42/83] Merge branch 'github/grid_map/211' into 'master' Import PR 'Fixed crash when switching from a topic that doesn't publish'. GitOrigin-RevId: 4a06598d73538c2e09c75e7f1e3b180172683fff --- grid_map_rviz_plugin/src/GridMapVisual.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/grid_map_rviz_plugin/src/GridMapVisual.cpp b/grid_map_rviz_plugin/src/GridMapVisual.cpp index 1238eb5a8..68fc72821 100644 --- a/grid_map_rviz_plugin/src/GridMapVisual.cpp +++ b/grid_map_rviz_plugin/src/GridMapVisual.cpp @@ -35,10 +35,12 @@ GridMapVisual::GridMapVisual(Ogre::SceneManager* sceneManager, Ogre::SceneNode* } GridMapVisual::~GridMapVisual() { - // Destroy the ManualObject. - sceneManager_->destroyManualObject(manualObject_); - material_->unload(); - Ogre::MaterialManager::getSingleton().remove(material_->getName()); + // Destroy the ManualObject if it was created. + if (manualObject_) { + sceneManager_->destroyManualObject(manualObject_); + material_->unload(); + Ogre::MaterialManager::getSingleton().remove(material_->getName()); + } // Destroy the frame node. sceneManager_->destroySceneNode(frameNode_); From a15f50c9d1c00c0e3bb5db14d41c5a91e53a42f8 Mon Sep 17 00:00:00 2001 From: Harmish Khambhaita Date: Mon, 16 May 2022 08:39:47 +0000 Subject: [PATCH 43/83] Merge branch 'fix/grid_map_remove_unused_code' into 'master' Removing some unused code GitOrigin-RevId: 69dc660e00b1d6c288525830499b9623475da005 --- grid_map_rviz_plugin/src/GridMapVisual.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/grid_map_rviz_plugin/src/GridMapVisual.cpp b/grid_map_rviz_plugin/src/GridMapVisual.cpp index 68fc72821..4be19e13d 100644 --- a/grid_map_rviz_plugin/src/GridMapVisual.cpp +++ b/grid_map_rviz_plugin/src/GridMapVisual.cpp @@ -169,16 +169,13 @@ void GridMapVisual::computeVisualization(float alpha, bool showGridLines, bool f // Add triangles and grid to scene. std::vector vertexIndices; - std::vector vertexPositions; for (size_t k = 0; k < 2; k++) { for (size_t l = 0; l < 2; l++) { grid_map::Index index(i - k, j - l); if (!isValid(index(0), index(1))) { continue; } - const grid_map::Position position = topLeft.array() - index.cast() * resolution; vertexIndices.emplace_back(indexToOgreIndex(index(0), index(1))); - vertexPositions.emplace_back(position(0), position(1), heightOrFlatData(index(0), index(1))); } } From 2a937c0b8bfc4e6ee43d16e167f11e28c1109623 Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Mon, 23 May 2022 08:46:17 +0000 Subject: [PATCH 44/83] Merge branch 'feature/anydrive_rsl' into 'master' Integrated anydrive code and add clang + tests GitOrigin-RevId: 5375176df660d2386c91af832d4fe7e9d604d577 --- grid_map_pcl/README.md | 2 +- grid_map_pcl/launch/grid_map_pcl_loader_node.launch | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/grid_map_pcl/README.md b/grid_map_pcl/README.md index bddcd450e..8947b5a56 100644 --- a/grid_map_pcl/README.md +++ b/grid_map_pcl/README.md @@ -47,7 +47,7 @@ The algorithm will open the `.pcd` file, convert the point cloud to a grid map a 1. Place your `.pcd` file in the package folder or anywhere on the system (e.g. `/.../grid_map_pcl/data/example.pcd`). 2. Modify the `pcd_filename` inside the launch file such that it points to the `.pcd` file you would like to process (e.g. `/.../grid_map_pcl/data/example.pcd`). Set the `output_grid_map` variable to point to the location where you wish to save the resulting grid map (e.g. `/.../grid_map_pcl/data/example_grid_map.bag`) -3. Change the `config_file_path` variable in the launch file to point to the `.yaml` file with configuration parameters (e.g. `/.../grid_map_pcl/config/parameters.yaml`) +3. Change the `configFilePath_` variable in the launch file to point to the `.yaml` file with configuration parameters (e.g. `/.../grid_map_pcl/config/parameters.yaml`) 4. You can run the algorithm with: `roslaunch grid_map_pcl grid_map_pcl_loader_node.launch` 5. Once the algorithm is done you will see the output in the console, and it should visualize the point cloud and the grid map in rviz. If that does not happen, then you can run rviz in a separate terminal (make sure that you have sourced your workspace, **DO NOT CLOSE** the terminal where `grid_map_pcl_loader_node` is running ) and visualize the resulting grid map. Instructions on how to visualize a grid map are in the grid map [README](../README.md). diff --git a/grid_map_pcl/launch/grid_map_pcl_loader_node.launch b/grid_map_pcl/launch/grid_map_pcl_loader_node.launch index c85fe52d8..06fd69ed5 100644 --- a/grid_map_pcl/launch/grid_map_pcl_loader_node.launch +++ b/grid_map_pcl/launch/grid_map_pcl_loader_node.launch @@ -3,7 +3,7 @@ - + @@ -17,8 +17,8 @@ type="grid_map_pcl_loader_node" output="screen" launch-prefix="$(arg prefix)"> - - + + From 7dbe11790bb171f58174508807021b4fc224a793 Mon Sep 17 00:00:00 2001 From: Samuel Bachmann Date: Sat, 28 May 2022 10:30:00 +0200 Subject: [PATCH 45/83] Merge branch 'release-22.05' GitOrigin-RevId: 712ff18dc880cc0ea01716fbd9d7cd65ea23fb32 --- grid_map/package.xml | 2 +- grid_map_core/package.xml | 2 +- grid_map_costmap_2d/package.xml | 2 +- grid_map_cv/package.xml | 2 +- grid_map_demos/package.xml | 2 +- grid_map_filters/package.xml | 2 +- grid_map_loader/package.xml | 2 +- grid_map_msgs/package.xml | 2 +- grid_map_octomap/package.xml | 2 +- grid_map_pcl/package.xml | 2 +- grid_map_ros/package.xml | 2 +- grid_map_rviz_plugin/package.xml | 2 +- grid_map_sdf/package.xml | 2 +- grid_map_visualization/package.xml | 2 +- 14 files changed, 14 insertions(+), 14 deletions(-) diff --git a/grid_map/package.xml b/grid_map/package.xml index c4c76d71c..275092465 100644 --- a/grid_map/package.xml +++ b/grid_map/package.xml @@ -1,7 +1,7 @@ grid_map - 1.6.9 + 1.6.10 Meta-package for the universal grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_core/package.xml b/grid_map_core/package.xml index 239654179..1c9e083e5 100644 --- a/grid_map_core/package.xml +++ b/grid_map_core/package.xml @@ -1,7 +1,7 @@ grid_map_core - 1.6.9 + 1.6.10 Universal grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_costmap_2d/package.xml b/grid_map_costmap_2d/package.xml index 94bd72996..3a2d990cd 100644 --- a/grid_map_costmap_2d/package.xml +++ b/grid_map_costmap_2d/package.xml @@ -1,7 +1,7 @@ grid_map_costmap_2d - 1.6.9 + 1.6.10 Interface for grid maps to the costmap_2d format. Maximilian Wulf Yoshua Nava diff --git a/grid_map_cv/package.xml b/grid_map_cv/package.xml index d7c89a93b..929c4876d 100644 --- a/grid_map_cv/package.xml +++ b/grid_map_cv/package.xml @@ -1,7 +1,7 @@ grid_map_cv - 1.6.9 + 1.6.10 Conversions between grid maps and OpenCV images. Maximilian Wulf Yoshua Nava diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 5ed52a139..45baf2ce5 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -1,7 +1,7 @@ grid_map_demos - 1.6.9 + 1.6.10 Demo nodes to demonstrate the usage of the grid map library. Maximilian Wulf Yoshua Nava diff --git a/grid_map_filters/package.xml b/grid_map_filters/package.xml index 30d60e3ee..59644c514 100644 --- a/grid_map_filters/package.xml +++ b/grid_map_filters/package.xml @@ -1,7 +1,7 @@ grid_map_filters - 1.6.10 + 1.6.11 Processing grid maps as a sequence of ROS filters. Maximilian Wulf Yoshua Nava diff --git a/grid_map_loader/package.xml b/grid_map_loader/package.xml index 12e4391b9..4c5bfa50b 100644 --- a/grid_map_loader/package.xml +++ b/grid_map_loader/package.xml @@ -1,7 +1,7 @@ grid_map_loader - 1.6.9 + 1.6.10 Loading and publishing grid maps from bag files. Maximilian Wulf Yoshua Nava diff --git a/grid_map_msgs/package.xml b/grid_map_msgs/package.xml index f69b6e75e..d823d7ba8 100644 --- a/grid_map_msgs/package.xml +++ b/grid_map_msgs/package.xml @@ -1,7 +1,7 @@ grid_map_msgs - 1.6.9 + 1.6.10 Definition of the multi-layered grid map message type. Maximilian Wulf Yoshua Nava diff --git a/grid_map_octomap/package.xml b/grid_map_octomap/package.xml index d720821d5..7d89beb1e 100644 --- a/grid_map_octomap/package.xml +++ b/grid_map_octomap/package.xml @@ -1,7 +1,7 @@ grid_map_octomap - 1.6.9 + 1.6.10 Conversions between grid maps and OctoMap types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_pcl/package.xml b/grid_map_pcl/package.xml index 05657b0de..6b1f75e28 100644 --- a/grid_map_pcl/package.xml +++ b/grid_map_pcl/package.xml @@ -1,7 +1,7 @@ grid_map_pcl - 1.6.9 + 1.6.10 Conversions between grid maps and Point Cloud Library (PCL) types. Maximilian Wulf Yoshua Nava diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index 637216aeb..cc9e588db 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -1,7 +1,7 @@ grid_map_ros - 1.6.9 + 1.6.10 ROS interface for the grid map library to manage two-dimensional grid maps with multiple data layers. Maximilian Wulf Yoshua Nava diff --git a/grid_map_rviz_plugin/package.xml b/grid_map_rviz_plugin/package.xml index a4f00ec35..a6a4ebafd 100644 --- a/grid_map_rviz_plugin/package.xml +++ b/grid_map_rviz_plugin/package.xml @@ -1,7 +1,7 @@ grid_map_rviz_plugin - 1.6.9 + 1.6.10 RViz plugin for displaying grid map messages. Maximilian Wulf Yoshua Nava diff --git a/grid_map_sdf/package.xml b/grid_map_sdf/package.xml index 5bf4d6e8a..fbd0706f1 100644 --- a/grid_map_sdf/package.xml +++ b/grid_map_sdf/package.xml @@ -1,7 +1,7 @@ grid_map_sdf - 1.6.9 + 1.6.10 Generates signed distance fields from grid maps. Maximilian Wulf Yoshua Nava diff --git a/grid_map_visualization/package.xml b/grid_map_visualization/package.xml index 636f877ce..16560b88c 100644 --- a/grid_map_visualization/package.xml +++ b/grid_map_visualization/package.xml @@ -1,7 +1,7 @@ grid_map_visualization - 1.6.9 + 1.6.10 Configurable tool to visualize grid maps in RViz. Maximilian Wulf Yoshua Nava From f4ccb5f1825e256fd86cd25e9144467298a0c9c5 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Thu, 2 Jun 2022 11:22:34 +0000 Subject: [PATCH 46/83] Merge branch 'fix/grid_map_filters/define_include_path' into 'master' Fix TBB version to Ubuntu 20.04 version Closes #UNKNOWN and #UNKNOWN GitOrigin-RevId: e1412ebe1ad08ac1215bf819e71a5c909ebad42a --- grid_map_filters/CMakeLists.txt | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) diff --git a/grid_map_filters/CMakeLists.txt b/grid_map_filters/CMakeLists.txt index 270bed529..f7b606a7d 100644 --- a/grid_map_filters/CMakeLists.txt +++ b/grid_map_filters/CMakeLists.txt @@ -32,18 +32,7 @@ find_package(catkin REQUIRED ${CATKIN_PACKAGE_DEPENDENCIES} ) -## System dependencies are found with CMake's conventions -find_package(PkgConfig REQUIRED) - -pkg_check_modules(TBB "tbb") -if (TBB_FOUND) - add_definitions( - ${TBB_CFLAGS} - ${TBB_CFLAGS_OTHER} - ) -else() - message([FATAL_ERROR] "tbb module not found") -endif () +find_package(TBB 2020.1 EXACT REQUIRED) find_package(OpenCV REQUIRED) @@ -221,4 +210,4 @@ if(cmake_clang_tools_FOUND) add_default_clang_tooling( DISABLE_CLANG_FORMAT ) -endif(cmake_clang_tools_FOUND) \ No newline at end of file +endif(cmake_clang_tools_FOUND) From b7293f5d379719d2d0b9f1ce047d00f32601487a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Magnus=20G=C3=A4rtner?= Date: Fri, 3 Jun 2022 09:09:43 +0000 Subject: [PATCH 47/83] Merge branch 'fix/grid_map_core/reduce_clang_warnings' into 'master' [grid map core] Reduce clang warnings GitOrigin-RevId: 0b01ff34cd31833b65f4718fab82467f11332938 --- .../include/grid_map_core/BufferRegion.hpp | 6 +- .../grid_map_core/CubicInterpolation.hpp | 2 +- .../include/grid_map_core/TypeDefs.hpp | 27 +++--- .../eigen_plugins/DenseBasePlugin.hpp | 10 +- .../grid_map_core/eigen_plugins/Functors.hpp | 2 +- .../eigen_plugins/FunctorsPlugin.hpp | 2 +- .../iterators/CircleIterator.hpp | 9 +- .../iterators/EllipseIterator.hpp | 9 +- grid_map_core/src/BufferRegion.cpp | 20 ++-- grid_map_core/src/CubicInterpolation.cpp | 43 +++----- grid_map_core/src/GridMap.cpp | 97 +++++++++++-------- .../src/iterators/CircleIterator.cpp | 32 +++--- .../src/iterators/EllipseIterator.cpp | 36 +++---- grid_map_core/test/EigenPluginsTest.cpp | 6 +- grid_map_core/test/EllipseIteratorTest.cpp | 7 +- 15 files changed, 148 insertions(+), 160 deletions(-) diff --git a/grid_map_core/include/grid_map_core/BufferRegion.hpp b/grid_map_core/include/grid_map_core/BufferRegion.hpp index bbe95c776..7821c2d65 100644 --- a/grid_map_core/include/grid_map_core/BufferRegion.hpp +++ b/grid_map_core/include/grid_map_core/BufferRegion.hpp @@ -35,8 +35,8 @@ class BufferRegion constexpr static unsigned int nQuadrants = 4; BufferRegion(); - BufferRegion(const Index& startIndex, const Size& size, const BufferRegion::Quadrant& quadrant); - virtual ~BufferRegion(); + BufferRegion(Index startIndex, Size size, BufferRegion::Quadrant quadrant); + virtual ~BufferRegion() = default; const Index& getStartIndex() const; void setStartIndex(const Index& startIndex); @@ -48,7 +48,7 @@ class BufferRegion private: //! Start index (typically top-left) of the buffer region. - Index staretIndex_; + Index startIndex_; //! Size of the buffer region. Size size_; diff --git a/grid_map_core/include/grid_map_core/CubicInterpolation.hpp b/grid_map_core/include/grid_map_core/CubicInterpolation.hpp index 7d6c6e6ec..3b5008874 100644 --- a/grid_map_core/include/grid_map_core/CubicInterpolation.hpp +++ b/grid_map_core/include/grid_map_core/CubicInterpolation.hpp @@ -46,7 +46,7 @@ using FunctionValueMatrix = Eigen::Matrix4d; * @param[in] nElem - number of elements in the container * @return index that is within [0, nElem-1]. */ -unsigned int bindIndexToRange(int idReq, unsigned int nElem); +unsigned int bindIndexToRange(unsigned int idReq, unsigned int nElem); /*! diff --git a/grid_map_core/include/grid_map_core/TypeDefs.hpp b/grid_map_core/include/grid_map_core/TypeDefs.hpp index 7e19c63fc..04a7a36ad 100644 --- a/grid_map_core/include/grid_map_core/TypeDefs.hpp +++ b/grid_map_core/include/grid_map_core/TypeDefs.hpp @@ -7,22 +7,22 @@ */ // Eigen -#include - #pragma once +#include + namespace grid_map { - typedef Eigen::MatrixXf Matrix; - typedef Matrix::Scalar DataType; - typedef Eigen::Vector2d Position; - typedef Eigen::Vector2d Vector; - typedef Eigen::Vector3d Position3; - typedef Eigen::Vector3d Vector3; - typedef Eigen::Array2i Index; - typedef Eigen::Array2i Size; - typedef Eigen::Array2d Length; - typedef uint64_t Time; + using Matrix = Eigen::MatrixXf; + using DataType = Matrix::Scalar; + using Position = Eigen::Vector2d; + using Vector = Eigen::Vector2d; + using Position3 = Eigen::Vector3d; + using Vector3 = Eigen::Vector3d; + using Index = Eigen::Array2i; + using Size = Eigen::Array2i; + using Length = Eigen::Array2d; + using Time = uint64_t; /* * Interpolations are ordered in the order @@ -43,4 +43,5 @@ namespace grid_map { INTER_CUBIC // standard bicubic interpolation }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/include/grid_map_core/eigen_plugins/DenseBasePlugin.hpp b/grid_map_core/include/grid_map_core/eigen_plugins/DenseBasePlugin.hpp index 8b3dd6f9b..118a6e368 100644 --- a/grid_map_core/include/grid_map_core/eigen_plugins/DenseBasePlugin.hpp +++ b/grid_map_core/include/grid_map_core/eigen_plugins/DenseBasePlugin.hpp @@ -1,12 +1,18 @@ +#pragma once + Scalar numberOfFinites() const { - if (SizeAtCompileTime==0 || (SizeAtCompileTime==Dynamic && size()==0)) return Scalar(0); + if (SizeAtCompileTime==0 || (SizeAtCompileTime==Dynamic && size()==0)) { + return Scalar(0); + } return Scalar((derived().array() == derived().array()).count()); } Scalar sumOfFinites() const { - if (SizeAtCompileTime==0 || (SizeAtCompileTime==Dynamic && size()==0)) return Scalar(0); + if (SizeAtCompileTime==0 || (SizeAtCompileTime==Dynamic && size()==0)) { + return Scalar(0); + } return Scalar(this->redux(Eigen::internal::scalar_sum_of_finites_op())); } diff --git a/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp b/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp index c4963c0fa..9ae72e3de 100644 --- a/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp +++ b/grid_map_core/include/grid_map_core/eigen_plugins/Functors.hpp @@ -25,4 +25,4 @@ struct Clamp Scalar min_, max_; }; -} +} // namespace grid_map diff --git a/grid_map_core/include/grid_map_core/eigen_plugins/FunctorsPlugin.hpp b/grid_map_core/include/grid_map_core/eigen_plugins/FunctorsPlugin.hpp index 79dcdd665..77aa03902 100644 --- a/grid_map_core/include/grid_map_core/eigen_plugins/FunctorsPlugin.hpp +++ b/grid_map_core/include/grid_map_core/eigen_plugins/FunctorsPlugin.hpp @@ -1,4 +1,4 @@ -#include +#include template struct scalar_sum_of_finites_op { EIGEN_EMPTY_STRUCT_CTOR(scalar_sum_of_finites_op) diff --git a/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp b/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp index 054819ba6..fa94cbb30 100644 --- a/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/CircleIterator.hpp @@ -30,14 +30,14 @@ class CircleIterator * @param center the position of the circle center. * @param radius the radius of the circle. */ - CircleIterator(const GridMap& gridMap, const Position& center, const double radius); + CircleIterator(const GridMap& gridMap, const Position& center, double radius); /*! * Assignment operator. * @param iterator the iterator to copy data from. * @return a reference to *this. */ - CircleIterator& operator =(const CircleIterator& other); + CircleIterator& operator =(const CircleIterator& other) = default; /*! * Compare to another iterator. @@ -78,7 +78,7 @@ class CircleIterator * @param[out] startIndex the start index of the submap. * @param[out] bufferSize the buffer size of the submap. */ - void findSubmapParameters(const Position& center, const double radius, + void findSubmapParameters(const Position& center, double radius, Index& startIndex, Size& bufferSize) const; //! Position of the circle center; @@ -104,4 +104,5 @@ class CircleIterator EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp b/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp index 2506e4ac9..f013f1f03 100644 --- a/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp +++ b/grid_map_core/include/grid_map_core/iterators/EllipseIterator.hpp @@ -32,14 +32,14 @@ class EllipseIterator * @param length the length of the main axis. * @param angle the rotation angle of the ellipse (in [rad]). */ - EllipseIterator(const GridMap& gridMap, const Position& center, const Length& length, const double rotation = 0.0); + EllipseIterator(const GridMap& gridMap, const Position& center, const Length& length, double rotation = 0.0); /*! * Assignment operator. * @param iterator the iterator to copy data from. * @return a reference to *this. */ - EllipseIterator& operator =(const EllipseIterator& other); + EllipseIterator& operator =(const EllipseIterator& other) = default; /*! * Compare to another iterator. @@ -87,7 +87,7 @@ class EllipseIterator * @param[out] startIndex the start index of the submap. * @param[out] bufferSize the buffer size of the submap. */ - void findSubmapParameters(const Position& center, const Length& length, const double rotation, + void findSubmapParameters(const Position& center, const Length& length, double rotation, Index& startIndex, Size& bufferSize) const; //! Position of the circle center; @@ -113,4 +113,5 @@ class EllipseIterator EIGEN_MAKE_ALIGNED_OPERATOR_NEW }; -} /* namespace */ +} // namespace grid_map + diff --git a/grid_map_core/src/BufferRegion.cpp b/grid_map_core/src/BufferRegion.cpp index bc4782b80..4c1e8e616 100644 --- a/grid_map_core/src/BufferRegion.cpp +++ b/grid_map_core/src/BufferRegion.cpp @@ -9,32 +9,26 @@ namespace grid_map { -BufferRegion::BufferRegion() : - staretIndex_(Index::Zero()), +BufferRegion::BufferRegion() : startIndex_(Index::Zero()), size_(Size::Zero()), quadrant_(BufferRegion::Quadrant::Undefined) { } -BufferRegion::BufferRegion(const Index& index, const Size& size, const BufferRegion::Quadrant& quadrant) : - staretIndex_(index), - size_(size), - quadrant_(quadrant) -{ -} - -BufferRegion::~BufferRegion() +BufferRegion::BufferRegion(Index index, Size size, BufferRegion::Quadrant quadrant) : startIndex_(std::move(index)), + size_(std::move(size)), + quadrant_(std::move(quadrant)) { } const Index& BufferRegion::getStartIndex() const { - return staretIndex_; + return startIndex_; } -void BufferRegion::setStartIndex(const Index& staretIndex) +void BufferRegion::setStartIndex(const Index& startIndex) { - staretIndex_ = staretIndex; + startIndex_ = startIndex; } const Size& BufferRegion::getSize() const diff --git a/grid_map_core/src/CubicInterpolation.cpp b/grid_map_core/src/CubicInterpolation.cpp index 7e2e16fdb..86c8ced2b 100644 --- a/grid_map_core/src/CubicInterpolation.cpp +++ b/grid_map_core/src/CubicInterpolation.cpp @@ -13,18 +13,15 @@ namespace grid_map { -unsigned int bindIndexToRange(int idReq, unsigned int nElem) +unsigned int bindIndexToRange(unsigned int idReq, unsigned int nElem) { - if (idReq < 0) { - return 0; + if (idReq >= nElem) { + return (nElem - 1); } - if (static_cast(idReq) >= nElem) { - return static_cast(nElem - 1); - } - return static_cast(idReq); + return idReq; } -double getLayerValue(const Matrix &layerMat, int rowReq, int colReq) +double getLayerValue(const Matrix &layerMat, unsigned int rowReq, unsigned int colReq) { const auto numCol = layerMat.cols(); const auto numRow = layerMat.rows(); @@ -92,7 +89,7 @@ bool assembleFunctionValueMatrix(const GridMap &gridMap, const std::string &laye } const Matrix &layerMatrix = gridMap.get(layer); - auto f = [&layerMatrix](int rowReq, int colReq) { + auto f = [&layerMatrix](unsigned int rowReq, unsigned int colReq) { double retVal = getLayerValue(layerMatrix, rowReq, colReq); return retVal; }; @@ -135,11 +132,7 @@ bool getNormalizedCoordinates(const GridMap &gridMap, const Position &queriedPos bool getIndicesOfMiddleKnot(const GridMap &gridMap, const Position &queriedPosition, Index *index) { - - if (!gridMap.getIndex(queriedPosition, *index)) { - return false; - } - return true; + return gridMap.getIndex(queriedPosition, *index); } } /* namespace bicubic_conv */ @@ -264,11 +257,7 @@ bool getUnitSquareCornerIndices(const GridMap &gridMap, const Position &queriedP bool getClosestPointIndices(const GridMap &gridMap, const Position &queriedPosition, Index *index) { - - if (!gridMap.getIndex(queriedPosition, *index)) { - return false; - } - return true; + return gridMap.getIndex(queriedPosition, *index); } bool computeNormalizedCoordinates(const GridMap &gridMap, const Index &originIndex, @@ -298,8 +287,8 @@ bool getFunctionValues(const Matrix &layerData, const IndicesMatrix &indices, Da void bindIndicesToRange(const GridMap &gridMap, IndicesMatrix *indices) { - const int numCol = gridMap.getSize().y(); - const int numRow = gridMap.getSize().x(); + const unsigned int numCol = gridMap.getSize().y(); + const unsigned int numRow = gridMap.getSize().x(); //top left { @@ -346,10 +335,11 @@ bool getFirstOrderDerivatives(const Matrix &layerData, const IndicesMatrix &indi double firstOrderDerivativeAt(const Matrix &layerData, const Index &index, Dim2D dim, double resolution) { - const int numCol = layerData.cols(); - const int numRow = layerData.rows(); + const auto numCol{static_cast(layerData.cols())}; + const auto numRow{static_cast(layerData.rows())}; - double left, right; + double left; + double right; switch (dim) { case Dim2D::X: { left = layerData(bindIndexToRange(index.x() + 1, numRow), index.y()); @@ -380,9 +370,8 @@ double mixedSecondOrderDerivativeAt(const Matrix &layerData, const Index &index, * the order doesn't matter. Derivative values are the same. * Taken from https://www.mathematik.uni-dortmund.de/~kuzmin/cfdintro/lecture4.pdf */ - - const int numCol = layerData.cols(); - const int numRow = layerData.rows(); + const auto numCol{static_cast(layerData.cols())}; + const auto numRow{static_cast(layerData.rows())}; const double f11 = layerData(bindIndexToRange(index.x() - 1, numRow), bindIndexToRange(index.y() - 1, numCol)); diff --git a/grid_map_core/src/GridMap.cpp b/grid_map_core/src/GridMap.cpp index aa25086cd..86b7c05a3 100644 --- a/grid_map_core/src/GridMap.cpp +++ b/grid_map_core/src/GridMap.cpp @@ -15,14 +15,15 @@ #include -#include +#include #include #include #include #include -using namespace std; -using namespace grid_map; +using std::cout; +using std::endl; +using std::isfinite; namespace grid_map { @@ -57,8 +58,6 @@ void GridMap::setGeometry(const Length& length, const double resolution, const P length_ = (size_.cast() * resolution_).matrix(); position_ = position; startIndex_.setZero(); - - return; } void GridMap::setGeometry(const SubmapGeometry& geometry) { @@ -74,16 +73,12 @@ const std::vector& GridMap::getBasicLayers() const { } bool GridMap::hasBasicLayers() const { - return basicLayers_.size() > 0; + return !basicLayers_.empty(); } bool GridMap::hasSameLayers(const GridMap& other) const { - for (const auto& layer : layers_) { - if (!other.exists(layer)) { - return false; - } - } - return true; + return std::all_of(layers_.begin(), layers_.end(), + [&](const std::string& layer){return other.exists(layer);}); } void GridMap::add(const std::string& layer, const double value) { @@ -192,8 +187,9 @@ float GridMap::atPosition(const std::string& layer, const Position& position, In } case InterpolationMethods::INTER_LINEAR: { float value; - if (atPositionLinearInterpolated(layer, position, value)) + if (atPositionLinearInterpolated(layer, position, value)){ return value; + } else { interpolationMethod = InterpolationMethods::INTER_NEAREST; } @@ -203,8 +199,9 @@ float GridMap::atPosition(const std::string& layer, const Position& position, In Index index; if (getIndex(position, index)) { return at(layer, index); - } else + } else { throw std::out_of_range("GridMap::atPosition(...) : Position is out of range."); + } break; } default: @@ -258,12 +255,8 @@ bool GridMap::isValid(const Index& index, const std::vector& layers if (layers.empty()) { return false; } - for (const auto& layer : layers) { - if (!isValid(index, layer)) { - return false; - } - } - return true; + return std::all_of(layers.begin(), layers.end(), + [&](const std::string& layer){return isValid(index, layer);}); } bool GridMap::getPosition3(const std::string& layer, const Index& index, Position3& position) const { @@ -303,7 +296,7 @@ GridMap GridMap::getSubmap(const Position& position, const Length& length, Index // Get submap geometric information. SubmapGeometry submapInformation(*this, position, length, isSuccess); if (!isSuccess) { - return GridMap(layers_); + return {layers_}; } submap.setGeometry(submapInformation); submap.startIndex_.setZero(); // Because of the way we copy the data below. @@ -314,7 +307,7 @@ GridMap GridMap::getSubmap(const Position& position, const Length& length, Index if (!getBufferRegionsForSubmap(bufferRegions, submapInformation.getStartIndex(), submap.getSize(), size_, startIndex_)) { cout << "Cannot access submap of this size." << endl; isSuccess = false; - return GridMap(layers_); + return {layers_}; } for (const auto& data : data_) { @@ -403,10 +396,10 @@ GridMap GridMap::getTransformedMap(const Eigen::Isometry3d& transform, const std if (sampleRatio > 0.0) { positionSamples.reserve(5); positionSamples.push_back(center); - positionSamples.push_back(Position3(center.x() - sampleLength, center.y(), center.z())); - positionSamples.push_back(Position3(center.x() + sampleLength, center.y(), center.z())); - positionSamples.push_back(Position3(center.x(), center.y() - sampleLength, center.z())); - positionSamples.push_back(Position3(center.x(), center.y() + sampleLength, center.z())); + positionSamples.emplace_back(center.x() - sampleLength, center.y(), center.z()); + positionSamples.emplace_back(center.x() + sampleLength, center.y(), center.z()); + positionSamples.emplace_back(center.x(), center.y() - sampleLength, center.z()); + positionSamples.emplace_back(center.x(), center.y() + sampleLength, center.z()); } else { positionSamples.push_back(center); } @@ -461,7 +454,7 @@ bool GridMap::move(const Position& position, std::vector& newRegio if (abs(indexShift(i)) >= getSize()(i)) { // Entire map is dropped. clearAll(); - newRegions.push_back(BufferRegion(Index(0, 0), getSize(), BufferRegion::Quadrant::Undefined)); + newRegions.emplace_back(Index(0, 0), getSize(), BufferRegion::Quadrant::Undefined); } else { // Drop cells out of map. int sign = (indexShift(i) > 0 ? 1 : -1); @@ -475,10 +468,10 @@ bool GridMap::move(const Position& position, std::vector& newRegio // One region to drop. if (i == 0) { clearRows(index, nCells); - newRegions.push_back(BufferRegion(Index(index, 0), Size(nCells, getSize()(1)), BufferRegion::Quadrant::Undefined)); + newRegions.emplace_back(Index(index, 0), Size(nCells, getSize()(1)), BufferRegion::Quadrant::Undefined); } else if (i == 1) { clearCols(index, nCells); - newRegions.push_back(BufferRegion(Index(0, index), Size(getSize()(0), nCells), BufferRegion::Quadrant::Undefined)); + newRegions.emplace_back(Index(0, index), Size(getSize()(0), nCells), BufferRegion::Quadrant::Undefined); } } else { // Two regions to drop. @@ -486,20 +479,20 @@ bool GridMap::move(const Position& position, std::vector& newRegio int firstNCells = getSize()(i) - firstIndex; if (i == 0) { clearRows(firstIndex, firstNCells); - newRegions.push_back(BufferRegion(Index(firstIndex, 0), Size(firstNCells, getSize()(1)), BufferRegion::Quadrant::Undefined)); + newRegions.emplace_back(Index(firstIndex, 0), Size(firstNCells, getSize()(1)), BufferRegion::Quadrant::Undefined); } else if (i == 1) { clearCols(firstIndex, firstNCells); - newRegions.push_back(BufferRegion(Index(0, firstIndex), Size(getSize()(0), firstNCells), BufferRegion::Quadrant::Undefined)); + newRegions.emplace_back(Index(0, firstIndex), Size(getSize()(0), firstNCells), BufferRegion::Quadrant::Undefined); } int secondIndex = 0; int secondNCells = nCells - firstNCells; if (i == 0) { clearRows(secondIndex, secondNCells); - newRegions.push_back(BufferRegion(Index(secondIndex, 0), Size(secondNCells, getSize()(1)), BufferRegion::Quadrant::Undefined)); + newRegions.emplace_back(Index(secondIndex, 0), Size(secondNCells, getSize()(1)), BufferRegion::Quadrant::Undefined); } else if (i == 1) { clearCols(secondIndex, secondNCells); - newRegions.push_back(BufferRegion(Index(0, secondIndex), Size(getSize()(0), secondNCells), BufferRegion::Quadrant::Undefined)); + newRegions.emplace_back(Index(0, secondIndex), Size(getSize()(0), secondNCells), BufferRegion::Quadrant::Undefined); } } } @@ -512,7 +505,7 @@ bool GridMap::move(const Position& position, std::vector& newRegio position_ += alignedPositionShift; // Check if map has been moved at all. - return (indexShift.any() != 0); + return indexShift.any(); } bool GridMap::move(const Position& position) { @@ -522,10 +515,14 @@ bool GridMap::move(const Position& position) { bool GridMap::addDataFrom(const GridMap& other, bool extendMap, bool overwriteData, bool copyAllLayers, std::vector layers) { // Set the layers to copy. - if (copyAllLayers) layers = other.getLayers(); + if (copyAllLayers) { + layers = other.getLayers(); + } // Resize map. - if (extendMap) extendToInclude(other); + if (extendMap) { + extendToInclude(other); + } // Check if all layers to copy exist and add missing layers. for (const auto& layer : layers) { @@ -535,14 +532,20 @@ bool GridMap::addDataFrom(const GridMap& other, bool extendMap, bool overwriteDa } // Copy data. for (GridMapIterator iterator(*this); !iterator.isPastEnd(); ++iterator) { - if (isValid(*iterator) && !overwriteData) continue; + if (isValid(*iterator) && !overwriteData) { + continue; + } Position position; getPosition(*iterator, position); Index index; - if (!other.isInside(position)) continue; + if (!other.isInside(position)) { + continue; + } other.getIndex(position, index); for (const auto& layer : layers) { - if (!other.isValid(index, layer)) continue; + if (!other.isValid(index, layer)) { + continue; + } at(layer, *iterator) = other.at(layer, index); } } @@ -607,11 +610,15 @@ bool GridMap::extendToInclude(const GridMap& other) { } // Copy data. for (GridMapIterator iterator(*this); !iterator.isPastEnd(); ++iterator) { - if (isValid(*iterator)) continue; + if (isValid(*iterator)) { + continue; + } Position position; getPosition(*iterator, position); Index index; - if (!mapCopy.isInside(position)) continue; + if (!mapCopy.isInside(position)) { + continue; + } mapCopy.getIndex(position, index); for (const auto& layer : layers_) { at(layer, *iterator) = mapCopy.at(layer, index); @@ -670,7 +677,9 @@ bool GridMap::isDefaultStartIndex() const { } void GridMap::convertToDefaultStartIndex() { - if (isDefaultStartIndex()) return; + if (isDefaultStartIndex()) { + return; + } std::vector bufferRegions; if (!getBufferRegionsForSubmap(bufferRegions, startIndex_, size_, size_, startIndex_)) { @@ -823,7 +832,9 @@ bool GridMap::atPositionLinearInterpolated(const std::string& layer, const Posit for (size_t i = 0; i < 4; ++i) { const size_t indexLin = getLinearIndexFromIndex(indices[idxShift[i]], mapSize); - if ((indexLin < startIndexLin) || (indexLin > endIndexLin)) return false; + if ((indexLin < startIndexLin) || (indexLin > endIndexLin)) { + return false; + } f[i] = layerMat(indexLin); } diff --git a/grid_map_core/src/iterators/CircleIterator.cpp b/grid_map_core/src/iterators/CircleIterator.cpp index ecdc5fe15..5110b8a0d 100644 --- a/grid_map_core/src/iterators/CircleIterator.cpp +++ b/grid_map_core/src/iterators/CircleIterator.cpp @@ -7,9 +7,9 @@ */ #include "grid_map_core/iterators/CircleIterator.hpp" -#include "grid_map_core/GridMapMath.hpp" -using namespace std; +#include +#include "grid_map_core/GridMapMath.hpp" namespace grid_map { @@ -26,22 +26,10 @@ CircleIterator::CircleIterator(const GridMap& gridMap, const Position& center, c Index submapStartIndex; Index submapBufferSize; findSubmapParameters(center, radius, submapStartIndex, submapBufferSize); - internalIterator_ = std::shared_ptr(new SubmapIterator(gridMap, submapStartIndex, submapBufferSize)); - if(!isInside()) ++(*this); -} - -CircleIterator& CircleIterator::operator =(const CircleIterator& other) -{ - center_ = other.center_; - radius_ = other.radius_; - radiusSquare_ = other.radiusSquare_; - internalIterator_ = other.internalIterator_; - mapLength_ = other.mapLength_; - mapPosition_ = other.mapPosition_; - resolution_ = other.resolution_; - bufferSize_ = other.bufferSize_; - bufferStartIndex_ = other.bufferStartIndex_; - return *this; + internalIterator_ = std::make_shared(gridMap, submapStartIndex, submapBufferSize); + if(!isInside()) { + ++(*this); + } } bool CircleIterator::operator !=(const CircleIterator& other) const @@ -57,10 +45,14 @@ const Index& CircleIterator::operator *() const CircleIterator& CircleIterator::operator ++() { ++(*internalIterator_); - if (internalIterator_->isPastEnd()) return *this; + if (internalIterator_->isPastEnd()) { + return *this; + } for ( ; !internalIterator_->isPastEnd(); ++(*internalIterator_)) { - if (isInside()) break; + if (isInside()) { + break; + } } return *this; diff --git a/grid_map_core/src/iterators/EllipseIterator.cpp b/grid_map_core/src/iterators/EllipseIterator.cpp index 6463c509c..f472591dc 100644 --- a/grid_map_core/src/iterators/EllipseIterator.cpp +++ b/grid_map_core/src/iterators/EllipseIterator.cpp @@ -9,19 +9,17 @@ #include "grid_map_core/iterators/EllipseIterator.hpp" #include "grid_map_core/GridMapMath.hpp" -#include +#include #include -using namespace std; - namespace grid_map { EllipseIterator::EllipseIterator(const GridMap& gridMap, const Position& center, const Length& length, const double rotation) : center_(center) { semiAxisSquare_ = (0.5 * length).square(); - double sinRotation = sin(rotation); - double cosRotation = cos(rotation); + double sinRotation = std::sin(rotation); + double cosRotation = std::cos(rotation); transformMatrix_ << cosRotation, sinRotation, sinRotation, -cosRotation; mapLength_ = gridMap.getLength(); mapPosition_ = gridMap.getPosition(); @@ -31,22 +29,10 @@ EllipseIterator::EllipseIterator(const GridMap& gridMap, const Position& center, Index submapStartIndex; Index submapBufferSize; findSubmapParameters(center, length, rotation, submapStartIndex, submapBufferSize); - internalIterator_ = std::shared_ptr(new SubmapIterator(gridMap, submapStartIndex, submapBufferSize)); - if(!isInside()) ++(*this); -} - -EllipseIterator& EllipseIterator::operator =(const EllipseIterator& other) -{ - center_ = other.center_; - semiAxisSquare_ = other.semiAxisSquare_; - transformMatrix_ = other.transformMatrix_; - internalIterator_ = other.internalIterator_; - mapLength_ = other.mapLength_; - mapPosition_ = other.mapPosition_; - resolution_ = other.resolution_; - bufferSize_ = other.bufferSize_; - bufferStartIndex_ = other.bufferStartIndex_; - return *this; + internalIterator_ = std::make_shared(gridMap, submapStartIndex, submapBufferSize); + if (!isInside()) { + ++(*this); + } } bool EllipseIterator::operator !=(const EllipseIterator& other) const @@ -62,10 +48,14 @@ const Eigen::Array2i& EllipseIterator::operator *() const EllipseIterator& EllipseIterator::operator ++() { ++(*internalIterator_); - if (internalIterator_->isPastEnd()) return *this; + if (internalIterator_->isPastEnd()) { + return *this; + } for ( ; !internalIterator_->isPastEnd(); ++(*internalIterator_)) { - if (isInside()) break; + if (isInside()) { + break; + } } return *this; diff --git a/grid_map_core/test/EigenPluginsTest.cpp b/grid_map_core/test/EigenPluginsTest.cpp index 0ec5cf652..1c463fa1f 100644 --- a/grid_map_core/test/EigenPluginsTest.cpp +++ b/grid_map_core/test/EigenPluginsTest.cpp @@ -70,7 +70,8 @@ TEST(EigenMatrixBaseAddons, minCoeffOfFinites) double min = matrix.minCoeff(); EXPECT_NEAR(min, matrix.minCoeffOfFinites(), 1e-10); - int i, j; + int i; + int j; matrix.maxCoeff(&i, &j); matrix(i, j) = NAN; EXPECT_NEAR(min, matrix.minCoeffOfFinites(), 1e-10); @@ -88,7 +89,8 @@ TEST(EigenMatrixBaseAddons, maxCoeffOfFinites) double max = matrix.maxCoeff(); EXPECT_NEAR(max, matrix.maxCoeffOfFinites(), 1e-10); - int i, j; + int i; + int j; matrix.minCoeff(&i, &j); matrix(i, j) = NAN; EXPECT_NEAR(max, matrix.maxCoeffOfFinites(), 1e-10); diff --git a/grid_map_core/test/EllipseIteratorTest.cpp b/grid_map_core/test/EllipseIteratorTest.cpp index 801cd9552..869d2716f 100644 --- a/grid_map_core/test/EllipseIteratorTest.cpp +++ b/grid_map_core/test/EllipseIteratorTest.cpp @@ -21,9 +21,10 @@ // Vector #include -using namespace std; -using namespace Eigen; -using namespace grid_map; +using grid_map::GridMap; +using grid_map::Length; +using grid_map::Position; +using grid_map::EllipseIterator; TEST(EllipseIterator, OneCellWideEllipse) { From 91ba8803a5a81212c6f34b2b782b2580390b31f7 Mon Sep 17 00:00:00 2001 From: Maximilian Wulf Date: Thu, 23 Jun 2022 16:51:20 +0000 Subject: [PATCH 48/83] Merge branch 'anymal_research/rsl/feature/grid_map_sdf' into 'master' Rsl/feature/grid map sdf GitOrigin-RevId: 3b81429fa28b24149d8ea22f16cfc5c9d1b5c0a8 --- README.md | 6 + grid_map/CHANGELOG.rst | 3 + grid_map_core/CHANGELOG.rst | 3 + grid_map_costmap_2d/CHANGELOG.rst | 3 + grid_map_cv/CHANGELOG.rst | 3 + grid_map_demos/CHANGELOG.rst | 3 + grid_map_demos/CMakeLists.txt | 14 +- grid_map_demos/config/sdf_demo.yaml | 16 + .../include/grid_map_demos/SdfDemo.hpp | 56 +++ grid_map_demos/launch/sdf_demo.launch | 31 ++ grid_map_demos/package.xml | 3 +- grid_map_demos/rviz/sdf_demo.rviz | 236 ++++++++++++ grid_map_demos/src/SdfDemo.cpp | 58 +++ grid_map_demos/src/sdf_demo_node.cpp | 33 ++ grid_map_filters/CHANGELOG.rst | 4 + grid_map_loader/CHANGELOG.rst | 3 + grid_map_msgs/CHANGELOG.rst | 3 + grid_map_octomap/CHANGELOG.rst | 3 + grid_map_pcl/CHANGELOG.rst | 3 + grid_map_ros/CHANGELOG.rst | 3 + grid_map_ros/CMakeLists.txt | 2 + .../grid_map_ros/GridMapRosConverter.hpp | 12 + grid_map_ros/package.xml | 1 + grid_map_ros/src/GridMapRosConverter.cpp | 58 +++ grid_map_ros/test/GridMapRosTest.cpp | 19 + grid_map_rviz_plugin/CHANGELOG.rst | 3 + grid_map_sdf/CHANGELOG.rst | 5 + grid_map_sdf/CMakeLists.txt | 10 +- grid_map_sdf/doc/anymal_sdf_demo.gif | Bin 0 -> 843793 bytes .../grid_map_sdf/DistanceDerivatives.hpp | 62 ++++ .../include/grid_map_sdf/Gridmap3dLookup.hpp | 105 ++++++ .../grid_map_sdf/PixelBorderDistance.hpp | 104 ++++++ .../include/grid_map_sdf/SignedDistance2d.hpp | 59 +++ .../grid_map_sdf/SignedDistanceField.hpp | 152 ++++++-- grid_map_sdf/include/grid_map_sdf/Utils.hpp | 21 ++ .../grid_map_sdf/distance_transform/COPYING | 339 ------------------ .../grid_map_sdf/distance_transform/dt.h | 117 ------ .../grid_map_sdf/distance_transform/image.h | 101 ------ .../grid_map_sdf/distance_transform/imconv.h | 179 --------- .../grid_map_sdf/distance_transform/imutil.h | 67 ---- .../grid_map_sdf/distance_transform/misc.h | 62 ---- .../grid_map_sdf/distance_transform/pnmfile.h | 214 ----------- grid_map_sdf/package.xml | 1 - grid_map_sdf/src/SignedDistance2d.cpp | 290 +++++++++++++++ grid_map_sdf/src/SignedDistanceField.cpp | 314 ++++++++-------- grid_map_sdf/test/SignedDistanceFieldTest.cpp | 305 ---------------- .../test/include/naiveSignedDistance.hpp | 116 ++++++ grid_map_sdf/test/test3dLookup.cpp | 59 +++ grid_map_sdf/test/testDerivatives.cpp | 31 ++ grid_map_sdf/test/testPixelBorderDistance.cpp | 76 ++++ grid_map_sdf/test/testSignedDistance2d.cpp | 112 ++++++ grid_map_sdf/test/testSignedDistance3d.cpp | 193 ++++++++++ grid_map_visualization/CHANGELOG.rst | 3 + 53 files changed, 2110 insertions(+), 1569 deletions(-) create mode 100644 grid_map_demos/config/sdf_demo.yaml create mode 100644 grid_map_demos/include/grid_map_demos/SdfDemo.hpp create mode 100644 grid_map_demos/launch/sdf_demo.launch create mode 100644 grid_map_demos/rviz/sdf_demo.rviz create mode 100644 grid_map_demos/src/SdfDemo.cpp create mode 100644 grid_map_demos/src/sdf_demo_node.cpp create mode 100644 grid_map_sdf/doc/anymal_sdf_demo.gif create mode 100644 grid_map_sdf/include/grid_map_sdf/DistanceDerivatives.hpp create mode 100644 grid_map_sdf/include/grid_map_sdf/Gridmap3dLookup.hpp create mode 100644 grid_map_sdf/include/grid_map_sdf/PixelBorderDistance.hpp create mode 100644 grid_map_sdf/include/grid_map_sdf/SignedDistance2d.hpp create mode 100644 grid_map_sdf/include/grid_map_sdf/Utils.hpp delete mode 100755 grid_map_sdf/include/grid_map_sdf/distance_transform/COPYING delete mode 100755 grid_map_sdf/include/grid_map_sdf/distance_transform/dt.h delete mode 100755 grid_map_sdf/include/grid_map_sdf/distance_transform/image.h delete mode 100755 grid_map_sdf/include/grid_map_sdf/distance_transform/imconv.h delete mode 100755 grid_map_sdf/include/grid_map_sdf/distance_transform/imutil.h delete mode 100755 grid_map_sdf/include/grid_map_sdf/distance_transform/misc.h delete mode 100755 grid_map_sdf/include/grid_map_sdf/distance_transform/pnmfile.h create mode 100644 grid_map_sdf/src/SignedDistance2d.cpp delete mode 100644 grid_map_sdf/test/SignedDistanceFieldTest.cpp create mode 100644 grid_map_sdf/test/include/naiveSignedDistance.hpp create mode 100644 grid_map_sdf/test/test3dLookup.cpp create mode 100644 grid_map_sdf/test/testDerivatives.cpp create mode 100644 grid_map_sdf/test/testPixelBorderDistance.cpp create mode 100644 grid_map_sdf/test/testSignedDistance2d.cpp create mode 100644 grid_map_sdf/test/testSignedDistance3d.cpp diff --git a/README.md b/README.md index a2c33f742..0bde2b5ac 100644 --- a/README.md +++ b/README.md @@ -108,6 +108,7 @@ This repository consists of following packages: * ***grid_map_filters*** builds on the [ROS Filters] package to process grid maps as a sequence of filters. * ***grid_map_msgs*** holds the [ROS] message and service definitions around the [grid_map_msg/GridMap] message type. * ***grid_map_rviz_plugin*** is an [RViz] plugin to visualize grid maps as 3d surface plots (height maps). +* ***grid_map_sdf*** provides an algorithm to convert an elevation map into a 3D signed distance field. * ***grid_map_visualization*** contains a node written to convert GridMap messages to other [ROS] message types for example for visualization in [RViz]. Additional conversion packages: @@ -283,6 +284,11 @@ This [RViz] plugin visualizes a grid map layer as 3d surface plot (height map). ![Grid map visualization in RViz](grid_map_rviz_plugin/doc/grid_map_rviz_plugin.png) +### grid_map_sdf + +This package provides an efficient algorithm to convert an elevation map into a dense 3D signed distance field. Each point in the 3D grid contains the distance to the closest point in the map together with the gradient. + +![ANYmal SDF demo](grid_map_sdf/doc/anymal_sdf_demo.gif) ### grid_map_visualization diff --git a/grid_map/CHANGELOG.rst b/grid_map/CHANGELOG.rst index 759988ce4..139fe8762 100644 --- a/grid_map/CHANGELOG.rst +++ b/grid_map/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_core/CHANGELOG.rst b/grid_map_core/CHANGELOG.rst index 47f729e03..7a4acaefd 100644 --- a/grid_map_core/CHANGELOG.rst +++ b/grid_map_core/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_core ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_costmap_2d/CHANGELOG.rst b/grid_map_costmap_2d/CHANGELOG.rst index 9954779e7..474859e03 100644 --- a/grid_map_costmap_2d/CHANGELOG.rst +++ b/grid_map_costmap_2d/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_costmap_2d ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_cv/CHANGELOG.rst b/grid_map_cv/CHANGELOG.rst index 2faea7419..b770b0af0 100644 --- a/grid_map_cv/CHANGELOG.rst +++ b/grid_map_cv/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_cv ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_demos/CHANGELOG.rst b/grid_map_demos/CHANGELOG.rst index 1b9fdfe75..500764b84 100644 --- a/grid_map_demos/CHANGELOG.rst +++ b/grid_map_demos/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_demos ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_demos/CMakeLists.txt b/grid_map_demos/CMakeLists.txt index 699c2b4e0..874f7c008 100644 --- a/grid_map_demos/CMakeLists.txt +++ b/grid_map_demos/CMakeLists.txt @@ -9,13 +9,14 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) find_package(catkin REQUIRED COMPONENTS roscpp grid_map_core - grid_map_ros grid_map_cv grid_map_filters grid_map_loader grid_map_msgs grid_map_octomap + grid_map_ros grid_map_rviz_plugin + grid_map_sdf grid_map_visualization geometry_msgs sensor_msgs @@ -120,6 +121,11 @@ add_executable(interpolation_demo src/InterpolationDemo.cpp ) +add_executable(sdf_demo + src/sdf_demo_node.cpp + src/SdfDemo.cpp +) + ## Specify libraries to link a library or executable target against target_link_libraries( simple_demo @@ -188,6 +194,11 @@ target_link_libraries( ${catkin_LIBRARIES} ) +target_link_libraries( + sdf_demo + ${catkin_LIBRARIES} +) + ############# ## Install ## ############# @@ -213,6 +224,7 @@ install( resolution_change_demo simple_demo tutorial_demo + sdf_demo ARCHIVE DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} LIBRARY DESTINATION ${CATKIN_PACKAGE_LIB_DESTINATION} RUNTIME DESTINATION ${CATKIN_PACKAGE_BIN_DESTINATION} diff --git a/grid_map_demos/config/sdf_demo.yaml b/grid_map_demos/config/sdf_demo.yaml new file mode 100644 index 000000000..1b3299b0b --- /dev/null +++ b/grid_map_demos/config/sdf_demo.yaml @@ -0,0 +1,16 @@ +grid_map_topic: /image_to_gridmap_demo/grid_map +pointcloud_topic: /grid_map_sdf_demo/signed_distance_field +elevation_layer: "elevation" +image_to_gridmap_demo: + image_topic: "/image_publisher/image" + resolution: 0.03 + map_frame_id: "map" + min_height: -0.3 + max_height: 0.4 +grid_map_visualization: + grid_map_topic: /image_to_gridmap_demo/grid_map + grid_map_visualizations: + - name: elevation_points + type: point_cloud + params: + layer: elevation \ No newline at end of file diff --git a/grid_map_demos/include/grid_map_demos/SdfDemo.hpp b/grid_map_demos/include/grid_map_demos/SdfDemo.hpp new file mode 100644 index 000000000..a6f367573 --- /dev/null +++ b/grid_map_demos/include/grid_map_demos/SdfDemo.hpp @@ -0,0 +1,56 @@ +/* + * SdfDemo.hpp + * + * Created on: May 3, 2022 + * Author: Ruben Grandia + * Institute: ETH Zurich + */ + +#pragma once + +#include + +// ROS +#include + +// gridmap +#include +#include + +namespace grid_map_demos { + +/** + * Subscribes to a gridmap, converts it to a signed distance field, and publishes the signed distance field as a pointcloud. + */ +class SdfDemo { + public: + + /** + * Constructor. + * @param nodeHandle : the ROS node handle. + * @param mapTopic : grid map topic to subscribe to + * @param elevationLayer : name of the elevation layer + * @param pointcloudTopic : point cloud topic to publish the result to + */ + SdfDemo(ros::NodeHandle& nodeHandle, const std::string& mapTopic, std::string elevationLayer, const std::string& pointcloudTopic); + + private: + void callback(const grid_map_msgs::GridMap& message); + + //! Grid map subscriber. + ros::Subscriber gridmapSubscriber_; + + //! Pointcloud publisher. + ros::Publisher pointcloudPublisher_; + + //! Free space publisher. + ros::Publisher freespacePublisher_; + + //! Occupied space publisher. + ros::Publisher occupiedPublisher_; + + //! Elevation layer in the received grid map + std::string elevationLayer_; +}; + +} // namespace grid_map_demos \ No newline at end of file diff --git a/grid_map_demos/launch/sdf_demo.launch b/grid_map_demos/launch/sdf_demo.launch new file mode 100644 index 000000000..3bb155db6 --- /dev/null +++ b/grid_map_demos/launch/sdf_demo.launch @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/grid_map_demos/package.xml b/grid_map_demos/package.xml index 45baf2ce5..4589ede38 100644 --- a/grid_map_demos/package.xml +++ b/grid_map_demos/package.xml @@ -13,13 +13,14 @@ roscpp grid_map_core - grid_map_ros grid_map_cv grid_map_filters grid_map_loader grid_map_msgs grid_map_octomap + grid_map_ros grid_map_rviz_plugin + grid_map_sdf grid_map_visualization geometry_msgs sensor_msgs diff --git a/grid_map_demos/rviz/sdf_demo.rviz b/grid_map_demos/rviz/sdf_demo.rviz new file mode 100644 index 000000000..aeae58829 --- /dev/null +++ b/grid_map_demos/rviz/sdf_demo.rviz @@ -0,0 +1,236 @@ +Panels: + - Class: rviz/Displays + Help Height: 0 + Name: Displays + Property Tree Widget: + Expanded: ~ + Splitter Ratio: 0.6114649772644043 + Tree Height: 375 + - Class: rviz/Selection + Name: Selection + - Class: rviz/Tool Properties + Expanded: + - /2D Pose Estimate1 + - /2D Nav Goal1 + - /Publish Point1 + Name: Tool Properties + Splitter Ratio: 0.5886790156364441 + - Class: rviz/Views + Expanded: + - /Current View1 + Name: Views + Splitter Ratio: 0.5 + - Class: rviz/Time + Experimental: false + Name: Time + SyncMode: 0 + SyncSource: OccupiedSpace +Preferences: + PromptSaveOnExit: true +Toolbars: + toolButtonStyle: 2 +Visualization Manager: + Class: "" + Displays: + - Alpha: 1 + Autocompute Intensity Bounds: true + Class: grid_map_rviz_plugin/GridMap + Color: 200; 200; 200 + Color Layer: elevation + Color Transformer: GridMapLayer + ColorMap: default + Enabled: false + Grid Cell Decimation: 1 + Grid Line Thickness: 0.10000000149011612 + Height Layer: elevation + Height Transformer: GridMapLayer + History Length: 1 + Invert ColorMap: false + Max Color: 255; 255; 255 + Max Intensity: 10 + Min Color: 0; 0; 0 + Min Intensity: 0 + Name: GridMap + Show Grid Lines: true + Topic: /image_to_gridmap_demo/grid_map + Unreliable: false + Use ColorMap: true + Value: false + - Alpha: 1 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 0.08491750061511993 + Min Value: -0.16515299677848816 + Value: false + Axis: Z + Channel Name: z + Class: rviz/PointCloud2 + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Min Color: 0; 85; 127 + Name: Elevation + Position Transformer: XYZ + Queue Size: 10 + Selectable: false + Size (Pixels): 3 + Size (m): 0.029999999329447746 + Style: Boxes + Topic: /grid_map_visualization/elevation_points + Unreliable: false + Use Fixed Frame: true + Use rainbow: false + Value: true + - Alpha: 0.30000001192092896 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0 + Enabled: false + Invert Rainbow: false + Max Color: 255; 255; 255 + Min Color: 0; 0; 0 + Name: SignedDistanceField + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Flat Squares + Topic: /grid_map_sdf_demo/signed_distance_field/full_sdf + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: false + - Alpha: 0.30000001192092896 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0 + Enabled: false + Invert Rainbow: false + Max Color: 255; 255; 255 + Min Color: 0; 0; 0 + Name: FreeSpace + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Flat Squares + Topic: /grid_map_sdf_demo/signed_distance_field/free_space + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: false + - Alpha: 0.30000001192092896 + Autocompute Intensity Bounds: true + Autocompute Value Bounds: + Max Value: 10 + Min Value: -10 + Value: true + Axis: Z + Channel Name: intensity + Class: rviz/PointCloud2 + Color: 255; 255; 255 + Color Transformer: Intensity + Decay Time: 0 + Enabled: true + Invert Rainbow: false + Max Color: 255; 255; 255 + Min Color: 0; 0; 0 + Name: OccupiedSpace + Position Transformer: XYZ + Queue Size: 10 + Selectable: true + Size (Pixels): 3 + Size (m): 0.009999999776482582 + Style: Flat Squares + Topic: /grid_map_sdf_demo/signed_distance_field/occupied_space + Unreliable: false + Use Fixed Frame: true + Use rainbow: true + Value: true + Enabled: true + Global Options: + Background Color: 255; 255; 255 + Default Light: true + Fixed Frame: map + Frame Rate: 30 + Name: root + Tools: + - Class: rviz/Interact + Hide Inactive Objects: true + - Class: rviz/MoveCamera + - Class: rviz/Select + - Class: rviz/FocusCamera + - Class: rviz/Measure + - Class: rviz/SetInitialPose + Theta std deviation: 0.2617993950843811 + Topic: /initialpose + X std deviation: 0.5 + Y std deviation: 0.5 + - Class: rviz/SetGoal + Topic: /move_base_simple/goal + - Class: rviz/PublishPoint + Single click: true + Topic: /clicked_point + Value: true + Views: + Current: + Class: rviz/Orbit + Distance: 8.372665405273438 + Enable Stereo Rendering: + Stereo Eye Separation: 0.05999999865889549 + Stereo Focal Distance: 1 + Swap Stereo Eyes: false + Value: false + Field of View: 0.7853981852531433 + Focal Point: + X: 0.5306656956672668 + Y: -0.5836256742477417 + Z: -1.7025400400161743 + Focal Shape Fixed Size: true + Focal Shape Size: 0.05000000074505806 + Invert Z Axis: false + Name: Current View + Near Clip Distance: 0.009999999776482582 + Pitch: 0.4247995615005493 + Target Frame: + Yaw: 2.58538818359375 + Saved: ~ +Window Geometry: + Displays: + collapsed: false + Height: 594 + Hide Left Dock: false + Hide Right Dock: true + QMainWindow State: 000000ff00000000fd00000004000000000000016a000001b4fc0200000008fb0000001200530065006c0065006300740069006f006e00000001e10000009b0000005c00fffffffb0000001e0054006f006f006c002000500072006f007000650072007400690065007302000001ed000001df00000185000000a3fb000000120056006900650077007300200054006f006f02000001df000002110000018500000122fb000000200054006f006f006c002000500072006f0070006500720074006900650073003203000002880000011d000002210000017afb000000100044006900730070006c006100790073010000003d000001b4000000c900fffffffb0000002000730065006c0065006300740069006f006e00200062007500660066006500720200000138000000aa0000023a00000294fb00000014005700690064006500530074006500720065006f02000000e6000000d2000003ee0000030bfb0000000c004b0069006e0065006300740200000186000001060000030c00000261000000010000010f0000040efc0200000003fb0000001e0054006f006f006c002000500072006f00700065007200740069006500730100000041000000780000000000000000fb0000000a0056006900650077007300000000280000040e000000a400fffffffb0000001200530065006c0065006300740069006f006e010000025a000000b200000000000000000000000200000490000000a9fc0100000001fb0000000a00560069006500770073030000004e00000080000002e10000019700000003000005000000003efc0100000002fb0000000800540069006d0065010000000000000500000002eb00fffffffb0000000800540069006d0065010000000000000450000000000000000000000390000001b400000004000000040000000800000008fc0000000100000002000000010000000a0054006f006f006c00730100000000ffffffff0000000000000000 + Selection: + collapsed: false + Time: + collapsed: false + Tool Properties: + collapsed: false + Views: + collapsed: true + Width: 1280 + X: 2386 + Y: 252 diff --git a/grid_map_demos/src/SdfDemo.cpp b/grid_map_demos/src/SdfDemo.cpp new file mode 100644 index 000000000..0764ed6b8 --- /dev/null +++ b/grid_map_demos/src/SdfDemo.cpp @@ -0,0 +1,58 @@ +/* +* SdfDemo.cpp +* +* Created on: May 3, 2022 +* Author: Ruben Grandia +* Institute: ETH Zurich + */ + +#include "grid_map_demos/SdfDemo.hpp" + +#include + +#include +#include + +namespace grid_map_demos { + +SdfDemo::SdfDemo(ros::NodeHandle& nodeHandle, const std::string& mapTopic, std::string elevationLayer, const std::string& pointcloudTopic) + : elevationLayer_(std::move(elevationLayer)) { + pointcloudPublisher_ = nodeHandle.advertise(pointcloudTopic + "/full_sdf", 1); + freespacePublisher_ = nodeHandle.advertise(pointcloudTopic + "/free_space", 1); + occupiedPublisher_ = nodeHandle.advertise(pointcloudTopic + "/occupied_space", 1); + gridmapSubscriber_ = nodeHandle.subscribe(mapTopic, 1, &SdfDemo::callback, this); +} + +void SdfDemo::callback(const grid_map_msgs::GridMap& message) { + // Convert message to map. + grid_map::GridMap map; + std::vector layers{elevationLayer_}; + grid_map::GridMapRosConverter::fromMessage(message, map, layers, false, false); + auto& elevationData = map.get(elevationLayer_); + + // Inpaint if needed. + if (elevationData.hasNaN()) { + const float inpaint{elevationData.minCoeffOfFinites()}; + ROS_WARN("[SdfDemo] Map contains NaN values. Will apply inpainting with min value."); + elevationData = elevationData.unaryExpr([=](float v) { return std::isfinite(v)? v : inpaint; }); + } + + // Generate SDF. + const float heightMargin{0.1}; + const float minValue{elevationData.minCoeffOfFinites() - heightMargin}; + const float maxValue{elevationData.maxCoeffOfFinites() + heightMargin}; + grid_map::SignedDistanceField sdf(map, elevationLayer_, minValue, maxValue); + + // Extract as point clouds. + sensor_msgs::PointCloud2 pointCloud2Msg; + grid_map::GridMapRosConverter::toPointCloud(sdf, pointCloud2Msg); + pointcloudPublisher_.publish(pointCloud2Msg); + + grid_map::GridMapRosConverter::toPointCloud(sdf, pointCloud2Msg, 1, [](float sdfValue) { return sdfValue > 0.0; }); + freespacePublisher_.publish(pointCloud2Msg); + + grid_map::GridMapRosConverter::toPointCloud(sdf, pointCloud2Msg, 1, [](float sdfValue) { return sdfValue <= 0.0; }); + occupiedPublisher_.publish(pointCloud2Msg); +} + +} // namespace grid_map_demos \ No newline at end of file diff --git a/grid_map_demos/src/sdf_demo_node.cpp b/grid_map_demos/src/sdf_demo_node.cpp new file mode 100644 index 000000000..3c0c4f1d1 --- /dev/null +++ b/grid_map_demos/src/sdf_demo_node.cpp @@ -0,0 +1,33 @@ +/* +* sdf_demo_node.cpp +* +* Created on: May 3, 2022 +* Author: Ruben Grandia +* Institute: ETH Zurich +*/ + +#include + +#include + +#include "grid_map_demos/SdfDemo.hpp" + +int main(int argc, char** argv) +{ + ros::init(argc, argv, "grid_map_sdf_demo"); + ros::NodeHandle nodeHandle(""); + + std::string elevationLayer; + nodeHandle.getParam("elevation_layer", elevationLayer); + + std::string mapTopic; + nodeHandle.getParam("grid_map_topic", mapTopic); + + std::string pointcloudTopic; + nodeHandle.getParam("pointcloud_topic", pointcloudTopic); + + grid_map_demos::SdfDemo sdfDemo(nodeHandle, mapTopic, elevationLayer, pointcloudTopic); + + ros::spin(); + return 0; +} \ No newline at end of file diff --git a/grid_map_filters/CHANGELOG.rst b/grid_map_filters/CHANGELOG.rst index bb5a13f3a..e80862cf6 100644 --- a/grid_map_filters/CHANGELOG.rst +++ b/grid_map_filters/CHANGELOG.rst @@ -1,6 +1,10 @@ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Changelog for package grid_map_filters ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +1.7.0 (2022-03-17) +------------------ + 1.6.8 (2021-12-15) ------------------ * Improved the template definition structure: diff --git a/grid_map_loader/CHANGELOG.rst b/grid_map_loader/CHANGELOG.rst index eae5184c3..d3a32c10a 100644 --- a/grid_map_loader/CHANGELOG.rst +++ b/grid_map_loader/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_loader ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_msgs/CHANGELOG.rst b/grid_map_msgs/CHANGELOG.rst index bc32ef9be..db488ef2a 100644 --- a/grid_map_msgs/CHANGELOG.rst +++ b/grid_map_msgs/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_msgs ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_octomap/CHANGELOG.rst b/grid_map_octomap/CHANGELOG.rst index b9bcd1a7c..2a5d652dc 100644 --- a/grid_map_octomap/CHANGELOG.rst +++ b/grid_map_octomap/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_octomap ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_pcl/CHANGELOG.rst b/grid_map_pcl/CHANGELOG.rst index 533a43142..ab8d2914b 100644 --- a/grid_map_pcl/CHANGELOG.rst +++ b/grid_map_pcl/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_pcl ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_ros/CHANGELOG.rst b/grid_map_ros/CHANGELOG.rst index 3e418c43f..bd2babaff 100644 --- a/grid_map_ros/CHANGELOG.rst +++ b/grid_map_ros/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_ros ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_ros/CMakeLists.txt b/grid_map_ros/CMakeLists.txt index 96fb83f10..48e443180 100644 --- a/grid_map_ros/CMakeLists.txt +++ b/grid_map_ros/CMakeLists.txt @@ -11,6 +11,7 @@ find_package(catkin REQUIRED COMPONENTS grid_map_core grid_map_msgs grid_map_cv + grid_map_sdf sensor_msgs nav_msgs std_msgs @@ -43,6 +44,7 @@ catkin_package( grid_map_core grid_map_msgs grid_map_cv + grid_map_sdf sensor_msgs nav_msgs std_msgs diff --git a/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp b/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp index d5ddad1ff..05915bd96 100644 --- a/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp +++ b/grid_map_ros/include/grid_map_ros/GridMapRosConverter.hpp @@ -9,6 +9,7 @@ #pragma once #include +#include #include // STL @@ -106,6 +107,17 @@ class GridMapRosConverter const std::string& pointLayer, sensor_msgs::PointCloud2& pointCloud); + /*! + * Converts a grid map signed distance field object to a ROS PointCloud2 message. + * @param[in] gridMap the grid map object. + * @param[out] pointCloud the message to be populated. + * @param[in] decimation : specifies how many points are returned. 1: all points, 2: every second point, etc. + * @param[in] condition : specifies the condition on the distance value to add it to the pointcloud (default = any distance is added) + */ + static void toPointCloud( + const grid_map::SignedDistanceField& signedDistanceField, sensor_msgs::PointCloud2& pointCloud, size_t decimation = 1, + const std::function& condition = [](float) { return true; }); + /*! * Converts an occupancy grid message to a layer of a grid map. * @param[in] occupancyGrid the occupancy grid to be converted. diff --git a/grid_map_ros/package.xml b/grid_map_ros/package.xml index cc9e588db..12ca87f79 100644 --- a/grid_map_ros/package.xml +++ b/grid_map_ros/package.xml @@ -15,6 +15,7 @@ grid_map_core grid_map_msgs grid_map_cv + grid_map_sdf sensor_msgs nav_msgs std_msgs diff --git a/grid_map_ros/src/GridMapRosConverter.cpp b/grid_map_ros/src/GridMapRosConverter.cpp index 643a2f566..9db026b21 100644 --- a/grid_map_ros/src/GridMapRosConverter.cpp +++ b/grid_map_ros/src/GridMapRosConverter.cpp @@ -222,6 +222,64 @@ void GridMapRosConverter::toPointCloud(const grid_map::GridMap& gridMap, } } +void GridMapRosConverter::toPointCloud(const grid_map::SignedDistanceField& signedDistanceField, sensor_msgs::PointCloud2& pointCloud, + size_t decimation, const std::function& condition) { + pointCloud.header.stamp.fromNSec(signedDistanceField.getTime()); + pointCloud.header.frame_id = signedDistanceField.getFrameId(); + + // Fields: Store each point analogous to pcl::PointXYZI + const std::vector fieldNames{"x", "y", "z", "intensity"}; + pointCloud.fields.clear(); + pointCloud.fields.reserve(fieldNames.size()); + size_t offset = 0; + for (const auto& name : fieldNames) { + sensor_msgs::PointField pointField; + pointField.name = name; + pointField.count = 1; + pointField.datatype = sensor_msgs::PointField::FLOAT32; + pointField.offset = offset; + pointCloud.fields.push_back(pointField); + offset += pointField.count * sizeof(float); + } + + // Resize + const size_t pointCloudMaxSize{signedDistanceField.size()}; + pointCloud.height = 1; + pointCloud.width = pointCloudMaxSize; + pointCloud.point_step = offset; + pointCloud.row_step = pointCloud.width * pointCloud.point_step; + pointCloud.data.resize(pointCloud.height * pointCloud.row_step); + + // Fill data + sensor_msgs::PointCloud2Iterator iter_x(pointCloud, fieldNames[0]); + sensor_msgs::PointCloud2Iterator iter_y(pointCloud, fieldNames[1]); + sensor_msgs::PointCloud2Iterator iter_z(pointCloud, fieldNames[2]); + sensor_msgs::PointCloud2Iterator iter_i(pointCloud, fieldNames[3]); + + size_t addedPoints = 0; + signedDistanceField.filterPoints( + [&](const Position3& p, float sdfValue, const SignedDistanceField::Derivative3&) { + if (condition(sdfValue)) { + *iter_x = static_cast(p.x()); + *iter_y = static_cast(p.y()); + *iter_z = static_cast(p.z()); + *iter_i = sdfValue; + ++iter_x; + ++iter_y; + ++iter_z; + ++iter_i; + ++addedPoints; + } + }, + decimation); + + if (addedPoints != pointCloudMaxSize) { + pointCloud.width = addedPoints; + pointCloud.row_step = pointCloud.width * pointCloud.point_step; + pointCloud.data.resize(pointCloud.height * pointCloud.row_step); + } +} + bool GridMapRosConverter::fromOccupancyGrid(const nav_msgs::OccupancyGrid& occupancyGrid, const std::string& layer, grid_map::GridMap& gridMap) { diff --git a/grid_map_ros/test/GridMapRosTest.cpp b/grid_map_ros/test/GridMapRosTest.cpp index 8727610a1..c9da85940 100644 --- a/grid_map_ros/test/GridMapRosTest.cpp +++ b/grid_map_ros/test/GridMapRosTest.cpp @@ -236,3 +236,22 @@ TEST(ImageConversion, roundTripMONO16) EXPECT_TRUE((mapIn.getLength() == mapOut.getLength()).all()); EXPECT_TRUE((mapIn.getSize() == mapOut.getSize()).all()); } + +TEST(SdfConversion, toPointcloud) { + grid_map::GridMap map; + const std::string elevationLayer{"layer"}; + map.setGeometry(grid_map::Length(8.0, 5.0), 0.03, grid_map::Position(0.0, 0.0)); + map.add(elevationLayer, 1.0); + auto& elevationData = map.get(elevationLayer); + elevationData.setRandom(); + + // Create SDF + const float heightMargin{0.1}; + const float minValue{elevationData.minCoeffOfFinites() - heightMargin}; + const float maxValue{elevationData.maxCoeffOfFinites() + heightMargin}; + grid_map::SignedDistanceField sdf(map, elevationLayer, minValue, maxValue); + + // Extract as point clouds. + sensor_msgs::PointCloud2 pointCloud2Msg; + ASSERT_NO_THROW(grid_map::GridMapRosConverter::toPointCloud(sdf, pointCloud2Msg)); +} diff --git a/grid_map_rviz_plugin/CHANGELOG.rst b/grid_map_rviz_plugin/CHANGELOG.rst index d821d96bd..dd3c87de9 100644 --- a/grid_map_rviz_plugin/CHANGELOG.rst +++ b/grid_map_rviz_plugin/CHANGELOG.rst @@ -2,6 +2,9 @@ Changelog for package grid_map_rviz_plugin ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_sdf/CHANGELOG.rst b/grid_map_sdf/CHANGELOG.rst index a685bd101..bd9e5fde1 100644 --- a/grid_map_sdf/CHANGELOG.rst +++ b/grid_map_sdf/CHANGELOG.rst @@ -2,6 +2,11 @@ Changelog for package grid_map_sdf ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +1.7.0 (2022-03-17) +------------------ +* Release of new implementation to convert grid maps to signed distance fields. +* Contributors: Ruben Grandia + 1.6.4 (2020-12-04) ------------------ diff --git a/grid_map_sdf/CMakeLists.txt b/grid_map_sdf/CMakeLists.txt index 34b8369f7..88eda8145 100644 --- a/grid_map_sdf/CMakeLists.txt +++ b/grid_map_sdf/CMakeLists.txt @@ -8,7 +8,6 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON) ## Find catkin macros and libraries find_package(catkin REQUIRED COMPONENTS grid_map_core - pcl_ros ) ################################### @@ -27,7 +26,6 @@ catkin_package( ${PROJECT_NAME} CATKIN_DEPENDS grid_map_core - pcl_ros DEPENDS ) @@ -45,6 +43,7 @@ include_directories( ## Declare a cpp library add_library(${PROJECT_NAME} + src/SignedDistance2d.cpp src/SignedDistanceField.cpp ) @@ -82,11 +81,16 @@ if(CATKIN_ENABLE_TESTING) ## Add gtest based cpp test target and link libraries catkin_add_gtest(${PROJECT_NAME}-test - test/SignedDistanceFieldTest.cpp + test/test3dLookup.cpp test/test_grid_map_sdf.cpp + test/testDerivatives.cpp + test/testPixelBorderDistance.cpp + test/testSignedDistance2d.cpp + test/testSignedDistance3d.cpp ) target_include_directories(${PROJECT_NAME}-test PRIVATE include + test/include ) target_include_directories(${PROJECT_NAME}-test SYSTEM PUBLIC ${catkin_INCLUDE_DIRS} diff --git a/grid_map_sdf/doc/anymal_sdf_demo.gif b/grid_map_sdf/doc/anymal_sdf_demo.gif new file mode 100644 index 0000000000000000000000000000000000000000..1e3fe5d844d0c2df59b36b1a35c30ea4fab482e6 GIT binary patch literal 843793 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
%KHge&=P2vc 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

w+~jYQcWU@j!bF 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