diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000000000000000000000000000000000000..13566b81b018ad684f3a35fee301741b2734c8f4
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..105ce2da2d6447d11dfe32bfb846c3d5b199fc99
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+<component name="InspectionProjectProfileManager">
+  <settings>
+    <option name="USE_PROJECT_PROFILE" value="false" />
+    <version value="1.0" />
+  </settings>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..d1e22ecb89619a9c2dcf51a28d891a196d2462a0
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8" project-jdk-type="Python SDK" />
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1a84fd2d494c8a0f4e685265fcdcbfd3d09c609d
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/ros2_project.iml" filepath="$PROJECT_DIR$/.idea/ros2_project.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/ros2_project.iml b/.idea/ros2_project.iml
new file mode 100644
index 0000000000000000000000000000000000000000..68a356664d033f1eadb7bbdb60f24d922e313b8a
--- /dev/null
+++ b/.idea/ros2_project.iml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module type="PYTHON_MODULE" version="4">
+  <component name="NewModuleRootManager">
+    <content url="file://$MODULE_DIR$" />
+    <orderEntry type="inheritedJdk" />
+    <orderEntry type="sourceFolder" forTests="false" />
+  </component>
+  <component name="TestRunnerService">
+    <option name="PROJECT_TEST_RUNNER" value="py.test" />
+  </component>
+</module>
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000000000000000000000000000000000000..35eb1ddfbbc029bcab630581847471d7f238ec53
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="VcsDirectoryMappings">
+    <mapping directory="" vcs="Git" />
+  </component>
+</project>
\ No newline at end of file
diff --git a/tb3_challenge1.py b/tb3_challenge1.py
new file mode 100644
index 0000000000000000000000000000000000000000..274f0bce87ab303933fd1aa9c9bc2f38d4ff3829
--- /dev/null
+++ b/tb3_challenge1.py
@@ -0,0 +1,74 @@
+import rclpy  # ROS client library
+from rclpy.node import Node
+from rclpy.qos import qos_profile_sensor_data
+
+from sensor_msgs.msg import LaserScan
+from geometry_msgs.msg import Twist
+
+import sys
+
+
+class Tb3(Node):
+    def __init__(self):
+        super().__init__('tb3')
+
+        self.cmd_vel_pub = self.create_publisher(
+            Twist,  # message type
+            'cmd_vel',  # topic name
+            1)  # history depth
+
+        self.scan_sub = self.create_subscription(
+            LaserScan,
+            'scan',
+            self.scan_callback,  # function to run upon message arrival
+            qos_profile_sensor_data)  # allows packet loss
+
+        self.ang_vel_percent = 0
+        self.lin_vel_percent = 0
+        self.safe_distance = 0.2
+
+    def vel(self, lin_vel_percent, ang_vel_percent=0):
+        """ publishes linear and angular velocities in percent
+        """
+        # for TB3 Waffle
+        MAX_LIN_VEL = 0.26  # m/s
+        MAX_ANG_VEL = 1.82  # rad/s
+
+        cmd_vel_msg = Twist()
+        cmd_vel_msg.linear.x = MAX_LIN_VEL * lin_vel_percent / 100
+        cmd_vel_msg.angular.z = MAX_ANG_VEL * ang_vel_percent / 100
+
+        self.cmd_vel_pub.publish(cmd_vel_msg)
+        self.ang_vel_percent = ang_vel_percent
+        self.lin_vel_percent = lin_vel_percent
+
+    def scan_callback(self, msg):
+        """ is run whenever a LaserScan msg is received
+        """
+
+        if msg.ranges[0] > self.safe_distance:
+            self.vel(100, 0)
+        else:
+            self.vel(0, 0)
+            print("Wall found! Stopping..")
+            sys.exit()
+
+
+def main(args=None):
+    rclpy.init(args=args)
+
+    tb3 = Tb3()
+    print('waiting for messages...')
+
+    try:
+        rclpy.spin(tb3)  # Execute tb3 node
+        # Blocks until the executor (spin) cannot work
+    except KeyboardInterrupt:
+        pass
+
+    tb3.destroy_node()
+    rclpy.shutdown()
+
+
+if __name__ == '__main__':
+    main()
\ No newline at end of file
diff --git a/tb3_challenge2.py b/tb3_challenge2.py
new file mode 100644
index 0000000000000000000000000000000000000000..c22485a77167a551a00113d202da3a8da6b4ccf2
--- /dev/null
+++ b/tb3_challenge2.py
@@ -0,0 +1,88 @@
+import rclpy  # ROS client library
+from rclpy.node import Node
+from rclpy.qos import qos_profile_sensor_data
+
+from sensor_msgs.msg import LaserScan
+from geometry_msgs.msg import Twist
+
+import sys
+from time import sleep
+
+
+class Tb3(Node):
+    def __init__(self):
+        super().__init__('tb3')
+
+        self.cmd_vel_pub = self.create_publisher(
+                Twist,      # message type
+                'cmd_vel',  # topic name
+                1)          # history depth
+
+        self.scan_sub = self.create_subscription(
+                LaserScan,
+                'scan',
+                self.scan_callback,  # function to run upon message arrival
+                qos_profile_sensor_data)  # allows packet loss
+
+        self.ang_vel_percent = 0
+        self.lin_vel_percent = 0
+        self.safe_distance = 0.4
+        self.drive_allowed = True
+        self.turn_allowed = False
+
+    def vel(self, lin_vel_percent, ang_vel_percent=0):
+        """ publishes linear and angular velocities in percent
+        """
+        # for TB3 Waffle
+        MAX_LIN_VEL = 0.26  # m/s
+        MAX_ANG_VEL = 1.82  # rad/s
+
+        cmd_vel_msg = Twist()
+        cmd_vel_msg.linear.x = MAX_LIN_VEL * lin_vel_percent / 100
+        cmd_vel_msg.angular.z = MAX_ANG_VEL * ang_vel_percent / 100
+
+        self.cmd_vel_pub.publish(cmd_vel_msg)
+        self.ang_vel_percent = ang_vel_percent
+        self.lin_vel_percent = lin_vel_percent
+
+    def scan_callback(self, msg):
+        """ is run whenever a LaserScan msg is received
+        """
+        if self.drive_allowed:
+            if msg.ranges[0] > self.safe_distance:
+                self.vel(80, 0)
+            else:
+                if msg.intensities[0] == 2.0 and not self.turn_allowed:
+                    self.vel(0, 0)
+                    print("Red wall found! \nTurning...")
+                    self.vel(0, 85)
+                    sleep(1)
+                    self.vel(0, 0)
+                    self.turn_allowed = True
+                    pass
+                elif msg.intensities[0] != 2.0:
+                    print("Wall found!")
+                    print("Stopping..")
+                    self.vel(0, 0)
+                    self.drive_allowed = False
+                    sys.exit()
+
+
+def main(args=None):
+    rclpy.init(args=args)
+
+    tb3 = Tb3()
+    print('waiting for messages...')
+
+    try:
+        rclpy.spin(tb3)  # Execute tb3 node
+        # Blocks until the executor (spin) cannot work
+    except KeyboardInterrupt:
+        pass
+
+    tb3.destroy_node()
+    rclpy.shutdown()
+
+
+if __name__ == '__main__':
+    main()
\ No newline at end of file
diff --git a/tb3_challenge4.py b/tb3_challenge4.py
index beabfcf86c6418b5878d77a822ce74902c76d6a1..82908b0d763f096764259993cdf09c562e7a9bf4 100644
--- a/tb3_challenge4.py
+++ b/tb3_challenge4.py
@@ -5,10 +5,7 @@ from rclpy.qos import qos_profile_sensor_data
 from sensor_msgs.msg import LaserScan
 from geometry_msgs.msg import Twist
 
