From f75cf00dac73a50774e2a677536ac7258186a904 Mon Sep 17 00:00:00 2001 From: Remco van Gorsel Date: Wed, 3 May 2023 15:41:05 +0200 Subject: [PATCH 01/16] 9-MBT: - Put old snapshot gamemode in seperate files --- .../ros2_csi_camera_publish/photo_mode.py | 143 ++++++++++++++++ .../ros2_save_camera_image/cloud.py | 152 ++++++++++++++++++ 2 files changed, 295 insertions(+) create mode 100644 src/ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py create mode 100644 src/ros2_save_camera_image/ros2_save_camera_image/cloud.py diff --git a/src/ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py b/src/ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py new file mode 100644 index 0000000..f9735c3 --- /dev/null +++ b/src/ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py @@ -0,0 +1,143 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""ROS2 CSI Camera Image Publisher. +This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image +format. And starts rtmp stream to rtmp://localhost;1935/live/stream +Example: + $ colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_csi_camera_publish jetson + $ source install/local_setup.bash && ros2 run ros2_csi_camera_publish jetson + $ ros2 run ros2_csi_camera_publish jetson +""" + +# ___Import Modules: +import os +import cv2 +import json +import numpy as np + +import rclpy +from rclpy.node import Node +from sensor_msgs.msg import Image +from ament_index_python.packages import get_package_share_directory +from std_msgs.msg import String + + +# ___Global Variables: +SETTINGS = os.path.join(get_package_share_directory('ros2_csi_camera_publish'), "settings.json") + + +# __Functions: +def gstreamer_pipeline(capture_width=320, capture_height=240, display_width=320, + display_height=240, framerate=30, flip_method=0): + """Copyright (c) 2019 JetsonHacks + + """ + + return ( + "nvarguscamerasrc ! " + "video/x-raw(memory:NVMM), " + "width=(int)%d, height=(int)%d, " + "format=(string)NV12, framerate=(fraction)%d/1 ! " + "nvvidconv flip-method=%d ! " + "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! " + "videoconvert ! " + "video/x-raw, format=(string)BGR ! appsink" + % (capture_width, capture_height, framerate, flip_method, display_width, display_height) + ) + + +# __Classes: +class CameraPublisher(Node): + """Camera Publisher Class. + This class contains all methods to publish csi camera data as + sensor_msgs.msg/Image format. + + """ + + def __init__(self, publish_topic='/cmd_vel', trigger_topic='/trigger', publish_frequency=100): + super().__init__('camera_publisher') + + # initialize publisher + self.publisher_ = self.create_publisher(Image, publish_topic, 1) + self.subscription1 = self.create_subscription(String, trigger_topic, self.listener_callback1, 10) + + # set image counter + self.i = 0 + + def listener_callback1(self, msg): + """Timer Callback Function + + This method captures images and publishes required data in ros 2 topic. + + """ + cap = cv2.VideoCapture(gstreamer_pipeline(1920, 1080, + 1920, 1080, + 30, 0, ), cv2.CAP_GSTREAMER) + + if cap.isOpened(): + # reads image data + ret, frame = cap.read() + + # processes image data and converts to ros 2 message + msg_image = Image() + msg_image.header.stamp = Node.get_clock(self).now().to_msg() + msg_image.header.frame_id = 'ORDINA' + msg_image.height = np.shape(frame)[0] + msg_image.width = np.shape(frame)[1] + msg_image.encoding = "bgr8" + msg_image.is_bigendian = False + msg_image.step = np.shape(frame)[2] * np.shape(frame)[1] + msg_image.data = np.array(frame).tobytes() + + if msg.data == 'pressed': + # publishes message + self.publisher_.publish(msg_image) + self.get_logger().info('%d Images Published' % self.i) + cap.release() + + # image counter increment + self.i += 1 + + return None + + +# ___Main Method: +def main(args=None): + """This is the Main Method. + + """ + + # parse settings from json file + with open(SETTINGS) as fp: + content = json.load(fp) + publish_topic = content["publish_topic"] + publish_frequency = content["publish_frequency"] + capture_width = content["capture_width"] + capture_height = content["capture_height"] + framerate = content["framerate"] + flip_method = content["flip_method"] + display_width = content["display_width"] + display_height = content["display_height"] + + trigger_topic = '/trigger' + + # initializes node and start publishing + rclpy.init(args=args) + camera_publisher = CameraPublisher(publish_topic, trigger_topic, publish_frequency) + rclpy.spin(camera_publisher) + + # shuts down nose and releases everything + camera_publisher.destroy_node() + rclpy.shutdown() + + return None + + +# ___Driver Program: +if __name__ == '__main__': + main() + +# +# end of file +"""ORDINA""" \ No newline at end of file diff --git a/src/ros2_save_camera_image/ros2_save_camera_image/cloud.py b/src/ros2_save_camera_image/ros2_save_camera_image/cloud.py new file mode 100644 index 0000000..5e6e198 --- /dev/null +++ b/src/ros2_save_camera_image/ros2_save_camera_image/cloud.py @@ -0,0 +1,152 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""ROS2 Image Saving Tool. + +This script saves image with twist messages as annotation. + +Revision History: + 2021-10-02 (ANI717 - Animesh Bala Ani): Baseline Software. + +Example: + $ colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_save_camera_image execute + $ source install/local_setup.bash && ros2 run ros2_save_camera_image execute + $ ros2 run ros2_save_camera_image execute + +""" + +# ___Import Modules: +import os +import cv2 +import json +import datetime +import requests +import random +import string +import numpy as np +from pathlib import Path + +import rclpy +from rclpy.node import Node +from sensor_msgs.msg import Image +from geometry_msgs.msg import Twist +from ament_index_python.packages import get_package_share_directory + +# Global Variables: +SETTINGS = os.path.join(get_package_share_directory('ros2_save_camera_image'), "settings.json") + + +# Classes +class ImageSubscriber(Node): + """Image Saving Class. + + This class contains all methods to save annotated images. + + """ + + def __init__(self, azure_url, azure_code, robot_name, image_folder, image_topic='/image', twist_topic='/cmd_vel'): + super().__init__('image_subscriber') + + # image topic subscriber initialization + self.subscription1 = self.create_subscription(Image, image_topic, self.listener_callback1, 1) + self.subscription1 # prevent unused variable warning + self.image_count = 0 + + # twist topic subscriber initialization + self.subscription2 = self.create_subscription(Twist, twist_topic, self.listener_callback2, 1) + self.subscription2 + + # variable initialization + self.image_folder = image_folder + self.azure_url = azure_url + self.azure_code = azure_code + self.robot_name = robot_name + self.x = 0 + self.z = 0 + + def get_random_string(self, length): + letters = string.ascii_lowercase + result_str = ''.join(random.choice(letters) for i in range(length)) + return result_str + + def listener_callback1(self, msg): + """Listener Callback Function 1 + + This method collects data from image topic and saves them. + + """ + + # parse image data from subscribed topic + height = msg.height + width = msg.width + channel = msg.step // msg.width + frame = np.reshape(msg.data, (height, width, channel)) + self.get_logger().info("Image Received") + + image_name = self.get_random_string(12) + '.jpg' + + url = "{0}?code={1}&robotName={2}&liveStream=0.0.0.0".format(self.azure_url, self.azure_code, self.robot_name) + + cv2.imwrite(os.path.join(self.image_folder, image_name), frame) + + files = {'F': (image_name, open(self.image_folder + '/' + image_name, "rb"), 'image/jpeg')} + + response = requests.post(url, files=files) + + self.get_logger().info(str(response.status_code)) + self.get_logger().info("Photo send to cloud") + + self.image_count += 1 + + os.remove(os.path.join(self.image_folder, image_name)) + + def listener_callback2(self, msg): + """Listener Callback Function 1 + + This method collects data from geometry twist message topic. + + """ + + # parse geometry twist data from subscribed topic + self.x = int(msg.linear.x * 5) + 5 + self.z = int(msg.angular.z * 5) + 5 + + +# Main Method: +def main(args=None): + """This is the Main Method. + + """ + + # parse settings from json file + with open(SETTINGS) as fp: + content = json.load(fp) + image_topic = content["image_topic"] + twist_topic = content["twist_topic"] + data_directory = content["data_directory"] + azure_url = content["azure_url"] + azure_code = content["azure_code"] + robot_name = content["robot_name"] + + # set directory for saving images + image_folder = os.path.join(data_directory, + '{0:04d}_{1:02d}_{2:02d}_{3:02d}_{4:02d}'.format(datetime.datetime.now().year, + datetime.datetime.now().month, + datetime.datetime.now().day, + datetime.datetime.now().hour, + datetime.datetime.now().minute)) + Path(image_folder).mkdir(parents=True, exist_ok=True) + + # initializes node and save annotated images + rclpy.init(args=args) + image_subscriber = ImageSubscriber(azure_url, azure_code, robot_name, image_folder, image_topic, twist_topic) + rclpy.spin(image_subscriber) + + # shuts down and releases everything + image_subscriber.destroy_node() + rclpy.shutdown() + + +# Driver Program: +if __name__ == '__main__': + main() \ No newline at end of file From c9e953be06c2ac62e09c454ba5358be65ab23ceb Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Wed, 3 May 2023 16:29:07 +0200 Subject: [PATCH 02/16] smal change in naming of publish message --- .../ros2_gamepad_to_twist_message/logitech.py | 117 ------------------ .../playstation.py | 10 +- .../waveshare.py | 8 +- 3 files changed, 9 insertions(+), 126 deletions(-) delete mode 100644 src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/logitech.py diff --git a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/logitech.py b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/logitech.py deleted file mode 100644 index e7a0f55..0000000 --- a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/logitech.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""ROS2 Publisher for Gamepad Data as Twist Message. - -This script publishes gamepad controller data to "\cmd_vel" topic as Twist -message. - -Revision History: - 2021-10-01 (ANI717 - Animesh Bala Ani): Baseline Software. - -Example: - $ colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_gamepad_to_twist_message logitech - $ source install/local_setup.bash && ros2 run ros2_gamepad_to_twist_message logitech - $ ros2 run ros2_gamepad_to_twist_message logitech - -""" - - -#___Import Modules: -import os -import json -from inputs import get_gamepad - -import rclpy -from rclpy.node import Node -from geometry_msgs.msg import Twist -from ament_index_python.packages import get_package_share_directory - - -#___Global Variables: -SETTINGS = os.path.join(get_package_share_directory('ros2_gamepad_to_twist_message'), "settings.json") - - -#__Classes -class GamepadTwist(Node): - """Gamepad Twist Class. - - This class contains all methods to publish gamepad controller data. - - """ - - def __init__(self, publish_topic='/cmd_vel', publish_frequency=100): - super().__init__('gamepad_publisher') - - # publisher initialization - self.publisher_ = self.create_publisher(Twist, publish_topic, 1) - self.timer = self.create_timer(1/publish_frequency, self.timer_callback) - - # variable initialization - self.max_z = 1 - self.max_x = 1 - self.z = 0.0 - self.x = 0.0 - - def timer_callback(self): - """Timer Callback Function - - This method publishes gamepad data as Twist message. - - """ - - # initializes Twist message - twist = Twist() - - # obtains gamepad data - events = get_gamepad() - for event in events: - if event.code == 'ABS_RX': - self.max_z = max(abs(event.state), self.max_z) - self.z = event.state/self.max_z - - if event.code == 'ABS_Y': - self.max_x = max(abs(event.state), self.max_x) - self.x = - event.state/self.max_x - - # creates Twist message - twist.angular.z = round(self.z, 1) - twist.linear.x = round(self.x, 1) - - # publishes message - self.publisher_.publish(twist) - self.get_logger().info("Angular Z: {:.1f}, Linear X: {:.1f}".format(self.z, self.x)) - - return None - - -def main(args=None): - """This is the Main Method. - - """ - - # parse settings from json file - with open(SETTINGS) as fp: - content = json.load(fp) - publish_topic = content["publish_topic"] - publish_frequency = content["publish_frequency"] - - # initializes node and start publishing - rclpy.init(args=args) - gamepad_publisher = GamepadTwist(publish_topic, publish_frequency) - rclpy.spin(gamepad_publisher) - - # shuts down and releases everything - gamepad_publisher.destroy_node() - rclpy.shutdown() - - return None - - -if __name__ == '__main__': - main() - - -# -# end of file -"""ANI717""" diff --git a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py index 9ab641c..a672452 100644 --- a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py +++ b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py @@ -44,8 +44,8 @@ def __init__(self, publish_topic='/cmd_vel', publish_frequency=100): super().__init__('gamepad_publisher') # publisher initialization - self.publisher_ = self.create_publisher(Twist, publish_topic, 1) - self.publisher2 = self.create_publisher(String, '/trigger', 1) + self.pub_joystick = self.create_publisher(Twist, publish_topic, 1) + self.pub_camera_trigger = self.create_publisher(String, '/camera_trigger', 2) self.timer = self.create_timer(1 / publish_frequency, self.timer_callback) # variable initialization @@ -93,20 +93,20 @@ def timer_callback(self): if event.button == 0: msg = String() msg.data = 'pressed' - self.publisher2.publish(msg) + self.pub_camera_trigger.publish(msg) self.get_logger().info(" [0 - Square] Button pressed") if event.button == 9: self.get_logger().info(" [9 - Options] Button pressed") msg = String() msg.data = 'register' - self.publisher2.publish(msg) + self.pub_camera_trigger.publish(msg) # Creates Twist message twist.angular.z = round(self.z, 1) twist.linear.x = round(self.x, 1) # Publishes message - self.publisher_.publish(twist) + self.pub_joystick.publish(twist) return None diff --git a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/waveshare.py b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/waveshare.py index ce28814..dc930c5 100644 --- a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/waveshare.py +++ b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/waveshare.py @@ -45,8 +45,8 @@ def __init__(self, publish_topic='/cmd_vel', publish_frequency=100): super().__init__('gamepad_publisher') # publisher initialization - self.publisher_ = self.create_publisher(Twist, publish_topic, 1) - self.publisher2 = self.create_publisher(String, '/trigger', 2) + self.pub_joystick = self.create_publisher(Twist, publish_topic, 1) + self.pub_camera_trigger = self.create_publisher(String, '/camera_trigger', 2) self.timer = self.create_timer(1/publish_frequency, self.timer_callback) # variable initialization @@ -84,14 +84,14 @@ def timer_callback(self): if event.code == 'BTN_NORTH': msg = String() msg.data = 'pressed' - self.publisher2.publish(msg) + self.pub_camera_trigger.publish(msg) # creates Twist message twist.angular.z = round(self.z, 1) twist.linear.x = round(self.x, 1) # publishes message - self.publisher_.publish(twist) + self.pub_joystick.publish(twist) self.get_logger().info("Angular Z: {:.1f}, Linear X: {:.1f}".format(self.z, self.x)) return None From 8751eb19c1d1e043b12f0bded4ae0722e32c781a Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Thu, 4 May 2023 17:10:14 +0200 Subject: [PATCH 03/16] initial setup save camera snapshot --- src/camera_snap_shot/__init__.py | 0 .../camera_snap_shot/__init__.py | 0 .../camera_snap_shot/take_snap_shot.py} | 42 +++++++--------- .../config/camera_snap_shot_settings.json | 12 +++++ .../launch/camera_snap_shot.launch.py | 38 ++++++++++++++ src/camera_snap_shot/package.xml | 22 ++++++++ .../resource/camera_snap_shot | 0 src/camera_snap_shot/setup.cfg | 4 ++ src/camera_snap_shot/setup.py | 50 +++++++++++++++++++ .../jetbot.py | 4 +- 10 files changed, 147 insertions(+), 25 deletions(-) create mode 100644 src/camera_snap_shot/__init__.py create mode 100644 src/camera_snap_shot/camera_snap_shot/__init__.py rename src/{ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py => camera_snap_shot/camera_snap_shot/take_snap_shot.py} (76%) create mode 100644 src/camera_snap_shot/config/camera_snap_shot_settings.json create mode 100644 src/camera_snap_shot/launch/camera_snap_shot.launch.py create mode 100644 src/camera_snap_shot/package.xml create mode 100644 src/camera_snap_shot/resource/camera_snap_shot create mode 100644 src/camera_snap_shot/setup.cfg create mode 100644 src/camera_snap_shot/setup.py diff --git a/src/camera_snap_shot/__init__.py b/src/camera_snap_shot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/camera_snap_shot/camera_snap_shot/__init__.py b/src/camera_snap_shot/camera_snap_shot/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py similarity index 76% rename from src/ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py rename to src/camera_snap_shot/camera_snap_shot/take_snap_shot.py index f9735c3..fb30e94 100644 --- a/src/ros2_csi_camera_publish/ros2_csi_camera_publish/photo_mode.py +++ b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py @@ -22,14 +22,18 @@ from ament_index_python.packages import get_package_share_directory from std_msgs.msg import String - # ___Global Variables: -SETTINGS = os.path.join(get_package_share_directory('ros2_csi_camera_publish'), "settings.json") - +SETTINGS = os.path.join(get_package_share_directory('camera_snap_shot'), "config/camera_snap_shot_settings.json") +with open(SETTINGS) as fp: + json_settings = json.load(fp) # __Functions: -def gstreamer_pipeline(capture_width=320, capture_height=240, display_width=320, - display_height=240, framerate=30, flip_method=0): +def gstreamer_pipeline(capture_width=json_settings["capture_width"], + capture_height=json_settings["capture_height"], + display_width=json_settings["display_width"], + display_height=json_settings["display_height"], + framerate=json_settings["framerate"], + flip_method=json_settings["flip_method"]): """Copyright (c) 2019 JetsonHacks """ @@ -55,12 +59,12 @@ class CameraPublisher(Node): """ - def __init__(self, publish_topic='/cmd_vel', trigger_topic='/trigger', publish_frequency=100): + def __init__(self, publish_topic='/image', trigger_topic='/trigger', publish_frequency=10): super().__init__('camera_publisher') # initialize publisher - self.publisher_ = self.create_publisher(Image, publish_topic, 1) - self.subscription1 = self.create_subscription(String, trigger_topic, self.listener_callback1, 10) + self.publisher_ = self.create_publisher(Image, publish_topic, publish_frequency) + self.subscription1 = self.create_subscription(String, trigger_topic, self.listener_callback1, 1) # set image counter self.i = 0 @@ -82,7 +86,7 @@ def listener_callback1(self, msg): # processes image data and converts to ros 2 message msg_image = Image() msg_image.header.stamp = Node.get_clock(self).now().to_msg() - msg_image.header.frame_id = 'ORDINA' + msg_image.header.frame_id = str(self.i) msg_image.height = np.shape(frame)[0] msg_image.width = np.shape(frame)[1] msg_image.encoding = "bgr8" @@ -90,7 +94,7 @@ def listener_callback1(self, msg): msg_image.step = np.shape(frame)[2] * np.shape(frame)[1] msg_image.data = np.array(frame).tobytes() - if msg.data == 'pressed': + if msg.data == json_settings["camera_trigger_message"]: # publishes message self.publisher_.publish(msg_image) self.get_logger().info('%d Images Published' % self.i) @@ -109,22 +113,14 @@ def main(args=None): """ # parse settings from json file - with open(SETTINGS) as fp: - content = json.load(fp) - publish_topic = content["publish_topic"] - publish_frequency = content["publish_frequency"] - capture_width = content["capture_width"] - capture_height = content["capture_height"] - framerate = content["framerate"] - flip_method = content["flip_method"] - display_width = content["display_width"] - display_height = content["display_height"] - - trigger_topic = '/trigger' # initializes node and start publishing rclpy.init(args=args) - camera_publisher = CameraPublisher(publish_topic, trigger_topic, publish_frequency) + camera_publisher = CameraPublisher( + json_settings["publish_topic"], + json_settings["trigger_topic"], + json_settings["publish_frequency"] + ) rclpy.spin(camera_publisher) # shuts down nose and releases everything diff --git a/src/camera_snap_shot/config/camera_snap_shot_settings.json b/src/camera_snap_shot/config/camera_snap_shot_settings.json new file mode 100644 index 0000000..3f823de --- /dev/null +++ b/src/camera_snap_shot/config/camera_snap_shot_settings.json @@ -0,0 +1,12 @@ +{ + "publish_topic": "/image", + "publish_frequency": 10, + "capture_width": 1920, + "capture_height": 1080, + "framerate": 30, + "flip_method": 0, + "display_width": 320, + "display_height": 240, + "trigger_topic": "/camera_trigger", + "camera_trigger_message": "pressed" +} \ No newline at end of file diff --git a/src/camera_snap_shot/launch/camera_snap_shot.launch.py b/src/camera_snap_shot/launch/camera_snap_shot.launch.py new file mode 100644 index 0000000..56b1a6d --- /dev/null +++ b/src/camera_snap_shot/launch/camera_snap_shot.launch.py @@ -0,0 +1,38 @@ +import pathlib + +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.conditions import IfCondition +from launch.actions import DeclareLaunchArgument +from launch.substitutions import LaunchConfiguration, TextSubstitution +from launch_ros.actions import Node + +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument +from launch.actions import IncludeLaunchDescription +from launch.actions import GroupAction +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +from launch.substitutions import TextSubstitution +from launch_ros.actions import Node +from launch_ros.actions import PushRosNamespace + +DEFAULT_CONFIG_PATH = str(pathlib.Path(f"{get_package_share_directory('camera_snap_shot')}/config/camera_snap_shot_settings.json")) + + +def generate_launch_description() -> LaunchDescription: + # args that can be set from the command line or a default will be used + config_file_arg = DeclareLaunchArgument( + "config_file", default_value=TextSubstitution(text=DEFAULT_CONFIG_PATH) + ) + # start a turtlesim_node in the turtlesim1 namespace + camera_snap_shot = Node( + package='camera_snap_shot', + executable='take_snap_shot', + name='sim', + ) + + return LaunchDescription([ + # launch_include, + camera_snap_shot, + ]) diff --git a/src/camera_snap_shot/package.xml b/src/camera_snap_shot/package.xml new file mode 100644 index 0000000..48f8bcc --- /dev/null +++ b/src/camera_snap_shot/package.xml @@ -0,0 +1,22 @@ + + + + camera_snap_shot + 1.0.0 + ros_skeleton + raymond houwing + MIT License + + ament_index_python + rclpy + sensor_msgs + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/camera_snap_shot/resource/camera_snap_shot b/src/camera_snap_shot/resource/camera_snap_shot new file mode 100644 index 0000000..e69de29 diff --git a/src/camera_snap_shot/setup.cfg b/src/camera_snap_shot/setup.cfg new file mode 100644 index 0000000..27efca9 --- /dev/null +++ b/src/camera_snap_shot/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/camera_snap_shot +[install] +install_scripts=$base/lib/camera_snap_shot diff --git a/src/camera_snap_shot/setup.py b/src/camera_snap_shot/setup.py new file mode 100644 index 0000000..c1d0a34 --- /dev/null +++ b/src/camera_snap_shot/setup.py @@ -0,0 +1,50 @@ +from glob import glob +from pathlib import Path +from setuptools import setup + + +def get_value_from_string(string: str, prefix: str, suffix: str): + value = "" + if string.startswith(prefix) and string.endswith(suffix): + value = string[len(prefix):][:-len(suffix)] + return value + + +with open(Path(__file__).parent / 'package.xml', 'r') as xml_file: + for line in xml_file.readlines(): + if line.startswith(' ') and line.endswith('\n'): + package_name = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + version = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + description = get_value_from_string(line, ' ', '\n') + elif line.startswith(' \n'): + line = get_value_from_string(line, ' ') + elif line.startswith(' ') and line.endswith('\n'): + project_license = get_value_from_string(line, ' ', '\n') + + +setup( + name=package_name, + version=version, + packages=[package_name], + data_files=[ + (str(Path('share/ament_index/resource_index/packages')), [str(Path(f'resource/{package_name}'))]), + (str(Path(f'share/{package_name}/config')), glob(str(Path('config/*')))), + (str(Path(f'share/{package_name}/launch')), glob(str(Path('launch/*.launch.py')))), + (str(Path(f'share/{package_name}')), ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer=maintainer, + maintainer_email=maintainer_email, + description=description, + license=project_license, + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + 'take_snap_shot = camera_snap_shot.take_snap_shot:main' + ], + }, +) diff --git a/src/ros2_twist_message_to_robot_motion/ros2_twist_message_to_robot_motion/jetbot.py b/src/ros2_twist_message_to_robot_motion/ros2_twist_message_to_robot_motion/jetbot.py index f7d7908..d744ad6 100644 --- a/src/ros2_twist_message_to_robot_motion/ros2_twist_message_to_robot_motion/jetbot.py +++ b/src/ros2_twist_message_to_robot_motion/ros2_twist_message_to_robot_motion/jetbot.py @@ -70,8 +70,8 @@ def listener_callback(self, msg): x = self.x_calibration*float(msg.linear.x) z = self.z_calibration*float(msg.angular.z) - self.get_logger().info("x ={:.1f}".format(x)) - self.get_logger().info("z ={:.1f}".format(z)) + # self.get_logger().info("x ={:.1f}".format(x)) + # self.get_logger().info("z ={:.1f}".format(z)) # control robot movement # both wheel same state From 8d702c38f62a19415c6680735c34ba7dae226333 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Fri, 5 May 2023 16:01:09 +0200 Subject: [PATCH 04/16] working snapshot on trigger topic --- .gitignore | 2023 +++++++++++++++++ .../ros2_save_camera_image => }/__init__.py | 0 .../camera_snap_shot/take_snap_shot.py | 27 +- src/camera_snap_shot/package.xml | 1 + src/ros2_save_camera_image/README.md | 50 - src/ros2_save_camera_image/launch/launch.py | 70 - src/ros2_save_camera_image/package.xml | 23 - .../resource/ros2_save_camera_image | 0 .../ros2_save_camera_image/cloud.py | 152 -- .../ros2_save_camera_image/execute.py | 122 - src/ros2_save_camera_image/settings.json | 6 - src/ros2_save_camera_image/setup.cfg | 4 - src/ros2_save_camera_image/setup.py | 29 - .../test/test_copyright.py | 23 - .../test/test_flake8.py | 23 - .../test/test_pep257.py | 23 - 16 files changed, 2039 insertions(+), 537 deletions(-) rename src/{ros2_save_camera_image/ros2_save_camera_image => }/__init__.py (100%) delete mode 100644 src/ros2_save_camera_image/README.md delete mode 100644 src/ros2_save_camera_image/launch/launch.py delete mode 100644 src/ros2_save_camera_image/package.xml delete mode 100644 src/ros2_save_camera_image/resource/ros2_save_camera_image delete mode 100644 src/ros2_save_camera_image/ros2_save_camera_image/cloud.py delete mode 100644 src/ros2_save_camera_image/ros2_save_camera_image/execute.py delete mode 100644 src/ros2_save_camera_image/settings.json delete mode 100644 src/ros2_save_camera_image/setup.cfg delete mode 100644 src/ros2_save_camera_image/setup.py delete mode 100644 src/ros2_save_camera_image/test/test_copyright.py delete mode 100644 src/ros2_save_camera_image/test/test_flake8.py delete mode 100644 src/ros2_save_camera_image/test/test_pep257.py diff --git a/.gitignore b/.gitignore index 3b0fc45..ab2ed74 100644 --- a/.gitignore +++ b/.gitignore @@ -65,3 +65,2026 @@ About /venv/ /.idea/ +src/camera_snap_shot/camera_snap_shot/temp.py +log/COLCON_IGNORE +log/latest +log/latest_build +log/build_2023-04-24_13-23-55/events.log +log/build_2023-04-24_13-23-55/logger_all.log +log/build_2023-04-24_13-23-55/robot_app/command.log +log/build_2023-04-24_13-23-55/robot_app/stderr.log +log/build_2023-04-24_13-23-55/robot_app/stdout_stderr.log +log/build_2023-04-24_13-23-55/robot_app/stdout.log +log/build_2023-04-24_13-23-55/robot_app/streams.log +log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/command.log +log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/stderr.log +log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/stdout.log +log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/streams.log +log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/command.log +log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/command.log +log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/streams.log +log/build_2023-04-24_13-23-55/ros2_save_camera_image/command.log +log/build_2023-04-24_13-23-55/ros2_save_camera_image/stderr.log +log/build_2023-04-24_13-23-55/ros2_save_camera_image/stdout_stderr.log +log/build_2023-04-24_13-23-55/ros2_save_camera_image/stdout.log +log/build_2023-04-24_13-23-55/ros2_save_camera_image/streams.log +log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/command.log +log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-04-24_13-38-40/events.log +log/build_2023-04-24_13-38-40/logger_all.log +log/build_2023-04-24_13-38-40/robot_app/command.log +log/build_2023-04-24_13-38-40/robot_app/stderr.log +log/build_2023-04-24_13-38-40/robot_app/stdout_stderr.log +log/build_2023-04-24_13-38-40/robot_app/stdout.log +log/build_2023-04-24_13-38-40/robot_app/streams.log +log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/command.log +log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/stderr.log +log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/stdout.log +log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/streams.log +log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/command.log +log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/command.log +log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/streams.log +log/build_2023-04-24_13-38-40/ros2_save_camera_image/command.log +log/build_2023-04-24_13-38-40/ros2_save_camera_image/stderr.log +log/build_2023-04-24_13-38-40/ros2_save_camera_image/stdout_stderr.log +log/build_2023-04-24_13-38-40/ros2_save_camera_image/stdout.log +log/build_2023-04-24_13-38-40/ros2_save_camera_image/streams.log +log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/command.log +log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-04-24_19-27-25/events.log +log/build_2023-04-24_19-27-25/logger_all.log +log/build_2023-04-24_19-27-25/robot_app/command.log +log/build_2023-04-24_19-27-25/robot_app/stderr.log +log/build_2023-04-24_19-27-25/robot_app/stdout_stderr.log +log/build_2023-04-24_19-27-25/robot_app/stdout.log +log/build_2023-04-24_19-27-25/robot_app/streams.log +log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/command.log +log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/stderr.log +log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/stdout.log +log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/streams.log +log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/command.log +log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/command.log +log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/streams.log +log/build_2023-04-24_19-27-25/ros2_save_camera_image/command.log +log/build_2023-04-24_19-27-25/ros2_save_camera_image/stderr.log +log/build_2023-04-24_19-27-25/ros2_save_camera_image/stdout_stderr.log +log/build_2023-04-24_19-27-25/ros2_save_camera_image/stdout.log +log/build_2023-04-24_19-27-25/ros2_save_camera_image/streams.log +log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/command.log +log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-03_14-51-50/events.log +log/build_2023-05-03_14-51-50/logger_all.log +log/build_2023-05-03_14-51-50/robot_app/command.log +log/build_2023-05-03_14-51-50/robot_app/stderr.log +log/build_2023-05-03_14-51-50/robot_app/stdout_stderr.log +log/build_2023-05-03_14-51-50/robot_app/stdout.log +log/build_2023-05-03_14-51-50/robot_app/streams.log +log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/command.log +log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/stderr.log +log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/stdout.log +log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/streams.log +log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-03_14-51-50/ros2_save_camera_image/command.log +log/build_2023-05-03_14-51-50/ros2_save_camera_image/stderr.log +log/build_2023-05-03_14-51-50/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-03_14-51-50/ros2_save_camera_image/stdout.log +log/build_2023-05-03_14-51-50/ros2_save_camera_image/streams.log +log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-03_15-33-52/events.log +log/build_2023-05-03_15-33-52/logger_all.log +log/build_2023-05-03_15-33-52/robot_app/command.log +log/build_2023-05-03_15-33-52/robot_app/stderr.log +log/build_2023-05-03_15-33-52/robot_app/stdout_stderr.log +log/build_2023-05-03_15-33-52/robot_app/stdout.log +log/build_2023-05-03_15-33-52/robot_app/streams.log +log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/command.log +log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/stderr.log +log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/stdout.log +log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/streams.log +log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-03_15-33-52/ros2_save_camera_image/command.log +log/build_2023-05-03_15-33-52/ros2_save_camera_image/stderr.log +log/build_2023-05-03_15-33-52/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-03_15-33-52/ros2_save_camera_image/stdout.log +log/build_2023-05-03_15-33-52/ros2_save_camera_image/streams.log +log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-03_15-40-04/events.log +log/build_2023-05-03_15-40-04/logger_all.log +log/build_2023-05-03_15-40-04/robot_app/command.log +log/build_2023-05-03_15-40-04/robot_app/stderr.log +log/build_2023-05-03_15-40-04/robot_app/stdout_stderr.log +log/build_2023-05-03_15-40-04/robot_app/stdout.log +log/build_2023-05-03_15-40-04/robot_app/streams.log +log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/command.log +log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/stderr.log +log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/stdout.log +log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/streams.log +log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-03_15-40-04/ros2_save_camera_image/command.log +log/build_2023-05-03_15-40-04/ros2_save_camera_image/stderr.log +log/build_2023-05-03_15-40-04/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-03_15-40-04/ros2_save_camera_image/stdout.log +log/build_2023-05-03_15-40-04/ros2_save_camera_image/streams.log +log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-03_16-14-18/events.log +log/build_2023-05-03_16-14-18/logger_all.log +log/build_2023-05-03_16-14-18/robot_app/command.log +log/build_2023-05-03_16-14-18/robot_app/stderr.log +log/build_2023-05-03_16-14-18/robot_app/stdout_stderr.log +log/build_2023-05-03_16-14-18/robot_app/stdout.log +log/build_2023-05-03_16-14-18/robot_app/streams.log +log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/command.log +log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/stderr.log +log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/stdout.log +log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/streams.log +log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-03_16-14-18/ros2_save_camera_image/command.log +log/build_2023-05-03_16-14-18/ros2_save_camera_image/stderr.log +log/build_2023-05-03_16-14-18/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-03_16-14-18/ros2_save_camera_image/stdout.log +log/build_2023-05-03_16-14-18/ros2_save_camera_image/streams.log +log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-03_16-26-04/events.log +log/build_2023-05-03_16-26-04/logger_all.log +log/build_2023-05-03_16-26-04/robot_app/command.log +log/build_2023-05-03_16-26-04/robot_app/stderr.log +log/build_2023-05-03_16-26-04/robot_app/stdout_stderr.log +log/build_2023-05-03_16-26-04/robot_app/stdout.log +log/build_2023-05-03_16-26-04/robot_app/streams.log +log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/command.log +log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/stderr.log +log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/stdout.log +log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/streams.log +log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-03_16-26-04/ros2_save_camera_image/command.log +log/build_2023-05-03_16-26-04/ros2_save_camera_image/stderr.log +log/build_2023-05-03_16-26-04/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-03_16-26-04/ros2_save_camera_image/stdout.log +log/build_2023-05-03_16-26-04/ros2_save_camera_image/streams.log +log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_11-09-08/events.log +log/build_2023-05-04_11-09-08/logger_all.log +log/build_2023-05-04_11-09-08/camera_snap_shot/command.log +log/build_2023-05-04_11-09-08/camera_snap_shot/stderr.log +log/build_2023-05-04_11-09-08/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_11-09-08/camera_snap_shot/stdout.log +log/build_2023-05-04_11-09-08/camera_snap_shot/streams.log +log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/command.log +log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_11-09-08/ros2_save_camera_image/command.log +log/build_2023-05-04_11-09-08/ros2_save_camera_image/stderr.log +log/build_2023-05-04_11-09-08/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_11-09-08/ros2_save_camera_image/stdout.log +log/build_2023-05-04_11-09-08/ros2_save_camera_image/streams.log +log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_11-10-31/events.log +log/build_2023-05-04_11-10-31/logger_all.log +log/build_2023-05-04_11-10-31/camera_snap_shot/command.log +log/build_2023-05-04_11-10-31/camera_snap_shot/stderr.log +log/build_2023-05-04_11-10-31/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_11-10-31/camera_snap_shot/stdout.log +log/build_2023-05-04_11-10-31/camera_snap_shot/streams.log +log/build_2023-05-04_11-10-31/robot_app/command.log +log/build_2023-05-04_11-10-31/robot_app/stderr.log +log/build_2023-05-04_11-10-31/robot_app/stdout_stderr.log +log/build_2023-05-04_11-10-31/robot_app/stdout.log +log/build_2023-05-04_11-10-31/robot_app/streams.log +log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/command.log +log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_11-10-31/ros2_save_camera_image/command.log +log/build_2023-05-04_11-10-31/ros2_save_camera_image/stderr.log +log/build_2023-05-04_11-10-31/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_11-10-31/ros2_save_camera_image/stdout.log +log/build_2023-05-04_11-10-31/ros2_save_camera_image/streams.log +log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_12-45-34/events.log +log/build_2023-05-04_12-45-34/logger_all.log +log/build_2023-05-04_12-45-34/camera_snap_shot/command.log +log/build_2023-05-04_12-45-34/camera_snap_shot/stderr.log +log/build_2023-05-04_12-45-34/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_12-45-34/camera_snap_shot/stdout.log +log/build_2023-05-04_12-45-34/camera_snap_shot/streams.log +log/build_2023-05-04_12-45-34/robot_app/command.log +log/build_2023-05-04_12-45-34/robot_app/stderr.log +log/build_2023-05-04_12-45-34/robot_app/stdout_stderr.log +log/build_2023-05-04_12-45-34/robot_app/stdout.log +log/build_2023-05-04_12-45-34/robot_app/streams.log +log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/command.log +log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_12-45-34/ros2_save_camera_image/command.log +log/build_2023-05-04_12-45-34/ros2_save_camera_image/stderr.log +log/build_2023-05-04_12-45-34/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_12-45-34/ros2_save_camera_image/stdout.log +log/build_2023-05-04_12-45-34/ros2_save_camera_image/streams.log +log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_13-30-47/events.log +log/build_2023-05-04_13-30-47/logger_all.log +log/build_2023-05-04_13-30-47/camera_snap_shot/command.log +log/build_2023-05-04_13-30-47/camera_snap_shot/stderr.log +log/build_2023-05-04_13-30-47/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_13-30-47/camera_snap_shot/stdout.log +log/build_2023-05-04_13-30-47/camera_snap_shot/streams.log +log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/command.log +log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_13-30-47/ros2_save_camera_image/command.log +log/build_2023-05-04_13-30-47/ros2_save_camera_image/stderr.log +log/build_2023-05-04_13-30-47/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_13-30-47/ros2_save_camera_image/stdout.log +log/build_2023-05-04_13-30-47/ros2_save_camera_image/streams.log +log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_14-35-50/events.log +log/build_2023-05-04_14-35-50/logger_all.log +log/build_2023-05-04_14-35-50/camera_snap_shot/command.log +log/build_2023-05-04_14-35-50/camera_snap_shot/stderr.log +log/build_2023-05-04_14-35-50/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_14-35-50/camera_snap_shot/stdout.log +log/build_2023-05-04_14-35-50/camera_snap_shot/streams.log +log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/command.log +log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_14-35-50/ros2_save_camera_image/command.log +log/build_2023-05-04_14-35-50/ros2_save_camera_image/stderr.log +log/build_2023-05-04_14-35-50/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_14-35-50/ros2_save_camera_image/stdout.log +log/build_2023-05-04_14-35-50/ros2_save_camera_image/streams.log +log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_14-40-29/events.log +log/build_2023-05-04_14-40-29/logger_all.log +log/build_2023-05-04_14-40-29/camera_snap_shot/command.log +log/build_2023-05-04_14-40-29/camera_snap_shot/stderr.log +log/build_2023-05-04_14-40-29/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_14-40-29/camera_snap_shot/stdout.log +log/build_2023-05-04_14-40-29/camera_snap_shot/streams.log +log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/command.log +log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_14-40-29/ros2_save_camera_image/command.log +log/build_2023-05-04_14-40-29/ros2_save_camera_image/stderr.log +log/build_2023-05-04_14-40-29/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_14-40-29/ros2_save_camera_image/stdout.log +log/build_2023-05-04_14-40-29/ros2_save_camera_image/streams.log +log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_14-41-57/events.log +log/build_2023-05-04_14-41-57/logger_all.log +log/build_2023-05-04_14-41-57/camera_snap_shot/command.log +log/build_2023-05-04_14-41-57/camera_snap_shot/stderr.log +log/build_2023-05-04_14-41-57/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_14-41-57/camera_snap_shot/stdout.log +log/build_2023-05-04_14-41-57/camera_snap_shot/streams.log +log/build_2023-05-04_14-41-57/robot_app/command.log +log/build_2023-05-04_14-41-57/robot_app/stderr.log +log/build_2023-05-04_14-41-57/robot_app/stdout_stderr.log +log/build_2023-05-04_14-41-57/robot_app/stdout.log +log/build_2023-05-04_14-41-57/robot_app/streams.log +log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/command.log +log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_14-41-57/ros2_save_camera_image/command.log +log/build_2023-05-04_14-41-57/ros2_save_camera_image/stderr.log +log/build_2023-05-04_14-41-57/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_14-41-57/ros2_save_camera_image/stdout.log +log/build_2023-05-04_14-41-57/ros2_save_camera_image/streams.log +log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_14-45-35/events.log +log/build_2023-05-04_14-45-35/logger_all.log +log/build_2023-05-04_14-45-35/camera_snap_shot/command.log +log/build_2023-05-04_14-45-35/camera_snap_shot/stderr.log +log/build_2023-05-04_14-45-35/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_14-45-35/camera_snap_shot/stdout.log +log/build_2023-05-04_14-45-35/camera_snap_shot/streams.log +log/build_2023-05-04_14-45-35/robot_app/command.log +log/build_2023-05-04_14-45-35/robot_app/stderr.log +log/build_2023-05-04_14-45-35/robot_app/stdout_stderr.log +log/build_2023-05-04_14-45-35/robot_app/stdout.log +log/build_2023-05-04_14-45-35/robot_app/streams.log +log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/command.log +log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_14-45-35/ros2_save_camera_image/command.log +log/build_2023-05-04_14-45-35/ros2_save_camera_image/stderr.log +log/build_2023-05-04_14-45-35/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_14-45-35/ros2_save_camera_image/stdout.log +log/build_2023-05-04_14-45-35/ros2_save_camera_image/streams.log +log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_14-49-00/events.log +log/build_2023-05-04_14-49-00/logger_all.log +log/build_2023-05-04_14-49-00/camera_snap_shot/command.log +log/build_2023-05-04_14-49-00/camera_snap_shot/stderr.log +log/build_2023-05-04_14-49-00/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_14-49-00/camera_snap_shot/stdout.log +log/build_2023-05-04_14-49-00/camera_snap_shot/streams.log +log/build_2023-05-04_14-49-00/robot_app/command.log +log/build_2023-05-04_14-49-00/robot_app/stderr.log +log/build_2023-05-04_14-49-00/robot_app/stdout_stderr.log +log/build_2023-05-04_14-49-00/robot_app/stdout.log +log/build_2023-05-04_14-49-00/robot_app/streams.log +log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/command.log +log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_14-49-00/ros2_save_camera_image/command.log +log/build_2023-05-04_14-49-00/ros2_save_camera_image/stderr.log +log/build_2023-05-04_14-49-00/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_14-49-00/ros2_save_camera_image/stdout.log +log/build_2023-05-04_14-49-00/ros2_save_camera_image/streams.log +log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_14-54-26/events.log +log/build_2023-05-04_14-54-26/logger_all.log +log/build_2023-05-04_14-54-26/camera_snap_shot/command.log +log/build_2023-05-04_14-54-26/camera_snap_shot/stderr.log +log/build_2023-05-04_14-54-26/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_14-54-26/camera_snap_shot/stdout.log +log/build_2023-05-04_14-54-26/camera_snap_shot/streams.log +log/build_2023-05-04_14-54-26/robot_app/command.log +log/build_2023-05-04_14-54-26/robot_app/stderr.log +log/build_2023-05-04_14-54-26/robot_app/stdout_stderr.log +log/build_2023-05-04_14-54-26/robot_app/stdout.log +log/build_2023-05-04_14-54-26/robot_app/streams.log +log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/command.log +log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_14-54-26/ros2_save_camera_image/command.log +log/build_2023-05-04_14-54-26/ros2_save_camera_image/stderr.log +log/build_2023-05-04_14-54-26/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_14-54-26/ros2_save_camera_image/stdout.log +log/build_2023-05-04_14-54-26/ros2_save_camera_image/streams.log +log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_15-08-18/events.log +log/build_2023-05-04_15-08-18/logger_all.log +log/build_2023-05-04_15-08-18/camera_snap_shot/command.log +log/build_2023-05-04_15-08-18/camera_snap_shot/stderr.log +log/build_2023-05-04_15-08-18/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_15-08-18/camera_snap_shot/stdout.log +log/build_2023-05-04_15-08-18/camera_snap_shot/streams.log +log/build_2023-05-04_15-08-18/robot_app/command.log +log/build_2023-05-04_15-08-18/robot_app/stderr.log +log/build_2023-05-04_15-08-18/robot_app/stdout_stderr.log +log/build_2023-05-04_15-08-18/robot_app/stdout.log +log/build_2023-05-04_15-08-18/robot_app/streams.log +log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/command.log +log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_15-08-18/ros2_save_camera_image/command.log +log/build_2023-05-04_15-08-18/ros2_save_camera_image/stderr.log +log/build_2023-05-04_15-08-18/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_15-08-18/ros2_save_camera_image/stdout.log +log/build_2023-05-04_15-08-18/ros2_save_camera_image/streams.log +log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_15-15-15/events.log +log/build_2023-05-04_15-15-15/logger_all.log +log/build_2023-05-04_15-15-15/camera_snap_shot/command.log +log/build_2023-05-04_15-15-15/camera_snap_shot/stderr.log +log/build_2023-05-04_15-15-15/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_15-15-15/camera_snap_shot/stdout.log +log/build_2023-05-04_15-15-15/camera_snap_shot/streams.log +log/build_2023-05-04_15-15-15/robot_app/command.log +log/build_2023-05-04_15-15-15/robot_app/stderr.log +log/build_2023-05-04_15-15-15/robot_app/stdout_stderr.log +log/build_2023-05-04_15-15-15/robot_app/stdout.log +log/build_2023-05-04_15-15-15/robot_app/streams.log +log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/command.log +log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_15-15-15/ros2_save_camera_image/command.log +log/build_2023-05-04_15-15-15/ros2_save_camera_image/stderr.log +log/build_2023-05-04_15-15-15/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_15-15-15/ros2_save_camera_image/stdout.log +log/build_2023-05-04_15-15-15/ros2_save_camera_image/streams.log +log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_15-21-20/events.log +log/build_2023-05-04_15-21-20/logger_all.log +log/build_2023-05-04_15-21-20/camera_snap_shot/command.log +log/build_2023-05-04_15-21-20/camera_snap_shot/stderr.log +log/build_2023-05-04_15-21-20/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_15-21-20/camera_snap_shot/stdout.log +log/build_2023-05-04_15-21-20/camera_snap_shot/streams.log +log/build_2023-05-04_15-21-20/robot_app/command.log +log/build_2023-05-04_15-21-20/robot_app/stderr.log +log/build_2023-05-04_15-21-20/robot_app/stdout_stderr.log +log/build_2023-05-04_15-21-20/robot_app/stdout.log +log/build_2023-05-04_15-21-20/robot_app/streams.log +log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/command.log +log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_15-21-20/ros2_save_camera_image/command.log +log/build_2023-05-04_15-21-20/ros2_save_camera_image/stderr.log +log/build_2023-05-04_15-21-20/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_15-21-20/ros2_save_camera_image/stdout.log +log/build_2023-05-04_15-21-20/ros2_save_camera_image/streams.log +log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_16-56-46/events.log +log/build_2023-05-04_16-56-46/logger_all.log +log/build_2023-05-04_16-56-46/camera_snap_shot/command.log +log/build_2023-05-04_16-56-46/camera_snap_shot/stderr.log +log/build_2023-05-04_16-56-46/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_16-56-46/camera_snap_shot/stdout.log +log/build_2023-05-04_16-56-46/camera_snap_shot/streams.log +log/build_2023-05-04_16-56-46/robot_app/command.log +log/build_2023-05-04_16-56-46/robot_app/stderr.log +log/build_2023-05-04_16-56-46/robot_app/stdout_stderr.log +log/build_2023-05-04_16-56-46/robot_app/stdout.log +log/build_2023-05-04_16-56-46/robot_app/streams.log +log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/command.log +log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_16-56-46/ros2_save_camera_image/command.log +log/build_2023-05-04_16-56-46/ros2_save_camera_image/stderr.log +log/build_2023-05-04_16-56-46/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_16-56-46/ros2_save_camera_image/stdout.log +log/build_2023-05-04_16-56-46/ros2_save_camera_image/streams.log +log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_17-19-28/events.log +log/build_2023-05-04_17-19-28/logger_all.log +log/build_2023-05-04_17-19-28/camera_snap_shot/command.log +log/build_2023-05-04_17-19-28/camera_snap_shot/stderr.log +log/build_2023-05-04_17-19-28/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_17-19-28/camera_snap_shot/stdout.log +log/build_2023-05-04_17-19-28/camera_snap_shot/streams.log +log/build_2023-05-04_17-19-28/robot_app/command.log +log/build_2023-05-04_17-19-28/robot_app/stderr.log +log/build_2023-05-04_17-19-28/robot_app/stdout_stderr.log +log/build_2023-05-04_17-19-28/robot_app/stdout.log +log/build_2023-05-04_17-19-28/robot_app/streams.log +log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/command.log +log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_17-19-28/ros2_save_camera_image/command.log +log/build_2023-05-04_17-19-28/ros2_save_camera_image/stderr.log +log/build_2023-05-04_17-19-28/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_17-19-28/ros2_save_camera_image/stdout.log +log/build_2023-05-04_17-19-28/ros2_save_camera_image/streams.log +log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_17-22-12/events.log +log/build_2023-05-04_17-22-12/logger_all.log +log/build_2023-05-04_17-22-12/camera_snap_shot/command.log +log/build_2023-05-04_17-22-12/camera_snap_shot/stderr.log +log/build_2023-05-04_17-22-12/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_17-22-12/camera_snap_shot/stdout.log +log/build_2023-05-04_17-22-12/camera_snap_shot/streams.log +log/build_2023-05-04_17-22-12/robot_app/command.log +log/build_2023-05-04_17-22-12/robot_app/stderr.log +log/build_2023-05-04_17-22-12/robot_app/stdout_stderr.log +log/build_2023-05-04_17-22-12/robot_app/stdout.log +log/build_2023-05-04_17-22-12/robot_app/streams.log +log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/command.log +log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_17-22-12/ros2_save_camera_image/command.log +log/build_2023-05-04_17-22-12/ros2_save_camera_image/stderr.log +log/build_2023-05-04_17-22-12/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_17-22-12/ros2_save_camera_image/stdout.log +log/build_2023-05-04_17-22-12/ros2_save_camera_image/streams.log +log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-04_17-30-02/events.log +log/build_2023-05-04_17-30-02/logger_all.log +log/build_2023-05-04_17-30-02/camera_snap_shot/command.log +log/build_2023-05-04_17-30-02/camera_snap_shot/stderr.log +log/build_2023-05-04_17-30-02/camera_snap_shot/stdout_stderr.log +log/build_2023-05-04_17-30-02/camera_snap_shot/stdout.log +log/build_2023-05-04_17-30-02/camera_snap_shot/streams.log +log/build_2023-05-04_17-30-02/robot_app/command.log +log/build_2023-05-04_17-30-02/robot_app/stderr.log +log/build_2023-05-04_17-30-02/robot_app/stdout_stderr.log +log/build_2023-05-04_17-30-02/robot_app/stdout.log +log/build_2023-05-04_17-30-02/robot_app/streams.log +log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/command.log +log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/stderr.log +log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/stdout.log +log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/streams.log +log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-04_17-30-02/ros2_save_camera_image/command.log +log/build_2023-05-04_17-30-02/ros2_save_camera_image/stderr.log +log/build_2023-05-04_17-30-02/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-04_17-30-02/ros2_save_camera_image/stdout.log +log/build_2023-05-04_17-30-02/ros2_save_camera_image/streams.log +log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_09-27-08/events.log +log/build_2023-05-05_09-27-08/logger_all.log +log/build_2023-05-05_09-27-08/camera_snap_shot/command.log +log/build_2023-05-05_09-27-08/camera_snap_shot/stderr.log +log/build_2023-05-05_09-27-08/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_09-27-08/camera_snap_shot/stdout.log +log/build_2023-05-05_09-27-08/camera_snap_shot/streams.log +log/build_2023-05-05_09-27-08/robot_app/command.log +log/build_2023-05-05_09-27-08/robot_app/stderr.log +log/build_2023-05-05_09-27-08/robot_app/stdout_stderr.log +log/build_2023-05-05_09-27-08/robot_app/stdout.log +log/build_2023-05-05_09-27-08/robot_app/streams.log +log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/command.log +log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_09-27-08/ros2_save_camera_image/command.log +log/build_2023-05-05_09-27-08/ros2_save_camera_image/stderr.log +log/build_2023-05-05_09-27-08/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_09-27-08/ros2_save_camera_image/stdout.log +log/build_2023-05-05_09-27-08/ros2_save_camera_image/streams.log +log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_09-42-27/events.log +log/build_2023-05-05_09-42-27/logger_all.log +log/build_2023-05-05_09-42-27/camera_snap_shot/command.log +log/build_2023-05-05_09-42-27/camera_snap_shot/stderr.log +log/build_2023-05-05_09-42-27/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_09-42-27/camera_snap_shot/stdout.log +log/build_2023-05-05_09-42-27/camera_snap_shot/streams.log +log/build_2023-05-05_09-42-27/robot_app/command.log +log/build_2023-05-05_09-42-27/robot_app/stderr.log +log/build_2023-05-05_09-42-27/robot_app/stdout_stderr.log +log/build_2023-05-05_09-42-27/robot_app/stdout.log +log/build_2023-05-05_09-42-27/robot_app/streams.log +log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/command.log +log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_09-42-27/ros2_save_camera_image/command.log +log/build_2023-05-05_09-42-27/ros2_save_camera_image/stderr.log +log/build_2023-05-05_09-42-27/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_09-42-27/ros2_save_camera_image/stdout.log +log/build_2023-05-05_09-42-27/ros2_save_camera_image/streams.log +log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_09-50-50/events.log +log/build_2023-05-05_09-50-50/logger_all.log +log/build_2023-05-05_09-50-50/camera_snap_shot/command.log +log/build_2023-05-05_09-50-50/camera_snap_shot/stderr.log +log/build_2023-05-05_09-50-50/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_09-50-50/camera_snap_shot/stdout.log +log/build_2023-05-05_09-50-50/camera_snap_shot/streams.log +log/build_2023-05-05_09-50-50/robot_app/command.log +log/build_2023-05-05_09-50-50/robot_app/stderr.log +log/build_2023-05-05_09-50-50/robot_app/stdout_stderr.log +log/build_2023-05-05_09-50-50/robot_app/stdout.log +log/build_2023-05-05_09-50-50/robot_app/streams.log +log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/command.log +log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_09-50-50/ros2_save_camera_image/command.log +log/build_2023-05-05_09-50-50/ros2_save_camera_image/stderr.log +log/build_2023-05-05_09-50-50/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_09-50-50/ros2_save_camera_image/stdout.log +log/build_2023-05-05_09-50-50/ros2_save_camera_image/streams.log +log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_10-02-18/events.log +log/build_2023-05-05_10-02-18/logger_all.log +log/build_2023-05-05_10-02-18/camera_snap_shot/command.log +log/build_2023-05-05_10-02-18/camera_snap_shot/stderr.log +log/build_2023-05-05_10-02-18/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_10-02-18/camera_snap_shot/stdout.log +log/build_2023-05-05_10-02-18/camera_snap_shot/streams.log +log/build_2023-05-05_10-02-18/robot_app/command.log +log/build_2023-05-05_10-02-18/robot_app/stderr.log +log/build_2023-05-05_10-02-18/robot_app/stdout_stderr.log +log/build_2023-05-05_10-02-18/robot_app/stdout.log +log/build_2023-05-05_10-02-18/robot_app/streams.log +log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/command.log +log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_10-02-18/ros2_save_camera_image/command.log +log/build_2023-05-05_10-02-18/ros2_save_camera_image/stderr.log +log/build_2023-05-05_10-02-18/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_10-02-18/ros2_save_camera_image/stdout.log +log/build_2023-05-05_10-02-18/ros2_save_camera_image/streams.log +log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_10-07-26/events.log +log/build_2023-05-05_10-07-26/logger_all.log +log/build_2023-05-05_10-07-26/camera_snap_shot/command.log +log/build_2023-05-05_10-07-26/camera_snap_shot/stderr.log +log/build_2023-05-05_10-07-26/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_10-07-26/camera_snap_shot/stdout.log +log/build_2023-05-05_10-07-26/camera_snap_shot/streams.log +log/build_2023-05-05_10-07-26/robot_app/command.log +log/build_2023-05-05_10-07-26/robot_app/stderr.log +log/build_2023-05-05_10-07-26/robot_app/stdout_stderr.log +log/build_2023-05-05_10-07-26/robot_app/stdout.log +log/build_2023-05-05_10-07-26/robot_app/streams.log +log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/command.log +log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_10-07-26/ros2_save_camera_image/command.log +log/build_2023-05-05_10-07-26/ros2_save_camera_image/stderr.log +log/build_2023-05-05_10-07-26/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_10-07-26/ros2_save_camera_image/stdout.log +log/build_2023-05-05_10-07-26/ros2_save_camera_image/streams.log +log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_12-45-57/events.log +log/build_2023-05-05_12-45-57/logger_all.log +log/build_2023-05-05_12-45-57/camera_snap_shot/command.log +log/build_2023-05-05_12-45-57/camera_snap_shot/stderr.log +log/build_2023-05-05_12-45-57/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_12-45-57/camera_snap_shot/stdout.log +log/build_2023-05-05_12-45-57/camera_snap_shot/streams.log +log/build_2023-05-05_12-45-57/robot_app/command.log +log/build_2023-05-05_12-45-57/robot_app/stderr.log +log/build_2023-05-05_12-45-57/robot_app/stdout_stderr.log +log/build_2023-05-05_12-45-57/robot_app/stdout.log +log/build_2023-05-05_12-45-57/robot_app/streams.log +log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/command.log +log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_12-45-57/ros2_save_camera_image/command.log +log/build_2023-05-05_12-45-57/ros2_save_camera_image/stderr.log +log/build_2023-05-05_12-45-57/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_12-45-57/ros2_save_camera_image/stdout.log +log/build_2023-05-05_12-45-57/ros2_save_camera_image/streams.log +log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_12-47-24/events.log +log/build_2023-05-05_12-47-24/logger_all.log +log/build_2023-05-05_12-47-24/camera_snap_shot/command.log +log/build_2023-05-05_12-47-24/camera_snap_shot/stderr.log +log/build_2023-05-05_12-47-24/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_12-47-24/camera_snap_shot/stdout.log +log/build_2023-05-05_12-47-24/camera_snap_shot/streams.log +log/build_2023-05-05_12-47-24/robot_app/command.log +log/build_2023-05-05_12-47-24/robot_app/stderr.log +log/build_2023-05-05_12-47-24/robot_app/stdout_stderr.log +log/build_2023-05-05_12-47-24/robot_app/stdout.log +log/build_2023-05-05_12-47-24/robot_app/streams.log +log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/command.log +log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_12-47-24/ros2_save_camera_image/command.log +log/build_2023-05-05_12-47-24/ros2_save_camera_image/stderr.log +log/build_2023-05-05_12-47-24/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_12-47-24/ros2_save_camera_image/stdout.log +log/build_2023-05-05_12-47-24/ros2_save_camera_image/streams.log +log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_12-53-01/events.log +log/build_2023-05-05_12-53-01/logger_all.log +log/build_2023-05-05_12-53-01/camera_snap_shot/command.log +log/build_2023-05-05_12-53-01/camera_snap_shot/stderr.log +log/build_2023-05-05_12-53-01/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_12-53-01/camera_snap_shot/stdout.log +log/build_2023-05-05_12-53-01/camera_snap_shot/streams.log +log/build_2023-05-05_12-53-01/robot_app/command.log +log/build_2023-05-05_12-53-01/robot_app/stderr.log +log/build_2023-05-05_12-53-01/robot_app/stdout_stderr.log +log/build_2023-05-05_12-53-01/robot_app/stdout.log +log/build_2023-05-05_12-53-01/robot_app/streams.log +log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/command.log +log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_12-53-01/ros2_save_camera_image/command.log +log/build_2023-05-05_12-53-01/ros2_save_camera_image/stderr.log +log/build_2023-05-05_12-53-01/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_12-53-01/ros2_save_camera_image/stdout.log +log/build_2023-05-05_12-53-01/ros2_save_camera_image/streams.log +log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-17-36/events.log +log/build_2023-05-05_13-17-36/logger_all.log +log/build_2023-05-05_13-17-36/camera_snap_shot/command.log +log/build_2023-05-05_13-17-36/camera_snap_shot/stderr.log +log/build_2023-05-05_13-17-36/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-17-36/camera_snap_shot/stdout.log +log/build_2023-05-05_13-17-36/camera_snap_shot/streams.log +log/build_2023-05-05_13-17-36/robot_app/command.log +log/build_2023-05-05_13-17-36/robot_app/stderr.log +log/build_2023-05-05_13-17-36/robot_app/stdout_stderr.log +log/build_2023-05-05_13-17-36/robot_app/stdout.log +log/build_2023-05-05_13-17-36/robot_app/streams.log +log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-17-36/ros2_save_camera_image/command.log +log/build_2023-05-05_13-17-36/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-17-36/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-17-36/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-17-36/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-22-00/events.log +log/build_2023-05-05_13-22-00/logger_all.log +log/build_2023-05-05_13-22-00/camera_snap_shot/command.log +log/build_2023-05-05_13-22-00/camera_snap_shot/stderr.log +log/build_2023-05-05_13-22-00/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-22-00/camera_snap_shot/stdout.log +log/build_2023-05-05_13-22-00/camera_snap_shot/streams.log +log/build_2023-05-05_13-22-00/robot_app/command.log +log/build_2023-05-05_13-22-00/robot_app/stderr.log +log/build_2023-05-05_13-22-00/robot_app/stdout_stderr.log +log/build_2023-05-05_13-22-00/robot_app/stdout.log +log/build_2023-05-05_13-22-00/robot_app/streams.log +log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-22-00/ros2_save_camera_image/command.log +log/build_2023-05-05_13-22-00/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-22-00/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-22-00/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-22-00/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-23-40/events.log +log/build_2023-05-05_13-23-40/logger_all.log +log/build_2023-05-05_13-23-40/camera_snap_shot/command.log +log/build_2023-05-05_13-23-40/camera_snap_shot/stderr.log +log/build_2023-05-05_13-23-40/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-23-40/camera_snap_shot/stdout.log +log/build_2023-05-05_13-23-40/camera_snap_shot/streams.log +log/build_2023-05-05_13-23-40/robot_app/command.log +log/build_2023-05-05_13-23-40/robot_app/stderr.log +log/build_2023-05-05_13-23-40/robot_app/stdout_stderr.log +log/build_2023-05-05_13-23-40/robot_app/stdout.log +log/build_2023-05-05_13-23-40/robot_app/streams.log +log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-23-40/ros2_save_camera_image/command.log +log/build_2023-05-05_13-23-40/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-23-40/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-23-40/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-23-40/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-30-09/events.log +log/build_2023-05-05_13-30-09/logger_all.log +log/build_2023-05-05_13-30-09/camera_snap_shot/command.log +log/build_2023-05-05_13-30-09/camera_snap_shot/stderr.log +log/build_2023-05-05_13-30-09/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-30-09/camera_snap_shot/stdout.log +log/build_2023-05-05_13-30-09/camera_snap_shot/streams.log +log/build_2023-05-05_13-30-09/robot_app/command.log +log/build_2023-05-05_13-30-09/robot_app/stderr.log +log/build_2023-05-05_13-30-09/robot_app/stdout_stderr.log +log/build_2023-05-05_13-30-09/robot_app/stdout.log +log/build_2023-05-05_13-30-09/robot_app/streams.log +log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-30-09/ros2_save_camera_image/command.log +log/build_2023-05-05_13-30-09/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-30-09/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-30-09/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-30-09/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-35-36/events.log +log/build_2023-05-05_13-35-36/logger_all.log +log/build_2023-05-05_13-35-36/camera_snap_shot/command.log +log/build_2023-05-05_13-35-36/camera_snap_shot/stderr.log +log/build_2023-05-05_13-35-36/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-35-36/camera_snap_shot/stdout.log +log/build_2023-05-05_13-35-36/camera_snap_shot/streams.log +log/build_2023-05-05_13-35-36/robot_app/command.log +log/build_2023-05-05_13-35-36/robot_app/stderr.log +log/build_2023-05-05_13-35-36/robot_app/stdout_stderr.log +log/build_2023-05-05_13-35-36/robot_app/stdout.log +log/build_2023-05-05_13-35-36/robot_app/streams.log +log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-35-36/ros2_save_camera_image/command.log +log/build_2023-05-05_13-35-36/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-35-36/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-35-36/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-35-36/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-46-19/events.log +log/build_2023-05-05_13-46-19/logger_all.log +log/build_2023-05-05_13-46-19/camera_snap_shot/command.log +log/build_2023-05-05_13-46-19/camera_snap_shot/stderr.log +log/build_2023-05-05_13-46-19/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-46-19/camera_snap_shot/stdout.log +log/build_2023-05-05_13-46-19/camera_snap_shot/streams.log +log/build_2023-05-05_13-46-19/robot_app/command.log +log/build_2023-05-05_13-46-19/robot_app/stderr.log +log/build_2023-05-05_13-46-19/robot_app/stdout_stderr.log +log/build_2023-05-05_13-46-19/robot_app/stdout.log +log/build_2023-05-05_13-46-19/robot_app/streams.log +log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-46-19/ros2_save_camera_image/command.log +log/build_2023-05-05_13-46-19/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-46-19/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-46-19/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-46-19/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-49-35/events.log +log/build_2023-05-05_13-49-35/logger_all.log +log/build_2023-05-05_13-49-35/camera_snap_shot/command.log +log/build_2023-05-05_13-49-35/camera_snap_shot/stderr.log +log/build_2023-05-05_13-49-35/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-49-35/camera_snap_shot/stdout.log +log/build_2023-05-05_13-49-35/camera_snap_shot/streams.log +log/build_2023-05-05_13-49-35/robot_app/command.log +log/build_2023-05-05_13-49-35/robot_app/stderr.log +log/build_2023-05-05_13-49-35/robot_app/stdout_stderr.log +log/build_2023-05-05_13-49-35/robot_app/stdout.log +log/build_2023-05-05_13-49-35/robot_app/streams.log +log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-49-35/ros2_save_camera_image/command.log +log/build_2023-05-05_13-49-35/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-49-35/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-49-35/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-49-35/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_13-53-35/events.log +log/build_2023-05-05_13-53-35/logger_all.log +log/build_2023-05-05_13-53-35/camera_snap_shot/command.log +log/build_2023-05-05_13-53-35/camera_snap_shot/stderr.log +log/build_2023-05-05_13-53-35/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_13-53-35/camera_snap_shot/stdout.log +log/build_2023-05-05_13-53-35/camera_snap_shot/streams.log +log/build_2023-05-05_13-53-35/robot_app/command.log +log/build_2023-05-05_13-53-35/robot_app/stderr.log +log/build_2023-05-05_13-53-35/robot_app/stdout_stderr.log +log/build_2023-05-05_13-53-35/robot_app/stdout.log +log/build_2023-05-05_13-53-35/robot_app/streams.log +log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/command.log +log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_13-53-35/ros2_save_camera_image/command.log +log/build_2023-05-05_13-53-35/ros2_save_camera_image/stderr.log +log/build_2023-05-05_13-53-35/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_13-53-35/ros2_save_camera_image/stdout.log +log/build_2023-05-05_13-53-35/ros2_save_camera_image/streams.log +log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_14-32-19/events.log +log/build_2023-05-05_14-32-19/logger_all.log +log/build_2023-05-05_14-32-19/camera_snap_shot/command.log +log/build_2023-05-05_14-32-19/camera_snap_shot/stderr.log +log/build_2023-05-05_14-32-19/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_14-32-19/camera_snap_shot/stdout.log +log/build_2023-05-05_14-32-19/camera_snap_shot/streams.log +log/build_2023-05-05_14-32-19/robot_app/command.log +log/build_2023-05-05_14-32-19/robot_app/stderr.log +log/build_2023-05-05_14-32-19/robot_app/stdout_stderr.log +log/build_2023-05-05_14-32-19/robot_app/stdout.log +log/build_2023-05-05_14-32-19/robot_app/streams.log +log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/command.log +log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_14-32-19/ros2_save_camera_image/command.log +log/build_2023-05-05_14-32-19/ros2_save_camera_image/stderr.log +log/build_2023-05-05_14-32-19/ros2_save_camera_image/stdout_stderr.log +log/build_2023-05-05_14-32-19/ros2_save_camera_image/stdout.log +log/build_2023-05-05_14-32-19/ros2_save_camera_image/streams.log +log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_14-46-59/events.log +log/build_2023-05-05_14-46-59/logger_all.log +log/build_2023-05-05_14-46-59/camera_snap_shot/command.log +log/build_2023-05-05_14-46-59/camera_snap_shot/stderr.log +log/build_2023-05-05_14-46-59/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_14-46-59/camera_snap_shot/stdout.log +log/build_2023-05-05_14-46-59/camera_snap_shot/streams.log +log/build_2023-05-05_14-46-59/robot_app/command.log +log/build_2023-05-05_14-46-59/robot_app/stderr.log +log/build_2023-05-05_14-46-59/robot_app/stdout_stderr.log +log/build_2023-05-05_14-46-59/robot_app/stdout.log +log/build_2023-05-05_14-46-59/robot_app/streams.log +log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/command.log +log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_14-55-23/events.log +log/build_2023-05-05_14-55-23/logger_all.log +log/build_2023-05-05_14-55-23/camera_snap_shot/command.log +log/build_2023-05-05_14-55-23/camera_snap_shot/stderr.log +log/build_2023-05-05_14-55-23/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_14-55-23/camera_snap_shot/stdout.log +log/build_2023-05-05_14-55-23/camera_snap_shot/streams.log +log/build_2023-05-05_14-55-23/robot_app/command.log +log/build_2023-05-05_14-55-23/robot_app/stderr.log +log/build_2023-05-05_14-55-23/robot_app/stdout_stderr.log +log/build_2023-05-05_14-55-23/robot_app/stdout.log +log/build_2023-05-05_14-55-23/robot_app/streams.log +log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/command.log +log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-07-23/events.log +log/build_2023-05-05_15-07-23/logger_all.log +log/build_2023-05-05_15-07-23/camera_snap_shot/command.log +log/build_2023-05-05_15-07-23/camera_snap_shot/stderr.log +log/build_2023-05-05_15-07-23/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-07-23/camera_snap_shot/stdout.log +log/build_2023-05-05_15-07-23/camera_snap_shot/streams.log +log/build_2023-05-05_15-07-23/robot_app/command.log +log/build_2023-05-05_15-07-23/robot_app/stderr.log +log/build_2023-05-05_15-07-23/robot_app/stdout_stderr.log +log/build_2023-05-05_15-07-23/robot_app/stdout.log +log/build_2023-05-05_15-07-23/robot_app/streams.log +log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-10-48/events.log +log/build_2023-05-05_15-10-48/logger_all.log +log/build_2023-05-05_15-10-48/camera_snap_shot/command.log +log/build_2023-05-05_15-10-48/camera_snap_shot/stderr.log +log/build_2023-05-05_15-10-48/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-10-48/camera_snap_shot/stdout.log +log/build_2023-05-05_15-10-48/camera_snap_shot/streams.log +log/build_2023-05-05_15-10-48/robot_app/command.log +log/build_2023-05-05_15-10-48/robot_app/stderr.log +log/build_2023-05-05_15-10-48/robot_app/stdout_stderr.log +log/build_2023-05-05_15-10-48/robot_app/stdout.log +log/build_2023-05-05_15-10-48/robot_app/streams.log +log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-12-46/events.log +log/build_2023-05-05_15-12-46/logger_all.log +log/build_2023-05-05_15-12-46/camera_snap_shot/command.log +log/build_2023-05-05_15-12-46/camera_snap_shot/stderr.log +log/build_2023-05-05_15-12-46/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-12-46/camera_snap_shot/stdout.log +log/build_2023-05-05_15-12-46/camera_snap_shot/streams.log +log/build_2023-05-05_15-12-46/robot_app/command.log +log/build_2023-05-05_15-12-46/robot_app/stderr.log +log/build_2023-05-05_15-12-46/robot_app/stdout_stderr.log +log/build_2023-05-05_15-12-46/robot_app/stdout.log +log/build_2023-05-05_15-12-46/robot_app/streams.log +log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-16-19/events.log +log/build_2023-05-05_15-16-19/logger_all.log +log/build_2023-05-05_15-16-19/camera_snap_shot/command.log +log/build_2023-05-05_15-16-19/camera_snap_shot/stderr.log +log/build_2023-05-05_15-16-19/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-16-19/camera_snap_shot/stdout.log +log/build_2023-05-05_15-16-19/camera_snap_shot/streams.log +log/build_2023-05-05_15-16-19/robot_app/command.log +log/build_2023-05-05_15-16-19/robot_app/stderr.log +log/build_2023-05-05_15-16-19/robot_app/stdout_stderr.log +log/build_2023-05-05_15-16-19/robot_app/stdout.log +log/build_2023-05-05_15-16-19/robot_app/streams.log +log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-20-15/events.log +log/build_2023-05-05_15-20-15/logger_all.log +log/build_2023-05-05_15-20-15/camera_snap_shot/command.log +log/build_2023-05-05_15-20-15/camera_snap_shot/stderr.log +log/build_2023-05-05_15-20-15/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-20-15/camera_snap_shot/stdout.log +log/build_2023-05-05_15-20-15/camera_snap_shot/streams.log +log/build_2023-05-05_15-20-15/robot_app/command.log +log/build_2023-05-05_15-20-15/robot_app/stderr.log +log/build_2023-05-05_15-20-15/robot_app/stdout_stderr.log +log/build_2023-05-05_15-20-15/robot_app/stdout.log +log/build_2023-05-05_15-20-15/robot_app/streams.log +log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-25-55/events.log +log/build_2023-05-05_15-25-55/logger_all.log +log/build_2023-05-05_15-25-55/camera_snap_shot/command.log +log/build_2023-05-05_15-25-55/camera_snap_shot/stderr.log +log/build_2023-05-05_15-25-55/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-25-55/camera_snap_shot/stdout.log +log/build_2023-05-05_15-25-55/camera_snap_shot/streams.log +log/build_2023-05-05_15-25-55/robot_app/command.log +log/build_2023-05-05_15-25-55/robot_app/stderr.log +log/build_2023-05-05_15-25-55/robot_app/stdout_stderr.log +log/build_2023-05-05_15-25-55/robot_app/stdout.log +log/build_2023-05-05_15-25-55/robot_app/streams.log +log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-33-05/events.log +log/build_2023-05-05_15-33-05/logger_all.log +log/build_2023-05-05_15-33-05/camera_snap_shot/command.log +log/build_2023-05-05_15-33-05/camera_snap_shot/stderr.log +log/build_2023-05-05_15-33-05/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-33-05/camera_snap_shot/stdout.log +log/build_2023-05-05_15-33-05/camera_snap_shot/streams.log +log/build_2023-05-05_15-33-05/robot_app/command.log +log/build_2023-05-05_15-33-05/robot_app/stderr.log +log/build_2023-05-05_15-33-05/robot_app/stdout_stderr.log +log/build_2023-05-05_15-33-05/robot_app/stdout.log +log/build_2023-05-05_15-33-05/robot_app/streams.log +log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-35-37/events.log +log/build_2023-05-05_15-35-37/logger_all.log +log/build_2023-05-05_15-35-37/camera_snap_shot/command.log +log/build_2023-05-05_15-35-37/camera_snap_shot/stderr.log +log/build_2023-05-05_15-35-37/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-35-37/camera_snap_shot/stdout.log +log/build_2023-05-05_15-35-37/camera_snap_shot/streams.log +log/build_2023-05-05_15-35-37/robot_app/command.log +log/build_2023-05-05_15-35-37/robot_app/stderr.log +log/build_2023-05-05_15-35-37/robot_app/stdout_stderr.log +log/build_2023-05-05_15-35-37/robot_app/stdout.log +log/build_2023-05-05_15-35-37/robot_app/streams.log +log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-41-21/events.log +log/build_2023-05-05_15-41-21/logger_all.log +log/build_2023-05-05_15-41-21/camera_snap_shot/command.log +log/build_2023-05-05_15-41-21/camera_snap_shot/stderr.log +log/build_2023-05-05_15-41-21/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-41-21/camera_snap_shot/stdout.log +log/build_2023-05-05_15-41-21/camera_snap_shot/streams.log +log/build_2023-05-05_15-41-21/robot_app/command.log +log/build_2023-05-05_15-41-21/robot_app/stderr.log +log/build_2023-05-05_15-41-21/robot_app/stdout_stderr.log +log/build_2023-05-05_15-41-21/robot_app/stdout.log +log/build_2023-05-05_15-41-21/robot_app/streams.log +log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-46-37/events.log +log/build_2023-05-05_15-46-37/logger_all.log +log/build_2023-05-05_15-46-37/camera_snap_shot/command.log +log/build_2023-05-05_15-46-37/camera_snap_shot/stderr.log +log/build_2023-05-05_15-46-37/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-46-37/camera_snap_shot/stdout.log +log/build_2023-05-05_15-46-37/camera_snap_shot/streams.log +log/build_2023-05-05_15-46-37/robot_app/command.log +log/build_2023-05-05_15-46-37/robot_app/stderr.log +log/build_2023-05-05_15-46-37/robot_app/stdout_stderr.log +log/build_2023-05-05_15-46-37/robot_app/stdout.log +log/build_2023-05-05_15-46-37/robot_app/streams.log +log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/streams.log +log/build_2023-05-05_15-51-54/events.log +log/build_2023-05-05_15-51-54/logger_all.log +log/build_2023-05-05_15-51-54/camera_snap_shot/command.log +log/build_2023-05-05_15-51-54/camera_snap_shot/stderr.log +log/build_2023-05-05_15-51-54/camera_snap_shot/stdout_stderr.log +log/build_2023-05-05_15-51-54/camera_snap_shot/stdout.log +log/build_2023-05-05_15-51-54/camera_snap_shot/streams.log +log/build_2023-05-05_15-51-54/robot_app/command.log +log/build_2023-05-05_15-51-54/robot_app/stderr.log +log/build_2023-05-05_15-51-54/robot_app/stdout_stderr.log +log/build_2023-05-05_15-51-54/robot_app/stdout.log +log/build_2023-05-05_15-51-54/robot_app/streams.log +log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/command.log +log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/stderr.log +log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/stdout_stderr.log +log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/stdout.log +log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/streams.log +log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/command.log +log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/stderr.log +log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/stdout.log +log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/streams.log +log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/command.log +log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/stderr.log +log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/stdout_stderr.log +log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/stdout.log +log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/streams.log +log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/command.log +log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/stderr.log +log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/stdout_stderr.log +log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/stdout.log +log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/streams.log +install/_local_setup_util_ps1.py +install/_local_setup_util_sh.py +install/.colcon_install_layout +install/COLCON_IGNORE +install/local_setup.bash +install/local_setup.ps1 +install/local_setup.sh +install/local_setup.zsh +install/setup.bash +install/setup.ps1 +install/setup.sh +install/setup.zsh +install/camera_snap_shot/share/ament_index/resource_index/packages/camera_snap_shot +install/camera_snap_shot/share/camera_snap_shot/package.bash +install/camera_snap_shot/share/camera_snap_shot/package.dsv +install/camera_snap_shot/share/camera_snap_shot/package.ps1 +install/camera_snap_shot/share/camera_snap_shot/package.sh +install/camera_snap_shot/share/camera_snap_shot/package.xml +install/camera_snap_shot/share/camera_snap_shot/package.zsh +install/camera_snap_shot/share/camera_snap_shot/config/camera_snap_shot_settings.json +install/camera_snap_shot/share/camera_snap_shot/hook/ament_prefix_path.dsv +install/camera_snap_shot/share/camera_snap_shot/hook/ament_prefix_path.ps1 +install/camera_snap_shot/share/camera_snap_shot/hook/ament_prefix_path.sh +install/camera_snap_shot/share/camera_snap_shot/hook/pythonpath.dsv +install/camera_snap_shot/share/camera_snap_shot/hook/pythonpath.ps1 +install/camera_snap_shot/share/camera_snap_shot/hook/pythonpath.sh +install/camera_snap_shot/share/camera_snap_shot/launch/camera_snap_shot.launch.py +install/camera_snap_shot/share/colcon-core/packages/camera_snap_shot +install/robot_app/share/ament_index/resource_index/packages/robot_app +install/robot_app/share/colcon-core/packages/robot_app +install/robot_app/share/robot_app/package.bash +install/robot_app/share/robot_app/package.dsv +install/robot_app/share/robot_app/package.ps1 +install/robot_app/share/robot_app/package.sh +install/robot_app/share/robot_app/package.xml +install/robot_app/share/robot_app/package.zsh +install/robot_app/share/robot_app/hook/ament_prefix_path.dsv +install/robot_app/share/robot_app/hook/ament_prefix_path.ps1 +install/robot_app/share/robot_app/hook/ament_prefix_path.sh +install/robot_app/share/robot_app/hook/pythonpath.dsv +install/robot_app/share/robot_app/hook/pythonpath.ps1 +install/robot_app/share/robot_app/hook/pythonpath.sh +install/robot_app/share/robot_app/launch/autonomous_launch.py +install/robot_app/share/robot_app/launch/gamepad_launch.py +install/ros2_csi_camera_publish/share/ament_index/resource_index/packages/ros2_csi_camera_publish +install/ros2_csi_camera_publish/share/colcon-core/packages/ros2_csi_camera_publish +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.bash +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.dsv +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.ps1 +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.sh +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.xml +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.zsh +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/settings.json +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/ament_prefix_path.dsv +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/ament_prefix_path.ps1 +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/ament_prefix_path.sh +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/pythonpath.dsv +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/pythonpath.ps1 +install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/pythonpath.sh +install/ros2_deep_learning_to_twist_message/share/ament_index/resource_index/packages/ros2_deep_learning_to_twist_message +install/ros2_deep_learning_to_twist_message/share/colcon-core/packages/ros2_deep_learning_to_twist_message +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.bash +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.dsv +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.ps1 +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.sh +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.xml +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.zsh +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/settings.json +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/ament_prefix_path.dsv +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/ament_prefix_path.ps1 +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/ament_prefix_path.sh +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/pythonpath.dsv +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/pythonpath.ps1 +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/pythonpath.sh +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/launch/launch.py +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/models/x.onnx +install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/models/z.onnx +install/ros2_gamepad_to_twist_message/share/ament_index/resource_index/packages/ros2_gamepad_to_twist_message +install/ros2_gamepad_to_twist_message/share/colcon-core/packages/ros2_gamepad_to_twist_message +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.bash +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.dsv +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.ps1 +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.sh +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.xml +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.zsh +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/settings.json +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/ament_prefix_path.dsv +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/ament_prefix_path.ps1 +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/ament_prefix_path.sh +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/pythonpath.dsv +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/pythonpath.ps1 +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/pythonpath.sh +install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/launch/launch.py +install/ros2_twist_message_to_robot_motion/share/ament_index/resource_index/packages/ros2_twist_message_to_robot_motion +install/ros2_twist_message_to_robot_motion/share/colcon-core/packages/ros2_twist_message_to_robot_motion +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.bash +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.dsv +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.ps1 +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.sh +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.xml +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.zsh +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/settings.json +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/ament_prefix_path.dsv +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/ament_prefix_path.ps1 +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/ament_prefix_path.sh +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/pythonpath.dsv +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/pythonpath.ps1 +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/pythonpath.sh +install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/launch/launch.py diff --git a/src/ros2_save_camera_image/ros2_save_camera_image/__init__.py b/src/__init__.py similarity index 100% rename from src/ros2_save_camera_image/ros2_save_camera_image/__init__.py rename to src/__init__.py diff --git a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py index fb30e94..ee90561 100644 --- a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py +++ b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py @@ -21,6 +21,7 @@ from sensor_msgs.msg import Image from ament_index_python.packages import get_package_share_directory from std_msgs.msg import String +from cv_bridge import CvBridge, CvBridgeError # ___Global Variables: SETTINGS = os.path.join(get_package_share_directory('camera_snap_shot'), "config/camera_snap_shot_settings.json") @@ -39,7 +40,7 @@ def gstreamer_pipeline(capture_width=json_settings["capture_width"], """ return ( - "nvarguscamerasrc ! " + "nvarguscamerasrc sensor-id=0 sensor-mode=2 ! " "video/x-raw(memory:NVMM), " "width=(int)%d, height=(int)%d, " "format=(string)NV12, framerate=(fraction)%d/1 ! " @@ -63,11 +64,15 @@ def __init__(self, publish_topic='/image', trigger_topic='/trigger', publish_fre super().__init__('camera_publisher') # initialize publisher - self.publisher_ = self.create_publisher(Image, publish_topic, publish_frequency) + self.publisher_ = self.create_publisher(Image, publish_topic, 1) self.subscription1 = self.create_subscription(String, trigger_topic, self.listener_callback1, 1) # set image counter self.i = 0 + # self.cap = cv2.VideoCapture(gstreamer_pipeline(1920, 1080, + # 1920, 1080, + # 30, 0, ), cv2.CAP_GSTREAMER) + self.bridge = CvBridge() def listener_callback1(self, msg): """Timer Callback Function @@ -75,9 +80,7 @@ def listener_callback1(self, msg): This method captures images and publishes required data in ros 2 topic. """ - cap = cv2.VideoCapture(gstreamer_pipeline(1920, 1080, - 1920, 1080, - 30, 0, ), cv2.CAP_GSTREAMER) + cap = cv2.VideoCapture("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink") if cap.isOpened(): # reads image data @@ -95,13 +98,17 @@ def listener_callback1(self, msg): msg_image.data = np.array(frame).tobytes() if msg.data == json_settings["camera_trigger_message"]: + cv2.imwrite(f"snapshot_files/image{self.i}.jpg", frame) + # publishes message + # self.publisher_.publish(self.bridge.cv2_to_imgmsg(frame, "bgr8")) self.publisher_.publish(msg_image) - self.get_logger().info('%d Images Published' % self.i) + + self.get_logger().info(f'image saved at image{self.i}.jpg') cap.release() - # image counter increment - self.i += 1 + # image counter increment + self.i += 1 return None @@ -133,7 +140,3 @@ def main(args=None): # ___Driver Program: if __name__ == '__main__': main() - -# -# end of file -"""ORDINA""" \ No newline at end of file diff --git a/src/camera_snap_shot/package.xml b/src/camera_snap_shot/package.xml index 48f8bcc..d315861 100644 --- a/src/camera_snap_shot/package.xml +++ b/src/camera_snap_shot/package.xml @@ -10,6 +10,7 @@ ament_index_python rclpy sensor_msgs + cv_bridge ament_copyright ament_flake8 diff --git a/src/ros2_save_camera_image/README.md b/src/ros2_save_camera_image/README.md deleted file mode 100644 index f32cac2..0000000 --- a/src/ros2_save_camera_image/README.md +++ /dev/null @@ -1,50 +0,0 @@ -

