From 5c82f48c7e14d04f1419f00e039800198d9193bc Mon Sep 17 00:00:00 2001 From: Devon Friend Date: Sat, 9 Mar 2024 18:58:01 -0800 Subject: [PATCH 01/36] Migrate changes for issue 306 --- .../nodes/low_level_control/control.py | 169 ----------- .../nodes/low_level_control/controller.py | 262 ++++++++++++++++++ .../tests/unit/common/test_generators.py | 1 - .../nodes/low_level_control/test_control.py | 5 - .../low_level_control/test_controller.py | 149 ++++++++++ 5 files changed, 411 insertions(+), 175 deletions(-) delete mode 100644 src/boat_simulator/boat_simulator/nodes/low_level_control/control.py create mode 100644 src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py delete mode 100644 src/boat_simulator/tests/unit/nodes/low_level_control/test_control.py create mode 100644 src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/control.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/control.py deleted file mode 100644 index d97534883..000000000 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/control.py +++ /dev/null @@ -1,169 +0,0 @@ -"""Low level control logic for actuating the rudder and the sail.""" - -from boat_simulator.common.types import Scalar -from typing import Any, List -from abc import ABC, abstractmethod - - -class PID(ABC): - - """Abstract class for a PID controller. - - Attributes: - `kp` (Scalar): The proportional component tuning constant. - `ki` (Scalar): The integral component tuning constant. - `kd` (Scalar): The derivative component tuning constant. - `time_period` (Scalar): Constant time period between error samples. - `buf_size` (int): The max number of error samples to store for integral component. - `error_timeseries` (List[Scalar]): Timeseries of error values computed over time. - """ - - # Private class member defaults - __kp: Scalar = 0 - __ki: Scalar = 0 - __kd: Scalar = 0 - __time_period: Scalar = 1 - __buf_size: int = 50 - __error_timeseries: List[Scalar] = list() - - def __init__(self, kp: Scalar, ki: Scalar, kd: Scalar, time_period: Scalar, buf_size: int): - """Initializes the class attributes. Note that this class cannot be directly instantiated. - - Args: - `kp` (Scalar): The proportional component tuning constant. - `ki` (Scalar): The integral component tuning constant. - `kd` (Scalar): The derivative component tuning constant. - `time_period` (Scalar): Time period between error samples. - `buf_size` (int): The max number of error samples to store for integral component. - """ - self.__kp = kp - self.__ki = ki - self.__kd = kd - self.__buf_size = buf_size - self.__time_period = time_period - self.__error_timeseries = list() - - def step(self, current: Any, target: Any) -> Scalar: - """Computes the correction factor. - - Args: - `current` (Any): Current state of the system. - `target` (Any): Target state of the system. - - Returns: - Scalar: Correction factor. - """ - raise NotImplementedError() - - def reset(self, is_latest_error_kept: bool = False) -> None: - """Empties the error timeseries of the PID controller, effectively starting a new - control iteration. - - Args: - is_latest_error_kept (bool, optional): True if the latest error is kept in the error - timeseries to avoid starting from scratch if the target remains the same. False - if the timeseries should be completely emptied. Defaults to False. - """ - raise NotImplementedError() - - def __append_error(self, error: Scalar) -> None: - """Appends the latest error to the error timeseries attribute. If the timeseries is at - the maximum buffer size, the least recently computed error is evicted from the timeseries - and the new one is appended. - - Args: - `error` (Scalar): The latest error. - """ - raise NotImplementedError() - - @abstractmethod - def _compute_error(self, current: Any, target: Any) -> Scalar: - """Computes the currently observed error. - - Args: - current (Any): Current state of the system. - target (Any): Target state of the system. - - Returns: - Scalar: Current error between the current and target states. - """ - pass - - @abstractmethod - def _compute_proportional_response(self) -> Scalar: - """ - Returns: - Scalar: The proportional component of the correction factor. - """ - pass - - @abstractmethod - def _compute_integral_response(self) -> Scalar: - """ - Returns: - Scalar: The integral component of the correction factor. - """ - pass - - @abstractmethod - def _compute_derivative_response(self) -> Scalar: - """ - Returns: - Scalar: The derivative component of the correction factor. - """ - pass - - @property - def kp(self) -> Scalar: - return self.__kp - - @property - def ki(self) -> Scalar: - return self.__ki - - @property - def kd(self) -> Scalar: - return self.__kd - - @property - def buf_size(self) -> Scalar: - return self.__buf_size - - @property - def time_period(self) -> Scalar: - return self.__time_period - - @property - def error_timeseries(self) -> List[Scalar]: - return self.__error_timeseries - - -class RudderPID(PID): - """Class for the rudder PID controller. - - Extends: PID - """ - - def __init__(self, kp: Scalar, ki: Scalar, kd: Scalar, time_period: Scalar, buf_size: int): - """Initializes the class attributes. - - Args: - `kp` (Scalar): The proportional component tuning constant. - `ki` (Scalar): The integral component tuning constant. - `kd` (Scalar): The derivative component tuning constant. - `time_period` (Scalar): Time period between error samples. - `buf_size` (int): The max number of error samples to store for integral component. - """ - super().__init__(kp, ki, kd, time_period, buf_size) - - def _compute_error(self, current: Scalar, target: Scalar) -> Scalar: - raise NotImplementedError() - - def _compute_proportional_response(self) -> Scalar: - raise NotImplementedError() - - def _compute_integral_response(self) -> Scalar: - raise NotImplementedError() - - def _compute_derivative_response(self) -> Scalar: - raise NotImplementedError() diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py new file mode 100644 index 000000000..18df8aee4 --- /dev/null +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -0,0 +1,262 @@ +"""Low level control logic for actuating the rudder and the sail.""" + +from abc import ABC, abstractmethod +from math import atan2, cos, pi, sin + +import numpy as np + +from boat_simulator.common.types import Scalar +from boat_simulator.common.utils import bound_to_180 + + +class ActuatorController(ABC): + """Abstract class for rudder and sail actuation mechanisms. + + Attributes: + `current_control_ang` (Scalar): Current control mechanism angle in degrees. + `time_step` (Scalar): Time per iteration given in degrees/second. + `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + """ + + def __init__( + self, + current_control_ang: Scalar, + time_step: Scalar, + max_angle_range: tuple, + ): + """Initializes the class attributes. Note that this class cannot be directly instantiated. + + Args: + `current_control_ang` (Scalar): Current control mechanism angle in degrees. + `time_step` (Scalar): Time per iteration given in degrees/second. + `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + """ + self.current_control_ang = current_control_ang + self.time_step = time_step + self.max_angle_range = max_angle_range + + @abstractmethod + def update_state(self) -> None: + """Updates the controller position based on target heading + + Args: + `speed` (Scalar): Iterative speed in degrees / second + + """ + + @abstractmethod + def compute_feedback_angle(self) -> Scalar: + """Computes the corresponding feedback based on error and desired heading""" + pass + + +class RudderController(ActuatorController): + """General Class for the Actuator Controller. + + RudderController Extends: ActuatorController + """ + + def __init__( + self, + current_heading: Scalar, + desired_heading: Scalar, + current_control_ang: Scalar, + time_step: Scalar, + kp: Scalar, + cp: Scalar, + max_angle_range: tuple, + rudder_speed: Scalar, + ): + """Initializes the class attributes. + + Args: + `current_heading` (Scalar): Current boat heading direction in degrees. + `desired_heading` (Scalar): Target boating heading direction in degrees. + `current_control_ang` (Scalar): Current control mechanism angle in degrees. + `time_step` (Scalar): Time per iteration given in degrees/second. + `kp` (Scalar): Proportional constant when calculating error. + `cp` (Scalar): Timeseries of error values computed over time. + `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + `rudder_speed` (Scalar): Speed of controller change in degrees per second + + """ + super().__init__(current_control_ang, time_step, max_angle_range) + + self.current_heading = current_heading + self.desired_heading = desired_heading + self.kp = kp + self.cp = cp + self.max_angle_range = max_angle_range # passed in degrees + self.running_error = 0.0 + self.rudder_speed = rudder_speed + + def compute_error( + self, desired: Scalar, current: Scalar + ) -> Scalar: # angle passed in as radians + """Computes the error between desired and current heading + implementation taken from: https://stackoverflow.com/a/2007279 + + Args: + `desired` (Scalar): New desired heading in degrees + `current` (Scalar): New current heading in degrees + + Returns: + Scalar: The error between the given headings in radians. + """ + current_bound = bound_to_180(current) + desired_bound = bound_to_180(desired) + desired_rad = np.deg2rad(desired_bound) + current_rad = np.deg2rad(current_bound) + error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) + + return error + + def compute_feedback_angle(self) -> Scalar: + """Computes the feedback angle from the given error (in radians) + Calculations done using Raye's implementation + https://github.com/UBCSailbot/raye-boat-controller/blob/master/python/tack_controller.py + + Returns: + Scalar: Difference between current and target rudder angle in degrees. + """ + error = self.compute_error(self.current_heading, self.desired_heading) + + if abs(error) > pi: + raise ValueError("heading_error must be between -pi and pi") + + rudder_change = (self.kp * error) / (1 + (self.cp * error)) + self.running_error = np.rad2deg(rudder_change) + + return np.rad2deg(rudder_change) + + def compute_setpoint(self) -> Scalar: + """Calculates the rudder setpoint angle. Only called at the very beginning once + to determine the setpoint angle + + Returns: + The rudder setpoint angle in degrees + """ + return self.current_control_ang + self.compute_feedback_angle() + + def reset_desired_heading(self, target_angle: Scalar) -> None: + """Resets a new desired heading angle and clears all previous + headings from current_control_ang list and running time for time_series + + Args: + `target_angle` (Scalar): New desired heading + + """ + self.desired_heading = target_angle + + def update_state(self) -> None: # default speed set to 2 degrees / sec + """Updates the rudder angle iteratively towards the target rudder setpoint + + Args: + `speed` (Scalar): Speed of rudder angle change in degrees per second + """ + change = self.rudder_speed * self.time_step + if self.running_error > change: + next_control = self.current_control_ang + change + if next_control > self.max_angle_range[0]: + next_control = self.max_angle_range[0] + elif next_control < self.max_angle_range[1]: + next_control = self.max_angle_range[1] + else: + next_control = next_control + self.running_error -= change + self.current_control_ang = next_control + + else: + next_control = self.current_control_ang + self.running_error + if next_control > self.max_angle_range[0]: + next_control = self.max_angle_range[0] + elif next_control < self.max_angle_range[1]: + next_control = self.max_angle_range[1] + else: + next_control = next_control + self.running_error = 0 + self.current_control_ang = next_control + + +class SailController(ActuatorController): + """General Class for the Actuator Controller. + + SailController Extends: ActuatorController + """ + + def __init__( + self, + target_angle: Scalar, + current_control_ang: Scalar, + time_step: Scalar, + kp: Scalar, + cp: Scalar, + max_angle_range: tuple, + sail_control_speed: Scalar, + ): + """Initializes the class attributes. + + Args: + `current_heading` (Scalar): Current boat heading direction in degrees. + `desired_heading` (Scalar): Target boating heading direction in degrees. + `current_control_ang` (Scalar): Current control mechanism angle in degrees. + `time_step` (Scalar): Time per iteration given in degrees/second. + `kp` (Scalar): Proportional constant when calculating error. + `cp` (Scalar): Timeseries of error values computed over time. + `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + + """ + super().__init__(current_control_ang, time_step, max_angle_range) + + self.target_angle = target_angle + self.kp = kp + self.cp = cp + self.sail_control_speed = sail_control_speed + self.running_error = 0.0 + + def compute_feedback_angle(self): + """Computes the feedback angle between setpoint and current sail angles + + Args: + `target_angle` (Scalar): Target sail angle in degrees + """ + return self.target_angle - self.current_control_ang + + def reset_target_angle(self, new_target: Scalar) -> None: + """Resets a new desired heading angle and clears all previous + headings from current_control_ang list and running time for time_series + + Args: + `target_angle` (Scalar): New desired heading + + """ + self.target_angle = new_target + + def update_state(self): # default speed set to 1 degree / sec + """Updates the sail angle iteratively towards the target sail setpoint + + Args: + `speed` (Scalar): Speed of sail angle change in degrees per second + """ + change = self.sail_control_speed * self.time_step + if self.running_error > change: + next_control = self.current_control_ang + change + if next_control > self.max_angle_range[0]: + next_control = self.max_angle_range[0] + elif next_control < self.max_angle_range[1]: + next_control = self.max_angle_range[1] + else: + next_control = next_control + self.running_error -= change + self.current_control_ang = next_control + + else: + next_control = self.current_control_ang + self.running_error + if next_control > self.max_angle_range[0]: + next_control = self.max_angle_range[0] + elif next_control < self.max_angle_range[1]: + next_control = self.max_angle_range[1] + else: + next_control = next_control + self.running_error = 0 + self.current_control_ang = next_control diff --git a/src/boat_simulator/tests/unit/common/test_generators.py b/src/boat_simulator/tests/unit/common/test_generators.py index 86a7194b1..f53c07ed3 100644 --- a/src/boat_simulator/tests/unit/common/test_generators.py +++ b/src/boat_simulator/tests/unit/common/test_generators.py @@ -3,7 +3,6 @@ import numpy as np import pytest - from boat_simulator.common.generators import ( ConstantGenerator, GaussianGenerator, diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_control.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_control.py deleted file mode 100644 index 4b8257fe0..000000000 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_control.py +++ /dev/null @@ -1,5 +0,0 @@ -"""Tests classes and functions in boat_simulator/nodes/low_level_control/control.py""" - - -class TestRudderPID: - pass diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py new file mode 100644 index 000000000..fe4d87a7e --- /dev/null +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -0,0 +1,149 @@ +"""Tests classes and functions in boat_simulator/nodes/controller.py""" + +from math import atan2, cos, sin + +import numpy as np +import pytest + +from boat_simulator.common.types import Scalar +from boat_simulator.common.utils import bound_to_180 +from boat_simulator.nodes.low_level_control.controller import RudderController + + +class TestRudderController: + @pytest.mark.parametrize( + "current_heading, desired_heading, current_control_ang, \ + time_step, kp, cp, max_angle_range, rudder_speed", + [ + (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), + (180, 10, 60, 0.5, 0.7, 0.34, (45, -45), 1.5), + (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), + (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), + (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), + ], + ) + def test_compute_error( + self, + current_heading: Scalar, + desired_heading: Scalar, + current_control_ang: Scalar, + time_step: Scalar, + kp: Scalar, + cp: Scalar, + max_angle_range: tuple, + rudder_speed: Scalar, + ): + + rudder_controller = RudderController( + current_heading, + desired_heading, + current_control_ang, + time_step, + kp, + cp, + max_angle_range, + rudder_speed, + ) + error = rudder_controller.compute_error(desired_heading, current_heading) + desired_rad = np.deg2rad(bound_to_180(desired_heading)) + current_rad = np.deg2rad(bound_to_180(current_heading)) + expected_error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) + assert np.equal(expected_error, error) + + @pytest.mark.parametrize( + "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", + [ + (60, 45, 10, 0.5, 0.7, 0.34, (45, -45)), + ], + ) + def test_compute_feedback_angle( + self, + current_heading: Scalar, + desired_heading: Scalar, + current_control_ang: Scalar, + time_step: Scalar, + kp: Scalar, + cp: Scalar, + max_angle_range: tuple, + rudder_speed: Scalar, + ): + + rudder_controller = RudderController( + current_heading, + desired_heading, + current_control_ang, + time_step, + kp, + cp, + max_angle_range, + rudder_speed, + ) + feedback_angle = rudder_controller.compute_feedback_angle() + error = rudder_controller.compute_error(desired_heading, current_heading) + expected_angle = (rudder_controller.kp * error) / (1 + (rudder_controller.cp * error)) + assert np.equal(feedback_angle, expected_angle) + + @pytest.mark.parametrize( + "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", + [ + (60, 45, 10, 0.5, 0.7, 0.34, (45, -45)), + ], + ) + def test_compute_setpoint( + self, + current_heading: Scalar, + desired_heading: Scalar, + current_control_ang: Scalar, + time_step: Scalar, + kp: Scalar, + cp: Scalar, + max_angle_range: tuple, + rudder_speed: Scalar, + ): + + rudder_controller = RudderController( + current_heading, + desired_heading, + current_control_ang, + time_step, + kp, + cp, + max_angle_range, + rudder_speed, + ) + setpoint = rudder_controller.compute_setpoint() + expected_setpoint = ( + rudder_controller.current_control_ang + rudder_controller.compute_feedback_angle() + ) + assert np.equal(setpoint, expected_setpoint) + + @pytest.mark.parametrize( + "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", + [ + (60, 45, 10, 0.5, 0.7, 0.34, (45, -45)), + ], + ) + def test_update_state( + self, + current_heading: Scalar, + desired_heading: Scalar, + current_control_ang: Scalar, + time_step: Scalar, + kp: Scalar, + cp: Scalar, + max_angle_range: tuple, + rudder_speed: Scalar, + ): + + rudder_controller = RudderController( + current_heading, + desired_heading, + current_control_ang, + time_step, + kp, + cp, + max_angle_range, + rudder_speed, + ) + rudder_controller.update_state() + assert np.equal(rudder_controller.current_control_ang, 12) From f2ae1b72877baeb123be07de268a562551f4ce3b Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sun, 10 Mar 2024 18:18:01 -0700 Subject: [PATCH 02/36] Controller implementation fixes --- .vscode/settings.json | 18 +++ compile_commands.json | 1 + .../nodes/low_level_control/controller.py | 144 +++++++++--------- .../low_level_control/test_controller.py | 10 +- 4 files changed, 95 insertions(+), 78 deletions(-) create mode 100644 .vscode/settings.json create mode 120000 compile_commands.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..f44f5df05 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,18 @@ +{ + "python.autoComplete.extraPaths": [ + "/workspaces/sailbot_workspace/build/local_pathfinding", + "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", + "/workspaces/sailbot_workspace/build/boat_simulator", + "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", + "/opt/ros/humble/local/lib/python3.10/dist-packages", + "/opt/ros/humble/lib/python3.10/site-packages" + ], + "python.analysis.extraPaths": [ + "/workspaces/sailbot_workspace/build/local_pathfinding", + "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", + "/workspaces/sailbot_workspace/build/boat_simulator", + "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", + "/opt/ros/humble/local/lib/python3.10/dist-packages", + "/opt/ros/humble/lib/python3.10/site-packages" + ] +} \ No newline at end of file diff --git a/compile_commands.json b/compile_commands.json new file mode 120000 index 000000000..bb35a19b2 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1 @@ +/workspaces/sailbot_workspace/build/compile_commands.json \ No newline at end of file diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index 18df8aee4..8bc16c711 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -36,16 +36,17 @@ def __init__( self.max_angle_range = max_angle_range @abstractmethod - def update_state(self) -> None: - """Updates the controller position based on target heading - - Args: - `speed` (Scalar): Iterative speed in degrees / second + def update_state(self) -> bool: + """Updates the controller position based on target heading angles + Returns: + False if target angle was not reached, else True if desired heading has been reached """ + pass + @abstractmethod - def compute_feedback_angle(self) -> Scalar: + def compute_error_angle(self) -> Scalar: """Computes the corresponding feedback based on error and desired heading""" pass @@ -76,7 +77,7 @@ def __init__( `time_step` (Scalar): Time per iteration given in degrees/second. `kp` (Scalar): Proportional constant when calculating error. `cp` (Scalar): Timeseries of error values computed over time. - `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + `max_angle_range` (tuple): Tuple of minimum to maximum control angle range in degrees `rudder_speed` (Scalar): Speed of controller change in degrees per second """ @@ -86,15 +87,16 @@ def __init__( self.desired_heading = desired_heading self.kp = kp self.cp = cp - self.max_angle_range = max_angle_range # passed in degrees - self.running_error = 0.0 + self.max_angle_range = max_angle_range self.rudder_speed = rudder_speed + self.running_error = 0.0 # keeps track of remaining error between desired and current def compute_error( self, desired: Scalar, current: Scalar ) -> Scalar: # angle passed in as radians """Computes the error between desired and current heading implementation taken from: https://stackoverflow.com/a/2007279 + Angles are bound with the convention (-180, 180] Args: `desired` (Scalar): New desired heading in degrees @@ -103,15 +105,14 @@ def compute_error( Returns: Scalar: The error between the given headings in radians. """ - current_bound = bound_to_180(current) - desired_bound = bound_to_180(desired) - desired_rad = np.deg2rad(desired_bound) - current_rad = np.deg2rad(current_bound) + current_bound, desired_bound = map(bound_to_180, (current, desired)) + desired_rad, current_rad = np.deg2rad(desired_bound), np.deg2rad(current_bound) + error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) return error - def compute_feedback_angle(self) -> Scalar: + def compute_error_angle(self) -> Scalar: """Computes the feedback angle from the given error (in radians) Calculations done using Raye's implementation https://github.com/UBCSailbot/raye-boat-controller/blob/master/python/tack_controller.py @@ -121,26 +122,31 @@ def compute_feedback_angle(self) -> Scalar: """ error = self.compute_error(self.current_heading, self.desired_heading) - if abs(error) > pi: - raise ValueError("heading_error must be between -pi and pi") + if abs(error) > (pi / 4): # limited between (-45, 45) + raise ValueError("Heading_error must be between -pi/4 and pi/4") rudder_change = (self.kp * error) / (1 + (self.cp * error)) - self.running_error = np.rad2deg(rudder_change) - return np.rad2deg(rudder_change) + if abs(rudder_change) > (pi / 2): # greatest change is 90 degrees + raise ValueError("Rudder_change cannot be greater than pi / 2") + + rudder_change_deg = np.rad2deg(rudder_change) + self.running_error = rudder_change_deg + + return rudder_change_deg def compute_setpoint(self) -> Scalar: """Calculates the rudder setpoint angle. Only called at the very beginning once - to determine the setpoint angle + to determine the setpoint angle. Returns: The rudder setpoint angle in degrees """ - return self.current_control_ang + self.compute_feedback_angle() + return self.current_control_ang + self.compute_error_angle() def reset_desired_heading(self, target_angle: Scalar) -> None: - """Resets a new desired heading angle and clears all previous - headings from current_control_ang list and running time for time_series + """Resets a new desired heading angle. Must recompute all errors and + feedback angles again for new iteration loop. Args: `target_angle` (Scalar): New desired heading @@ -148,34 +154,33 @@ def reset_desired_heading(self, target_angle: Scalar) -> None: """ self.desired_heading = target_angle - def update_state(self) -> None: # default speed set to 2 degrees / sec - """Updates the rudder angle iteratively towards the target rudder setpoint + def update_state(self) -> bool: + """Updates the rudder angle iteratively towards the target rudder setpoint based + on the rudder_speed and time step parameters - Args: - `speed` (Scalar): Speed of rudder angle change in degrees per second + Returns: + False if target angle was not reached, else True if desired heading has been reached """ - change = self.rudder_speed * self.time_step - if self.running_error > change: - next_control = self.current_control_ang + change - if next_control > self.max_angle_range[0]: - next_control = self.max_angle_range[0] - elif next_control < self.max_angle_range[1]: - next_control = self.max_angle_range[1] - else: - next_control = next_control - self.running_error -= change - self.current_control_ang = next_control + if self.running_error > 0: + change = self.rudder_speed * self.time_step + elif self.running_error < 0: + change = -self.rudder_speed * self.time_step + else: + return True + + if abs(self.running_error) > change: + next_control = max(self.current_control_ang + change, self.max_angle_range[0]) + self.running_error += change else: - next_control = self.current_control_ang + self.running_error - if next_control > self.max_angle_range[0]: - next_control = self.max_angle_range[0] - elif next_control < self.max_angle_range[1]: - next_control = self.max_angle_range[1] - else: - next_control = next_control + next_control = max( + self.current_control_ang + self.running_error, self.max_angle_range[0] + ) self.running_error = 0 - self.current_control_ang = next_control + return True + + self.current_control_ang = min(next_control, self.max_angle_range[1]) + return False class SailController(ActuatorController): @@ -214,12 +219,8 @@ def __init__( self.sail_control_speed = sail_control_speed self.running_error = 0.0 - def compute_feedback_angle(self): - """Computes the feedback angle between setpoint and current sail angles - - Args: - `target_angle` (Scalar): Target sail angle in degrees - """ + def compute_error_angle(self): + """Computes the feedback angle between setpoint and current sail angles""" return self.target_angle - self.current_control_ang def reset_target_angle(self, new_target: Scalar) -> None: @@ -232,31 +233,28 @@ def reset_target_angle(self, new_target: Scalar) -> None: """ self.target_angle = new_target - def update_state(self): # default speed set to 1 degree / sec + def update_state(self) -> bool: """Updates the sail angle iteratively towards the target sail setpoint - Args: - `speed` (Scalar): Speed of sail angle change in degrees per second + Returns: + False if target angle was not reached, else True if target angle has been reached """ - change = self.sail_control_speed * self.time_step - if self.running_error > change: - next_control = self.current_control_ang + change - if next_control > self.max_angle_range[0]: - next_control = self.max_angle_range[0] - elif next_control < self.max_angle_range[1]: - next_control = self.max_angle_range[1] - else: - next_control = next_control - self.running_error -= change - self.current_control_ang = next_control + if self.running_error > 0: + change = self.sail_control_speed * self.time_step + elif self.running_error < 0: + change = -self.sail_control_speed * self.time_step + else: + return True + if abs(self.running_error) > change: + next_control = max(self.current_control_ang + change, self.max_angle_range[0]) + self.running_error += change else: - next_control = self.current_control_ang + self.running_error - if next_control > self.max_angle_range[0]: - next_control = self.max_angle_range[0] - elif next_control < self.max_angle_range[1]: - next_control = self.max_angle_range[1] - else: - next_control = next_control + next_control = max( + self.current_control_ang + self.running_error, self.max_angle_range[0] + ) self.running_error = 0 - self.current_control_ang = next_control + return True + + self.current_control_ang = min(next_control, self.max_angle_range[1]) + return False diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index fe4d87a7e..2f53e1a59 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -15,11 +15,11 @@ class TestRudderController: "current_heading, desired_heading, current_control_ang, \ time_step, kp, cp, max_angle_range, rudder_speed", [ - (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), - (180, 10, 60, 0.5, 0.7, 0.34, (45, -45), 1.5), - (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), - (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), - (60, 45, 10, 0.5, 0.7, 0.34, (45, -45), 2), + (60, 45, 10.2, 0.5, 0.7, 0.34, (45, -45), 2), + (180, 10, 4.7, 1, 0.7, 0.34, (45, -45), 1.5), + (-45.5, 360.7, -20, 2, 0.7, 0.34, (45, -45), 0.5), + (-180, 180, 0, 1.5, 0.7, 0.34, (45, -45), 1), + (0, 70, 7.5, 0.5, 0.7, 0.34, (45, -45), 2), ], ) def test_compute_error( From 89895c4dc9f5d2a3b38836e36e9ded22ddc3982d Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Fri, 15 Mar 2024 23:50:44 -0700 Subject: [PATCH 03/36] New controller implementation changes, need to test more --- .vscode/settings.json | 18 -- compile_commands.json | 1 - .../nodes/low_level_control/controller.py | 204 ++++++++++-------- .../low_level_control/test_controller.py | 23 +- 4 files changed, 124 insertions(+), 122 deletions(-) delete mode 100644 .vscode/settings.json delete mode 120000 compile_commands.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index f44f5df05..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "python.autoComplete.extraPaths": [ - "/workspaces/sailbot_workspace/build/local_pathfinding", - "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", - "/workspaces/sailbot_workspace/build/boat_simulator", - "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", - "/opt/ros/humble/local/lib/python3.10/dist-packages", - "/opt/ros/humble/lib/python3.10/site-packages" - ], - "python.analysis.extraPaths": [ - "/workspaces/sailbot_workspace/build/local_pathfinding", - "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", - "/workspaces/sailbot_workspace/build/boat_simulator", - "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", - "/opt/ros/humble/local/lib/python3.10/dist-packages", - "/opt/ros/humble/lib/python3.10/site-packages" - ] -} \ No newline at end of file diff --git a/compile_commands.json b/compile_commands.json deleted file mode 120000 index bb35a19b2..000000000 --- a/compile_commands.json +++ /dev/null @@ -1 +0,0 @@ -/workspaces/sailbot_workspace/build/compile_commands.json \ No newline at end of file diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index 8bc16c711..0a923020e 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -1,7 +1,7 @@ """Low level control logic for actuating the rudder and the sail.""" from abc import ABC, abstractmethod -from math import atan2, cos, pi, sin +from math import atan2, cos, sin import numpy as np @@ -14,40 +14,48 @@ class ActuatorController(ABC): Attributes: `current_control_ang` (Scalar): Current control mechanism angle in degrees. - `time_step` (Scalar): Time per iteration given in degrees/second. - `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + `time_step` (Scalar): Time taken per iteration given in seconds. + `control_speed` (Scalar): Speed of control angle change in degrees / second. """ def __init__( self, current_control_ang: Scalar, time_step: Scalar, - max_angle_range: tuple, + control_speed: Scalar, ): """Initializes the class attributes. Note that this class cannot be directly instantiated. Args: `current_control_ang` (Scalar): Current control mechanism angle in degrees. - `time_step` (Scalar): Time per iteration given in degrees/second. - `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + `time_step` (Scalar): Time per iteration given in seconds. + `control_speed` (Scalar): Speed of control angle change in degrees / second. """ self.current_control_ang = current_control_ang self.time_step = time_step - self.max_angle_range = max_angle_range + self.control_speed = control_speed @abstractmethod def update_state(self) -> bool: - """Updates the controller position based on target heading angles + """Updates the controller position iteratively based on control_speed * time_step, until + the control target angle is reached. + Returns: - False if target angle was not reached, else True if desired heading has been reached + False if target control angle was not reached, else + True if target control angle has been reached (running error = 0) """ pass @abstractmethod - def compute_error_angle(self) -> Scalar: - """Computes the corresponding feedback based on error and desired heading""" + def reset_setpoint(self, new_target_angle: Scalar) -> None: + """Resets a new target angle and computes a new corresponding setpoint + + Args: + `new_target_angle` (Scalar): New target angle in degrees + + """ pass @@ -57,6 +65,8 @@ class RudderController(ActuatorController): RudderController Extends: ActuatorController """ + MAX_ANGLE_RANGE = (-45, 45) + def __init__( self, current_heading: Scalar, @@ -65,121 +75,117 @@ def __init__( time_step: Scalar, kp: Scalar, cp: Scalar, - max_angle_range: tuple, - rudder_speed: Scalar, + control_speed: Scalar, ): """Initializes the class attributes. Args: - `current_heading` (Scalar): Current boat heading direction in degrees. - `desired_heading` (Scalar): Target boating heading direction in degrees. + `current_heading` (Scalar): Current boat heading direction in degrees, + 0 degrees (North) at the positive y axis and increasing clockwise. + `desired_heading` (Scalar): Target boating heading direction in degrees, + 0 degrees (North) at the positive y axis and increasing clockwise. `current_control_ang` (Scalar): Current control mechanism angle in degrees. - `time_step` (Scalar): Time per iteration given in degrees/second. + `time_step` (Scalar): Time per iteration given in seconds. `kp` (Scalar): Proportional constant when calculating error. - `cp` (Scalar): Timeseries of error values computed over time. - `max_angle_range` (tuple): Tuple of minimum to maximum control angle range in degrees - `rudder_speed` (Scalar): Speed of controller change in degrees per second + `cp` (Scalar): Tuning parameter for control action + `control_speed` (Scalar): Speed of controller change in degrees per second """ - super().__init__(current_control_ang, time_step, max_angle_range) - - self.current_heading = current_heading - self.desired_heading = desired_heading + super().__init__( + current_control_ang, + time_step, + control_speed, + ) + + self.current_heading = bound_to_180(current_heading) # bound (-180, 180] in degrees + self.desired_heading = bound_to_180(desired_heading) # bound (-180, 180] in degrees self.kp = kp self.cp = cp - self.max_angle_range = max_angle_range - self.rudder_speed = rudder_speed self.running_error = 0.0 # keeps track of remaining error between desired and current + self.setpoint = 0.0 # current setpoint angle in degrees - def compute_error( - self, desired: Scalar, current: Scalar - ) -> Scalar: # angle passed in as radians + def compute_error(self) -> Scalar: # angle passed in as radians """Computes the error between desired and current heading implementation taken from: https://stackoverflow.com/a/2007279 Angles are bound with the convention (-180, 180] - Args: - `desired` (Scalar): New desired heading in degrees - `current` (Scalar): New current heading in degrees - Returns: - Scalar: The error between the given headings in radians. + Scalar: The error between the given headings in radians, 0 radians at positive + y axis and increasing clockwise """ - current_bound, desired_bound = map(bound_to_180, (current, desired)) - desired_rad, current_rad = np.deg2rad(desired_bound), np.deg2rad(current_bound) + desired_rad, current_rad = np.deg2rad(self.desired_heading), np.deg2rad( + self.current_heading + ) error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) - return error + return error # in radians - def compute_error_angle(self) -> Scalar: - """Computes the feedback angle from the given error (in radians) - Calculations done using Raye's implementation + def compute_setpoint(self) -> Scalar: + """Computes the corresponding control error angle between current control angle and + target control angle. Uses Raye's implementation from: https://github.com/UBCSailbot/raye-boat-controller/blob/master/python/tack_controller.py Returns: - Scalar: Difference between current and target rudder angle in degrees. - """ - error = self.compute_error(self.current_heading, self.desired_heading) + Scalar: Corresponding error angle between the + current and target control angle in degrees""" - if abs(error) > (pi / 4): # limited between (-45, 45) - raise ValueError("Heading_error must be between -pi/4 and pi/4") + heading_error = self.compute_error() # heading_error in radians - rudder_change = (self.kp * error) / (1 + (self.cp * error)) + if abs(heading_error) > np.sum(abs(np.deg2rad(self.MAX_ANGLE_RANGE))): + raise ValueError("heading_error must be less than the total max_rudder angle range") - if abs(rudder_change) > (pi / 2): # greatest change is 90 degrees - raise ValueError("Rudder_change cannot be greater than pi / 2") + rudder_setpoint = (self.kp * heading_error) / (1 + (self.cp * abs(heading_error))) - rudder_change_deg = np.rad2deg(rudder_change) - self.running_error = rudder_change_deg + if abs(rudder_setpoint) > self.MAX_ANGLE_RANGE[1]: + raise ValueError("rudder_change must be between -pi/4 and pi/4") - return rudder_change_deg + rudder_setpoint_deg = np.rad2deg(rudder_setpoint) # in degrees + self.running_error = rudder_setpoint_deg - self.current_control_ang # in degrees + self.setpoint = rudder_setpoint_deg # in degrees - def compute_setpoint(self) -> Scalar: - """Calculates the rudder setpoint angle. Only called at the very beginning once - to determine the setpoint angle. + return rudder_setpoint # in degrees - Returns: - The rudder setpoint angle in degrees - """ - return self.current_control_ang + self.compute_error_angle() - - def reset_desired_heading(self, target_angle: Scalar) -> None: - """Resets a new desired heading angle. Must recompute all errors and - feedback angles again for new iteration loop. + def reset_setpoint(self, new_desired_heading: Scalar) -> None: + """Resets a new desired heading angle, therefore recalculating the corresponding + setpoint and running error. Args: - `target_angle` (Scalar): New desired heading + `new_desired_heading` (Scalar): New desired heading in degrees """ - self.desired_heading = target_angle + + self.desired_heading = new_desired_heading + self.compute_setpoint() def update_state(self) -> bool: - """Updates the rudder angle iteratively towards the target rudder setpoint based - on the rudder_speed and time step parameters + """Updates the controller position iteratively based on control_speed * time_step, until + the control target angle is reached. + Returns: - False if target angle was not reached, else True if desired heading has been reached + False if target control angle was not reached, else + True if target control angle has been reached (running error = 0) """ if self.running_error > 0: - change = self.rudder_speed * self.time_step + change = self.control_speed * self.time_step elif self.running_error < 0: - change = -self.rudder_speed * self.time_step + change = -self.control_speed * self.time_step else: return True if abs(self.running_error) > change: - next_control = max(self.current_control_ang + change, self.max_angle_range[0]) + next_control = max(self.current_control_ang + change, self.MAX_ANGLE_RANGE[0]) self.running_error += change else: next_control = max( - self.current_control_ang + self.running_error, self.max_angle_range[0] + self.current_control_ang + self.running_error, self.MAX_ANGLE_RANGE[0] ) self.running_error = 0 return True - self.current_control_ang = min(next_control, self.max_angle_range[1]) + self.current_control_ang = min(next_control, self.MAX_ANGLE_RANGE[1]) return False @@ -189,6 +195,8 @@ class SailController(ActuatorController): SailController Extends: ActuatorController """ + MAX_ANGLE_RANGE = (-7, 7) + def __init__( self, target_angle: Scalar, @@ -196,65 +204,73 @@ def __init__( time_step: Scalar, kp: Scalar, cp: Scalar, - max_angle_range: tuple, - sail_control_speed: Scalar, + control_speed: Scalar, ): """Initializes the class attributes. Args: - `current_heading` (Scalar): Current boat heading direction in degrees. - `desired_heading` (Scalar): Target boating heading direction in degrees. + `target_angle` (Scalar): Target angle for sail controller in degrees. + 0 degrees (North) at the positive y axis and increasing clockwise. `current_control_ang` (Scalar): Current control mechanism angle in degrees. - `time_step` (Scalar): Time per iteration given in degrees/second. + `time_step` (Scalar): Time per iteration given in seconds. `kp` (Scalar): Proportional constant when calculating error. - `cp` (Scalar): Timeseries of error values computed over time. - `max_angle_range` (tuple): Tuple of minimum to maximum control angle range + `cp` (Scalar): Tuning parameter for control action. + `control_speed` (Scalar): Speed in which the controller turns in degrees / seconds. """ - super().__init__(current_control_ang, time_step, max_angle_range) + super().__init__(current_control_ang, time_step, control_speed) self.target_angle = target_angle self.kp = kp self.cp = cp - self.sail_control_speed = sail_control_speed self.running_error = 0.0 - def compute_error_angle(self): - """Computes the feedback angle between setpoint and current sail angles""" - return self.target_angle - self.current_control_ang + def compute_error(self): + """Computes the corresponding control error angle between current control angle and + target control angle - def reset_target_angle(self, new_target: Scalar) -> None: - """Resets a new desired heading angle and clears all previous - headings from current_control_ang list and running time for time_series + Returns: + Scalar: Corresponding error angle between the + current and target control angle in degrees""" + + self.running_error = self.target_angle - self.current_control_ang + + def reset_setpoint(self, new_target: Scalar) -> None: + """Resets a new desired sail actuator angle and updates the running_error Args: - `target_angle` (Scalar): New desired heading + `target_angle` (Scalar): New desired sail controller angle """ self.target_angle = new_target + self.compute_error def update_state(self) -> bool: - """Updates the sail angle iteratively towards the target sail setpoint + """Updates the controller position iteratively based on control_speed * time_step, until + the control target angle is reached. + Returns: - False if target angle was not reached, else True if target angle has been reached + False if target control angle was not reached, else + True if target control angle has been reached (running error = 0) """ + if self.running_error > 0: - change = self.sail_control_speed * self.time_step + change = self.control_speed * self.time_step elif self.running_error < 0: - change = -self.sail_control_speed * self.time_step + change = -self.control_speed * self.time_step else: return True if abs(self.running_error) > change: - next_control = max(self.current_control_ang + change, self.max_angle_range[0]) + next_control = max(self.current_control_ang + change, self.MAX_ANGLE_RANGE[0]) self.running_error += change else: next_control = max( - self.current_control_ang + self.running_error, self.max_angle_range[0] + self.current_control_ang + self.running_error, self.MAX_ANGLE_RANGE[0] ) self.running_error = 0 return True - self.current_control_ang = min(next_control, self.max_angle_range[1]) + self.current_control_ang = min(next_control, self.MAX_ANGLE_RANGE[1]) return False diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index 2f53e1a59..9ff986433 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -17,9 +17,9 @@ class TestRudderController: [ (60, 45, 10.2, 0.5, 0.7, 0.34, (45, -45), 2), (180, 10, 4.7, 1, 0.7, 0.34, (45, -45), 1.5), - (-45.5, 360.7, -20, 2, 0.7, 0.34, (45, -45), 0.5), - (-180, 180, 0, 1.5, 0.7, 0.34, (45, -45), 1), - (0, 70, 7.5, 0.5, 0.7, 0.34, (45, -45), 2), + (-45.5, 360.7, -20.5, 2, 0.7, 0.34, (45, -45), 0.5), + (-180, 180, -45, 1.5, 0.7, 0.34, (45, -45), 1), + (0, 70, 45, 0.5, 0.7, 0.34, (45, -45), 2), ], ) def test_compute_error( @@ -51,12 +51,17 @@ def test_compute_error( assert np.equal(expected_error, error) @pytest.mark.parametrize( - "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", + "current_heading, desired_heading, \ + current_control_ang,time_step, kp, cp, max_angle_range, rudder_speed", [ - (60, 45, 10, 0.5, 0.7, 0.34, (45, -45)), + (60, 45, 10.2, 0.5, 0.7, 0.34, (45, -45), 2), + (180, 10, 4.7, 1, 0.7, 0.34, (45, -45), 1.5), + (-45.5, 360.7, -20.5, 2, 0.7, 0.34, (45, -45), 0.5), + (-180, 180, -45, 1.5, 0.7, 0.34, (45, -45), 1), + (0, 70, 45, 0.5, 0.7, 0.34, (45, -45), 2), ], ) - def test_compute_feedback_angle( + def test_compute_error_angle( self, current_heading: Scalar, desired_heading: Scalar, @@ -78,10 +83,10 @@ def test_compute_feedback_angle( max_angle_range, rudder_speed, ) - feedback_angle = rudder_controller.compute_feedback_angle() + feedback_angle = rudder_controller.compute_error_angle() error = rudder_controller.compute_error(desired_heading, current_heading) expected_angle = (rudder_controller.kp * error) / (1 + (rudder_controller.cp * error)) - assert np.equal(feedback_angle, expected_angle) + assert np.equal(feedback_angle, np.rad2deg(expected_angle)) @pytest.mark.parametrize( "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", @@ -113,7 +118,7 @@ def test_compute_setpoint( ) setpoint = rudder_controller.compute_setpoint() expected_setpoint = ( - rudder_controller.current_control_ang + rudder_controller.compute_feedback_angle() + rudder_controller.current_control_ang + rudder_controller.compute_error_angle() ) assert np.equal(setpoint, expected_setpoint) From 301687f64ce036f26396aed0dde29b22f4797717 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 16 Mar 2024 15:50:20 -0700 Subject: [PATCH 04/36] Finished optimization objectives for controller implementation --- .vscode/settings.json | 22 ++++ .../boat_simulator/common/constants.py | 6 + .../nodes/low_level_control/controller.py | 119 +++++++----------- .../low_level_control/test_controller.py | 64 ++-------- 4 files changed, 79 insertions(+), 132 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..f8d4b6139 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "python.autoComplete.extraPaths": [ + "/workspaces/sailbot_workspace/build/local_pathfinding", + "/workspaces/sailbot_workspace/build/integration_tests", + "/workspaces/sailbot_workspace/build/controller", + "/workspaces/sailbot_workspace/build/boat_simulator", + "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", + "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", + "/opt/ros/humble/local/lib/python3.10/dist-packages", + "/opt/ros/humble/lib/python3.10/site-packages" + ], + "python.analysis.extraPaths": [ + "/workspaces/sailbot_workspace/build/local_pathfinding", + "/workspaces/sailbot_workspace/build/integration_tests", + "/workspaces/sailbot_workspace/build/controller", + "/workspaces/sailbot_workspace/build/boat_simulator", + "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", + "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", + "/opt/ros/humble/local/lib/python3.10/dist-packages", + "/opt/ros/humble/lib/python3.10/site-packages" + ] +} \ No newline at end of file diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 0fefb46c2..31f1679ce 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -61,3 +61,9 @@ class PhysicsEnginePublisherTopics: # Number of times the rudder action server routine's main loop executes RUDDER_ACTUATION_NUM_LOOP_EXECUTIONS = 10 # TODO This is a placeholder until the PID is integrated + +# Max rudder control angle range +RUDDER_MAX_ANGLE_RANGE = (-45, 45) + +# Max sail actuator control angle range +SAIL_MAX_ANGLE_RANGE = (-7, 7) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index 0a923020e..ed51b23a9 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -1,10 +1,12 @@ """Low level control logic for actuating the rudder and the sail.""" from abc import ABC, abstractmethod -from math import atan2, cos, sin +from math import atan2, copysign, cos, sin +from typing import Tuple import numpy as np +from boat_simulator.common.constants import RUDDER_MAX_ANGLE_RANGE, SAIL_MAX_ANGLE_RANGE from boat_simulator.common.types import Scalar from boat_simulator.common.utils import bound_to_180 @@ -16,6 +18,7 @@ class ActuatorController(ABC): `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time taken per iteration given in seconds. `control_speed` (Scalar): Speed of control angle change in degrees / second. + 'running_error' (Scalar): Error between current and target control angle. """ def __init__( @@ -23,6 +26,8 @@ def __init__( current_control_ang: Scalar, time_step: Scalar, control_speed: Scalar, + running_error: Scalar, + max_angle_range: Tuple[Scalar, Scalar], ): """Initializes the class attributes. Note that this class cannot be directly instantiated. @@ -30,23 +35,43 @@ def __init__( `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time per iteration given in seconds. `control_speed` (Scalar): Speed of control angle change in degrees / second. + 'running_error' (Scalar): Error between current and target control angle. """ self.current_control_ang = current_control_ang self.time_step = time_step self.control_speed = control_speed + self.running_error = running_error + self.max_angle_range = max_angle_range - @abstractmethod def update_state(self) -> bool: """Updates the controller position iteratively based on control_speed * time_step, until the control target angle is reached. + Args: + `max_angle_range` (tuple): Max angle range individual to each different controller + Returns: False if target control angle was not reached, else True if target control angle has been reached (running error = 0) """ + if np.isclose(self.running_error, 0, 0.01): + return True + else: + change = copysign(1, self.running_error) * self.control_speed * self.time_step - pass + if abs(self.running_error) > change: + next_control = max(self.current_control_ang + change, self.max_angle_range[0]) + self.running_error += change + else: + next_control = max( + self.current_control_ang + self.running_error, self.max_angle_range[0] + ) + self.running_error = 0 + return True + + self.current_control_ang = min(next_control, self.max_angle_range[1]) + return False @abstractmethod def reset_setpoint(self, new_target_angle: Scalar) -> None: @@ -65,8 +90,6 @@ class RudderController(ActuatorController): RudderController Extends: ActuatorController """ - MAX_ANGLE_RANGE = (-45, 45) - def __init__( self, current_heading: Scalar, @@ -76,6 +99,8 @@ def __init__( kp: Scalar, cp: Scalar, control_speed: Scalar, + running_error=0.0, + max_angle_range=RUDDER_MAX_ANGLE_RANGE, ): """Initializes the class attributes. @@ -87,21 +112,19 @@ def __init__( `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time per iteration given in seconds. `kp` (Scalar): Proportional constant when calculating error. - `cp` (Scalar): Tuning parameter for control action - `control_speed` (Scalar): Speed of controller change in degrees per second + `cp` (Scalar): Tuning parameter for control action. + `control_speed` (Scalar): Speed of controller change in degrees per second. + 'running_error' (Scalar): Error between current and target control angle. """ super().__init__( - current_control_ang, - time_step, - control_speed, + current_control_ang, time_step, control_speed, running_error, max_angle_range ) self.current_heading = bound_to_180(current_heading) # bound (-180, 180] in degrees self.desired_heading = bound_to_180(desired_heading) # bound (-180, 180] in degrees self.kp = kp self.cp = cp - self.running_error = 0.0 # keeps track of remaining error between desired and current self.setpoint = 0.0 # current setpoint angle in degrees def compute_error(self) -> Scalar: # angle passed in as radians @@ -132,12 +155,12 @@ def compute_setpoint(self) -> Scalar: heading_error = self.compute_error() # heading_error in radians - if abs(heading_error) > np.sum(abs(np.deg2rad(self.MAX_ANGLE_RANGE))): + if abs(heading_error) > np.sum(abs(np.deg2rad(RUDDER_MAX_ANGLE_RANGE))): raise ValueError("heading_error must be less than the total max_rudder angle range") rudder_setpoint = (self.kp * heading_error) / (1 + (self.cp * abs(heading_error))) - if abs(rudder_setpoint) > self.MAX_ANGLE_RANGE[1]: + if abs(rudder_setpoint) > RUDDER_MAX_ANGLE_RANGE[1]: raise ValueError("rudder_change must be between -pi/4 and pi/4") rudder_setpoint_deg = np.rad2deg(rudder_setpoint) # in degrees @@ -158,36 +181,6 @@ def reset_setpoint(self, new_desired_heading: Scalar) -> None: self.desired_heading = new_desired_heading self.compute_setpoint() - def update_state(self) -> bool: - """Updates the controller position iteratively based on control_speed * time_step, until - the control target angle is reached. - - - Returns: - False if target control angle was not reached, else - True if target control angle has been reached (running error = 0) - """ - - if self.running_error > 0: - change = self.control_speed * self.time_step - elif self.running_error < 0: - change = -self.control_speed * self.time_step - else: - return True - - if abs(self.running_error) > change: - next_control = max(self.current_control_ang + change, self.MAX_ANGLE_RANGE[0]) - self.running_error += change - else: - next_control = max( - self.current_control_ang + self.running_error, self.MAX_ANGLE_RANGE[0] - ) - self.running_error = 0 - return True - - self.current_control_ang = min(next_control, self.MAX_ANGLE_RANGE[1]) - return False - class SailController(ActuatorController): """General Class for the Actuator Controller. @@ -195,8 +188,6 @@ class SailController(ActuatorController): SailController Extends: ActuatorController """ - MAX_ANGLE_RANGE = (-7, 7) - def __init__( self, target_angle: Scalar, @@ -205,6 +196,8 @@ def __init__( kp: Scalar, cp: Scalar, control_speed: Scalar, + running_error=0.0, + max_angle_range=SAIL_MAX_ANGLE_RANGE, ): """Initializes the class attributes. @@ -216,14 +209,16 @@ def __init__( `kp` (Scalar): Proportional constant when calculating error. `cp` (Scalar): Tuning parameter for control action. `control_speed` (Scalar): Speed in which the controller turns in degrees / seconds. + 'running_error' (Scalar): Error between current and target control angle. """ - super().__init__(current_control_ang, time_step, control_speed) + super().__init__( + current_control_ang, time_step, control_speed, running_error, max_angle_range + ) self.target_angle = target_angle self.kp = kp self.cp = cp - self.running_error = 0.0 def compute_error(self): """Computes the corresponding control error angle between current control angle and @@ -244,33 +239,3 @@ def reset_setpoint(self, new_target: Scalar) -> None: """ self.target_angle = new_target self.compute_error - - def update_state(self) -> bool: - """Updates the controller position iteratively based on control_speed * time_step, until - the control target angle is reached. - - - Returns: - False if target control angle was not reached, else - True if target control angle has been reached (running error = 0) - """ - - if self.running_error > 0: - change = self.control_speed * self.time_step - elif self.running_error < 0: - change = -self.control_speed * self.time_step - else: - return True - - if abs(self.running_error) > change: - next_control = max(self.current_control_ang + change, self.MAX_ANGLE_RANGE[0]) - self.running_error += change - else: - next_control = max( - self.current_control_ang + self.running_error, self.MAX_ANGLE_RANGE[0] - ) - self.running_error = 0 - return True - - self.current_control_ang = min(next_control, self.MAX_ANGLE_RANGE[1]) - return False diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index 9ff986433..b51a3b531 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -30,8 +30,7 @@ def test_compute_error( time_step: Scalar, kp: Scalar, cp: Scalar, - max_angle_range: tuple, - rudder_speed: Scalar, + control_speed: Scalar, ): rudder_controller = RudderController( @@ -41,10 +40,9 @@ def test_compute_error( time_step, kp, cp, - max_angle_range, - rudder_speed, + control_speed, ) - error = rudder_controller.compute_error(desired_heading, current_heading) + error = rudder_controller.compute_error() desired_rad = np.deg2rad(bound_to_180(desired_heading)) current_rad = np.deg2rad(bound_to_180(current_heading)) expected_error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) @@ -69,59 +67,17 @@ def test_compute_error_angle( time_step: Scalar, kp: Scalar, cp: Scalar, - max_angle_range: tuple, - rudder_speed: Scalar, + control_speed: Scalar, ): rudder_controller = RudderController( - current_heading, - desired_heading, - current_control_ang, - time_step, - kp, - cp, - max_angle_range, - rudder_speed, + current_heading, desired_heading, current_control_ang, time_step, kp, cp, control_speed ) - feedback_angle = rudder_controller.compute_error_angle() - error = rudder_controller.compute_error(desired_heading, current_heading) + feedback_angle = rudder_controller.compute_setpoint() + error = rudder_controller.compute_error() expected_angle = (rudder_controller.kp * error) / (1 + (rudder_controller.cp * error)) assert np.equal(feedback_angle, np.rad2deg(expected_angle)) - @pytest.mark.parametrize( - "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", - [ - (60, 45, 10, 0.5, 0.7, 0.34, (45, -45)), - ], - ) - def test_compute_setpoint( - self, - current_heading: Scalar, - desired_heading: Scalar, - current_control_ang: Scalar, - time_step: Scalar, - kp: Scalar, - cp: Scalar, - max_angle_range: tuple, - rudder_speed: Scalar, - ): - - rudder_controller = RudderController( - current_heading, - desired_heading, - current_control_ang, - time_step, - kp, - cp, - max_angle_range, - rudder_speed, - ) - setpoint = rudder_controller.compute_setpoint() - expected_setpoint = ( - rudder_controller.current_control_ang + rudder_controller.compute_error_angle() - ) - assert np.equal(setpoint, expected_setpoint) - @pytest.mark.parametrize( "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", [ @@ -136,8 +92,7 @@ def test_update_state( time_step: Scalar, kp: Scalar, cp: Scalar, - max_angle_range: tuple, - rudder_speed: Scalar, + control_speed: Scalar, ): rudder_controller = RudderController( @@ -147,8 +102,7 @@ def test_update_state( time_step, kp, cp, - max_angle_range, - rudder_speed, + control_speed, ) rudder_controller.update_state() assert np.equal(rudder_controller.current_control_ang, 12) From 99e722eddae2bbf9895948174f05a99237462e3b Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Tue, 19 Mar 2024 00:13:39 -0700 Subject: [PATCH 05/36] Test cases almost completed --- .../nodes/low_level_control/controller.py | 37 ++- .../low_level_control/test_controller.py | 227 ++++++++++-------- 2 files changed, 156 insertions(+), 108 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index ed51b23a9..c7ea6e3f1 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -55,23 +55,24 @@ def update_state(self) -> bool: False if target control angle was not reached, else True if target control angle has been reached (running error = 0) """ + error_tracker = False if np.isclose(self.running_error, 0, 0.01): return True else: change = copysign(1, self.running_error) * self.control_speed * self.time_step - if abs(self.running_error) > change: + if abs(self.running_error) > abs(change): next_control = max(self.current_control_ang + change, self.max_angle_range[0]) - self.running_error += change + self.running_error -= change else: next_control = max( self.current_control_ang + self.running_error, self.max_angle_range[0] ) self.running_error = 0 - return True + error_tracker = True self.current_control_ang = min(next_control, self.max_angle_range[1]) - return False + return error_tracker @abstractmethod def reset_setpoint(self, new_target_angle: Scalar) -> None: @@ -155,9 +156,6 @@ def compute_setpoint(self) -> Scalar: heading_error = self.compute_error() # heading_error in radians - if abs(heading_error) > np.sum(abs(np.deg2rad(RUDDER_MAX_ANGLE_RANGE))): - raise ValueError("heading_error must be less than the total max_rudder angle range") - rudder_setpoint = (self.kp * heading_error) / (1 + (self.cp * abs(heading_error))) if abs(rudder_setpoint) > RUDDER_MAX_ANGLE_RANGE[1]: @@ -167,7 +165,7 @@ def compute_setpoint(self) -> Scalar: self.running_error = rudder_setpoint_deg - self.current_control_ang # in degrees self.setpoint = rudder_setpoint_deg # in degrees - return rudder_setpoint # in degrees + return rudder_setpoint_deg # in degrees def reset_setpoint(self, new_desired_heading: Scalar) -> None: """Resets a new desired heading angle, therefore recalculating the corresponding @@ -181,6 +179,15 @@ def reset_setpoint(self, new_desired_heading: Scalar) -> None: self.desired_heading = new_desired_heading self.compute_setpoint() + def change_desired_heading(self, changed_desired_heading) -> None: + """Changes desired heading to a new angle. Used for testing purposes + + Args: + `changed_desired_heading` (Scalar): New desired heading in degrees + + """ + self.desired_heading = changed_desired_heading + class SailController(ActuatorController): """General Class for the Actuator Controller. @@ -220,7 +227,7 @@ def __init__( self.kp = kp self.cp = cp - def compute_error(self): + def compute_error(self) -> Scalar: """Computes the corresponding control error angle between current control angle and target control angle @@ -229,6 +236,7 @@ def compute_error(self): current and target control angle in degrees""" self.running_error = self.target_angle - self.current_control_ang + return self.running_error def reset_setpoint(self, new_target: Scalar) -> None: """Resets a new desired sail actuator angle and updates the running_error @@ -238,4 +246,13 @@ def reset_setpoint(self, new_target: Scalar) -> None: """ self.target_angle = new_target - self.compute_error + self.compute_error() + + def reset_target_angle(self, changed_target_angle) -> None: + """Changes target_angle desired to a new angle. Used for testing purposes + + Args: + `changed_target_angle` (Scalar): New desired heading in degrees + + """ + self.target_angle = changed_target_angle diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index b51a3b531..db8fde464 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -5,104 +5,135 @@ import numpy as np import pytest -from boat_simulator.common.types import Scalar -from boat_simulator.common.utils import bound_to_180 -from boat_simulator.nodes.low_level_control.controller import RudderController - - -class TestRudderController: - @pytest.mark.parametrize( - "current_heading, desired_heading, current_control_ang, \ - time_step, kp, cp, max_angle_range, rudder_speed", - [ - (60, 45, 10.2, 0.5, 0.7, 0.34, (45, -45), 2), - (180, 10, 4.7, 1, 0.7, 0.34, (45, -45), 1.5), - (-45.5, 360.7, -20.5, 2, 0.7, 0.34, (45, -45), 0.5), - (-180, 180, -45, 1.5, 0.7, 0.34, (45, -45), 1), - (0, 70, 45, 0.5, 0.7, 0.34, (45, -45), 2), - ], +from boat_simulator.common.constants import RUDDER_MAX_ANGLE_RANGE +from boat_simulator.nodes.low_level_control.controller import ( + RudderController, + SailController, +) + + +@pytest.fixture( + params=[ + (60.3, 45, 0, 0.5, 0.7, 0.34, 2), + (-70.2, 30, 25, 0.5, 0.7, 0.34, 0.5), + (30.8, 20.4, 25, 1, 0.7, 0.34, 2), + (-24, -24, 9.2, 0.5, 0.7, 0.34, 2), + (90, -90, 30, 2, 0.7, 0.34, 1.5), + (50.488, -36.78, 30, 0.5, 0.7, 0.34, 1), + ] +) +def rudder_controller(request): + # Initialize the RudderController object with parameters from the fixture + current_heading, desired_heading, current_control_ang, time_step, kp, cp, control_speed = ( + request.param + ) + return RudderController( + current_heading=current_heading, + desired_heading=desired_heading, + current_control_ang=current_control_ang, + time_step=time_step, + kp=kp, + cp=cp, + control_speed=control_speed, ) - def test_compute_error( - self, - current_heading: Scalar, - desired_heading: Scalar, - current_control_ang: Scalar, - time_step: Scalar, - kp: Scalar, - cp: Scalar, - control_speed: Scalar, - ): - - rudder_controller = RudderController( - current_heading, - desired_heading, - current_control_ang, - time_step, - kp, - cp, - control_speed, - ) - error = rudder_controller.compute_error() - desired_rad = np.deg2rad(bound_to_180(desired_heading)) - current_rad = np.deg2rad(bound_to_180(current_heading)) - expected_error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) - assert np.equal(expected_error, error) - - @pytest.mark.parametrize( - "current_heading, desired_heading, \ - current_control_ang,time_step, kp, cp, max_angle_range, rudder_speed", - [ - (60, 45, 10.2, 0.5, 0.7, 0.34, (45, -45), 2), - (180, 10, 4.7, 1, 0.7, 0.34, (45, -45), 1.5), - (-45.5, 360.7, -20.5, 2, 0.7, 0.34, (45, -45), 0.5), - (-180, 180, -45, 1.5, 0.7, 0.34, (45, -45), 1), - (0, 70, 45, 0.5, 0.7, 0.34, (45, -45), 2), - ], + + +def test_compute_error(rudder_controller): + # Test compute_error method of RudderController + error = rudder_controller.compute_error() + desired_rad = np.deg2rad(rudder_controller.desired_heading) + current_rad = np.deg2rad(rudder_controller.current_heading) + exp_error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) + assert np.equal(error, exp_error) + + +def test_compute_setpoint(rudder_controller): + # Test compute_setpoint method of RudderController + setpoint = rudder_controller.compute_setpoint() + heading_error = rudder_controller.compute_error() # heading_error in radians + + rudder_setpoint = (rudder_controller.kp * heading_error) / ( + 1 + (rudder_controller.cp * abs(heading_error)) ) - def test_compute_error_angle( - self, - current_heading: Scalar, - desired_heading: Scalar, - current_control_ang: Scalar, - time_step: Scalar, - kp: Scalar, - cp: Scalar, - control_speed: Scalar, - ): - - rudder_controller = RudderController( - current_heading, desired_heading, current_control_ang, time_step, kp, cp, control_speed - ) - feedback_angle = rudder_controller.compute_setpoint() - error = rudder_controller.compute_error() - expected_angle = (rudder_controller.kp * error) / (1 + (rudder_controller.cp * error)) - assert np.equal(feedback_angle, np.rad2deg(expected_angle)) - - @pytest.mark.parametrize( - "current_heading, desired_heading, current_control_ang,time_step, kp, cp, max_angle_range", - [ - (60, 45, 10, 0.5, 0.7, 0.34, (45, -45)), - ], + + if abs(rudder_setpoint) > RUDDER_MAX_ANGLE_RANGE[1]: + raise ValueError("rudder_change must be between -pi/4 and pi/4") + + rudder_setpoint_deg = np.rad2deg(rudder_setpoint) # in degrees + running_error = rudder_setpoint_deg - rudder_controller.current_control_ang # in degrees + assert np.equal(setpoint, rudder_setpoint_deg) + assert np.equal(running_error, rudder_controller.running_error) + + +def test_reset_setpoint(rudder_controller): + # Test reset_setpoint method of RudderController + new_desired_heading = 60 # Example value + expected = rudder_controller.reset_setpoint(new_desired_heading) + rudder_controller.change_desired_heading(new_desired_heading) + calculated = rudder_controller.compute_setpoint() + np.equal(calculated, expected) + + +# testing for one iteration only +def test_update_state(rudder_controller): + rudder_controller.compute_setpoint() + assert rudder_controller.update_state() == (abs(rudder_controller.running_error) == 0) + + +def test_update_state_continuous(rudder_controller): + pass + # rudder_controller.compute_setpoint() + # progress = False + # counter = 0 + # while not np.isclose(rudder_controller.running_error, 0, 0.1): + # counter += 1 + # rudder_controller.update_state() + # if rudder_controller.running_error == 0: + # progress = True + # break + # if counter > 50: + # break + # assert progress + + +@pytest.fixture( + params=[ + (45, 0.9, 0.5, 0.7, 0.34, 2), # Test case 1 + (-45.2, 15, 1, 0.7, 0.34, 1.5), + (0, -60, 2, 0.7, 0.34, 0.5), + (70.2, -70.5, 0.5, 0.7, 0.34, 1), + (24, 24, 1, 0.7, 0.34, 2), + ] +) +def sail_controller(request): + # Initialize the SailController object with parameters from the fixture + target_angle, current_control_ang, time_step, kp, cp, control_speed = request.param + return SailController( + target_angle=target_angle, + current_control_ang=current_control_ang, + time_step=time_step, + kp=kp, + cp=cp, + control_speed=control_speed, ) - def test_update_state( - self, - current_heading: Scalar, - desired_heading: Scalar, - current_control_ang: Scalar, - time_step: Scalar, - kp: Scalar, - cp: Scalar, - control_speed: Scalar, - ): - - rudder_controller = RudderController( - current_heading, - desired_heading, - current_control_ang, - time_step, - kp, - cp, - control_speed, - ) - rudder_controller.update_state() - assert np.equal(rudder_controller.current_control_ang, 12) + + +def test_compute_error_1(sail_controller): + # Test compute_error method of SailController + error = sail_controller.compute_error() + exp_error = sail_controller.target_angle - sail_controller.current_control_ang + assert np.equal(error, exp_error) + + +def test_reset_setpoint_1(sail_controller): + # Test reset_setpoint method of SailController + new_target = 90 # Example value + sail_controller.reset_setpoint(new_target) + assert np.equal(new_target, sail_controller.target_angle) + + +def test_update_state_1(sail_controller): + iteration_speed = sail_controller.time_step * sail_controller.control_speed + assert sail_controller.update_state() == ( + sail_controller.running_error >= iteration_speed + ) or sail_controller.update_state() == (sail_controller.running_error == 0) From 60bf855ed4295b45bde4599e1006df024b757122 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Tue, 19 Mar 2024 01:42:34 -0700 Subject: [PATCH 06/36] Finish actuation testing for sail and rudder controller --- .../low_level_control/test_controller.py | 72 +++++++++++++++---- 1 file changed, 59 insertions(+), 13 deletions(-) diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index db8fde464..2a656362d 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -81,19 +81,47 @@ def test_update_state(rudder_controller): def test_update_state_continuous(rudder_controller): - pass - # rudder_controller.compute_setpoint() - # progress = False - # counter = 0 - # while not np.isclose(rudder_controller.running_error, 0, 0.1): - # counter += 1 - # rudder_controller.update_state() - # if rudder_controller.running_error == 0: - # progress = True - # break - # if counter > 50: - # break - # assert progress + rudder_controller.compute_setpoint() + progress = False + counter = 0 + if np.isclose(rudder_controller.running_error, 0, 0.1): + progress = True + else: + while not np.isclose(rudder_controller.running_error, 0, 0.1): + counter += 1 + rudder_controller.update_state() + if rudder_controller.running_error == 0: + progress = True + break + if counter > 1000: + break + assert progress + + +def test_update_state_reset(rudder_controller): + rudder_controller.compute_setpoint() + counter = 0 + while not np.isclose(rudder_controller.running_error, 0, 0.1): + counter += 1 + rudder_controller.update_state() + if rudder_controller.running_error == 0: + break + if counter > 1000: + break + rudder_controller.reset_setpoint(-1) + reset_progress = False + if np.isclose(rudder_controller.running_error, 0, 0.1): + reset_progress = True + else: + while not np.isclose(rudder_controller.running_error, 0, 0.1): + counter += 1 + rudder_controller.update_state() + if rudder_controller.running_error == 0: + reset_progress = True + break + if counter > 1000: + break + assert reset_progress @pytest.fixture( @@ -137,3 +165,21 @@ def test_update_state_1(sail_controller): assert sail_controller.update_state() == ( sail_controller.running_error >= iteration_speed ) or sail_controller.update_state() == (sail_controller.running_error == 0) + + +def test_update_state_continuous_1(sail_controller): + sail_controller.compute_error() + progress = False + counter = 0 + if np.isclose(sail_controller.running_error, 0, 0.1): + progress = True + else: + while not np.isclose(sail_controller.running_error, 0, 0.1): + counter += 1 + sail_controller.update_state() + if sail_controller.running_error == 0: + progress = True + break + if counter > 1000: + break + assert progress From b045eac4debd25b6fdf24d6d4115d55efc07eafd Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Wed, 20 Mar 2024 01:27:26 -0700 Subject: [PATCH 07/36] Testing and controller fixes --- .vscode/settings.json | 22 --------- .../boat_simulator/common/constants.py | 4 +- .../nodes/low_level_control/controller.py | 47 ++++++++++--------- .../low_level_control/test_controller.py | 44 ++++++++++++----- 4 files changed, 60 insertions(+), 57 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index f8d4b6139..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "python.autoComplete.extraPaths": [ - "/workspaces/sailbot_workspace/build/local_pathfinding", - "/workspaces/sailbot_workspace/build/integration_tests", - "/workspaces/sailbot_workspace/build/controller", - "/workspaces/sailbot_workspace/build/boat_simulator", - "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", - "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", - "/opt/ros/humble/local/lib/python3.10/dist-packages", - "/opt/ros/humble/lib/python3.10/site-packages" - ], - "python.analysis.extraPaths": [ - "/workspaces/sailbot_workspace/build/local_pathfinding", - "/workspaces/sailbot_workspace/build/integration_tests", - "/workspaces/sailbot_workspace/build/controller", - "/workspaces/sailbot_workspace/build/boat_simulator", - "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", - "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", - "/opt/ros/humble/local/lib/python3.10/dist-packages", - "/opt/ros/humble/lib/python3.10/site-packages" - ] -} \ No newline at end of file diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 31f1679ce..82bb30b73 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -62,8 +62,8 @@ class PhysicsEnginePublisherTopics: # Number of times the rudder action server routine's main loop executes RUDDER_ACTUATION_NUM_LOOP_EXECUTIONS = 10 # TODO This is a placeholder until the PID is integrated -# Max rudder control angle range +# Max rudder control angle range in degrees RUDDER_MAX_ANGLE_RANGE = (-45, 45) -# Max sail actuator control angle range +# Max sail actuator control angle range in degrees SAIL_MAX_ANGLE_RANGE = (-7, 7) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index c7ea6e3f1..6b098954c 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -1,6 +1,5 @@ """Low level control logic for actuating the rudder and the sail.""" -from abc import ABC, abstractmethod from math import atan2, copysign, cos, sin from typing import Tuple @@ -11,7 +10,7 @@ from boat_simulator.common.utils import bound_to_180 -class ActuatorController(ABC): +class ActuatorController: """Abstract class for rudder and sail actuation mechanisms. Attributes: @@ -26,8 +25,8 @@ def __init__( current_control_ang: Scalar, time_step: Scalar, control_speed: Scalar, - running_error: Scalar, max_angle_range: Tuple[Scalar, Scalar], + running_error=0.0, ): """Initializes the class attributes. Note that this class cannot be directly instantiated. @@ -35,7 +34,7 @@ def __init__( `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time per iteration given in seconds. `control_speed` (Scalar): Speed of control angle change in degrees / second. - 'running_error' (Scalar): Error between current and target control angle. + 'running_error' (Scalar): Error between current and target control angle. Default to 0 """ self.current_control_ang = current_control_ang self.time_step = time_step @@ -59,7 +58,7 @@ def update_state(self) -> bool: if np.isclose(self.running_error, 0, 0.01): return True else: - change = copysign(1, self.running_error) * self.control_speed * self.time_step + change = copysign(self.control_speed * self.time_step, self.running_error) if abs(self.running_error) > abs(change): next_control = max(self.current_control_ang + change, self.max_angle_range[0]) @@ -74,16 +73,6 @@ def update_state(self) -> bool: self.current_control_ang = min(next_control, self.max_angle_range[1]) return error_tracker - @abstractmethod - def reset_setpoint(self, new_target_angle: Scalar) -> None: - """Resets a new target angle and computes a new corresponding setpoint - - Args: - `new_target_angle` (Scalar): New target angle in degrees - - """ - pass - class RudderController(ActuatorController): """General Class for the Actuator Controller. @@ -101,7 +90,7 @@ def __init__( cp: Scalar, control_speed: Scalar, running_error=0.0, - max_angle_range=RUDDER_MAX_ANGLE_RANGE, + max_angle_range=None, ): """Initializes the class attributes. @@ -118,10 +107,17 @@ def __init__( 'running_error' (Scalar): Error between current and target control angle. """ + super().__init__( - current_control_ang, time_step, control_speed, running_error, max_angle_range + current_control_ang, + time_step, + control_speed, + running_error, + max_angle_range, ) + self.max_angle_range = RUDDER_MAX_ANGLE_RANGE + self.running_error = 0.0 self.current_heading = bound_to_180(current_heading) # bound (-180, 180] in degrees self.desired_heading = bound_to_180(desired_heading) # bound (-180, 180] in degrees self.kp = kp @@ -158,8 +154,10 @@ def compute_setpoint(self) -> Scalar: rudder_setpoint = (self.kp * heading_error) / (1 + (self.cp * abs(heading_error))) - if abs(rudder_setpoint) > RUDDER_MAX_ANGLE_RANGE[1]: - raise ValueError("rudder_change must be between -pi/4 and pi/4") + rudder_setpoint = min( + max(rudder_setpoint, np.deg2rad(self.max_angle_range[0])), + np.deg2rad(self.max_angle_range[1]), + ) rudder_setpoint_deg = np.rad2deg(rudder_setpoint) # in degrees self.running_error = rudder_setpoint_deg - self.current_control_ang # in degrees @@ -167,7 +165,7 @@ def compute_setpoint(self) -> Scalar: return rudder_setpoint_deg # in degrees - def reset_setpoint(self, new_desired_heading: Scalar) -> None: + def reset_setpoint(self, new_desired_heading: Scalar, new_current_heading: Scalar) -> None: """Resets a new desired heading angle, therefore recalculating the corresponding setpoint and running error. @@ -177,6 +175,7 @@ def reset_setpoint(self, new_desired_heading: Scalar) -> None: """ self.desired_heading = new_desired_heading + self.current_heading = new_current_heading self.compute_setpoint() def change_desired_heading(self, changed_desired_heading) -> None: @@ -220,9 +219,15 @@ def __init__( """ super().__init__( - current_control_ang, time_step, control_speed, running_error, max_angle_range + current_control_ang, + time_step, + control_speed, + running_error, + max_angle_range, ) + self.max_angle_range = SAIL_MAX_ANGLE_RANGE + self.running_error = 0.0 self.target_angle = target_angle self.kp = kp self.cp = cp diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index 2a656362d..693ac1f8c 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -1,11 +1,10 @@ """Tests classes and functions in boat_simulator/nodes/controller.py""" -from math import atan2, cos, sin +from math import atan2, copysign, cos, sin import numpy as np import pytest -from boat_simulator.common.constants import RUDDER_MAX_ANGLE_RANGE from boat_simulator.nodes.low_level_control.controller import ( RudderController, SailController, @@ -56,8 +55,10 @@ def test_compute_setpoint(rudder_controller): 1 + (rudder_controller.cp * abs(heading_error)) ) - if abs(rudder_setpoint) > RUDDER_MAX_ANGLE_RANGE[1]: - raise ValueError("rudder_change must be between -pi/4 and pi/4") + rudder_setpoint = min( + max(rudder_setpoint, np.deg2rad(rudder_controller.max_angle_range[0])), + np.deg2rad(rudder_controller.max_angle_range[1]), + ) rudder_setpoint_deg = np.rad2deg(rudder_setpoint) # in degrees running_error = rudder_setpoint_deg - rudder_controller.current_control_ang # in degrees @@ -67,8 +68,9 @@ def test_compute_setpoint(rudder_controller): def test_reset_setpoint(rudder_controller): # Test reset_setpoint method of RudderController - new_desired_heading = 60 # Example value - expected = rudder_controller.reset_setpoint(new_desired_heading) + new_desired_heading = 60 + new_current_heading = 30 + expected = rudder_controller.reset_setpoint(new_desired_heading, new_current_heading) rudder_controller.change_desired_heading(new_desired_heading) calculated = rudder_controller.compute_setpoint() np.equal(calculated, expected) @@ -76,8 +78,19 @@ def test_reset_setpoint(rudder_controller): # testing for one iteration only def test_update_state(rudder_controller): + current_control = rudder_controller.current_control_ang rudder_controller.compute_setpoint() assert rudder_controller.update_state() == (abs(rudder_controller.running_error) == 0) + assert np.equal( + current_control + + ( + copysign( + rudder_controller.control_speed * rudder_controller.time_step, + rudder_controller.running_error, + ) + ), + rudder_controller.current_control_ang, + ) def test_update_state_continuous(rudder_controller): @@ -96,6 +109,7 @@ def test_update_state_continuous(rudder_controller): if counter > 1000: break assert progress + assert np.equal(rudder_controller.current_control_ang, rudder_controller.setpoint) def test_update_state_reset(rudder_controller): @@ -108,7 +122,7 @@ def test_update_state_reset(rudder_controller): break if counter > 1000: break - rudder_controller.reset_setpoint(-1) + rudder_controller.reset_setpoint(-30, 10) reset_progress = False if np.isclose(rudder_controller.running_error, 0, 0.1): reset_progress = True @@ -122,6 +136,7 @@ def test_update_state_reset(rudder_controller): if counter > 1000: break assert reset_progress + assert np.isclose(rudder_controller.current_control_ang, rudder_controller.setpoint, 0.1) @pytest.fixture( @@ -155,16 +170,21 @@ def test_compute_error_1(sail_controller): def test_reset_setpoint_1(sail_controller): # Test reset_setpoint method of SailController - new_target = 90 # Example value + new_target = 90 sail_controller.reset_setpoint(new_target) assert np.equal(new_target, sail_controller.target_angle) def test_update_state_1(sail_controller): - iteration_speed = sail_controller.time_step * sail_controller.control_speed - assert sail_controller.update_state() == ( - sail_controller.running_error >= iteration_speed - ) or sail_controller.update_state() == (sail_controller.running_error == 0) + current_control = sail_controller.current_control_ang + iteration_speed = copysign( + sail_controller.control_speed * sail_controller.time_step, sail_controller.running_error + ) + assert sail_controller.update_state() == (abs(sail_controller.running_error) == 0) + assert ( + np.isclose(sail_controller.current_control_ang, current_control + iteration_speed, 0.1) + or sail_controller.running_error == 0 + ) def test_update_state_continuous_1(sail_controller): From 4e2756e16f902f1439f1928ca120276baa7b6204 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Wed, 20 Mar 2024 23:29:43 -0700 Subject: [PATCH 08/36] Constant.py clarification --- src/boat_simulator/boat_simulator/common/constants.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 82bb30b73..e29b40f90 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -62,8 +62,8 @@ class PhysicsEnginePublisherTopics: # Number of times the rudder action server routine's main loop executes RUDDER_ACTUATION_NUM_LOOP_EXECUTIONS = 10 # TODO This is a placeholder until the PID is integrated -# Max rudder control angle range in degrees +# Max rudder control angle range in degrees, min angle [0] and max angle [1] RUDDER_MAX_ANGLE_RANGE = (-45, 45) -# Max sail actuator control angle range in degrees +# Max sail actuator control angle range in degrees, min angle [0], max angle [1] SAIL_MAX_ANGLE_RANGE = (-7, 7) From 4e443546a88214d8326d501be31a1d5784e30284 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Fri, 22 Mar 2024 14:18:45 -0700 Subject: [PATCH 09/36] taking running _error out of init --- .../boat_simulator/nodes/low_level_control/controller.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index 6b098954c..e535b5a20 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -26,7 +26,6 @@ def __init__( time_step: Scalar, control_speed: Scalar, max_angle_range: Tuple[Scalar, Scalar], - running_error=0.0, ): """Initializes the class attributes. Note that this class cannot be directly instantiated. @@ -39,8 +38,8 @@ def __init__( self.current_control_ang = current_control_ang self.time_step = time_step self.control_speed = control_speed - self.running_error = running_error self.max_angle_range = max_angle_range + self.running_error = 0.0 def update_state(self) -> bool: """Updates the controller position iteratively based on control_speed * time_step, until @@ -89,7 +88,6 @@ def __init__( kp: Scalar, cp: Scalar, control_speed: Scalar, - running_error=0.0, max_angle_range=None, ): """Initializes the class attributes. @@ -112,7 +110,6 @@ def __init__( current_control_ang, time_step, control_speed, - running_error, max_angle_range, ) @@ -123,6 +120,7 @@ def __init__( self.kp = kp self.cp = cp self.setpoint = 0.0 # current setpoint angle in degrees + self.running_error = 0.0 def compute_error(self) -> Scalar: # angle passed in as radians """Computes the error between desired and current heading @@ -202,7 +200,6 @@ def __init__( kp: Scalar, cp: Scalar, control_speed: Scalar, - running_error=0.0, max_angle_range=SAIL_MAX_ANGLE_RANGE, ): """Initializes the class attributes. @@ -222,7 +219,6 @@ def __init__( current_control_ang, time_step, control_speed, - running_error, max_angle_range, ) From 59db804c20da4e090a1f2916e8d5ed1420ffa581 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Tue, 26 Mar 2024 21:52:19 -0700 Subject: [PATCH 10/36] Controller Clean-up --- .../nodes/low_level_control/controller.py | 73 +++++++------------ .../low_level_control/test_controller.py | 14 ++-- 2 files changed, 31 insertions(+), 56 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index e535b5a20..ecabc5507 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -17,7 +17,7 @@ class ActuatorController: `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time taken per iteration given in seconds. `control_speed` (Scalar): Speed of control angle change in degrees / second. - 'running_error' (Scalar): Error between current and target control angle. + 'max_angle_range' (Tuple): Control angle range in degrees, minimum[0] and maximum[1] """ def __init__( @@ -33,7 +33,7 @@ def __init__( `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time per iteration given in seconds. `control_speed` (Scalar): Speed of control angle change in degrees / second. - 'running_error' (Scalar): Error between current and target control angle. Default to 0 + 'max_angle_range' (Tuple): Control angle range in degrees, minimum[0] and maximum[1] """ self.current_control_ang = current_control_ang self.time_step = time_step @@ -45,19 +45,15 @@ def update_state(self) -> bool: """Updates the controller position iteratively based on control_speed * time_step, until the control target angle is reached. - Args: - `max_angle_range` (tuple): Max angle range individual to each different controller - - Returns: False if target control angle was not reached, else True if target control angle has been reached (running error = 0) """ - error_tracker = False + is_target_reached = False if np.isclose(self.running_error, 0, 0.01): return True - else: - change = copysign(self.control_speed * self.time_step, self.running_error) + + change = copysign(self.control_speed * self.time_step, self.running_error) if abs(self.running_error) > abs(change): next_control = max(self.current_control_ang + change, self.max_angle_range[0]) @@ -67,10 +63,10 @@ def update_state(self) -> bool: self.current_control_ang + self.running_error, self.max_angle_range[0] ) self.running_error = 0 - error_tracker = True + is_target_reached = True self.current_control_ang = min(next_control, self.max_angle_range[1]) - return error_tracker + return is_target_reached class RudderController(ActuatorController): @@ -88,7 +84,7 @@ def __init__( kp: Scalar, cp: Scalar, control_speed: Scalar, - max_angle_range=None, + max_angle_range=RUDDER_MAX_ANGLE_RANGE, ): """Initializes the class attributes. @@ -113,16 +109,13 @@ def __init__( max_angle_range, ) - self.max_angle_range = RUDDER_MAX_ANGLE_RANGE - self.running_error = 0.0 self.current_heading = bound_to_180(current_heading) # bound (-180, 180] in degrees self.desired_heading = bound_to_180(desired_heading) # bound (-180, 180] in degrees self.kp = kp self.cp = cp self.setpoint = 0.0 # current setpoint angle in degrees - self.running_error = 0.0 - def compute_error(self) -> Scalar: # angle passed in as radians + def compute_error(self) -> Scalar: """Computes the error between desired and current heading implementation taken from: https://stackoverflow.com/a/2007279 Angles are bound with the convention (-180, 180] @@ -135,9 +128,9 @@ def compute_error(self) -> Scalar: # angle passed in as radians self.current_heading ) - error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) + error_rad = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) - return error # in radians + return error_rad def compute_setpoint(self) -> Scalar: """Computes the corresponding control error angle between current control angle and @@ -148,20 +141,22 @@ def compute_setpoint(self) -> Scalar: Scalar: Corresponding error angle between the current and target control angle in degrees""" - heading_error = self.compute_error() # heading_error in radians + heading_error_rad = self.compute_error() - rudder_setpoint = (self.kp * heading_error) / (1 + (self.cp * abs(heading_error))) + rudder_setpoint_rad = (self.kp * heading_error_rad) / ( + 1 + (self.cp * abs(heading_error_rad)) + ) - rudder_setpoint = min( - max(rudder_setpoint, np.deg2rad(self.max_angle_range[0])), + rudder_setpoint_rad = min( + max(rudder_setpoint_rad, np.deg2rad(self.max_angle_range[0])), np.deg2rad(self.max_angle_range[1]), ) - rudder_setpoint_deg = np.rad2deg(rudder_setpoint) # in degrees - self.running_error = rudder_setpoint_deg - self.current_control_ang # in degrees - self.setpoint = rudder_setpoint_deg # in degrees + rudder_setpoint_deg = np.rad2deg(rudder_setpoint_rad) + self.running_error = rudder_setpoint_deg - self.current_control_ang + self.setpoint = rudder_setpoint_deg - return rudder_setpoint_deg # in degrees + return rudder_setpoint_deg def reset_setpoint(self, new_desired_heading: Scalar, new_current_heading: Scalar) -> None: """Resets a new desired heading angle, therefore recalculating the corresponding @@ -169,7 +164,7 @@ def reset_setpoint(self, new_desired_heading: Scalar, new_current_heading: Scala Args: `new_desired_heading` (Scalar): New desired heading in degrees - + `new_current_heading` (Scalar): New current heading in degrees """ self.desired_heading = new_desired_heading @@ -197,20 +192,16 @@ def __init__( target_angle: Scalar, current_control_ang: Scalar, time_step: Scalar, - kp: Scalar, - cp: Scalar, control_speed: Scalar, max_angle_range=SAIL_MAX_ANGLE_RANGE, ): """Initializes the class attributes. Args: - `target_angle` (Scalar): Target angle for sail controller in degrees. + `target_angle` (Scalar): Target angle for the trim tab in degrees. 0 degrees (North) at the positive y axis and increasing clockwise. `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time per iteration given in seconds. - `kp` (Scalar): Proportional constant when calculating error. - `cp` (Scalar): Tuning parameter for control action. `control_speed` (Scalar): Speed in which the controller turns in degrees / seconds. 'running_error' (Scalar): Error between current and target control angle. @@ -221,12 +212,7 @@ def __init__( control_speed, max_angle_range, ) - - self.max_angle_range = SAIL_MAX_ANGLE_RANGE - self.running_error = 0.0 self.target_angle = target_angle - self.kp = kp - self.cp = cp def compute_error(self) -> Scalar: """Computes the corresponding control error angle between current control angle and @@ -240,20 +226,11 @@ def compute_error(self) -> Scalar: return self.running_error def reset_setpoint(self, new_target: Scalar) -> None: - """Resets a new desired sail actuator angle and updates the running_error + """Resets a new desired trim tab angle and updates the running_error Args: - `target_angle` (Scalar): New desired sail controller angle + `target_angle` (Scalar): New desired sail controller angle in degrees """ self.target_angle = new_target self.compute_error() - - def reset_target_angle(self, changed_target_angle) -> None: - """Changes target_angle desired to a new angle. Used for testing purposes - - Args: - `changed_target_angle` (Scalar): New desired heading in degrees - - """ - self.target_angle = changed_target_angle diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index 693ac1f8c..fcb91f55b 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -141,22 +141,20 @@ def test_update_state_reset(rudder_controller): @pytest.fixture( params=[ - (45, 0.9, 0.5, 0.7, 0.34, 2), # Test case 1 - (-45.2, 15, 1, 0.7, 0.34, 1.5), - (0, -60, 2, 0.7, 0.34, 0.5), - (70.2, -70.5, 0.5, 0.7, 0.34, 1), - (24, 24, 1, 0.7, 0.34, 2), + (45, 0.9, 0.5, 2), # Test case 1 + (-45.2, 15, 1, 1.5), + (0, -60, 2, 0.5), + (70.2, -70.5, 0.5, 1), + (24, 24, 1, 2), ] ) def sail_controller(request): # Initialize the SailController object with parameters from the fixture - target_angle, current_control_ang, time_step, kp, cp, control_speed = request.param + target_angle, current_control_ang, time_step, control_speed = request.param return SailController( target_angle=target_angle, current_control_ang=current_control_ang, time_step=time_step, - kp=kp, - cp=cp, control_speed=control_speed, ) From d8e0d195e3d8bf35ed1d7a2f995cf66461f339c7 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Wed, 27 Mar 2024 21:49:28 -0700 Subject: [PATCH 11/36] Quick fixes --- .../nodes/low_level_control/controller.py | 14 +++++++------- .../nodes/low_level_control/test_controller.py | 2 ++ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index ecabc5507..23d60e9ee 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -17,7 +17,7 @@ class ActuatorController: `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time taken per iteration given in seconds. `control_speed` (Scalar): Speed of control angle change in degrees / second. - 'max_angle_range' (Tuple): Control angle range in degrees, minimum[0] and maximum[1] + 'max_angle_range' (Tuple): Max control angle range in degrees, minimum[0] and maximum[1] """ def __init__( @@ -33,7 +33,7 @@ def __init__( `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time per iteration given in seconds. `control_speed` (Scalar): Speed of control angle change in degrees / second. - 'max_angle_range' (Tuple): Control angle range in degrees, minimum[0] and maximum[1] + 'max_angle_range' (Tuple): Max control angle range in degrees,minimum[0] and maximum[1] """ self.current_control_ang = current_control_ang self.time_step = time_step @@ -42,7 +42,7 @@ def __init__( self.running_error = 0.0 def update_state(self) -> bool: - """Updates the controller position iteratively based on control_speed * time_step, until + """Updates the controller position iteratively by control_speed * time_step, until the control target angle is reached. Returns: @@ -98,7 +98,7 @@ def __init__( `kp` (Scalar): Proportional constant when calculating error. `cp` (Scalar): Tuning parameter for control action. `control_speed` (Scalar): Speed of controller change in degrees per second. - 'running_error' (Scalar): Error between current and target control angle. + 'max_angle_range' (Tuple): Max control angle range in degrees,minimum[0] and maximum[1] """ @@ -109,8 +109,8 @@ def __init__( max_angle_range, ) - self.current_heading = bound_to_180(current_heading) # bound (-180, 180] in degrees - self.desired_heading = bound_to_180(desired_heading) # bound (-180, 180] in degrees + self.current_heading = bound_to_180(current_heading) + self.desired_heading = bound_to_180(desired_heading) self.kp = kp self.cp = cp self.setpoint = 0.0 # current setpoint angle in degrees @@ -203,7 +203,7 @@ def __init__( `current_control_ang` (Scalar): Current control mechanism angle in degrees. `time_step` (Scalar): Time per iteration given in seconds. `control_speed` (Scalar): Speed in which the controller turns in degrees / seconds. - 'running_error' (Scalar): Error between current and target control angle. + 'max_angle_range' (Tuple): Trim tab angle range in degrees,minimum[0] and maximum[1]. """ super().__init__( diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index fcb91f55b..b8adb8386 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -19,6 +19,7 @@ (-24, -24, 9.2, 0.5, 0.7, 0.34, 2), (90, -90, 30, 2, 0.7, 0.34, 1.5), (50.488, -36.78, 30, 0.5, 0.7, 0.34, 1), + (40, -39, 10, 0.5, 0.7, 0.34, 0.5), ] ) def rudder_controller(request): @@ -146,6 +147,7 @@ def test_update_state_reset(rudder_controller): (0, -60, 2, 0.5), (70.2, -70.5, 0.5, 1), (24, 24, 1, 2), + (-60.2, 10, 0.75, 2), ] ) def sail_controller(request): From 0d1ca0e9181ab9ce49b5484783cbb425b8834163 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Fri, 29 Mar 2024 00:39:39 -0700 Subject: [PATCH 12/36] Reset called upon class initialization --- .../nodes/low_level_control/controller.py | 12 +++--- .../low_level_control/test_controller.py | 39 +++++++++++-------- 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index 23d60e9ee..c59e10ef8 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -114,8 +114,9 @@ def __init__( self.kp = kp self.cp = cp self.setpoint = 0.0 # current setpoint angle in degrees + self.reset_setpoint(self.desired_heading, self.current_heading) - def compute_error(self) -> Scalar: + def _compute_error(self) -> Scalar: """Computes the error between desired and current heading implementation taken from: https://stackoverflow.com/a/2007279 Angles are bound with the convention (-180, 180] @@ -141,7 +142,7 @@ def compute_setpoint(self) -> Scalar: Scalar: Corresponding error angle between the current and target control angle in degrees""" - heading_error_rad = self.compute_error() + heading_error_rad = self._compute_error() rudder_setpoint_rad = (self.kp * heading_error_rad) / ( 1 + (self.cp * abs(heading_error_rad)) @@ -171,7 +172,7 @@ def reset_setpoint(self, new_desired_heading: Scalar, new_current_heading: Scala self.current_heading = new_current_heading self.compute_setpoint() - def change_desired_heading(self, changed_desired_heading) -> None: + def _change_desired_heading(self, changed_desired_heading) -> None: """Changes desired heading to a new angle. Used for testing purposes Args: @@ -213,8 +214,9 @@ def __init__( max_angle_range, ) self.target_angle = target_angle + self.reset_setpoint(self.target_angle) - def compute_error(self) -> Scalar: + def _compute_error(self) -> Scalar: """Computes the corresponding control error angle between current control angle and target control angle @@ -233,4 +235,4 @@ def reset_setpoint(self, new_target: Scalar) -> None: """ self.target_angle = new_target - self.compute_error() + self._compute_error() diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index b8adb8386..ca0f0dcf1 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -5,6 +5,7 @@ import numpy as np import pytest +from boat_simulator.common.constants import SAIL_MAX_ANGLE_RANGE from boat_simulator.nodes.low_level_control.controller import ( RudderController, SailController, @@ -20,6 +21,7 @@ (90, -90, 30, 2, 0.7, 0.34, 1.5), (50.488, -36.78, 30, 0.5, 0.7, 0.34, 1), (40, -39, 10, 0.5, 0.7, 0.34, 0.5), + (0, 0, 0, 0.5, 0.7, 0.34, 1), ] ) def rudder_controller(request): @@ -40,7 +42,7 @@ def rudder_controller(request): def test_compute_error(rudder_controller): # Test compute_error method of RudderController - error = rudder_controller.compute_error() + error = rudder_controller._compute_error() desired_rad = np.deg2rad(rudder_controller.desired_heading) current_rad = np.deg2rad(rudder_controller.current_heading) exp_error = atan2(sin(desired_rad - current_rad), cos(desired_rad - current_rad)) @@ -50,7 +52,7 @@ def test_compute_error(rudder_controller): def test_compute_setpoint(rudder_controller): # Test compute_setpoint method of RudderController setpoint = rudder_controller.compute_setpoint() - heading_error = rudder_controller.compute_error() # heading_error in radians + heading_error = rudder_controller._compute_error() # heading_error in radians rudder_setpoint = (rudder_controller.kp * heading_error) / ( 1 + (rudder_controller.cp * abs(heading_error)) @@ -72,7 +74,7 @@ def test_reset_setpoint(rudder_controller): new_desired_heading = 60 new_current_heading = 30 expected = rudder_controller.reset_setpoint(new_desired_heading, new_current_heading) - rudder_controller.change_desired_heading(new_desired_heading) + rudder_controller._change_desired_heading(new_desired_heading) calculated = rudder_controller.compute_setpoint() np.equal(calculated, expected) @@ -82,16 +84,17 @@ def test_update_state(rudder_controller): current_control = rudder_controller.current_control_ang rudder_controller.compute_setpoint() assert rudder_controller.update_state() == (abs(rudder_controller.running_error) == 0) - assert np.equal( - current_control - + ( - copysign( - rudder_controller.control_speed * rudder_controller.time_step, - rudder_controller.running_error, - ) - ), - rudder_controller.current_control_ang, - ) + if rudder_controller.current_heading != rudder_controller.desired_heading: + assert np.equal( + current_control + + ( + copysign( + rudder_controller.control_speed * rudder_controller.time_step, + rudder_controller.running_error, + ) + ), + rudder_controller.current_control_ang, + ) def test_update_state_continuous(rudder_controller): @@ -148,6 +151,7 @@ def test_update_state_reset(rudder_controller): (70.2, -70.5, 0.5, 1), (24, 24, 1, 2), (-60.2, 10, 0.75, 2), + (0, 0, 0.5, 2), ] ) def sail_controller(request): @@ -163,7 +167,7 @@ def sail_controller(request): def test_compute_error_1(sail_controller): # Test compute_error method of SailController - error = sail_controller.compute_error() + error = sail_controller._compute_error() exp_error = sail_controller.target_angle - sail_controller.current_control_ang assert np.equal(error, exp_error) @@ -180,15 +184,18 @@ def test_update_state_1(sail_controller): iteration_speed = copysign( sail_controller.control_speed * sail_controller.time_step, sail_controller.running_error ) + calculated = current_control + iteration_speed + calculated = min(max(calculated, SAIL_MAX_ANGLE_RANGE[0]), SAIL_MAX_ANGLE_RANGE[1]) + assert sail_controller.update_state() == (abs(sail_controller.running_error) == 0) assert ( - np.isclose(sail_controller.current_control_ang, current_control + iteration_speed, 0.1) + np.isclose(sail_controller.current_control_ang, calculated, 0.2) or sail_controller.running_error == 0 ) def test_update_state_continuous_1(sail_controller): - sail_controller.compute_error() + sail_controller._compute_error() progress = False counter = 0 if np.isclose(sail_controller.running_error, 0, 0.1): From 2a575205c1c18bd22fc5292b7dfeed472b30930e Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Fri, 29 Mar 2024 00:41:34 -0700 Subject: [PATCH 13/36] Made setpoint function private --- .../nodes/low_level_control/controller.py | 4 ++-- .../unit/nodes/low_level_control/test_controller.py | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index c59e10ef8..179c30ab4 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -133,7 +133,7 @@ def _compute_error(self) -> Scalar: return error_rad - def compute_setpoint(self) -> Scalar: + def _compute_setpoint(self) -> Scalar: """Computes the corresponding control error angle between current control angle and target control angle. Uses Raye's implementation from: https://github.com/UBCSailbot/raye-boat-controller/blob/master/python/tack_controller.py @@ -170,7 +170,7 @@ def reset_setpoint(self, new_desired_heading: Scalar, new_current_heading: Scala self.desired_heading = new_desired_heading self.current_heading = new_current_heading - self.compute_setpoint() + self._compute_setpoint() def _change_desired_heading(self, changed_desired_heading) -> None: """Changes desired heading to a new angle. Used for testing purposes diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index ca0f0dcf1..a707cbb68 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -51,7 +51,7 @@ def test_compute_error(rudder_controller): def test_compute_setpoint(rudder_controller): # Test compute_setpoint method of RudderController - setpoint = rudder_controller.compute_setpoint() + setpoint = rudder_controller._compute_setpoint() heading_error = rudder_controller._compute_error() # heading_error in radians rudder_setpoint = (rudder_controller.kp * heading_error) / ( @@ -75,14 +75,14 @@ def test_reset_setpoint(rudder_controller): new_current_heading = 30 expected = rudder_controller.reset_setpoint(new_desired_heading, new_current_heading) rudder_controller._change_desired_heading(new_desired_heading) - calculated = rudder_controller.compute_setpoint() + calculated = rudder_controller._compute_setpoint() np.equal(calculated, expected) # testing for one iteration only def test_update_state(rudder_controller): current_control = rudder_controller.current_control_ang - rudder_controller.compute_setpoint() + rudder_controller._compute_setpoint() assert rudder_controller.update_state() == (abs(rudder_controller.running_error) == 0) if rudder_controller.current_heading != rudder_controller.desired_heading: assert np.equal( @@ -98,7 +98,7 @@ def test_update_state(rudder_controller): def test_update_state_continuous(rudder_controller): - rudder_controller.compute_setpoint() + rudder_controller._compute_setpoint() progress = False counter = 0 if np.isclose(rudder_controller.running_error, 0, 0.1): @@ -117,7 +117,7 @@ def test_update_state_continuous(rudder_controller): def test_update_state_reset(rudder_controller): - rudder_controller.compute_setpoint() + rudder_controller._compute_setpoint() counter = 0 while not np.isclose(rudder_controller.running_error, 0, 0.1): counter += 1 From 02a6f1345686b22db160e0bb7e24c91533c70a3c Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sun, 31 Mar 2024 19:04:31 -0700 Subject: [PATCH 14/36] Test case fixes --- .../nodes/low_level_control/controller.py | 50 ++++++----- .../low_level_control/test_controller.py | 86 ++++++++++--------- 2 files changed, 71 insertions(+), 65 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py index 179c30ab4..345d4aaed 100644 --- a/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py +++ b/src/boat_simulator/boat_simulator/nodes/low_level_control/controller.py @@ -68,6 +68,10 @@ def update_state(self) -> bool: self.current_control_ang = min(next_control, self.max_angle_range[1]) return is_target_reached + @property + def is_target_reached(self) -> bool: + return np.isclose(self.running_error, 0) + class RudderController(ActuatorController): """General Class for the Actuator Controller. @@ -116,6 +120,19 @@ def __init__( self.setpoint = 0.0 # current setpoint angle in degrees self.reset_setpoint(self.desired_heading, self.current_heading) + def reset_setpoint(self, new_desired_heading: Scalar, new_current_heading: Scalar) -> None: + """Resets a new desired heading angle, therefore recalculating the corresponding + setpoint and running error. + + Args: + `new_desired_heading` (Scalar): New desired heading in degrees + `new_current_heading` (Scalar): New current heading in degrees + """ + + self.desired_heading = new_desired_heading + self.current_heading = new_current_heading + self._compute_setpoint() + def _compute_error(self) -> Scalar: """Computes the error between desired and current heading implementation taken from: https://stackoverflow.com/a/2007279 @@ -159,19 +176,6 @@ def _compute_setpoint(self) -> Scalar: return rudder_setpoint_deg - def reset_setpoint(self, new_desired_heading: Scalar, new_current_heading: Scalar) -> None: - """Resets a new desired heading angle, therefore recalculating the corresponding - setpoint and running error. - - Args: - `new_desired_heading` (Scalar): New desired heading in degrees - `new_current_heading` (Scalar): New current heading in degrees - """ - - self.desired_heading = new_desired_heading - self.current_heading = new_current_heading - self._compute_setpoint() - def _change_desired_heading(self, changed_desired_heading) -> None: """Changes desired heading to a new angle. Used for testing purposes @@ -216,6 +220,16 @@ def __init__( self.target_angle = target_angle self.reset_setpoint(self.target_angle) + def reset_setpoint(self, new_target: Scalar) -> None: + """Resets a new desired trim tab angle and updates the running_error + + Args: + `target_angle` (Scalar): New desired sail controller angle in degrees + + """ + self.target_angle = new_target + self._compute_error() + def _compute_error(self) -> Scalar: """Computes the corresponding control error angle between current control angle and target control angle @@ -226,13 +240,3 @@ def _compute_error(self) -> Scalar: self.running_error = self.target_angle - self.current_control_ang return self.running_error - - def reset_setpoint(self, new_target: Scalar) -> None: - """Resets a new desired trim tab angle and updates the running_error - - Args: - `target_angle` (Scalar): New desired sail controller angle in degrees - - """ - self.target_angle = new_target - self._compute_error() diff --git a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py index a707cbb68..59c274d9d 100644 --- a/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py +++ b/src/boat_simulator/tests/unit/nodes/low_level_control/test_controller.py @@ -21,7 +21,7 @@ (90, -90, 30, 2, 0.7, 0.34, 1.5), (50.488, -36.78, 30, 0.5, 0.7, 0.34, 1), (40, -39, 10, 0.5, 0.7, 0.34, 0.5), - (0, 0, 0, 0.5, 0.7, 0.34, 1), + (0, 0, 5, 0.5, 0.7, 0.34, 1), ] ) def rudder_controller(request): @@ -40,7 +40,7 @@ def rudder_controller(request): ) -def test_compute_error(rudder_controller): +def test_rudder_compute_error(rudder_controller): # Test compute_error method of RudderController error = rudder_controller._compute_error() desired_rad = np.deg2rad(rudder_controller.desired_heading) @@ -49,7 +49,7 @@ def test_compute_error(rudder_controller): assert np.equal(error, exp_error) -def test_compute_setpoint(rudder_controller): +def test_rudder_compute_setpoint(rudder_controller): # Test compute_setpoint method of RudderController setpoint = rudder_controller._compute_setpoint() heading_error = rudder_controller._compute_error() # heading_error in radians @@ -69,7 +69,7 @@ def test_compute_setpoint(rudder_controller): assert np.equal(running_error, rudder_controller.running_error) -def test_reset_setpoint(rudder_controller): +def test_rudder_reset_setpoint(rudder_controller): # Test reset_setpoint method of RudderController new_desired_heading = 60 new_current_heading = 30 @@ -79,62 +79,61 @@ def test_reset_setpoint(rudder_controller): np.equal(calculated, expected) -# testing for one iteration only -def test_update_state(rudder_controller): +def test_rudder_update_state_single_iteration(rudder_controller): + # Test a single iteration of update_state method of RudderController current_control = rudder_controller.current_control_ang - rudder_controller._compute_setpoint() assert rudder_controller.update_state() == (abs(rudder_controller.running_error) == 0) - if rudder_controller.current_heading != rudder_controller.desired_heading: - assert np.equal( - current_control - + ( - copysign( - rudder_controller.control_speed * rudder_controller.time_step, - rudder_controller.running_error, - ) - ), - rudder_controller.current_control_ang, - ) - - -def test_update_state_continuous(rudder_controller): - rudder_controller._compute_setpoint() + assert np.isclose( + current_control + + ( + copysign( + rudder_controller.control_speed * rudder_controller.time_step, + rudder_controller.running_error, + ) + ), + rudder_controller.current_control_ang, + 0.1, + ) + + +def test_rudder_update_state_continuous(rudder_controller): + # Test until completion of update_state method of RudderController progress = False counter = 0 if np.isclose(rudder_controller.running_error, 0, 0.1): progress = True else: - while not np.isclose(rudder_controller.running_error, 0, 0.1): + while not rudder_controller.is_target_reached: counter += 1 rudder_controller.update_state() - if rudder_controller.running_error == 0: + if rudder_controller.is_target_reached: progress = True break if counter > 1000: break assert progress - assert np.equal(rudder_controller.current_control_ang, rudder_controller.setpoint) + assert np.isclose(rudder_controller.current_control_ang, rudder_controller.setpoint, 0.1) -def test_update_state_reset(rudder_controller): - rudder_controller._compute_setpoint() +def test_rudder_update_state_reset(rudder_controller): + # Test with reset_setpoint of update_state function until completion counter = 0 - while not np.isclose(rudder_controller.running_error, 0, 0.1): + while not rudder_controller.is_target_reached: counter += 1 rudder_controller.update_state() - if rudder_controller.running_error == 0: + if rudder_controller.is_target_reached: break if counter > 1000: break rudder_controller.reset_setpoint(-30, 10) reset_progress = False - if np.isclose(rudder_controller.running_error, 0, 0.1): + if rudder_controller.is_target_reached: reset_progress = True else: - while not np.isclose(rudder_controller.running_error, 0, 0.1): + while not rudder_controller.is_target_reached: counter += 1 rudder_controller.update_state() - if rudder_controller.running_error == 0: + if rudder_controller.is_target_reached: reset_progress = True break if counter > 1000: @@ -145,13 +144,14 @@ def test_update_state_reset(rudder_controller): @pytest.fixture( params=[ - (45, 0.9, 0.5, 2), # Test case 1 + (45, 0.9, 0.5, 2), (-45.2, 15, 1, 1.5), (0, -60, 2, 0.5), (70.2, -70.5, 0.5, 1), (24, 24, 1, 2), (-60.2, 10, 0.75, 2), (0, 0, 0.5, 2), + (50, 0, 4, 2), ] ) def sail_controller(request): @@ -165,21 +165,22 @@ def sail_controller(request): ) -def test_compute_error_1(sail_controller): +def test_sail_compute_error(sail_controller): # Test compute_error method of SailController error = sail_controller._compute_error() exp_error = sail_controller.target_angle - sail_controller.current_control_ang assert np.equal(error, exp_error) -def test_reset_setpoint_1(sail_controller): +def test_sail_reset_setpoint(sail_controller): # Test reset_setpoint method of SailController new_target = 90 sail_controller.reset_setpoint(new_target) assert np.equal(new_target, sail_controller.target_angle) -def test_update_state_1(sail_controller): +def test_sail_update_state(sail_controller): + # Test single iteration of update_state method of SailController current_control = sail_controller.current_control_ang iteration_speed = copysign( sail_controller.control_speed * sail_controller.time_step, sail_controller.running_error @@ -190,21 +191,22 @@ def test_update_state_1(sail_controller): assert sail_controller.update_state() == (abs(sail_controller.running_error) == 0) assert ( np.isclose(sail_controller.current_control_ang, calculated, 0.2) - or sail_controller.running_error == 0 + or sail_controller.is_target_reached ) -def test_update_state_continuous_1(sail_controller): +def test_sail_update_state_continuous(sail_controller): + # Test until completion of update_state method of SailController sail_controller._compute_error() progress = False - counter = 0 - if np.isclose(sail_controller.running_error, 0, 0.1): + counter = 0.0 + if sail_controller.is_target_reached: progress = True else: - while not np.isclose(sail_controller.running_error, 0, 0.1): + while not sail_controller.is_target_reached: counter += 1 sail_controller.update_state() - if sail_controller.running_error == 0: + if sail_controller.is_target_reached: progress = True break if counter > 1000: From 6461bbe9d5d50039290c8b8412547f42b2a80ce1 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Wed, 14 Aug 2024 14:36:27 -0700 Subject: [PATCH 15/36] Start --- .vscode/settings.json | 22 +++++++++++++++++++ .../nodes/physics_engine/model.py | 14 +++++++++++- 2 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..f8d4b6139 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "python.autoComplete.extraPaths": [ + "/workspaces/sailbot_workspace/build/local_pathfinding", + "/workspaces/sailbot_workspace/build/integration_tests", + "/workspaces/sailbot_workspace/build/controller", + "/workspaces/sailbot_workspace/build/boat_simulator", + "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", + "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", + "/opt/ros/humble/local/lib/python3.10/dist-packages", + "/opt/ros/humble/lib/python3.10/site-packages" + ], + "python.analysis.extraPaths": [ + "/workspaces/sailbot_workspace/build/local_pathfinding", + "/workspaces/sailbot_workspace/build/integration_tests", + "/workspaces/sailbot_workspace/build/controller", + "/workspaces/sailbot_workspace/build/boat_simulator", + "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", + "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", + "/opt/ros/humble/local/lib/python3.10/dist-packages", + "/opt/ros/humble/lib/python3.10/site-packages" + ] +} \ No newline at end of file diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 3f7c11fc8..a458fea12 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -8,6 +8,7 @@ from boat_simulator.common.types import Scalar from boat_simulator.nodes.physics_engine.kinematics_computation import BoatKinematics from boat_simulator.nodes.physics_engine.kinematics_data import KinematicsData +from boat_simulator.nodes.physics_engine.fluid_forces import MediumForceComputation class BoatState: @@ -20,7 +21,8 @@ class BoatState: expressed in SI units. """ - def __init__(self, timestep: Scalar, mass: Scalar, inertia: NDArray): + def __init__(self, timestep: Scalar, mass: Scalar, inertia: NDArray, + air_density: Scalar, water_density: Scalar): """Initializes an instance of `BoatState`. Args: @@ -28,8 +30,18 @@ def __init__(self, timestep: Scalar, mass: Scalar, inertia: NDArray): mass (Scalar): The mass of the boat, expressed in kilograms (kg). inertia (NDArray): The inertia of the boat, expressed in kilograms-meters squared (kg•m^2). + air_density(Scalar): Density of air, expressed in kilograms per meter cubed (kg/m^3) + water_density(Scalar): Density of water, expressed in kilograms per meter cubed + (kg/m^3) """ + self.__timestep = timestep + self.__mass = mass + self.__inertia = inertia + self.__air_density = air_density + self.__water_density = water_density + self.__kinematics_computation = BoatKinematics(timestep, mass, inertia) + self.__sail_force_computation = MediumForceComputation() def compute_net_force_and_torque(self, wind_vel: NDArray) -> Tuple[NDArray, NDArray]: """Calculates the net force and net torque acting on the boat due to the wind. From 35ac17acadbf76f8b6f2346ff19e7ab54c1eedf9 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Fri, 23 Aug 2024 23:06:44 -0700 Subject: [PATCH 16/36] Model Testing --- .../boat_simulator/common/constants.py | 19 +++++++++++++++++++ .../nodes/physics_engine/model.py | 15 ++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 57674d723..feb15c1ff 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -74,3 +74,22 @@ class BoatProperties: # Number of times the rudder action server routine's main loop executes RUDDER_ACTUATION_NUM_LOOP_EXECUTIONS = 10 # TODO This is a placeholder until the PID is integrated + +# Max rudder control angle range in degrees, min angle [0] and max angle [1] +RUDDER_MAX_ANGLE_RANGE = (-45, 45) + +# Max sail actuator control angle range in degrees, min angle [0], max angle [1] +SAIL_MAX_ANGLE_RANGE = (-7, 7) + +# Predetermined values for BoatProperties +# TODO These are placeholder values which should be replaced when we have real values. +BOAT_PROPERTIES = BoatProperties( + sail_lift_coeffs={0.0: 0.0, 5.0: 0.2, 10.0: 0.5, 15.0: 0.7, 20.0: 1.0}, + sail_drag_coeffs={0.0: 0.1, 5.0: 0.12, 10.0: 0.15, 15.0: 0.18, 20.0: 0.2}, + sail_areas={0.0: 20.0, 5.0: 19.8, 10.0: 19.5, 15.0: 19.2, 20.0: 18.8}, + rudder_drag_coeffs={0.0: 0.2, 5.0: 0.22, 10.0: 0.25, 15.0: 0.28, 20.0: 0.3}, + rudder_areas={0.0: 2.0, 5.0: 1.9, 10.0: 1.8, 15.0: 1.7, 20.0: 1.6}, + sail_dist=5.0, + rudder_dist=1.5, + hull_drag_factor=0.05, +) diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 2d7845e74..4ac9262e7 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -9,6 +9,7 @@ from boat_simulator.nodes.physics_engine.kinematics_computation import BoatKinematics from boat_simulator.nodes.physics_engine.kinematics_data import KinematicsData from boat_simulator.nodes.physics_engine.fluid_forces import MediumForceComputation +from boat_simulator.common.constants import BoatProperties class BoatState: @@ -41,7 +42,14 @@ def __init__(self, timestep: Scalar, mass: Scalar, inertia: NDArray, self.__water_density = water_density self.__kinematics_computation = BoatKinematics(timestep, mass, inertia) - self.__sail_force_computation = MediumForceComputation() + self.__sail_force_computation = MediumForceComputation( + BoatProperties.sail_lift_coeffs, + BoatProperties.sail_drag_coeffs, + BoatProperties.sail_areas, self.__air_density) + self.__rudder_force_computation = MediumForceComputation( + BoatProperties.sail_lift_coeffs, # This should be rudder_lift_coeffs + BoatProperties.rudder_drag_coeffs, + BoatProperties.rudder_areas, self.__water_density) def step( self, @@ -100,6 +108,11 @@ def __compute_net_force_and_torque( the relative reference frame, expressed in newtons (N), and the second element represents the net torque, expressed in newton-meters (N•m). """ + apparent_wind_vel = rel_wind_vel - self.relative_velocity + apparent_water_vel = rel_water_vel - self.relative_velocity + sail_force = self.__sail_force_computation.compute_force(apparent_wind_vel, trim_tab_angle) + rudder_force = self.__rudder_force_computation.compute_force( + apparent_water_vel, rudder_angle_deg) raise NotImplementedError() @property From 50874ae36b65f8fc699db564c388c6c649bf4d19 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Fri, 23 Aug 2024 23:31:02 -0700 Subject: [PATCH 17/36] Model Calculations --- .../nodes/physics_engine/model.py | 44 +++++++++++++++---- 1 file changed, 35 insertions(+), 9 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 4ac9262e7..37a8b9de0 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -5,11 +5,11 @@ import numpy as np from numpy.typing import NDArray +from boat_simulator.common.constants import BoatProperties from boat_simulator.common.types import Scalar +from boat_simulator.nodes.physics_engine.fluid_forces import MediumForceComputation from boat_simulator.nodes.physics_engine.kinematics_computation import BoatKinematics from boat_simulator.nodes.physics_engine.kinematics_data import KinematicsData -from boat_simulator.nodes.physics_engine.fluid_forces import MediumForceComputation -from boat_simulator.common.constants import BoatProperties class BoatState: @@ -22,8 +22,14 @@ class BoatState: expressed in SI units. """ - def __init__(self, timestep: Scalar, mass: Scalar, inertia: NDArray, - air_density: Scalar, water_density: Scalar): + def __init__( + self, + timestep: Scalar, + mass: Scalar, + inertia: NDArray, + air_density: Scalar, + water_density: Scalar, + ): """Initializes an instance of `BoatState`. Args: @@ -45,11 +51,15 @@ def __init__(self, timestep: Scalar, mass: Scalar, inertia: NDArray, self.__sail_force_computation = MediumForceComputation( BoatProperties.sail_lift_coeffs, BoatProperties.sail_drag_coeffs, - BoatProperties.sail_areas, self.__air_density) + BoatProperties.sail_areas, + self.__air_density, + ) self.__rudder_force_computation = MediumForceComputation( - BoatProperties.sail_lift_coeffs, # This should be rudder_lift_coeffs + BoatProperties.sail_lift_coeffs, # This should be rudder_lift_coeffs BoatProperties.rudder_drag_coeffs, - BoatProperties.rudder_areas, self.__water_density) + BoatProperties.rudder_areas, + self.__water_density, + ) def step( self, @@ -108,12 +118,28 @@ def __compute_net_force_and_torque( the relative reference frame, expressed in newtons (N), and the second element represents the net torque, expressed in newton-meters (N•m). """ + # Compute apparent wind and water velocities apparent_wind_vel = rel_wind_vel - self.relative_velocity apparent_water_vel = rel_water_vel - self.relative_velocity + + # Calculate Forces on sail and rudder sail_force = self.__sail_force_computation.compute_force(apparent_wind_vel, trim_tab_angle) rudder_force = self.__rudder_force_computation.compute_force( - apparent_water_vel, rudder_angle_deg) - raise NotImplementedError() + apparent_water_vel, rudder_angle_deg + ) + + # Approximate sail area of 2m^2 + # Defined Sail height of approximately 2m + # Defined Rudder size of approximately 0.1233m^2 + hull_drag_force = self.relative_velocity * BoatProperties.hull_drag_coeff + + total_force = sail_force + rudder_force + hull_drag_force + + sail_torque = sail_force * 1 * np.sin(trim_tab_angle) + rudder_torque = rudder_force * 1 * np.sin(rudder_angle_deg) + total_torque = sail_torque + rudder_torque + + return (total_force, total_torque) @property def global_position(self) -> NDArray: From 5cad061a18787ec9de59c0e46962df066d60d63b Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Fri, 23 Aug 2024 23:33:33 -0700 Subject: [PATCH 18/36] Sail and Rudder Lengths --- src/boat_simulator/boat_simulator/common/constants.py | 1 + .../boat_simulator/nodes/physics_engine/model.py | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index feb15c1ff..005f2a77b 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -36,6 +36,7 @@ class BoatProperties: sail_lift_coeffs: Dict[float, float] # Degrees, Dimensionless sail_drag_coeffs: Dict[float, float] # Degrees, Dimensionless sail_areas: Dict[float, float] # Degrees, Square meters + rudder_lift_coeffs: Dict[float, float] # Degrees, Dimensionless rudder_drag_coeffs: Dict[float, float] # Degrees, Dimensionless rudder_areas: Dict[float, float] # Degrees, Square meters sail_dist: float # Meters diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 37a8b9de0..7a0e1b037 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -48,6 +48,7 @@ def __init__( self.__water_density = water_density self.__kinematics_computation = BoatKinematics(timestep, mass, inertia) + self.__sail_force_computation = MediumForceComputation( BoatProperties.sail_lift_coeffs, BoatProperties.sail_drag_coeffs, @@ -55,7 +56,7 @@ def __init__( self.__air_density, ) self.__rudder_force_computation = MediumForceComputation( - BoatProperties.sail_lift_coeffs, # This should be rudder_lift_coeffs + BoatProperties.rudder_lift_coeffs, BoatProperties.rudder_drag_coeffs, BoatProperties.rudder_areas, self.__water_density, @@ -136,7 +137,7 @@ def __compute_net_force_and_torque( total_force = sail_force + rudder_force + hull_drag_force sail_torque = sail_force * 1 * np.sin(trim_tab_angle) - rudder_torque = rudder_force * 1 * np.sin(rudder_angle_deg) + rudder_torque = rudder_force * (0.1233 / 2) * np.sin(rudder_angle_deg) total_torque = sail_torque + rudder_torque return (total_force, total_torque) From 00f5803f85bc421a341de2a6d5a9e2cb5c284a44 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 7 Sep 2024 10:42:26 -0700 Subject: [PATCH 19/36] ndarray implementation --- .../boat_simulator/common/constants.py | 41 ++++++++++--------- .../nodes/physics_engine/model.py | 8 ++-- 2 files changed, 26 insertions(+), 23 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 005f2a77b..b30325e81 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -3,7 +3,10 @@ import os from dataclasses import dataclass from enum import Enum -from typing import Dict + +import numpy as np + +from boat_simulator.common.types import Scalar # Class declarations for constants. These are not meant to be accessed directly. @@ -33,12 +36,12 @@ class PhysicsEnginePublisherTopics: @dataclass class BoatProperties: - sail_lift_coeffs: Dict[float, float] # Degrees, Dimensionless - sail_drag_coeffs: Dict[float, float] # Degrees, Dimensionless - sail_areas: Dict[float, float] # Degrees, Square meters - rudder_lift_coeffs: Dict[float, float] # Degrees, Dimensionless - rudder_drag_coeffs: Dict[float, float] # Degrees, Dimensionless - rudder_areas: Dict[float, float] # Degrees, Square meters + sail_lift_coeffs: np.ndarray # Degrees, Dimensionless + sail_drag_coeffs: np.ndarray # Degrees, Dimensionless + sail_areas: Scalar # Degrees, Square meters + rudder_lift_coeffs: np.ndarray # Degrees, Dimensionless + rudder_drag_coeffs: np.ndarray # Degrees, Dimensionless + rudder_areas: Scalar # Degrees, Square meters sail_dist: float # Meters rudder_dist: float # Meters hull_drag_factor: float # Dimensionless @@ -82,15 +85,15 @@ class BoatProperties: # Max sail actuator control angle range in degrees, min angle [0], max angle [1] SAIL_MAX_ANGLE_RANGE = (-7, 7) -# Predetermined values for BoatProperties -# TODO These are placeholder values which should be replaced when we have real values. -BOAT_PROPERTIES = BoatProperties( - sail_lift_coeffs={0.0: 0.0, 5.0: 0.2, 10.0: 0.5, 15.0: 0.7, 20.0: 1.0}, - sail_drag_coeffs={0.0: 0.1, 5.0: 0.12, 10.0: 0.15, 15.0: 0.18, 20.0: 0.2}, - sail_areas={0.0: 20.0, 5.0: 19.8, 10.0: 19.5, 15.0: 19.2, 20.0: 18.8}, - rudder_drag_coeffs={0.0: 0.2, 5.0: 0.22, 10.0: 0.25, 15.0: 0.28, 20.0: 0.3}, - rudder_areas={0.0: 2.0, 5.0: 1.9, 10.0: 1.8, 15.0: 1.7, 20.0: 1.6}, - sail_dist=5.0, - rudder_dist=1.5, - hull_drag_factor=0.05, -) +# # Predetermined values for BoatProperties +# # TODO These are placeholder values which should be replaced when we have real values. +# BOAT_PROPERTIES = BoatProperties( +# sail_lift_coeffs={0.0: 0.0, 5.0: 0.2, 10.0: 0.5, 15.0: 0.7, 20.0: 1.0}, +# sail_drag_coeffs={0.0: 0.1, 5.0: 0.12, 10.0: 0.15, 15.0: 0.18, 20.0: 0.2}, +# sail_areas={0.0: 20.0, 5.0: 19.8, 10.0: 19.5, 15.0: 19.2, 20.0: 18.8}, +# rudder_drag_coeffs={0.0: 0.2, 5.0: 0.22, 10.0: 0.25, 15.0: 0.28, 20.0: 0.3}, +# rudder_areas={0.0: 2.0, 5.0: 1.9, 10.0: 1.8, 15.0: 1.7, 20.0: 1.6}, +# sail_dist=5.0, +# rudder_dist=1.5, +# hull_drag_factor=0.05, +# ) diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 7a0e1b037..385e06b33 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -124,20 +124,20 @@ def __compute_net_force_and_torque( apparent_water_vel = rel_water_vel - self.relative_velocity # Calculate Forces on sail and rudder - sail_force = self.__sail_force_computation.compute_force(apparent_wind_vel, trim_tab_angle) - rudder_force = self.__rudder_force_computation.compute_force( + sail_force = self.__sail_force_computation.compute(apparent_wind_vel, trim_tab_angle) + rudder_force = self.__rudder_force_computation.compute( apparent_water_vel, rudder_angle_deg ) # Approximate sail area of 2m^2 # Defined Sail height of approximately 2m # Defined Rudder size of approximately 0.1233m^2 - hull_drag_force = self.relative_velocity * BoatProperties.hull_drag_coeff + hull_drag_force = self.relative_velocity * BoatProperties.hull_drag_factor total_force = sail_force + rudder_force + hull_drag_force sail_torque = sail_force * 1 * np.sin(trim_tab_angle) - rudder_torque = rudder_force * (0.1233 / 2) * np.sin(rudder_angle_deg) + rudder_torque = rudder_force * float((0.1233 / 2.0)) * np.sin(rudder_angle_deg) total_torque = sail_torque + rudder_torque return (total_force, total_torque) From f8470e066d87bcce5eda36ab204e2765c64b33df Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 7 Sep 2024 11:52:58 -0700 Subject: [PATCH 20/36] Refactor --- .../boat_simulator/common/constants.py | 16 ++++++++-------- .../boat_simulator/nodes/physics_engine/model.py | 6 ++++-- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index b30325e81..c895d4931 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -4,7 +4,7 @@ from dataclasses import dataclass from enum import Enum -import numpy as np +from numpy.typing import NDArray from boat_simulator.common.types import Scalar @@ -36,15 +36,15 @@ class PhysicsEnginePublisherTopics: @dataclass class BoatProperties: - sail_lift_coeffs: np.ndarray # Degrees, Dimensionless - sail_drag_coeffs: np.ndarray # Degrees, Dimensionless + sail_lift_coeffs: NDArray # Degrees, Dimensionless + sail_drag_coeffs: NDArray # Degrees, Dimensionless sail_areas: Scalar # Degrees, Square meters - rudder_lift_coeffs: np.ndarray # Degrees, Dimensionless - rudder_drag_coeffs: np.ndarray # Degrees, Dimensionless + rudder_lift_coeffs: NDArray # Degrees, Dimensionless + rudder_drag_coeffs: NDArray # Degrees, Dimensionless rudder_areas: Scalar # Degrees, Square meters - sail_dist: float # Meters - rudder_dist: float # Meters - hull_drag_factor: float # Dimensionless + sail_dist: Scalar # Meters + rudder_dist: Scalar # Meters + hull_drag_factor: Scalar # Dimensionless # Directly accessible constants diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 385e06b33..9e14153bc 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -134,10 +134,12 @@ def __compute_net_force_and_torque( # Defined Rudder size of approximately 0.1233m^2 hull_drag_force = self.relative_velocity * BoatProperties.hull_drag_factor + # Total Force Calculation total_force = sail_force + rudder_force + hull_drag_force - sail_torque = sail_force * 1 * np.sin(trim_tab_angle) - rudder_torque = rudder_force * float((0.1233 / 2.0)) * np.sin(rudder_angle_deg) + # Calculating Total Torque + sail_torque = sail_force * BoatProperties.sail_dist * np.sin(trim_tab_angle) + rudder_torque = rudder_force * BoatProperties.rudder_dist * np.sin(rudder_angle_deg) total_torque = sail_torque + rudder_torque return (total_force, total_torque) From 19869b5ff60187768fe24773838f13b81bbb8458 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 28 Sep 2024 13:46:34 -0700 Subject: [PATCH 21/36] Working on torque calculations --- .../boat_simulator/common/constants.py | 10 ++---- .../nodes/physics_engine/model.py | 36 ++++++++++++------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 989d4d577..42b92df8b 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -8,11 +8,6 @@ from boat_simulator.common.types import Scalar -import numpy as np -from numpy.typing import NDArray - -from boat_simulator.common.types import Scalar - # Class declarations for constants. These are not meant to be accessed directly. @dataclass @@ -52,8 +47,8 @@ class BoatProperties: hull_drag_factor: Scalar # Dimensionless mass: Scalar # Kilograms (kg) inertia: NDArray # Kilograms-meters squared (kg•m^2) - air_density: Scalar # Kilograms per meter cubed (kg/m^3) - water_density: Scalar # Kilograms per meter cubed (kg/m^3) + air_density: Scalar # Kilograms per meter cubed (kg/m^3) + water_density: Scalar # Kilograms per meter cubed (kg/m^3) # Directly accessible constants @@ -106,4 +101,3 @@ class BoatProperties: # rudder_dist=1.5, # hull_drag_factor=0.05, # ) - diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index d4da4c1cb..68d856fb9 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -36,13 +36,13 @@ def __init__(self, timestep: Scalar): BoatProperties.sail_lift_coeffs, BoatProperties.sail_drag_coeffs, BoatProperties.sail_areas, - self.__air_density, + BoatProperties.air_density, ) self.__rudder_force_computation = MediumForceComputation( BoatProperties.rudder_lift_coeffs, BoatProperties.rudder_drag_coeffs, BoatProperties.rudder_areas, - self.__water_density, + BoatProperties.water_density, ) def step( @@ -102,9 +102,9 @@ def __compute_net_force_and_torque( the relative reference frame, expressed in newtons (N), and the second element represents the net torque, expressed in newton-meters (N•m). """ - # Compute apparent wind and water velocities - apparent_wind_vel = rel_wind_vel - self.relative_velocity - apparent_water_vel = rel_water_vel - self.relative_velocity + # Compute apparent wind and water velocities as ND arrays + apparent_wind_vel = np.subtract(rel_wind_vel, self.relative_velocity) + apparent_water_vel = np.subtract(rel_water_vel, self.relative_velocity) # Calculate Forces on sail and rudder sail_force = self.__sail_force_computation.compute(apparent_wind_vel, trim_tab_angle) @@ -112,18 +112,28 @@ def __compute_net_force_and_torque( apparent_water_vel, rudder_angle_deg ) - # Approximate sail area of 2m^2 - # Defined Sail height of approximately 2m - # Defined Rudder size of approximately 0.1233m^2 - hull_drag_force = self.relative_velocity * BoatProperties.hull_drag_factor + # Calculate Hull Drag Force + hull_drag_force = ( + self.relative_velocity[0] * BoatProperties.hull_drag_factor, + self.relative_velocity[1] * BoatProperties.hull_drag_factor, + ) # Total Force Calculation - total_force = sail_force + rudder_force + hull_drag_force + total_drag_force = np.add(sail_force[1] + rudder_force[1] + hull_drag_force) + total_force = np.add(sail_force[0] + rudder_force[0], total_drag_force) # Calculating Total Torque - sail_torque = sail_force * BoatProperties.sail_dist * np.sin(trim_tab_angle) - rudder_torque = rudder_force * BoatProperties.rudder_dist * np.sin(rudder_angle_deg) - total_torque = sail_torque + rudder_torque + sail_torque_constant = BoatProperties.sail_dist * np.sin(np.radians(trim_tab_angle)) + rudder_torque_constant = BoatProperties.rudder_dist * np.sin(np.radians(rudder_angle_deg)) + + sail_torque = (sail_force[0] * sail_torque_constant, sail_force[1] * sail_torque_constant) + rudder_torque = ( + rudder_force[0] * rudder_torque_constant, + rudder_force[1] * rudder_torque_constant, + ) + total_torque = (sail_torque[0] + rudder_torque[0], sail_torque[1] + rudder_torque[1]) + + # torque_magnitude = np. return (total_force, total_torque) From 57d53f13a975c08922bac5e9547fb0b285992abc Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 19 Oct 2024 15:10:03 -0700 Subject: [PATCH 22/36] Torque Calculations with Placeholders --- .../prototype_wingsail_controller.ipynb | 666 +++++++++++++++++- .../nodes/physics_engine/model.py | 53 +- 2 files changed, 681 insertions(+), 38 deletions(-) diff --git a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb index 391b0d5f7..e0679eeff 100644 --- a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb +++ b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -17,35 +17,653 @@ "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: numpy in /home/ros/.local/lib/python3.10/site-packages (1.26.4)\n", - "Requirement already satisfied: scipy in /home/ros/.local/lib/python3.10/site-packages (1.12.0)\n", - "Requirement already satisfied: matplotlib in /home/ros/.local/lib/python3.10/site-packages (3.8.3)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/lib/python3/dist-packages (from matplotlib) (21.3)\n", - "Requirement already satisfied: pillow>=8 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (10.2.0)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.4.5)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)\n", - "Requirement already satisfied: cycler>=0.10 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (4.49.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib) (2.4.7)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.2.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", - "Hit:1 http://packages.ros.org/ros2/ubuntu jammy InRelease\n", - "Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease \u001b[0m\u001b[33m\n", - "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \n", - "Hit:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease\n", - "Ign:5 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", - "Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease\n", - "Hit:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release\n", - "Reading package lists... Done\u001b[33m\n", + "Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.21.5)\n", + "Requirement already satisfied: scipy in /usr/lib/python3/dist-packages (1.8.0)\n", + "Requirement already satisfied: matplotlib in /usr/lib/python3/dist-packages (3.5.1)\n", + "Ign:1 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", + "Get:2 http://packages.ros.org/ros2/ubuntu jammy InRelease [4,682 B] \u001b[0m\n", + "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \u001b[0m \u001b[0m\u001b[33m\n", + "Get:4 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release [3,094 B]\n", + "Get:5 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB] \u001b[0m\u001b[33m\u001b[33m\n", + "Get:6 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB] \u001b[0m\n", + "Get:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release.gpg [866 B]m\n", + "Get:8 http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages [1,622 kB] \u001b[0m\u001b[33m\n", + "Get:9 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB] \u001b[0m\u001b[33m\u001b[33m\n", + "Get:10 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0/multiverse amd64 Packages [74.0 kB]\n", + "Get:11 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [3,200 kB]m\u001b[33m\u001b[33m\u001b[33m\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2,648 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [3,278 kB]\n", + "Get:14 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [2,372 kB]m\n", + "Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,450 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [81.4 kB]33m\u001b[33m\u001b[33m\u001b[33m\n", + "Get:17 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1,162 kB]\n", + "Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [33.7 kB]\n", + "Fetched 16.3 MB in 5s (3,032 kB/s) \u001b[0m \u001b[0m\u001b[33m\u001b[0m \u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", + "Reading package lists... Done\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "267 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", + "284 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", "\u001b[1;33mW: \u001b[0mhttp://repo.mongodb.org/apt/ubuntu/dists/jammy/mongodb-org/6.0/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.\u001b[0m\n", "Reading package lists... Done\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "ffmpeg is already the newest version (7:4.4.2-0ubuntu0.22.04.1).\n", - "0 upgraded, 0 newly installed, 0 to remove and 267 not upgraded.\n" + "The following additional packages will be installed:\n", + " i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1 libass9\n", + " libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", + " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", + " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", + " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", + " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", + " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", + " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", + " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", + " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", + " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", + " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", + " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", + " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", + " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", + " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", + " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", + " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", + " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", + " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", + "Suggested packages:\n", + " ffmpeg-doc i965-va-driver-shaders libcuda1 libnvcuvid1 libnvidia-encode1\n", + " libbluray-bdj jackd2 libportaudio2 opus-tools pulseaudio libraw1394-doc\n", + " librsvg2-bin xdg-utils serdi sndiod sordi speex libvdpau-va-gl1\n", + "The following NEW packages will be installed:\n", + " ffmpeg i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1\n", + " libass9 libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", + " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", + " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", + " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", + " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", + " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", + " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", + " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", + " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", + " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", + " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", + " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", + " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", + " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", + " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", + " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", + " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", + " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", + " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", + "0 upgraded, 112 newly installed, 0 to remove and 284 not upgraded.\n", + "Need to get 94.1 MB of archives.\n", + "After this operation, 249 MB of additional disk space will be used.\n", + "Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libapparmor1 amd64 3.0.4-2ubuntu2.4 [39.7 kB]\n", + "Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 libslang2 amd64 2.3.2-5build4 [468 kB]\n", + "Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 shared-mime-info amd64 2.1-2 [454 kB]\n", + "Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 xkb-data all 2.33-1 [394 kB]\n", + "Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libusb-1.0-0 amd64 2:1.0.25-1ubuntu2 [52.7 kB]\n", + "Get:6 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaom3 amd64 3.3.0-1 [1,748 kB]\n", + "Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva2 amd64 2.14.0-1 [65.0 kB]\n", + "Get:8 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmfx1 amd64 22.3.0-1 [3,105 kB]\n", + "Get:9 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-drm2 amd64 2.14.0-1 [7,502 B]\n", + "Get:10 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-x11-2 amd64 2.14.0-1 [12.6 kB]\n", + "Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvdpau1 amd64 1.4-3build2 [27.0 kB]\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavutil56 amd64 7:4.4.2-0ubuntu0.22.04.1 [290 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libcodec2-1.0 amd64 1.0.1-3 [8,435 kB]\n", + "Get:14 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdav1d5 amd64 0.9.2-1 [463 kB]\u001b[33m\n", + "Get:15 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgsm1 amd64 1.0.19-1 [27.7 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmp3lame0 amd64 3.100-3build2 [141 kB]\n", + "Get:17 http://archive.ubuntu.com/ubuntu jammy/main amd64 libopus0 amd64 1.3.1-0.1build2 [203 kB]\n", + "Get:18 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcairo-gobject2 amd64 1.16.0-5ubuntu2 [19.4 kB]\n", + "Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-common all 2.42.8+dfsg-1ubuntu0.3 [5,630 B]\n", + "Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf-2.0-0 amd64 2.42.8+dfsg-1ubuntu0.3 [148 kB]\n", + "Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-2 amd64 2.52.5+dfsg-3ubuntu0.2 [2,974 kB]\n", + "Get:22 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libshine3 amd64 3.1.1-2 [23.2 kB]\n", + "Get:23 http://archive.ubuntu.com/ubuntu jammy/main amd64 libspeex1 amd64 1.2~rc1.2-1.1ubuntu3 [57.9 kB]\n", + "Get:24 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsoxr0 amd64 0.1.3-4build2 [79.8 kB]\n", + "Get:25 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswresample3 amd64 7:4.4.2-0ubuntu0.22.04.1 [62.2 kB]\n", + "Get:26 http://archive.ubuntu.com/ubuntu jammy/main amd64 libogg0 amd64 1.3.5-0ubuntu3 [22.9 kB]\n", + "Get:27 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtheora0 amd64 1.1.1+dfsg.1-15ubuntu4 [209 kB]\n", + "Get:28 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtwolame0 amd64 0.4.0-2build2 [52.5 kB]\n", + "Get:29 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbis0a amd64 1.3.7-1build2 [99.2 kB]\n", + "Get:30 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisenc2 amd64 1.3.7-1build2 [82.6 kB]\n", + "Get:31 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libvpx7 amd64 1.11.0-2ubuntu2.3 [1,078 kB]\n", + "Get:32 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx264-163 amd64 2:0.163.3060+git5db6aa6-2build1 [591 kB]\n", + "Get:33 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx265-199 amd64 3.5-2 [1,170 kB]\n", + "Get:34 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libxvidcore4 amd64 2:1.3.7-1 [201 kB]\n", + "Get:35 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi-common all 0.2.35-19 [35.5 kB]\n", + "Get:36 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi0 amd64 0.2.35-19 [262 kB]\n", + "Get:37 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavcodec58 amd64 7:4.4.2-0ubuntu0.22.04.1 [5,567 kB]\n", + "Get:38 http://archive.ubuntu.com/ubuntu jammy/main amd64 libraw1394-11 amd64 2.1.2-2build2 [27.0 kB]\n", + "Get:39 http://archive.ubuntu.com/ubuntu jammy/main amd64 libavc1394-0 amd64 0.5.4-5build2 [17.0 kB]\n", + "Get:40 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libass9 amd64 1:0.15.2-1 [97.5 kB]\n", + "Get:41 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libudfread0 amd64 1.1.2-1 [16.2 kB]\n", + "Get:42 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbluray2 amd64 1:1.3.1-1 [159 kB]\n", + "Get:43 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libchromaprint1 amd64 1.5.1-2 [28.4 kB]\n", + "Get:44 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgme0 amd64 0.6.3-2 [127 kB]\n", + "Get:45 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpg123-0 amd64 1.29.3-1build1 [172 kB]\n", + "Get:46 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisfile3 amd64 1.3.7-1build2 [17.1 kB]\n", + "Get:47 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenmpt0 amd64 0.6.1-1 [592 kB]\n", + "Get:48 http://archive.ubuntu.com/ubuntu jammy/main amd64 librabbitmq4 amd64 0.10.0-1ubuntu2 [39.3 kB]\n", + "Get:49 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsrt1.4-gnutls amd64 1.4.4-4 [309 kB]\n", + "Get:50 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libssh-gcrypt-4 amd64 0.9.6-2ubuntu0.22.04.3 [223 kB]\n", + "Get:51 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libnorm1 amd64 1.5.9+dfsg-2 [221 kB]\n", + "Get:52 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpgm-5.3-0 amd64 5.3.128~dfsg-2 [161 kB]\n", + "Get:53 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzmq5 amd64 4.3.4-2 [256 kB]\n", + "Get:54 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavformat58 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,103 kB]\n", + "Get:55 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbs2b0 amd64 3.1.0+dfsg-2.2build1 [10.2 kB]\n", + "Get:56 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libflite1 amd64 2.2-3 [13.7 MB]\n", + "Get:57 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libserd-0-0 amd64 0.30.10-2 [40.8 kB]\u001b[33m\u001b[33m\n", + "Get:58 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsord-0-0 amd64 0.16.8-2 [21.2 kB]\n", + "Get:59 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsratom-0-0 amd64 0.6.8-1 [17.0 kB]\n", + "Get:60 http://archive.ubuntu.com/ubuntu jammy/universe amd64 liblilv-0-0 amd64 0.24.12-2 [42.8 kB]\n", + "Get:61 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmysofa1 amd64 1.2.1~dfsg0-1 [1,157 kB]\n", + "Get:62 http://archive.ubuntu.com/ubuntu jammy/main amd64 libasyncns0 amd64 0.8-6build2 [12.8 kB]\n", + "Get:63 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libflac8 amd64 1.3.3-2ubuntu0.2 [111 kB]\n", + "Get:64 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsndfile1 amd64 1.0.31-2ubuntu0.1 [197 kB]\n", + "Get:65 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpulse0 amd64 1:15.99.1+dfsg1-1ubuntu2.2 [298 kB]\n", + "Get:66 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsphinxbase3 amd64 0.8+5prealpha+1-13build1 [126 kB]\n", + "Get:67 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpocketsphinx3 amd64 0.8.0+real5prealpha+1-14ubuntu1 [132 kB]\n", + "Get:68 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libpostproc55 amd64 7:4.4.2-0ubuntu0.22.04.1 [60.1 kB]\n", + "Get:69 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsamplerate0 amd64 0.2.2-1build1 [1,359 kB]\n", + "Get:70 http://archive.ubuntu.com/ubuntu jammy/universe amd64 librubberband2 amd64 2.0.0-2 [90.0 kB]\n", + "Get:71 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswscale5 amd64 7:4.4.2-0ubuntu0.22.04.1 [180 kB]\n", + "Get:72 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libvidstab1.1 amd64 1.1.0-2 [35.0 kB]\n", + "Get:73 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzimg2 amd64 3.0.3+ds1-1 [241 kB]\n", + "Get:74 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavfilter7 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,496 kB]\n", + "Get:75 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcaca0 amd64 0.99.beta19-2.2ubuntu4 [224 kB]\n", + "Get:76 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libcdio19 amd64 2.1.0-3ubuntu0.2 [63.6 kB]\n", + "Get:77 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-cdda2 amd64 10.2+2.0.0-1build3 [16.7 kB]\n", + "Get:78 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-paranoia2 amd64 10.2+2.0.0-1build3 [15.9 kB]\n", + "Get:79 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdc1394-25 amd64 2.2.6-4 [88.8 kB]\n", + "Get:80 http://archive.ubuntu.com/ubuntu jammy/main amd64 libiec61883-0 amd64 1.2.0-4build3 [25.9 kB]\n", + "Get:81 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjack-jackd2-0 amd64 1.9.20~dfsg-1 [293 kB]\n", + "Get:82 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal-data all 1:1.19.1-2build3 [164 kB]\n", + "Get:83 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsndio7.0 amd64 1.8.1-1.1 [29.3 kB]\n", + "Get:84 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal1 amd64 1:1.19.1-2build3 [535 kB]\n", + "Get:85 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-client0 amd64 1.20.0-1ubuntu0.1 [25.9 kB]\n", + "Get:86 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-0 amd64 0.1.0-3build1 [15.1 kB]\n", + "Get:87 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-server0 amd64 1.20.0-1ubuntu0.1 [34.3 kB]\n", + "Get:88 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgbm1 amd64 23.2.1-1ubuntu3.1~22.04.2 [33.5 kB]\n", + "Get:89 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-cursor0 amd64 1.20.0-1ubuntu0.1 [10.7 kB]\n", + "Get:90 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-egl1 amd64 1.20.0-1ubuntu0.1 [5,582 B]\n", + "Get:91 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcursor1 amd64 1:1.2.0-2build4 [20.9 kB]\n", + "Get:92 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxinerama1 amd64 2:1.1.4-3 [7,382 B]\n", + "Get:93 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxkbcommon0 amd64 1.4.0-1 [125 kB]\n", + "Get:94 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxrandr2 amd64 2:1.5.2-1build1 [20.4 kB]\n", + "Get:95 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsdl2-2.0-0 amd64 2.0.20+dfsg-2ubuntu1.22.04.1 [582 kB]\n", + "Get:96 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcb-shape0 amd64 1.14-3ubuntu3 [6,158 B]\n", + "Get:97 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxv1 amd64 2:1.0.11-1build2 [11.2 kB]\n", + "Get:98 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavdevice58 amd64 7:4.4.2-0ubuntu0.22.04.1 [87.5 kB]\n", + "Get:99 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 ffmpeg amd64 7:4.4.2-0ubuntu0.22.04.1 [1,696 kB]\n", + "Get:100 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libigdgmm12 amd64 22.1.2+ds1-1 [139 kB]\n", + "Get:101 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 intel-media-va-driver amd64 22.3.1+dfsg1-1ubuntu2 [2,283 kB]\n", + "Get:102 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaacs0 amd64 0.11.1-1 [64.1 kB]\n", + "Get:103 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbdplus0 amd64 0.2.0-1 [52.2 kB]\n", + "Get:104 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-plugin-1-cairo amd64 0.1.0-3build1 [20.4 kB]\n", + "Get:105 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-bin amd64 2.42.8+dfsg-1ubuntu0.3 [14.2 kB]\n", + "Get:106 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-common amd64 2.52.5+dfsg-3ubuntu0.2 [17.7 kB]\n", + "Get:107 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 mesa-va-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [4,100 kB]\n", + "Get:108 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 mesa-vdpau-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [3,820 kB]\n", + "Get:109 http://archive.ubuntu.com/ubuntu jammy/universe amd64 i965-va-driver amd64 2.4.1+dfsg1-1 [302 kB]\n", + "Get:110 http://archive.ubuntu.com/ubuntu jammy/universe amd64 va-driver-all amd64 2.14.0-1 [3,984 B]\n", + "Get:111 http://archive.ubuntu.com/ubuntu jammy/main amd64 vdpau-driver-all amd64 1.4-3build2 [4,510 B]\n", + "Get:112 http://archive.ubuntu.com/ubuntu jammy/universe amd64 pocketsphinx-en-us all 0.8.0+real5prealpha+1-14ubuntu1 [27.6 MB]\n", + "Fetched 94.1 MB in 1min 18s (1,203 kB/s) \u001b[0m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", + "debconf: delaying package configuration, since apt-utils is not installed\n", + "\n", + "\u001b7\u001b[0;23r\u001b8\u001b[1ASelecting previously unselected package libapparmor1:amd64.\n", + "(Reading database ... 76399 files and directories currently installed.)\n", + "Preparing to unpack .../000-libapparmor1_3.0.4-2ubuntu2.4_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 0%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", + "Selecting previously unselected package libslang2:amd64.\n", + "Preparing to unpack .../001-libslang2_2.3.2-5build4_amd64.deb ...\n", + "Unpacking libslang2:amd64 (2.3.2-5build4) ...\n", + "Selecting previously unselected package shared-mime-info.\n", + "Preparing to unpack .../002-shared-mime-info_2.1-2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 1%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking shared-mime-info (2.1-2) ...\n", + "Selecting previously unselected package xkb-data.\n", + "Preparing to unpack .../003-xkb-data_2.33-1_all.deb ...\n", + "Unpacking xkb-data (2.33-1) ...\n", + "Selecting previously unselected package libusb-1.0-0:amd64.\n", + "Preparing to unpack .../004-libusb-1.0-0_2%3a1.0.25-1ubuntu2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 2%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Unpacking libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", + "Selecting previously unselected package libaom3:amd64.\n", + "Preparing to unpack .../005-libaom3_3.3.0-1_amd64.deb ...\n", + "Unpacking libaom3:amd64 (3.3.0-1) ...\n", + "Selecting previously unselected package libva2:amd64.\n", + "Preparing to unpack .../006-libva2_2.14.0-1_amd64.deb ...\n", + "Unpacking libva2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 3%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Selecting previously unselected package libmfx1:amd64.\n", + "Preparing to unpack .../007-libmfx1_22.3.0-1_amd64.deb ...\n", + "Unpacking libmfx1:amd64 (22.3.0-1) ...\n", + "Selecting previously unselected package libva-drm2:amd64.\n", + "Preparing to unpack .../008-libva-drm2_2.14.0-1_amd64.deb ...\n", + "Unpacking libva-drm2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 4%]\u001b[49m\u001b[39m [##........................................................] \u001b8Selecting previously unselected package libva-x11-2:amd64.\n", + "Preparing to unpack .../009-libva-x11-2_2.14.0-1_amd64.deb ...\n", + "Unpacking libva-x11-2:amd64 (2.14.0-1) ...\n", + "Selecting previously unselected package libvdpau1:amd64.\n", + "Preparing to unpack .../010-libvdpau1_1.4-3build2_amd64.deb ...\n", + "Unpacking libvdpau1:amd64 (1.4-3build2) ...\n", + "Selecting previously unselected package libavutil56:amd64.\n", + "Preparing to unpack .../011-libavutil56_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 5%]\u001b[49m\u001b[39m [##........................................................] \u001b8Unpacking libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libcodec2-1.0:amd64.\n", + "Preparing to unpack .../012-libcodec2-1.0_1.0.1-3_amd64.deb ...\n", + "Unpacking libcodec2-1.0:amd64 (1.0.1-3) ...\n", + "Selecting previously unselected package libdav1d5:amd64.\n", + "Preparing to unpack .../013-libdav1d5_0.9.2-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 6%]\u001b[49m\u001b[39m [###.......................................................] \u001b8Unpacking libdav1d5:amd64 (0.9.2-1) ...\n", + "Selecting previously unselected package libgsm1:amd64.\n", + "Preparing to unpack .../014-libgsm1_1.0.19-1_amd64.deb ...\n", + "Unpacking libgsm1:amd64 (1.0.19-1) ...\n", + "Selecting previously unselected package libmp3lame0:amd64.\n", + "Preparing to unpack .../015-libmp3lame0_3.100-3build2_amd64.deb ...\n", + "Unpacking libmp3lame0:amd64 (3.100-3build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 7%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libopus0:amd64.\n", + "Preparing to unpack .../016-libopus0_1.3.1-0.1build2_amd64.deb ...\n", + "Unpacking libopus0:amd64 (1.3.1-0.1build2) ...\n", + "Selecting previously unselected package libcairo-gobject2:amd64.\n", + "Preparing to unpack .../017-libcairo-gobject2_1.16.0-5ubuntu2_amd64.deb ...\n", + "Unpacking libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 8%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libgdk-pixbuf2.0-common.\n", + "Preparing to unpack .../018-libgdk-pixbuf2.0-common_2.42.8+dfsg-1ubuntu0.3_all.deb ...\n", + "Unpacking libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Selecting previously unselected package libgdk-pixbuf-2.0-0:amd64.\n", + "Preparing to unpack .../019-libgdk-pixbuf-2.0-0_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", + "Unpacking libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Selecting previously unselected package librsvg2-2:amd64.\n", + "Preparing to unpack .../020-librsvg2-2_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 9%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Selecting previously unselected package libshine3:amd64.\n", + "Preparing to unpack .../021-libshine3_3.1.1-2_amd64.deb ...\n", + "Unpacking libshine3:amd64 (3.1.1-2) ...\n", + "Selecting previously unselected package libspeex1:amd64.\n", + "Preparing to unpack .../022-libspeex1_1.2~rc1.2-1.1ubuntu3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 10%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", + "Selecting previously unselected package libsoxr0:amd64.\n", + "Preparing to unpack .../023-libsoxr0_0.1.3-4build2_amd64.deb ...\n", + "Unpacking libsoxr0:amd64 (0.1.3-4build2) ...\n", + "Selecting previously unselected package libswresample3:amd64.\n", + "Preparing to unpack .../024-libswresample3_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 11%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libogg0:amd64.\n", + "Preparing to unpack .../025-libogg0_1.3.5-0ubuntu3_amd64.deb ...\n", + "Unpacking libogg0:amd64 (1.3.5-0ubuntu3) ...\n", + "Selecting previously unselected package libtheora0:amd64.\n", + "Preparing to unpack .../026-libtheora0_1.1.1+dfsg.1-15ubuntu4_amd64.deb ...\n", + "Unpacking libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 12%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libtwolame0:amd64.\n", + "Preparing to unpack .../027-libtwolame0_0.4.0-2build2_amd64.deb ...\n", + "Unpacking libtwolame0:amd64 (0.4.0-2build2) ...\n", + "Selecting previously unselected package libvorbis0a:amd64.\n", + "Preparing to unpack .../028-libvorbis0a_1.3.7-1build2_amd64.deb ...\n", + "Unpacking libvorbis0a:amd64 (1.3.7-1build2) ...\n", + "Selecting previously unselected package libvorbisenc2:amd64.\n", + "Preparing to unpack .../029-libvorbisenc2_1.3.7-1build2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 13%]\u001b[49m\u001b[39m [#######...................................................] \u001b8Unpacking libvorbisenc2:amd64 (1.3.7-1build2) ...\n", + "Selecting previously unselected package libvpx7:amd64.\n", + "Preparing to unpack .../030-libvpx7_1.11.0-2ubuntu2.3_amd64.deb ...\n", + "Unpacking libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", + "Selecting previously unselected package libx264-163:amd64.\n", + "Preparing to unpack .../031-libx264-163_2%3a0.163.3060+git5db6aa6-2build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 14%]\u001b[49m\u001b[39m [########..................................................] \u001b8Unpacking libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", + "Selecting previously unselected package libx265-199:amd64.\n", + "Preparing to unpack .../032-libx265-199_3.5-2_amd64.deb ...\n", + "Unpacking libx265-199:amd64 (3.5-2) ...\n", + "Selecting previously unselected package libxvidcore4:amd64.\n", + "Preparing to unpack .../033-libxvidcore4_2%3a1.3.7-1_amd64.deb ...\n", + "Unpacking libxvidcore4:amd64 (2:1.3.7-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 15%]\u001b[49m\u001b[39m [########..................................................] \u001b8Selecting previously unselected package libzvbi-common.\n", + "Preparing to unpack .../034-libzvbi-common_0.2.35-19_all.deb ...\n", + "Unpacking libzvbi-common (0.2.35-19) ...\n", + "Selecting previously unselected package libzvbi0:amd64.\n", + "Preparing to unpack .../035-libzvbi0_0.2.35-19_amd64.deb ...\n", + "Unpacking libzvbi0:amd64 (0.2.35-19) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 16%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Selecting previously unselected package libavcodec58:amd64.\n", + "Preparing to unpack .../036-libavcodec58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libraw1394-11:amd64.\n", + "Preparing to unpack .../037-libraw1394-11_2.1.2-2build2_amd64.deb ...\n", + "Unpacking libraw1394-11:amd64 (2.1.2-2build2) ...\n", + "Selecting previously unselected package libavc1394-0:amd64.\n", + "Preparing to unpack .../038-libavc1394-0_0.5.4-5build2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 17%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Unpacking libavc1394-0:amd64 (0.5.4-5build2) ...\n", + "Selecting previously unselected package libass9:amd64.\n", + "Preparing to unpack .../039-libass9_1%3a0.15.2-1_amd64.deb ...\n", + "Unpacking libass9:amd64 (1:0.15.2-1) ...\n", + "Selecting previously unselected package libudfread0:amd64.\n", + "Preparing to unpack .../040-libudfread0_1.1.2-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 18%]\u001b[49m\u001b[39m [##########................................................] \u001b8Unpacking libudfread0:amd64 (1.1.2-1) ...\n", + "Selecting previously unselected package libbluray2:amd64.\n", + "Preparing to unpack .../041-libbluray2_1%3a1.3.1-1_amd64.deb ...\n", + "Unpacking libbluray2:amd64 (1:1.3.1-1) ...\n", + "Selecting previously unselected package libchromaprint1:amd64.\n", + "Preparing to unpack .../042-libchromaprint1_1.5.1-2_amd64.deb ...\n", + "Unpacking libchromaprint1:amd64 (1.5.1-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 19%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libgme0:amd64.\n", + "Preparing to unpack .../043-libgme0_0.6.3-2_amd64.deb ...\n", + "Unpacking libgme0:amd64 (0.6.3-2) ...\n", + "Selecting previously unselected package libmpg123-0:amd64.\n", + "Preparing to unpack .../044-libmpg123-0_1.29.3-1build1_amd64.deb ...\n", + "Unpacking libmpg123-0:amd64 (1.29.3-1build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 20%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libvorbisfile3:amd64.\n", + "Preparing to unpack .../045-libvorbisfile3_1.3.7-1build2_amd64.deb ...\n", + "Unpacking libvorbisfile3:amd64 (1.3.7-1build2) ...\n", + "Selecting previously unselected package libopenmpt0:amd64.\n", + "Preparing to unpack .../046-libopenmpt0_0.6.1-1_amd64.deb ...\n", + "Unpacking libopenmpt0:amd64 (0.6.1-1) ...\n", + "Selecting previously unselected package librabbitmq4:amd64.\n", + "Preparing to unpack .../047-librabbitmq4_0.10.0-1ubuntu2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 21%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", + "Selecting previously unselected package libsrt1.4-gnutls:amd64.\n", + "Preparing to unpack .../048-libsrt1.4-gnutls_1.4.4-4_amd64.deb ...\n", + "Unpacking libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", + "Selecting previously unselected package libssh-gcrypt-4:amd64.\n", + "Preparing to unpack .../049-libssh-gcrypt-4_0.9.6-2ubuntu0.22.04.3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 22%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", + "Selecting previously unselected package libnorm1:amd64.\n", + "Preparing to unpack .../050-libnorm1_1.5.9+dfsg-2_amd64.deb ...\n", + "Unpacking libnorm1:amd64 (1.5.9+dfsg-2) ...\n", + "Selecting previously unselected package libpgm-5.3-0:amd64.\n", + "Preparing to unpack .../051-libpgm-5.3-0_5.3.128~dfsg-2_amd64.deb ...\n", + "Unpacking libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 23%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libzmq5:amd64.\n", + "Preparing to unpack .../052-libzmq5_4.3.4-2_amd64.deb ...\n", + "Unpacking libzmq5:amd64 (4.3.4-2) ...\n", + "Selecting previously unselected package libavformat58:amd64.\n", + "Preparing to unpack .../053-libavformat58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 24%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libbs2b0:amd64.\n", + "Preparing to unpack .../054-libbs2b0_3.1.0+dfsg-2.2build1_amd64.deb ...\n", + "Unpacking libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", + "Selecting previously unselected package libflite1:amd64.\n", + "Preparing to unpack .../055-libflite1_2.2-3_amd64.deb ...\n", + "Unpacking libflite1:amd64 (2.2-3) ...\n", + "Selecting previously unselected package libserd-0-0:amd64.\n", + "Preparing to unpack .../056-libserd-0-0_0.30.10-2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 25%]\u001b[49m\u001b[39m [##############............................................] \u001b8Unpacking libserd-0-0:amd64 (0.30.10-2) ...\n", + "Selecting previously unselected package libsord-0-0:amd64.\n", + "Preparing to unpack .../057-libsord-0-0_0.16.8-2_amd64.deb ...\n", + "Unpacking libsord-0-0:amd64 (0.16.8-2) ...\n", + "Selecting previously unselected package libsratom-0-0:amd64.\n", + "Preparing to unpack .../058-libsratom-0-0_0.6.8-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 26%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Unpacking libsratom-0-0:amd64 (0.6.8-1) ...\n", + "Selecting previously unselected package liblilv-0-0:amd64.\n", + "Preparing to unpack .../059-liblilv-0-0_0.24.12-2_amd64.deb ...\n", + "Unpacking liblilv-0-0:amd64 (0.24.12-2) ...\n", + "Selecting previously unselected package libmysofa1:amd64.\n", + "Preparing to unpack .../060-libmysofa1_1.2.1~dfsg0-1_amd64.deb ...\n", + "Unpacking libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 27%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Selecting previously unselected package libasyncns0:amd64.\n", + "Preparing to unpack .../061-libasyncns0_0.8-6build2_amd64.deb ...\n", + "Unpacking libasyncns0:amd64 (0.8-6build2) ...\n", + "Selecting previously unselected package libflac8:amd64.\n", + "Preparing to unpack .../062-libflac8_1.3.3-2ubuntu0.2_amd64.deb ...\n", + "Unpacking libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 28%]\u001b[49m\u001b[39m [################..........................................] \u001b8Selecting previously unselected package libsndfile1:amd64.\n", + "Preparing to unpack .../063-libsndfile1_1.0.31-2ubuntu0.1_amd64.deb ...\n", + "Unpacking libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", + "Selecting previously unselected package libpulse0:amd64.\n", + "Preparing to unpack .../064-libpulse0_1%3a15.99.1+dfsg1-1ubuntu2.2_amd64.deb ...\n", + "Unpacking libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Selecting previously unselected package libsphinxbase3:amd64.\n", + "Preparing to unpack .../065-libsphinxbase3_0.8+5prealpha+1-13build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 29%]\u001b[49m\u001b[39m [################..........................................] \u001b8Unpacking libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", + "Selecting previously unselected package libpocketsphinx3:amd64.\n", + "Preparing to unpack .../066-libpocketsphinx3_0.8.0+real5prealpha+1-14ubuntu1_amd64.deb ...\n", + "Unpacking libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "Selecting previously unselected package libpostproc55:amd64.\n", + "Preparing to unpack .../067-libpostproc55_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 30%]\u001b[49m\u001b[39m [#################.........................................] \u001b8Unpacking libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libsamplerate0:amd64.\n", + "Preparing to unpack .../068-libsamplerate0_0.2.2-1build1_amd64.deb ...\n", + "Unpacking libsamplerate0:amd64 (0.2.2-1build1) ...\n", + "Selecting previously unselected package librubberband2:amd64.\n", + "Preparing to unpack .../069-librubberband2_2.0.0-2_amd64.deb ...\n", + "Unpacking librubberband2:amd64 (2.0.0-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 31%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libswscale5:amd64.\n", + "Preparing to unpack .../070-libswscale5_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libvidstab1.1:amd64.\n", + "Preparing to unpack .../071-libvidstab1.1_1.1.0-2_amd64.deb ...\n", + "Unpacking libvidstab1.1:amd64 (1.1.0-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 32%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libzimg2:amd64.\n", + "Preparing to unpack .../072-libzimg2_3.0.3+ds1-1_amd64.deb ...\n", + "Unpacking libzimg2:amd64 (3.0.3+ds1-1) ...\n", + "Selecting previously unselected package libavfilter7:amd64.\n", + "Preparing to unpack .../073-libavfilter7_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libcaca0:amd64.\n", + "Preparing to unpack .../074-libcaca0_0.99.beta19-2.2ubuntu4_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 33%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", + "Selecting previously unselected package libcdio19:amd64.\n", + "Preparing to unpack .../075-libcdio19_2.1.0-3ubuntu0.2_amd64.deb ...\n", + "Unpacking libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", + "Selecting previously unselected package libcdio-cdda2:amd64.\n", + "Preparing to unpack .../076-libcdio-cdda2_10.2+2.0.0-1build3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 34%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", + "Selecting previously unselected package libcdio-paranoia2:amd64.\n", + "Preparing to unpack .../077-libcdio-paranoia2_10.2+2.0.0-1build3_amd64.deb ...\n", + "Unpacking libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", + "Selecting previously unselected package libdc1394-25:amd64.\n", + "Preparing to unpack .../078-libdc1394-25_2.2.6-4_amd64.deb ...\n", + "Unpacking libdc1394-25:amd64 (2.2.6-4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 35%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libiec61883-0:amd64.\n", + "Preparing to unpack .../079-libiec61883-0_1.2.0-4build3_amd64.deb ...\n", + "Unpacking libiec61883-0:amd64 (1.2.0-4build3) ...\n", + "Selecting previously unselected package libjack-jackd2-0:amd64.\n", + "Preparing to unpack .../080-libjack-jackd2-0_1.9.20~dfsg-1_amd64.deb ...\n", + "Unpacking libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 36%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libopenal-data.\n", + "Preparing to unpack .../081-libopenal-data_1%3a1.19.1-2build3_all.deb ...\n", + "Unpacking libopenal-data (1:1.19.1-2build3) ...\n", + "Selecting previously unselected package libsndio7.0:amd64.\n", + "Preparing to unpack .../082-libsndio7.0_1.8.1-1.1_amd64.deb ...\n", + "Unpacking libsndio7.0:amd64 (1.8.1-1.1) ...\n", + "Selecting previously unselected package libopenal1:amd64.\n", + "Preparing to unpack .../083-libopenal1_1%3a1.19.1-2build3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 37%]\u001b[49m\u001b[39m [#####################.....................................] \u001b8Unpacking libopenal1:amd64 (1:1.19.1-2build3) ...\n", + "Selecting previously unselected package libwayland-client0:amd64.\n", + "Preparing to unpack .../084-libwayland-client0_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libdecor-0-0:amd64.\n", + "Preparing to unpack .../085-libdecor-0-0_0.1.0-3build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 38%]\u001b[49m\u001b[39m [######################....................................] \u001b8Unpacking libdecor-0-0:amd64 (0.1.0-3build1) ...\n", + "Selecting previously unselected package libwayland-server0:amd64.\n", + "Preparing to unpack .../086-libwayland-server0_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libgbm1:amd64.\n", + "Preparing to unpack .../087-libgbm1_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", + "Unpacking libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 39%]\u001b[49m\u001b[39m [######################....................................] \u001b8Selecting previously unselected package libwayland-cursor0:amd64.\n", + "Preparing to unpack .../088-libwayland-cursor0_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libwayland-egl1:amd64.\n", + "Preparing to unpack .../089-libwayland-egl1_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 40%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Selecting previously unselected package libxcursor1:amd64.\n", + "Preparing to unpack .../090-libxcursor1_1%3a1.2.0-2build4_amd64.deb ...\n", + "Unpacking libxcursor1:amd64 (1:1.2.0-2build4) ...\n", + "Selecting previously unselected package libxinerama1:amd64.\n", + "Preparing to unpack .../091-libxinerama1_2%3a1.1.4-3_amd64.deb ...\n", + "Unpacking libxinerama1:amd64 (2:1.1.4-3) ...\n", + "Selecting previously unselected package libxkbcommon0:amd64.\n", + "Preparing to unpack .../092-libxkbcommon0_1.4.0-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 41%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Unpacking libxkbcommon0:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libxrandr2:amd64.\n", + "Preparing to unpack .../093-libxrandr2_2%3a1.5.2-1build1_amd64.deb ...\n", + "Unpacking libxrandr2:amd64 (2:1.5.2-1build1) ...\n", + "Selecting previously unselected package libsdl2-2.0-0:amd64.\n", + "Preparing to unpack .../094-libsdl2-2.0-0_2.0.20+dfsg-2ubuntu1.22.04.1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 42%]\u001b[49m\u001b[39m [########################..................................] \u001b8Unpacking libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", + "Selecting previously unselected package libxcb-shape0:amd64.\n", + "Preparing to unpack .../095-libxcb-shape0_1.14-3ubuntu3_amd64.deb ...\n", + "Unpacking libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", + "Selecting previously unselected package libxv1:amd64.\n", + "Preparing to unpack .../096-libxv1_2%3a1.0.11-1build2_amd64.deb ...\n", + "Unpacking libxv1:amd64 (2:1.0.11-1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 43%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libavdevice58:amd64.\n", + "Preparing to unpack .../097-libavdevice58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package ffmpeg.\n", + "Preparing to unpack .../098-ffmpeg_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 44%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libigdgmm12:amd64.\n", + "Preparing to unpack .../099-libigdgmm12_22.1.2+ds1-1_amd64.deb ...\n", + "Unpacking libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", + "Selecting previously unselected package intel-media-va-driver:amd64.\n", + "Preparing to unpack .../100-intel-media-va-driver_22.3.1+dfsg1-1ubuntu2_amd64.deb ...\n", + "Unpacking intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", + "Selecting previously unselected package libaacs0:amd64.\n", + "Preparing to unpack .../101-libaacs0_0.11.1-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 45%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libaacs0:amd64 (0.11.1-1) ...\n", + "Selecting previously unselected package libbdplus0:amd64.\n", + "Preparing to unpack .../102-libbdplus0_0.2.0-1_amd64.deb ...\n", + "Unpacking libbdplus0:amd64 (0.2.0-1) ...\n", + "Selecting previously unselected package libdecor-0-plugin-1-cairo:amd64.\n", + "Preparing to unpack .../103-libdecor-0-plugin-1-cairo_0.1.0-3build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 46%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", + "Selecting previously unselected package libgdk-pixbuf2.0-bin.\n", + "Preparing to unpack .../104-libgdk-pixbuf2.0-bin_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", + "Unpacking libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Selecting previously unselected package librsvg2-common:amd64.\n", + "Preparing to unpack .../105-librsvg2-common_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", + "Unpacking librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 47%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package mesa-va-drivers:amd64.\n", + "Preparing to unpack .../106-mesa-va-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", + "Unpacking mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "Selecting previously unselected package mesa-vdpau-drivers:amd64.\n", + "Preparing to unpack .../107-mesa-vdpau-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", + "Unpacking mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 48%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package i965-va-driver:amd64.\n", + "Preparing to unpack .../108-i965-va-driver_2.4.1+dfsg1-1_amd64.deb ...\n", + "Unpacking i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", + "Selecting previously unselected package va-driver-all:amd64.\n", + "Preparing to unpack .../109-va-driver-all_2.14.0-1_amd64.deb ...\n", + "Unpacking va-driver-all:amd64 (2.14.0-1) ...\n", + "Selecting previously unselected package vdpau-driver-all:amd64.\n", + "Preparing to unpack .../110-vdpau-driver-all_1.4-3build2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 49%]\u001b[49m\u001b[39m [############################..............................] \u001b8Unpacking vdpau-driver-all:amd64 (1.4-3build2) ...\n", + "Selecting previously unselected package pocketsphinx-en-us.\n", + "Preparing to unpack .../111-pocketsphinx-en-us_0.8.0+real5prealpha+1-14ubuntu1_all.deb ...\n", + "Unpacking pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "Setting up libgme0:amd64 (0.6.3-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 50%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", + "Setting up libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 51%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libudfread0:amd64 (1.1.2-1) ...\n", + "Setting up libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 52%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libaom3:amd64 (3.3.0-1) ...\n", + "Setting up librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 53%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libraw1394-11:amd64 (2.1.2-2build2) ...\n", + "Setting up libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", + "Setting up libcodec2-1.0:amd64 (1.0.1-3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 54%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libmpg123-0:amd64 (1.29.3-1build1) ...\n", + "Setting up libogg0:amd64 (1.3.5-0ubuntu3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 55%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", + "Setting up libshine3:amd64 (3.1.1-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 56%]\u001b[49m\u001b[39m [################################..........................] \u001b8Setting up libtwolame0:amd64 (0.4.0-2build2) ...\n", + "Setting up libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 57%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libgsm1:amd64 (1.0.19-1) ...\n", + "Setting up libsoxr0:amd64 (0.1.3-4build2) ...\n", + "Setting up libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 58%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libxcursor1:amd64 (1:1.2.0-2build4) ...\n", + "Setting up libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 59%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libnorm1:amd64 (1.5.9+dfsg-2) ...\n", + "Setting up libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 60%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", + "Setting up xkb-data (2.33-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 61%]\u001b[49m\u001b[39m [###################################.......................] \u001b8Setting up libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", + "Setting up libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", + "Setting up libxvidcore4:amd64 (2:1.3.7-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 62%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", + "Setting up libass9:amd64 (1:0.15.2-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 63%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libslang2:amd64 (2.3.2-5build4) ...\n", + "Setting up libva2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 64%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", + "Setting up libopus0:amd64 (1.3.1-0.1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 65%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up shared-mime-info (2.1-2) ...\n", + "Setting up libxinerama1:amd64 (2:1.1.4-3) ...\n", + "Setting up intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 66%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxv1:amd64 (2:1.0.11-1build2) ...\n", + "Setting up libvorbis0a:amd64 (1.3.7-1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 67%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxrandr2:amd64 (2:1.5.2-1build1) ...\n", + "Setting up libaacs0:amd64 (0.11.1-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 68%]\u001b[49m\u001b[39m [#######################################...................] \u001b8Setting up pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "Setting up libx265-199:amd64 (3.5-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 69%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libsndio7.0:amd64 (1.8.1-1.1) ...\n", + "Setting up libbdplus0:amd64 (0.2.0-1) ...\n", + "Setting up libvidstab1.1:amd64 (1.1.0-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 70%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libflite1:amd64 (2.2-3) ...\n", + "Setting up libva-drm2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 71%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libasyncns0:amd64 (0.8-6build2) ...\n", + "Setting up libvdpau1:amd64 (1.4-3build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 72%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", + "Setting up libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 73%]\u001b[49m\u001b[39m [##########################################................] \u001b8Setting up libzimg2:amd64 (3.0.3+ds1-1) ...\n", + "Setting up libopenal-data (1:1.19.1-2build3) ...\n", + "Setting up libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 74%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", + "Setting up libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 75%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Setting up libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 76%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "Setting up libdav1d5:amd64 (0.9.2-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 77%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up libmfx1:amd64 (22.3.0-1) ...\n", + "Setting up libbluray2:amd64 (1:1.3.1-1) ...\n", + "Setting up libsamplerate0:amd64 (0.2.2-1build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 78%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libva-x11-2:amd64 (2.14.0-1) ...\n", + "Setting up libzvbi-common (0.2.35-19) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 79%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libmp3lame0:amd64 (3.100-3build2) ...\n", + "Setting up i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 80%]\u001b[49m\u001b[39m [##############################################............] \u001b8Setting up libvorbisenc2:amd64 (1.3.7-1build2) ...\n", + "Setting up libiec61883-0:amd64 (1.2.0-4build3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 81%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libserd-0-0:amd64 (0.30.10-2) ...\n", + "Setting up libxkbcommon0:amd64 (1.4.0-1) ...\n", + "Setting up libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 82%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libavc1394-0:amd64 (0.5.4-5build2) ...\n", + "Setting up mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 83%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libzvbi0:amd64 (0.2.35-19) ...\n", + "Setting up libzmq5:amd64 (4.3.4-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 84%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", + "Setting up libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 85%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", + "Setting up libopenal1:amd64 (1:1.19.1-2build3) ...\n", + "Setting up libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 86%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Setting up libvorbisfile3:amd64 (1.3.7-1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 87%]\u001b[49m\u001b[39m [##################################################........] \u001b8Setting up va-driver-all:amd64 (2.14.0-1) ...\n", + "Setting up libdc1394-25:amd64 (2.2.6-4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 88%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 89%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up librubberband2:amd64 (2.0.0-2) ...\n", + "Setting up libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", + "Setting up vdpau-driver-all:amd64 (1.4-3build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 90%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Setting up libsord-0-0:amd64 (0.16.8-2) ...\n", + "Setting up libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 91%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libsratom-0-0:amd64 (0.6.8-1) ...\n", + "Setting up libdecor-0-0:amd64 (0.1.0-3build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 92%]\u001b[49m\u001b[39m [#####################################################.....] \u001b8Setting up libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 93%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up liblilv-0-0:amd64 (0.24.12-2) ...\n", + "Setting up libopenmpt0:amd64 (0.6.1-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 94%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Setting up libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 95%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 96%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libchromaprint1:amd64 (1.5.1-2) ...\n", + "Setting up libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 97%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 98%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 99%]\u001b[49m\u001b[39m [#########################################################.] \u001b8Processing triggers for libc-bin (2.35-0ubuntu3.6) ...\n", + "Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", + "\n", + "\u001b7\u001b[0;24r\u001b8\u001b[1A\u001b[J" ] } ], diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 68d856fb9..87dd764a7 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -106,6 +106,11 @@ def __compute_net_force_and_torque( apparent_wind_vel = np.subtract(rel_wind_vel, self.relative_velocity) apparent_water_vel = np.subtract(rel_water_vel, self.relative_velocity) + wind_angle = np.arctan2(rel_wind_vel[1], rel_wind_vel[0]) # Wind angle in radians + trim_tab_angle_rad = np.radians(trim_tab_angle) + main_sail_angle = wind_angle - trim_tab_angle_rad # in radians + rudder_angle_rad = np.radians(rudder_angle_deg) + # Calculate Forces on sail and rudder sail_force = self.__sail_force_computation.compute(apparent_wind_vel, trim_tab_angle) rudder_force = self.__rudder_force_computation.compute( @@ -113,29 +118,49 @@ def __compute_net_force_and_torque( ) # Calculate Hull Drag Force - hull_drag_force = ( - self.relative_velocity[0] * BoatProperties.hull_drag_factor, - self.relative_velocity[1] * BoatProperties.hull_drag_factor, - ) + hull_drag_force = self.relative_velocity * BoatProperties.hull_drag_factor # Total Force Calculation - total_drag_force = np.add(sail_force[1] + rudder_force[1] + hull_drag_force) + total_drag_force = np.add(sail_force[1], rudder_force[1], hull_drag_force) total_force = np.add(sail_force[0] + rudder_force[0], total_drag_force) + # Setting origin at rear of boat + centre_of_gravity = 3 # TODO only measuring length of boat + sail_central_distance = 5 # TODO only measuring length of boat + # TODO define sail distance as half the width of the sail + + # Calculating magnitudes of sail + sail_drag = np.linalg.norm(sail_force[1], ord=2) + sail_lift = np.linalg.norm(sail_force[0], ord=2) + # Calculating Total Torque - sail_torque_constant = BoatProperties.sail_dist * np.sin(np.radians(trim_tab_angle)) - rudder_torque_constant = BoatProperties.rudder_dist * np.sin(np.radians(rudder_angle_deg)) + sail_lift_constant = ( + sail_central_distance # position of sail mount + - ( + BoatProperties.sail_dist * np.cos(main_sail_angle) + ) # distance of sail with changes to trim tab angle + - centre_of_gravity # point to take torque around + ) + sail_drag_constant = BoatProperties.sail_dist * np.sin(main_sail_angle) - sail_torque = (sail_force[0] * sail_torque_constant, sail_force[1] * sail_torque_constant) - rudder_torque = ( - rudder_force[0] * rudder_torque_constant, - rudder_force[1] * rudder_torque_constant, + sail_torque = np.add(sail_drag * sail_drag_constant, sail_lift * sail_lift_constant) + + rudder_drag_constant = BoatProperties.rudder_dist * np.sin(rudder_angle_rad) + + rudder_lift_constant = ( + BoatProperties.rudder_dist * np.cos(rudder_angle_rad) + centre_of_gravity ) - total_torque = (sail_torque[0] + rudder_torque[0], sail_torque[1] + rudder_torque[1]) - # torque_magnitude = np. + rudder_torque = np.add( + rudder_force[0] * rudder_lift_constant, + rudder_force[1] * rudder_drag_constant, + ) + + total_torque = np.add(sail_torque, rudder_torque) # Sum torques about z-axis + + final_torque = np.array([0, 0, total_torque]) - return (total_force, total_torque) + return (total_force, final_torque) @property def global_position(self) -> NDArray: From 28e67afe16d9294f1a8c67bd092eafeaee4d0c6b Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 19 Oct 2024 15:10:19 -0700 Subject: [PATCH 23/36] Torque Calculations with Placeholders --- src/boat_simulator/boat_simulator/nodes/physics_engine/model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 87dd764a7..922462972 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -156,7 +156,7 @@ def __compute_net_force_and_torque( rudder_force[1] * rudder_drag_constant, ) - total_torque = np.add(sail_torque, rudder_torque) # Sum torques about z-axis + total_torque = np.add(sail_torque, rudder_torque) # Sum torques about z-axis final_torque = np.array([0, 0, total_torque]) From 534994dcf4c5526a8ed5d3648913cafdcef5d02d Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 26 Oct 2024 14:32:26 -0700 Subject: [PATCH 24/36] Declaring Constants --- .../boat_simulator/common/constants.py | 36 +++++++++----- .../nodes/physics_engine/model.py | 48 +++++++++---------- .../unit/nodes/physics_engine/test_model.py | 10 ++++ 3 files changed, 58 insertions(+), 36 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 42b92df8b..9884e9bf7 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -4,6 +4,7 @@ from dataclasses import dataclass from enum import Enum +import numpy as np from numpy.typing import NDArray from boat_simulator.common.types import Scalar @@ -49,6 +50,8 @@ class BoatProperties: inertia: NDArray # Kilograms-meters squared (kg•m^2) air_density: Scalar # Kilograms per meter cubed (kg/m^3) water_density: Scalar # Kilograms per meter cubed (kg/m^3) + centre_of_gravity: NDArray # Meters (m) + mast_position: NDArray # Meters (m) # Directly accessible constants @@ -89,15 +92,24 @@ class BoatProperties: # Max sail actuator control angle range in degrees, min angle [0], max angle [1] SAIL_MAX_ANGLE_RANGE = (-7, 7) -# # Predetermined values for BoatProperties -# # TODO These are placeholder values which should be replaced when we have real values. -# BOAT_PROPERTIES = BoatProperties( -# sail_lift_coeffs={0.0: 0.0, 5.0: 0.2, 10.0: 0.5, 15.0: 0.7, 20.0: 1.0}, -# sail_drag_coeffs={0.0: 0.1, 5.0: 0.12, 10.0: 0.15, 15.0: 0.18, 20.0: 0.2}, -# sail_areas={0.0: 20.0, 5.0: 19.8, 10.0: 19.5, 15.0: 19.2, 20.0: 18.8}, -# rudder_drag_coeffs={0.0: 0.2, 5.0: 0.22, 10.0: 0.25, 15.0: 0.28, 20.0: 0.3}, -# rudder_areas={0.0: 2.0, 5.0: 1.9, 10.0: 1.8, 15.0: 1.7, 20.0: 1.6}, -# sail_dist=5.0, -# rudder_dist=1.5, -# hull_drag_factor=0.05, -# ) +# Predetermined values for BoatProperties +# TODO These are placeholder values which should be replaced when we have real values. +BOAT_PROPERTIES = BoatProperties( + sail_lift_coeffs=np.array([[0.0, 0.0], [5.0, 0.2], [10.0, 0.5], [15.0, 0.7], [20.0, 1.0]]), + sail_drag_coeffs=np.array([[0.0, 0.1], [5.0, 0.12], [10.0, 0.15], [15.0, 0.18], [20.0, 0.2]]), + sail_areas=4.0, + rudder_lift_coeffs=np.array([[0.0, 0.0], [5.0, 0.1], [10.0, 0.2], [15.0, 0.3], [20.0, 0.4]]), + rudder_drag_coeffs=np.array( + [[0.0, 0.2], [5.0, 0.22], [10.0, 0.25], [15.0, 0.28], [20.0, 0.3]] + ), + rudder_areas=3.0, + sail_dist=0.75, # defined distance from mast position to centre of gravity of the sailboat + rudder_dist=1.5, + hull_drag_factor=0.05, + mass=50, + inertia=np.array([0.0, 0.1, 0.2, 0.3, 0.4]), + air_density=1.225, + water_density=1000, + centre_of_gravity=np.array([0.8, 1, 0]), + mast_position=np.array([0.8, 1.5, 0]), +) diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 922462972..c39d61454 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -5,7 +5,7 @@ import numpy as np from numpy.typing import NDArray -from boat_simulator.common.constants import BoatProperties +from boat_simulator.common.constants import BOAT_PROPERTIES from boat_simulator.common.types import Scalar from boat_simulator.nodes.physics_engine.fluid_forces import MediumForceComputation from boat_simulator.nodes.physics_engine.kinematics_computation import BoatKinematics @@ -29,20 +29,20 @@ def __init__(self, timestep: Scalar): timestep (Scalar): The time interval for calculations, expressed in seconds (s). """ self.__kinematics_computation = BoatKinematics( - timestep, BoatProperties.mass, BoatProperties.inertia + timestep, BOAT_PROPERTIES.mass, BOAT_PROPERTIES.inertia ) self.__sail_force_computation = MediumForceComputation( - BoatProperties.sail_lift_coeffs, - BoatProperties.sail_drag_coeffs, - BoatProperties.sail_areas, - BoatProperties.air_density, + BOAT_PROPERTIES.sail_lift_coeffs, + BOAT_PROPERTIES.sail_drag_coeffs, + BOAT_PROPERTIES.sail_areas, + BOAT_PROPERTIES.air_density, ) self.__rudder_force_computation = MediumForceComputation( - BoatProperties.rudder_lift_coeffs, - BoatProperties.rudder_drag_coeffs, - BoatProperties.rudder_areas, - BoatProperties.water_density, + BOAT_PROPERTIES.rudder_lift_coeffs, + BOAT_PROPERTIES.rudder_drag_coeffs, + BOAT_PROPERTIES.rudder_areas, + BOAT_PROPERTIES.water_density, ) def step( @@ -118,42 +118,42 @@ def __compute_net_force_and_torque( ) # Calculate Hull Drag Force - hull_drag_force = self.relative_velocity * BoatProperties.hull_drag_factor + hull_drag_force = self.relative_velocity * BOAT_PROPERTIES.hull_drag_factor # Total Force Calculation total_drag_force = np.add(sail_force[1], rudder_force[1], hull_drag_force) total_force = np.add(sail_force[0] + rudder_force[0], total_drag_force) - # Setting origin at rear of boat - centre_of_gravity = 3 # TODO only measuring length of boat - sail_central_distance = 5 # TODO only measuring length of boat - # TODO define sail distance as half the width of the sail - # Calculating magnitudes of sail sail_drag = np.linalg.norm(sail_force[1], ord=2) sail_lift = np.linalg.norm(sail_force[0], ord=2) # Calculating Total Torque sail_lift_constant = ( - sail_central_distance # position of sail mount + BOAT_PROPERTIES.mast_position[1] # position of sail mount - ( - BoatProperties.sail_dist * np.cos(main_sail_angle) + BOAT_PROPERTIES.sail_dist * np.cos(main_sail_angle) ) # distance of sail with changes to trim tab angle - - centre_of_gravity # point to take torque around + - BOAT_PROPERTIES.centre_of_gravity[1] # point to take torque around ) - sail_drag_constant = BoatProperties.sail_dist * np.sin(main_sail_angle) + sail_drag_constant = BOAT_PROPERTIES.sail_dist * np.sin(main_sail_angle) sail_torque = np.add(sail_drag * sail_drag_constant, sail_lift * sail_lift_constant) - rudder_drag_constant = BoatProperties.rudder_dist * np.sin(rudder_angle_rad) + # Calculating magnitudes of sail + rudder_drag = np.linalg.norm(rudder_force[1], ord=2) + rudder_lift = np.linalg.norm(rudder_force[0], ord=2) + + rudder_drag_constant = BOAT_PROPERTIES.rudder_dist * np.sin(rudder_angle_rad) rudder_lift_constant = ( - BoatProperties.rudder_dist * np.cos(rudder_angle_rad) + centre_of_gravity + BOAT_PROPERTIES.rudder_dist * np.cos(rudder_angle_rad) + + BOAT_PROPERTIES.centre_of_gravity[1] ) rudder_torque = np.add( - rudder_force[0] * rudder_lift_constant, - rudder_force[1] * rudder_drag_constant, + rudder_lift * rudder_lift_constant, + rudder_drag * rudder_drag_constant, ) total_torque = np.add(sail_torque, rudder_torque) # Sum torques about z-axis diff --git a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py index 98407fc79..4155a77b6 100644 --- a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py +++ b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py @@ -1,5 +1,15 @@ """Tests classes and functions in boat_simulator/nodes/physics_engine/model.py""" +import numpy as np +import pytest + +from boat_simulator.common.constants import BOAT_PROPERTIES +from boat_simulator.nodes.physics_engine.model import BoatState + class TestBoatState: + @pytest.parametrize( + + ) + def test__compute pass From 36de3447ea3579f3e73c98510ab3ccdc104852e7 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 26 Oct 2024 15:59:18 -0700 Subject: [PATCH 25/36] Created test file --- .../boat_simulator/common/constants.py | 2 +- .../nodes/physics_engine/model.py | 6 +- .../unit/nodes/physics_engine/test_model.py | 77 ++++++++++++++++++- 3 files changed, 77 insertions(+), 8 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 9884e9bf7..3e13011e8 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -107,7 +107,7 @@ class BoatProperties: rudder_dist=1.5, hull_drag_factor=0.05, mass=50, - inertia=np.array([0.0, 0.1, 0.2, 0.3, 0.4]), + inertia=np.eye(3), air_density=1.225, water_density=1000, centre_of_gravity=np.array([0.8, 1, 0]), diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index c39d61454..ec091b256 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -121,8 +121,8 @@ def __compute_net_force_and_torque( hull_drag_force = self.relative_velocity * BOAT_PROPERTIES.hull_drag_factor # Total Force Calculation - total_drag_force = np.add(sail_force[1], rudder_force[1], hull_drag_force) - total_force = np.add(sail_force[0] + rudder_force[0], total_drag_force) + total_drag_force = sail_force[1] + rudder_force[1] + hull_drag_force + total_force = sail_force[0] + rudder_force[0] + total_drag_force # Calculating magnitudes of sail sail_drag = np.linalg.norm(sail_force[1], ord=2) @@ -140,7 +140,7 @@ def __compute_net_force_and_torque( sail_torque = np.add(sail_drag * sail_drag_constant, sail_lift * sail_lift_constant) - # Calculating magnitudes of sail + # Calculating magnitudes of rudder rudder_drag = np.linalg.norm(rudder_force[1], ord=2) rudder_lift = np.linalg.norm(rudder_force[0], ord=2) diff --git a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py index 4155a77b6..d7dcd09c2 100644 --- a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py +++ b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py @@ -7,9 +7,78 @@ from boat_simulator.nodes.physics_engine.model import BoatState -class TestBoatState: - @pytest.parametrize( +@pytest.mark.parametrize( + "rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle", + [ + (np.array([1, 2, 3]), np.array([1, 2, 3]), 45, 45), + (np.array([1, 2, 3]), np.array([1, 2, 3]), 45, 45), + (np.array([4, 5, 6]), np.array([7, 8, 9]), 30, 60), + (np.array([10, 20, 30]), np.array([15, 25, 35]), 90, 120), + (np.array([0, 0, 0]), np.array([1, 1, 1]), 0, 90), + (np.array([-1, -2, -3]), np.array([-1, -2, -3]), 180, 270), + (np.array([3.5, 4.5, 5.5]), np.array([1.5, 2.5, 3.5]), 15, 75), + (np.array([100, 200, 300]), np.array([300, 200, 100]), 0, 45), + ], +) +def test_compute_net_force_torque( + rel_wind_vel, + rel_water_vel, + rudder_angle_deg, + trim_tab_angle, +): + current_state = BoatState(1.0) + net_force = current_state._BoatState__compute_net_force_and_torque( + rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle ) - def test__compute - pass + + app_wind_vel = np.subtract(rel_wind_vel, current_state.relative_velocity) + app_water_vel = np.subtract(rel_water_vel, current_state.relative_velocity) + + wind_angle = np.arctan2(app_wind_vel[1], app_wind_vel[0]) + trim_tab_angle_rad = np.radians(trim_tab_angle) + main_sail_angle = wind_angle - trim_tab_angle_rad + rudder_angle_rad = np.radians(rudder_angle_deg) + + test_sail_force = current_state.__sail_force_computation.compute(app_wind_vel, trim_tab_angle) + test_rudder_force = current_state.__rudder_force_computation.compute( + app_water_vel, rudder_angle_deg + ) + + hull_drag_force = current_state.relative_velocity * BOAT_PROPERTIES.hull_drag_factor + + total_drag_force = test_sail_force[1] + test_rudder_force[1] + hull_drag_force + total_force = test_sail_force[0] + test_rudder_force[0] + total_drag_force + + sail_drag = np.linalg.norm(test_sail_force[1], ord=2) + sail_lift = np.linalg.norm(test_sail_force[0], ord=2) + + sail_lift_constant = ( + BOAT_PROPERTIES.mast_position[1] + - (BOAT_PROPERTIES.sail_dist * np.cos(main_sail_angle)) + - BOAT_PROPERTIES.centre_of_gravity[1] + ) + + sail_drag_constant = BOAT_PROPERTIES.sail_dist * np.sin(main_sail_angle) + + sail_torque = np.add(sail_drag * sail_drag_constant, sail_lift * sail_lift_constant) + + rudder_drag = np.linalg.norm(test_rudder_force[1], ord=2) + rudder_lift = np.linalg.norm(test_rudder_force[0], ord=2) + + rudder_drag_constant = BOAT_PROPERTIES.rudder_dist * np.sin(rudder_angle_rad) + + rudder_lift_constant = ( + BOAT_PROPERTIES.rudder_dist * np.cos(rudder_angle_rad) + + BOAT_PROPERTIES.centre_of_gravity[1] + ) + + rudder_torque = np.add(rudder_lift * rudder_lift_constant, rudder_drag * rudder_drag_constant) + + total_torque = np.add(sail_torque, rudder_torque) + + final_torque = np.array([0, 0, total_torque]) + + assert np.equal(net_force, (total_force, final_torque)) + + assert np.equal(1, 1) From b37fd9cdd82fccbdf068f2282a062cc664713013 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 26 Oct 2024 16:26:07 -0700 Subject: [PATCH 26/36] Dot Product error --- .../tests/unit/nodes/physics_engine/test_model.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py index d7dcd09c2..3d8769bd7 100644 --- a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py +++ b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py @@ -80,5 +80,3 @@ def test_compute_net_force_torque( final_torque = np.array([0, 0, total_torque]) assert np.equal(net_force, (total_force, final_torque)) - - assert np.equal(1, 1) From 90d9b58cfd29d36e565fe395fea4e8a142d9387a Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 2 Nov 2024 14:40:13 -0700 Subject: [PATCH 27/36] Testing changes --- src/boat_simulator/boat_simulator/common/constants.py | 2 +- .../tests/unit/nodes/physics_engine/test_model.py | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index 3e13011e8..8117640e1 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -107,7 +107,7 @@ class BoatProperties: rudder_dist=1.5, hull_drag_factor=0.05, mass=50, - inertia=np.eye(3), + inertia=np.array([[125, 0, 0], [0, 1125, 0], [0, 0, 500]], dtype=np.float32), air_density=1.225, water_density=1000, centre_of_gravity=np.array([0.8, 1, 0]), diff --git a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py index 3d8769bd7..6c83e04a3 100644 --- a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py +++ b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py @@ -28,9 +28,7 @@ def test_compute_net_force_torque( ): current_state = BoatState(1.0) - net_force = current_state._BoatState__compute_net_force_and_torque( - rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle - ) + net_force = current_state.step(rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle) app_wind_vel = np.subtract(rel_wind_vel, current_state.relative_velocity) app_water_vel = np.subtract(rel_water_vel, current_state.relative_velocity) From b6697d559079845267a0dfdc5537c99b9360232a Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 2 Nov 2024 15:42:27 -0700 Subject: [PATCH 28/36] Tentative testing complete --- .../boat_simulator/common/constants.py | 29 +++++++------ .../nodes/physics_engine/model.py | 21 +++++----- .../unit/nodes/physics_engine/test_model.py | 41 +++++++++++-------- 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/src/boat_simulator/boat_simulator/common/constants.py b/src/boat_simulator/boat_simulator/common/constants.py index ee72be13e..43cbc1569 100644 --- a/src/boat_simulator/boat_simulator/common/constants.py +++ b/src/boat_simulator/boat_simulator/common/constants.py @@ -37,21 +37,21 @@ class PhysicsEnginePublisherTopics: @dataclass class BoatProperties: - # A lookup table that maps angles of attack (in degrees) to their corresponding lift + # A lookup array that maps angles of attack (in degrees) to their corresponding lift # coefficients. sail_lift_coeffs: NDArray - # A lookup table that maps angles of attack (in degrees) to their corresponding drag + # A lookup array that maps angles of attack (in degrees) to their corresponding drag # coefficients. sail_drag_coeffs: NDArray - # A lookup table that maps angles of attack (in degrees) to their corresponding sail areas - # (in square meters). + # The area of sail (in square meters). sail_areas: Scalar - # A lookup table that maps angles of attack (in degrees) to their corresponding drag + # A lookup array that maps angles of attack (in degrees) to their corresponding lift + # coefficients for the rudder. + rudder_lift_coeffs: NDArray + # A lookup array that maps angles of attack (in degrees) to their corresponding drag # coefficients for the rudder. - rudder_lift_coeffs: NDArray rudder_drag_coeffs: NDArray - # A lookup table that maps angles of attack (in degrees) to their corresponding rudder areas - # (in square meters). + # The area of rudder (in square meters). rudder_areas: Scalar # A scalar representing the distance from the center of effort of the sail to the pivot point # (in meters). @@ -66,10 +66,15 @@ class BoatProperties: mass: Scalar # The inertia of the boat (in kilograms-meters squared). inertia: NDArray - air_density: Scalar # Kilograms per meter cubed (kg/m^3) - water_density: Scalar # Kilograms per meter cubed (kg/m^3) - centre_of_gravity: NDArray # Meters (m) - mast_position: NDArray # Meters (m) + # The density of air (in kilograms per meter cubed). + air_density: Scalar + # The density of water (in kilograms per meter cubed). + water_density: Scalar + # The center of gravity of the boat ((3, ) array in meters). + # (0, 0) at bottom right corner + centre_of_gravity: NDArray + # The mast position ((3, ) array in meters). + mast_position: NDArray # Directly accessible constants diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index e36fbe3e7..b55f19e97 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -5,7 +5,6 @@ import numpy as np from numpy.typing import NDArray -from boat_simulator.common.constants import BOAT_PROPERTIES from boat_simulator.common.constants import BOAT_PROPERTIES from boat_simulator.common.types import Scalar from boat_simulator.nodes.physics_engine.fluid_forces import MediumForceComputation @@ -103,23 +102,24 @@ def __compute_net_force_and_torque( the relative reference frame, expressed in newtons (N), and the second element represents the net torque, expressed in newton-meters (N•m). """ - # Compute apparent wind and water velocities as ND arrays - apparent_wind_vel = np.subtract(rel_wind_vel, self.relative_velocity) - apparent_water_vel = np.subtract(rel_water_vel, self.relative_velocity) + # Compute apparent wind and water velocities as ND arrays (2-D) + apparent_wind_vel = np.subtract(rel_wind_vel, self.relative_velocity[0:2]) + apparent_water_vel = np.subtract(rel_water_vel, self.relative_velocity[0:2]) - wind_angle = np.arctan2(rel_wind_vel[1], rel_wind_vel[0]) # Wind angle in radians + # angle references all in radians + wind_angle = np.arctan2(rel_wind_vel[1], rel_wind_vel[0]) trim_tab_angle_rad = np.radians(trim_tab_angle) - main_sail_angle = wind_angle - trim_tab_angle_rad # in radians + main_sail_angle = wind_angle - trim_tab_angle_rad rudder_angle_rad = np.radians(rudder_angle_deg) # Calculate Forces on sail and rudder - sail_force = self.__sail_force_computation.compute(apparent_wind_vel, trim_tab_angle) + sail_force = self.__sail_force_computation.compute(apparent_wind_vel[0:2], trim_tab_angle) rudder_force = self.__rudder_force_computation.compute( - apparent_water_vel, rudder_angle_deg + apparent_water_vel[0:2], rudder_angle_deg ) # Calculate Hull Drag Force - hull_drag_force = self.relative_velocity * BOAT_PROPERTIES.hull_drag_factor + hull_drag_force = self.relative_velocity[0:2] * BOAT_PROPERTIES.hull_drag_factor # Total Force Calculation total_drag_force = sail_force[1] + rudder_force[1] + hull_drag_force @@ -152,6 +152,7 @@ def __compute_net_force_and_torque( + BOAT_PROPERTIES.centre_of_gravity[1] ) + # adding total rudder torque rudder_torque = np.add( rudder_lift * rudder_lift_constant, rudder_drag * rudder_drag_constant, @@ -159,7 +160,7 @@ def __compute_net_force_and_torque( total_torque = np.add(sail_torque, rudder_torque) # Sum torques about z-axis - final_torque = np.array([0, 0, total_torque]) + final_torque = np.array([0, 0, total_torque]) # generate 3-D array(only z component) return (total_force, final_torque) diff --git a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py index 6c83e04a3..a8ac120a7 100644 --- a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py +++ b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py @@ -8,16 +8,17 @@ @pytest.mark.parametrize( - "rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle", + "rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle, timestep", [ - (np.array([1, 2, 3]), np.array([1, 2, 3]), 45, 45), - (np.array([1, 2, 3]), np.array([1, 2, 3]), 45, 45), - (np.array([4, 5, 6]), np.array([7, 8, 9]), 30, 60), - (np.array([10, 20, 30]), np.array([15, 25, 35]), 90, 120), - (np.array([0, 0, 0]), np.array([1, 1, 1]), 0, 90), - (np.array([-1, -2, -3]), np.array([-1, -2, -3]), 180, 270), - (np.array([3.5, 4.5, 5.5]), np.array([1.5, 2.5, 3.5]), 15, 75), - (np.array([100, 200, 300]), np.array([300, 200, 100]), 0, 45), + (np.array([1, 2]), np.array([1, 2]), 45, 45, 1), + (np.array([1, 2]), np.array([1, 2]), 45, 45, 1), + (np.array([4, 5]), np.array([7, 8]), 30, 60, 2), + (np.array([10, 20]), np.array([15, 25]), 90, 120, 1), + (np.array([0, 1]), np.array([1, 1]), 0, 90, 3), + (np.array([-1, -2]), np.array([-1, -2]), 180, 270, 2), + (np.array([3.5, 4.5]), np.array([1.5, 2.5]), 15, 75, 4), + (np.array([100, 200]), np.array([300, 200]), 0, 45, 2), + # cannot use 0 vector, or will cause divison by zero error ], ) def test_compute_net_force_torque( @@ -25,25 +26,30 @@ def test_compute_net_force_torque( rel_water_vel, rudder_angle_deg, trim_tab_angle, + timestep, ): - current_state = BoatState(1.0) - net_force = current_state.step(rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle) + current_state = BoatState(timestep) + net_force = current_state._BoatState__compute_net_force_and_torque( + rel_wind_vel, rel_water_vel, rudder_angle_deg, trim_tab_angle + ) - app_wind_vel = np.subtract(rel_wind_vel, current_state.relative_velocity) - app_water_vel = np.subtract(rel_water_vel, current_state.relative_velocity) + app_wind_vel = np.subtract(rel_wind_vel, current_state.relative_velocity[0:2]) + app_water_vel = np.subtract(rel_water_vel, current_state.relative_velocity[0:2]) wind_angle = np.arctan2(app_wind_vel[1], app_wind_vel[0]) trim_tab_angle_rad = np.radians(trim_tab_angle) main_sail_angle = wind_angle - trim_tab_angle_rad rudder_angle_rad = np.radians(rudder_angle_deg) - test_sail_force = current_state.__sail_force_computation.compute(app_wind_vel, trim_tab_angle) - test_rudder_force = current_state.__rudder_force_computation.compute( + test_sail_force = current_state._BoatState__sail_force_computation.compute( + app_wind_vel, trim_tab_angle + ) + test_rudder_force = current_state._BoatState__rudder_force_computation.compute( app_water_vel, rudder_angle_deg ) - hull_drag_force = current_state.relative_velocity * BOAT_PROPERTIES.hull_drag_factor + hull_drag_force = current_state.relative_velocity[0:2] * BOAT_PROPERTIES.hull_drag_factor total_drag_force = test_sail_force[1] + test_rudder_force[1] + hull_drag_force total_force = test_sail_force[0] + test_rudder_force[0] + total_drag_force @@ -77,4 +83,5 @@ def test_compute_net_force_torque( final_torque = np.array([0, 0, total_torque]) - assert np.equal(net_force, (total_force, final_torque)) + assert np.allclose(total_force, net_force[0], 0.5) # checking force + assert np.allclose(final_torque, net_force[1], 0.5) # checking torque From 39dd77f91efe24f388537254a26f72c18215f8fd Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 2 Nov 2024 15:56:12 -0700 Subject: [PATCH 29/36] Rerun tests --- .../tests/unit/nodes/physics_engine/test_model.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py index a8ac120a7..fed057c21 100644 --- a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py +++ b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py @@ -18,7 +18,7 @@ (np.array([-1, -2]), np.array([-1, -2]), 180, 270, 2), (np.array([3.5, 4.5]), np.array([1.5, 2.5]), 15, 75, 4), (np.array([100, 200]), np.array([300, 200]), 0, 45, 2), - # cannot use 0 vector, or will cause divison by zero error + # cannot use 0 vector, or will cause divison by zero error ], ) def test_compute_net_force_torque( From 51ba15fe5fa1473582a80cf6cc5513b57bd50787 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Wed, 6 Nov 2024 10:42:27 -0800 Subject: [PATCH 30/36] Syntax fixes --- .../tests/unit/nodes/physics_engine/test_model.py | 2 +- src/network_systems/launch/main_launch.py | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py index fed057c21..ff4829048 100644 --- a/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py +++ b/src/boat_simulator/tests/unit/nodes/physics_engine/test_model.py @@ -18,7 +18,7 @@ (np.array([-1, -2]), np.array([-1, -2]), 180, 270, 2), (np.array([3.5, 4.5]), np.array([1.5, 2.5]), 15, 75, 4), (np.array([100, 200]), np.array([300, 200]), 0, 45, 2), - # cannot use 0 vector, or will cause divison by zero error + # cannot use 0 vector, or will error ], ) def test_compute_net_force_torque( diff --git a/src/network_systems/launch/main_launch.py b/src/network_systems/launch/main_launch.py index 9241dc518..732d827c5 100644 --- a/src/network_systems/launch/main_launch.py +++ b/src/network_systems/launch/main_launch.py @@ -221,12 +221,12 @@ def get_remote_transceiver_description(context: LaunchContext) -> Node: def get_local_transceiver_description(context: LaunchContext) -> Node: """Gets the launch description for the local_transceiver_node. - Args: - context (LaunchContext): The current launch context. + Args: + context (LaunchContext): The current launch context. - Returns: - Node: The node object that launches the local_transceiver_node. - """ + Returns: + Node: The node object that launches the local_transceiver_node. + """ node_name = "local_transceiver_node" ros_parameters = [ global_launch_config, From cc40293644b33f79e1405dd461f4dc9ec556209d Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 16 Nov 2024 11:48:40 -0800 Subject: [PATCH 31/36] Assertion for zero velocity vector error --- .../boat_simulator/nodes/physics_engine/model.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index b55f19e97..2b6da2fa0 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -103,6 +103,10 @@ def __compute_net_force_and_torque( represents the net torque, expressed in newton-meters (N•m). """ # Compute apparent wind and water velocities as ND arrays (2-D) + + assert np.any(rel_wind_vel), "rel_wind_vel cannot be 0" + assert np.any(rel_water_vel), "rel_water_vel cannot be 0" + apparent_wind_vel = np.subtract(rel_wind_vel, self.relative_velocity[0:2]) apparent_water_vel = np.subtract(rel_water_vel, self.relative_velocity[0:2]) From 94f684ff45dc3360669046d1ee5351253d51e2ee Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 16 Nov 2024 11:55:39 -0800 Subject: [PATCH 32/36] Reverted prototype_wingsail_controller.ipynb --- .../prototype_wingsail_controller.ipynb | 666 +----------------- 1 file changed, 24 insertions(+), 642 deletions(-) diff --git a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb index e0679eeff..391b0d5f7 100644 --- a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb +++ b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -17,653 +17,35 @@ "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.21.5)\n", - "Requirement already satisfied: scipy in /usr/lib/python3/dist-packages (1.8.0)\n", - "Requirement already satisfied: matplotlib in /usr/lib/python3/dist-packages (3.5.1)\n", - "Ign:1 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", - "Get:2 http://packages.ros.org/ros2/ubuntu jammy InRelease [4,682 B] \u001b[0m\n", - "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \u001b[0m \u001b[0m\u001b[33m\n", - "Get:4 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release [3,094 B]\n", - "Get:5 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB] \u001b[0m\u001b[33m\u001b[33m\n", - "Get:6 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB] \u001b[0m\n", - "Get:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release.gpg [866 B]m\n", - "Get:8 http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages [1,622 kB] \u001b[0m\u001b[33m\n", - "Get:9 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB] \u001b[0m\u001b[33m\u001b[33m\n", - "Get:10 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0/multiverse amd64 Packages [74.0 kB]\n", - "Get:11 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [3,200 kB]m\u001b[33m\u001b[33m\u001b[33m\n", - "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2,648 kB]\n", - "Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [3,278 kB]\n", - "Get:14 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [2,372 kB]m\n", - "Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,450 kB]\n", - "Get:16 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [81.4 kB]33m\u001b[33m\u001b[33m\u001b[33m\n", - "Get:17 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1,162 kB]\n", - "Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [33.7 kB]\n", - "Fetched 16.3 MB in 5s (3,032 kB/s) \u001b[0m \u001b[0m\u001b[33m\u001b[0m \u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", - "Reading package lists... Done\n", + "Requirement already satisfied: numpy in /home/ros/.local/lib/python3.10/site-packages (1.26.4)\n", + "Requirement already satisfied: scipy in /home/ros/.local/lib/python3.10/site-packages (1.12.0)\n", + "Requirement already satisfied: matplotlib in /home/ros/.local/lib/python3.10/site-packages (3.8.3)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/lib/python3/dist-packages (from matplotlib) (21.3)\n", + "Requirement already satisfied: pillow>=8 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (10.2.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.4.5)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)\n", + "Requirement already satisfied: cycler>=0.10 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (4.49.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib) (2.4.7)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.2.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", + "Hit:1 http://packages.ros.org/ros2/ubuntu jammy InRelease\n", + "Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease \u001b[0m\u001b[33m\n", + "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \n", + "Hit:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease\n", + "Ign:5 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", + "Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease\n", + "Hit:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release\n", + "Reading package lists... Done\u001b[33m\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "284 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", + "267 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", "\u001b[1;33mW: \u001b[0mhttp://repo.mongodb.org/apt/ubuntu/dists/jammy/mongodb-org/6.0/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.\u001b[0m\n", "Reading package lists... Done\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "The following additional packages will be installed:\n", - " i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1 libass9\n", - " libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", - " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", - " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", - " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", - " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", - " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", - " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", - " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", - " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", - " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", - " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", - " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", - " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", - " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", - " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", - " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", - " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", - " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", - " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", - "Suggested packages:\n", - " ffmpeg-doc i965-va-driver-shaders libcuda1 libnvcuvid1 libnvidia-encode1\n", - " libbluray-bdj jackd2 libportaudio2 opus-tools pulseaudio libraw1394-doc\n", - " librsvg2-bin xdg-utils serdi sndiod sordi speex libvdpau-va-gl1\n", - "The following NEW packages will be installed:\n", - " ffmpeg i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1\n", - " libass9 libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", - " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", - " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", - " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", - " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", - " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", - " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", - " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", - " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", - " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", - " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", - " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", - " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", - " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", - " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", - " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", - " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", - " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", - " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", - "0 upgraded, 112 newly installed, 0 to remove and 284 not upgraded.\n", - "Need to get 94.1 MB of archives.\n", - "After this operation, 249 MB of additional disk space will be used.\n", - "Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libapparmor1 amd64 3.0.4-2ubuntu2.4 [39.7 kB]\n", - "Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 libslang2 amd64 2.3.2-5build4 [468 kB]\n", - "Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 shared-mime-info amd64 2.1-2 [454 kB]\n", - "Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 xkb-data all 2.33-1 [394 kB]\n", - "Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libusb-1.0-0 amd64 2:1.0.25-1ubuntu2 [52.7 kB]\n", - "Get:6 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaom3 amd64 3.3.0-1 [1,748 kB]\n", - "Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva2 amd64 2.14.0-1 [65.0 kB]\n", - "Get:8 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmfx1 amd64 22.3.0-1 [3,105 kB]\n", - "Get:9 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-drm2 amd64 2.14.0-1 [7,502 B]\n", - "Get:10 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-x11-2 amd64 2.14.0-1 [12.6 kB]\n", - "Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvdpau1 amd64 1.4-3build2 [27.0 kB]\n", - "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavutil56 amd64 7:4.4.2-0ubuntu0.22.04.1 [290 kB]\n", - "Get:13 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libcodec2-1.0 amd64 1.0.1-3 [8,435 kB]\n", - "Get:14 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdav1d5 amd64 0.9.2-1 [463 kB]\u001b[33m\n", - "Get:15 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgsm1 amd64 1.0.19-1 [27.7 kB]\n", - "Get:16 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmp3lame0 amd64 3.100-3build2 [141 kB]\n", - "Get:17 http://archive.ubuntu.com/ubuntu jammy/main amd64 libopus0 amd64 1.3.1-0.1build2 [203 kB]\n", - "Get:18 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcairo-gobject2 amd64 1.16.0-5ubuntu2 [19.4 kB]\n", - "Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-common all 2.42.8+dfsg-1ubuntu0.3 [5,630 B]\n", - "Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf-2.0-0 amd64 2.42.8+dfsg-1ubuntu0.3 [148 kB]\n", - "Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-2 amd64 2.52.5+dfsg-3ubuntu0.2 [2,974 kB]\n", - "Get:22 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libshine3 amd64 3.1.1-2 [23.2 kB]\n", - "Get:23 http://archive.ubuntu.com/ubuntu jammy/main amd64 libspeex1 amd64 1.2~rc1.2-1.1ubuntu3 [57.9 kB]\n", - "Get:24 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsoxr0 amd64 0.1.3-4build2 [79.8 kB]\n", - "Get:25 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswresample3 amd64 7:4.4.2-0ubuntu0.22.04.1 [62.2 kB]\n", - "Get:26 http://archive.ubuntu.com/ubuntu jammy/main amd64 libogg0 amd64 1.3.5-0ubuntu3 [22.9 kB]\n", - "Get:27 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtheora0 amd64 1.1.1+dfsg.1-15ubuntu4 [209 kB]\n", - "Get:28 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtwolame0 amd64 0.4.0-2build2 [52.5 kB]\n", - "Get:29 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbis0a amd64 1.3.7-1build2 [99.2 kB]\n", - "Get:30 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisenc2 amd64 1.3.7-1build2 [82.6 kB]\n", - "Get:31 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libvpx7 amd64 1.11.0-2ubuntu2.3 [1,078 kB]\n", - "Get:32 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx264-163 amd64 2:0.163.3060+git5db6aa6-2build1 [591 kB]\n", - "Get:33 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx265-199 amd64 3.5-2 [1,170 kB]\n", - "Get:34 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libxvidcore4 amd64 2:1.3.7-1 [201 kB]\n", - "Get:35 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi-common all 0.2.35-19 [35.5 kB]\n", - "Get:36 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi0 amd64 0.2.35-19 [262 kB]\n", - "Get:37 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavcodec58 amd64 7:4.4.2-0ubuntu0.22.04.1 [5,567 kB]\n", - "Get:38 http://archive.ubuntu.com/ubuntu jammy/main amd64 libraw1394-11 amd64 2.1.2-2build2 [27.0 kB]\n", - "Get:39 http://archive.ubuntu.com/ubuntu jammy/main amd64 libavc1394-0 amd64 0.5.4-5build2 [17.0 kB]\n", - "Get:40 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libass9 amd64 1:0.15.2-1 [97.5 kB]\n", - "Get:41 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libudfread0 amd64 1.1.2-1 [16.2 kB]\n", - "Get:42 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbluray2 amd64 1:1.3.1-1 [159 kB]\n", - "Get:43 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libchromaprint1 amd64 1.5.1-2 [28.4 kB]\n", - "Get:44 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgme0 amd64 0.6.3-2 [127 kB]\n", - "Get:45 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpg123-0 amd64 1.29.3-1build1 [172 kB]\n", - "Get:46 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisfile3 amd64 1.3.7-1build2 [17.1 kB]\n", - "Get:47 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenmpt0 amd64 0.6.1-1 [592 kB]\n", - "Get:48 http://archive.ubuntu.com/ubuntu jammy/main amd64 librabbitmq4 amd64 0.10.0-1ubuntu2 [39.3 kB]\n", - "Get:49 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsrt1.4-gnutls amd64 1.4.4-4 [309 kB]\n", - "Get:50 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libssh-gcrypt-4 amd64 0.9.6-2ubuntu0.22.04.3 [223 kB]\n", - "Get:51 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libnorm1 amd64 1.5.9+dfsg-2 [221 kB]\n", - "Get:52 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpgm-5.3-0 amd64 5.3.128~dfsg-2 [161 kB]\n", - "Get:53 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzmq5 amd64 4.3.4-2 [256 kB]\n", - "Get:54 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavformat58 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,103 kB]\n", - "Get:55 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbs2b0 amd64 3.1.0+dfsg-2.2build1 [10.2 kB]\n", - "Get:56 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libflite1 amd64 2.2-3 [13.7 MB]\n", - "Get:57 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libserd-0-0 amd64 0.30.10-2 [40.8 kB]\u001b[33m\u001b[33m\n", - "Get:58 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsord-0-0 amd64 0.16.8-2 [21.2 kB]\n", - "Get:59 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsratom-0-0 amd64 0.6.8-1 [17.0 kB]\n", - "Get:60 http://archive.ubuntu.com/ubuntu jammy/universe amd64 liblilv-0-0 amd64 0.24.12-2 [42.8 kB]\n", - "Get:61 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmysofa1 amd64 1.2.1~dfsg0-1 [1,157 kB]\n", - "Get:62 http://archive.ubuntu.com/ubuntu jammy/main amd64 libasyncns0 amd64 0.8-6build2 [12.8 kB]\n", - "Get:63 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libflac8 amd64 1.3.3-2ubuntu0.2 [111 kB]\n", - "Get:64 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsndfile1 amd64 1.0.31-2ubuntu0.1 [197 kB]\n", - "Get:65 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpulse0 amd64 1:15.99.1+dfsg1-1ubuntu2.2 [298 kB]\n", - "Get:66 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsphinxbase3 amd64 0.8+5prealpha+1-13build1 [126 kB]\n", - "Get:67 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpocketsphinx3 amd64 0.8.0+real5prealpha+1-14ubuntu1 [132 kB]\n", - "Get:68 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libpostproc55 amd64 7:4.4.2-0ubuntu0.22.04.1 [60.1 kB]\n", - "Get:69 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsamplerate0 amd64 0.2.2-1build1 [1,359 kB]\n", - "Get:70 http://archive.ubuntu.com/ubuntu jammy/universe amd64 librubberband2 amd64 2.0.0-2 [90.0 kB]\n", - "Get:71 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswscale5 amd64 7:4.4.2-0ubuntu0.22.04.1 [180 kB]\n", - "Get:72 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libvidstab1.1 amd64 1.1.0-2 [35.0 kB]\n", - "Get:73 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzimg2 amd64 3.0.3+ds1-1 [241 kB]\n", - "Get:74 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavfilter7 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,496 kB]\n", - "Get:75 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcaca0 amd64 0.99.beta19-2.2ubuntu4 [224 kB]\n", - "Get:76 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libcdio19 amd64 2.1.0-3ubuntu0.2 [63.6 kB]\n", - "Get:77 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-cdda2 amd64 10.2+2.0.0-1build3 [16.7 kB]\n", - "Get:78 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-paranoia2 amd64 10.2+2.0.0-1build3 [15.9 kB]\n", - "Get:79 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdc1394-25 amd64 2.2.6-4 [88.8 kB]\n", - "Get:80 http://archive.ubuntu.com/ubuntu jammy/main amd64 libiec61883-0 amd64 1.2.0-4build3 [25.9 kB]\n", - "Get:81 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjack-jackd2-0 amd64 1.9.20~dfsg-1 [293 kB]\n", - "Get:82 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal-data all 1:1.19.1-2build3 [164 kB]\n", - "Get:83 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsndio7.0 amd64 1.8.1-1.1 [29.3 kB]\n", - "Get:84 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal1 amd64 1:1.19.1-2build3 [535 kB]\n", - "Get:85 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-client0 amd64 1.20.0-1ubuntu0.1 [25.9 kB]\n", - "Get:86 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-0 amd64 0.1.0-3build1 [15.1 kB]\n", - "Get:87 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-server0 amd64 1.20.0-1ubuntu0.1 [34.3 kB]\n", - "Get:88 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgbm1 amd64 23.2.1-1ubuntu3.1~22.04.2 [33.5 kB]\n", - "Get:89 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-cursor0 amd64 1.20.0-1ubuntu0.1 [10.7 kB]\n", - "Get:90 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-egl1 amd64 1.20.0-1ubuntu0.1 [5,582 B]\n", - "Get:91 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcursor1 amd64 1:1.2.0-2build4 [20.9 kB]\n", - "Get:92 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxinerama1 amd64 2:1.1.4-3 [7,382 B]\n", - "Get:93 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxkbcommon0 amd64 1.4.0-1 [125 kB]\n", - "Get:94 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxrandr2 amd64 2:1.5.2-1build1 [20.4 kB]\n", - "Get:95 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsdl2-2.0-0 amd64 2.0.20+dfsg-2ubuntu1.22.04.1 [582 kB]\n", - "Get:96 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcb-shape0 amd64 1.14-3ubuntu3 [6,158 B]\n", - "Get:97 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxv1 amd64 2:1.0.11-1build2 [11.2 kB]\n", - "Get:98 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavdevice58 amd64 7:4.4.2-0ubuntu0.22.04.1 [87.5 kB]\n", - "Get:99 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 ffmpeg amd64 7:4.4.2-0ubuntu0.22.04.1 [1,696 kB]\n", - "Get:100 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libigdgmm12 amd64 22.1.2+ds1-1 [139 kB]\n", - "Get:101 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 intel-media-va-driver amd64 22.3.1+dfsg1-1ubuntu2 [2,283 kB]\n", - "Get:102 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaacs0 amd64 0.11.1-1 [64.1 kB]\n", - "Get:103 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbdplus0 amd64 0.2.0-1 [52.2 kB]\n", - "Get:104 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-plugin-1-cairo amd64 0.1.0-3build1 [20.4 kB]\n", - "Get:105 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-bin amd64 2.42.8+dfsg-1ubuntu0.3 [14.2 kB]\n", - "Get:106 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-common amd64 2.52.5+dfsg-3ubuntu0.2 [17.7 kB]\n", - "Get:107 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 mesa-va-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [4,100 kB]\n", - "Get:108 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 mesa-vdpau-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [3,820 kB]\n", - "Get:109 http://archive.ubuntu.com/ubuntu jammy/universe amd64 i965-va-driver amd64 2.4.1+dfsg1-1 [302 kB]\n", - "Get:110 http://archive.ubuntu.com/ubuntu jammy/universe amd64 va-driver-all amd64 2.14.0-1 [3,984 B]\n", - "Get:111 http://archive.ubuntu.com/ubuntu jammy/main amd64 vdpau-driver-all amd64 1.4-3build2 [4,510 B]\n", - "Get:112 http://archive.ubuntu.com/ubuntu jammy/universe amd64 pocketsphinx-en-us all 0.8.0+real5prealpha+1-14ubuntu1 [27.6 MB]\n", - "Fetched 94.1 MB in 1min 18s (1,203 kB/s) \u001b[0m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", - "debconf: delaying package configuration, since apt-utils is not installed\n", - "\n", - "\u001b7\u001b[0;23r\u001b8\u001b[1ASelecting previously unselected package libapparmor1:amd64.\n", - "(Reading database ... 76399 files and directories currently installed.)\n", - "Preparing to unpack .../000-libapparmor1_3.0.4-2ubuntu2.4_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 0%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", - "Selecting previously unselected package libslang2:amd64.\n", - "Preparing to unpack .../001-libslang2_2.3.2-5build4_amd64.deb ...\n", - "Unpacking libslang2:amd64 (2.3.2-5build4) ...\n", - "Selecting previously unselected package shared-mime-info.\n", - "Preparing to unpack .../002-shared-mime-info_2.1-2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 1%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking shared-mime-info (2.1-2) ...\n", - "Selecting previously unselected package xkb-data.\n", - "Preparing to unpack .../003-xkb-data_2.33-1_all.deb ...\n", - "Unpacking xkb-data (2.33-1) ...\n", - "Selecting previously unselected package libusb-1.0-0:amd64.\n", - "Preparing to unpack .../004-libusb-1.0-0_2%3a1.0.25-1ubuntu2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 2%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Unpacking libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", - "Selecting previously unselected package libaom3:amd64.\n", - "Preparing to unpack .../005-libaom3_3.3.0-1_amd64.deb ...\n", - "Unpacking libaom3:amd64 (3.3.0-1) ...\n", - "Selecting previously unselected package libva2:amd64.\n", - "Preparing to unpack .../006-libva2_2.14.0-1_amd64.deb ...\n", - "Unpacking libva2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 3%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Selecting previously unselected package libmfx1:amd64.\n", - "Preparing to unpack .../007-libmfx1_22.3.0-1_amd64.deb ...\n", - "Unpacking libmfx1:amd64 (22.3.0-1) ...\n", - "Selecting previously unselected package libva-drm2:amd64.\n", - "Preparing to unpack .../008-libva-drm2_2.14.0-1_amd64.deb ...\n", - "Unpacking libva-drm2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 4%]\u001b[49m\u001b[39m [##........................................................] \u001b8Selecting previously unselected package libva-x11-2:amd64.\n", - "Preparing to unpack .../009-libva-x11-2_2.14.0-1_amd64.deb ...\n", - "Unpacking libva-x11-2:amd64 (2.14.0-1) ...\n", - "Selecting previously unselected package libvdpau1:amd64.\n", - "Preparing to unpack .../010-libvdpau1_1.4-3build2_amd64.deb ...\n", - "Unpacking libvdpau1:amd64 (1.4-3build2) ...\n", - "Selecting previously unselected package libavutil56:amd64.\n", - "Preparing to unpack .../011-libavutil56_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 5%]\u001b[49m\u001b[39m [##........................................................] \u001b8Unpacking libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libcodec2-1.0:amd64.\n", - "Preparing to unpack .../012-libcodec2-1.0_1.0.1-3_amd64.deb ...\n", - "Unpacking libcodec2-1.0:amd64 (1.0.1-3) ...\n", - "Selecting previously unselected package libdav1d5:amd64.\n", - "Preparing to unpack .../013-libdav1d5_0.9.2-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 6%]\u001b[49m\u001b[39m [###.......................................................] \u001b8Unpacking libdav1d5:amd64 (0.9.2-1) ...\n", - "Selecting previously unselected package libgsm1:amd64.\n", - "Preparing to unpack .../014-libgsm1_1.0.19-1_amd64.deb ...\n", - "Unpacking libgsm1:amd64 (1.0.19-1) ...\n", - "Selecting previously unselected package libmp3lame0:amd64.\n", - "Preparing to unpack .../015-libmp3lame0_3.100-3build2_amd64.deb ...\n", - "Unpacking libmp3lame0:amd64 (3.100-3build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 7%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libopus0:amd64.\n", - "Preparing to unpack .../016-libopus0_1.3.1-0.1build2_amd64.deb ...\n", - "Unpacking libopus0:amd64 (1.3.1-0.1build2) ...\n", - "Selecting previously unselected package libcairo-gobject2:amd64.\n", - "Preparing to unpack .../017-libcairo-gobject2_1.16.0-5ubuntu2_amd64.deb ...\n", - "Unpacking libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 8%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libgdk-pixbuf2.0-common.\n", - "Preparing to unpack .../018-libgdk-pixbuf2.0-common_2.42.8+dfsg-1ubuntu0.3_all.deb ...\n", - "Unpacking libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Selecting previously unselected package libgdk-pixbuf-2.0-0:amd64.\n", - "Preparing to unpack .../019-libgdk-pixbuf-2.0-0_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", - "Unpacking libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Selecting previously unselected package librsvg2-2:amd64.\n", - "Preparing to unpack .../020-librsvg2-2_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 9%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "Selecting previously unselected package libshine3:amd64.\n", - "Preparing to unpack .../021-libshine3_3.1.1-2_amd64.deb ...\n", - "Unpacking libshine3:amd64 (3.1.1-2) ...\n", - "Selecting previously unselected package libspeex1:amd64.\n", - "Preparing to unpack .../022-libspeex1_1.2~rc1.2-1.1ubuntu3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 10%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", - "Selecting previously unselected package libsoxr0:amd64.\n", - "Preparing to unpack .../023-libsoxr0_0.1.3-4build2_amd64.deb ...\n", - "Unpacking libsoxr0:amd64 (0.1.3-4build2) ...\n", - "Selecting previously unselected package libswresample3:amd64.\n", - "Preparing to unpack .../024-libswresample3_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 11%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libogg0:amd64.\n", - "Preparing to unpack .../025-libogg0_1.3.5-0ubuntu3_amd64.deb ...\n", - "Unpacking libogg0:amd64 (1.3.5-0ubuntu3) ...\n", - "Selecting previously unselected package libtheora0:amd64.\n", - "Preparing to unpack .../026-libtheora0_1.1.1+dfsg.1-15ubuntu4_amd64.deb ...\n", - "Unpacking libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 12%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libtwolame0:amd64.\n", - "Preparing to unpack .../027-libtwolame0_0.4.0-2build2_amd64.deb ...\n", - "Unpacking libtwolame0:amd64 (0.4.0-2build2) ...\n", - "Selecting previously unselected package libvorbis0a:amd64.\n", - "Preparing to unpack .../028-libvorbis0a_1.3.7-1build2_amd64.deb ...\n", - "Unpacking libvorbis0a:amd64 (1.3.7-1build2) ...\n", - "Selecting previously unselected package libvorbisenc2:amd64.\n", - "Preparing to unpack .../029-libvorbisenc2_1.3.7-1build2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 13%]\u001b[49m\u001b[39m [#######...................................................] \u001b8Unpacking libvorbisenc2:amd64 (1.3.7-1build2) ...\n", - "Selecting previously unselected package libvpx7:amd64.\n", - "Preparing to unpack .../030-libvpx7_1.11.0-2ubuntu2.3_amd64.deb ...\n", - "Unpacking libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", - "Selecting previously unselected package libx264-163:amd64.\n", - "Preparing to unpack .../031-libx264-163_2%3a0.163.3060+git5db6aa6-2build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 14%]\u001b[49m\u001b[39m [########..................................................] \u001b8Unpacking libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", - "Selecting previously unselected package libx265-199:amd64.\n", - "Preparing to unpack .../032-libx265-199_3.5-2_amd64.deb ...\n", - "Unpacking libx265-199:amd64 (3.5-2) ...\n", - "Selecting previously unselected package libxvidcore4:amd64.\n", - "Preparing to unpack .../033-libxvidcore4_2%3a1.3.7-1_amd64.deb ...\n", - "Unpacking libxvidcore4:amd64 (2:1.3.7-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 15%]\u001b[49m\u001b[39m [########..................................................] \u001b8Selecting previously unselected package libzvbi-common.\n", - "Preparing to unpack .../034-libzvbi-common_0.2.35-19_all.deb ...\n", - "Unpacking libzvbi-common (0.2.35-19) ...\n", - "Selecting previously unselected package libzvbi0:amd64.\n", - "Preparing to unpack .../035-libzvbi0_0.2.35-19_amd64.deb ...\n", - "Unpacking libzvbi0:amd64 (0.2.35-19) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 16%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Selecting previously unselected package libavcodec58:amd64.\n", - "Preparing to unpack .../036-libavcodec58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libraw1394-11:amd64.\n", - "Preparing to unpack .../037-libraw1394-11_2.1.2-2build2_amd64.deb ...\n", - "Unpacking libraw1394-11:amd64 (2.1.2-2build2) ...\n", - "Selecting previously unselected package libavc1394-0:amd64.\n", - "Preparing to unpack .../038-libavc1394-0_0.5.4-5build2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 17%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Unpacking libavc1394-0:amd64 (0.5.4-5build2) ...\n", - "Selecting previously unselected package libass9:amd64.\n", - "Preparing to unpack .../039-libass9_1%3a0.15.2-1_amd64.deb ...\n", - "Unpacking libass9:amd64 (1:0.15.2-1) ...\n", - "Selecting previously unselected package libudfread0:amd64.\n", - "Preparing to unpack .../040-libudfread0_1.1.2-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 18%]\u001b[49m\u001b[39m [##########................................................] \u001b8Unpacking libudfread0:amd64 (1.1.2-1) ...\n", - "Selecting previously unselected package libbluray2:amd64.\n", - "Preparing to unpack .../041-libbluray2_1%3a1.3.1-1_amd64.deb ...\n", - "Unpacking libbluray2:amd64 (1:1.3.1-1) ...\n", - "Selecting previously unselected package libchromaprint1:amd64.\n", - "Preparing to unpack .../042-libchromaprint1_1.5.1-2_amd64.deb ...\n", - "Unpacking libchromaprint1:amd64 (1.5.1-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 19%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libgme0:amd64.\n", - "Preparing to unpack .../043-libgme0_0.6.3-2_amd64.deb ...\n", - "Unpacking libgme0:amd64 (0.6.3-2) ...\n", - "Selecting previously unselected package libmpg123-0:amd64.\n", - "Preparing to unpack .../044-libmpg123-0_1.29.3-1build1_amd64.deb ...\n", - "Unpacking libmpg123-0:amd64 (1.29.3-1build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 20%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libvorbisfile3:amd64.\n", - "Preparing to unpack .../045-libvorbisfile3_1.3.7-1build2_amd64.deb ...\n", - "Unpacking libvorbisfile3:amd64 (1.3.7-1build2) ...\n", - "Selecting previously unselected package libopenmpt0:amd64.\n", - "Preparing to unpack .../046-libopenmpt0_0.6.1-1_amd64.deb ...\n", - "Unpacking libopenmpt0:amd64 (0.6.1-1) ...\n", - "Selecting previously unselected package librabbitmq4:amd64.\n", - "Preparing to unpack .../047-librabbitmq4_0.10.0-1ubuntu2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 21%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", - "Selecting previously unselected package libsrt1.4-gnutls:amd64.\n", - "Preparing to unpack .../048-libsrt1.4-gnutls_1.4.4-4_amd64.deb ...\n", - "Unpacking libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", - "Selecting previously unselected package libssh-gcrypt-4:amd64.\n", - "Preparing to unpack .../049-libssh-gcrypt-4_0.9.6-2ubuntu0.22.04.3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 22%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", - "Selecting previously unselected package libnorm1:amd64.\n", - "Preparing to unpack .../050-libnorm1_1.5.9+dfsg-2_amd64.deb ...\n", - "Unpacking libnorm1:amd64 (1.5.9+dfsg-2) ...\n", - "Selecting previously unselected package libpgm-5.3-0:amd64.\n", - "Preparing to unpack .../051-libpgm-5.3-0_5.3.128~dfsg-2_amd64.deb ...\n", - "Unpacking libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 23%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libzmq5:amd64.\n", - "Preparing to unpack .../052-libzmq5_4.3.4-2_amd64.deb ...\n", - "Unpacking libzmq5:amd64 (4.3.4-2) ...\n", - "Selecting previously unselected package libavformat58:amd64.\n", - "Preparing to unpack .../053-libavformat58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 24%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libbs2b0:amd64.\n", - "Preparing to unpack .../054-libbs2b0_3.1.0+dfsg-2.2build1_amd64.deb ...\n", - "Unpacking libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", - "Selecting previously unselected package libflite1:amd64.\n", - "Preparing to unpack .../055-libflite1_2.2-3_amd64.deb ...\n", - "Unpacking libflite1:amd64 (2.2-3) ...\n", - "Selecting previously unselected package libserd-0-0:amd64.\n", - "Preparing to unpack .../056-libserd-0-0_0.30.10-2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 25%]\u001b[49m\u001b[39m [##############............................................] \u001b8Unpacking libserd-0-0:amd64 (0.30.10-2) ...\n", - "Selecting previously unselected package libsord-0-0:amd64.\n", - "Preparing to unpack .../057-libsord-0-0_0.16.8-2_amd64.deb ...\n", - "Unpacking libsord-0-0:amd64 (0.16.8-2) ...\n", - "Selecting previously unselected package libsratom-0-0:amd64.\n", - "Preparing to unpack .../058-libsratom-0-0_0.6.8-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 26%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Unpacking libsratom-0-0:amd64 (0.6.8-1) ...\n", - "Selecting previously unselected package liblilv-0-0:amd64.\n", - "Preparing to unpack .../059-liblilv-0-0_0.24.12-2_amd64.deb ...\n", - "Unpacking liblilv-0-0:amd64 (0.24.12-2) ...\n", - "Selecting previously unselected package libmysofa1:amd64.\n", - "Preparing to unpack .../060-libmysofa1_1.2.1~dfsg0-1_amd64.deb ...\n", - "Unpacking libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 27%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Selecting previously unselected package libasyncns0:amd64.\n", - "Preparing to unpack .../061-libasyncns0_0.8-6build2_amd64.deb ...\n", - "Unpacking libasyncns0:amd64 (0.8-6build2) ...\n", - "Selecting previously unselected package libflac8:amd64.\n", - "Preparing to unpack .../062-libflac8_1.3.3-2ubuntu0.2_amd64.deb ...\n", - "Unpacking libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 28%]\u001b[49m\u001b[39m [################..........................................] \u001b8Selecting previously unselected package libsndfile1:amd64.\n", - "Preparing to unpack .../063-libsndfile1_1.0.31-2ubuntu0.1_amd64.deb ...\n", - "Unpacking libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", - "Selecting previously unselected package libpulse0:amd64.\n", - "Preparing to unpack .../064-libpulse0_1%3a15.99.1+dfsg1-1ubuntu2.2_amd64.deb ...\n", - "Unpacking libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", - "Selecting previously unselected package libsphinxbase3:amd64.\n", - "Preparing to unpack .../065-libsphinxbase3_0.8+5prealpha+1-13build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 29%]\u001b[49m\u001b[39m [################..........................................] \u001b8Unpacking libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", - "Selecting previously unselected package libpocketsphinx3:amd64.\n", - "Preparing to unpack .../066-libpocketsphinx3_0.8.0+real5prealpha+1-14ubuntu1_amd64.deb ...\n", - "Unpacking libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "Selecting previously unselected package libpostproc55:amd64.\n", - "Preparing to unpack .../067-libpostproc55_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 30%]\u001b[49m\u001b[39m [#################.........................................] \u001b8Unpacking libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libsamplerate0:amd64.\n", - "Preparing to unpack .../068-libsamplerate0_0.2.2-1build1_amd64.deb ...\n", - "Unpacking libsamplerate0:amd64 (0.2.2-1build1) ...\n", - "Selecting previously unselected package librubberband2:amd64.\n", - "Preparing to unpack .../069-librubberband2_2.0.0-2_amd64.deb ...\n", - "Unpacking librubberband2:amd64 (2.0.0-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 31%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libswscale5:amd64.\n", - "Preparing to unpack .../070-libswscale5_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libvidstab1.1:amd64.\n", - "Preparing to unpack .../071-libvidstab1.1_1.1.0-2_amd64.deb ...\n", - "Unpacking libvidstab1.1:amd64 (1.1.0-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 32%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libzimg2:amd64.\n", - "Preparing to unpack .../072-libzimg2_3.0.3+ds1-1_amd64.deb ...\n", - "Unpacking libzimg2:amd64 (3.0.3+ds1-1) ...\n", - "Selecting previously unselected package libavfilter7:amd64.\n", - "Preparing to unpack .../073-libavfilter7_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libcaca0:amd64.\n", - "Preparing to unpack .../074-libcaca0_0.99.beta19-2.2ubuntu4_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 33%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", - "Selecting previously unselected package libcdio19:amd64.\n", - "Preparing to unpack .../075-libcdio19_2.1.0-3ubuntu0.2_amd64.deb ...\n", - "Unpacking libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", - "Selecting previously unselected package libcdio-cdda2:amd64.\n", - "Preparing to unpack .../076-libcdio-cdda2_10.2+2.0.0-1build3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 34%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", - "Selecting previously unselected package libcdio-paranoia2:amd64.\n", - "Preparing to unpack .../077-libcdio-paranoia2_10.2+2.0.0-1build3_amd64.deb ...\n", - "Unpacking libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", - "Selecting previously unselected package libdc1394-25:amd64.\n", - "Preparing to unpack .../078-libdc1394-25_2.2.6-4_amd64.deb ...\n", - "Unpacking libdc1394-25:amd64 (2.2.6-4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 35%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libiec61883-0:amd64.\n", - "Preparing to unpack .../079-libiec61883-0_1.2.0-4build3_amd64.deb ...\n", - "Unpacking libiec61883-0:amd64 (1.2.0-4build3) ...\n", - "Selecting previously unselected package libjack-jackd2-0:amd64.\n", - "Preparing to unpack .../080-libjack-jackd2-0_1.9.20~dfsg-1_amd64.deb ...\n", - "Unpacking libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 36%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libopenal-data.\n", - "Preparing to unpack .../081-libopenal-data_1%3a1.19.1-2build3_all.deb ...\n", - "Unpacking libopenal-data (1:1.19.1-2build3) ...\n", - "Selecting previously unselected package libsndio7.0:amd64.\n", - "Preparing to unpack .../082-libsndio7.0_1.8.1-1.1_amd64.deb ...\n", - "Unpacking libsndio7.0:amd64 (1.8.1-1.1) ...\n", - "Selecting previously unselected package libopenal1:amd64.\n", - "Preparing to unpack .../083-libopenal1_1%3a1.19.1-2build3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 37%]\u001b[49m\u001b[39m [#####################.....................................] \u001b8Unpacking libopenal1:amd64 (1:1.19.1-2build3) ...\n", - "Selecting previously unselected package libwayland-client0:amd64.\n", - "Preparing to unpack .../084-libwayland-client0_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Selecting previously unselected package libdecor-0-0:amd64.\n", - "Preparing to unpack .../085-libdecor-0-0_0.1.0-3build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 38%]\u001b[49m\u001b[39m [######################....................................] \u001b8Unpacking libdecor-0-0:amd64 (0.1.0-3build1) ...\n", - "Selecting previously unselected package libwayland-server0:amd64.\n", - "Preparing to unpack .../086-libwayland-server0_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Selecting previously unselected package libgbm1:amd64.\n", - "Preparing to unpack .../087-libgbm1_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", - "Unpacking libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 39%]\u001b[49m\u001b[39m [######################....................................] \u001b8Selecting previously unselected package libwayland-cursor0:amd64.\n", - "Preparing to unpack .../088-libwayland-cursor0_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Selecting previously unselected package libwayland-egl1:amd64.\n", - "Preparing to unpack .../089-libwayland-egl1_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 40%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Selecting previously unselected package libxcursor1:amd64.\n", - "Preparing to unpack .../090-libxcursor1_1%3a1.2.0-2build4_amd64.deb ...\n", - "Unpacking libxcursor1:amd64 (1:1.2.0-2build4) ...\n", - "Selecting previously unselected package libxinerama1:amd64.\n", - "Preparing to unpack .../091-libxinerama1_2%3a1.1.4-3_amd64.deb ...\n", - "Unpacking libxinerama1:amd64 (2:1.1.4-3) ...\n", - "Selecting previously unselected package libxkbcommon0:amd64.\n", - "Preparing to unpack .../092-libxkbcommon0_1.4.0-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 41%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Unpacking libxkbcommon0:amd64 (1.4.0-1) ...\n", - "Selecting previously unselected package libxrandr2:amd64.\n", - "Preparing to unpack .../093-libxrandr2_2%3a1.5.2-1build1_amd64.deb ...\n", - "Unpacking libxrandr2:amd64 (2:1.5.2-1build1) ...\n", - "Selecting previously unselected package libsdl2-2.0-0:amd64.\n", - "Preparing to unpack .../094-libsdl2-2.0-0_2.0.20+dfsg-2ubuntu1.22.04.1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 42%]\u001b[49m\u001b[39m [########################..................................] \u001b8Unpacking libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", - "Selecting previously unselected package libxcb-shape0:amd64.\n", - "Preparing to unpack .../095-libxcb-shape0_1.14-3ubuntu3_amd64.deb ...\n", - "Unpacking libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", - "Selecting previously unselected package libxv1:amd64.\n", - "Preparing to unpack .../096-libxv1_2%3a1.0.11-1build2_amd64.deb ...\n", - "Unpacking libxv1:amd64 (2:1.0.11-1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 43%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libavdevice58:amd64.\n", - "Preparing to unpack .../097-libavdevice58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package ffmpeg.\n", - "Preparing to unpack .../098-ffmpeg_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 44%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libigdgmm12:amd64.\n", - "Preparing to unpack .../099-libigdgmm12_22.1.2+ds1-1_amd64.deb ...\n", - "Unpacking libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", - "Selecting previously unselected package intel-media-va-driver:amd64.\n", - "Preparing to unpack .../100-intel-media-va-driver_22.3.1+dfsg1-1ubuntu2_amd64.deb ...\n", - "Unpacking intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", - "Selecting previously unselected package libaacs0:amd64.\n", - "Preparing to unpack .../101-libaacs0_0.11.1-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 45%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libaacs0:amd64 (0.11.1-1) ...\n", - "Selecting previously unselected package libbdplus0:amd64.\n", - "Preparing to unpack .../102-libbdplus0_0.2.0-1_amd64.deb ...\n", - "Unpacking libbdplus0:amd64 (0.2.0-1) ...\n", - "Selecting previously unselected package libdecor-0-plugin-1-cairo:amd64.\n", - "Preparing to unpack .../103-libdecor-0-plugin-1-cairo_0.1.0-3build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 46%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", - "Selecting previously unselected package libgdk-pixbuf2.0-bin.\n", - "Preparing to unpack .../104-libgdk-pixbuf2.0-bin_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", - "Unpacking libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Selecting previously unselected package librsvg2-common:amd64.\n", - "Preparing to unpack .../105-librsvg2-common_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", - "Unpacking librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 47%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package mesa-va-drivers:amd64.\n", - "Preparing to unpack .../106-mesa-va-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", - "Unpacking mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "Selecting previously unselected package mesa-vdpau-drivers:amd64.\n", - "Preparing to unpack .../107-mesa-vdpau-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", - "Unpacking mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 48%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package i965-va-driver:amd64.\n", - "Preparing to unpack .../108-i965-va-driver_2.4.1+dfsg1-1_amd64.deb ...\n", - "Unpacking i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", - "Selecting previously unselected package va-driver-all:amd64.\n", - "Preparing to unpack .../109-va-driver-all_2.14.0-1_amd64.deb ...\n", - "Unpacking va-driver-all:amd64 (2.14.0-1) ...\n", - "Selecting previously unselected package vdpau-driver-all:amd64.\n", - "Preparing to unpack .../110-vdpau-driver-all_1.4-3build2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 49%]\u001b[49m\u001b[39m [############################..............................] \u001b8Unpacking vdpau-driver-all:amd64 (1.4-3build2) ...\n", - "Selecting previously unselected package pocketsphinx-en-us.\n", - "Preparing to unpack .../111-pocketsphinx-en-us_0.8.0+real5prealpha+1-14ubuntu1_all.deb ...\n", - "Unpacking pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "Setting up libgme0:amd64 (0.6.3-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 50%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", - "Setting up libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 51%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libudfread0:amd64 (1.1.2-1) ...\n", - "Setting up libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 52%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libaom3:amd64 (3.3.0-1) ...\n", - "Setting up librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 53%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libraw1394-11:amd64 (2.1.2-2build2) ...\n", - "Setting up libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", - "Setting up libcodec2-1.0:amd64 (1.0.1-3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 54%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libmpg123-0:amd64 (1.29.3-1build1) ...\n", - "Setting up libogg0:amd64 (1.3.5-0ubuntu3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 55%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", - "Setting up libshine3:amd64 (3.1.1-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 56%]\u001b[49m\u001b[39m [################################..........................] \u001b8Setting up libtwolame0:amd64 (0.4.0-2build2) ...\n", - "Setting up libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 57%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libgsm1:amd64 (1.0.19-1) ...\n", - "Setting up libsoxr0:amd64 (0.1.3-4build2) ...\n", - "Setting up libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 58%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libxcursor1:amd64 (1:1.2.0-2build4) ...\n", - "Setting up libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 59%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libnorm1:amd64 (1.5.9+dfsg-2) ...\n", - "Setting up libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 60%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", - "Setting up xkb-data (2.33-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 61%]\u001b[49m\u001b[39m [###################################.......................] \u001b8Setting up libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", - "Setting up libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", - "Setting up libxvidcore4:amd64 (2:1.3.7-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 62%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", - "Setting up libass9:amd64 (1:0.15.2-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 63%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libslang2:amd64 (2.3.2-5build4) ...\n", - "Setting up libva2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 64%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", - "Setting up libopus0:amd64 (1.3.1-0.1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 65%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up shared-mime-info (2.1-2) ...\n", - "Setting up libxinerama1:amd64 (2:1.1.4-3) ...\n", - "Setting up intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 66%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxv1:amd64 (2:1.0.11-1build2) ...\n", - "Setting up libvorbis0a:amd64 (1.3.7-1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 67%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxrandr2:amd64 (2:1.5.2-1build1) ...\n", - "Setting up libaacs0:amd64 (0.11.1-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 68%]\u001b[49m\u001b[39m [#######################################...................] \u001b8Setting up pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "Setting up libx265-199:amd64 (3.5-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 69%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libsndio7.0:amd64 (1.8.1-1.1) ...\n", - "Setting up libbdplus0:amd64 (0.2.0-1) ...\n", - "Setting up libvidstab1.1:amd64 (1.1.0-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 70%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libflite1:amd64 (2.2-3) ...\n", - "Setting up libva-drm2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 71%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libasyncns0:amd64 (0.8-6build2) ...\n", - "Setting up libvdpau1:amd64 (1.4-3build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 72%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", - "Setting up libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 73%]\u001b[49m\u001b[39m [##########################################................] \u001b8Setting up libzimg2:amd64 (3.0.3+ds1-1) ...\n", - "Setting up libopenal-data (1:1.19.1-2build3) ...\n", - "Setting up libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 74%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", - "Setting up libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 75%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Setting up libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 76%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "Setting up libdav1d5:amd64 (0.9.2-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 77%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up libmfx1:amd64 (22.3.0-1) ...\n", - "Setting up libbluray2:amd64 (1:1.3.1-1) ...\n", - "Setting up libsamplerate0:amd64 (0.2.2-1build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 78%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libva-x11-2:amd64 (2.14.0-1) ...\n", - "Setting up libzvbi-common (0.2.35-19) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 79%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libmp3lame0:amd64 (3.100-3build2) ...\n", - "Setting up i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 80%]\u001b[49m\u001b[39m [##############################################............] \u001b8Setting up libvorbisenc2:amd64 (1.3.7-1build2) ...\n", - "Setting up libiec61883-0:amd64 (1.2.0-4build3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 81%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libserd-0-0:amd64 (0.30.10-2) ...\n", - "Setting up libxkbcommon0:amd64 (1.4.0-1) ...\n", - "Setting up libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 82%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libavc1394-0:amd64 (0.5.4-5build2) ...\n", - "Setting up mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 83%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libzvbi0:amd64 (0.2.35-19) ...\n", - "Setting up libzmq5:amd64 (4.3.4-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 84%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", - "Setting up libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 85%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", - "Setting up libopenal1:amd64 (1:1.19.1-2build3) ...\n", - "Setting up libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 86%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "Setting up libvorbisfile3:amd64 (1.3.7-1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 87%]\u001b[49m\u001b[39m [##################################################........] \u001b8Setting up va-driver-all:amd64 (2.14.0-1) ...\n", - "Setting up libdc1394-25:amd64 (2.2.6-4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 88%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 89%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up librubberband2:amd64 (2.0.0-2) ...\n", - "Setting up libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", - "Setting up vdpau-driver-all:amd64 (1.4-3build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 90%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Setting up libsord-0-0:amd64 (0.16.8-2) ...\n", - "Setting up libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 91%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libsratom-0-0:amd64 (0.6.8-1) ...\n", - "Setting up libdecor-0-0:amd64 (0.1.0-3build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 92%]\u001b[49m\u001b[39m [#####################################################.....] \u001b8Setting up libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 93%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up liblilv-0-0:amd64 (0.24.12-2) ...\n", - "Setting up libopenmpt0:amd64 (0.6.1-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 94%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", - "Setting up libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 95%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 96%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libchromaprint1:amd64 (1.5.1-2) ...\n", - "Setting up libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 97%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 98%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 99%]\u001b[49m\u001b[39m [#########################################################.] \u001b8Processing triggers for libc-bin (2.35-0ubuntu3.6) ...\n", - "Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", - "\n", - "\u001b7\u001b[0;24r\u001b8\u001b[1A\u001b[J" + "ffmpeg is already the newest version (7:4.4.2-0ubuntu0.22.04.1).\n", + "0 upgraded, 0 newly installed, 0 to remove and 267 not upgraded.\n" ] } ], From 98b481bb8ad5e119fbdc1baf7375479fc70e0892 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 16 Nov 2024 11:58:47 -0800 Subject: [PATCH 33/36] Revert "Reverted prototype_wingsail_controller.ipynb" This reverts commit 94f684ff45dc3360669046d1ee5351253d51e2ee. --- .../prototype_wingsail_controller.ipynb | 666 +++++++++++++++++- 1 file changed, 642 insertions(+), 24 deletions(-) diff --git a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb index 391b0d5f7..e0679eeff 100644 --- a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb +++ b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 1, "metadata": {}, "outputs": [ { @@ -17,35 +17,653 @@ "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: numpy in /home/ros/.local/lib/python3.10/site-packages (1.26.4)\n", - "Requirement already satisfied: scipy in /home/ros/.local/lib/python3.10/site-packages (1.12.0)\n", - "Requirement already satisfied: matplotlib in /home/ros/.local/lib/python3.10/site-packages (3.8.3)\n", - "Requirement already satisfied: packaging>=20.0 in /usr/lib/python3/dist-packages (from matplotlib) (21.3)\n", - "Requirement already satisfied: pillow>=8 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (10.2.0)\n", - "Requirement already satisfied: kiwisolver>=1.3.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.4.5)\n", - "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)\n", - "Requirement already satisfied: cycler>=0.10 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (0.12.1)\n", - "Requirement already satisfied: fonttools>=4.22.0 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (4.49.0)\n", - "Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib) (2.4.7)\n", - "Requirement already satisfied: contourpy>=1.0.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.2.0)\n", - "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", - "Hit:1 http://packages.ros.org/ros2/ubuntu jammy InRelease\n", - "Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease \u001b[0m\u001b[33m\n", - "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \n", - "Hit:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease\n", - "Ign:5 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", - "Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease\n", - "Hit:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release\n", - "Reading package lists... Done\u001b[33m\n", + "Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.21.5)\n", + "Requirement already satisfied: scipy in /usr/lib/python3/dist-packages (1.8.0)\n", + "Requirement already satisfied: matplotlib in /usr/lib/python3/dist-packages (3.5.1)\n", + "Ign:1 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", + "Get:2 http://packages.ros.org/ros2/ubuntu jammy InRelease [4,682 B] \u001b[0m\n", + "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \u001b[0m \u001b[0m\u001b[33m\n", + "Get:4 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release [3,094 B]\n", + "Get:5 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB] \u001b[0m\u001b[33m\u001b[33m\n", + "Get:6 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB] \u001b[0m\n", + "Get:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release.gpg [866 B]m\n", + "Get:8 http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages [1,622 kB] \u001b[0m\u001b[33m\n", + "Get:9 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB] \u001b[0m\u001b[33m\u001b[33m\n", + "Get:10 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0/multiverse amd64 Packages [74.0 kB]\n", + "Get:11 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [3,200 kB]m\u001b[33m\u001b[33m\u001b[33m\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2,648 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [3,278 kB]\n", + "Get:14 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [2,372 kB]m\n", + "Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,450 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [81.4 kB]33m\u001b[33m\u001b[33m\u001b[33m\n", + "Get:17 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1,162 kB]\n", + "Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [33.7 kB]\n", + "Fetched 16.3 MB in 5s (3,032 kB/s) \u001b[0m \u001b[0m\u001b[33m\u001b[0m \u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", + "Reading package lists... Done\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "267 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", + "284 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", "\u001b[1;33mW: \u001b[0mhttp://repo.mongodb.org/apt/ubuntu/dists/jammy/mongodb-org/6.0/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.\u001b[0m\n", "Reading package lists... Done\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "ffmpeg is already the newest version (7:4.4.2-0ubuntu0.22.04.1).\n", - "0 upgraded, 0 newly installed, 0 to remove and 267 not upgraded.\n" + "The following additional packages will be installed:\n", + " i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1 libass9\n", + " libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", + " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", + " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", + " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", + " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", + " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", + " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", + " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", + " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", + " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", + " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", + " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", + " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", + " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", + " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", + " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", + " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", + " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", + " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", + "Suggested packages:\n", + " ffmpeg-doc i965-va-driver-shaders libcuda1 libnvcuvid1 libnvidia-encode1\n", + " libbluray-bdj jackd2 libportaudio2 opus-tools pulseaudio libraw1394-doc\n", + " librsvg2-bin xdg-utils serdi sndiod sordi speex libvdpau-va-gl1\n", + "The following NEW packages will be installed:\n", + " ffmpeg i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1\n", + " libass9 libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", + " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", + " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", + " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", + " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", + " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", + " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", + " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", + " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", + " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", + " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", + " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", + " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", + " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", + " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", + " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", + " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", + " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", + " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", + "0 upgraded, 112 newly installed, 0 to remove and 284 not upgraded.\n", + "Need to get 94.1 MB of archives.\n", + "After this operation, 249 MB of additional disk space will be used.\n", + "Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libapparmor1 amd64 3.0.4-2ubuntu2.4 [39.7 kB]\n", + "Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 libslang2 amd64 2.3.2-5build4 [468 kB]\n", + "Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 shared-mime-info amd64 2.1-2 [454 kB]\n", + "Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 xkb-data all 2.33-1 [394 kB]\n", + "Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libusb-1.0-0 amd64 2:1.0.25-1ubuntu2 [52.7 kB]\n", + "Get:6 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaom3 amd64 3.3.0-1 [1,748 kB]\n", + "Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva2 amd64 2.14.0-1 [65.0 kB]\n", + "Get:8 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmfx1 amd64 22.3.0-1 [3,105 kB]\n", + "Get:9 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-drm2 amd64 2.14.0-1 [7,502 B]\n", + "Get:10 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-x11-2 amd64 2.14.0-1 [12.6 kB]\n", + "Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvdpau1 amd64 1.4-3build2 [27.0 kB]\n", + "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavutil56 amd64 7:4.4.2-0ubuntu0.22.04.1 [290 kB]\n", + "Get:13 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libcodec2-1.0 amd64 1.0.1-3 [8,435 kB]\n", + "Get:14 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdav1d5 amd64 0.9.2-1 [463 kB]\u001b[33m\n", + "Get:15 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgsm1 amd64 1.0.19-1 [27.7 kB]\n", + "Get:16 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmp3lame0 amd64 3.100-3build2 [141 kB]\n", + "Get:17 http://archive.ubuntu.com/ubuntu jammy/main amd64 libopus0 amd64 1.3.1-0.1build2 [203 kB]\n", + "Get:18 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcairo-gobject2 amd64 1.16.0-5ubuntu2 [19.4 kB]\n", + "Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-common all 2.42.8+dfsg-1ubuntu0.3 [5,630 B]\n", + "Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf-2.0-0 amd64 2.42.8+dfsg-1ubuntu0.3 [148 kB]\n", + "Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-2 amd64 2.52.5+dfsg-3ubuntu0.2 [2,974 kB]\n", + "Get:22 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libshine3 amd64 3.1.1-2 [23.2 kB]\n", + "Get:23 http://archive.ubuntu.com/ubuntu jammy/main amd64 libspeex1 amd64 1.2~rc1.2-1.1ubuntu3 [57.9 kB]\n", + "Get:24 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsoxr0 amd64 0.1.3-4build2 [79.8 kB]\n", + "Get:25 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswresample3 amd64 7:4.4.2-0ubuntu0.22.04.1 [62.2 kB]\n", + "Get:26 http://archive.ubuntu.com/ubuntu jammy/main amd64 libogg0 amd64 1.3.5-0ubuntu3 [22.9 kB]\n", + "Get:27 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtheora0 amd64 1.1.1+dfsg.1-15ubuntu4 [209 kB]\n", + "Get:28 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtwolame0 amd64 0.4.0-2build2 [52.5 kB]\n", + "Get:29 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbis0a amd64 1.3.7-1build2 [99.2 kB]\n", + "Get:30 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisenc2 amd64 1.3.7-1build2 [82.6 kB]\n", + "Get:31 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libvpx7 amd64 1.11.0-2ubuntu2.3 [1,078 kB]\n", + "Get:32 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx264-163 amd64 2:0.163.3060+git5db6aa6-2build1 [591 kB]\n", + "Get:33 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx265-199 amd64 3.5-2 [1,170 kB]\n", + "Get:34 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libxvidcore4 amd64 2:1.3.7-1 [201 kB]\n", + "Get:35 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi-common all 0.2.35-19 [35.5 kB]\n", + "Get:36 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi0 amd64 0.2.35-19 [262 kB]\n", + "Get:37 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavcodec58 amd64 7:4.4.2-0ubuntu0.22.04.1 [5,567 kB]\n", + "Get:38 http://archive.ubuntu.com/ubuntu jammy/main amd64 libraw1394-11 amd64 2.1.2-2build2 [27.0 kB]\n", + "Get:39 http://archive.ubuntu.com/ubuntu jammy/main amd64 libavc1394-0 amd64 0.5.4-5build2 [17.0 kB]\n", + "Get:40 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libass9 amd64 1:0.15.2-1 [97.5 kB]\n", + "Get:41 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libudfread0 amd64 1.1.2-1 [16.2 kB]\n", + "Get:42 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbluray2 amd64 1:1.3.1-1 [159 kB]\n", + "Get:43 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libchromaprint1 amd64 1.5.1-2 [28.4 kB]\n", + "Get:44 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgme0 amd64 0.6.3-2 [127 kB]\n", + "Get:45 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpg123-0 amd64 1.29.3-1build1 [172 kB]\n", + "Get:46 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisfile3 amd64 1.3.7-1build2 [17.1 kB]\n", + "Get:47 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenmpt0 amd64 0.6.1-1 [592 kB]\n", + "Get:48 http://archive.ubuntu.com/ubuntu jammy/main amd64 librabbitmq4 amd64 0.10.0-1ubuntu2 [39.3 kB]\n", + "Get:49 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsrt1.4-gnutls amd64 1.4.4-4 [309 kB]\n", + "Get:50 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libssh-gcrypt-4 amd64 0.9.6-2ubuntu0.22.04.3 [223 kB]\n", + "Get:51 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libnorm1 amd64 1.5.9+dfsg-2 [221 kB]\n", + "Get:52 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpgm-5.3-0 amd64 5.3.128~dfsg-2 [161 kB]\n", + "Get:53 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzmq5 amd64 4.3.4-2 [256 kB]\n", + "Get:54 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavformat58 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,103 kB]\n", + "Get:55 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbs2b0 amd64 3.1.0+dfsg-2.2build1 [10.2 kB]\n", + "Get:56 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libflite1 amd64 2.2-3 [13.7 MB]\n", + "Get:57 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libserd-0-0 amd64 0.30.10-2 [40.8 kB]\u001b[33m\u001b[33m\n", + "Get:58 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsord-0-0 amd64 0.16.8-2 [21.2 kB]\n", + "Get:59 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsratom-0-0 amd64 0.6.8-1 [17.0 kB]\n", + "Get:60 http://archive.ubuntu.com/ubuntu jammy/universe amd64 liblilv-0-0 amd64 0.24.12-2 [42.8 kB]\n", + "Get:61 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmysofa1 amd64 1.2.1~dfsg0-1 [1,157 kB]\n", + "Get:62 http://archive.ubuntu.com/ubuntu jammy/main amd64 libasyncns0 amd64 0.8-6build2 [12.8 kB]\n", + "Get:63 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libflac8 amd64 1.3.3-2ubuntu0.2 [111 kB]\n", + "Get:64 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsndfile1 amd64 1.0.31-2ubuntu0.1 [197 kB]\n", + "Get:65 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpulse0 amd64 1:15.99.1+dfsg1-1ubuntu2.2 [298 kB]\n", + "Get:66 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsphinxbase3 amd64 0.8+5prealpha+1-13build1 [126 kB]\n", + "Get:67 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpocketsphinx3 amd64 0.8.0+real5prealpha+1-14ubuntu1 [132 kB]\n", + "Get:68 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libpostproc55 amd64 7:4.4.2-0ubuntu0.22.04.1 [60.1 kB]\n", + "Get:69 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsamplerate0 amd64 0.2.2-1build1 [1,359 kB]\n", + "Get:70 http://archive.ubuntu.com/ubuntu jammy/universe amd64 librubberband2 amd64 2.0.0-2 [90.0 kB]\n", + "Get:71 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswscale5 amd64 7:4.4.2-0ubuntu0.22.04.1 [180 kB]\n", + "Get:72 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libvidstab1.1 amd64 1.1.0-2 [35.0 kB]\n", + "Get:73 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzimg2 amd64 3.0.3+ds1-1 [241 kB]\n", + "Get:74 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavfilter7 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,496 kB]\n", + "Get:75 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcaca0 amd64 0.99.beta19-2.2ubuntu4 [224 kB]\n", + "Get:76 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libcdio19 amd64 2.1.0-3ubuntu0.2 [63.6 kB]\n", + "Get:77 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-cdda2 amd64 10.2+2.0.0-1build3 [16.7 kB]\n", + "Get:78 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-paranoia2 amd64 10.2+2.0.0-1build3 [15.9 kB]\n", + "Get:79 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdc1394-25 amd64 2.2.6-4 [88.8 kB]\n", + "Get:80 http://archive.ubuntu.com/ubuntu jammy/main amd64 libiec61883-0 amd64 1.2.0-4build3 [25.9 kB]\n", + "Get:81 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjack-jackd2-0 amd64 1.9.20~dfsg-1 [293 kB]\n", + "Get:82 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal-data all 1:1.19.1-2build3 [164 kB]\n", + "Get:83 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsndio7.0 amd64 1.8.1-1.1 [29.3 kB]\n", + "Get:84 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal1 amd64 1:1.19.1-2build3 [535 kB]\n", + "Get:85 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-client0 amd64 1.20.0-1ubuntu0.1 [25.9 kB]\n", + "Get:86 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-0 amd64 0.1.0-3build1 [15.1 kB]\n", + "Get:87 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-server0 amd64 1.20.0-1ubuntu0.1 [34.3 kB]\n", + "Get:88 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgbm1 amd64 23.2.1-1ubuntu3.1~22.04.2 [33.5 kB]\n", + "Get:89 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-cursor0 amd64 1.20.0-1ubuntu0.1 [10.7 kB]\n", + "Get:90 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-egl1 amd64 1.20.0-1ubuntu0.1 [5,582 B]\n", + "Get:91 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcursor1 amd64 1:1.2.0-2build4 [20.9 kB]\n", + "Get:92 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxinerama1 amd64 2:1.1.4-3 [7,382 B]\n", + "Get:93 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxkbcommon0 amd64 1.4.0-1 [125 kB]\n", + "Get:94 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxrandr2 amd64 2:1.5.2-1build1 [20.4 kB]\n", + "Get:95 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsdl2-2.0-0 amd64 2.0.20+dfsg-2ubuntu1.22.04.1 [582 kB]\n", + "Get:96 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcb-shape0 amd64 1.14-3ubuntu3 [6,158 B]\n", + "Get:97 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxv1 amd64 2:1.0.11-1build2 [11.2 kB]\n", + "Get:98 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavdevice58 amd64 7:4.4.2-0ubuntu0.22.04.1 [87.5 kB]\n", + "Get:99 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 ffmpeg amd64 7:4.4.2-0ubuntu0.22.04.1 [1,696 kB]\n", + "Get:100 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libigdgmm12 amd64 22.1.2+ds1-1 [139 kB]\n", + "Get:101 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 intel-media-va-driver amd64 22.3.1+dfsg1-1ubuntu2 [2,283 kB]\n", + "Get:102 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaacs0 amd64 0.11.1-1 [64.1 kB]\n", + "Get:103 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbdplus0 amd64 0.2.0-1 [52.2 kB]\n", + "Get:104 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-plugin-1-cairo amd64 0.1.0-3build1 [20.4 kB]\n", + "Get:105 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-bin amd64 2.42.8+dfsg-1ubuntu0.3 [14.2 kB]\n", + "Get:106 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-common amd64 2.52.5+dfsg-3ubuntu0.2 [17.7 kB]\n", + "Get:107 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 mesa-va-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [4,100 kB]\n", + "Get:108 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 mesa-vdpau-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [3,820 kB]\n", + "Get:109 http://archive.ubuntu.com/ubuntu jammy/universe amd64 i965-va-driver amd64 2.4.1+dfsg1-1 [302 kB]\n", + "Get:110 http://archive.ubuntu.com/ubuntu jammy/universe amd64 va-driver-all amd64 2.14.0-1 [3,984 B]\n", + "Get:111 http://archive.ubuntu.com/ubuntu jammy/main amd64 vdpau-driver-all amd64 1.4-3build2 [4,510 B]\n", + "Get:112 http://archive.ubuntu.com/ubuntu jammy/universe amd64 pocketsphinx-en-us all 0.8.0+real5prealpha+1-14ubuntu1 [27.6 MB]\n", + "Fetched 94.1 MB in 1min 18s (1,203 kB/s) \u001b[0m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", + "debconf: delaying package configuration, since apt-utils is not installed\n", + "\n", + "\u001b7\u001b[0;23r\u001b8\u001b[1ASelecting previously unselected package libapparmor1:amd64.\n", + "(Reading database ... 76399 files and directories currently installed.)\n", + "Preparing to unpack .../000-libapparmor1_3.0.4-2ubuntu2.4_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 0%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", + "Selecting previously unselected package libslang2:amd64.\n", + "Preparing to unpack .../001-libslang2_2.3.2-5build4_amd64.deb ...\n", + "Unpacking libslang2:amd64 (2.3.2-5build4) ...\n", + "Selecting previously unselected package shared-mime-info.\n", + "Preparing to unpack .../002-shared-mime-info_2.1-2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 1%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking shared-mime-info (2.1-2) ...\n", + "Selecting previously unselected package xkb-data.\n", + "Preparing to unpack .../003-xkb-data_2.33-1_all.deb ...\n", + "Unpacking xkb-data (2.33-1) ...\n", + "Selecting previously unselected package libusb-1.0-0:amd64.\n", + "Preparing to unpack .../004-libusb-1.0-0_2%3a1.0.25-1ubuntu2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 2%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Unpacking libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", + "Selecting previously unselected package libaom3:amd64.\n", + "Preparing to unpack .../005-libaom3_3.3.0-1_amd64.deb ...\n", + "Unpacking libaom3:amd64 (3.3.0-1) ...\n", + "Selecting previously unselected package libva2:amd64.\n", + "Preparing to unpack .../006-libva2_2.14.0-1_amd64.deb ...\n", + "Unpacking libva2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 3%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Selecting previously unselected package libmfx1:amd64.\n", + "Preparing to unpack .../007-libmfx1_22.3.0-1_amd64.deb ...\n", + "Unpacking libmfx1:amd64 (22.3.0-1) ...\n", + "Selecting previously unselected package libva-drm2:amd64.\n", + "Preparing to unpack .../008-libva-drm2_2.14.0-1_amd64.deb ...\n", + "Unpacking libva-drm2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 4%]\u001b[49m\u001b[39m [##........................................................] \u001b8Selecting previously unselected package libva-x11-2:amd64.\n", + "Preparing to unpack .../009-libva-x11-2_2.14.0-1_amd64.deb ...\n", + "Unpacking libva-x11-2:amd64 (2.14.0-1) ...\n", + "Selecting previously unselected package libvdpau1:amd64.\n", + "Preparing to unpack .../010-libvdpau1_1.4-3build2_amd64.deb ...\n", + "Unpacking libvdpau1:amd64 (1.4-3build2) ...\n", + "Selecting previously unselected package libavutil56:amd64.\n", + "Preparing to unpack .../011-libavutil56_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 5%]\u001b[49m\u001b[39m [##........................................................] \u001b8Unpacking libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libcodec2-1.0:amd64.\n", + "Preparing to unpack .../012-libcodec2-1.0_1.0.1-3_amd64.deb ...\n", + "Unpacking libcodec2-1.0:amd64 (1.0.1-3) ...\n", + "Selecting previously unselected package libdav1d5:amd64.\n", + "Preparing to unpack .../013-libdav1d5_0.9.2-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 6%]\u001b[49m\u001b[39m [###.......................................................] \u001b8Unpacking libdav1d5:amd64 (0.9.2-1) ...\n", + "Selecting previously unselected package libgsm1:amd64.\n", + "Preparing to unpack .../014-libgsm1_1.0.19-1_amd64.deb ...\n", + "Unpacking libgsm1:amd64 (1.0.19-1) ...\n", + "Selecting previously unselected package libmp3lame0:amd64.\n", + "Preparing to unpack .../015-libmp3lame0_3.100-3build2_amd64.deb ...\n", + "Unpacking libmp3lame0:amd64 (3.100-3build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 7%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libopus0:amd64.\n", + "Preparing to unpack .../016-libopus0_1.3.1-0.1build2_amd64.deb ...\n", + "Unpacking libopus0:amd64 (1.3.1-0.1build2) ...\n", + "Selecting previously unselected package libcairo-gobject2:amd64.\n", + "Preparing to unpack .../017-libcairo-gobject2_1.16.0-5ubuntu2_amd64.deb ...\n", + "Unpacking libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 8%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libgdk-pixbuf2.0-common.\n", + "Preparing to unpack .../018-libgdk-pixbuf2.0-common_2.42.8+dfsg-1ubuntu0.3_all.deb ...\n", + "Unpacking libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Selecting previously unselected package libgdk-pixbuf-2.0-0:amd64.\n", + "Preparing to unpack .../019-libgdk-pixbuf-2.0-0_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", + "Unpacking libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Selecting previously unselected package librsvg2-2:amd64.\n", + "Preparing to unpack .../020-librsvg2-2_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 9%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Selecting previously unselected package libshine3:amd64.\n", + "Preparing to unpack .../021-libshine3_3.1.1-2_amd64.deb ...\n", + "Unpacking libshine3:amd64 (3.1.1-2) ...\n", + "Selecting previously unselected package libspeex1:amd64.\n", + "Preparing to unpack .../022-libspeex1_1.2~rc1.2-1.1ubuntu3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 10%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", + "Selecting previously unselected package libsoxr0:amd64.\n", + "Preparing to unpack .../023-libsoxr0_0.1.3-4build2_amd64.deb ...\n", + "Unpacking libsoxr0:amd64 (0.1.3-4build2) ...\n", + "Selecting previously unselected package libswresample3:amd64.\n", + "Preparing to unpack .../024-libswresample3_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 11%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libogg0:amd64.\n", + "Preparing to unpack .../025-libogg0_1.3.5-0ubuntu3_amd64.deb ...\n", + "Unpacking libogg0:amd64 (1.3.5-0ubuntu3) ...\n", + "Selecting previously unselected package libtheora0:amd64.\n", + "Preparing to unpack .../026-libtheora0_1.1.1+dfsg.1-15ubuntu4_amd64.deb ...\n", + "Unpacking libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 12%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libtwolame0:amd64.\n", + "Preparing to unpack .../027-libtwolame0_0.4.0-2build2_amd64.deb ...\n", + "Unpacking libtwolame0:amd64 (0.4.0-2build2) ...\n", + "Selecting previously unselected package libvorbis0a:amd64.\n", + "Preparing to unpack .../028-libvorbis0a_1.3.7-1build2_amd64.deb ...\n", + "Unpacking libvorbis0a:amd64 (1.3.7-1build2) ...\n", + "Selecting previously unselected package libvorbisenc2:amd64.\n", + "Preparing to unpack .../029-libvorbisenc2_1.3.7-1build2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 13%]\u001b[49m\u001b[39m [#######...................................................] \u001b8Unpacking libvorbisenc2:amd64 (1.3.7-1build2) ...\n", + "Selecting previously unselected package libvpx7:amd64.\n", + "Preparing to unpack .../030-libvpx7_1.11.0-2ubuntu2.3_amd64.deb ...\n", + "Unpacking libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", + "Selecting previously unselected package libx264-163:amd64.\n", + "Preparing to unpack .../031-libx264-163_2%3a0.163.3060+git5db6aa6-2build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 14%]\u001b[49m\u001b[39m [########..................................................] \u001b8Unpacking libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", + "Selecting previously unselected package libx265-199:amd64.\n", + "Preparing to unpack .../032-libx265-199_3.5-2_amd64.deb ...\n", + "Unpacking libx265-199:amd64 (3.5-2) ...\n", + "Selecting previously unselected package libxvidcore4:amd64.\n", + "Preparing to unpack .../033-libxvidcore4_2%3a1.3.7-1_amd64.deb ...\n", + "Unpacking libxvidcore4:amd64 (2:1.3.7-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 15%]\u001b[49m\u001b[39m [########..................................................] \u001b8Selecting previously unselected package libzvbi-common.\n", + "Preparing to unpack .../034-libzvbi-common_0.2.35-19_all.deb ...\n", + "Unpacking libzvbi-common (0.2.35-19) ...\n", + "Selecting previously unselected package libzvbi0:amd64.\n", + "Preparing to unpack .../035-libzvbi0_0.2.35-19_amd64.deb ...\n", + "Unpacking libzvbi0:amd64 (0.2.35-19) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 16%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Selecting previously unselected package libavcodec58:amd64.\n", + "Preparing to unpack .../036-libavcodec58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libraw1394-11:amd64.\n", + "Preparing to unpack .../037-libraw1394-11_2.1.2-2build2_amd64.deb ...\n", + "Unpacking libraw1394-11:amd64 (2.1.2-2build2) ...\n", + "Selecting previously unselected package libavc1394-0:amd64.\n", + "Preparing to unpack .../038-libavc1394-0_0.5.4-5build2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 17%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Unpacking libavc1394-0:amd64 (0.5.4-5build2) ...\n", + "Selecting previously unselected package libass9:amd64.\n", + "Preparing to unpack .../039-libass9_1%3a0.15.2-1_amd64.deb ...\n", + "Unpacking libass9:amd64 (1:0.15.2-1) ...\n", + "Selecting previously unselected package libudfread0:amd64.\n", + "Preparing to unpack .../040-libudfread0_1.1.2-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 18%]\u001b[49m\u001b[39m [##########................................................] \u001b8Unpacking libudfread0:amd64 (1.1.2-1) ...\n", + "Selecting previously unselected package libbluray2:amd64.\n", + "Preparing to unpack .../041-libbluray2_1%3a1.3.1-1_amd64.deb ...\n", + "Unpacking libbluray2:amd64 (1:1.3.1-1) ...\n", + "Selecting previously unselected package libchromaprint1:amd64.\n", + "Preparing to unpack .../042-libchromaprint1_1.5.1-2_amd64.deb ...\n", + "Unpacking libchromaprint1:amd64 (1.5.1-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 19%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libgme0:amd64.\n", + "Preparing to unpack .../043-libgme0_0.6.3-2_amd64.deb ...\n", + "Unpacking libgme0:amd64 (0.6.3-2) ...\n", + "Selecting previously unselected package libmpg123-0:amd64.\n", + "Preparing to unpack .../044-libmpg123-0_1.29.3-1build1_amd64.deb ...\n", + "Unpacking libmpg123-0:amd64 (1.29.3-1build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 20%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libvorbisfile3:amd64.\n", + "Preparing to unpack .../045-libvorbisfile3_1.3.7-1build2_amd64.deb ...\n", + "Unpacking libvorbisfile3:amd64 (1.3.7-1build2) ...\n", + "Selecting previously unselected package libopenmpt0:amd64.\n", + "Preparing to unpack .../046-libopenmpt0_0.6.1-1_amd64.deb ...\n", + "Unpacking libopenmpt0:amd64 (0.6.1-1) ...\n", + "Selecting previously unselected package librabbitmq4:amd64.\n", + "Preparing to unpack .../047-librabbitmq4_0.10.0-1ubuntu2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 21%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", + "Selecting previously unselected package libsrt1.4-gnutls:amd64.\n", + "Preparing to unpack .../048-libsrt1.4-gnutls_1.4.4-4_amd64.deb ...\n", + "Unpacking libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", + "Selecting previously unselected package libssh-gcrypt-4:amd64.\n", + "Preparing to unpack .../049-libssh-gcrypt-4_0.9.6-2ubuntu0.22.04.3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 22%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", + "Selecting previously unselected package libnorm1:amd64.\n", + "Preparing to unpack .../050-libnorm1_1.5.9+dfsg-2_amd64.deb ...\n", + "Unpacking libnorm1:amd64 (1.5.9+dfsg-2) ...\n", + "Selecting previously unselected package libpgm-5.3-0:amd64.\n", + "Preparing to unpack .../051-libpgm-5.3-0_5.3.128~dfsg-2_amd64.deb ...\n", + "Unpacking libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 23%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libzmq5:amd64.\n", + "Preparing to unpack .../052-libzmq5_4.3.4-2_amd64.deb ...\n", + "Unpacking libzmq5:amd64 (4.3.4-2) ...\n", + "Selecting previously unselected package libavformat58:amd64.\n", + "Preparing to unpack .../053-libavformat58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 24%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libbs2b0:amd64.\n", + "Preparing to unpack .../054-libbs2b0_3.1.0+dfsg-2.2build1_amd64.deb ...\n", + "Unpacking libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", + "Selecting previously unselected package libflite1:amd64.\n", + "Preparing to unpack .../055-libflite1_2.2-3_amd64.deb ...\n", + "Unpacking libflite1:amd64 (2.2-3) ...\n", + "Selecting previously unselected package libserd-0-0:amd64.\n", + "Preparing to unpack .../056-libserd-0-0_0.30.10-2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 25%]\u001b[49m\u001b[39m [##############............................................] \u001b8Unpacking libserd-0-0:amd64 (0.30.10-2) ...\n", + "Selecting previously unselected package libsord-0-0:amd64.\n", + "Preparing to unpack .../057-libsord-0-0_0.16.8-2_amd64.deb ...\n", + "Unpacking libsord-0-0:amd64 (0.16.8-2) ...\n", + "Selecting previously unselected package libsratom-0-0:amd64.\n", + "Preparing to unpack .../058-libsratom-0-0_0.6.8-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 26%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Unpacking libsratom-0-0:amd64 (0.6.8-1) ...\n", + "Selecting previously unselected package liblilv-0-0:amd64.\n", + "Preparing to unpack .../059-liblilv-0-0_0.24.12-2_amd64.deb ...\n", + "Unpacking liblilv-0-0:amd64 (0.24.12-2) ...\n", + "Selecting previously unselected package libmysofa1:amd64.\n", + "Preparing to unpack .../060-libmysofa1_1.2.1~dfsg0-1_amd64.deb ...\n", + "Unpacking libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 27%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Selecting previously unselected package libasyncns0:amd64.\n", + "Preparing to unpack .../061-libasyncns0_0.8-6build2_amd64.deb ...\n", + "Unpacking libasyncns0:amd64 (0.8-6build2) ...\n", + "Selecting previously unselected package libflac8:amd64.\n", + "Preparing to unpack .../062-libflac8_1.3.3-2ubuntu0.2_amd64.deb ...\n", + "Unpacking libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 28%]\u001b[49m\u001b[39m [################..........................................] \u001b8Selecting previously unselected package libsndfile1:amd64.\n", + "Preparing to unpack .../063-libsndfile1_1.0.31-2ubuntu0.1_amd64.deb ...\n", + "Unpacking libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", + "Selecting previously unselected package libpulse0:amd64.\n", + "Preparing to unpack .../064-libpulse0_1%3a15.99.1+dfsg1-1ubuntu2.2_amd64.deb ...\n", + "Unpacking libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Selecting previously unselected package libsphinxbase3:amd64.\n", + "Preparing to unpack .../065-libsphinxbase3_0.8+5prealpha+1-13build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 29%]\u001b[49m\u001b[39m [################..........................................] \u001b8Unpacking libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", + "Selecting previously unselected package libpocketsphinx3:amd64.\n", + "Preparing to unpack .../066-libpocketsphinx3_0.8.0+real5prealpha+1-14ubuntu1_amd64.deb ...\n", + "Unpacking libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "Selecting previously unselected package libpostproc55:amd64.\n", + "Preparing to unpack .../067-libpostproc55_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 30%]\u001b[49m\u001b[39m [#################.........................................] \u001b8Unpacking libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libsamplerate0:amd64.\n", + "Preparing to unpack .../068-libsamplerate0_0.2.2-1build1_amd64.deb ...\n", + "Unpacking libsamplerate0:amd64 (0.2.2-1build1) ...\n", + "Selecting previously unselected package librubberband2:amd64.\n", + "Preparing to unpack .../069-librubberband2_2.0.0-2_amd64.deb ...\n", + "Unpacking librubberband2:amd64 (2.0.0-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 31%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libswscale5:amd64.\n", + "Preparing to unpack .../070-libswscale5_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libvidstab1.1:amd64.\n", + "Preparing to unpack .../071-libvidstab1.1_1.1.0-2_amd64.deb ...\n", + "Unpacking libvidstab1.1:amd64 (1.1.0-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 32%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libzimg2:amd64.\n", + "Preparing to unpack .../072-libzimg2_3.0.3+ds1-1_amd64.deb ...\n", + "Unpacking libzimg2:amd64 (3.0.3+ds1-1) ...\n", + "Selecting previously unselected package libavfilter7:amd64.\n", + "Preparing to unpack .../073-libavfilter7_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package libcaca0:amd64.\n", + "Preparing to unpack .../074-libcaca0_0.99.beta19-2.2ubuntu4_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 33%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", + "Selecting previously unselected package libcdio19:amd64.\n", + "Preparing to unpack .../075-libcdio19_2.1.0-3ubuntu0.2_amd64.deb ...\n", + "Unpacking libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", + "Selecting previously unselected package libcdio-cdda2:amd64.\n", + "Preparing to unpack .../076-libcdio-cdda2_10.2+2.0.0-1build3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 34%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", + "Selecting previously unselected package libcdio-paranoia2:amd64.\n", + "Preparing to unpack .../077-libcdio-paranoia2_10.2+2.0.0-1build3_amd64.deb ...\n", + "Unpacking libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", + "Selecting previously unselected package libdc1394-25:amd64.\n", + "Preparing to unpack .../078-libdc1394-25_2.2.6-4_amd64.deb ...\n", + "Unpacking libdc1394-25:amd64 (2.2.6-4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 35%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libiec61883-0:amd64.\n", + "Preparing to unpack .../079-libiec61883-0_1.2.0-4build3_amd64.deb ...\n", + "Unpacking libiec61883-0:amd64 (1.2.0-4build3) ...\n", + "Selecting previously unselected package libjack-jackd2-0:amd64.\n", + "Preparing to unpack .../080-libjack-jackd2-0_1.9.20~dfsg-1_amd64.deb ...\n", + "Unpacking libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 36%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libopenal-data.\n", + "Preparing to unpack .../081-libopenal-data_1%3a1.19.1-2build3_all.deb ...\n", + "Unpacking libopenal-data (1:1.19.1-2build3) ...\n", + "Selecting previously unselected package libsndio7.0:amd64.\n", + "Preparing to unpack .../082-libsndio7.0_1.8.1-1.1_amd64.deb ...\n", + "Unpacking libsndio7.0:amd64 (1.8.1-1.1) ...\n", + "Selecting previously unselected package libopenal1:amd64.\n", + "Preparing to unpack .../083-libopenal1_1%3a1.19.1-2build3_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 37%]\u001b[49m\u001b[39m [#####################.....................................] \u001b8Unpacking libopenal1:amd64 (1:1.19.1-2build3) ...\n", + "Selecting previously unselected package libwayland-client0:amd64.\n", + "Preparing to unpack .../084-libwayland-client0_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libdecor-0-0:amd64.\n", + "Preparing to unpack .../085-libdecor-0-0_0.1.0-3build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 38%]\u001b[49m\u001b[39m [######################....................................] \u001b8Unpacking libdecor-0-0:amd64 (0.1.0-3build1) ...\n", + "Selecting previously unselected package libwayland-server0:amd64.\n", + "Preparing to unpack .../086-libwayland-server0_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libgbm1:amd64.\n", + "Preparing to unpack .../087-libgbm1_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", + "Unpacking libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 39%]\u001b[49m\u001b[39m [######################....................................] \u001b8Selecting previously unselected package libwayland-cursor0:amd64.\n", + "Preparing to unpack .../088-libwayland-cursor0_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Selecting previously unselected package libwayland-egl1:amd64.\n", + "Preparing to unpack .../089-libwayland-egl1_1.20.0-1ubuntu0.1_amd64.deb ...\n", + "Unpacking libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 40%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Selecting previously unselected package libxcursor1:amd64.\n", + "Preparing to unpack .../090-libxcursor1_1%3a1.2.0-2build4_amd64.deb ...\n", + "Unpacking libxcursor1:amd64 (1:1.2.0-2build4) ...\n", + "Selecting previously unselected package libxinerama1:amd64.\n", + "Preparing to unpack .../091-libxinerama1_2%3a1.1.4-3_amd64.deb ...\n", + "Unpacking libxinerama1:amd64 (2:1.1.4-3) ...\n", + "Selecting previously unselected package libxkbcommon0:amd64.\n", + "Preparing to unpack .../092-libxkbcommon0_1.4.0-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 41%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Unpacking libxkbcommon0:amd64 (1.4.0-1) ...\n", + "Selecting previously unselected package libxrandr2:amd64.\n", + "Preparing to unpack .../093-libxrandr2_2%3a1.5.2-1build1_amd64.deb ...\n", + "Unpacking libxrandr2:amd64 (2:1.5.2-1build1) ...\n", + "Selecting previously unselected package libsdl2-2.0-0:amd64.\n", + "Preparing to unpack .../094-libsdl2-2.0-0_2.0.20+dfsg-2ubuntu1.22.04.1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 42%]\u001b[49m\u001b[39m [########################..................................] \u001b8Unpacking libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", + "Selecting previously unselected package libxcb-shape0:amd64.\n", + "Preparing to unpack .../095-libxcb-shape0_1.14-3ubuntu3_amd64.deb ...\n", + "Unpacking libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", + "Selecting previously unselected package libxv1:amd64.\n", + "Preparing to unpack .../096-libxv1_2%3a1.0.11-1build2_amd64.deb ...\n", + "Unpacking libxv1:amd64 (2:1.0.11-1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 43%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libavdevice58:amd64.\n", + "Preparing to unpack .../097-libavdevice58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Selecting previously unselected package ffmpeg.\n", + "Preparing to unpack .../098-ffmpeg_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", + "Unpacking ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 44%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libigdgmm12:amd64.\n", + "Preparing to unpack .../099-libigdgmm12_22.1.2+ds1-1_amd64.deb ...\n", + "Unpacking libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", + "Selecting previously unselected package intel-media-va-driver:amd64.\n", + "Preparing to unpack .../100-intel-media-va-driver_22.3.1+dfsg1-1ubuntu2_amd64.deb ...\n", + "Unpacking intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", + "Selecting previously unselected package libaacs0:amd64.\n", + "Preparing to unpack .../101-libaacs0_0.11.1-1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 45%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libaacs0:amd64 (0.11.1-1) ...\n", + "Selecting previously unselected package libbdplus0:amd64.\n", + "Preparing to unpack .../102-libbdplus0_0.2.0-1_amd64.deb ...\n", + "Unpacking libbdplus0:amd64 (0.2.0-1) ...\n", + "Selecting previously unselected package libdecor-0-plugin-1-cairo:amd64.\n", + "Preparing to unpack .../103-libdecor-0-plugin-1-cairo_0.1.0-3build1_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 46%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", + "Selecting previously unselected package libgdk-pixbuf2.0-bin.\n", + "Preparing to unpack .../104-libgdk-pixbuf2.0-bin_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", + "Unpacking libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Selecting previously unselected package librsvg2-common:amd64.\n", + "Preparing to unpack .../105-librsvg2-common_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", + "Unpacking librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 47%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package mesa-va-drivers:amd64.\n", + "Preparing to unpack .../106-mesa-va-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", + "Unpacking mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "Selecting previously unselected package mesa-vdpau-drivers:amd64.\n", + "Preparing to unpack .../107-mesa-vdpau-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", + "Unpacking mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 48%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package i965-va-driver:amd64.\n", + "Preparing to unpack .../108-i965-va-driver_2.4.1+dfsg1-1_amd64.deb ...\n", + "Unpacking i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", + "Selecting previously unselected package va-driver-all:amd64.\n", + "Preparing to unpack .../109-va-driver-all_2.14.0-1_amd64.deb ...\n", + "Unpacking va-driver-all:amd64 (2.14.0-1) ...\n", + "Selecting previously unselected package vdpau-driver-all:amd64.\n", + "Preparing to unpack .../110-vdpau-driver-all_1.4-3build2_amd64.deb ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 49%]\u001b[49m\u001b[39m [############################..............................] \u001b8Unpacking vdpau-driver-all:amd64 (1.4-3build2) ...\n", + "Selecting previously unselected package pocketsphinx-en-us.\n", + "Preparing to unpack .../111-pocketsphinx-en-us_0.8.0+real5prealpha+1-14ubuntu1_all.deb ...\n", + "Unpacking pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "Setting up libgme0:amd64 (0.6.3-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 50%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", + "Setting up libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 51%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libudfread0:amd64 (1.1.2-1) ...\n", + "Setting up libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 52%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libaom3:amd64 (3.3.0-1) ...\n", + "Setting up librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 53%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libraw1394-11:amd64 (2.1.2-2build2) ...\n", + "Setting up libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", + "Setting up libcodec2-1.0:amd64 (1.0.1-3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 54%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libmpg123-0:amd64 (1.29.3-1build1) ...\n", + "Setting up libogg0:amd64 (1.3.5-0ubuntu3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 55%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", + "Setting up libshine3:amd64 (3.1.1-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 56%]\u001b[49m\u001b[39m [################################..........................] \u001b8Setting up libtwolame0:amd64 (0.4.0-2build2) ...\n", + "Setting up libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 57%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libgsm1:amd64 (1.0.19-1) ...\n", + "Setting up libsoxr0:amd64 (0.1.3-4build2) ...\n", + "Setting up libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 58%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libxcursor1:amd64 (1:1.2.0-2build4) ...\n", + "Setting up libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 59%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libnorm1:amd64 (1.5.9+dfsg-2) ...\n", + "Setting up libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 60%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", + "Setting up xkb-data (2.33-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 61%]\u001b[49m\u001b[39m [###################################.......................] \u001b8Setting up libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", + "Setting up libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", + "Setting up libxvidcore4:amd64 (2:1.3.7-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 62%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", + "Setting up libass9:amd64 (1:0.15.2-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 63%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libslang2:amd64 (2.3.2-5build4) ...\n", + "Setting up libva2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 64%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", + "Setting up libopus0:amd64 (1.3.1-0.1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 65%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up shared-mime-info (2.1-2) ...\n", + "Setting up libxinerama1:amd64 (2:1.1.4-3) ...\n", + "Setting up intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 66%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxv1:amd64 (2:1.0.11-1build2) ...\n", + "Setting up libvorbis0a:amd64 (1.3.7-1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 67%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxrandr2:amd64 (2:1.5.2-1build1) ...\n", + "Setting up libaacs0:amd64 (0.11.1-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 68%]\u001b[49m\u001b[39m [#######################################...................] \u001b8Setting up pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "Setting up libx265-199:amd64 (3.5-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 69%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libsndio7.0:amd64 (1.8.1-1.1) ...\n", + "Setting up libbdplus0:amd64 (0.2.0-1) ...\n", + "Setting up libvidstab1.1:amd64 (1.1.0-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 70%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libflite1:amd64 (2.2-3) ...\n", + "Setting up libva-drm2:amd64 (2.14.0-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 71%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libasyncns0:amd64 (0.8-6build2) ...\n", + "Setting up libvdpau1:amd64 (1.4-3build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 72%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", + "Setting up libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 73%]\u001b[49m\u001b[39m [##########################################................] \u001b8Setting up libzimg2:amd64 (3.0.3+ds1-1) ...\n", + "Setting up libopenal-data (1:1.19.1-2build3) ...\n", + "Setting up libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 74%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", + "Setting up libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 75%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", + "Setting up libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 76%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "Setting up libdav1d5:amd64 (0.9.2-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 77%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up libmfx1:amd64 (22.3.0-1) ...\n", + "Setting up libbluray2:amd64 (1:1.3.1-1) ...\n", + "Setting up libsamplerate0:amd64 (0.2.2-1build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 78%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libva-x11-2:amd64 (2.14.0-1) ...\n", + "Setting up libzvbi-common (0.2.35-19) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 79%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libmp3lame0:amd64 (3.100-3build2) ...\n", + "Setting up i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 80%]\u001b[49m\u001b[39m [##############################################............] \u001b8Setting up libvorbisenc2:amd64 (1.3.7-1build2) ...\n", + "Setting up libiec61883-0:amd64 (1.2.0-4build3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 81%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libserd-0-0:amd64 (0.30.10-2) ...\n", + "Setting up libxkbcommon0:amd64 (1.4.0-1) ...\n", + "Setting up libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 82%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libavc1394-0:amd64 (0.5.4-5build2) ...\n", + "Setting up mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 83%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libzvbi0:amd64 (0.2.35-19) ...\n", + "Setting up libzmq5:amd64 (4.3.4-2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 84%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", + "Setting up libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 85%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", + "Setting up libopenal1:amd64 (1:1.19.1-2build3) ...\n", + "Setting up libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 86%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "Setting up libvorbisfile3:amd64 (1.3.7-1build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 87%]\u001b[49m\u001b[39m [##################################################........] \u001b8Setting up va-driver-all:amd64 (2.14.0-1) ...\n", + "Setting up libdc1394-25:amd64 (2.2.6-4) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 88%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 89%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up librubberband2:amd64 (2.0.0-2) ...\n", + "Setting up libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", + "Setting up vdpau-driver-all:amd64 (1.4-3build2) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 90%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", + "Setting up libsord-0-0:amd64 (0.16.8-2) ...\n", + "Setting up libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 91%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libsratom-0-0:amd64 (0.6.8-1) ...\n", + "Setting up libdecor-0-0:amd64 (0.1.0-3build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 92%]\u001b[49m\u001b[39m [#####################################################.....] \u001b8Setting up libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 93%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up liblilv-0-0:amd64 (0.24.12-2) ...\n", + "Setting up libopenmpt0:amd64 (0.6.1-1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 94%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", + "Setting up libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 95%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 96%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libchromaprint1:amd64 (1.5.1-2) ...\n", + "Setting up libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 97%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 98%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "Setting up ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", + "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 99%]\u001b[49m\u001b[39m [#########################################################.] \u001b8Processing triggers for libc-bin (2.35-0ubuntu3.6) ...\n", + "Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", + "\n", + "\u001b7\u001b[0;24r\u001b8\u001b[1A\u001b[J" ] } ], From 94f3df98fd639527f74b5fe82c0881d77cb63cbc Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 16 Nov 2024 13:10:49 -0800 Subject: [PATCH 34/36] Revert Controller Prototype Notebook --- .../prototype_wingsail_controller.ipynb | 666 +----------------- 1 file changed, 24 insertions(+), 642 deletions(-) diff --git a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb index e0679eeff..391b0d5f7 100644 --- a/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb +++ b/notebooks/controller/wingsail_controller_prototype/prototype_wingsail_controller.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 19, "metadata": {}, "outputs": [ { @@ -17,653 +17,35 @@ "output_type": "stream", "text": [ "Defaulting to user installation because normal site-packages is not writeable\n", - "Requirement already satisfied: numpy in /usr/lib/python3/dist-packages (1.21.5)\n", - "Requirement already satisfied: scipy in /usr/lib/python3/dist-packages (1.8.0)\n", - "Requirement already satisfied: matplotlib in /usr/lib/python3/dist-packages (3.5.1)\n", - "Ign:1 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", - "Get:2 http://packages.ros.org/ros2/ubuntu jammy InRelease [4,682 B] \u001b[0m\n", - "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \u001b[0m \u001b[0m\u001b[33m\n", - "Get:4 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release [3,094 B]\n", - "Get:5 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB] \u001b[0m\u001b[33m\u001b[33m\n", - "Get:6 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB] \u001b[0m\n", - "Get:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release.gpg [866 B]m\n", - "Get:8 http://packages.ros.org/ros2/ubuntu jammy/main amd64 Packages [1,622 kB] \u001b[0m\u001b[33m\n", - "Get:9 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB] \u001b[0m\u001b[33m\u001b[33m\n", - "Get:10 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0/multiverse amd64 Packages [74.0 kB]\n", - "Get:11 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [3,200 kB]m\u001b[33m\u001b[33m\u001b[33m\n", - "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [2,648 kB]\n", - "Get:13 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [3,278 kB]\n", - "Get:14 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [2,372 kB]m\n", - "Get:15 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1,450 kB]\n", - "Get:16 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [81.4 kB]33m\u001b[33m\u001b[33m\u001b[33m\n", - "Get:17 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1,162 kB]\n", - "Get:18 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [33.7 kB]\n", - "Fetched 16.3 MB in 5s (3,032 kB/s) \u001b[0m \u001b[0m\u001b[33m\u001b[0m \u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", - "Reading package lists... Done\n", + "Requirement already satisfied: numpy in /home/ros/.local/lib/python3.10/site-packages (1.26.4)\n", + "Requirement already satisfied: scipy in /home/ros/.local/lib/python3.10/site-packages (1.12.0)\n", + "Requirement already satisfied: matplotlib in /home/ros/.local/lib/python3.10/site-packages (3.8.3)\n", + "Requirement already satisfied: packaging>=20.0 in /usr/lib/python3/dist-packages (from matplotlib) (21.3)\n", + "Requirement already satisfied: pillow>=8 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (10.2.0)\n", + "Requirement already satisfied: kiwisolver>=1.3.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.4.5)\n", + "Requirement already satisfied: python-dateutil>=2.7 in /usr/local/lib/python3.10/dist-packages (from matplotlib) (2.8.2)\n", + "Requirement already satisfied: cycler>=0.10 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (0.12.1)\n", + "Requirement already satisfied: fonttools>=4.22.0 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (4.49.0)\n", + "Requirement already satisfied: pyparsing>=2.3.1 in /usr/lib/python3/dist-packages (from matplotlib) (2.4.7)\n", + "Requirement already satisfied: contourpy>=1.0.1 in /home/ros/.local/lib/python3.10/site-packages (from matplotlib) (1.2.0)\n", + "Requirement already satisfied: six>=1.5 in /usr/lib/python3/dist-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", + "Hit:1 http://packages.ros.org/ros2/ubuntu jammy InRelease\n", + "Hit:2 http://security.ubuntu.com/ubuntu jammy-security InRelease \u001b[0m\u001b[33m\n", + "Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease \n", + "Hit:4 http://archive.ubuntu.com/ubuntu jammy-updates InRelease\n", + "Ign:5 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 InRelease\n", + "Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease\n", + "Hit:7 http://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 Release\n", + "Reading package lists... Done\u001b[33m\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "284 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", + "267 packages can be upgraded. Run 'apt list --upgradable' to see them.\n", "\u001b[1;33mW: \u001b[0mhttp://repo.mongodb.org/apt/ubuntu/dists/jammy/mongodb-org/6.0/Release.gpg: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.\u001b[0m\n", "Reading package lists... Done\n", "Building dependency tree... Done\n", "Reading state information... Done\n", - "The following additional packages will be installed:\n", - " i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1 libass9\n", - " libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", - " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", - " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", - " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", - " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", - " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", - " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", - " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", - " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", - " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", - " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", - " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", - " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", - " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", - " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", - " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", - " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", - " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", - " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", - "Suggested packages:\n", - " ffmpeg-doc i965-va-driver-shaders libcuda1 libnvcuvid1 libnvidia-encode1\n", - " libbluray-bdj jackd2 libportaudio2 opus-tools pulseaudio libraw1394-doc\n", - " librsvg2-bin xdg-utils serdi sndiod sordi speex libvdpau-va-gl1\n", - "The following NEW packages will be installed:\n", - " ffmpeg i965-va-driver intel-media-va-driver libaacs0 libaom3 libapparmor1\n", - " libass9 libasyncns0 libavc1394-0 libavcodec58 libavdevice58 libavfilter7\n", - " libavformat58 libavutil56 libbdplus0 libbluray2 libbs2b0 libcaca0\n", - " libcairo-gobject2 libcdio-cdda2 libcdio-paranoia2 libcdio19 libchromaprint1\n", - " libcodec2-1.0 libdav1d5 libdc1394-25 libdecor-0-0 libdecor-0-plugin-1-cairo\n", - " libflac8 libflite1 libgbm1 libgdk-pixbuf-2.0-0 libgdk-pixbuf2.0-bin\n", - " libgdk-pixbuf2.0-common libgme0 libgsm1 libiec61883-0 libigdgmm12\n", - " libjack-jackd2-0 liblilv-0-0 libmfx1 libmp3lame0 libmpg123-0 libmysofa1\n", - " libnorm1 libogg0 libopenal-data libopenal1 libopenmpt0 libopus0 libpgm-5.3-0\n", - " libpocketsphinx3 libpostproc55 libpulse0 librabbitmq4 libraw1394-11\n", - " librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsdl2-2.0-0\n", - " libserd-0-0 libshine3 libslang2 libsndfile1 libsndio7.0 libsord-0-0 libsoxr0\n", - " libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libssh-gcrypt-4\n", - " libswresample3 libswscale5 libtheora0 libtwolame0 libudfread0 libusb-1.0-0\n", - " libva-drm2 libva-x11-2 libva2 libvdpau1 libvidstab1.1 libvorbis0a\n", - " libvorbisenc2 libvorbisfile3 libvpx7 libwayland-client0 libwayland-cursor0\n", - " libwayland-egl1 libwayland-server0 libx264-163 libx265-199 libxcb-shape0\n", - " libxcursor1 libxinerama1 libxkbcommon0 libxrandr2 libxv1 libxvidcore4\n", - " libzimg2 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers\n", - " pocketsphinx-en-us shared-mime-info va-driver-all vdpau-driver-all xkb-data\n", - "0 upgraded, 112 newly installed, 0 to remove and 284 not upgraded.\n", - "Need to get 94.1 MB of archives.\n", - "After this operation, 249 MB of additional disk space will be used.\n", - "Get:1 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libapparmor1 amd64 3.0.4-2ubuntu2.4 [39.7 kB]\n", - "Get:2 http://archive.ubuntu.com/ubuntu jammy/main amd64 libslang2 amd64 2.3.2-5build4 [468 kB]\n", - "Get:3 http://archive.ubuntu.com/ubuntu jammy/main amd64 shared-mime-info amd64 2.1-2 [454 kB]\n", - "Get:4 http://archive.ubuntu.com/ubuntu jammy/main amd64 xkb-data all 2.33-1 [394 kB]\n", - "Get:5 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libusb-1.0-0 amd64 2:1.0.25-1ubuntu2 [52.7 kB]\n", - "Get:6 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaom3 amd64 3.3.0-1 [1,748 kB]\n", - "Get:7 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva2 amd64 2.14.0-1 [65.0 kB]\n", - "Get:8 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmfx1 amd64 22.3.0-1 [3,105 kB]\n", - "Get:9 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-drm2 amd64 2.14.0-1 [7,502 B]\n", - "Get:10 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libva-x11-2 amd64 2.14.0-1 [12.6 kB]\n", - "Get:11 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvdpau1 amd64 1.4-3build2 [27.0 kB]\n", - "Get:12 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavutil56 amd64 7:4.4.2-0ubuntu0.22.04.1 [290 kB]\n", - "Get:13 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libcodec2-1.0 amd64 1.0.1-3 [8,435 kB]\n", - "Get:14 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdav1d5 amd64 0.9.2-1 [463 kB]\u001b[33m\n", - "Get:15 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgsm1 amd64 1.0.19-1 [27.7 kB]\n", - "Get:16 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmp3lame0 amd64 3.100-3build2 [141 kB]\n", - "Get:17 http://archive.ubuntu.com/ubuntu jammy/main amd64 libopus0 amd64 1.3.1-0.1build2 [203 kB]\n", - "Get:18 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcairo-gobject2 amd64 1.16.0-5ubuntu2 [19.4 kB]\n", - "Get:19 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-common all 2.42.8+dfsg-1ubuntu0.3 [5,630 B]\n", - "Get:20 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf-2.0-0 amd64 2.42.8+dfsg-1ubuntu0.3 [148 kB]\n", - "Get:21 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-2 amd64 2.52.5+dfsg-3ubuntu0.2 [2,974 kB]\n", - "Get:22 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libshine3 amd64 3.1.1-2 [23.2 kB]\n", - "Get:23 http://archive.ubuntu.com/ubuntu jammy/main amd64 libspeex1 amd64 1.2~rc1.2-1.1ubuntu3 [57.9 kB]\n", - "Get:24 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsoxr0 amd64 0.1.3-4build2 [79.8 kB]\n", - "Get:25 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswresample3 amd64 7:4.4.2-0ubuntu0.22.04.1 [62.2 kB]\n", - "Get:26 http://archive.ubuntu.com/ubuntu jammy/main amd64 libogg0 amd64 1.3.5-0ubuntu3 [22.9 kB]\n", - "Get:27 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtheora0 amd64 1.1.1+dfsg.1-15ubuntu4 [209 kB]\n", - "Get:28 http://archive.ubuntu.com/ubuntu jammy/main amd64 libtwolame0 amd64 0.4.0-2build2 [52.5 kB]\n", - "Get:29 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbis0a amd64 1.3.7-1build2 [99.2 kB]\n", - "Get:30 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisenc2 amd64 1.3.7-1build2 [82.6 kB]\n", - "Get:31 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libvpx7 amd64 1.11.0-2ubuntu2.3 [1,078 kB]\n", - "Get:32 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx264-163 amd64 2:0.163.3060+git5db6aa6-2build1 [591 kB]\n", - "Get:33 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libx265-199 amd64 3.5-2 [1,170 kB]\n", - "Get:34 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libxvidcore4 amd64 2:1.3.7-1 [201 kB]\n", - "Get:35 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi-common all 0.2.35-19 [35.5 kB]\n", - "Get:36 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzvbi0 amd64 0.2.35-19 [262 kB]\n", - "Get:37 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavcodec58 amd64 7:4.4.2-0ubuntu0.22.04.1 [5,567 kB]\n", - "Get:38 http://archive.ubuntu.com/ubuntu jammy/main amd64 libraw1394-11 amd64 2.1.2-2build2 [27.0 kB]\n", - "Get:39 http://archive.ubuntu.com/ubuntu jammy/main amd64 libavc1394-0 amd64 0.5.4-5build2 [17.0 kB]\n", - "Get:40 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libass9 amd64 1:0.15.2-1 [97.5 kB]\n", - "Get:41 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libudfread0 amd64 1.1.2-1 [16.2 kB]\n", - "Get:42 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbluray2 amd64 1:1.3.1-1 [159 kB]\n", - "Get:43 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libchromaprint1 amd64 1.5.1-2 [28.4 kB]\n", - "Get:44 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libgme0 amd64 0.6.3-2 [127 kB]\n", - "Get:45 http://archive.ubuntu.com/ubuntu jammy/main amd64 libmpg123-0 amd64 1.29.3-1build1 [172 kB]\n", - "Get:46 http://archive.ubuntu.com/ubuntu jammy/main amd64 libvorbisfile3 amd64 1.3.7-1build2 [17.1 kB]\n", - "Get:47 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenmpt0 amd64 0.6.1-1 [592 kB]\n", - "Get:48 http://archive.ubuntu.com/ubuntu jammy/main amd64 librabbitmq4 amd64 0.10.0-1ubuntu2 [39.3 kB]\n", - "Get:49 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsrt1.4-gnutls amd64 1.4.4-4 [309 kB]\n", - "Get:50 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libssh-gcrypt-4 amd64 0.9.6-2ubuntu0.22.04.3 [223 kB]\n", - "Get:51 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libnorm1 amd64 1.5.9+dfsg-2 [221 kB]\n", - "Get:52 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpgm-5.3-0 amd64 5.3.128~dfsg-2 [161 kB]\n", - "Get:53 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzmq5 amd64 4.3.4-2 [256 kB]\n", - "Get:54 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavformat58 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,103 kB]\n", - "Get:55 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbs2b0 amd64 3.1.0+dfsg-2.2build1 [10.2 kB]\n", - "Get:56 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libflite1 amd64 2.2-3 [13.7 MB]\n", - "Get:57 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libserd-0-0 amd64 0.30.10-2 [40.8 kB]\u001b[33m\u001b[33m\n", - "Get:58 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsord-0-0 amd64 0.16.8-2 [21.2 kB]\n", - "Get:59 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsratom-0-0 amd64 0.6.8-1 [17.0 kB]\n", - "Get:60 http://archive.ubuntu.com/ubuntu jammy/universe amd64 liblilv-0-0 amd64 0.24.12-2 [42.8 kB]\n", - "Get:61 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libmysofa1 amd64 1.2.1~dfsg0-1 [1,157 kB]\n", - "Get:62 http://archive.ubuntu.com/ubuntu jammy/main amd64 libasyncns0 amd64 0.8-6build2 [12.8 kB]\n", - "Get:63 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libflac8 amd64 1.3.3-2ubuntu0.2 [111 kB]\n", - "Get:64 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsndfile1 amd64 1.0.31-2ubuntu0.1 [197 kB]\n", - "Get:65 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libpulse0 amd64 1:15.99.1+dfsg1-1ubuntu2.2 [298 kB]\n", - "Get:66 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsphinxbase3 amd64 0.8+5prealpha+1-13build1 [126 kB]\n", - "Get:67 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libpocketsphinx3 amd64 0.8.0+real5prealpha+1-14ubuntu1 [132 kB]\n", - "Get:68 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libpostproc55 amd64 7:4.4.2-0ubuntu0.22.04.1 [60.1 kB]\n", - "Get:69 http://archive.ubuntu.com/ubuntu jammy/main amd64 libsamplerate0 amd64 0.2.2-1build1 [1,359 kB]\n", - "Get:70 http://archive.ubuntu.com/ubuntu jammy/universe amd64 librubberband2 amd64 2.0.0-2 [90.0 kB]\n", - "Get:71 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libswscale5 amd64 7:4.4.2-0ubuntu0.22.04.1 [180 kB]\n", - "Get:72 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libvidstab1.1 amd64 1.1.0-2 [35.0 kB]\n", - "Get:73 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libzimg2 amd64 3.0.3+ds1-1 [241 kB]\n", - "Get:74 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavfilter7 amd64 7:4.4.2-0ubuntu0.22.04.1 [1,496 kB]\n", - "Get:75 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcaca0 amd64 0.99.beta19-2.2ubuntu4 [224 kB]\n", - "Get:76 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libcdio19 amd64 2.1.0-3ubuntu0.2 [63.6 kB]\n", - "Get:77 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-cdda2 amd64 10.2+2.0.0-1build3 [16.7 kB]\n", - "Get:78 http://archive.ubuntu.com/ubuntu jammy/main amd64 libcdio-paranoia2 amd64 10.2+2.0.0-1build3 [15.9 kB]\n", - "Get:79 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libdc1394-25 amd64 2.2.6-4 [88.8 kB]\n", - "Get:80 http://archive.ubuntu.com/ubuntu jammy/main amd64 libiec61883-0 amd64 1.2.0-4build3 [25.9 kB]\n", - "Get:81 http://archive.ubuntu.com/ubuntu jammy/main amd64 libjack-jackd2-0 amd64 1.9.20~dfsg-1 [293 kB]\n", - "Get:82 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal-data all 1:1.19.1-2build3 [164 kB]\n", - "Get:83 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libsndio7.0 amd64 1.8.1-1.1 [29.3 kB]\n", - "Get:84 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libopenal1 amd64 1:1.19.1-2build3 [535 kB]\n", - "Get:85 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-client0 amd64 1.20.0-1ubuntu0.1 [25.9 kB]\n", - "Get:86 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-0 amd64 0.1.0-3build1 [15.1 kB]\n", - "Get:87 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-server0 amd64 1.20.0-1ubuntu0.1 [34.3 kB]\n", - "Get:88 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgbm1 amd64 23.2.1-1ubuntu3.1~22.04.2 [33.5 kB]\n", - "Get:89 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-cursor0 amd64 1.20.0-1ubuntu0.1 [10.7 kB]\n", - "Get:90 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libwayland-egl1 amd64 1.20.0-1ubuntu0.1 [5,582 B]\n", - "Get:91 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcursor1 amd64 1:1.2.0-2build4 [20.9 kB]\n", - "Get:92 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxinerama1 amd64 2:1.1.4-3 [7,382 B]\n", - "Get:93 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxkbcommon0 amd64 1.4.0-1 [125 kB]\n", - "Get:94 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxrandr2 amd64 2:1.5.2-1build1 [20.4 kB]\n", - "Get:95 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libsdl2-2.0-0 amd64 2.0.20+dfsg-2ubuntu1.22.04.1 [582 kB]\n", - "Get:96 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxcb-shape0 amd64 1.14-3ubuntu3 [6,158 B]\n", - "Get:97 http://archive.ubuntu.com/ubuntu jammy/main amd64 libxv1 amd64 2:1.0.11-1build2 [11.2 kB]\n", - "Get:98 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 libavdevice58 amd64 7:4.4.2-0ubuntu0.22.04.1 [87.5 kB]\n", - "Get:99 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 ffmpeg amd64 7:4.4.2-0ubuntu0.22.04.1 [1,696 kB]\n", - "Get:100 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libigdgmm12 amd64 22.1.2+ds1-1 [139 kB]\n", - "Get:101 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 intel-media-va-driver amd64 22.3.1+dfsg1-1ubuntu2 [2,283 kB]\n", - "Get:102 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libaacs0 amd64 0.11.1-1 [64.1 kB]\n", - "Get:103 http://archive.ubuntu.com/ubuntu jammy/universe amd64 libbdplus0 amd64 0.2.0-1 [52.2 kB]\n", - "Get:104 http://archive.ubuntu.com/ubuntu jammy/main amd64 libdecor-0-plugin-1-cairo amd64 0.1.0-3build1 [20.4 kB]\n", - "Get:105 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 libgdk-pixbuf2.0-bin amd64 2.42.8+dfsg-1ubuntu0.3 [14.2 kB]\n", - "Get:106 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 librsvg2-common amd64 2.52.5+dfsg-3ubuntu0.2 [17.7 kB]\n", - "Get:107 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 mesa-va-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [4,100 kB]\n", - "Get:108 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 mesa-vdpau-drivers amd64 23.2.1-1ubuntu3.1~22.04.2 [3,820 kB]\n", - "Get:109 http://archive.ubuntu.com/ubuntu jammy/universe amd64 i965-va-driver amd64 2.4.1+dfsg1-1 [302 kB]\n", - "Get:110 http://archive.ubuntu.com/ubuntu jammy/universe amd64 va-driver-all amd64 2.14.0-1 [3,984 B]\n", - "Get:111 http://archive.ubuntu.com/ubuntu jammy/main amd64 vdpau-driver-all amd64 1.4-3build2 [4,510 B]\n", - "Get:112 http://archive.ubuntu.com/ubuntu jammy/universe amd64 pocketsphinx-en-us all 0.8.0+real5prealpha+1-14ubuntu1 [27.6 MB]\n", - "Fetched 94.1 MB in 1min 18s (1,203 kB/s) \u001b[0m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\u001b[33m\n", - "debconf: delaying package configuration, since apt-utils is not installed\n", - "\n", - "\u001b7\u001b[0;23r\u001b8\u001b[1ASelecting previously unselected package libapparmor1:amd64.\n", - "(Reading database ... 76399 files and directories currently installed.)\n", - "Preparing to unpack .../000-libapparmor1_3.0.4-2ubuntu2.4_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 0%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", - "Selecting previously unselected package libslang2:amd64.\n", - "Preparing to unpack .../001-libslang2_2.3.2-5build4_amd64.deb ...\n", - "Unpacking libslang2:amd64 (2.3.2-5build4) ...\n", - "Selecting previously unselected package shared-mime-info.\n", - "Preparing to unpack .../002-shared-mime-info_2.1-2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 1%]\u001b[49m\u001b[39m [..........................................................] \u001b8Unpacking shared-mime-info (2.1-2) ...\n", - "Selecting previously unselected package xkb-data.\n", - "Preparing to unpack .../003-xkb-data_2.33-1_all.deb ...\n", - "Unpacking xkb-data (2.33-1) ...\n", - "Selecting previously unselected package libusb-1.0-0:amd64.\n", - "Preparing to unpack .../004-libusb-1.0-0_2%3a1.0.25-1ubuntu2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 2%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Unpacking libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", - "Selecting previously unselected package libaom3:amd64.\n", - "Preparing to unpack .../005-libaom3_3.3.0-1_amd64.deb ...\n", - "Unpacking libaom3:amd64 (3.3.0-1) ...\n", - "Selecting previously unselected package libva2:amd64.\n", - "Preparing to unpack .../006-libva2_2.14.0-1_amd64.deb ...\n", - "Unpacking libva2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 3%]\u001b[49m\u001b[39m [#.........................................................] \u001b8Selecting previously unselected package libmfx1:amd64.\n", - "Preparing to unpack .../007-libmfx1_22.3.0-1_amd64.deb ...\n", - "Unpacking libmfx1:amd64 (22.3.0-1) ...\n", - "Selecting previously unselected package libva-drm2:amd64.\n", - "Preparing to unpack .../008-libva-drm2_2.14.0-1_amd64.deb ...\n", - "Unpacking libva-drm2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 4%]\u001b[49m\u001b[39m [##........................................................] \u001b8Selecting previously unselected package libva-x11-2:amd64.\n", - "Preparing to unpack .../009-libva-x11-2_2.14.0-1_amd64.deb ...\n", - "Unpacking libva-x11-2:amd64 (2.14.0-1) ...\n", - "Selecting previously unselected package libvdpau1:amd64.\n", - "Preparing to unpack .../010-libvdpau1_1.4-3build2_amd64.deb ...\n", - "Unpacking libvdpau1:amd64 (1.4-3build2) ...\n", - "Selecting previously unselected package libavutil56:amd64.\n", - "Preparing to unpack .../011-libavutil56_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 5%]\u001b[49m\u001b[39m [##........................................................] \u001b8Unpacking libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libcodec2-1.0:amd64.\n", - "Preparing to unpack .../012-libcodec2-1.0_1.0.1-3_amd64.deb ...\n", - "Unpacking libcodec2-1.0:amd64 (1.0.1-3) ...\n", - "Selecting previously unselected package libdav1d5:amd64.\n", - "Preparing to unpack .../013-libdav1d5_0.9.2-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 6%]\u001b[49m\u001b[39m [###.......................................................] \u001b8Unpacking libdav1d5:amd64 (0.9.2-1) ...\n", - "Selecting previously unselected package libgsm1:amd64.\n", - "Preparing to unpack .../014-libgsm1_1.0.19-1_amd64.deb ...\n", - "Unpacking libgsm1:amd64 (1.0.19-1) ...\n", - "Selecting previously unselected package libmp3lame0:amd64.\n", - "Preparing to unpack .../015-libmp3lame0_3.100-3build2_amd64.deb ...\n", - "Unpacking libmp3lame0:amd64 (3.100-3build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 7%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libopus0:amd64.\n", - "Preparing to unpack .../016-libopus0_1.3.1-0.1build2_amd64.deb ...\n", - "Unpacking libopus0:amd64 (1.3.1-0.1build2) ...\n", - "Selecting previously unselected package libcairo-gobject2:amd64.\n", - "Preparing to unpack .../017-libcairo-gobject2_1.16.0-5ubuntu2_amd64.deb ...\n", - "Unpacking libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 8%]\u001b[49m\u001b[39m [####......................................................] \u001b8Selecting previously unselected package libgdk-pixbuf2.0-common.\n", - "Preparing to unpack .../018-libgdk-pixbuf2.0-common_2.42.8+dfsg-1ubuntu0.3_all.deb ...\n", - "Unpacking libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Selecting previously unselected package libgdk-pixbuf-2.0-0:amd64.\n", - "Preparing to unpack .../019-libgdk-pixbuf-2.0-0_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", - "Unpacking libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Selecting previously unselected package librsvg2-2:amd64.\n", - "Preparing to unpack .../020-librsvg2-2_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 9%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "Selecting previously unselected package libshine3:amd64.\n", - "Preparing to unpack .../021-libshine3_3.1.1-2_amd64.deb ...\n", - "Unpacking libshine3:amd64 (3.1.1-2) ...\n", - "Selecting previously unselected package libspeex1:amd64.\n", - "Preparing to unpack .../022-libspeex1_1.2~rc1.2-1.1ubuntu3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 10%]\u001b[49m\u001b[39m [#####.....................................................] \u001b8Unpacking libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", - "Selecting previously unselected package libsoxr0:amd64.\n", - "Preparing to unpack .../023-libsoxr0_0.1.3-4build2_amd64.deb ...\n", - "Unpacking libsoxr0:amd64 (0.1.3-4build2) ...\n", - "Selecting previously unselected package libswresample3:amd64.\n", - "Preparing to unpack .../024-libswresample3_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 11%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libogg0:amd64.\n", - "Preparing to unpack .../025-libogg0_1.3.5-0ubuntu3_amd64.deb ...\n", - "Unpacking libogg0:amd64 (1.3.5-0ubuntu3) ...\n", - "Selecting previously unselected package libtheora0:amd64.\n", - "Preparing to unpack .../026-libtheora0_1.1.1+dfsg.1-15ubuntu4_amd64.deb ...\n", - "Unpacking libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 12%]\u001b[49m\u001b[39m [######....................................................] \u001b8Selecting previously unselected package libtwolame0:amd64.\n", - "Preparing to unpack .../027-libtwolame0_0.4.0-2build2_amd64.deb ...\n", - "Unpacking libtwolame0:amd64 (0.4.0-2build2) ...\n", - "Selecting previously unselected package libvorbis0a:amd64.\n", - "Preparing to unpack .../028-libvorbis0a_1.3.7-1build2_amd64.deb ...\n", - "Unpacking libvorbis0a:amd64 (1.3.7-1build2) ...\n", - "Selecting previously unselected package libvorbisenc2:amd64.\n", - "Preparing to unpack .../029-libvorbisenc2_1.3.7-1build2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 13%]\u001b[49m\u001b[39m [#######...................................................] \u001b8Unpacking libvorbisenc2:amd64 (1.3.7-1build2) ...\n", - "Selecting previously unselected package libvpx7:amd64.\n", - "Preparing to unpack .../030-libvpx7_1.11.0-2ubuntu2.3_amd64.deb ...\n", - "Unpacking libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", - "Selecting previously unselected package libx264-163:amd64.\n", - "Preparing to unpack .../031-libx264-163_2%3a0.163.3060+git5db6aa6-2build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 14%]\u001b[49m\u001b[39m [########..................................................] \u001b8Unpacking libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", - "Selecting previously unselected package libx265-199:amd64.\n", - "Preparing to unpack .../032-libx265-199_3.5-2_amd64.deb ...\n", - "Unpacking libx265-199:amd64 (3.5-2) ...\n", - "Selecting previously unselected package libxvidcore4:amd64.\n", - "Preparing to unpack .../033-libxvidcore4_2%3a1.3.7-1_amd64.deb ...\n", - "Unpacking libxvidcore4:amd64 (2:1.3.7-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 15%]\u001b[49m\u001b[39m [########..................................................] \u001b8Selecting previously unselected package libzvbi-common.\n", - "Preparing to unpack .../034-libzvbi-common_0.2.35-19_all.deb ...\n", - "Unpacking libzvbi-common (0.2.35-19) ...\n", - "Selecting previously unselected package libzvbi0:amd64.\n", - "Preparing to unpack .../035-libzvbi0_0.2.35-19_amd64.deb ...\n", - "Unpacking libzvbi0:amd64 (0.2.35-19) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 16%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Selecting previously unselected package libavcodec58:amd64.\n", - "Preparing to unpack .../036-libavcodec58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libraw1394-11:amd64.\n", - "Preparing to unpack .../037-libraw1394-11_2.1.2-2build2_amd64.deb ...\n", - "Unpacking libraw1394-11:amd64 (2.1.2-2build2) ...\n", - "Selecting previously unselected package libavc1394-0:amd64.\n", - "Preparing to unpack .../038-libavc1394-0_0.5.4-5build2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 17%]\u001b[49m\u001b[39m [#########.................................................] \u001b8Unpacking libavc1394-0:amd64 (0.5.4-5build2) ...\n", - "Selecting previously unselected package libass9:amd64.\n", - "Preparing to unpack .../039-libass9_1%3a0.15.2-1_amd64.deb ...\n", - "Unpacking libass9:amd64 (1:0.15.2-1) ...\n", - "Selecting previously unselected package libudfread0:amd64.\n", - "Preparing to unpack .../040-libudfread0_1.1.2-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 18%]\u001b[49m\u001b[39m [##########................................................] \u001b8Unpacking libudfread0:amd64 (1.1.2-1) ...\n", - "Selecting previously unselected package libbluray2:amd64.\n", - "Preparing to unpack .../041-libbluray2_1%3a1.3.1-1_amd64.deb ...\n", - "Unpacking libbluray2:amd64 (1:1.3.1-1) ...\n", - "Selecting previously unselected package libchromaprint1:amd64.\n", - "Preparing to unpack .../042-libchromaprint1_1.5.1-2_amd64.deb ...\n", - "Unpacking libchromaprint1:amd64 (1.5.1-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 19%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libgme0:amd64.\n", - "Preparing to unpack .../043-libgme0_0.6.3-2_amd64.deb ...\n", - "Unpacking libgme0:amd64 (0.6.3-2) ...\n", - "Selecting previously unselected package libmpg123-0:amd64.\n", - "Preparing to unpack .../044-libmpg123-0_1.29.3-1build1_amd64.deb ...\n", - "Unpacking libmpg123-0:amd64 (1.29.3-1build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 20%]\u001b[49m\u001b[39m [###########...............................................] \u001b8Selecting previously unselected package libvorbisfile3:amd64.\n", - "Preparing to unpack .../045-libvorbisfile3_1.3.7-1build2_amd64.deb ...\n", - "Unpacking libvorbisfile3:amd64 (1.3.7-1build2) ...\n", - "Selecting previously unselected package libopenmpt0:amd64.\n", - "Preparing to unpack .../046-libopenmpt0_0.6.1-1_amd64.deb ...\n", - "Unpacking libopenmpt0:amd64 (0.6.1-1) ...\n", - "Selecting previously unselected package librabbitmq4:amd64.\n", - "Preparing to unpack .../047-librabbitmq4_0.10.0-1ubuntu2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 21%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", - "Selecting previously unselected package libsrt1.4-gnutls:amd64.\n", - "Preparing to unpack .../048-libsrt1.4-gnutls_1.4.4-4_amd64.deb ...\n", - "Unpacking libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", - "Selecting previously unselected package libssh-gcrypt-4:amd64.\n", - "Preparing to unpack .../049-libssh-gcrypt-4_0.9.6-2ubuntu0.22.04.3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 22%]\u001b[49m\u001b[39m [############..............................................] \u001b8Unpacking libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", - "Selecting previously unselected package libnorm1:amd64.\n", - "Preparing to unpack .../050-libnorm1_1.5.9+dfsg-2_amd64.deb ...\n", - "Unpacking libnorm1:amd64 (1.5.9+dfsg-2) ...\n", - "Selecting previously unselected package libpgm-5.3-0:amd64.\n", - "Preparing to unpack .../051-libpgm-5.3-0_5.3.128~dfsg-2_amd64.deb ...\n", - "Unpacking libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 23%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libzmq5:amd64.\n", - "Preparing to unpack .../052-libzmq5_4.3.4-2_amd64.deb ...\n", - "Unpacking libzmq5:amd64 (4.3.4-2) ...\n", - "Selecting previously unselected package libavformat58:amd64.\n", - "Preparing to unpack .../053-libavformat58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 24%]\u001b[49m\u001b[39m [#############.............................................] \u001b8Selecting previously unselected package libbs2b0:amd64.\n", - "Preparing to unpack .../054-libbs2b0_3.1.0+dfsg-2.2build1_amd64.deb ...\n", - "Unpacking libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", - "Selecting previously unselected package libflite1:amd64.\n", - "Preparing to unpack .../055-libflite1_2.2-3_amd64.deb ...\n", - "Unpacking libflite1:amd64 (2.2-3) ...\n", - "Selecting previously unselected package libserd-0-0:amd64.\n", - "Preparing to unpack .../056-libserd-0-0_0.30.10-2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 25%]\u001b[49m\u001b[39m [##############............................................] \u001b8Unpacking libserd-0-0:amd64 (0.30.10-2) ...\n", - "Selecting previously unselected package libsord-0-0:amd64.\n", - "Preparing to unpack .../057-libsord-0-0_0.16.8-2_amd64.deb ...\n", - "Unpacking libsord-0-0:amd64 (0.16.8-2) ...\n", - "Selecting previously unselected package libsratom-0-0:amd64.\n", - "Preparing to unpack .../058-libsratom-0-0_0.6.8-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 26%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Unpacking libsratom-0-0:amd64 (0.6.8-1) ...\n", - "Selecting previously unselected package liblilv-0-0:amd64.\n", - "Preparing to unpack .../059-liblilv-0-0_0.24.12-2_amd64.deb ...\n", - "Unpacking liblilv-0-0:amd64 (0.24.12-2) ...\n", - "Selecting previously unselected package libmysofa1:amd64.\n", - "Preparing to unpack .../060-libmysofa1_1.2.1~dfsg0-1_amd64.deb ...\n", - "Unpacking libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 27%]\u001b[49m\u001b[39m [###############...........................................] \u001b8Selecting previously unselected package libasyncns0:amd64.\n", - "Preparing to unpack .../061-libasyncns0_0.8-6build2_amd64.deb ...\n", - "Unpacking libasyncns0:amd64 (0.8-6build2) ...\n", - "Selecting previously unselected package libflac8:amd64.\n", - "Preparing to unpack .../062-libflac8_1.3.3-2ubuntu0.2_amd64.deb ...\n", - "Unpacking libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 28%]\u001b[49m\u001b[39m [################..........................................] \u001b8Selecting previously unselected package libsndfile1:amd64.\n", - "Preparing to unpack .../063-libsndfile1_1.0.31-2ubuntu0.1_amd64.deb ...\n", - "Unpacking libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", - "Selecting previously unselected package libpulse0:amd64.\n", - "Preparing to unpack .../064-libpulse0_1%3a15.99.1+dfsg1-1ubuntu2.2_amd64.deb ...\n", - "Unpacking libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", - "Selecting previously unselected package libsphinxbase3:amd64.\n", - "Preparing to unpack .../065-libsphinxbase3_0.8+5prealpha+1-13build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 29%]\u001b[49m\u001b[39m [################..........................................] \u001b8Unpacking libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", - "Selecting previously unselected package libpocketsphinx3:amd64.\n", - "Preparing to unpack .../066-libpocketsphinx3_0.8.0+real5prealpha+1-14ubuntu1_amd64.deb ...\n", - "Unpacking libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "Selecting previously unselected package libpostproc55:amd64.\n", - "Preparing to unpack .../067-libpostproc55_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 30%]\u001b[49m\u001b[39m [#################.........................................] \u001b8Unpacking libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libsamplerate0:amd64.\n", - "Preparing to unpack .../068-libsamplerate0_0.2.2-1build1_amd64.deb ...\n", - "Unpacking libsamplerate0:amd64 (0.2.2-1build1) ...\n", - "Selecting previously unselected package librubberband2:amd64.\n", - "Preparing to unpack .../069-librubberband2_2.0.0-2_amd64.deb ...\n", - "Unpacking librubberband2:amd64 (2.0.0-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 31%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libswscale5:amd64.\n", - "Preparing to unpack .../070-libswscale5_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libvidstab1.1:amd64.\n", - "Preparing to unpack .../071-libvidstab1.1_1.1.0-2_amd64.deb ...\n", - "Unpacking libvidstab1.1:amd64 (1.1.0-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 32%]\u001b[49m\u001b[39m [##################........................................] \u001b8Selecting previously unselected package libzimg2:amd64.\n", - "Preparing to unpack .../072-libzimg2_3.0.3+ds1-1_amd64.deb ...\n", - "Unpacking libzimg2:amd64 (3.0.3+ds1-1) ...\n", - "Selecting previously unselected package libavfilter7:amd64.\n", - "Preparing to unpack .../073-libavfilter7_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package libcaca0:amd64.\n", - "Preparing to unpack .../074-libcaca0_0.99.beta19-2.2ubuntu4_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 33%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", - "Selecting previously unselected package libcdio19:amd64.\n", - "Preparing to unpack .../075-libcdio19_2.1.0-3ubuntu0.2_amd64.deb ...\n", - "Unpacking libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", - "Selecting previously unselected package libcdio-cdda2:amd64.\n", - "Preparing to unpack .../076-libcdio-cdda2_10.2+2.0.0-1build3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 34%]\u001b[49m\u001b[39m [###################.......................................] \u001b8Unpacking libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", - "Selecting previously unselected package libcdio-paranoia2:amd64.\n", - "Preparing to unpack .../077-libcdio-paranoia2_10.2+2.0.0-1build3_amd64.deb ...\n", - "Unpacking libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", - "Selecting previously unselected package libdc1394-25:amd64.\n", - "Preparing to unpack .../078-libdc1394-25_2.2.6-4_amd64.deb ...\n", - "Unpacking libdc1394-25:amd64 (2.2.6-4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 35%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libiec61883-0:amd64.\n", - "Preparing to unpack .../079-libiec61883-0_1.2.0-4build3_amd64.deb ...\n", - "Unpacking libiec61883-0:amd64 (1.2.0-4build3) ...\n", - "Selecting previously unselected package libjack-jackd2-0:amd64.\n", - "Preparing to unpack .../080-libjack-jackd2-0_1.9.20~dfsg-1_amd64.deb ...\n", - "Unpacking libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 36%]\u001b[49m\u001b[39m [####################......................................] \u001b8Selecting previously unselected package libopenal-data.\n", - "Preparing to unpack .../081-libopenal-data_1%3a1.19.1-2build3_all.deb ...\n", - "Unpacking libopenal-data (1:1.19.1-2build3) ...\n", - "Selecting previously unselected package libsndio7.0:amd64.\n", - "Preparing to unpack .../082-libsndio7.0_1.8.1-1.1_amd64.deb ...\n", - "Unpacking libsndio7.0:amd64 (1.8.1-1.1) ...\n", - "Selecting previously unselected package libopenal1:amd64.\n", - "Preparing to unpack .../083-libopenal1_1%3a1.19.1-2build3_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 37%]\u001b[49m\u001b[39m [#####################.....................................] \u001b8Unpacking libopenal1:amd64 (1:1.19.1-2build3) ...\n", - "Selecting previously unselected package libwayland-client0:amd64.\n", - "Preparing to unpack .../084-libwayland-client0_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Selecting previously unselected package libdecor-0-0:amd64.\n", - "Preparing to unpack .../085-libdecor-0-0_0.1.0-3build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 38%]\u001b[49m\u001b[39m [######################....................................] \u001b8Unpacking libdecor-0-0:amd64 (0.1.0-3build1) ...\n", - "Selecting previously unselected package libwayland-server0:amd64.\n", - "Preparing to unpack .../086-libwayland-server0_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Selecting previously unselected package libgbm1:amd64.\n", - "Preparing to unpack .../087-libgbm1_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", - "Unpacking libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 39%]\u001b[49m\u001b[39m [######################....................................] \u001b8Selecting previously unselected package libwayland-cursor0:amd64.\n", - "Preparing to unpack .../088-libwayland-cursor0_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Selecting previously unselected package libwayland-egl1:amd64.\n", - "Preparing to unpack .../089-libwayland-egl1_1.20.0-1ubuntu0.1_amd64.deb ...\n", - "Unpacking libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 40%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Selecting previously unselected package libxcursor1:amd64.\n", - "Preparing to unpack .../090-libxcursor1_1%3a1.2.0-2build4_amd64.deb ...\n", - "Unpacking libxcursor1:amd64 (1:1.2.0-2build4) ...\n", - "Selecting previously unselected package libxinerama1:amd64.\n", - "Preparing to unpack .../091-libxinerama1_2%3a1.1.4-3_amd64.deb ...\n", - "Unpacking libxinerama1:amd64 (2:1.1.4-3) ...\n", - "Selecting previously unselected package libxkbcommon0:amd64.\n", - "Preparing to unpack .../092-libxkbcommon0_1.4.0-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 41%]\u001b[49m\u001b[39m [#######################...................................] \u001b8Unpacking libxkbcommon0:amd64 (1.4.0-1) ...\n", - "Selecting previously unselected package libxrandr2:amd64.\n", - "Preparing to unpack .../093-libxrandr2_2%3a1.5.2-1build1_amd64.deb ...\n", - "Unpacking libxrandr2:amd64 (2:1.5.2-1build1) ...\n", - "Selecting previously unselected package libsdl2-2.0-0:amd64.\n", - "Preparing to unpack .../094-libsdl2-2.0-0_2.0.20+dfsg-2ubuntu1.22.04.1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 42%]\u001b[49m\u001b[39m [########################..................................] \u001b8Unpacking libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", - "Selecting previously unselected package libxcb-shape0:amd64.\n", - "Preparing to unpack .../095-libxcb-shape0_1.14-3ubuntu3_amd64.deb ...\n", - "Unpacking libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", - "Selecting previously unselected package libxv1:amd64.\n", - "Preparing to unpack .../096-libxv1_2%3a1.0.11-1build2_amd64.deb ...\n", - "Unpacking libxv1:amd64 (2:1.0.11-1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 43%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libavdevice58:amd64.\n", - "Preparing to unpack .../097-libavdevice58_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Selecting previously unselected package ffmpeg.\n", - "Preparing to unpack .../098-ffmpeg_7%3a4.4.2-0ubuntu0.22.04.1_amd64.deb ...\n", - "Unpacking ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 44%]\u001b[49m\u001b[39m [#########################.................................] \u001b8Selecting previously unselected package libigdgmm12:amd64.\n", - "Preparing to unpack .../099-libigdgmm12_22.1.2+ds1-1_amd64.deb ...\n", - "Unpacking libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", - "Selecting previously unselected package intel-media-va-driver:amd64.\n", - "Preparing to unpack .../100-intel-media-va-driver_22.3.1+dfsg1-1ubuntu2_amd64.deb ...\n", - "Unpacking intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", - "Selecting previously unselected package libaacs0:amd64.\n", - "Preparing to unpack .../101-libaacs0_0.11.1-1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 45%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libaacs0:amd64 (0.11.1-1) ...\n", - "Selecting previously unselected package libbdplus0:amd64.\n", - "Preparing to unpack .../102-libbdplus0_0.2.0-1_amd64.deb ...\n", - "Unpacking libbdplus0:amd64 (0.2.0-1) ...\n", - "Selecting previously unselected package libdecor-0-plugin-1-cairo:amd64.\n", - "Preparing to unpack .../103-libdecor-0-plugin-1-cairo_0.1.0-3build1_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 46%]\u001b[49m\u001b[39m [##########################................................] \u001b8Unpacking libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", - "Selecting previously unselected package libgdk-pixbuf2.0-bin.\n", - "Preparing to unpack .../104-libgdk-pixbuf2.0-bin_2.42.8+dfsg-1ubuntu0.3_amd64.deb ...\n", - "Unpacking libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Selecting previously unselected package librsvg2-common:amd64.\n", - "Preparing to unpack .../105-librsvg2-common_2.52.5+dfsg-3ubuntu0.2_amd64.deb ...\n", - "Unpacking librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 47%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package mesa-va-drivers:amd64.\n", - "Preparing to unpack .../106-mesa-va-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", - "Unpacking mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "Selecting previously unselected package mesa-vdpau-drivers:amd64.\n", - "Preparing to unpack .../107-mesa-vdpau-drivers_23.2.1-1ubuntu3.1~22.04.2_amd64.deb ...\n", - "Unpacking mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 48%]\u001b[49m\u001b[39m [###########################...............................] \u001b8Selecting previously unselected package i965-va-driver:amd64.\n", - "Preparing to unpack .../108-i965-va-driver_2.4.1+dfsg1-1_amd64.deb ...\n", - "Unpacking i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", - "Selecting previously unselected package va-driver-all:amd64.\n", - "Preparing to unpack .../109-va-driver-all_2.14.0-1_amd64.deb ...\n", - "Unpacking va-driver-all:amd64 (2.14.0-1) ...\n", - "Selecting previously unselected package vdpau-driver-all:amd64.\n", - "Preparing to unpack .../110-vdpau-driver-all_1.4-3build2_amd64.deb ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 49%]\u001b[49m\u001b[39m [############################..............................] \u001b8Unpacking vdpau-driver-all:amd64 (1.4-3build2) ...\n", - "Selecting previously unselected package pocketsphinx-en-us.\n", - "Preparing to unpack .../111-pocketsphinx-en-us_0.8.0+real5prealpha+1-14ubuntu1_all.deb ...\n", - "Unpacking pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "Setting up libgme0:amd64 (0.6.3-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 50%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libssh-gcrypt-4:amd64 (0.9.6-2ubuntu0.22.04.3) ...\n", - "Setting up libsrt1.4-gnutls:amd64 (1.4.4-4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 51%]\u001b[49m\u001b[39m [#############################.............................] \u001b8Setting up libudfread0:amd64 (1.1.2-1) ...\n", - "Setting up libwayland-server0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 52%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libaom3:amd64 (3.3.0-1) ...\n", - "Setting up librabbitmq4:amd64 (0.10.0-1ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 53%]\u001b[49m\u001b[39m [##############################............................] \u001b8Setting up libraw1394-11:amd64 (2.1.2-2build2) ...\n", - "Setting up libapparmor1:amd64 (3.0.4-2ubuntu2.4) ...\n", - "Setting up libcodec2-1.0:amd64 (1.0.1-3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 54%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libmpg123-0:amd64 (1.29.3-1build1) ...\n", - "Setting up libogg0:amd64 (1.3.5-0ubuntu3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 55%]\u001b[49m\u001b[39m [###############################...........................] \u001b8Setting up libspeex1:amd64 (1.2~rc1.2-1.1ubuntu3) ...\n", - "Setting up libshine3:amd64 (3.1.1-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 56%]\u001b[49m\u001b[39m [################################..........................] \u001b8Setting up libtwolame0:amd64 (0.4.0-2build2) ...\n", - "Setting up libgbm1:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 57%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libgsm1:amd64 (1.0.19-1) ...\n", - "Setting up libsoxr0:amd64 (0.1.3-4build2) ...\n", - "Setting up libpgm-5.3-0:amd64 (5.3.128~dfsg-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 58%]\u001b[49m\u001b[39m [#################################.........................] \u001b8Setting up libxcursor1:amd64 (1:1.2.0-2build4) ...\n", - "Setting up libgdk-pixbuf2.0-common (2.42.8+dfsg-1ubuntu0.3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 59%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libnorm1:amd64 (1.5.9+dfsg-2) ...\n", - "Setting up libmysofa1:amd64 (1.2.1~dfsg0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 60%]\u001b[49m\u001b[39m [##################################........................] \u001b8Setting up libxcb-shape0:amd64 (1.14-3ubuntu3) ...\n", - "Setting up xkb-data (2.33-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 61%]\u001b[49m\u001b[39m [###################################.......................] \u001b8Setting up libigdgmm12:amd64 (22.1.2+ds1-1) ...\n", - "Setting up libcdio19:amd64 (2.1.0-3ubuntu0.2) ...\n", - "Setting up libxvidcore4:amd64 (2:1.3.7-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 62%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libflac8:amd64 (1.3.3-2ubuntu0.2) ...\n", - "Setting up libass9:amd64 (1:0.15.2-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 63%]\u001b[49m\u001b[39m [####################################......................] \u001b8Setting up libslang2:amd64 (2.3.2-5build4) ...\n", - "Setting up libva2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 64%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up libx264-163:amd64 (2:0.163.3060+git5db6aa6-2build1) ...\n", - "Setting up libopus0:amd64 (1.3.1-0.1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 65%]\u001b[49m\u001b[39m [#####################################.....................] \u001b8Setting up shared-mime-info (2.1-2) ...\n", - "Setting up libxinerama1:amd64 (2:1.1.4-3) ...\n", - "Setting up intel-media-va-driver:amd64 (22.3.1+dfsg1-1ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 66%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxv1:amd64 (2:1.0.11-1build2) ...\n", - "Setting up libvorbis0a:amd64 (1.3.7-1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 67%]\u001b[49m\u001b[39m [######################################....................] \u001b8Setting up libxrandr2:amd64 (2:1.5.2-1build1) ...\n", - "Setting up libaacs0:amd64 (0.11.1-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 68%]\u001b[49m\u001b[39m [#######################################...................] \u001b8Setting up pocketsphinx-en-us (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "Setting up libx265-199:amd64 (3.5-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 69%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libsndio7.0:amd64 (1.8.1-1.1) ...\n", - "Setting up libbdplus0:amd64 (0.2.0-1) ...\n", - "Setting up libvidstab1.1:amd64 (1.1.0-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 70%]\u001b[49m\u001b[39m [########################################..................] \u001b8Setting up libflite1:amd64 (2.2-3) ...\n", - "Setting up libva-drm2:amd64 (2.14.0-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 71%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libasyncns0:amd64 (0.8-6build2) ...\n", - "Setting up libvdpau1:amd64 (1.4-3build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 72%]\u001b[49m\u001b[39m [#########################################.................] \u001b8Setting up libbs2b0:amd64 (3.1.0+dfsg-2.2build1) ...\n", - "Setting up libtheora0:amd64 (1.1.1+dfsg.1-15ubuntu4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 73%]\u001b[49m\u001b[39m [##########################################................] \u001b8Setting up libzimg2:amd64 (3.0.3+ds1-1) ...\n", - "Setting up libopenal-data (1:1.19.1-2build3) ...\n", - "Setting up libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 74%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libvpx7:amd64 (1.11.0-2ubuntu2.3) ...\n", - "Setting up libcairo-gobject2:amd64 (1.16.0-5ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 75%]\u001b[49m\u001b[39m [###########################################...............] \u001b8Setting up libwayland-egl1:amd64 (1.20.0-1ubuntu0.1) ...\n", - "Setting up libusb-1.0-0:amd64 (2:1.0.25-1ubuntu2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 76%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up mesa-va-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "Setting up libdav1d5:amd64 (0.9.2-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 77%]\u001b[49m\u001b[39m [############################################..............] \u001b8Setting up libmfx1:amd64 (22.3.0-1) ...\n", - "Setting up libbluray2:amd64 (1:1.3.1-1) ...\n", - "Setting up libsamplerate0:amd64 (0.2.2-1build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 78%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libva-x11-2:amd64 (2.14.0-1) ...\n", - "Setting up libzvbi-common (0.2.35-19) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 79%]\u001b[49m\u001b[39m [#############################################.............] \u001b8Setting up libmp3lame0:amd64 (3.100-3build2) ...\n", - "Setting up i965-va-driver:amd64 (2.4.1+dfsg1-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 80%]\u001b[49m\u001b[39m [##############################################............] \u001b8Setting up libvorbisenc2:amd64 (1.3.7-1build2) ...\n", - "Setting up libiec61883-0:amd64 (1.2.0-4build3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 81%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libserd-0-0:amd64 (0.30.10-2) ...\n", - "Setting up libxkbcommon0:amd64 (1.4.0-1) ...\n", - "Setting up libwayland-client0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 82%]\u001b[49m\u001b[39m [###############################################...........] \u001b8Setting up libavc1394-0:amd64 (0.5.4-5build2) ...\n", - "Setting up mesa-vdpau-drivers:amd64 (23.2.1-1ubuntu3.1~22.04.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 83%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libzvbi0:amd64 (0.2.35-19) ...\n", - "Setting up libzmq5:amd64 (4.3.4-2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 84%]\u001b[49m\u001b[39m [################################################..........] \u001b8Setting up libcaca0:amd64 (0.99.beta19-2.2ubuntu4) ...\n", - "Setting up libcdio-cdda2:amd64 (10.2+2.0.0-1build3) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 85%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up libcdio-paranoia2:amd64 (10.2+2.0.0-1build3) ...\n", - "Setting up libopenal1:amd64 (1:1.19.1-2build3) ...\n", - "Setting up libavutil56:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 86%]\u001b[49m\u001b[39m [#################################################.........] \u001b8Setting up librsvg2-2:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "Setting up libvorbisfile3:amd64 (1.3.7-1build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 87%]\u001b[49m\u001b[39m [##################################################........] \u001b8Setting up va-driver-all:amd64 (2.14.0-1) ...\n", - "Setting up libdc1394-25:amd64 (2.2.6-4) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 88%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up libpostproc55:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up librsvg2-common:amd64 (2.52.5+dfsg-3ubuntu0.2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 89%]\u001b[49m\u001b[39m [###################################################.......] \u001b8Setting up librubberband2:amd64 (2.0.0-2) ...\n", - "Setting up libjack-jackd2-0:amd64 (1.9.20~dfsg-1) ...\n", - "Setting up vdpau-driver-all:amd64 (1.4-3build2) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 90%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libgdk-pixbuf2.0-bin (2.42.8+dfsg-1ubuntu0.3) ...\n", - "Setting up libsord-0-0:amd64 (0.16.8-2) ...\n", - "Setting up libwayland-cursor0:amd64 (1.20.0-1ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 91%]\u001b[49m\u001b[39m [####################################################......] \u001b8Setting up libsratom-0-0:amd64 (0.6.8-1) ...\n", - "Setting up libdecor-0-0:amd64 (0.1.0-3build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 92%]\u001b[49m\u001b[39m [#####################################################.....] \u001b8Setting up libswscale5:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libsndfile1:amd64 (1.0.31-2ubuntu0.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 93%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up liblilv-0-0:amd64 (0.24.12-2) ...\n", - "Setting up libopenmpt0:amd64 (0.6.1-1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 94%]\u001b[49m\u001b[39m [######################################################....] \u001b8Setting up libpulse0:amd64 (1:15.99.1+dfsg1-1ubuntu2.2) ...\n", - "Setting up libswresample3:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libdecor-0-plugin-1-cairo:amd64 (0.1.0-3build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 95%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libavcodec58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libsdl2-2.0-0:amd64 (2.0.20+dfsg-2ubuntu1.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 96%]\u001b[49m\u001b[39m [#######################################################...] \u001b8Setting up libchromaprint1:amd64 (1.5.1-2) ...\n", - "Setting up libsphinxbase3:amd64 (0.8+5prealpha+1-13build1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 97%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavformat58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libpocketsphinx3:amd64 (0.8.0+real5prealpha+1-14ubuntu1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 98%]\u001b[49m\u001b[39m [########################################################..] \u001b8Setting up libavfilter7:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up libavdevice58:amd64 (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "Setting up ffmpeg (7:4.4.2-0ubuntu0.22.04.1) ...\n", - "\u001b7\u001b[24;0f\u001b[42m\u001b[30mProgress: [ 99%]\u001b[49m\u001b[39m [#########################################################.] \u001b8Processing triggers for libc-bin (2.35-0ubuntu3.6) ...\n", - "Processing triggers for libgdk-pixbuf-2.0-0:amd64 (2.42.8+dfsg-1ubuntu0.3) ...\n", - "\n", - "\u001b7\u001b[0;24r\u001b8\u001b[1A\u001b[J" + "ffmpeg is already the newest version (7:4.4.2-0ubuntu0.22.04.1).\n", + "0 upgraded, 0 newly installed, 0 to remove and 267 not upgraded.\n" ] } ], From b95ed26f97e290383eb2b654ea5ecd28dfb233a5 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 16 Nov 2024 13:21:54 -0800 Subject: [PATCH 35/36] Delete settings.json --- .vscode/settings.json | 22 ---------------------- 1 file changed, 22 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index f8d4b6139..000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "python.autoComplete.extraPaths": [ - "/workspaces/sailbot_workspace/build/local_pathfinding", - "/workspaces/sailbot_workspace/build/integration_tests", - "/workspaces/sailbot_workspace/build/controller", - "/workspaces/sailbot_workspace/build/boat_simulator", - "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", - "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", - "/opt/ros/humble/local/lib/python3.10/dist-packages", - "/opt/ros/humble/lib/python3.10/site-packages" - ], - "python.analysis.extraPaths": [ - "/workspaces/sailbot_workspace/build/local_pathfinding", - "/workspaces/sailbot_workspace/build/integration_tests", - "/workspaces/sailbot_workspace/build/controller", - "/workspaces/sailbot_workspace/build/boat_simulator", - "/workspaces/sailbot_workspace/install/local/lib/python3.10/dist-packages", - "/workspaces/sailbot_workspace/install/lib/python3.10/site-packages", - "/opt/ros/humble/local/lib/python3.10/dist-packages", - "/opt/ros/humble/lib/python3.10/site-packages" - ] -} \ No newline at end of file From a94ee9bf32b490cb92aa937bac66e3e7524ec337 Mon Sep 17 00:00:00 2001 From: Steven Xu Date: Sat, 23 Nov 2024 13:31:49 -0800 Subject: [PATCH 36/36] Trying to fix environment test cases --- .../boat_simulator/nodes/physics_engine/model.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py index 2b6da2fa0..1ec52ac9d 100644 --- a/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py +++ b/src/boat_simulator/boat_simulator/nodes/physics_engine/model.py @@ -104,8 +104,8 @@ def __compute_net_force_and_torque( """ # Compute apparent wind and water velocities as ND arrays (2-D) - assert np.any(rel_wind_vel), "rel_wind_vel cannot be 0" - assert np.any(rel_water_vel), "rel_water_vel cannot be 0" + assert np.any(rel_wind_vel), "rel_wind_vel cannot be 0 vector" + assert np.any(rel_water_vel), "rel_water_vel cannot be 0 vector" apparent_wind_vel = np.subtract(rel_wind_vel, self.relative_velocity[0:2]) apparent_water_vel = np.subtract(rel_water_vel, self.relative_velocity[0:2])