-import time
-
-from datetime import datetime
-from datetime import timedelta
+from time import sleep, time
 
 
 class Tb3(Node):
@@ -16,15 +13,15 @@ class Tb3(Node):
         super().__init__('tb3')
 
         self.cmd_vel_pub = self.create_publisher(
-                Twist,      # message type
-                'cmd_vel',  # topic name
-                1)          # history depth
+            Twist,  # message type
+            'cmd_vel',  # topic name
+            1)  # history depth
 
         self.scan_sub = self.create_subscription(
-                LaserScan,
-                'scan',
-                self.scan_callback,  # function to run upon message arrival
-                qos_profile_sensor_data)  # allows packet loss
+            LaserScan,
+            'scan',
+            self.scan_callback,  # function to run upon message arrival
+            qos_profile_sensor_data)  # allows packet loss
 
         self.ang_vel_percent = 0
         self.lin_vel_percent = 0
@@ -32,7 +29,7 @@ class Tb3(Node):
         self.turn_allowed = False
         self.stop = False
         self.timestamp = 0
-    
+
     def vel(self, lin_vel_percent, ang_vel_percent=0):
         """ publishes linear and angular velocities in percent
         """
@@ -49,33 +46,62 @@ class Tb3(Node):
         self.lin_vel_percent = lin_vel_percent
 
     def drive(self, msg):
