diff --git a/source/armarx/navigation/components/Navigator/Navigator.cpp b/source/armarx/navigation/components/Navigator/Navigator.cpp
index 74292c5b68c1f503c246e1c2a3ec2880076204da..9660789cae1083ba1725e8ef4245d8b9c3b55e1c 100644
--- a/source/armarx/navigation/components/Navigator/Navigator.cpp
+++ b/source/armarx/navigation/components/Navigator/Navigator.cpp
@@ -145,10 +145,7 @@ namespace armarx::navigation::components
 
         // initialize scene
         ARMARX_TRACE;
-        scene.robot = getRobot();
-        scene.staticScene = staticScene();
-        scene.graph = core::SceneGraph{.subgraphs = graphReader.graphs()};
-
+        updateContext();
 
         executor = server::PlatformUnitExecutor(platformUnit);
 
@@ -215,9 +212,17 @@ namespace armarx::navigation::components
         ARMARX_TRACE;
 
         scene.robot = getRobot();
-        scene.staticScene = staticScene();
+
+        {
+            std::lock_guard g{scene.staticSceneMtx};
+            scene.staticScene = staticScene();
+        }
+
         // TODO dynamic scene
-        scene.graph = core::SceneGraph{.subgraphs = graphReader.graphs()};
+        {
+            std::lock_guard g{scene.graphMtx};
+            scene.graph = core::SceneGraph{.subgraphs = graphReader.graphs()};
+        }
     }
 
     std::string
diff --git a/source/armarx/navigation/core/types.h b/source/armarx/navigation/core/types.h
index d065bcebaf03ddded87eb421a4323fb70bf7fd07..464966dfa62ff83484c00c7f3b88288633f6501e 100644
--- a/source/armarx/navigation/core/types.h
+++ b/source/armarx/navigation/core/types.h
@@ -78,7 +78,10 @@ namespace armarx::navigation::core
 
     struct Scene
     {
+        mutable std::mutex staticSceneMtx;
         std::optional<core::StaticScene> staticScene = std::nullopt;
+        
+        mutable std::mutex dynamicSceneMtx;
         std::optional<core::DynamicScene> dynamicScene = std::nullopt;
         // TopologicMapPtr topologicMap;
         VirtualRobot::RobotPtr robot;
@@ -86,6 +89,7 @@ namespace armarx::navigation::core
         mutable std::mutex platformVelocityMtx;
         std::optional<core::Twist> platformVelocity;
 
+        mutable std::mutex graphMtx;
         std::optional<core::SceneGraph> graph;
 
         TimeServerInterface* timeServer;
diff --git a/source/armarx/navigation/global_planning/AStar.cpp b/source/armarx/navigation/global_planning/AStar.cpp
index 9180d28e48428d7ed6ec526ae95626925b1556ef..baa0409c9c865ad59c59932714406ed21f435c97 100644
--- a/source/armarx/navigation/global_planning/AStar.cpp
+++ b/source/armarx/navigation/global_planning/AStar.cpp
@@ -1,6 +1,7 @@
 #include "AStar.h"
 
 #include <algorithm>
+#include <mutex>
 #include <optional>
 
 #include <Eigen/Geometry>
@@ -112,6 +113,7 @@ namespace armarx::navigation::glob_plan
     {
         ARMARX_TRACE;
 
+        std::lock_guard g{scene.staticSceneMtx};
         algorithm::astar::AStarPlanner planner(scene.robot, scene.staticScene->objects, 100.F);
         // planner.setRobotColModel("Platform-colmodel");