Easy Navigation
Loading...
Searching...
No Matches
safety_module_tests.cpp File Reference

The safety module of easynav_system, on its own: configuration fingerprint, parameter freezer and safety supervisor. More...

#include <sys/resource.h>
#include <unistd.h>
#include <algorithm>
#include <chrono>
#include <cmath>
#include <cstdlib>
#include <filesystem>
#include <fstream>
#include <iterator>
#include <limits>
#include <memory>
#include <optional>
#include <string>
#include <utility>
#include <vector>
#include "gtest/gtest.h"
#include "rclcpp/rclcpp.hpp"
#include "rclcpp_lifecycle/lifecycle_node.hpp"
#include "nav_msgs/msg/odometry.hpp"
#include "std_msgs/msg/string.hpp"
#include "diagnostic_msgs/msg/diagnostic_status.hpp"
#include "easynav_interfaces/msg/heartbeat.hpp"
#include "easynav_interfaces/msg/safety_status.hpp"
#include "easynav_controller/ControllerNode.hpp"
#include "easynav_core/SafetyChannel.hpp"
#include "easynav_core/VelocityCommand.hpp"
#include "easynav_system/RealTime.hpp"
#include "easynav_system/safety/ConfigurationFingerprint.hpp"
#include "easynav_system/safety/ParameterFreezer.hpp"
#include "easynav_system/safety/SafetySupervisor.hpp"
Include dependency graph for safety_module_tests.cpp:

Classes

class  SafetyModuleTest

Typedefs

using Nodes
 EasyNav nodes by name.

Functions

 TEST_F (SafetyModuleTest, AnAtomicSetWithOneFrozenChangeIsRejectedWhole)
 TEST_F (SafetyModuleTest, AnOldRobotPoseInhibitsMotionInSafetyMode)
 TEST_F (SafetyModuleTest, AnOldRobotPoseIsAnErrorOutsideSafetyModeButDoesNotStopTheRobot)
 TEST_F (SafetyModuleTest, AnUninitializedParameterChangesTheDump)
 TEST_F (SafetyModuleTest, DifferentConfigurationsNeverGiveTheSameDump)
 TEST_F (SafetyModuleTest, DisablingTheSafetyStatusOnReconfigureLiftsItsRestrictions)
 TEST_F (SafetyModuleTest, DumpDoesNotDependOnDeclarationOrder)
 TEST_F (SafetyModuleTest, DumpFileNameIncludesTheNamespace)
 TEST_F (SafetyModuleTest, DumpIsReadable)
 TEST_F (SafetyModuleTest, DumpListsEveryParameterSortedByNodeAndName)
 TEST_F (SafetyModuleTest, DumpListsUninitializedParametersWithoutThrowing)
 TEST_F (SafetyModuleTest, FreezingToleratesUninitializedParameters)
 TEST_F (SafetyModuleTest, FrozenParametersCannotChange)
 TEST_F (SafetyModuleTest, HeartbeatAndRtMonitorParametersAreChecked)
 TEST_F (SafetyModuleTest, HeartbeatIsPublishedAtItsPeriodFromTheRtCycle)
 TEST_F (SafetyModuleTest, LoadedPluginsComeFromTheTypesParameters)
 TEST_F (SafetyModuleTest, LoadedPluginsSkipAnUninitializedTypesParameter)
 TEST_F (SafetyModuleTest, LockMemoryFailsToConfigureWithAFiniteMemlockLimit)
 TEST_F (SafetyModuleTest, LogDirectoryFollowsRosLogDir)
 TEST_F (SafetyModuleTest, MaxPoseAgeIsChecked)
 TEST_F (SafetyModuleTest, MemoryLockIsRequestedIndependentlyOfTheSafetyMode)
 TEST_F (SafetyModuleTest, NewParametersOnlyWhileConfiguringInSafetyMode)
 TEST_F (SafetyModuleTest, NoHeartbeatIfItsPeriodIsZero)
 TEST_F (SafetyModuleTest, NoRobotPoseOrNotLocalizedYetOrOffIsNotChecked)
 TEST_F (SafetyModuleTest, RtDiagnosticFollowsTheMonitorOutsideSafetyMode)
 TEST_F (SafetyModuleTest, SafetyModeFailsToConfigureWithoutRealTimeScheduling)
 TEST_F (SafetyModuleTest, SafetyStatusTimeoutIsChecked)
 TEST_F (SafetyModuleTest, SaveDumpWritesOnceAndCreatesTheDirectories)
 TEST_F (SafetyModuleTest, Sha256MatchesKnownVectors)
 TEST_F (SafetyModuleTest, SupervisorChecksTheControllerAgainstTheSafetyLimits)
 TEST_F (SafetyModuleTest, SupervisorChecksTheSafetyLimits)
 TEST_F (SafetyModuleTest, SupervisorFingerprintsAndFreezesOnlyInSafetyMode)
 TEST_F (SafetyModuleTest, SupervisorRequiresTheCommandGuardInSafetyMode)
 TEST_F (SafetyModuleTest, SupervisorSavesAndPublishesTheConfiguration)
 TEST_F (SafetyModuleTest, TheHeartbeatCarriesTheRtStatus)
 TEST_F (SafetyModuleTest, TheHeartbeatIsRequiredInSafetyMode)
 TEST_F (SafetyModuleTest, TheRobotPoseAgeIsReportedOnlyOnChanges)
 TEST_F (SafetyModuleTest, TheSafetyChannelStateIsWrittenEveryRtCycleAndReportedOnChanges)
 TEST_F (SafetyModuleTest, TheSafetyStatusIsRequiredInSafetyMode)
 TEST_F (SafetyModuleTest, TooManyLateRtCyclesStopEasyNavInSafetyMode)
 TEST_F (SafetyModuleTest, WithoutSafetyStatusThereIsNoRestriction)