+        front = msg.ranges[0]
+        left = msg.ranges[90]
+        right = msg.ranges[-90]
+        rear = msg.ranges[180]
+        left_area = msg.ranges[330:360]
+        right_area = msg.ranges[0:30]
+        front_area = left_area + right_area
+
         if not self.stop:
             if not self.turn_allowed:
-                if msg.ranges[0] > self.safe_distance or msg.ranges[0] == 0.0:
-                    print(msg.intensities[0])
-                    self.vel(50, 0)
+                for distance in front_area:
+                    if distance > self.safe_distance or distance == 0.0:
+                        self.vel(60, 0)
+                    else:
+                        # stop at red color
+                        if msg.intensities[0] == 2.0:
+                            self.vel(0, 0)
+                            self.stop = False
+                        else:
+                            self.turn_allowed = True
+                            self.timestamp = time()
+
+            if self.turn_allowed:
+                if left < right:
+                    print("Turning right!")
+                    self.vel(0, -50)
+                    sleep(0.25)
+                    if self.check_to_stop_turn(msg):
+                        sleep(0.1)
+                        self.vel(0, 0)
+                        self.turn_allowed = False
                 else:
-                    self.turn_allowed = True
-                    self.timestamp = time.time()
-        
-            if (time.time() - self.timestamp) <= 1 and self.turn_allowed:
-                self.vel(0, 45)
-            if (time.time() - self.timestamp) > 2 and self.turn_allowed:
-                self.vel(0, 0)
-                self.turn_allowed = False
+                    print("Turning left!")
+                    self.vel(0, 50)
+                    sleep(0.25)
+                    if self.check_to_stop_turn(msg):
+                        sleep(0.1)
+                        self.vel(0, 0)
+                        self.turn_allowed = False
+
+    def check_to_stop_turn(self, msg):
+        left_area = msg.ranges[330:360]
+        right_area = msg.ranges[0:30]
+        front_area = left_area + right_area
+        for distance in front_area:
+            if msg.ranges[0] > 1.0 and msg.ranges[90] > 0.2 and msg.ranges[-90] > 0.2 and distance > self.safe_distance:
+                print("Turn stopped!")
+                return True
+            else:
+                return False
 
     def scan_callback(self, msg):
         """ is run whenever a LaserScan msg is received
         """
 
         self.drive(msg)
-        # self.detect_left_right(msg)
-
-        print('Distances:')
-        print('⬆️ :', msg.ranges[0], msg.intensities[0])
-        print('⬇️ :', msg.ranges[180], msg.intensities[180])
-        print('⬅️ :', msg.ranges[90], msg.intensities[90])
-        print('➡️ :', msg.ranges[-90], msg.intensities[-90])
 
 
 def main(args=None):
@@ -95,4 +121,4 @@ def main(args=None):
 
 
 if __name__ == '__main__':
-    main()
\ No newline at end of file
+    main()
diff --git a/tb3.py b/tb3_challenge5.py
similarity index 75%
rename from tb3.py
rename to tb3_challenge5.py
index d0c62b4cceda38913b9ae3d32616671d1ef4ecbc..2292108631c21197e96d3f2180f66ddd9edb69bc 100644
--- a/tb3.py
+++ b/tb3_challenge5.py
@@ -5,10 +5,7 @@ from rclpy.qos import qos_profile_sensor_data
 from sensor_msgs.msg import LaserScan
 from geometry_msgs.msg import Twist
 
-import time
-
-from datetime import datetime
-from datetime import timedelta
+import sys
 
 
 class Tb3(Node):
