diff --git a/launch.py b/launch.py
new file mode 100644
index 0000000000000000000000000000000000000000..7cd3a6f24b9dc42ea49f99df227c9e72b800ff49
--- /dev/null
+++ b/launch.py
@@ -0,0 +1,27 @@
+from launch import LaunchDescription
+from launch_ros.actions import Node
+
+def generate_launch_description():
+    return LaunchDescription([
+        Node(
+            package='my_double_integrator',
+            executable='double_integrator',
+            name='double_integrator_sim',
+            output='screen',
+            parameters=[{'update_rate': 50.0}]
+        ),
+        Node(
+            package='my_double_integrator',
+            executable='controller',
+            name='controller',
+            output='screen',
+            parameters=[{'kp': 1.0}]
+        ),
+        Node(
+            package='my_double_integrator',
+            executable='reference_position_generator',
+            name='reference_position_gen',
+            output='screen',
+            parameters=[{'rate': 1.0, 'amplitude': 1.0}]
+        ),
+    ])
diff --git a/setup.py b/setup.py
index 481b0baba03ed518b04f44d5d69c80c2fe1e2cf9..497beb30c725a8c89cc025da986a28e6d0bc5409 100644
--- a/setup.py
+++ b/setup.py
@@ -9,17 +9,20 @@ setup(
     data_files=[
         ('share/ament_index/resource_index/packages',
             ['resource/' + package_name]),
-        ('share/' + package_name, ['package.xml']),
+        ('share/' + package_name, ['package.xml', 'launch.py']),
     ],
     install_requires=['setuptools'],
     zip_safe=True,
     maintainer='silas',
     maintainer_email='silas@todo.todo',
-    description='TODO: Package description',
+    description='A double integrator simulation with ROS2 nodes',
     license='Apache-2.0',
     tests_require=['pytest'],
     entry_points={
         'console_scripts': [
+            'double_integrator = my_double_integrator.double_integrator:main',
+            'controller = my_double_integrator.controller:main',
+            'reference_position_generator = my_double_integrator.reference_position_generator:main',
         ],
     },
 )