diff --git a/launch/__pycache__/echo_launch.cpython-38.pyc b/launch/__pycache__/echo_launch.cpython-38.pyc
new file mode 100644
index 0000000000000000000000000000000000000000..c2a1db3b5772c1008498b1774568167649e36d10
Binary files /dev/null and b/launch/__pycache__/echo_launch.cpython-38.pyc differ
diff --git a/launch/echo_launch.py b/launch/echo_launch.py
new file mode 100644
index 0000000000000000000000000000000000000000..b8e9bf452d5872409a837748fa284e13af2d8442
--- /dev/null
+++ b/launch/echo_launch.py
@@ -0,0 +1,62 @@
+from launch import LaunchDescription
+from launch_ros.actions import Node
+from launch.substitutions import LaunchConfiguration
+from launch.actions import DeclareLaunchArgument
+
+
+def generate_launch_description():
+    return LaunchDescription([
+        DeclareLaunchArgument(
+            'frame',
+            default_value='object',
+            description='Name of the static frame'
+        ),
+        DeclareLaunchArgument(
+            'position',
+            default_value="0. 0. 1.",
+            description='Position as x y z'
+        ),
+        DeclareLaunchArgument(
+            'quaternion',
+            default_value='0. 0. 0. 1.',
+            description='Orientation as quaternion x y z w'),
+
+
+        Node(
+            package='rq_hardware',
+            namespace='rq',
+            executable='echo_service',
+            name='hardware_interface'
+        ),
+        Node(
+            package='rq_trajectory',
+            namespace='rq',
+            executable='echo_interference_service',
+            name='trajectory'
+        ),
+        Node(
+            package='rq_reconstruction',
+            namespace='rq',
+            executable='echo_service',
+            name='reconstruction'
+        ),
+        Node(
+            package='rq_ddetection',
+            namespace='rq',
+            executable='echo_service',
+            name='defect_detection'
+        ),
+        Node(
+            package='rq_controller',
+            namespace='rq',
+            executable='tf_static_broadcaster',
+            name='object_broadcaster',
+            parameters=[
+                {'frame': LaunchConfiguration('frame')},
+                {'position': LaunchConfiguration('position')},
+                {'quaternion': LaunchConfiguration('quaternion')},
+            ]
+        ),
+        
+        ]
+    )
\ No newline at end of file
diff --git a/src/rq_ddetection b/src/rq_ddetection
index 2d92247fd6cccd2fd450be5996be478b760b969e..40a93a9d91b06edcec853ca674c83919649fc63c 160000
--- a/src/rq_ddetection
+++ b/src/rq_ddetection
@@ -1 +1 @@
-Subproject commit 2d92247fd6cccd2fd450be5996be478b760b969e
+Subproject commit 40a93a9d91b06edcec853ca674c83919649fc63c
diff --git a/src/rq_hardware b/src/rq_hardware
index 1bd4aed8711671fda9fbdc384bfb2f7f3f4480c3..9e1a95b55ff2898410e3c39a844590041640b01a 160000
--- a/src/rq_hardware
+++ b/src/rq_hardware
@@ -1 +1 @@
-Subproject commit 1bd4aed8711671fda9fbdc384bfb2f7f3f4480c3
+Subproject commit 9e1a95b55ff2898410e3c39a844590041640b01a
diff --git a/src/rq_reconstruction b/src/rq_reconstruction
index a356ccbc205b69af3ef268e2a382bc81d065ce86..03045d66fa05a485bc22f31825d2b05f6de6f399 160000
--- a/src/rq_reconstruction
+++ b/src/rq_reconstruction
@@ -1 +1 @@
-Subproject commit a356ccbc205b69af3ef268e2a382bc81d065ce86
+Subproject commit 03045d66fa05a485bc22f31825d2b05f6de6f399
diff --git a/src/rq_trajectory b/src/rq_trajectory
index 58b224a7530c5c3bdea1ebffad29e30be59cee5f..66bfea99c553f6e945d5eac4bb76fe0222bc23b4 160000
--- a/src/rq_trajectory
+++ b/src/rq_trajectory
@@ -1 +1 @@
-Subproject commit 58b224a7530c5c3bdea1ebffad29e30be59cee5f
+Subproject commit 66bfea99c553f6e945d5eac4bb76fe0222bc23b4