diff --git a/src/.vscode/c_cpp_properties.json b/src/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..bb2edc9
--- /dev/null
+++ b/src/.vscode/c_cpp_properties.json
@@ -0,0 +1,20 @@
+{
+ "configurations": [
+ {
+ "browse": {
+ "databaseFilename": "${default}",
+ "limitSymbolsToIncludedHeaders": false
+ },
+ "includePath": [
+ "/opt/ros/rolling/include/**",
+ "/usr/include/**"
+ ],
+ "name": "ROS",
+ "intelliSenseMode": "gcc-x64",
+ "compilerPath": "/usr/bin/gcc",
+ "cStandard": "gnu11",
+ "cppStandard": "c++14"
+ }
+ ],
+ "version": 4
+}
\ No newline at end of file
diff --git a/src/.vscode/settings.json b/src/.vscode/settings.json
new file mode 100644
index 0000000..7cfa496
--- /dev/null
+++ b/src/.vscode/settings.json
@@ -0,0 +1,8 @@
+{
+ "python.autoComplete.extraPaths": [
+ "/opt/ros/rolling/lib/python3.10/site-packages"
+ ],
+ "python.analysis.extraPaths": [
+ "/opt/ros/rolling/lib/python3.10/site-packages"
+ ]
+}
\ No newline at end of file
diff --git a/src/image_processes/.vscode/c_cpp_properties.json b/src/image_processes/.vscode/c_cpp_properties.json
new file mode 100644
index 0000000..bb2edc9
--- /dev/null
+++ b/src/image_processes/.vscode/c_cpp_properties.json
@@ -0,0 +1,20 @@
+{
+ "configurations": [
+ {
+ "browse": {
+ "databaseFilename": "${default}",
+ "limitSymbolsToIncludedHeaders": false
+ },
+ "includePath": [
+ "/opt/ros/rolling/include/**",
+ "/usr/include/**"
+ ],
+ "name": "ROS",
+ "intelliSenseMode": "gcc-x64",
+ "compilerPath": "/usr/bin/gcc",
+ "cStandard": "gnu11",
+ "cppStandard": "c++14"
+ }
+ ],
+ "version": 4
+}
\ No newline at end of file
diff --git a/src/image_processes/.vscode/settings.json b/src/image_processes/.vscode/settings.json
new file mode 100644
index 0000000..f429ee4
--- /dev/null
+++ b/src/image_processes/.vscode/settings.json
@@ -0,0 +1,12 @@
+{
+ "python.autoComplete.extraPaths": [
+ "/home/garima/first_ws/install/robot_controller/lib/python3.10/site-packages",
+ "/home/garima/first_ws/install/image_processes/lib/python3.10/site-packages",
+ "/opt/ros/rolling/lib/python3.10/site-packages"
+ ],
+ "python.analysis.extraPaths": [
+ "/home/garima/first_ws/install/robot_controller/lib/python3.10/site-packages",
+ "/home/garima/first_ws/install/image_processes/lib/python3.10/site-packages",
+ "/opt/ros/rolling/lib/python3.10/site-packages"
+ ]
+}
\ No newline at end of file
diff --git a/src/image_processes/image_processes/__init__.py b/src/image_processes/image_processes/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/src/image_processes/image_processes/import cv2.py b/src/image_processes/image_processes/import cv2.py
new file mode 100644
index 0000000..099106c
--- /dev/null
+++ b/src/image_processes/image_processes/import cv2.py
@@ -0,0 +1,38 @@
+import cv2
+import pygame
+import pygame.camera
+pygame.camera.init()
+camlist = pygame.camera.list_cameras()
+if camlist :
+ cam=pygame.camera.Camera(camlist[0],(640,480))
+ cam.start()
+ image = cam.get_image()
+ pygame.image.save(image,"filename.jpg")
+else:
+ print("no")
+
+cam = cv2.VideoCapture(0)
+
+cv2.namedWindow("test")
+
+img_counter = 0
+
+while True:
+ ret, frame = cam.read()
+ if not ret:
+ print("failed to grab frame")
+ break
+ cv2.imshow("test", frame)
+
+ k = cv2.waitKey(1)
+ if k%256 == 27:
+ # ESC pressed
+ print("Escape hit, closing...")
+ break
+ elif k%256 == 32:
+ # SPACE pressed
+ img_name = "opencv_frame_{}.png".format(img_counter)
+ cv2.imwrite(img_name, frame)
+ print("{} written!".format(img_name))
+ img_counter += 1
+cam.release()
\ No newline at end of file
diff --git a/src/image_processes/image_processes/sample.jpg b/src/image_processes/image_processes/sample.jpg
new file mode 100644
index 0000000..914ad1e
Binary files /dev/null and b/src/image_processes/image_processes/sample.jpg differ
diff --git a/src/image_processes/image_processes/webcam_display.py b/src/image_processes/image_processes/webcam_display.py
new file mode 100755
index 0000000..cd2a2df
--- /dev/null
+++ b/src/image_processes/image_processes/webcam_display.py
@@ -0,0 +1,176 @@
+#!/usr/bin/env python3
+'''import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+import cv2
+from cv_bridge import CvBridge
+
+class node3(Node):
+ def __init__(self):
+ super().__init__('webcam_display')
+ self.subscription_ = self.create_subscription(
+ Image,
+ 'webcam_cropped',
+ self.display_image,
+ 10
+ )
+ self.bridge = CvBridge()
+
+ def display_image(self, msg):
+ frame = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
+ cv2.imshow('Webcam Cropped', frame)
+ cv2.waitKey(1)
+
+def main(args=None):
+ rclpy.init(args=args)
+ webcam_display = node3()
+ rclpy.spin(webcam_display)
+ webcam_display.destroy_node()
+ rclpy.shutdown()
+ cv2.destroyAllWindows()
+
+if __name__ == '__main__':
+ main()'''
+
+'''import rospy
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+def node3():
+ rospy,init_node('node3',anonymous = True)
+ rospy.Subscriber('Webcam_cropped',Image,show_image_callback)
+
+ rospy.spin()
+
+def show_image_callback(image_frame):
+ cv_bridge = CvBridge()
+ cv_image = cv_bridge.imgmsg_to_cv2(image_frame,desired_encoding='bgr8')
+ cv2.imshow('Webcam_cropped',cv_image)
+ cv2.waitkey(1)
+
+if __name__ = '__main__':
+ try:
+ node3()
+ except rospy.ROSInterruptException:
+ pass
+'''
+
+'''import rclpy
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+def node3():
+ rclpy.init()
+ node = rclpy.create_node('node3')
+
+ cv_bridge = CvBridge()
+
+ def show_image_callback(image_frame):
+ cv_image = cv_bridge.imgmsg_to_cv2(image_frame, desired_encoding='bgr8')
+ cv2.imshow('Webcam_cropped', cv_image)
+ cv2.waitKey(1)
+
+ subscription = node.create_subscription(Image, 'Webcam_cropped', show_image_callback, 10)
+
+ rclpy.spin(node)
+
+ node.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ try:
+ node3()
+ except KeyboardInterrupt:
+ pass
+ '''
+
+#!/usr/bin/env python3
+#!/usr/bin/env python3
+
+'''import os
+import sys
+import cv2
+import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+
+class ImageViewer(Node):
+ def __init__(self):
+ super().__init__('image_viewer')
+ self.subscription = self.create_subscription(
+ Image,
+ 'webcam_cropped',
+ self.image_callback,
+ 10
+ )
+ self.subscription # prevent unused variable warning
+ self.bridge = CvBridge()
+
+ def image_callback(self, msg):
+ try:
+ # Convert the ROS Image message to an OpenCV image
+ image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
+ except Exception as e:
+ self.get_logger().error('Failed to convert image: {}'.format(e))
+ return
+
+ # Display the image in a window
+ cv2.imshow('Webcam Cropped', image)
+ cv2.waitKey(1)
+
+def main(args=None):
+ rclpy.init(args=args)
+ image_viewer = ImageViewer()
+ rclpy.spin(image_viewer)
+ cv2.destroyAllWindows()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
+'''
+
+#!/usr/bin/env python
+
+import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+class ImageViewer(Node):
+ def __init__(self):
+ super().__init__('image_viewer')
+ self.subscription = self.create_subscription(
+ Image,
+ 'cropped_img',
+ self.image_callback,
+ 10
+ )
+ self.bridge = CvBridge()
+
+ def image_callback(self, msg):
+ # Convert the ROS Image message to a CV image
+ cv_image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
+
+ # Display the image
+ cv2.imshow('Cropped Image', cv_image)
+ cv2.waitKey(1)
+
+def main(args=None):
+ rclpy.init(args=args)
+ image_viewer = ImageViewer()
+ try:
+ rclpy.spin(image_viewer)
+ except KeyboardInterrupt:
+ pass
+
+ # Destroy the OpenCV windows and clean up
+ cv2.destroyAllWindows()
+ image_viewer.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
diff --git a/src/image_processes/image_processes/webcam_publisher.py b/src/image_processes/image_processes/webcam_publisher.py
new file mode 100755
index 0000000..ccdbe3c
--- /dev/null
+++ b/src/image_processes/image_processes/webcam_publisher.py
@@ -0,0 +1,223 @@
+#!/usr/bin/env python3
+'''from cv2 import IMWRITE_JPEG_OPTIMIZE, destroyWindow, imshow, imwrite, waitKey
+import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+
+class WebcamPublisher(Node):
+ def __init__(self):
+ super().__init__('webcam_publisher')
+ self.publisher_ = self.create_publisher(Image, 'webcam_img', 10)
+ self.timer_ = self.create_timer(0.1, self.publish_frame)
+ self.cv_bridge = CvBridge()
+ self.capture = cv2.VideoCapture(0)
+
+ def publish_frame(self):
+ ret, frame = self.capture.read()
+ if ret:
+ # Convert the frame to a ROS2 Image message
+ msg = self.cv_bridge.cv2_to_imgmsg(frame)
+
+ # Publish the image frame
+ self.publisher_.publish(msg)
+
+
+
+
+
+def main(args=None):
+ rclpy.init(args=args)
+ webcam_publisher = WebcamPublisher()
+ rclpy.spin(webcam_publisher)
+ webcam_publisher.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
+
+ '''
+'''import rospy
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+def node1():
+ rospy.init('node1',anonymous=True)
+ Srate = rospy.Rate(10)
+ pub = rospy.Publisher('Webcam_img',Image,queue_size=10)
+ bridge = CvBridge()
+
+ while not rospy.is_shoutdown():
+ image_frame = capture_image_from_webcam()
+
+ ros_image = bridge.cv2_to_imgmsg(image_frame,encoding='bgr8')
+
+ pub.publish(ros_image)
+ rate.sleep()
+
+def capture_image_from_webcam():
+ cap=cv2.VideoCapture(0)
+ cv2.waitKey(0)
+
+ if not cap.isOpened():
+ print("failed to open the webcam")
+ return None
+ ret, frame = cap.read()
+
+ cap.release()
+
+ if not ret:
+ print("Failed to capture frame from the webcam")
+ return None
+ return frame
+
+if __name__ == '__main__':
+ try:
+ node1()
+ except rospy.ROSInterruptException:
+ pass
+
+
+
+
+
+import rclpy
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+def node1():
+ rclpy.init()
+ node = rclpy.create_node('node1')
+ rate = node.create_rate(10)
+
+ publisher = node.create_publisher(Image, 'Webcam_img', 10)
+ bridge = CvBridge()
+
+ while rclpy.ok():
+ image_frame = capture_image_from_webcam()
+
+ ros_image = bridge.cv2_to_imgmsg(image_frame, encoding='bgr8')
+
+ publisher.publish(ros_image)
+ rate.sleep()
+
+ node.destroy_node()
+ rclpy.shutdown()
+
+def capture_image_from_webcam():
+ cap = cv2.VideoCapture(0)
+ cv2.waitKey(0)
+
+ if not cap.isOpened():
+ print("Failed to open the webcam")
+ return None
+ ret, frame = cap.read()
+
+ cap.release()
+
+ if not ret:
+ print("Failed to capture frame from the webcam")
+ return None
+ return frame
+
+if __name__ == '__main__':
+ try:
+ node1()
+ except KeyboardInterrupt:
+ pass
+'''
+
+'''import os
+import sys
+import cv2
+import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Video
+from cv_bridge import CvBridge
+
+class ImagePublisher(Node):
+ def __init__(self):
+ super().__init__('image_publisher')
+ self.publisher_ = self.create_publisher(Video, 'webcam_img', 10)
+ self.bridge = CvBridge()
+
+ def publish_image(self):
+ # Path to the image file
+ image_file = '/home/garima/first_ws/src/image_processes/image_processes/sample.jpg'
+
+ # Load the image using OpenCV
+ image = cv2.imread(image_file)
+ if image is None:
+ self.get_logger().error('Failed to load image from file: {}'.format(image_file))
+ sys.exit(1)
+
+ # Convert the image to a ROS Image message
+ img_msg = self.bridge.cv2_to_imgmsg(image, encoding="bgr8")
+
+ while True:
+ # Publish the image message
+ self.publisher_.publish(img_msg)
+ self.get_logger().info('Image published to webcam_img topic')
+
+ # Sleep for a while before publishing the next image
+ #we rclpy.sleep(1.0) # 1 second
+
+def main(args=None):
+ rclpy.init(args=args)
+ image_publisher = ImagePublisher()
+ image_publisher.publish_image()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
+'''
+
+#!/usr/bin/env python
+
+import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+class VideoPublisher(Node):
+ def __init__(self):
+ super().__init__('video_publisher')
+ self.publisher_ = self.create_publisher(Image, 'webcam_img', 10)
+ timer_period = 0.1 # seconds
+ self.timer = self.create_timer(timer_period, self.timer_callback)
+ self.bridge = CvBridge()
+ self.video = cv2.VideoCapture('/home/garima/Downloads/sample.mp4')
+
+ def timer_callback(self):
+ ret, frame = self.video.read()
+ if not ret:
+ # If the video is over, loop back to the beginning
+ self.video.set(cv2.CAP_PROP_POS_FRAMES, 0)
+ ret, frame = self.video.read()
+ if not ret:
+ # If the video still cannot be read, stop publishing
+ self.get_logger().info('Video cannot be read')
+ self.timer.cancel()
+ return
+
+ # Convert the frame to a ROS Image message
+ image_msg = self.bridge.cv2_to_imgmsg(frame, encoding='bgr8')
+
+ # Publish the image message
+ self.publisher_.publish(image_msg)
+ self.get_logger().info('Published image')
+
+def main(args=None):
+ rclpy.init(args=args)
+ video_publisher = VideoPublisher()
+ rclpy.spin(video_publisher)
+ video_publisher.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
diff --git a/src/image_processes/image_processes/webcam_subscriber.py b/src/image_processes/image_processes/webcam_subscriber.py
new file mode 100755
index 0000000..45a1b1b
--- /dev/null
+++ b/src/image_processes/image_processes/webcam_subscriber.py
@@ -0,0 +1,250 @@
+#!/usr/bin/env python3
+'''import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+import cv2
+from cv_bridge import CvBridge
+
+class node2(Node):
+ def __init__(self):
+ super().__init__('webcam_subscriber')
+ self.subscription_ = self.create_subscription(
+ Image,
+ 'Webcam_img',
+ self.process_image,
+ 10
+ )
+ self.publisher_ = self.create_publisher(Image, 'webcam_cropped', 10)
+ self.bridge = CvBridge()
+
+ def process_image(self, msg):
+ frame = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
+ height, width, _ = frame.shape
+ crop_width = int(width * 0.3)
+ crop_height = int(height * 0.3)
+ cropped_frame = frame[crop_height:-crop_height, crop_width:-crop_width]
+
+ cropped_msg = self.bridge.cv2_to_imgmsg(cropped_frame, encoding='bgr8')
+ self.publisher_.publish(cropped_msg)
+
+def main(args=None):
+ rclpy.init(args=args)
+ webcam_subscriber = node2()
+ rclpy.spin(webcam_subscriber)
+ webcam_subscriber.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
+ '''
+
+'''import rospy
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+pub = rospy.Publisher('Webcam_cropped',Image ,queue_size=10)
+def node2():
+ rospy.init_node('node2',anonymous=True)
+ rate = rospy.Rate(10)
+
+ rospy.Subscriber('Webcam_img',Image,process_image_callback)
+
+ while not rospy.is_shoutdown():
+ rate.sleep()
+
+def process_image_callback(image_frame):
+ cv_bridge = CvBridge()
+ cv_image = cv_bridge.imgmsg_to_cv2(image_frame,desired_encoding='bgr8')
+
+ height,width = cv_image.shape[:2]
+ new_width = int(width*0.7)
+ new_height = int(height*0.7)
+ start_x = int((width-new_width)/2)
+ start_y = int((height-new_height)/2)
+ cropped_image - cv_bridge[start_y:start_y + new_height , start_x = start_x + new_width]
+ image_frame = cv_bridge.cv2_to_imgmsg(cropped_image,encoding = 'bgr8')
+
+ pub.publish(image_frame)
+ if __name__ = '__main__':
+ try:
+ node2()
+
+
+ except rospy.ROSInterruptException:
+ pass'''
+
+'''import rclpy
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+
+def node2():
+ rclpy.init()
+ node = rclpy.create_node('node2')
+ rate = node.create_rate(10)
+
+ publisher = node.create_publisher(Image, 'Webcam_cropped', 10)
+ cv_bridge = CvBridge()
+
+ def process_image_callback(image_frame):
+ cv_image = cv_bridge.imgmsg_to_cv2(image_frame, desired_encoding='bgr8')
+
+ height, width = cv_image.shape[:2]
+ new_width = int(width * 0.7)
+ new_height = int(height * 0.7)
+ start_x = int((width - new_width) / 2)
+ start_y = int((height - new_height) / 2)
+ cropped_image = cv_image[start_y:start_y + new_height, start_x:start_x + new_width]
+ cropped_image_frame = cv_bridge.cv2_to_imgmsg(cropped_image, encoding='bgr8')
+
+ publisher.publish(cropped_image_frame)
+
+ subscription = node.create_subscription(Image, 'Webcam_img', process_image_callback, 10)
+
+ while rclpy.ok():
+ rclpy.spin_once(node)
+ rate.sleep()
+
+ node.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ try:
+ node2()
+ except KeyboardInterrupt:
+ pass
+'''
+#!/usr/bin/env python3
+
+'''import os
+import sys
+import cv2
+import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+
+class ImageSubscriber(Node):
+ def __init__(self):
+ super().__init__('image_subscriber')
+ self.subscription = self.create_subscription(
+ Image,
+ 'webcam_img',
+ self.image_callback,
+ 10
+ )
+ self.subscription # prevent unused variable warning
+ self.publisher_ = self.create_publisher(Image, 'webcam_cropped', 10)
+ self.bridge = CvBridge()
+
+ def image_callback(self, msg):
+ try:
+ # Convert the ROS Image message to an OpenCV image
+ image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
+ except Exception as e:
+ self.get_logger().error('Failed to convert image: {}'.format(e))
+ return
+
+ # Crop the image by 30%
+ height, width, _ = image.shape
+ crop_width = int(width * 0.3)
+ crop_height = int(height * 0.3)
+ cropped_image = image[crop_height:height-crop_height, crop_width:width-crop_width]
+
+ try:
+ # Convert the cropped image back to a ROS Image message
+ cropped_msg = self.bridge.cv2_to_imgmsg(cropped_image, encoding='bgr8')
+ except Exception as e:
+ self.get_logger().error('Failed to convert cropped image: {}'.format(e))
+ return
+
+ # Publish the cropped image on the "webcam_cropped" topic
+ self.publisher_.publish(cropped_msg)
+ self.get_logger().info('Cropped image published to webcam_cropped topic')
+
+def main(args=None):
+ rclpy.init(args=args)
+ image_subscriber = ImageSubscriber()
+ rclpy.spin(image_subscriber)
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
+
+'''
+
+
+
+
+ #!/usr/bin/env python
+
+import rclpy
+from rclpy.node import Node
+from sensor_msgs.msg import Image
+from cv_bridge import CvBridge
+import cv2
+import os
+
+class ImageCropper(Node):
+ def __init__(self):
+ super().__init__('image_cropper')
+ self.subscription = self.create_subscription(
+ Image,
+ 'webcam_img',
+ self.image_callback,
+ 10
+ )
+ self.publisher_ = self.create_publisher(Image, 'cropped_img', 10)
+ self.bridge = CvBridge()
+ self.screen_width = 800 # Specify the desired screen width
+ self.screen_height = 600 # Specify the desired screen height
+ self.crop_width = 100 # Specify the desired crop width in pixels
+ self.crop_height = 100 # Specify the desired crop height in pixels
+
+ def image_callback(self, msg):
+ # Convert the ROS Image message to a CV image
+ cv_image = self.bridge.imgmsg_to_cv2(msg, desired_encoding='bgr8')
+
+ # Get the original image dimensions
+ height, width, _ = cv_image.shape
+
+ # Calculate the crop coordinates
+ x = int((width - self.crop_width) / 2)
+ y = int((height - self.crop_height) / 2)
+
+ # Crop the image
+ cropped_image = cv_image[y:y+self.crop_height, x:x+self.crop_width]
+
+ # Resize the cropped image to fit within the screen dimensions while preserving aspect ratio
+ aspect_ratio = float(self.screen_width) / self.screen_height
+ cropped_image = self.resize_image(cropped_image, self.screen_width, int(self.screen_width / aspect_ratio))
+
+ # Convert the resized image back to a ROS Image message
+ cropped_msg = self.bridge.cv2_to_imgmsg(cropped_image, encoding='bgr8')
+
+ # Publish the cropped image
+ self.publisher_.publish(cropped_msg)
+ self.get_logger().info('Published cropped image')
+
+ def resize_image(self, image, width, height):
+ # Resize the image while preserving aspect ratio
+ image_height, image_width, _ = image.shape
+ if image_width / image_height > width / height:
+ new_height = height
+ new_width = int(image_width * height / image_height)
+ else:
+ new_width = width
+ new_height = int(image_height * width / image_width)
+ resized_image = cv2.resize(image, (new_width, new_height))
+ return resized_image
+
+def main(args=None):
+ rclpy.init(args=args)
+ os.environ['QT_QPA_PLATFORM'] = 'wayland' # Set the QT_QPA_PLATFORM to 'wayland'
+ image_cropper = ImageCropper()
+ rclpy.spin(image_cropper)
+ image_cropper.destroy_node()
+ rclpy.shutdown()
+
+if __name__ == '__main__':
+ main()
diff --git a/src/image_processes/launch/image_cropping.launch.py b/src/image_processes/launch/image_cropping.launch.py
new file mode 100755
index 0000000..6889219
--- /dev/null
+++ b/src/image_processes/launch/image_cropping.launch.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+
+from launch import LaunchDescription, LaunchService
+import launch
+from launch_ros.actions import Node
+from launch.actions import DeclareLaunchArgument
+from launch.substitutions import LaunchConfiguration
+
+def generate_launch_description():
+ webcam_publisher = Node(
+ package='image_processes',
+ executable='webcam_publisher',
+ output='screen'
+ )
+
+ image_cropper = Node(
+ package='image_processes',
+ executable='webcam_subscriber',
+ output='screen'
+ )
+
+ image_display = Node(
+ package='image_processes',
+ executable='webcam_display',
+ output='screen'
+ )
+
+ return LaunchDescription([
+ webcam_publisher,
+ image_cropper,
+ image_display
+ ])
+
+
+if __name__ == '__main__':
+ ld = generate_launch_description()
+ ls = LaunchService()
+ ls.include_launch_description(ld)
+ ls.run()
diff --git a/src/image_processes/package.xml b/src/image_processes/package.xml
new file mode 100644
index 0000000..f931324
--- /dev/null
+++ b/src/image_processes/package.xml
@@ -0,0 +1,26 @@
+
+
+
+ image_processes
+ 0.0.0
+ TODO: Package description
+ garima
+ TODO: License declaration
+
+
+rclpy.node
+sensor_msgs.msg
+cv_bridge
+
+
+ rclpy
+
+ ament_copyright
+ ament_flake8
+ ament_pep257
+ python3-pytest
+
+
+ ament_python
+
+
diff --git a/src/image_processes/resource/image_processes b/src/image_processes/resource/image_processes
new file mode 100644
index 0000000..e69de29
diff --git a/src/image_processes/setup.cfg b/src/image_processes/setup.cfg
new file mode 100644
index 0000000..3645f60
--- /dev/null
+++ b/src/image_processes/setup.cfg
@@ -0,0 +1,4 @@
+[develop]
+script_dir=$base/lib/image_processes
+[install]
+install_scripts=$base/lib/image_processes
diff --git a/src/image_processes/setup.py b/src/image_processes/setup.py
new file mode 100644
index 0000000..6a17277
--- /dev/null
+++ b/src/image_processes/setup.py
@@ -0,0 +1,28 @@
+from setuptools import find_packages, setup
+
+package_name = 'image_processes'
+
+setup(
+ name=package_name,
+ version='0.0.0',
+ packages=find_packages(exclude=['test']),
+ data_files=[
+ ('share/ament_index/resource_index/packages',
+ ['resource/' + package_name]),
+ ('share/' + package_name, ['package.xml']),
+ ],
+ install_requires=['setuptools'],
+ zip_safe=True,
+ maintainer='garima',
+ maintainer_email='garima@todo.todo',
+ description='TODO: Package description',
+ license='TODO: License declaration',
+ tests_require=['pytest'],
+ entry_points={
+ 'console_scripts': [
+ "webcam_publisher = image_processes.webcam_publisher:main",
+ "webcam_subscriber = image_processes.webcam_subscriber:main",
+ "webcam_display = image_processes.webcam_display:main",
+ ],
+ },
+)
diff --git a/src/image_processes/test/test_copyright.py b/src/image_processes/test/test_copyright.py
new file mode 100644
index 0000000..97a3919
--- /dev/null
+++ b/src/image_processes/test/test_copyright.py
@@ -0,0 +1,25 @@
+# Copyright 2015 Open Source Robotics Foundation, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from ament_copyright.main import main
+import pytest
+
+
+# Remove the `skip` decorator once the source file(s) have a copyright header
+@pytest.mark.skip(reason='No copyright header has been placed in the generated source file.')
+@pytest.mark.copyright
+@pytest.mark.linter
+def test_copyright():
+ rc = main(argv=['.', 'test'])
+ assert rc == 0, 'Found errors'
diff --git a/src/image_processes/test/test_flake8.py b/src/image_processes/test/test_flake8.py
new file mode 100644
index 0000000..27ee107
--- /dev/null
+++ b/src/image_processes/test/test_flake8.py
@@ -0,0 +1,25 @@
+# Copyright 2017 Open Source Robotics Foundation, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from ament_flake8.main import main_with_errors
+import pytest
+
+
+@pytest.mark.flake8
+@pytest.mark.linter
+def test_flake8():
+ rc, errors = main_with_errors(argv=[])
+ assert rc == 0, \
+ 'Found %d code style errors / warnings:\n' % len(errors) + \
+ '\n'.join(errors)
diff --git a/src/image_processes/test/test_pep257.py b/src/image_processes/test/test_pep257.py
new file mode 100644
index 0000000..b234a38
--- /dev/null
+++ b/src/image_processes/test/test_pep257.py
@@ -0,0 +1,23 @@
+# Copyright 2015 Open Source Robotics Foundation, Inc.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from ament_pep257.main import main
+import pytest
+
+
+@pytest.mark.linter
+@pytest.mark.pep257
+def test_pep257():
+ rc = main(argv=['.', 'test'])
+ assert rc == 0, 'Found code style errors / warnings'
diff --git a/src/install/.colcon_install_layout b/src/install/.colcon_install_layout
new file mode 100644
index 0000000..3aad533
--- /dev/null
+++ b/src/install/.colcon_install_layout
@@ -0,0 +1 @@
+isolated
diff --git a/src/install/COLCON_IGNORE b/src/install/COLCON_IGNORE
new file mode 100644
index 0000000..e69de29
diff --git a/src/install/_local_setup_util_ps1.py b/src/install/_local_setup_util_ps1.py
new file mode 100644
index 0000000..98348ee
--- /dev/null
+++ b/src/install/_local_setup_util_ps1.py
@@ -0,0 +1,404 @@
+# Copyright 2016-2019 Dirk Thomas
+# Licensed under the Apache License, Version 2.0
+
+import argparse
+from collections import OrderedDict
+import os
+from pathlib import Path
+import sys
+
+
+FORMAT_STR_COMMENT_LINE = '# {comment}'
+FORMAT_STR_SET_ENV_VAR = 'Set-Item -Path "Env:{name}" -Value "{value}"'
+FORMAT_STR_USE_ENV_VAR = '$env:{name}'
+FORMAT_STR_INVOKE_SCRIPT = '_colcon_prefix_powershell_source_script "{script_path}"'
+FORMAT_STR_REMOVE_LEADING_SEPARATOR = ''
+FORMAT_STR_REMOVE_TRAILING_SEPARATOR = ''
+
+DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists'
+DSV_TYPE_SET = 'set'
+DSV_TYPE_SET_IF_UNSET = 'set-if-unset'
+DSV_TYPE_SOURCE = 'source'
+
+
+def main(argv=sys.argv[1:]): # noqa: D103
+ parser = argparse.ArgumentParser(
+ description='Output shell commands for the packages in topological '
+ 'order')
+ parser.add_argument(
+ 'primary_extension',
+ help='The file extension of the primary shell')
+ parser.add_argument(
+ 'additional_extension', nargs='?',
+ help='The additional file extension to be considered')
+ parser.add_argument(
+ '--merged-install', action='store_true',
+ help='All install prefixes are merged into a single location')
+ args = parser.parse_args(argv)
+
+ packages = get_packages(Path(__file__).parent, args.merged_install)
+
+ ordered_packages = order_packages(packages)
+ for pkg_name in ordered_packages:
+ if _include_comments():
+ print(
+ FORMAT_STR_COMMENT_LINE.format_map(
+ {'comment': 'Package: ' + pkg_name}))
+ prefix = os.path.abspath(os.path.dirname(__file__))
+ if not args.merged_install:
+ prefix = os.path.join(prefix, pkg_name)
+ for line in get_commands(
+ pkg_name, prefix, args.primary_extension,
+ args.additional_extension
+ ):
+ print(line)
+
+ for line in _remove_ending_separators():
+ print(line)
+
+
+def get_packages(prefix_path, merged_install):
+ """
+ Find packages based on colcon-specific files created during installation.
+
+ :param Path prefix_path: The install prefix path of all packages
+ :param bool merged_install: The flag if the packages are all installed
+ directly in the prefix or if each package is installed in a subdirectory
+ named after the package
+ :returns: A mapping from the package name to the set of runtime
+ dependencies
+ :rtype: dict
+ """
+ packages = {}
+ # since importing colcon_core isn't feasible here the following constant
+ # must match colcon_core.location.get_relative_package_index_path()
+ subdirectory = 'share/colcon-core/packages'
+ if merged_install:
+ # return if workspace is empty
+ if not (prefix_path / subdirectory).is_dir():
+ return packages
+ # find all files in the subdirectory
+ for p in (prefix_path / subdirectory).iterdir():
+ if not p.is_file():
+ continue
+ if p.name.startswith('.'):
+ continue
+ add_package_runtime_dependencies(p, packages)
+ else:
+ # for each subdirectory look for the package specific file
+ for p in prefix_path.iterdir():
+ if not p.is_dir():
+ continue
+ if p.name.startswith('.'):
+ continue
+ p = p / subdirectory / p.name
+ if p.is_file():
+ add_package_runtime_dependencies(p, packages)
+
+ # remove unknown dependencies
+ pkg_names = set(packages.keys())
+ for k in packages.keys():
+ packages[k] = {d for d in packages[k] if d in pkg_names}
+
+ return packages
+
+
+def add_package_runtime_dependencies(path, packages):
+ """
+ Check the path and if it exists extract the packages runtime dependencies.
+
+ :param Path path: The resource file containing the runtime dependencies
+ :param dict packages: A mapping from package names to the sets of runtime
+ dependencies to add to
+ """
+ content = path.read_text()
+ dependencies = set(content.split(os.pathsep) if content else [])
+ packages[path.name] = dependencies
+
+
+def order_packages(packages):
+ """
+ Order packages topologically.
+
+ :param dict packages: A mapping from package name to the set of runtime
+ dependencies
+ :returns: The package names
+ :rtype: list
+ """
+ # select packages with no dependencies in alphabetical order
+ to_be_ordered = list(packages.keys())
+ ordered = []
+ while to_be_ordered:
+ pkg_names_without_deps = [
+ name for name in to_be_ordered if not packages[name]]
+ if not pkg_names_without_deps:
+ reduce_cycle_set(packages)
+ raise RuntimeError(
+ 'Circular dependency between: ' + ', '.join(sorted(packages)))
+ pkg_names_without_deps.sort()
+ pkg_name = pkg_names_without_deps[0]
+ to_be_ordered.remove(pkg_name)
+ ordered.append(pkg_name)
+ # remove item from dependency lists
+ for k in list(packages.keys()):
+ if pkg_name in packages[k]:
+ packages[k].remove(pkg_name)
+ return ordered
+
+
+def reduce_cycle_set(packages):
+ """
+ Reduce the set of packages to the ones part of the circular dependency.
+
+ :param dict packages: A mapping from package name to the set of runtime
+ dependencies which is modified in place
+ """
+ last_depended = None
+ while len(packages) > 0:
+ # get all remaining dependencies
+ depended = set()
+ for pkg_name, dependencies in packages.items():
+ depended = depended.union(dependencies)
+ # remove all packages which are not dependent on
+ for name in list(packages.keys()):
+ if name not in depended:
+ del packages[name]
+ if last_depended:
+ # if remaining packages haven't changed return them
+ if last_depended == depended:
+ return packages.keys()
+ # otherwise reduce again
+ last_depended = depended
+
+
+def _include_comments():
+ # skipping comment lines when COLCON_TRACE is not set speeds up the
+ # processing especially on Windows
+ return bool(os.environ.get('COLCON_TRACE'))
+
+
+def get_commands(pkg_name, prefix, primary_extension, additional_extension):
+ commands = []
+ package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv')
+ if os.path.exists(package_dsv_path):
+ commands += process_dsv_file(
+ package_dsv_path, prefix, primary_extension, additional_extension)
+ return commands
+
+
+def process_dsv_file(
+ dsv_path, prefix, primary_extension=None, additional_extension=None
+):
+ commands = []
+ if _include_comments():
+ commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path}))
+ with open(dsv_path, 'r') as h:
+ content = h.read()
+ lines = content.splitlines()
+
+ basenames = OrderedDict()
+ for i, line in enumerate(lines):
+ # skip over empty or whitespace-only lines
+ if not line.strip():
+ continue
+ try:
+ type_, remainder = line.split(';', 1)
+ except ValueError:
+ raise RuntimeError(
+ "Line %d in '%s' doesn't contain a semicolon separating the "
+ 'type from the arguments' % (i + 1, dsv_path))
+ if type_ != DSV_TYPE_SOURCE:
+ # handle non-source lines
+ try:
+ commands += handle_dsv_types_except_source(
+ type_, remainder, prefix)
+ except RuntimeError as e:
+ raise RuntimeError(
+ "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e
+ else:
+ # group remaining source lines by basename
+ path_without_ext, ext = os.path.splitext(remainder)
+ if path_without_ext not in basenames:
+ basenames[path_without_ext] = set()
+ assert ext.startswith('.')
+ ext = ext[1:]
+ if ext in (primary_extension, additional_extension):
+ basenames[path_without_ext].add(ext)
+
+ # add the dsv extension to each basename if the file exists
+ for basename, extensions in basenames.items():
+ if not os.path.isabs(basename):
+ basename = os.path.join(prefix, basename)
+ if os.path.exists(basename + '.dsv'):
+ extensions.add('dsv')
+
+ for basename, extensions in basenames.items():
+ if not os.path.isabs(basename):
+ basename = os.path.join(prefix, basename)
+ if 'dsv' in extensions:
+ # process dsv files recursively
+ commands += process_dsv_file(
+ basename + '.dsv', prefix, primary_extension=primary_extension,
+ additional_extension=additional_extension)
+ elif primary_extension in extensions and len(extensions) == 1:
+ # source primary-only files
+ commands += [
+ FORMAT_STR_INVOKE_SCRIPT.format_map({
+ 'prefix': prefix,
+ 'script_path': basename + '.' + primary_extension})]
+ elif additional_extension in extensions:
+ # source non-primary files
+ commands += [
+ FORMAT_STR_INVOKE_SCRIPT.format_map({
+ 'prefix': prefix,
+ 'script_path': basename + '.' + additional_extension})]
+
+ return commands
+
+
+def handle_dsv_types_except_source(type_, remainder, prefix):
+ commands = []
+ if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET):
+ try:
+ env_name, value = remainder.split(';', 1)
+ except ValueError:
+ raise RuntimeError(
+ "doesn't contain a semicolon separating the environment name "
+ 'from the value')
+ try_prefixed_value = os.path.join(prefix, value) if value else prefix
+ if os.path.exists(try_prefixed_value):
+ value = try_prefixed_value
+ if type_ == DSV_TYPE_SET:
+ commands += _set(env_name, value)
+ elif type_ == DSV_TYPE_SET_IF_UNSET:
+ commands += _set_if_unset(env_name, value)
+ else:
+ assert False
+ elif type_ in (
+ DSV_TYPE_APPEND_NON_DUPLICATE,
+ DSV_TYPE_PREPEND_NON_DUPLICATE,
+ DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS
+ ):
+ try:
+ env_name_and_values = remainder.split(';')
+ except ValueError:
+ raise RuntimeError(
+ "doesn't contain a semicolon separating the environment name "
+ 'from the values')
+ env_name = env_name_and_values[0]
+ values = env_name_and_values[1:]
+ for value in values:
+ if not value:
+ value = prefix
+ elif not os.path.isabs(value):
+ value = os.path.join(prefix, value)
+ if (
+ type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and
+ not os.path.exists(value)
+ ):
+ comment = f'skip extending {env_name} with not existing ' \
+ f'path: {value}'
+ if _include_comments():
+ commands.append(
+ FORMAT_STR_COMMENT_LINE.format_map({'comment': comment}))
+ elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE:
+ commands += _append_unique_value(env_name, value)
+ else:
+ commands += _prepend_unique_value(env_name, value)
+ else:
+ raise RuntimeError(
+ 'contains an unknown environment hook type: ' + type_)
+ return commands
+
+
+env_state = {}
+
+
+def _append_unique_value(name, value):
+ global env_state
+ if name not in env_state:
+ if os.environ.get(name):
+ env_state[name] = set(os.environ[name].split(os.pathsep))
+ else:
+ env_state[name] = set()
+ # append even if the variable has not been set yet, in case a shell script sets the
+ # same variable without the knowledge of this Python script.
+ # later _remove_ending_separators() will cleanup any unintentional leading separator
+ extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': extend + value})
+ if value not in env_state[name]:
+ env_state[name].add(value)
+ else:
+ if not _include_comments():
+ return []
+ line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+ return [line]
+
+
+def _prepend_unique_value(name, value):
+ global env_state
+ if name not in env_state:
+ if os.environ.get(name):
+ env_state[name] = set(os.environ[name].split(os.pathsep))
+ else:
+ env_state[name] = set()
+ # prepend even if the variable has not been set yet, in case a shell script sets the
+ # same variable without the knowledge of this Python script.
+ # later _remove_ending_separators() will cleanup any unintentional trailing separator
+ extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name})
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': value + extend})
+ if value not in env_state[name]:
+ env_state[name].add(value)
+ else:
+ if not _include_comments():
+ return []
+ line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+ return [line]
+
+
+# generate commands for removing prepended underscores
+def _remove_ending_separators():
+ # do nothing if the shell extension does not implement the logic
+ if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None:
+ return []
+
+ global env_state
+ commands = []
+ for name in env_state:
+ # skip variables that already had values before this script started prepending
+ if name in os.environ:
+ continue
+ commands += [
+ FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}),
+ FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})]
+ return commands
+
+
+def _set(name, value):
+ global env_state
+ env_state[name] = value
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': value})
+ return [line]
+
+
+def _set_if_unset(name, value):
+ global env_state
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': value})
+ if env_state.get(name, os.environ.get(name)):
+ line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+ return [line]
+
+
+if __name__ == '__main__': # pragma: no cover
+ try:
+ rc = main()
+ except RuntimeError as e:
+ print(str(e), file=sys.stderr)
+ rc = 1
+ sys.exit(rc)
diff --git a/src/install/_local_setup_util_sh.py b/src/install/_local_setup_util_sh.py
new file mode 100644
index 0000000..35c017b
--- /dev/null
+++ b/src/install/_local_setup_util_sh.py
@@ -0,0 +1,404 @@
+# Copyright 2016-2019 Dirk Thomas
+# Licensed under the Apache License, Version 2.0
+
+import argparse
+from collections import OrderedDict
+import os
+from pathlib import Path
+import sys
+
+
+FORMAT_STR_COMMENT_LINE = '# {comment}'
+FORMAT_STR_SET_ENV_VAR = 'export {name}="{value}"'
+FORMAT_STR_USE_ENV_VAR = '${name}'
+FORMAT_STR_INVOKE_SCRIPT = 'COLCON_CURRENT_PREFIX="{prefix}" _colcon_prefix_sh_source_script "{script_path}"'
+FORMAT_STR_REMOVE_LEADING_SEPARATOR = 'if [ "$(echo -n ${name} | head -c 1)" = ":" ]; then export {name}=${{{name}#?}} ; fi'
+FORMAT_STR_REMOVE_TRAILING_SEPARATOR = 'if [ "$(echo -n ${name} | tail -c 1)" = ":" ]; then export {name}=${{{name}%?}} ; fi'
+
+DSV_TYPE_APPEND_NON_DUPLICATE = 'append-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE = 'prepend-non-duplicate'
+DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS = 'prepend-non-duplicate-if-exists'
+DSV_TYPE_SET = 'set'
+DSV_TYPE_SET_IF_UNSET = 'set-if-unset'
+DSV_TYPE_SOURCE = 'source'
+
+
+def main(argv=sys.argv[1:]): # noqa: D103
+ parser = argparse.ArgumentParser(
+ description='Output shell commands for the packages in topological '
+ 'order')
+ parser.add_argument(
+ 'primary_extension',
+ help='The file extension of the primary shell')
+ parser.add_argument(
+ 'additional_extension', nargs='?',
+ help='The additional file extension to be considered')
+ parser.add_argument(
+ '--merged-install', action='store_true',
+ help='All install prefixes are merged into a single location')
+ args = parser.parse_args(argv)
+
+ packages = get_packages(Path(__file__).parent, args.merged_install)
+
+ ordered_packages = order_packages(packages)
+ for pkg_name in ordered_packages:
+ if _include_comments():
+ print(
+ FORMAT_STR_COMMENT_LINE.format_map(
+ {'comment': 'Package: ' + pkg_name}))
+ prefix = os.path.abspath(os.path.dirname(__file__))
+ if not args.merged_install:
+ prefix = os.path.join(prefix, pkg_name)
+ for line in get_commands(
+ pkg_name, prefix, args.primary_extension,
+ args.additional_extension
+ ):
+ print(line)
+
+ for line in _remove_ending_separators():
+ print(line)
+
+
+def get_packages(prefix_path, merged_install):
+ """
+ Find packages based on colcon-specific files created during installation.
+
+ :param Path prefix_path: The install prefix path of all packages
+ :param bool merged_install: The flag if the packages are all installed
+ directly in the prefix or if each package is installed in a subdirectory
+ named after the package
+ :returns: A mapping from the package name to the set of runtime
+ dependencies
+ :rtype: dict
+ """
+ packages = {}
+ # since importing colcon_core isn't feasible here the following constant
+ # must match colcon_core.location.get_relative_package_index_path()
+ subdirectory = 'share/colcon-core/packages'
+ if merged_install:
+ # return if workspace is empty
+ if not (prefix_path / subdirectory).is_dir():
+ return packages
+ # find all files in the subdirectory
+ for p in (prefix_path / subdirectory).iterdir():
+ if not p.is_file():
+ continue
+ if p.name.startswith('.'):
+ continue
+ add_package_runtime_dependencies(p, packages)
+ else:
+ # for each subdirectory look for the package specific file
+ for p in prefix_path.iterdir():
+ if not p.is_dir():
+ continue
+ if p.name.startswith('.'):
+ continue
+ p = p / subdirectory / p.name
+ if p.is_file():
+ add_package_runtime_dependencies(p, packages)
+
+ # remove unknown dependencies
+ pkg_names = set(packages.keys())
+ for k in packages.keys():
+ packages[k] = {d for d in packages[k] if d in pkg_names}
+
+ return packages
+
+
+def add_package_runtime_dependencies(path, packages):
+ """
+ Check the path and if it exists extract the packages runtime dependencies.
+
+ :param Path path: The resource file containing the runtime dependencies
+ :param dict packages: A mapping from package names to the sets of runtime
+ dependencies to add to
+ """
+ content = path.read_text()
+ dependencies = set(content.split(os.pathsep) if content else [])
+ packages[path.name] = dependencies
+
+
+def order_packages(packages):
+ """
+ Order packages topologically.
+
+ :param dict packages: A mapping from package name to the set of runtime
+ dependencies
+ :returns: The package names
+ :rtype: list
+ """
+ # select packages with no dependencies in alphabetical order
+ to_be_ordered = list(packages.keys())
+ ordered = []
+ while to_be_ordered:
+ pkg_names_without_deps = [
+ name for name in to_be_ordered if not packages[name]]
+ if not pkg_names_without_deps:
+ reduce_cycle_set(packages)
+ raise RuntimeError(
+ 'Circular dependency between: ' + ', '.join(sorted(packages)))
+ pkg_names_without_deps.sort()
+ pkg_name = pkg_names_without_deps[0]
+ to_be_ordered.remove(pkg_name)
+ ordered.append(pkg_name)
+ # remove item from dependency lists
+ for k in list(packages.keys()):
+ if pkg_name in packages[k]:
+ packages[k].remove(pkg_name)
+ return ordered
+
+
+def reduce_cycle_set(packages):
+ """
+ Reduce the set of packages to the ones part of the circular dependency.
+
+ :param dict packages: A mapping from package name to the set of runtime
+ dependencies which is modified in place
+ """
+ last_depended = None
+ while len(packages) > 0:
+ # get all remaining dependencies
+ depended = set()
+ for pkg_name, dependencies in packages.items():
+ depended = depended.union(dependencies)
+ # remove all packages which are not dependent on
+ for name in list(packages.keys()):
+ if name not in depended:
+ del packages[name]
+ if last_depended:
+ # if remaining packages haven't changed return them
+ if last_depended == depended:
+ return packages.keys()
+ # otherwise reduce again
+ last_depended = depended
+
+
+def _include_comments():
+ # skipping comment lines when COLCON_TRACE is not set speeds up the
+ # processing especially on Windows
+ return bool(os.environ.get('COLCON_TRACE'))
+
+
+def get_commands(pkg_name, prefix, primary_extension, additional_extension):
+ commands = []
+ package_dsv_path = os.path.join(prefix, 'share', pkg_name, 'package.dsv')
+ if os.path.exists(package_dsv_path):
+ commands += process_dsv_file(
+ package_dsv_path, prefix, primary_extension, additional_extension)
+ return commands
+
+
+def process_dsv_file(
+ dsv_path, prefix, primary_extension=None, additional_extension=None
+):
+ commands = []
+ if _include_comments():
+ commands.append(FORMAT_STR_COMMENT_LINE.format_map({'comment': dsv_path}))
+ with open(dsv_path, 'r') as h:
+ content = h.read()
+ lines = content.splitlines()
+
+ basenames = OrderedDict()
+ for i, line in enumerate(lines):
+ # skip over empty or whitespace-only lines
+ if not line.strip():
+ continue
+ try:
+ type_, remainder = line.split(';', 1)
+ except ValueError:
+ raise RuntimeError(
+ "Line %d in '%s' doesn't contain a semicolon separating the "
+ 'type from the arguments' % (i + 1, dsv_path))
+ if type_ != DSV_TYPE_SOURCE:
+ # handle non-source lines
+ try:
+ commands += handle_dsv_types_except_source(
+ type_, remainder, prefix)
+ except RuntimeError as e:
+ raise RuntimeError(
+ "Line %d in '%s' %s" % (i + 1, dsv_path, e)) from e
+ else:
+ # group remaining source lines by basename
+ path_without_ext, ext = os.path.splitext(remainder)
+ if path_without_ext not in basenames:
+ basenames[path_without_ext] = set()
+ assert ext.startswith('.')
+ ext = ext[1:]
+ if ext in (primary_extension, additional_extension):
+ basenames[path_without_ext].add(ext)
+
+ # add the dsv extension to each basename if the file exists
+ for basename, extensions in basenames.items():
+ if not os.path.isabs(basename):
+ basename = os.path.join(prefix, basename)
+ if os.path.exists(basename + '.dsv'):
+ extensions.add('dsv')
+
+ for basename, extensions in basenames.items():
+ if not os.path.isabs(basename):
+ basename = os.path.join(prefix, basename)
+ if 'dsv' in extensions:
+ # process dsv files recursively
+ commands += process_dsv_file(
+ basename + '.dsv', prefix, primary_extension=primary_extension,
+ additional_extension=additional_extension)
+ elif primary_extension in extensions and len(extensions) == 1:
+ # source primary-only files
+ commands += [
+ FORMAT_STR_INVOKE_SCRIPT.format_map({
+ 'prefix': prefix,
+ 'script_path': basename + '.' + primary_extension})]
+ elif additional_extension in extensions:
+ # source non-primary files
+ commands += [
+ FORMAT_STR_INVOKE_SCRIPT.format_map({
+ 'prefix': prefix,
+ 'script_path': basename + '.' + additional_extension})]
+
+ return commands
+
+
+def handle_dsv_types_except_source(type_, remainder, prefix):
+ commands = []
+ if type_ in (DSV_TYPE_SET, DSV_TYPE_SET_IF_UNSET):
+ try:
+ env_name, value = remainder.split(';', 1)
+ except ValueError:
+ raise RuntimeError(
+ "doesn't contain a semicolon separating the environment name "
+ 'from the value')
+ try_prefixed_value = os.path.join(prefix, value) if value else prefix
+ if os.path.exists(try_prefixed_value):
+ value = try_prefixed_value
+ if type_ == DSV_TYPE_SET:
+ commands += _set(env_name, value)
+ elif type_ == DSV_TYPE_SET_IF_UNSET:
+ commands += _set_if_unset(env_name, value)
+ else:
+ assert False
+ elif type_ in (
+ DSV_TYPE_APPEND_NON_DUPLICATE,
+ DSV_TYPE_PREPEND_NON_DUPLICATE,
+ DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS
+ ):
+ try:
+ env_name_and_values = remainder.split(';')
+ except ValueError:
+ raise RuntimeError(
+ "doesn't contain a semicolon separating the environment name "
+ 'from the values')
+ env_name = env_name_and_values[0]
+ values = env_name_and_values[1:]
+ for value in values:
+ if not value:
+ value = prefix
+ elif not os.path.isabs(value):
+ value = os.path.join(prefix, value)
+ if (
+ type_ == DSV_TYPE_PREPEND_NON_DUPLICATE_IF_EXISTS and
+ not os.path.exists(value)
+ ):
+ comment = f'skip extending {env_name} with not existing ' \
+ f'path: {value}'
+ if _include_comments():
+ commands.append(
+ FORMAT_STR_COMMENT_LINE.format_map({'comment': comment}))
+ elif type_ == DSV_TYPE_APPEND_NON_DUPLICATE:
+ commands += _append_unique_value(env_name, value)
+ else:
+ commands += _prepend_unique_value(env_name, value)
+ else:
+ raise RuntimeError(
+ 'contains an unknown environment hook type: ' + type_)
+ return commands
+
+
+env_state = {}
+
+
+def _append_unique_value(name, value):
+ global env_state
+ if name not in env_state:
+ if os.environ.get(name):
+ env_state[name] = set(os.environ[name].split(os.pathsep))
+ else:
+ env_state[name] = set()
+ # append even if the variable has not been set yet, in case a shell script sets the
+ # same variable without the knowledge of this Python script.
+ # later _remove_ending_separators() will cleanup any unintentional leading separator
+ extend = FORMAT_STR_USE_ENV_VAR.format_map({'name': name}) + os.pathsep
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': extend + value})
+ if value not in env_state[name]:
+ env_state[name].add(value)
+ else:
+ if not _include_comments():
+ return []
+ line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+ return [line]
+
+
+def _prepend_unique_value(name, value):
+ global env_state
+ if name not in env_state:
+ if os.environ.get(name):
+ env_state[name] = set(os.environ[name].split(os.pathsep))
+ else:
+ env_state[name] = set()
+ # prepend even if the variable has not been set yet, in case a shell script sets the
+ # same variable without the knowledge of this Python script.
+ # later _remove_ending_separators() will cleanup any unintentional trailing separator
+ extend = os.pathsep + FORMAT_STR_USE_ENV_VAR.format_map({'name': name})
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': value + extend})
+ if value not in env_state[name]:
+ env_state[name].add(value)
+ else:
+ if not _include_comments():
+ return []
+ line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+ return [line]
+
+
+# generate commands for removing prepended underscores
+def _remove_ending_separators():
+ # do nothing if the shell extension does not implement the logic
+ if FORMAT_STR_REMOVE_TRAILING_SEPARATOR is None:
+ return []
+
+ global env_state
+ commands = []
+ for name in env_state:
+ # skip variables that already had values before this script started prepending
+ if name in os.environ:
+ continue
+ commands += [
+ FORMAT_STR_REMOVE_LEADING_SEPARATOR.format_map({'name': name}),
+ FORMAT_STR_REMOVE_TRAILING_SEPARATOR.format_map({'name': name})]
+ return commands
+
+
+def _set(name, value):
+ global env_state
+ env_state[name] = value
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': value})
+ return [line]
+
+
+def _set_if_unset(name, value):
+ global env_state
+ line = FORMAT_STR_SET_ENV_VAR.format_map(
+ {'name': name, 'value': value})
+ if env_state.get(name, os.environ.get(name)):
+ line = FORMAT_STR_COMMENT_LINE.format_map({'comment': line})
+ return [line]
+
+
+if __name__ == '__main__': # pragma: no cover
+ try:
+ rc = main()
+ except RuntimeError as e:
+ print(str(e), file=sys.stderr)
+ rc = 1
+ sys.exit(rc)
diff --git a/src/install/image_processes/share/ament_index/resource_index/packages/image_processes b/src/install/image_processes/share/ament_index/resource_index/packages/image_processes
new file mode 100644
index 0000000..e69de29
diff --git a/src/install/image_processes/share/colcon-core/packages/image_processes b/src/install/image_processes/share/colcon-core/packages/image_processes
new file mode 100644
index 0000000..8b6d003
--- /dev/null
+++ b/src/install/image_processes/share/colcon-core/packages/image_processes
@@ -0,0 +1 @@
+setuptools
\ No newline at end of file
diff --git a/src/install/image_processes/share/image_processes/hook/pythonpath.dsv b/src/install/image_processes/share/image_processes/hook/pythonpath.dsv
new file mode 100644
index 0000000..257067d
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/hook/pythonpath.dsv
@@ -0,0 +1 @@
+prepend-non-duplicate;PYTHONPATH;lib/python3.10/site-packages
diff --git a/src/install/image_processes/share/image_processes/hook/pythonpath.ps1 b/src/install/image_processes/share/image_processes/hook/pythonpath.ps1
new file mode 100644
index 0000000..caffe83
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/hook/pythonpath.ps1
@@ -0,0 +1,3 @@
+# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
+
+colcon_prepend_unique_value PYTHONPATH "$env:COLCON_CURRENT_PREFIX\lib/python3.10/site-packages"
diff --git a/src/install/image_processes/share/image_processes/hook/pythonpath.sh b/src/install/image_processes/share/image_processes/hook/pythonpath.sh
new file mode 100644
index 0000000..660c348
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/hook/pythonpath.sh
@@ -0,0 +1,3 @@
+# generated from colcon_core/shell/template/hook_prepend_value.sh.em
+
+_colcon_prepend_unique_value PYTHONPATH "$COLCON_CURRENT_PREFIX/lib/python3.10/site-packages"
diff --git a/src/install/image_processes/share/image_processes/package.bash b/src/install/image_processes/share/image_processes/package.bash
new file mode 100644
index 0000000..76ecd21
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/package.bash
@@ -0,0 +1,31 @@
+# generated from colcon_bash/shell/template/package.bash.em
+
+# This script extends the environment for this package.
+
+# a bash script is able to determine its own path if necessary
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ # the prefix is two levels up from the package specific share directory
+ _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)"
+else
+ _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_bash_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$@"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# source sh script of this package
+_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/image_processes/package.sh"
+
+unset _colcon_package_bash_source_script
+unset _colcon_package_bash_COLCON_CURRENT_PREFIX
diff --git a/src/install/image_processes/share/image_processes/package.dsv b/src/install/image_processes/share/image_processes/package.dsv
new file mode 100644
index 0000000..d970ced
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/package.dsv
@@ -0,0 +1,3 @@
+source;share/image_processes/hook/pythonpath.ps1
+source;share/image_processes/hook/pythonpath.dsv
+source;share/image_processes/hook/pythonpath.sh
diff --git a/src/install/image_processes/share/image_processes/package.ps1 b/src/install/image_processes/share/image_processes/package.ps1
new file mode 100644
index 0000000..d5223ee
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/package.ps1
@@ -0,0 +1,115 @@
+# generated from colcon_powershell/shell/template/package.ps1.em
+
+# function to append a value to a variable
+# which uses colons as separators
+# duplicates as well as leading separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+function colcon_append_unique_value {
+ param (
+ $_listname,
+ $_value
+ )
+
+ # get values from variable
+ if (Test-Path Env:$_listname) {
+ $_values=(Get-Item env:$_listname).Value
+ } else {
+ $_values=""
+ }
+ $_duplicate=""
+ # start with no values
+ $_all_values=""
+ # iterate over existing values in the variable
+ if ($_values) {
+ $_values.Split(";") | ForEach {
+ # not an empty string
+ if ($_) {
+ # not a duplicate of _value
+ if ($_ -eq $_value) {
+ $_duplicate="1"
+ }
+ if ($_all_values) {
+ $_all_values="${_all_values};$_"
+ } else {
+ $_all_values="$_"
+ }
+ }
+ }
+ }
+ # append only non-duplicates
+ if (!$_duplicate) {
+ # avoid leading separator
+ if ($_all_values) {
+ $_all_values="${_all_values};${_value}"
+ } else {
+ $_all_values="${_value}"
+ }
+ }
+
+ # export the updated variable
+ Set-Item env:\$_listname -Value "$_all_values"
+}
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+function colcon_prepend_unique_value {
+ param (
+ $_listname,
+ $_value
+ )
+
+ # get values from variable
+ if (Test-Path Env:$_listname) {
+ $_values=(Get-Item env:$_listname).Value
+ } else {
+ $_values=""
+ }
+ # start with the new value
+ $_all_values="$_value"
+ # iterate over existing values in the variable
+ if ($_values) {
+ $_values.Split(";") | ForEach {
+ # not an empty string
+ if ($_) {
+ # not a duplicate of _value
+ if ($_ -ne $_value) {
+ # keep non-duplicate values
+ $_all_values="${_all_values};$_"
+ }
+ }
+ }
+ }
+ # export the updated variable
+ Set-Item env:\$_listname -Value "$_all_values"
+}
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+function colcon_package_source_powershell_script {
+ param (
+ $_colcon_package_source_powershell_script
+ )
+ # source script with conditional trace output
+ if (Test-Path $_colcon_package_source_powershell_script) {
+ if ($env:COLCON_TRACE) {
+ echo ". '$_colcon_package_source_powershell_script'"
+ }
+ . "$_colcon_package_source_powershell_script"
+ } else {
+ Write-Error "not found: '$_colcon_package_source_powershell_script'"
+ }
+}
+
+
+# a powershell script is able to determine its own path
+# the prefix is two levels up from the package specific share directory
+$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName
+
+colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/image_processes/hook/pythonpath.ps1"
+
+Remove-Item Env:\COLCON_CURRENT_PREFIX
diff --git a/src/install/image_processes/share/image_processes/package.sh b/src/install/image_processes/share/image_processes/package.sh
new file mode 100644
index 0000000..4e4910b
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/package.sh
@@ -0,0 +1,86 @@
+# generated from colcon_core/shell/template/package.sh.em
+
+# This script extends the environment for this package.
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+_colcon_prepend_unique_value() {
+ # arguments
+ _listname="$1"
+ _value="$2"
+
+ # get values from variable
+ eval _values=\"\$$_listname\"
+ # backup the field separator
+ _colcon_prepend_unique_value_IFS=$IFS
+ IFS=":"
+ # start with the new value
+ _all_values="$_value"
+ # workaround SH_WORD_SPLIT not being set in zsh
+ if [ "$(command -v colcon_zsh_convert_to_array)" ]; then
+ colcon_zsh_convert_to_array _values
+ fi
+ # iterate over existing values in the variable
+ for _item in $_values; do
+ # ignore empty strings
+ if [ -z "$_item" ]; then
+ continue
+ fi
+ # ignore duplicates of _value
+ if [ "$_item" = "$_value" ]; then
+ continue
+ fi
+ # keep non-duplicate values
+ _all_values="$_all_values:$_item"
+ done
+ unset _item
+ # restore the field separator
+ IFS=$_colcon_prepend_unique_value_IFS
+ unset _colcon_prepend_unique_value_IFS
+ # export the updated variable
+ eval export $_listname=\"$_all_values\"
+ unset _all_values
+ unset _values
+
+ unset _value
+ unset _listname
+}
+
+# since a plain shell script can't determine its own path when being sourced
+# either use the provided COLCON_CURRENT_PREFIX
+# or fall back to the build time prefix (if it exists)
+_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/garima/first_ws/src/install/image_processes"
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then
+ echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2
+ unset _colcon_package_sh_COLCON_CURRENT_PREFIX
+ return 1
+ fi
+ COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX"
+fi
+unset _colcon_package_sh_COLCON_CURRENT_PREFIX
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_sh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo "# . \"$1\""
+ fi
+ . "$@"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# source sh hooks
+_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/image_processes/hook/pythonpath.sh"
+
+unset _colcon_package_sh_source_script
+unset COLCON_CURRENT_PREFIX
+
+# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks
diff --git a/src/install/image_processes/share/image_processes/package.xml b/src/install/image_processes/share/image_processes/package.xml
new file mode 100644
index 0000000..4f2e226
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/package.xml
@@ -0,0 +1,26 @@
+
+
+
+ image_processes
+ 0.0.0
+ TODO: Package description
+ garima
+ TODO: License declaration
+
+rclpy
+rclpy.node
+sensor_msgs.msg
+cv_bridge
+
+
+ rclpy
+
+ ament_copyright
+ ament_flake8
+ ament_pep257
+ python3-pytest
+
+
+ ament_python
+
+
diff --git a/src/install/image_processes/share/image_processes/package.zsh b/src/install/image_processes/share/image_processes/package.zsh
new file mode 100644
index 0000000..61969cd
--- /dev/null
+++ b/src/install/image_processes/share/image_processes/package.zsh
@@ -0,0 +1,42 @@
+# generated from colcon_zsh/shell/template/package.zsh.em
+
+# This script extends the environment for this package.
+
+# a zsh script is able to determine its own path if necessary
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ # the prefix is two levels up from the package specific share directory
+ _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)"
+else
+ _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_zsh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$@"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# function to convert array-like strings into arrays
+# to workaround SH_WORD_SPLIT not being set
+colcon_zsh_convert_to_array() {
+ local _listname=$1
+ local _dollar="$"
+ local _split="{="
+ local _to_array="(\"$_dollar$_split$_listname}\")"
+ eval $_listname=$_to_array
+}
+
+# source sh script of this package
+_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/image_processes/package.sh"
+unset convert_zsh_to_array
+
+unset _colcon_package_zsh_source_script
+unset _colcon_package_zsh_COLCON_CURRENT_PREFIX
diff --git a/src/install/local_setup.bash b/src/install/local_setup.bash
new file mode 100644
index 0000000..efd5f8c
--- /dev/null
+++ b/src/install/local_setup.bash
@@ -0,0 +1,107 @@
+# generated from colcon_bash/shell/template/prefix.bash.em
+
+# This script extends the environment with all packages contained in this
+# prefix path.
+
+# a bash script is able to determine its own path if necessary
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)"
+else
+ _colcon_prefix_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+_colcon_prefix_bash_prepend_unique_value() {
+ # arguments
+ _listname="$1"
+ _value="$2"
+
+ # get values from variable
+ eval _values=\"\$$_listname\"
+ # backup the field separator
+ _colcon_prefix_bash_prepend_unique_value_IFS="$IFS"
+ IFS=":"
+ # start with the new value
+ _all_values="$_value"
+ # iterate over existing values in the variable
+ for _item in $_values; do
+ # ignore empty strings
+ if [ -z "$_item" ]; then
+ continue
+ fi
+ # ignore duplicates of _value
+ if [ "$_item" = "$_value" ]; then
+ continue
+ fi
+ # keep non-duplicate values
+ _all_values="$_all_values:$_item"
+ done
+ unset _item
+ # restore the field separator
+ IFS="$_colcon_prefix_bash_prepend_unique_value_IFS"
+ unset _colcon_prefix_bash_prepend_unique_value_IFS
+ # export the updated variable
+ eval export $_listname=\"$_all_values\"
+ unset _all_values
+ unset _values
+
+ unset _value
+ unset _listname
+}
+
+# add this prefix to the COLCON_PREFIX_PATH
+_colcon_prefix_bash_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX"
+unset _colcon_prefix_bash_prepend_unique_value
+
+# check environment variable for custom Python executable
+if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then
+ if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then
+ echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist"
+ return 1
+ fi
+ _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE"
+else
+ # try the Python executable known at configure time
+ _colcon_python_executable="/usr/bin/python3"
+ # if it doesn't exist try a fall back
+ if [ ! -f "$_colcon_python_executable" ]; then
+ if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then
+ echo "error: unable to find python3 executable"
+ return 1
+ fi
+ _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"`
+ fi
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+_colcon_prefix_sh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$1"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# get all commands in topological order
+_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_bash_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh bash)"
+unset _colcon_python_executable
+if [ -n "$COLCON_TRACE" ]; then
+ echo "Execute generated script:"
+ echo "<<<"
+ echo "${_colcon_ordered_commands}"
+ echo ">>>"
+fi
+eval "${_colcon_ordered_commands}"
+unset _colcon_ordered_commands
+
+unset _colcon_prefix_sh_source_script
+
+unset _colcon_prefix_bash_COLCON_CURRENT_PREFIX
diff --git a/src/install/local_setup.ps1 b/src/install/local_setup.ps1
new file mode 100644
index 0000000..6f68c8d
--- /dev/null
+++ b/src/install/local_setup.ps1
@@ -0,0 +1,55 @@
+# generated from colcon_powershell/shell/template/prefix.ps1.em
+
+# This script extends the environment with all packages contained in this
+# prefix path.
+
+# check environment variable for custom Python executable
+if ($env:COLCON_PYTHON_EXECUTABLE) {
+ if (!(Test-Path "$env:COLCON_PYTHON_EXECUTABLE" -PathType Leaf)) {
+ echo "error: COLCON_PYTHON_EXECUTABLE '$env:COLCON_PYTHON_EXECUTABLE' doesn't exist"
+ exit 1
+ }
+ $_colcon_python_executable="$env:COLCON_PYTHON_EXECUTABLE"
+} else {
+ # use the Python executable known at configure time
+ $_colcon_python_executable="/usr/bin/python3"
+ # if it doesn't exist try a fall back
+ if (!(Test-Path "$_colcon_python_executable" -PathType Leaf)) {
+ if (!(Get-Command "python3" -ErrorAction SilentlyContinue)) {
+ echo "error: unable to find python3 executable"
+ exit 1
+ }
+ $_colcon_python_executable="python3"
+ }
+}
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+function _colcon_prefix_powershell_source_script {
+ param (
+ $_colcon_prefix_powershell_source_script_param
+ )
+ # source script with conditional trace output
+ if (Test-Path $_colcon_prefix_powershell_source_script_param) {
+ if ($env:COLCON_TRACE) {
+ echo ". '$_colcon_prefix_powershell_source_script_param'"
+ }
+ . "$_colcon_prefix_powershell_source_script_param"
+ } else {
+ Write-Error "not found: '$_colcon_prefix_powershell_source_script_param'"
+ }
+}
+
+# get all commands in topological order
+$_colcon_ordered_commands = & "$_colcon_python_executable" "$(Split-Path $PSCommandPath -Parent)/_local_setup_util_ps1.py" ps1
+
+# execute all commands in topological order
+if ($env:COLCON_TRACE) {
+ echo "Execute generated script:"
+ echo "<<<"
+ $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Write-Output
+ echo ">>>"
+}
+if ($_colcon_ordered_commands) {
+ $_colcon_ordered_commands.Split([Environment]::NewLine, [StringSplitOptions]::RemoveEmptyEntries) | Invoke-Expression
+}
diff --git a/src/install/local_setup.sh b/src/install/local_setup.sh
new file mode 100644
index 0000000..233da7c
--- /dev/null
+++ b/src/install/local_setup.sh
@@ -0,0 +1,137 @@
+# generated from colcon_core/shell/template/prefix.sh.em
+
+# This script extends the environment with all packages contained in this
+# prefix path.
+
+# since a plain shell script can't determine its own path when being sourced
+# either use the provided COLCON_CURRENT_PREFIX
+# or fall back to the build time prefix (if it exists)
+_colcon_prefix_sh_COLCON_CURRENT_PREFIX="/home/garima/first_ws/src/install"
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ if [ ! -d "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX" ]; then
+ echo "The build time path \"$_colcon_prefix_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2
+ unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX
+ return 1
+ fi
+else
+ _colcon_prefix_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+_colcon_prefix_sh_prepend_unique_value() {
+ # arguments
+ _listname="$1"
+ _value="$2"
+
+ # get values from variable
+ eval _values=\"\$$_listname\"
+ # backup the field separator
+ _colcon_prefix_sh_prepend_unique_value_IFS="$IFS"
+ IFS=":"
+ # start with the new value
+ _all_values="$_value"
+ _contained_value=""
+ # iterate over existing values in the variable
+ for _item in $_values; do
+ # ignore empty strings
+ if [ -z "$_item" ]; then
+ continue
+ fi
+ # ignore duplicates of _value
+ if [ "$_item" = "$_value" ]; then
+ _contained_value=1
+ continue
+ fi
+ # keep non-duplicate values
+ _all_values="$_all_values:$_item"
+ done
+ unset _item
+ if [ -z "$_contained_value" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ if [ "$_all_values" = "$_value" ]; then
+ echo "export $_listname=$_value"
+ else
+ echo "export $_listname=$_value:\$$_listname"
+ fi
+ fi
+ fi
+ unset _contained_value
+ # restore the field separator
+ IFS="$_colcon_prefix_sh_prepend_unique_value_IFS"
+ unset _colcon_prefix_sh_prepend_unique_value_IFS
+ # export the updated variable
+ eval export $_listname=\"$_all_values\"
+ unset _all_values
+ unset _values
+
+ unset _value
+ unset _listname
+}
+
+# add this prefix to the COLCON_PREFIX_PATH
+_colcon_prefix_sh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX"
+unset _colcon_prefix_sh_prepend_unique_value
+
+# check environment variable for custom Python executable
+if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then
+ if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then
+ echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist"
+ return 1
+ fi
+ _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE"
+else
+ # try the Python executable known at configure time
+ _colcon_python_executable="/usr/bin/python3"
+ # if it doesn't exist try a fall back
+ if [ ! -f "$_colcon_python_executable" ]; then
+ if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then
+ echo "error: unable to find python3 executable"
+ return 1
+ fi
+ _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"`
+ fi
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+_colcon_prefix_sh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo "# . \"$1\""
+ fi
+ . "$1"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# get all commands in topological order
+_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_sh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh)"
+unset _colcon_python_executable
+if [ -n "$COLCON_TRACE" ]; then
+ echo "_colcon_prefix_sh_source_script() {
+ if [ -f \"\$1\" ]; then
+ if [ -n \"\$COLCON_TRACE\" ]; then
+ echo \"# . \\\"\$1\\\"\"
+ fi
+ . \"\$1\"
+ else
+ echo \"not found: \\\"\$1\\\"\" 1>&2
+ fi
+ }"
+ echo "# Execute generated script:"
+ echo "# <<<"
+ echo "${_colcon_ordered_commands}"
+ echo "# >>>"
+ echo "unset _colcon_prefix_sh_source_script"
+fi
+eval "${_colcon_ordered_commands}"
+unset _colcon_ordered_commands
+
+unset _colcon_prefix_sh_source_script
+
+unset _colcon_prefix_sh_COLCON_CURRENT_PREFIX
diff --git a/src/install/local_setup.zsh b/src/install/local_setup.zsh
new file mode 100644
index 0000000..f7a8d90
--- /dev/null
+++ b/src/install/local_setup.zsh
@@ -0,0 +1,120 @@
+# generated from colcon_zsh/shell/template/prefix.zsh.em
+
+# This script extends the environment with all packages contained in this
+# prefix path.
+
+# a zsh script is able to determine its own path if necessary
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)"
+else
+ _colcon_prefix_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to convert array-like strings into arrays
+# to workaround SH_WORD_SPLIT not being set
+_colcon_prefix_zsh_convert_to_array() {
+ local _listname=$1
+ local _dollar="$"
+ local _split="{="
+ local _to_array="(\"$_dollar$_split$_listname}\")"
+ eval $_listname=$_to_array
+}
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+_colcon_prefix_zsh_prepend_unique_value() {
+ # arguments
+ _listname="$1"
+ _value="$2"
+
+ # get values from variable
+ eval _values=\"\$$_listname\"
+ # backup the field separator
+ _colcon_prefix_zsh_prepend_unique_value_IFS="$IFS"
+ IFS=":"
+ # start with the new value
+ _all_values="$_value"
+ # workaround SH_WORD_SPLIT not being set
+ _colcon_prefix_zsh_convert_to_array _values
+ # iterate over existing values in the variable
+ for _item in $_values; do
+ # ignore empty strings
+ if [ -z "$_item" ]; then
+ continue
+ fi
+ # ignore duplicates of _value
+ if [ "$_item" = "$_value" ]; then
+ continue
+ fi
+ # keep non-duplicate values
+ _all_values="$_all_values:$_item"
+ done
+ unset _item
+ # restore the field separator
+ IFS="$_colcon_prefix_zsh_prepend_unique_value_IFS"
+ unset _colcon_prefix_zsh_prepend_unique_value_IFS
+ # export the updated variable
+ eval export $_listname=\"$_all_values\"
+ unset _all_values
+ unset _values
+
+ unset _value
+ unset _listname
+}
+
+# add this prefix to the COLCON_PREFIX_PATH
+_colcon_prefix_zsh_prepend_unique_value COLCON_PREFIX_PATH "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX"
+unset _colcon_prefix_zsh_prepend_unique_value
+unset _colcon_prefix_zsh_convert_to_array
+
+# check environment variable for custom Python executable
+if [ -n "$COLCON_PYTHON_EXECUTABLE" ]; then
+ if [ ! -f "$COLCON_PYTHON_EXECUTABLE" ]; then
+ echo "error: COLCON_PYTHON_EXECUTABLE '$COLCON_PYTHON_EXECUTABLE' doesn't exist"
+ return 1
+ fi
+ _colcon_python_executable="$COLCON_PYTHON_EXECUTABLE"
+else
+ # try the Python executable known at configure time
+ _colcon_python_executable="/usr/bin/python3"
+ # if it doesn't exist try a fall back
+ if [ ! -f "$_colcon_python_executable" ]; then
+ if ! /usr/bin/env python3 --version > /dev/null 2> /dev/null; then
+ echo "error: unable to find python3 executable"
+ return 1
+ fi
+ _colcon_python_executable=`/usr/bin/env python3 -c "import sys; print(sys.executable)"`
+ fi
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+_colcon_prefix_sh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$1"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# get all commands in topological order
+_colcon_ordered_commands="$($_colcon_python_executable "$_colcon_prefix_zsh_COLCON_CURRENT_PREFIX/_local_setup_util_sh.py" sh zsh)"
+unset _colcon_python_executable
+if [ -n "$COLCON_TRACE" ]; then
+ echo "Execute generated script:"
+ echo "<<<"
+ echo "${_colcon_ordered_commands}"
+ echo ">>>"
+fi
+eval "${_colcon_ordered_commands}"
+unset _colcon_ordered_commands
+
+unset _colcon_prefix_sh_source_script
+
+unset _colcon_prefix_zsh_COLCON_CURRENT_PREFIX
diff --git a/src/install/robot_controller/share/ament_index/resource_index/packages/robot_controller b/src/install/robot_controller/share/ament_index/resource_index/packages/robot_controller
new file mode 100644
index 0000000..e69de29
diff --git a/src/install/robot_controller/share/colcon-core/packages/robot_controller b/src/install/robot_controller/share/colcon-core/packages/robot_controller
new file mode 100644
index 0000000..aff3120
--- /dev/null
+++ b/src/install/robot_controller/share/colcon-core/packages/robot_controller
@@ -0,0 +1 @@
+rclpy
\ No newline at end of file
diff --git a/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.dsv b/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.dsv
new file mode 100644
index 0000000..79d4c95
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.dsv
@@ -0,0 +1 @@
+prepend-non-duplicate;AMENT_PREFIX_PATH;
diff --git a/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.ps1 b/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.ps1
new file mode 100644
index 0000000..26b9997
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.ps1
@@ -0,0 +1,3 @@
+# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
+
+colcon_prepend_unique_value AMENT_PREFIX_PATH "$env:COLCON_CURRENT_PREFIX"
diff --git a/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.sh b/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.sh
new file mode 100644
index 0000000..f3041f6
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.sh
@@ -0,0 +1,3 @@
+# generated from colcon_core/shell/template/hook_prepend_value.sh.em
+
+_colcon_prepend_unique_value AMENT_PREFIX_PATH "$COLCON_CURRENT_PREFIX"
diff --git a/src/install/robot_controller/share/robot_controller/hook/pythonpath.dsv b/src/install/robot_controller/share/robot_controller/hook/pythonpath.dsv
new file mode 100644
index 0000000..257067d
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/hook/pythonpath.dsv
@@ -0,0 +1 @@
+prepend-non-duplicate;PYTHONPATH;lib/python3.10/site-packages
diff --git a/src/install/robot_controller/share/robot_controller/hook/pythonpath.ps1 b/src/install/robot_controller/share/robot_controller/hook/pythonpath.ps1
new file mode 100644
index 0000000..caffe83
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/hook/pythonpath.ps1
@@ -0,0 +1,3 @@
+# generated from colcon_powershell/shell/template/hook_prepend_value.ps1.em
+
+colcon_prepend_unique_value PYTHONPATH "$env:COLCON_CURRENT_PREFIX\lib/python3.10/site-packages"
diff --git a/src/install/robot_controller/share/robot_controller/hook/pythonpath.sh b/src/install/robot_controller/share/robot_controller/hook/pythonpath.sh
new file mode 100644
index 0000000..660c348
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/hook/pythonpath.sh
@@ -0,0 +1,3 @@
+# generated from colcon_core/shell/template/hook_prepend_value.sh.em
+
+_colcon_prepend_unique_value PYTHONPATH "$COLCON_CURRENT_PREFIX/lib/python3.10/site-packages"
diff --git a/src/install/robot_controller/share/robot_controller/package.bash b/src/install/robot_controller/share/robot_controller/package.bash
new file mode 100644
index 0000000..981020b
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/package.bash
@@ -0,0 +1,31 @@
+# generated from colcon_bash/shell/template/package.bash.em
+
+# This script extends the environment for this package.
+
+# a bash script is able to determine its own path if necessary
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ # the prefix is two levels up from the package specific share directory
+ _colcon_package_bash_COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`/../.." > /dev/null && pwd)"
+else
+ _colcon_package_bash_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_bash_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$@"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# source sh script of this package
+_colcon_package_bash_source_script "$_colcon_package_bash_COLCON_CURRENT_PREFIX/share/robot_controller/package.sh"
+
+unset _colcon_package_bash_source_script
+unset _colcon_package_bash_COLCON_CURRENT_PREFIX
diff --git a/src/install/robot_controller/share/robot_controller/package.dsv b/src/install/robot_controller/share/robot_controller/package.dsv
new file mode 100644
index 0000000..59a10b1
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/package.dsv
@@ -0,0 +1,6 @@
+source;share/robot_controller/hook/pythonpath.ps1
+source;share/robot_controller/hook/pythonpath.dsv
+source;share/robot_controller/hook/pythonpath.sh
+source;share/robot_controller/hook/ament_prefix_path.ps1
+source;share/robot_controller/hook/ament_prefix_path.dsv
+source;share/robot_controller/hook/ament_prefix_path.sh
diff --git a/src/install/robot_controller/share/robot_controller/package.ps1 b/src/install/robot_controller/share/robot_controller/package.ps1
new file mode 100644
index 0000000..61ed3aa
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/package.ps1
@@ -0,0 +1,116 @@
+# generated from colcon_powershell/shell/template/package.ps1.em
+
+# function to append a value to a variable
+# which uses colons as separators
+# duplicates as well as leading separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+function colcon_append_unique_value {
+ param (
+ $_listname,
+ $_value
+ )
+
+ # get values from variable
+ if (Test-Path Env:$_listname) {
+ $_values=(Get-Item env:$_listname).Value
+ } else {
+ $_values=""
+ }
+ $_duplicate=""
+ # start with no values
+ $_all_values=""
+ # iterate over existing values in the variable
+ if ($_values) {
+ $_values.Split(";") | ForEach {
+ # not an empty string
+ if ($_) {
+ # not a duplicate of _value
+ if ($_ -eq $_value) {
+ $_duplicate="1"
+ }
+ if ($_all_values) {
+ $_all_values="${_all_values};$_"
+ } else {
+ $_all_values="$_"
+ }
+ }
+ }
+ }
+ # append only non-duplicates
+ if (!$_duplicate) {
+ # avoid leading separator
+ if ($_all_values) {
+ $_all_values="${_all_values};${_value}"
+ } else {
+ $_all_values="${_value}"
+ }
+ }
+
+ # export the updated variable
+ Set-Item env:\$_listname -Value "$_all_values"
+}
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+function colcon_prepend_unique_value {
+ param (
+ $_listname,
+ $_value
+ )
+
+ # get values from variable
+ if (Test-Path Env:$_listname) {
+ $_values=(Get-Item env:$_listname).Value
+ } else {
+ $_values=""
+ }
+ # start with the new value
+ $_all_values="$_value"
+ # iterate over existing values in the variable
+ if ($_values) {
+ $_values.Split(";") | ForEach {
+ # not an empty string
+ if ($_) {
+ # not a duplicate of _value
+ if ($_ -ne $_value) {
+ # keep non-duplicate values
+ $_all_values="${_all_values};$_"
+ }
+ }
+ }
+ }
+ # export the updated variable
+ Set-Item env:\$_listname -Value "$_all_values"
+}
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+function colcon_package_source_powershell_script {
+ param (
+ $_colcon_package_source_powershell_script
+ )
+ # source script with conditional trace output
+ if (Test-Path $_colcon_package_source_powershell_script) {
+ if ($env:COLCON_TRACE) {
+ echo ". '$_colcon_package_source_powershell_script'"
+ }
+ . "$_colcon_package_source_powershell_script"
+ } else {
+ Write-Error "not found: '$_colcon_package_source_powershell_script'"
+ }
+}
+
+
+# a powershell script is able to determine its own path
+# the prefix is two levels up from the package specific share directory
+$env:COLCON_CURRENT_PREFIX=(Get-Item $PSCommandPath).Directory.Parent.Parent.FullName
+
+colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/robot_controller/hook/pythonpath.ps1"
+colcon_package_source_powershell_script "$env:COLCON_CURRENT_PREFIX\share/robot_controller/hook/ament_prefix_path.ps1"
+
+Remove-Item Env:\COLCON_CURRENT_PREFIX
diff --git a/src/install/robot_controller/share/robot_controller/package.sh b/src/install/robot_controller/share/robot_controller/package.sh
new file mode 100644
index 0000000..14cf793
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/package.sh
@@ -0,0 +1,87 @@
+# generated from colcon_core/shell/template/package.sh.em
+
+# This script extends the environment for this package.
+
+# function to prepend a value to a variable
+# which uses colons as separators
+# duplicates as well as trailing separators are avoided
+# first argument: the name of the result variable
+# second argument: the value to be prepended
+_colcon_prepend_unique_value() {
+ # arguments
+ _listname="$1"
+ _value="$2"
+
+ # get values from variable
+ eval _values=\"\$$_listname\"
+ # backup the field separator
+ _colcon_prepend_unique_value_IFS=$IFS
+ IFS=":"
+ # start with the new value
+ _all_values="$_value"
+ # workaround SH_WORD_SPLIT not being set in zsh
+ if [ "$(command -v colcon_zsh_convert_to_array)" ]; then
+ colcon_zsh_convert_to_array _values
+ fi
+ # iterate over existing values in the variable
+ for _item in $_values; do
+ # ignore empty strings
+ if [ -z "$_item" ]; then
+ continue
+ fi
+ # ignore duplicates of _value
+ if [ "$_item" = "$_value" ]; then
+ continue
+ fi
+ # keep non-duplicate values
+ _all_values="$_all_values:$_item"
+ done
+ unset _item
+ # restore the field separator
+ IFS=$_colcon_prepend_unique_value_IFS
+ unset _colcon_prepend_unique_value_IFS
+ # export the updated variable
+ eval export $_listname=\"$_all_values\"
+ unset _all_values
+ unset _values
+
+ unset _value
+ unset _listname
+}
+
+# since a plain shell script can't determine its own path when being sourced
+# either use the provided COLCON_CURRENT_PREFIX
+# or fall back to the build time prefix (if it exists)
+_colcon_package_sh_COLCON_CURRENT_PREFIX="/home/garima/first_ws/src/install/robot_controller"
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ if [ ! -d "$_colcon_package_sh_COLCON_CURRENT_PREFIX" ]; then
+ echo "The build time path \"$_colcon_package_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2
+ unset _colcon_package_sh_COLCON_CURRENT_PREFIX
+ return 1
+ fi
+ COLCON_CURRENT_PREFIX="$_colcon_package_sh_COLCON_CURRENT_PREFIX"
+fi
+unset _colcon_package_sh_COLCON_CURRENT_PREFIX
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_sh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo "# . \"$1\""
+ fi
+ . "$@"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# source sh hooks
+_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/robot_controller/hook/pythonpath.sh"
+_colcon_package_sh_source_script "$COLCON_CURRENT_PREFIX/share/robot_controller/hook/ament_prefix_path.sh"
+
+unset _colcon_package_sh_source_script
+unset COLCON_CURRENT_PREFIX
+
+# do not unset _colcon_prepend_unique_value since it might be used by non-primary shell hooks
diff --git a/src/install/robot_controller/share/robot_controller/package.xml b/src/install/robot_controller/share/robot_controller/package.xml
new file mode 100644
index 0000000..6014da1
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/package.xml
@@ -0,0 +1,20 @@
+
+
+
+ robot_controller
+ 0.0.0
+ TODO: Package description
+ garima
+ TODO: License declaration
+
+ rclpy
+
+ ament_copyright
+ ament_flake8
+ ament_pep257
+ python3-pytest
+
+
+ ament_python
+
+
diff --git a/src/install/robot_controller/share/robot_controller/package.zsh b/src/install/robot_controller/share/robot_controller/package.zsh
new file mode 100644
index 0000000..c3416bc
--- /dev/null
+++ b/src/install/robot_controller/share/robot_controller/package.zsh
@@ -0,0 +1,42 @@
+# generated from colcon_zsh/shell/template/package.zsh.em
+
+# This script extends the environment for this package.
+
+# a zsh script is able to determine its own path if necessary
+if [ -z "$COLCON_CURRENT_PREFIX" ]; then
+ # the prefix is two levels up from the package specific share directory
+ _colcon_package_zsh_COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`/../.." > /dev/null && pwd)"
+else
+ _colcon_package_zsh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+# additional arguments: arguments to the script
+_colcon_package_zsh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$@"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# function to convert array-like strings into arrays
+# to workaround SH_WORD_SPLIT not being set
+colcon_zsh_convert_to_array() {
+ local _listname=$1
+ local _dollar="$"
+ local _split="{="
+ local _to_array="(\"$_dollar$_split$_listname}\")"
+ eval $_listname=$_to_array
+}
+
+# source sh script of this package
+_colcon_package_zsh_source_script "$_colcon_package_zsh_COLCON_CURRENT_PREFIX/share/robot_controller/package.sh"
+unset convert_zsh_to_array
+
+unset _colcon_package_zsh_source_script
+unset _colcon_package_zsh_COLCON_CURRENT_PREFIX
diff --git a/src/install/setup.bash b/src/install/setup.bash
new file mode 100644
index 0000000..82353e4
--- /dev/null
+++ b/src/install/setup.bash
@@ -0,0 +1,34 @@
+# generated from colcon_bash/shell/template/prefix_chain.bash.em
+
+# This script extends the environment with the environment of other prefix
+# paths which were sourced when this file was generated as well as all packages
+# contained in this prefix path.
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+_colcon_prefix_chain_bash_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$1"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# source chained prefixes
+# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
+COLCON_CURRENT_PREFIX="/opt/ros/rolling"
+_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash"
+# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
+COLCON_CURRENT_PREFIX="/home/garima/first_ws/install"
+_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash"
+
+# source this prefix
+# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
+COLCON_CURRENT_PREFIX="$(builtin cd "`dirname "${BASH_SOURCE[0]}"`" > /dev/null && pwd)"
+_colcon_prefix_chain_bash_source_script "$COLCON_CURRENT_PREFIX/local_setup.bash"
+
+unset COLCON_CURRENT_PREFIX
+unset _colcon_prefix_chain_bash_source_script
diff --git a/src/install/setup.ps1 b/src/install/setup.ps1
new file mode 100644
index 0000000..39449c2
--- /dev/null
+++ b/src/install/setup.ps1
@@ -0,0 +1,30 @@
+# generated from colcon_powershell/shell/template/prefix_chain.ps1.em
+
+# This script extends the environment with the environment of other prefix
+# paths which were sourced when this file was generated as well as all packages
+# contained in this prefix path.
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+function _colcon_prefix_chain_powershell_source_script {
+ param (
+ $_colcon_prefix_chain_powershell_source_script_param
+ )
+ # source script with conditional trace output
+ if (Test-Path $_colcon_prefix_chain_powershell_source_script_param) {
+ if ($env:COLCON_TRACE) {
+ echo ". '$_colcon_prefix_chain_powershell_source_script_param'"
+ }
+ . "$_colcon_prefix_chain_powershell_source_script_param"
+ } else {
+ Write-Error "not found: '$_colcon_prefix_chain_powershell_source_script_param'"
+ }
+}
+
+# source chained prefixes
+_colcon_prefix_chain_powershell_source_script "/opt/ros/rolling\local_setup.ps1"
+_colcon_prefix_chain_powershell_source_script "/home/garima/first_ws/install\local_setup.ps1"
+
+# source this prefix
+$env:COLCON_CURRENT_PREFIX=(Split-Path $PSCommandPath -Parent)
+_colcon_prefix_chain_powershell_source_script "$env:COLCON_CURRENT_PREFIX\local_setup.ps1"
diff --git a/src/install/setup.sh b/src/install/setup.sh
new file mode 100644
index 0000000..955715e
--- /dev/null
+++ b/src/install/setup.sh
@@ -0,0 +1,49 @@
+# generated from colcon_core/shell/template/prefix_chain.sh.em
+
+# This script extends the environment with the environment of other prefix
+# paths which were sourced when this file was generated as well as all packages
+# contained in this prefix path.
+
+# since a plain shell script can't determine its own path when being sourced
+# either use the provided COLCON_CURRENT_PREFIX
+# or fall back to the build time prefix (if it exists)
+_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX=/home/garima/first_ws/src/install
+if [ ! -z "$COLCON_CURRENT_PREFIX" ]; then
+ _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX="$COLCON_CURRENT_PREFIX"
+elif [ ! -d "$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX" ]; then
+ echo "The build time path \"$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX\" doesn't exist. Either source a script for a different shell or set the environment variable \"COLCON_CURRENT_PREFIX\" explicitly." 1>&2
+ unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX
+ return 1
+fi
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+_colcon_prefix_chain_sh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo "# . \"$1\""
+ fi
+ . "$1"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# source chained prefixes
+# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script
+COLCON_CURRENT_PREFIX="/opt/ros/rolling"
+_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh"
+
+# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script
+COLCON_CURRENT_PREFIX="/home/garima/first_ws/install"
+_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh"
+
+
+# source this prefix
+# setting COLCON_CURRENT_PREFIX avoids relying on the build time prefix of the sourced script
+COLCON_CURRENT_PREFIX="$_colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX"
+_colcon_prefix_chain_sh_source_script "$COLCON_CURRENT_PREFIX/local_setup.sh"
+
+unset _colcon_prefix_chain_sh_COLCON_CURRENT_PREFIX
+unset _colcon_prefix_chain_sh_source_script
+unset COLCON_CURRENT_PREFIX
diff --git a/src/install/setup.zsh b/src/install/setup.zsh
new file mode 100644
index 0000000..7bfb8cd
--- /dev/null
+++ b/src/install/setup.zsh
@@ -0,0 +1,34 @@
+# generated from colcon_zsh/shell/template/prefix_chain.zsh.em
+
+# This script extends the environment with the environment of other prefix
+# paths which were sourced when this file was generated as well as all packages
+# contained in this prefix path.
+
+# function to source another script with conditional trace output
+# first argument: the path of the script
+_colcon_prefix_chain_zsh_source_script() {
+ if [ -f "$1" ]; then
+ if [ -n "$COLCON_TRACE" ]; then
+ echo ". \"$1\""
+ fi
+ . "$1"
+ else
+ echo "not found: \"$1\"" 1>&2
+ fi
+}
+
+# source chained prefixes
+# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
+COLCON_CURRENT_PREFIX="/opt/ros/rolling"
+_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh"
+# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
+COLCON_CURRENT_PREFIX="/home/garima/first_ws/install"
+_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh"
+
+# source this prefix
+# setting COLCON_CURRENT_PREFIX avoids determining the prefix in the sourced script
+COLCON_CURRENT_PREFIX="$(builtin cd -q "`dirname "${(%):-%N}"`" > /dev/null && pwd)"
+_colcon_prefix_chain_zsh_source_script "$COLCON_CURRENT_PREFIX/local_setup.zsh"
+
+unset COLCON_CURRENT_PREFIX
+unset _colcon_prefix_chain_zsh_source_script
diff --git a/src/log/COLCON_IGNORE b/src/log/COLCON_IGNORE
new file mode 100644
index 0000000..e69de29
diff --git a/src/log/build_2023-05-25_14-03-54/events.log b/src/log/build_2023-05-25_14-03-54/events.log
new file mode 100644
index 0000000..b7d564b
--- /dev/null
+++ b/src/log/build_2023-05-25_14-03-54/events.log
@@ -0,0 +1,45 @@
+[0.000000] (-) TimerEvent: {}
+[0.000110] (robot_controller) JobQueued: {'identifier': 'robot_controller', 'dependencies': OrderedDict()}
+[0.000166] (robot_controller) JobStarted: {'identifier': 'robot_controller'}
+[0.099295] (-) TimerEvent: {}
+[0.199537] (-) TimerEvent: {}
+[0.299768] (-) TimerEvent: {}
+[0.374792] (robot_controller) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', '../build/robot_controller', 'build', '--build-base', '/home/garima/first_ws/src/build/robot_controller/build', 'install', '--record', '/home/garima/first_ws/src/build/robot_controller/install.log', '--single-version-externally-managed'], 'cwd': '/home/garima/first_ws/src/robot_controller', 'env': {'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'garima', 'XDG_SESSION_TYPE': 'wayland', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/opt/ros/rolling/opt/rviz_ogre_vendor/lib:/opt/ros/rolling/lib/x86_64-linux-gnu:/opt/ros/rolling/lib', 'HOME': '/home/garima', 'OLDPWD': '/home/garima/first_ws/src/robot_controller', 'DESKTOP_SESSION': 'ubuntu', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'SYSTEMD_EXEC_PID': '1658', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'COLORTERM': 'truecolor', 'IM_CONFIG_PHASE': '1', 'WAYLAND_DISPLAY': 'wayland-0', 'ROS_DISTRO': 'rolling', 'LOGNAME': 'garima', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_SESSION_CLASS': 'user', 'USERNAME': 'garima', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'PATH': '/opt/ros/rolling/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/garima-HP-Pavilion-Laptop-14-ec1xxx:@/tmp/.ICE-unix/1640,unix/garima-HP-Pavilion-Laptop-14-ec1xxx:/tmp/.ICE-unix/1640', 'XDG_MENU_PREFIX': 'gnome-', 'GNOME_TERMINAL_SCREEN': '/org/gnome/Terminal/screen/0f96b0ed_44f2_46bd_a738_8a94b8deb2dd', 'GNOME_SETUP_DISPLAY': ':1', 'XDG_RUNTIME_DIR': '/run/user/1000', 'DISPLAY': ':0', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1000/.mutter-Xwaylandauth.AFV541', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'GNOME_TERMINAL_SERVICE': ':1.131', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'AMENT_PREFIX_PATH': '/opt/ros/rolling', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'ROS_AUTOMATIC_DISCOVERY_RANGE': 'SUBNET', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/garima/first_ws/src/build/robot_controller', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:/opt/ros/rolling/lib/python3.10/site-packages', 'COLCON': '1', 'VTE_VERSION': '6800'}, 'shell': False}
+[0.399946] (-) TimerEvent: {}
+[0.500159] (-) TimerEvent: {}
+[0.518493] (robot_controller) StdoutLine: {'line': b'running egg_info\n'}
+[0.518900] (robot_controller) StdoutLine: {'line': b'creating ../build/robot_controller/robot_controller.egg-info\n'}
+[0.519079] (robot_controller) StdoutLine: {'line': b'writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO\n'}
+[0.519269] (robot_controller) StdoutLine: {'line': b'writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt\n'}
+[0.519377] (robot_controller) StdoutLine: {'line': b'writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt\n'}
+[0.519484] (robot_controller) StdoutLine: {'line': b'writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt\n'}
+[0.519558] (robot_controller) StdoutLine: {'line': b'writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt\n'}
+[0.519605] (robot_controller) StdoutLine: {'line': b"writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'\n"}
+[0.520382] (robot_controller) StdoutLine: {'line': b"reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'\n"}
+[0.520802] (robot_controller) StdoutLine: {'line': b"writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'\n"}
+[0.520897] (robot_controller) StdoutLine: {'line': b'running build\n'}
+[0.520969] (robot_controller) StdoutLine: {'line': b'running build_py\n'}
+[0.521056] (robot_controller) StdoutLine: {'line': b'creating /home/garima/first_ws/src/build/robot_controller/build\n'}
+[0.521113] (robot_controller) StdoutLine: {'line': b'creating /home/garima/first_ws/src/build/robot_controller/build/lib\n'}
+[0.521165] (robot_controller) StdoutLine: {'line': b'creating /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller\n'}
+[0.521214] (robot_controller) StdoutLine: {'line': b'copying robot_controller/__init__.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller\n'}
+[0.521276] (robot_controller) StdoutLine: {'line': b'running install\n'}
+[0.521356] (robot_controller) StderrLine: {'line': b'/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.\n'}
+[0.521435] (robot_controller) StderrLine: {'line': b' warnings.warn(\n'}
+[0.521496] (robot_controller) StdoutLine: {'line': b'running install_lib\n'}
+[0.521852] (robot_controller) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller\n'}
+[0.521920] (robot_controller) StdoutLine: {'line': b'copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/__init__.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller\n'}
+[0.522166] (robot_controller) StdoutLine: {'line': b'byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/__init__.py to __init__.cpython-310.pyc\n'}
+[0.522280] (robot_controller) StdoutLine: {'line': b'running install_data\n'}
+[0.522571] (robot_controller) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/robot_controller/share/ament_index\n'}
+[0.522667] (robot_controller) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index\n'}
+[0.522728] (robot_controller) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages\n'}
+[0.522791] (robot_controller) StdoutLine: {'line': b'copying resource/robot_controller -> /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages\n'}
+[0.522859] (robot_controller) StdoutLine: {'line': b'copying package.xml -> /home/garima/first_ws/src/install/robot_controller/share/robot_controller\n'}
+[0.522910] (robot_controller) StdoutLine: {'line': b'running install_egg_info\n'}
+[0.523636] (robot_controller) StdoutLine: {'line': b'Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info\n'}
+[0.524099] (robot_controller) StdoutLine: {'line': b'running install_scripts\n'}
+[0.536591] (robot_controller) StdoutLine: {'line': b"writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'\n"}
+[0.551950] (robot_controller) CommandEnded: {'returncode': 0}
+[0.562963] (robot_controller) JobEnded: {'identifier': 'robot_controller', 'rc': 0}
+[0.563669] (-) EventReactorShutdown: {}
diff --git a/src/log/build_2023-05-25_14-03-54/logger_all.log b/src/log/build_2023-05-25_14-03-54/logger_all.log
new file mode 100644
index 0000000..1051cbe
--- /dev/null
+++ b/src/log/build_2023-05-25_14-03-54/logger_all.log
@@ -0,0 +1,112 @@
+[0.269s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build']
+[0.269s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=12, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>)
+[0.299s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters
+[0.299s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters
+[0.299s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters
+[0.299s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters
+[0.299s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover
+[0.299s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover
+[0.299s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/garima/first_ws/src'
+[0.299s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install']
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore'
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install'
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg']
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg'
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta']
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta'
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros']
+[0.300s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros'
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['cmake', 'python']
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'cmake'
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python'
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['python_setup_py']
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python_setup_py'
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extensions ['ignore', 'ignore_ament_install']
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extension 'ignore'
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(build) ignored
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extensions ['ignore', 'ignore_ament_install']
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extension 'ignore'
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(install) ignored
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extensions ['ignore', 'ignore_ament_install']
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extension 'ignore'
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(log) ignored
+[0.307s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['ignore', 'ignore_ament_install']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'ignore'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'ignore_ament_install'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['colcon_pkg']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'colcon_pkg'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['colcon_meta']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'colcon_meta'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['ros']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'ros'
+[0.310s] DEBUG:colcon.colcon_core.package_identification:Package 'robot_controller' with type 'ros.ament_python' and name 'robot_controller'
+[0.310s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults
+[0.310s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover
+[0.310s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults
+[0.310s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover
+[0.310s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults
+[0.329s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters
+[0.330s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover
+[0.332s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 281 installed packages in /opt/ros/rolling
+[0.333s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_args' from command line to 'None'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_target' from command line to 'None'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_target_skip_unavailable' from command line to 'False'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_clean_cache' from command line to 'False'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_clean_first' from command line to 'False'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_force_configure' from command line to 'False'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'ament_cmake_args' from command line to 'None'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'catkin_cmake_args' from command line to 'None'
+[0.365s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'catkin_skip_building_tests' from command line to 'False'
+[0.365s] DEBUG:colcon.colcon_core.verb:Building package 'robot_controller' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/garima/first_ws/src/build/robot_controller', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/garima/first_ws/src/install/robot_controller', 'merge_install': False, 'path': '/home/garima/first_ws/src/robot_controller', 'symlink_install': False, 'test_result_base': None}
+[0.365s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor
+[0.367s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete
+[0.367s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/garima/first_ws/src/robot_controller' with build type 'ament_python'
+[0.367s] Level 1:colcon.colcon_core.shell:create_environment_hook('robot_controller', 'ament_prefix_path')
+[0.372s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems
+[0.372s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.ps1'
+[0.372s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.dsv'
+[0.373s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.sh'
+[0.374s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell
+[0.374s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment
+[0.531s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/garima/first_ws/src/robot_controller'
+[0.532s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell
+[0.532s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment
+[0.743s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/garima/first_ws/src/robot_controller': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+[0.920s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/garima/first_ws/src/robot_controller' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+[0.925s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller' for CMake module files
+[0.925s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller' for CMake config files
+[0.925s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/lib'
+[0.925s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/bin'
+[0.925s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/lib/pkgconfig/robot_controller.pc'
+[0.926s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages'
+[0.926s] Level 1:colcon.colcon_core.shell:create_environment_hook('robot_controller', 'pythonpath')
+[0.926s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/pythonpath.ps1'
+[0.927s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/pythonpath.dsv'
+[0.927s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/pythonpath.sh'
+[0.927s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/bin'
+[0.927s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(robot_controller)
+[0.928s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.ps1'
+[0.929s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.dsv'
+[0.929s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.sh'
+[0.929s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.bash'
+[0.930s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.zsh'
+[0.930s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/garima/first_ws/src/install/robot_controller/share/colcon-core/packages/robot_controller)
+[0.931s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop
+[0.931s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed
+[0.931s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0'
+[0.931s] DEBUG:colcon.colcon_core.event_reactor:joining thread
+[0.936s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems
+[0.936s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems
+[0.936s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2'
+[0.947s] DEBUG:colcon.colcon_core.event_reactor:joined thread
+[0.948s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.ps1'
+[0.948s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/garima/first_ws/src/install/_local_setup_util_ps1.py'
+[0.949s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.ps1'
+[0.950s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.sh'
+[0.951s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/garima/first_ws/src/install/_local_setup_util_sh.py'
+[0.951s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.sh'
+[0.952s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.bash'
+[0.952s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.bash'
+[0.953s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.zsh'
+[0.953s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.zsh'
diff --git a/src/log/build_2023-05-25_14-03-54/robot_controller/command.log b/src/log/build_2023-05-25_14-03-54/robot_controller/command.log
new file mode 100644
index 0000000..db57815
--- /dev/null
+++ b/src/log/build_2023-05-25_14-03-54/robot_controller/command.log
@@ -0,0 +1,2 @@
+Invoking command in '/home/garima/first_ws/src/robot_controller': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+Invoked command in '/home/garima/first_ws/src/robot_controller' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
diff --git a/src/log/build_2023-05-25_14-03-54/robot_controller/stderr.log b/src/log/build_2023-05-25_14-03-54/robot_controller/stderr.log
new file mode 100644
index 0000000..89805d7
--- /dev/null
+++ b/src/log/build_2023-05-25_14-03-54/robot_controller/stderr.log
@@ -0,0 +1,2 @@
+/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
+ warnings.warn(
diff --git a/src/log/build_2023-05-25_14-03-54/robot_controller/stdout.log b/src/log/build_2023-05-25_14-03-54/robot_controller/stdout.log
new file mode 100644
index 0000000..879eff3
--- /dev/null
+++ b/src/log/build_2023-05-25_14-03-54/robot_controller/stdout.log
@@ -0,0 +1,31 @@
+running egg_info
+creating ../build/robot_controller/robot_controller.egg-info
+writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO
+writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt
+writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt
+writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt
+writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt
+writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+running build
+running build_py
+creating /home/garima/first_ws/src/build/robot_controller/build
+creating /home/garima/first_ws/src/build/robot_controller/build/lib
+creating /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+copying robot_controller/__init__.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+running install
+running install_lib
+creating /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/__init__.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/__init__.py to __init__.cpython-310.pyc
+running install_data
+creating /home/garima/first_ws/src/install/robot_controller/share/ament_index
+creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index
+creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages
+copying resource/robot_controller -> /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages
+copying package.xml -> /home/garima/first_ws/src/install/robot_controller/share/robot_controller
+running install_egg_info
+Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info
+running install_scripts
+writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'
diff --git a/src/log/build_2023-05-25_14-03-54/robot_controller/stdout_stderr.log b/src/log/build_2023-05-25_14-03-54/robot_controller/stdout_stderr.log
new file mode 100644
index 0000000..2dca0dc
--- /dev/null
+++ b/src/log/build_2023-05-25_14-03-54/robot_controller/stdout_stderr.log
@@ -0,0 +1,33 @@
+running egg_info
+creating ../build/robot_controller/robot_controller.egg-info
+writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO
+writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt
+writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt
+writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt
+writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt
+writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+running build
+running build_py
+creating /home/garima/first_ws/src/build/robot_controller/build
+creating /home/garima/first_ws/src/build/robot_controller/build/lib
+creating /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+copying robot_controller/__init__.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+running install
+/usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
+ warnings.warn(
+running install_lib
+creating /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/__init__.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/__init__.py to __init__.cpython-310.pyc
+running install_data
+creating /home/garima/first_ws/src/install/robot_controller/share/ament_index
+creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index
+creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages
+copying resource/robot_controller -> /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages
+copying package.xml -> /home/garima/first_ws/src/install/robot_controller/share/robot_controller
+running install_egg_info
+Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info
+running install_scripts
+writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'
diff --git a/src/log/build_2023-05-25_14-03-54/robot_controller/streams.log b/src/log/build_2023-05-25_14-03-54/robot_controller/streams.log
new file mode 100644
index 0000000..a335d6e
--- /dev/null
+++ b/src/log/build_2023-05-25_14-03-54/robot_controller/streams.log
@@ -0,0 +1,35 @@
+[0.375s] Invoking command in '/home/garima/first_ws/src/robot_controller': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+[0.518s] running egg_info
+[0.519s] creating ../build/robot_controller/robot_controller.egg-info
+[0.519s] writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO
+[0.519s] writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt
+[0.519s] writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt
+[0.519s] writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt
+[0.519s] writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt
+[0.519s] writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+[0.520s] reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+[0.521s] writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+[0.521s] running build
+[0.521s] running build_py
+[0.521s] creating /home/garima/first_ws/src/build/robot_controller/build
+[0.521s] creating /home/garima/first_ws/src/build/robot_controller/build/lib
+[0.521s] creating /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+[0.521s] copying robot_controller/__init__.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+[0.521s] running install
+[0.521s] /usr/lib/python3/dist-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
+[0.521s] warnings.warn(
+[0.521s] running install_lib
+[0.522s] creating /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+[0.522s] copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/__init__.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+[0.522s] byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/__init__.py to __init__.cpython-310.pyc
+[0.522s] running install_data
+[0.522s] creating /home/garima/first_ws/src/install/robot_controller/share/ament_index
+[0.523s] creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index
+[0.523s] creating /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages
+[0.523s] copying resource/robot_controller -> /home/garima/first_ws/src/install/robot_controller/share/ament_index/resource_index/packages
+[0.523s] copying package.xml -> /home/garima/first_ws/src/install/robot_controller/share/robot_controller
+[0.523s] running install_egg_info
+[0.524s] Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info
+[0.524s] running install_scripts
+[0.536s] writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'
+[0.552s] Invoked command in '/home/garima/first_ws/src/robot_controller' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
diff --git a/src/log/build_2023-05-26_02-31-12/events.log b/src/log/build_2023-05-26_02-31-12/events.log
new file mode 100644
index 0000000..703dbf2
--- /dev/null
+++ b/src/log/build_2023-05-26_02-31-12/events.log
@@ -0,0 +1,35 @@
+[0.000000] (-) TimerEvent: {}
+[0.000505] (robot_controller) JobQueued: {'identifier': 'robot_controller', 'dependencies': OrderedDict()}
+[0.000848] (robot_controller) JobStarted: {'identifier': 'robot_controller'}
+[0.099768] (-) TimerEvent: {}
+[0.200070] (-) TimerEvent: {}
+[0.300351] (-) TimerEvent: {}
+[0.400684] (-) TimerEvent: {}
+[0.429707] (robot_controller) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', '../build/robot_controller', 'build', '--build-base', '/home/garima/first_ws/src/build/robot_controller/build', 'install', '--record', '/home/garima/first_ws/src/build/robot_controller/install.log', '--single-version-externally-managed'], 'cwd': '/home/garima/first_ws/src/robot_controller', 'env': {'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'garima', 'XDG_SESSION_TYPE': 'wayland', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/opt/ros/rolling/opt/rviz_ogre_vendor/lib:/opt/ros/rolling/lib/x86_64-linux-gnu:/opt/ros/rolling/lib', 'HOME': '/home/garima', 'OLDPWD': '/home/garima/first_ws/src/robot_controller', 'DESKTOP_SESSION': 'ubuntu', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'SYSTEMD_EXEC_PID': '1651', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'COLORTERM': 'truecolor', 'IM_CONFIG_PHASE': '1', 'WAYLAND_DISPLAY': 'wayland-0', 'ROS_DISTRO': 'rolling', 'LOGNAME': 'garima', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_SESSION_CLASS': 'user', 'USERNAME': 'garima', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'PATH': '/opt/ros/rolling/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/garima-HP-Pavilion-Laptop-14-ec1xxx:@/tmp/.ICE-unix/1631,unix/garima-HP-Pavilion-Laptop-14-ec1xxx:/tmp/.ICE-unix/1631', 'XDG_MENU_PREFIX': 'gnome-', 'GNOME_TERMINAL_SCREEN': '/org/gnome/Terminal/screen/d8e75bd1_32b2_49a0_aa0a_24556a3b12ad', 'GNOME_SETUP_DISPLAY': ':1', 'XDG_RUNTIME_DIR': '/run/user/1000', 'DISPLAY': ':0', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1000/.mutter-Xwaylandauth.K57J51', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'GNOME_TERMINAL_SERVICE': ':1.126', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'AMENT_PREFIX_PATH': '/opt/ros/rolling', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'ROS_AUTOMATIC_DISCOVERY_RANGE': 'SUBNET', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/garima/first_ws/src/build/robot_controller', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:/opt/ros/rolling/lib/python3.10/site-packages', 'COLCON': '1', 'VTE_VERSION': '6800'}, 'shell': False}
+[0.500796] (-) TimerEvent: {}
+[0.601107] (-) TimerEvent: {}
+[0.601916] (robot_controller) StdoutLine: {'line': b'running egg_info\n'}
+[0.602474] (robot_controller) StdoutLine: {'line': b'writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO\n'}
+[0.602676] (robot_controller) StdoutLine: {'line': b'writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt\n'}
+[0.602820] (robot_controller) StdoutLine: {'line': b'writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt\n'}
+[0.602924] (robot_controller) StdoutLine: {'line': b'writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt\n'}
+[0.602996] (robot_controller) StdoutLine: {'line': b'writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt\n'}
+[0.604027] (robot_controller) StdoutLine: {'line': b"reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'\n"}
+[0.604699] (robot_controller) StdoutLine: {'line': b"writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'\n"}
+[0.604807] (robot_controller) StdoutLine: {'line': b'running build\n'}
+[0.604871] (robot_controller) StdoutLine: {'line': b'running build_py\n'}
+[0.604942] (robot_controller) StdoutLine: {'line': b'copying robot_controller/my_first_node.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller\n'}
+[0.605016] (robot_controller) StdoutLine: {'line': b'running install\n'}
+[0.605201] (robot_controller) StdoutLine: {'line': b'running install_lib\n'}
+[0.605628] (robot_controller) StdoutLine: {'line': b'copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/my_first_node.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller\n'}
+[0.605985] (robot_controller) StdoutLine: {'line': b'byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/my_first_node.py to my_first_node.cpython-310.pyc\n'}
+[0.606313] (robot_controller) StdoutLine: {'line': b'running install_data\n'}
+[0.606630] (robot_controller) StdoutLine: {'line': b'running install_egg_info\n'}
+[0.607658] (robot_controller) StdoutLine: {'line': b"removing '/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info' (and everything under it)\n"}
+[0.607888] (robot_controller) StdoutLine: {'line': b'Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info\n'}
+[0.608545] (robot_controller) StdoutLine: {'line': b'running install_scripts\n'}
+[0.622280] (robot_controller) StdoutLine: {'line': b'Installing test_node script to /home/garima/first_ws/src/install/robot_controller/lib/robot_controller\n'}
+[0.622388] (robot_controller) StdoutLine: {'line': b"writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'\n"}
+[0.647575] (robot_controller) CommandEnded: {'returncode': 0}
+[0.662039] (robot_controller) JobEnded: {'identifier': 'robot_controller', 'rc': 0}
+[0.662607] (-) EventReactorShutdown: {}
diff --git a/src/log/build_2023-05-26_02-31-12/logger_all.log b/src/log/build_2023-05-26_02-31-12/logger_all.log
new file mode 100644
index 0000000..716594f
--- /dev/null
+++ b/src/log/build_2023-05-26_02-31-12/logger_all.log
@@ -0,0 +1,112 @@
+[0.229s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build']
+[0.229s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=12, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>)
+[0.245s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters
+[0.245s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters
+[0.245s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters
+[0.245s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters
+[0.245s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover
+[0.245s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover
+[0.245s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/garima/first_ws/src'
+[0.245s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install']
+[0.245s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore'
+[0.245s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install'
+[0.245s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg']
+[0.245s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg'
+[0.246s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta']
+[0.246s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta'
+[0.246s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros']
+[0.246s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros'
+[0.253s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['cmake', 'python']
+[0.253s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'cmake'
+[0.253s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python'
+[0.253s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['python_setup_py']
+[0.253s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python_setup_py'
+[0.253s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extensions ['ignore', 'ignore_ament_install']
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extension 'ignore'
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(build) ignored
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extensions ['ignore', 'ignore_ament_install']
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extension 'ignore'
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(install) ignored
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extensions ['ignore', 'ignore_ament_install']
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extension 'ignore'
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(log) ignored
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['ignore', 'ignore_ament_install']
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'ignore'
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'ignore_ament_install'
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['colcon_pkg']
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'colcon_pkg'
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['colcon_meta']
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'colcon_meta'
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extensions ['ros']
+[0.254s] Level 1:colcon.colcon_core.package_identification:_identify(robot_controller) by extension 'ros'
+[0.256s] DEBUG:colcon.colcon_core.package_identification:Package 'robot_controller' with type 'ros.ament_python' and name 'robot_controller'
+[0.256s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults
+[0.256s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover
+[0.256s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults
+[0.256s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover
+[0.256s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults
+[0.271s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters
+[0.271s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover
+[0.274s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 281 installed packages in /opt/ros/rolling
+[0.275s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_args' from command line to 'None'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_target' from command line to 'None'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_target_skip_unavailable' from command line to 'False'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_clean_cache' from command line to 'False'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_clean_first' from command line to 'False'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'cmake_force_configure' from command line to 'False'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'ament_cmake_args' from command line to 'None'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'catkin_cmake_args' from command line to 'None'
+[0.308s] Level 5:colcon.colcon_core.verb:set package 'robot_controller' build argument 'catkin_skip_building_tests' from command line to 'False'
+[0.308s] DEBUG:colcon.colcon_core.verb:Building package 'robot_controller' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/garima/first_ws/src/build/robot_controller', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/garima/first_ws/src/install/robot_controller', 'merge_install': False, 'path': '/home/garima/first_ws/src/robot_controller', 'symlink_install': False, 'test_result_base': None}
+[0.309s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor
+[0.311s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete
+[0.311s] INFO:colcon.colcon_ros.task.ament_python.build:Building ROS package in '/home/garima/first_ws/src/robot_controller' with build type 'ament_python'
+[0.312s] Level 1:colcon.colcon_core.shell:create_environment_hook('robot_controller', 'ament_prefix_path')
+[0.316s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems
+[0.316s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.ps1'
+[0.316s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.dsv'
+[0.317s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/ament_prefix_path.sh'
+[0.318s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell
+[0.318s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment
+[0.500s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/garima/first_ws/src/robot_controller'
+[0.501s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell
+[0.501s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment
+[0.744s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/garima/first_ws/src/robot_controller': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+[0.959s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/garima/first_ws/src/robot_controller' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+[0.966s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller' for CMake module files
+[0.966s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller' for CMake config files
+[0.967s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/lib'
+[0.967s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/bin'
+[0.967s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/lib/pkgconfig/robot_controller.pc'
+[0.967s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages'
+[0.967s] Level 1:colcon.colcon_core.shell:create_environment_hook('robot_controller', 'pythonpath')
+[0.968s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/pythonpath.ps1'
+[0.968s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/pythonpath.dsv'
+[0.969s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/hook/pythonpath.sh'
+[0.969s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/robot_controller/bin'
+[0.969s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(robot_controller)
+[0.970s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.ps1'
+[0.970s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.dsv'
+[0.971s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.sh'
+[0.972s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.bash'
+[0.972s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/robot_controller/share/robot_controller/package.zsh'
+[0.973s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/garima/first_ws/src/install/robot_controller/share/colcon-core/packages/robot_controller)
+[0.973s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop
+[0.973s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed
+[0.973s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0'
+[0.973s] DEBUG:colcon.colcon_core.event_reactor:joining thread
+[0.978s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems
+[0.978s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems
+[0.978s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2'
+[0.992s] DEBUG:colcon.colcon_core.event_reactor:joined thread
+[0.994s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.ps1'
+[0.995s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/garima/first_ws/src/install/_local_setup_util_ps1.py'
+[0.996s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.ps1'
+[0.997s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.sh'
+[0.998s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/garima/first_ws/src/install/_local_setup_util_sh.py'
+[0.998s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.sh'
+[0.999s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.bash'
+[0.999s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.bash'
+[1.000s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.zsh'
+[1.001s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.zsh'
diff --git a/src/log/build_2023-05-26_02-31-12/robot_controller/command.log b/src/log/build_2023-05-26_02-31-12/robot_controller/command.log
new file mode 100644
index 0000000..db57815
--- /dev/null
+++ b/src/log/build_2023-05-26_02-31-12/robot_controller/command.log
@@ -0,0 +1,2 @@
+Invoking command in '/home/garima/first_ws/src/robot_controller': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+Invoked command in '/home/garima/first_ws/src/robot_controller' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
diff --git a/src/log/build_2023-05-26_02-31-12/robot_controller/stderr.log b/src/log/build_2023-05-26_02-31-12/robot_controller/stderr.log
new file mode 100644
index 0000000..e69de29
diff --git a/src/log/build_2023-05-26_02-31-12/robot_controller/stdout.log b/src/log/build_2023-05-26_02-31-12/robot_controller/stdout.log
new file mode 100644
index 0000000..32631eb
--- /dev/null
+++ b/src/log/build_2023-05-26_02-31-12/robot_controller/stdout.log
@@ -0,0 +1,22 @@
+running egg_info
+writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO
+writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt
+writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt
+writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt
+writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt
+reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+running build
+running build_py
+copying robot_controller/my_first_node.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+running install
+running install_lib
+copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/my_first_node.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/my_first_node.py to my_first_node.cpython-310.pyc
+running install_data
+running install_egg_info
+removing '/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info' (and everything under it)
+Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info
+running install_scripts
+Installing test_node script to /home/garima/first_ws/src/install/robot_controller/lib/robot_controller
+writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'
diff --git a/src/log/build_2023-05-26_02-31-12/robot_controller/stdout_stderr.log b/src/log/build_2023-05-26_02-31-12/robot_controller/stdout_stderr.log
new file mode 100644
index 0000000..32631eb
--- /dev/null
+++ b/src/log/build_2023-05-26_02-31-12/robot_controller/stdout_stderr.log
@@ -0,0 +1,22 @@
+running egg_info
+writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO
+writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt
+writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt
+writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt
+writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt
+reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+running build
+running build_py
+copying robot_controller/my_first_node.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+running install
+running install_lib
+copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/my_first_node.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/my_first_node.py to my_first_node.cpython-310.pyc
+running install_data
+running install_egg_info
+removing '/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info' (and everything under it)
+Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info
+running install_scripts
+Installing test_node script to /home/garima/first_ws/src/install/robot_controller/lib/robot_controller
+writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'
diff --git a/src/log/build_2023-05-26_02-31-12/robot_controller/streams.log b/src/log/build_2023-05-26_02-31-12/robot_controller/streams.log
new file mode 100644
index 0000000..c7913d3
--- /dev/null
+++ b/src/log/build_2023-05-26_02-31-12/robot_controller/streams.log
@@ -0,0 +1,24 @@
+[0.432s] Invoking command in '/home/garima/first_ws/src/robot_controller': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
+[0.601s] running egg_info
+[0.602s] writing ../build/robot_controller/robot_controller.egg-info/PKG-INFO
+[0.602s] writing dependency_links to ../build/robot_controller/robot_controller.egg-info/dependency_links.txt
+[0.602s] writing entry points to ../build/robot_controller/robot_controller.egg-info/entry_points.txt
+[0.602s] writing requirements to ../build/robot_controller/robot_controller.egg-info/requires.txt
+[0.602s] writing top-level names to ../build/robot_controller/robot_controller.egg-info/top_level.txt
+[0.603s] reading manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+[0.604s] writing manifest file '../build/robot_controller/robot_controller.egg-info/SOURCES.txt'
+[0.604s] running build
+[0.604s] running build_py
+[0.604s] copying robot_controller/my_first_node.py -> /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller
+[0.604s] running install
+[0.604s] running install_lib
+[0.605s] copying /home/garima/first_ws/src/build/robot_controller/build/lib/robot_controller/my_first_node.py -> /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller
+[0.605s] byte-compiling /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller/my_first_node.py to my_first_node.cpython-310.pyc
+[0.606s] running install_data
+[0.606s] running install_egg_info
+[0.607s] removing '/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info' (and everything under it)
+[0.607s] Copying ../build/robot_controller/robot_controller.egg-info to /home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages/robot_controller-0.0.0-py3.10.egg-info
+[0.608s] running install_scripts
+[0.621s] Installing test_node script to /home/garima/first_ws/src/install/robot_controller/lib/robot_controller
+[0.622s] writing list of installed files to '/home/garima/first_ws/src/build/robot_controller/install.log'
+[0.647s] Invoked command in '/home/garima/first_ws/src/robot_controller' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/robot_controller/prefix_override:/home/garima/first_ws/src/install/robot_controller/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/robot_controller build --build-base /home/garima/first_ws/src/build/robot_controller/build install --record /home/garima/first_ws/src/build/robot_controller/install.log --single-version-externally-managed
diff --git a/src/log/build_2023-05-26_07-26-29/events.log b/src/log/build_2023-05-26_07-26-29/events.log
new file mode 100644
index 0000000..ffc826d
--- /dev/null
+++ b/src/log/build_2023-05-26_07-26-29/events.log
@@ -0,0 +1,50 @@
+[0.000000] (-) TimerEvent: {}
+[0.000141] (image_processes) JobQueued: {'identifier': 'image_processes', 'dependencies': OrderedDict()}
+[0.000652] (image_processes) JobStarted: {'identifier': 'image_processes'}
+[0.099813] (-) TimerEvent: {}
+[0.200110] (-) TimerEvent: {}
+[0.300400] (-) TimerEvent: {}
+[0.400742] (-) TimerEvent: {}
+[0.417403] (image_processes) Command: {'cmd': ['/usr/bin/python3', 'setup.py', 'egg_info', '--egg-base', '../build/image_processes', 'build', '--build-base', '/home/garima/first_ws/src/build/image_processes/build', 'install', '--record', '/home/garima/first_ws/src/build/image_processes/install.log', '--single-version-externally-managed'], 'cwd': '/home/garima/first_ws/src/image_processes', 'env': {'LESSOPEN': '| /usr/bin/lesspipe %s', 'USER': 'garima', 'XDG_SESSION_TYPE': 'wayland', 'SHLVL': '1', 'LD_LIBRARY_PATH': '/opt/ros/rolling/opt/rviz_ogre_vendor/lib:/opt/ros/rolling/lib/x86_64-linux-gnu:/opt/ros/rolling/lib', 'HOME': '/home/garima', 'OLDPWD': '/home/garima/first_ws', 'DESKTOP_SESSION': 'ubuntu', 'ROS_PYTHON_VERSION': '3', 'GNOME_SHELL_SESSION_MODE': 'ubuntu', 'GTK_MODULES': 'gail:atk-bridge', 'SYSTEMD_EXEC_PID': '1664', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'COLORTERM': 'truecolor', 'IM_CONFIG_PHASE': '1', 'WAYLAND_DISPLAY': 'wayland-0', 'COLCON_PREFIX_PATH': '/home/garima/first_ws/install', 'ROS_DISTRO': 'rolling', 'LOGNAME': 'garima', '_': '/usr/bin/colcon', 'ROS_VERSION': '2', 'XDG_SESSION_CLASS': 'user', 'USERNAME': 'garima', 'TERM': 'xterm-256color', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'PATH': '/opt/ros/rolling/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin', 'SESSION_MANAGER': 'local/garima-HP-Pavilion-Laptop-14-ec1xxx:@/tmp/.ICE-unix/1645,unix/garima-HP-Pavilion-Laptop-14-ec1xxx:/tmp/.ICE-unix/1645', 'XDG_MENU_PREFIX': 'gnome-', 'GNOME_TERMINAL_SCREEN': '/org/gnome/Terminal/screen/a1349d36_faaa_4b10_b977_7c4cdee744ab', 'GNOME_SETUP_DISPLAY': ':1', 'XDG_RUNTIME_DIR': '/run/user/1000', 'DISPLAY': ':0', 'LANG': 'en_US.UTF-8', 'XDG_CURRENT_DESKTOP': 'ubuntu:GNOME', 'XMODIFIERS': '@im=ibus', 'XDG_SESSION_DESKTOP': 'ubuntu', 'XAUTHORITY': '/run/user/1000/.mutter-Xwaylandauth.4C7L51', 'LS_COLORS': 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.webp=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:', 'GNOME_TERMINAL_SERVICE': ':1.214', 'SSH_AGENT_LAUNCHER': 'gnome-keyring', 'SSH_AUTH_SOCK': '/run/user/1000/keyring/ssh', 'AMENT_PREFIX_PATH': '/home/garima/first_ws/install/robot_controller:/opt/ros/rolling', 'SHELL': '/bin/bash', 'QT_ACCESSIBILITY': '1', 'GDMSESSION': 'ubuntu', 'LESSCLOSE': '/usr/bin/lesspipe %s %s', 'ROS_AUTOMATIC_DISCOVERY_RANGE': 'SUBNET', 'QT_IM_MODULE': 'ibus', 'PWD': '/home/garima/first_ws/src/build/image_processes', 'LC_ALL': 'en_US.UTF-8', 'XDG_CONFIG_DIRS': '/etc/xdg/xdg-ubuntu:/etc/xdg', 'XDG_DATA_DIRS': '/usr/share/ubuntu:/usr/local/share/:/usr/share/:/var/lib/snapd/desktop', 'PYTHONPATH': '/home/garima/first_ws/src/build/image_processes/prefix_override:/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages:/home/garima/first_ws/install/robot_controller/lib/python3.10/site-packages:/home/garima/first_ws/install/image_processes/lib/python3.10/site-packages:/opt/ros/rolling/lib/python3.10/site-packages', 'COLCON': '1', 'VTE_VERSION': '6800'}, 'shell': False}
+[0.500858] (-) TimerEvent: {}
+[0.586543] (image_processes) StdoutLine: {'line': b'running egg_info\n'}
+[0.587090] (image_processes) StdoutLine: {'line': b'creating ../build/image_processes/image_processes.egg-info\n'}
+[0.587199] (image_processes) StdoutLine: {'line': b'writing ../build/image_processes/image_processes.egg-info/PKG-INFO\n'}
+[0.587297] (image_processes) StdoutLine: {'line': b'writing dependency_links to ../build/image_processes/image_processes.egg-info/dependency_links.txt\n'}
+[0.587367] (image_processes) StdoutLine: {'line': b'writing entry points to ../build/image_processes/image_processes.egg-info/entry_points.txt\n'}
+[0.587445] (image_processes) StdoutLine: {'line': b'writing requirements to ../build/image_processes/image_processes.egg-info/requires.txt\n'}
+[0.587508] (image_processes) StdoutLine: {'line': b'writing top-level names to ../build/image_processes/image_processes.egg-info/top_level.txt\n'}
+[0.587578] (image_processes) StdoutLine: {'line': b"writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'\n"}
+[0.588408] (image_processes) StdoutLine: {'line': b"reading manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'\n"}
+[0.588826] (image_processes) StdoutLine: {'line': b"writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'\n"}
+[0.588903] (image_processes) StdoutLine: {'line': b'running build\n'}
+[0.588956] (image_processes) StdoutLine: {'line': b'running build_py\n'}
+[0.589035] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/build/image_processes/build\n'}
+[0.589089] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/build/image_processes/build/lib\n'}
+[0.589157] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/build/image_processes/build/lib/image_processes\n'}
+[0.589206] (image_processes) StdoutLine: {'line': b'copying image_processes/publisher_member_function.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes\n'}
+[0.589260] (image_processes) StdoutLine: {'line': b'copying image_processes/__init__.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes\n'}
+[0.589322] (image_processes) StdoutLine: {'line': b'running install\n'}
+[0.589413] (image_processes) StdoutLine: {'line': b'running install_lib\n'}
+[0.589773] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes\n'}
+[0.589841] (image_processes) StdoutLine: {'line': b'copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/publisher_member_function.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes\n'}
+[0.589913] (image_processes) StdoutLine: {'line': b'copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/__init__.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes\n'}
+[0.590175] (image_processes) StdoutLine: {'line': b'byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/publisher_member_function.py to publisher_member_function.cpython-310.pyc\n'}
+[0.590534] (image_processes) StdoutLine: {'line': b'byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/__init__.py to __init__.cpython-310.pyc\n'}
+[0.590882] (image_processes) StdoutLine: {'line': b'running install_data\n'}
+[0.591174] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/image_processes/share\n'}
+[0.591295] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/image_processes/share/ament_index\n'}
+[0.591379] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index\n'}
+[0.591434] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages\n'}
+[0.591483] (image_processes) StdoutLine: {'line': b'copying resource/image_processes -> /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages\n'}
+[0.591528] (image_processes) StdoutLine: {'line': b'creating /home/garima/first_ws/src/install/image_processes/share/image_processes\n'}
+[0.591573] (image_processes) StdoutLine: {'line': b'copying package.xml -> /home/garima/first_ws/src/install/image_processes/share/image_processes\n'}
+[0.591616] (image_processes) StdoutLine: {'line': b'running install_egg_info\n'}
+[0.592306] (image_processes) StdoutLine: {'line': b'Copying ../build/image_processes/image_processes.egg-info to /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes-0.0.0-py3.10.egg-info\n'}
+[0.592784] (image_processes) StdoutLine: {'line': b'running install_scripts\n'}
+[0.600930] (-) TimerEvent: {}
+[0.606040] (image_processes) StdoutLine: {'line': b'Installing webcam_publisher script to /home/garima/first_ws/src/install/image_processes/lib/image_processes\n'}
+[0.606331] (image_processes) StdoutLine: {'line': b"writing list of installed files to '/home/garima/first_ws/src/build/image_processes/install.log'\n"}
+[0.626402] (image_processes) CommandEnded: {'returncode': 0}
+[0.648202] (image_processes) JobEnded: {'identifier': 'image_processes', 'rc': 0}
+[0.649563] (-) EventReactorShutdown: {}
diff --git a/src/log/build_2023-05-26_07-26-29/image_processes/command.log b/src/log/build_2023-05-26_07-26-29/image_processes/command.log
new file mode 100644
index 0000000..b7ddd24
--- /dev/null
+++ b/src/log/build_2023-05-26_07-26-29/image_processes/command.log
@@ -0,0 +1,2 @@
+Invoking command in '/home/garima/first_ws/src/image_processes': PYTHONPATH=/home/garima/first_ws/src/build/image_processes/prefix_override:/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/image_processes build --build-base /home/garima/first_ws/src/build/image_processes/build install --record /home/garima/first_ws/src/build/image_processes/install.log --single-version-externally-managed
+Invoked command in '/home/garima/first_ws/src/image_processes' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/image_processes/prefix_override:/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/image_processes build --build-base /home/garima/first_ws/src/build/image_processes/build install --record /home/garima/first_ws/src/build/image_processes/install.log --single-version-externally-managed
diff --git a/src/log/build_2023-05-26_07-26-29/image_processes/stderr.log b/src/log/build_2023-05-26_07-26-29/image_processes/stderr.log
new file mode 100644
index 0000000..e69de29
diff --git a/src/log/build_2023-05-26_07-26-29/image_processes/stdout.log b/src/log/build_2023-05-26_07-26-29/image_processes/stdout.log
new file mode 100644
index 0000000..4add01e
--- /dev/null
+++ b/src/log/build_2023-05-26_07-26-29/image_processes/stdout.log
@@ -0,0 +1,37 @@
+running egg_info
+creating ../build/image_processes/image_processes.egg-info
+writing ../build/image_processes/image_processes.egg-info/PKG-INFO
+writing dependency_links to ../build/image_processes/image_processes.egg-info/dependency_links.txt
+writing entry points to ../build/image_processes/image_processes.egg-info/entry_points.txt
+writing requirements to ../build/image_processes/image_processes.egg-info/requires.txt
+writing top-level names to ../build/image_processes/image_processes.egg-info/top_level.txt
+writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+reading manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+running build
+running build_py
+creating /home/garima/first_ws/src/build/image_processes/build
+creating /home/garima/first_ws/src/build/image_processes/build/lib
+creating /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+copying image_processes/publisher_member_function.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+copying image_processes/__init__.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+running install
+running install_lib
+creating /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/publisher_member_function.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/__init__.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/publisher_member_function.py to publisher_member_function.cpython-310.pyc
+byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/__init__.py to __init__.cpython-310.pyc
+running install_data
+creating /home/garima/first_ws/src/install/image_processes/share
+creating /home/garima/first_ws/src/install/image_processes/share/ament_index
+creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index
+creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages
+copying resource/image_processes -> /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages
+creating /home/garima/first_ws/src/install/image_processes/share/image_processes
+copying package.xml -> /home/garima/first_ws/src/install/image_processes/share/image_processes
+running install_egg_info
+Copying ../build/image_processes/image_processes.egg-info to /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes-0.0.0-py3.10.egg-info
+running install_scripts
+Installing webcam_publisher script to /home/garima/first_ws/src/install/image_processes/lib/image_processes
+writing list of installed files to '/home/garima/first_ws/src/build/image_processes/install.log'
diff --git a/src/log/build_2023-05-26_07-26-29/image_processes/stdout_stderr.log b/src/log/build_2023-05-26_07-26-29/image_processes/stdout_stderr.log
new file mode 100644
index 0000000..4add01e
--- /dev/null
+++ b/src/log/build_2023-05-26_07-26-29/image_processes/stdout_stderr.log
@@ -0,0 +1,37 @@
+running egg_info
+creating ../build/image_processes/image_processes.egg-info
+writing ../build/image_processes/image_processes.egg-info/PKG-INFO
+writing dependency_links to ../build/image_processes/image_processes.egg-info/dependency_links.txt
+writing entry points to ../build/image_processes/image_processes.egg-info/entry_points.txt
+writing requirements to ../build/image_processes/image_processes.egg-info/requires.txt
+writing top-level names to ../build/image_processes/image_processes.egg-info/top_level.txt
+writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+reading manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+running build
+running build_py
+creating /home/garima/first_ws/src/build/image_processes/build
+creating /home/garima/first_ws/src/build/image_processes/build/lib
+creating /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+copying image_processes/publisher_member_function.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+copying image_processes/__init__.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+running install
+running install_lib
+creating /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/publisher_member_function.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/__init__.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/publisher_member_function.py to publisher_member_function.cpython-310.pyc
+byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/__init__.py to __init__.cpython-310.pyc
+running install_data
+creating /home/garima/first_ws/src/install/image_processes/share
+creating /home/garima/first_ws/src/install/image_processes/share/ament_index
+creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index
+creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages
+copying resource/image_processes -> /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages
+creating /home/garima/first_ws/src/install/image_processes/share/image_processes
+copying package.xml -> /home/garima/first_ws/src/install/image_processes/share/image_processes
+running install_egg_info
+Copying ../build/image_processes/image_processes.egg-info to /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes-0.0.0-py3.10.egg-info
+running install_scripts
+Installing webcam_publisher script to /home/garima/first_ws/src/install/image_processes/lib/image_processes
+writing list of installed files to '/home/garima/first_ws/src/build/image_processes/install.log'
diff --git a/src/log/build_2023-05-26_07-26-29/image_processes/streams.log b/src/log/build_2023-05-26_07-26-29/image_processes/streams.log
new file mode 100644
index 0000000..edc805a
--- /dev/null
+++ b/src/log/build_2023-05-26_07-26-29/image_processes/streams.log
@@ -0,0 +1,39 @@
+[0.420s] Invoking command in '/home/garima/first_ws/src/image_processes': PYTHONPATH=/home/garima/first_ws/src/build/image_processes/prefix_override:/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/image_processes build --build-base /home/garima/first_ws/src/build/image_processes/build install --record /home/garima/first_ws/src/build/image_processes/install.log --single-version-externally-managed
+[0.586s] running egg_info
+[0.586s] creating ../build/image_processes/image_processes.egg-info
+[0.587s] writing ../build/image_processes/image_processes.egg-info/PKG-INFO
+[0.587s] writing dependency_links to ../build/image_processes/image_processes.egg-info/dependency_links.txt
+[0.587s] writing entry points to ../build/image_processes/image_processes.egg-info/entry_points.txt
+[0.587s] writing requirements to ../build/image_processes/image_processes.egg-info/requires.txt
+[0.587s] writing top-level names to ../build/image_processes/image_processes.egg-info/top_level.txt
+[0.587s] writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+[0.588s] reading manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+[0.588s] writing manifest file '../build/image_processes/image_processes.egg-info/SOURCES.txt'
+[0.588s] running build
+[0.588s] running build_py
+[0.588s] creating /home/garima/first_ws/src/build/image_processes/build
+[0.588s] creating /home/garima/first_ws/src/build/image_processes/build/lib
+[0.589s] creating /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+[0.589s] copying image_processes/publisher_member_function.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+[0.589s] copying image_processes/__init__.py -> /home/garima/first_ws/src/build/image_processes/build/lib/image_processes
+[0.589s] running install
+[0.589s] running install_lib
+[0.589s] creating /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+[0.589s] copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/publisher_member_function.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+[0.589s] copying /home/garima/first_ws/src/build/image_processes/build/lib/image_processes/__init__.py -> /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes
+[0.590s] byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/publisher_member_function.py to publisher_member_function.cpython-310.pyc
+[0.590s] byte-compiling /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes/__init__.py to __init__.cpython-310.pyc
+[0.590s] running install_data
+[0.591s] creating /home/garima/first_ws/src/install/image_processes/share
+[0.591s] creating /home/garima/first_ws/src/install/image_processes/share/ament_index
+[0.591s] creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index
+[0.591s] creating /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages
+[0.591s] copying resource/image_processes -> /home/garima/first_ws/src/install/image_processes/share/ament_index/resource_index/packages
+[0.591s] creating /home/garima/first_ws/src/install/image_processes/share/image_processes
+[0.591s] copying package.xml -> /home/garima/first_ws/src/install/image_processes/share/image_processes
+[0.591s] running install_egg_info
+[0.592s] Copying ../build/image_processes/image_processes.egg-info to /home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages/image_processes-0.0.0-py3.10.egg-info
+[0.592s] running install_scripts
+[0.605s] Installing webcam_publisher script to /home/garima/first_ws/src/install/image_processes/lib/image_processes
+[0.606s] writing list of installed files to '/home/garima/first_ws/src/build/image_processes/install.log'
+[0.627s] Invoked command in '/home/garima/first_ws/src/image_processes' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/image_processes/prefix_override:/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/image_processes build --build-base /home/garima/first_ws/src/build/image_processes/build install --record /home/garima/first_ws/src/build/image_processes/install.log --single-version-externally-managed
diff --git a/src/log/build_2023-05-26_07-26-29/logger_all.log b/src/log/build_2023-05-26_07-26-29/logger_all.log
new file mode 100644
index 0000000..b19d9de
--- /dev/null
+++ b/src/log/build_2023-05-26_07-26-29/logger_all.log
@@ -0,0 +1,116 @@
+[0.226s] DEBUG:colcon:Command line arguments: ['/usr/bin/colcon', 'build']
+[0.226s] DEBUG:colcon:Parsed command line arguments: Namespace(log_base=None, log_level=None, verb_name='build', build_base='build', install_base='install', merge_install=False, symlink_install=False, test_result_base=None, continue_on_error=False, executor='parallel', parallel_workers=12, event_handlers=None, ignore_user_meta=False, metas=['./colcon.meta'], base_paths=['.'], packages_ignore=None, packages_ignore_regex=None, paths=None, packages_up_to=None, packages_up_to_regex=None, packages_above=None, packages_above_and_dependencies=None, packages_above_depth=None, packages_select_by_dep=None, packages_skip_by_dep=None, packages_skip_up_to=None, packages_select_build_failed=False, packages_skip_build_finished=False, packages_select_test_failures=False, packages_skip_test_passed=False, packages_select=None, packages_skip=None, packages_select_regex=None, packages_skip_regex=None, packages_start=None, packages_end=None, allow_overriding=[], cmake_args=None, cmake_target=None, cmake_target_skip_unavailable=False, cmake_clean_cache=False, cmake_clean_first=False, cmake_force_configure=False, ament_cmake_args=None, catkin_cmake_args=None, catkin_skip_building_tests=False, verb_parser=, verb_extension=, main=>)
+[0.307s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) check parameters
+[0.308s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) check parameters
+[0.308s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) check parameters
+[0.308s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) check parameters
+[0.308s] Level 1:colcon.colcon_core.package_discovery:discover_packages(colcon_meta) discover
+[0.308s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) discover
+[0.308s] INFO:colcon.colcon_core.package_discovery:Crawling recursively for packages in '/home/garima/first_ws/src'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ignore', 'ignore_ament_install']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ignore_ament_install'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_pkg']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_pkg'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['colcon_meta']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'colcon_meta'
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['ros']
+[0.308s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'ros'
+[0.315s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['cmake', 'python']
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'cmake'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extensions ['python_setup_py']
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(.) by extension 'python_setup_py'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extensions ['ignore', 'ignore_ament_install']
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(build) by extension 'ignore'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(build) ignored
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extensions ['ignore', 'ignore_ament_install']
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'ignore'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'ignore_ament_install'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extensions ['colcon_pkg']
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'colcon_pkg'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extensions ['colcon_meta']
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'colcon_meta'
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extensions ['ros']
+[0.316s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'ros'
+[0.317s] DEBUG:colcon.colcon_core.package_identification:Found ROS schema reference in package manifest in 'image_processes'
+[0.317s] WARNING:colcon.colcon_core.package_identification:Failed to parse ROS package manifest in 'image_processes': Error(s) in package 'image_processes/package.xml':
+Error(s):
+- The generic dependency on 'rclpy' is redundant with: exec_depend
+[0.317s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extensions ['cmake', 'python']
+[0.317s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'cmake'
+[0.318s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'python'
+[0.318s] DEBUG:colcon.colcon_core.package_identification:Python package in 'image_processes' passes arguments to the setup() function which requires a different identification extension than 'python'
+[0.318s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extensions ['python_setup_py']
+[0.318s] Level 1:colcon.colcon_core.package_identification:_identify(image_processes) by extension 'python_setup_py'
+[0.500s] DEBUG:colcon.colcon_core.package_identification:Package 'image_processes' with type 'python' and name 'image_processes'
+[0.500s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extensions ['ignore', 'ignore_ament_install']
+[0.500s] Level 1:colcon.colcon_core.package_identification:_identify(install) by extension 'ignore'
+[0.500s] Level 1:colcon.colcon_core.package_identification:_identify(install) ignored
+[0.500s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extensions ['ignore', 'ignore_ament_install']
+[0.501s] Level 1:colcon.colcon_core.package_identification:_identify(log) by extension 'ignore'
+[0.501s] Level 1:colcon.colcon_core.package_identification:_identify(log) ignored
+[0.501s] Level 1:colcon.colcon_core.package_discovery:discover_packages(recursive) using defaults
+[0.501s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) discover
+[0.501s] Level 1:colcon.colcon_core.package_discovery:discover_packages(ignore) using defaults
+[0.501s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) discover
+[0.501s] Level 1:colcon.colcon_core.package_discovery:discover_packages(path) using defaults
+[0.517s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) check parameters
+[0.517s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) discover
+[0.518s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 2 installed packages in /home/garima/first_ws/install
+[0.519s] DEBUG:colcon.colcon_installed_package_information.package_discovery:Found 281 installed packages in /opt/ros/rolling
+[0.521s] Level 1:colcon.colcon_core.package_discovery:discover_packages(prefix_path) using defaults
+[0.552s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'cmake_args' from command line to 'None'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'cmake_target' from command line to 'None'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'cmake_target_skip_unavailable' from command line to 'False'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'cmake_clean_cache' from command line to 'False'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'cmake_clean_first' from command line to 'False'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'cmake_force_configure' from command line to 'False'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'ament_cmake_args' from command line to 'None'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'catkin_cmake_args' from command line to 'None'
+[0.553s] Level 5:colcon.colcon_core.verb:set package 'image_processes' build argument 'catkin_skip_building_tests' from command line to 'False'
+[0.553s] DEBUG:colcon.colcon_core.verb:Building package 'image_processes' with the following arguments: {'ament_cmake_args': None, 'build_base': '/home/garima/first_ws/src/build/image_processes', 'catkin_cmake_args': None, 'catkin_skip_building_tests': False, 'cmake_args': None, 'cmake_clean_cache': False, 'cmake_clean_first': False, 'cmake_force_configure': False, 'cmake_target': None, 'cmake_target_skip_unavailable': False, 'install_base': '/home/garima/first_ws/src/install/image_processes', 'merge_install': False, 'path': '/home/garima/first_ws/src/image_processes', 'symlink_install': False, 'test_result_base': None}
+[0.553s] INFO:colcon.colcon_core.executor:Executing jobs using 'parallel' executor
+[0.556s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete
+[0.556s] INFO:colcon.colcon_core.task.python.build:Building Python package in '/home/garima/first_ws/src/image_processes'
+[0.559s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_core.shell.bat': Not used on non-Windows systems
+[0.559s] INFO:colcon.colcon_core.shell:Skip shell extension 'powershell' for command environment: Not usable outside of PowerShell
+[0.559s] DEBUG:colcon.colcon_core.shell:Skip shell extension 'dsv' for command environment
+[0.976s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoking command in '/home/garima/first_ws/src/image_processes': PYTHONPATH=/home/garima/first_ws/src/build/image_processes/prefix_override:/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/image_processes build --build-base /home/garima/first_ws/src/build/image_processes/build install --record /home/garima/first_ws/src/build/image_processes/install.log --single-version-externally-managed
+[1.183s] DEBUG:colcon.colcon_core.event_handler.log_command:Invoked command in '/home/garima/first_ws/src/image_processes' returned '0': PYTHONPATH=/home/garima/first_ws/src/build/image_processes/prefix_override:/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages:${PYTHONPATH} /usr/bin/python3 setup.py egg_info --egg-base ../build/image_processes build --build-base /home/garima/first_ws/src/build/image_processes/build install --record /home/garima/first_ws/src/build/image_processes/install.log --single-version-externally-managed
+[1.188s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/image_processes' for CMake module files
+[1.188s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/image_processes' for CMake config files
+[1.189s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/image_processes/lib'
+[1.190s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/image_processes/bin'
+[1.190s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/image_processes/lib/pkgconfig/image_processes.pc'
+[1.190s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/image_processes/lib/python3.10/site-packages'
+[1.191s] Level 1:colcon.colcon_core.shell:create_environment_hook('image_processes', 'pythonpath')
+[1.193s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/image_processes/share/image_processes/hook/pythonpath.ps1'
+[1.194s] INFO:colcon.colcon_core.shell:Creating environment descriptor '/home/garima/first_ws/src/install/image_processes/share/image_processes/hook/pythonpath.dsv'
+[1.194s] INFO:colcon.colcon_core.shell:Creating environment hook '/home/garima/first_ws/src/install/image_processes/share/image_processes/hook/pythonpath.sh'
+[1.196s] Level 1:colcon.colcon_core.environment:checking '/home/garima/first_ws/src/install/image_processes/bin'
+[1.196s] Level 1:colcon.colcon_core.environment:create_environment_scripts_only(image_processes)
+[1.198s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/image_processes/share/image_processes/package.ps1'
+[1.199s] INFO:colcon.colcon_core.shell:Creating package descriptor '/home/garima/first_ws/src/install/image_processes/share/image_processes/package.dsv'
+[1.200s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/image_processes/share/image_processes/package.sh'
+[1.201s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/image_processes/share/image_processes/package.bash'
+[1.202s] INFO:colcon.colcon_core.shell:Creating package script '/home/garima/first_ws/src/install/image_processes/share/image_processes/package.zsh'
+[1.203s] Level 1:colcon.colcon_core.environment:create_file_with_runtime_dependencies(/home/garima/first_ws/src/install/image_processes/share/colcon-core/packages/image_processes)
+[1.203s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:closing loop
+[1.204s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:loop closed
+[1.204s] DEBUG:colcon.colcon_parallel_executor.executor.parallel:run_until_complete finished with '0'
+[1.204s] DEBUG:colcon.colcon_core.event_reactor:joining thread
+[1.210s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.terminal_notifier': Not used on non-Darwin systems
+[1.210s] INFO:colcon.colcon_core.plugin_system:Skipping extension 'colcon_notification.desktop_notification.win32': Not used on non-Windows systems
+[1.210s] INFO:colcon.colcon_notification.desktop_notification:Sending desktop notification using 'notify2'
+[1.225s] DEBUG:colcon.colcon_core.event_reactor:joined thread
+[1.227s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.ps1'
+[1.227s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/garima/first_ws/src/install/_local_setup_util_ps1.py'
+[1.228s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.ps1'
+[1.231s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.sh'
+[1.231s] INFO:colcon.colcon_core.shell:Creating prefix util module '/home/garima/first_ws/src/install/_local_setup_util_sh.py'
+[1.232s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.sh'
+[1.234s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.bash'
+[1.235s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.bash'
+[1.237s] INFO:colcon.colcon_core.shell:Creating prefix script '/home/garima/first_ws/src/install/local_setup.zsh'
+[1.238s] INFO:colcon.colcon_core.shell:Creating prefix chain script '/home/garima/first_ws/src/install/setup.zsh'
diff --git a/src/log/latest b/src/log/latest
new file mode 120000
index 0000000..b57d247
--- /dev/null
+++ b/src/log/latest
@@ -0,0 +1 @@
+latest_build
\ No newline at end of file
diff --git a/src/log/latest_build b/src/log/latest_build
new file mode 120000
index 0000000..6a3262a
--- /dev/null
+++ b/src/log/latest_build
@@ -0,0 +1 @@
+build_2023-05-26_07-26-29
\ No newline at end of file