diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
index d8f53d388acb7b934329c954939204274642b107..0fe08b1dc89b46bf0943690064c764843979a1b4 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Matrix.cpp
@@ -98,7 +98,7 @@ namespace armarx::aron::codegenerator::cpp::generator
         {
             block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "::Identity();");
         }
-        else if (type.getDefaultValue().empty() || type.getDefaultValue() == aron::type::matrix::default_value::DEFAULT || type.getDefaultValue() == aron::type::matrix::default_value::ZEROS)
+        else if (type.getDefaultValue() == aron::type::matrix::default_value::DEFAULT || type.getDefaultValue() == aron::type::matrix::default_value::ZEROS)
         {
             block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "::Zero();");
         }
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
index 365b3c8824d6c38b60ccde7c4381aa41bb0945b7..150c0be305a44835f80da15d078f63170c3676e6 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.cpp
@@ -62,13 +62,13 @@ namespace armarx::aron::codegenerator::cpp::generator
     {
         if (type.getDefaultValue() == aron::type::quaternion::default_value::DEFAULT)
         {
-            return {{}, false};
+            return {{{name, getInstantiatedCppTypename() + "::Identity())"}}, true};
         }
-        if (type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS)
+        else if (type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS)
         {
             return {{{name, getInstantiatedCppTypename() + "(0, 0, 0, 0)"}}, true};
         }
-        if (type.getDefaultValue() == aron::type::quaternion::default_value::ONES)
+        else if (type.getDefaultValue() == aron::type::quaternion::default_value::ONES)
         {
             return {{{name, getInstantiatedCppTypename() + "(1, 1, 1, 1)"}}, true};
         }
@@ -80,6 +80,31 @@ namespace armarx::aron::codegenerator::cpp::generator
         }
     }
 
+    CppBlockPtr
+    Quaternion::getResetHardBlock(const std::string& cppAccessor) const
+    {
+        CppBlockPtr block_if_data = std::make_shared<CppBlock>();
+
+        if (type.getDefaultValue() == aron::type::quaternion::default_value::DEFAULT)
+        {
+            block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "::Identity();");
+        }
+        else if (type.getDefaultValue() == aron::type::quaternion::default_value::ZEROS)
+        {
+            block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "(0, 0, 0, 0);");
+        }
+        else if (type.getDefaultValue() == aron::type::quaternion::default_value::ONES)
+        {
+            block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "(1, 1, 1, 1);");
+        }
+        else if (not type.getDefaultValue().empty())
+        {
+            // try to parse num. We ensure from typereader that defaultValue is valid number
+            block_if_data->addLine(cppAccessor + " = " + getInstantiatedCppTypename() + "(" + type.getDefaultValue() + ");");
+        }
+        return resolveMaybeResetHardBlock(block_if_data, cppAccessor);
+    }
+
     CppBlockPtr
     Quaternion::getResetSoftBlock(const std::string& cppAccessor) const
     {
diff --git a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
index 4fd41b7dbd382c0231337ea30ba661f9b1e9eab3..70f8e890e8ed9f38ed75074fab8d7113dcec1d97 100644
--- a/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
+++ b/source/RobotAPI/libraries/aron/codegeneration/codegenerator/codewriter/cpp/generator/ndarray/Quaternion.h
@@ -42,6 +42,7 @@ namespace armarx::aron::codegenerator::cpp::generator
         std::vector<std::string> getRequiredIncludes() const final;
         std::pair<std::vector<std::pair<std::string, std::string>>, bool>
         getCtorInitializers(const std::string&) const final;
+        CppBlockPtr getResetHardBlock(const std::string& cppAccessor) const final;
         CppBlockPtr getResetSoftBlock(const std::string& cppAccessor) const final;
         CppBlockPtr getWriteTypeBlock(const std::string& typeAccessor,
                                       const std::string& cppAccessor,