Detailed Description

The safety module of easynav_system, on its own: configuration fingerprint, parameter freezer and safety supervisor.

Typedef Documentation

◆ Nodes

using Nodes

EasyNav nodes by name.

Function Documentation

◆ TEST_F() [1/41]

TEST_F ( SafetyModuleTest ,
AnAtomicSetWithOneFrozenChangeIsRejectedWhole  )

◆ TEST_F() [2/41]

TEST_F ( SafetyModuleTest ,
AnOldRobotPoseInhibitsMotionInSafetyMode  )

◆ TEST_F() [3/41]

TEST_F ( SafetyModuleTest ,
AnOldRobotPoseIsAnErrorOutsideSafetyModeButDoesNotStopTheRobot  )

◆ TEST_F() [4/41]

TEST_F ( SafetyModuleTest ,
AnUninitializedParameterChangesTheDump  )

◆ TEST_F() [5/41]

TEST_F ( SafetyModuleTest ,
DifferentConfigurationsNeverGiveTheSameDump  )

◆ TEST_F() [6/41]

TEST_F ( SafetyModuleTest ,
DisablingTheSafetyStatusOnReconfigureLiftsItsRestrictions  )

◆ TEST_F() [7/41]

TEST_F ( SafetyModuleTest ,
DumpDoesNotDependOnDeclarationOrder  )

◆ TEST_F() [8/41]

TEST_F ( SafetyModuleTest ,
DumpFileNameIncludesTheNamespace  )

◆ TEST_F() [9/41]

TEST_F ( SafetyModuleTest ,
DumpIsReadable  )

◆ TEST_F() [10/41]

TEST_F ( SafetyModuleTest ,
DumpListsEveryParameterSortedByNodeAndName  )

◆ TEST_F() [11/41]

TEST_F ( SafetyModuleTest ,
DumpListsUninitializedParametersWithoutThrowing  )

◆ TEST_F() [12/41]

TEST_F ( SafetyModuleTest ,
FreezingToleratesUninitializedParameters  )

◆ TEST_F() [13/41]

TEST_F ( SafetyModuleTest ,
FrozenParametersCannotChange  )

◆ TEST_F() [14/41]

TEST_F ( SafetyModuleTest ,
HeartbeatAndRtMonitorParametersAreChecked  )