@@ -16,22 +13,22 @@ class Tb3(Node):
         super().__init__('tb3')
 
         self.cmd_vel_pub = self.create_publisher(
-                Twist,      # message type
-                'cmd_vel',  # topic name
-                1)          # history depth
+            Twist,  # message type
+            'cmd_vel',  # topic name
+            1)  # history depth
 
         self.scan_sub = self.create_subscription(
-                LaserScan,
-                'scan',
-                self.scan_callback,  # function to run upon message arrival
-                qos_profile_sensor_data)  # allows packet loss
+            LaserScan,
+            'scan',
+            self.scan_callback,  # function to run upon message arrival
+            qos_profile_sensor_data)  # allows packet loss
 
         self.ang_vel_percent = 0
         self.lin_vel_percent = 0
         self.safe_distance = 0.4
         self.turn_allowed = False
         self.stop = False
-    
+
     def vel(self, lin_vel_percent, ang_vel_percent=0):
         """ publishes linear and angular velocities in percent
         """
@@ -50,10 +47,10 @@ class Tb3(Node):
     def drive(self, msg):
         if not self.stop:
             if self.check_if_goal(msg):
-                    self.vel(0, 0)
-                    self.stop = True
-                    print("Goal found!")
-                    return
+                self.vel(0, 0)
+                self.stop = True
+                print("Goal found!")
+                sys.exit()
             if not self.turn_allowed:
                 if msg.ranges[0] > self.safe_distance:
                     self.vel(70, 0)
@@ -63,7 +60,7 @@ class Tb3(Node):
 
             else:
                 if (msg.ranges[0] < self.safe_distance or msg.ranges[-40] < self.safe_distance + 0.05) \
-                or msg.ranges[-90] < 0.2:
+                        or msg.ranges[-90] < 0.2:
                     self.turn_left(msg)
                     print("Turning left")
                 elif msg.ranges[-70] > self.safe_distance + 0.1:
@@ -86,7 +83,7 @@ class Tb3(Node):
 
     def turn_left(self, msg):
         self.vel(0, 35)
-    
+
     def turn_right(self, msg):
         self.vel(10, -35)
 