-

ROS 2 Package to Save Anotated Camera Image

-

- -

-ROS 2 Package to Save Camera Image Published in ROS2 Topic along with Geometry Twist Message as Annotation. Collected ROS 2 Geometry Twist linear.x and angular.z data are mapped from the range of floating:-1 to +1 to integer:0 to 10. Then these values are embeded in the image name. This approach doesn't require additional files for saving annotations separately. Example:0000001_z05_x05.jpg. -

- -## Colaborators -[Animesh Bala Ani](https://www.linkedin.com/in/ani717/) - - -## Table of Contents -* [Install Dependency](#install)
-* [Build, Source & Launch Package](#launch)
-* [Launch Arguments](#arg)
-* [Settings](#set)
- - -## Install Dependency -Install ROS2 dependency.
-``` -sudo apt-get update -rosdep update -rosdep install --from-paths src --ignore-src -r -y -``` - - -## Build, Source & Launch Package -``` -colcon build --symlink-install --packages-select ros2_save_camera_image -source install/local_setup.bash -ros2 launch ros2_save_camera_image launch.py -``` -``` -colcon build --symlink-install && source install/local_setup.bash && ros2 launch ros2_save_camera_image launch.py -``` - - -## Launch Arguments -Select `True` by editing `line 38` of `launch/launch.py` file to launch `ros2 cam2image` for collecting image data with camera.
-Or use `True` as argument for `cam2image`.
-Default `cam2image`:`True`
- - -## Settings -Edit `settings.json` file to assign `image topic`, `twist topic` and `data directory`.
-Default `image topic`:`\images`
-Default `twist topic`:`\cmd_vel`
-Default `data directory`:`..\images`
diff --git a/src/ros2_save_camera_image/launch/launch.py b/src/ros2_save_camera_image/launch/launch.py deleted file mode 100644 index 744c90a..0000000 --- a/src/ros2_save_camera_image/launch/launch.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""ROS2 Package launch File to Save Camera Images. - -This script collects image and twist message data from ros2 topics and saves -annotated images. - -Revision History: - 2021-08-26 (Animesh Bala Ani): Baseline Software. - -Example: - $ colcon build --symlink-install && source install/local_setup.bash && ros2 launch ros2_save_camera_image launch.py - $ source install/local_setup.bash && ros2 launch ros2_save_camera_image launch.py - $ ros2 launch ros2_save_camera_image launch.py - -""" - - -#___Import Modules: -from launch import LaunchDescription -from launch.conditions import IfCondition -from launch.actions import DeclareLaunchArgument -from launch.substitutions import LaunchConfiguration -from launch_ros.actions import Node - - -#___Function: -def generate_launch_description(): - - # Create launch configuration variables - cam2image = LaunchConfiguration('cam2image') - - - # Declare the launch arguments - declare_cam2image_cmd = DeclareLaunchArgument( - 'cam2image', - default_value='True', - description='Type of Robot to drive.') - - - # Specify the actions - execute_cmd = Node( - package = 'ros2_save_camera_image', - node_executable = 'execute', - name='save_camera_image') - - cam2image_cmd = Node( - condition=IfCondition(cam2image), - package = 'image_tools', - node_executable = 'cam2image', - name='cam2image') - - - # Create the launch description and populate - ld = LaunchDescription() - - # Declare the launch options - ld.add_action(declare_cam2image_cmd) - - # Add all actions - ld.add_action(execute_cmd) - ld.add_action(cam2image_cmd) - - return ld - - -# -# end of file -"""ANI717""" \ No newline at end of file diff --git a/src/ros2_save_camera_image/package.xml b/src/ros2_save_camera_image/package.xml deleted file mode 100644 index 6444d2a..0000000 --- a/src/ros2_save_camera_image/package.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - ros2_save_camera_image - 1.0.0 - ROS2 Package to Save Camera Image - ANI717 (Animesh Bala Ani) - MIT License - - rclpy - sensor_msgs - geometry_msgs - ament_index_python - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - diff --git a/src/ros2_save_camera_image/resource/ros2_save_camera_image b/src/ros2_save_camera_image/resource/ros2_save_camera_image deleted file mode 100644 index e69de29..0000000 diff --git a/src/ros2_save_camera_image/ros2_save_camera_image/cloud.py b/src/ros2_save_camera_image/ros2_save_camera_image/cloud.py deleted file mode 100644 index 5e6e198..0000000 --- a/src/ros2_save_camera_image/ros2_save_camera_image/cloud.py +++ /dev/null @@ -1,152 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""ROS2 Image Saving Tool. - -This script saves image with twist messages as annotation. - -Revision History: - 2021-10-02 (ANI717 - Animesh Bala Ani): Baseline Software. - -Example: - $ colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_save_camera_image execute - $ source install/local_setup.bash && ros2 run ros2_save_camera_image execute - $ ros2 run ros2_save_camera_image execute - -""" - -# ___Import Modules: -import os -import cv2 -import json -import datetime -import requests -import random -import string -import numpy as np -from pathlib import Path - -import rclpy -from rclpy.node import Node -from sensor_msgs.msg import Image -from geometry_msgs.msg import Twist -from ament_index_python.packages import get_package_share_directory - -# Global Variables: -SETTINGS = os.path.join(get_package_share_directory('ros2_save_camera_image'), "settings.json") - - -# Classes -class ImageSubscriber(Node): - """Image Saving Class. - - This class contains all methods to save annotated images. - - """ - - def __init__(self, azure_url, azure_code, robot_name, image_folder, image_topic='/image', twist_topic='/cmd_vel'): - super().__init__('image_subscriber') - - # image topic subscriber initialization - self.subscription1 = self.create_subscription(Image, image_topic, self.listener_callback1, 1) - self.subscription1 # prevent unused variable warning - self.image_count = 0 - - # twist topic subscriber initialization - self.subscription2 = self.create_subscription(Twist, twist_topic, self.listener_callback2, 1) - self.subscription2 - - # variable initialization - self.image_folder = image_folder - self.azure_url = azure_url - self.azure_code = azure_code - self.robot_name = robot_name - self.x = 0 - self.z = 0 - - def get_random_string(self, length): - letters = string.ascii_lowercase - result_str = ''.join(random.choice(letters) for i in range(length)) - return result_str - - def listener_callback1(self, msg): - """Listener Callback Function 1 - - This method collects data from image topic and saves them. - - """ - - # parse image data from subscribed topic - height = msg.height - width = msg.width - channel = msg.step // msg.width - frame = np.reshape(msg.data, (height, width, channel)) - self.get_logger().info("Image Received") - - image_name = self.get_random_string(12) + '.jpg' - - url = "{0}?code={1}&robotName={2}&liveStream=0.0.0.0".format(self.azure_url, self.azure_code, self.robot_name) - - cv2.imwrite(os.path.join(self.image_folder, image_name), frame) - - files = {'F': (image_name, open(self.image_folder + '/' + image_name, "rb"), 'image/jpeg')} - - response = requests.post(url, files=files) - - self.get_logger().info(str(response.status_code)) - self.get_logger().info("Photo send to cloud") - - self.image_count += 1 - - os.remove(os.path.join(self.image_folder, image_name)) - - def listener_callback2(self, msg): - """Listener Callback Function 1 - - This method collects data from geometry twist message topic. - - """ - - # parse geometry twist data from subscribed topic - self.x = int(msg.linear.x * 5) + 5 - self.z = int(msg.angular.z * 5) + 5 - - -# Main Method: -def main(args=None): - """This is the Main Method. - - """ - - # parse settings from json file - with open(SETTINGS) as fp: - content = json.load(fp) - image_topic = content["image_topic"] - twist_topic = content["twist_topic"] - data_directory = content["data_directory"] - azure_url = content["azure_url"] - azure_code = content["azure_code"] - robot_name = content["robot_name"] - - # set directory for saving images - image_folder = os.path.join(data_directory, - '{0:04d}_{1:02d}_{2:02d}_{3:02d}_{4:02d}'.format(datetime.datetime.now().year, - datetime.datetime.now().month, - datetime.datetime.now().day, - datetime.datetime.now().hour, - datetime.datetime.now().minute)) - Path(image_folder).mkdir(parents=True, exist_ok=True) - - # initializes node and save annotated images - rclpy.init(args=args) - image_subscriber = ImageSubscriber(azure_url, azure_code, robot_name, image_folder, image_topic, twist_topic) - rclpy.spin(image_subscriber) - - # shuts down and releases everything - image_subscriber.destroy_node() - rclpy.shutdown() - - -# Driver Program: -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/src/ros2_save_camera_image/ros2_save_camera_image/execute.py b/src/ros2_save_camera_image/ros2_save_camera_image/execute.py deleted file mode 100644 index eac51b6..0000000 --- a/src/ros2_save_camera_image/ros2_save_camera_image/execute.py +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""ROS2 Image Saving Tool. - -This script saves image with twist messages as annotation. - -Revision History: - 2021-10-02 (ANI717 - Animesh Bala Ani): Baseline Software. - -Example: - $ colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_save_camera_image execute - $ source install/local_setup.bash && ros2 run ros2_save_camera_image execute - $ ros2 run ros2_save_camera_image execute - -""" - -# ___Import Modules: -import os -import cv2 -import json -import datetime -import requests -import random -import string -import subprocess -import numpy as np -from pathlib import Path - -import rclpy -from rclpy.node import Node -from sensor_msgs.msg import Image -from geometry_msgs.msg import Twist -from std_msgs.msg import String -from ament_index_python.packages import get_package_share_directory - -# Global Variables: -SETTINGS = os.path.join(get_package_share_directory('ros2_save_camera_image'), "settings.json") - - -# Classes -class ImageSubscriber(Node): - - def __init__(self, cloud_url, robot_name, image_topic='/image', twist_topic='/cmd_vel'): - super().__init__('image_subscriber') - - self.subscription = self.create_subscription( - String, - '/trigger', - self.manual_update, - 1) - - # variable initialization - self.cloud_url = cloud_url - self.robot_name = robot_name - - self.register_to_cloud() - - - def register_to_cloud(self): - url = "{0}/robot".format(self.cloud_url) - ipAddress = self.get_ip_address() - - jsonRobot = {'name': self.robot_name, - 'liveStream': 'http://localhost:8888/{0}/stream.m3u8'.format(self.robot_name), - 'rtspStream': 'rtsp://{0}:8554/robotstream'.format(ipAddress)} - - try: - response = requests.post(url, json=jsonRobot, timeout=10) - self.get_logger().info("Status code: " + str(response.status_code)) - except Exception as e: - self.get_logger().info("Back-end couldn't be reached: ") - - - def update_to_cloud(self): - url = "{0}/robot".format(self.cloud_url) - ipAddress = self.get_ip_address() - - jsonRobot = {'name': self.robot_name, - 'liveStream': 'http://localhost:8888/{0}/stream.m3u8'.format(self.robot_name), - 'rtspStream': 'rtsp://{0}:8554/robotstream'.format(ipAddress)} - - try: - response = requests.put(url, json=jsonRobot, timeout=10) - self.get_logger().info("Status code: " + str(response.status_code)) - except Exception as e: - self.get_logger().info("Back-end couldn't be reached: ") - - - def get_ip_address(self): - cmd = "ifconfig %s | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'" % 'wlan0' - return subprocess.check_output(cmd, shell=True).decode('ascii')[:-1] - - - def manual_update(self, msg): - if msg.data == 'register': - self.update_to_cloud() - - -# Main Method: -def main(args=None): - - with open(SETTINGS) as fp: - content = json.load(fp) - image_topic = content["image_topic"] - twist_topic = content["twist_topic"] - cloud_url = content["cloud_url"] - robot_name = content["robot_name"] - - # initializes node and save annotated images - rclpy.init(args=args) - cloud_subscriber = ImageSubscriber(cloud_url, robot_name, image_topic, twist_topic) - rclpy.spin(cloud_subscriber) - - # shuts down and releases everything - cloud_subscriber.destroy_node() - rclpy.shutdown() - - -# Driver Program: -if __name__ == '__main__': - main() diff --git a/src/ros2_save_camera_image/settings.json b/src/ros2_save_camera_image/settings.json deleted file mode 100644 index 389336d..0000000 --- a/src/ros2_save_camera_image/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "image_topic": "/image", - "twist_topic": "/cmd_vel", - "cloud_url": "http://192.168.1.1:8080", - "robot_name": "Batmobile" -} \ No newline at end of file diff --git a/src/ros2_save_camera_image/setup.cfg b/src/ros2_save_camera_image/setup.cfg deleted file mode 100644 index 792ce41..0000000 --- a/src/ros2_save_camera_image/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[develop] -script_dir=$base/lib/ros2_save_camera_image -[install] -install_scripts=$base/lib/ros2_save_camera_image diff --git a/src/ros2_save_camera_image/setup.py b/src/ros2_save_camera_image/setup.py deleted file mode 100644 index 1b1b8c9..0000000 --- a/src/ros2_save_camera_image/setup.py +++ /dev/null @@ -1,29 +0,0 @@ -from setuptools import setup -from glob import glob - -package_name = 'ros2_save_camera_image' - -setup( - name=package_name, - version='1.0.0', - packages=[package_name], - data_files=[ - ('share/ament_index/resource_index/packages', - ['resource/' + package_name]), - ('share/' + package_name, ['package.xml']), - ('share/' + package_name, ['settings.json']), - ('share/' + package_name + '/launch', glob('launch/*')), - ], - install_requires=['setuptools'], - zip_safe=True, - maintainer='ANI717 (Animesh Bala Ani)', - maintainer_email='animesh.ani@live.com', - description='ROS2 Package to Save Camera Image', - license='MIT License', - tests_require=['pytest'], - entry_points={ - 'console_scripts': [ - 'execute = ros2_save_camera_image.execute:main', - ], - }, -) diff --git a/src/ros2_save_camera_image/test/test_copyright.py b/src/ros2_save_camera_image/test/test_copyright.py deleted file mode 100644 index cc8ff03..0000000 --- a/src/ros2_save_camera_image/test/test_copyright.py +++ /dev/null @@ -1,23 +0,0 @@ -# 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 - - -@pytest.mark.copyright -@pytest.mark.linter -def test_copyright(): - rc = main(argv=['.', 'test']) - assert rc == 0, 'Found errors' diff --git a/src/ros2_save_camera_image/test/test_flake8.py b/src/ros2_save_camera_image/test/test_flake8.py deleted file mode 100644 index eff8299..0000000 --- a/src/ros2_save_camera_image/test/test_flake8.py +++ /dev/null @@ -1,23 +0,0 @@ -# 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 -import pytest - - -@pytest.mark.flake8 -@pytest.mark.linter -def test_flake8(): - rc = main(argv=[]) - assert rc == 0, 'Found errors' diff --git a/src/ros2_save_camera_image/test/test_pep257.py b/src/ros2_save_camera_image/test/test_pep257.py deleted file mode 100644 index b234a38..0000000 --- a/src/ros2_save_camera_image/test/test_pep257.py +++ /dev/null @@ -1,23 +0,0 @@ -# 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' From 2cf2c91164816183e718eac104247e1757f99eec Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Fri, 5 May 2023 16:59:00 +0200 Subject: [PATCH 05/16] cleaner version of snapshot mode deletes also files so only the last 5 items are in the folder --- .../camera_snap_shot/take_snap_shot.py | 84 ++++++++----------- .../config/camera_snap_shot_settings.json | 3 +- 2 files changed, 35 insertions(+), 52 deletions(-) diff --git a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py index ee90561..8adb2a6 100644 --- a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py +++ b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py @@ -2,12 +2,10 @@ # -*- coding: utf-8 -*- """ROS2 CSI Camera Image Publisher. -This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image -format. And starts rtmp stream to rtmp://localhost;1935/live/stream +This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image format. Example: - $ colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_csi_camera_publish jetson - $ source install/local_setup.bash && ros2 run ros2_csi_camera_publish jetson - $ ros2 run ros2_csi_camera_publish jetson + $ colcon build --symlink-install + $ ros2 launch camera_snap_shot camera_snap_shot.launch.py """ # ___Import Modules: @@ -21,7 +19,6 @@ from sensor_msgs.msg import Image from ament_index_python.packages import get_package_share_directory from std_msgs.msg import String -from cv_bridge import CvBridge, CvBridgeError # ___Global Variables: SETTINGS = os.path.join(get_package_share_directory('camera_snap_shot'), "config/camera_snap_shot_settings.json") @@ -29,26 +26,19 @@ json_settings = json.load(fp) # __Functions: -def gstreamer_pipeline(capture_width=json_settings["capture_width"], - capture_height=json_settings["capture_height"], - display_width=json_settings["display_width"], - display_height=json_settings["display_height"], - framerate=json_settings["framerate"], - flip_method=json_settings["flip_method"]): - """Copyright (c) 2019 JetsonHacks - - """ - +def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), + capture_height=str(json_settings["capture_height"]), + framerate=str(json_settings["framerate"])): return ( - "nvarguscamerasrc sensor-id=0 sensor-mode=2 ! " - "video/x-raw(memory:NVMM), " - "width=(int)%d, height=(int)%d, " - "format=(string)NV12, framerate=(fraction)%d/1 ! " - "nvvidconv flip-method=%d ! " - "video/x-raw, width=(int)%d, height=(int)%d, format=(string)BGRx ! " - "videoconvert ! " - "video/x-raw, format=(string)BGR ! appsink" - % (capture_width, capture_height, framerate, flip_method, display_width, display_height) + "nvarguscamerasrc ! " + "video/x-raw(memory:NVMM), " + f"width=(int){capture_width}, height=(int){capture_height}, " + f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " + "nvvidconv ! " + "video/x-raw, format=(string)BGRx ! " + "videoconvert ! " + "video/x-raw, format=(string)BGR ! " + "appsink" ) @@ -60,7 +50,7 @@ class CameraPublisher(Node): """ - def __init__(self, publish_topic='/image', trigger_topic='/trigger', publish_frequency=10): + def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=json_settings["trigger_topic"]): super().__init__('camera_publisher') # initialize publisher @@ -68,11 +58,7 @@ def __init__(self, publish_topic='/image', trigger_topic='/trigger', publish_fre self.subscription1 = self.create_subscription(String, trigger_topic, self.listener_callback1, 1) # set image counter - self.i = 0 - # self.cap = cv2.VideoCapture(gstreamer_pipeline(1920, 1080, - # 1920, 1080, - # 30, 0, ), cv2.CAP_GSTREAMER) - self.bridge = CvBridge() + self.image_number = 0 def listener_callback1(self, msg): """Timer Callback Function @@ -80,7 +66,7 @@ def listener_callback1(self, msg): This method captures images and publishes required data in ros 2 topic. """ - cap = cv2.VideoCapture("nvarguscamerasrc ! video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)NV12, framerate=(fraction)30/1 ! nvvidconv ! video/x-raw, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink") + cap = cv2.VideoCapture(gstreamer_pipeline()) if cap.isOpened(): # reads image data @@ -89,45 +75,41 @@ def listener_callback1(self, msg): # processes image data and converts to ros 2 message msg_image = Image() msg_image.header.stamp = Node.get_clock(self).now().to_msg() - msg_image.header.frame_id = str(self.i) + msg_image.header.frame_id = str(self.image_number) msg_image.height = np.shape(frame)[0] msg_image.width = np.shape(frame)[1] msg_image.encoding = "bgr8" msg_image.is_bigendian = False msg_image.step = np.shape(frame)[2] * np.shape(frame)[1] msg_image.data = np.array(frame).tobytes() - + + # if message is correct, publish & save image if msg.data == json_settings["camera_trigger_message"]: - cv2.imwrite(f"snapshot_files/image{self.i}.jpg", frame) - - # publishes message - # self.publisher_.publish(self.bridge.cv2_to_imgmsg(frame, "bgr8")) + image_location = f"{json_settings['image_location']}/image{self.image_number}.jpg" + cv2.imwrite(image_location, frame) self.publisher_.publish(msg_image) - - self.get_logger().info(f'image saved at image{self.i}.jpg') + self.get_logger().info(f'image saved at image{self.image_number}.jpg') cap.release() - # image counter increment - self.i += 1 + self.image_number += 1 + if self.image_number >4: + item_to_delete = f"{json_settings['image_location']}/image{self.image_number-5}.jpg" + if os.path.exists(item_to_delete): + os.remove(item_to_delete) + return None # ___Main Method: def main(args=None): - """This is the Main Method. - """ + This is the Main Method. - # parse settings from json file - + """ # initializes node and start publishing rclpy.init(args=args) - camera_publisher = CameraPublisher( - json_settings["publish_topic"], - json_settings["trigger_topic"], - json_settings["publish_frequency"] - ) + camera_publisher = CameraPublisher() rclpy.spin(camera_publisher) # shuts down nose and releases everything diff --git a/src/camera_snap_shot/config/camera_snap_shot_settings.json b/src/camera_snap_shot/config/camera_snap_shot_settings.json index 3f823de..4104922 100644 --- a/src/camera_snap_shot/config/camera_snap_shot_settings.json +++ b/src/camera_snap_shot/config/camera_snap_shot_settings.json @@ -8,5 +8,6 @@ "display_width": 320, "display_height": 240, "trigger_topic": "/camera_trigger", - "camera_trigger_message": "pressed" + "camera_trigger_message": "pressed", + "image_location": "snapshot_files" } \ No newline at end of file From 494f040055b11d69286e804885ad83dc5d2296b3 Mon Sep 17 00:00:00 2001 From: Remco van Gorsel Date: Sun, 7 May 2023 21:49:47 +0200 Subject: [PATCH 06/16] 9-MBT: - Adjusted launch configuration - added robot_mode:=livestream or snaphot to launch command --- src/robot_app/launch/gamepad_launch.py | 35 ++++++++++++++++++-------- src/robot_app/package.xml | 2 +- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/robot_app/launch/gamepad_launch.py b/src/robot_app/launch/gamepad_launch.py index 0392936..eec502e 100644 --- a/src/robot_app/launch/gamepad_launch.py +++ b/src/robot_app/launch/gamepad_launch.py @@ -19,6 +19,7 @@ #___Import Modules: from launch import LaunchDescription from launch.conditions import IfCondition +from launch.conditions import LaunchConfigurationEquals from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration from launch_ros.actions import Node @@ -37,9 +38,15 @@ def generate_launch_description(): # Declare the launch arguments declare_gamepad_type_cmd = DeclareLaunchArgument( 'gamepad_type', - default_value='logitech', + default_value='playstation', description='Type of Gamepad to use.') + declare_robot_mode_cmd = DeclareLaunchArgument( + 'robot_mode', + default_value='livestream', + description='Livestream or Snapshot mode' + ) + declare_robot_type_cmd = DeclareLaunchArgument( 'robot_type', default_value='jetbot', @@ -54,9 +61,20 @@ def generate_launch_description(): 'csijetson', default_value='True', description='Using CSI camera on Jetson Nano or not.') - - + # Specify the actions + livestream_mode_cmd = Node( + condition = LaunchConfigurationEquals('robot_mode', 'livestream'), + package = 'ros2_csi_camera_publish', + executable = 'jetson', + name = 'csi_camera_publish') + + snapshot_mode_cmd = Node( + condition = LaunchConfigurationEquals('robot_mode', 'snapshot'), + package = 'camera_snap_shot', + executable = 'take_snap_shot', + name = 'camera_snap_shot') + gamepad_to_twist_cmd = Node( package = 'ros2_gamepad_to_twist_message', executable = gamepad_type, @@ -67,15 +85,10 @@ def generate_launch_description(): executable = robot_type, name='twist_to_robot_motion') - save_image_cmd = Node( - package = 'ros2_save_camera_image', - executable = 'execute', - name='save_camera_image') - cam2image_cmd = Node( condition=IfCondition(cam2image), package = 'image_tools', - node_executable = 'cam2image', + executable = 'cam2image', name='cam2image') csijetson_cmd = Node( @@ -90,14 +103,16 @@ def generate_launch_description(): # Declare the launch options ld.add_action(declare_gamepad_type_cmd) + ld.add_action(declare_robot_mode_cmd) ld.add_action(declare_robot_type_cmd) ld.add_action(declare_cam2image_cmd) ld.add_action(declare_csijetson_cmd) # Add all actions ld.add_action(gamepad_to_twist_cmd) + ld.add_action(livestream_mode_cmd) + ld.add_action(snapshot_mode_cmd) ld.add_action(twist_to_motion_cmd) - ld.add_action(save_image_cmd) ld.add_action(cam2image_cmd) ld.add_action(csijetson_cmd) diff --git a/src/robot_app/package.xml b/src/robot_app/package.xml index dbfbe87..7957b12 100644 --- a/src/robot_app/package.xml +++ b/src/robot_app/package.xml @@ -10,8 +10,8 @@ ros2_csi_camera_publish ros2_deep_learning_to_twist_message ros2_gamepad_to_twist_message - ros2_save_camera_image ros2_twist_message_to_robot_motion + camera_snap_shot image_tools ament_copyright From 206d9f098f0f78eef2eee905fde4926d8090aeab Mon Sep 17 00:00:00 2001 From: Raytesterk Date: Tue, 9 May 2023 10:57:50 +0200 Subject: [PATCH 07/16] initial comit, livestream working --- .../camera_livestream/__init__.py | 0 .../camera_livestream/camera_livestream.py | 115 ++++++++++++++++++ .../camera_livestream/temp.py | 80 ++++++++++++ .../config/camera_livestream_settings.json | 8 ++ .../launch/camera_livestream.launch.py | 39 ++++++ src/camera_livestream/package.xml | 23 ++++ .../resource/camera_livestream | 0 src/camera_livestream/setup.cfg | 4 + src/camera_livestream/setup.py | 50 ++++++++ 9 files changed, 319 insertions(+) create mode 100644 src/camera_livestream/camera_livestream/__init__.py create mode 100644 src/camera_livestream/camera_livestream/camera_livestream.py create mode 100644 src/camera_livestream/camera_livestream/temp.py create mode 100644 src/camera_livestream/config/camera_livestream_settings.json create mode 100644 src/camera_livestream/launch/camera_livestream.launch.py create mode 100644 src/camera_livestream/package.xml create mode 100644 src/camera_livestream/resource/camera_livestream create mode 100644 src/camera_livestream/setup.cfg create mode 100644 src/camera_livestream/setup.py diff --git a/src/camera_livestream/camera_livestream/__init__.py b/src/camera_livestream/camera_livestream/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/camera_livestream/camera_livestream/camera_livestream.py b/src/camera_livestream/camera_livestream/camera_livestream.py new file mode 100644 index 0000000..2699467 --- /dev/null +++ b/src/camera_livestream/camera_livestream/camera_livestream.py @@ -0,0 +1,115 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""ROS2 CSI Camera Image Publisher. +This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image format. +Example: + $ colcon build --symlink-install + $ ros2 launch camera_snap_shot camera_snap_shot.launch.py +""" + +# ___Import Modules: +import os +import cv2 +import json +import numpy as np + +import rclpy +from rclpy.node import Node +from sensor_msgs.msg import Image +from ament_index_python.packages import get_package_share_directory +from std_msgs.msg import String +from cv_bridge import CvBridge + +# ___Global Variables: +SETTINGS = os.path.join(get_package_share_directory('camera_livestream'), "config/camera_livestream_settings.json") +with open(SETTINGS) as fp: + json_settings = json.load(fp) + +# __Functions: +def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), + capture_height=str(json_settings["capture_height"]), + framerate=str(json_settings["framerate"])): + return ( + "nvarguscamerasrc ! " + "video/x-raw(memory:NVMM), " + f"width=(int){capture_width}, height=(int){capture_height}, " + f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " + "nvvidconv ! " + "video/x-raw, format=(string)BGRx ! " + "videoconvert ! " + "video/x-raw, format=(string)BGR ! " + "appsink" + ) + + +# __Classes: +class CameraPublisher(Node): + """Camera Publisher Class. + This class contains all methods to publish csi camera data as + sensor_msgs.msg/Image format. + + """ + + def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=json_settings["trigger_topic"]): + super().__init__('camera_publisher') + + # initialize publisher + self.publisher_ = self.create_publisher(Image, publish_topic, 1) + self.subscription1 = self.create_subscription(String, trigger_topic, self.start_livestream, 1) + + # set image counter + self.image_number = 0 + self.bridge = CvBridge() + + def start_livestream(self): + """Timer Callback Function + + This method captures images and publishes required data in ros 2 topic. + + """ + cap = cv2.VideoCapture(gstreamer_pipeline()) + os.environ['DISPLAY']=':0' + while cap.isOpened(): + # reads image data + ret, frame = cap.read() + + + # processes image data and converts to ros 2 message + msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") + self.publisher_.publish(msg_image) + + # shows local livestream + + cv2.imshow("Video Frame", frame) + + # for debugging stops when pressing q + if cv2.waitKey(25) & 0xFF == ord('q'): + break + + cap.release() + cv2.destroyAllWindows() + + +# ___Main Method: +def main(args=None): + """ + This is the Main Method. + + """ + # initializes node and start publishing + rclpy.init(args=args) + camera_publisher = CameraPublisher() + camera_publisher.start_livestream() + rclpy.spin(camera_publisher) + + # shuts down nose and releases everything + camera_publisher.destroy_node() + rclpy.shutdown() + + return None + + +# ___Driver Program: +if __name__ == '__main__': + main() \ No newline at end of file diff --git a/src/camera_livestream/camera_livestream/temp.py b/src/camera_livestream/camera_livestream/temp.py new file mode 100644 index 0000000..35d0d2b --- /dev/null +++ b/src/camera_livestream/camera_livestream/temp.py @@ -0,0 +1,80 @@ +import os +import cv2 +import json +import numpy as np + + +import rclpy +from rclpy.node import Node +from sensor_msgs.msg import Image +from ament_index_python.packages import get_package_share_directory +from std_msgs.msg import String +from std_msgs.msg import String, UInt8MultiArray, MultiArrayDimension +import random + +fp ={ + "publish_topic": "/image", + "publish_frequency": 10, + "capture_width": 720, + "capture_height": 480, + "framerate": 30, + "flip_method": 0, + "display_width": 320, + "display_height": 240, + "trigger_topic": "/camera_trigger", + "camera_trigger_message": "pressed", + "image_location": "snapshot_files" +} +json_settings = fp + + +# __Functions: +def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), + capture_height=str(json_settings["capture_height"]), + framerate=str(json_settings["framerate"])): + return ( + "nvarguscamerasrc ! " + "video/x-raw(memory:NVMM), " + f"width=(int){capture_width}, height=(int){capture_height}, " + f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " + "nvvidconv ! " + "video/x-raw, format=(string)BGRx ! " + "videoconvert ! " + "video/x-raw, format=(string)BGR ! " + "appsink" + ) +# temp_message = random.choices(range(256),k=10000) +cap = cv2.VideoCapture(gstreamer_pipeline()) +os.environ['DISPLAY']=':0' +while cap.isOpened(): + # reads image data + ret, frame = cap.read() + msg_image = UInt8MultiArray() + + # real_message = temp_message + # real_message = np.array(frame, dtype=np.uint8) + # print(frame) + # print(real_message) + + # msg_image.layout.dim.append(MultiArrayDimension()) + # msg_image.layout.dim.append(MultiArrayDimension()) + # msg_image.layout.dim.append(MultiArrayDimension()) + # msg_image.layout.dim[0].label = "height" + # msg_image.layout.dim[0].size = 1080 + # msg_image.layout.dim[0].stride = 3*1920*1080 + # msg_image.layout.dim[1].label = "width" + # msg_image.layout.dim[1].size = 1920 + # msg_image.layout.dim[1].stride = 3*1920 + # msg_image.layout.dim[2].label = "channel" + # msg_image.layout.dim[2].size = 3 + # msg_image.layout.dim[2].stride = 3 + # msg_image.layout.data_offset = 0 + msg_image.data = frame.flatten().tolist() + # msg_image.data = real_message + # processes image data and converts to ros 2 message + cv2.imshow("Video Frame", frame) + if cv2.waitKey(25) & 0xFF == ord('q'): + break + +cap.release() +cv2.destroyAllWindows() \ No newline at end of file diff --git a/src/camera_livestream/config/camera_livestream_settings.json b/src/camera_livestream/config/camera_livestream_settings.json new file mode 100644 index 0000000..1f82235 --- /dev/null +++ b/src/camera_livestream/config/camera_livestream_settings.json @@ -0,0 +1,8 @@ +{ + "publish_topic": "/livestream", + "capture_width": 720, + "capture_height": 480, + "framerate": 30, + "flip_method": 0, + "trigger_topic": "/livestream_trigger" +} \ No newline at end of file diff --git a/src/camera_livestream/launch/camera_livestream.launch.py b/src/camera_livestream/launch/camera_livestream.launch.py new file mode 100644 index 0000000..dcca9da --- /dev/null +++ b/src/camera_livestream/launch/camera_livestream.launch.py @@ -0,0 +1,39 @@ +import pathlib + +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.conditions import IfCondition +from launch.actions import DeclareLaunchArgument +from launch.substitutions import LaunchConfiguration, TextSubstitution +from launch_ros.actions import Node + +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument +from launch.actions import IncludeLaunchDescription +from launch.actions import GroupAction +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +from launch.substitutions import TextSubstitution +from launch_ros.actions import Node +from launch_ros.actions import PushRosNamespace + +DEFAULT_CONFIG_PATH = str(pathlib.Path(f"{get_package_share_directory('camera_livestream')}/config/camera_livestream.json")) + + +def generate_launch_description() -> LaunchDescription: + # args that can be set from the command line or a default will be used + config_file_arg = DeclareLaunchArgument( + "config_file", default_value=TextSubstitution(text=DEFAULT_CONFIG_PATH) + ) + # start a turtlesim_node in the turtlesim1 namespace + camera_livestream = Node( + package='camera_livestream', + # namespace='turtlesim2', + executable='camera_livestream', + name='sim', + ) + + return LaunchDescription([ + # launch_include, + camera_livestream, + ]) diff --git a/src/camera_livestream/package.xml b/src/camera_livestream/package.xml new file mode 100644 index 0000000..9486978 --- /dev/null +++ b/src/camera_livestream/package.xml @@ -0,0 +1,23 @@ + + + + camera_livestream + 1.0.0 + camera_livestream + raymond houwing + MIT License + + ament_index_python + rclpy + sensor_msgs + cv_bridge + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/camera_livestream/resource/camera_livestream b/src/camera_livestream/resource/camera_livestream new file mode 100644 index 0000000..e69de29 diff --git a/src/camera_livestream/setup.cfg b/src/camera_livestream/setup.cfg new file mode 100644 index 0000000..db9a262 --- /dev/null +++ b/src/camera_livestream/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/camera_livestream +[install] +install_scripts=$base/lib/camera_livestream diff --git a/src/camera_livestream/setup.py b/src/camera_livestream/setup.py new file mode 100644 index 0000000..54b1395 --- /dev/null +++ b/src/camera_livestream/setup.py @@ -0,0 +1,50 @@ +from glob import glob +from pathlib import Path +from setuptools import setup + + +def get_value_from_string(string: str, prefix: str, suffix: str): + value = "" + if string.startswith(prefix) and string.endswith(suffix): + value = string[len(prefix):][:-len(suffix)] + return value + + +with open(Path(__file__).parent / 'package.xml', 'r') as xml_file: + for line in xml_file.readlines(): + if line.startswith(' ') and line.endswith('\n'): + package_name = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + version = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + description = get_value_from_string(line, ' ', '\n') + elif line.startswith(' \n'): + line = get_value_from_string(line, ' ') + elif line.startswith(' ') and line.endswith('\n'): + project_license = get_value_from_string(line, ' ', '\n') + + +setup( + name=package_name, + version=version, + packages=[package_name], + data_files=[ + (str(Path('share/ament_index/resource_index/packages')), [str(Path(f'resource/{package_name}'))]), + (str(Path(f'share/{package_name}/config')), glob(str(Path('config/*')))), + (str(Path(f'share/{package_name}/launch')), glob(str(Path('launch/*.launch.py')))), + (str(Path(f'share/{package_name}')), ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer=maintainer, + maintainer_email=maintainer_email, + description=description, + license=project_license, + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + 'camera_livestream = camera_livestream.camera_livestream:main' + ], + }, +) From db06fbfdbcfb5475e7995965398d1aece50d4192 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Tue, 9 May 2023 17:22:27 +0200 Subject: [PATCH 08/16] first merging comit --- src/camera_capture/camera_capture/__init__.py | 0 .../camera_capture/camera_capture.py | 168 ++++++++++++++++++ src/camera_capture/config/camera_capture.json | 15 ++ .../launch/camera_capture.launch.py | 39 ++++ src/camera_capture/package.xml | 20 +++ src/camera_capture/resource/camera_capture | 0 src/camera_capture/setup.cfg | 4 + src/camera_capture/setup.py | 49 +++++ .../camera_snap_shot/take_snap_shot.py | 4 +- 9 files changed, 297 insertions(+), 2 deletions(-) create mode 100644 src/camera_capture/camera_capture/__init__.py create mode 100644 src/camera_capture/camera_capture/camera_capture.py create mode 100644 src/camera_capture/config/camera_capture.json create mode 100644 src/camera_capture/launch/camera_capture.launch.py create mode 100644 src/camera_capture/package.xml create mode 100644 src/camera_capture/resource/camera_capture create mode 100644 src/camera_capture/setup.cfg create mode 100644 src/camera_capture/setup.py diff --git a/src/camera_capture/camera_capture/__init__.py b/src/camera_capture/camera_capture/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/camera_capture/camera_capture/camera_capture.py b/src/camera_capture/camera_capture/camera_capture.py new file mode 100644 index 0000000..85cb5c9 --- /dev/null +++ b/src/camera_capture/camera_capture/camera_capture.py @@ -0,0 +1,168 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +"""ROS2 CSI Camera Image Publisher. +This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image format. +Example: + $ colcon build --symlink-install + $ ros2 launch camera_snap_shot camera_snap_shot.launch.py +""" + +# ___Import Modules: +import os +import cv2 +import json +import numpy as np + +import rclpy +from rclpy.node import Node +from sensor_msgs.msg import Image +from ament_index_python.packages import get_package_share_directory +from std_msgs.msg import String, Bool +from cv_bridge import CvBridge + + +# ___Global Variables: +SETTINGS = os.path.join(get_package_share_directory('camera_snap_shot'), "config/camera_snap_shot_settings.json") +with open(SETTINGS) as fp: + json_settings = json.load(fp) + +# __Functions: +def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), + capture_height=str(json_settings["capture_height"]), + framerate=str(json_settings["framerate"])): + return ( + "nvarguscamerasrc ! " + "video/x-raw(memory:NVMM), " + f"width=(int){capture_width}, height=(int){capture_height}, " + f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " + "nvvidconv ! " + "video/x-raw, format=(string)BGRx ! " + "videoconvert ! " + "video/x-raw, format=(string)BGR ! " + "appsink" + ) + + +# __Classes: +class CameraPublisher(Node): + """Camera Publisher Class. + This class contains all methods to publish csi camera data as + sensor_msgs.msg/Image format. + + """ + + def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=json_settings["trigger_topic"]): + super().__init__('camera_publisher') + + # initialize publisher & subscirbers + self.pub_cam_snapshot = self.create_publisher(Image, publish_topic, 1) + self.pub_cam_livestream = self.create_publisher(Image, publish_topic, 1) + self.sub_cam_snapshot_trigger = self.create_subscription(String, trigger_topic, self.capture_snapshot, 1) + self.sub_cam_livestream_state = self.create_subscription(String, trigger_topic, self.start_livestream, 1) + + self.cap = cv2.VideoCapture(gstreamer_pipeline()) + self.bridge = CvBridge() + self.image_location = f"{json_settings['image_location']}" + + # set image counter + self.image_number = 0 + + def start_livestream(self): + """Timer Callback Function + + This method starts a livestream + + """ + os.environ['DISPLAY']=':0' # for developing, this is needed to open up a window to show the local livestream + while self.cap.isOpened(): + # reads image data + ret, frame = self.cap.read() + msg_image = define_img_file(frame) + # msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") + self.pub_camera_livestream.publish(msg_image) + + + # for debugging shows local livestream + cv2.imshow("Video Frame", frame) + + # for debugging stops when pressing q + if cv2.waitKey(25) & 0xFF == ord('q'): + break + + self.cap.release() + cv2.destroyAllWindows() #for debugging + + def capture_snapshot(self, topic_msg): + """Timer Callback Function + + This method captures images, publishes required data in ros 2 topic and saves it to a folder. + + """ + if self.cap.isOpened() and topic_msg.data == True: + # reads image data + ret, frame = self.cap.read() + print(type(frame)) + # processes image data and converts to ros 2 message + + msg_image = define_img_file(frame=frame, + frame_id=str(self.image_number), + time_stamp=Node.get_clock(self).now().to_msg() + ) + # save image local (is this needed?) + cv2.imwrite(f"{self.image_location}/image{self.image_number}.jpg", frame) + self.get_logger().info(f'image saved at image{self.image_number}.jpg') + #post camera snapshot on topic + self.pub_camera_snapshot.publish(msg_image) + + self.cap.release() + self.image_number += 1 + #remove keep max 5 files + prevent_overflood_image(self.image_number) + return None + + +def prevent_overflood_image(img_number): + if img_number >4: + item_to_delete = f"{json_settings['image_location']}/image{img_number-5}.jpg" + if os.path.exists(item_to_delete): + os.remove(item_to_delete) + + +def define_img_file(frame, frame_id=0 , time_stamp=0): + """ + prepares the Image(), adds headers, heights etc. + """ + msg_image = Image() + msg_image.header.stamp = time_stamp + msg_image.header.frame_id = frame_id + msg_image.height = np.shape(frame)[0] + msg_image.width = np.shape(frame)[1] + msg_image.encoding = "bgr8" + msg_image.is_bigendian = False + msg_image.step = np.shape(frame)[2] * np.shape(frame)[1] + msg_image.data = np.array(frame).tobytes() + + return(msg_image) + +# ___Main Method: +def main(args=None): + """ + This is the Main Method. + + """ + # initializes node and start publishing + rclpy.init(args=args) + camera_publisher = CameraPublisher() + rclpy.spin(camera_publisher) + + # shuts down nose and releases everything + camera_publisher.destroy_node() + rclpy.shutdown() + + return None + + +# ___Driver Program: +if __name__ == '__main__': + main() diff --git a/src/camera_capture/config/camera_capture.json b/src/camera_capture/config/camera_capture.json new file mode 100644 index 0000000..7844488 --- /dev/null +++ b/src/camera_capture/config/camera_capture.json @@ -0,0 +1,15 @@ +{ + "publish_topic_camera": "/camera", + "camera_id": "/0", + "publish_topic_livestream": "/livestream", + "publish_topic_snapshot": "/snapshot", + "trigger_topic_livestream": "/state", + "trigger_topic_snapshot": "/trigger", + "capture_width_livestream": 720, + "capture_height_livestream": 480, + "capture_width_snapshot": 1080, + "capture_height_snapshot": 1920, + "framerate": 30, + "image_location": "snapshot_files" + +} \ No newline at end of file diff --git a/src/camera_capture/launch/camera_capture.launch.py b/src/camera_capture/launch/camera_capture.launch.py new file mode 100644 index 0000000..ac1563a --- /dev/null +++ b/src/camera_capture/launch/camera_capture.launch.py @@ -0,0 +1,39 @@ +import pathlib + +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.conditions import IfCondition +from launch.actions import DeclareLaunchArgument +from launch.substitutions import LaunchConfiguration, TextSubstitution +from launch_ros.actions import Node + +from launch import LaunchDescription +from launch.actions import DeclareLaunchArgument +from launch.actions import IncludeLaunchDescription +from launch.actions import GroupAction +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +from launch.substitutions import TextSubstitution +from launch_ros.actions import Node +from launch_ros.actions import PushRosNamespace + +DEFAULT_CONFIG_PATH = str(pathlib.Path(f"{get_package_share_directory('camera_capture')}/config/camera_capture.json")) + + +def generate_launch_description() -> LaunchDescription: + # args that can be set from the command line or a default will be used + config_file_arg = DeclareLaunchArgument( + "config_file", default_value=TextSubstitution(text=DEFAULT_CONFIG_PATH) + ) + # start a turtlesim_node in the turtlesim1 namespace + camera_capture = Node( + package='camera_capture', + executable='camera_capture', + name='sim', + parameters=[] + ) + + return LaunchDescription([ + # launch_include, + camera_capture, + ]) diff --git a/src/camera_capture/package.xml b/src/camera_capture/package.xml new file mode 100644 index 0000000..f8f545f --- /dev/null +++ b/src/camera_capture/package.xml @@ -0,0 +1,20 @@ + + + + camera_capture + 1.0.0 + camera_capture to make snapshots & livestreams + raymond houwing + MIT License + + ament_index_python + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/camera_capture/resource/camera_capture b/src/camera_capture/resource/camera_capture new file mode 100644 index 0000000..e69de29 diff --git a/src/camera_capture/setup.cfg b/src/camera_capture/setup.cfg new file mode 100644 index 0000000..8dbb209 --- /dev/null +++ b/src/camera_capture/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/camera_capture +[install] +install_scripts=$base/lib/camera_capture diff --git a/src/camera_capture/setup.py b/src/camera_capture/setup.py new file mode 100644 index 0000000..5d9f0ca --- /dev/null +++ b/src/camera_capture/setup.py @@ -0,0 +1,49 @@ +from glob import glob +from pathlib import Path +from setuptools import setup + + +def get_value_from_string(string: str, prefix: str, suffix: str): + value = "" + if string.startswith(prefix) and string.endswith(suffix): + value = string[len(prefix):][:-len(suffix)] + return value + + +with open(Path(__file__).parent / 'package.xml', 'r') as xml_file: + for line in xml_file.readlines(): + if line.startswith(' ') and line.endswith('\n'): + package_name = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + version = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + description = get_value_from_string(line, ' ', '\n') + elif line.startswith(' \n'): + line = get_value_from_string(line, ' ') + elif line.startswith(' ') and line.endswith('\n'): + project_license = get_value_from_string(line, ' ', '\n') + + +setup( + name=package_name, + version=version, + packages=[package_name], + data_files=[ + (str(Path('share/ament_index/resource_index/packages')), [str(Path(f'resource/{package_name}'))]), + (str(Path(f'share/{package_name}/config')), glob(str(Path('config/*')))), + (str(Path(f'share/{package_name}/launch')), glob(str(Path('launch/*.launch.py')))), + (str(Path(f'share/{package_name}')), ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer=maintainer, + maintainer_email=maintainer_email, + description=description, + license=project_license, + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + ], + }, +) diff --git a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py index 8adb2a6..99b15a1 100644 --- a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py +++ b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py @@ -55,12 +55,12 @@ def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=j # initialize publisher self.publisher_ = self.create_publisher(Image, publish_topic, 1) - self.subscription1 = self.create_subscription(String, trigger_topic, self.listener_callback1, 1) + self.subscription1 = self.create_subscription(String, trigger_topic, self.capture_image, 1) # set image counter self.image_number = 0 - def listener_callback1(self, msg): + def capture_image(self, msg): """Timer Callback Function This method captures images and publishes required data in ros 2 topic. From 9946fd7f568217ada5c2bb4cf04ab63dd944d0fc Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Wed, 10 May 2023 15:56:25 +0200 Subject: [PATCH 09/16] video foto alles --- .../camera_capture/camera_capture.py | 134 ++++++++++-------- ...ture.json => camera_capture_settings.json} | 6 +- .../launch/camera_capture.launch.py | 1 - src/camera_capture/package.xml | 5 +- src/camera_capture/setup.py | 1 + src/robot_app/launch/gamepad_launch.py | 68 ++++----- .../playstation.py | 32 +++-- 7 files changed, 141 insertions(+), 106 deletions(-) rename src/camera_capture/config/{camera_capture.json => camera_capture_settings.json} (77%) diff --git a/src/camera_capture/camera_capture/camera_capture.py b/src/camera_capture/camera_capture/camera_capture.py index 85cb5c9..be53e8c 100644 --- a/src/camera_capture/camera_capture/camera_capture.py +++ b/src/camera_capture/camera_capture/camera_capture.py @@ -23,13 +23,13 @@ # ___Global Variables: -SETTINGS = os.path.join(get_package_share_directory('camera_snap_shot'), "config/camera_snap_shot_settings.json") +SETTINGS = os.path.join(get_package_share_directory('camera_capture'), "config/camera_capture_settings.json") with open(SETTINGS) as fp: json_settings = json.load(fp) # __Functions: -def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), - capture_height=str(json_settings["capture_height"]), +def gstreamer_pipeline(capture_width=str(json_settings["capture_width_livestream"]), + capture_height=str(json_settings["capture_width_livestream"]), framerate=str(json_settings["framerate"])): return ( "nvarguscamerasrc ! " @@ -52,14 +52,20 @@ class CameraPublisher(Node): """ - def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=json_settings["trigger_topic"]): + def __init__(self, + publish_livestream_topic:str, + publish_snapshot_topic:str, + snapshot_trigger_topic:str, + livestream_state_topic:str + ): super().__init__('camera_publisher') # initialize publisher & subscirbers - self.pub_cam_snapshot = self.create_publisher(Image, publish_topic, 1) - self.pub_cam_livestream = self.create_publisher(Image, publish_topic, 1) - self.sub_cam_snapshot_trigger = self.create_subscription(String, trigger_topic, self.capture_snapshot, 1) - self.sub_cam_livestream_state = self.create_subscription(String, trigger_topic, self.start_livestream, 1) + self.pub_cam_snapshot = self.create_publisher(Image, publish_snapshot_topic, 1) + self.pub_cam_livestream = self.create_publisher(Image, publish_livestream_topic, 1) + self.sub_cam_livestream_state = self.create_subscription(Bool, livestream_state_topic, self.start_livestream_callback, 1) + self.sub_cam_snapshot_trigger = self.create_subscription(Bool, snapshot_trigger_topic, self.capture_snapshot_callback, 1) + self.sub_cam_livestream_convert = self.create_subscription(Image, publish_livestream_topic, self.convert_livestream, 10) self.cap = cv2.VideoCapture(gstreamer_pipeline()) self.bridge = CvBridge() @@ -68,82 +74,84 @@ def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=j # set image counter self.image_number = 0 - def start_livestream(self): + def convert_livestream(self, topic_msg): + """ + get a Image() type message and converts it to a cv2 image with cv2.imshow() + """ + # self._logger.info(f'message received on topic livestream \nwith message: {topic_msg}\nwith data :{topic_msg.data}') + cv2.imshow("Video Frame", self.bridge.imgmsg_to_cv2(topic_msg, "bgr8")) + cv2.waitKey(1) + + + def start_livestream_callback(self, topic_msg): """Timer Callback Function This method starts a livestream """ os.environ['DISPLAY']=':0' # for developing, this is needed to open up a window to show the local livestream - while self.cap.isOpened(): - # reads image data - ret, frame = self.cap.read() - msg_image = define_img_file(frame) - # msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") - self.pub_camera_livestream.publish(msg_image) - - - # for debugging shows local livestream - cv2.imshow("Video Frame", frame) - - # for debugging stops when pressing q - if cv2.waitKey(25) & 0xFF == ord('q'): - break - - self.cap.release() - cv2.destroyAllWindows() #for debugging - - def capture_snapshot(self, topic_msg): + self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_livestream"]) + self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_livestream"]) + self._logger.info(f'message received on topic livestream \nwith message: {topic_msg}\nwith data :{topic_msg.data}') + timer_period = 0.03 # seconds + if self.cap.isOpened(): + self.get_logger().info('camera is available') + if topic_msg.data == True: + self._logger.info('starting livestream') + self.timer = self.create_timer(timer_period, self.timer_callback) + elif topic_msg.data == False: + self._logger.info('stopping livestream') + self.timer.cancel() + self.timer.destroy() + cv2.destroyAllWindows() + else: + self.get_logger().info('camera not available') + + def timer_callback(self): + ret, frame = self.cap.read() + # cv2.imshow("Video Frame", frame) + msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") + self.pub_cam_livestream.publish(msg_image) + + def capture_snapshot_callback(self, topic_msg): """Timer Callback Function This method captures images, publishes required data in ros 2 topic and saves it to a folder. """ - if self.cap.isOpened() and topic_msg.data == True: + self.get_logger().info(f'message received on topic snapshot \nwith message: {topic_msg}\nwith data :{topic_msg.data}') + self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_snapshot"]) + self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_snapshot"]) + if self.cap.isOpened(): + # reads image data ret, frame = self.cap.read() print(type(frame)) - # processes image data and converts to ros 2 message - - msg_image = define_img_file(frame=frame, - frame_id=str(self.image_number), - time_stamp=Node.get_clock(self).now().to_msg() - ) - # save image local (is this needed?) + msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") + msg_image.header.frame_id = str(self.image_number) + # saves image to folder cv2.imwrite(f"{self.image_location}/image{self.image_number}.jpg", frame) self.get_logger().info(f'image saved at image{self.image_number}.jpg') #post camera snapshot on topic - self.pub_camera_snapshot.publish(msg_image) + self.pub_cam_snapshot.publish(msg_image) - self.cap.release() + # self.cap.release() self.image_number += 1 - #remove keep max 5 files + # keep max 5 files prevent_overflood_image(self.image_number) - return None + else: + self.get_logger().info('camera not available') + self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_livestream"]) + self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_livestream"]) def prevent_overflood_image(img_number): if img_number >4: item_to_delete = f"{json_settings['image_location']}/image{img_number-5}.jpg" - if os.path.exists(item_to_delete): - os.remove(item_to_delete) + if os.path.exists(item_to_delete): + os.remove(item_to_delete) -def define_img_file(frame, frame_id=0 , time_stamp=0): - """ - prepares the Image(), adds headers, heights etc. - """ - msg_image = Image() - msg_image.header.stamp = time_stamp - msg_image.header.frame_id = frame_id - msg_image.height = np.shape(frame)[0] - msg_image.width = np.shape(frame)[1] - msg_image.encoding = "bgr8" - msg_image.is_bigendian = False - msg_image.step = np.shape(frame)[2] * np.shape(frame)[1] - msg_image.data = np.array(frame).tobytes() - - return(msg_image) # ___Main Method: def main(args=None): @@ -152,8 +160,18 @@ def main(args=None): """ # initializes node and start publishing + cam_0_topic = json_settings['publish_topic_camera']+json_settings['camera_id'] + livestream_state_topic = cam_0_topic + json_settings['publish_topic_livestream']+json_settings['trigger_topic_livestream'] + snapshot_trigger_topic = cam_0_topic + json_settings['publish_topic_snapshot']+json_settings['trigger_topic_snapshot'] + publish_livestream_topic = cam_0_topic + json_settings['publish_topic_livestream'] + publish_snapshot_topic = cam_0_topic + json_settings['publish_topic_snapshot'] rclpy.init(args=args) - camera_publisher = CameraPublisher() + camera_publisher = CameraPublisher( + livestream_state_topic=livestream_state_topic, + snapshot_trigger_topic=snapshot_trigger_topic, + publish_livestream_topic=publish_livestream_topic, + publish_snapshot_topic=publish_snapshot_topic, + ) rclpy.spin(camera_publisher) # shuts down nose and releases everything diff --git a/src/camera_capture/config/camera_capture.json b/src/camera_capture/config/camera_capture_settings.json similarity index 77% rename from src/camera_capture/config/camera_capture.json rename to src/camera_capture/config/camera_capture_settings.json index 7844488..0d9bf43 100644 --- a/src/camera_capture/config/camera_capture.json +++ b/src/camera_capture/config/camera_capture_settings.json @@ -1,14 +1,14 @@ { "publish_topic_camera": "/camera", - "camera_id": "/0", + "camera_id": "/cam_0", "publish_topic_livestream": "/livestream", "publish_topic_snapshot": "/snapshot", "trigger_topic_livestream": "/state", "trigger_topic_snapshot": "/trigger", "capture_width_livestream": 720, "capture_height_livestream": 480, - "capture_width_snapshot": 1080, - "capture_height_snapshot": 1920, + "capture_width_snapshot": 1920, + "capture_height_snapshot": 1080, "framerate": 30, "image_location": "snapshot_files" diff --git a/src/camera_capture/launch/camera_capture.launch.py b/src/camera_capture/launch/camera_capture.launch.py index ac1563a..94dee27 100644 --- a/src/camera_capture/launch/camera_capture.launch.py +++ b/src/camera_capture/launch/camera_capture.launch.py @@ -30,7 +30,6 @@ def generate_launch_description() -> LaunchDescription: package='camera_capture', executable='camera_capture', name='sim', - parameters=[] ) return LaunchDescription([ diff --git a/src/camera_capture/package.xml b/src/camera_capture/package.xml index f8f545f..6b98c65 100644 --- a/src/camera_capture/package.xml +++ b/src/camera_capture/package.xml @@ -3,11 +3,14 @@ camera_capture 1.0.0 - camera_capture to make snapshots & livestreams + camera_capture to make snapshots and livestreams raymond houwing MIT License ament_index_python + rclpy + sensor_msgs + cv_bridge ament_copyright ament_flake8 diff --git a/src/camera_capture/setup.py b/src/camera_capture/setup.py index 5d9f0ca..b43118a 100644 --- a/src/camera_capture/setup.py +++ b/src/camera_capture/setup.py @@ -44,6 +44,7 @@ def get_value_from_string(string: str, prefix: str, suffix: str): tests_require=['pytest'], entry_points={ 'console_scripts': [ + 'camera_capture = camera_capture.camera_capture:main' ], }, ) diff --git a/src/robot_app/launch/gamepad_launch.py b/src/robot_app/launch/gamepad_launch.py index eec502e..401d02e 100644 --- a/src/robot_app/launch/gamepad_launch.py +++ b/src/robot_app/launch/gamepad_launch.py @@ -18,7 +18,7 @@ #___Import Modules: from launch import LaunchDescription -from launch.conditions import IfCondition +# from launch.conditions import IfCondition from launch.conditions import LaunchConfigurationEquals from launch.actions import DeclareLaunchArgument from launch.substitutions import LaunchConfiguration @@ -31,8 +31,8 @@ def generate_launch_description(): # Create launch configuration variables gamepad_type = LaunchConfiguration('gamepad_type') robot_type = LaunchConfiguration('robot_type') - cam2image = LaunchConfiguration('cam2image') - csijetson = LaunchConfiguration('csijetson') + # cam2image = LaunchConfiguration('cam2image') + # csijetson = LaunchConfiguration('csijetson') # Declare the launch arguments @@ -52,28 +52,28 @@ def generate_launch_description(): default_value='jetbot', description='Type of Robot to drive.') - declare_cam2image_cmd = DeclareLaunchArgument( - 'cam2image', - default_value='False', - description='Execute cam2image or not.') + # declare_cam2image_cmd = DeclareLaunchArgument( + # 'cam2image', + # default_value='False', + # description='Execute cam2image or not.') - declare_csijetson_cmd = DeclareLaunchArgument( - 'csijetson', - default_value='True', - description='Using CSI camera on Jetson Nano or not.') + # declare_csijetson_cmd = DeclareLaunchArgument( + # 'csijetson', + # default_value='True', + # description='Using CSI camera on Jetson Nano or not.') # Specify the actions livestream_mode_cmd = Node( condition = LaunchConfigurationEquals('robot_mode', 'livestream'), - package = 'ros2_csi_camera_publish', - executable = 'jetson', - name = 'csi_camera_publish') + package = 'camera_capture', + executable = 'camera_capture', + name = 'camera_capture') - snapshot_mode_cmd = Node( - condition = LaunchConfigurationEquals('robot_mode', 'snapshot'), - package = 'camera_snap_shot', - executable = 'take_snap_shot', - name = 'camera_snap_shot') + # snapshot_mode_cmd = Node( + # condition = LaunchConfigurationEquals('robot_mode', 'snapshot'), + # package = 'camera_snap_shot', + # executable = 'take_snap_shot', + # name = 'camera_snap_shot') gamepad_to_twist_cmd = Node( package = 'ros2_gamepad_to_twist_message', @@ -85,17 +85,17 @@ def generate_launch_description(): executable = robot_type, name='twist_to_robot_motion') - cam2image_cmd = Node( - condition=IfCondition(cam2image), - package = 'image_tools', - executable = 'cam2image', - name='cam2image') + # cam2image_cmd = Node( + # condition=IfCondition(cam2image), + # package = 'image_tools', + # executable = 'cam2image', + # name='cam2image') - csijetson_cmd = Node( - condition=IfCondition(csijetson), - package = 'ros2_csi_camera_publish', - executable = 'jetson', - name='csi_camera_publish') + # csijetson_cmd = Node( + # condition=IfCondition(csijetson), + # package = 'ros2_csi_camera_publish', + # executable = 'jetson', + # name='csi_camera_publish') # Create the launch description and populate @@ -105,16 +105,16 @@ def generate_launch_description(): ld.add_action(declare_gamepad_type_cmd) ld.add_action(declare_robot_mode_cmd) ld.add_action(declare_robot_type_cmd) - ld.add_action(declare_cam2image_cmd) - ld.add_action(declare_csijetson_cmd) + # ld.add_action(declare_cam2image_cmd) + # ld.add_action(declare_csijetson_cmd) # Add all actions ld.add_action(gamepad_to_twist_cmd) ld.add_action(livestream_mode_cmd) - ld.add_action(snapshot_mode_cmd) + # ld.add_action(snapshot_mode_cmd) ld.add_action(twist_to_motion_cmd) - ld.add_action(cam2image_cmd) - ld.add_action(csijetson_cmd) + # ld.add_action(cam2image_cmd) + # ld.add_action(csijetson_cmd) return ld diff --git a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py index a672452..d9707f8 100644 --- a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py +++ b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py @@ -23,7 +23,7 @@ from ament_index_python.packages import get_package_share_directory from geometry_msgs.msg import Twist from rclpy.node import Node -from std_msgs.msg import String +from std_msgs.msg import String, Bool # ___Trick to solve pygame video init error os.environ["SDL_VIDEODRIVER"] = "dummy" @@ -45,7 +45,9 @@ def __init__(self, publish_topic='/cmd_vel', publish_frequency=100): # publisher initialization self.pub_joystick = self.create_publisher(Twist, publish_topic, 1) - self.pub_camera_trigger = self.create_publisher(String, '/camera_trigger', 2) + self.pub_camera_trigger = self.create_publisher(Bool, '/camera/cam_0/snapshot/trigger', 2) + self.pub_camera_livestream = self.create_publisher(Bool, '/camera/cam_0/livestream/state', 2) + self.timer = self.create_timer(1 / publish_frequency, self.timer_callback) # variable initialization @@ -91,15 +93,27 @@ def timer_callback(self): if event.type == controller.JOYBUTTONDOWN: if event.button == 0: - msg = String() - msg.data = 'pressed' + #make sure no camera livestream is running + # msg = Bool() + # msg.data = False + # self.pub_camera_livestream.publish(msg) + # self.get_logger().info(" [2 - O] Button pressed") + #make picutre + msg = Bool() + msg.data = True self.pub_camera_trigger.publish(msg) self.get_logger().info(" [0 - Square] Button pressed") - if event.button == 9: - self.get_logger().info(" [9 - Options] Button pressed") - msg = String() - msg.data = 'register' - self.pub_camera_trigger.publish(msg) + + if event.button == 1: + msg = Bool() + msg.data = True + self.pub_camera_livestream.publish(msg) + self.get_logger().info(" [1 - X] Button pressed") + if event.button == 2: + msg = Bool() + msg.data = False + self.pub_camera_livestream.publish(msg) + self.get_logger().info(" [2 - O] Button pressed") # Creates Twist message twist.angular.z = round(self.z, 1) From a4cc59ebad218b0cf120e8184740200abe781524 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Wed, 10 May 2023 16:36:51 +0200 Subject: [PATCH 10/16] cleaned up gitignore, --- .gitignore | 2025 +--------------------------------------------------- 1 file changed, 2 insertions(+), 2023 deletions(-) diff --git a/.gitignore b/.gitignore index ab2ed74..7ab509b 100644 --- a/.gitignore +++ b/.gitignore @@ -65,2026 +65,5 @@ About /venv/ /.idea/ -src/camera_snap_shot/camera_snap_shot/temp.py -log/COLCON_IGNORE -log/latest -log/latest_build -log/build_2023-04-24_13-23-55/events.log -log/build_2023-04-24_13-23-55/logger_all.log -log/build_2023-04-24_13-23-55/robot_app/command.log -log/build_2023-04-24_13-23-55/robot_app/stderr.log -log/build_2023-04-24_13-23-55/robot_app/stdout_stderr.log -log/build_2023-04-24_13-23-55/robot_app/stdout.log -log/build_2023-04-24_13-23-55/robot_app/streams.log -log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/command.log -log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/stderr.log -log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/stdout.log -log/build_2023-04-24_13-23-55/ros2_csi_camera_publish/streams.log -log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/command.log -log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-04-24_13-23-55/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/command.log -log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-04-24_13-23-55/ros2_gamepad_to_twist_message/streams.log -log/build_2023-04-24_13-23-55/ros2_save_camera_image/command.log -log/build_2023-04-24_13-23-55/ros2_save_camera_image/stderr.log -log/build_2023-04-24_13-23-55/ros2_save_camera_image/stdout_stderr.log -log/build_2023-04-24_13-23-55/ros2_save_camera_image/stdout.log -log/build_2023-04-24_13-23-55/ros2_save_camera_image/streams.log -log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/command.log -log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-04-24_13-23-55/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-04-24_13-38-40/events.log -log/build_2023-04-24_13-38-40/logger_all.log -log/build_2023-04-24_13-38-40/robot_app/command.log -log/build_2023-04-24_13-38-40/robot_app/stderr.log -log/build_2023-04-24_13-38-40/robot_app/stdout_stderr.log -log/build_2023-04-24_13-38-40/robot_app/stdout.log -log/build_2023-04-24_13-38-40/robot_app/streams.log -log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/command.log -log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/stderr.log -log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/stdout.log -log/build_2023-04-24_13-38-40/ros2_csi_camera_publish/streams.log -log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/command.log -log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-04-24_13-38-40/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/command.log -log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-04-24_13-38-40/ros2_gamepad_to_twist_message/streams.log -log/build_2023-04-24_13-38-40/ros2_save_camera_image/command.log -log/build_2023-04-24_13-38-40/ros2_save_camera_image/stderr.log -log/build_2023-04-24_13-38-40/ros2_save_camera_image/stdout_stderr.log -log/build_2023-04-24_13-38-40/ros2_save_camera_image/stdout.log -log/build_2023-04-24_13-38-40/ros2_save_camera_image/streams.log -log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/command.log -log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-04-24_13-38-40/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-04-24_19-27-25/events.log -log/build_2023-04-24_19-27-25/logger_all.log -log/build_2023-04-24_19-27-25/robot_app/command.log -log/build_2023-04-24_19-27-25/robot_app/stderr.log -log/build_2023-04-24_19-27-25/robot_app/stdout_stderr.log -log/build_2023-04-24_19-27-25/robot_app/stdout.log -log/build_2023-04-24_19-27-25/robot_app/streams.log -log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/command.log -log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/stderr.log -log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/stdout.log -log/build_2023-04-24_19-27-25/ros2_csi_camera_publish/streams.log -log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/command.log -log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-04-24_19-27-25/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/command.log -log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-04-24_19-27-25/ros2_gamepad_to_twist_message/streams.log -log/build_2023-04-24_19-27-25/ros2_save_camera_image/command.log -log/build_2023-04-24_19-27-25/ros2_save_camera_image/stderr.log -log/build_2023-04-24_19-27-25/ros2_save_camera_image/stdout_stderr.log -log/build_2023-04-24_19-27-25/ros2_save_camera_image/stdout.log -log/build_2023-04-24_19-27-25/ros2_save_camera_image/streams.log -log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/command.log -log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-04-24_19-27-25/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-03_14-51-50/events.log -log/build_2023-05-03_14-51-50/logger_all.log -log/build_2023-05-03_14-51-50/robot_app/command.log -log/build_2023-05-03_14-51-50/robot_app/stderr.log -log/build_2023-05-03_14-51-50/robot_app/stdout_stderr.log -log/build_2023-05-03_14-51-50/robot_app/stdout.log -log/build_2023-05-03_14-51-50/robot_app/streams.log -log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/command.log -log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/stderr.log -log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/stdout.log -log/build_2023-05-03_14-51-50/ros2_csi_camera_publish/streams.log -log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-03_14-51-50/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-03_14-51-50/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-03_14-51-50/ros2_save_camera_image/command.log -log/build_2023-05-03_14-51-50/ros2_save_camera_image/stderr.log -log/build_2023-05-03_14-51-50/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-03_14-51-50/ros2_save_camera_image/stdout.log -log/build_2023-05-03_14-51-50/ros2_save_camera_image/streams.log -log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-03_14-51-50/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-03_15-33-52/events.log -log/build_2023-05-03_15-33-52/logger_all.log -log/build_2023-05-03_15-33-52/robot_app/command.log -log/build_2023-05-03_15-33-52/robot_app/stderr.log -log/build_2023-05-03_15-33-52/robot_app/stdout_stderr.log -log/build_2023-05-03_15-33-52/robot_app/stdout.log -log/build_2023-05-03_15-33-52/robot_app/streams.log -log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/command.log -log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/stderr.log -log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/stdout.log -log/build_2023-05-03_15-33-52/ros2_csi_camera_publish/streams.log -log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-03_15-33-52/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-03_15-33-52/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-03_15-33-52/ros2_save_camera_image/command.log -log/build_2023-05-03_15-33-52/ros2_save_camera_image/stderr.log -log/build_2023-05-03_15-33-52/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-03_15-33-52/ros2_save_camera_image/stdout.log -log/build_2023-05-03_15-33-52/ros2_save_camera_image/streams.log -log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-03_15-33-52/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-03_15-40-04/events.log -log/build_2023-05-03_15-40-04/logger_all.log -log/build_2023-05-03_15-40-04/robot_app/command.log -log/build_2023-05-03_15-40-04/robot_app/stderr.log -log/build_2023-05-03_15-40-04/robot_app/stdout_stderr.log -log/build_2023-05-03_15-40-04/robot_app/stdout.log -log/build_2023-05-03_15-40-04/robot_app/streams.log -log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/command.log -log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/stderr.log -log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/stdout.log -log/build_2023-05-03_15-40-04/ros2_csi_camera_publish/streams.log -log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-03_15-40-04/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-03_15-40-04/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-03_15-40-04/ros2_save_camera_image/command.log -log/build_2023-05-03_15-40-04/ros2_save_camera_image/stderr.log -log/build_2023-05-03_15-40-04/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-03_15-40-04/ros2_save_camera_image/stdout.log -log/build_2023-05-03_15-40-04/ros2_save_camera_image/streams.log -log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-03_15-40-04/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-03_16-14-18/events.log -log/build_2023-05-03_16-14-18/logger_all.log -log/build_2023-05-03_16-14-18/robot_app/command.log -log/build_2023-05-03_16-14-18/robot_app/stderr.log -log/build_2023-05-03_16-14-18/robot_app/stdout_stderr.log -log/build_2023-05-03_16-14-18/robot_app/stdout.log -log/build_2023-05-03_16-14-18/robot_app/streams.log -log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/command.log -log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/stderr.log -log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/stdout.log -log/build_2023-05-03_16-14-18/ros2_csi_camera_publish/streams.log -log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-03_16-14-18/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-03_16-14-18/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-03_16-14-18/ros2_save_camera_image/command.log -log/build_2023-05-03_16-14-18/ros2_save_camera_image/stderr.log -log/build_2023-05-03_16-14-18/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-03_16-14-18/ros2_save_camera_image/stdout.log -log/build_2023-05-03_16-14-18/ros2_save_camera_image/streams.log -log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-03_16-14-18/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-03_16-26-04/events.log -log/build_2023-05-03_16-26-04/logger_all.log -log/build_2023-05-03_16-26-04/robot_app/command.log -log/build_2023-05-03_16-26-04/robot_app/stderr.log -log/build_2023-05-03_16-26-04/robot_app/stdout_stderr.log -log/build_2023-05-03_16-26-04/robot_app/stdout.log -log/build_2023-05-03_16-26-04/robot_app/streams.log -log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/command.log -log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/stderr.log -log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/stdout.log -log/build_2023-05-03_16-26-04/ros2_csi_camera_publish/streams.log -log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-03_16-26-04/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-03_16-26-04/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-03_16-26-04/ros2_save_camera_image/command.log -log/build_2023-05-03_16-26-04/ros2_save_camera_image/stderr.log -log/build_2023-05-03_16-26-04/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-03_16-26-04/ros2_save_camera_image/stdout.log -log/build_2023-05-03_16-26-04/ros2_save_camera_image/streams.log -log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-03_16-26-04/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_11-09-08/events.log -log/build_2023-05-04_11-09-08/logger_all.log -log/build_2023-05-04_11-09-08/camera_snap_shot/command.log -log/build_2023-05-04_11-09-08/camera_snap_shot/stderr.log -log/build_2023-05-04_11-09-08/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_11-09-08/camera_snap_shot/stdout.log -log/build_2023-05-04_11-09-08/camera_snap_shot/streams.log -log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/command.log -log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_11-09-08/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_11-09-08/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_11-09-08/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_11-09-08/ros2_save_camera_image/command.log -log/build_2023-05-04_11-09-08/ros2_save_camera_image/stderr.log -log/build_2023-05-04_11-09-08/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_11-09-08/ros2_save_camera_image/stdout.log -log/build_2023-05-04_11-09-08/ros2_save_camera_image/streams.log -log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_11-09-08/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_11-10-31/events.log -log/build_2023-05-04_11-10-31/logger_all.log -log/build_2023-05-04_11-10-31/camera_snap_shot/command.log -log/build_2023-05-04_11-10-31/camera_snap_shot/stderr.log -log/build_2023-05-04_11-10-31/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_11-10-31/camera_snap_shot/stdout.log -log/build_2023-05-04_11-10-31/camera_snap_shot/streams.log -log/build_2023-05-04_11-10-31/robot_app/command.log -log/build_2023-05-04_11-10-31/robot_app/stderr.log -log/build_2023-05-04_11-10-31/robot_app/stdout_stderr.log -log/build_2023-05-04_11-10-31/robot_app/stdout.log -log/build_2023-05-04_11-10-31/robot_app/streams.log -log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/command.log -log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_11-10-31/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_11-10-31/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_11-10-31/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_11-10-31/ros2_save_camera_image/command.log -log/build_2023-05-04_11-10-31/ros2_save_camera_image/stderr.log -log/build_2023-05-04_11-10-31/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_11-10-31/ros2_save_camera_image/stdout.log -log/build_2023-05-04_11-10-31/ros2_save_camera_image/streams.log -log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_11-10-31/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_12-45-34/events.log -log/build_2023-05-04_12-45-34/logger_all.log -log/build_2023-05-04_12-45-34/camera_snap_shot/command.log -log/build_2023-05-04_12-45-34/camera_snap_shot/stderr.log -log/build_2023-05-04_12-45-34/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_12-45-34/camera_snap_shot/stdout.log -log/build_2023-05-04_12-45-34/camera_snap_shot/streams.log -log/build_2023-05-04_12-45-34/robot_app/command.log -log/build_2023-05-04_12-45-34/robot_app/stderr.log -log/build_2023-05-04_12-45-34/robot_app/stdout_stderr.log -log/build_2023-05-04_12-45-34/robot_app/stdout.log -log/build_2023-05-04_12-45-34/robot_app/streams.log -log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/command.log -log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_12-45-34/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_12-45-34/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_12-45-34/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_12-45-34/ros2_save_camera_image/command.log -log/build_2023-05-04_12-45-34/ros2_save_camera_image/stderr.log -log/build_2023-05-04_12-45-34/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_12-45-34/ros2_save_camera_image/stdout.log -log/build_2023-05-04_12-45-34/ros2_save_camera_image/streams.log -log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_12-45-34/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_13-30-47/events.log -log/build_2023-05-04_13-30-47/logger_all.log -log/build_2023-05-04_13-30-47/camera_snap_shot/command.log -log/build_2023-05-04_13-30-47/camera_snap_shot/stderr.log -log/build_2023-05-04_13-30-47/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_13-30-47/camera_snap_shot/stdout.log -log/build_2023-05-04_13-30-47/camera_snap_shot/streams.log -log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/command.log -log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_13-30-47/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_13-30-47/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_13-30-47/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_13-30-47/ros2_save_camera_image/command.log -log/build_2023-05-04_13-30-47/ros2_save_camera_image/stderr.log -log/build_2023-05-04_13-30-47/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_13-30-47/ros2_save_camera_image/stdout.log -log/build_2023-05-04_13-30-47/ros2_save_camera_image/streams.log -log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_13-30-47/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_14-35-50/events.log -log/build_2023-05-04_14-35-50/logger_all.log -log/build_2023-05-04_14-35-50/camera_snap_shot/command.log -log/build_2023-05-04_14-35-50/camera_snap_shot/stderr.log -log/build_2023-05-04_14-35-50/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_14-35-50/camera_snap_shot/stdout.log -log/build_2023-05-04_14-35-50/camera_snap_shot/streams.log -log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/command.log -log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_14-35-50/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_14-35-50/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_14-35-50/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_14-35-50/ros2_save_camera_image/command.log -log/build_2023-05-04_14-35-50/ros2_save_camera_image/stderr.log -log/build_2023-05-04_14-35-50/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_14-35-50/ros2_save_camera_image/stdout.log -log/build_2023-05-04_14-35-50/ros2_save_camera_image/streams.log -log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_14-35-50/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_14-40-29/events.log -log/build_2023-05-04_14-40-29/logger_all.log -log/build_2023-05-04_14-40-29/camera_snap_shot/command.log -log/build_2023-05-04_14-40-29/camera_snap_shot/stderr.log -log/build_2023-05-04_14-40-29/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_14-40-29/camera_snap_shot/stdout.log -log/build_2023-05-04_14-40-29/camera_snap_shot/streams.log -log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/command.log -log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_14-40-29/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_14-40-29/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_14-40-29/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_14-40-29/ros2_save_camera_image/command.log -log/build_2023-05-04_14-40-29/ros2_save_camera_image/stderr.log -log/build_2023-05-04_14-40-29/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_14-40-29/ros2_save_camera_image/stdout.log -log/build_2023-05-04_14-40-29/ros2_save_camera_image/streams.log -log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_14-40-29/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_14-41-57/events.log -log/build_2023-05-04_14-41-57/logger_all.log -log/build_2023-05-04_14-41-57/camera_snap_shot/command.log -log/build_2023-05-04_14-41-57/camera_snap_shot/stderr.log -log/build_2023-05-04_14-41-57/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_14-41-57/camera_snap_shot/stdout.log -log/build_2023-05-04_14-41-57/camera_snap_shot/streams.log -log/build_2023-05-04_14-41-57/robot_app/command.log -log/build_2023-05-04_14-41-57/robot_app/stderr.log -log/build_2023-05-04_14-41-57/robot_app/stdout_stderr.log -log/build_2023-05-04_14-41-57/robot_app/stdout.log -log/build_2023-05-04_14-41-57/robot_app/streams.log -log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/command.log -log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_14-41-57/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_14-41-57/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_14-41-57/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_14-41-57/ros2_save_camera_image/command.log -log/build_2023-05-04_14-41-57/ros2_save_camera_image/stderr.log -log/build_2023-05-04_14-41-57/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_14-41-57/ros2_save_camera_image/stdout.log -log/build_2023-05-04_14-41-57/ros2_save_camera_image/streams.log -log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_14-41-57/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_14-45-35/events.log -log/build_2023-05-04_14-45-35/logger_all.log -log/build_2023-05-04_14-45-35/camera_snap_shot/command.log -log/build_2023-05-04_14-45-35/camera_snap_shot/stderr.log -log/build_2023-05-04_14-45-35/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_14-45-35/camera_snap_shot/stdout.log -log/build_2023-05-04_14-45-35/camera_snap_shot/streams.log -log/build_2023-05-04_14-45-35/robot_app/command.log -log/build_2023-05-04_14-45-35/robot_app/stderr.log -log/build_2023-05-04_14-45-35/robot_app/stdout_stderr.log -log/build_2023-05-04_14-45-35/robot_app/stdout.log -log/build_2023-05-04_14-45-35/robot_app/streams.log -log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/command.log -log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_14-45-35/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_14-45-35/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_14-45-35/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_14-45-35/ros2_save_camera_image/command.log -log/build_2023-05-04_14-45-35/ros2_save_camera_image/stderr.log -log/build_2023-05-04_14-45-35/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_14-45-35/ros2_save_camera_image/stdout.log -log/build_2023-05-04_14-45-35/ros2_save_camera_image/streams.log -log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_14-45-35/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_14-49-00/events.log -log/build_2023-05-04_14-49-00/logger_all.log -log/build_2023-05-04_14-49-00/camera_snap_shot/command.log -log/build_2023-05-04_14-49-00/camera_snap_shot/stderr.log -log/build_2023-05-04_14-49-00/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_14-49-00/camera_snap_shot/stdout.log -log/build_2023-05-04_14-49-00/camera_snap_shot/streams.log -log/build_2023-05-04_14-49-00/robot_app/command.log -log/build_2023-05-04_14-49-00/robot_app/stderr.log -log/build_2023-05-04_14-49-00/robot_app/stdout_stderr.log -log/build_2023-05-04_14-49-00/robot_app/stdout.log -log/build_2023-05-04_14-49-00/robot_app/streams.log -log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/command.log -log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_14-49-00/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_14-49-00/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_14-49-00/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_14-49-00/ros2_save_camera_image/command.log -log/build_2023-05-04_14-49-00/ros2_save_camera_image/stderr.log -log/build_2023-05-04_14-49-00/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_14-49-00/ros2_save_camera_image/stdout.log -log/build_2023-05-04_14-49-00/ros2_save_camera_image/streams.log -log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_14-49-00/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_14-54-26/events.log -log/build_2023-05-04_14-54-26/logger_all.log -log/build_2023-05-04_14-54-26/camera_snap_shot/command.log -log/build_2023-05-04_14-54-26/camera_snap_shot/stderr.log -log/build_2023-05-04_14-54-26/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_14-54-26/camera_snap_shot/stdout.log -log/build_2023-05-04_14-54-26/camera_snap_shot/streams.log -log/build_2023-05-04_14-54-26/robot_app/command.log -log/build_2023-05-04_14-54-26/robot_app/stderr.log -log/build_2023-05-04_14-54-26/robot_app/stdout_stderr.log -log/build_2023-05-04_14-54-26/robot_app/stdout.log -log/build_2023-05-04_14-54-26/robot_app/streams.log -log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/command.log -log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_14-54-26/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_14-54-26/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_14-54-26/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_14-54-26/ros2_save_camera_image/command.log -log/build_2023-05-04_14-54-26/ros2_save_camera_image/stderr.log -log/build_2023-05-04_14-54-26/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_14-54-26/ros2_save_camera_image/stdout.log -log/build_2023-05-04_14-54-26/ros2_save_camera_image/streams.log -log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_14-54-26/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_15-08-18/events.log -log/build_2023-05-04_15-08-18/logger_all.log -log/build_2023-05-04_15-08-18/camera_snap_shot/command.log -log/build_2023-05-04_15-08-18/camera_snap_shot/stderr.log -log/build_2023-05-04_15-08-18/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_15-08-18/camera_snap_shot/stdout.log -log/build_2023-05-04_15-08-18/camera_snap_shot/streams.log -log/build_2023-05-04_15-08-18/robot_app/command.log -log/build_2023-05-04_15-08-18/robot_app/stderr.log -log/build_2023-05-04_15-08-18/robot_app/stdout_stderr.log -log/build_2023-05-04_15-08-18/robot_app/stdout.log -log/build_2023-05-04_15-08-18/robot_app/streams.log -log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/command.log -log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_15-08-18/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_15-08-18/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_15-08-18/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_15-08-18/ros2_save_camera_image/command.log -log/build_2023-05-04_15-08-18/ros2_save_camera_image/stderr.log -log/build_2023-05-04_15-08-18/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_15-08-18/ros2_save_camera_image/stdout.log -log/build_2023-05-04_15-08-18/ros2_save_camera_image/streams.log -log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_15-08-18/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_15-15-15/events.log -log/build_2023-05-04_15-15-15/logger_all.log -log/build_2023-05-04_15-15-15/camera_snap_shot/command.log -log/build_2023-05-04_15-15-15/camera_snap_shot/stderr.log -log/build_2023-05-04_15-15-15/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_15-15-15/camera_snap_shot/stdout.log -log/build_2023-05-04_15-15-15/camera_snap_shot/streams.log -log/build_2023-05-04_15-15-15/robot_app/command.log -log/build_2023-05-04_15-15-15/robot_app/stderr.log -log/build_2023-05-04_15-15-15/robot_app/stdout_stderr.log -log/build_2023-05-04_15-15-15/robot_app/stdout.log -log/build_2023-05-04_15-15-15/robot_app/streams.log -log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/command.log -log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_15-15-15/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_15-15-15/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_15-15-15/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_15-15-15/ros2_save_camera_image/command.log -log/build_2023-05-04_15-15-15/ros2_save_camera_image/stderr.log -log/build_2023-05-04_15-15-15/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_15-15-15/ros2_save_camera_image/stdout.log -log/build_2023-05-04_15-15-15/ros2_save_camera_image/streams.log -log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_15-15-15/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_15-21-20/events.log -log/build_2023-05-04_15-21-20/logger_all.log -log/build_2023-05-04_15-21-20/camera_snap_shot/command.log -log/build_2023-05-04_15-21-20/camera_snap_shot/stderr.log -log/build_2023-05-04_15-21-20/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_15-21-20/camera_snap_shot/stdout.log -log/build_2023-05-04_15-21-20/camera_snap_shot/streams.log -log/build_2023-05-04_15-21-20/robot_app/command.log -log/build_2023-05-04_15-21-20/robot_app/stderr.log -log/build_2023-05-04_15-21-20/robot_app/stdout_stderr.log -log/build_2023-05-04_15-21-20/robot_app/stdout.log -log/build_2023-05-04_15-21-20/robot_app/streams.log -log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/command.log -log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_15-21-20/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_15-21-20/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_15-21-20/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_15-21-20/ros2_save_camera_image/command.log -log/build_2023-05-04_15-21-20/ros2_save_camera_image/stderr.log -log/build_2023-05-04_15-21-20/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_15-21-20/ros2_save_camera_image/stdout.log -log/build_2023-05-04_15-21-20/ros2_save_camera_image/streams.log -log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_15-21-20/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_16-56-46/events.log -log/build_2023-05-04_16-56-46/logger_all.log -log/build_2023-05-04_16-56-46/camera_snap_shot/command.log -log/build_2023-05-04_16-56-46/camera_snap_shot/stderr.log -log/build_2023-05-04_16-56-46/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_16-56-46/camera_snap_shot/stdout.log -log/build_2023-05-04_16-56-46/camera_snap_shot/streams.log -log/build_2023-05-04_16-56-46/robot_app/command.log -log/build_2023-05-04_16-56-46/robot_app/stderr.log -log/build_2023-05-04_16-56-46/robot_app/stdout_stderr.log -log/build_2023-05-04_16-56-46/robot_app/stdout.log -log/build_2023-05-04_16-56-46/robot_app/streams.log -log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/command.log -log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_16-56-46/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_16-56-46/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_16-56-46/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_16-56-46/ros2_save_camera_image/command.log -log/build_2023-05-04_16-56-46/ros2_save_camera_image/stderr.log -log/build_2023-05-04_16-56-46/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_16-56-46/ros2_save_camera_image/stdout.log -log/build_2023-05-04_16-56-46/ros2_save_camera_image/streams.log -log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_16-56-46/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_17-19-28/events.log -log/build_2023-05-04_17-19-28/logger_all.log -log/build_2023-05-04_17-19-28/camera_snap_shot/command.log -log/build_2023-05-04_17-19-28/camera_snap_shot/stderr.log -log/build_2023-05-04_17-19-28/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_17-19-28/camera_snap_shot/stdout.log -log/build_2023-05-04_17-19-28/camera_snap_shot/streams.log -log/build_2023-05-04_17-19-28/robot_app/command.log -log/build_2023-05-04_17-19-28/robot_app/stderr.log -log/build_2023-05-04_17-19-28/robot_app/stdout_stderr.log -log/build_2023-05-04_17-19-28/robot_app/stdout.log -log/build_2023-05-04_17-19-28/robot_app/streams.log -log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/command.log -log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_17-19-28/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_17-19-28/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_17-19-28/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_17-19-28/ros2_save_camera_image/command.log -log/build_2023-05-04_17-19-28/ros2_save_camera_image/stderr.log -log/build_2023-05-04_17-19-28/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_17-19-28/ros2_save_camera_image/stdout.log -log/build_2023-05-04_17-19-28/ros2_save_camera_image/streams.log -log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_17-19-28/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_17-22-12/events.log -log/build_2023-05-04_17-22-12/logger_all.log -log/build_2023-05-04_17-22-12/camera_snap_shot/command.log -log/build_2023-05-04_17-22-12/camera_snap_shot/stderr.log -log/build_2023-05-04_17-22-12/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_17-22-12/camera_snap_shot/stdout.log -log/build_2023-05-04_17-22-12/camera_snap_shot/streams.log -log/build_2023-05-04_17-22-12/robot_app/command.log -log/build_2023-05-04_17-22-12/robot_app/stderr.log -log/build_2023-05-04_17-22-12/robot_app/stdout_stderr.log -log/build_2023-05-04_17-22-12/robot_app/stdout.log -log/build_2023-05-04_17-22-12/robot_app/streams.log -log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/command.log -log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_17-22-12/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_17-22-12/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_17-22-12/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_17-22-12/ros2_save_camera_image/command.log -log/build_2023-05-04_17-22-12/ros2_save_camera_image/stderr.log -log/build_2023-05-04_17-22-12/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_17-22-12/ros2_save_camera_image/stdout.log -log/build_2023-05-04_17-22-12/ros2_save_camera_image/streams.log -log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_17-22-12/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-04_17-30-02/events.log -log/build_2023-05-04_17-30-02/logger_all.log -log/build_2023-05-04_17-30-02/camera_snap_shot/command.log -log/build_2023-05-04_17-30-02/camera_snap_shot/stderr.log -log/build_2023-05-04_17-30-02/camera_snap_shot/stdout_stderr.log -log/build_2023-05-04_17-30-02/camera_snap_shot/stdout.log -log/build_2023-05-04_17-30-02/camera_snap_shot/streams.log -log/build_2023-05-04_17-30-02/robot_app/command.log -log/build_2023-05-04_17-30-02/robot_app/stderr.log -log/build_2023-05-04_17-30-02/robot_app/stdout_stderr.log -log/build_2023-05-04_17-30-02/robot_app/stdout.log -log/build_2023-05-04_17-30-02/robot_app/streams.log -log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/command.log -log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/stderr.log -log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/stdout.log -log/build_2023-05-04_17-30-02/ros2_csi_camera_publish/streams.log -log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-04_17-30-02/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-04_17-30-02/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-04_17-30-02/ros2_save_camera_image/command.log -log/build_2023-05-04_17-30-02/ros2_save_camera_image/stderr.log -log/build_2023-05-04_17-30-02/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-04_17-30-02/ros2_save_camera_image/stdout.log -log/build_2023-05-04_17-30-02/ros2_save_camera_image/streams.log -log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-04_17-30-02/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_09-27-08/events.log -log/build_2023-05-05_09-27-08/logger_all.log -log/build_2023-05-05_09-27-08/camera_snap_shot/command.log -log/build_2023-05-05_09-27-08/camera_snap_shot/stderr.log -log/build_2023-05-05_09-27-08/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_09-27-08/camera_snap_shot/stdout.log -log/build_2023-05-05_09-27-08/camera_snap_shot/streams.log -log/build_2023-05-05_09-27-08/robot_app/command.log -log/build_2023-05-05_09-27-08/robot_app/stderr.log -log/build_2023-05-05_09-27-08/robot_app/stdout_stderr.log -log/build_2023-05-05_09-27-08/robot_app/stdout.log -log/build_2023-05-05_09-27-08/robot_app/streams.log -log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/command.log -log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_09-27-08/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_09-27-08/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_09-27-08/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_09-27-08/ros2_save_camera_image/command.log -log/build_2023-05-05_09-27-08/ros2_save_camera_image/stderr.log -log/build_2023-05-05_09-27-08/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_09-27-08/ros2_save_camera_image/stdout.log -log/build_2023-05-05_09-27-08/ros2_save_camera_image/streams.log -log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_09-27-08/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_09-42-27/events.log -log/build_2023-05-05_09-42-27/logger_all.log -log/build_2023-05-05_09-42-27/camera_snap_shot/command.log -log/build_2023-05-05_09-42-27/camera_snap_shot/stderr.log -log/build_2023-05-05_09-42-27/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_09-42-27/camera_snap_shot/stdout.log -log/build_2023-05-05_09-42-27/camera_snap_shot/streams.log -log/build_2023-05-05_09-42-27/robot_app/command.log -log/build_2023-05-05_09-42-27/robot_app/stderr.log -log/build_2023-05-05_09-42-27/robot_app/stdout_stderr.log -log/build_2023-05-05_09-42-27/robot_app/stdout.log -log/build_2023-05-05_09-42-27/robot_app/streams.log -log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/command.log -log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_09-42-27/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_09-42-27/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_09-42-27/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_09-42-27/ros2_save_camera_image/command.log -log/build_2023-05-05_09-42-27/ros2_save_camera_image/stderr.log -log/build_2023-05-05_09-42-27/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_09-42-27/ros2_save_camera_image/stdout.log -log/build_2023-05-05_09-42-27/ros2_save_camera_image/streams.log -log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_09-42-27/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_09-50-50/events.log -log/build_2023-05-05_09-50-50/logger_all.log -log/build_2023-05-05_09-50-50/camera_snap_shot/command.log -log/build_2023-05-05_09-50-50/camera_snap_shot/stderr.log -log/build_2023-05-05_09-50-50/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_09-50-50/camera_snap_shot/stdout.log -log/build_2023-05-05_09-50-50/camera_snap_shot/streams.log -log/build_2023-05-05_09-50-50/robot_app/command.log -log/build_2023-05-05_09-50-50/robot_app/stderr.log -log/build_2023-05-05_09-50-50/robot_app/stdout_stderr.log -log/build_2023-05-05_09-50-50/robot_app/stdout.log -log/build_2023-05-05_09-50-50/robot_app/streams.log -log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/command.log -log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_09-50-50/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_09-50-50/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_09-50-50/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_09-50-50/ros2_save_camera_image/command.log -log/build_2023-05-05_09-50-50/ros2_save_camera_image/stderr.log -log/build_2023-05-05_09-50-50/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_09-50-50/ros2_save_camera_image/stdout.log -log/build_2023-05-05_09-50-50/ros2_save_camera_image/streams.log -log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_09-50-50/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_10-02-18/events.log -log/build_2023-05-05_10-02-18/logger_all.log -log/build_2023-05-05_10-02-18/camera_snap_shot/command.log -log/build_2023-05-05_10-02-18/camera_snap_shot/stderr.log -log/build_2023-05-05_10-02-18/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_10-02-18/camera_snap_shot/stdout.log -log/build_2023-05-05_10-02-18/camera_snap_shot/streams.log -log/build_2023-05-05_10-02-18/robot_app/command.log -log/build_2023-05-05_10-02-18/robot_app/stderr.log -log/build_2023-05-05_10-02-18/robot_app/stdout_stderr.log -log/build_2023-05-05_10-02-18/robot_app/stdout.log -log/build_2023-05-05_10-02-18/robot_app/streams.log -log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/command.log -log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_10-02-18/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_10-02-18/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_10-02-18/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_10-02-18/ros2_save_camera_image/command.log -log/build_2023-05-05_10-02-18/ros2_save_camera_image/stderr.log -log/build_2023-05-05_10-02-18/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_10-02-18/ros2_save_camera_image/stdout.log -log/build_2023-05-05_10-02-18/ros2_save_camera_image/streams.log -log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_10-02-18/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_10-07-26/events.log -log/build_2023-05-05_10-07-26/logger_all.log -log/build_2023-05-05_10-07-26/camera_snap_shot/command.log -log/build_2023-05-05_10-07-26/camera_snap_shot/stderr.log -log/build_2023-05-05_10-07-26/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_10-07-26/camera_snap_shot/stdout.log -log/build_2023-05-05_10-07-26/camera_snap_shot/streams.log -log/build_2023-05-05_10-07-26/robot_app/command.log -log/build_2023-05-05_10-07-26/robot_app/stderr.log -log/build_2023-05-05_10-07-26/robot_app/stdout_stderr.log -log/build_2023-05-05_10-07-26/robot_app/stdout.log -log/build_2023-05-05_10-07-26/robot_app/streams.log -log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/command.log -log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_10-07-26/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_10-07-26/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_10-07-26/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_10-07-26/ros2_save_camera_image/command.log -log/build_2023-05-05_10-07-26/ros2_save_camera_image/stderr.log -log/build_2023-05-05_10-07-26/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_10-07-26/ros2_save_camera_image/stdout.log -log/build_2023-05-05_10-07-26/ros2_save_camera_image/streams.log -log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_10-07-26/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_12-45-57/events.log -log/build_2023-05-05_12-45-57/logger_all.log -log/build_2023-05-05_12-45-57/camera_snap_shot/command.log -log/build_2023-05-05_12-45-57/camera_snap_shot/stderr.log -log/build_2023-05-05_12-45-57/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_12-45-57/camera_snap_shot/stdout.log -log/build_2023-05-05_12-45-57/camera_snap_shot/streams.log -log/build_2023-05-05_12-45-57/robot_app/command.log -log/build_2023-05-05_12-45-57/robot_app/stderr.log -log/build_2023-05-05_12-45-57/robot_app/stdout_stderr.log -log/build_2023-05-05_12-45-57/robot_app/stdout.log -log/build_2023-05-05_12-45-57/robot_app/streams.log -log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/command.log -log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_12-45-57/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_12-45-57/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_12-45-57/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_12-45-57/ros2_save_camera_image/command.log -log/build_2023-05-05_12-45-57/ros2_save_camera_image/stderr.log -log/build_2023-05-05_12-45-57/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_12-45-57/ros2_save_camera_image/stdout.log -log/build_2023-05-05_12-45-57/ros2_save_camera_image/streams.log -log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_12-45-57/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_12-47-24/events.log -log/build_2023-05-05_12-47-24/logger_all.log -log/build_2023-05-05_12-47-24/camera_snap_shot/command.log -log/build_2023-05-05_12-47-24/camera_snap_shot/stderr.log -log/build_2023-05-05_12-47-24/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_12-47-24/camera_snap_shot/stdout.log -log/build_2023-05-05_12-47-24/camera_snap_shot/streams.log -log/build_2023-05-05_12-47-24/robot_app/command.log -log/build_2023-05-05_12-47-24/robot_app/stderr.log -log/build_2023-05-05_12-47-24/robot_app/stdout_stderr.log -log/build_2023-05-05_12-47-24/robot_app/stdout.log -log/build_2023-05-05_12-47-24/robot_app/streams.log -log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/command.log -log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_12-47-24/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_12-47-24/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_12-47-24/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_12-47-24/ros2_save_camera_image/command.log -log/build_2023-05-05_12-47-24/ros2_save_camera_image/stderr.log -log/build_2023-05-05_12-47-24/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_12-47-24/ros2_save_camera_image/stdout.log -log/build_2023-05-05_12-47-24/ros2_save_camera_image/streams.log -log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_12-47-24/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_12-53-01/events.log -log/build_2023-05-05_12-53-01/logger_all.log -log/build_2023-05-05_12-53-01/camera_snap_shot/command.log -log/build_2023-05-05_12-53-01/camera_snap_shot/stderr.log -log/build_2023-05-05_12-53-01/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_12-53-01/camera_snap_shot/stdout.log -log/build_2023-05-05_12-53-01/camera_snap_shot/streams.log -log/build_2023-05-05_12-53-01/robot_app/command.log -log/build_2023-05-05_12-53-01/robot_app/stderr.log -log/build_2023-05-05_12-53-01/robot_app/stdout_stderr.log -log/build_2023-05-05_12-53-01/robot_app/stdout.log -log/build_2023-05-05_12-53-01/robot_app/streams.log -log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/command.log -log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_12-53-01/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_12-53-01/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_12-53-01/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_12-53-01/ros2_save_camera_image/command.log -log/build_2023-05-05_12-53-01/ros2_save_camera_image/stderr.log -log/build_2023-05-05_12-53-01/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_12-53-01/ros2_save_camera_image/stdout.log -log/build_2023-05-05_12-53-01/ros2_save_camera_image/streams.log -log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_12-53-01/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-17-36/events.log -log/build_2023-05-05_13-17-36/logger_all.log -log/build_2023-05-05_13-17-36/camera_snap_shot/command.log -log/build_2023-05-05_13-17-36/camera_snap_shot/stderr.log -log/build_2023-05-05_13-17-36/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-17-36/camera_snap_shot/stdout.log -log/build_2023-05-05_13-17-36/camera_snap_shot/streams.log -log/build_2023-05-05_13-17-36/robot_app/command.log -log/build_2023-05-05_13-17-36/robot_app/stderr.log -log/build_2023-05-05_13-17-36/robot_app/stdout_stderr.log -log/build_2023-05-05_13-17-36/robot_app/stdout.log -log/build_2023-05-05_13-17-36/robot_app/streams.log -log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-17-36/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-17-36/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-17-36/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-17-36/ros2_save_camera_image/command.log -log/build_2023-05-05_13-17-36/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-17-36/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-17-36/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-17-36/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-17-36/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-22-00/events.log -log/build_2023-05-05_13-22-00/logger_all.log -log/build_2023-05-05_13-22-00/camera_snap_shot/command.log -log/build_2023-05-05_13-22-00/camera_snap_shot/stderr.log -log/build_2023-05-05_13-22-00/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-22-00/camera_snap_shot/stdout.log -log/build_2023-05-05_13-22-00/camera_snap_shot/streams.log -log/build_2023-05-05_13-22-00/robot_app/command.log -log/build_2023-05-05_13-22-00/robot_app/stderr.log -log/build_2023-05-05_13-22-00/robot_app/stdout_stderr.log -log/build_2023-05-05_13-22-00/robot_app/stdout.log -log/build_2023-05-05_13-22-00/robot_app/streams.log -log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-22-00/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-22-00/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-22-00/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-22-00/ros2_save_camera_image/command.log -log/build_2023-05-05_13-22-00/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-22-00/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-22-00/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-22-00/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-22-00/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-23-40/events.log -log/build_2023-05-05_13-23-40/logger_all.log -log/build_2023-05-05_13-23-40/camera_snap_shot/command.log -log/build_2023-05-05_13-23-40/camera_snap_shot/stderr.log -log/build_2023-05-05_13-23-40/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-23-40/camera_snap_shot/stdout.log -log/build_2023-05-05_13-23-40/camera_snap_shot/streams.log -log/build_2023-05-05_13-23-40/robot_app/command.log -log/build_2023-05-05_13-23-40/robot_app/stderr.log -log/build_2023-05-05_13-23-40/robot_app/stdout_stderr.log -log/build_2023-05-05_13-23-40/robot_app/stdout.log -log/build_2023-05-05_13-23-40/robot_app/streams.log -log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-23-40/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-23-40/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-23-40/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-23-40/ros2_save_camera_image/command.log -log/build_2023-05-05_13-23-40/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-23-40/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-23-40/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-23-40/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-23-40/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-30-09/events.log -log/build_2023-05-05_13-30-09/logger_all.log -log/build_2023-05-05_13-30-09/camera_snap_shot/command.log -log/build_2023-05-05_13-30-09/camera_snap_shot/stderr.log -log/build_2023-05-05_13-30-09/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-30-09/camera_snap_shot/stdout.log -log/build_2023-05-05_13-30-09/camera_snap_shot/streams.log -log/build_2023-05-05_13-30-09/robot_app/command.log -log/build_2023-05-05_13-30-09/robot_app/stderr.log -log/build_2023-05-05_13-30-09/robot_app/stdout_stderr.log -log/build_2023-05-05_13-30-09/robot_app/stdout.log -log/build_2023-05-05_13-30-09/robot_app/streams.log -log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-30-09/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-30-09/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-30-09/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-30-09/ros2_save_camera_image/command.log -log/build_2023-05-05_13-30-09/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-30-09/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-30-09/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-30-09/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-30-09/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-35-36/events.log -log/build_2023-05-05_13-35-36/logger_all.log -log/build_2023-05-05_13-35-36/camera_snap_shot/command.log -log/build_2023-05-05_13-35-36/camera_snap_shot/stderr.log -log/build_2023-05-05_13-35-36/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-35-36/camera_snap_shot/stdout.log -log/build_2023-05-05_13-35-36/camera_snap_shot/streams.log -log/build_2023-05-05_13-35-36/robot_app/command.log -log/build_2023-05-05_13-35-36/robot_app/stderr.log -log/build_2023-05-05_13-35-36/robot_app/stdout_stderr.log -log/build_2023-05-05_13-35-36/robot_app/stdout.log -log/build_2023-05-05_13-35-36/robot_app/streams.log -log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-35-36/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-35-36/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-35-36/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-35-36/ros2_save_camera_image/command.log -log/build_2023-05-05_13-35-36/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-35-36/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-35-36/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-35-36/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-35-36/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-46-19/events.log -log/build_2023-05-05_13-46-19/logger_all.log -log/build_2023-05-05_13-46-19/camera_snap_shot/command.log -log/build_2023-05-05_13-46-19/camera_snap_shot/stderr.log -log/build_2023-05-05_13-46-19/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-46-19/camera_snap_shot/stdout.log -log/build_2023-05-05_13-46-19/camera_snap_shot/streams.log -log/build_2023-05-05_13-46-19/robot_app/command.log -log/build_2023-05-05_13-46-19/robot_app/stderr.log -log/build_2023-05-05_13-46-19/robot_app/stdout_stderr.log -log/build_2023-05-05_13-46-19/robot_app/stdout.log -log/build_2023-05-05_13-46-19/robot_app/streams.log -log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-46-19/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-46-19/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-46-19/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-46-19/ros2_save_camera_image/command.log -log/build_2023-05-05_13-46-19/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-46-19/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-46-19/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-46-19/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-46-19/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-49-35/events.log -log/build_2023-05-05_13-49-35/logger_all.log -log/build_2023-05-05_13-49-35/camera_snap_shot/command.log -log/build_2023-05-05_13-49-35/camera_snap_shot/stderr.log -log/build_2023-05-05_13-49-35/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-49-35/camera_snap_shot/stdout.log -log/build_2023-05-05_13-49-35/camera_snap_shot/streams.log -log/build_2023-05-05_13-49-35/robot_app/command.log -log/build_2023-05-05_13-49-35/robot_app/stderr.log -log/build_2023-05-05_13-49-35/robot_app/stdout_stderr.log -log/build_2023-05-05_13-49-35/robot_app/stdout.log -log/build_2023-05-05_13-49-35/robot_app/streams.log -log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-49-35/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-49-35/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-49-35/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-49-35/ros2_save_camera_image/command.log -log/build_2023-05-05_13-49-35/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-49-35/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-49-35/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-49-35/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-49-35/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_13-53-35/events.log -log/build_2023-05-05_13-53-35/logger_all.log -log/build_2023-05-05_13-53-35/camera_snap_shot/command.log -log/build_2023-05-05_13-53-35/camera_snap_shot/stderr.log -log/build_2023-05-05_13-53-35/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_13-53-35/camera_snap_shot/stdout.log -log/build_2023-05-05_13-53-35/camera_snap_shot/streams.log -log/build_2023-05-05_13-53-35/robot_app/command.log -log/build_2023-05-05_13-53-35/robot_app/stderr.log -log/build_2023-05-05_13-53-35/robot_app/stdout_stderr.log -log/build_2023-05-05_13-53-35/robot_app/stdout.log -log/build_2023-05-05_13-53-35/robot_app/streams.log -log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/command.log -log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_13-53-35/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_13-53-35/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_13-53-35/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_13-53-35/ros2_save_camera_image/command.log -log/build_2023-05-05_13-53-35/ros2_save_camera_image/stderr.log -log/build_2023-05-05_13-53-35/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_13-53-35/ros2_save_camera_image/stdout.log -log/build_2023-05-05_13-53-35/ros2_save_camera_image/streams.log -log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_13-53-35/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_14-32-19/events.log -log/build_2023-05-05_14-32-19/logger_all.log -log/build_2023-05-05_14-32-19/camera_snap_shot/command.log -log/build_2023-05-05_14-32-19/camera_snap_shot/stderr.log -log/build_2023-05-05_14-32-19/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_14-32-19/camera_snap_shot/stdout.log -log/build_2023-05-05_14-32-19/camera_snap_shot/streams.log -log/build_2023-05-05_14-32-19/robot_app/command.log -log/build_2023-05-05_14-32-19/robot_app/stderr.log -log/build_2023-05-05_14-32-19/robot_app/stdout_stderr.log -log/build_2023-05-05_14-32-19/robot_app/stdout.log -log/build_2023-05-05_14-32-19/robot_app/streams.log -log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/command.log -log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_14-32-19/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_14-32-19/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_14-32-19/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_14-32-19/ros2_save_camera_image/command.log -log/build_2023-05-05_14-32-19/ros2_save_camera_image/stderr.log -log/build_2023-05-05_14-32-19/ros2_save_camera_image/stdout_stderr.log -log/build_2023-05-05_14-32-19/ros2_save_camera_image/stdout.log -log/build_2023-05-05_14-32-19/ros2_save_camera_image/streams.log -log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_14-32-19/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_14-46-59/events.log -log/build_2023-05-05_14-46-59/logger_all.log -log/build_2023-05-05_14-46-59/camera_snap_shot/command.log -log/build_2023-05-05_14-46-59/camera_snap_shot/stderr.log -log/build_2023-05-05_14-46-59/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_14-46-59/camera_snap_shot/stdout.log -log/build_2023-05-05_14-46-59/camera_snap_shot/streams.log -log/build_2023-05-05_14-46-59/robot_app/command.log -log/build_2023-05-05_14-46-59/robot_app/stderr.log -log/build_2023-05-05_14-46-59/robot_app/stdout_stderr.log -log/build_2023-05-05_14-46-59/robot_app/stdout.log -log/build_2023-05-05_14-46-59/robot_app/streams.log -log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/command.log -log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_14-46-59/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_14-46-59/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_14-46-59/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_14-46-59/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_14-55-23/events.log -log/build_2023-05-05_14-55-23/logger_all.log -log/build_2023-05-05_14-55-23/camera_snap_shot/command.log -log/build_2023-05-05_14-55-23/camera_snap_shot/stderr.log -log/build_2023-05-05_14-55-23/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_14-55-23/camera_snap_shot/stdout.log -log/build_2023-05-05_14-55-23/camera_snap_shot/streams.log -log/build_2023-05-05_14-55-23/robot_app/command.log -log/build_2023-05-05_14-55-23/robot_app/stderr.log -log/build_2023-05-05_14-55-23/robot_app/stdout_stderr.log -log/build_2023-05-05_14-55-23/robot_app/stdout.log -log/build_2023-05-05_14-55-23/robot_app/streams.log -log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/command.log -log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_14-55-23/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_14-55-23/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_14-55-23/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_14-55-23/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-07-23/events.log -log/build_2023-05-05_15-07-23/logger_all.log -log/build_2023-05-05_15-07-23/camera_snap_shot/command.log -log/build_2023-05-05_15-07-23/camera_snap_shot/stderr.log -log/build_2023-05-05_15-07-23/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-07-23/camera_snap_shot/stdout.log -log/build_2023-05-05_15-07-23/camera_snap_shot/streams.log -log/build_2023-05-05_15-07-23/robot_app/command.log -log/build_2023-05-05_15-07-23/robot_app/stderr.log -log/build_2023-05-05_15-07-23/robot_app/stdout_stderr.log -log/build_2023-05-05_15-07-23/robot_app/stdout.log -log/build_2023-05-05_15-07-23/robot_app/streams.log -log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-07-23/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-07-23/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-07-23/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-07-23/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-10-48/events.log -log/build_2023-05-05_15-10-48/logger_all.log -log/build_2023-05-05_15-10-48/camera_snap_shot/command.log -log/build_2023-05-05_15-10-48/camera_snap_shot/stderr.log -log/build_2023-05-05_15-10-48/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-10-48/camera_snap_shot/stdout.log -log/build_2023-05-05_15-10-48/camera_snap_shot/streams.log -log/build_2023-05-05_15-10-48/robot_app/command.log -log/build_2023-05-05_15-10-48/robot_app/stderr.log -log/build_2023-05-05_15-10-48/robot_app/stdout_stderr.log -log/build_2023-05-05_15-10-48/robot_app/stdout.log -log/build_2023-05-05_15-10-48/robot_app/streams.log -log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-10-48/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-10-48/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-10-48/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-10-48/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-12-46/events.log -log/build_2023-05-05_15-12-46/logger_all.log -log/build_2023-05-05_15-12-46/camera_snap_shot/command.log -log/build_2023-05-05_15-12-46/camera_snap_shot/stderr.log -log/build_2023-05-05_15-12-46/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-12-46/camera_snap_shot/stdout.log -log/build_2023-05-05_15-12-46/camera_snap_shot/streams.log -log/build_2023-05-05_15-12-46/robot_app/command.log -log/build_2023-05-05_15-12-46/robot_app/stderr.log -log/build_2023-05-05_15-12-46/robot_app/stdout_stderr.log -log/build_2023-05-05_15-12-46/robot_app/stdout.log -log/build_2023-05-05_15-12-46/robot_app/streams.log -log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-12-46/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-12-46/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-12-46/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-12-46/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-16-19/events.log -log/build_2023-05-05_15-16-19/logger_all.log -log/build_2023-05-05_15-16-19/camera_snap_shot/command.log -log/build_2023-05-05_15-16-19/camera_snap_shot/stderr.log -log/build_2023-05-05_15-16-19/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-16-19/camera_snap_shot/stdout.log -log/build_2023-05-05_15-16-19/camera_snap_shot/streams.log -log/build_2023-05-05_15-16-19/robot_app/command.log -log/build_2023-05-05_15-16-19/robot_app/stderr.log -log/build_2023-05-05_15-16-19/robot_app/stdout_stderr.log -log/build_2023-05-05_15-16-19/robot_app/stdout.log -log/build_2023-05-05_15-16-19/robot_app/streams.log -log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-16-19/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-16-19/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-16-19/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-16-19/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-20-15/events.log -log/build_2023-05-05_15-20-15/logger_all.log -log/build_2023-05-05_15-20-15/camera_snap_shot/command.log -log/build_2023-05-05_15-20-15/camera_snap_shot/stderr.log -log/build_2023-05-05_15-20-15/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-20-15/camera_snap_shot/stdout.log -log/build_2023-05-05_15-20-15/camera_snap_shot/streams.log -log/build_2023-05-05_15-20-15/robot_app/command.log -log/build_2023-05-05_15-20-15/robot_app/stderr.log -log/build_2023-05-05_15-20-15/robot_app/stdout_stderr.log -log/build_2023-05-05_15-20-15/robot_app/stdout.log -log/build_2023-05-05_15-20-15/robot_app/streams.log -log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-20-15/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-20-15/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-20-15/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-20-15/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-25-55/events.log -log/build_2023-05-05_15-25-55/logger_all.log -log/build_2023-05-05_15-25-55/camera_snap_shot/command.log -log/build_2023-05-05_15-25-55/camera_snap_shot/stderr.log -log/build_2023-05-05_15-25-55/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-25-55/camera_snap_shot/stdout.log -log/build_2023-05-05_15-25-55/camera_snap_shot/streams.log -log/build_2023-05-05_15-25-55/robot_app/command.log -log/build_2023-05-05_15-25-55/robot_app/stderr.log -log/build_2023-05-05_15-25-55/robot_app/stdout_stderr.log -log/build_2023-05-05_15-25-55/robot_app/stdout.log -log/build_2023-05-05_15-25-55/robot_app/streams.log -log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-25-55/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-25-55/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-25-55/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-25-55/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-33-05/events.log -log/build_2023-05-05_15-33-05/logger_all.log -log/build_2023-05-05_15-33-05/camera_snap_shot/command.log -log/build_2023-05-05_15-33-05/camera_snap_shot/stderr.log -log/build_2023-05-05_15-33-05/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-33-05/camera_snap_shot/stdout.log -log/build_2023-05-05_15-33-05/camera_snap_shot/streams.log -log/build_2023-05-05_15-33-05/robot_app/command.log -log/build_2023-05-05_15-33-05/robot_app/stderr.log -log/build_2023-05-05_15-33-05/robot_app/stdout_stderr.log -log/build_2023-05-05_15-33-05/robot_app/stdout.log -log/build_2023-05-05_15-33-05/robot_app/streams.log -log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-33-05/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-33-05/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-33-05/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-33-05/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-35-37/events.log -log/build_2023-05-05_15-35-37/logger_all.log -log/build_2023-05-05_15-35-37/camera_snap_shot/command.log -log/build_2023-05-05_15-35-37/camera_snap_shot/stderr.log -log/build_2023-05-05_15-35-37/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-35-37/camera_snap_shot/stdout.log -log/build_2023-05-05_15-35-37/camera_snap_shot/streams.log -log/build_2023-05-05_15-35-37/robot_app/command.log -log/build_2023-05-05_15-35-37/robot_app/stderr.log -log/build_2023-05-05_15-35-37/robot_app/stdout_stderr.log -log/build_2023-05-05_15-35-37/robot_app/stdout.log -log/build_2023-05-05_15-35-37/robot_app/streams.log -log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-35-37/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-35-37/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-35-37/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-35-37/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-41-21/events.log -log/build_2023-05-05_15-41-21/logger_all.log -log/build_2023-05-05_15-41-21/camera_snap_shot/command.log -log/build_2023-05-05_15-41-21/camera_snap_shot/stderr.log -log/build_2023-05-05_15-41-21/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-41-21/camera_snap_shot/stdout.log -log/build_2023-05-05_15-41-21/camera_snap_shot/streams.log -log/build_2023-05-05_15-41-21/robot_app/command.log -log/build_2023-05-05_15-41-21/robot_app/stderr.log -log/build_2023-05-05_15-41-21/robot_app/stdout_stderr.log -log/build_2023-05-05_15-41-21/robot_app/stdout.log -log/build_2023-05-05_15-41-21/robot_app/streams.log -log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-41-21/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-41-21/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-41-21/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-41-21/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-46-37/events.log -log/build_2023-05-05_15-46-37/logger_all.log -log/build_2023-05-05_15-46-37/camera_snap_shot/command.log -log/build_2023-05-05_15-46-37/camera_snap_shot/stderr.log -log/build_2023-05-05_15-46-37/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-46-37/camera_snap_shot/stdout.log -log/build_2023-05-05_15-46-37/camera_snap_shot/streams.log -log/build_2023-05-05_15-46-37/robot_app/command.log -log/build_2023-05-05_15-46-37/robot_app/stderr.log -log/build_2023-05-05_15-46-37/robot_app/stdout_stderr.log -log/build_2023-05-05_15-46-37/robot_app/stdout.log -log/build_2023-05-05_15-46-37/robot_app/streams.log -log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-46-37/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-46-37/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-46-37/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-46-37/ros2_twist_message_to_robot_motion/streams.log -log/build_2023-05-05_15-51-54/events.log -log/build_2023-05-05_15-51-54/logger_all.log -log/build_2023-05-05_15-51-54/camera_snap_shot/command.log -log/build_2023-05-05_15-51-54/camera_snap_shot/stderr.log -log/build_2023-05-05_15-51-54/camera_snap_shot/stdout_stderr.log -log/build_2023-05-05_15-51-54/camera_snap_shot/stdout.log -log/build_2023-05-05_15-51-54/camera_snap_shot/streams.log -log/build_2023-05-05_15-51-54/robot_app/command.log -log/build_2023-05-05_15-51-54/robot_app/stderr.log -log/build_2023-05-05_15-51-54/robot_app/stdout_stderr.log -log/build_2023-05-05_15-51-54/robot_app/stdout.log -log/build_2023-05-05_15-51-54/robot_app/streams.log -log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/command.log -log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/stderr.log -log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/stdout_stderr.log -log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/stdout.log -log/build_2023-05-05_15-51-54/ros2_csi_camera_publish/streams.log -log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/command.log -log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/stderr.log -log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/stdout.log -log/build_2023-05-05_15-51-54/ros2_deep_learning_to_twist_message/streams.log -log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/command.log -log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/stderr.log -log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/stdout_stderr.log -log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/stdout.log -log/build_2023-05-05_15-51-54/ros2_gamepad_to_twist_message/streams.log -log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/command.log -log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/stderr.log -log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/stdout_stderr.log -log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/stdout.log -log/build_2023-05-05_15-51-54/ros2_twist_message_to_robot_motion/streams.log -install/_local_setup_util_ps1.py -install/_local_setup_util_sh.py -install/.colcon_install_layout -install/COLCON_IGNORE -install/local_setup.bash -install/local_setup.ps1 -install/local_setup.sh -install/local_setup.zsh -install/setup.bash -install/setup.ps1 -install/setup.sh -install/setup.zsh -install/camera_snap_shot/share/ament_index/resource_index/packages/camera_snap_shot -install/camera_snap_shot/share/camera_snap_shot/package.bash -install/camera_snap_shot/share/camera_snap_shot/package.dsv -install/camera_snap_shot/share/camera_snap_shot/package.ps1 -install/camera_snap_shot/share/camera_snap_shot/package.sh -install/camera_snap_shot/share/camera_snap_shot/package.xml -install/camera_snap_shot/share/camera_snap_shot/package.zsh -install/camera_snap_shot/share/camera_snap_shot/config/camera_snap_shot_settings.json -install/camera_snap_shot/share/camera_snap_shot/hook/ament_prefix_path.dsv -install/camera_snap_shot/share/camera_snap_shot/hook/ament_prefix_path.ps1 -install/camera_snap_shot/share/camera_snap_shot/hook/ament_prefix_path.sh -install/camera_snap_shot/share/camera_snap_shot/hook/pythonpath.dsv -install/camera_snap_shot/share/camera_snap_shot/hook/pythonpath.ps1 -install/camera_snap_shot/share/camera_snap_shot/hook/pythonpath.sh -install/camera_snap_shot/share/camera_snap_shot/launch/camera_snap_shot.launch.py -install/camera_snap_shot/share/colcon-core/packages/camera_snap_shot -install/robot_app/share/ament_index/resource_index/packages/robot_app -install/robot_app/share/colcon-core/packages/robot_app -install/robot_app/share/robot_app/package.bash -install/robot_app/share/robot_app/package.dsv -install/robot_app/share/robot_app/package.ps1 -install/robot_app/share/robot_app/package.sh -install/robot_app/share/robot_app/package.xml -install/robot_app/share/robot_app/package.zsh -install/robot_app/share/robot_app/hook/ament_prefix_path.dsv -install/robot_app/share/robot_app/hook/ament_prefix_path.ps1 -install/robot_app/share/robot_app/hook/ament_prefix_path.sh -install/robot_app/share/robot_app/hook/pythonpath.dsv -install/robot_app/share/robot_app/hook/pythonpath.ps1 -install/robot_app/share/robot_app/hook/pythonpath.sh -install/robot_app/share/robot_app/launch/autonomous_launch.py -install/robot_app/share/robot_app/launch/gamepad_launch.py -install/ros2_csi_camera_publish/share/ament_index/resource_index/packages/ros2_csi_camera_publish -install/ros2_csi_camera_publish/share/colcon-core/packages/ros2_csi_camera_publish -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.bash -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.dsv -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.ps1 -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.sh -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.xml -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/package.zsh -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/settings.json -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/ament_prefix_path.dsv -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/ament_prefix_path.ps1 -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/ament_prefix_path.sh -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/pythonpath.dsv -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/pythonpath.ps1 -install/ros2_csi_camera_publish/share/ros2_csi_camera_publish/hook/pythonpath.sh -install/ros2_deep_learning_to_twist_message/share/ament_index/resource_index/packages/ros2_deep_learning_to_twist_message -install/ros2_deep_learning_to_twist_message/share/colcon-core/packages/ros2_deep_learning_to_twist_message -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.bash -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.dsv -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.ps1 -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.sh -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.xml -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/package.zsh -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/settings.json -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/ament_prefix_path.dsv -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/ament_prefix_path.ps1 -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/ament_prefix_path.sh -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/pythonpath.dsv -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/pythonpath.ps1 -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/hook/pythonpath.sh -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/launch/launch.py -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/models/x.onnx -install/ros2_deep_learning_to_twist_message/share/ros2_deep_learning_to_twist_message/models/z.onnx -install/ros2_gamepad_to_twist_message/share/ament_index/resource_index/packages/ros2_gamepad_to_twist_message -install/ros2_gamepad_to_twist_message/share/colcon-core/packages/ros2_gamepad_to_twist_message -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.bash -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.dsv -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.ps1 -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.sh -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.xml -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/package.zsh -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/settings.json -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/ament_prefix_path.dsv -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/ament_prefix_path.ps1 -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/ament_prefix_path.sh -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/pythonpath.dsv -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/pythonpath.ps1 -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/hook/pythonpath.sh -install/ros2_gamepad_to_twist_message/share/ros2_gamepad_to_twist_message/launch/launch.py -install/ros2_twist_message_to_robot_motion/share/ament_index/resource_index/packages/ros2_twist_message_to_robot_motion -install/ros2_twist_message_to_robot_motion/share/colcon-core/packages/ros2_twist_message_to_robot_motion -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.bash -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.dsv -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.ps1 -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.sh -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.xml -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/package.zsh -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/settings.json -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/ament_prefix_path.dsv -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/ament_prefix_path.ps1 -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/ament_prefix_path.sh -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/pythonpath.dsv -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/pythonpath.ps1 -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/hook/pythonpath.sh -install/ros2_twist_message_to_robot_motion/share/ros2_twist_message_to_robot_motion/launch/launch.py +log/ +install/ \ No newline at end of file From 0ee508e3f5474b32235fdf53511bbec6dbfcc67e Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Wed, 10 May 2023 17:41:57 +0200 Subject: [PATCH 11/16] beginning of HSL stream --- .../camera_capture/camera_capture.py | 29 +++++++++++++++---- .../playstation.py | 6 ---- 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/src/camera_capture/camera_capture/camera_capture.py b/src/camera_capture/camera_capture/camera_capture.py index be53e8c..3750518 100644 --- a/src/camera_capture/camera_capture/camera_capture.py +++ b/src/camera_capture/camera_capture/camera_capture.py @@ -18,8 +18,10 @@ from rclpy.node import Node from sensor_msgs.msg import Image from ament_index_python.packages import get_package_share_directory -from std_msgs.msg import String, Bool +from std_msgs.msg import Bool from cv_bridge import CvBridge +import ffmpeg_streaming +import subprocess # ___Global Variables: @@ -74,13 +76,29 @@ def __init__(self, # set image counter self.image_number = 0 + def hsl_livestream(self,video_width,video_height): + ffmpeg_command = [ + 'ffmpeg', + '-y', # Overschrijf uitvoerbestanden zonder bevestiging + '-f', 'rawvideo', + '-vcodec', 'rawvideo', + '-s', f'{video_width}x{video_height}', + '-pix_fmt', 'bgr24', + '-r', str(30), + '-i', '-', + '-f', 'mpegts', + 'udp://localhost:1234' # Doel-URL voor de FFmpeg-stream + ] + self.ffmpeg_process = subprocess.Popen(ffmpeg_command, stdin=subprocess.PIPE) + def convert_livestream(self, topic_msg): """ - get a Image() type message and converts it to a cv2 image with cv2.imshow() + host livestream on localhost:1935/live/test with cv2 and ffmpeg """ - # self._logger.info(f'message received on topic livestream \nwith message: {topic_msg}\nwith data :{topic_msg.data}') - cv2.imshow("Video Frame", self.bridge.imgmsg_to_cv2(topic_msg, "bgr8")) - cv2.waitKey(1) + frame = self.bridge.imgmsg_to_cv2(topic_msg, "bgr8") + self.ffmpeg_process.stdin.write(frame.tobytes()) + # stream =cv2.imencode('.jpg', self.bridge.imgmsg_to_cv2(topic_msg, "bgr8"))[1].tobytes() + # ffmpeg_streaming.input(stream,input=".jpg").output('rtmp://localhost:1935/live/test').run() def start_livestream_callback(self, topic_msg): @@ -98,6 +116,7 @@ def start_livestream_callback(self, topic_msg): self.get_logger().info('camera is available') if topic_msg.data == True: self._logger.info('starting livestream') + self.hsl_livestream(json_settings["capture_width_livestream"], json_settings["capture_height_livestream"]) self.timer = self.create_timer(timer_period, self.timer_callback) elif topic_msg.data == False: self._logger.info('stopping livestream') diff --git a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py index d9707f8..5c3dbe9 100644 --- a/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py +++ b/src/ros2_gamepad_to_twist_message/ros2_gamepad_to_twist_message/playstation.py @@ -93,12 +93,6 @@ def timer_callback(self): if event.type == controller.JOYBUTTONDOWN: if event.button == 0: - #make sure no camera livestream is running - # msg = Bool() - # msg.data = False - # self.pub_camera_livestream.publish(msg) - # self.get_logger().info(" [2 - O] Button pressed") - #make picutre msg = Bool() msg.data = True self.pub_camera_trigger.publish(msg) From dd834a14f6f9ae96df891235db3a89690efe57b2 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Thu, 11 May 2023 16:51:08 +0200 Subject: [PATCH 12/16] add node streaming, remove old nodes --- FastAPI/hosting_server.py | 12 ++ README.md | 3 +- host_rtsp_server | Bin 14488 -> 0 bytes host_rtsp_server.c | 87 ------------ .../camera_capture/camera_capture.py | 31 +---- .../camera_livestream/camera_livestream.py | 115 ---------------- .../camera_livestream/temp.py | 80 ----------- .../config/camera_livestream_settings.json | 8 -- .../launch/camera_livestream.launch.py | 39 ------ src/camera_livestream/setup.cfg | 4 - .../camera_snap_shot/take_snap_shot.py | 124 ------------------ .../config/camera_snap_shot_settings.json | 13 -- .../launch/camera_snap_shot.launch.py | 38 ------ .../resource/camera_snap_shot | 0 src/camera_snap_shot/setup.cfg | 4 - src/robot_app/launch/gamepad_launch.py | 13 +- src/ros2_csi_camera_publish/README.md | 48 ------- src/ros2_csi_camera_publish/package.xml | 22 ---- .../resource/ros2_csi_camera_publish | 0 .../ros2_csi_camera_publish/jetson.py | 81 ------------ src/ros2_csi_camera_publish/settings.json | 10 -- src/ros2_csi_camera_publish/setup.cfg | 4 - src/ros2_csi_camera_publish/setup.py | 28 ---- .../test/test_copyright.py | 23 ---- .../test/test_flake8.py | 23 ---- .../test/test_pep257.py | 23 ---- src/ros_to_livestream/config/settings.json | 10 ++ src/ros_to_livestream/config/settings.yaml | 14 ++ src/ros_to_livestream/launch/HSL.launch.py | 34 +++++ .../package.xml | 46 +++---- .../requirements.in} | 0 .../resource/ros_to_livestream} | 0 .../ros_to_livestream/HSL.py | 91 +++++++++++++ .../ros_to_livestream/__init__.py | 1 + src/ros_to_livestream/setup.cfg | 4 + .../setup.py | 3 +- .../package.xml | 9 +- .../__init__.py => support/requirements.in} | 0 .../__init__.py => support/resource/support} | 0 src/support/setup.cfg | 4 + src/{camera_snap_shot => support}/setup.py | 99 +++++++------- src/support/support/__init__.py | 1 + src/support/support/extended_node.py | 32 +++++ src/support/support/rclpy_mixin.py | 11 ++ .../test}/__init__.py | 0 src/support/test/test_extended_node.py | 28 ++++ 46 files changed, 334 insertions(+), 886 deletions(-) create mode 100644 FastAPI/hosting_server.py delete mode 100644 host_rtsp_server delete mode 100644 host_rtsp_server.c delete mode 100644 src/camera_livestream/camera_livestream/camera_livestream.py delete mode 100644 src/camera_livestream/camera_livestream/temp.py delete mode 100644 src/camera_livestream/config/camera_livestream_settings.json delete mode 100644 src/camera_livestream/launch/camera_livestream.launch.py delete mode 100644 src/camera_livestream/setup.cfg delete mode 100644 src/camera_snap_shot/camera_snap_shot/take_snap_shot.py delete mode 100644 src/camera_snap_shot/config/camera_snap_shot_settings.json delete mode 100644 src/camera_snap_shot/launch/camera_snap_shot.launch.py delete mode 100644 src/camera_snap_shot/resource/camera_snap_shot delete mode 100644 src/camera_snap_shot/setup.cfg delete mode 100644 src/ros2_csi_camera_publish/README.md delete mode 100644 src/ros2_csi_camera_publish/package.xml delete mode 100644 src/ros2_csi_camera_publish/resource/ros2_csi_camera_publish delete mode 100644 src/ros2_csi_camera_publish/ros2_csi_camera_publish/jetson.py delete mode 100644 src/ros2_csi_camera_publish/settings.json delete mode 100644 src/ros2_csi_camera_publish/setup.cfg delete mode 100644 src/ros2_csi_camera_publish/setup.py delete mode 100644 src/ros2_csi_camera_publish/test/test_copyright.py delete mode 100644 src/ros2_csi_camera_publish/test/test_flake8.py delete mode 100644 src/ros2_csi_camera_publish/test/test_pep257.py create mode 100644 src/ros_to_livestream/config/settings.json create mode 100644 src/ros_to_livestream/config/settings.yaml create mode 100644 src/ros_to_livestream/launch/HSL.launch.py rename src/{camera_snap_shot => ros_to_livestream}/package.xml (70%) rename src/{camera_livestream/camera_livestream/__init__.py => ros_to_livestream/requirements.in} (100%) rename src/{camera_livestream/resource/camera_livestream => ros_to_livestream/resource/ros_to_livestream} (100%) create mode 100644 src/ros_to_livestream/ros_to_livestream/HSL.py create mode 100644 src/ros_to_livestream/ros_to_livestream/__init__.py create mode 100644 src/ros_to_livestream/setup.cfg rename src/{camera_livestream => ros_to_livestream}/setup.py (95%) rename src/{camera_livestream => support}/package.xml (72%) rename src/{camera_snap_shot/__init__.py => support/requirements.in} (100%) rename src/{camera_snap_shot/camera_snap_shot/__init__.py => support/resource/support} (100%) create mode 100644 src/support/setup.cfg rename src/{camera_snap_shot => support}/setup.py (90%) create mode 100644 src/support/support/__init__.py create mode 100644 src/support/support/extended_node.py create mode 100644 src/support/support/rclpy_mixin.py rename src/{ros2_csi_camera_publish/ros2_csi_camera_publish => support/test}/__init__.py (100%) create mode 100644 src/support/test/test_extended_node.py diff --git a/FastAPI/hosting_server.py b/FastAPI/hosting_server.py new file mode 100644 index 0000000..a8b8177 --- /dev/null +++ b/FastAPI/hosting_server.py @@ -0,0 +1,12 @@ +from fastapi import FastAPI +from fastapi.responses import StreamingResponse + +app = FastAPI() + +@app.get('/') +async def main(): + def iter_file(): + with open("livestream/output.mp4", mode="rb") as stream_file: + yield from stream_file + # return StreamingResponse(iter_file(), media_type='text/event-stream') + return StreamingResponse(iter_file(), media_type='video/mp4') \ No newline at end of file diff --git a/README.md b/README.md index 90c1216..2b98098 100644 --- a/README.md +++ b/README.md @@ -54,8 +54,7 @@ git clone https://github.com/OrdinaNederland/robotics-workshop #### Build, Source & Launch Package (Gamepad) ``` cd ~/robotics-workshop -chmod +x host_rtsp_server -colcon build --symlink-install && source install/local_setup.bash +colcon build && source install/local_setup.bash ROS_DOMAIN_ID= ros2 launch robot_app gamepad_launch.py gamepad_type:=playstation ``` diff --git a/host_rtsp_server b/host_rtsp_server deleted file mode 100644 index 9573fd3f938999660296aa3ed2e9c299753dacf9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14488 zcmeHOeQ;dWb-%kSz+fAHU~Cc->&d2xv7?nR#)z-vNwSbgjZtJlY02d2Y4=ImvfACe zeH&yu(+Zc#xGhPgT40y2Ixv&i&J5#e^Fe7RaXe|J6EYnSAuhuNvQ|k-2RdU04Bp1_ z_IK{PXLaA(eI2)%{?UmqJe_-f_ndRjyZ65P?w)u2$35HbjK^YvOG12C5Z8aDkC>|A zzzwPbVu}uNIsRTNR*Or)H%ZKIH+_OuznoR3nJ!Rx0+jSR;yw_jtCbv6_K@f$s;v>3 zxynbG3VApFU-EV8TEBhjTHhkmx5y!s(~7blxkq{jmEJ+6$JA8*Gv)iEd!uVmwTJ0e zv{7M7vQ+wi>7}VYwp_Axl;xSS-e;jleqLxK+5+1 z7b5&$9^wD<5%^bNztOx5McDtx2s^)yuybRCd^rMtBEpWq^E6uYT(4LtI_?)8xAlf( zJ3UYB!m>uk^Es>N*{)|*if><8~%zW%K!hm2(~v z)?I^lTWQC2Ml(gvaR=}2&gOH@pgo**{I-TIwJwT|7cl9Taspmjk zyVHWGm9!f+q9eZ3Kaom5w%V5k?`JCrWc-DyPI2ee6i;gkSsD=azwp%2L5KPXDy7^L} zzKKU8lgoG(-J4SN#c4J8)7-j=*8yR;=7EOY$@zD3o||!sbbBdUL|d?kuzpexTB)%I zF+7>9u!r-m2RJo>In3njY-Sghghd)^sgWhoc#GGqjh1XTEqb@z)zxinO5SiY7Pu^U zz_e0(t!iy7!IYX}`0oG!dN&xj_D?^K*IGgxQ$o~!pK3?5YLD02`F);HFUI~QBqhWF z_1)Ls`T1ee^92S4S=>e|C*O4srAwm~$mh zxSAR%zd*xvKbLB_ey+Jj!}+X0h71koGZ^9PHT-e{RB6}ng$#mrXt;iaFg1L!Cf}#w z>c}ix`!!rG5sBZg;d}<8h9M2t$A3)2=}g6?py5|D2s)wRIPKKRq=v7mp+fA{@M|=D zO2a>*;RiJQqZ)ot!}-ik&4)Bx9igSxQ4Rl?W@m2q_Ycn{#PpYhn3>!CgG0v>)=8~d zoJRYU5J#8o>a8q2e%rJWZ$8;q_&)>RrSV?{ zKdkY834V{pKMwv`jei3CagBcl{H(@53qF3weE(kuzgFXqfbY`y=fMwa{NI4zqw(JX z|E$Kp2>!Une-Heu#vcbC|I~c{KLWp2<9`gkOXL3;{IJHq41SNsp9KG`#=i#sxX*t~ zOuoDZ*Dn*|$f<-`nO!HQe}(y+#GHw9y_G)!O`YwnJOcVixwkS?t?qvbmu!Etw_*zM zt^L*NDw=niQ{X2=IX3+;Xbb44g?RfQepZ1$+H$(L(g}G(G@p!;ZxQ09mUG?vTF!O; zIj((QgZv)ocD>(Q=|bI9x^ug~C)eG33q@rg`Wl+;yv2-(o1|aw^j1K>C4Ff!D^J4T z*KiqPa$smScFTJU&C1;F<8rN*;rra~7p1Lov-rDHuqSQ2)mw=PvvR6UfKI+#T_q|4 ze&83+^fzIvyjoP^z^RYekeDv7HY?-63%E{UEQx;%_1Wjd^r>#N7sd3yCgMkC6ETdl z-~KS#n}zto*J5I@yvnQy_)2ZEpJNNAKZ|yZjDa(OF$t`U9{c=$E|?B&ms zOtYvA5?!b6!4%U1_mDvQtZ#QJW?nvBUT0QDq?}p#9MMmR%4djf6qPc@Mi{=H^mC(G z*@(6l^ixK?9ramI_&60Cf~`-Om6Wt$Rz3nsV@3A=fUst>k_Lr;0}n&K1!FqfW>#9@ zQ>Tdi7;EEQ6KkUvGIP6sBfi3#G(8i)`lSyN zV#9~2#NiJymS-`hzc^prUtKcu_7KK#=6v_QtKh?PyNYLL6W1ImUW)NgtU6LotlTgp zK7I19<5#`iQmqcYx1;m$nFqQKf0*h%Jh%IYvTs_yv@Us1)AzHOz##^ust_IeUR>Az=Skm&9HnH%ys=TkPTqrP(M=gG#>A#Ao1GlhT(2+&reNaT}>W*Btb&E!T6|IAvv)%cyFI!w@EJ(F@oo0}ibd-y?v zqc!QpRwr)T3QF(nj&s%O=Rn6m3!n!F|NI;!m+Ivls_Dkdr9#eo8s7v9_t~y z9AhhU+>JmKQ|Z%rmI}wpIQG-8I%52Ua+v*|R0G8^Gwy$lZ?1NKI9|*9gSb@1QC;#= z%1~AD${lf9@q?JDCD zntTGkvH82Z2IHAYh>3>sO||DVD1V9I=QD_3D)>1L;+F|t-$8tV;O8QUUoQCh3*uJ@ zeoljU)c5U0g4c6UesL|IBZyxqc%KX6OT>iQ|AP3^T0TM$UnY*~9|u%p0$*Nv-weuM zRr?+j#8)8Cf>+vnOF~>Ncz>HmY42MpgwaTTm6&LV^DZ`Tg|wT*yVZHbuk}b$zfSrj zUO%3`eEqonF60~8XFGdk)WPqQ{(co#Tr3uh^ZxD2*U!6;*U#gVuoKkSG7c_}dCU5t8@EZKdG-2V%0E$6vC;=Kuu@iUY;O{QUCl z`*!Nr)jBC(kADU@+2`{H+xP9%uiN{ioqF7tUnYJSTK_&i?T>s9)Vv*c)Wi9`HKkoCxC~x80i(gUmM-mYZ3Ul2z;d+H|<7M zbwdQ+6M^3gd~LlML3waS1N>3o%f$Tt&-3_Xg#5RGFKw_MjstHr4zEPuXQZ9_eTMQG z8rk_M@MZCpb??WID?Gdp-xy)X1ilpe@T7qStd%|~zgY18AYVwq z{NF11@Oytc!p_g(b|e44A7TGg1pa}vUq7C65%P;Kp?R6#hvl~f8o#zu(UnP+qp4Jz z%BNJ>m7}>*TSr?mss68T+>vs<8@f%r!p$rVA>}=M0$gz1HX<;Wfq z#=O$VNHQhnlhG`19Jy;qM=K)lD4n-Pv-x2=Yo(D+R!ve0(QVG|rN#R=Vg|o^#p!95c8lzr#7%kya8;=6Arv zodcbB_gFpKw<7t@vXHE5_4FyQZ|i`tdbi!v)w#{O=gvEK^bA^qon6~{NHEY_Ita*I zK4ESB{q3E1-_?yanRb;bmgMa)?`Ql`8kT8l`BimkUot!Gf0QN2w;i3rH=pZPm+KXD zCfbxrv8!{JlHvkcYLoydN2@LkE}R<3NplVI4`ow0`!SH+7V!JOPmH_=DR61zQI?9x z5tO10^CYosZO``8<@|)YKp$c6>oOQEYq(fc*>*CqGnjSgCly*2vNmhWFI~)AV|Ff$ z{7nq3p9o4>nif`nS}xGqQlcRR9?bg-I>7ujsqx+YH}_O3>82*D@`&49#FJ zX1Fh!Fw3C<#GT0XAhT8}#Z+bG~7O5K|){O=tUH*$Vap z#0I(l1FFK5NhW;%yMWP{vOdR`m`*B( zxqsH@`+r2~cY#vjI22P;876&-Nr&|*jzL{;e4FFzOgXLr5n00X|EEB8eU57}Js28r z%B7&fbOv=@pMOU&T|tws751MY%G1~NIZnou`(gR8{|A*mk3YxLnEnSVDjM$pP)MJD z-!k1A(hv9losd4q=a{}3(hv844DA%E;bG$6#r*Gt!t%^B{Rwm_@0IoW`^W+H;IbS< zWMQ7^t3dhLBmw^Y&HoOI*B`Gh*5i3O1s$3{?w{j_ - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Library General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) any later version. - * - * This library is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Library General Public License for more details. - * - * You should have received a copy of the GNU Library General Public - * License along with this library; if not, write to the - * Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, - * Boston, MA 02110-1301, USA. - */ - -#include - -#include - -#define DEFAULT_RTSP_PORT "8554" - -static char *port = (char *) DEFAULT_RTSP_PORT; - -static GOptionEntry entries[] = { - {"port", 'p', 0, G_OPTION_ARG_STRING, &port, - "Port to listen on (default: " DEFAULT_RTSP_PORT ")", "PORT"}, - {NULL} -}; - -int -main (int argc, char *argv[]) -{ - GMainLoop *loop; - GstRTSPServer *server; - GstRTSPMountPoints *mounts; - GstRTSPMediaFactory *factory; - GOptionContext *optctx; - GError *error = NULL; - - optctx = g_option_context_new (" - Test RTSP Server, Launch\n\n" - "Example: \"( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )\""); - g_option_context_add_main_entries (optctx, entries, NULL); - g_option_context_add_group (optctx, gst_init_get_option_group ()); - if (!g_option_context_parse (optctx, &argc, &argv, &error)) { - g_printerr ("Error parsing options: %s\n", error->message); - g_option_context_free (optctx); - g_clear_error (&error); - return -1; - } - g_option_context_free (optctx); - - loop = g_main_loop_new (NULL, FALSE); - - /* create a server instance */ - server = gst_rtsp_server_new (); - g_object_set (server, "service", port, NULL); - - /* get the mount points for this server, every server has a default object - * that be used to map uri mount points to media factories */ - mounts = gst_rtsp_server_get_mount_points (server); - - /* make a media factory for a test stream. The default media factory can use - * gst-launch syntax to create pipelines. - * any launch line works as long as it contains elements named pay%d. Each - * element with pay%d names will be a stream */ - factory = gst_rtsp_media_factory_new (); - gst_rtsp_media_factory_set_launch (factory, argv[1]); - gst_rtsp_media_factory_set_shared (factory, TRUE); - - /* attach the test factory to the /test url */ - gst_rtsp_mount_points_add_factory (mounts, "/robotstream", factory); - - /* don't need the ref to the mapper anymore */ - g_object_unref (mounts); - - /* attach the server to the default maincontext */ - gst_rtsp_server_attach (server, NULL); - - /* start serving */ - g_main_loop_run (loop); - - return 0; -} \ No newline at end of file diff --git a/src/camera_capture/camera_capture/camera_capture.py b/src/camera_capture/camera_capture/camera_capture.py index 3750518..68d821f 100644 --- a/src/camera_capture/camera_capture/camera_capture.py +++ b/src/camera_capture/camera_capture/camera_capture.py @@ -67,7 +67,6 @@ def __init__(self, self.pub_cam_livestream = self.create_publisher(Image, publish_livestream_topic, 1) self.sub_cam_livestream_state = self.create_subscription(Bool, livestream_state_topic, self.start_livestream_callback, 1) self.sub_cam_snapshot_trigger = self.create_subscription(Bool, snapshot_trigger_topic, self.capture_snapshot_callback, 1) - self.sub_cam_livestream_convert = self.create_subscription(Image, publish_livestream_topic, self.convert_livestream, 10) self.cap = cv2.VideoCapture(gstreamer_pipeline()) self.bridge = CvBridge() @@ -76,53 +75,25 @@ def __init__(self, # set image counter self.image_number = 0 - def hsl_livestream(self,video_width,video_height): - ffmpeg_command = [ - 'ffmpeg', - '-y', # Overschrijf uitvoerbestanden zonder bevestiging - '-f', 'rawvideo', - '-vcodec', 'rawvideo', - '-s', f'{video_width}x{video_height}', - '-pix_fmt', 'bgr24', - '-r', str(30), - '-i', '-', - '-f', 'mpegts', - 'udp://localhost:1234' # Doel-URL voor de FFmpeg-stream - ] - self.ffmpeg_process = subprocess.Popen(ffmpeg_command, stdin=subprocess.PIPE) - - def convert_livestream(self, topic_msg): - """ - host livestream on localhost:1935/live/test with cv2 and ffmpeg - """ - frame = self.bridge.imgmsg_to_cv2(topic_msg, "bgr8") - self.ffmpeg_process.stdin.write(frame.tobytes()) - # stream =cv2.imencode('.jpg', self.bridge.imgmsg_to_cv2(topic_msg, "bgr8"))[1].tobytes() - # ffmpeg_streaming.input(stream,input=".jpg").output('rtmp://localhost:1935/live/test').run() - - def start_livestream_callback(self, topic_msg): """Timer Callback Function This method starts a livestream """ - os.environ['DISPLAY']=':0' # for developing, this is needed to open up a window to show the local livestream self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_livestream"]) self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_livestream"]) self._logger.info(f'message received on topic livestream \nwith message: {topic_msg}\nwith data :{topic_msg.data}') - timer_period = 0.03 # seconds + timer_period = 0.03 # seconds TODO: make into settings 30hz if self.cap.isOpened(): self.get_logger().info('camera is available') if topic_msg.data == True: self._logger.info('starting livestream') - self.hsl_livestream(json_settings["capture_width_livestream"], json_settings["capture_height_livestream"]) self.timer = self.create_timer(timer_period, self.timer_callback) elif topic_msg.data == False: self._logger.info('stopping livestream') self.timer.cancel() self.timer.destroy() - cv2.destroyAllWindows() else: self.get_logger().info('camera not available') diff --git a/src/camera_livestream/camera_livestream/camera_livestream.py b/src/camera_livestream/camera_livestream/camera_livestream.py deleted file mode 100644 index 2699467..0000000 --- a/src/camera_livestream/camera_livestream/camera_livestream.py +++ /dev/null @@ -1,115 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""ROS2 CSI Camera Image Publisher. -This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image format. -Example: - $ colcon build --symlink-install - $ ros2 launch camera_snap_shot camera_snap_shot.launch.py -""" - -# ___Import Modules: -import os -import cv2 -import json -import numpy as np - -import rclpy -from rclpy.node import Node -from sensor_msgs.msg import Image -from ament_index_python.packages import get_package_share_directory -from std_msgs.msg import String -from cv_bridge import CvBridge - -# ___Global Variables: -SETTINGS = os.path.join(get_package_share_directory('camera_livestream'), "config/camera_livestream_settings.json") -with open(SETTINGS) as fp: - json_settings = json.load(fp) - -# __Functions: -def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), - capture_height=str(json_settings["capture_height"]), - framerate=str(json_settings["framerate"])): - return ( - "nvarguscamerasrc ! " - "video/x-raw(memory:NVMM), " - f"width=(int){capture_width}, height=(int){capture_height}, " - f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " - "nvvidconv ! " - "video/x-raw, format=(string)BGRx ! " - "videoconvert ! " - "video/x-raw, format=(string)BGR ! " - "appsink" - ) - - -# __Classes: -class CameraPublisher(Node): - """Camera Publisher Class. - This class contains all methods to publish csi camera data as - sensor_msgs.msg/Image format. - - """ - - def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=json_settings["trigger_topic"]): - super().__init__('camera_publisher') - - # initialize publisher - self.publisher_ = self.create_publisher(Image, publish_topic, 1) - self.subscription1 = self.create_subscription(String, trigger_topic, self.start_livestream, 1) - - # set image counter - self.image_number = 0 - self.bridge = CvBridge() - - def start_livestream(self): - """Timer Callback Function - - This method captures images and publishes required data in ros 2 topic. - - """ - cap = cv2.VideoCapture(gstreamer_pipeline()) - os.environ['DISPLAY']=':0' - while cap.isOpened(): - # reads image data - ret, frame = cap.read() - - - # processes image data and converts to ros 2 message - msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") - self.publisher_.publish(msg_image) - - # shows local livestream - - cv2.imshow("Video Frame", frame) - - # for debugging stops when pressing q - if cv2.waitKey(25) & 0xFF == ord('q'): - break - - cap.release() - cv2.destroyAllWindows() - - -# ___Main Method: -def main(args=None): - """ - This is the Main Method. - - """ - # initializes node and start publishing - rclpy.init(args=args) - camera_publisher = CameraPublisher() - camera_publisher.start_livestream() - rclpy.spin(camera_publisher) - - # shuts down nose and releases everything - camera_publisher.destroy_node() - rclpy.shutdown() - - return None - - -# ___Driver Program: -if __name__ == '__main__': - main() \ No newline at end of file diff --git a/src/camera_livestream/camera_livestream/temp.py b/src/camera_livestream/camera_livestream/temp.py deleted file mode 100644 index 35d0d2b..0000000 --- a/src/camera_livestream/camera_livestream/temp.py +++ /dev/null @@ -1,80 +0,0 @@ -import os -import cv2 -import json -import numpy as np - - -import rclpy -from rclpy.node import Node -from sensor_msgs.msg import Image -from ament_index_python.packages import get_package_share_directory -from std_msgs.msg import String -from std_msgs.msg import String, UInt8MultiArray, MultiArrayDimension -import random - -fp ={ - "publish_topic": "/image", - "publish_frequency": 10, - "capture_width": 720, - "capture_height": 480, - "framerate": 30, - "flip_method": 0, - "display_width": 320, - "display_height": 240, - "trigger_topic": "/camera_trigger", - "camera_trigger_message": "pressed", - "image_location": "snapshot_files" -} -json_settings = fp - - -# __Functions: -def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), - capture_height=str(json_settings["capture_height"]), - framerate=str(json_settings["framerate"])): - return ( - "nvarguscamerasrc ! " - "video/x-raw(memory:NVMM), " - f"width=(int){capture_width}, height=(int){capture_height}, " - f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " - "nvvidconv ! " - "video/x-raw, format=(string)BGRx ! " - "videoconvert ! " - "video/x-raw, format=(string)BGR ! " - "appsink" - ) -# temp_message = random.choices(range(256),k=10000) -cap = cv2.VideoCapture(gstreamer_pipeline()) -os.environ['DISPLAY']=':0' -while cap.isOpened(): - # reads image data - ret, frame = cap.read() - msg_image = UInt8MultiArray() - - # real_message = temp_message - # real_message = np.array(frame, dtype=np.uint8) - # print(frame) - # print(real_message) - - # msg_image.layout.dim.append(MultiArrayDimension()) - # msg_image.layout.dim.append(MultiArrayDimension()) - # msg_image.layout.dim.append(MultiArrayDimension()) - # msg_image.layout.dim[0].label = "height" - # msg_image.layout.dim[0].size = 1080 - # msg_image.layout.dim[0].stride = 3*1920*1080 - # msg_image.layout.dim[1].label = "width" - # msg_image.layout.dim[1].size = 1920 - # msg_image.layout.dim[1].stride = 3*1920 - # msg_image.layout.dim[2].label = "channel" - # msg_image.layout.dim[2].size = 3 - # msg_image.layout.dim[2].stride = 3 - # msg_image.layout.data_offset = 0 - msg_image.data = frame.flatten().tolist() - # msg_image.data = real_message - # processes image data and converts to ros 2 message - cv2.imshow("Video Frame", frame) - if cv2.waitKey(25) & 0xFF == ord('q'): - break - -cap.release() -cv2.destroyAllWindows() \ No newline at end of file diff --git a/src/camera_livestream/config/camera_livestream_settings.json b/src/camera_livestream/config/camera_livestream_settings.json deleted file mode 100644 index 1f82235..0000000 --- a/src/camera_livestream/config/camera_livestream_settings.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "publish_topic": "/livestream", - "capture_width": 720, - "capture_height": 480, - "framerate": 30, - "flip_method": 0, - "trigger_topic": "/livestream_trigger" -} \ No newline at end of file diff --git a/src/camera_livestream/launch/camera_livestream.launch.py b/src/camera_livestream/launch/camera_livestream.launch.py deleted file mode 100644 index dcca9da..0000000 --- a/src/camera_livestream/launch/camera_livestream.launch.py +++ /dev/null @@ -1,39 +0,0 @@ -import pathlib - -from ament_index_python.packages import get_package_share_directory -from launch import LaunchDescription -from launch.conditions import IfCondition -from launch.actions import DeclareLaunchArgument -from launch.substitutions import LaunchConfiguration, TextSubstitution -from launch_ros.actions import Node - -from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument -from launch.actions import IncludeLaunchDescription -from launch.actions import GroupAction -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import LaunchConfiguration -from launch.substitutions import TextSubstitution -from launch_ros.actions import Node -from launch_ros.actions import PushRosNamespace - -DEFAULT_CONFIG_PATH = str(pathlib.Path(f"{get_package_share_directory('camera_livestream')}/config/camera_livestream.json")) - - -def generate_launch_description() -> LaunchDescription: - # args that can be set from the command line or a default will be used - config_file_arg = DeclareLaunchArgument( - "config_file", default_value=TextSubstitution(text=DEFAULT_CONFIG_PATH) - ) - # start a turtlesim_node in the turtlesim1 namespace - camera_livestream = Node( - package='camera_livestream', - # namespace='turtlesim2', - executable='camera_livestream', - name='sim', - ) - - return LaunchDescription([ - # launch_include, - camera_livestream, - ]) diff --git a/src/camera_livestream/setup.cfg b/src/camera_livestream/setup.cfg deleted file mode 100644 index db9a262..0000000 --- a/src/camera_livestream/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[develop] -script_dir=$base/lib/camera_livestream -[install] -install_scripts=$base/lib/camera_livestream diff --git a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py b/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py deleted file mode 100644 index 99b15a1..0000000 --- a/src/camera_snap_shot/camera_snap_shot/take_snap_shot.py +++ /dev/null @@ -1,124 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""ROS2 CSI Camera Image Publisher. -This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image format. -Example: - $ colcon build --symlink-install - $ ros2 launch camera_snap_shot camera_snap_shot.launch.py -""" - -# ___Import Modules: -import os -import cv2 -import json -import numpy as np - -import rclpy -from rclpy.node import Node -from sensor_msgs.msg import Image -from ament_index_python.packages import get_package_share_directory -from std_msgs.msg import String - -# ___Global Variables: -SETTINGS = os.path.join(get_package_share_directory('camera_snap_shot'), "config/camera_snap_shot_settings.json") -with open(SETTINGS) as fp: - json_settings = json.load(fp) - -# __Functions: -def gstreamer_pipeline(capture_width=str(json_settings["capture_width"]), - capture_height=str(json_settings["capture_height"]), - framerate=str(json_settings["framerate"])): - return ( - "nvarguscamerasrc ! " - "video/x-raw(memory:NVMM), " - f"width=(int){capture_width}, height=(int){capture_height}, " - f"format=(string)NV12, framerate=(fraction){framerate}/1 ! " - "nvvidconv ! " - "video/x-raw, format=(string)BGRx ! " - "videoconvert ! " - "video/x-raw, format=(string)BGR ! " - "appsink" - ) - - -# __Classes: -class CameraPublisher(Node): - """Camera Publisher Class. - This class contains all methods to publish csi camera data as - sensor_msgs.msg/Image format. - - """ - - def __init__(self, publish_topic=json_settings["publish_topic"], trigger_topic=json_settings["trigger_topic"]): - super().__init__('camera_publisher') - - # initialize publisher - self.publisher_ = self.create_publisher(Image, publish_topic, 1) - self.subscription1 = self.create_subscription(String, trigger_topic, self.capture_image, 1) - - # set image counter - self.image_number = 0 - - def capture_image(self, msg): - """Timer Callback Function - - This method captures images and publishes required data in ros 2 topic. - - """ - cap = cv2.VideoCapture(gstreamer_pipeline()) - - if cap.isOpened(): - # reads image data - ret, frame = cap.read() - - # processes image data and converts to ros 2 message - msg_image = Image() - msg_image.header.stamp = Node.get_clock(self).now().to_msg() - msg_image.header.frame_id = str(self.image_number) - msg_image.height = np.shape(frame)[0] - msg_image.width = np.shape(frame)[1] - msg_image.encoding = "bgr8" - msg_image.is_bigendian = False - msg_image.step = np.shape(frame)[2] * np.shape(frame)[1] - msg_image.data = np.array(frame).tobytes() - - # if message is correct, publish & save image - if msg.data == json_settings["camera_trigger_message"]: - image_location = f"{json_settings['image_location']}/image{self.image_number}.jpg" - cv2.imwrite(image_location, frame) - self.publisher_.publish(msg_image) - self.get_logger().info(f'image saved at image{self.image_number}.jpg') - cap.release() - # image counter increment - self.image_number += 1 - if self.image_number >4: - item_to_delete = f"{json_settings['image_location']}/image{self.image_number-5}.jpg" - if os.path.exists(item_to_delete): - os.remove(item_to_delete) - - - return None - - -# ___Main Method: -def main(args=None): - """ - This is the Main Method. - - """ - # initializes node and start publishing - rclpy.init(args=args) - camera_publisher = CameraPublisher() - rclpy.spin(camera_publisher) - - # shuts down nose and releases everything - camera_publisher.destroy_node() - rclpy.shutdown() - - return None - - -# ___Driver Program: -if __name__ == '__main__': - main() diff --git a/src/camera_snap_shot/config/camera_snap_shot_settings.json b/src/camera_snap_shot/config/camera_snap_shot_settings.json deleted file mode 100644 index 4104922..0000000 --- a/src/camera_snap_shot/config/camera_snap_shot_settings.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "publish_topic": "/image", - "publish_frequency": 10, - "capture_width": 1920, - "capture_height": 1080, - "framerate": 30, - "flip_method": 0, - "display_width": 320, - "display_height": 240, - "trigger_topic": "/camera_trigger", - "camera_trigger_message": "pressed", - "image_location": "snapshot_files" -} \ No newline at end of file diff --git a/src/camera_snap_shot/launch/camera_snap_shot.launch.py b/src/camera_snap_shot/launch/camera_snap_shot.launch.py deleted file mode 100644 index 56b1a6d..0000000 --- a/src/camera_snap_shot/launch/camera_snap_shot.launch.py +++ /dev/null @@ -1,38 +0,0 @@ -import pathlib - -from ament_index_python.packages import get_package_share_directory -from launch import LaunchDescription -from launch.conditions import IfCondition -from launch.actions import DeclareLaunchArgument -from launch.substitutions import LaunchConfiguration, TextSubstitution -from launch_ros.actions import Node - -from launch import LaunchDescription -from launch.actions import DeclareLaunchArgument -from launch.actions import IncludeLaunchDescription -from launch.actions import GroupAction -from launch.launch_description_sources import PythonLaunchDescriptionSource -from launch.substitutions import LaunchConfiguration -from launch.substitutions import TextSubstitution -from launch_ros.actions import Node -from launch_ros.actions import PushRosNamespace - -DEFAULT_CONFIG_PATH = str(pathlib.Path(f"{get_package_share_directory('camera_snap_shot')}/config/camera_snap_shot_settings.json")) - - -def generate_launch_description() -> LaunchDescription: - # args that can be set from the command line or a default will be used - config_file_arg = DeclareLaunchArgument( - "config_file", default_value=TextSubstitution(text=DEFAULT_CONFIG_PATH) - ) - # start a turtlesim_node in the turtlesim1 namespace - camera_snap_shot = Node( - package='camera_snap_shot', - executable='take_snap_shot', - name='sim', - ) - - return LaunchDescription([ - # launch_include, - camera_snap_shot, - ]) diff --git a/src/camera_snap_shot/resource/camera_snap_shot b/src/camera_snap_shot/resource/camera_snap_shot deleted file mode 100644 index e69de29..0000000 diff --git a/src/camera_snap_shot/setup.cfg b/src/camera_snap_shot/setup.cfg deleted file mode 100644 index 27efca9..0000000 --- a/src/camera_snap_shot/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[develop] -script_dir=$base/lib/camera_snap_shot -[install] -install_scripts=$base/lib/camera_snap_shot diff --git a/src/robot_app/launch/gamepad_launch.py b/src/robot_app/launch/gamepad_launch.py index 401d02e..c7235b0 100644 --- a/src/robot_app/launch/gamepad_launch.py +++ b/src/robot_app/launch/gamepad_launch.py @@ -18,11 +18,14 @@ #___Import Modules: from launch import LaunchDescription +import pathlib # from launch.conditions import IfCondition +from ament_index_python.packages import get_package_share_directory from launch.conditions import LaunchConfigurationEquals -from launch.actions import DeclareLaunchArgument +from launch.actions import DeclareLaunchArgument, IncludeLaunchDescription from launch.substitutions import LaunchConfiguration from launch_ros.actions import Node +from launch.launch_description_sources import PythonLaunchDescriptionSource #___Function: @@ -69,6 +72,13 @@ def generate_launch_description(): executable = 'camera_capture', name = 'camera_capture') + # Include other launch files + HSL_launch = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + str(pathlib.Path(f"{get_package_share_directory('ros_to_livestream')}/launch/HSL.launch.py")) + ), + ) + # snapshot_mode_cmd = Node( # condition = LaunchConfigurationEquals('robot_mode', 'snapshot'), # package = 'camera_snap_shot', @@ -111,6 +121,7 @@ def generate_launch_description(): # Add all actions ld.add_action(gamepad_to_twist_cmd) ld.add_action(livestream_mode_cmd) + ld.add_action(HSL_launch) # ld.add_action(snapshot_mode_cmd) ld.add_action(twist_to_motion_cmd) # ld.add_action(cam2image_cmd) diff --git a/src/ros2_csi_camera_publish/README.md b/src/ros2_csi_camera_publish/README.md deleted file mode 100644 index 9f49b06..0000000 --- a/src/ros2_csi_camera_publish/README.md +++ /dev/null @@ -1,48 +0,0 @@ -

-

ROS 2 CSI Camera Image Publish Package for Jetson Nano

-

- -

-ROS 2 Package to Publish CSI Camera Image as sensor_msgs/Image message on Jetson Nano. -

- - -## Colaborators -[Animesh Bala Ani](https://www.linkedin.com/in/ani717/) - -## Table of Contents -* [Install Dependency](#install)
-* [Build, Source & Run Package](#run)
-* [Settings](#set)
- - -## Install Dependency -Install ROS2 dependency.
-``` -sudo apt-get update -rosdep update -rosdep install --from-paths src --ignore-src -r -y -``` - - -## Build, Source & Run Package -``` -colcon build --symlink-install --packages-select ros2_csi_camera_publish -source install/local_setup.bash -ros2 run ros2_csi_camera_publish jetson -``` -``` -colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_csi_camera_publish jetson -``` - - -## Settings -Edit `settings.json` file to assign `publish_topic`, `publish frequency`, `capture_width`, `capture_height`, `framerate`, `flip_method`, `display_width` and `display_height`.
-Default `publish_topic`:`\image`
-Default `publish frequency`:`100`
-Default `capture_width`:`320`
-Default `capture_height`:`240`
-Default `framerate`:`30`
-Default `flip_method`:`0`
-Default `display_width`:`320`
-Default `display_height`:`240`
diff --git a/src/ros2_csi_camera_publish/package.xml b/src/ros2_csi_camera_publish/package.xml deleted file mode 100644 index 70d3071..0000000 --- a/src/ros2_csi_camera_publish/package.xml +++ /dev/null @@ -1,22 +0,0 @@ - - - - ros2_csi_camera_publish - 1.0.0 - Package to Publish CSI Camera Data in ROS 2 Topic - ANI717 (Animesh Bala Ani) - MIT License - - rclpy - sensor_msgs - ament_index_python - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - diff --git a/src/ros2_csi_camera_publish/resource/ros2_csi_camera_publish b/src/ros2_csi_camera_publish/resource/ros2_csi_camera_publish deleted file mode 100644 index e69de29..0000000 diff --git a/src/ros2_csi_camera_publish/ros2_csi_camera_publish/jetson.py b/src/ros2_csi_camera_publish/ros2_csi_camera_publish/jetson.py deleted file mode 100644 index 4a85fcd..0000000 --- a/src/ros2_csi_camera_publish/ros2_csi_camera_publish/jetson.py +++ /dev/null @@ -1,81 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""ROS2 CSI Camera Image Publisher. - -This script publishes csi camera image to a ROS2 topic in sensor_msgs.msg/Image -format. And starts rtmp stream to rtmp://localhost;1935/live/stream - -Example: - $ colcon build --symlink-install && source install/local_setup.bash && ros2 run ros2_csi_camera_publish jetson - $ source install/local_setup.bash && ros2 run ros2_csi_camera_publish jetson - $ ros2 run ros2_csi_camera_publish jetson - -""" - -# ___Import Modules: -import os -import nanocamera as nano -import json -import numpy as np -import subprocess -import socket - -import rclpy -from rclpy.node import Node -from sensor_msgs.msg import Image -from ament_index_python.packages import get_package_share_directory - -# ___Global Variables: -SETTINGS = os.path.join(get_package_share_directory('ros2_csi_camera_publish'), "settings.json") - - -# __Classes: -class CameraPublisher(Node): - - def __init__(self): - super().__init__('camera_publisher') - self.create_livestream() - - - def create_livestream(self): - try: - subprocess.Popen(["./host_rtsp_server", "nvarguscamerasrc ! nvvidconv ! nvv4l2h264enc ! h264parse ! rtph264pay name=pay0 pt=96",str(self.get_ip_address())], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) - except Exception as e: - print("failed to set up rtsp server error :\n {e}") - - - def get_ip_address(self): - cmd = "ifconfig %s | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'" % 'wlan0' - return subprocess.check_output(cmd, shell=True).decode('ascii')[:-1] - - -# ___Main Method: -def main(args=None): - - with open(SETTINGS) as fp: - content = json.load(fp) - publish_topic = content["publish_topic"] - publish_frequency = content["publish_frequency"] - capture_width = content["capture_width"] - capture_height = content["capture_height"] - framerate = content["framerate"] - flip_method = content["flip_method"] - display_width = content["display_width"] - display_height = content["display_height"] - - rclpy.init(args=args) - livestream = CameraPublisher() - rclpy.spin(livestream) - - livestream.destroy_node() - rclpy.shutdown() - - -# ___Driver Program: -if __name__ == '__main__': - main() - -# -# end of file -"""ORDINA""" diff --git a/src/ros2_csi_camera_publish/settings.json b/src/ros2_csi_camera_publish/settings.json deleted file mode 100644 index 2e3bc9b..0000000 --- a/src/ros2_csi_camera_publish/settings.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "publish_topic": "/image", - "publish_frequency": 100, - "capture_width": 1920, - "capture_height": 1080, - "framerate": 30, - "flip_method": 0, - "display_width": 320, - "display_height": 240 -} \ No newline at end of file diff --git a/src/ros2_csi_camera_publish/setup.cfg b/src/ros2_csi_camera_publish/setup.cfg deleted file mode 100644 index b347af7..0000000 --- a/src/ros2_csi_camera_publish/setup.cfg +++ /dev/null @@ -1,4 +0,0 @@ -[develop] -script_dir=$base/lib/ros2_csi_camera_publish -[install] -install_scripts=$base/lib/ros2_csi_camera_publish diff --git a/src/ros2_csi_camera_publish/setup.py b/src/ros2_csi_camera_publish/setup.py deleted file mode 100644 index d0d12ea..0000000 --- a/src/ros2_csi_camera_publish/setup.py +++ /dev/null @@ -1,28 +0,0 @@ -from setuptools import setup -from glob import glob - -package_name = 'ros2_csi_camera_publish' - -setup( - name=package_name, - version='1.0.0', - packages=[package_name], - data_files=[ - ('share/ament_index/resource_index/packages', - ['resource/' + package_name]), - ('share/' + package_name, ['package.xml']), - ('share/' + package_name, ['settings.json']), - ], - install_requires=['setuptools'], - zip_safe=True, - maintainer='ANI717 (Animesh Bala Ani)', - maintainer_email='animesh.ani@live.com', - description='Package to Publish CSI Camera Data in ROS 2 Topic', - license='MIT License', - tests_require=['pytest'], - entry_points={ - 'console_scripts': [ - 'jetson = ros2_csi_camera_publish.jetson:main', - ], - }, -) diff --git a/src/ros2_csi_camera_publish/test/test_copyright.py b/src/ros2_csi_camera_publish/test/test_copyright.py deleted file mode 100644 index cc8ff03..0000000 --- a/src/ros2_csi_camera_publish/test/test_copyright.py +++ /dev/null @@ -1,23 +0,0 @@ -# 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 - - -@pytest.mark.copyright -@pytest.mark.linter -def test_copyright(): - rc = main(argv=['.', 'test']) - assert rc == 0, 'Found errors' diff --git a/src/ros2_csi_camera_publish/test/test_flake8.py b/src/ros2_csi_camera_publish/test/test_flake8.py deleted file mode 100644 index eff8299..0000000 --- a/src/ros2_csi_camera_publish/test/test_flake8.py +++ /dev/null @@ -1,23 +0,0 @@ -# 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 -import pytest - - -@pytest.mark.flake8 -@pytest.mark.linter -def test_flake8(): - rc = main(argv=[]) - assert rc == 0, 'Found errors' diff --git a/src/ros2_csi_camera_publish/test/test_pep257.py b/src/ros2_csi_camera_publish/test/test_pep257.py deleted file mode 100644 index b234a38..0000000 --- a/src/ros2_csi_camera_publish/test/test_pep257.py +++ /dev/null @@ -1,23 +0,0 @@ -# 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/ros_to_livestream/config/settings.json b/src/ros_to_livestream/config/settings.json new file mode 100644 index 0000000..8ec8208 --- /dev/null +++ b/src/ros_to_livestream/config/settings.json @@ -0,0 +1,10 @@ +{ + "topic_camera": "/camera", + "camera_id": "/cam_0", + "topic_livestream": "/livestream", + "image_width": 720, + "image_height": 480, + "framerate": 33, + "queue_size": 10 + +} \ No newline at end of file diff --git a/src/ros_to_livestream/config/settings.yaml b/src/ros_to_livestream/config/settings.yaml new file mode 100644 index 0000000..a26df91 --- /dev/null +++ b/src/ros_to_livestream/config/settings.yaml @@ -0,0 +1,14 @@ + +livestream_topic: + base: "/camera" + camera_id: + - "id_0" + type: "/livestream" + state: "/state" +temp_topic: /temp +image_width: 720 +image_height: 480 +queue_size: 10 +framerate: 30 + + diff --git a/src/ros_to_livestream/launch/HSL.launch.py b/src/ros_to_livestream/launch/HSL.launch.py new file mode 100644 index 0000000..655f70f --- /dev/null +++ b/src/ros_to_livestream/launch/HSL.launch.py @@ -0,0 +1,34 @@ +import json +import pathlib + + +from ament_index_python.packages import get_package_share_directory +from launch import LaunchDescription +from launch.actions import IncludeLaunchDescription, LogInfo +from launch.launch_description_sources import PythonLaunchDescriptionSource +from launch.substitutions import LaunchConfiguration +from launch_ros.actions import Node + +DEFAULT_CONFIG_PATH = str(pathlib.Path(f"{get_package_share_directory('ros_to_livestream')}/config/settings.json")) + + +def generate_launch_description() -> LaunchDescription: + with open(DEFAULT_CONFIG_PATH, "r") as config_file: + configuration = json.load(config_file) + + + # Define launch arguments that can be set from the command line using + # ":=". If no value is give, the default is used. + # configuration["message"] = LaunchConfiguration("message", default=configuration["message"]) + + # Create nodes + HSL_node = Node( + package="ros_to_livestream", + executable="HSL", + name="ros_to_livestream", + parameters=[configuration], + ) + + return LaunchDescription([ + HSL_node, + ]) diff --git a/src/camera_snap_shot/package.xml b/src/ros_to_livestream/package.xml similarity index 70% rename from src/camera_snap_shot/package.xml rename to src/ros_to_livestream/package.xml index d315861..6860689 100644 --- a/src/camera_snap_shot/package.xml +++ b/src/ros_to_livestream/package.xml @@ -1,23 +1,23 @@ - - - - camera_snap_shot - 1.0.0 - ros_skeleton - raymond houwing - MIT License - - ament_index_python - rclpy - sensor_msgs - cv_bridge - - ament_copyright - ament_flake8 - ament_pep257 - python3-pytest - - - ament_python - - + + + + ros_to_livestream + 1.0.0 + converts a livestream Ros topic to a HSL livestream + Raymond Houwing + MIT License + + ament_index_python + rclpy + std_msgs + support + + ament_copyright + ament_flake8 + ament_pep257 + python3-pytest + + + ament_python + + diff --git a/src/camera_livestream/camera_livestream/__init__.py b/src/ros_to_livestream/requirements.in similarity index 100% rename from src/camera_livestream/camera_livestream/__init__.py rename to src/ros_to_livestream/requirements.in diff --git a/src/camera_livestream/resource/camera_livestream b/src/ros_to_livestream/resource/ros_to_livestream similarity index 100% rename from src/camera_livestream/resource/camera_livestream rename to src/ros_to_livestream/resource/ros_to_livestream diff --git a/src/ros_to_livestream/ros_to_livestream/HSL.py b/src/ros_to_livestream/ros_to_livestream/HSL.py new file mode 100644 index 0000000..11e90e0 --- /dev/null +++ b/src/ros_to_livestream/ros_to_livestream/HSL.py @@ -0,0 +1,91 @@ +"""Create an example subscriber. + +Create a node named "example_subscriber" and initialise a subscriber. The topic and +queue_size of the subscriber are taken from their respective parameters. These +parameters are passed in the launch file. + +A callback function is defined, which handles the incoming message. + +""" +from __future__ import annotations +from typing import Optional +import subprocess +import cv2 +import os +import sys + + +import rclpy +from sensor_msgs.msg import Image +from support.extended_node import ExtendedNode +from cv_bridge import CvBridge +import ffmpeg_streaming +from ffmpeg_streaming import Formats, Bitrate, Representation, Size + +from . import PACKAGE_NAME + + +class ExampleSubscriber(ExtendedNode): + def __init__(self): + super().__init__(PACKAGE_NAME) + base = self._get_parameter_value("topic_camera") + cam_id = self._get_parameter_value("camera_id") + livestream = self._get_parameter_value("topic_livestream") + topic: str = base + cam_id + livestream + self.framerate: int = self._get_parameter_value("framerate") + self.image_width: int = self._get_parameter_value("image_width") + self.image_height: int = self._get_parameter_value("image_height") + + self.fourcc = cv2.VideoWriter_fourcc(*'mp4v') + + self.first_time = True + + self.get_logger().info(f"topic: {topic}") + queue_size: int = self._get_parameter_value("queue_size") + self.subscription = self.create_subscription(Image, topic, self.listener_callback, queue_size) + # self.create_ffmpeg_process(self.image_width,self.image_height) + self.bridge = CvBridge() + os.environ['DISPLAY']=':0' # for developing, this is needed to open up a window to show the local livestream + # self.setup_HSL_stream() + + + + def listener_callback(self, msg: Image) -> None: + """Handle incoming message from subscription.""" + # self.get_logger().info(f"I heard: {msg.data}") + frame = self.bridge.imgmsg_to_cv2(msg, "bgr8") + self.out = cv2.VideoWriter('livestream/output.mp4', self.fourcc, self.framerate, (self.image_width, self.image_height)) + self.out.write(frame) + self.out.release() + cv2.imshow("frame", frame) + cv2.waitKey(1) + if self.first_time: + self.setup_HSL_stream() + self.first_time = False + + + + + + + def setup_HSL_stream(self): + video_file = "livestream/output.mp4" + video= ffmpeg_streaming.input(video_file, capture = True, framerate=self.framerate, vcodec="h264", acodec="aac") + hsl = video.hls(Formats.h264()) + _720p = Representation(Size(720, 480), Bitrate(overall=497664)) + hsl.representations(_720p) + hsl.output('livestream/hsl.m3u8') + + + +def main(args: Optional[list[str]] = None) -> None: + rclpy.init(args=args) + node = ExampleSubscriber() + rclpy.spin(node) + + node.destroy_node() + rclpy.shutdown() + + +if __name__ == "__main__": + main() diff --git a/src/ros_to_livestream/ros_to_livestream/__init__.py b/src/ros_to_livestream/ros_to_livestream/__init__.py new file mode 100644 index 0000000..e2556c3 --- /dev/null +++ b/src/ros_to_livestream/ros_to_livestream/__init__.py @@ -0,0 +1 @@ +PACKAGE_NAME: str = "ros_skeleton" diff --git a/src/ros_to_livestream/setup.cfg b/src/ros_to_livestream/setup.cfg new file mode 100644 index 0000000..c1dc81b --- /dev/null +++ b/src/ros_to_livestream/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/ros_to_livestream +[install] +install_scripts=$base/lib/ros_to_livestream diff --git a/src/camera_livestream/setup.py b/src/ros_to_livestream/setup.py similarity index 95% rename from src/camera_livestream/setup.py rename to src/ros_to_livestream/setup.py index 54b1395..78f55cd 100644 --- a/src/camera_livestream/setup.py +++ b/src/ros_to_livestream/setup.py @@ -4,6 +4,7 @@ def get_value_from_string(string: str, prefix: str, suffix: str): + """Get value from line of package.xml.""" value = "" if string.startswith(prefix) and string.endswith(suffix): value = string[len(prefix):][:-len(suffix)] @@ -44,7 +45,7 @@ def get_value_from_string(string: str, prefix: str, suffix: str): tests_require=['pytest'], entry_points={ 'console_scripts': [ - 'camera_livestream = camera_livestream.camera_livestream:main' + 'HSL = ros_to_livestream.HSL:main', ], }, ) diff --git a/src/camera_livestream/package.xml b/src/support/package.xml similarity index 72% rename from src/camera_livestream/package.xml rename to src/support/package.xml index 9486978..01f687c 100644 --- a/src/camera_livestream/package.xml +++ b/src/support/package.xml @@ -1,16 +1,15 @@ - camera_livestream + support 1.0.0 - camera_livestream - raymond houwing + Package containing supporting code for use in other ROS packages. + Wim-Peter Dirks MIT License ament_index_python rclpy - sensor_msgs - cv_bridge + std_msgs ament_copyright ament_flake8 diff --git a/src/camera_snap_shot/__init__.py b/src/support/requirements.in similarity index 100% rename from src/camera_snap_shot/__init__.py rename to src/support/requirements.in diff --git a/src/camera_snap_shot/camera_snap_shot/__init__.py b/src/support/resource/support similarity index 100% rename from src/camera_snap_shot/camera_snap_shot/__init__.py rename to src/support/resource/support diff --git a/src/support/setup.cfg b/src/support/setup.cfg new file mode 100644 index 0000000..ffbdd06 --- /dev/null +++ b/src/support/setup.cfg @@ -0,0 +1,4 @@ +[develop] +script_dir=$base/lib/support +[install] +install_scripts=$base/lib/support diff --git a/src/camera_snap_shot/setup.py b/src/support/setup.py similarity index 90% rename from src/camera_snap_shot/setup.py rename to src/support/setup.py index c1d0a34..da60fed 100644 --- a/src/camera_snap_shot/setup.py +++ b/src/support/setup.py @@ -1,50 +1,49 @@ -from glob import glob -from pathlib import Path -from setuptools import setup - - -def get_value_from_string(string: str, prefix: str, suffix: str): - value = "" - if string.startswith(prefix) and string.endswith(suffix): - value = string[len(prefix):][:-len(suffix)] - return value - - -with open(Path(__file__).parent / 'package.xml', 'r') as xml_file: - for line in xml_file.readlines(): - if line.startswith(' ') and line.endswith('\n'): - package_name = get_value_from_string(line, ' ', '\n') - elif line.startswith(' ') and line.endswith('\n'): - version = get_value_from_string(line, ' ', '\n') - elif line.startswith(' ') and line.endswith('\n'): - description = get_value_from_string(line, ' ', '\n') - elif line.startswith(' \n'): - line = get_value_from_string(line, ' ') - elif line.startswith(' ') and line.endswith('\n'): - project_license = get_value_from_string(line, ' ', '\n') - - -setup( - name=package_name, - version=version, - packages=[package_name], - data_files=[ - (str(Path('share/ament_index/resource_index/packages')), [str(Path(f'resource/{package_name}'))]), - (str(Path(f'share/{package_name}/config')), glob(str(Path('config/*')))), - (str(Path(f'share/{package_name}/launch')), glob(str(Path('launch/*.launch.py')))), - (str(Path(f'share/{package_name}')), ['package.xml']), - ], - install_requires=['setuptools'], - zip_safe=True, - maintainer=maintainer, - maintainer_email=maintainer_email, - description=description, - license=project_license, - tests_require=['pytest'], - entry_points={ - 'console_scripts': [ - 'take_snap_shot = camera_snap_shot.take_snap_shot:main' - ], - }, -) +from glob import glob +from pathlib import Path +from setuptools import setup + + +def get_value_from_string(string: str, prefix: str, suffix: str): + """Get value from line of package.xml.""" + value = "" + if string.startswith(prefix) and string.endswith(suffix): + value = string[len(prefix):][:-len(suffix)] + return value + + +with open(Path(__file__).parent / 'package.xml', 'r') as xml_file: + for line in xml_file.readlines(): + if line.startswith(' ') and line.endswith('\n'): + package_name = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + version = get_value_from_string(line, ' ', '\n') + elif line.startswith(' ') and line.endswith('\n'): + description = get_value_from_string(line, ' ', '\n') + elif line.startswith(' \n'): + line = get_value_from_string(line, ' ') + elif line.startswith(' ') and line.endswith('\n'): + project_license = get_value_from_string(line, ' ', '\n') + + +setup( + name=package_name, + version=version, + packages=[package_name], + data_files=[ + (str(Path('share/ament_index/resource_index/packages')), [str(Path(f'resource/{package_name}'))]), + (str(Path(f'share/{package_name}/launch')), glob(str(Path('launch/*.launch.py')))), + (str(Path(f'share/{package_name}')), ['package.xml']), + ], + install_requires=['setuptools'], + zip_safe=True, + maintainer=maintainer, + maintainer_email=maintainer_email, + description=description, + license=project_license, + tests_require=['pytest'], + entry_points={ + 'console_scripts': [ + ], + }, +) diff --git a/src/support/support/__init__.py b/src/support/support/__init__.py new file mode 100644 index 0000000..e2556c3 --- /dev/null +++ b/src/support/support/__init__.py @@ -0,0 +1 @@ +PACKAGE_NAME: str = "ros_skeleton" diff --git a/src/support/support/extended_node.py b/src/support/support/extended_node.py new file mode 100644 index 0000000..b87dc85 --- /dev/null +++ b/src/support/support/extended_node.py @@ -0,0 +1,32 @@ +"""Extend the standard ROS2 Node to improve ease-of-use. + +The ExtendedNode-class adds a _extract_parameter_value()-method, which can be +used to easily extract the value of a parameter. + +""" +from typing import Any + +from rclpy.node import Node +from rclpy.parameter import Parameter + + +class ExtendedNode(Node): + def __init__(self, package_name: str): + super().__init__(package_name) + + def _get_parameter_value(self, parameter_name: str) -> Any: + """Return the value of a parameter. + + Raises a ValueError if a parameter cannot be found. + + """ + if not self.has_parameter(parameter_name): + self.declare_parameter(parameter_name) + + parameter = self.get_parameter(parameter_name) + parameter_value = parameter.value + + if parameter.type_ == Parameter.Type.NOT_SET: + raise ValueError(f"parameter '{parameter_name}' is not set") + + return parameter_value diff --git a/src/support/support/rclpy_mixin.py b/src/support/support/rclpy_mixin.py new file mode 100644 index 0000000..5c2910e --- /dev/null +++ b/src/support/support/rclpy_mixin.py @@ -0,0 +1,11 @@ +import rclpy + + +class RclpyMixin: + @staticmethod + def setup_method(): + rclpy.init() + + @staticmethod + def teardown_method(): + rclpy.shutdown() diff --git a/src/ros2_csi_camera_publish/ros2_csi_camera_publish/__init__.py b/src/support/test/__init__.py similarity index 100% rename from src/ros2_csi_camera_publish/ros2_csi_camera_publish/__init__.py rename to src/support/test/__init__.py diff --git a/src/support/test/test_extended_node.py b/src/support/test/test_extended_node.py new file mode 100644 index 0000000..1fe9291 --- /dev/null +++ b/src/support/test/test_extended_node.py @@ -0,0 +1,28 @@ +import pytest +from rclpy.node import Node + +from support.extended_node import ExtendedNode +from support.rclpy_mixin import RclpyMixin + + +def test_extended_node_extends_rclpy_node(): + assert issubclass(ExtendedNode, Node) + + +class TestGetParameterValue(RclpyMixin): + def test_extracts_value_if_parameter_exists(self): + parameter_name = "name" + parameter_value = "value" + node = ExtendedNode("package_name") + node.declare_parameter(parameter_name, parameter_value) + + actual_value = node._get_parameter_value(parameter_name) + + assert actual_value == parameter_value + + def test_raises_value_error_if_parameter_not_found(self): + parameter_name = "name" + node = ExtendedNode("package_name") + + with pytest.raises(ValueError): + node._get_parameter_value(parameter_name) From 42551c5fa85c96f40837c03199147a1ff818e054 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Fri, 12 May 2023 11:38:26 +0200 Subject: [PATCH 13/16] black & docstrings --- .gitignore | 5 +- FastAPI/hosting_server.py | 4 +- src/camera_capture/camera_capture/__init__.py | 1 + .../camera_capture/camera_capture.py | 186 +++++++++++------- src/ros_to_livestream/config/settings.yaml | 1 - .../ros_to_livestream/HSL.py | 44 +++-- .../ros_to_livestream/__init__.py | 2 +- 7 files changed, 141 insertions(+), 102 deletions(-) diff --git a/.gitignore b/.gitignore index 7ab509b..09b75ae 100644 --- a/.gitignore +++ b/.gitignore @@ -65,5 +65,8 @@ About /venv/ /.idea/ +.vscode/ log/ -install/ \ No newline at end of file +install/ +livestream/ +snapshot_files/ diff --git a/FastAPI/hosting_server.py b/FastAPI/hosting_server.py index a8b8177..1a9575f 100644 --- a/FastAPI/hosting_server.py +++ b/FastAPI/hosting_server.py @@ -8,5 +8,5 @@ async def main(): def iter_file(): with open("livestream/output.mp4", mode="rb") as stream_file: yield from stream_file - # return StreamingResponse(iter_file(), media_type='text/event-stream') - return StreamingResponse(iter_file(), media_type='video/mp4') \ No newline at end of file + return StreamingResponse(iter_file(), media_type='text/event-stream') + # return StreamingResponse(iter_file(), media_type='video/mp4') \ No newline at end of file diff --git a/src/camera_capture/camera_capture/__init__.py b/src/camera_capture/camera_capture/__init__.py index e69de29..90a49ce 100644 --- a/src/camera_capture/camera_capture/__init__.py +++ b/src/camera_capture/camera_capture/__init__.py @@ -0,0 +1 @@ +PACKAGE_NAME: str = "camera_capture" \ No newline at end of file diff --git a/src/camera_capture/camera_capture/camera_capture.py b/src/camera_capture/camera_capture/camera_capture.py index 68d821f..70cca9d 100644 --- a/src/camera_capture/camera_capture/camera_capture.py +++ b/src/camera_capture/camera_capture/camera_capture.py @@ -22,17 +22,23 @@ from cv_bridge import CvBridge import ffmpeg_streaming import subprocess +from . import PACKAGE_NAME # ___Global Variables: -SETTINGS = os.path.join(get_package_share_directory('camera_capture'), "config/camera_capture_settings.json") +SETTINGS = os.path.join( + get_package_share_directory("camera_capture"), "config/camera_capture_settings.json" +) with open(SETTINGS) as fp: json_settings = json.load(fp) + # __Functions: -def gstreamer_pipeline(capture_width=str(json_settings["capture_width_livestream"]), - capture_height=str(json_settings["capture_width_livestream"]), - framerate=str(json_settings["framerate"])): +def gstreamer_pipeline( + capture_width: str = str(json_settings["capture_width_livestream"]), + capture_height: str = str(json_settings["capture_width_livestream"]), + framerate: str = str(json_settings["framerate"]), +): return ( "nvarguscamerasrc ! " "video/x-raw(memory:NVMM), " @@ -48,129 +54,157 @@ def gstreamer_pipeline(capture_width=str(json_settings["capture_width_livestream # __Classes: class CameraPublisher(Node): - """Camera Publisher Class. - This class contains all methods to publish csi camera data as - sensor_msgs.msg/Image format. - - """ + """this class captures immages from a CSI camera and publishes it as a livestream or snapshots to a topic""" - def __init__(self, - publish_livestream_topic:str, - publish_snapshot_topic:str, - snapshot_trigger_topic:str, - livestream_state_topic:str - ): - super().__init__('camera_publisher') + def __init__( + self, + publish_livestream_topic: str, + publish_snapshot_topic: str, + snapshot_trigger_topic: str, + livestream_state_topic: str, + ): + super().__init__(PACKAGE_NAME) # initialize publisher & subscirbers self.pub_cam_snapshot = self.create_publisher(Image, publish_snapshot_topic, 1) - self.pub_cam_livestream = self.create_publisher(Image, publish_livestream_topic, 1) - self.sub_cam_livestream_state = self.create_subscription(Bool, livestream_state_topic, self.start_livestream_callback, 1) - self.sub_cam_snapshot_trigger = self.create_subscription(Bool, snapshot_trigger_topic, self.capture_snapshot_callback, 1) + self.pub_cam_livestream = self.create_publisher( + Image, publish_livestream_topic, 1 + ) + self.sub_cam_livestream_state = self.create_subscription( + Bool, livestream_state_topic, self.start_livestream_callback, 1 + ) + self.sub_cam_snapshot_trigger = self.create_subscription( + Bool, snapshot_trigger_topic, self.capture_snapshot_callback, 1 + ) self.cap = cv2.VideoCapture(gstreamer_pipeline()) self.bridge = CvBridge() self.image_location = f"{json_settings['image_location']}" + self.image_counter = 0 - # set image counter - self.image_number = 0 + def start_livestream_callback(self, topic_msg: Bool): + """This method starts a livestream when a message is received on the topic livestream/state - def start_livestream_callback(self, topic_msg): - """Timer Callback Function - - This method starts a livestream - + Args: + topic_msg (Bool): True for starting livestream, False for stopping livestream """ - self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_livestream"]) - self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_livestream"]) - self._logger.info(f'message received on topic livestream \nwith message: {topic_msg}\nwith data :{topic_msg.data}') + self.cap.set( + cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_livestream"] + ) + self.cap.set( + cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_livestream"] + ) + self.get_logger().info(f"message received on topic livestream") + self.get_logger().debug( + f"Incomming message on topic livestream \nwith message: {topic_msg}" + ) timer_period = 0.03 # seconds TODO: make into settings 30hz if self.cap.isOpened(): - self.get_logger().info('camera is available') - if topic_msg.data == True: - self._logger.info('starting livestream') - self.timer = self.create_timer(timer_period, self.timer_callback) - elif topic_msg.data == False: - self._logger.info('stopping livestream') - self.timer.cancel() - self.timer.destroy() - else: - self.get_logger().info('camera not available') + self.get_logger().info("camera is available") + if topic_msg.data: + self.get_logger().info("starting livestream") + timer = self.create_timer(timer_period, self.timer_callback) + elif not topic_msg.data and timer.is_active(): + self.get_logger().info("stopping livestream") + timer.cancel() + timer.destroy() + else: + self.get_logger().debug( + "can't stop livestream because livestream is already stopped" + ) + elif not self.cap.isOpened(): + self.get_logger().info("camera not available") def timer_callback(self): + """callback function to read image data from camera and publish it to the topic of the livestream""" ret, frame = self.cap.read() - # cv2.imshow("Video Frame", frame) msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") self.pub_cam_livestream.publish(msg_image) - def capture_snapshot_callback(self, topic_msg): - """Timer Callback Function - - This method captures images, publishes required data in ros 2 topic and saves it to a folder. - + def capture_snapshot_callback(self, topic_msg: Bool): + """Captures images when a True is received on the snapshot topic and publishes the immage on a topic. + + Args: + topic_msg (Bool): True for capturing snapshot, False is not used. """ - self.get_logger().info(f'message received on topic snapshot \nwith message: {topic_msg}\nwith data :{topic_msg.data}') - self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_snapshot"]) + self.get_logger().info( + f"message received on topic snapshot \nwith message: {topic_msg}\nwith data :{topic_msg.data}" + ) + self.cap.set( + cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_snapshot"] + ) self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_snapshot"]) if self.cap.isOpened(): - # reads image data ret, frame = self.cap.read() print(type(frame)) msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") - msg_image.header.frame_id = str(self.image_number) + msg_image.header.frame_id = str(self.image_counter) # saves image to folder - cv2.imwrite(f"{self.image_location}/image{self.image_number}.jpg", frame) - self.get_logger().info(f'image saved at image{self.image_number}.jpg') - #post camera snapshot on topic + cv2.imwrite(f"{self.image_location}/image{self.image_counter}.jpg", frame) + self.get_logger().info(f"image saved at image{self.image_counter}.jpg") + # post camera snapshot on topic self.pub_cam_snapshot.publish(msg_image) # self.cap.release() - self.image_number += 1 + self.image_counter += 1 # keep max 5 files - prevent_overflood_image(self.image_number) + prevent_overflood_image(self.image_counter) else: - self.get_logger().info('camera not available') - self.cap.set(cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_livestream"]) - self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_livestream"]) + self.get_logger().info("camera not available") + self.cap.set( + cv2.CAP_PROP_FRAME_HEIGHT, json_settings["capture_height_livestream"] + ) + self.cap.set( + cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_livestream"] + ) -def prevent_overflood_image(img_number): - if img_number >4: +def prevent_overflood_image(img_number: int): + """makes sure that there are only 5 images in the image folder + + Args: + img_number (int): current number of latest image published + """ + if img_number > 4: item_to_delete = f"{json_settings['image_location']}/image{img_number-5}.jpg" if os.path.exists(item_to_delete): os.remove(item_to_delete) - # ___Main Method: def main(args=None): """ - This is the Main Method. - + This is the Main Method that spins the node and starts the camera publisher. """ # initializes node and start publishing - cam_0_topic = json_settings['publish_topic_camera']+json_settings['camera_id'] - livestream_state_topic = cam_0_topic + json_settings['publish_topic_livestream']+json_settings['trigger_topic_livestream'] - snapshot_trigger_topic = cam_0_topic + json_settings['publish_topic_snapshot']+json_settings['trigger_topic_snapshot'] - publish_livestream_topic = cam_0_topic + json_settings['publish_topic_livestream'] - publish_snapshot_topic = cam_0_topic + json_settings['publish_topic_snapshot'] + cam_0_base = json_settings["publish_topic_camera"] + json_settings["camera_id"] + livestream_state_topic = ( + json_settings["publish_topic_livestream"] + + json_settings["trigger_topic_livestream"] + ) + snapshot_trigger_topic = ( + json_settings["publish_topic_snapshot"] + + json_settings["trigger_topic_snapshot"] + ) + publish_livestream_topic = json_settings["publish_topic_livestream"] + publish_snapshot_topic = json_settings["publish_topic_snapshot"] rclpy.init(args=args) - camera_publisher = CameraPublisher( - livestream_state_topic=livestream_state_topic, - snapshot_trigger_topic=snapshot_trigger_topic, - publish_livestream_topic=publish_livestream_topic, - publish_snapshot_topic=publish_snapshot_topic, - ) - rclpy.spin(camera_publisher) + camera_0 = CameraPublisher( + livestream_state_topic=cam_0_base + livestream_state_topic, + snapshot_trigger_topic=cam_0_base + snapshot_trigger_topic, + publish_livestream_topic=cam_0_base + publish_livestream_topic, + publish_snapshot_topic=cam_0_base + publish_snapshot_topic, + ) + rclpy.spin(camera_0) # shuts down nose and releases everything - camera_publisher.destroy_node() + camera_0.destroy_node() rclpy.shutdown() return None # ___Driver Program: -if __name__ == '__main__': +if __name__ == "__main__": main() diff --git a/src/ros_to_livestream/config/settings.yaml b/src/ros_to_livestream/config/settings.yaml index a26df91..38d0912 100644 --- a/src/ros_to_livestream/config/settings.yaml +++ b/src/ros_to_livestream/config/settings.yaml @@ -1,4 +1,3 @@ - livestream_topic: base: "/camera" camera_id: diff --git a/src/ros_to_livestream/ros_to_livestream/HSL.py b/src/ros_to_livestream/ros_to_livestream/HSL.py index 11e90e0..4c0e9d2 100644 --- a/src/ros_to_livestream/ros_to_livestream/HSL.py +++ b/src/ros_to_livestream/ros_to_livestream/HSL.py @@ -36,46 +36,48 @@ def __init__(self): self.image_width: int = self._get_parameter_value("image_width") self.image_height: int = self._get_parameter_value("image_height") - self.fourcc = cv2.VideoWriter_fourcc(*'mp4v') - + self.fourcc = cv2.VideoWriter_fourcc(*"mp4v") + self.first_time = True self.get_logger().info(f"topic: {topic}") queue_size: int = self._get_parameter_value("queue_size") - self.subscription = self.create_subscription(Image, topic, self.listener_callback, queue_size) - # self.create_ffmpeg_process(self.image_width,self.image_height) + self.subscription = self.create_subscription( + Image, topic, self.listener_callback, queue_size + ) self.bridge = CvBridge() - os.environ['DISPLAY']=':0' # for developing, this is needed to open up a window to show the local livestream - # self.setup_HSL_stream() - - + # os.environ['DISPLAY']=':0' def listener_callback(self, msg: Image) -> None: """Handle incoming message from subscription.""" - # self.get_logger().info(f"I heard: {msg.data}") frame = self.bridge.imgmsg_to_cv2(msg, "bgr8") - self.out = cv2.VideoWriter('livestream/output.mp4', self.fourcc, self.framerate, (self.image_width, self.image_height)) + self.out = cv2.VideoWriter( + "livestream/output.mp4", + self.fourcc, + self.framerate, + (self.image_width, self.image_height), + ) self.out.write(frame) self.out.release() - cv2.imshow("frame", frame) - cv2.waitKey(1) + # cv2.imshow("frame", frame) + # cv2.waitKey(1) if self.first_time: self.setup_HSL_stream() self.first_time = False - - - - - def setup_HSL_stream(self): video_file = "livestream/output.mp4" - video= ffmpeg_streaming.input(video_file, capture = True, framerate=self.framerate, vcodec="h264", acodec="aac") + video = ffmpeg_streaming.input( + video_file, + capture=True, + framerate=self.framerate, + vcodec="h264", + acodec="aac", + ) hsl = video.hls(Formats.h264()) - _720p = Representation(Size(720, 480), Bitrate(overall=497664)) + _720p = Representation(Size(720, 480), Bitrate(overall=497664)) hsl.representations(_720p) - hsl.output('livestream/hsl.m3u8') - + hsl.output("livestream/hsl.m3u8") def main(args: Optional[list[str]] = None) -> None: diff --git a/src/ros_to_livestream/ros_to_livestream/__init__.py b/src/ros_to_livestream/ros_to_livestream/__init__.py index e2556c3..469404c 100644 --- a/src/ros_to_livestream/ros_to_livestream/__init__.py +++ b/src/ros_to_livestream/ros_to_livestream/__init__.py @@ -1 +1 @@ -PACKAGE_NAME: str = "ros_skeleton" +PACKAGE_NAME: str = "ros_to_livestream" From 8fa7674ea60d247f7e560e1e5cb3719479afd7d3 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Fri, 12 May 2023 15:09:24 +0200 Subject: [PATCH 14/16] removed old nodes, plus timer error in camera_capture --- .gitignore | 9 ++-- .../camera_capture/camera_capture.py | 15 +++--- src/robot_app/launch/gamepad_launch.py | 52 ++++--------------- 3 files changed, 22 insertions(+), 54 deletions(-) diff --git a/.gitignore b/.gitignore index 09b75ae..96dcb8a 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,10 @@ logs/ build/ bin/ lib/ +log/ +install/ +livestream/ +snapshot_files/ msg_gen/ srv_gen/ msg/*Action.msg @@ -66,7 +70,4 @@ About /venv/ /.idea/ .vscode/ -log/ -install/ -livestream/ -snapshot_files/ + diff --git a/src/camera_capture/camera_capture/camera_capture.py b/src/camera_capture/camera_capture/camera_capture.py index 70cca9d..9d2e06c 100644 --- a/src/camera_capture/camera_capture/camera_capture.py +++ b/src/camera_capture/camera_capture/camera_capture.py @@ -104,10 +104,13 @@ def start_livestream_callback(self, topic_msg: Bool): if topic_msg.data: self.get_logger().info("starting livestream") timer = self.create_timer(timer_period, self.timer_callback) - elif not topic_msg.data and timer.is_active(): + elif not topic_msg.data: self.get_logger().info("stopping livestream") - timer.cancel() - timer.destroy() + try: + timer.cancel() + timer.destroy() + except UnboundLocalError: + self.get_logger().error("timer was is not defined)") else: self.get_logger().debug( "can't stop livestream because livestream is already stopped" @@ -135,20 +138,14 @@ def capture_snapshot_callback(self, topic_msg: Bool): ) self.cap.set(cv2.CAP_PROP_FRAME_WIDTH, json_settings["capture_width_snapshot"]) if self.cap.isOpened(): - # reads image data ret, frame = self.cap.read() print(type(frame)) msg_image = self.bridge.cv2_to_imgmsg(np.array(frame), "bgr8") msg_image.header.frame_id = str(self.image_counter) - # saves image to folder cv2.imwrite(f"{self.image_location}/image{self.image_counter}.jpg", frame) self.get_logger().info(f"image saved at image{self.image_counter}.jpg") - # post camera snapshot on topic self.pub_cam_snapshot.publish(msg_image) - - # self.cap.release() self.image_counter += 1 - # keep max 5 files prevent_overflood_image(self.image_counter) else: self.get_logger().info("camera not available") diff --git a/src/robot_app/launch/gamepad_launch.py b/src/robot_app/launch/gamepad_launch.py index c7235b0..cfbec10 100644 --- a/src/robot_app/launch/gamepad_launch.py +++ b/src/robot_app/launch/gamepad_launch.py @@ -34,8 +34,6 @@ def generate_launch_description(): # Create launch configuration variables gamepad_type = LaunchConfiguration('gamepad_type') robot_type = LaunchConfiguration('robot_type') - # cam2image = LaunchConfiguration('cam2image') - # csijetson = LaunchConfiguration('csijetson') # Declare the launch arguments @@ -54,23 +52,13 @@ def generate_launch_description(): 'robot_type', default_value='jetbot', description='Type of Robot to drive.') - - # declare_cam2image_cmd = DeclareLaunchArgument( - # 'cam2image', - # default_value='False', - # description='Execute cam2image or not.') - - # declare_csijetson_cmd = DeclareLaunchArgument( - # 'csijetson', - # default_value='True', - # description='Using CSI camera on Jetson Nano or not.') # Specify the actions - livestream_mode_cmd = Node( - condition = LaunchConfigurationEquals('robot_mode', 'livestream'), - package = 'camera_capture', - executable = 'camera_capture', - name = 'camera_capture') + # livestream_mode_cmd = Node( + # condition = LaunchConfigurationEquals('robot_mode', 'livestream'), + # package = 'camera_capture', + # executable = 'camera_capture', + # name = 'camera_capture') # Include other launch files HSL_launch = IncludeLaunchDescription( @@ -78,12 +66,11 @@ def generate_launch_description(): str(pathlib.Path(f"{get_package_share_directory('ros_to_livestream')}/launch/HSL.launch.py")) ), ) - - # snapshot_mode_cmd = Node( - # condition = LaunchConfigurationEquals('robot_mode', 'snapshot'), - # package = 'camera_snap_shot', - # executable = 'take_snap_shot', - # name = 'camera_snap_shot') + camera_capture = IncludeLaunchDescription( + PythonLaunchDescriptionSource( + str(pathlib.Path(f"{get_package_share_directory('camera_capture')}/launch/camera_capture.launch.py")) + ), + ) gamepad_to_twist_cmd = Node( package = 'ros2_gamepad_to_twist_message', @@ -94,18 +81,6 @@ def generate_launch_description(): package = 'ros2_twist_message_to_robot_motion', executable = robot_type, name='twist_to_robot_motion') - - # cam2image_cmd = Node( - # condition=IfCondition(cam2image), - # package = 'image_tools', - # executable = 'cam2image', - # name='cam2image') - - # csijetson_cmd = Node( - # condition=IfCondition(csijetson), - # package = 'ros2_csi_camera_publish', - # executable = 'jetson', - # name='csi_camera_publish') # Create the launch description and populate @@ -115,17 +90,12 @@ def generate_launch_description(): ld.add_action(declare_gamepad_type_cmd) ld.add_action(declare_robot_mode_cmd) ld.add_action(declare_robot_type_cmd) - # ld.add_action(declare_cam2image_cmd) - # ld.add_action(declare_csijetson_cmd) # Add all actions ld.add_action(gamepad_to_twist_cmd) - ld.add_action(livestream_mode_cmd) + ld.add_action(camera_capture) ld.add_action(HSL_launch) - # ld.add_action(snapshot_mode_cmd) ld.add_action(twist_to_motion_cmd) - # ld.add_action(cam2image_cmd) - # ld.add_action(csijetson_cmd) return ld From 2676a466ed3274207484820a6ca9491a6088de56 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Fri, 12 May 2023 15:10:19 +0200 Subject: [PATCH 15/16] removed comments (forgot to it do ) --- src/robot_app/launch/gamepad_launch.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/robot_app/launch/gamepad_launch.py b/src/robot_app/launch/gamepad_launch.py index cfbec10..dfa00ad 100644 --- a/src/robot_app/launch/gamepad_launch.py +++ b/src/robot_app/launch/gamepad_launch.py @@ -53,13 +53,6 @@ def generate_launch_description(): default_value='jetbot', description='Type of Robot to drive.') - # Specify the actions - # livestream_mode_cmd = Node( - # condition = LaunchConfigurationEquals('robot_mode', 'livestream'), - # package = 'camera_capture', - # executable = 'camera_capture', - # name = 'camera_capture') - # Include other launch files HSL_launch = IncludeLaunchDescription( PythonLaunchDescriptionSource( From f44af8ecb42a29efa22904990c5219e0b5cf88b5 Mon Sep 17 00:00:00 2001 From: Raytesnel Date: Mon, 15 May 2023 10:49:03 +0200 Subject: [PATCH 16/16] two times witdth instead of witdth +height --- src/camera_capture/camera_capture/camera_capture.py | 5 ++--- src/camera_capture/requiremenst.in | 1 + src/ros_to_livestream/requirements.in | 1 + 3 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 src/camera_capture/requiremenst.in diff --git a/src/camera_capture/camera_capture/camera_capture.py b/src/camera_capture/camera_capture/camera_capture.py index 9d2e06c..34f2e0b 100644 --- a/src/camera_capture/camera_capture/camera_capture.py +++ b/src/camera_capture/camera_capture/camera_capture.py @@ -20,8 +20,7 @@ from ament_index_python.packages import get_package_share_directory from std_msgs.msg import Bool from cv_bridge import CvBridge -import ffmpeg_streaming -import subprocess + from . import PACKAGE_NAME @@ -36,7 +35,7 @@ # __Functions: def gstreamer_pipeline( capture_width: str = str(json_settings["capture_width_livestream"]), - capture_height: str = str(json_settings["capture_width_livestream"]), + capture_height: str = str(json_settings["capture_height_livestream"]), framerate: str = str(json_settings["framerate"]), ): return ( diff --git a/src/camera_capture/requiremenst.in b/src/camera_capture/requiremenst.in new file mode 100644 index 0000000..56ebbf2 --- /dev/null +++ b/src/camera_capture/requiremenst.in @@ -0,0 +1 @@ +pip install ffmpeg-python diff --git a/src/ros_to_livestream/requirements.in b/src/ros_to_livestream/requirements.in index e69de29..861bacc 100644 --- a/src/ros_to_livestream/requirements.in +++ b/src/ros_to_livestream/requirements.in @@ -0,0 +1 @@ +pip install python-ffmpeg-video-streaming