◆ TEST_F() [15/41]

TEST_F ( SafetyModuleTest ,
HeartbeatIsPublishedAtItsPeriodFromTheRtCycle  )

◆ TEST_F() [16/41]

TEST_F ( SafetyModuleTest ,
LoadedPluginsComeFromTheTypesParameters  )

◆ TEST_F() [17/41]

TEST_F ( SafetyModuleTest ,
LoadedPluginsSkipAnUninitializedTypesParameter  )

◆ TEST_F() [18/41]

TEST_F ( SafetyModuleTest ,
LockMemoryFailsToConfigureWithAFiniteMemlockLimit  )

◆ TEST_F() [19/41]

TEST_F ( SafetyModuleTest ,
LogDirectoryFollowsRosLogDir  )

◆ TEST_F() [20/41]

TEST_F ( SafetyModuleTest ,
MaxPoseAgeIsChecked  )

◆ TEST_F() [21/41]

TEST_F ( SafetyModuleTest ,
MemoryLockIsRequestedIndependentlyOfTheSafetyMode  )

◆ TEST_F() [22/41]

TEST_F ( SafetyModuleTest ,
NewParametersOnlyWhileConfiguringInSafetyMode  )

◆ TEST_F() [23/41]

TEST_F ( SafetyModuleTest ,
NoHeartbeatIfItsPeriodIsZero  )

◆ TEST_F() [24/41]

TEST_F ( SafetyModuleTest ,
NoRobotPoseOrNotLocalizedYetOrOffIsNotChecked  )

◆ TEST_F() [25/41]

TEST_F ( SafetyModuleTest ,
RtDiagnosticFollowsTheMonitorOutsideSafetyMode  )

◆ TEST_F() [26/41]

TEST_F ( SafetyModuleTest ,
SafetyModeFailsToConfigureWithoutRealTimeScheduling  )

◆ TEST_F() [27/41]

TEST_F ( SafetyModuleTest ,
SafetyStatusTimeoutIsChecked  )

◆ TEST_F() [28/41]

TEST_F ( SafetyModuleTest ,
SaveDumpWritesOnceAndCreatesTheDirectories  )

◆ TEST_F() [29/41]

TEST_F ( SafetyModuleTest ,
Sha256MatchesKnownVectors  )

◆ TEST_F() [30/41]

TEST_F ( SafetyModuleTest ,
SupervisorChecksTheControllerAgainstTheSafetyLimits  )

◆ TEST_F() [31/41]

TEST_F ( SafetyModuleTest ,
SupervisorChecksTheSafetyLimits  )

◆ TEST_F() [32/41]

TEST_F ( SafetyModuleTest ,
SupervisorFingerprintsAndFreezesOnlyInSafetyMode  )

◆ TEST_F() [33/41]

TEST_F ( SafetyModuleTest ,
SupervisorRequiresTheCommandGuardInSafetyMode  )

◆ TEST_F() [34/41]

TEST_F ( SafetyModuleTest ,
SupervisorSavesAndPublishesTheConfiguration  )

◆ TEST_F() [35/41]

TEST_F ( SafetyModuleTest ,
TheHeartbeatCarriesTheRtStatus  )

◆ TEST_F() [36/41]

TEST_F ( SafetyModuleTest ,
TheHeartbeatIsRequiredInSafetyMode  )

◆ TEST_F() [37/41]

TEST_F ( SafetyModuleTest ,
TheRobotPoseAgeIsReportedOnlyOnChanges  )

◆ TEST_F() [38/41]

TEST_F ( SafetyModuleTest ,
TheSafetyChannelStateIsWrittenEveryRtCycleAndReportedOnChanges  )

◆ TEST_F() [39/41]

TEST_F ( SafetyModuleTest ,
TheSafetyStatusIsRequiredInSafetyMode  )

◆ TEST_F() [40/41]

TEST_F ( SafetyModuleTest ,
TooManyLateRtCyclesStopEasyNavInSafetyMode  )

◆ TEST_F() [41/41]

TEST_F ( SafetyModuleTest ,
WithoutSafetyStatusThereIsNoRestriction  )