@@ -95,13 +92,6 @@ class Tb3(Node):
         """
 
         self.drive(msg)
-        # self.detect_left_right(msg)
-
-#        print('Distances:')
-#        print('⬆️ :', msg.ranges[0], msg.intensities[0])
-#        print('⬇️ :', msg.ranges[180], msg.intensities[180])
-#        print('⬅️ :', msg.ranges[90], msg.intensities[90])
-#        print('➡️ :', msg.ranges[-90], msg.intensities[-90])
 
 
 def main(args=None):
diff --git a/tb3_challenge5_old.py b/tb3_challenge5_old.py
deleted file mode 100644
index d92dd4593925e32d76cbd4af44a2d3a083900a09..0000000000000000000000000000000000000000
--- a/tb3_challenge5_old.py
+++ /dev/null
@@ -1,125 +0,0 @@
-import rclpy  # ROS client library
-from rclpy.node import Node
-from rclpy.qos import qos_profile_sensor_data
-
-from sensor_msgs.msg import LaserScan
-from geometry_msgs.msg import Twist
-
-import time
-
-from datetime import datetime
-from datetime import timedelta
-
-
-class Tb3(Node):
-    def __init__(self):
-        super().__init__('tb3')
-
-        self.cmd_vel_pub = self.create_publisher(
-                Twist,      # message type
-                'cmd_vel',  # topic name
-                1)          # history depth
-
-        self.scan_sub = self.create_subscription(
-                LaserScan,
-                'scan',
-                self.scan_callback,  # function to run upon message arrival
-                qos_profile_sensor_data)  # allows packet loss
-
-        self.ang_vel_percent = 0
-        self.lin_vel_percent = 0
-        self.safe_distance = 0.4
-        self.turn_allowed = False
-        self.stop = False
-        self.timestamp = 0
-    
-    def vel(self, lin_vel_percent, ang_vel_percent=0):
-        """ publishes linear and angular velocities in percent
-        """
-        # for TB3 Waffle
-        MAX_LIN_VEL = 0.26  # m/s
-        MAX_ANG_VEL = 1.82  # rad/s
-
-        cmd_vel_msg = Twist()
-        cmd_vel_msg.linear.x = MAX_LIN_VEL * lin_vel_percent / 100
-        cmd_vel_msg.angular.z = MAX_ANG_VEL * ang_vel_percent / 100
-
-        self.cmd_vel_pub.publish(cmd_vel_msg)
-        self.ang_vel_percent = ang_vel_percent
-        self.lin_vel_percent = lin_vel_percent
-
-    def drive(self, msg):
-        front = msg.ranges[0]
-        left = msg.ranges[90]
-        right = msg.ranges[-90]
-        rear = msg.ranges[180]
-        front_area = msg.ranges[-40:40]
-        left_white_distance = msg.ranges[40]
-        right_white_distance = msg.ranges[-40]
-
-        if not self.stop:
-            if not self.turn_allowed:
-                if (front > self.safe_distance or front == 0.0) \
-                and (left_white_distance > self.safe_distance or left_white_distance == 0.0) \
-                and (right_white_distance > self.safe_distance or right_white_distance == 0.0):
-                    self.vel(80, 0)
-                else:
-                    # white
-                    if msg.intensities[0] == 2.0:
-                        self.vel(0, 0)
-                        self.stop = False
-                    else:
-                        self.turn_allowed = True
-                        self.timestamp = time.time()
-
-            if self.turn_allowed:
-                if left < right:
-                    self.vel(0, -80)
-                    if self.check_to_stop_turn(msg):
-                        self.vel(0, 0)
-                        self.turn_allowed = False
-                else:
-                    self.vel(0, 80)
-                    if self.check_to_stop_turn(msg):
-                        self.vel(0, 0)
-                        self.turn_allowed = False
-                
-    def check_to_stop_turn(self, msg):
-        if msg.ranges[0] > 1.2 and msg.ranges[90] > 0.2 and msg.ranges[-90] > 0.2 \
-        and msg.ranges[40] > self.safe_distance and msg.ranges[-40] > self.safe_distance:
-            return True
-        else:
-            return False
-
-    def scan_callback(self, msg):
-        """ is run whenever a LaserScan msg is received
-        """
-
-        self.drive(msg)
-        # self.detect_left_right(msg)
-
-        print('Distances:')
-        print('⬆️ :', msg.ranges[0], msg.intensities[0])
-        print('⬇️ :', msg.ranges[180], msg.intensities[180])
-        print('⬅️ :', msg.ranges[90], msg.intensities[90])
-        print('➡️ :', msg.ranges[-90], msg.intensities[-90])
-
-
-def main(args=None):
-    rclpy.init(args=args)
-
-    tb3 = Tb3()
-    print('waiting for messages...')
-
-    try:
-        rclpy.spin(tb3)  # Execute tb3 node
-        # Blocks until the executor (spin) cannot work
-    except KeyboardInterrupt:
-        pass
-
-    tb3.destroy_node()
-    rclpy.shutdown()
-
-
-if __name__ == '__main__':
-    main()
\ No newline at end of file
diff --git a/tb3_dodge_in_area.py b/tb3_dodge_in_area.py
deleted file mode 100644
index 11045446d773b3fdacabe8f9e6b29085ee46f8d4..0000000000000000000000000000000000000000
--- a/tb3_dodge_in_area.py
+++ /dev/null
@@ -1,134 +0,0 @@
-import rclpy  # ROS client library
-from rclpy.node import Node
-from rclpy.qos import qos_profile_sensor_data
-
-from sensor_msgs.msg import LaserScan
-from geometry_msgs.msg import Twist
-
-import time
-
-from datetime import datetime
-from datetime import timedelta
-
-
-class Tb3(Node):
-    def __init__(self):
-        super().__init__('tb3')
-
-        self.cmd_vel_pub = self.create_publisher(
-                Twist,      # message type
-                'cmd_vel',  # topic name
-                1)          # history depth
-
-        self.scan_sub = self.create_subscription(
-                LaserScan,
-                'scan',
-                self.scan_callback,  # function to run upon message arrival
-                qos_profile_sensor_data)  # allows packet loss
-
-        self.ang_vel_percent = 0
-        self.lin_vel_percent = 0
-        self.safe_distance = 0.4
-        self.turn_allowed = False
-        self.stop = False
-        self.timestamp = 0
-    
-    def vel(self, lin_vel_percent, ang_vel_percent=0):
-        """ publishes linear and angular velocities in percent
-        """
-        # for TB3 Waffle
-        MAX_LIN_VEL = 0.26  # m/s
-        MAX_ANG_VEL = 1.82  # rad/s
-
-        cmd_vel_msg = Twist()
-        cmd_vel_msg.linear.x = MAX_LIN_VEL * lin_vel_percent / 100
-        cmd_vel_msg.angular.z = MAX_ANG_VEL * ang_vel_percent / 100
-
-        self.cmd_vel_pub.publish(cmd_vel_msg)
-        self.ang_vel_percent = ang_vel_percent
-        self.lin_vel_percent = lin_vel_percent
-
-    def drive(self, msg):
-        front = msg.ranges[0]
-        left = msg.ranges[90]
-        right = msg.ranges[-90]
-        rear = msg.ranges[180]
-        left_area = msg.ranges[330:360]
-        right_area = msg.ranges[0:30]
-        front_area = left_area + right_area
-        left_white_distance = msg.ranges[40]
-        right_white_distance = msg.ranges[-40]
-
-        if not self.stop:
-            if not self.turn_allowed:
-                for distance in front_area:
-                    if distance > self.safe_distance or distance == 0.0:
-                        self.vel(80, 0)
-                    else:
-                        # stop at red color
-                        if msg.intensities[0] == 2.0:
-                            self.vel(0, 0)
-                            self.stop = False
-                        else:
-                            self.turn_allowed = True
-                            self.timestamp = time.time()
-
-            if self.turn_allowed:
-                if left < right:
-                    self.vel(0, -60)
-                    if self.check_to_stop_turn(msg):
-                        print("Turning right!")
-                        time.sleep(0.1)
-                        self.vel(0, 0)
-                        self.turn_allowed = False
-                else:
-                    self.vel(0, 60)
-                    if self.check_to_stop_turn(msg):
-                        print("Turning left!")
-                        time.sleep(0.1)
-                        self.vel(0, 0)
-                        self.turn_allowed = False
-                
-    def check_to_stop_turn(self, msg):
-        left_area = msg.ranges[330:360]
-        right_area = msg.ranges[0:30]
-        front_area = left_area + right_area
-        for distance in front_area:    
-            if msg.ranges[0] > 1.2 and msg.ranges[90] > 0.2 and msg.ranges[-90] > 0.2 and distance > self.safe_distance:
-                print("Turn stopped!")
-                return True
-            else:
-                return False
-
-    def scan_callback(self, msg):
-        """ is run whenever a LaserScan msg is received
-        """
-
-        self.drive(msg)
-        # self.detect_left_right(msg)
-
-#        print('Distances:')
-#        print('⬆️ :', msg.ranges[0], msg.intensities[0])
-#        print('⬇️ :', msg.ranges[180], msg.intensities[180])
-#        print('⬅️ :', msg.ranges[90], msg.intensities[90])
-#        print('➡️ :', msg.ranges[-90], msg.intensities[-90])
-
-
-def main(args=None):
-    rclpy.init(args=args)
-
-    tb3 = Tb3()
-    print('waiting for messages...')
-
-    try:
-        rclpy.spin(tb3)  # Execute tb3 node
-        # Blocks until the executor (spin) cannot work
-    except KeyboardInterrupt:
-        pass
-
-    tb3.destroy_node()
-    rclpy.shutdown()
-
-
-if __name__ == '__main__':
-    main()
diff --git a/tb3_right_hand.py b/tb3_right_hand.py
deleted file mode 100644
index e6bd4585c111705fcccc8c8ab2e4b2474388c4c4..0000000000000000000000000000000000000000
--- a/tb3_right_hand.py
+++ /dev/null
@@ -1,141 +0,0 @@
-import rclpy  # ROS client library
-from rclpy.node import Node
-from rclpy.qos import qos_profile_sensor_data
-
-from sensor_msgs.msg import LaserScan
-from geometry_msgs.msg import Twist
-
-import time
-
-from datetime import datetime
-from datetime import timedelta
-
-
-class Tb3(Node):
-    def __init__(self):
-        super().__init__('tb3')
-
-        self.cmd_vel_pub = self.create_publisher(
-                Twist,      # message type
-                'cmd_vel',  # topic name
-                1)          # history depth
-
-        self.scan_sub = self.create_subscription(
-                LaserScan,
-                'scan',
-                self.scan_callback,  # function to run upon message arrival
-                qos_profile_sensor_data)  # allows packet loss
-
-        self.ang_vel_percent = 0
-        self.lin_vel_percent = 0
-        self.safe_distance = 0.4
-        self.stop = False
-        self.start = True
-    
-    def vel(self, lin_vel_percent, ang_vel_percent=0):
-        """ publishes linear and angular velocities in percent
-        """
-        # for TB3 Waffle
-        MAX_LIN_VEL = 0.26  # m/s
-        MAX_ANG_VEL = 1.82  # rad/s
-
-        cmd_vel_msg = Twist()
-        cmd_vel_msg.linear.x = MAX_LIN_VEL * lin_vel_percent / 100
-        cmd_vel_msg.angular.z = MAX_ANG_VEL * ang_vel_percent / 100
-
-        self.cmd_vel_pub.publish(cmd_vel_msg)
-        self.ang_vel_percent = ang_vel_percent
-        self.lin_vel_percent = lin_vel_percent
-
-    def drive (self, msg):
-        if not self.stop:
-            if(self.start == True):
-                if(msg.ranges[0]> 0.4):
-                    self.vel(90,0)
-                else:
-                    if self.check_red_wall(msg):
-                        self.vel(0,0)
-                        self.stop = True
-                    self.start = False
-            else: 
-                if(msg.ranges[0] < 0.4 or msg.ranges[-40]< 0.45):
-                    self.turn_left(msg)
-                    print('lefty')
-                elif(msg.ranges[-60] > 0.45):
-                    self.turn_right(msg)
-                    print('right')
-                elif(msg.ranges[-90] < 0.20):
-                    self.turn_left(msg)
-                    print('left')
-                else:
-                    self.vel(50,0)
-        
-    def turn_right(self, msg):
-        self.vel(0, 0)
-        self.vel(0, -90)
-        self.vel(0, 0)
-
-    def turn_left(self, msg):
-        self.vel(0, 0)
-        self.vel(0, 90)
-        self.vel(0, 0)
-
-    def check_red_wall(self, msg):
-        if msg.ranges[0] <= 0.4:
-            if msg.intensities[0] == 2.0:
-                return True
-        if msg.ranges[90] <= 0.4:
-            if msg.intensities[90] == 2.0:
-                return True
-        if msg.ranges[-90] <= 0.4:
-            if msg.intensities[-90] == 2.0:
-                return True
-        if msg.ranges[180] <= 0.4:
-            if msg.intensities[180] == 2.0:
-                return True
-        else:
-            return False
-
-    def check_to_stop_turn(self, msg):
-        left_area = msg.ranges[330:360]
-        right_area = msg.ranges[0:30]
-        front_area = left_area + right_area
-        for distance in front_area:    
-            if msg.ranges[0] > 1.2 and msg.ranges[90] > 0.2 and msg.ranges[-90] > 0.2 and distance > self.safe_distance:
-                print("Turn stopped!")
-                return True
-            else:
-                return False
-
-    def scan_callback(self, msg):
-        """ is run whenever a LaserScan msg is received
-        """
-
-        self.drive(msg)
-        # self.detect_left_right(msg)
-
-#        print('Distances:')
-#        print('⬆️ :', msg.ranges[0], msg.intensities[0])
-#        print('⬇️ :', msg.ranges[180], msg.intensities[180])
-#        print('⬅️ :', msg.ranges[90], msg.intensities[90])
-#        print('➡️ :', msg.ranges[-90], msg.intensities[-90])
-
-
-def main(args=None):
-    rclpy.init(args=args)
-
-    tb3 = Tb3()
-    print('waiting for messages...')
-
-    try:
-        rclpy.spin(tb3)  # Execute tb3 node
-        # Blocks until the executor (spin) cannot work
-    except KeyboardInterrupt:
-        pass
-
-    tb3.destroy_node()
-    rclpy.shutdown()
-
-
-if __name__ == '__main__':
-    main()
\ No newline at end of file