From 1395d5663418d88de2c326bba5d7f1d9dab17cf1 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 02:01:29 +0300 Subject: [PATCH 001/101] feat: barrier init --- "pink/\302\240barriers/__init__.py" | 0 "pink/\302\240barriers/barrier.py" | 80 +++++++++++++++++++++++++++++ 2 files changed, 80 insertions(+) create mode 100644 "pink/\302\240barriers/__init__.py" create mode 100644 "pink/\302\240barriers/barrier.py" diff --git "a/pink/\302\240barriers/__init__.py" "b/pink/\302\240barriers/__init__.py" new file mode 100644 index 00000000..e69de29b diff --git "a/pink/\302\240barriers/barrier.py" "b/pink/\302\240barriers/barrier.py" new file mode 100644 index 00000000..f3b1bd7a --- /dev/null +++ "b/pink/\302\240barriers/barrier.py" @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""General description""" + +import abc +from typing import Callable, Optional, Sequence, Tuple, Union + +import numpy as np + +from ..configuration import Configuration + + +class CBF(abc.ABC): + r"""Abstract class description. + + Attributes: + ... + """ + + gain: Union[float, np.ndarray] + class_k_fns: Optional[Callable[[np.ndarray], np.ndarray]] + safe_policy: Optional[np.ndarray] + r: float + + def __init__( + self, + gain: float = 1.0, + class_k_fn: Optional[Callable[..., float]] = None, + safe_control: Optional[np.ndarray] = None, + r: float = 1.0, + ): + """...""" + self.gain = gain + self.class_k_fn = class_k_fn if class_k_fn is not None else class_k_fn + self.safe_policy = safe_control + self.r = r + + @abc.abstractmethod + def compute_barrier(self, configuration: Configuration) -> np.ndarray: + """...""" + pass + + @abc.abstractmethod + def compute_jacobian(self, configuration: Configuration) -> np.ndarray: + r"""...""" + pass + + def compute_qp_objective(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: + r"""...""" + if self.safe_policy is None: + return ( + np.zeros((configuration.model.nq, configuration.model.nq)), + np.zeros(configuration.model.nq), + ) + + jac = self.compute_jacobian(configuration) + H = self.r / np.linalg.norm(jac) ** 2 * np.eye(configuration.model.nq) + c = 2 * self.r / np.linalg.norm(jac) ** 2 * self.safe_policy + return (H, c) + + def compute_qp_inequality(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: + """...""" + G = -self.compute_jacobian(configuration) + barrier_value = self.compute_barrier(configuration) + h = self.gain * self.class_k_fns(barrier_value) + + return (G, h) + + def __repr__(self): + """...""" + return ( + f"Barrier(" + f"gain={self.gain}, " + f"safety_policy={'no' if self.safe_policy is None else self.safe_policy}, " # noqa: E501 + f"r={'no' if self.safe_policy is None else self.r})" + ) From 522bfdd1833a14e37d4350ef6f5e6500607bf750 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 02:41:52 +0300 Subject: [PATCH 002/101] feat: position barrier init --- "pink/\302\240barriers/barrier.py" | 6 +- "pink/\302\240barriers/position_barrier.py" | 73 +++++++++++++++++++++ 2 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 "pink/\302\240barriers/position_barrier.py" diff --git "a/pink/\302\240barriers/barrier.py" "b/pink/\302\240barriers/barrier.py" index f3b1bd7a..bbc1f52f 100644 --- "a/pink/\302\240barriers/barrier.py" +++ "b/pink/\302\240barriers/barrier.py" @@ -7,7 +7,7 @@ """General description""" import abc -from typing import Callable, Optional, Sequence, Tuple, Union +from typing import Callable, Optional, Tuple, Union import numpy as np @@ -22,7 +22,7 @@ class CBF(abc.ABC): """ gain: Union[float, np.ndarray] - class_k_fns: Optional[Callable[[np.ndarray], np.ndarray]] + class_k_fns: Callable[[np.ndarray], float] safe_policy: Optional[np.ndarray] r: float @@ -35,7 +35,7 @@ def __init__( ): """...""" self.gain = gain - self.class_k_fn = class_k_fn if class_k_fn is not None else class_k_fn + self.class_k_fn = class_k_fn if class_k_fn is not None else lambda x: x self.safe_policy = safe_control self.r = r diff --git "a/pink/\302\240barriers/position_barrier.py" "b/pink/\302\240barriers/position_barrier.py" new file mode 100644 index 00000000..2073924e --- /dev/null +++ "b/pink/\302\240barriers/position_barrier.py" @@ -0,0 +1,73 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""General description""" + +from typing import Callable, Optional, Tuple, Union + +import numpy as np + +from ..configuration import Configuration +from .barrier import CBF + + +class PositionCBF(CBF): + r"""Abstract class description. + + Attributes: + ... + """ + + frame: str + p_min: Optional[np.ndarray] + p_max: Optional[np.ndarray] + mask: Optional[np.ndarray] + + def __init__( + self, + frame: str, + mask: Optional[np.ndarray] = None, + min: Optional[np.ndarray] = None, + max: Optional[np.ndarray] = None, + gain: float = 1.0, + ): + # TODO: define safe control? + """...""" + super().__init__( + gain=gain, + class_k_fn=lambda h: 1 / (1 + np.linalg.norm(h)), + ) + + self.mask = mask + self.p_min = min + self.p_max = max + self.dim = 0 + + if min is not None: + self.dim += 3 + if max is not None: + self.dim += 3 + + def compute_barrier(self, configuration: Configuration) -> np.ndarray: + """...""" + pos_world = configuration.get_transform_frame_to_world(self.frame).translation + tasks = [] + if min is not None: + tasks.append(pos_world - self.p_min) + if max is not None: + tasks.append(self.p_max - pos_world) + return np.concatenate(tasks) + + def compute_jacobian(self, configuration: Configuration) -> np.ndarray: + """...""" + pos_jac = configuration.get_frame_jacobian(self.frame)[:3] + jacobian = [] + if min is not None: + jacobian.append(pos_jac.copy()) + if max is not None: + jacobian.append(-pos_jac.copy()) + + return np.hstack(jacobian) From 15fc97f2f446ccced8e9753b10a9b85cffcc0b5b Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 03:01:08 +0300 Subject: [PATCH 003/101] feat: configuration (joint) barrier --- .../configuration_barrier.py" | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 "pink/\302\240barriers/configuration_barrier.py" diff --git "a/pink/\302\240barriers/configuration_barrier.py" "b/pink/\302\240barriers/configuration_barrier.py" new file mode 100644 index 00000000..87dacc20 --- /dev/null +++ "b/pink/\302\240barriers/configuration_barrier.py" @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron +# Copyright 2023 Inria + +"""Subset of bounded joints associated with a robot model.""" + +from typing import List, Optional + +import numpy as np +import pinocchio as pin + +from pink.configuration import Configuration + +from .barrier import CBF + + +class ConfigurationCBF(CBF): + """...""" + + indices: np.ndarray + model: pin.Model + joints: list + projection_matrix: Optional[np.ndarray] + + def __init__(self, model: pin.Model, gain: float = 0.5): + """...""" + super().__init__(gain=gain, safe_control=None) + + has_configuration_limit = np.logical_and( + model.hasConfigurationLimit(), + np.logical_and( + model.upperPositionLimit < 1e20, + model.upperPositionLimit > model.lowerPositionLimit + 1e-10, + ), + ) + + joints = [ + joint + for joint in model.joints + if joint.idx_q >= 0 + and has_configuration_limit[ + slice( + joint.idx_q, + joint.idx_q + joint.nq, + ) + ].all() + ] + + index_list: List[int] = [] + for joint in joints: + index_list.extend(range(joint.idx_v, joint.idx_v + joint.nv)) + indices = np.array(index_list) + indices.setflags(write=False) + + dim = len(indices) + projection_matrix = np.eye(model.nv)[indices] if dim > 0 else None + + self.indices = indices + self.joints = joints + self.model = model + self.projection_matrix = projection_matrix + + def compute_barrier(self, configuration: Configuration) -> np.ndarray: + """...""" + q = configuration.q + delta_q_max = pin.difference(self.model, self.model.upperPositionLimit, q) + delta_q_min = pin.difference(self.model, q, self.model.lowerPositionLimit) + return np.hstack([delta_q_min[self.indices], delta_q_max[self.indices]]) + + def compute_jacobian(self, configuration: Configuration) -> np.ndarray: + """...""" + return np.vstack([-self.projection_matrix, self.projection_matrix]) From 72e30351f8e0d3811dde3d10e0d5065da190132f Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 03:20:26 +0300 Subject: [PATCH 004/101] refactor: leading whitespace in barriers folder --- pink/barriers/__init__.py | 3 +++ "pink/\302\240barriers/barrier.py" => pink/barriers/barrier.py | 0 .../barriers/configuration_barrier.py | 0 .../position_barrier.py" => pink/barriers/position_barrier.py | 1 - "pink/\302\240barriers/__init__.py" | 0 5 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 pink/barriers/__init__.py rename "pink/\302\240barriers/barrier.py" => pink/barriers/barrier.py (100%) rename "pink/\302\240barriers/configuration_barrier.py" => pink/barriers/configuration_barrier.py (100%) rename "pink/\302\240barriers/position_barrier.py" => pink/barriers/position_barrier.py (98%) delete mode 100644 "pink/\302\240barriers/__init__.py" diff --git a/pink/barriers/__init__.py b/pink/barriers/__init__.py new file mode 100644 index 00000000..7b9f7022 --- /dev/null +++ b/pink/barriers/__init__.py @@ -0,0 +1,3 @@ +from .barrier import CBF +from .configuration_barrier import ConfigurationCBF +from .position_barrier import PositionCBF diff --git "a/pink/\302\240barriers/barrier.py" b/pink/barriers/barrier.py similarity index 100% rename from "pink/\302\240barriers/barrier.py" rename to pink/barriers/barrier.py diff --git "a/pink/\302\240barriers/configuration_barrier.py" b/pink/barriers/configuration_barrier.py similarity index 100% rename from "pink/\302\240barriers/configuration_barrier.py" rename to pink/barriers/configuration_barrier.py diff --git "a/pink/\302\240barriers/position_barrier.py" b/pink/barriers/position_barrier.py similarity index 98% rename from "pink/\302\240barriers/position_barrier.py" rename to pink/barriers/position_barrier.py index 2073924e..f373d8db 100644 --- "a/pink/\302\240barriers/position_barrier.py" +++ b/pink/barriers/position_barrier.py @@ -41,7 +41,6 @@ def __init__( class_k_fn=lambda h: 1 / (1 + np.linalg.norm(h)), ) - self.mask = mask self.p_min = min self.p_max = max self.dim = 0 diff --git "a/pink/\302\240barriers/__init__.py" "b/pink/\302\240barriers/__init__.py" deleted file mode 100644 index e69de29b..00000000 From 04202e6036cc860c37151c403ba2999c74831568 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 03:20:55 +0300 Subject: [PATCH 005/101] feat: add barriers support to solve_ik.py --- pink/solve_ik.py | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/pink/solve_ik.py b/pink/solve_ik.py index 303d079f..32fbda28 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -11,12 +11,16 @@ import numpy as np import qpsolvers +from .barriers import CBF from .configuration import Configuration from .tasks import Task def __compute_qp_objective( - configuration: Configuration, tasks: Iterable[Task], damping: float + configuration: Configuration, + tasks: Iterable[Task], + cbfs: Iterable[CBF], + damping: float, ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the QP objective function. @@ -48,11 +52,18 @@ def __compute_qp_objective( H_task, c_task = task.compute_qp_objective(configuration) H += H_task c += c_task + + for cbf in cbfs: + H_cbf, c_cbf = cbf.compute_qp_objective(configuration) + H += H_cbf + c += c_cbf + return (H, c) def __compute_qp_inequalities( configuration, + cbfs: Iterable[CBF], dt: float, ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray]]: r"""Compute inequality constraints for the quadratic program. @@ -82,6 +93,10 @@ def __compute_qp_inequalities( if matvec is not None: G_list.append(matvec[0]) h_list.append(matvec[1]) + for cbf in cbfs: + G_cbf, h_cbf = cbf.compute_qp_inequality(configuration) + G_list.append(G_cbf) + h_list.append(h_cbf) if not G_list: return None, None return np.vstack(G_list), np.hstack(h_list) @@ -90,6 +105,7 @@ def __compute_qp_inequalities( def build_ik( configuration: Configuration, tasks: Iterable[Task], + cbfs: Iterable[CBF], dt: float, damping: float = 1e-12, ) -> qpsolvers.Problem: @@ -122,8 +138,8 @@ def build_ik( Returns: Quadratic program of the inverse kinematics problem. """ - P, q = __compute_qp_objective(configuration, tasks, damping) - G, h = __compute_qp_inequalities(configuration, dt) + P, q = __compute_qp_objective(configuration, tasks, cbfs, damping) + G, h = __compute_qp_inequalities(configuration, cbfs, dt) problem = qpsolvers.Problem(P, q, G, h) return problem From 859e4d5b0de4fdcbe08840385cc28bf94c1997d1 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 03:26:32 +0300 Subject: [PATCH 006/101] fix: solve_ik compatability fixes --- pink/solve_ik.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pink/solve_ik.py b/pink/solve_ik.py index 32fbda28..06096295 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -19,8 +19,8 @@ def __compute_qp_objective( configuration: Configuration, tasks: Iterable[Task], - cbfs: Iterable[CBF], damping: float, + cbfs: Iterable[CBF] = [], ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the QP objective function. @@ -63,8 +63,8 @@ def __compute_qp_objective( def __compute_qp_inequalities( configuration, - cbfs: Iterable[CBF], dt: float, + cbfs: Iterable[CBF] = [], ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray]]: r"""Compute inequality constraints for the quadratic program. @@ -105,9 +105,9 @@ def __compute_qp_inequalities( def build_ik( configuration: Configuration, tasks: Iterable[Task], - cbfs: Iterable[CBF], dt: float, damping: float = 1e-12, + cbfs: Iterable[CBF] = [], ) -> qpsolvers.Problem: r"""Build quadratic program from current configuration and tasks. @@ -138,8 +138,8 @@ def build_ik( Returns: Quadratic program of the inverse kinematics problem. """ - P, q = __compute_qp_objective(configuration, tasks, cbfs, damping) - G, h = __compute_qp_inequalities(configuration, cbfs, dt) + P, q = __compute_qp_objective(configuration, tasks, damping, cbfs) + G, h = __compute_qp_inequalities(configuration, dt, cbfs) problem = qpsolvers.Problem(P, q, G, h) return problem From 44e919df9720b721e85557299eb79fcdcef71740 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 04:22:44 +0300 Subject: [PATCH 007/101] fix: minor code debug and refactoring --- pink/barriers/barrier.py | 14 ++++---- pink/barriers/configuration_barrier.py | 11 ++++-- pink/barriers/position_barrier.py | 47 ++++++++++++++------------ 3 files changed, 41 insertions(+), 31 deletions(-) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index bbc1f52f..ef65fbc3 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -28,15 +28,17 @@ class CBF(abc.ABC): def __init__( self, - gain: float = 1.0, + dim: int, + gain: Union[float, np.ndarray] = 1.0, class_k_fn: Optional[Callable[..., float]] = None, - safe_control: Optional[np.ndarray] = None, - r: float = 1.0, + safe_policy: Optional[np.ndarray] = None, + r: float = 3.0, ): """...""" - self.gain = gain + self.dim = dim + self.gain = gain if gain is np.ndarray else np.ones(dim) * gain self.class_k_fn = class_k_fn if class_k_fn is not None else lambda x: x - self.safe_policy = safe_control + self.safe_policy = safe_policy self.r = r @abc.abstractmethod @@ -66,7 +68,7 @@ def compute_qp_inequality(self, configuration: Configuration) -> Tuple[np.ndarra """...""" G = -self.compute_jacobian(configuration) barrier_value = self.compute_barrier(configuration) - h = self.gain * self.class_k_fns(barrier_value) + h = self.gain * self.class_k_fn(barrier_value) return (G, h) diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index 87dacc20..bd41c438 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -7,7 +7,7 @@ """Subset of bounded joints associated with a robot model.""" -from typing import List, Optional +from typing import List, Optional, Union import numpy as np import pinocchio as pin @@ -25,9 +25,12 @@ class ConfigurationCBF(CBF): joints: list projection_matrix: Optional[np.ndarray] - def __init__(self, model: pin.Model, gain: float = 0.5): + def __init__( + self, + model: pin.Model, + gain: Union[float, np.ndarray] = 0.5, + ): """...""" - super().__init__(gain=gain, safe_control=None) has_configuration_limit = np.logical_and( model.hasConfigurationLimit(), @@ -58,6 +61,8 @@ def __init__(self, model: pin.Model, gain: float = 0.5): dim = len(indices) projection_matrix = np.eye(model.nv)[indices] if dim > 0 else None + super().__init__(dim, gain=gain, safe_policy=None) + self.indices = indices self.joints = joints self.model = model diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index f373d8db..f7940507 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -6,7 +6,7 @@ """General description""" -from typing import Callable, Optional, Tuple, Union +from typing import Optional, Union import numpy as np @@ -32,41 +32,44 @@ def __init__( mask: Optional[np.ndarray] = None, min: Optional[np.ndarray] = None, max: Optional[np.ndarray] = None, - gain: float = 1.0, + gain: Union[float, np.ndarray] = 1.0, ): - # TODO: define safe control? """...""" + dim = 0 + if min is not None: + dim += 3 + if max is not None: + dim += 3 + + # TODO: define safe control? super().__init__( + dim, gain=gain, - class_k_fn=lambda h: 1 / (1 + np.linalg.norm(h)), + # class_k_fn=lambda h: 1 / (1 + np.linalg.norm(h)), ) + self.frame = frame self.p_min = min self.p_max = max - self.dim = 0 - - if min is not None: - self.dim += 3 - if max is not None: - self.dim += 3 def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" pos_world = configuration.get_transform_frame_to_world(self.frame).translation - tasks = [] - if min is not None: - tasks.append(pos_world - self.p_min) - if max is not None: - tasks.append(self.p_max - pos_world) - return np.concatenate(tasks) + cbfs = [] + if self.p_min is not None: + cbfs.append(pos_world - self.p_min) + if self.p_max is not None: + cbfs.append(self.p_max - pos_world) + + return np.concatenate(cbfs) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" pos_jac = configuration.get_frame_jacobian(self.frame)[:3] - jacobian = [] - if min is not None: - jacobian.append(pos_jac.copy()) - if max is not None: - jacobian.append(-pos_jac.copy()) + jacobians = [] + if self.p_min is not None: + jacobians.append(pos_jac.copy()) + if self.p_max is not None: + jacobians.append(-pos_jac.copy()) - return np.hstack(jacobian) + return np.hstack(jacobians) From 7a24e9a71c2126075699a06ef313c2a1ba41095d Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 04:24:53 +0300 Subject: [PATCH 008/101] feat: updating safe policy in barrier --- pink/barriers/position_barrier.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index f7940507..6c7cbdac 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -54,6 +54,8 @@ def __init__( def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" + # TODO: find proper place to write this + self.safe_policy = np.zeros(configuration.model.nq) pos_world = configuration.get_transform_frame_to_world(self.frame).translation cbfs = [] if self.p_min is not None: From 1c82bb5f3e9b7ac3d49aa71f7603a8c3c1d4c17d Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 3 May 2024 04:25:21 +0300 Subject: [PATCH 009/101] example: ur5 with cbf init --- examples/cbf/arm_ur5.py | 92 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 examples/cbf/arm_ur5.py diff --git a/examples/cbf/arm_ur5.py b/examples/cbf/arm_ur5.py new file mode 100644 index 00000000..e0fd744c --- /dev/null +++ b/examples/cbf/arm_ur5.py @@ -0,0 +1,92 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""Universal Robots UR5 arm tracking a moving target.""" + +import meshcat_shapes +import numpy as np +import qpsolvers +from loop_rate_limiters import RateLimiter + +import pink +from pink import solve_ik +from pink.barriers import PositionCBF +from pink.tasks import FrameTask, PostureTask +from pink.utils import custom_configuration_vector +from pink.visualization import start_meshcat_visualizer + +try: + from robot_descriptions.loaders.pinocchio import load_robot_description +except ModuleNotFoundError as exc: + raise ModuleNotFoundError( + "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" + ) from exc # noqa: E501 + + +if __name__ == "__main__": + robot = load_robot_description("ur5_description", root_joint=None) + viz = start_meshcat_visualizer(robot) + + end_effector_task = FrameTask( + "ee_link", + position_cost=1.0, # [cost] / [m] + orientation_cost=1.0, # [cost] / [rad] + lm_damping=1.0, # tuned for this setup + ) + + posture_task = PostureTask( + cost=1e-3, # [cost] / [rad] + ) + + pos_cbf = PositionCBF("ee_link", max=np.array([10, 0.6, 10]), gain=100.0) + + tasks = [end_effector_task, posture_task] + + q_ref = custom_configuration_vector( + robot, + shoulder_lift_joint=1.0, + shoulder_pan_joint=1.0, + elbow_joint=1.0, + ) + configuration = pink.Configuration(robot.model, robot.data, q_ref) + for task in tasks: + task.set_target_from_configuration(configuration) + viz.display(configuration.q) + + viewer = viz.viewer + meshcat_shapes.frame(viewer["end_effector_target"], opacity=1.0) + # meshcat_shapes.frame(viewer["end_effector"], opacity=1.0) + + # Select QP solver + solver = qpsolvers.available_solvers[0] + if "osqp" in qpsolvers.available_solvers: + solver = "osqp" + + rate = RateLimiter(frequency=200.0) + dt = rate.period + t = 0.0 # [s] + while True: + # Update task targets + end_effector_target = end_effector_task.transform_target_to_world + end_effector_target.translation[1] = 0.5 + 0.2 * np.sin(2.0 * t) + end_effector_target.translation[2] = 0.2 + + # Update visualization frames + viewer["end_effector_target"].set_transform(end_effector_target.np) + viewer["end_effector"].set_transform(configuration.get_transform_frame_to_world(end_effector_task.frame).np) + + # Compute velocity and integrate it into next configuration + velocity = solve_ik(configuration, tasks, dt, solver=solver, cbfs=[pos_cbf]) + configuration.integrate_inplace(velocity, dt) + + G_cbf, h_cbf = pos_cbf.compute_qp_inequality(configuration=configuration) + print(f"CBF value: {G_cbf@configuration.q - h_cbf}") + + print(configuration.get_transform_frame_to_world("ee_link").translation[1]) + # Visualize result at fixed FPS + viz.display(configuration.q) + rate.sleep() + t += dt From 01491fa8b1a204a0a2db65458bf62cbf5e377b0e Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 4 May 2024 19:09:46 +0300 Subject: [PATCH 010/101] feat: compute_save_policy abstract method --- pink/barriers/barrier.py | 30 +++++++++++++++++++++--------- pink/barriers/position_barrier.py | 23 ++++++++++++++--------- 2 files changed, 35 insertions(+), 18 deletions(-) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index ef65fbc3..33701f1e 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -31,14 +31,12 @@ def __init__( dim: int, gain: Union[float, np.ndarray] = 1.0, class_k_fn: Optional[Callable[..., float]] = None, - safe_policy: Optional[np.ndarray] = None, r: float = 3.0, ): """...""" self.dim = dim self.gain = gain if gain is np.ndarray else np.ones(dim) * gain self.class_k_fn = class_k_fn if class_k_fn is not None else lambda x: x - self.safe_policy = safe_policy self.r = r @abc.abstractmethod @@ -51,24 +49,38 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: r"""...""" pass - def compute_qp_objective(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: + def compute_safe_policy(self, configuration: Configuration) -> np.ndarray: r"""...""" - if self.safe_policy is None: + return np.zeros(configuration.model.nq) + + def compute_qp_objective( + self, + configuration: Configuration, + dt: float = 1e-3, + ) -> Tuple[np.ndarray, np.ndarray]: + r"""...""" + if self.r < 1e-6: return ( np.zeros((configuration.model.nq, configuration.model.nq)), np.zeros(configuration.model.nq), ) jac = self.compute_jacobian(configuration) - H = self.r / np.linalg.norm(jac) ** 2 * np.eye(configuration.model.nq) - c = 2 * self.r / np.linalg.norm(jac) ** 2 * self.safe_policy + safe_policy = self.compute_safe_policy(configuration) + + H = self.r / (dt**2 * np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) + c = -2 * self.r / (dt**2 * np.linalg.norm(jac) ** 2) * safe_policy return (H, c) - def compute_qp_inequality(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: + def compute_qp_inequality( + self, + configuration: Configuration, + dt: float = 1e-3, + ) -> Tuple[np.ndarray, np.ndarray]: """...""" - G = -self.compute_jacobian(configuration) + G = -self.compute_jacobian(configuration) / dt barrier_value = self.compute_barrier(configuration) - h = self.gain * self.class_k_fn(barrier_value) + h = np.array([self.gain[i % 3] * self.class_k_fn(barrier_value[i]) for i in range(self.dim)]) return (G, h) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 6c7cbdac..2a02af73 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -6,7 +6,7 @@ """General description""" -from typing import Optional, Union +from typing import Iterable, Optional, Union import numpy as np @@ -22,6 +22,7 @@ class PositionCBF(CBF): """ frame: str + indices: Iterable[int] p_min: Optional[np.ndarray] p_max: Optional[np.ndarray] mask: Optional[np.ndarray] @@ -29,45 +30,49 @@ class PositionCBF(CBF): def __init__( self, frame: str, + indices: Iterable[int] = [], mask: Optional[np.ndarray] = None, min: Optional[np.ndarray] = None, max: Optional[np.ndarray] = None, gain: Union[float, np.ndarray] = 1.0, + r: float = 3.0, ): """...""" + indices = range(3) if indices == [] else indices + dim = 0 if min is not None: - dim += 3 + dim += len(indices) if max is not None: - dim += 3 + dim += len(indices) # TODO: define safe control? super().__init__( dim, gain=gain, - # class_k_fn=lambda h: 1 / (1 + np.linalg.norm(h)), + class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), + r=r, ) + self.indices = indices self.frame = frame self.p_min = min self.p_max = max def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" - # TODO: find proper place to write this - self.safe_policy = np.zeros(configuration.model.nq) pos_world = configuration.get_transform_frame_to_world(self.frame).translation cbfs = [] if self.p_min is not None: - cbfs.append(pos_world - self.p_min) + cbfs.append(pos_world[self.indices] - self.p_min) if self.p_max is not None: - cbfs.append(self.p_max - pos_world) + cbfs.append(self.p_max - pos_world[self.indices]) return np.concatenate(cbfs) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" - pos_jac = configuration.get_frame_jacobian(self.frame)[:3] + pos_jac = configuration.get_frame_jacobian(self.frame)[self.indices] jacobians = [] if self.p_min is not None: jacobians.append(pos_jac.copy()) From 043c590a890b444676445e110a0e299b274cb046 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 4 May 2024 19:10:15 +0300 Subject: [PATCH 011/101] example: copy shapes file to cbf folder --- examples/cbf/meshcat_shapes.py | 81 ++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 examples/cbf/meshcat_shapes.py diff --git a/examples/cbf/meshcat_shapes.py b/examples/cbf/meshcat_shapes.py new file mode 100644 index 00000000..a7e35a7d --- /dev/null +++ b/examples/cbf/meshcat_shapes.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""Standalone version of meshcat-shapes. + +See . We keep this copy in examples/ +so that it can be used by examples that need it without making meshcat-shapes +(and thus meshcat) a dependency of the project. +""" + +import meshcat +import numpy as np + + +def __attach_axes( + handle: meshcat.Visualizer, + length: float = 0.05, + thickness: float = 0.002, + opacity: float = 1.0, +) -> None: + """Attach a set of three basis axes to a MeshCat handle. + + Args: + handle: MeshCat handle to attach the basis axes to. + length: Length of axis unit vectors. + thickness: Thickness of axis unit vectors. + opacity: Opacity of all three unit vectors. + + Note: + As per the de-facto standard (Blender, OpenRAVE, RViz, ...), the + x-axis is red, the y-axis is green and the z-axis is blue. + """ + direction_names = ["x", "y", "z"] + colors = [0xFF0000, 0x00FF00, 0x0000FF] + rotation_axes = [[0, 0, 1], [0, 1, 0], [1, 0, 0]] + position_cylinder_in_frame = 0.5 * length * np.eye(3) + for i in range(3): + dir_name = direction_names[i] + material = meshcat.geometry.MeshLambertMaterial( + color=colors[i], opacity=opacity + ) + transform_cylinder_to_frame = meshcat.transformations.rotation_matrix( + np.pi / 2, rotation_axes[i] + ) + transform_cylinder_to_frame[0:3, 3] = position_cylinder_in_frame[i] + cylinder = meshcat.geometry.Cylinder(length, thickness) + handle[dir_name].set_object(cylinder, material) + handle[dir_name].set_transform(transform_cylinder_to_frame) + + +def frame( + handle: meshcat.Visualizer, + axis_length: float = 0.1, + axis_thickness: float = 0.005, + opacity: float = 1.0, + origin_color: int = 0x000000, + origin_radius: float = 0.01, +) -> None: + """Set MeshCat handle to a frame, represented by an origin and three axes. + + Args: + handle: MeshCat handle to attach the frame to. + axis_length: Length of axis unit vectors, in [m]. + axis_thickness: Thickness of axis unit vectors, in [m]. + opacity: Opacity of all three unit vectors. + origin_color: Color of the origin sphere. + origin_radius: Radius of the frame origin sphere, in [m]. + + Note: + As per the de-facto standard (Blender, OpenRAVE, RViz, ...), the + x-axis is red, the y-axis is green and the z-axis is blue. + """ + material = meshcat.geometry.MeshLambertMaterial( + color=origin_color, opacity=opacity + ) + sphere = meshcat.geometry.Sphere(origin_radius) + handle.set_object(sphere, material) + __attach_axes(handle, axis_length, axis_thickness, opacity) From ba3f0dc1f6f084430557ef2ddd959293f4528bd7 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 5 May 2024 00:54:48 +0300 Subject: [PATCH 012/101] fix: remove dt term from cost (because other terms does not use it) --- examples/cbf/arm_ur5.py | 25 +++++++++++++++++++------ pink/barriers/barrier.py | 6 +++--- pink/barriers/position_barrier.py | 2 +- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/examples/cbf/arm_ur5.py b/examples/cbf/arm_ur5.py index e0fd744c..7fc63329 100644 --- a/examples/cbf/arm_ur5.py +++ b/examples/cbf/arm_ur5.py @@ -41,7 +41,13 @@ cost=1e-3, # [cost] / [rad] ) - pos_cbf = PositionCBF("ee_link", max=np.array([10, 0.6, 10]), gain=100.0) + pos_cbf = PositionCBF( + "ee_link", + indices=[1], + max=np.array([0.6]), + gain=np.array([100.0]), + r=1.0, + ) tasks = [end_effector_task, posture_task] @@ -79,13 +85,20 @@ viewer["end_effector"].set_transform(configuration.get_transform_frame_to_world(end_effector_task.frame).np) # Compute velocity and integrate it into next configuration - velocity = solve_ik(configuration, tasks, dt, solver=solver, cbfs=[pos_cbf]) + velocity = solve_ik( + configuration, + tasks, + dt, + solver=solver, + cbfs=[pos_cbf], + ) configuration.integrate_inplace(velocity, dt) - G_cbf, h_cbf = pos_cbf.compute_qp_inequality(configuration=configuration) - print(f"CBF value: {G_cbf@configuration.q - h_cbf}") - - print(configuration.get_transform_frame_to_world("ee_link").translation[1]) + G, h = pos_cbf.compute_qp_inequality(configuration, dt=dt) + print(f"CBF value: {pos_cbf.compute_barrier(configuration)}") + print(f"CBF constraint: {G @ velocity * dt - h}") + print(f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]}") + print("-" * 60) # Visualize result at fixed FPS viz.display(configuration.q) rate.sleep() diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index 33701f1e..b03706ad 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -68,8 +68,8 @@ def compute_qp_objective( jac = self.compute_jacobian(configuration) safe_policy = self.compute_safe_policy(configuration) - H = self.r / (dt**2 * np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) - c = -2 * self.r / (dt**2 * np.linalg.norm(jac) ** 2) * safe_policy + H = self.r / (np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) + c = -2 * self.r / (np.linalg.norm(jac) ** 2) * safe_policy return (H, c) def compute_qp_inequality( @@ -80,7 +80,7 @@ def compute_qp_inequality( """...""" G = -self.compute_jacobian(configuration) / dt barrier_value = self.compute_barrier(configuration) - h = np.array([self.gain[i % 3] * self.class_k_fn(barrier_value[i]) for i in range(self.dim)]) + h = np.array([self.gain[i] * self.class_k_fn(barrier_value[i]) for i in range(self.dim)]) return (G, h) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 2a02af73..c339f0ae 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -50,7 +50,7 @@ def __init__( super().__init__( dim, gain=gain, - class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), + # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), r=r, ) From e0f74e270342485d77ace4d284e2e23c7f98768b Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 5 May 2024 12:23:38 +0300 Subject: [PATCH 013/101] example: the best cbf behaviour yet --- examples/cbf/arm_ur5.py | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/examples/cbf/arm_ur5.py b/examples/cbf/arm_ur5.py index 7fc63329..e9883f55 100644 --- a/examples/cbf/arm_ur5.py +++ b/examples/cbf/arm_ur5.py @@ -32,9 +32,9 @@ end_effector_task = FrameTask( "ee_link", - position_cost=1.0, # [cost] / [m] + position_cost=50.0, # [cost] / [m] orientation_cost=1.0, # [cost] / [rad] - lm_damping=1.0, # tuned for this setup + lm_damping=100, # tuned for this setup ) posture_task = PostureTask( @@ -51,11 +51,15 @@ tasks = [end_effector_task, posture_task] - q_ref = custom_configuration_vector( - robot, - shoulder_lift_joint=1.0, - shoulder_pan_joint=1.0, - elbow_joint=1.0, + q_ref = np.array( + [ + 1.27153374, + -0.87988708, + 1.89104795, + 1.73996951, + -0.24610945, + -0.74979019, + ] ) configuration = pink.Configuration(robot.model, robot.data, q_ref) for task in tasks: @@ -95,8 +99,9 @@ configuration.integrate_inplace(velocity, dt) G, h = pos_cbf.compute_qp_inequality(configuration, dt=dt) - print(f"CBF value: {pos_cbf.compute_barrier(configuration)}") - print(f"CBF constraint: {G @ velocity * dt - h}") + print(f"Task error: {end_effector_task.compute_error(configuration)}") + print(f"CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0") + print(f"CBF constraint: {(G @ velocity * dt - h)[0]:0.3f} <= 0") print(f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]}") print("-" * 60) # Visualize result at fixed FPS From 5534c8f9b4dc4969a3148262e7b23e1a0bf765ae Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 5 May 2024 13:58:09 +0300 Subject: [PATCH 014/101] feat: update solve_ik --- pink/solve_ik.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pink/solve_ik.py b/pink/solve_ik.py index 06096295..ac59b8cd 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -20,6 +20,7 @@ def __compute_qp_objective( configuration: Configuration, tasks: Iterable[Task], damping: float, + dt: float, cbfs: Iterable[CBF] = [], ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the QP objective function. @@ -54,7 +55,7 @@ def __compute_qp_objective( c += c_task for cbf in cbfs: - H_cbf, c_cbf = cbf.compute_qp_objective(configuration) + H_cbf, c_cbf = cbf.compute_qp_objective(configuration, dt=dt) H += H_cbf c += c_cbf @@ -94,7 +95,7 @@ def __compute_qp_inequalities( G_list.append(matvec[0]) h_list.append(matvec[1]) for cbf in cbfs: - G_cbf, h_cbf = cbf.compute_qp_inequality(configuration) + G_cbf, h_cbf = cbf.compute_qp_inequality(configuration, dt) G_list.append(G_cbf) h_list.append(h_cbf) if not G_list: @@ -138,7 +139,7 @@ def build_ik( Returns: Quadratic program of the inverse kinematics problem. """ - P, q = __compute_qp_objective(configuration, tasks, damping, cbfs) + P, q = __compute_qp_objective(configuration, tasks, damping, dt, cbfs) G, h = __compute_qp_inequalities(configuration, dt, cbfs) problem = qpsolvers.Problem(P, q, G, h) return problem @@ -150,6 +151,7 @@ def solve_ik( dt: float, solver: str, damping: float = 1e-12, + cbfs: Iterable[CBF] = [], **kwargs, ) -> np.ndarray: r"""Compute a velocity tangent to the current robot configuration. @@ -182,7 +184,7 @@ def solve_ik( floating base differently from joint angular velocities. """ configuration.check_limits() - problem = build_ik(configuration, tasks, dt, damping) + problem = build_ik(configuration, tasks, dt, damping, cbfs) result = qpsolvers.solve_problem(problem, solver=solver, **kwargs) Delta_q = result.x assert Delta_q is not None From cdc3b80957eab81ff9cbc857b38097cb8bd693f1 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 5 May 2024 14:36:02 +0300 Subject: [PATCH 015/101] fix: refactor compute_qp_objective in barrier.py --- pink/barriers/barrier.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index b03706ad..66226952 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -59,17 +59,17 @@ def compute_qp_objective( dt: float = 1e-3, ) -> Tuple[np.ndarray, np.ndarray]: r"""...""" - if self.r < 1e-6: - return ( - np.zeros((configuration.model.nq, configuration.model.nq)), - np.zeros(configuration.model.nq), - ) - jac = self.compute_jacobian(configuration) - safe_policy = self.compute_safe_policy(configuration) + H = np.zeros((configuration.model.nq, configuration.model.nq)) + # c = 1e-3 * np.linalg.norm(jac, axis=0) / dt + c = np.zeros(configuration.model.nq) + + if self.r > 1e-6: + safe_policy = self.compute_safe_policy(configuration) + + H += self.r / (np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) + c += -2 * self.r / (np.linalg.norm(jac) ** 2) * safe_policy - H = self.r / (np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) - c = -2 * self.r / (np.linalg.norm(jac) ** 2) * safe_policy return (H, c) def compute_qp_inequality( From 17872fb167264128845de492aa1fc2c6b7338e19 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Mon, 6 May 2024 22:10:07 +0300 Subject: [PATCH 016/101] fix: transfering position jacobian from local to world aligned frame --- pink/barriers/position_barrier.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index c339f0ae..c1a5d7d6 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -72,7 +72,14 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" - pos_jac = configuration.get_frame_jacobian(self.frame)[self.indices] + pos_jac = configuration.get_frame_jacobian(self.frame)[:3] + # Transform jacobian to world aligned frame + rotation = configuration.get_transform_frame_to_world(self.frame).rotation + print(rotation.shape, pos_jac.shape) + pos_jac = rotation @ pos_jac + # Select only relevant indices + pos_jac = pos_jac[self.indices] + jacobians = [] if self.p_min is not None: jacobians.append(pos_jac.copy()) From a7e6f67025458777ebc5b6f62d8649ef81f32407 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Mon, 6 May 2024 23:16:36 +0300 Subject: [PATCH 017/101] fix: isinstance for gain --- pink/barriers/barrier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index 66226952..abf811e8 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -35,7 +35,7 @@ def __init__( ): """...""" self.dim = dim - self.gain = gain if gain is np.ndarray else np.ones(dim) * gain + self.gain = gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain self.class_k_fn = class_k_fn if class_k_fn is not None else lambda x: x self.r = r From 964e81eb82e35002bb86e5e7e9f88b3ce6358964 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Mon, 6 May 2024 23:16:56 +0300 Subject: [PATCH 018/101] fix: remove debugging print --- pink/barriers/position_barrier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index c1a5d7d6..e2fbdf8b 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -75,8 +75,8 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: pos_jac = configuration.get_frame_jacobian(self.frame)[:3] # Transform jacobian to world aligned frame rotation = configuration.get_transform_frame_to_world(self.frame).rotation - print(rotation.shape, pos_jac.shape) pos_jac = rotation @ pos_jac + # Select only relevant indices pos_jac = pos_jac[self.indices] From 40d2b192cc6f047825f1499dc833c7b4a2025e08 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Mon, 6 May 2024 23:17:23 +0300 Subject: [PATCH 019/101] fix: configuration barrier fix --- pink/barriers/configuration_barrier.py | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index bd41c438..166c30be 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -29,6 +29,7 @@ def __init__( self, model: pin.Model, gain: Union[float, np.ndarray] = 0.5, + r: float = 3.0, ): """...""" @@ -58,10 +59,15 @@ def __init__( indices = np.array(index_list) indices.setflags(write=False) - dim = len(indices) + dim = 2 * len(indices) projection_matrix = np.eye(model.nv)[indices] if dim > 0 else None - super().__init__(dim, gain=gain, safe_policy=None) + super().__init__( + dim, + gain=gain, + class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), + r=r, + ) self.indices = indices self.joints = joints @@ -71,10 +77,10 @@ def __init__( def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" q = configuration.q - delta_q_max = pin.difference(self.model, self.model.upperPositionLimit, q) + delta_q_max = pin.difference(self.model, q, self.model.upperPositionLimit) delta_q_min = pin.difference(self.model, q, self.model.lowerPositionLimit) - return np.hstack([delta_q_min[self.indices], delta_q_max[self.indices]]) + return np.hstack([-delta_q_min[self.indices], delta_q_max[self.indices]]) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" - return np.vstack([-self.projection_matrix, self.projection_matrix]) + return np.vstack([self.projection_matrix, -self.projection_matrix]) From 0d13b08ac66c7a5c33bf0373b3ad5a08bd0af9df Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Mon, 6 May 2024 23:28:17 +0300 Subject: [PATCH 020/101] feat: optional disabling of position limits --- pink/solve_ik.py | 30 ++++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/pink/solve_ik.py b/pink/solve_ik.py index ac59b8cd..11478b5e 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -66,12 +66,17 @@ def __compute_qp_inequalities( configuration, dt: float, cbfs: Iterable[CBF] = [], + use_position_limit: bool = True, ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray]]: r"""Compute inequality constraints for the quadratic program. Args: configuration: Robot configuration to read kinematics from. dt: Integration timestep in [s]. + cbfs: Collection of control barrier functions. + use_position_limit: if True, position limit from robot configuration + would be used. Disabling it would allow to utilize more + flexible CBF configuration limit. Returns: Pair :math:`(G, h)` of inequality matrix and vector representing the @@ -83,13 +88,15 @@ def __compute_qp_inequalities( solvers don't support it. See for instance https://github.com/stephane-caron/pink/issues/10. """ - configuration_limit = configuration.model.configuration_limit - velocity_limit = configuration.model.velocity_limit + basic_limits = [] + if use_position_limit: + basic_limits.append(configuration.model.configuration_limit) + basic_limits.append(configuration.model.velocity_limit) q = configuration.q G_list = [] h_list = [] - for limit in (configuration_limit, velocity_limit): + for limit in basic_limits: matvec = limit.compute_qp_inequalities(q, dt) if matvec is not None: G_list.append(matvec[0]) @@ -109,6 +116,7 @@ def build_ik( dt: float, damping: float = 1e-12, cbfs: Iterable[CBF] = [], + use_position_limit: bool = True, ) -> qpsolvers.Problem: r"""Build quadratic program from current configuration and tasks. @@ -135,6 +143,9 @@ def build_ik( :math:`[\mathrm{tangent}]` is "the" unit of robot velocities. Improves numerical stability, but larger values slow down all tasks. + use_position_limit: if True, position limit from robot configuration + would be used. Disabling it would allow to utilize more + flexible CBF configuration limit. Returns: Quadratic program of the inverse kinematics problem. @@ -152,6 +163,7 @@ def solve_ik( solver: str, damping: float = 1e-12, cbfs: Iterable[CBF] = [], + use_position_limit: bool = True, **kwargs, ) -> np.ndarray: r"""Compute a velocity tangent to the current robot configuration. @@ -169,6 +181,9 @@ def solve_ik( :math:`[\mathrm{tangent}]` is "the" unit of robot velocities. Improves numerical stability, but larger values slow down all tasks. + use_position_limit: if True, position limit from robot configuration + would be used. Disabling it would allow to utilize more + flexible CBF configuration limit. kwargs: Keyword arguments to forward to the backend QP solver. Returns: @@ -184,7 +199,14 @@ def solve_ik( floating base differently from joint angular velocities. """ configuration.check_limits() - problem = build_ik(configuration, tasks, dt, damping, cbfs) + problem = build_ik( + configuration, + tasks, + dt, + damping, + cbfs, + use_position_limit=use_position_limit, + ) result = qpsolvers.solve_problem(problem, solver=solver, **kwargs) Delta_q = result.x assert Delta_q is not None From 9cba01c1128912802f9b77812a862428b8198d98 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Mon, 6 May 2024 23:28:30 +0300 Subject: [PATCH 021/101] example: add position CBF to ur5 example --- examples/cbf/arm_ur5.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/examples/cbf/arm_ur5.py b/examples/cbf/arm_ur5.py index e9883f55..1c8ee001 100644 --- a/examples/cbf/arm_ur5.py +++ b/examples/cbf/arm_ur5.py @@ -13,9 +13,8 @@ import pink from pink import solve_ik -from pink.barriers import PositionCBF +from pink.barriers import PositionCBF, ConfigurationCBF from pink.tasks import FrameTask, PostureTask -from pink.utils import custom_configuration_vector from pink.visualization import start_meshcat_visualizer try: @@ -48,6 +47,8 @@ gain=np.array([100.0]), r=1.0, ) + configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=100.0) + cbf_list = [pos_cbf, configuration_cbf] tasks = [end_effector_task, posture_task] @@ -81,7 +82,7 @@ while True: # Update task targets end_effector_target = end_effector_task.transform_target_to_world - end_effector_target.translation[1] = 0.5 + 0.2 * np.sin(2.0 * t) + end_effector_target.translation[1] = 0.0 + 0.7 * np.sin(t / 2) end_effector_target.translation[2] = 0.2 # Update visualization frames @@ -89,20 +90,23 @@ viewer["end_effector"].set_transform(configuration.get_transform_frame_to_world(end_effector_task.frame).np) # Compute velocity and integrate it into next configuration + # Note that default position limit handle given trajectory + # much worse than CBF. Hence, we disable it here. velocity = solve_ik( configuration, tasks, dt, solver=solver, - cbfs=[pos_cbf], + cbfs=cbf_list, + use_position_limit=False, ) configuration.integrate_inplace(velocity, dt) G, h = pos_cbf.compute_qp_inequality(configuration, dt=dt) print(f"Task error: {end_effector_task.compute_error(configuration)}") - print(f"CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0") - print(f"CBF constraint: {(G @ velocity * dt - h)[0]:0.3f} <= 0") - print(f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]}") + print(f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0") + print(f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0") + print(f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6") print("-" * 60) # Visualize result at fixed FPS viz.display(configuration.q) From 197c22bb09b77812bf5720a6d1aee1c076b14204 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Mon, 6 May 2024 23:33:05 +0300 Subject: [PATCH 022/101] fix: remove mask variable from position barrier as redundant --- pink/barriers/position_barrier.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index e2fbdf8b..7d32ecb0 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -25,13 +25,11 @@ class PositionCBF(CBF): indices: Iterable[int] p_min: Optional[np.ndarray] p_max: Optional[np.ndarray] - mask: Optional[np.ndarray] def __init__( self, frame: str, indices: Iterable[int] = [], - mask: Optional[np.ndarray] = None, min: Optional[np.ndarray] = None, max: Optional[np.ndarray] = None, gain: Union[float, np.ndarray] = 1.0, From 79985204bd084e3f7b17db0729e38e783c5b58c7 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Tue, 7 May 2024 01:05:17 +0300 Subject: [PATCH 023/101] feat: body spherical self-collision barrier --- pink/barriers/__init__.py | 1 + pink/barriers/body_spherical_barrier.py | 68 +++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 pink/barriers/body_spherical_barrier.py diff --git a/pink/barriers/__init__.py b/pink/barriers/__init__.py index 7b9f7022..ebb11ddd 100644 --- a/pink/barriers/__init__.py +++ b/pink/barriers/__init__.py @@ -1,3 +1,4 @@ from .barrier import CBF +from .body_spherical_barrier import BodySphericalCBF from .configuration_barrier import ConfigurationCBF from .position_barrier import PositionCBF diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py new file mode 100644 index 00000000..0b505d65 --- /dev/null +++ b/pink/barriers/body_spherical_barrier.py @@ -0,0 +1,68 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""General description""" + +from typing import Iterable, Optional, Union + +import numpy as np + +from ..configuration import Configuration +from .barrier import CBF + + +class BodySphericalCBF(CBF): + r"""Abstract class description. + + Attributes: + ... + """ + + frames: tuple[str, str] + d_min: float + + def __init__( + self, + frame: tuple[str, str], + d_min: float = None, + gain: Union[float, np.ndarray] = 1.0, + r: float = 3.0, + ): + """...""" + super().__init__( + dim=1, + gain=gain, + # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), + r=r, + ) + self.frame = frame + self.d_min = d_min + + def compute_barrier(self, configuration: Configuration) -> np.ndarray: + """...""" + pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + + return np.array([np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2]) + + def compute_jacobian(self, configuration: Configuration) -> np.ndarray: + """...""" + pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + + pos1_jac = configuration.get_frame_jacobian(self.frame[0])[:3] + # Transform jacobian to world aligned frame + rotation1 = configuration.get_transform_frame_to_world(self.frame[0]).rotation + pos1_jac = rotation1 @ pos1_jac + + pos2_jac = configuration.get_frame_jacobian(self.frame[1])[:3] + # Transform jacobian to world aligned frame + rotation2 = configuration.get_transform_frame_to_world(self.frame[1]).rotation + pos2_jac = rotation2 @ pos2_jac + + dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) + dx_dq = np.vstack([pos1_jac, pos2_jac]) + return dh_dx.T @ dx_dq From 8948015411b7203fdf399cd4ef562bd68576a21e Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Tue, 7 May 2024 01:05:31 +0300 Subject: [PATCH 024/101] example: yumi example --- examples/cbf/arms_yumi.py | 148 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 examples/cbf/arms_yumi.py diff --git a/examples/cbf/arms_yumi.py b/examples/cbf/arms_yumi.py new file mode 100644 index 00000000..0b377c6b --- /dev/null +++ b/examples/cbf/arms_yumi.py @@ -0,0 +1,148 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""Universal Robots UR5 arm tracking a moving target.""" + +import meshcat_shapes +import numpy as np +import qpsolvers +from loop_rate_limiters import RateLimiter + +import pink +from pink import solve_ik +from pink.barriers import BodySphericalCBF, ConfigurationCBF +from pink.tasks import FrameTask, PostureTask +from pink.visualization import start_meshcat_visualizer + +try: + from robot_descriptions.loaders.pinocchio import load_robot_description +except ModuleNotFoundError as exc: + raise ModuleNotFoundError( + "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" + ) from exc # noqa: E501 + + +if __name__ == "__main__": + robot = load_robot_description("yumi_description", root_joint=None) + + viz = start_meshcat_visualizer(robot) + + left_end_effector_task = FrameTask( + "yumi_link_7_l", + position_cost=50.0, # [cost] / [m] + orientation_cost=1.0, # [cost] / [rad] + lm_damping=100, # tuned for this setup + ) + right_end_effector_task = FrameTask( + "yumi_link_7_r", + position_cost=50.0, # [cost] / [m] + orientation_cost=1.0, # [cost] / [rad] + lm_damping=100, # tuned for this setup + ) + + pos_cbf = BodySphericalCBF( + ("yumi_link_7_l", "yumi_link_7_r"), + d_min=0.2, + gain=100.0, + r=1.0, + ) + + posture_task = PostureTask( + cost=1e-3, # [cost] / [rad] + ) + + configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=100.0) + cbf_list = [pos_cbf, configuration_cbf] + tasks = [left_end_effector_task, right_end_effector_task, posture_task] + + q_ref = np.array( + [ + 0.045, + -0.155, + -0.394, + -0.617, + -0.939, + -0.343, + -1.216, + 0, + 0, + -0.374, + -0.249, + 0.562, + -0.520, + 0.934, + -0.337, + 1.400, + 0, + 0, + ] + ) + configuration = pink.Configuration(robot.model, robot.data, q_ref) + for task in tasks: + task.set_target_from_configuration(configuration) + viz.display(configuration.q) + + viewer = viz.viewer + meshcat_shapes.frame(viewer["left_end_effector"], opacity=1.0) + meshcat_shapes.frame(viewer["right_end_effector"], opacity=1.0) + meshcat_shapes.frame(viewer["left_end_effector_target"], opacity=1.0) + meshcat_shapes.frame(viewer["right_end_effector_target"], opacity=1.0) + + # Select QP solver + solver = qpsolvers.available_solvers[0] + if "osqp" in qpsolvers.available_solvers: + solver = "osqp" + + rate = RateLimiter(frequency=200.0) + dt = rate.period + t = 0.0 # [s] + l_y_des = np.array([0.392, 0.392, 0.6]) + r_y_des = np.array([0.392, 0.392, 0.6]) + l_dy_des = np.zeros(3) + r_dy_des = np.zeros(3) + + while True: + # Calculate desired trajectory + A = 0.1 + B = 0.1 + # z -- 0.4 - 0.8 + l_y_des[:] = 0.6, 0.1 + B * np.sin(t), 0.6 + A * np.sin(t) + r_y_des[:] = 0.6, -0.1 - B * np.sin(t), 0.6 + A * np.sin(t) + l_dy_des[:] = 0, B * np.cos(t), A * np.cos(t) + r_dy_des[:] = 0, -B * np.cos(t), A * np.cos(t) + + left_end_effector_task.transform_target_to_world.translation = l_y_des + right_end_effector_task.transform_target_to_world.translation = r_y_des + + # Update visualization frames + viewer["left_end_effector"].set_transform( + configuration.get_transform_frame_to_world(left_end_effector_task.frame).np + ) + viewer["right_end_effector"].set_transform( + configuration.get_transform_frame_to_world(right_end_effector_task.frame).np + ) + viewer["left_end_effector_target"].set_transform(l_y_des) + viewer["right_end_effector_target"].set_transform(r_y_des) + + # Compute velocity and integrate it into next configuration + # Note that default position limit handle given trajectory + # much worse than CBF. Hence, we disable it here. + velocity = solve_ik( + configuration, + tasks, + dt, + solver=solver, + cbfs=cbf_list, + use_position_limit=False, + ) + configuration.integrate_inplace(velocity, dt) + print( + f"Distance between end effectors: {np.linalg.norm(configuration.get_transform_frame_to_world('yumi_link_7_l').translation - configuration.get_transform_frame_to_world('yumi_link_7_r').translation)*100 :0.1f}cm" # noqa: E501 + ) + # Visualize result at fixed FPS + viz.display(configuration.q) + rate.sleep() + t += dt From 0f94a6c0ce934c73b486f1ad5a45d8d995f7215f Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 00:42:20 +0300 Subject: [PATCH 025/101] feat: full self-collision barrier init --- pink/barriers/__init__.py | 1 + pink/barriers/self_collision_barrier.py | 140 ++++++++++++++++++++++++ 2 files changed, 141 insertions(+) create mode 100644 pink/barriers/self_collision_barrier.py diff --git a/pink/barriers/__init__.py b/pink/barriers/__init__.py index ebb11ddd..8f88d0ae 100644 --- a/pink/barriers/__init__.py +++ b/pink/barriers/__init__.py @@ -2,3 +2,4 @@ from .body_spherical_barrier import BodySphericalCBF from .configuration_barrier import ConfigurationCBF from .position_barrier import PositionCBF +from .self_collision_barrier import SelfCollisionBarrier diff --git a/pink/barriers/self_collision_barrier.py b/pink/barriers/self_collision_barrier.py new file mode 100644 index 00000000..f0b49aa7 --- /dev/null +++ b/pink/barriers/self_collision_barrier.py @@ -0,0 +1,140 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""General description""" + +from typing import Union + +import numpy as np +import pinocchio as pin + +from ..configuration import Configuration +from .barrier import CBF + + +class SelfCollisionBarrier(CBF): + r"""Abstract class description. + + Attributes: + ... + """ + + frames: tuple[str, str] + d_min: float + + def __init__( + self, + model: pin.RobotWrapper, + exclude_pairs: list[tuple[str, str]] = [], + gain: Union[float, np.ndarray] = 1.0, + r: float = 3.0, + ): + """...""" + self.model = model + self.model.collision_model.addAllCollisionPairs() + for frame1, frame2 in exclude_pairs: + print(frame1, frame2) + self.model.collision_model.removeCollisionPair( + pin.CollisionPair( + self.model.model.getFrameId(frame1), + self.model.model.getFrameId(frame2), + ) + ) + self.model.collision_data.deactivateCollisionPair( + self.model.model.getFrameId(frame1), + self.model.model.getFrameId(frame2), + ) + + super().__init__( + dim=len(self.model.collision_model.collisionPairs), + gain=gain, + # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), + r=r, + ) + + self.__q_prev = None + + def __update_collisions(self, configuration: Configuration): + if self.__q_prev is not None and np.allclose(configuration.q, self.__q_prev): + return + self.__q_prev = configuration.q.copy() + + pin.computeCollisions( + self.model.model, + self.model.data, + self.model.collision_model, + self.model.collision_data, + configuration.q, + False, + ) + print("Two") + pin.computeDistances( + self.model.model, + self.model.data, + self.model.collision_model, + self.model.collision_data, + configuration.q, + ) + print("hi!") + pin.updateGeometryPlacements( + self.model.model, + self.model.data, + self.model.collision_model, + self.model.collision_data, + configuration.q, + ) + print("Here?") + + def compute_barrier(self, configuration: Configuration) -> np.ndarray: + """...""" + self.__update_collisions(configuration) + print("Here??") + return np.array( + [ + self.model.collision_data.distanceResults[k].min_distance + for k in range(len(self.model.collision_model.collisionPairs)) + ] + ) + + def compute_jacobian(self, configuration: Configuration) -> np.ndarray: + """...""" + self.__update_collisions(configuration) + + J = np.zeros((self.dim, self.model.nq)) + Jrow_v = np.zeros(self.model.nv) + + for k in range(len(self.model.collision_model.collisionPairs)): + cp = self.model.collision_model.collisionPairs[k] + dr = self.model.collision_data.distanceResults[k] + + go_1 = self.model.collision_model.geometryObjects[cp.first] + go_2 = self.model.collision_model.geometryObjects[cp.second] + + j1_id = go_1.parentJoint + j2_id = go_2.parentJoint + if j1_id - j2_id == 1: + continue + w1 = dr.getNearestPoint1() + r1 = w1 - self.model.data.oMi[j1_id].translation + ddr_dw1 = -dr.normal.reshape(1, -1) + dw1_dj1 = np.block([np.eye(3), -pin.skew(r1)]) + dj1_dq = pin.getJointJacobian( + self.model.model, self.model.data, j1_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED + ) + Jrow_v = ddr_dw1 @ dw1_dj1 @ dj1_dq + + w2 = dr.getNearestPoint1() + r2 = w2 - self.model.data.oMi[j2_id].translation + ddr_dw2 = dr.normal.reshape(1, -1) + dw2_dj2 = np.block([np.eye(3), -pin.skew(r2)]) + dj2_dq = pin.getJointJacobian( + self.model.model, self.model.data, j1_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED + ) + Jrow_v = ddr_dw2 @ dw2_dj2 @ dj2_dq + + J[k] = Jrow_v + print("Here????") + return J From 472e78bfc6bd714b2ba99c63a87958f8efae0beb Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 00:42:37 +0300 Subject: [PATCH 026/101] example: baxter example --- examples/cbf/arms_baxter.py | 134 ++++++++++++++++++++++++++++++++++++ 1 file changed, 134 insertions(+) create mode 100644 examples/cbf/arms_baxter.py diff --git a/examples/cbf/arms_baxter.py b/examples/cbf/arms_baxter.py new file mode 100644 index 00000000..9f33724f --- /dev/null +++ b/examples/cbf/arms_baxter.py @@ -0,0 +1,134 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# +# SPDX-License-Identifier: Apache-2.0 +# Copyright 2022 Stéphane Caron + +"""Universal Robots UR5 arm tracking a moving target.""" + +import meshcat_shapes +import numpy as np +import qpsolvers +from loop_rate_limiters import RateLimiter + +import pink +from pink import solve_ik +from pink.barriers import SelfCollisionBarrier, ConfigurationCBF +from pink.tasks import FrameTask, PostureTask +from pink.visualization import start_meshcat_visualizer + +try: + from robot_descriptions.loaders.pinocchio import load_robot_description +except ModuleNotFoundError as exc: + raise ModuleNotFoundError( + "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" + ) from exc # noqa: E501 + + +if __name__ == "__main__": + robot = load_robot_description("baxter_description", root_joint=None) + + viz = start_meshcat_visualizer(robot) + + left_end_effector_task = FrameTask( + "left_wrist", + position_cost=50.0, # [cost] / [m] + orientation_cost=1.0, # [cost] / [rad] + lm_damping=100, # tuned for this setup + ) + right_end_effector_task = FrameTask( + "right_wrist", + position_cost=50.0, # [cost] / [m] + orientation_cost=1.0, # [cost] / [rad] + lm_damping=100, # tuned for this setup + ) + + pos_cbf = SelfCollisionBarrier( + robot, + # exclude_pairs=[ + # ( + # f"yumi_link_{i}_{side}", + # f"yumi_link_{i+1}_{side}", + # ) + # for i in range(6) + # for side in ["l", "r"] + # ], + gain=100.0, + r=1.0, + ) + + posture_task = PostureTask( + cost=1e-3, # [cost] / [rad] + ) + + configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=100.0) + cbf_list = [pos_cbf, configuration_cbf] + tasks = [left_end_effector_task, right_end_effector_task, posture_task] + + q_ref = np.zeros(robot.nq) + configuration = pink.Configuration(robot.model, robot.data, q_ref) + for task in tasks: + task.set_target_from_configuration(configuration) + viz.display(configuration.q) + + viewer = viz.viewer + meshcat_shapes.frame(viewer["left_end_effector"], opacity=1.0) + meshcat_shapes.frame(viewer["right_end_effector"], opacity=1.0) + meshcat_shapes.frame(viewer["left_end_effector_target"], opacity=1.0) + meshcat_shapes.frame(viewer["right_end_effector_target"], opacity=1.0) + + # Select QP solver + solver = qpsolvers.available_solvers[0] + if "osqp" in qpsolvers.available_solvers: + solver = "osqp" + + rate = RateLimiter(frequency=200.0) + dt = rate.period + t = 0.0 # [s] + l_y_des = np.array([0.392, 0.392, 0.6]) + r_y_des = np.array([0.392, 0.392, 0.6]) + l_dy_des = np.zeros(3) + r_dy_des = np.zeros(3) + + while True: + # Calculate desired trajectory + A = 0.1 + B = 0.1 + # z -- 0.4 - 0.8 + l_y_des[:] = 0.6, 0.1 + B * np.sin(t), 0.6 + A * np.sin(t) + r_y_des[:] = 0.6, -0.1 - B * np.sin(t), 0.6 + A * np.sin(t) + l_dy_des[:] = 0, B * np.cos(t), A * np.cos(t) + r_dy_des[:] = 0, -B * np.cos(t), A * np.cos(t) + + left_end_effector_task.transform_target_to_world.translation = l_y_des + right_end_effector_task.transform_target_to_world.translation = r_y_des + + # Update visualization frames + viewer["left_end_effector"].set_transform( + configuration.get_transform_frame_to_world(left_end_effector_task.frame).np + ) + viewer["right_end_effector"].set_transform( + configuration.get_transform_frame_to_world(right_end_effector_task.frame).np + ) + viewer["left_end_effector_target"].set_transform(l_y_des) + viewer["right_end_effector_target"].set_transform(r_y_des) + + # Compute velocity and integrate it into next configuration + # Note that default position limit handle given trajectory + # much worse than CBF. Hence, we disable it here. + velocity = solve_ik( + configuration, + tasks, + dt, + solver=solver, + cbfs=cbf_list, + use_position_limit=False, + ) + configuration.integrate_inplace(velocity, dt) + print( + f"Distance between end effectors: {np.linalg.norm(configuration.get_transform_frame_to_world('yumi_link_7_l').translation - configuration.get_transform_frame_to_world('yumi_link_7_r').translation)*100 :0.1f}cm" # noqa: E501 + ) + # Visualize result at fixed FPS + viz.display(configuration.q) + rate.sleep() + t += dt From 1b22d8a3ad34619624cea9875e57896c1e115bb2 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 18:41:37 +0300 Subject: [PATCH 027/101] revert: remove hpp-fcl self-collision code (moved to separate branch) --- examples/cbf/arms_baxter.py | 134 ----------------------- pink/barriers/__init__.py | 1 - pink/barriers/self_collision_barrier.py | 140 ------------------------ 3 files changed, 275 deletions(-) delete mode 100644 examples/cbf/arms_baxter.py delete mode 100644 pink/barriers/self_collision_barrier.py diff --git a/examples/cbf/arms_baxter.py b/examples/cbf/arms_baxter.py deleted file mode 100644 index 9f33724f..00000000 --- a/examples/cbf/arms_baxter.py +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# SPDX-License-Identifier: Apache-2.0 -# Copyright 2022 Stéphane Caron - -"""Universal Robots UR5 arm tracking a moving target.""" - -import meshcat_shapes -import numpy as np -import qpsolvers -from loop_rate_limiters import RateLimiter - -import pink -from pink import solve_ik -from pink.barriers import SelfCollisionBarrier, ConfigurationCBF -from pink.tasks import FrameTask, PostureTask -from pink.visualization import start_meshcat_visualizer - -try: - from robot_descriptions.loaders.pinocchio import load_robot_description -except ModuleNotFoundError as exc: - raise ModuleNotFoundError( - "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" - ) from exc # noqa: E501 - - -if __name__ == "__main__": - robot = load_robot_description("baxter_description", root_joint=None) - - viz = start_meshcat_visualizer(robot) - - left_end_effector_task = FrameTask( - "left_wrist", - position_cost=50.0, # [cost] / [m] - orientation_cost=1.0, # [cost] / [rad] - lm_damping=100, # tuned for this setup - ) - right_end_effector_task = FrameTask( - "right_wrist", - position_cost=50.0, # [cost] / [m] - orientation_cost=1.0, # [cost] / [rad] - lm_damping=100, # tuned for this setup - ) - - pos_cbf = SelfCollisionBarrier( - robot, - # exclude_pairs=[ - # ( - # f"yumi_link_{i}_{side}", - # f"yumi_link_{i+1}_{side}", - # ) - # for i in range(6) - # for side in ["l", "r"] - # ], - gain=100.0, - r=1.0, - ) - - posture_task = PostureTask( - cost=1e-3, # [cost] / [rad] - ) - - configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=100.0) - cbf_list = [pos_cbf, configuration_cbf] - tasks = [left_end_effector_task, right_end_effector_task, posture_task] - - q_ref = np.zeros(robot.nq) - configuration = pink.Configuration(robot.model, robot.data, q_ref) - for task in tasks: - task.set_target_from_configuration(configuration) - viz.display(configuration.q) - - viewer = viz.viewer - meshcat_shapes.frame(viewer["left_end_effector"], opacity=1.0) - meshcat_shapes.frame(viewer["right_end_effector"], opacity=1.0) - meshcat_shapes.frame(viewer["left_end_effector_target"], opacity=1.0) - meshcat_shapes.frame(viewer["right_end_effector_target"], opacity=1.0) - - # Select QP solver - solver = qpsolvers.available_solvers[0] - if "osqp" in qpsolvers.available_solvers: - solver = "osqp" - - rate = RateLimiter(frequency=200.0) - dt = rate.period - t = 0.0 # [s] - l_y_des = np.array([0.392, 0.392, 0.6]) - r_y_des = np.array([0.392, 0.392, 0.6]) - l_dy_des = np.zeros(3) - r_dy_des = np.zeros(3) - - while True: - # Calculate desired trajectory - A = 0.1 - B = 0.1 - # z -- 0.4 - 0.8 - l_y_des[:] = 0.6, 0.1 + B * np.sin(t), 0.6 + A * np.sin(t) - r_y_des[:] = 0.6, -0.1 - B * np.sin(t), 0.6 + A * np.sin(t) - l_dy_des[:] = 0, B * np.cos(t), A * np.cos(t) - r_dy_des[:] = 0, -B * np.cos(t), A * np.cos(t) - - left_end_effector_task.transform_target_to_world.translation = l_y_des - right_end_effector_task.transform_target_to_world.translation = r_y_des - - # Update visualization frames - viewer["left_end_effector"].set_transform( - configuration.get_transform_frame_to_world(left_end_effector_task.frame).np - ) - viewer["right_end_effector"].set_transform( - configuration.get_transform_frame_to_world(right_end_effector_task.frame).np - ) - viewer["left_end_effector_target"].set_transform(l_y_des) - viewer["right_end_effector_target"].set_transform(r_y_des) - - # Compute velocity and integrate it into next configuration - # Note that default position limit handle given trajectory - # much worse than CBF. Hence, we disable it here. - velocity = solve_ik( - configuration, - tasks, - dt, - solver=solver, - cbfs=cbf_list, - use_position_limit=False, - ) - configuration.integrate_inplace(velocity, dt) - print( - f"Distance between end effectors: {np.linalg.norm(configuration.get_transform_frame_to_world('yumi_link_7_l').translation - configuration.get_transform_frame_to_world('yumi_link_7_r').translation)*100 :0.1f}cm" # noqa: E501 - ) - # Visualize result at fixed FPS - viz.display(configuration.q) - rate.sleep() - t += dt diff --git a/pink/barriers/__init__.py b/pink/barriers/__init__.py index 8f88d0ae..ebb11ddd 100644 --- a/pink/barriers/__init__.py +++ b/pink/barriers/__init__.py @@ -2,4 +2,3 @@ from .body_spherical_barrier import BodySphericalCBF from .configuration_barrier import ConfigurationCBF from .position_barrier import PositionCBF -from .self_collision_barrier import SelfCollisionBarrier diff --git a/pink/barriers/self_collision_barrier.py b/pink/barriers/self_collision_barrier.py deleted file mode 100644 index f0b49aa7..00000000 --- a/pink/barriers/self_collision_barrier.py +++ /dev/null @@ -1,140 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# SPDX-License-Identifier: Apache-2.0 -# Copyright 2022 Stéphane Caron - -"""General description""" - -from typing import Union - -import numpy as np -import pinocchio as pin - -from ..configuration import Configuration -from .barrier import CBF - - -class SelfCollisionBarrier(CBF): - r"""Abstract class description. - - Attributes: - ... - """ - - frames: tuple[str, str] - d_min: float - - def __init__( - self, - model: pin.RobotWrapper, - exclude_pairs: list[tuple[str, str]] = [], - gain: Union[float, np.ndarray] = 1.0, - r: float = 3.0, - ): - """...""" - self.model = model - self.model.collision_model.addAllCollisionPairs() - for frame1, frame2 in exclude_pairs: - print(frame1, frame2) - self.model.collision_model.removeCollisionPair( - pin.CollisionPair( - self.model.model.getFrameId(frame1), - self.model.model.getFrameId(frame2), - ) - ) - self.model.collision_data.deactivateCollisionPair( - self.model.model.getFrameId(frame1), - self.model.model.getFrameId(frame2), - ) - - super().__init__( - dim=len(self.model.collision_model.collisionPairs), - gain=gain, - # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), - r=r, - ) - - self.__q_prev = None - - def __update_collisions(self, configuration: Configuration): - if self.__q_prev is not None and np.allclose(configuration.q, self.__q_prev): - return - self.__q_prev = configuration.q.copy() - - pin.computeCollisions( - self.model.model, - self.model.data, - self.model.collision_model, - self.model.collision_data, - configuration.q, - False, - ) - print("Two") - pin.computeDistances( - self.model.model, - self.model.data, - self.model.collision_model, - self.model.collision_data, - configuration.q, - ) - print("hi!") - pin.updateGeometryPlacements( - self.model.model, - self.model.data, - self.model.collision_model, - self.model.collision_data, - configuration.q, - ) - print("Here?") - - def compute_barrier(self, configuration: Configuration) -> np.ndarray: - """...""" - self.__update_collisions(configuration) - print("Here??") - return np.array( - [ - self.model.collision_data.distanceResults[k].min_distance - for k in range(len(self.model.collision_model.collisionPairs)) - ] - ) - - def compute_jacobian(self, configuration: Configuration) -> np.ndarray: - """...""" - self.__update_collisions(configuration) - - J = np.zeros((self.dim, self.model.nq)) - Jrow_v = np.zeros(self.model.nv) - - for k in range(len(self.model.collision_model.collisionPairs)): - cp = self.model.collision_model.collisionPairs[k] - dr = self.model.collision_data.distanceResults[k] - - go_1 = self.model.collision_model.geometryObjects[cp.first] - go_2 = self.model.collision_model.geometryObjects[cp.second] - - j1_id = go_1.parentJoint - j2_id = go_2.parentJoint - if j1_id - j2_id == 1: - continue - w1 = dr.getNearestPoint1() - r1 = w1 - self.model.data.oMi[j1_id].translation - ddr_dw1 = -dr.normal.reshape(1, -1) - dw1_dj1 = np.block([np.eye(3), -pin.skew(r1)]) - dj1_dq = pin.getJointJacobian( - self.model.model, self.model.data, j1_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED - ) - Jrow_v = ddr_dw1 @ dw1_dj1 @ dj1_dq - - w2 = dr.getNearestPoint1() - r2 = w2 - self.model.data.oMi[j2_id].translation - ddr_dw2 = dr.normal.reshape(1, -1) - dw2_dj2 = np.block([np.eye(3), -pin.skew(r2)]) - dj2_dq = pin.getJointJacobian( - self.model.model, self.model.data, j1_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED - ) - Jrow_v = ddr_dw2 @ dw2_dj2 @ dj2_dq - - J[k] = Jrow_v - print("Here????") - return J From 63b796348f648c74598082fc7eeeccf93c48a40d Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 19:44:41 +0300 Subject: [PATCH 028/101] refactor: ruff format --- examples/cbf/arm_ur5.py | 21 ++++++++++++---- examples/cbf/arms_yumi.py | 11 ++++++--- pink/barriers/barrier.py | 17 ++++++++++--- pink/barriers/body_spherical_barrier.py | 32 ++++++++++++++++++------- pink/barriers/configuration_barrier.py | 12 +++++++--- pink/barriers/position_barrier.py | 8 +++++-- 6 files changed, 77 insertions(+), 24 deletions(-) diff --git a/examples/cbf/arm_ur5.py b/examples/cbf/arm_ur5.py index 1c8ee001..733148e6 100644 --- a/examples/cbf/arm_ur5.py +++ b/examples/cbf/arm_ur5.py @@ -21,7 +21,8 @@ from robot_descriptions.loaders.pinocchio import load_robot_description except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" + "Examples need robot_descriptions, " + "try ``pip install robot_descriptions``" ) from exc # noqa: E501 @@ -87,7 +88,11 @@ # Update visualization frames viewer["end_effector_target"].set_transform(end_effector_target.np) - viewer["end_effector"].set_transform(configuration.get_transform_frame_to_world(end_effector_task.frame).np) + viewer["end_effector"].set_transform( + configuration.get_transform_frame_to_world( + end_effector_task.frame + ).np + ) # Compute velocity and integrate it into next configuration # Note that default position limit handle given trajectory @@ -104,9 +109,15 @@ G, h = pos_cbf.compute_qp_inequality(configuration, dt=dt) print(f"Task error: {end_effector_task.compute_error(configuration)}") - print(f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0") - print(f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0") - print(f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6") + print( + f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0" + ) + print( + f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0" + ) + print( + f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6" + ) print("-" * 60) # Visualize result at fixed FPS viz.display(configuration.q) diff --git a/examples/cbf/arms_yumi.py b/examples/cbf/arms_yumi.py index 0b377c6b..c97be6d6 100644 --- a/examples/cbf/arms_yumi.py +++ b/examples/cbf/arms_yumi.py @@ -21,7 +21,8 @@ from robot_descriptions.loaders.pinocchio import load_robot_description except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" + "Examples need robot_descriptions, " + "try ``pip install robot_descriptions``" ) from exc # noqa: E501 @@ -119,10 +120,14 @@ # Update visualization frames viewer["left_end_effector"].set_transform( - configuration.get_transform_frame_to_world(left_end_effector_task.frame).np + configuration.get_transform_frame_to_world( + left_end_effector_task.frame + ).np ) viewer["right_end_effector"].set_transform( - configuration.get_transform_frame_to_world(right_end_effector_task.frame).np + configuration.get_transform_frame_to_world( + right_end_effector_task.frame + ).np ) viewer["left_end_effector_target"].set_transform(l_y_des) viewer["right_end_effector_target"].set_transform(r_y_des) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index abf811e8..0ed620d5 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -35,7 +35,9 @@ def __init__( ): """...""" self.dim = dim - self.gain = gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain + self.gain = ( + gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain + ) self.class_k_fn = class_k_fn if class_k_fn is not None else lambda x: x self.r = r @@ -67,7 +69,11 @@ def compute_qp_objective( if self.r > 1e-6: safe_policy = self.compute_safe_policy(configuration) - H += self.r / (np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) + H += ( + self.r + / (np.linalg.norm(jac) ** 2) + * np.eye(configuration.model.nq) + ) c += -2 * self.r / (np.linalg.norm(jac) ** 2) * safe_policy return (H, c) @@ -80,7 +86,12 @@ def compute_qp_inequality( """...""" G = -self.compute_jacobian(configuration) / dt barrier_value = self.compute_barrier(configuration) - h = np.array([self.gain[i] * self.class_k_fn(barrier_value[i]) for i in range(self.dim)]) + h = np.array( + [ + self.gain[i] * self.class_k_fn(barrier_value[i]) + for i in range(self.dim) + ] + ) return (G, h) diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index 0b505d65..0b689ac9 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -43,26 +43,42 @@ def __init__( def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation - pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + pos1_world = configuration.get_transform_frame_to_world( + self.frame[0] + ).translation + pos2_world = configuration.get_transform_frame_to_world( + self.frame[1] + ).translation - return np.array([np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2]) + return np.array( + [np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2] + ) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation - pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + pos1_world = configuration.get_transform_frame_to_world( + self.frame[0] + ).translation + pos2_world = configuration.get_transform_frame_to_world( + self.frame[1] + ).translation pos1_jac = configuration.get_frame_jacobian(self.frame[0])[:3] # Transform jacobian to world aligned frame - rotation1 = configuration.get_transform_frame_to_world(self.frame[0]).rotation + rotation1 = configuration.get_transform_frame_to_world( + self.frame[0] + ).rotation pos1_jac = rotation1 @ pos1_jac pos2_jac = configuration.get_frame_jacobian(self.frame[1])[:3] # Transform jacobian to world aligned frame - rotation2 = configuration.get_transform_frame_to_world(self.frame[1]).rotation + rotation2 = configuration.get_transform_frame_to_world( + self.frame[1] + ).rotation pos2_jac = rotation2 @ pos2_jac - dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) + dh_dx = 2 * np.concatenate( + [pos1_world - pos2_world, pos2_world - pos1_world] + ) dx_dq = np.vstack([pos1_jac, pos2_jac]) return dh_dx.T @ dx_dq diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index 166c30be..4840c59b 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -77,9 +77,15 @@ def __init__( def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" q = configuration.q - delta_q_max = pin.difference(self.model, q, self.model.upperPositionLimit) - delta_q_min = pin.difference(self.model, q, self.model.lowerPositionLimit) - return np.hstack([-delta_q_min[self.indices], delta_q_max[self.indices]]) + delta_q_max = pin.difference( + self.model, q, self.model.upperPositionLimit + ) + delta_q_min = pin.difference( + self.model, q, self.model.lowerPositionLimit + ) + return np.hstack( + [-delta_q_min[self.indices], delta_q_max[self.indices]] + ) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 7d32ecb0..38521ffe 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -59,7 +59,9 @@ def __init__( def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" - pos_world = configuration.get_transform_frame_to_world(self.frame).translation + pos_world = configuration.get_transform_frame_to_world( + self.frame + ).translation cbfs = [] if self.p_min is not None: cbfs.append(pos_world[self.indices] - self.p_min) @@ -72,7 +74,9 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" pos_jac = configuration.get_frame_jacobian(self.frame)[:3] # Transform jacobian to world aligned frame - rotation = configuration.get_transform_frame_to_world(self.frame).rotation + rotation = configuration.get_transform_frame_to_world( + self.frame + ).rotation pos_jac = rotation @ pos_jac # Select only relevant indices From 985acb1e6f9754a8a388d8990b21465fc4c4573c Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 21:12:16 +0300 Subject: [PATCH 029/101] CICD: create pipeline for building gh pages from feat/cbf branch --- .github/workflows/docs_cbf.yml | 41 ++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 .github/workflows/docs_cbf.yml diff --git a/.github/workflows/docs_cbf.yml b/.github/workflows/docs_cbf.yml new file mode 100644 index 00000000..5bd3ad3c --- /dev/null +++ b/.github/workflows/docs_cbf.yml @@ -0,0 +1,41 @@ +name: Documentation from feat/cbf branch + +on: + push: + branches: [ feat/cbf ] + +defaults: + run: + # See https://github.com/mamba-org/provision-with-micromamba#important + shell: bash -l {0} + +jobs: + docs: + name: "GitHub Pages" + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - name: "Checkout Git repository" + uses: actions/checkout@v3 + + - name: "Install Conda environment with Micromamba" + uses: mamba-org/provision-with-micromamba@main + with: + cache-downloads: true + cache-env: true + environment-file: doc/environment.yml + environment-name: pink + + - name: "Build documentation" + run: + sphinx-build doc _build -W + + - name: "Deploy to GitHub Pages" + uses: peaceiris/actions-gh-pages@v3 + if: ${{ github.event_name == 'push' }} + with: + publish_branch: gh-pages-cbf + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: _build/ + force_orphan: true From e61d44cb95fe62866309c37dfea71ffe1812eebf Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 21:26:38 +0300 Subject: [PATCH 030/101] docs: add barriers to documentation --- doc/barriers.rst | 28 ++++++++++++++++++++++++++++ doc/index.rst | 2 ++ 2 files changed, 30 insertions(+) create mode 100644 doc/barriers.rst diff --git a/doc/barriers.rst b/doc/barriers.rst new file mode 100644 index 00000000..9d3ed5af --- /dev/null +++ b/doc/barriers.rst @@ -0,0 +1,28 @@ +:github_url: https://github.com/stephane-caron/pink/tree/main/doc/barriers.rst + +.. _Barriers: + +**** +Barriers +**** + +.. automodule:: pink.barriers + :members: + +Position Barrier +================= + +.. automodule:: pink.barriers.position_barrier + :members: + +Configuration Barrier +===================== + +.. automodule:: pink.barriers.configuration_barrier + :members: + +Spherical Collision-Avoidance Barrier +==================================== + +.. automodule:: pink.barriers.body_shperical_barrier + :members: diff --git a/doc/index.rst b/doc/index.rst index 3004238d..d3523e9f 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -20,6 +20,8 @@ Inverse kinematics in Pink is defined by weighted :ref:`tasks ` and :ref: introduction.rst tasks.rst limits.rst + barriers.rst inverse-kinematics.rst developer-notes.rst references.rst + From a5803d1aac5494a67e7b115d23bd2e9203dce3f9 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 21:27:52 +0300 Subject: [PATCH 031/101] docs: fix documentation --- doc/barriers.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/barriers.rst b/doc/barriers.rst index 9d3ed5af..74e22162 100644 --- a/doc/barriers.rst +++ b/doc/barriers.rst @@ -2,9 +2,9 @@ .. _Barriers: -**** +******** Barriers -**** +******** .. automodule:: pink.barriers :members: From 2a2fa25fb42c70b80434fc89860e0fdfed52c7ce Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 21:34:11 +0300 Subject: [PATCH 032/101] docs: yet another attempt to fix documentation --- doc/barriers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/barriers.rst b/doc/barriers.rst index 74e22162..f94b8f9d 100644 --- a/doc/barriers.rst +++ b/doc/barriers.rst @@ -22,7 +22,7 @@ Configuration Barrier :members: Spherical Collision-Avoidance Barrier -==================================== +===================================== .. automodule:: pink.barriers.body_shperical_barrier :members: From 4a45d489dc6c0213369ec33e74d96543d40115ac Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Fri, 10 May 2024 21:37:05 +0300 Subject: [PATCH 033/101] docs: kill me --- doc/barriers.rst | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/barriers.rst b/doc/barriers.rst index f94b8f9d..2dffa012 100644 --- a/doc/barriers.rst +++ b/doc/barriers.rst @@ -24,5 +24,5 @@ Configuration Barrier Spherical Collision-Avoidance Barrier ===================================== -.. automodule:: pink.barriers.body_shperical_barrier +.. automodule:: pink.barriers.body_spherical_barrier :members: From 58593542202252c31c23e974468b7f16d518ddd2 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 00:15:31 +0300 Subject: [PATCH 034/101] feat: shift point for spherical body collision avoidance barrier --- pink/barriers/body_spherical_barrier.py | 56 ++++++++++--------------- 1 file changed, 23 insertions(+), 33 deletions(-) diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index 0b689ac9..30daa2dd 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -5,10 +5,10 @@ # Copyright 2022 Stéphane Caron """General description""" - -from typing import Iterable, Optional, Union +from typing import Union import numpy as np +import pinocchio as pin from ..configuration import Configuration from .barrier import CBF @@ -26,8 +26,10 @@ class BodySphericalCBF(CBF): def __init__( self, - frame: tuple[str, str], - d_min: float = None, + frames: tuple[str, str], + O1: np.ndarray | None = None, + O2: np.ndarray | None = None, + d_min: float = 0, gain: Union[float, np.ndarray] = 1.0, r: float = 3.0, ): @@ -38,47 +40,35 @@ def __init__( # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), r=r, ) - self.frame = frame + self.frame = frames + self.O1 = O1 if O1 is not None else np.zeros(3) + self.O2 = O2 if O2 is not None else np.zeros(3) self.d_min = d_min def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world( - self.frame[0] - ).translation - pos2_world = configuration.get_transform_frame_to_world( - self.frame[1] - ).translation + pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + self.O1 + pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + self.O2 - return np.array( - [np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2] - ) + return np.array([np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2]) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world( - self.frame[0] - ).translation - pos2_world = configuration.get_transform_frame_to_world( - self.frame[1] - ).translation + pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + self.O1 + pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + self.O2 - pos1_jac = configuration.get_frame_jacobian(self.frame[0])[:3] + pos1_jac = configuration.get_frame_jacobian(self.frame[0]) # Transform jacobian to world aligned frame - rotation1 = configuration.get_transform_frame_to_world( - self.frame[0] - ).rotation - pos1_jac = rotation1 @ pos1_jac + rotation1 = configuration.get_transform_frame_to_world(self.frame[0]).rotation + pos1_jac[:3] = rotation1 @ pos1_jac[:3] + pos1_jac = np.block([np.eye(3), -pin.skew(self.O1)]) @ pos1_jac - pos2_jac = configuration.get_frame_jacobian(self.frame[1])[:3] + pos2_jac = configuration.get_frame_jacobian(self.frame[1]) # Transform jacobian to world aligned frame - rotation2 = configuration.get_transform_frame_to_world( - self.frame[1] - ).rotation - pos2_jac = rotation2 @ pos2_jac + rotation2 = configuration.get_transform_frame_to_world(self.frame[1]).rotation + pos2_jac[:3] = rotation2 @ pos2_jac[:3] + pos2_jac = np.block([np.eye(3), -pin.skew(self.O2)]) @ pos2_jac - dh_dx = 2 * np.concatenate( - [pos1_world - pos2_world, pos2_world - pos1_world] - ) + dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) dx_dq = np.vstack([pos1_jac, pos2_jac]) return dh_dx.T @ dx_dq From 0ef506f81b6d45fe4d5bad36ae7e0cb1b067dcd4 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 00:15:46 +0300 Subject: [PATCH 035/101] chore: add sphere object in meshcat shapes --- examples/cbf/meshcat_shapes.py | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/examples/cbf/meshcat_shapes.py b/examples/cbf/meshcat_shapes.py index a7e35a7d..d05e57f5 100644 --- a/examples/cbf/meshcat_shapes.py +++ b/examples/cbf/meshcat_shapes.py @@ -39,12 +39,8 @@ def __attach_axes( position_cylinder_in_frame = 0.5 * length * np.eye(3) for i in range(3): dir_name = direction_names[i] - material = meshcat.geometry.MeshLambertMaterial( - color=colors[i], opacity=opacity - ) - transform_cylinder_to_frame = meshcat.transformations.rotation_matrix( - np.pi / 2, rotation_axes[i] - ) + material = meshcat.geometry.MeshLambertMaterial(color=colors[i], opacity=opacity) + transform_cylinder_to_frame = meshcat.transformations.rotation_matrix(np.pi / 2, rotation_axes[i]) transform_cylinder_to_frame[0:3, 3] = position_cylinder_in_frame[i] cylinder = meshcat.geometry.Cylinder(length, thickness) handle[dir_name].set_object(cylinder, material) @@ -73,9 +69,20 @@ def frame( As per the de-facto standard (Blender, OpenRAVE, RViz, ...), the x-axis is red, the y-axis is green and the z-axis is blue. """ - material = meshcat.geometry.MeshLambertMaterial( - color=origin_color, opacity=opacity - ) + material = meshcat.geometry.MeshLambertMaterial(color=origin_color, opacity=opacity) sphere = meshcat.geometry.Sphere(origin_radius) handle.set_object(sphere, material) __attach_axes(handle, axis_length, axis_thickness, opacity) + + +def sphere( + handle: meshcat.Visualizer, + radius: float = 0.01, + color: int = 0x000000, + opacity: float = 1.0, +): + material = meshcat.geometry.MeshLambertMaterial(color=color, opacity=opacity) + sphere = meshcat.geometry.Sphere( + radius, + ) + handle.set_object(sphere, material) From b85f352600f804430299f24cab9ca3a721c2a55e Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 00:16:10 +0300 Subject: [PATCH 036/101] example: adapt yumi example for shifted collision sphere origin --- examples/cbf/arms_yumi.py | 55 +++++++++++++++++++++++++-------------- 1 file changed, 36 insertions(+), 19 deletions(-) diff --git a/examples/cbf/arms_yumi.py b/examples/cbf/arms_yumi.py index c97be6d6..e61afbf7 100644 --- a/examples/cbf/arms_yumi.py +++ b/examples/cbf/arms_yumi.py @@ -21,8 +21,7 @@ from robot_descriptions.loaders.pinocchio import load_robot_description except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "Examples need robot_descriptions, " - "try ``pip install robot_descriptions``" + "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" ) from exc # noqa: E501 @@ -31,6 +30,8 @@ viz = start_meshcat_visualizer(robot) + O1 = np.array([0.05, 0.05, 0]) + O2 = np.array([-0.05, -0.05, 0]) left_end_effector_task = FrameTask( "yumi_link_7_l", position_cost=50.0, # [cost] / [m] @@ -46,6 +47,8 @@ pos_cbf = BodySphericalCBF( ("yumi_link_7_l", "yumi_link_7_r"), + O1=O1, + O2=O2, d_min=0.2, gain=100.0, r=1.0, @@ -55,7 +58,7 @@ cost=1e-3, # [cost] / [rad] ) - configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=100.0) + configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=400.0) cbf_list = [pos_cbf, configuration_cbf] tasks = [left_end_effector_task, right_end_effector_task, posture_task] @@ -88,16 +91,18 @@ viewer = viz.viewer meshcat_shapes.frame(viewer["left_end_effector"], opacity=1.0) + meshcat_shapes.sphere(viewer["left_barrier"], opacity=0.4, color=0xFF0000, radius=0.1) + meshcat_shapes.sphere(viewer["right_barrier"], opacity=0.4, color=0x00FF00, radius=0.1) meshcat_shapes.frame(viewer["right_end_effector"], opacity=1.0) meshcat_shapes.frame(viewer["left_end_effector_target"], opacity=1.0) meshcat_shapes.frame(viewer["right_end_effector_target"], opacity=1.0) # Select QP solver solver = qpsolvers.available_solvers[0] - if "osqp" in qpsolvers.available_solvers: - solver = "osqp" + if "ecos" in qpsolvers.available_solvers: + solver = "ecos" - rate = RateLimiter(frequency=200.0) + rate = RateLimiter(frequency=150.0) dt = rate.period t = 0.0 # [s] l_y_des = np.array([0.392, 0.392, 0.6]) @@ -108,10 +113,10 @@ while True: # Calculate desired trajectory A = 0.1 - B = 0.1 + B = 0.2 # z -- 0.4 - 0.8 - l_y_des[:] = 0.6, 0.1 + B * np.sin(t), 0.6 + A * np.sin(t) - r_y_des[:] = 0.6, -0.1 - B * np.sin(t), 0.6 + A * np.sin(t) + l_y_des[:] = 0.6, 0.1 + B * np.sin(3 * t + np.pi / 4), 0.6 + A * np.sin(t) + r_y_des[:] = 0.6, -0.1 - B * np.sin(t), 0.6 + A * np.sin(3 * t - np.pi / 4) l_dy_des[:] = 0, B * np.cos(t), A * np.cos(t) r_dy_des[:] = 0, -B * np.cos(t), A * np.cos(t) @@ -120,17 +125,22 @@ # Update visualization frames viewer["left_end_effector"].set_transform( - configuration.get_transform_frame_to_world( - left_end_effector_task.frame - ).np + configuration.get_transform_frame_to_world(left_end_effector_task.frame).np ) viewer["right_end_effector"].set_transform( - configuration.get_transform_frame_to_world( - right_end_effector_task.frame - ).np + configuration.get_transform_frame_to_world(right_end_effector_task.frame).np ) - viewer["left_end_effector_target"].set_transform(l_y_des) - viewer["right_end_effector_target"].set_transform(r_y_des) + viewer["left_end_effector_target"].set_transform(left_end_effector_task.transform_target_to_world.np) + viewer["right_end_effector_target"].set_transform(right_end_effector_task.transform_target_to_world.np) + + lb = configuration.get_transform_frame_to_world(left_end_effector_task.frame) + lb.translation += O1 + + rb = configuration.get_transform_frame_to_world(right_end_effector_task.frame) + rb.translation += O2 + + viewer["left_barrier"].set_transform(lb.np) + viewer["right_barrier"].set_transform(rb.np) # Compute velocity and integrate it into next configuration # Note that default position limit handle given trajectory @@ -144,9 +154,16 @@ use_position_limit=False, ) configuration.integrate_inplace(velocity, dt) - print( - f"Distance between end effectors: {np.linalg.norm(configuration.get_transform_frame_to_world('yumi_link_7_l').translation - configuration.get_transform_frame_to_world('yumi_link_7_r').translation)*100 :0.1f}cm" # noqa: E501 + dist = ( + np.linalg.norm( + configuration.get_transform_frame_to_world("yumi_link_7_l").translation + - configuration.get_transform_frame_to_world("yumi_link_7_r").translation + + O1 + - O2 + ) + * 100 ) + print(f"Distance between end effectors: {dist :0.1f}cm") # noqa: E501 # Visualize result at fixed FPS viz.display(configuration.q) rate.sleep() From e876f3506439520b294e08e65745c7646965baad Mon Sep 17 00:00:00 2001 From: simeon Date: Sat, 11 May 2024 13:40:28 +0300 Subject: [PATCH 037/101] docstrings and notes --- examples/cbf/NOTES.md | 170 ++++++++++++++++++++++++++++++++++++++ examples/cbf/README.md | 45 ++++++++++ pink/barriers/__init__.py | 12 +++ pink/barriers/barrier.py | 126 +++++++++++++++++++++++++--- 4 files changed, 340 insertions(+), 13 deletions(-) create mode 100644 examples/cbf/NOTES.md create mode 100644 examples/cbf/README.md diff --git a/examples/cbf/NOTES.md b/examples/cbf/NOTES.md new file mode 100644 index 00000000..4cafcae7 --- /dev/null +++ b/examples/cbf/NOTES.md @@ -0,0 +1,170 @@ + +## Control Barrier Functions + +Control barrier functions (CBFs) are used to enforce safety for nonlinear control affine systems of the form: + +$$ +\dot{x}=f(x)+g(x) u +$$ + +where $f$ and $g$ are locally Lipschitz, $x \in D \subset \mathbb{R}^{n}$, and $u \in U \subset \mathbb{R}^{m}$ is the set of admissible inputs. + +**Safety and Safe Sets** + +Safety is framed in the context of enforcing invariance of a set, i.e., not leaving a safe set. Consider a set $\mathcal{S}$ defined as the superlevel set of a continuously differentiable function $h: D \subset \mathbb{R}^{n} \rightarrow \mathbb{R}$: + +$$ +\begin{aligned} +\mathcal{S} & =\left\{x \in D \subset \mathbb{R}^{n}: h(x) \geq 0\right\} \\ +\partial \mathcal{S} & =\left\{x \in D \subset \mathbb{R}^{n}: h(x)=0\right\} \\ +\operatorname{Int}(\mathcal{S}) & =\left\{x \in D \subset \mathbb{R}^{n}: h(x)>0\right\} +\end{aligned} +$$ + +We refer to $\mathcal{S}$ as the safe set. The system is safe with respect to the set $\mathcal{S}$ if the set $\mathcal{S}$ is forward invariant. Formally, the set $\mathcal{S}$ is forward invariant if for every $x_{0} \in \mathcal{S}$, the solution $x(t)$ satisfying $x(0)=x_0$ remains in $\mathcal{S}$ for all $t$. + +**Control Barrier Functions** + +A function $h$ is a control barrier function (CBF) if there exists an extended class $\mathcal{K}_{\infty}$ function $\alpha$ such that: + +$$ +\sup _{u \in U}\left[L_{f} h(x)+L_{g} h(x) u\right] \geq-\alpha(h(x)) +$$ + +for all $x \in D$. Here $L_f h$ and $L_g h$ denote the Lie derivatives of $h$ along $f$ and $g$. + +The set of all control values that render $\mathcal{S}$ safe is: + +$$ +K_{\mathrm{cbf}}(x)=\left\{u \in U: L_{f} h(x)+L_{g} h(x) u+\alpha(h(x)) \geq 0\right\} +$$ + +The main result regarding CBFs is that their existence implies the control system is safe: + +**Theorem:** Let $\mathcal{S} \subset \mathbb{R}^{n}$ be a set defined as the superlevel set of a continuously differentiable function $h: D \subset \mathbb{R}^{n} \rightarrow \mathbb{R}$. If $h$ is a CBF on $D$ and $\frac{\partial h}{\partial x}(x) \neq 0$ for all $x \in \partial \mathcal{S}$, then any Lipschitz continuous controller $u(x) \in K_{\mathrm{cbf}}(x)$ renders the set $\mathcal{S}$ safe and asymptotically stable in $D$. + +**Optimization Based Control** + +To synthesize safety-critical controllers, we can solve a quadratic program (QP) to minimally modify an existing controller $k(x)$ to guarantee safety: + +$$ +\begin{aligned} +u(x)=\underset{u \in \mathbb{R}^{m}}{\operatorname{argmin}} & \frac{1}{2}\|u-k(x)\|^{2} \quad(\mathrm{CBF}-\mathrm{QP}) \\ +\text { s.t. } & L_{f} h(x)+L_{g} h(x) u \geq-\alpha(h(x)) +\end{aligned} +$$ + +When there are no input constraints ($U=\mathbb{R}^m$), the CBF-QP has a closed-form solution given by the min-norm controller. + +**Discrete-Time Implementations** + +Discrete-time implementations of continuous-time CBF-based safety filters can lead to some challenges. When solving the CBF-QP at a sampling time $\Delta t>0$, safety is only guaranteed at the initial time step $t_{0}$, but not for the open time interval $(t_{0}, t_{0}+\Delta t)$. Suboptimal performance can arise when $\|L_{g} L_{f}^{s-1} h(x)\| \rightarrow 0$, as large inputs permissible by the CBF condition applied over the finite time interval could result in undesirable behavior. + +Another issue occurs when $L_{g} L_{f}^{s-1} h(x)=0$, indicating a local relative degree higher than $s$. In such cases, the safety controller becomes inactive, allowing potentially unsafe control inputs $k(x)$ to be applied for at least the time interval $[t_{0}, t_{0}+\Delta t)$, which may lead to safe set violations or suboptimal performance. + +One method to handle the case of $\|L_{g} L_{f}^{s-1} h(x)\| \rightarrow 0$ is by modifying the safety filter objective function. We can add a term that explicitly accounts for $L_{g} L_{f}^{s-1} h(x)$ becoming close to 0. The proposed modified safety filtering objective is: + +$$ +J(x)=\frac{1}{2}\|u-k(x)\|^{2}+\frac{r}{2\|L_{g} L_{f}^{s-1} h(x)\|^{2}}\|u-k_{\text{safe}}(x)\|^{2} +$$ + +where $k_{\text{safe}}$ is a known safe backup control policy (e.g., a stabilizing controller that renders $\mathcal{S}$ control invariant). The parameter $r>0$ is a weighting factor. + +This new objective replaces the standard CBF-QP objective for all $\|L_{g} L_{f}^{s-1} h(x)\|>\epsilon$, where $\epsilon$ is a small positive number. The closer $\|L_{g} L_{f}^{s-1} h(x)\|$ gets to 0, the greater the impact of the second term in the safety filtering objective. In this case, the safety filter will track the safe backup control policy instead of the potentially unsafe control policy $k(x)$. The weighting parameter $r$ determines the balance between the two terms when $\|L_{g} L_{f}^{s-1} h(x)\|$ is far from 0. To avoid numerical instabilities, we set $u(x)=k_{\text{safe}}(x)$ when the system is in a state $x$ such that $\|L_{g} L_{f}^{s-1} h(x)\| \leq \epsilon$. + +The modified CBF-QP with the penalty term becomes: + +$$ +\begin{aligned} +u(x)=\underset{u \in \mathbb{R}^{m}}{\operatorname{argmin}} & \frac{1}{2}\|u-k(x)\|^{2}+\frac{r}{2\|L_{g} L_{f}^{s-1} h(x)\|^{2}}\|u-k_{\text{safe}}(x)\|^{2} \\ +\text{s.t.} & L_{f} h(x)+L_{g} h(x) u \geq-\alpha(h(x)) +\end{aligned} +$$ + +This strategy requires almost no additional computational effort. However, in practice, the design of the safe backup control policy $k_{\text{safe}}$ will require some attention. The backup policy should be able to return the system to states where $\|L_{g} L_{f}^{s-1} h(x)\|>\epsilon$. Otherwise, the system will continue using the backup control policy $k_{\text{safe}}$ for all future time. + + +## CBF in Differential IK + +Let us study how CBF theory can be applied to solve the multitask inverse kinematics problem subject to configuration-based nonlinear inequalities. + +Mathematically, our goal is to find the configuration motion $\boldsymbol{q}(t) \in \mathcal{C}$ such that: + +$$ +\boldsymbol{r}_i(\boldsymbol{q})=\boldsymbol{p}_i^{*}-\boldsymbol{p}_i(\boldsymbol{q}) +$$ + +where $\boldsymbol{p}_i^{*}$ is the desired task reference, $\boldsymbol{r}_i(\boldsymbol{q})$ is the task residual error, and $\boldsymbol{p}_i(\boldsymbol{q})$ is the forward kinematics function mapping configuration variables to task space. + +In addition to the kinematic tasks, suppose we want to enforce the following nonlinear safety constraints: + +$$ +h_j(\boldsymbol{q}) \geq 0 +$$ + +Directly solving this constrained optimization problem can lead to challenging nonlinear programs. However, in the context of differential inverse kinematics, we can leverage CBFs to reformulate the problem as a quadratic program (QP) with linear inequality constraints. + +**CBF QP Formulation** + +Differentiating the kinematic task errors once and introducing stabilizing feedback gains yields the following QP formulation: + +$$ +\underset{\dot{\boldsymbol{q}}}{\operatorname{minimize}} \sum_{\operatorname{task} i} w_{i}\left\|\boldsymbol{J}_{i} \dot{\boldsymbol{q}}-K_{i} \boldsymbol{v}_{i}\right\|^{2} +$$ + +Here, $\boldsymbol{J}_i$ is the task Jacobian, $K_i$ is a positive definite feedback gain matrix, and $\boldsymbol{v}_i$ is an auxiliary control input. By treating joint velocities $\dot{\boldsymbol{q}}$ as optimization variables, we can incorporate the safety constraints $h_j(\boldsymbol{q}) \geq 0$ as CBF conditions: + +$$ +\dot{h}_j(\boldsymbol{q})+\alpha_j(h_j(\boldsymbol{q})) = \frac{\partial h_j}{\partial \boldsymbol{q}} \dot{\boldsymbol{q}} +\alpha_j(h_j(\boldsymbol{q})) \geq 0 +$$ + +Enforcing this constraint ensures the system remains within the safe set $\mathcal{S}_j =\left\{\boldsymbol{q} \in D \subset \mathbb{R}^{n}: h_j(\boldsymbol{q}) \geq 0\right\}$. The extended class $\mathcal{K}$ function $\alpha_j$ provides a safety margin. + +Combining the kinematic tasks and CBF constraints, we arrive at the differentiable IK optimization problem with safety guarantees: + +$$ +\begin{aligned} +& \underset{\dot{\boldsymbol{q}}}{\operatorname{minimize}} \sum_{\text {task } i} w_{i}\left\|\boldsymbol{J}_{i}(\boldsymbol{q}) \dot{\boldsymbol{q}}-K_{i} \boldsymbol{v}_{i}\right\|^{2} + \gamma(\boldsymbol{q})\left\| \dot{\boldsymbol{q}}-\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})\right\|^{2} \\ +& \text { subject to: } \frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}} \dot{\boldsymbol{q}} +\alpha_j(\boldsymbol{h}_j(\boldsymbol{q})) \geq 0, \quad \forall j +\end{aligned} +$$ + +The configuration-dependent weight $\gamma(\boldsymbol{q})$, often chosen as $(\|\partial h_j \| +\epsilon)^{-1}w_h$, ensures safety takes precedence when close to constraint boundaries. The safe backup policy $\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})$ provides a fallback when $\|\partial h_j \|$ approaches zero. A simple choice is the zero-velocity policy $\dot{\boldsymbol{q}}_{safe} = \boldsymbol{0}$, which stops the robot. Alternatively, one can stabilize to a safe initial configuration. + +This general CBF-based framework enables the encoding of various safety behaviors through appropriate choices of $h_j(\boldsymbol{q})$, such as: + +1. Joint Limits: +$$h_j(\boldsymbol{q}) = \begin{cases} + q_j - q_j^{min} & j = 1,\dots,n \\ + q_j^{max} - q_j & j = n+1,\dots,2n + \end{cases}$$ + +2. End-Effector Position Barriers: +$$h_j(\boldsymbol{q}) = \|\boldsymbol{p}_{EE}(\boldsymbol{q}) - \boldsymbol{p}_{obs}\| - d_{safe}$$ + +3. Self-Collision Avoidance (between links $i$ and $k$): +$$h_j(\boldsymbol{q}) = \operatorname{sd}(\mathcal{B}_i(\boldsymbol{q}), \mathcal{B}_k(\boldsymbol{q})) - d_{safe}$$ + +Here, $\operatorname{sd}(\cdot)$ denotes the signed distance between two geometric shapes $\mathcal{B}_i$ and $\mathcal{B}_k$ representing robot links. + +### PINK Implementation + +The [barrier submodule](https://github.com/domrachev03/pink/tree/feat/cbf/pink/barriers) in PINK provides an implementation of these CBF safety constraints. + +Code snippets for each barrier type will be added here. + +**TODO:** Write $h(q)$ and CBF formulation for: +* Joint Limits +* Body Position Barrier +* Self-Collisions + +### Implementation in PINK + +We have introduced CBF capabilities in PINK by creating the [barrier submodule](https://github.com/domrachev03/pink/tree/feat/cbf/pink/barriers). + +**TODO:** +Add code snippets for different barriers: +* Generic +* Joint Limits +* Body Position Barrier +* Self-Collision Barrier \ No newline at end of file diff --git a/examples/cbf/README.md b/examples/cbf/README.md new file mode 100644 index 00000000..2fcb3712 --- /dev/null +++ b/examples/cbf/README.md @@ -0,0 +1,45 @@ +Here we will have the examples of using barriers, please go over [notes](NOTES.md) for more info. + +# Barrier Examples + + +- [Arm: UR5](#arm-ur5): with joints and end effector limits +- [Yumi Dual Arm](#dual-arm-yumi): self collisions with spheres + +## Arm: UR5 + +A UR5 arm tracking a moving target while stopping in front of virtual wall: + + + +https://github.com/stephane-caron/pink/assets/1189580/d0d6aae9-326b-45fe-8cd3-013f29f7343a + +| Task | Cost | +|------|------| +| End-effector | 1 | +| Posture | $10^{-3}$ | + +| Barrier | Gain | +|------|------| +| End-effector | $10^{3}$ | +| Configuration | $1$ | + + +## Dual Arm Yumi + +A dual arm YuMi randomly swinging arms while avoiding self collisions: + + +https://github.com/stephane-caron/pink/assets/1189580/ef3f2571-6188-4b14-ae3f-b22428b11f5c + +| Task | Cost | +|------|------| +| Left end-effector | (50,1) | +| Right end-effector | (50,1) | +| Posture | $10^{-3}$ | + + +| Barrier | Gain | +|------|------| +| Spheres Collision | 100 | +| Configuration | $1$ | diff --git a/pink/barriers/__init__.py b/pink/barriers/__init__.py index ebb11ddd..15c3c2f5 100644 --- a/pink/barriers/__init__.py +++ b/pink/barriers/__init__.py @@ -1,4 +1,16 @@ +""" +This module provides an abstract base class for Barriers (CBFs) +used in the context of differential inverse kinematics with safety constraints. +""" + from .barrier import CBF from .body_spherical_barrier import BodySphericalCBF from .configuration_barrier import ConfigurationCBF from .position_barrier import PositionCBF + +__all__ = [ + "CBF", + "BodySphericalCBF", + "ConfigurationCBF", + "PositionCBF" +] diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index 0ed620d5..b620731f 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -4,7 +4,10 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright 2022 Stéphane Caron -"""General description""" +"""All barriers derive from the :class:`CBF` base class. + +The formalism used in this implementation is written down in examples/cbf/NOTES.md +""" import abc from typing import Callable, Optional, Tuple, Union @@ -15,12 +18,25 @@ class CBF(abc.ABC): - r"""Abstract class description. + r"""Abstract base class for Control Barrier Functions (CBFs). + + A CBF is a function :math:`\boldsymbol{h}(\boldsymbol{q})` that satisfies the following condition: + + .. math:: + + \frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}} \dot{\boldsymbol{q}} +\alpha_j(\boldsymbol{h}_j(\boldsymbol{q})) \geq 0, \quad \forall j + + where :math:`\frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}}` are the Jacobians of the constraint functions, + :math:`\dot{\boldsymbol{q}}` is the joint velocity vector, and :math:`\alpha_j` are extended class K functions. Attributes: - ... + dim (int): Dimension of the CBF. + gain (Union[float, np.ndarray]): CBF gain. + class_k_fn (Callable[[np.ndarray], float]): Extended class K function. + safe_policy (Optional[np.ndarray]): Safe backup control policy. + r (float): Weighting factor for the safe backup policy regularization term. """ - + gain: Union[float, np.ndarray] class_k_fns: Callable[[np.ndarray], float] safe_policy: Optional[np.ndarray] @@ -30,10 +46,20 @@ def __init__( self, dim: int, gain: Union[float, np.ndarray] = 1.0, - class_k_fn: Optional[Callable[..., float]] = None, + class_k_fn: Optional[Callable[[np.ndarray], float]] = None, r: float = 3.0, ): - """...""" + """Initialize the CBF. + + Args: + dim (int): Dimension of the CBF. + gain (Union[float, np.ndarray]): CBF gain. Defaults to 1.0. + class_k_fn (Optional[Callable[[np.ndarray], float]]): Extended class K function. + Defaults to the identity function. + r (float): Weighting factor for the safe backup policy regularization term. + Defaults to 3.0. + """ + self.dim = dim self.gain = ( gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain @@ -43,16 +69,50 @@ def __init__( @abc.abstractmethod def compute_barrier(self, configuration: Configuration) -> np.ndarray: - """...""" + r"""Compute the value of the barrier function. + + The barrier function :math:`\boldsymbol{h}(\boldsymbol{q})` is a vector-valued function + that represents the safety constraints. It should be designed such that + the set :math:`\{\boldsymbol{q} : \boldsymbol{h}(\boldsymbol{q}) \geq \boldsymbol{0}\}` represents the safe region of the + configuration space. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. + """ pass @abc.abstractmethod def compute_jacobian(self, configuration: Configuration) -> np.ndarray: - r"""...""" + r"""Compute the Jacobian matrix of the barrier function. + + The Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})` of the + barrier function with respect to the configuration variables is required + for the computation of the CBF condition. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ pass def compute_safe_policy(self, configuration: Configuration) -> np.ndarray: - r"""...""" + r"""Compute the safe backup control policy. + + The safe backup control policy :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})` is a joint + velocity vector that can be used as a regularization term in the + optimization problem to ensure safety. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Safe backup joint velocities :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})`. + """ return np.zeros(configuration.model.nq) def compute_qp_objective( @@ -60,7 +120,25 @@ def compute_qp_objective( configuration: Configuration, dt: float = 1e-3, ) -> Tuple[np.ndarray, np.ndarray]: - r"""...""" + r"""Compute the quadratic objective function for the CBF-based QP. + + The quadratic objective function includes a regularization term based on the safe backup policy: + + .. math:: + + \gamma(\boldsymbol{q})\left\| \dot{\boldsymbol{q}}-\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})\right\|^{2} + + where :math:`\gamma(\boldsymbol{q})` is a configuration-dependent weight and + :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})` is the safe backup policy. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + dt: Time step for discrete-time implementation. Defaults to 1e-3. + + Returns: + Tuple containing the quadratic objective matrix (H) and linear + objective vector (c). + """ jac = self.compute_jacobian(configuration) H = np.zeros((configuration.model.nq, configuration.model.nq)) # c = 1e-3 * np.linalg.norm(jac, axis=0) / dt @@ -83,7 +161,24 @@ def compute_qp_inequality( configuration: Configuration, dt: float = 1e-3, ) -> Tuple[np.ndarray, np.ndarray]: - """...""" + r"""Compute the linear inequality constraints for the CBF-based QP. + + The linear inequality constraints enforce the CBF conditions: + + .. math:: + + \frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}} \dot{\boldsymbol{q}} +\alpha_j(\boldsymbol{h}_j(\boldsymbol{q})) \geq 0, \quad \forall j + + where :math:`\frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}}` are the Jacobians of the constraint functions, + :math:`\dot{\boldsymbol{q}}` is the joint velocity vector, and :math:`\alpha_j` are extended class K functions. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + dt: Time step for discrete-time implementation. Defaults to 1e-3. + + Returns: + Tuple containing the inequality constraint matrix (G) and vector (h). + """ G = -self.compute_jacobian(configuration) / dt barrier_value = self.compute_barrier(configuration) h = np.array( @@ -95,8 +190,13 @@ def compute_qp_inequality( return (G, h) - def __repr__(self): - """...""" + def __repr__(self) -> str: + """ + Return a string representation of the CBF. + + Returns: + str: String representation. + """ return ( f"Barrier(" f"gain={self.gain}, " From 0287f3421cb3c671d398a5527b9d4a151d4e7d24 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 13:53:48 +0300 Subject: [PATCH 038/101] example: yumi example with creating new frames --- examples/cbf/arms_yumi.py | 106 +++++++++++++++++++++++++++++--------- 1 file changed, 83 insertions(+), 23 deletions(-) diff --git a/examples/cbf/arms_yumi.py b/examples/cbf/arms_yumi.py index e61afbf7..f49668f4 100644 --- a/examples/cbf/arms_yumi.py +++ b/examples/cbf/arms_yumi.py @@ -8,6 +8,7 @@ import meshcat_shapes import numpy as np +import pinocchio as pin import qpsolvers from loop_rate_limiters import RateLimiter @@ -27,11 +28,38 @@ if __name__ == "__main__": robot = load_robot_description("yumi_description", root_joint=None) + l_frame_placement = pin.SE3() + l_frame_placement.translation = np.array([0.0, 0.0, 0.05]) + l_frame_placement.rotation = np.eye(3) + + l_frame = pin.Frame( + "yumi_barrier_l", + robot.model.getJointId("yumi_joint_6_l"), + robot.model.getFrameId("yumi_link_7_l"), + l_frame_placement, + pin.FrameType.OP_FRAME, + ) + + robot.model.addFrame(l_frame) + + r_frame_placement = pin.SE3() + r_frame_placement.translation = np.array([0.0, 0.0, 0.05]) + r_frame_placement.rotation = np.eye(3) + + r_frame = pin.Frame( + "yumi_barrier_r", + robot.model.getJointId("yumi_joint_6_r"), + robot.model.getFrameId("yumi_link_7_r"), + r_frame_placement, + pin.FrameType.OP_FRAME, + ) + + robot.model.addFrame(r_frame) + # TODO: how to avoid recreating the model? + robot.data = pin.Data(robot.model) viz = start_meshcat_visualizer(robot) - O1 = np.array([0.05, 0.05, 0]) - O2 = np.array([-0.05, -0.05, 0]) left_end_effector_task = FrameTask( "yumi_link_7_l", position_cost=50.0, # [cost] / [m] @@ -45,21 +73,26 @@ lm_damping=100, # tuned for this setup ) - pos_cbf = BodySphericalCBF( - ("yumi_link_7_l", "yumi_link_7_r"), - O1=O1, - O2=O2, + ee_barrier = BodySphericalCBF( + ("yumi_barrier_l", "yumi_barrier_r"), d_min=0.2, gain=100.0, r=1.0, ) + elbow_barrier = BodySphericalCBF( + ("yumi_link_4_l", "yumi_link_4_r"), + d_min=0.4, + gain=100.0, + r=1.0, + ) + posture_task = PostureTask( cost=1e-3, # [cost] / [rad] ) configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=400.0) - cbf_list = [pos_cbf, configuration_cbf] + cbf_list = [ee_barrier, elbow_barrier, configuration_cbf] tasks = [left_end_effector_task, right_end_effector_task, posture_task] q_ref = np.array( @@ -91,8 +124,30 @@ viewer = viz.viewer meshcat_shapes.frame(viewer["left_end_effector"], opacity=1.0) - meshcat_shapes.sphere(viewer["left_barrier"], opacity=0.4, color=0xFF0000, radius=0.1) - meshcat_shapes.sphere(viewer["right_barrier"], opacity=0.4, color=0x00FF00, radius=0.1) + meshcat_shapes.sphere( + viewer["left_ee_barrier"], + opacity=0.4, + color=0xFF0000, + radius=0.1, + ) + meshcat_shapes.sphere( + viewer["right_ee_barrier"], + opacity=0.4, + color=0x00FF00, + radius=0.1, + ) + meshcat_shapes.sphere( + viewer["left_elbow_barrier"], + opacity=0.4, + color=0xFF0000, + radius=0.2, + ) + meshcat_shapes.sphere( + viewer["right_elbow_barrier"], + opacity=0.4, + color=0x00FF00, + radius=0.2, + ) meshcat_shapes.frame(viewer["right_end_effector"], opacity=1.0) meshcat_shapes.frame(viewer["left_end_effector_target"], opacity=1.0) meshcat_shapes.frame(viewer["right_end_effector_target"], opacity=1.0) @@ -102,7 +157,7 @@ if "ecos" in qpsolvers.available_solvers: solver = "ecos" - rate = RateLimiter(frequency=150.0) + rate = RateLimiter(frequency=200.0) dt = rate.period t = 0.0 # [s] l_y_des = np.array([0.392, 0.392, 0.6]) @@ -133,14 +188,13 @@ viewer["left_end_effector_target"].set_transform(left_end_effector_task.transform_target_to_world.np) viewer["right_end_effector_target"].set_transform(right_end_effector_task.transform_target_to_world.np) - lb = configuration.get_transform_frame_to_world(left_end_effector_task.frame) - lb.translation += O1 - - rb = configuration.get_transform_frame_to_world(right_end_effector_task.frame) - rb.translation += O2 + lb = configuration.get_transform_frame_to_world("yumi_barrier_l") + rb = configuration.get_transform_frame_to_world("yumi_barrier_r") - viewer["left_barrier"].set_transform(lb.np) - viewer["right_barrier"].set_transform(rb.np) + viewer["left_ee_barrier"].set_transform(lb.np) + viewer["right_ee_barrier"].set_transform(rb.np) + viewer["left_elbow_barrier"].set_transform(configuration.get_transform_frame_to_world("yumi_link_4_l").np) + viewer["right_elbow_barrier"].set_transform(configuration.get_transform_frame_to_world("yumi_link_4_r").np) # Compute velocity and integrate it into next configuration # Note that default position limit handle given trajectory @@ -154,16 +208,22 @@ use_position_limit=False, ) configuration.integrate_inplace(velocity, dt) - dist = ( + dist_ee = ( + np.linalg.norm( + configuration.get_transform_frame_to_world("yumi_barrier_l").translation + - configuration.get_transform_frame_to_world("yumi_barrier_r").translation + ) + * 100 + ) + dist_elbow = ( np.linalg.norm( - configuration.get_transform_frame_to_world("yumi_link_7_l").translation - - configuration.get_transform_frame_to_world("yumi_link_7_r").translation - + O1 - - O2 + configuration.get_transform_frame_to_world("yumi_link_4_l").translation + - configuration.get_transform_frame_to_world("yumi_link_4_r").translation ) * 100 ) - print(f"Distance between end effectors: {dist :0.1f}cm") # noqa: E501 + print(f"Distance between end effectors: {dist_ee :0.1f}cm") + print(f"Distance between elbows: {dist_elbow :0.1f}cm") # Visualize result at fixed FPS viz.display(configuration.q) rate.sleep() From 22798c8a23f7f8cde01ba2f67291d7bd28d20f2c Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 13:55:18 +0300 Subject: [PATCH 039/101] Revert "feat: shift point for spherical body collision avoidance barrier" This reverts commit 58593542202252c31c23e974468b7f16d518ddd2. --- pink/barriers/body_spherical_barrier.py | 56 +++++++++++++++---------- 1 file changed, 33 insertions(+), 23 deletions(-) diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index 30daa2dd..0b689ac9 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -5,10 +5,10 @@ # Copyright 2022 Stéphane Caron """General description""" -from typing import Union + +from typing import Iterable, Optional, Union import numpy as np -import pinocchio as pin from ..configuration import Configuration from .barrier import CBF @@ -26,10 +26,8 @@ class BodySphericalCBF(CBF): def __init__( self, - frames: tuple[str, str], - O1: np.ndarray | None = None, - O2: np.ndarray | None = None, - d_min: float = 0, + frame: tuple[str, str], + d_min: float = None, gain: Union[float, np.ndarray] = 1.0, r: float = 3.0, ): @@ -40,35 +38,47 @@ def __init__( # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), r=r, ) - self.frame = frames - self.O1 = O1 if O1 is not None else np.zeros(3) - self.O2 = O2 if O2 is not None else np.zeros(3) + self.frame = frame self.d_min = d_min def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + self.O1 - pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + self.O2 + pos1_world = configuration.get_transform_frame_to_world( + self.frame[0] + ).translation + pos2_world = configuration.get_transform_frame_to_world( + self.frame[1] + ).translation - return np.array([np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2]) + return np.array( + [np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2] + ) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + self.O1 - pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + self.O2 + pos1_world = configuration.get_transform_frame_to_world( + self.frame[0] + ).translation + pos2_world = configuration.get_transform_frame_to_world( + self.frame[1] + ).translation - pos1_jac = configuration.get_frame_jacobian(self.frame[0]) + pos1_jac = configuration.get_frame_jacobian(self.frame[0])[:3] # Transform jacobian to world aligned frame - rotation1 = configuration.get_transform_frame_to_world(self.frame[0]).rotation - pos1_jac[:3] = rotation1 @ pos1_jac[:3] - pos1_jac = np.block([np.eye(3), -pin.skew(self.O1)]) @ pos1_jac + rotation1 = configuration.get_transform_frame_to_world( + self.frame[0] + ).rotation + pos1_jac = rotation1 @ pos1_jac - pos2_jac = configuration.get_frame_jacobian(self.frame[1]) + pos2_jac = configuration.get_frame_jacobian(self.frame[1])[:3] # Transform jacobian to world aligned frame - rotation2 = configuration.get_transform_frame_to_world(self.frame[1]).rotation - pos2_jac[:3] = rotation2 @ pos2_jac[:3] - pos2_jac = np.block([np.eye(3), -pin.skew(self.O2)]) @ pos2_jac + rotation2 = configuration.get_transform_frame_to_world( + self.frame[1] + ).rotation + pos2_jac = rotation2 @ pos2_jac - dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) + dh_dx = 2 * np.concatenate( + [pos1_world - pos2_world, pos2_world - pos1_world] + ) dx_dq = np.vstack([pos1_jac, pos2_jac]) return dh_dx.T @ dx_dq From b8394452fb92e9a661aeba72ecb025402f0adf22 Mon Sep 17 00:00:00 2001 From: simeon Date: Sat, 11 May 2024 13:58:21 +0300 Subject: [PATCH 040/101] new doc strings --- pink/barriers/configuration_barrier.py | 55 +++++++++++++++++++++++--- pink/barriers/position_barrier.py | 42 +++++++++++++++++--- 2 files changed, 87 insertions(+), 10 deletions(-) diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index 4840c59b..8df9b7c6 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -5,7 +5,12 @@ # Copyright 2022 Stéphane Caron # Copyright 2023 Inria -"""Subset of bounded joints associated with a robot model.""" +""" +This module defines the ConfigurationCBF class, which represents a subset of +bounded joints associated with a robot model and implements a barrier +based on joint configuration limits. +""" + from typing import List, Optional, Union @@ -18,7 +23,19 @@ class ConfigurationCBF(CBF): - """...""" + """Control Barrier Function (CBF) based on joint configuration limits. + + The ConfigurationCBF class represents a subset of bounded joints associated + with a robot model. It defines a barrier function based on the joint + configuration limits to ensure that the joint positions remain within the + specified bounds. + + Attributes: + indices (np.ndarray): Indices of the bounded joints. + model (pin.Model): Pinocchio model of the robot. + joints (list): List of bounded joints. + projection_matrix (Optional[np.ndarray]): Projection matrix for the bounded joints. + """ indices: np.ndarray model: pin.Model @@ -31,7 +48,14 @@ def __init__( gain: Union[float, np.ndarray] = 0.5, r: float = 3.0, ): - """...""" + """Initialize the ConfigurationCBF. + + Args: + model (pin.Model): Pinocchio model of the robot. + gain (Union[float, np.ndarray]): CBF gain. Defaults to 0.5. + r (float): Weighting factor for the safe backup policy regularization term. + Defaults to 3.0. + """ has_configuration_limit = np.logical_and( model.hasConfigurationLimit(), @@ -75,7 +99,17 @@ def __init__( self.projection_matrix = projection_matrix def compute_barrier(self, configuration: Configuration) -> np.ndarray: - """...""" + r"""Compute the value of the barrier function. + + The barrier function is computed based on the distances between the + current joint positions and the upper and lower joint limits. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. + """ q = configuration.q delta_q_max = pin.difference( self.model, q, self.model.upperPositionLimit @@ -88,5 +122,16 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: ) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: - """...""" + r"""Compute the Jacobian matrix of the barrier function. + + The Jacobian matrix is computed based on the projection matrix for the + bounded joints. It maps the joint velocities to the barrier function + space. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ return np.vstack([self.projection_matrix, -self.projection_matrix]) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 38521ffe..d4059b97 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -4,7 +4,10 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright 2022 Stéphane Caron -"""General description""" +""" +This module defines the PositionBarrier class, which is a concrete implementation +of a position-based Control Barrier Function (CBF). +""" from typing import Iterable, Optional, Union @@ -15,10 +18,17 @@ class PositionCBF(CBF): - r"""Abstract class description. + r"""A position-based barrier. + + Defines a barrier function based on the position of a + specified frame in the world coordinate system. It allows for the + specification of minimum and maximum position bounds along selected axes. Attributes: - ... + frame (str): Name of the frame to monitor. + indices (Iterable[int]): Indices of the position components to consider. + p_min (Optional[np.ndarray]): Minimum position bounds. + p_max (Optional[np.ndarray]): Maximum position bounds. """ frame: str @@ -58,7 +68,18 @@ def __init__( self.p_max = max def compute_barrier(self, configuration: Configuration) -> np.ndarray: - """...""" + r"""Compute the value of the barrier function. + + The barrier function is computed based on the position of the specified + frame in the world coordinate system. It considers the minimum and + maximum position bounds along the selected axes. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. + """ pos_world = configuration.get_transform_frame_to_world( self.frame ).translation @@ -71,7 +92,18 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: return np.concatenate(cbfs) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: - """...""" + r"""Compute the Jacobian matrix of the barrier function. + + The Jacobian matrix is computed based on the position Jacobian of the + specified frame. The Jacobian is transformed to align with the world + coordinate system and only the selected indices are considered. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ pos_jac = configuration.get_frame_jacobian(self.frame)[:3] # Transform jacobian to world aligned frame rotation = configuration.get_transform_frame_to_world( From 60089e04c200b35647bb51493f6fd6c5fc5bd4f2 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 14:01:16 +0300 Subject: [PATCH 041/101] refactor: CBF -> Barrier in names --- examples/cbf/arm_ur5.py | 27 ++---- examples/cbf/arms_yumi.py | 8 +- examples/cbf/test.py | 115 ++++++++++++++++++++++++ pink/barriers/__init__.py | 15 ++-- pink/barriers/barrier.py | 21 ++--- pink/barriers/body_spherical_barrier.py | 36 +++----- pink/barriers/configuration_barrier.py | 16 ++-- pink/barriers/position_barrier.py | 12 +-- pink/configuration.py | 4 +- pink/solve_ik.py | 10 +-- 10 files changed, 162 insertions(+), 102 deletions(-) create mode 100644 examples/cbf/test.py diff --git a/examples/cbf/arm_ur5.py b/examples/cbf/arm_ur5.py index 733148e6..f6c917f4 100644 --- a/examples/cbf/arm_ur5.py +++ b/examples/cbf/arm_ur5.py @@ -13,7 +13,7 @@ import pink from pink import solve_ik -from pink.barriers import PositionCBF, ConfigurationCBF +from pink.barriers import PositionBarrier, ConfigurationBarrier from pink.tasks import FrameTask, PostureTask from pink.visualization import start_meshcat_visualizer @@ -21,8 +21,7 @@ from robot_descriptions.loaders.pinocchio import load_robot_description except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "Examples need robot_descriptions, " - "try ``pip install robot_descriptions``" + "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" ) from exc # noqa: E501 @@ -41,14 +40,14 @@ cost=1e-3, # [cost] / [rad] ) - pos_cbf = PositionCBF( + pos_cbf = PositionBarrier( "ee_link", indices=[1], max=np.array([0.6]), gain=np.array([100.0]), r=1.0, ) - configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=100.0) + configuration_cbf = ConfigurationBarrier(robot.model, gain=1, r=100.0) cbf_list = [pos_cbf, configuration_cbf] tasks = [end_effector_task, posture_task] @@ -88,11 +87,7 @@ # Update visualization frames viewer["end_effector_target"].set_transform(end_effector_target.np) - viewer["end_effector"].set_transform( - configuration.get_transform_frame_to_world( - end_effector_task.frame - ).np - ) + viewer["end_effector"].set_transform(configuration.get_transform_frame_to_world(end_effector_task.frame).np) # Compute velocity and integrate it into next configuration # Note that default position limit handle given trajectory @@ -109,15 +104,9 @@ G, h = pos_cbf.compute_qp_inequality(configuration, dt=dt) print(f"Task error: {end_effector_task.compute_error(configuration)}") - print( - f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0" - ) - print( - f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0" - ) - print( - f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6" - ) + print(f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0") + print(f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0") + print(f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6") print("-" * 60) # Visualize result at fixed FPS viz.display(configuration.q) diff --git a/examples/cbf/arms_yumi.py b/examples/cbf/arms_yumi.py index f49668f4..779ddb1a 100644 --- a/examples/cbf/arms_yumi.py +++ b/examples/cbf/arms_yumi.py @@ -14,7 +14,7 @@ import pink from pink import solve_ik -from pink.barriers import BodySphericalCBF, ConfigurationCBF +from pink.barriers import BodySphericalBarrier, ConfigurationBarrier from pink.tasks import FrameTask, PostureTask from pink.visualization import start_meshcat_visualizer @@ -73,14 +73,14 @@ lm_damping=100, # tuned for this setup ) - ee_barrier = BodySphericalCBF( + ee_barrier = BodySphericalBarrier( ("yumi_barrier_l", "yumi_barrier_r"), d_min=0.2, gain=100.0, r=1.0, ) - elbow_barrier = BodySphericalCBF( + elbow_barrier = BodySphericalBarrier( ("yumi_link_4_l", "yumi_link_4_r"), d_min=0.4, gain=100.0, @@ -91,7 +91,7 @@ cost=1e-3, # [cost] / [rad] ) - configuration_cbf = ConfigurationCBF(robot.model, gain=1, r=400.0) + configuration_cbf = ConfigurationBarrier(robot.model, gain=1, r=400.0) cbf_list = [ee_barrier, elbow_barrier, configuration_cbf] tasks = [left_end_effector_task, right_end_effector_task, posture_task] diff --git a/examples/cbf/test.py b/examples/cbf/test.py new file mode 100644 index 00000000..1587e63c --- /dev/null +++ b/examples/cbf/test.py @@ -0,0 +1,115 @@ +import pathlib as p + +import numpy as np +import pinocchio as pin +from robot_descriptions.panda_description import URDF_PATH + +urdf_path = p.Path(URDF_PATH) +filename = str(urdf_path) +print(filename) + +# Load model +model = pin.buildModelFromUrdf(filename) + +# Load collision geometries +geom_model = pin.buildGeomFromUrdf( + model, + filename, + str(urdf_path.parents[4]), + pin.GeometryType.COLLISION, +) + +# Add collisition pair +geom_model.addAllCollisionPairs() +for i in range(model.nq): + geom_model.removeCollisionPair(pin.CollisionPair(i, i + 1)) +print("num collision pairs - initial:", len(geom_model.collisionPairs)) + +q = np.random.rand(model.nq) + +# Create data structures +data = model.createData() +geom_data = pin.GeometryData(geom_model) + +# Compute all the collisions +pin.computeCollisions(model, data, geom_model, geom_data, q, False) +pin.computeDistances(model, data, geom_model, geom_data, q) +N = len(geom_model.collisionPairs) +# Print the status of collision for all collision pairs +for k in range(len(geom_model.collisionPairs)): + cr = geom_data.collisionResults[k] + cp = geom_model.collisionPairs[k] + dr = geom_data.distanceResults[k] + + go_1 = geom_model.geometryObjects[cp.first].name + go_2 = geom_model.geometryObjects[cp.second].name + if cr.isCollision(): + print( + f"collision pair #{k}:", + go_1, + ",", + go_2, + "- collision:", + "Yes" if cr.isCollision() else "No", + ) + print("distance:", dr.min_distance) + +# Compute for a single pair of collision + +# Computing jacobian +pin.computeJointJacobians(model, data, q) + +J = np.zeros((N, model.nq)) +Jrow_q = np.zeros(model.nq) +Jrow_v = np.zeros(model.nv) + +dr = geom_data.distanceResults[0] + +print() +print("Computing jacobian") +for k in range(len(geom_model.collisionPairs)): + cr = geom_data.collisionResults[k] + cp = geom_model.collisionPairs[k] + dr = geom_data.distanceResults[k] + + go_1 = geom_model.geometryObjects[cp.first] + go_2 = geom_model.geometryObjects[cp.second] + + j1_id = go_1.parentJoint + j2_id = go_2.parentJoint + if j1_id - j2_id == 1: + continue + + w1 = dr.getNearestPoint1() + r1 = w1 - data.oMi[j1_id].translation + ddr_dw1 = -dr.normal.reshape(1, -1) + print(np.linalg.norm(dr.normal)) + dw1_dj1 = np.block([np.eye(3), -pin.skew(r1)]) + dj1_dq = pin.getJointJacobian( + model, data, j1_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED + ) + Jrow_v = ddr_dw1 @ dw1_dj1 @ dj1_dq + + w2 = dr.getNearestPoint2() + r2 = w2 - data.oMi[j2_id].translation + ddr_dw2 = dr.normal.reshape(1, -1) + dw2_dj2 = np.block([np.eye(3), -pin.skew(r2)]) + dj2_dq = pin.getJointJacobian( + model, data, j2_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED + ) + Jrow_v += ddr_dw2 @ dw2_dj2 @ dj2_dq + + if cr.isCollision(): + print(f"Collision pair #{k}:", go_1.name, ",", go_2.name) + + J[k] = Jrow_v + +# print("bad values in distance jacobian:") +# print("q =", q) +# for k in range(len(geom_model.collisionPairs)): +# cr = geom_data.collisionResults[k] +# cp = geom_model.collisionPairs[k] +# dr = geom_data.distanceResults[k] +# print("at row", k, ":", J[k]) +# print("distance:", dr.min_distance) +# print(f"collision pair #{k}:", cp.first, ",", cp.second, "- collision:", "Yes" if cr.isCollision() else "No") diff --git a/pink/barriers/__init__.py b/pink/barriers/__init__.py index 15c3c2f5..5a93d828 100644 --- a/pink/barriers/__init__.py +++ b/pink/barriers/__init__.py @@ -3,14 +3,9 @@ used in the context of differential inverse kinematics with safety constraints. """ -from .barrier import CBF -from .body_spherical_barrier import BodySphericalCBF -from .configuration_barrier import ConfigurationCBF -from .position_barrier import PositionCBF +from .barrier import Barrier +from .body_spherical_barrier import BodySphericalBarrier +from .configuration_barrier import ConfigurationBarrier +from .position_barrier import PositionBarrier -__all__ = [ - "CBF", - "BodySphericalCBF", - "ConfigurationCBF", - "PositionCBF" -] +__all__ = ["Barrier", "BodySphericalBarrier", "ConfigurationBarrier", "PositionBarrier"] diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index b620731f..1fb08a17 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -17,7 +17,7 @@ from ..configuration import Configuration -class CBF(abc.ABC): +class Barrier(abc.ABC): r"""Abstract base class for Control Barrier Functions (CBFs). A CBF is a function :math:`\boldsymbol{h}(\boldsymbol{q})` that satisfies the following condition: @@ -36,7 +36,7 @@ class CBF(abc.ABC): safe_policy (Optional[np.ndarray]): Safe backup control policy. r (float): Weighting factor for the safe backup policy regularization term. """ - + gain: Union[float, np.ndarray] class_k_fns: Callable[[np.ndarray], float] safe_policy: Optional[np.ndarray] @@ -61,9 +61,7 @@ def __init__( """ self.dim = dim - self.gain = ( - gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain - ) + self.gain = gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain self.class_k_fn = class_k_fn if class_k_fn is not None else lambda x: x self.r = r @@ -147,11 +145,7 @@ def compute_qp_objective( if self.r > 1e-6: safe_policy = self.compute_safe_policy(configuration) - H += ( - self.r - / (np.linalg.norm(jac) ** 2) - * np.eye(configuration.model.nq) - ) + H += self.r / (np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) c += -2 * self.r / (np.linalg.norm(jac) ** 2) * safe_policy return (H, c) @@ -181,12 +175,7 @@ def compute_qp_inequality( """ G = -self.compute_jacobian(configuration) / dt barrier_value = self.compute_barrier(configuration) - h = np.array( - [ - self.gain[i] * self.class_k_fn(barrier_value[i]) - for i in range(self.dim) - ] - ) + h = np.array([self.gain[i] * self.class_k_fn(barrier_value[i]) for i in range(self.dim)]) return (G, h) diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index 0b689ac9..0e0ab23b 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -11,10 +11,10 @@ import numpy as np from ..configuration import Configuration -from .barrier import CBF +from .barrier import Barrier -class BodySphericalCBF(CBF): +class BodySphericalBarrier(Barrier): r"""Abstract class description. Attributes: @@ -43,42 +43,26 @@ def __init__( def compute_barrier(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world( - self.frame[0] - ).translation - pos2_world = configuration.get_transform_frame_to_world( - self.frame[1] - ).translation + pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation - return np.array( - [np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2] - ) + return np.array([np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2]) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """...""" - pos1_world = configuration.get_transform_frame_to_world( - self.frame[0] - ).translation - pos2_world = configuration.get_transform_frame_to_world( - self.frame[1] - ).translation + pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation + pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation pos1_jac = configuration.get_frame_jacobian(self.frame[0])[:3] # Transform jacobian to world aligned frame - rotation1 = configuration.get_transform_frame_to_world( - self.frame[0] - ).rotation + rotation1 = configuration.get_transform_frame_to_world(self.frame[0]).rotation pos1_jac = rotation1 @ pos1_jac pos2_jac = configuration.get_frame_jacobian(self.frame[1])[:3] # Transform jacobian to world aligned frame - rotation2 = configuration.get_transform_frame_to_world( - self.frame[1] - ).rotation + rotation2 = configuration.get_transform_frame_to_world(self.frame[1]).rotation pos2_jac = rotation2 @ pos2_jac - dh_dx = 2 * np.concatenate( - [pos1_world - pos2_world, pos2_world - pos1_world] - ) + dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) dx_dq = np.vstack([pos1_jac, pos2_jac]) return dh_dx.T @ dx_dq diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index 8df9b7c6..fe6adecb 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -19,10 +19,10 @@ from pink.configuration import Configuration -from .barrier import CBF +from .barrier import Barrier -class ConfigurationCBF(CBF): +class ConfigurationBarrier(Barrier): """Control Barrier Function (CBF) based on joint configuration limits. The ConfigurationCBF class represents a subset of bounded joints associated @@ -111,15 +111,9 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. """ q = configuration.q - delta_q_max = pin.difference( - self.model, q, self.model.upperPositionLimit - ) - delta_q_min = pin.difference( - self.model, q, self.model.lowerPositionLimit - ) - return np.hstack( - [-delta_q_min[self.indices], delta_q_max[self.indices]] - ) + delta_q_max = pin.difference(self.model, q, self.model.upperPositionLimit) + delta_q_min = pin.difference(self.model, q, self.model.lowerPositionLimit) + return np.hstack([-delta_q_min[self.indices], delta_q_max[self.indices]]) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: r"""Compute the Jacobian matrix of the barrier function. diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index d4059b97..28772a3b 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -14,10 +14,10 @@ import numpy as np from ..configuration import Configuration -from .barrier import CBF +from .barrier import Barrier -class PositionCBF(CBF): +class PositionBarrier(Barrier): r"""A position-based barrier. Defines a barrier function based on the position of a @@ -80,9 +80,7 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: Returns: Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. """ - pos_world = configuration.get_transform_frame_to_world( - self.frame - ).translation + pos_world = configuration.get_transform_frame_to_world(self.frame).translation cbfs = [] if self.p_min is not None: cbfs.append(pos_world[self.indices] - self.p_min) @@ -106,9 +104,7 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: """ pos_jac = configuration.get_frame_jacobian(self.frame)[:3] # Transform jacobian to world aligned frame - rotation = configuration.get_transform_frame_to_world( - self.frame - ).rotation + rotation = configuration.get_transform_frame_to_world(self.frame).rotation pos_jac = rotation @ pos_jac # Select only relevant indices diff --git a/pink/configuration.py b/pink/configuration.py index d2e0593c..105e26ab 100644 --- a/pink/configuration.py +++ b/pink/configuration.py @@ -160,9 +160,7 @@ def get_frame_jacobian(self, frame: str) -> np.ndarray: if not self.model.existFrame(frame): raise FrameNotFound(frame, self.model.frames) frame_id = self.model.getFrameId(frame) - J: np.ndarray = pin.getFrameJacobian( - self.model, self.data, frame_id, pin.ReferenceFrame.LOCAL - ) + J: np.ndarray = pin.getFrameJacobian(self.model, self.data, frame_id, pin.ReferenceFrame.LOCAL) return J def get_transform_frame_to_world(self, frame: str) -> pin.SE3: diff --git a/pink/solve_ik.py b/pink/solve_ik.py index 11478b5e..15b69bb4 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -11,7 +11,7 @@ import numpy as np import qpsolvers -from .barriers import CBF +from .barriers import Barrier from .configuration import Configuration from .tasks import Task @@ -21,7 +21,7 @@ def __compute_qp_objective( tasks: Iterable[Task], damping: float, dt: float, - cbfs: Iterable[CBF] = [], + cbfs: Iterable[Barrier] = [], ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the QP objective function. @@ -65,7 +65,7 @@ def __compute_qp_objective( def __compute_qp_inequalities( configuration, dt: float, - cbfs: Iterable[CBF] = [], + cbfs: Iterable[Barrier] = [], use_position_limit: bool = True, ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray]]: r"""Compute inequality constraints for the quadratic program. @@ -115,7 +115,7 @@ def build_ik( tasks: Iterable[Task], dt: float, damping: float = 1e-12, - cbfs: Iterable[CBF] = [], + cbfs: Iterable[Barrier] = [], use_position_limit: bool = True, ) -> qpsolvers.Problem: r"""Build quadratic program from current configuration and tasks. @@ -162,7 +162,7 @@ def solve_ik( dt: float, solver: str, damping: float = 1e-12, - cbfs: Iterable[CBF] = [], + cbfs: Iterable[Barrier] = [], use_position_limit: bool = True, **kwargs, ) -> np.ndarray: From 05c37703fea3587c20e6c91ee8aa1a92760eab7b Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 14:09:44 +0300 Subject: [PATCH 042/101] docs: fix documentation --- pink/barriers/barrier.py | 18 +++++++++--------- pink/barriers/configuration_barrier.py | 14 +++++++------- pink/barriers/position_barrier.py | 8 ++++---- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index 1fb08a17..622681ab 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -30,11 +30,11 @@ class Barrier(abc.ABC): :math:`\dot{\boldsymbol{q}}` is the joint velocity vector, and :math:`\alpha_j` are extended class K functions. Attributes: - dim (int): Dimension of the CBF. - gain (Union[float, np.ndarray]): CBF gain. - class_k_fn (Callable[[np.ndarray], float]): Extended class K function. - safe_policy (Optional[np.ndarray]): Safe backup control policy. - r (float): Weighting factor for the safe backup policy regularization term. + dim: Dimension of the CBF. + gain: CBF gain. + class_k_fn: Extended class K function. + safe_policy: Safe backup control policy. + r: Weighting factor for the safe backup policy regularization term. """ gain: Union[float, np.ndarray] @@ -52,11 +52,11 @@ def __init__( """Initialize the CBF. Args: - dim (int): Dimension of the CBF. - gain (Union[float, np.ndarray]): CBF gain. Defaults to 1.0. - class_k_fn (Optional[Callable[[np.ndarray], float]]): Extended class K function. + dim: Dimension of the CBF. + gain: CBF gain. Defaults to 1.0. + class_k_fn: Extended class K function. Defaults to the identity function. - r (float): Weighting factor for the safe backup policy regularization term. + r: Weighting factor for the safe backup policy regularization term. Defaults to 3.0. """ diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index fe6adecb..5a813a95 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -31,10 +31,10 @@ class ConfigurationBarrier(Barrier): specified bounds. Attributes: - indices (np.ndarray): Indices of the bounded joints. - model (pin.Model): Pinocchio model of the robot. - joints (list): List of bounded joints. - projection_matrix (Optional[np.ndarray]): Projection matrix for the bounded joints. + indices: Indices of the bounded joints. + model: Pinocchio model of the robot. + joints: List of bounded joints. + projection_matrix: Projection matrix for the bounded joints. """ indices: np.ndarray @@ -51,9 +51,9 @@ def __init__( """Initialize the ConfigurationCBF. Args: - model (pin.Model): Pinocchio model of the robot. - gain (Union[float, np.ndarray]): CBF gain. Defaults to 0.5. - r (float): Weighting factor for the safe backup policy regularization term. + model: Pinocchio model of the robot. + gain: CBF gain. Defaults to 0.5. + r: Weighting factor for the safe backup policy regularization term. Defaults to 3.0. """ diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 28772a3b..262d6c6f 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -25,10 +25,10 @@ class PositionBarrier(Barrier): specification of minimum and maximum position bounds along selected axes. Attributes: - frame (str): Name of the frame to monitor. - indices (Iterable[int]): Indices of the position components to consider. - p_min (Optional[np.ndarray]): Minimum position bounds. - p_max (Optional[np.ndarray]): Maximum position bounds. + frame: Name of the frame to monitor. + indices: Indices of the position components to consider. + p_min: Minimum position bounds. + p_max: Maximum position bounds. """ frame: str From 105e43ce05cf7891feb02f6764e562aa73b08e84 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 14:10:21 +0300 Subject: [PATCH 043/101] fix: remove temporary file from git --- examples/cbf/test.py | 115 ------------------------------------------- 1 file changed, 115 deletions(-) delete mode 100644 examples/cbf/test.py diff --git a/examples/cbf/test.py b/examples/cbf/test.py deleted file mode 100644 index 1587e63c..00000000 --- a/examples/cbf/test.py +++ /dev/null @@ -1,115 +0,0 @@ -import pathlib as p - -import numpy as np -import pinocchio as pin -from robot_descriptions.panda_description import URDF_PATH - -urdf_path = p.Path(URDF_PATH) -filename = str(urdf_path) -print(filename) - -# Load model -model = pin.buildModelFromUrdf(filename) - -# Load collision geometries -geom_model = pin.buildGeomFromUrdf( - model, - filename, - str(urdf_path.parents[4]), - pin.GeometryType.COLLISION, -) - -# Add collisition pair -geom_model.addAllCollisionPairs() -for i in range(model.nq): - geom_model.removeCollisionPair(pin.CollisionPair(i, i + 1)) -print("num collision pairs - initial:", len(geom_model.collisionPairs)) - -q = np.random.rand(model.nq) - -# Create data structures -data = model.createData() -geom_data = pin.GeometryData(geom_model) - -# Compute all the collisions -pin.computeCollisions(model, data, geom_model, geom_data, q, False) -pin.computeDistances(model, data, geom_model, geom_data, q) -N = len(geom_model.collisionPairs) -# Print the status of collision for all collision pairs -for k in range(len(geom_model.collisionPairs)): - cr = geom_data.collisionResults[k] - cp = geom_model.collisionPairs[k] - dr = geom_data.distanceResults[k] - - go_1 = geom_model.geometryObjects[cp.first].name - go_2 = geom_model.geometryObjects[cp.second].name - if cr.isCollision(): - print( - f"collision pair #{k}:", - go_1, - ",", - go_2, - "- collision:", - "Yes" if cr.isCollision() else "No", - ) - print("distance:", dr.min_distance) - -# Compute for a single pair of collision - -# Computing jacobian -pin.computeJointJacobians(model, data, q) - -J = np.zeros((N, model.nq)) -Jrow_q = np.zeros(model.nq) -Jrow_v = np.zeros(model.nv) - -dr = geom_data.distanceResults[0] - -print() -print("Computing jacobian") -for k in range(len(geom_model.collisionPairs)): - cr = geom_data.collisionResults[k] - cp = geom_model.collisionPairs[k] - dr = geom_data.distanceResults[k] - - go_1 = geom_model.geometryObjects[cp.first] - go_2 = geom_model.geometryObjects[cp.second] - - j1_id = go_1.parentJoint - j2_id = go_2.parentJoint - if j1_id - j2_id == 1: - continue - - w1 = dr.getNearestPoint1() - r1 = w1 - data.oMi[j1_id].translation - ddr_dw1 = -dr.normal.reshape(1, -1) - print(np.linalg.norm(dr.normal)) - dw1_dj1 = np.block([np.eye(3), -pin.skew(r1)]) - dj1_dq = pin.getJointJacobian( - model, data, j1_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED - ) - Jrow_v = ddr_dw1 @ dw1_dj1 @ dj1_dq - - w2 = dr.getNearestPoint2() - r2 = w2 - data.oMi[j2_id].translation - ddr_dw2 = dr.normal.reshape(1, -1) - dw2_dj2 = np.block([np.eye(3), -pin.skew(r2)]) - dj2_dq = pin.getJointJacobian( - model, data, j2_id, pin.ReferenceFrame.LOCAL_WORLD_ALIGNED - ) - Jrow_v += ddr_dw2 @ dw2_dj2 @ dj2_dq - - if cr.isCollision(): - print(f"Collision pair #{k}:", go_1.name, ",", go_2.name) - - J[k] = Jrow_v - -# print("bad values in distance jacobian:") -# print("q =", q) -# for k in range(len(geom_model.collisionPairs)): -# cr = geom_data.collisionResults[k] -# cp = geom_model.collisionPairs[k] -# dr = geom_data.distanceResults[k] -# print("at row", k, ":", J[k]) -# print("distance:", dr.min_distance) -# print(f"collision pair #{k}:", cp.first, ",", cp.second, "- collision:", "Yes" if cr.isCollision() else "No") From 5cd638f48a8efab50afddb14be5267533f7ffa9c Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 14:20:23 +0300 Subject: [PATCH 044/101] refactor: examples/cbfs -> examples/barriers --- examples/{cbf => barriers}/NOTES.md | 0 examples/{cbf => barriers}/README.md | 0 examples/{cbf => barriers}/arm_ur5.py | 0 examples/{cbf => barriers}/arms_yumi.py | 0 examples/{cbf => barriers}/meshcat_shapes.py | 0 5 files changed, 0 insertions(+), 0 deletions(-) rename examples/{cbf => barriers}/NOTES.md (100%) rename examples/{cbf => barriers}/README.md (100%) rename examples/{cbf => barriers}/arm_ur5.py (100%) rename examples/{cbf => barriers}/arms_yumi.py (100%) rename examples/{cbf => barriers}/meshcat_shapes.py (100%) diff --git a/examples/cbf/NOTES.md b/examples/barriers/NOTES.md similarity index 100% rename from examples/cbf/NOTES.md rename to examples/barriers/NOTES.md diff --git a/examples/cbf/README.md b/examples/barriers/README.md similarity index 100% rename from examples/cbf/README.md rename to examples/barriers/README.md diff --git a/examples/cbf/arm_ur5.py b/examples/barriers/arm_ur5.py similarity index 100% rename from examples/cbf/arm_ur5.py rename to examples/barriers/arm_ur5.py diff --git a/examples/cbf/arms_yumi.py b/examples/barriers/arms_yumi.py similarity index 100% rename from examples/cbf/arms_yumi.py rename to examples/barriers/arms_yumi.py diff --git a/examples/cbf/meshcat_shapes.py b/examples/barriers/meshcat_shapes.py similarity index 100% rename from examples/cbf/meshcat_shapes.py rename to examples/barriers/meshcat_shapes.py From 5a27be2438a73f67fd9b9f815a54c4fb7ffc9afe Mon Sep 17 00:00:00 2001 From: simeon Date: Sat, 11 May 2024 14:30:06 +0300 Subject: [PATCH 045/101] modified spherical barrier --- pink/barriers/barrier.py | 28 +++--- pink/barriers/body_spherical_barrier.py | 113 +++++++++++++++++++++--- pink/barriers/configuration_barrier.py | 10 +-- 3 files changed, 119 insertions(+), 32 deletions(-) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index 622681ab..aa85bb9b 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -4,9 +4,9 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright 2022 Stéphane Caron -"""All barriers derive from the :class:`CBF` base class. +"""All barriers derive from the :class:`Barrier` base class. -The formalism used in this implementation is written down in examples/cbf/NOTES.md +The formalism used in this implementation is written down in examples/barriers/NOTES.md """ import abc @@ -18,9 +18,9 @@ class Barrier(abc.ABC): - r"""Abstract base class for Control Barrier Functions (CBFs). + r"""Abstract base class for barrier. - A CBF is a function :math:`\boldsymbol{h}(\boldsymbol{q})` that satisfies the following condition: + A barrier is a function :math:`\boldsymbol{h}(\boldsymbol{q})` that satisfies the following condition: .. math:: @@ -30,8 +30,8 @@ class Barrier(abc.ABC): :math:`\dot{\boldsymbol{q}}` is the joint velocity vector, and :math:`\alpha_j` are extended class K functions. Attributes: - dim: Dimension of the CBF. - gain: CBF gain. + dim: Dimension of the barrier. + gain: barrier gain. class_k_fn: Extended class K function. safe_policy: Safe backup control policy. r: Weighting factor for the safe backup policy regularization term. @@ -49,11 +49,11 @@ def __init__( class_k_fn: Optional[Callable[[np.ndarray], float]] = None, r: float = 3.0, ): - """Initialize the CBF. + """Initialize the barrier. Args: - dim: Dimension of the CBF. - gain: CBF gain. Defaults to 1.0. + dim: Dimension of the barrier. + gain: barrier gain. Defaults to 1.0. class_k_fn: Extended class K function. Defaults to the identity function. r: Weighting factor for the safe backup policy regularization term. @@ -88,7 +88,7 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: The Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})` of the barrier function with respect to the configuration variables is required - for the computation of the CBF condition. + for the computation of the barrier condition. Args: configuration: Robot configuration :math:`\boldsymbol{q}`. @@ -118,7 +118,7 @@ def compute_qp_objective( configuration: Configuration, dt: float = 1e-3, ) -> Tuple[np.ndarray, np.ndarray]: - r"""Compute the quadratic objective function for the CBF-based QP. + r"""Compute the quadratic objective function for the barrier-based QP. The quadratic objective function includes a regularization term based on the safe backup policy: @@ -155,9 +155,9 @@ def compute_qp_inequality( configuration: Configuration, dt: float = 1e-3, ) -> Tuple[np.ndarray, np.ndarray]: - r"""Compute the linear inequality constraints for the CBF-based QP. + r"""Compute the linear inequality constraints for the barrier-based QP. - The linear inequality constraints enforce the CBF conditions: + The linear inequality constraints enforce the barrier conditions: .. math:: @@ -181,7 +181,7 @@ def compute_qp_inequality( def __repr__(self) -> str: """ - Return a string representation of the CBF. + Return a string representation of the barrier. Returns: str: String representation. diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index 0e0ab23b..bee32a95 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -4,7 +4,10 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright 2022 Stéphane Caron -"""General description""" +""" +This module defines the BodySphericalBarrier class, which is a concrete implementation +of a barrier based on the distance between two frames. +""" from typing import Iterable, Optional, Union @@ -15,10 +18,24 @@ class BodySphericalBarrier(Barrier): - r"""Abstract class description. + r"""A barrier based on the distance between two frames. + + Defines a barrier function based on the Euclidean distance between two + specified frames. It allows for the specification of a minimum distance + threshold. + + The barrier function is defined as: + + .. math:: + + h(\boldsymbol{q}) = \|\boldsymbol{p}_1(\boldsymbol{q}) - \boldsymbol{p}_2(\boldsymbol{q})\|^2 - d_{min}^2 + + where :math:`\boldsymbol{p}_1(\boldsymbol{q})` and :math:`\boldsymbol{p}_2(\boldsymbol{q})` are the positions of the two frames + in the world coordinate system, and :math:`d_{min}` is the minimum distance threshold. Attributes: - ... + frames: Tuple of two frame names. + d_min: Minimum distance threshold. """ frames: tuple[str, str] @@ -31,7 +48,15 @@ def __init__( gain: Union[float, np.ndarray] = 1.0, r: float = 3.0, ): - """...""" + """Initialize the BodySphericalBarrier. + + Args: + frame: Tuple of two frame names. + d_min: Minimum distance threshold. + gain: Barrier gain. Defaults to 1.0. + r: Weighting factor for the safe backup policy regularization term. + Defaults to 3.0. + """ super().__init__( dim=1, gain=gain, @@ -42,27 +67,89 @@ def __init__( self.d_min = d_min def compute_barrier(self, configuration: Configuration) -> np.ndarray: - """...""" - pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation - pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + r"""Compute the value of the barrier function. + + The barrier function is computed based on the Euclidean distance between + the two specified frames. It considers the minimum distance threshold. + The barrier function is given by: + + .. math:: + + h(\boldsymbol{q}) = \|\boldsymbol{p}_1(\boldsymbol{q}) - \boldsymbol{p}_2(\boldsymbol{q})\|^2 - d_{min}^2 + + where :math:`\boldsymbol{p}_1(\boldsymbol{q})` and :math:`\boldsymbol{p}_2(\boldsymbol{q})` are the positions of the two frames + in the world coordinate system, and :math:`d_{min}` is the minimum distance threshold. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. + """ + pos1_world, pos2_world = self._get_frame_positions(configuration) return np.array([np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2]) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: - """...""" + r"""Compute the Jacobian matrix of the barrier function. + + The Jacobian matrix is computed based on the position Jacobians of the + two specified frames. The Jacobians are transformed to align with the + world coordinate system. + + The Jacobian matrix is given by: + + .. math:: + + \frac{\partial h}{\partial \boldsymbol{q}}(\boldsymbol{q}) = 2(\boldsymbol{p}_1(\boldsymbol{q}) - \boldsymbol{p}_2(\boldsymbol{q}))^T \begin{bmatrix} + \frac{\partial \boldsymbol{p}_1}{\partial \boldsymbol{q}}(\boldsymbol{q}) \\ + -\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}}(\boldsymbol{q}) + \end{bmatrix} + + where :math:`\frac{\partial \boldsymbol{p}_1}{\partial \boldsymbol{q}}(\boldsymbol{q})` and :math:`\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}}(\boldsymbol{q})` + are the position Jacobians of the two frames. + + Args: + configuration: Robot configuration :math:`\boldsymbol{q}`. + + Returns: + Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ + pos1_world, pos2_world = self._get_frame_positions(configuration) + pos1_jac, pos2_jac = self._get_frame_jacobians(configuration) + + dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) + dx_dq = np.vstack([pos1_jac, pos2_jac]) + return dh_dx.T @ dx_dq + + def _get_frame_positions(self, configuration: Configuration) -> tuple[np.ndarray, np.ndarray]: + """Get the positions of the two frames in the world coordinate system. + + Args: + configuration: Robot configuration. + + Returns: + Tuple of position vectors of the two frames in the world coordinate system. + """ pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + return pos1_world, pos2_world + + def _get_frame_jacobians(self, configuration: Configuration) -> tuple[np.ndarray, np.ndarray]: + """Get the position Jacobians of the two frames in the world coordinate system. + Args: + configuration: Robot configuration. + + Returns: + Tuple of position Jacobian matrices of the two frames in the world coordinate system. + """ pos1_jac = configuration.get_frame_jacobian(self.frame[0])[:3] - # Transform jacobian to world aligned frame rotation1 = configuration.get_transform_frame_to_world(self.frame[0]).rotation pos1_jac = rotation1 @ pos1_jac pos2_jac = configuration.get_frame_jacobian(self.frame[1])[:3] - # Transform jacobian to world aligned frame rotation2 = configuration.get_transform_frame_to_world(self.frame[1]).rotation pos2_jac = rotation2 @ pos2_jac - dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) - dx_dq = np.vstack([pos1_jac, pos2_jac]) - return dh_dx.T @ dx_dq + return pos1_jac, pos2_jac \ No newline at end of file diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index 5a813a95..1d98fa4d 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -6,7 +6,7 @@ # Copyright 2023 Inria """ -This module defines the ConfigurationCBF class, which represents a subset of +This module defines the ConfigurationBarrier class, which represents a subset of bounded joints associated with a robot model and implements a barrier based on joint configuration limits. """ @@ -23,9 +23,9 @@ class ConfigurationBarrier(Barrier): - """Control Barrier Function (CBF) based on joint configuration limits. + """Barrier based on joint configuration limits. - The ConfigurationCBF class represents a subset of bounded joints associated + The ConfigurationBarrier class represents a subset of bounded joints associated with a robot model. It defines a barrier function based on the joint configuration limits to ensure that the joint positions remain within the specified bounds. @@ -48,11 +48,11 @@ def __init__( gain: Union[float, np.ndarray] = 0.5, r: float = 3.0, ): - """Initialize the ConfigurationCBF. + """Initialize the ConfigurationBarrier. Args: model: Pinocchio model of the robot. - gain: CBF gain. Defaults to 0.5. + gain: barrier gain. Defaults to 0.5. r: Weighting factor for the safe backup policy regularization term. Defaults to 3.0. """ From 36363d509904ad198b557d6ae2a3a0d4719968d2 Mon Sep 17 00:00:00 2001 From: simeon Date: Sat, 11 May 2024 14:44:49 +0300 Subject: [PATCH 046/101] fixed typo in docs --- pink/barriers/position_barrier.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 262d6c6f..da2936dd 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -6,7 +6,7 @@ """ This module defines the PositionBarrier class, which is a concrete implementation -of a position-based Control Barrier Function (CBF). +of a position-based barrier. """ from typing import Iterable, Optional, Union From 2d9eddbad5be6428088f12edf7936e7fc0a94c35 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 19:05:29 +0300 Subject: [PATCH 047/101] refactor: frame -> frames in BodySphericalBarrier --- pink/barriers/body_spherical_barrier.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index bee32a95..f3ac128a 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -43,7 +43,7 @@ class BodySphericalBarrier(Barrier): def __init__( self, - frame: tuple[str, str], + frames: tuple[str, str], d_min: float = None, gain: Union[float, np.ndarray] = 1.0, r: float = 3.0, @@ -51,7 +51,7 @@ def __init__( """Initialize the BodySphericalBarrier. Args: - frame: Tuple of two frame names. + frames: Tuple of two frame names. d_min: Minimum distance threshold. gain: Barrier gain. Defaults to 1.0. r: Weighting factor for the safe backup policy regularization term. @@ -63,7 +63,7 @@ def __init__( # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), r=r, ) - self.frame = frame + self.frames = frames self.d_min = d_min def compute_barrier(self, configuration: Configuration) -> np.ndarray: @@ -131,8 +131,8 @@ def _get_frame_positions(self, configuration: Configuration) -> tuple[np.ndarray Returns: Tuple of position vectors of the two frames in the world coordinate system. """ - pos1_world = configuration.get_transform_frame_to_world(self.frame[0]).translation - pos2_world = configuration.get_transform_frame_to_world(self.frame[1]).translation + pos1_world = configuration.get_transform_frame_to_world(self.frames[0]).translation + pos2_world = configuration.get_transform_frame_to_world(self.frames[1]).translation return pos1_world, pos2_world def _get_frame_jacobians(self, configuration: Configuration) -> tuple[np.ndarray, np.ndarray]: @@ -144,12 +144,12 @@ def _get_frame_jacobians(self, configuration: Configuration) -> tuple[np.ndarray Returns: Tuple of position Jacobian matrices of the two frames in the world coordinate system. """ - pos1_jac = configuration.get_frame_jacobian(self.frame[0])[:3] - rotation1 = configuration.get_transform_frame_to_world(self.frame[0]).rotation + pos1_jac = configuration.get_frame_jacobian(self.frames[0])[:3] + rotation1 = configuration.get_transform_frame_to_world(self.frames[0]).rotation pos1_jac = rotation1 @ pos1_jac - pos2_jac = configuration.get_frame_jacobian(self.frame[1])[:3] - rotation2 = configuration.get_transform_frame_to_world(self.frame[1]).rotation + pos2_jac = configuration.get_frame_jacobian(self.frames[1])[:3] + rotation2 = configuration.get_transform_frame_to_world(self.frames[1]).rotation pos2_jac = rotation2 @ pos2_jac - return pos1_jac, pos2_jac \ No newline at end of file + return pos1_jac, pos2_jac From 20b2ab66ceff24973ed65e3257623f1c4dc68bcc Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 19:05:40 +0300 Subject: [PATCH 048/101] example: ipynb with theory and main results --- examples/barriers/barrier.ipynb | 916 ++++++++++++++++++++++++++++++++ 1 file changed, 916 insertions(+) create mode 100644 examples/barriers/barrier.ipynb diff --git a/examples/barriers/barrier.ipynb b/examples/barriers/barrier.ipynb new file mode 100644 index 00000000..5acb6bd1 --- /dev/null +++ b/examples/barriers/barrier.ipynb @@ -0,0 +1,916 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Control Barrier Functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "This notebook introduces the concept of control barriers and illustrates how to use them in Pink." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import meshcat_shapes\n", + "import numpy as np\n", + "import qpsolvers\n", + "from loop_rate_limiters import RateLimiter\n", + "\n", + "import pink\n", + "from pink import solve_ik\n", + "from pink.barriers import PositionBarrier, ConfigurationBarrier, BodySphericalBarrier\n", + "from pink.tasks import FrameTask, PostureTask\n", + "from pink.visualization import start_meshcat_visualizer\n", + "import pinocchio as pin\n", + "\n", + "from IPython.display import display\n", + "\n", + "from robot_descriptions.loaders.pinocchio import load_robot_description" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "# Robot model and basic configuration for UR5 robot\n", + "ur5_robot = load_robot_description(\"ur5_description\", root_joint=None)\n", + "ur5_q_ref = np.array(\n", + " [\n", + " 1.27153374,\n", + " -0.87988708,\n", + " 1.89104795,\n", + " 1.73996951,\n", + " -0.24610945,\n", + " -0.74979019,\n", + " ]\n", + ")\n", + "ur5_configuration = pink.Configuration(ur5_robot.model, ur5_robot.data, ur5_q_ref)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "# Robot model and basic configuration for Yumi robot\n", + "yumi_robot = load_robot_description(\"yumi_description\", root_joint=None)\n", + "\n", + "# Introducing new frames, which will be used for collision-avoidance barrier later:\n", + "# Left frame\n", + "l_frame_placement = pin.SE3()\n", + "l_frame_placement.translation = np.array([0.0, 0.0, 0.05])\n", + "l_frame_placement.rotation = np.eye(3)\n", + "\n", + "l_frame = pin.Frame(\n", + " \"yumi_barrier_l\",\n", + " yumi_robot.model.getJointId(\"yumi_joint_6_l\"),\n", + " yumi_robot.model.getFrameId(\"yumi_link_7_l\"),\n", + " l_frame_placement,\n", + " pin.FrameType.OP_FRAME,\n", + ")\n", + "\n", + "# Right frame\n", + "r_frame_placement = pin.SE3()\n", + "r_frame_placement.translation = np.array([0.0, 0.0, 0.05])\n", + "r_frame_placement.rotation = np.eye(3)\n", + "\n", + "r_frame = pin.Frame(\n", + " \"yumi_barrier_r\",\n", + " yumi_robot.model.getJointId(\"yumi_joint_6_r\"),\n", + " yumi_robot.model.getFrameId(\"yumi_link_7_r\"),\n", + " r_frame_placement,\n", + " pin.FrameType.OP_FRAME,\n", + ")\n", + "\n", + "yumi_robot.model.addFrame(l_frame)\n", + "yumi_robot.model.addFrame(r_frame)\n", + "\n", + "yumi_robot.data = pin.Data(yumi_robot.model)\n", + "\n", + "\n", + "yumi_q_ref = np.array(\n", + " [\n", + " 0.045,\n", + " -0.155,\n", + " -0.394,\n", + " -0.617,\n", + " -0.939,\n", + " -0.343,\n", + " -1.216,\n", + " 0,\n", + " 0,\n", + " -0.374,\n", + " -0.249,\n", + " 0.562,\n", + " -0.520,\n", + " 0.934,\n", + " -0.337,\n", + " 1.400,\n", + " 0,\n", + " 0,\n", + " ]\n", + ")\n", + "yumi_configuration = pink.Configuration(yumi_robot.model, yumi_robot.data, yumi_q_ref)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Introduction" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Control barrier functions (CBFs) are used to enforce safety for nonlinear control affine systems of the form:\n", + "\n", + "$$\n", + "\\dot{x}=f(x)+g(x) u\n", + "$$\n", + "\n", + "where $f$ and $g$ are locally Lipschitz, $x \\in D \\subset \\mathbb{R}^{n}$, and $u \\in U \\subset \\mathbb{R}^{m}$ is the set of admissible inputs." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Safety and Safe Sets" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Safety is framed in the context of enforcing invariance of a set, i.e., not leaving a safe set. Consider a set $\\mathcal{S}$ defined as the superlevel set of a continuously differentiable function $h: D \\subset \\mathbb{R}^{n} \\rightarrow \\mathbb{R}$:\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "\\mathcal{S} & =\\left\\{x \\in D \\subset \\mathbb{R}^{n}: h(x) \\geq 0\\right\\} \\\\\n", + "\\partial \\mathcal{S} & =\\left\\{x \\in D \\subset \\mathbb{R}^{n}: h(x)=0\\right\\} \\\\\n", + "\\operatorname{Int}(\\mathcal{S}) & =\\left\\{x \\in D \\subset \\mathbb{R}^{n}: h(x)>0\\right\\}\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "We refer to $\\mathcal{S}$ as the safe set. The system is safe with respect to the set $\\mathcal{S}$ if the set $\\mathcal{S}$ is forward invariant. Formally, the set $\\mathcal{S}$ is forward invariant if for every $x_{0} \\in \\mathcal{S}$, the solution $x(t)$ satisfying $x(0)=x_0$ remains in $\\mathcal{S}$ for all $t$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Control Barrier Functions" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "A function $h$ is a control barrier function (CBF) if there exists an extended class $\\mathcal{K}_{\\infty}$ function $\\alpha$ such that:\n", + "\n", + "$$\n", + "\\sup _{u \\in U}\\left[L_{f} h(x)+L_{g} h(x) u\\right] \\geq-\\alpha(h(x))\n", + "$$\n", + "\n", + "for all $x \\in D$. Here $L_f h$ and $L_g h$ denote the Lie derivatives of $h$ along $f$ and $g$.\n", + "\n", + "The set of all control values that render $\\mathcal{S}$ safe is:\n", + "\n", + "$$\n", + "K_{\\mathrm{cbf}}(x)=\\left\\{u \\in U: L_{f} h(x)+L_{g} h(x) u+\\alpha(h(x)) \\geq 0\\right\\}\n", + "$$\n", + "\n", + "The main result regarding CBFs is that their existence implies the control system is safe:\n", + "\n", + "**Theorem:** Let $\\mathcal{S} \\subset \\mathbb{R}^{n}$ be a set defined as the superlevel set of a continuously differentiable function $h: D \\subset \\mathbb{R}^{n} \\rightarrow \\mathbb{R}$. If $h$ is a CBF on $D$ and $\\frac{\\partial h}{\\partial x}(x) \\neq 0$ for all $x \\in \\partial \\mathcal{S}$, then any Lipschitz continuous controller $u(x) \\in K_{\\mathrm{cbf}}(x)$ renders the set $\\mathcal{S}$ safe and asymptotically stable in $D$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Optimization Based Control\n", + "\n", + "To synthesize safety-critical controllers, we can solve a quadratic program (QP) to minimally modify an existing controller $k(x)$ to guarantee safety:\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "u(x)=\\underset{u \\in \\mathbb{R}^{m}}{\\operatorname{argmin}} & \\frac{1}{2}\\|u-k(x)\\|^{2} \\quad(\\mathrm{CBF}-\\mathrm{QP}) \\\\\n", + "\\text { s.t. } & L_{f} h(x)+L_{g} h(x) u \\geq-\\alpha(h(x))\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "When there are no input constraints ($U=\\mathbb{R}^m$), the CBF-QP has a closed-form solution given by the min-norm controller." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Discrete-Time Implementations\n", + "\n", + "Discrete-time implementations of continuous-time CBF-based safety filters can lead to some challenges. When solving the CBF-QP at a sampling time $\\Delta t>0$, safety is only guaranteed at the initial time step $t_{0}$, but not for the open time interval $(t_{0}, t_{0}+\\Delta t)$. Suboptimal performance can arise when $\\|L_{g} L_{f}^{s-1} h(x)\\| \\rightarrow 0$, as large inputs permissible by the CBF condition applied over the finite time interval could result in undesirable behavior.\n", + "\n", + "Another issue occurs when $L_{g} L_{f}^{s-1} h(x)=0$, indicating a local relative degree higher than $s$. In such cases, the safety controller becomes inactive, allowing potentially unsafe control inputs $k(x)$ to be applied for at least the time interval $[t_{0}, t_{0}+\\Delta t)$, which may lead to safe set violations or suboptimal performance.\n", + "\n", + "One method to handle the case of $\\|L_{g} L_{f}^{s-1} h(x)\\| \\rightarrow 0$ is by modifying the safety filter objective function. We can add a term that explicitly accounts for $L_{g} L_{f}^{s-1} h(x)$ becoming close to 0. The proposed modified safety filtering objective is:\n", + "\n", + "$$\n", + "J(x)=\\frac{1}{2}\\|u-k(x)\\|^{2}+\\frac{r}{2\\|L_{g} L_{f}^{s-1} h(x)\\|^{2}}\\|u-k_{\\text{safe}}(x)\\|^{2}\n", + "$$\n", + "\n", + "where $k_{\\text{safe}}$ is a known safe backup control policy (e.g., a stabilizing controller that renders $\\mathcal{S}$ control invariant). The parameter $r>0$ is a weighting factor.\n", + "\n", + "This new objective replaces the standard CBF-QP objective for all $\\|L_{g} L_{f}^{s-1} h(x)\\|>\\epsilon$, where $\\epsilon$ is a small positive number. The closer $\\|L_{g} L_{f}^{s-1} h(x)\\|$ gets to 0, the greater the impact of the second term in the safety filtering objective. In this case, the safety filter will track the safe backup control policy instead of the potentially unsafe control policy $k(x)$. The weighting parameter $r$ determines the balance between the two terms when $\\|L_{g} L_{f}^{s-1} h(x)\\|$ is far from 0. To avoid numerical instabilities, we set $u(x)=k_{\\text{safe}}(x)$ when the system is in a state $x$ such that $\\|L_{g} L_{f}^{s-1} h(x)\\| \\leq \\epsilon$.\n", + "\n", + "The modified CBF-QP with the penalty term becomes:\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "u(x)=\\underset{u \\in \\mathbb{R}^{m}}{\\operatorname{argmin}} & \\frac{1}{2}\\|u-k(x)\\|^{2}+\\frac{r}{2\\|L_{g} L_{f}^{s-1} h(x)\\|^{2}}\\|u-k_{\\text{safe}}(x)\\|^{2} \\\\\n", + "\\text{s.t.} & L_{f} h(x)+L_{g} h(x) u \\geq-\\alpha(h(x))\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "This strategy requires almost no additional computational effort. However, in practice, the design of the safe backup control policy $k_{\\text{safe}}$ will require some attention. The backup policy should be able to return the system to states where $\\|L_{g} L_{f}^{s-1} h(x)\\|>\\epsilon$. Otherwise, the system will continue using the backup control policy $k_{\\text{safe}}$ for all future time." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## CBF in Differential IK" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Let us study how CBF theory can be applied to solve the multitask inverse kinematics problem subject to configuration-based nonlinear inequalities. \n", + "\n", + "Mathematically, our goal is to find the configuration motion $\\boldsymbol{q}(t) \\in \\mathcal{C}$ such that:\n", + "\n", + "$$\n", + "\\boldsymbol{r}_i(\\boldsymbol{q})=\\boldsymbol{p}_i^{*}-\\boldsymbol{p}_i(\\boldsymbol{q})\n", + "$$\n", + "\n", + "where $\\boldsymbol{p}_i^{*}$ is the desired task reference, $\\boldsymbol{r}_i(\\boldsymbol{q})$ is the task residual error, and $\\boldsymbol{p}_i(\\boldsymbol{q})$ is the forward kinematics function mapping configuration variables to task space.\n", + "\n", + "In addition to the kinematic tasks, suppose we want to enforce the following nonlinear safety constraints:\n", + "\n", + "$$\n", + "h_j(\\boldsymbol{q}) \\geq 0\n", + "$$\n", + "\n", + "Directly solving this constrained optimization problem can lead to challenging nonlinear programs. However, in the context of differential inverse kinematics, we can leverage CBFs to reformulate the problem as a quadratic program (QP) with linear inequality constraints.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## CBF QP Formulation\n", + "\n", + "Differentiating the kinematic task errors once and introducing stabilizing feedback gains yields the following QP formulation:\n", + "\n", + "$$\n", + "\\underset{\\dot{\\boldsymbol{q}}}{\\operatorname{minimize}} \\sum_{\\operatorname{task} i} w_{i}\\left\\|\\boldsymbol{J}_{i} \\dot{\\boldsymbol{q}}-K_{i} \\boldsymbol{v}_{i}\\right\\|^{2}\n", + "$$\n", + "\n", + "Here, $\\boldsymbol{J}_i$ is the task Jacobian, $K_i$ is a positive definite feedback gain matrix, and $\\boldsymbol{v}_i$ is an auxiliary control input. By treating joint velocities $\\dot{\\boldsymbol{q}}$ as optimization variables, we can incorporate the safety constraints $h_j(\\boldsymbol{q}) \\geq 0$ as CBF conditions:\n", + "\n", + "$$\n", + "\\dot{h}_j(\\boldsymbol{q})+\\alpha_j(h_j(\\boldsymbol{q})) = \\frac{\\partial h_j}{\\partial \\boldsymbol{q}} \\dot{\\boldsymbol{q}} +\\alpha_j(h_j(\\boldsymbol{q})) \\geq 0\n", + "$$\n", + "\n", + "Enforcing this constraint ensures the system remains within the safe set $\\mathcal{S}_j =\\left\\{\\boldsymbol{q} \\in D \\subset \\mathbb{R}^{n}: h_j(\\boldsymbol{q}) \\geq 0\\right\\}$. The extended class $\\mathcal{K}$ function $\\alpha_j$ provides a safety margin.\n", + "\n", + "Combining the kinematic tasks and CBF constraints, we arrive at the differentiable IK optimization problem with safety guarantees:\n", + "\n", + "$$\n", + "\\begin{aligned}\n", + "& \\underset{\\dot{\\boldsymbol{q}}}{\\operatorname{minimize}} \\sum_{\\text {task } i} w_{i}\\left\\|\\boldsymbol{J}_{i}(\\boldsymbol{q}) \\dot{\\boldsymbol{q}}-K_{i} \\boldsymbol{v}_{i}\\right\\|^{2} + \\gamma(\\boldsymbol{q})\\left\\| \\dot{\\boldsymbol{q}}-\\dot{\\boldsymbol{q}}_{safe}(\\boldsymbol{q})\\right\\|^{2} \\\\\n", + "& \\text { subject to: } \\frac{\\partial \\boldsymbol{h}_j}{\\partial \\boldsymbol{q}} \\dot{\\boldsymbol{q}} +\\alpha_j(\\boldsymbol{h}_j(\\boldsymbol{q})) \\geq 0, \\quad \\forall j\n", + "\\end{aligned}\n", + "$$\n", + "\n", + "The configuration-dependent weight $\\gamma(\\boldsymbol{q})$, often chosen as $(\\|\\partial h_j \\| +\\epsilon)^{-1}w_h$, ensures safety takes precedence when close to constraint boundaries. The safe backup policy $\\dot{\\boldsymbol{q}}_{safe}(\\boldsymbol{q})$ provides a fallback when $\\|\\partial h_j \\|$ approaches zero. A simple choice is the zero-velocity policy $\\dot{\\boldsymbol{q}}_{safe} = \\boldsymbol{0}$, which stops the robot. Alternatively, one can stabilize to a safe initial configuration." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Control Barrier Functions in Pink" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In pink, Contorl Barrier Functions are implemented based on `Barrier` class. It defines general logic of computing the cost and constraint, using barrier function $\\boldsymbol{h}$ and its jacobian $\\frac{\\partial h_j}{\\partial \\boldsymbol{q}}$. Also, each specific barrier might overwrite a safe backup policy $\\dot{\\boldsymbol{q}}_{safe}(\\boldsymbol{q})$, which equals to zero by default." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The following sections describe the implementation of each barrier in pink." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Position barrier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Position barrier incorporates constraint on the position of specified frame:\n", + "$$p_{min} \\leq p \\leq p_{max}$$\n", + "which could be writeen in the form $h(q) \\geq 0$ as:\n", + "$$h_j(\\boldsymbol{q}) = \\begin{cases} \n", + " p_j - p_j^{min} & j = 1,\\dots,n \\\\\n", + " p_j^{max} - p_j & j = n+1,\\dots,2n\n", + " \\end{cases}$$\n", + "\n", + "\n", + "which is incorporated as single constraint with optional minimal and maximal bounds. Also, it could be applied not to all positions of the frame, but only to specified indices of the position." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "See the following example of position barrier, applied to the end-effector of UR5 robot:" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You can open the visualizer by visiting the following URL:\n", + "http://127.0.0.1:7059/static/\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:root:rate limiter is late by -4.500000 [ms]\n", + "WARNING:root:rate limiter is late by -19.100000 [ms]\n", + "WARNING:root:rate limiter is late by -1.900000 [ms]\n", + "WARNING:root:rate limiter is late by -16.900000 [ms]\n", + "WARNING:root:rate limiter is late by -9.300000 [ms]\n", + "WARNING:root:rate limiter is late by -4.700000 [ms]\n", + "WARNING:root:rate limiter is late by -2.300000 [ms]\n", + "WARNING:root:rate limiter is late by -3.000000 [ms]\n", + "WARNING:root:rate limiter is late by -0.900000 [ms]\n", + "WARNING:root:rate limiter is late by -1.200000 [ms]\n", + "WARNING:root:rate limiter is late by -2.200000 [ms]\n", + "WARNING:root:rate limiter is late by -10.200000 [ms]\n", + "WARNING:root:rate limiter is late by -2.700000 [ms]\n", + "WARNING:root:rate limiter is late by -2.500000 [ms]\n", + "WARNING:root:rate limiter is late by -3.400000 [ms]\n", + "WARNING:root:rate limiter is late by -20.600000 [ms]\n", + "WARNING:root:rate limiter is late by -1.400000 [ms]\n", + "WARNING:root:rate limiter is late by -4.300000 [ms]\n", + "WARNING:root:rate limiter is late by -2.200000 [ms]\n", + "WARNING:root:rate limiter is late by -0.900000 [ms]\n", + "WARNING:root:rate limiter is late by -0.700000 [ms]\n", + "WARNING:root:rate limiter is late by -3.600000 [ms]\n", + "WARNING:root:rate limiter is late by -2.300000 [ms]\n", + "WARNING:root:rate limiter is late by -4.700000 [ms]\n", + "WARNING:root:rate limiter is late by -21.800000 [ms]\n", + "WARNING:root:rate limiter is late by -4.000000 [ms]\n", + "WARNING:root:rate limiter is late by -4.400000 [ms]\n", + "WARNING:root:rate limiter is late by -6.900000 [ms]\n", + "WARNING:root:rate limiter is late by -1.000000 [ms]\n" + ] + } + ], + "source": [ + "# ==== Model =====\n", + "# Update initial configuration\n", + "ur5_configuration.update(ur5_q_ref)\n", + "\n", + "# ===== Tasks =====\n", + "# Task for tracking end-effector\n", + "end_effector_task = FrameTask(\n", + " \"ee_link\",\n", + " position_cost=50.0, # [cost] / [m]\n", + " orientation_cost=1.0, # [cost] / [rad]\n", + ")\n", + "posture_task = PostureTask(\n", + " cost=1e-3, # [cost] / [rad]\n", + ")\n", + "tasks = [end_effector_task, posture_task]\n", + "\n", + "# Initializing task target values\n", + "for task in tasks:\n", + " task.set_target_from_configuration(ur5_configuration)\n", + "\n", + "# ===== Barriers =====\n", + "# Barrier for end-effector, which limits maximal y coordinate \n", + "# value to 0.6\n", + "pos_cbf = PositionBarrier(\n", + " \"ee_link\",\n", + " indices=[1], # Select only y coordinate\n", + " max=np.array([0.6]),\n", + " gain=np.array([100.0]),\n", + " r=1.0,\n", + ")\n", + "cbf_list = [pos_cbf]\n", + "\n", + "# ===== Visualization =====\n", + "viz = start_meshcat_visualizer(ur5_robot)\n", + "viewer = viz.viewer\n", + "display(viewer.jupyter_cell())\n", + "\n", + "viz.display(ur5_configuration.q)\n", + "\n", + "# Initializing visualization frames\n", + "meshcat_shapes.frame(viewer[\"end_effector_target\"], opacity=1.0)\n", + "meshcat_shapes.frame(viewer[\"end_effector\"], opacity=1.0)\n", + "\n", + "# ===== Solver =====\n", + "# Select QP solver\n", + "solver = qpsolvers.available_solvers[0]\n", + "if \"ecos\" in qpsolvers.available_solvers:\n", + " solver = \"ecos\"\n", + "\n", + "# ===== Control Loop =====\n", + "rate = RateLimiter(frequency=150.0)\n", + "dt = rate.period\n", + "t = 0.0 # [s]\n", + "while t < 20:\n", + " # Update task targets\n", + " end_effector_target = end_effector_task.transform_target_to_world\n", + " end_effector_target.translation[1] = 0.0 + 0.7 * np.sin(t / 2)\n", + " end_effector_target.translation[2] = 0.2\n", + "\n", + " # Update visualization frames\n", + " viewer[\"end_effector_target\"].set_transform(end_effector_target.np)\n", + " viewer[\"end_effector\"].set_transform(ur5_configuration.get_transform_frame_to_world(end_effector_task.frame).np)\n", + "\n", + " # Compute velocity and integrate it into next configuration\n", + " # Note that default position limit handle given trajectory\n", + " # much worse than CBF. Hence, we disable it here.\n", + " velocity = solve_ik(\n", + " ur5_configuration,\n", + " tasks,\n", + " dt,\n", + " solver=solver,\n", + " cbfs=cbf_list,\n", + " )\n", + " ur5_configuration.integrate_inplace(velocity, dt)\n", + "\n", + " # Visualize result at fixed FPS\n", + " viz.display(ur5_configuration.q)\n", + " rate.sleep()\n", + " t += dt\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As you could see, the position barrier prevented the robot from going out of the safe set, i.e. $y_{ee} \\leq 0.6$. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Apart from limiting the position of the frame, it also allows to implement joint limits." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Joint Barrier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Joint barrier incorporates constraint on the joints given by urdf model:\n", + "$$q_{min} \\leq q \\leq q_{max}$$\n", + "which could be writeen in the form $h(q) \\geq 0$ as:\n", + "$$h_j(\\boldsymbol{q}) = \\begin{cases} \n", + " q_j - q_j^{min} & j = 1,\\dots,n \\\\\n", + " q_j^{max} - q_j & j = n+1,\\dots,2n\n", + " \\end{cases}$$\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's add joint barrier to the previous example:" + ] + }, + { + "cell_type": "code", + "execution_count": 46, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You can open the visualizer by visiting the following URL:\n", + "http://127.0.0.1:7060/static/\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:root:rate limiter is late by -14.000000 [ms]\n", + "WARNING:root:rate limiter is late by -3.800000 [ms]\n", + "WARNING:root:rate limiter is late by -6.500000 [ms]\n", + "WARNING:root:rate limiter is late by -8.100000 [ms]\n", + "WARNING:root:rate limiter is late by -5.200000 [ms]\n", + "WARNING:root:rate limiter is late by -13.900000 [ms]\n", + "WARNING:root:rate limiter is late by -30.200000 [ms]\n", + "WARNING:root:rate limiter is late by -10.600000 [ms]\n", + "WARNING:root:rate limiter is late by -5.300000 [ms]\n", + "WARNING:root:rate limiter is late by -7.900000 [ms]\n", + "WARNING:root:rate limiter is late by -1.800000 [ms]\n", + "WARNING:root:rate limiter is late by -0.800000 [ms]\n", + "WARNING:root:rate limiter is late by -6.900000 [ms]\n" + ] + } + ], + "source": [ + "# ==== Model =====\n", + "# Update initial configuration\n", + "ur5_configuration.update(ur5_q_ref)\n", + "\n", + "# ===== Tasks =====\n", + "# Initializing task target values\n", + "for task in tasks:\n", + " task.set_target_from_configuration(ur5_configuration)\n", + "\n", + "# ===== Barriers =====\n", + "# Barrier for end-effector, which limits maximal y coordinate \n", + "# value to 0.6\n", + "\n", + "configuration_cbf = ConfigurationBarrier(ur5_robot.model, gain=100, r=1.0)\n", + "cbf_list = [pos_cbf, configuration_cbf]\n", + "\n", + "# ===== Visualization =====\n", + "viz = start_meshcat_visualizer(ur5_robot)\n", + "viewer = viz.viewer\n", + "display(viewer.jupyter_cell())\n", + "\n", + "viz.display(ur5_configuration.q)\n", + "\n", + "# Initializing visualization frames\n", + "meshcat_shapes.frame(viewer[\"end_effector_target\"], opacity=1.0)\n", + "meshcat_shapes.frame(viewer[\"end_effector\"], opacity=1.0)\n", + "\n", + "# ===== Solver =====\n", + "# Select QP solver\n", + "solver = qpsolvers.available_solvers[0]\n", + "if \"ecos\" in qpsolvers.available_solvers:\n", + " solver = \"ecos\"\n", + "\n", + "# ===== Control Loop =====\n", + "rate = RateLimiter(frequency=150.0)\n", + "dt = rate.period\n", + "t = 0.0 # [s]\n", + "while t < 20:\n", + " # Update task targets\n", + " end_effector_target = end_effector_task.transform_target_to_world\n", + " end_effector_target.translation[1] = 0.0 + 0.7 * np.sin(t / 2)\n", + " end_effector_target.translation[2] = 0.2\n", + "\n", + " # Update visualization frames\n", + " viewer[\"end_effector_target\"].set_transform(end_effector_target.np)\n", + " viewer[\"end_effector\"].set_transform(ur5_configuration.get_transform_frame_to_world(end_effector_task.frame).np)\n", + "\n", + " # Compute velocity and integrate it into next configuration\n", + " # Note that default position limit handle given trajectory\n", + " # much worse than CBF. Hence, we disable it here.\n", + " velocity = solve_ik(\n", + " ur5_configuration,\n", + " tasks,\n", + " dt,\n", + " solver=solver,\n", + " cbfs=cbf_list,\n", + " use_position_limit=False, # Disable joint limit handle\n", + " )\n", + " ur5_configuration.integrate_inplace(velocity, dt)\n", + "\n", + " # Visualize result at fixed FPS\n", + " viz.display(ur5_configuration.q)\n", + " rate.sleep()\n", + " t += dt\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The results are the same as in previous example, but the paradigm has changed." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the simulation, one could notice that some self-collisions are present. This is obviously not acceptable in the real world. Therefore, the next section describes the implementation of collision-avoidance barriers." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Collision-Avoidance Barrier" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The collision avoidance barrier is formulated as minimal distance between two specified frames:\n", + "$$||(p_i(\\boldsymbol{q}), p_k(\\boldsymbol{q}))||_2^2 \\geq d_{safe}^2$$\n", + "which could be writeen in the form $h(q) \\geq 0$ as:\n", + "$$h_j(\\boldsymbol{q}) = ||(p_i(\\boldsymbol{q}), p_k(\\boldsymbol{q}))||_2^2 - d_{safe}^2$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Let's examine how it works using example with two-armed manipulator `yumi`:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "You can open the visualizer by visiting the following URL:\n", + "http://127.0.0.1:7027/static/\n" + ] + }, + { + "data": { + "text/html": [ + "\n", + "
\n", + " \n", + "
\n", + " " + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING:root:rate limiter is late by -18.000000 [ms]\n", + "WARNING:root:rate limiter is late by -10.400000 [ms]\n", + "WARNING:root:rate limiter is late by -9.300000 [ms]\n", + "WARNING:root:rate limiter is late by -59.500000 [ms]\n", + "WARNING:root:rate limiter is late by -17.900000 [ms]\n", + "WARNING:root:rate limiter is late by -10.300000 [ms]\n", + "WARNING:root:rate limiter is late by -2.800000 [ms]\n", + "WARNING:root:rate limiter is late by -2.000000 [ms]\n", + "WARNING:root:rate limiter is late by -3.600000 [ms]\n", + "WARNING:root:rate limiter is late by -5.900000 [ms]\n", + "WARNING:root:rate limiter is late by -1.900000 [ms]\n", + "WARNING:root:rate limiter is late by -3.100000 [ms]\n", + "WARNING:root:rate limiter is late by -1.800000 [ms]\n", + "WARNING:root:rate limiter is late by -3.800000 [ms]\n", + "WARNING:root:rate limiter is late by -4.300000 [ms]\n", + "WARNING:root:rate limiter is late by -1.500000 [ms]\n", + "WARNING:root:rate limiter is late by -3.500000 [ms]\n", + "WARNING:root:rate limiter is late by -1.100000 [ms]\n", + "WARNING:root:rate limiter is late by -44.400000 [ms]\n", + "WARNING:root:rate limiter is late by -6.200000 [ms]\n", + "WARNING:root:rate limiter is late by -10.600000 [ms]\n", + "WARNING:root:rate limiter is late by -6.500000 [ms]\n", + "WARNING:root:rate limiter is late by -2.700000 [ms]\n", + "WARNING:root:rate limiter is late by -2.500000 [ms]\n", + "WARNING:root:rate limiter is late by -35.800000 [ms]\n", + "WARNING:root:rate limiter is late by -10.600000 [ms]\n", + "WARNING:root:rate limiter is late by -1.400000 [ms]\n" + ] + } + ], + "source": [ + "# ==== Tasks =====\n", + "# end-effector tracking tasks\n", + "left_ee_task = FrameTask(\n", + " \"yumi_link_7_l\",\n", + " position_cost=50.0, # [cost] / [m]\n", + " orientation_cost=1.0, # [cost] / [rad]\n", + " lm_damping=100, # tuned for this setup\n", + ")\n", + "right_ee_task = FrameTask(\n", + " \"yumi_link_7_r\",\n", + " position_cost=50.0, # [cost] / [m]\n", + " orientation_cost=1.0, # [cost] / [rad]\n", + " lm_damping=100, # tuned for this setup\n", + ")\n", + "# Posture task for regulation\n", + "posture_task = PostureTask(\n", + " cost=1e-3, # [cost] / [rad]\n", + ")\n", + "tasks = [left_ee_task, right_ee_task, posture_task]\n", + "\n", + "for task in tasks:\n", + " task.set_target_from_configuration(yumi_configuration)\n", + "\n", + "# ===== Barriers =====\n", + "# End-effector collision-avoidance barrier\n", + "ee_barrier = BodySphericalBarrier(\n", + " (\"yumi_barrier_l\", \"yumi_barrier_r\"),\n", + " d_min=0.2,\n", + " gain=100.0,\n", + " r=1.0,\n", + ")\n", + "# Joint limit barrier\n", + "configuration_cbf = ConfigurationBarrier(yumi_robot.model, gain=1, r=400.0)\n", + "cbf_list = [ee_barrier, configuration_cbf]\n", + "\n", + "# ==== Visualization =====\n", + "viz = start_meshcat_visualizer(yumi_robot)\n", + "viewer = viz.viewer\n", + "display(viewer.jupyter_cell())\n", + "\n", + "viz.display(yumi_configuration.q)\n", + "\n", + "meshcat_shapes.frame(viewer[\"left_end_effector_target\"], opacity=1.0)\n", + "meshcat_shapes.frame(viewer[\"right_end_effector_target\"], opacity=1.0)\n", + "meshcat_shapes.sphere(\n", + " viewer[\"left_ee_barrier\"],\n", + " opacity=0.4,\n", + " color=0xFF0000,\n", + " radius=0.1,\n", + ")\n", + "meshcat_shapes.sphere(\n", + " viewer[\"right_ee_barrier\"],\n", + " opacity=0.4,\n", + " color=0x00FF00,\n", + " radius=0.1,\n", + ")\n", + "\n", + "# ==== Solver =====\n", + "# Select QP solver\n", + "solver = qpsolvers.available_solvers[0]\n", + "if \"ecos\" in qpsolvers.available_solvers:\n", + " solver = \"ecos\"\n", + "\n", + "# ===== Control Loop =====\n", + "rate = RateLimiter(frequency=100.0)\n", + "dt = rate.period\n", + "t = 0.0 # [s]\n", + "\n", + "# Desired position values\n", + "l_y_des = np.array([0.392, 0.392, 0.6])\n", + "r_y_des = np.array([0.392, 0.392, 0.6])\n", + "l_dy_des = np.zeros(3)\n", + "r_dy_des = np.zeros(3)\n", + "\n", + "while t < 20:\n", + " # Desired trajectories is sinusoidal waves in y and z directions.\n", + " # They also tend to collide with each other.\n", + " l_y_des[:] = 0.6, 0.1 + 0.25 * np.sin(2 * t), 0.6 + 0.1 * np.sin(2 * t)\n", + " r_y_des[:] = 0.6, -0.1 - 0.25 * np.sin(2 * t), 0.6 + 0.1 * np.sin(2 * t)\n", + "\n", + " left_ee_task.transform_target_to_world.translation = l_y_des\n", + " right_ee_task.transform_target_to_world.translation = r_y_des\n", + "\n", + " # Update visualization frames\n", + " viewer[\"left_end_effector_target\"].set_transform(left_ee_task.transform_target_to_world.np)\n", + " viewer[\"right_end_effector_target\"].set_transform(right_ee_task.transform_target_to_world.np)\n", + " viewer[\"left_ee_barrier\"].set_transform(yumi_configuration.get_transform_frame_to_world(\"yumi_barrier_l\").np)\n", + " viewer[\"right_ee_barrier\"].set_transform(yumi_configuration.get_transform_frame_to_world(\"yumi_barrier_r\").np)\n", + "\n", + " # Compute velocity and integrate it into next configuration\n", + " # Note that default position limit handle given trajectory\n", + " # much worse than CBF. Hence, we disable it here.\n", + " velocity = solve_ik(\n", + " yumi_configuration,\n", + " tasks,\n", + " dt,\n", + " solver=solver,\n", + " cbfs=cbf_list,\n", + " use_position_limit=False,\n", + " )\n", + " yumi_configuration.integrate_inplace(velocity, dt)\n", + " # Visualize result at fixed FPS\n", + " viz.display(yumi_configuration.q)\n", + " rate.sleep()\n", + " t += dt\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the example, specified frames did not collide, despite task values motivated them to do so." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "pink", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.14" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} From 9e1cf96d7e16a766e53610991efd11c0e828f5ca Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 19:16:15 +0300 Subject: [PATCH 049/101] feat: argumant to optionally not open visualization --- pink/visualization.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/pink/visualization.py b/pink/visualization.py index 878e8524..b82131d5 100644 --- a/pink/visualization.py +++ b/pink/visualization.py @@ -9,7 +9,10 @@ import pinocchio as pin -def start_meshcat_visualizer(robot: pin.RobotWrapper): +def start_meshcat_visualizer( + robot: pin.RobotWrapper, + open: bool = True, +) -> pin.visualize.MeshcatVisualizer: """Open a MeshCat visualizer in a web browser. Args: @@ -18,10 +21,8 @@ def start_meshcat_visualizer(robot: pin.RobotWrapper): Returns: MeshCat visualizer. """ - viz = pin.visualize.MeshcatVisualizer( - robot.model, robot.collision_model, robot.visual_model - ) + viz = pin.visualize.MeshcatVisualizer(robot.model, robot.collision_model, robot.visual_model) robot.setVisualizer(viz, init=False) - viz.initViewer(open=True) + viz.initViewer(open=open) viz.loadViewerModel() return viz From 8636eccbf23a8e5214137323859075238ee9e760 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 19:16:33 +0300 Subject: [PATCH 050/101] example: disable running simulation in browser in ipynb example --- examples/barriers/barrier.ipynb | 112 +++++++++----------------------- 1 file changed, 30 insertions(+), 82 deletions(-) diff --git a/examples/barriers/barrier.ipynb b/examples/barriers/barrier.ipynb index 5acb6bd1..cb636cef 100644 --- a/examples/barriers/barrier.ipynb +++ b/examples/barriers/barrier.ipynb @@ -60,7 +60,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ @@ -367,7 +367,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 4, "metadata": {}, "outputs": [ { @@ -375,7 +375,7 @@ "output_type": "stream", "text": [ "You can open the visualizer by visiting the following URL:\n", - "http://127.0.0.1:7059/static/\n" + "http://127.0.0.1:7022/static/\n" ] }, { @@ -383,7 +383,7 @@ "text/html": [ "\n", "
\n", - " \n", + " \n", "
\n", " " ], @@ -398,35 +398,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:root:rate limiter is late by -4.500000 [ms]\n", - "WARNING:root:rate limiter is late by -19.100000 [ms]\n", - "WARNING:root:rate limiter is late by -1.900000 [ms]\n", - "WARNING:root:rate limiter is late by -16.900000 [ms]\n", - "WARNING:root:rate limiter is late by -9.300000 [ms]\n", - "WARNING:root:rate limiter is late by -4.700000 [ms]\n", - "WARNING:root:rate limiter is late by -2.300000 [ms]\n", - "WARNING:root:rate limiter is late by -3.000000 [ms]\n", - "WARNING:root:rate limiter is late by -0.900000 [ms]\n", - "WARNING:root:rate limiter is late by -1.200000 [ms]\n", - "WARNING:root:rate limiter is late by -2.200000 [ms]\n", - "WARNING:root:rate limiter is late by -10.200000 [ms]\n", - "WARNING:root:rate limiter is late by -2.700000 [ms]\n", - "WARNING:root:rate limiter is late by -2.500000 [ms]\n", "WARNING:root:rate limiter is late by -3.400000 [ms]\n", - "WARNING:root:rate limiter is late by -20.600000 [ms]\n", - "WARNING:root:rate limiter is late by -1.400000 [ms]\n", - "WARNING:root:rate limiter is late by -4.300000 [ms]\n", - "WARNING:root:rate limiter is late by -2.200000 [ms]\n", "WARNING:root:rate limiter is late by -0.900000 [ms]\n", - "WARNING:root:rate limiter is late by -0.700000 [ms]\n", - "WARNING:root:rate limiter is late by -3.600000 [ms]\n", - "WARNING:root:rate limiter is late by -2.300000 [ms]\n", - "WARNING:root:rate limiter is late by -4.700000 [ms]\n", - "WARNING:root:rate limiter is late by -21.800000 [ms]\n", - "WARNING:root:rate limiter is late by -4.000000 [ms]\n", - "WARNING:root:rate limiter is late by -4.400000 [ms]\n", - "WARNING:root:rate limiter is late by -6.900000 [ms]\n", - "WARNING:root:rate limiter is late by -1.000000 [ms]\n" + "WARNING:root:rate limiter is late by -12.900000 [ms]\n", + "WARNING:root:rate limiter is late by -1.400000 [ms]\n", + "WARNING:root:rate limiter is late by -12.800000 [ms]\n", + "WARNING:root:rate limiter is late by -16.900000 [ms]\n", + "WARNING:root:rate limiter is late by -3.100000 [ms]\n", + "WARNING:root:rate limiter is late by -3.200000 [ms]\n", + "WARNING:root:rate limiter is late by -13.200000 [ms]\n", + "WARNING:root:rate limiter is late by -1.200000 [ms]\n", + "WARNING:root:rate limiter is late by -1.200000 [ms]\n" ] } ], @@ -464,7 +446,7 @@ "cbf_list = [pos_cbf]\n", "\n", "# ===== Visualization =====\n", - "viz = start_meshcat_visualizer(ur5_robot)\n", + "viz = start_meshcat_visualizer(ur5_robot, open=False)\n", "viewer = viz.viewer\n", "display(viewer.jupyter_cell())\n", "\n", @@ -556,7 +538,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -564,7 +546,7 @@ "output_type": "stream", "text": [ "You can open the visualizer by visiting the following URL:\n", - "http://127.0.0.1:7060/static/\n" + "http://127.0.0.1:7023/static/\n" ] }, { @@ -572,7 +554,7 @@ "text/html": [ "\n", "
\n", - " \n", + " \n", "
\n", " " ], @@ -587,19 +569,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:root:rate limiter is late by -14.000000 [ms]\n", - "WARNING:root:rate limiter is late by -3.800000 [ms]\n", - "WARNING:root:rate limiter is late by -6.500000 [ms]\n", - "WARNING:root:rate limiter is late by -8.100000 [ms]\n", - "WARNING:root:rate limiter is late by -5.200000 [ms]\n", - "WARNING:root:rate limiter is late by -13.900000 [ms]\n", - "WARNING:root:rate limiter is late by -30.200000 [ms]\n", - "WARNING:root:rate limiter is late by -10.600000 [ms]\n", - "WARNING:root:rate limiter is late by -5.300000 [ms]\n", - "WARNING:root:rate limiter is late by -7.900000 [ms]\n", - "WARNING:root:rate limiter is late by -1.800000 [ms]\n", - "WARNING:root:rate limiter is late by -0.800000 [ms]\n", - "WARNING:root:rate limiter is late by -6.900000 [ms]\n" + "WARNING:root:rate limiter is late by -1.200000 [ms]\n", + "WARNING:root:rate limiter is late by -100.800000 [ms]\n", + "WARNING:root:rate limiter is late by -1.700000 [ms]\n", + "WARNING:root:rate limiter is late by -15.000000 [ms]\n", + "WARNING:root:rate limiter is late by -4.500000 [ms]\n" ] } ], @@ -621,7 +595,7 @@ "cbf_list = [pos_cbf, configuration_cbf]\n", "\n", "# ===== Visualization =====\n", - "viz = start_meshcat_visualizer(ur5_robot)\n", + "viz = start_meshcat_visualizer(ur5_robot, open=False)\n", "viewer = viz.viewer\n", "display(viewer.jupyter_cell())\n", "\n", @@ -710,7 +684,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -718,7 +692,7 @@ "output_type": "stream", "text": [ "You can open the visualizer by visiting the following URL:\n", - "http://127.0.0.1:7027/static/\n" + "http://127.0.0.1:7025/static/\n" ] }, { @@ -726,7 +700,7 @@ "text/html": [ "\n", "
\n", - " \n", + " \n", "
\n", " " ], @@ -741,33 +715,9 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:root:rate limiter is late by -18.000000 [ms]\n", - "WARNING:root:rate limiter is late by -10.400000 [ms]\n", - "WARNING:root:rate limiter is late by -9.300000 [ms]\n", - "WARNING:root:rate limiter is late by -59.500000 [ms]\n", - "WARNING:root:rate limiter is late by -17.900000 [ms]\n", - "WARNING:root:rate limiter is late by -10.300000 [ms]\n", - "WARNING:root:rate limiter is late by -2.800000 [ms]\n", - "WARNING:root:rate limiter is late by -2.000000 [ms]\n", - "WARNING:root:rate limiter is late by -3.600000 [ms]\n", - "WARNING:root:rate limiter is late by -5.900000 [ms]\n", - "WARNING:root:rate limiter is late by -1.900000 [ms]\n", - "WARNING:root:rate limiter is late by -3.100000 [ms]\n", - "WARNING:root:rate limiter is late by -1.800000 [ms]\n", - "WARNING:root:rate limiter is late by -3.800000 [ms]\n", - "WARNING:root:rate limiter is late by -4.300000 [ms]\n", - "WARNING:root:rate limiter is late by -1.500000 [ms]\n", - "WARNING:root:rate limiter is late by -3.500000 [ms]\n", - "WARNING:root:rate limiter is late by -1.100000 [ms]\n", - "WARNING:root:rate limiter is late by -44.400000 [ms]\n", - "WARNING:root:rate limiter is late by -6.200000 [ms]\n", - "WARNING:root:rate limiter is late by -10.600000 [ms]\n", - "WARNING:root:rate limiter is late by -6.500000 [ms]\n", - "WARNING:root:rate limiter is late by -2.700000 [ms]\n", - "WARNING:root:rate limiter is late by -2.500000 [ms]\n", - "WARNING:root:rate limiter is late by -35.800000 [ms]\n", - "WARNING:root:rate limiter is late by -10.600000 [ms]\n", - "WARNING:root:rate limiter is late by -1.400000 [ms]\n" + "WARNING:root:rate limiter is late by -3.300000 [ms]\n", + "WARNING:root:rate limiter is late by -5.800000 [ms]\n", + "WARNING:root:rate limiter is late by -2.200000 [ms]\n" ] } ], @@ -778,13 +728,11 @@ " \"yumi_link_7_l\",\n", " position_cost=50.0, # [cost] / [m]\n", " orientation_cost=1.0, # [cost] / [rad]\n", - " lm_damping=100, # tuned for this setup\n", ")\n", "right_ee_task = FrameTask(\n", " \"yumi_link_7_r\",\n", " position_cost=50.0, # [cost] / [m]\n", " orientation_cost=1.0, # [cost] / [rad]\n", - " lm_damping=100, # tuned for this setup\n", ")\n", "# Posture task for regulation\n", "posture_task = PostureTask(\n", @@ -808,7 +756,7 @@ "cbf_list = [ee_barrier, configuration_cbf]\n", "\n", "# ==== Visualization =====\n", - "viz = start_meshcat_visualizer(yumi_robot)\n", + "viz = start_meshcat_visualizer(yumi_robot, open=False)\n", "viewer = viz.viewer\n", "display(viewer.jupyter_cell())\n", "\n", From 820059d8f4271bc1a815f48414df604b89a687fb Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 19:40:03 +0300 Subject: [PATCH 051/101] chore: update changelog.md --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8d27ebe8..fcbba856 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ All notable changes to this project will be documented in this file. +## [2.2.0] - 2024-05-11 +### Added +- Control Barrier Functions, namely: + - Abstract Barrier ``Barrier`` + - Frame Position Barrier ``PositionBarrier``` + - Joint Configuration Barrier ``ConfigurationBarrier`` + - Spherical Collision-Avoidance Barrier ``BodySphericalBarrier`` +- Examples for `UR5` and `yumi` manipulators, which illustrate barriers effect. + +### Changed +- Configuration accepts list of Control Barrier Functions +- Configuration could optionally disable Configuration Limits (for example to use ``ConfigurationBarrier``) +- Visualization could optionally skip opening the simulation window (for example to open it in `.ipynb`) + ## Unreleased ### Fixed From 80259a985b9ef85834043f755c0c60257075617b Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sat, 11 May 2024 20:25:58 +0300 Subject: [PATCH 052/101] refactor: tuple -> Tuple for version compatibility --- pink/barriers/body_spherical_barrier.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index f3ac128a..d763aa28 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -9,7 +9,7 @@ of a barrier based on the distance between two frames. """ -from typing import Iterable, Optional, Union +from typing import Union, Tuple import numpy as np @@ -38,12 +38,12 @@ class BodySphericalBarrier(Barrier): d_min: Minimum distance threshold. """ - frames: tuple[str, str] + frames: Tuple[str, str] d_min: float def __init__( self, - frames: tuple[str, str], + frames: Tuple[str, str], d_min: float = None, gain: Union[float, np.ndarray] = 1.0, r: float = 3.0, @@ -122,7 +122,7 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: dx_dq = np.vstack([pos1_jac, pos2_jac]) return dh_dx.T @ dx_dq - def _get_frame_positions(self, configuration: Configuration) -> tuple[np.ndarray, np.ndarray]: + def _get_frame_positions(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: """Get the positions of the two frames in the world coordinate system. Args: @@ -135,7 +135,7 @@ def _get_frame_positions(self, configuration: Configuration) -> tuple[np.ndarray pos2_world = configuration.get_transform_frame_to_world(self.frames[1]).translation return pos1_world, pos2_world - def _get_frame_jacobians(self, configuration: Configuration) -> tuple[np.ndarray, np.ndarray]: + def _get_frame_jacobians(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: """Get the position Jacobians of the two frames in the world coordinate system. Args: From 9a2f657ab82f9dc96db937ecc5e36de4f3b9da98 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 12 May 2024 00:29:07 +0300 Subject: [PATCH 053/101] refactor: refactoring for pipeline --- examples/barriers/arm_ur5.py | 23 ++++-- examples/barriers/barrier.ipynb | 59 ++++++++------ pink/barriers/__init__.py | 12 +-- pink/barriers/barrier.py | 100 +++++++++++++++--------- pink/barriers/body_spherical_barrier.py | 95 ++++++++++++++-------- pink/barriers/configuration_barrier.py | 41 +++++----- pink/barriers/position_barrier.py | 43 +++++----- pink/configuration.py | 4 +- pink/solve_ik.py | 21 +++-- pink/visualization.py | 9 ++- 10 files changed, 249 insertions(+), 158 deletions(-) diff --git a/examples/barriers/arm_ur5.py b/examples/barriers/arm_ur5.py index f6c917f4..e4cdebaa 100644 --- a/examples/barriers/arm_ur5.py +++ b/examples/barriers/arm_ur5.py @@ -21,7 +21,8 @@ from robot_descriptions.loaders.pinocchio import load_robot_description except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" + "Examples need robot_descriptions, " + "try ``pip install robot_descriptions``" ) from exc # noqa: E501 @@ -43,7 +44,7 @@ pos_cbf = PositionBarrier( "ee_link", indices=[1], - max=np.array([0.6]), + p_max=np.array([0.6]), gain=np.array([100.0]), r=1.0, ) @@ -87,7 +88,11 @@ # Update visualization frames viewer["end_effector_target"].set_transform(end_effector_target.np) - viewer["end_effector"].set_transform(configuration.get_transform_frame_to_world(end_effector_task.frame).np) + viewer["end_effector"].set_transform( + configuration.get_transform_frame_to_world( + end_effector_task.frame + ).np + ) # Compute velocity and integrate it into next configuration # Note that default position limit handle given trajectory @@ -104,9 +109,15 @@ G, h = pos_cbf.compute_qp_inequality(configuration, dt=dt) print(f"Task error: {end_effector_task.compute_error(configuration)}") - print(f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0") - print(f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0") - print(f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6") + print( + f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0" + ) + print( + f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0" + ) + print( + f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6" + ) print("-" * 60) # Visualize result at fixed FPS viz.display(configuration.q) diff --git a/examples/barriers/barrier.ipynb b/examples/barriers/barrier.ipynb index cb636cef..b206c3f5 100644 --- a/examples/barriers/barrier.ipynb +++ b/examples/barriers/barrier.ipynb @@ -398,17 +398,17 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:root:rate limiter is late by -3.400000 [ms]\n", - "WARNING:root:rate limiter is late by -0.900000 [ms]\n", - "WARNING:root:rate limiter is late by -12.900000 [ms]\n", - "WARNING:root:rate limiter is late by -1.400000 [ms]\n", - "WARNING:root:rate limiter is late by -12.800000 [ms]\n", - "WARNING:root:rate limiter is late by -16.900000 [ms]\n", - "WARNING:root:rate limiter is late by -3.100000 [ms]\n", + "WARNING:root:rate limiter is late by -1.600000 [ms]\n", + "WARNING:root:rate limiter is late by -2.700000 [ms]\n", + "WARNING:root:rate limiter is late by -10.300000 [ms]\n", "WARNING:root:rate limiter is late by -3.200000 [ms]\n", - "WARNING:root:rate limiter is late by -13.200000 [ms]\n", - "WARNING:root:rate limiter is late by -1.200000 [ms]\n", - "WARNING:root:rate limiter is late by -1.200000 [ms]\n" + "WARNING:root:rate limiter is late by -1.900000 [ms]\n", + "WARNING:root:rate limiter is late by -1.000000 [ms]\n", + "WARNING:root:rate limiter is late by -1.400000 [ms]\n", + "WARNING:root:rate limiter is late by -1.300000 [ms]\n", + "WARNING:root:rate limiter is late by -7.800000 [ms]\n", + "WARNING:root:rate limiter is late by -4.500000 [ms]\n", + "WARNING:root:rate limiter is late by -2.400000 [ms]\n" ] } ], @@ -439,14 +439,14 @@ "pos_cbf = PositionBarrier(\n", " \"ee_link\",\n", " indices=[1], # Select only y coordinate\n", - " max=np.array([0.6]),\n", + " p_max=np.array([0.6]),\n", " gain=np.array([100.0]),\n", " r=1.0,\n", ")\n", "cbf_list = [pos_cbf]\n", "\n", "# ===== Visualization =====\n", - "viz = start_meshcat_visualizer(ur5_robot, open=False)\n", + "viz = start_meshcat_visualizer(ur5_robot, open_viewer=False)\n", "viewer = viz.viewer\n", "display(viewer.jupyter_cell())\n", "\n", @@ -569,11 +569,22 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:root:rate limiter is late by -1.200000 [ms]\n", - "WARNING:root:rate limiter is late by -100.800000 [ms]\n", - "WARNING:root:rate limiter is late by -1.700000 [ms]\n", - "WARNING:root:rate limiter is late by -15.000000 [ms]\n", - "WARNING:root:rate limiter is late by -4.500000 [ms]\n" + "WARNING:root:rate limiter is late by -1.800000 [ms]\n", + "WARNING:root:rate limiter is late by -1.900000 [ms]\n", + "WARNING:root:rate limiter is late by -0.800000 [ms]\n", + "WARNING:root:rate limiter is late by -3.400000 [ms]\n", + "WARNING:root:rate limiter is late by -1.100000 [ms]\n", + "WARNING:root:rate limiter is late by -1.300000 [ms]\n", + "WARNING:root:rate limiter is late by -4.000000 [ms]\n", + "WARNING:root:rate limiter is late by -2.700000 [ms]\n", + "WARNING:root:rate limiter is late by -3.400000 [ms]\n", + "WARNING:root:rate limiter is late by -1.500000 [ms]\n", + "WARNING:root:rate limiter is late by -0.800000 [ms]\n", + "WARNING:root:rate limiter is late by -8.200000 [ms]\n", + "WARNING:root:rate limiter is late by -30.600000 [ms]\n", + "WARNING:root:rate limiter is late by -10.100000 [ms]\n", + "WARNING:root:rate limiter is late by -10.300000 [ms]\n", + "WARNING:root:rate limiter is late by -0.800000 [ms]\n" ] } ], @@ -595,7 +606,7 @@ "cbf_list = [pos_cbf, configuration_cbf]\n", "\n", "# ===== Visualization =====\n", - "viz = start_meshcat_visualizer(ur5_robot, open=False)\n", + "viz = start_meshcat_visualizer(ur5_robot, open_viewer=False)\n", "viewer = viz.viewer\n", "display(viewer.jupyter_cell())\n", "\n", @@ -684,7 +695,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -692,7 +703,7 @@ "output_type": "stream", "text": [ "You can open the visualizer by visiting the following URL:\n", - "http://127.0.0.1:7025/static/\n" + "http://127.0.0.1:7024/static/\n" ] }, { @@ -700,7 +711,7 @@ "text/html": [ "\n", "
\n", - " \n", + " \n", "
\n", " " ], @@ -715,9 +726,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:root:rate limiter is late by -3.300000 [ms]\n", - "WARNING:root:rate limiter is late by -5.800000 [ms]\n", - "WARNING:root:rate limiter is late by -2.200000 [ms]\n" + "WARNING:root:rate limiter is late by -6.500000 [ms]\n" ] } ], @@ -756,7 +765,7 @@ "cbf_list = [ee_barrier, configuration_cbf]\n", "\n", "# ==== Visualization =====\n", - "viz = start_meshcat_visualizer(yumi_robot, open=False)\n", + "viz = start_meshcat_visualizer(yumi_robot, open_viewer=False)\n", "viewer = viz.viewer\n", "display(viewer.jupyter_cell())\n", "\n", diff --git a/pink/barriers/__init__.py b/pink/barriers/__init__.py index 5a93d828..fd309803 100644 --- a/pink/barriers/__init__.py +++ b/pink/barriers/__init__.py @@ -1,11 +1,13 @@ -""" -This module provides an abstract base class for Barriers (CBFs) -used in the context of differential inverse kinematics with safety constraints. -""" +"""Control Barrier Functions.""" from .barrier import Barrier from .body_spherical_barrier import BodySphericalBarrier from .configuration_barrier import ConfigurationBarrier from .position_barrier import PositionBarrier -__all__ = ["Barrier", "BodySphericalBarrier", "ConfigurationBarrier", "PositionBarrier"] +__all__ = [ + "Barrier", + "BodySphericalBarrier", + "ConfigurationBarrier", + "PositionBarrier", +] diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index aa85bb9b..237224e8 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -6,7 +6,8 @@ """All barriers derive from the :class:`Barrier` base class. -The formalism used in this implementation is written down in examples/barriers/NOTES.md +The formalism used in this implementation is written down in +examples/barriers/NOTES.md """ import abc @@ -20,14 +21,19 @@ class Barrier(abc.ABC): r"""Abstract base class for barrier. - A barrier is a function :math:`\boldsymbol{h}(\boldsymbol{q})` that satisfies the following condition: + A barrier is a function :math:`\boldsymbol{h}(\boldsymbol{q})` that + satisfies the following condition: .. math:: - \frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}} \dot{\boldsymbol{q}} +\alpha_j(\boldsymbol{h}_j(\boldsymbol{q})) \geq 0, \quad \forall j + \frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}} + \dot{\boldsymbol{q}} +\alpha_j(\boldsymbol{h}_j(\boldsymbol{q})) + \geq 0, \quad \forall j - where :math:`\frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}}` are the Jacobians of the constraint functions, - :math:`\dot{\boldsymbol{q}}` is the joint velocity vector, and :math:`\alpha_j` are extended class K functions. + where :math:`\frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}}` + are the Jacobians of the constraint functions, :math:`\dot{\boldsymbol{q}}` + is the joint velocity vector, and :math:`\alpha_j` are extended + class K functions. Attributes: dim: Dimension of the barrier. @@ -37,8 +43,8 @@ class Barrier(abc.ABC): r: Weighting factor for the safe backup policy regularization term. """ - gain: Union[float, np.ndarray] - class_k_fns: Callable[[np.ndarray], float] + gain: np.ndarray + class_k_fns: Callable[[float], float] safe_policy: Optional[np.ndarray] r: float @@ -46,7 +52,7 @@ def __init__( self, dim: int, gain: Union[float, np.ndarray] = 1.0, - class_k_fn: Optional[Callable[[np.ndarray], float]] = None, + class_k_fn: Optional[Callable[[float], float]] = None, r: float = 3.0, ): """Initialize the barrier. @@ -59,9 +65,11 @@ def __init__( r: Weighting factor for the safe backup policy regularization term. Defaults to 3.0. """ - self.dim = dim - self.gain = gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain + self.gain = ( + gain if isinstance(gain, np.ndarray) else np.ones(dim) * gain + ) + self.class_k_fn = class_k_fn if class_k_fn is not None else lambda x: x self.r = r @@ -69,39 +77,41 @@ def __init__( def compute_barrier(self, configuration: Configuration) -> np.ndarray: r"""Compute the value of the barrier function. - The barrier function :math:`\boldsymbol{h}(\boldsymbol{q})` is a vector-valued function - that represents the safety constraints. It should be designed such that - the set :math:`\{\boldsymbol{q} : \boldsymbol{h}(\boldsymbol{q}) \geq \boldsymbol{0}\}` represents the safe region of the - configuration space. + The barrier function :math:`\boldsymbol{h}(\boldsymbol{q})` + is a vector-valued function that represents the safety constraints. + It should be designed such that the set + :math:`\{\boldsymbol{q} : \boldsymbol{h}(\boldsymbol{q}) \geq \boldsymbol{0}\}` + represents the safe region of the configuration space. Args: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. - """ - pass + """ # noqa: E501 @abc.abstractmethod def compute_jacobian(self, configuration: Configuration) -> np.ndarray: r"""Compute the Jacobian matrix of the barrier function. - The Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})` of the - barrier function with respect to the configuration variables is required - for the computation of the barrier condition. + The Jacobian matrix + :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})` + of the barrier function with respect to the configuration variables is + required for the computation of the barrier condition. Args: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. - """ - pass + Jacobian matrix + :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ # noqa: E501 def compute_safe_policy(self, configuration: Configuration) -> np.ndarray: r"""Compute the safe backup control policy. - The safe backup control policy :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})` is a joint + The safe backup control policy + :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})` is a joint velocity vector that can be used as a regularization term in the optimization problem to ensure safety. @@ -109,25 +119,28 @@ def compute_safe_policy(self, configuration: Configuration) -> np.ndarray: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Safe backup joint velocities :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})`. + Safe backup joint velocities + :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})`. """ return np.zeros(configuration.model.nq) def compute_qp_objective( self, configuration: Configuration, - dt: float = 1e-3, ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the quadratic objective function for the barrier-based QP. - The quadratic objective function includes a regularization term based on the safe backup policy: + The quadratic objective function includes a regularization term + based on the safe backup policy: .. math:: - \gamma(\boldsymbol{q})\left\| \dot{\boldsymbol{q}}-\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})\right\|^{2} + \gamma(\boldsymbol{q})\left\| \dot{\boldsymbol{q}}- + \dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})\right\|^{2} - where :math:`\gamma(\boldsymbol{q})` is a configuration-dependent weight and - :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})` is the safe backup policy. + where :math:`\gamma(\boldsymbol{q})` is a configuration-dependent + weight and :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})` + is the safe backup policy. Args: configuration: Robot configuration :math:`\boldsymbol{q}`. @@ -145,7 +158,11 @@ def compute_qp_objective( if self.r > 1e-6: safe_policy = self.compute_safe_policy(configuration) - H += self.r / (np.linalg.norm(jac) ** 2) * np.eye(configuration.model.nq) + H += ( + self.r + / (np.linalg.norm(jac) ** 2) + * np.eye(configuration.model.nq) + ) c += -2 * self.r / (np.linalg.norm(jac) ** 2) * safe_policy return (H, c) @@ -161,27 +178,36 @@ def compute_qp_inequality( .. math:: - \frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}} \dot{\boldsymbol{q}} +\alpha_j(\boldsymbol{h}_j(\boldsymbol{q})) \geq 0, \quad \forall j + \frac{\partial \boldsymbol{h}_j} + {\partial \boldsymbol{q}} \dot{\boldsymbol{q}} + + \alpha_j(\boldsymbol{h}_j(\boldsymbol{q})) \geq 0, \quad \forall j - where :math:`\frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}}` are the Jacobians of the constraint functions, - :math:`\dot{\boldsymbol{q}}` is the joint velocity vector, and :math:`\alpha_j` are extended class K functions. + where :math:`\frac{\partial \boldsymbol{h}_j}{\partial \boldsymbol{q}}` + are the Jacobians of the constraint functions, + :math:`\dot{\boldsymbol{q}}` is the joint velocity vector, + and :math:`\alpha_j` are extended class K functions. Args: configuration: Robot configuration :math:`\boldsymbol{q}`. dt: Time step for discrete-time implementation. Defaults to 1e-3. Returns: - Tuple containing the inequality constraint matrix (G) and vector (h). + Tuple containing the inequality constraint matrix (G) + and vector (h). """ G = -self.compute_jacobian(configuration) / dt barrier_value = self.compute_barrier(configuration) - h = np.array([self.gain[i] * self.class_k_fn(barrier_value[i]) for i in range(self.dim)]) + h = np.array( + [ + self.gain[i] * self.class_k_fn(barrier_value[i]) + for i in range(self.dim) + ] + ) return (G, h) def __repr__(self) -> str: - """ - Return a string representation of the barrier. + """Return a string representation of the barrier. Returns: str: String representation. diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index d763aa28..dc1376f2 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -4,12 +4,9 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright 2022 Stéphane Caron -""" -This module defines the BodySphericalBarrier class, which is a concrete implementation -of a barrier based on the distance between two frames. -""" +"""Barrier based on the distance between two frames.""" -from typing import Union, Tuple +from typing import Tuple, Union import numpy as np @@ -28,10 +25,13 @@ class BodySphericalBarrier(Barrier): .. math:: - h(\boldsymbol{q}) = \|\boldsymbol{p}_1(\boldsymbol{q}) - \boldsymbol{p}_2(\boldsymbol{q})\|^2 - d_{min}^2 + h(\boldsymbol{q}) = \|\boldsymbol{p}_1(\boldsymbol{q}) - + \boldsymbol{p}_2(\boldsymbol{q})\|^2 - d_{min}^2 - where :math:`\boldsymbol{p}_1(\boldsymbol{q})` and :math:`\boldsymbol{p}_2(\boldsymbol{q})` are the positions of the two frames - in the world coordinate system, and :math:`d_{min}` is the minimum distance threshold. + where :math:`\boldsymbol{p}_1(\boldsymbol{q})` and + :math:`\boldsymbol{p}_2(\boldsymbol{q})` are the positions of the two + frames in the world coordinate system, and :math:`d_{min}` + is the minimum distance threshold. Attributes: frames: Tuple of two frame names. @@ -44,7 +44,7 @@ class BodySphericalBarrier(Barrier): def __init__( self, frames: Tuple[str, str], - d_min: float = None, + d_min: float = -1, gain: Union[float, np.ndarray] = 1.0, r: float = 3.0, ): @@ -64,31 +64,38 @@ def __init__( r=r, ) self.frames = frames - self.d_min = d_min + self.d_min = d_min if d_min > 0 else 0.0 def compute_barrier(self, configuration: Configuration) -> np.ndarray: r"""Compute the value of the barrier function. - The barrier function is computed based on the Euclidean distance between - the two specified frames. It considers the minimum distance threshold. + The barrier function is computed based on the Euclidean distance + between the two specified frames. It considers the minimum distance + threshold. The barrier function is given by: .. math:: - h(\boldsymbol{q}) = \|\boldsymbol{p}_1(\boldsymbol{q}) - \boldsymbol{p}_2(\boldsymbol{q})\|^2 - d_{min}^2 + h(\boldsymbol{q}) = \|\boldsymbol{p}_1(\boldsymbol{q}) - + \boldsymbol{p}_2(\boldsymbol{q})\|^2 - d_{min}^2 - where :math:`\boldsymbol{p}_1(\boldsymbol{q})` and :math:`\boldsymbol{p}_2(\boldsymbol{q})` are the positions of the two frames - in the world coordinate system, and :math:`d_{min}` is the minimum distance threshold. + where :math:`\boldsymbol{p}_1(\boldsymbol{q})` and + :math:`\boldsymbol{p}_2(\boldsymbol{q})` are the positions of the two + frames in the world coordinate system, and :math:`d_{min}` + is the minimum distance threshold. Args: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. + Value of the barrier function + :math:`\boldsymbol{h}(\boldsymbol{q})`. """ pos1_world, pos2_world = self._get_frame_positions(configuration) - return np.array([np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2]) + return np.array( + [np.linalg.norm(pos1_world - pos2_world) ** 2 - self.d_min**2] + ) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: r"""Compute the Jacobian matrix of the barrier function. @@ -101,55 +108,77 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: .. math:: - \frac{\partial h}{\partial \boldsymbol{q}}(\boldsymbol{q}) = 2(\boldsymbol{p}_1(\boldsymbol{q}) - \boldsymbol{p}_2(\boldsymbol{q}))^T \begin{bmatrix} - \frac{\partial \boldsymbol{p}_1}{\partial \boldsymbol{q}}(\boldsymbol{q}) \\ - -\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}}(\boldsymbol{q}) + \frac{\partial h}{\partial \boldsymbol{q}}(\boldsymbol{q}) = + 2(\boldsymbol{p}_1(\boldsymbol{q}) - + \boldsymbol{p}_2(\boldsymbol{q}))^T \begin{bmatrix} + \frac{\partial \boldsymbol{p}_1}{\partial \boldsymbol{q}} + (\boldsymbol{q}) \\ + -\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}} + (\boldsymbol{q}) \end{bmatrix} - where :math:`\frac{\partial \boldsymbol{p}_1}{\partial \boldsymbol{q}}(\boldsymbol{q})` and :math:`\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}}(\boldsymbol{q})` + where :math:`\frac{\partial \boldsymbol{p}_1}{\partial \boldsymbol{q}}(\boldsymbol{q})` + and :math:`\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}}(\boldsymbol{q})` are the position Jacobians of the two frames. Args: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. - """ + Jacobian matrix + :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ # noqa: E501 pos1_world, pos2_world = self._get_frame_positions(configuration) pos1_jac, pos2_jac = self._get_frame_jacobians(configuration) - dh_dx = 2 * np.concatenate([pos1_world - pos2_world, pos2_world - pos1_world]) + dh_dx = 2 * np.concatenate( + [pos1_world - pos2_world, pos2_world - pos1_world] + ) dx_dq = np.vstack([pos1_jac, pos2_jac]) return dh_dx.T @ dx_dq - def _get_frame_positions(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: + def _get_frame_positions( + self, configuration: Configuration + ) -> Tuple[np.ndarray, np.ndarray]: """Get the positions of the two frames in the world coordinate system. Args: configuration: Robot configuration. Returns: - Tuple of position vectors of the two frames in the world coordinate system. + Tuple of position vectors of the two frames in the world + coordinate system. """ - pos1_world = configuration.get_transform_frame_to_world(self.frames[0]).translation - pos2_world = configuration.get_transform_frame_to_world(self.frames[1]).translation + pos1_world = configuration.get_transform_frame_to_world( + self.frames[0] + ).translation + pos2_world = configuration.get_transform_frame_to_world( + self.frames[1] + ).translation return pos1_world, pos2_world - def _get_frame_jacobians(self, configuration: Configuration) -> Tuple[np.ndarray, np.ndarray]: - """Get the position Jacobians of the two frames in the world coordinate system. + def _get_frame_jacobians( + self, configuration: Configuration + ) -> Tuple[np.ndarray, np.ndarray]: + """Get the position Jacobians of the two frames in the world frame. Args: configuration: Robot configuration. Returns: - Tuple of position Jacobian matrices of the two frames in the world coordinate system. + Tuple of position Jacobian matrices of the two frames in the world + coordinate system. """ pos1_jac = configuration.get_frame_jacobian(self.frames[0])[:3] - rotation1 = configuration.get_transform_frame_to_world(self.frames[0]).rotation + rotation1 = configuration.get_transform_frame_to_world( + self.frames[0] + ).rotation pos1_jac = rotation1 @ pos1_jac pos2_jac = configuration.get_frame_jacobian(self.frames[1])[:3] - rotation2 = configuration.get_transform_frame_to_world(self.frames[1]).rotation + rotation2 = configuration.get_transform_frame_to_world( + self.frames[1] + ).rotation pos2_jac = rotation2 @ pos2_jac return pos1_jac, pos2_jac diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index 1d98fa4d..fefd6407 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -5,14 +5,10 @@ # Copyright 2022 Stéphane Caron # Copyright 2023 Inria -""" -This module defines the ConfigurationBarrier class, which represents a subset of -bounded joints associated with a robot model and implements a barrier -based on joint configuration limits. -""" +"""Joint configuration barrier.""" -from typing import List, Optional, Union +from typing import List, Union import numpy as np import pinocchio as pin @@ -25,10 +21,10 @@ class ConfigurationBarrier(Barrier): """Barrier based on joint configuration limits. - The ConfigurationBarrier class represents a subset of bounded joints associated - with a robot model. It defines a barrier function based on the joint - configuration limits to ensure that the joint positions remain within the - specified bounds. + The ConfigurationBarrier class represents a subset of bounded joints + associated with a robot model. It defines a barrier function based on the + joint configuration limits to ensure that the joint positions remain within + the specified bounds. Attributes: indices: Indices of the bounded joints. @@ -40,7 +36,7 @@ class ConfigurationBarrier(Barrier): indices: np.ndarray model: pin.Model joints: list - projection_matrix: Optional[np.ndarray] + projection_matrix: np.ndarray def __init__( self, @@ -56,7 +52,6 @@ def __init__( r: Weighting factor for the safe backup policy regularization term. Defaults to 3.0. """ - has_configuration_limit = np.logical_and( model.hasConfigurationLimit(), np.logical_and( @@ -89,7 +84,7 @@ def __init__( super().__init__( dim, gain=gain, - class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), + class_k_fn=lambda h: h / (1 + np.abs(h)), r=r, ) @@ -108,12 +103,19 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. + Value of the barrier function + :math:`\boldsymbol{h}(\boldsymbol{q})`. """ q = configuration.q - delta_q_max = pin.difference(self.model, q, self.model.upperPositionLimit) - delta_q_min = pin.difference(self.model, q, self.model.lowerPositionLimit) - return np.hstack([-delta_q_min[self.indices], delta_q_max[self.indices]]) + delta_q_max = pin.difference( + self.model, q, self.model.upperPositionLimit + ) + delta_q_min = pin.difference( + self.model, q, self.model.lowerPositionLimit + ) + return np.hstack( + [-delta_q_min[self.indices], delta_q_max[self.indices]] + ) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: r"""Compute the Jacobian matrix of the barrier function. @@ -126,6 +128,7 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. - """ + Jacobian matrix + :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ # noqa: E501 return np.vstack([self.projection_matrix, -self.projection_matrix]) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index da2936dd..9d05eedb 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -4,12 +4,9 @@ # SPDX-License-Identifier: Apache-2.0 # Copyright 2022 Stéphane Caron -""" -This module defines the PositionBarrier class, which is a concrete implementation -of a position-based barrier. -""" +"""Frame position barrier.""" -from typing import Iterable, Optional, Union +from typing import Optional, Union import numpy as np @@ -32,40 +29,38 @@ class PositionBarrier(Barrier): """ frame: str - indices: Iterable[int] + indices: list[int] p_min: Optional[np.ndarray] p_max: Optional[np.ndarray] def __init__( self, frame: str, - indices: Iterable[int] = [], - min: Optional[np.ndarray] = None, - max: Optional[np.ndarray] = None, + indices: list[int] | None = None, + p_min: Optional[np.ndarray] = None, + p_max: Optional[np.ndarray] = None, gain: Union[float, np.ndarray] = 1.0, r: float = 3.0, ): """...""" - indices = range(3) if indices == [] else indices + indices = [0, 1, 2] if indices is None else indices dim = 0 - if min is not None: + if p_min is not None: dim += len(indices) - if max is not None: + if p_max is not None: dim += len(indices) - # TODO: define safe control? super().__init__( dim, gain=gain, - # class_k_fn=lambda h: h / (1 + np.linalg.norm(h)), r=r, ) self.indices = indices self.frame = frame - self.p_min = min - self.p_max = max + self.p_min = p_min + self.p_max = p_max def compute_barrier(self, configuration: Configuration) -> np.ndarray: r"""Compute the value of the barrier function. @@ -78,9 +73,12 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Value of the barrier function :math:`\boldsymbol{h}(\boldsymbol{q})`. + Value of the barrier function + :math:`\boldsymbol{h}(\boldsymbol{q})`. """ - pos_world = configuration.get_transform_frame_to_world(self.frame).translation + pos_world = configuration.get_transform_frame_to_world( + self.frame + ).translation cbfs = [] if self.p_min is not None: cbfs.append(pos_world[self.indices] - self.p_min) @@ -100,11 +98,14 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: configuration: Robot configuration :math:`\boldsymbol{q}`. Returns: - Jacobian matrix :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. - """ + Jacobian matrix + :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + """ # noqa: E501 pos_jac = configuration.get_frame_jacobian(self.frame)[:3] # Transform jacobian to world aligned frame - rotation = configuration.get_transform_frame_to_world(self.frame).rotation + rotation = configuration.get_transform_frame_to_world( + self.frame + ).rotation pos_jac = rotation @ pos_jac # Select only relevant indices diff --git a/pink/configuration.py b/pink/configuration.py index 105e26ab..d2e0593c 100644 --- a/pink/configuration.py +++ b/pink/configuration.py @@ -160,7 +160,9 @@ def get_frame_jacobian(self, frame: str) -> np.ndarray: if not self.model.existFrame(frame): raise FrameNotFound(frame, self.model.frames) frame_id = self.model.getFrameId(frame) - J: np.ndarray = pin.getFrameJacobian(self.model, self.data, frame_id, pin.ReferenceFrame.LOCAL) + J: np.ndarray = pin.getFrameJacobian( + self.model, self.data, frame_id, pin.ReferenceFrame.LOCAL + ) return J def get_transform_frame_to_world(self, frame: str) -> pin.SE3: diff --git a/pink/solve_ik.py b/pink/solve_ik.py index 15b69bb4..cfd9e2de 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -20,8 +20,7 @@ def __compute_qp_objective( configuration: Configuration, tasks: Iterable[Task], damping: float, - dt: float, - cbfs: Iterable[Barrier] = [], + cbfs: Iterable[Barrier] | None = None, ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the QP objective function. @@ -42,11 +41,14 @@ def __compute_qp_objective( `[cost]^2 / [tangent]` where `[tangent]` is "the" unit of robot velocities. Improves numerical stability, but larger values slow down all tasks. + dt: Integration timestep in [s]. + cbfs: Collection of control barrier functions. Returns: Pair :math:`(H, c)` of Hessian matrix and linear vector of the QP objective. """ + cbfs = cbfs if cbfs is not None else [] H = damping * configuration.tangent.eye c = configuration.tangent.zeros.copy() for task in tasks: @@ -55,7 +57,7 @@ def __compute_qp_objective( c += c_task for cbf in cbfs: - H_cbf, c_cbf = cbf.compute_qp_objective(configuration, dt=dt) + H_cbf, c_cbf = cbf.compute_qp_objective(configuration) H += H_cbf c += c_cbf @@ -65,7 +67,7 @@ def __compute_qp_objective( def __compute_qp_inequalities( configuration, dt: float, - cbfs: Iterable[Barrier] = [], + cbfs: Iterable[Barrier] | None = None, use_position_limit: bool = True, ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray]]: r"""Compute inequality constraints for the quadratic program. @@ -88,6 +90,7 @@ def __compute_qp_inequalities( solvers don't support it. See for instance https://github.com/stephane-caron/pink/issues/10. """ + cbfs = cbfs if cbfs is not None else [] basic_limits = [] if use_position_limit: basic_limits.append(configuration.model.configuration_limit) @@ -115,7 +118,7 @@ def build_ik( tasks: Iterable[Task], dt: float, damping: float = 1e-12, - cbfs: Iterable[Barrier] = [], + cbfs: Iterable[Barrier] | None = None, use_position_limit: bool = True, ) -> qpsolvers.Problem: r"""Build quadratic program from current configuration and tasks. @@ -143,14 +146,15 @@ def build_ik( :math:`[\mathrm{tangent}]` is "the" unit of robot velocities. Improves numerical stability, but larger values slow down all tasks. + cbfs: Collection of control barrier functions. use_position_limit: if True, position limit from robot configuration would be used. Disabling it would allow to utilize more - flexible CBF configuration limit. + flexible CBF configuration limit. Returns: Quadratic program of the inverse kinematics problem. """ - P, q = __compute_qp_objective(configuration, tasks, damping, dt, cbfs) + P, q = __compute_qp_objective(configuration, tasks, damping, cbfs) G, h = __compute_qp_inequalities(configuration, dt, cbfs) problem = qpsolvers.Problem(P, q, G, h) return problem @@ -162,7 +166,7 @@ def solve_ik( dt: float, solver: str, damping: float = 1e-12, - cbfs: Iterable[Barrier] = [], + cbfs: Iterable[Barrier] | None = None, use_position_limit: bool = True, **kwargs, ) -> np.ndarray: @@ -181,6 +185,7 @@ def solve_ik( :math:`[\mathrm{tangent}]` is "the" unit of robot velocities. Improves numerical stability, but larger values slow down all tasks. + cbfs: Collection of control barrier functions. use_position_limit: if True, position limit from robot configuration would be used. Disabling it would allow to utilize more flexible CBF configuration limit. diff --git a/pink/visualization.py b/pink/visualization.py index b82131d5..47c2225f 100644 --- a/pink/visualization.py +++ b/pink/visualization.py @@ -11,18 +11,21 @@ def start_meshcat_visualizer( robot: pin.RobotWrapper, - open: bool = True, + open_viewer: bool = True, ) -> pin.visualize.MeshcatVisualizer: """Open a MeshCat visualizer in a web browser. Args: robot: Robot wrapper with its initial data. + open_viewer: Whether to open the visualizer in a web browser. Returns: MeshCat visualizer. """ - viz = pin.visualize.MeshcatVisualizer(robot.model, robot.collision_model, robot.visual_model) + viz = pin.visualize.MeshcatVisualizer( + robot.model, robot.collision_model, robot.visual_model + ) robot.setVisualizer(viz, init=False) - viz.initViewer(open=open) + viz.initViewer(open=open_viewer) viz.loadViewerModel() return viz From f75d5b1e1aa714a2eaf020c2df7dfedad4e6733a Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 12 May 2024 00:39:53 +0300 Subject: [PATCH 054/101] refactor: mypy types fixes --- pink/barriers/position_barrier.py | 6 +++--- pink/solve_ik.py | 8 ++++---- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 9d05eedb..867bb23c 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -6,7 +6,7 @@ """Frame position barrier.""" -from typing import Optional, Union +from typing import List, Optional, Union import numpy as np @@ -29,14 +29,14 @@ class PositionBarrier(Barrier): """ frame: str - indices: list[int] + indices: List[int] p_min: Optional[np.ndarray] p_max: Optional[np.ndarray] def __init__( self, frame: str, - indices: list[int] | None = None, + indices: Optional[List[int]] = None, p_min: Optional[np.ndarray] = None, p_max: Optional[np.ndarray] = None, gain: Union[float, np.ndarray] = 1.0, diff --git a/pink/solve_ik.py b/pink/solve_ik.py index cfd9e2de..88324c46 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -20,7 +20,7 @@ def __compute_qp_objective( configuration: Configuration, tasks: Iterable[Task], damping: float, - cbfs: Iterable[Barrier] | None = None, + cbfs: Optional[Iterable[Barrier]] = None, ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the QP objective function. @@ -67,7 +67,7 @@ def __compute_qp_objective( def __compute_qp_inequalities( configuration, dt: float, - cbfs: Iterable[Barrier] | None = None, + cbfs: Optional[Iterable[Barrier]] = None, use_position_limit: bool = True, ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray]]: r"""Compute inequality constraints for the quadratic program. @@ -118,7 +118,7 @@ def build_ik( tasks: Iterable[Task], dt: float, damping: float = 1e-12, - cbfs: Iterable[Barrier] | None = None, + cbfs: Optional[Iterable[Barrier]] = None, use_position_limit: bool = True, ) -> qpsolvers.Problem: r"""Build quadratic program from current configuration and tasks. @@ -166,7 +166,7 @@ def solve_ik( dt: float, solver: str, damping: float = 1e-12, - cbfs: Iterable[Barrier] | None = None, + cbfs: Optional[Iterable[Barrier]] = None, use_position_limit: bool = True, **kwargs, ) -> np.ndarray: From e9d53cb40e6ee1ce40a3a4ac81da3cedadf8517c Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 12 May 2024 00:44:39 +0300 Subject: [PATCH 055/101] refactor: attempt to fix documentation pipeline --- pink/barriers/barrier.py | 6 +++--- pink/barriers/body_spherical_barrier.py | 10 +++++----- pink/barriers/configuration_barrier.py | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pink/barriers/barrier.py b/pink/barriers/barrier.py index 237224e8..c244aea5 100644 --- a/pink/barriers/barrier.py +++ b/pink/barriers/barrier.py @@ -120,7 +120,7 @@ def compute_safe_policy(self, configuration: Configuration) -> np.ndarray: Returns: Safe backup joint velocities - :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})`. + :math:`\dot{\boldsymbol{q}}_{safe}(\boldsymbol{q})`. """ return np.zeros(configuration.model.nq) @@ -148,7 +148,7 @@ def compute_qp_objective( Returns: Tuple containing the quadratic objective matrix (H) and linear - objective vector (c). + objective vector (c). """ jac = self.compute_jacobian(configuration) H = np.zeros((configuration.model.nq, configuration.model.nq)) @@ -193,7 +193,7 @@ def compute_qp_inequality( Returns: Tuple containing the inequality constraint matrix (G) - and vector (h). + and vector (h). """ G = -self.compute_jacobian(configuration) / dt barrier_value = self.compute_barrier(configuration) diff --git a/pink/barriers/body_spherical_barrier.py b/pink/barriers/body_spherical_barrier.py index dc1376f2..dac3fdfb 100644 --- a/pink/barriers/body_spherical_barrier.py +++ b/pink/barriers/body_spherical_barrier.py @@ -90,7 +90,7 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: Returns: Value of the barrier function - :math:`\boldsymbol{h}(\boldsymbol{q})`. + :math:`\boldsymbol{h}(\boldsymbol{q})`. """ pos1_world, pos2_world = self._get_frame_positions(configuration) return np.array( @@ -118,7 +118,7 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: \end{bmatrix} where :math:`\frac{\partial \boldsymbol{p}_1}{\partial \boldsymbol{q}}(\boldsymbol{q})` - and :math:`\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}}(\boldsymbol{q})` + and :math:`\frac{\partial \boldsymbol{p}_2}{\partial \boldsymbol{q}}(\boldsymbol{q})` are the position Jacobians of the two frames. Args: @@ -126,7 +126,7 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: Returns: Jacobian matrix - :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. """ # noqa: E501 pos1_world, pos2_world = self._get_frame_positions(configuration) pos1_jac, pos2_jac = self._get_frame_jacobians(configuration) @@ -147,7 +147,7 @@ def _get_frame_positions( Returns: Tuple of position vectors of the two frames in the world - coordinate system. + coordinate system. """ pos1_world = configuration.get_transform_frame_to_world( self.frames[0] @@ -167,7 +167,7 @@ def _get_frame_jacobians( Returns: Tuple of position Jacobian matrices of the two frames in the world - coordinate system. + coordinate system. """ pos1_jac = configuration.get_frame_jacobian(self.frames[0])[:3] rotation1 = configuration.get_transform_frame_to_world( diff --git a/pink/barriers/configuration_barrier.py b/pink/barriers/configuration_barrier.py index fefd6407..66e40cf2 100644 --- a/pink/barriers/configuration_barrier.py +++ b/pink/barriers/configuration_barrier.py @@ -104,7 +104,7 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: Returns: Value of the barrier function - :math:`\boldsymbol{h}(\boldsymbol{q})`. + :math:`\boldsymbol{h}(\boldsymbol{q})`. """ q = configuration.q delta_q_max = pin.difference( @@ -129,6 +129,6 @@ def compute_jacobian(self, configuration: Configuration) -> np.ndarray: Returns: Jacobian matrix - :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. + :math:`\frac{\partial \boldsymbol{h}}{\partial \boldsymbol{q}}(\boldsymbol{q})`. """ # noqa: E501 return np.vstack([self.projection_matrix, -self.projection_matrix]) From 08dad1bbd71135340dca4120d9c1515fccba27d5 Mon Sep 17 00:00:00 2001 From: simeon Date: Sun, 12 May 2024 14:09:15 +0300 Subject: [PATCH 056/101] changed examples, renamed cbfs to barriers --- examples/barriers/NOTES.md | 22 ---- examples/barriers/arm_ur5.py | 16 +-- examples/barriers/barrier.ipynb | 204 +++++++++++++----------------- pink/barriers/position_barrier.py | 8 +- pink/solve_ik.py | 38 +++--- 5 files changed, 119 insertions(+), 169 deletions(-) diff --git a/examples/barriers/NOTES.md b/examples/barriers/NOTES.md index 4cafcae7..dc87d52c 100644 --- a/examples/barriers/NOTES.md +++ b/examples/barriers/NOTES.md @@ -146,25 +146,3 @@ $$h_j(\boldsymbol{q}) = \|\boldsymbol{p}_{EE}(\boldsymbol{q}) - \boldsymbol{p}_{ $$h_j(\boldsymbol{q}) = \operatorname{sd}(\mathcal{B}_i(\boldsymbol{q}), \mathcal{B}_k(\boldsymbol{q})) - d_{safe}$$ Here, $\operatorname{sd}(\cdot)$ denotes the signed distance between two geometric shapes $\mathcal{B}_i$ and $\mathcal{B}_k$ representing robot links. - -### PINK Implementation - -The [barrier submodule](https://github.com/domrachev03/pink/tree/feat/cbf/pink/barriers) in PINK provides an implementation of these CBF safety constraints. - -Code snippets for each barrier type will be added here. - -**TODO:** Write $h(q)$ and CBF formulation for: -* Joint Limits -* Body Position Barrier -* Self-Collisions - -### Implementation in PINK - -We have introduced CBF capabilities in PINK by creating the [barrier submodule](https://github.com/domrachev03/pink/tree/feat/cbf/pink/barriers). - -**TODO:** -Add code snippets for different barriers: -* Generic -* Joint Limits -* Body Position Barrier -* Self-Collision Barrier \ No newline at end of file diff --git a/examples/barriers/arm_ur5.py b/examples/barriers/arm_ur5.py index e4cdebaa..f1271303 100644 --- a/examples/barriers/arm_ur5.py +++ b/examples/barriers/arm_ur5.py @@ -41,15 +41,15 @@ cost=1e-3, # [cost] / [rad] ) - pos_cbf = PositionBarrier( + pos_barrier = PositionBarrier( "ee_link", indices=[1], p_max=np.array([0.6]), gain=np.array([100.0]), r=1.0, ) - configuration_cbf = ConfigurationBarrier(robot.model, gain=1, r=100.0) - cbf_list = [pos_cbf, configuration_cbf] + configuration_barrier = ConfigurationBarrier(robot.model, gain=1, r=100.0) + barriers_list = [pos_barrier, configuration_barrier] tasks = [end_effector_task, posture_task] @@ -84,7 +84,7 @@ # Update task targets end_effector_target = end_effector_task.transform_target_to_world end_effector_target.translation[1] = 0.0 + 0.7 * np.sin(t / 2) - end_effector_target.translation[2] = 0.2 + end_effector_target.translation[2] = 0.5 # Update visualization frames viewer["end_effector_target"].set_transform(end_effector_target.np) @@ -102,18 +102,18 @@ tasks, dt, solver=solver, - cbfs=cbf_list, + cbfs=barriers_list, use_position_limit=False, ) configuration.integrate_inplace(velocity, dt) - G, h = pos_cbf.compute_qp_inequality(configuration, dt=dt) + G, h = pos_barrier.compute_qp_inequality(configuration, dt=dt) print(f"Task error: {end_effector_task.compute_error(configuration)}") print( - f"Position CBF value: {pos_cbf.compute_barrier(configuration)[0]:0.3f} >= 0" + f"Position CBF value: {pos_barrier.compute_barrier(configuration)[0]:0.3f} >= 0" ) print( - f"Configuration CBF value: {configuration_cbf.compute_barrier(configuration)} >= 0" + f"Configuration CBF value: {configuration_barrier.compute_barrier(configuration)} >= 0" ) print( f"Distance to manipulator: {configuration.get_transform_frame_to_world('ee_link').translation[1]} <= 0.6" diff --git a/examples/barriers/barrier.ipynb b/examples/barriers/barrier.ipynb index b206c3f5..bc0e68e4 100644 --- a/examples/barriers/barrier.ipynb +++ b/examples/barriers/barrier.ipynb @@ -4,14 +4,31 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Control Barrier Functions" + "# Barriers in Differential Inverse Kinematics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "This notebook introduces the concept of control barriers and illustrates how to use them in Pink." + "\n", + "Complex robotic systems often operate in unstructured environments where they may encounter unexpected obstacles or need to satisfy various safety constraints. To ensure reliable and safe operation, it is essential to employ strategies that keep the system within a designated safe region and prevent it from entering undesirable or dangerous configurations. Control barrier functions (Barriers) provide a powerful tool for achieving this goal.\n", + "\n", + "In this notebook, we introduce the concept of control barrier functions and demonstrate their application in the context of Python inverse kinematics for articulated robot models. We will be using the [PINK](https://github.com/stephane-caron/pink) library, which provides an efficient and flexible framework for solving inverse kinematics problems.\n", + "\n", + "We begin by providing an overview of the theoretical background on control barrier functions and their role in ensuring system safety. We discuss how barrier functions can be constructed to define a safe region in the state space and how they can be incorporated into the control design to guarantee that the system remains within this region.\n", + "\n", + "Next, we show how control barrier functions can be seamlessly integrated into the differential inverse kinematics framework provided by PINK. By incorporating barrier functions as additional constraints in the optimization problem, we can ensure that the computed joint velocities not only achieve the desired end-effector motion but also respect the safety constraints imposed by the barriers.\n", + "\n", + "Finally, we present several specific barrier functions implemented in PINK and illustrate their usage through practical examples. These barriers include joint limit avoidance, collision avoidance, and workspace boundary constraints. By leveraging these built-in barrier functions, users can easily incorporate safety considerations into their inverse kinematics tasks without the need for extensive manual implementation.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "\n", + "Before diving into the details, let's first load all the necessary modules and robot models that will be used throughout this notebook:\n" ] }, { @@ -129,7 +146,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Introduction" + "## Background on Control Barrier Functions (CBFs)" ] }, { @@ -149,7 +166,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Safety and Safe Sets" + "### Safety and Safe Sets" ] }, { @@ -174,7 +191,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Control Barrier Functions" + "### Definition of CBFs" ] }, { @@ -205,7 +222,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Optimization Based Control\n", + "### Optimization Based Control with CBFs\n", "\n", "To synthesize safety-critical controllers, we can solve a quadratic program (QP) to minimally modify an existing controller $k(x)$ to guarantee safety:\n", "\n", @@ -223,7 +240,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Discrete-Time Implementations\n", + "### Discrete-Time Implementations\n", "\n", "Discrete-time implementations of continuous-time CBF-based safety filters can lead to some challenges. When solving the CBF-QP at a sampling time $\\Delta t>0$, safety is only guaranteed at the initial time step $t_{0}$, but not for the open time interval $(t_{0}, t_{0}+\\Delta t)$. Suboptimal performance can arise when $\\|L_{g} L_{f}^{s-1} h(x)\\| \\rightarrow 0$, as large inputs permissible by the CBF condition applied over the finite time interval could result in undesirable behavior.\n", "\n", @@ -255,7 +272,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## CBF in Differential IK" + "## Barriers in Differential IK" ] }, { @@ -286,7 +303,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## CBF QP Formulation\n", + "### Differential IK with Barriers as QP\n", "\n", "Differentiating the kinematic task errors once and introducing stabilizing feedback gains yields the following QP formulation:\n", "\n", @@ -318,51 +335,44 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "# Control Barrier Functions in Pink" + "## Barriers in Pink" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "In pink, Contorl Barrier Functions are implemented based on `Barrier` class. It defines general logic of computing the cost and constraint, using barrier function $\\boldsymbol{h}$ and its jacobian $\\frac{\\partial h_j}{\\partial \\boldsymbol{q}}$. Also, each specific barrier might overwrite a safe backup policy $\\dot{\\boldsymbol{q}}_{safe}(\\boldsymbol{q})$, which equals to zero by default." + "The Barrier class in PINK provides a unified framework for defining and enforcing safety constraints in inverse kinematics. It computes the cost and constraint terms using the barrier function $\\boldsymbol{h}(\\boldsymbol{q})$ and its Jacobian $\\frac{\\partial \\boldsymbol{h}}{\\partial \\boldsymbol{q}}$. Additionally, each specific barrier can define a safe backup policy $\\dot{\\boldsymbol{q}}_{safe}(\\boldsymbol{q})$, which defaults to zero if not overridden." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The following sections describe the implementation of each barrier in pink." + "The following sections describe the implementation of some barriers in more detail." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Position barrier" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Position barrier incorporates constraint on the position of specified frame:\n", + "### Position Barrier\n", + "\n", + "The position barrier incorporates constraints on the position of a specified frame:\n", + "\n", "$$p_{min} \\leq p \\leq p_{max}$$\n", - "which could be writeen in the form $h(q) \\geq 0$ as:\n", + "\n", + "This constraint can be written in the form $h(q) \\geq 0$ as:\n", + "\n", "$$h_j(\\boldsymbol{q}) = \\begin{cases} \n", - " p_j - p_j^{min} & j = 1,\\dots,n \\\\\n", - " p_j^{max} - p_j & j = n+1,\\dots,2n\n", + " p_j(\\boldsymbol{q}) - p_j^{min} & j = 1,\\dots,n \\\\\n", + " p_j^{max} - p_j(\\boldsymbol{q}) & j = n+1,\\dots,2n\n", " \\end{cases}$$\n", "\n", + "The position barrier is implemented as a single constraint with optional minimal and maximal bounds. It can be applied to all positions of the frame or only to specified indices of the position. \n", "\n", - "which is incorporated as single constraint with optional minimal and maximal bounds. Also, it could be applied not to all positions of the frame, but only to specified indices of the position." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "See the following example of position barrier, applied to the end-effector of UR5 robot:" + "\n", + "Let us use this barrier to limit end effector of UR5 robot from going out of the safe set: $y_{ee} \\leq 0.6$." ] }, { @@ -375,7 +385,7 @@ "output_type": "stream", "text": [ "You can open the visualizer by visiting the following URL:\n", - "http://127.0.0.1:7022/static/\n" + "http://127.0.0.1:7000/static/\n" ] }, { @@ -383,7 +393,7 @@ "text/html": [ "\n", "
\n", - " \n", + " \n", "
\n", " " ], @@ -393,23 +403,6 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:root:rate limiter is late by -1.600000 [ms]\n", - "WARNING:root:rate limiter is late by -2.700000 [ms]\n", - "WARNING:root:rate limiter is late by -10.300000 [ms]\n", - "WARNING:root:rate limiter is late by -3.200000 [ms]\n", - "WARNING:root:rate limiter is late by -1.900000 [ms]\n", - "WARNING:root:rate limiter is late by -1.000000 [ms]\n", - "WARNING:root:rate limiter is late by -1.400000 [ms]\n", - "WARNING:root:rate limiter is late by -1.300000 [ms]\n", - "WARNING:root:rate limiter is late by -7.800000 [ms]\n", - "WARNING:root:rate limiter is late by -4.500000 [ms]\n", - "WARNING:root:rate limiter is late by -2.400000 [ms]\n" - ] } ], "source": [ @@ -436,14 +429,14 @@ "# ===== Barriers =====\n", "# Barrier for end-effector, which limits maximal y coordinate \n", "# value to 0.6\n", - "pos_cbf = PositionBarrier(\n", + "pos_barrier = PositionBarrier(\n", " \"ee_link\",\n", " indices=[1], # Select only y coordinate\n", " p_max=np.array([0.6]),\n", " gain=np.array([100.0]),\n", " r=1.0,\n", ")\n", - "cbf_list = [pos_cbf]\n", + "barriers_list = [pos_barrier]\n", "\n", "# ===== Visualization =====\n", "viz = start_meshcat_visualizer(ur5_robot, open_viewer=False)\n", @@ -470,7 +463,7 @@ " # Update task targets\n", " end_effector_target = end_effector_task.transform_target_to_world\n", " end_effector_target.translation[1] = 0.0 + 0.7 * np.sin(t / 2)\n", - " end_effector_target.translation[2] = 0.2\n", + " end_effector_target.translation[2] = 0.5\n", "\n", " # Update visualization frames\n", " viewer[\"end_effector_target\"].set_transform(end_effector_target.np)\n", @@ -484,7 +477,7 @@ " tasks,\n", " dt,\n", " solver=solver,\n", - " cbfs=cbf_list,\n", + " barriers=barriers_list,\n", " )\n", " ur5_configuration.integrate_inplace(velocity, dt)\n", "\n", @@ -498,42 +491,39 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "As you could see, the position barrier prevented the robot from going out of the safe set, i.e. $y_{ee} \\leq 0.6$. " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Apart from limiting the position of the frame, it also allows to implement joint limits." + "\n", + "As we can see the position barrier prevents the robot from going out of the safe set, i.e., $y_{ee} \\leq 0.6$.\n", + "\n", + "Apart from limiting the position of the frame, the position barrier can also be used to implement joint limits.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Joint Barrier" + "### Joint Barrier" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Joint barrier incorporates constraint on the joints given by urdf model:\n", + "The joint barrier incorporates constraints on the joints given by the URDF model:\n", + "\n", "$$q_{min} \\leq q \\leq q_{max}$$\n", - "which could be writeen in the form $h(q) \\geq 0$ as:\n", + "\n", + "This constraint can be written in the form $h(q) \\geq 0$ as:\n", "$$h_j(\\boldsymbol{q}) = \\begin{cases} \n", " q_j - q_j^{min} & j = 1,\\dots,n \\\\\n", " q_j^{max} - q_j & j = n+1,\\dots,2n\n", - " \\end{cases}$$\n", - "\n" + " \\end{cases}$$\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's add joint barrier to the previous example:" + "Let's add a joint barrier to the previous example:" ] }, { @@ -546,7 +536,7 @@ "output_type": "stream", "text": [ "You can open the visualizer by visiting the following URL:\n", - "http://127.0.0.1:7023/static/\n" + "http://127.0.0.1:7001/static/\n" ] }, { @@ -554,7 +544,7 @@ "text/html": [ "\n", "
\n", - " \n", + " \n", "
\n", " " ], @@ -564,28 +554,6 @@ }, "metadata": {}, "output_type": "display_data" - }, - { - "name": "stderr", - "output_type": "stream", - "text": [ - "WARNING:root:rate limiter is late by -1.800000 [ms]\n", - "WARNING:root:rate limiter is late by -1.900000 [ms]\n", - "WARNING:root:rate limiter is late by -0.800000 [ms]\n", - "WARNING:root:rate limiter is late by -3.400000 [ms]\n", - "WARNING:root:rate limiter is late by -1.100000 [ms]\n", - "WARNING:root:rate limiter is late by -1.300000 [ms]\n", - "WARNING:root:rate limiter is late by -4.000000 [ms]\n", - "WARNING:root:rate limiter is late by -2.700000 [ms]\n", - "WARNING:root:rate limiter is late by -3.400000 [ms]\n", - "WARNING:root:rate limiter is late by -1.500000 [ms]\n", - "WARNING:root:rate limiter is late by -0.800000 [ms]\n", - "WARNING:root:rate limiter is late by -8.200000 [ms]\n", - "WARNING:root:rate limiter is late by -30.600000 [ms]\n", - "WARNING:root:rate limiter is late by -10.100000 [ms]\n", - "WARNING:root:rate limiter is late by -10.300000 [ms]\n", - "WARNING:root:rate limiter is late by -0.800000 [ms]\n" - ] } ], "source": [ @@ -602,8 +570,8 @@ "# Barrier for end-effector, which limits maximal y coordinate \n", "# value to 0.6\n", "\n", - "configuration_cbf = ConfigurationBarrier(ur5_robot.model, gain=100, r=1.0)\n", - "cbf_list = [pos_cbf, configuration_cbf]\n", + "configuration_barrier= ConfigurationBarrier(ur5_robot.model, gain=100, r=1.0)\n", + "barriers_list = [pos_barrier, configuration_barrier]\n", "\n", "# ===== Visualization =====\n", "viz = start_meshcat_visualizer(ur5_robot, open_viewer=False)\n", @@ -630,7 +598,7 @@ " # Update task targets\n", " end_effector_target = end_effector_task.transform_target_to_world\n", " end_effector_target.translation[1] = 0.0 + 0.7 * np.sin(t / 2)\n", - " end_effector_target.translation[2] = 0.2\n", + " end_effector_target.translation[2] = 0.5\n", "\n", " # Update visualization frames\n", " viewer[\"end_effector_target\"].set_transform(end_effector_target.np)\n", @@ -644,7 +612,7 @@ " tasks,\n", " dt,\n", " solver=solver,\n", - " cbfs=cbf_list,\n", + " barriers=barriers_list,\n", " use_position_limit=False, # Disable joint limit handle\n", " )\n", " ur5_configuration.integrate_inplace(velocity, dt)\n", @@ -666,36 +634,41 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the simulation, one could notice that some self-collisions are present. This is obviously not acceptable in the real world. Therefore, the next section describes the implementation of collision-avoidance barriers." + "\n", + "The results are the same as in the previous example, but the paradigm has changed. In the simulation, one may notice that some self-collisions are present. This is obviously not acceptable in the real world. The next section describes the implementation of collision-avoidance barriers." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Collision-Avoidance Barrier" + "### Collision-Avoidance Barrier" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "The collision avoidance barrier is formulated as minimal distance between two specified frames:\n", - "$$||(p_i(\\boldsymbol{q}), p_k(\\boldsymbol{q}))||_2^2 \\geq d_{safe}^2$$\n", - "which could be writeen in the form $h(q) \\geq 0$ as:\n", - "$$h_j(\\boldsymbol{q}) = ||(p_i(\\boldsymbol{q}), p_k(\\boldsymbol{q}))||_2^2 - d_{safe}^2$$" + "The collision-avoidance barrier ensures that the distance between two specified frames remains greater than a safe threshold, preventing collisions between different parts of the robot or with the environment:\n", + "\n", + "$$d(p_i(\\boldsymbol{q}), p_k(\\boldsymbol{q}))^2 \\geq d_{safe}^2$$\n", + "\n", + "This constraint can be written in the form $h(q) \\geq 0$ as:\n", + "\n", + "$$h_j(\\boldsymbol{q}) = d(p_i(\\boldsymbol{q}), p_k(\\boldsymbol{q}))^2 - d_{safe}^2$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "Let's examine how it works using example with two-armed manipulator `yumi`:" + "\n", + "Let's examine how it works using an example with a two-armed manipulator, YuMi:" ] }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -703,7 +676,7 @@ "output_type": "stream", "text": [ "You can open the visualizer by visiting the following URL:\n", - "http://127.0.0.1:7024/static/\n" + "http://127.0.0.1:7004/static/\n" ] }, { @@ -711,7 +684,7 @@ "text/html": [ "\n", "
\n", - " \n", + " \n", "
\n", " " ], @@ -726,7 +699,11 @@ "name": "stderr", "output_type": "stream", "text": [ - "WARNING:root:rate limiter is late by -6.500000 [ms]\n" + "WARNING:root:rate limiter is late by -16.000000 [ms]\n", + "WARNING:root:rate limiter is late by -2.000000 [ms]\n", + "WARNING:root:rate limiter is late by -2.900000 [ms]\n", + "WARNING:root:rate limiter is late by -2.100000 [ms]\n", + "WARNING:root:rate limiter is late by -5.400000 [ms]\n" ] } ], @@ -761,8 +738,8 @@ " r=1.0,\n", ")\n", "# Joint limit barrier\n", - "configuration_cbf = ConfigurationBarrier(yumi_robot.model, gain=1, r=400.0)\n", - "cbf_list = [ee_barrier, configuration_cbf]\n", + "configuration_barrier = ConfigurationBarrier(yumi_robot.model, gain=1, r=400.0)\n", + "barriers_list = [ee_barrier, configuration_barrier]\n", "\n", "# ==== Visualization =====\n", "viz = start_meshcat_visualizer(yumi_robot, open_viewer=False)\n", @@ -826,7 +803,7 @@ " tasks,\n", " dt,\n", " solver=solver,\n", - " cbfs=cbf_list,\n", + " barriers=barriers_list,\n", " use_position_limit=False,\n", " )\n", " yumi_configuration.integrate_inplace(velocity, dt)\n", @@ -840,13 +817,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "In the example, specified frames did not collide, despite task values motivated them to do so." + "In this example, the specified frames did not collide, despite the task values motivating them to do so. One may also add spherical collisions to other frames or exploit more complicated geometries with the [HPP FCL library](https://github.com/humanoid-path-planner/hpp-fcl)." ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [] } ], "metadata": { diff --git a/pink/barriers/position_barrier.py b/pink/barriers/position_barrier.py index 867bb23c..e1503898 100644 --- a/pink/barriers/position_barrier.py +++ b/pink/barriers/position_barrier.py @@ -79,13 +79,13 @@ def compute_barrier(self, configuration: Configuration) -> np.ndarray: pos_world = configuration.get_transform_frame_to_world( self.frame ).translation - cbfs = [] + barriers = [] if self.p_min is not None: - cbfs.append(pos_world[self.indices] - self.p_min) + barriers.append(pos_world[self.indices] - self.p_min) if self.p_max is not None: - cbfs.append(self.p_max - pos_world[self.indices]) + barriers.append(self.p_max - pos_world[self.indices]) - return np.concatenate(cbfs) + return np.concatenate(barriers) def compute_jacobian(self, configuration: Configuration) -> np.ndarray: r"""Compute the Jacobian matrix of the barrier function. diff --git a/pink/solve_ik.py b/pink/solve_ik.py index 88324c46..71427098 100644 --- a/pink/solve_ik.py +++ b/pink/solve_ik.py @@ -20,7 +20,7 @@ def __compute_qp_objective( configuration: Configuration, tasks: Iterable[Task], damping: float, - cbfs: Optional[Iterable[Barrier]] = None, + barriers: Optional[Iterable[Barrier]] = None, ) -> Tuple[np.ndarray, np.ndarray]: r"""Compute the QP objective function. @@ -42,13 +42,13 @@ def __compute_qp_objective( velocities. Improves numerical stability, but larger values slow down all tasks. dt: Integration timestep in [s]. - cbfs: Collection of control barrier functions. + barriers: Collection of barriers. Returns: Pair :math:`(H, c)` of Hessian matrix and linear vector of the QP objective. """ - cbfs = cbfs if cbfs is not None else [] + barriers = barriers if barriers is not None else [] H = damping * configuration.tangent.eye c = configuration.tangent.zeros.copy() for task in tasks: @@ -56,8 +56,8 @@ def __compute_qp_objective( H += H_task c += c_task - for cbf in cbfs: - H_cbf, c_cbf = cbf.compute_qp_objective(configuration) + for barrier in barriers: + H_cbf, c_cbf = barrier.compute_qp_objective(configuration) H += H_cbf c += c_cbf @@ -67,7 +67,7 @@ def __compute_qp_objective( def __compute_qp_inequalities( configuration, dt: float, - cbfs: Optional[Iterable[Barrier]] = None, + barriers: Optional[Iterable[Barrier]] = None, use_position_limit: bool = True, ) -> Tuple[Optional[np.ndarray], Optional[np.ndarray]]: r"""Compute inequality constraints for the quadratic program. @@ -75,7 +75,7 @@ def __compute_qp_inequalities( Args: configuration: Robot configuration to read kinematics from. dt: Integration timestep in [s]. - cbfs: Collection of control barrier functions. + barriers: Collection of barriers. use_position_limit: if True, position limit from robot configuration would be used. Disabling it would allow to utilize more flexible CBF configuration limit. @@ -90,7 +90,7 @@ def __compute_qp_inequalities( solvers don't support it. See for instance https://github.com/stephane-caron/pink/issues/10. """ - cbfs = cbfs if cbfs is not None else [] + barriers = barriers if barriers is not None else [] basic_limits = [] if use_position_limit: basic_limits.append(configuration.model.configuration_limit) @@ -104,10 +104,10 @@ def __compute_qp_inequalities( if matvec is not None: G_list.append(matvec[0]) h_list.append(matvec[1]) - for cbf in cbfs: - G_cbf, h_cbf = cbf.compute_qp_inequality(configuration, dt) - G_list.append(G_cbf) - h_list.append(h_cbf) + for barrier in barriers: + G_barrier, h_barrier = barrier.compute_qp_inequality(configuration, dt) + G_list.append(G_barrier) + h_list.append(h_barrier) if not G_list: return None, None return np.vstack(G_list), np.hstack(h_list) @@ -118,7 +118,7 @@ def build_ik( tasks: Iterable[Task], dt: float, damping: float = 1e-12, - cbfs: Optional[Iterable[Barrier]] = None, + barriers: Optional[Iterable[Barrier]] = None, use_position_limit: bool = True, ) -> qpsolvers.Problem: r"""Build quadratic program from current configuration and tasks. @@ -146,7 +146,7 @@ def build_ik( :math:`[\mathrm{tangent}]` is "the" unit of robot velocities. Improves numerical stability, but larger values slow down all tasks. - cbfs: Collection of control barrier functions. + barriers: Collection of barriers. use_position_limit: if True, position limit from robot configuration would be used. Disabling it would allow to utilize more flexible CBF configuration limit. @@ -154,8 +154,8 @@ def build_ik( Returns: Quadratic program of the inverse kinematics problem. """ - P, q = __compute_qp_objective(configuration, tasks, damping, cbfs) - G, h = __compute_qp_inequalities(configuration, dt, cbfs) + P, q = __compute_qp_objective(configuration, tasks, damping, barriers) + G, h = __compute_qp_inequalities(configuration, dt, barriers) problem = qpsolvers.Problem(P, q, G, h) return problem @@ -166,7 +166,7 @@ def solve_ik( dt: float, solver: str, damping: float = 1e-12, - cbfs: Optional[Iterable[Barrier]] = None, + barriers: Optional[Iterable[Barrier]] = None, use_position_limit: bool = True, **kwargs, ) -> np.ndarray: @@ -185,7 +185,7 @@ def solve_ik( :math:`[\mathrm{tangent}]` is "the" unit of robot velocities. Improves numerical stability, but larger values slow down all tasks. - cbfs: Collection of control barrier functions. + barriers: Collection of barriers functions. use_position_limit: if True, position limit from robot configuration would be used. Disabling it would allow to utilize more flexible CBF configuration limit. @@ -209,7 +209,7 @@ def solve_ik( tasks, dt, damping, - cbfs, + barriers, use_position_limit=use_position_limit, ) result = qpsolvers.solve_problem(problem, solver=solver, **kwargs) From a9a037373bbec84987fa0b60394d593cd6a3641a Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 12 May 2024 14:32:37 +0300 Subject: [PATCH 057/101] example: fix & beautify barrier examples --- examples/barriers/arm_ur5.py | 7 ++-- examples/barriers/arms_yumi.py | 60 ++++++++++++++++++++++++---------- 2 files changed, 46 insertions(+), 21 deletions(-) diff --git a/examples/barriers/arm_ur5.py b/examples/barriers/arm_ur5.py index f1271303..e0198a4e 100644 --- a/examples/barriers/arm_ur5.py +++ b/examples/barriers/arm_ur5.py @@ -13,7 +13,7 @@ import pink from pink import solve_ik -from pink.barriers import PositionBarrier, ConfigurationBarrier +from pink.barriers import ConfigurationBarrier, PositionBarrier from pink.tasks import FrameTask, PostureTask from pink.visualization import start_meshcat_visualizer @@ -34,7 +34,6 @@ "ee_link", position_cost=50.0, # [cost] / [m] orientation_cost=1.0, # [cost] / [rad] - lm_damping=100, # tuned for this setup ) posture_task = PostureTask( @@ -84,7 +83,7 @@ # Update task targets end_effector_target = end_effector_task.transform_target_to_world end_effector_target.translation[1] = 0.0 + 0.7 * np.sin(t / 2) - end_effector_target.translation[2] = 0.5 + end_effector_target.translation[2] = 0.3 # Update visualization frames viewer["end_effector_target"].set_transform(end_effector_target.np) @@ -102,7 +101,7 @@ tasks, dt, solver=solver, - cbfs=barriers_list, + barriers=barriers_list, use_position_limit=False, ) configuration.integrate_inplace(velocity, dt) diff --git a/examples/barriers/arms_yumi.py b/examples/barriers/arms_yumi.py index 779ddb1a..21771b0a 100644 --- a/examples/barriers/arms_yumi.py +++ b/examples/barriers/arms_yumi.py @@ -22,7 +22,8 @@ from robot_descriptions.loaders.pinocchio import load_robot_description except ModuleNotFoundError as exc: raise ModuleNotFoundError( - "Examples need robot_descriptions, " "try ``pip install robot_descriptions``" + "Examples need robot_descriptions, " + "try ``pip install robot_descriptions``" ) from exc # noqa: E501 @@ -55,7 +56,6 @@ ) robot.model.addFrame(r_frame) - # TODO: how to avoid recreating the model? robot.data = pin.Data(robot.model) viz = start_meshcat_visualizer(robot) @@ -64,13 +64,11 @@ "yumi_link_7_l", position_cost=50.0, # [cost] / [m] orientation_cost=1.0, # [cost] / [rad] - lm_damping=100, # tuned for this setup ) right_end_effector_task = FrameTask( "yumi_link_7_r", position_cost=50.0, # [cost] / [m] orientation_cost=1.0, # [cost] / [rad] - lm_damping=100, # tuned for this setup ) ee_barrier = BodySphericalBarrier( @@ -170,8 +168,16 @@ A = 0.1 B = 0.2 # z -- 0.4 - 0.8 - l_y_des[:] = 0.6, 0.1 + B * np.sin(3 * t + np.pi / 4), 0.6 + A * np.sin(t) - r_y_des[:] = 0.6, -0.1 - B * np.sin(t), 0.6 + A * np.sin(3 * t - np.pi / 4) + l_y_des[:] = ( + 0.6, + 0.1 + B * np.sin(3 * t + np.pi / 4), + 0.6 + A * np.sin(t), + ) + r_y_des[:] = ( + 0.6, + -0.1 - B * np.sin(t), + 0.6 + A * np.sin(3 * t - np.pi / 4), + ) l_dy_des[:] = 0, B * np.cos(t), A * np.cos(t) r_dy_des[:] = 0, -B * np.cos(t), A * np.cos(t) @@ -180,21 +186,33 @@ # Update visualization frames viewer["left_end_effector"].set_transform( - configuration.get_transform_frame_to_world(left_end_effector_task.frame).np + configuration.get_transform_frame_to_world( + left_end_effector_task.frame + ).np ) viewer["right_end_effector"].set_transform( - configuration.get_transform_frame_to_world(right_end_effector_task.frame).np + configuration.get_transform_frame_to_world( + right_end_effector_task.frame + ).np + ) + viewer["left_end_effector_target"].set_transform( + left_end_effector_task.transform_target_to_world.np + ) + viewer["right_end_effector_target"].set_transform( + right_end_effector_task.transform_target_to_world.np ) - viewer["left_end_effector_target"].set_transform(left_end_effector_task.transform_target_to_world.np) - viewer["right_end_effector_target"].set_transform(right_end_effector_task.transform_target_to_world.np) lb = configuration.get_transform_frame_to_world("yumi_barrier_l") rb = configuration.get_transform_frame_to_world("yumi_barrier_r") viewer["left_ee_barrier"].set_transform(lb.np) viewer["right_ee_barrier"].set_transform(rb.np) - viewer["left_elbow_barrier"].set_transform(configuration.get_transform_frame_to_world("yumi_link_4_l").np) - viewer["right_elbow_barrier"].set_transform(configuration.get_transform_frame_to_world("yumi_link_4_r").np) + viewer["left_elbow_barrier"].set_transform( + configuration.get_transform_frame_to_world("yumi_link_4_l").np + ) + viewer["right_elbow_barrier"].set_transform( + configuration.get_transform_frame_to_world("yumi_link_4_r").np + ) # Compute velocity and integrate it into next configuration # Note that default position limit handle given trajectory @@ -204,21 +222,29 @@ tasks, dt, solver=solver, - cbfs=cbf_list, + barriers=cbf_list, use_position_limit=False, ) configuration.integrate_inplace(velocity, dt) dist_ee = ( np.linalg.norm( - configuration.get_transform_frame_to_world("yumi_barrier_l").translation - - configuration.get_transform_frame_to_world("yumi_barrier_r").translation + configuration.get_transform_frame_to_world( + "yumi_barrier_l" + ).translation + - configuration.get_transform_frame_to_world( + "yumi_barrier_r" + ).translation ) * 100 ) dist_elbow = ( np.linalg.norm( - configuration.get_transform_frame_to_world("yumi_link_4_l").translation - - configuration.get_transform_frame_to_world("yumi_link_4_r").translation + configuration.get_transform_frame_to_world( + "yumi_link_4_l" + ).translation + - configuration.get_transform_frame_to_world( + "yumi_link_4_r" + ).translation ) * 100 ) From a1940ea9b9c5a6664024147a1254e98a72314927 Mon Sep 17 00:00:00 2001 From: Ivan Domrachev Date: Sun, 12 May 2024 17:00:19 +0300 Subject: [PATCH 058/101] fix: relaxing constraints in yumi example --- examples/barriers/arms_yumi.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/examples/barriers/arms_yumi.py b/examples/barriers/arms_yumi.py index 21771b0a..dec3e025 100644 --- a/examples/barriers/arms_yumi.py +++ b/examples/barriers/arms_yumi.py @@ -80,7 +80,7 @@ elbow_barrier = BodySphericalBarrier( ("yumi_link_4_l", "yumi_link_4_r"), - d_min=0.4, + d_min=0.3, gain=100.0, r=1.0, ) @@ -138,13 +138,13 @@ viewer["left_elbow_barrier"], opacity=0.4, color=0xFF0000, - radius=0.2, + radius=0.15, ) meshcat_shapes.sphere( viewer["right_elbow_barrier"], opacity=0.4, color=0x00FF00, - radius=0.2, + radius=0.15, ) meshcat_shapes.frame(viewer["right_end_effector"], opacity=1.0) meshcat_shapes.frame(viewer["left_end_effector_target"], opacity=1.0) @@ -152,8 +152,8 @@ # Select QP solver solver = qpsolvers.available_solvers[0] - if "ecos" in qpsolvers.available_solvers: - solver = "ecos" + if "osqp" in qpsolvers.available_solvers: + solver = "osqp" rate = RateLimiter(frequency=200.0) dt = rate.period From 1f94b75a40e7b47bba254007211fa6c0885fca98 Mon Sep 17 00:00:00 2001 From: simeon Date: Sun, 12 May 2024 17:40:08 +0300 Subject: [PATCH 059/101] added references and videos --- assets/barriers/ur_5.mp4 | Bin 0 -> 2953214 bytes assets/barriers/yumi_self_col.mp4 | Bin 0 -> 12248752 bytes examples/barriers/NOTES.md | 148 ------------------------------ examples/barriers/README.md | 4 +- examples/barriers/arm_ur5.py | 4 +- examples/barriers/barrier.ipynb | 44 ++++----- 6 files changed, 26 insertions(+), 174 deletions(-) create mode 100644 assets/barriers/ur_5.mp4 create mode 100644 assets/barriers/yumi_self_col.mp4 delete mode 100644 examples/barriers/NOTES.md diff --git a/assets/barriers/ur_5.mp4 b/assets/barriers/ur_5.mp4 new file mode 100644 index 0000000000000000000000000000000000000000..e78035ce755688ae342780ba039baa2bdd03289d GIT binary patch literal 2953214 zcmb5V2|QHq+dqD01~Uv}-`8xZ#=e(bQK^(vBZ|q4rL04u#Dr`iR3j2aNSiH5DWq&; z*C&*+g%)M2P{aJL>GOSF&+~u&zt{iu`s=*secji+UDtKr=RW7$=Y$}Ll2>R%kbjVY z9s++H2I%^R1o{I&C;G}iFfa_V{QSdwD4a6mUi57M7X*NPzl( zrLF$EVU_xYdJIQ{U{4^Fl(8`GMRQ z5*qS%K>pPuFUVn@x*&7@{%4zi73dCddpn36aQ^;ZCH__ak6$S^8&ZbQsx9gVqR1XY zKiV`iTsy%&XW`*fk_Gog~$u~6E-F;(KE9z2I%QO`g> zT7aitIKuPyAE<T8m1p22YOGA z68`?v#@{+13sE5N^uJl0U(lmA!mwc9APDaug5U}OHIUv3>OwUjuUiJfMsml*IzWC}DGf zoj}hI0DJjrLDvg%63F_1Jpizm7yRdg(~tK()NKd(CdjRT1pomM05AqU*uw|RD}^9< zO<+a97tk33L%)2cz-|Ce|J=a5fB|UpH~?bGyA>Gx#myrK&kWcCZD7GC9u+_tf^f?N zTmee}YrtIq5ugC&4g+5S2D`bl0a;Mz7cjKV12Nz}1@WH+hL~_wf{qX52LSK`D+}qJ z&@Y_sJYOMw7UT;6PRtGgYXP85-ag<*z?|3~03W;oF@SXdu$3kYS8pyCzaqQ;>UwC02^Fmy4AD}OY121Q+z)oJ6 z54@bQ@&iZ$1_0m>Zz=%l;5p+r1GoeIK%0DefPR1rKnL&y0Ot~)Gn5qsoC6u+$XD`j zKlmt++X2RabpXzM+yZzCZG!)N1SrQ3%!$o002;u8ytlwUzqU^ z^&mccIRNkz&jSo&_*VyWpYJNjP!?|vix~8SzYDC5AOg@2J|1{0uoVE}ECBJ~YXFAW z;-#S+_$&Z*IeGybz!>OY+z1epzj+2ALp=B)7KCufR|6J65W!0TU69$JgRv5j2O0X} zhq=S=1~SA~;3UX2=tmit1m%gKKLP9u*oGh?La>IE0@uKb4Ymrm!8!)Ma?;{Xz~2D> z03iMnFt=UJ6(a`ndt+!Eceh&>qBE1Y#oC0y4BE46zXk2Aw7__$u@p zbTB5u_5e5zXb*e zJOj=KhPgnIwD zV?Z;E)iKbC0w9m?3!n;Qn8SDxkX-?}0Pu}B9C#7%5x|*0SOECTCjqPk=!ElO954a$ zJphaqFO0|EdFTy#J4o*b1|1G!%?I(tc>yzkZ6Ob0z*hz`6F41M5ddxDC1E{*Hu<4X zEX)%u_=3-Yyhs1qiQNr#A-0_L5DR0(3*(8U0#*PYV0}skc)}$P<_e|~&;W1%?1Agg zcR)GF5O*}h7Tp5?|Itt%4d)8F7V;c{KLH;GfK3>ke{~qJ5d$`3S^(fXW)N@`@Dz{$ zcmV4p#1sQQVM;(&0j>bd0H96GdB9hIGvtB)XqZ!IP9KnuhH=2a*kXhL(ttytYX?38 zTnD%dvO4f~sGA7@`>-%Jybvce^v4UfaTmko6ykveI}j&`mo9KDUAC z^1*z;fd9Ntfay>UeBfM@u_?g2faM?$Z081(c%VF{8qfgnhV~(TXowkl3jq8_fq!T& zV6Yd}40sOk2RsCTA1J7YdItbIQ1O5(09SxDfC7MXfg|HY0rCJr=-&?dzYolb-8k55 z327KZ&NUj#hB9CmXKrExVV(j0+N}z50p#6=`ACGakk1Qo#~TA*fbz+Z2Xlhg5o8R= z5JS$ojJpK959-JQgYSGa;9x)_0Lt!IUGmXT84-7g!dT$4P$>D_$TzY4fGHTfveC*1+ri%^beH9fDU3Od=O9wYq=oklAt`; zEeiID!kCM3?A;3t?TNksOhP$07eryq#Ui2JS3n5J(7(t|z$55)2>@dt0ubf{KzSjk zD+DnYEeAdLFUIK;$_m4n3jYFss=$XK@KYN6)PXeEO+W$q0m7jF4Eb;VEh88VI&Z)T zqzxhOHZT$D-2{Arv_8Zv9Ap?9&V455T91d=@qw*;XFvvD@tm;-9Ug4KgPokQ#lyVh zcL#9Vg81_b0UDt_m|OgCUI=i~&@Vsq&p!nKpZGcbfZhCupg#1E7YC>T>Y*>F%Ma%Z z9_FC{FEF%;hcU&^0E!^b_uqWZy)ynEDBleX@#fzIayH2406rie2b}~koR@ebm={?f zL##RX$ejCk9E=4{4zLJ%h&S#o51i+l+tj*le7xo;;5DT7K=uZLC&<<`LfMa7O z*p&*L2mA^c+UHXPz!>u>0XV)20O$YAj24P?m76xfT1rO%ssv+ zULgeU;cY-m;*id$+_pmV*zC#bLzqT6VL+=0r-Oqw&4lDCxIdU0x%W?hzWlwFxbg& z0C*32ZAjk%Sq2zlA+QBl7}heFw}kJ&x}duPfEW@&p|12(`KdjQtk2e7u1Va@de`7^A!5IYelD++pX=tBhb641BkK>!BwH$(Zi|CUF@ zLP9+QVemPBDA0Wab~#B2h4zqr{?xzB$y@hd+e7|7el*xpqH&b}^H0_H-#sX~($GLo zgJKl&-^$P^f`scCK`;>W|1@m)|EFQx--d}SX@6)D8bR|4!SDa~J`NQ4uZ2i)110N&wosBn^@I%Dz@P{}s#mCzo{o;brk;+TE+~CMLxVPJYo9uGN{h2~7U)L~ z&N+BnYfuy4p6cPc&;n$r;G1t}7fg#;fB2rW2lnBf}`N~QUcp%Cbg`JJSZBiua${e#GV4T9LfmZ@(5Gyw%^WKJ0` z8rh%9vHKL&*V`vF2&5C#2*@@!0@wc)-C-{hl1d?-)BvjINlsgT>vLj4qlWlEn&xTl z862eK4_kUvPAG%HKSL$oAcz)>2?WysA|Gt7gU}I_28x;(w;5+e^ALik28ZbLyDIk+ zgS^r(2A7!{mn#~)()fGiv~UO-n>jKXkxYVP6zSAJ2n>Z|3`UPPYgjL7f7#56V_ zR`ISZLIx8KIZSAfK+k8n^3Md)sBDpy1!)BzCoSu9?z(AEXL7;6+;oLskY-|7 zr=$GyrwT_+G$}Q|kDZaDO~+|Cz5L;5d)uk$wo`)?32UnsJFyrY`zThNXzZS+C1`_H zvW?bDX6$onM9Y|#B8DY{K@3#Q`6NttzSYi6OUxiD>@wxEE9Z1<4v1=)yI9@OITBMmgD^z1ca`HEg}vMbbeqv|=HX zJ-U6}&!pBdPWg7TU0-!<>EBC=3Gnl>Xxk?BuM^tWyQrZ`1w6n!OEtA3+hD)ISd2e=GaaL?3B}Y12Gx?naEr9>}h2u_aEw#WSyIR zik53!F*kM6x2p@e@C45ZRgXqrUp3;v4DiUt)#MSWy{rdQ3ByV+{gduWgSEj*d;CpmI#lcArub{X*EfyE|2E zup$MNf3#ZIKhLp=a#bn}isfVitAeR#>J|MdV~@R{o{4Wp)2`TrZ0vu;t69ro8(K#v zR8lCxDY3DfBTYA>SnEF=DfUrW zVI^IqvO(_mwzOvUvWpklq))&0OE5Zsgci&3x33>9eU&7LB9t{ZmL zQ+YkE=Aft*{YLL+MEX}+QyD`(vK;t6lYO~WeR)_x&YqfJKgl_ShsZC(+}C9D2LzqV ze>(ik+9Ou1b!u>Iypy)&yRvnYKh!z@*h ze!lEtbkf6~EzMr8a~6~ZPG}apD@(l8>m=loXQ%dOQ)_1 zsZXY>Ptw=<8eKla!eP&BYKd2THNN{fRf{erNC&bXZjAM657xuI%`02o z9Te8H+a!SBNOnW8G-3T8_D!9~GnF#6E4O4fjZ-2KtwAi2Td4*2$MQMb^ahIZTpann zcH`nM{#P|5^IejC#wY;ZTgHoeRyDdd;)HAC^a#UmbfM)30ZN&1D*;I{f2sKr`Oi z;it%;w?rdTCDlQV*+y%lO{g*#c2yuBTpctKV2l9-gdm6jd1& ziL%#z++6gf=nkVvH9NQ&!#=QoU(eIk;1rdU>fMOw%j{l(>eu|vbp=J2ogYc7GReg< z$UvtPQNtlo&0P*BP~9}*oHU9mcs!Oh^o?dLNOMjrNNAVI)f~oCr~3ww3rV zTVQS(Fct&+jb>{@35?&Ea z9I1(Eet}b{1f4wZpb5t-wbTIjyDR7oM3ZEPjkVN69A4Mv*b!-xe`><%9|z1`hP+#i zOmJaafv0$L!oC~E-tS+(;dib~X2?0fk+mGUfrzzR-uJH7>Qmq+V~g1dh=|~3QbgZx zaa?#OGJS6;;HHy|M@xg?;hon6e@AcdI4Q$ZF?2nt@^{1I+{GDnraE((ju%x{4z8FN z98-yBHzmg#XAvIJP+&lNfa zFrJEXMlY>b&iL?RHl3Bb5pGE|Q_OnpAM(S($-Tq3nf_%mA%GM%nQ(}>xt9D69IEnO z7A92G=V3)AzuxZ|cdO*8_3u>~9O-1!A8d{amwV!Bm?QVZg}ZO4_-(X(1J3_VNzKUB z-c%29U+GhZl?%+|*G9!QwX_{g)-oYwkC7ual8$00**i4og6|YMoR4&u-II2#b?O#U zuIzYR-aFT1Rin`zjy&HnqM-SlJ&LWn;H7$`Gd@&LBs9PFkfgqyh0l@BxN)-{@5jpo zRU<}+Pji)w?!8wXxYJ=cT8n8$7v(0w#YV1N4kbLpXc%`ZA9t(!d*#vg*^B#)bNNL? zOWG4#C$r^%k@G!r=nw^0Ocz5Tv<_DNX@@r$uGT@XyjS$3!el*@LKR>*Mz_A1_V6tI zB=ffH8jso2DS{ev;n{*|M`D;~l*u7mzYC_BT@)m5xX(T!<)k?haQC>?FIla=t7cYN z+H-E>xoHX%xr!s}B}7M~UKP1KctkX7BTre09lYkgWqY@kOq6@<;E7t6pv10$(S1GM z>>Exh>j)=pmgwxO6?dp>z@ng)4XkXYWY zl8}wqU`^g1Wx+xklBUrL?n-8#M~$l(l>fX-5i##L5HRJwx*OTb|1I5)VfDJ=m9!$) z?%^nzKFoE~nfujNU8Wram^4T1U+c;W5Z~eWb!r%fRd`)t znmU93=3{Yf)c6HDhtK@*Iuc1#4|m?8XnDU*aA|NtTBr?`-;L^2 z41e+B?AT}13wy`V($s78XNzLk9Yy-s?RnITbCF2OYWkGn(`7r4e%dWs({0npEm$HP zi1JJrlb@8|fL|Ic&ZBW{V<;igX~v7qfwC*h&H>2Td>oV#z;hpQ2ujNE?yAfANR>Cx~Vb97%ug~wx+*>_*M!rlp%Xebk ziAZI-AlokCY?v$}>!qOOW+fRB9;CJKvVrUtIFXl&UQ=KE{a)V1#?|4-7_vsr8MF~U0@{Ye`_l)XKc9@lt zCmob)J$rA?@!b544qCM_8KmqRCiz-bJnUA{$u-PS_x^?g+sv~i&nGmSNk~#-n5FLe~LG!&*2&70V)HA2c8tZin~%{H?1)rZ7-_6vkf z6h&Ri+A;eZLqGmX4qben9+IsURBiAG<-~44&7ZMSlqq7bMPn1+2nyc_Pvzf9c$3Ax zN|!HM78O`zf0RS*AO>*@;8C~TLlVT^qh7EZ=g_GKMdnA$>1z+H$cC-n`MGGu=~zol1sa?QW2E=6V=Oh?^dH4aHq0^ ztk>Xk-&e6CsYDB^+O@^;<;@3dTt#V?+2`R#*?<);Fd%2o3Ck6*r z=N`Cdk>;fpRMy!q3?{PYo0PHl8!jz%N0+!Zh?PD?(3w4j2X!)dzb|zmHfX1JrWH@w zV_xtKF|QY%EnFO5xD;Hjs4;KZ9r1Rr$P!2g-v|N0fH z-QT%ZdAnCc=4{rO70(T?bOWAk4rV9abCe|enqq#F&~k6wtP=7^ej41Ro4@*Ke?C8M{YvrKx_f->wrx|@T3(6hV@v|qD~5%gs-M?< z$!?v^&Q)p+LH?5$x+f|M>?8`!w6B=@`Ggsuc9~P`iuTt}IF0q(D(8u{CEC$z=C!HD zE6Yp~1G(#CYMWwQlLtu|1zfcrqTJL6E@EFq@t%7OUdS^h?A7V@>-Lok_TDnEUtE!N zkj)c($*L4Em2^;gLRv;WmQ`PR@L@x7&WnBJzQsA4Bd^xY?c1r3H4N2jFCivhxX|^9 z`b3&qV9<%297GXYStU;+-hOK+PtXZ_y2HvcqdVfor&-jtO*W<$;jIVVlAIQo)R%I5j29&^TuFl>!v`C1kFjOWaqpkG2KL;mla*(1pX+(Nlxx$DdF+MT_(&)D za3${NrHwo-bu-G0z?A)q3NjJ2N`r|}!`RBEsAtaAP78I3wr9j04rrgf?^mJec};CB6eMK`1TY$xWqQ+;alpCg6r`dU?dJx7TWnLdZ=?ypT~8Q=!|5tDTzx*V^%V-I*Oi|2&@sp!@d>tzO`gno z?0I);C#pL6OjlTQ&dbG5(%Nt5<8lkLeoN#G_b~M>Q1wx?5c&nX26V&vnxWcrnfh-` zBgy&&e;TKJ%s%^&c_Z7-WehImzPVUF^3vtQN$Jc8U)FK&a{{XOa1+z29!9Yq7AOVl z6}6L4)<4!SYsoKbsYrn7y*WDS2(hw*;gaFe{<*5g zhe!F$9IktPyvO!Mq&F(`26bZG2lYj|`q6GZv8U$~uBPtqjcj{-h*_Qx zH?gu=kJP*^Z+%r$(6(#yFVB0&iyXJwUcY6k`{tbB{%7|r!W$#?&SR$zMY_r;;ig)r z$=4%?ScLJ*4^zGc#nAhe>$Eyr?Trx4VAIn%FEDKqZM=e1tm>NG#~Se>|;4v#Gm+eK~PV}m!I^PM)cI@ z9%!xXv=`y)=G7Du9_T3Sx0yQ{`#2n)B6p3(G_j25B~Hch7u7sYJ<~WR^XL<{=Y2q* z1>RN-3%A2=PjB#GL?^hzPHxHy?RG$4s-yMs4!haVnY=0VXt_sT_?hwF;tk4?c$F2@ z-#rD9$s70S;%R!Q8Zm>_!oCf?s7Iu6$y*MV0*HaP<1YF;Vv&kMo=E(@6#FhOx)^;& zq!nf;^y-U0Zm#;}!a-k0xkE~(wtn_8Kn+d=Urk6`)X--T^n&CSMob^`i|h9jMoZ>7<+fRG!?}xt>dz|pL;m;YhhLgHfg57c<+Z*z${7 zGT$3i>_S@+F%egkgp1V$BKj$EuUg!Zw4J5-(EV*~>sA+XuURGc)h#Zez{8&3$2{+k;K1MX0`pr62ll zw&(Aa`JtP8FL5$mtg?y!>6DEpqn*~;MT(rHZ(%Cj+79oyvFreG)a4oEGezALuEXXh zb#4<%lm&`nFSM}UuCaqI+#zSJm2;UHW*#>y>81PWeys0BQ2IR|?w_W>(7227RC=mLbB9ux@Od`_HI1mJ3714}ZvP4eRYAoF>-sr7p5g)1_b^MuL zlS*rM*YWI5vmTxp|Ad3@N3pwFj;WsPG2MDz>tfmC=Fj)nW`Ax?>?}yz&g0%d_fBPf zzFbPdPbNq*G40mAU+BT(RptY>!JgFw3mU6#;hjMA7e;o@iyt5H1ou(*{+}-26Yh{s z7hOz!a4^t*Epi~{;60(k7RLpKxrfAzyYr4lkj*q)b1c}4?D2JPj2CN}qq6^GXJTW= z@7!Ov)P*wgBMs9(q{+fuspXg&B5m{R`#GLF z_4et>ULEV|LQ_dy*&#f)(y(#y-icmvX+Cc?l@*OYA3rgdFwdgezRKaUHgN# z83nFZ4FUU_4AgJyH3s9n;jvzyDd0hU9=>Rp#vEX}YWh_#48YChec!yov+V5VT;KSs zzMS84L!|l4$@IgyPR80wx|4Ph)2S;ruk)Y#d~A9_==_=4=uRo)NmRNpGiOs>46>z+ zil@sm?oP*bE>i9JW;5w-`)Let=p2d)2VGI37y&;^JdBW`O;#bcjtc#0gE6oKHy!kFOwiX=&Q?1s!iU z<97?5DH-hjd~D#J+2o0G88gOQU1aFS=_K544a;xg1U6yfYE zZLQo@u}^9EJZuIAEn3Q%wT?}B1Zy1?XL`XoQcJ0&ZY1HRo@+#jd8cc<$W7DeYIdUp z+c}6)n{D4~DL;4Z)MgxFZi0!&?a@>jieh%aD63U`{9)@H?n;&g@#2dO z?Ir01iwh}px*9sanU%i`8@OW_cttIyFPk;$RslPk`g1{xN|Iz(jZ4R)>3qR2=QeqN zcYGDK6kU=3+(Rhg4ar6;U&pqN;+sbkk$dd9mZzn3h!~ef3QZ#kBD)gY8mxkDfQ7o( zYviOTSkLqY=|Ds;VKcUD_N{K{{`_7QbL6noSk}pK)op}N-oadtBuaZ8C-pH!dS5<_ z3@4>(hV!d$<2xFE)yJHVbXx3@jG|0pSyuZBHM0I7!nGlGv-g1|7P@L26UQ*3PT3~# z5>0|KKTy&+wu;#uIV z5ds^}hveU68ctNU5PK$bU^-XK{h^GHbu)b#*@P%k$iiDnS!7}N9>Z&HzRlN*C&Lg5 z?OuD}uPYdnvEuLvIfK@*Vo#~dl0(_ES7E4r?Q?=%s#cN7%g*J5>D@_BmNDWi`{r+& zJi*QSJ-2N+`@%i(<_0+ekxgA$53bb09*lBmWeri;Nv3aXPOL@QC~9$3$hA7U&wl5Q zNAqZj$%H6(m$r0%M;bgr@J-&kcZwemJ5}(e;Ibs~MlIQfPSEj;E~}g4>f3c{TT&!f zv%mJ)oktHy;r6wYDJy?uF~QSDTJ2{;xk!cA zqLIf4o1yN*y-mgF{B4&#{*9+#N5;CTBSD-=*u)?xP&VpZ&Rk((#hLsK#=5w=`g5q` zGa-7uzZcpK(2O?XPyFG3JZDj_q_JWY^S-9{M7e$GB?emz*D&viWPU(ZUb{S&$PSlLiS}}PT<|VL+>&-F0@S9Pr+nOm^w^t zP7pCr3y2DI_3PX9r1Np$>+0mknc|dy=FvW-ZPe_#Z(n?WKR;r(+p=h|=2g|^t0obB zEe+BngbUNaMc-F3a9d9=?3#VIfzb(%gsq3nJ*n1**!*gyq`R3r;T%NBYFovP9e8D&;Q-9(R!_$~wGVnw-*>(VG9`SdGz# zPORCdNrl<-u$4(H-Q_fs$e!a*AXe5FhcfxheX|#rl`ghbNlvL#pHQjr3;kuH&{!Ukx^QBCRY-tRy@vWf3pI zzbwrz7j@XJnlXqCl4abC!dX9KXChP_5~IQ(P-y9c^C=l0|dV%gh#TGlc; zPRvIJN$qV}H^M%Jw)UWV8UKh;*+5y(B;*rOpWaNQI9z16o-x?g$3k%*K4`a}rIs_t zBUU{g{ipt1RLR#oxFLkQ!e!it?2td4UHwDaa@DjZ&MS&)TGwvW#*&t6JJ)^<_v#Pp z|5%VtX?g!rn}LKKS3kvTH}YrfI; z@bliXPTZ%r9q#Pk=xrNGHr!=O3+Isg3?w4rRWto3``omH;AWR&cJ?BA3Za$j9ptvR z2A6t>tteg^m~D0sSgVOUayNs`{`~xkTX}oHvBy!wjGIfIsU`!1Z(L5veBr69y^gDjp*0*e5%x_j2 zrQlq?P;@aS|68Y5^lVV`lm1f!U1eU)w}uUbj~i@GwVq5_lqhsp|B3!Q*cTR%!_{=4 zXrsMx%<8C7s9#8!=IY&x?If1ese2WL6WocZ1Z4w0?Zfj9v$4%uxrQ&NHH%+6L{$|x zj*q=)zZe*El-J|*PEk$!xajYr$;XC|<=@i}Tvp%@&TY$I+PVi`EtEg1ZHi~>iWX)5 zeDm&?q-%h%%dyxqN0!biqPhbeU)27P8-DVY5I_o{b*wIWO$y@$iR~AoFA# zysb=Q_AvSBUN??l_uO7x)*_X_*8N0E&?1o3m(y}$2F3_8p=x*>Q68=+s8)^Ek<}Wl z`xH1Lgo3Lja)H*a*QWOZpGGqZSsHH^`&f~}3WnFP=@aJI>%{FwG=CEl)y#MC@9Y;b z1D?GO@!k}2I<$H>yg#W5=Gw` zUcsT016oeB=9!hkm5&Qo^e!=+Xg>@r3|qWYb@qiDMuJy|H@Kc>PCIj+(- zx7CK3;bnXMexCd#E8A`B#wAGM=NY+~{4?}hS*14*^*%Hjb;Fq{>OF9dHt{<0&r&Y# zz=FQ5$C>W9;BViDA6h$bo>xP6Jv4Fup4HHtyfaa(vVdDt*-yWcYq%bjRLl_E`$RN; zVOIw0n|-a~KRxF)O?AsxaI_4Q+Q@G0Y?Xz^m5h~~ck7FZ#$Cjo2LgRH#AK(YJ_aJn zJe6)3$j026%53Ujl`pEn8*@xY8aA7$=~sUDYITsE`C4#As}&p!|?dpSUf|3S1#MmGJ|3&YZtbo-+8co%XH zlNgD;-+OJ%I+P_~H&*EQGhwKT3A-+d+WX)CNtGycZU~ZD5WCG*62cbi{X81eQt%#M zvfOSIo2#(Sf>gM@A-onlYuMQRMJKTJoYqm#M^?0>s#!|XodseKO2ix;?cTADEsE3U zLw!#EvO3ag9{Q9J9buUv>F{pf9ImX>(~!N=>=+5J;mw*JzI6TjGJY~a(1qOehIHXc zg!GhAH#`M(I!iQHm%FU3G~hF%yBto(=l^Mv%}W%WOrfJ{@RBFvP>24r;L0Jm4KS(E zd=XSJJ99Jq;oywPewI(Sgx_JiTjn0eH7sAROe1K2jWip)BRnHMS;^Q)dd)*4rN&`0 zNfAy>?F>02SSo3`ixjuc^&@-|#6WjJeb5ef8T7Rx7LZTVZm~)|A-ft5uTiupC+CYqxf$t|A!$oms2omkFw$ z+?SLb8CLnksZ)BA9(^q$J3qzAILKvZv}F@wcaVGZ9Js&fx)ndG|Mf7R72{lQZ<)T! zS2db6n*8nxo2KTV>|6==i8E?f@O+GEm`=;yG68ao2@^|2C`mF zQB}-tVvKY7$5IdHy>Iv%(%H^uzAmT?bji^5x|yhP*IFzf`rf4=g)ORl4)p)#KSM{Khwn{JQK1ZiZn8O3}xye zF}NYn`1A@r@Ov+O;p1gqx0Yqj`xL_%bsFwcJoc%tbIU8K{ppFQ@(jf{R+)d#WIefk z4g?K&-@CeH zO;--+y1)C09C#+P!c1%nmKHa<`gmw1AMO|ay>7}NZG=$YiK0 zsN4gEP6K~dg-W33bJ=R5O_SLBipF)OEbdD zWx9LyAhPQjR z(WMLFAf)@F#xC{$E|2uq9zU?!ZWFVpESI$$P9wpge0{_eSFtcwe3rnf5L_7>Z;f&h zWD-e>dibH6Bj-fUpXyxS!SHXz&1=8>z}Sez6(`_|7k3VgeB zPc>jg!s^F4VXq%6He6y&7{28x zi_VqokrpYsG<rfN#>FG7)ufm8DDB;jU!Jcz zj#Qrh!+pW@y^i?X{HyEwq_$rg2#fk{T#*)*zRVpK=``;kfizs-!k?LyOxkecLPsZs;Wfb35XR%GWP9H&Un(9MZiP9^r zD)0`euZ?-`@>1@ZG^a0LGB*yM7%Z87ZS&ljiI*l4DUm*yhwa{3vDN)6m^4!M%R)2u z-XmUkTC?{66MerxdRiqJW+2w<^9u~m6=ghobys-cr|o@V-D8MBxFTKftQqe1S~NTo zdaE=fSRd6H85rfCufJ+J^V%c6Y_++uGG?cN(0ZnZf#Idb%YqlSXs=dUw&XjrQ!y#0 zUvOJjTISX4D!;a^a9L)()wpGT=kJm!iPyXNi`k|ca|D5N;tnE_S>=)0C>MJEOWE0U zM)M`_Bn876B}KJZ*^{qEJ@jgbrL;x!ZRIyB-5xnGj`zez+}cJVq&HmC-7C$;@X9?p zGixiwpF3{<7H+3*2zGr4w?bBkyZW&Yc)1oZn_DQkl{X`TjyBK7sSVy>df6-t;hET3 za#3?VYwDnN6199>>8G)h;~*77shqX78npSa$hs}vOM$({%9po#?l+8RG|ENJs1XY` zge!Phd^e+3;fl(WN#8wgc2HtH<@vb-fOQQ21qCs0vR+VI~4W{o}H(o$b_06|9WTR>& zf=U%#+iqBq`w?@H#4n&e`%rqvbvx{zr%E!FtvvV2Pgik^uB~5uv$*3}N-np4ZN$sQ z!!D5*#3=HU@Y&`h1GV3>|VJq+fqXg(mH#g_AuxoR@dU>}KpeTL1Nm^dk3UAWqT%4Bj2 z5cp(7zLEuAz(@bNH(H))=?zn_OJOj(8*w}Wn$0fiF55ReS`%@?)lDI&%v)t$4+=~B z^B&nV+&TsI?PWSBAwd|A{U34{7MVLyf>JstytY~OLW`B{ny!Y!@2x|gL!n`|8^}Wr z^IBIdMv|=voaP6oU-B*aUW~goB5J1a7=*3=1G*R zEWi>?_862~c*r(NjiLF_?vdu>VMt0w^38wI)@E>q+r}a!|YaU6m^{gk|pE2>Lc3%=a>*93K&ulL%YpFhv3^!xDyRQyr( znafzI;SzJ$;uxI;C&qQ30^BH2+%1(w;5j}Wk zXTe3x0RCW6e~(;#=)%pt&u~G(>Hf@3wB`Pd3+;8~;w(mcLsVxAxA)CC)at63-L%tF=~vATSG&!y(6i7(#0=i=%<09QWv?B-$GbWHGm>n$ zdg@%;+@VdE_T`?x_hE6lgvf2{xKGs7bK;u*nwq=iIJ{+9$4k5dkA+QiQ4vxQ`j`X! zr|tLGmT5`(f1cykjBg};wKyIBN3rD}>ph*nuZL+dQH^4&zF(vVOD&{v$5TwSl9p)*oywhq2pPNAH|Oc{hY8cggl zZ1>)fnY{sa{u>ZH~8=w@y4hUYJ+IO zqEolL6rPh6o;^$z9~)eK*V=1#Qsp48aQa+$3cY7|pyTW-#txsVS(}>@aT`T(#bKg& zGHQfD*_HW<%#dn6)P1J_wb6mV>vY7rYjTzM{GionX`w^_$%$h8evuVZOKzW>NbzO~ zI#I6U*}3%PYhR&8_9wX1lE&tY_Xi?%D%P z?)&<`{L<*D)Nk^yLk)L^_3&UX5541x*koJNxxoGG^`>_hDqlT0Q#fua6!1u9Q~rTB ze>dKr9x1)e_!h=_L3mb#+@v#9^|YCAC+B+q6Zov2AWi*P8=Ohy?CirYwHT%IrI6?D zoaghe_kze7jq$EU0Y`Wv;kCzoChVV9%mw)DzLwi>n6v0;*qr+|*W;6`g9!C;b;Tc_u& z3hUjjCr6m~N8Y@D`_343@l#~D>bJPF zAI4a#UU^t7jdhN&rFT2--zX1|0jGFHv8IMfvDgcUnb|^;F>{u|1*HDm+7Wk z8Qe^`=``>h5%#)~JhkELXM@r0DgwiYO|Gq*sxIOAzVCLTrMrwtAPZI$c+WLv;xxoN zy~ZX~DwJpCA-dS+)|r)`D;-01TQ)GL(L7n7zg-w;yR?G6t_?4|u4BvO{`_G%Qks`W zzl(NwzV!h`GY zG>Ke;`jsf7tQF*%1D6}0+nN9}Ft$F!g}KR;QUo6~T-+W;|8zmK`EZgiN}GQsMm}qq zCeJvAyvuKC*0=nSXQ=7?xZpQlO5gJR?%;n4@7iQjvZGswUB-p0Gg|-IhlB0HiBY{T zGm*Bs_aFP-9d(tN>-)_r-fkS|hD4=2RasYGLf+iG7Tw=Jlc*;@rupjg2h>CMy5_a2 zMtC;nwp0D)b+JLKe=1cl_Q@ej_nrTAw0egheV;ZbQ)Fi!#cs3{`^a~8$)sw24k!1` zp|En*uey?TQJkEJLEWmy=Iu&S55ixFj-9-_)xMd%U4+)UcQOGE5n5A{Dfu<$2=z7y zRmyqrQ71LBMdaAS_*q-gQ{G;j8w%IlO1E;s-M3y`&`!BdJ12eeQ_D;2zJk{$q>erun%!MrL(h0X6EM9c%AfmB@o6$c8guyg zOlo2ov#gBka2F*{arR94itAFq+%~4niTtQ?A$SDHMh6@Xg!iiB0f&{O)>bY%*D75p zM};`n-hRot;fCj4%=EWe9Z0yF>T@b)%ee6|b}o8#|03al*2JDpSQ|8@PB=^*oV-X0 zof!3O$}0KY_&II2zri}VXSwyl&hm6YWqoWVK}+LZ*S(1p{WD5}+Fjv@=+1MwLH+9y zw2v98E!45FI_s&eKBf1$hc#AE#?FDg`6@-zeSx`@xQ!b3_`#G!^*_1$u&Ev5|A(jV zfT!yJ|G(F@$2F3@SJAa8d#7=UXpoAVUCBkmzSqboJ6$88gtV+mO77*#=qjts;@U~L zMqFI?{NMU~fB(nh+-pDXb?X4NkhF%%&sL3l8_THScw<5tqN0Q9*cit|GGaF{WH1sQ9qEKE!eQ3jj)$Df=t@ zmE+SSA(_{uXyE<=`vhtaLHQ@M6*e^AU65V5u_A2uF0d)QV zwXOif@b1Aio7-s4tPC992n8g^iz*%TXbZ4d=^+kuD$}64)Rxm znf}#pzB9jVx~yzhHsV#By6k20k$GrvwDgylEb3Q3J2K>vg4~GG{CCXeo?g)zPX6KMfN8?%5KTtP%|tAzLc<+U(|tg0{W$pcicPmU0}PBv4+4r z5Vk8*kZBZo>D?Dy3~?;5XnHhmlrCDr`^V6lfRrS-3gKvf(fXk70dBifHEINzIn1N< z%A(n)r$dF$ix1wY@LVu`F?h}I_R6nQ^1kLjsDa*`ndN+mmXWe~95a?~XGQd!HzxQt zI;lG5_strszoA8}%`V-Q^Q-+@b(3OHthci~Y0!MUY+S*_s3`co;;!XZ9i(<9O@f#mU|_sLCTbwKQxYwc|22e2VDkB-IcjYw z)_rpA1=kjPb|c5#)RhA}6Rew^j)4Fu+93JaA63cc!$KizotCU&M545>%t z=(~ZLtLg@#L~ruMb-&a&x#2zzAUqVcw`=Ob%C9uPFB64!+IN*%cL4TqhW$f60#6Gs zeR}6IyHi&uo)1Oje#X?eDt#x|#o%+CxOVD3F~%(7Q(VgJSK*eH*v$`YvZmzp(1 zL_S7`Sg>l$RTe-HDZ`~(mxdB*;{#T^qECoB14nT69*3}4$>JdRiz>LT?~P%cG&?Rz z>SX38afYptMl`VWAceaPS+m-xh|ZzOPISqt(q8$zfyl$F3UN+-4h215Sf1}g>*=mF za3)M1A*y0#Y=p4wWRqzglu#EBzm8r@)9fY`3j-XaL0)ml!v!6jbEw^L52G~2%j!=; ziOH-Bd7!;ICHWT5pGk-KvPR5rf*E(UvvKbCuY2!wC6}3sOO=?I+<9^FMlgQVeqY6doQtVlS z$ISrB0dRFhEVmO6ZUHOvJ}zuY3@@oJQ{Ma>P*v^lc@&D}nfO@lD&gQR${|~J)GvKj zT5CEK;=B*=tu|7^=4MTvYLRN@X24+9Y>AX`=wol!V!jNt4{my+e{3NJSp1X>0fdj@ zNFwa(BdvyJ$Gg-f3Q1KN`z<6`zP5`>yIcT&b$K`^YPo#NBTUuH&WSu&ieI^6T*&Fy z{Ue~j^p4BpQ_F6Iw192tI2fg?Shk) z<+Sw~+aAVpjBWY-`{q^-$r`Qxhvr^v-dJfPZPXb44&HxC6M-!@S#W0XhI%kdCz2#% z%`;xy8;dqJXU*GxJeKZhz*Gy+dN;J<3*`p$Er;(zoGu@47t{VKb_n|+fjRQdm!Iv(}i%^u(DHgk^R@&k4-V{kY(&#QoD zF8^d%w(I56qd%FQdN>0@yJ6}^lurGY!rV3BcLbUkJ#tPbPzkuuZGEfEJ~=80>|65H z=C1Cx(~-@7BLwyE_NosX&r(+cxqTJV%=2i1q)p{(bqtTaRSK>%y#AQ#O)b$JAWy^w zR!W?(&bcgvKs!dvG7#S$tzG9Ib#=B-;&2n)JF5E=5oYqN`sf(qc6YGVCaTK6StXefksd*WQmtm_k=sc&^Q~2M?oGb<8>s^(TV<$a+7+u3og}btbyWX~^ zN=~lw+0HbP!aRU9hF5o`RY#hAr2Cj?WTd=j$vQ8<7uNOSPR!0k_=;q6%y3;@CLSAj zDsTOVaQ4AilJ$1nJ;+IIRqI+@cvo! z61UXTeVc8QV_mL=mJ?Zw7Q$Cs;S+E7aeTB_X+AIm;E(!KQ=4J)((jEH*KYPDFEdj} z@Yh$fc5o?jH-70|Bx}J0>R9hB<>cyId+*|3m=5Bju63F(W@X|* zTnnsTIo{CO>p@tBy)JV{56>$yE-O3nXsT%hvmaqVGniif)|hn5REl-zyiW*s>>uOF z)qkagk$AWWM?4(x*#_tIrM3+JMzjl0-Tmq`on3$9k^3Pz?;ZOH+a3>&qpw9Srd>>_ zO?TUv<)zpTmr5ryE>j{!78erq_Z8D zKo4ZM@2mo20iVWSK3=fDhWAg5H|k1(_E)puZr(5TjJuiTpgC|2)-y@nTkq|QlIJr5 zp(w}J^7of5HA@hzotV-U06tyoTkG_Ko%jR$SO<|{mKN|fyI|WZ5EMq=to2xi?LX!P zd!(GWi=UG5EIv6@8@fC(&ri_|8LPwk4_<}IwR1dqa23YFPCamV(q*=;K;oEOD1L)r z5kcW6CpJ`3ghJ=stj5#!-T99uKT(Lx&##P;_@k00N5(%0D2MVCI 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

_w`ug1}yfv1`E~I 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

>{jdUr3UL{V&4`CU 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�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 Ro59K(sknWWWh-A?wMWfXpxRJ&F@d!z+CM zIJLiG3hJM5Awzt!j2GS;o!X{V2$@fRTxiF~*W*e~b^EJnLZ=!m;{|h$CXO045`Xxt_Z@{A zLJ`|b@(0IMU@D|3_QoLv=?QmO`z@`N&saqXE5*1XIKNTRJnSv1;E)H2lH3in4Bkef ziMLlUGh{fRI}Mgt%-Z2Grf>&F%7#OMOI?e;e@Z5T+HM?DE~(~!48GL&4DkKYXbP7+ z`-6af`^5VNdkX`yTpv=r0_we8KLtz=ZcwQYqq6R2&%E)Lu)ujD@a3`GkAAa;o8zQdQ<)rbuHvWBm zp~ig&V?Lj+1ZWkv2;oBWE0A)jblVW3utsX8bi=FB3^HYYw`kebM;VmQ^V{MSQqqxu zPYLhMuLoW17&yQ)9*LkU++jL$k4IMkW?%qLe>B7w<1cZb;EHK>#8h4C$FB8uQ*r2=hcM`w878HN9zT~kYqKZ`4J zzth4ov7JL}R+T{yFJxyUM-bDF8&w6oC3vgm0?A_p*PT{@`J_zgl0wtdwTm3={eqUvGvpwFD_e+`k71> z4^fDE6F+ljV<_i=K>o9h)EEFQZi>)9?e!;y=wx19^&IW*Ax2w{8&sdle=1>&eDMx6 zdbbZ<#66mk`)`WkdFy}42agP^b*|HCt1J4GC7EVh^*M|Xc1+S?RsnTtg-)PI-;%6j z6WYRB#z38Dl(0g1+mI{WGP{oRHqD*4#;R7$2%oXfDy| zkMoTyo7=F6BsZix5gFW3zEj>`;T-^G>OGrbo~Z9gV`z9gKB7G!!1wL-W(eQb{9nZVe;6Wf-duK<{#C-lb z5)hcwjWlhMo;(tegZzX3#w!*^4XEVr`E5{@dNkPOZ2?7#9#t?0*qb52pjOVA0xB_~ z9`OFqEd;n_*8H6{=!opBEnw&!6H_ubsxdiR0a_kI3vy6fD@evuk-+R#c3_kTb7>&f zF$51LU|<1{Sv$Wx9s`AeE_RL``MtVfQB~2MXP-;8ok6p;DT!hf-isqyKVW(Go2$!B z3^X0jJW{*Pn*~JEgg%MLdyjL*wop?U6+`Og>wXCuH&^q=W=Q_coCgg(cLI4)a9QoN#uX5#3{$9WktiXUbKU9$*6j`WW$lI4$(%KV<9g zcdDY+Dl3mTy-FlevbM!oeSWrw;{JlUfhUrFrY=d7hj3{1(H86h83}g-TJlh%Zel^i zpChM^k8j(dHG9P1^8$_EhnlgMDqo}Y!=u2)Zol=;S&y~f<9;@!Q+Vr7HYMUO_TsP= zu4!v#1uim?)EDI)J!t-|l?R=hZ(8m=zB1sUvUi@NtbUE{U2GBT&wmhp!H1C38x; zZE8ifcVkpOh77m^wrx#UmIUCGkOS0BMJSY(tBnG@jgl@xg89;S(vw3a@1^4S{9y5T z86>pYjwZl0e#u|aWlUJO96i3hIJ_&aB+vptJ^QY_40~l*W9a zH?nfwRMio;nC`7HVTsAhqhF<+6aWY1O4_$gORAi~=J_Cj=K<6{^6QT@AgeVuY&Axr zE3I!!D^8Z+5`E3vd`j~CazBG==cTI?-tyJOoFB7sjMcm!_uDa>_Mh-0S$&Mf<0*PA z;U_HPq!pMZA3)~HvS0I2av9`gpTc+P=f#4kBn_%ntDbq2Hra#+=7YC2k?1ssp)A}L zeTUuC*!bv8OLO8rt)|$^FQ!T-n96gSBtT3a#}^1ht1Dp^Vil0p-WPObSiQh>>V!b} zx3o~@l!5SF&S^&j`9$?5Hwpj*0C(=`^G}Hh3+3Uij+;>v5qqyhRQI7W=d3u3L982U z{-b?C*0EWCmReorg5m~sgwHx}4Bw0$nEIU?M^C0k#0{1nGd12iDDGU4iJcLOn~OrE z6r6Pxwt@t4ouTYo?r7D1E%)wO-c2H!i7xOvFlXdlatuqZBz}^kfh7>NwW7Q_K1`Th zaJJWw#=RxzMAKNXQ!gs6;8_C8E%Ex!Iujd3DwQDG3y{FGjk+?duKrz{U^#iU_Fne6 zpY*?8VbrqX?ThiB(V^_$H4~}W=-O}JEl_yi;0JhKzwY|uoKHHM@-^ApO~VY+LdKab z2DWhA_1znd)z-ME&=I4QeOtrn;#G6lTiMTj99nMwrYArF&~X9Rr;Am)E0JjQ4Bs2(JZu*s!|2xTKCZIUlE$FqaWakMpkq zte@_Hm!2SmgMy5O7uE5+R zfcU%gLr%EQZJ|gOz^NwLL;1(zdoG zxVgFRDjHLyp^SMi#NqMiD~fBqpqh+D?QgkpT;{KB+(~CY>W+wfjF~7Y53~MkBDR06 z43k(qLGgulePo4e%hs9q79wL24abUxV^qV;*HTEsuzgAIxvIT0C3M|ZqhaXJzn5sui{E^QVm>{pP>aS04OUGGh*d8oQ zp8fn+{9ZMIS7eC@^soZ{3qM62ezeSMF;!KLE`fLwE=@4>LRkC&cH4LPH9h^Aq8_-G z`=<^)^b#=T-buJHG6ulz*&JTHX2Ov*TN_&4!9Fz+EWsfAU=~{-6`VizoGE8Sk62U^ za&f{nGFjuFY}-6`eBJi3LYqe>9D3ruXW&j7ScoJ~c0J3zc2*O27`6TFOXjbZWv-Bg zi_hh@+hE{&k_8etbr}KG8;YB@r-xbpmNu|$Rsl7@{@HfY7LA{o~o8mVh!^d0=rW#iDdoj*eSw_`>WzA_CD<&Uza%?9H6m2Lz?@rDg)r zrS(?1q_0%jnbb(oEN9;E5Ap8s-TI0YWRx$2Gnc)=IF9CrTKv%^WX zJfT_@-u#~Ds3@}lA=+i6cnu}tedWwM9+PTOXytYC0H05SvnMdg`x9QAm40##m-p%q zAUbXd$szI3v@XIRSwXMn_6-d6#gi|jC0XryceZHnGiU3{K%GIEukD~-3-chF^&*|U zH9kgNuiM@T9HZ2}4-8Y6 z1%DVEuAt_YEyLR=B9gkxFxMEkB{bi;#d@u@=0yQ{Sy98Jd7DA}K8e#sNK`)fo&SDB zf-rwoy3`60^ug;Yo=pzg^VH@H5fHE`yuDDo_G=8&k88e;MLSNWz(+mBUieC zfF}zD%IvuN0`6~?3CNDqb^2=QVDHqjNZXy0DfAuepP7ik85~FEm&iT%n-h;se@0E` zSNKf`&PoFm`SmU@=afVa<5 z#CI(H)YS?xSk-Vl)nMnp<;kjw8b+aV;@-y@)v@`QC>~*D*FEa0?oL~t*sf%*6T5}H z=gqlwI8N(@)ReYh=>_&#aU1C2uIX1QI7s0R5M0dcGIkK^$9KI7VA=U>S7@Xk7MAM!&`l{!+U{;dodcXJqME6SRlFvokFe z*%6Jik)E*MT0%10OhAnhBIKa5i104F)*VvzU0%NlQN9E#Q7#}#k3k`svNDTOQttI3 zlw|1ud5aniy5Crfn=~H!8;Fk!@C;bS$V78z@}N!VkA-2iRc1X%@=h@_)3sJsvu%LV zFi(^UEu=uj6PRp(U$2gKPhTO_1o;oiv;ltbUq6`c6YjLP1?qe$Tw|ga5k6s>3^21h zng65Cy_sIM${g9h~?w}AP?D!tK2D)U6aepAQMn?f94EH zDTnTBrPa@WY2s=V*iSRWD0ZkF*X?)TIXyyeKc$jmx;hJ|Y4I*98S?ZPW7bYhasKXF z|1d*VL_zU+2Bz&a5w-ob{q9#wgYP+^Sbe4ws-SX%r@a{k=0}*xp0$qYIbRq12rmP@ zVzF|&9j8RkeQWmJv1;O%as*-dRFzzdFP;}JVCYtZz^jCP}G1xHs&YM*PbeB_UFsALq$&1G) z+9Ig9uDAWu2v0=(&BG^bU7|l@xOf%SKq&xu z(RSR2*#gQ_9h6$M&nBDs%694gIP-J+JY`aiJZqq4h*y*7tAPG-Bj)1_iI~~*?`oVx zuhu-gl#ABuHENs;J8Lu%V-qW?F77NMcpkFNNfdG$pSbdZPeJMV{94%B`Rs3YO;P6A zkjn)%UB7W97CXyb^!=*ct6KZhqQ;at`K+Ht$g_o!)%ZpGbRvoXzow~;vqTEf5GA8{ zyxC$m$Z_Ih4X@msyV$e{y8Oxdhv&h(;N^2n1qZhbGYHnO9B(pgnvsYsp2p>IgP}Oo zJJD<^UhEoe(;EbEiO5U_G8FkS{P2RFK%SfIs(SyE&!+9oH3rS#i0+yv{Bs4Kc6+4DA1KgfX*0)*{tpu=X#({szJMb@M$Z!8&Co7$!q z^VE|(f8u?kr>(b2X^*hCXZBn8qDp$nP*syH?bYs-8fftDd?HZ2{6_r+@&xZGA5eMk zA*=}gYjO7TtF^hQV-5TDr__4c2s{%)Z73jB?CC`t5axiA_Orp>Y(%I#bwG3xS*A_TCfS(^BYrqE-t# z7CL&e+~IgxKR(smuPhjh-b7afsmIz?N$_Eesc1=LpC76MEZ>ke=fWo`HQLtU?e6s4 zRApIRH3So31FCakjU`BeDIttcC>u`PGu0VN5Rf*b@8kRt7-&QLLVOPsgKegz264w& z?;U$Ko_#|BZOwJsOMsqANlI`KY!K{QB`Q6VgPjlNTm<#FHi6qGOk`s8CV|8)R=X)R zj0H0_s~oNDQSgWEsPllrl$8Ac(YpG-oaZ(~;ho~;kF>SJ9#WRYUfWU9A|`pLdk%jS zKv``A?<#_*un9M`=CtkH`JJ7gHA}9qd;9V4n;joP*M(bV8v6+RENb5a-POO3SlyyV z9-1uq@)bA?>l}WrRm3KJ8jHIZ{{ArF;>H5{be?P$%Jr}xCakS+B<^iq=cVjiV8|Ud`lJ~lGkk|wh#fV{e$wQNZH~1s0(kPb5~u{k+6FDbqSeA0 z2lkytD%YkGFcEfbY6GSy`Ny&n8w0@{3RwxYGQhCpyAzd(WGC1URcM)#44cI22XIh%Q{IsD#Vk2oRmiQ;Mg$vq*?A2>KZAh^T zmFL#p@62@GH{td7r>5Mj$K{Xg$TP!hE~#k^Z_!S)AH|H&nvo5Xu8X_Wxk|L7(E*)_ z`Oe5p5Zp5$p1Z7SAs4jKFJYg zW^F}-bTt@I*X2rV11vhH?d$s*Cgb4~h>|Ga=X-Idu|%|wZRhS;w%FytZ_n}EQn?o! z+QxbSKj?f*oztwT0jmy3T{-sNsLec=-7&}qbgPA`%&ucpTJUi2O1$=4#^uM?LUX14ku^%e zTUzXz@qB#KsHBK&QK+K!&?iOTnc^T%Pbw1R$Xh_!6_`dd$$M8#&KUJG#rxAPq)m2B zZtSKEF&gFn;_K#o;!hD9NHFD^^z-WA8RXOhSSePkq-HL_p4s8&L@Q4FA&B1R|KLAJ z1`>LCq$jXJQjII_=M(NE$DBFs&Ki^h@R$&%8NSt{wOM>1PXI8Q zDk88*2Drh`izuNoAswwrP=9Rg8{lev5oVVl$uWJ`Xy9I{2s!)0C*>@YmD7Od-&{`O zJ(c({9C1E>P(w%9jJL_7+A00hWu`?@WAg)4VnsKqAX+Q{1gWEJwXx-x=qEQf!Pk|*x5}_1ycpaPG zSBloz1nVDrRp~~gJ{^q1d_OF%r%Qws>>x(+FKvwI;DnD4Pbv1KLJCr9?i4JDiTeJ6 zhJbz%w8UZ@n1|xI^i@b94Vt8}V;|Wl4{(y!+BSL~0>wNO&-*@0VWRH#cav5ovn&Ci zX~DaUmVPg)c!icf+~$($4oS+Io~rH4G6%xzewFm=fMvO$AdpgsR+y2d!Bw{Y&Hr#5 zC-)yd_J1DZ%?qn`Ps;VdbJjz1u8l{DDbSW*Lv_6Hw<-Eec+GXN_>!FG?A$O@IHuDW z89M8Yzp=6LdWWfBac}Lg^^f}G?34b}cMew$5c6j;#>X)OjG*($W1VLkI%w%B-9gOXLa zegmAoLCxw+?sQ2^gekMxv<}B-CyUU!KFMShkp=6HB(6;NB0RFQa`0g<%@KUDsiAid zJ`^40y{-_BIEFp?6!}-ovL)pHkes zV*HBZ^j?at1iD=7;;j_e01<>jlnaNAjjI}TGd|zJZkjZYl;DRLGjqcT6bt}`YrEo% zF<{G|XOIBS0v#dV!AK&2FG%5lu+x&91oE$hgE9Tei;g)pQOi-m=%kEyT-)2ooHghv z?pE;o2O)plYgP!wXoD$RAi#TE)=Sg(u@auW*@`9yXBp=aop&T26l)^%by2xp@theLu!tc zwSh>~&QG9#4mMfVI$?56`8Wh2u120(Vc|jh+P#x;uHJdf55l*XM()~+``lmemzt(F zuJ;1qVsaymet6&+=q$;~Qdxxs1@gD;a&-dysJ^twh&urG^$~Zme~$nPA+SMe$AL9n zcBJ9=2|XwGtU}G5hMw|6>G@qhjk?i-*RYDeWPD>SD>&AP3%pX-uv%BbBwj^lg9K6U zOCOIqX>%p9vK+ieuLuc>ENZa+V5%&?1mv7@Jx(<4nebzR{Q`wA`u>~P`#|F0Sk&9T zD_uJV4@Exu59D3=Wx8_}FcFWY3_R}Bi~v1qhbr`; z5CoW#VI!ME`=ybuntwv<0&ArH2BzOCU`5BD4+gF0MIyd2d_=i8Db_RS4too#Y~a7-)NUvb7!Ur%hYORJh?zqC;rv*c6p$9BH?eH%?fCc#)l|dwtJCZBg_JJJ9f46>mx(P?)=Gpg zPXrlHq6Is^{`&Ik=C9>gkesi{@{RbFVDajh%ikwcN4~y1u6%fG1NMx7C|zdpP^5ZJ zNa37!`)E;9+g6JBYd8P}^F<5MxpM=~BTnFdR_d)Qj%DLuA>f(Eb@^8UuY~fLJINV8 z$2}i@alG(SJ0_J~eS+*ZyH0kl{q)dxv-**5Iz9Fd3?Ydc#4(*~=8Ki#!`jhk?i*GT)_A1`T9FRV5Z6rVf1D*#d&0}WGP2gy}8LxQxP8ju0vzcNNHr{9kAMz zVyR&~;+vxH#1!$vPj)f$k2+T2c9yud-tvMXzEwu#6(aKlV$Zodxz=je5JC}y;VnIz za}jIXj6iN1c$#y4Nl6iN73(ap{1)NGTQT$HTJ$X}JpN`An>8n|Rq=)uKG$V==nK1- zp#dHS@gZ+?o%bfkU0i<;lLKtUh;yGFy<;^nQhIIM&_jQ3XozrajdzP-d@UYqVTB6G z5pby!n@AV;fjI-V=dlcKyCqXa2&r#Us{+To@l6>WJ75o%j9YZ?H zexSd?H%5E#%O>s88|ii(jikJGOPGKm&l2HsAaskgx(N^k%>JrIFGuyU?^O^_4a3b= zL=T4UZ`C5+Do`6vN9_v_-Hx9$Jy9lupHdLf{y7mI?K=6Uv_$6BiG8~HW2d>4GQSRZ4P~}G zOM3ao#L2gDp}sLNvP{)|UQ+A%2Is-i8X6$D-I4q3_bW4K-u>_JPa?R)W6brOC+o{| zMuG~5@x*|DFoxjkC9YFEZ+RPS3A?jQ`DmlVH!m#3#O@qGuWpVVb#!o2aokq#JF9_( z&b+)Hu7|#YXzt&1#9y(kmGyfmaFlD}?-H_S;4W_i_UFcNrzV1UvBUgdsx?>rn8MN- zEPfQGcR?RPaBdzcxHiFAkKXCxlQv@9S+T#&e8TTYgVit8^-ps&J|d&uT?#Y4_&a5R z@w3hBgOKR;dul3^Yn9Ajk_RYugr+m~7V{rbvhO61P9bzqrz> zpTG)hIV1m(wcvkp^3)7VafU-VJoG26f;Ct;fgg}u+7+IW zn`+fW%th!U-2`|&E{KtlOHzs(Ct<{~vW(kLRksvS2#b)WY^`=}qdLmf6pYThtV_Or zmWPFc`M&6u7P9^dRaS~PR>d8yube5F(ElXh!UXGG6%{F$316RVkEUN9S-Jr1IC+Ds zQPGWmOiGC^;ynH~N+Gu|3!?8Ql8R_TMZ?&ZU@ow0)r}$74LDJ5bEu{AMhk@iX1I_H z8?Qw(Z_B=u*4M8+2s!5qLXk+D@Vv301BZ`hKXwv*Jn*Z-hPf7BU@IgB;o+HL5IHGs zuE;&1F;&Zg^}kKO1d+K9Uf$fn(up@+OR9M_dLuo*rN)uh^qbKlP5#W}3t_>ULP=>b)w(}O_iJ9pIz zy{y;G_H82Rflu<5ZoF^Q{PWJsCINGcb?czXdqJRf`gjtp8x!#W_P1S=33y1{GwFs6 zq&gCK?+%PiKYRS@6awA93g#Z}#1?bf@#OG&n!rq}>c5Rb0C)yRoFEN3gY$yIt5o9L z*F2&98by9L@#vFN`L&|U*Z4KH%@*^pBkn@mH*Qh3lsnS{n!6$w6np02{VuOQ_xToJ zBI8FNu1Z8J5$Z4{`gpQpVJ08!i#1&LWC|>fqI=}_M{dcH-)T8ib?=y(_de>OR3Vc~$#TTNRPcu~DS?FZeqQ6diC>R1fr z9r}E`F$JW!ft@BBJdo;&F<#4N&LQ>;V;%8QLCjIR?T2EX@UBxmiu~>WJ=khsFk0Ze zAdYz}!(=%VFqsmW~Bh>t(ipH{ugD2mqYUemEg`oYcST*~YthOGi~ zgsb;w3I;YH2)mu6or2!$AyuA-0EA*#HI(Gpk(-X~_gcZiU1&bbeH)m_58Tmom4+i! z^$2kZ)gAoSU}>h{9J>^nSer9&XYD7`zIkRjd^08 zYBGxIfKPbYXpJbRbv)RfptS}ouKa7Dnwtxi8P zAb^3p@D0&yw{1m}GEQTGiF=K0_!S?^x_%ISpmaeqg4 z_*9EH=a_V(51-a>8efn+SR!NeR-8Ye>;s(TMl2Y&AL6NhBS`_b{+yhCYjB1_*PlM(15cN!1$iiM<{E)>k$dyX(6r$}yG46$}Qd@CI#;F}dQOY3~u> z=&uu**q*&kZgPsYQH*2k=e!9gvV~86A}e+~vm8$f)KxYeB47cmi}4Hx6@kP=D%o zE?Q&lgq)N|?&DgFljvLw8_Z%InsO0i!-4 zUOKtwS)^jxr&+B?CO0RK%Ef!B#(xPIpi6oW}1UgC34Vq;p*!c+;vIt9;V^N%tgeG+>LNLxv^rz7!9Hw=Yn zc%gLAI0ZOvzD@dcuC1lbEnSdmct~?z;RrRmqH;aC0}4K!*P5$yN{bHXiMX>WFqaKor(f*u>Mnftk&H1kiMqgs z+|`sVsqsK?fmo%Dd~#Q@RC#SsF!Ge{38D1!*h0AnId7RMUP!2e?y0)so$P>~KQ=$~rfkk-HTF7lr zr3dq`_5x}m^+-BLcsE89Ku?sY@A2cGn9Z9FtG5&;`1a=Ucpd2joAnw5Q#Q*eOxglI zXW0!8a$kM}P<%Ar$=~v_z^OW2_eoFCV$YN7*kYC~lug&W22pO(Qtv ziH7zh8_}uPc5mB6eXFlA9tTIt?2qsb`!cUuMRtf9aI4x?8xLxRjjUb~^xv5>LeeYnkS+m+HNIv`gs^Y!ghK+nw&C;3Inj0dA46>Delunl)6h}F-HmM_mb9xYgYMrzp`_Dm!g-GPwq>({1i z#wf1GPXwnh45s&=RRqt8a2!a#lPpm!hqo(l!y-cISD}OkhZ?2>H;FT z7BO8&^mgkOsW&!mkY!iPVwAJX%7oGdV=xrkoi&WZC>Ko~ zlKmAJ&S}dzXU#ixeUvz{QaZku$z%3OuLlk#t}t~;_g)~vA2EqP`BSm&Dt~+o?dB6(*6Ol$$aXD69wemkkmY{w zb71VVH#q(Z5_&iH4xU!k{qKb;tKwfPuQTWf9S1yoJO?dx%o8sSt%i~D_>HQ;-101Z z6l&<9%jh0=JmYv&RYbrL(7%CyAAb3*Garoc*pfFG>d3HM8NgbWftAy{(0N;ceyRg7 zZVK={+j?6?5#O{lzUK(EZ>B}FbpA3*)9q-whdfkd97E0i+`D13Me>VdBWv&4GRBDX zCK{(~r(9vAK$bNeAbfkT;iu=wGNG_Q*r6yQMF;(DhpIC@t&vXb^*NjC-N?S%&kuQ$ z7;NyIE4!%R{~sDs&awX_72xzC*F}Rf{+d2hZe^#YF4AA%-VLbi5>UIj8^3)q$@O0M zmJKj5ZP8LVT#6K8;V)g8t`IE{PKzj#iW+DRm}0&gZlq7rY9^2)`UBjQ9`~IM6fO+4 z@z}ThJvG=X&wpIDq7hv_wfr{3V3j%b7<^;!^3>jrJ_HpFff#BXG@nL+oko4}<++t< z={-1@GOO?5__I>5b$()%&KBINR)~J2fM*yYcMsl?89yjaW*@5F-bJdRBi&@4*SX#U zfJopNNL-jACYRPU*ochDBCWJz?xOVTXZ*Hk)eDz@AlRdD0M5v%WQ<5D;^o3tZkd}l zfl(nT^&fSI93Y7VYvK0g3c7Y*afan$7<3(Zy0qRTGb_*!uqc~<|D8pl`VCil|FU<# zdmJYX{m`Rm5f7IH`0UO*W@3IZpw)@%fPk)=z0ekJwjjrFa0W~ zsX>iHidWVz%4~Ka3@8&jPBc+RCKKNfjetwUv`*4yh-Jvri>HOx%R;@~j9#DL{%6dQ zmj+Q&x@yY2gG6k3y8IMDs%BplSPWN5DjCBphYF(Vlp>EypdFoX9mpCRw*x707gvQo zk|_<)0Xwxj4u-~^cQfKII6OLhn^@5Gy3-VK;Yd8P3F6wi<5d5YWwTQU&mSCHVi2tv zxk!hZ>ACdrNGt=jB_N8$GC16RIgDS2shss#o0|QAt)u)slefcDL$<$-x01@a-ZE*N zgNun!Zs5J5kbsGM@}oUEyWyZ^#}!HLm#?!=b#d6ck)^*+Y?l3f#yCoMm1z=XYRcii zTjQbY$~uhqC;zsgX>aQK)%TBt774_OBcKZ#g?MrtTlO{Rr53(l;qIE(?Nc|7+|l6G zoWJ6`?a&yh{R{Aj6L&CxzEe$ukF8yENv&pbkY}mBG_ovmhbE23bq9^fpiXD=Z%?HB zTN@$e{iQFCDRHsGbzB-QWZyv-0mJmbjZW>DC{vv1GS`H!zgWP9sU722?KBNnZXM@2 zq1iiyM6elC`TV-WWg2cDU!I)&SfVCpoyi5_$k-P*8vkoQH~_-n*Z#KP3p7Q6q@Hwq z%z+mTaM8q%3rBEpqq@c%hc1}zXOBiTMP}jMXf}6`OJw0FK2;VMOc|a$Sr-V?+Fn75 z#zahm7@@|ne_~a6kFel*wR5U)a_y3s_r5#Y#R7Dx@7NN($IHFk!uE?_=b@m>FOw7T z(22tz_B+8Awrwd<7M=A<$GLMlk1B9h_sqXLDQ00-$cEiJ>3fYrwAbE0MBsKcO>P1l^uY*$TC7-y4V!+YRm0kdy9O zCSNZlOuD`|FB}aD5i&T8g><=9XawWew|ODR@$2}>gTp1b5eX;zW4Q6I;6g)Ymt!=j05dEmx1`C#t)UjQ| z!OXKK8X7)bpK^qc_7;#-CuVEw4p~qyAfAblbszz> zqJl2hef+A4f5ui}$?4yCX1Mp&iR(?KUtzoAGZ&nS8W6(<0^d&*P}*YpfFNIdW8n?xwv-9eqP!S-3pNW-bGGgd3P|;U@w@k^ z2-fex9nv;JW2-Y4tVhKIK$YVDzo|>V|D+ILQ-{{vzqsY;-8)V5kyN_;;*jps8}$s1 zkWXSat16YjEkd1)ZRMp=Hz8#3)5P1l#=f+RyOUqLCQW)u(?CMk(b z#MqBXJNc^#MoiI>FU|NmAH67Ahp^{WY-=O4zXIdC&An^WaG+-i9cyjmtBE~(Yrup! zGNUkl7BDi2d1q0!audd~WQwlhfww<=6}t;>p%Ll65^Tb)<_lKSR1Pm^m6PWP_vICH zgxM;|7ndhYPj5O{=iboZSgE_tX1*axa~B|Ep&T{;cfr=VkiD1*JYy>yB5 zYur>tjb2a;!a(+A^QBIO9jKb$$OK_OU$hyNfJP$nY*iyyhBm?2W6O>MnMPV-JxH*E zZ64)>)ZyoZ>FVxB!mK;temUtsVT2{4)OX@r@h|LRl$+pBmxXa>*->A!FGU&^kUD^!d#ZbdE$&g*XCvuuO;@W4DpH^4P9Sl#L2bz|_ftTq z^(_Ix@Mh}n<@@g0PB*FS+lR~d9qyv}J=&bzD4aY`)IAz`YMT__+`q^~ZGDT(OOYCG zcNVAYOr~^Wb{rF|pM5;N^cVOz+kUNml)G42>Ev$k`*dA7cAM+$UYeAs!{%*+?+}_H z)1ou)UFCX$DXua;Rwnw%-J*HRMJw;d)#=)eNlSwMvCXy4Wyki}bEea>og?J6`;VJuF0 z)PdP~Qa-ESck8JOGB7>7uW~8bqA`BSj?QQriu5Q4%E@c6G-%E`$!?|~zL>zt_ z<8+bxnLz^$MryAPSAiZ+f48O3a`(_vul#nP%G_|r;kr?D{@;3U29P}Vn;mr=tQ~m< zl9$?^zBzNxRotw_?(t0(--oF7hq{C&eB{{2!<3%_=2il)GAG=_N8<7ORa z`Ef6|R~;`tPjG}^CdaJV29O-HuZPEv&2Vev)Ev4MzH!Rv{2=n4PQEF!He8UC9uJoD zsJBtDGZoIMN!vF%KXdSEB4Pe}8MeB6-hqm*?_`7#F`tC&PKv>E1(M!NUO^zc_1_~c zP1zKmO8W2@)KpC{IpoBlomARp@GY+6DFk8qIH%2Wk9VW1_#3VUoK$6%3H~n>Wf7gt zX@0kdwpFJzd8BW;DKJ4q&p!gJ6tH(}^l^KS8o+M-q_HwmdhpL1Map;Gls`dsNpxJ6 z&&7W&PvnUg5kljN+5A86Yro2A!sU^f9!cBpe)j|WYG7{R1kA+;OT@p^y~p>R8ueZCM`3%xE(gV zVTvKk-0K4H$M}kzzXb|wK{JqNU-YXWfsgHc~ev@Q3aY!4w*_!+bNB zX7P+dHsK#wdd?UlsK48f2n3 zNU+CqfJXo2fnT-8{~my@;hBL^@8tHaMqb2JI2FysC(Lzpa(~p*(AHBmw1dH`<4Ua*gIo&_o@_PqRm`mN$ z%q$r-{!Ey{vw=_e)EYL$2 zSZH_jUB!gRu(AmV%$ELXmef|H>{a6U^$Z^5ZH5Tr91pqgJ0@`PDFQQC90&}ND39;may8yTSG(bg5d=kg!UREr zBf*FZiiZ!2tktvcxqGkh^?9F>VWHeaDW&apU2`F?C*ah$nK_norOZ}T4X*bHmigrr z(srE{KC;u;v-|OB8AdrBlOLMU>ZBWOafz8wgu45iA_GA5kI;t~xrFxK_B+|#iwDgo zPCRh&0cCn@4m0?=X5MS!@LB^R!eqA3a}x zg2Iz8pJ~F821KKX3%J(RH6g@uUj4mOjxNm2yZ(4zJ%!>dFw`-`%4PXj{pJmuAJZYm zL@juK7Vj*6(b^lswy8#}M&lO0Tqpr$lh0hXib$XxZFv7wJTK62DtJIZTWhS;vDdZ({`4bq<3dRwPNN7Zlbn`r;#M!ok(*6I9`r(VRlu@6|m z{7k0I1*^X9d(c3tLWMZ-V6#T%mt9^iCQcqxirei2ongB6x`^UpskBZ&fk(?oSZYzP z7jM7K9yA-8`sQbXzzCKhAt{BO;YGAWqZ<$C?q}AYA>%>2Yu6^7vJ#(Tzxz z%G0-fv~{k!GtG|DX{ml~OhHk^u#{bcHNdUAl68Q-ojerMwGREdX{rW_MN4SB0we=-kIi8?A)$wXx?a@CwvvDUrr9(yz1irH! zV^Hb7E137k6;F<-&M(9)r)~x@-voZv4-f1a(t(AGXPu9fki2EX_P7zFxV&V|Gc@eS3Wy;b!IZMTIcs96EYx2g%d&kJ2&AEL-@UZMx~pN<6io z`lOx(^fx4nMDOQ&lN=WXc{u;D8`I6x*~wfA91z;|=nOtTLVjaZ{N8zbQ!)RU0-llH zr?DcCV$F(M{Ovnhw$3RTike;QT;EzOVQ^+3VD%u*{0_nEfnKw0RPRL|#LiYhWcfoO zg+8~xg~^9t&3W0j)8*=aL@WBZu;Q|r1y;k$j@yDRdE2F1WoF9+!(8sVW2l4G?I&{5 z#X@eIWy{dQyhDJ9@!_Y3G>9-yM`#HNQr|g)Fz)a5+q{C=seHajfy11wT+Ki46~aS3 z%66&j=vx!vXPf2Ha0KKLER!Hl`M5qny{zFJ1zL`=!vRtA^#XU+8q>;AY~a%=JkZ5- zHH-h@qR@$`VC6Qsef>y4)1|Hjz+Mb|F)#l#ih7)YFt>9i^Zj`>+#J**`2g3SfdTAa z5OXQ}0f@ItgBtMTiui@&(E_Zn) zHqf&AA=sP>7GNlkp&^-LoKek3z_?-wr~w~kpTdO}V*}ME6posBy#m7ACc_XGkLf-? zN&<{$>z0Y*@YDa6J2wwY`THcRg<7(Y=fNdOtUxg4l~& z-a`i3Sm8{kl4^Pb+~aH76_zFnnBx?i?e_uwKr-plPr&qqHF!<ahX0NHUuB4lYx6-fVyxeG0P0!= zBcQp(zRv4y!1-LRP00zKFR(NSl-}(?pXD68^c=cO%oJ;f38%+{S-J2P3GkYSt4;7J~y=^W@ze2Ly0o3(dGC$KevF9=M%+`bC@ z^5c%Zda&e!_IIO8FSNLiE=x|Y@shJQIPQAAieryfBKHsdBfJ!K2$uKs)<-AvMhI~? zUpuhEBj0^tCVmRGe6rP{8%UCFqTz<%&BPn+jZKRQfqL-rsvpr-8$h{y04O#@SVsq zUj8m^DUZ-|hggNqZ%*Al4frquX_w1~%-M*AOQS+XrEKv|1|KoHZ z*HRn|>jcdZH@do9Ox79(biX+DN2o8ivH!q=zAa4J!PcbUAfm{s^m2#ou}DL@S+L)) z0IQ(U3;@T(^}>sXmJHc3RBV642l@Awh^IxJrF2>D(W6cY_v+pwG*T3vRanU))WhdW zvCy9vS_&m5FbUgBC9b z8J8OP6!hmUC^R_B@+~>Jzl2inoWjt^Cwd%nEC3j3kQ%xx^a}cmUfb_) zDA3&y_M)ooeM{_)?HmFxZ?EwqUj5#d_VPJK&NA!IIh*k-$BKa{zm)_1Is(ojs~_(f zY1M$LM8OUFl+9sCclgO~Ko92b60&PvIG^i-NB5=Jl~*^_ zWFIVDnt$8xG^_LqFS0bvMF$s@wI|Ge@rP_=0Xuhrlm=>(jl_YQZ^BGLsm6t` zWcKgc1{s~3H>b?r+!s=p_**NuPb;Pt@drx80pym`TpA|Y{->e)4Q`vYN4F2l8T7VJ z)#e@+afem9m4&qUr*zTr4D?cdh30v*`CsIdU4@UfwsG*zs_HBsyj!@jer~-ZuapE< zX@S)^8L7k#xr~-d3LvXbm6HHr^yl=0zK{FZ!^Dc3E;L9{!~FNaN_?_)R-ttHzY;qK z=*aR@bKk&XkFmCn^5m1Q`k0lk=E(aJ8k{(Xgke_2z=e5t<1*^RwlcWqM5y#xLnGeJ$C znyZN1Ag8^n{dkHeC8fLKaCtSKImqMh@7 z8~-(^lO-U0mE)Bi$L5G_&OeeUs@E3NdUjrKD8Bin}pquT`ZH36VFmDo=d#? z&3!#{U*y{CJ!4rv@0VWNA^yLPbjW?x5M91n!}EkwaI%Zw5OuxI41WcMdEQx)7)Cc-s~xfycd zynb8)-&)7SzFdw&L&6JJ(BHO-v^l@|fOZ?k8V3{Z^%p!A#C$%ZSMHO9-Dl^h#{BvdME?BO5r``LMe05Y z;;m^n#xHsZ$>z3IvtglIKi&$ke-d^1{+LdP4eMxRm=e~{cyOMjtfF7FG$HdMm5!)R z=6AKAkYHyimQB9*2aJ(UoYCNjqS^VVFKPU6wiAP(Hzpjza$d+m>KSY8bzXPxCY3qd zf?3Xi{f~?%F8rd8ht_(Mv$AGBe1>H1`!d7t^`$>T^(!-IpUd0d!SQIehaD*t)7ZP2 zFY7?*xJN#@!RUk9ACB7_cp5!0mFZiD)!boikANY> z(}hT^gf0KMvGkpocv8JfPZA;KKqMXjLlS_rNNU_j)*r$d98ae|a`9V7$#A3ey?9Kc z^!~1NO;sR;A{fhf;g;d!{#PUONKnK?9GKkpyBndB=u)=-Qt}7qvJu+X^vv8@Tag6dlbULtpAZe*Mdhh z2L9iTpcNz4kwBZgAqMLp-oBiZpPUc4^~3sG`1s=K8J}@*aNgD4wJQo!zO$*@>$)Gg z0s>%4U3gJH6!A@a79h^eM)dGlryweII=dN99OVVrUr#9j4`C{)zPqo1hHzTQV6`;}21M z{X?{wAbXHrRDU$@W4 zJ0Ck_QTzrEOy{n*j?l#}V_`9vU`557gNL<1B~R4q1?i)*>0TmE$BShW?xPFDA07wTs%p~_k(yQ5g}e2I-PP>4k__E@FyrJG|A}R8X3v?lf{0m7jc+% zMEb@%QR&$c+75_1H58hLT`z;l1(D}w9HTxRM)0}5&d~iqf-)gTP?jeYZK&pR@+0aN z*`n;={$Ch6{lQ6HiYZK6jSMcQ?0Rv91vKO&EziwP>Cn*;v;Nz!Bh4sl5gUUW@At1u zRMD1+A1=OrM|t4FE!p1i0_g#3Qq|Gk>f8|tfaT!$7xh@EzQ6BJ_n-!ve3vO;TTp}- zf41*@_ks#r7OWeR_(d+ErAJrb3l}dl<(jV?LU1g*1?bfgcoQ*) zB1+VfPh5TQv50W9NA+R^Kl^BTt(i;co7mtAvHcLjAfZz+#264bJHk``hPoZ;8G`g| zw1vE{3h%^R+(Mbb4 zo8;a-rN6INDB=k*=dxEnM3U+IB~*4l3E$nEAjTH9S^BncpE_kJa|KA~9;&6!!u*Z( zW1T(JGm?38t1psbNt6Mmb2gy?vlrwHlj`q zVk(a}WDCrzGc~PaczbjIkgt{Id;bOS1?#{W7nOq~4R3|btpRnch2r zdQ%L%!=ewu=WK+BegCN_TC_GE0Qtm?%QW^1UE^9 zNm^hJs|>&UH8~3%PFLLE0yp#d6NJ+A{OakpUl(yQ@^Cev3S73&xiZBDSTS7JjTKZ) zRQJCq$II;Qe+@DdpOJi|5q}PJm(e!aMF`R#c42l5e-yW2`x#6G+sgB(=_%oSLG5+` z?P=y&q2z4AdHcheu82cNnAd6TRm_TmGr0u^am`*a&zjV*Q9#;g>iN3 zd*M3{nDp-D(Btu2D-v2E3D85^tsD*=q2k9s+JT-{tmj>>-y)K??%i<{*WhKmZ&`2i zGfk|SqvV7N5U9vELw`qNV%}bQ78C(Sxb+_0O{LBJ;5j)^3WBC*z{LY*!Vrl_oA0sMu!#Jw4GeuTfVy4O}c zuKuj^(}{Pp;zYQYjLbs)C`5vRIA;C9w;9 zrqI5Z@9jhs=|FkDk)l7+FZIAREM&A!{vm({f7mR-KF1#0EW9QKz4ipo`5!Mh5B zGL^c=E%S?0p{1l9;C|KV!1=0%rct6Z=i%$dawydb#P4#UAKNkT#g6B_x{dI; z_BldqJ+u7v&;qv@ez9^;qbZRYs#-n`cNLWWYxHr}H#AU=4Sz;zFtgs4K)a-jgo`1)88OlAJVp$j;6c~5NQCuGe6(xHOudG2Jqgv+y-j~&*r z>IrETA6Ef%DUTaA)!qR4JkPRN06npsbJ7H7Uw0XN4XOKGd~r13-yoNDJPPDU@ax4q z4eLx8hLmP>Hls^&uk?q9CE?iQ`9WXajkquuI#>@_qc^YXPe$}WnzV_(X;yeJUUoZS zczCNDi4VJ)P4N@mxBoIKMSDZ~fDR1b<37UlonFr2Lr!Oy$knE|MyP3VJe&k2K^aea5pQD>@4Yoi+W620HheHv zr!hMkPh(zdiYq0M-p+sjqQ#Vd9~Z5M>P>}@JJfKSvpBzb=8+s#HBzf>q%ODUyRu#2 zo&*k_#b&eH=laTa2Z@RYO>6AZ^JMZ=Y^{e80d$yOhkARJB~BNTF%n3>caZ{jFA+19 zRwh#oXJebcnxs+ULGNs!kbcl}dql6kRa+^7ejvff`gS!;!~|c>_VU*UYY{*5i^X*B zUx`%EiW&Mc6Yd}vrefDav2KJoX%xE9v-8+?_`8gR+>cGc>YPR|N(lUNmpfkehD7QM z@4YnHztDM0#4I?oFjmB8*F4xZMf6Yc)FpnwQhN6k+4#7H39uoSbZk|yU&+zo(@%Pc zJ-?sai;bio-PCLwXf*33G1!A{H%-rFY^E;g-?HEoNyazIa9X|t%Gdevr8ZNPrUYFa zQ{L9$BL7_&S7LR^wB}Q=?Yp-Y5BfC_s4_hmn*h^MyiLqQp^Sg|;ZU>Q;qh2&2%}u5 z{8!gE5>?-CL3((<3y4uk<4?*rnT>mjyeHg^XkF9KucE)cw=lZO^Bxb=Ccy|QlH^XkXhyF(=C7SC#zBO`%qJU zRup0TP3>t6(zPm@c)jw% z=8y9P`=0*@e%m4AHU-0@P~rrnw`Xr_>!hM<9NT260E46JJ6wMtJ6yKcM)rcSZmrC0 zD?X2>s<|0Z5pkE!A9QOwr1O2oyl?f?CUj|^6obsswI8yT|67or?6}YBFnb=lkjfY8C5Q z3oI7viPx~w-C86UT#*jOg{n9#cNZPF88)}P^hfg=k8n3(TP+W@D8WI=zlDPk))gMk zYMy(rk8;lSW9bBv+EDJtDEz-cyHgZN9 zyIr<**UuWap5PujGu(@;%a(mq0R*0RIU^nY8H%IZ}b27L;w8*nHF6jbXYkvC=OD1{L)ng zu|ZQjg8k=H6qUaU^M=GR%*0ik!YUq4Yfp^8JK6i-BZB(EO$&rK-+XXCwHWpSjaf~L z7EtU3Ht&zg*myXrr!X%0YB<|9Bad_7g$fTAnx3YBWH|vc+Xtm?HtCAB8!%_$GKzZk zsVA0hJIu{OR$+=-sZDmr9=FCPC^|e3GtnC0byN-7XQsnewyiyn#4E+221MT758v|( zY53t<9jtfowEpP``Jo)E+#_Q6(kCAbvqREhdqF?M|xlo>R9v?bT zs_%5$eEpaF`$cfoBd@gv1q|^8L6X(!PTyEJM=~zU*S*6l2D- zcj?g%lkltqD448mw1>k{@M<@j8@X`$9tF-$)~iYcf5Bq9Y7H;zmSI1Ca{-$XZD`K` z!e{(h%pD^?2$PK=9ED6=O94|mhRyRqE@CtCQ)aSqg}ii}dXUy8boh5!=)5_31_$qa zk8SzIAl@*B6_rKqPBH7v8{&wqr7za4JKT@+t*67p zQ}vQ3S|y*pzaisi@i(vC-i-Jb5qEgy2rgK`YdU!T?78Oa>$c_qoD;zd*AVJ1TR{FV zUOBD0sZ@<&Wf)kn>?m?@Cxgr}SzNE+R$qBfPbC5PTFyE?%E>UFIXYfW7N52B4zTwBKTLgjJXCMk{*1wpo$ULbO7^9~5LrT$ zEFnWeWmh5Fj3sNfR6>@rZ&4{^nGsPTvhOn}WSy}Nvz*`YeLwH-^ZJXA!#vM(p7WgR zzV7?JE?Iq~1OzTbZvsXlp&R~I;Sm_WdiL1Dx%Xbnpfct1KTCk@n;OLE?PH(ol8rw9 z&om0z#=b3<&brwuaTNCD@;2(nl;h6Fav&y3En#q8jJFo0BX}51Cxql*8lV^z66^f3 zpDwM2hRL#bF()#n_@NJvj)!uc4)#qyXZufG^$nrpu~A22a3F~kLONAMfVD+sE^FoY zgs`h)Vq>ev-!oXq-GG2Y1oJUk*c1go=~XUCk30ah4}hU7ql(E!8fu$mW4n=8%N$;H zxSS!2LLFlmfab!a2XBM${hTXfpPx1FKnVKkv!hz9l(};BugG=(qM#^{YmMH9G?8vb zCM-jUGM6|u5WB>9p~S%e!jqi^dfZW%P5aHF!E&3{SXH&CX!RSCqac90kD4p4A{{J6s% z!TX8>_J{G(L+w(|Dw?gjL%?6!O}@fJqR?VsV&1bZ#izdwG)s-40Ii<7l@3mUAreqF zdJhQK8pqHR=p@Q}Ew&_J8)cR^+h(DFUD?LiEtog9r2t9#g?g^O_V6eRUZse2|b2b09MjRpKPGE+=Z*&oBW5Yue zEfyd^qs`#!$%Lg5t-N>rRQa_#5ae|mQSq)me#*lctBA1h7|3CgtBCrLj^W}{eH-=k zM0ym}i=U|Mvg#JZi~B|jwvx^e$URu$RJ>jMR|7daEy8Llq{X1&X#8?S^*n^bZ!-v3 z2Vrv-*41bq)|xZK?C`m+3#{Sr9Ut0ii`gB%KQ>PHO~rs%!$G^Jd*XY_-7xa`C_UPb zrKkFS!*?O-9xHQcNV{k@)%y>&qN3*ySMpBFpu#|NVssuQc1hXw$xExZbXVn&U~b^` z3CLr`KKcd(a0ozL(WZaBRkslP#B}?`!x_%&@nN01Pez}RD5cPbox0B#fpUDR$?cVP z06>Aa092D&jcLeXPQXSda5wrloSFmTC{0bM(|b#gL)R^$T9y-zuj1m(`V{l%qqZ+) z0!dN2%gqTZ$Q=$8BkOa?^pzPj0-BQN17!^CS;G%@3Gi{SPd-%O*$v0H{G0t#&wAaW zjXNai%Y21L;>hS`uC>22nB_uI6-ja1)w^zL7c=NSsB3@Xsh-A5=@xUe+a3DdzOsy2 z2Ik5v32C=IV<5wbRKe#+U{er6Cjbc-K0q$0sR3lj`D>}%voF6~TYuPmTJ3;pK++M^ z{n3mh;X4>1S_hP82(ppYzzx4+v2;BF`h$*p|+gU!#;Big}un$D;jxH z=5R7C2ElpSry^cePuWoK>!9{E`v;_>=u=gLQKE~-Yc{~@!(@?Mw+1lNu*PX2vtDsS zxdnb(n3j&xD_{x-yh8levjn&IcJ!aEmkm8Xu14QSq%Z*^2~rXE(WPJ8vl5y4&*^wj zH@z=q(1MuV=EUG!sge%dYR#?{4^+j|A42Y1ElONMY)QscWJ*b>)Cgu)WpmKrlMf8Q z#6hj~&C)h%h1_{`x_%|!Af*%Zp58C{?oq?UKCRI8x*hp9%o7hv)P-3?Q>g8 z>?a=3JnyigzIh{-KVwW#jYSU73UdGIR?1%Lc4SXy)R4c;#PM(r=V39F^Yr`^%0`yT zI${X1BEHCJzs4zjAGUenqj@e+(9$6a$2G9WvQzd7wZCtiMa4%SSt@TfP2bVN;;h4C zX%=W8M79th#A@d!bD@^k?vWw`a~CSQ)RZeN~a zjP5+=lb1%6U)O&pW<8l}UTsGJ^fMD-Lh|Np#iYw`v;cDA)0PmI=j-4K((o)`%I~~Z zcfv$~t2!H!Vvjx%l{Oq7g2iW(UZ0zV@DB}?3f8#@^n|NfwMLe0O`J%1oKD<&*++UM zfln}wl+3l3j)M7($68_0BNTwf?{VQei89c+VFM)NONE(L3*V6rPn=P*Qny`vTY2gQ z1{guL1Lve6R(Tybfxt;gkQ{8GC`^C;UFn0`|RG>^18~vp?4i?pkA(HuuuYzhx zy@1{d9iP?7P($qXX;p53u*)Fy@%~9IC7_%5s$WorXcKAj>5^evwC#gMc3%_SMX{~V zq38L+`94i=#EA1~vHnzkQaK01FiUSn09=~S%)(ywP;Y3*|NUoHz}!O4cjn9XIAr&}i^Br%whKN>F;55?06p{K;IAwgEvZbi1B4Nv$*dh!Z}2E6 z3>;&risVCKy>yMmd0_;tMlVw0puh3>BFBdjV1v5MQ`3+9T`S9 z9uE?2pX~C$$qG$SmgUqDDbeKSJac9 zI1+I0CKq1rJW1(TH78;4(j)Kg4v|Y2RL;Y9-T0R%@9<$60%Q5pOac&<$CamWRUCfK z7Z^qw1TG#WpJLW?_FW`}pItmDuw!zFIn^PDPM4s#yH+o1gh}ef{nDyAmC8!1vn{9K z#9*7{e^i7L!4}^H$(S7}_I|6btpeGfyY? z3{k2`xjXbwCdXjfnnL<14JG0nbHNme?nB5_3l0J=P)v~n6Rw4DywMmu{1~;={C;w` zC>IJa%)By;ox_kA8UL5YVE+D}Ti28n+JeQ|67Lz9zZy71Dxl>~sW za*_K3xs}e~l{E4b?@w=Apr-CqVQ=h}7qX6cDQ}pb%L&LiE#CDk1g*~c0U;@ViY6xy zI-ky>)U9=NPf5GLE`zcP1nAQ{@2PEMh>ewaZl9U?YiQ-Bi!=3c0VKB#=?M>h@b)tR zOAg6pU;m7!)Ac3FEpZexyJm(Ad&h-S7?jTkIZR~#mnJH@XoB{umvRjnWLTf3N|d9P z1gPfX;=$MD(&$WfKMg_Y&mAEN(!*k_$`VXbG;xYOghO3wZ_Hu^IB*T9O!0h}UWk>} z+x>FXsd7)zDF|_^!h4(h?iVZC7Ta`UQAGIPj8jbKQTA5>Ko1KMM@Rh_D2AS&`1bA- zVzQ;|&D;`Z4M}5e)mn)!ad8`4&_eGI<&r`4vwuRcy!uf&sIk>uyPrU%7eS6DEP(>F zC2w#C`C-^O2?Th@llMZUtA?Q*b;davkb>aqHfkVRrjWdBlvH+fJIa;-Rg3h?dJ4%JD41 z-z&PF*yFtB0al4f7hr#vx0wdPnv(sw}?;H+yFYp=)0F66Q5K4 zKr(|zN43!OJbK+mW`O#o0c}sEDR1t+pq3GK3#k6BAqkFGmWyLZN3J7 zy=~JINW4r>-`#&segZcbaN`Lw!S5FXE%>U3h*XjEY^{${Bp=<9!rjb!*&!;fD2J3f zKw1gSA7USjaeP9@@!mVt*2p_ofWjNd3CDzT&IJyzNYLr2@{PxXCYOnPv6_$b)4Q>E+ae|cj!#a0F<)mh zn{I(rdY)R%#uLx?ez2kW>ZNsxh%EGkXiCCaMezcDdZ)$fIGtX6|#1qpcP-y9D$Fc;t)#So`mcquO| zcl=IQfz_?0;GYrrY(XB=q+AZ$XCbJLinTBy$lGmssJ4pmY}47=KTRcoiSouujh4boFe329(mx>Jj+yG zlY02oOFr}QpA^e_t?xY7eE+-w_08CbJb?^BrM`5DMu9pCzX$B&gy=C8ox;WWGXr(< z#CM?mM0F|fPF}L7O$vYLElX^3*PzYgJf(j9WLK z?t^`(IbmnFUMiHMkN}%6(Z@FOn_$l5Gm07zSK!NR#<@DC&w@D6G!33wfPU7UAsaY! zmoeUAZoBXV;1X@y3PFJj!K3jg(h>uvtlPc!=h(|q4V{}g^m&SFqMje_*a!m21o&0z zLStGKUh!Ox=QA|li}c{M_9DA;C?o&XdJ=-%IGiYb=6iog=Ob7J*;8j4Wx=K!T9-9U zFDiUP-HVMrT`fke2k>Rf8$wVKM|TvMU*C0$uxmqcw1FWVdq`yb+8E-8*#2Tv>!@!> z>4`_XJL6(uJMj~&{oX3TkgBF-@j3_Vud?p5$9D~&c-a5#thJTc=v^u}sdBmjzQVlD zYk05itXb!V4m-W!I>!|9yO3xm-6f8ldM&^;R60dKo?>JVWm#)o2KL@H3zl2WRQggk z;zKeXeR}xO3xlOkY!bh|l)7xCS8fud>lB!!Q=Z{cm_08Yhfvwxntd~(lx|v3r$Z^Q ze~trULQ?}p8?bj71F)_RmM`Cd=Qo4FVfdzqNyqrNPNCi`jlzvp3^-6yrk;%L$%iL% ze!qPuyDu;<{yrw9NPD%y>O0!|W4ONb(>LE>?*7M9ij!Ma<<=fR%xT2%^=*L=E>8Qz zXr0I5nMD(5M^FR3cu!&>uppCEfIZm%Pn3867m|3L9j!8UBOE?d729i0nj;sW-myf-yp!bdFDX0xHAs%`E;$9 zlqsK|@Knqi!hud>f`Ld^?$#Et_$IiTx}tVN5%UnriH5jj&Emkt&*UZkUa8OAOz$#U zP7{r}52+m0_|4k1HGmWG<*&Vr%rP6VevYwcQ8wm3-UA} z9vcc5O}>jsQ&Y4DN(@lnR$FpreEr&EzG(QmFhi^U+Zy$N7i3s3AI}O!0}j=W?GlnQ z;O7gd^l|04YsEzmos1hE1?}}1_KVWF`c1c*3-Ot&thO4Q_fd%{&z(yu^nZR!H~vxP z=P&ycul{2(>ZaAlOIJBf$!hEPf^0`VH@yWS(eLVyJ38!m7nWe-C@pQf6T zzt%mM=$T*m9(^6Tx7JDHpDKpLVfJjuTScCk%B_$6aRk(c8)$Vm@O0%4rqj`%eHpQ^ zkq(C9B^-0mIAk&M0)dGvwX@D94(^$AYiPZ-zCE<~|B;_(s`<~5^cd0co&HMsea^s! zkxIk<{i91!QUk^r>>PgY=j%H><8rewyYw5ed!a(j=^smbq*RdBTW(q?W9+?2-}{^z zHb>1@$;bdG`K1f-A`W6(2B(LDW>83&z~=WfY>3-G3io>8&Cv(v-)>>uFbR4FDX)s( zcf<7mh=>UjSkh)?>2$gFXLTOySC264DQ|&wSPQOK`ZCmz2rdk!eJY$~I?eI`6i0KG zYhMye)1RBJ?c5H`2O9yo`Hc-|!%=S~7!pD=+oUmhAm8_T)HLgBH2?~}anINUPt!R* zRP+iLCc~bz=1bev1xR||#EJg(LDRm#H~&R~N>}NMdzg(F&b#5N3)c%Hqu)~_T%7M8 zWPvu$wOLk-26tEmL%dsQ6uO_gL1MRJ8APnmys)tm^RDnUIz9`IdAZ%^0^$?Y-^xlA zXH9jO#SQb}5Uer-jo(C`sNxK*V3$>Zj1R#s=RK>rkd;Vv#bzhps-@lz!5ex;vfN47 zG67qcl9H8i^E&B}Gw?kmHtOjfvzjYH^U^w#HI94{l;XT;QmLYA{g0m61}qklI|uls z?#`85x}%aA_g7M2F&2JdH4Qk+Y|1--D^`T~89S^=J=luEfSrBK7+?X@xy=Vzs)UL| z%GwYu6ab4IUhwb8{^)srgXE*O=Z-$l-i8#V&E?>|@o|tX%$J>gvF&N4mMAsLh}+Vi zGfB6Z^kH{Lepoc_MOS>UKmQ?cFJ$V{2K3Rz9v)tXajZy*;1=Kv)P+y`Ka^bKy8V5# z!lRR$L(nRKe=JIT7jo@2n|>M%@LWE5iy)N4C_X>hrW5+uZ4qLpy-Al`u5cq$N=o+H z7%l6;K3tfIPJT3+FBC=fUpv5vV?Z&{s^?UIflFYkPo0@kN z|E#UG5F9nVZyW$SyPQ(jn{|7RBDX8RtB72b+s>?9C1$rDa#-^!xu?c9dO;qkYgjs) zvUe3hdc0MaTw(8f6LPK7BYm?$gRc7-GK76sDPJ9BtZ4er&{xJy>?fKMFLxXj+=$|G zZEqJaJRcp1SBB4sCJwqtok54E>Su@|uggPh@{9TNFqnnR7n)m1WZ)Cf0zomF)OG(e zd3btu+@92lKFh5>nDYwyIq5sjkn16ZO#v_bz={#*;7cc|vY2e6(A`c)n7Io~>7>a^ zEW)~J_yF0EUUxc7JIUOrG@X@1Q`X+szAa`uj0JdvqwBf$T9ju$*)fsh}EWP ztmwp}Ort`^k*U2|7A#lwwBbtWx0rT?CttuzoQ42F`JR+)VQYO(OBB;~{?`#HB{XgFxsmPlmxU;E zxnI6dZej!94GNzt3QMK3-=SQ8xXg z`wzd|y)E6LmmS|Hpy0y%@R#5HH(|ODI>jY}>0p>=qVv-I(8uC5Q222>lySCR^m`#@oCi-=zc*BUS+hPqLEZAkxDi`J zV4deV;tB_0NsK5U{}*7Lj5=&``pe((>!bCLafL+;rGa*4G$WJ=;~E~vMz8Gpa}GB? z$=j>n*z1Z%{iz2~`KAvg7P}$>*jJBRwTRYg^R}6ewk=29x(5d@?$O@arCvbXP!}B8 zt52Rs6Yy6+U(=-7Xv9ChF2&?n{o*HT;Ni1+(vsttAcxww*Do$Vc~oh1F)e%eD+`yn zg!qdlg9`d)2t+T9sh%Q4Zd3z{jCV|gM1&91-bjhD0NI9|Lm@v!>+3l=KulOFKxDzI z-g$rmVh}n$5T|dxT26h^(_O_Tt@F&4Bs!soo~b{i{-WY;@T0A`P?B(EG>}R;c$xy^ z|J{nh0rO3Qr>76903zp;gHSmV?-J7*d*Tcf1pp)Bm#6o&$6ZG-!gugU66iI@wOSjc zPP8N*wHQa-wz2sJL@k&EJc%t(aAg8lf^r#~5^w-gaa%VY;3~g5BpSZ`71;qd*@AYu z3XMa?z<

21FEF&LxIWQ5Ia3kxZmUo)9nueu)!BrbHU~_lhkyp{%iIRS zc8ncFvis~f<@@Zwva{Xd(HxkE$wnM{8S@aV3IU>)5ya&ag8$Q3#$Tv`_Oa#aT`&sX z)|auLh$8Zn21S7w)1=BbZ>;+X{#WYBrjzjx)b~}PhKcH?vQ0~Vg5$taRc!L>dWM#F zPRQ|7b|;Gvc~t;ZdW_-=3PT!&umM7e0tbn?MpIuhhChZIfa*wZmC1X;%WSTWlXoRg ztn_PH6?J;|0?7I2u|O69tXECl8T!sL7CR4%C7?jVr3dbw7+N$x0EBTQ2emLa|7Xv8j9S=xS)y#S zZ}abK+1;x7CuCVpj2ETHl>U;{Bzs7b=%sUNpJ^RUqb=()U82RXc(giZ>3e?Hc0tGNuBAs?vFMmjrs*Zod`&+X@w$ZAjOI*9P3qyx8&L=I`Qxoy%Fr&VtciWZBZU9R}PoC}15ew(x% zB(DU-HbF1pZuInD{H+dAVl*{>F_uB4Y{HYW&;mm3g(xKoq;IYkL#<;F2}#InM9WE1 z<`Vu6LOU^;2^96{lJT0%yv?P<%-~7uI)a?q%LqD?w7&|k0g`dhD<%w8*p zvUNcHLcf*Msse^Wq$RFIi##B;k}U*+2Z$4*aMi!C>}_06xrMBgED6y0^LP zlPg)@u41x}UQ4 zKgcbvypP^|ad*~-a_6R2LS!8N*vzX1JISE-xm9c>5JfTUOhiq^R)FRPO$Zk6x@@Ph zG48kbh%nZy#9|p?FpNKfe3vesW)lHskES+iU9J?i1$z z_vk8OJe8?F05)*V(6(iG9 zZa=E6pfMOhWtv%vs*>*??>ss7Q5k>T^ko!LB9Ehs=#oRycu1AvxJE-|yBP7O= z)=XN)qqN^u+9=d034gS-sci+26p|>vc_*9s=tUT^Z|0uP3hccp6L_0WG82xqk*U}8 zu6B>mtY{oJ=kj7`jj9x72J;FFuc3xURm`X+n=kAO9!aq0ASw&94euJG;W9{x=B<*mGV6?Kdg@^VYt&)y2iMuL&yvAu6ZBW3!MV zVNDnSdab~kZz)v$;U*hzIYy=E?&;e{U1`zh@On`Q&j`qE+|TI{l15y5c)@!<73w8n z$*xyWp7Dgg<5LD^lyYuurZ2SF14o_+Y+g+J90URPP|1sudEH9}%T9opSLs|@Yp49H z2X%ZNqQERN_D^Qq5(6Z|M(!&G&64x8b4k*wk1Y&%iRyo$RV7)4K&r=e%IQ?TA$=OU zG;}2jhyWt>Q2>+d#bOgWl>E}W;VUr3juSQ=?+JA`nyf|&3n`KdBiAR{b&T$!5{7>2 zAtPxLH`qADr7T{pgs-3Yc(WWCK5O7^?x{~kjT5Ornh&}L8`+YIRllM(BHp=3*MB!^ zmu`*Rd~shLM~BAXq=B-#qX@9OhI*RQ<}Y}PBzI%q-t64s!hNQ*A4GkX<+x9;zIBVy za;H)9d7H00o(+RW)!)fXoZvGmhRE)CMQ>5BNP;z#sFp$H__OI()o=ukjofF#sD7Ft zn`B)ex2jR6W&_-VG~^OSjzomBBo{gIQfvq=ts$t#Gp^-@<5^ zgn3h{kx{rXmQy#pw9{0;2{jZRevA;kQLa`PMwV9sX69F$x)>7m!yX~QeMm8V_Miks zld+9S=vuousNJAzfy$jt)PU|UkQwz@ypjp#khQDg0UH2D#S^?Kz=GUl`(LaHxf6B) za+T5yzDIbw6ur8elqg1)Pw3N~0TD$Ims--)T$N#xGj~#Hq0I81U1a2VP5=-o(U13^ zq|L!YM{gu-EnrWSv`$(bkZFbv^d1)nY5|hu)bWeH&5tZz}2BBG~a!D**L=+qJ_94Iy&C(Y{Dpf z-eNdPhRxE`US62`a3h*lT%<3=j`6tdJv?3XwUUu zCBCIGM4tO0&JOW`BlO!>3Y~sHSiv&B?@T5s%H*X%uOfb?OExKuue9!5E|RwanLb44 zAP$oeGsyYrVh-PfRn+n?(_B!_NK372RCnuP^1M&77Jb-{i~UuW?^c z+KpFS@-KwGqO)jZdO0n6?Na-PFLD zPD-LNU!22vB#=$|AH+ccFu0TVe?H~F1ManPUN_8)iq?S@SZJy9j@A}aYdi4$h*m?Z z!qQ1Ja#>9B>_+p2rmk7O1lHWNNpgSK4R!(1nD1OoKi9iJepUWjK&Pxns&h)BTdHj%om!(rn zTtNBn99?ji=#*an$4`ZPwF{aMv6r?Q0I-ZBGj*Q_??Bl2%cNfRkU$9vd?>F;=_kP_ zsLeG6S-XAIuW#kWhr`}j+V>={u+Ng{(Ss@0Mgj-hUeN8P#cFunG_}1=_rUmYxSt#c zG?hH_%6McB)4z93Qua&}?%>{f)T134+^xW|QB~Y8zF&#h_WG$QFU(aF9$o>lwMGm8 z2x+1y+zmeg$aa5bxZW$DJ8%V`fd}om(xJ;>*<*{pIT0JgDz-`m1l+UPzal& zUlhEtbPoj?&uY1Y8c-Px(<%hU_n6fqE|GabOQaK0Mu~Av%>U|yStvX{C@I;mtE`f* zsYziuI$)xky@7vrcR& zHu&xcTB!%iapM)h;4@MLl8tYlr(28O8uY8;Gw~JtbxQdM2n{hgISyiin z&~snR>I2z_tf}>VWX@vZWmOgk2EVzG(}Am;VZ4v7;^5~*XM9_sCqA0PsDLXU!|AA7 z6$xPeQnMhG0vusRZ3s4U5%-_EFE&u33W0BztdL>6y7v-7eQx{Nj$t!8HYf6SdYtCn z@4HvGEkt5QM>Mt{>Vw+@p!j}!&BQk0f2Mnd$B;1^?eO^-STSNCPJfnbRXkDrcq%&d zKb;xdB@k>ouIY=0W;~+_8PX=Y`qfYOwIEduL#~BtzJF1ks|+{8(3}XnkDoC?;b{93$tGp-db`LlNZ9I8@-svzsAlPi`*x zFqj{Y2>=~-kMJA^HvNk_zbzi8ooIe@rZ_u`@N?K!1K#2`wG^ZWg2CDv{0^P>8Kd$St|K)e8yS^Y3%DaX}V% z*o}#k5|)gcBZ}c?-*ZQe;Gq8$k$^K;p6S;}n}4orDBThsL+$3Z*21U%EHi&exhLXa zNKg3?!<>quU9`Qy-DYbKRwD-%3bL^$;GqXd+dMKE>#MPrCWrzk_AEHAH<(npSyWht z9&2gDq{RrYXW#3pNZ_4>^V8MNbbm3yAMBsn-i*yR97?0Ale(U~JHgvc!dd|P(Nf=PCVo=E=pJKcWQSMPth|p3XtwJDT~e()TwEPuWpP$rT;+@PmgTl}~EyRUVAH zKu@;(xkD~Y5D%UK%NhSjHb&yw&f#GHkmaQFF=+G)Pp`!?cvX%K3at&)>sCgo^>Mgi zBAA-yEacp-pyFPMsZ>^`_J5WnI5x3{Wv(*f7at+;xEdSuAmvlNv`lPPQ+&o~D{}kn|YS zs$t7(E6sY*8U9}yQB$mveHn{j$%V>?Z?P^qs16yU!7k2xXu<-{fe6;paH^xTNHEs9 z<$8ZYjxKDUHl;S)DcVKa4=j>?kD?r#LmxAFK&jHFuX%R$6N~mwI|;-Kwy7 z!MQ&T2~+Q2AH`nYZz1T-uxy`sJ5#wkp?ZDWwwETD%`&dI4^Uioo(^exp85R7fk;AyxQMVaXfC?ThLn?#Y4)2rlVsawHnlcy5&R&stPrH6d>(mdnOoz?39sy z^f($8%?BjBerfUZR^9bYp*9YZ;!+WlS#k=6^8yqP0%6vZ{|l;4+%m|$jg~(KRSM~W z=j*Pq>AGOMGG!b6x6t8R_9i2A_V>VY$#_&g@cAfvp-wA30L*hLIAKmCNbhdjk{A5Z5J2Sd-u7~AK%!z*)?5mHGhjum$ z=!mV@ol&UNIGfmS$SJBdPda4FDVb`J+6<>yFbgy)mGo(4$ub;eU&U`?|_d%@8uEr?(&#ul0uE64-$t9wGj0WvPEv=pp|7-G6`*?Y47NA{K zC`FfD6XXZ7(X8mw$_+ij**Egk(HsDE7IMeqU}vji`|}Vi+#Et*_|{9l@&epyx631h zN_npu@FCFHLVB&vxZ}y(yYFk`MFF7-c5he12SQJQMt1v>yXIDHSQ8Rk$!m6*$ifxO zXI;XJToVC;G3AbHX+-F&cMx5XK>3DEnydA-)^pcOE*?QtF6^oUP668ujo~S;YqBQm z;)dg=AD10wrp-6?kc^!frGmBo@thsm$BuUg{sm~U37)t8W1HRN1B7ohVE|$jF26go z=yA1+Bk_pCUx?}KwG+PeC}4u*AW(jFdKwrEP>%(-36MfLK|kO{)n@9(>z<+|@P;Z` z(-pN@-y1l58)py{_9zG_r+BNIwu-Rd`d~FcOy{I9`npP@Ve}I(G=LgVh^+6tE62do z7z;uMUAq=8GnZ z{HO8t%gH7dGJ0#_F_Q~D?T?Dc?6nt=1~ z=yxQMXlZM$c^NCV_E+Q~51jID5nB0z_9nIMH9pVquJAVCw5wa18+<6 zI7md%s5zTw>`gVfexj2Rxt;DDM*|zK7QV_R^C^b$ zLisFp;W~L(G?qTzqYt!SqfyP$RnERuK}Hk`}6`?{2nxLDRdbwqeEF1~+rQ z{@^}&u()#V{V9`5@txxp1f^@LE1Q@sDtnLeLB!K3lnr!~7{tq$mQw+|W!oXx3vGCK z9*UPaIrhY|`)TXR5b`OZC>dWt_rskXBSR8}b^f5qkQ>gaKVo?gAE0a#SwV=EVJ!OL zcCbMbyGwMI;Kpdc2QCtHjY|^vT|9eg1jPi=>N|Hr6=YYfnFF>s5@O&!Qw>cdqKLrdLd)FdL0~ zf8|Bhs&PWr5lqw^SmTxwi7hNnXBJIq;?jlg01S!}C5PtR=M(3L33)M?akO+$4u4FV zbXEHWi14uRnCqfjxPjO=&Au&h+g(%tYbe-ej)_nU2}hISEDiC&faP$PSLCbrIa#}k z%#L4&6#FYb(M8a>#|n8;u8gu?a_7sUgDdMPXN&Y%>CW4oDr`8~WFK$Qp2 z6@GQ$xa6RNQ6BX88WJ7w2AJ1wVk2@n3vC3Jy=xP=P#gXohkIB%;2aIZi7ivELu`tr z*i3Vde!qmRp`rv#xcfrx&^7-%d&Nv?EDe+9%F`8vBvvAL&V2&9E{P5$(5FF6e>q0! z*PaGNO%m!)o);3JiGZV8IJ{2&ShMdlxwq~*zAy4ffhNRQ#~5Zb!pnNA)39ie=q zDFO0xsc^;cKms_-!_*$;#a12PfXn)~6b5ENO$cIzmZUjL>|~S_=i(DPbpbY(V|*A2 zv$Q21mO(kbOoO$EMwURFz;&1F)yhXg{4^QU>ZZ%xM`#Yo#+8A&PgDZ(-mL@*uRKmv z;JR7i#};lf7=k^iRB-Yq+(kcx5saGVve#6hz6ZrVTSp=$uz`H5 ze#xZ(oR;+$13(do?v3leMVrr6r%FgEo?;K%-r2C$w6m(7rsQ%nPAm>p*UHsxpdWq*tH?dy%rAA7R zb#y#1e`zHqq}*E6TAX%Qt*N_&D*{Xi?f!6ivnrt=EJm>vtYCjir_{a`#TL@pI9 z8?I_?pa1~qS%iJ8Jc|O+WEcsk10Ono_|>QnMLX?d>!>Y_y8{&xTs59i_OEiD@dxvm z%^B~^-7sV~fJgynyck3YBhs`v|8sx_O56l!4e>Pwav}kcQRE}CskwV#e`q%fTHN1PRpa63~7dEv9Y{^W%{23}1 zlkeXe2&~s1(YJ^g+_n|N_q!@j&ktm{3(B5|(8A-;5ugC|=vr*g^WtL->W~BuP*f8@ ztFfUOhN|G%}Um;5%fjw*O{(FiYZe zNgm49l*G~K1FBwNG>SYg_nA&Fcz}k1@Q$o^yIGx>8)M4q5Rvh@rh%3whznDT$HXUv zixWB8((&0hY)RCx4LSpOLt}|3Qa_rrYI0Oq0dv%PGEfhq`CD4l*v1u76H@8oAJNwr z#c0RAGinUSOP8&Hb`s=E@{R8l;1NuYogHeMX}MDfUM$avGmLkD3Wgs=zYZMi36>(g~VGul)FqzJMF z;NC?)@+>lw>l(a&<_V($0DN0t_MJ0|0z&dsYAjZpxxEf390v;mKdpkRnuC#O^Q!bR zC+ji%k)%_C7JKW&djtqbXQ2c0)ha%zAoxsoj zKL82(_p{M{q_X8-Sf+~)b)4#_Fzm4baxMp0&L3)}n{V2TgG(|}XoJ^y1b_3cbW0&* z`u%efFuE#rSy!dPU_d){!d;^QV1Lu9Exwobm>3@c=oe$rG^sCv#~~$=>oZq=mvIL< zN?Xbz>BTu5iO)wY;_)r?nOR-NgXP&_@ZnjI{_^}JXN*kT{ZEk0b8PJ%wO+}6j2M!1 zU#UK1yDVT;ngZ#v9kx9Mt)G{Ad|>&Qkqg+>XFNQzq@abE>|V$2puefFeD(*%mmZo6 zT=6VMGH_IdK0O(T0FGHTP!&o$N)Sh}XLkGp+4Xg4%sk4F@rD5o^zv%G^Sb^SLBb9b z{aIsDtM!;Pk&n?8-PJ&@D(vK^E&Sg=^xd?Prlhggo=gAt zX_bh6e?5gd$E{X}Sa?rdA^=q4jK}%Ijnv7ylKJRr4`V7^^TL#i*Y&mbq2Pwlr0w*+ zY7YrXrM7|p>5L`i9Q+*`xEbz6HvX=mEh1YSE-Sa{Q+}P|A06Vd`xzLY1hFMT#Q`LPGrT#B#zC0KFFyF zM%+!`Ki4H=Dl2-8-dBfHeyWs)BY4=*vHTN${2Kt$hp#At20(X2z3%-Tf=z9z-+P?e ze&Lz`(F`RbU^Z_{uuT+1E7Oj`@n3!Ioq8ea#h;g?T-H09B@SmokUTA}1o**U*TI_= z8G#wN(WiYIH^eVs`ebzOLU1g)FFh2S|0#&NVNs7wBu-BEGuEkrm#r#HdwZHNShgw7(Up=5s$ufnKP^@m|8 z>oeDAC!`{b24#P#ujQ(p@%ktnW5dVfzz>xe)<=xel*g?(`9yd|=f~*%2aNPNOk|rgaS7;-Fk4gk;g__rBj0(*v-|XD&*tpP$T zTQ;DOriTJRCb_9FMoD;w;u9gDzvvdk<2ll*Ctuy6lv?>%jf=l!764Yto56U?u@*(- zxd~Cfa096{d->unoO$LR671_ntI)|l|0Z&vHNpA&F64DhTdGN|vcYWDG6qZ7xW#wz zR2@KWS$Ljy+CRK3M3d*4OQ97)`{= z{%fs+{CY8l6fIQ*9hH{Y{^SRIk+xV5i=ULs6%F%(vYxy%n7JbY5j<@v9{-m^h0g9v z9gQCezt6NGOq4itI4>cXGw#6Ac@dx$y0RdFw4aiP7bwwX509HPp=(?d7uzw$XBS<3>pVOa^;%^HoY4Kn#r#uE zP18E=oo6#uzpGBU{&U;sK-(Wd^4>6r_|Na|Jxp397?XI4*(7cgEY@eoO$*-9GtcI4 zgfR+?V2I+0MDrDE&bIGi2!N27b!pM)@ZEgmz`e(H!}wSJRUl%JG5h$1v9lhYbNs#i zYWs=F60;?fTJ@VFsWH4VEqpf2lbk0mIy3Rr${TkrcX-oaYJ1)k5FO}Gl>=XSqKad9 z-q2}c0q`UxCC)(#%o){g(e9Pj4OwhJvkuq%;o~1S2ZU<(n*V;^CS!21n80Tv*!qaro2Wc&090ORM$I39h~tUFkYKq({AZlBfS^QOgaQ*n(Lz#P zuYPK?*Qv#K8VbPY#+*#}VzCd;oP5hjpLh+7;}{7^-;_EAfjV{hwf%?+>Wzx22xuGzxC`i|+HM}N<(NAOPxkS;;YTwuE$X$rzp7UTZ*vT9 zYEUyiRJ||z2w9&&F3pq5JWlk&3!dbyp4fZ@)TbMkAO;(Ffnx=usXZ}vslpo^7bFC- zF^mgCXeVn_Q+m$F2p6@+AD)#qYS%&$O)Mlc;_<%|8zh>A18mYHnWLE5*NF?=d0>~o z&`;R?_)preOx$Z$x}4L6@U0G41#7ezJ^`o{Wbc-5TPqa>Z#BQ~w2GM@PCb8~jv+?W zEU+Z~u)Fd_m%j6?SHqd3k(k}O4NfeQAz*UU)_DT=(ufD2TZxH+Fet@|G_B5I0Y)RZ zuB6Z)nNs-w89K#G^IrTzpjaY`=w+KwQ+t5aO1$ZC=bdX~$uc$i&`+X)4e!%zmVL-46O5th&gK7Il9^=57xoeCosL(%N(u>61{ z4!@F`JmYb@iHSe)tDL1{^#jdniSw+EFVDTu5<)zuvC+``G%0feRQ#y;SvARu&l`}? z(=@)a*V&gx&#+JW`hm(&ZY@2%mJgwqW0*FD>l2a`IT`31d(i(X4pNg=4)%G35?b_$1g-AS=8yub9Wvp36I|2sH#FQA@f)B7suZ{ zmk#bw&h@}l9Y`wDM+-vbEN#7xOcXX9NeB^iziWxhm{s6f;QlXNScJ$~qjV#KuuHTG zeOp`QR~UuVn=a6PGby??0U@Oj;H>S27ZYY&V=8CllD>N-`Sd;W}S`n z=>dRf!<5*|D=cf(@!yv@{JaYCDi`qFeK^0JE?(cf+yM&c++{Zm2+U|6>UIHz%nJWb zqCS>0LNqiPZ#i8evC<+hLykJ)lQG$V!x~fSG+v&H*dH2usI~RzOwb<1WeEv;aNjuC zf0#g)6gYM1$NQVORh00#Kie3kY+V0oovJy7LMQ=X<3tC{C+f{6MV|9XUrX~Znx;fC zhAf}IN7})Kc3IsO%T_AsGOqnE5+;Z(KX(VxWz$aaG`wxE;%*+^5)^jA8-!E>n!pCf0!yeKuP=wQ($k_0zprRs@3aa@b6}ry zbP|f72Hg!YX67{`1CVZdb3kIOl9c9DgxOKmoDEHc0h5f4T3I5Bru|ow`8XW71W|T0wQ} zue*@@4vKcbr+m702}7NQbE;AAY~VoskY~XK@@7S|FK^C+QTaV={m#r&>mJlee~TKE zBXgbTmHmGBswBLuF6*SU+Fn?-dI|f6zk;93-QA6CIO{`nquhSrRX~_pui(e4Rf3nG zrp-F{1zy3%dca=8c~B1z3q+gJ%I&Av*K#g<|E2|r3nbn3wj7X}KC@WPyvb1;98H~A z*;)(Jt|CDdWT|wUXs#N}QBbyUbZ@5WR`8?Z=)PTlOw{Hm^8VnDvNvpd?%|RF zzgyux(8B<&%IMLhQ}bhDUX_dCJ!cjJce@j2G0=_96~vpWpirwc79)@6w zACFTA3m50-Q)3lsqUXz|noNhsZ~Qk(cq#V&ta?Jp9geBf-QfEUI*w0`6PrOO-KQC2 zR8~fd<^q&6zkYDld9NpUqy&gYP76UI+@&zXltP}WDcjPIqerB0OYB}UxG0A>lY?r* z+Gpa|*rak0UiyHUUY6?J?BU5VN#47X$yTRYVVJ))EF;SLt!(J!AmLfq z{=_xtqmYQq_#6jtxO8jXhgiR_Mc~h1mdQR7{mN%mM2EV($tp~UZ5u3tBv4v@tXbm$ zDo^T3^&L)TJ*NNVQacyJ_<47TgwakWAajcLHO0RcXQCIMS^`gX=*Xc@C#MI(z1`wb+n+j=wCw*42CVVw&>VQc<9-jhR z5%ARLH(U2!-{Zr5N_`16$Q9{)yBG@U;@CXp!@v`a^UP zfmQ`WW=7ikf<3(Wg?rDTpa5~!m79GVFcshBYa?rRvPZqOLg~A>MDU$AMIBhi{)vsi@8+_cZeQs4?d_tn`3s@3f-~&?aZ50QTUhV*dI@4xGxMXe)pI+W!R0mP$ zPGZ6D#J;{T*=-NUXifXb!de33p<*~P%!=_sfOeqsrWjse_4<{-H9d01y8*(C0tTiN z;1xi>B2g}U18ppEN^rTIV_A|>y*LlVDRj((H>HCn&G$91rtA!Xn_?i2UoP3nqFDbK*IF?Abg4@NZaCI1Ybkg)xb4)QAk`AFp=Y|@$JbkFG>-5)eKZGRKH|&7EhMurY%PQ7@qmFS|384J zV4Bzd{{SN5$GwI(RS;QGIMZ|W`$MqBKH)IANLX7%vV?>A4H2E^)hV1?JO+|yTDv!2 zZSGI`2M1Fea2%6G|6`zZ1AH_+@;}nxwb>HOUt|3m?e=f@xeO$M(!0|I#xqK#BCMa(RIL*3;&kaQO^9h-QCltG9>R~Nk9$X=y2~UMG{ba``iw0E@`&B&E zupq3J%Jp%6Va@mK5qIDB$_=LoDi+HWB-fwrLsioEk>+>O98LhsLWbLU2F9w& z^e7b`k$eUq<=x48zGjOH=kb%rO)j3=8OQu7+B0F(QLiI3WG?#j_pe;o8w<$3y9OS1 z?#DnB4xFe1+kT;PG$260Hwe`?ndm*y#>W4qvfy@MtA9@@^Y8ppbol_)ub%{j^JN(} z-i5M9N8AK>>mZe6k7$O#kLYy#B3Y_Gl4+WkIl_iw9aT&*j5%mmY9 zmo}9ZB9RAa=Tp#t>CQIBDVV&XTlT&_PT=E*xx~m=<*2-*5I^)PUO6;<_}d&bIT#ni zjGFGZ>8)PlI%}@8nx@q}y^h||doo5CWoXA~!3+vdCrXt|>-M{_pCXMC1_JNDmW2$c zewS+nJ26X%*stC!#_?Zx>U;`jnclJEL;Gifqy(zDs%bh`{|BY#5He(6s0mDmzb_G# z*-dqOWdlonsPKhHEwHB$K5Be3k$mqPWo04Kz3JlX23a?TrSozw1y8YmG{L_;w|PN2O@^NMc(XTfIJ&^j=R3ur z-Z>JAxqhnJ_g^(zerjvnf4?w(JQOlJ3JQFc{6f<0;7tfV>7>IXcc@=r)^oXP`34I~ zot^-vYWDc#4jM{wJv?<%%9t@$)>ImMvQS+AX{N@_o67FPFL{bJ!nS(RVczb)XV>l8 zRRx6*(?5~D`h)z>*5f@9l{Eijp#jKf3da^<&SR)@qM;Nuxbuj zJo08i!?BD4Y_DJET2(=R&CgA!3m1HPGY13*PM;2RwL3Assh}cj`z_>O-?m^~lHmS? zRIb*mcoO5lj2HMVt^x`vU9DUp#2dL6wxAvAEW+&@@H`s=(`gm&>d|#6 zUqe9T#!v+L0K`ncd?nZ|r8@KVWV5XGhRDY$6YCz#et(&Qv=$GRc32gB>Ebl&%D#78 zXHKpONktK3Cpj3C(`l!6`Z>3UrUSHw@o9|P^#F5B++hfM`c&c2udUWUh86NDgju}#r}v}!K1>!wkWRa@6* zX`I54s10S~aQ7~%Itl|d0u_6G&OfrZC|Uav@s{J zo+Wu4{9x03OV@v~58M(DtGpSfd~0JDt+xa~r3@O1mgqeyTfgi*kyyu4D`}jMPvQeLu>{XKtHd*`3wDaUwm= zcOn{Npj)6(u_)sm={86fVX=F5M9KbO>lFO-I_=dkl-{#=L%y_~_(|$&qI5@95wy`g z4YEx>459_Mu0cN~W;Cy5LV1B7P_MxR;hVV)A4y>SCN=v`SNHBYoMYY&QbrmL0H>9y zD>8EQ2bLa0{tc!%3yDOwJDFkkWa%!Z3ak5Q`yhK_QvSleqJ3sX(}57qtO`Z^weLo^ zqQr5Lt$)a(uqO*_<0k8eB!FdlI3VYvq)i_}6$cF43y@cQROI7}XZHls3shz(ZV7)! zq90Cw>Ln^V{wonl^b{Xg1ok?q+8i%$vUEMigLMo~PIi+z77d{hmXr^RTQPV?fi-db zH`f<^SoJsJHPK#ap4CCavpEpV9b9DGqxMN6w?0W)AYt+$_8`qKV9?8<;CIo;X%@Th^2VWcAvPlaqwWWH^R;j`)w$NbJ9 z@zrwraZ9^}P_gaN4O|Q)vkPc+Y_w270S-{|Hz6D1%=r4ubKouVvu4Ik01`fte-INT z3@xJrYN(F^pN+Go zH|S0((A>ZMgCL?6wh8C}iZ3D*f&oF462HQdq689+!yQn^ zKlR%kSluUQ^w-4p%0F8o)9te_ul)M4X3>qsOidiArvt{%buf9xS*jVP=06~?<*-5uPR=s$qoh2@ek$TH7*U zGOuq3W?@*CzE!FDuI#qqbzq7w)}=XZ2zFG;^N-jvsLT9WVc@B2Pwhp7rS|A37|O8* z&jO?Z$#II9JHBjY5ddHhHk>lY9`3(I6!>^Q3Js{RSJ{v50TS^ydsxo63=3?nqdb*; zehAm1-@u z{VxHI_SM~(bGIsWs4P7K7P+%~WArc5pHEBBso@K|lOc3&ThQO9X4@ktXT!cRpbqhH zPt;G{#aKVJNIfV_=tznfB$WX^?WprxUMgVYAH^5QZvH+;*kNvhvbf=$a@}-rf!>3C2x8g z`=%NaJH(6;#T+;)!Kp1fSyDXi`{OXYgyb7ce^v!MQZ7f)v4;V_lx=2vzHA-CLR<|~ zo<014zLeMa7dLU|@M%TMq#{@4l1#+)WAS`enaDP6; z8J<8M9rxQ^6G@B&k-;k^UsA+BxPjetcJI;S{U9;7qy|YXi96ziT-y9`*9rrFG8#c8 zr^?ToznU*M;iXQL@X?qLWdy z7Y>c+9{j1Jzy7l7_!44xCCg4>b^w|H6-y>Qyrr;ZKCaq+hM*Bml-=_uTh#M0OGEhl zPm)jvFI)DKs-7Zb9?!p~uu*z9CRCV&&kC z)wiV<=1Yak+KMBEkGpPhP^7(E3s7bKeilmQLQ7$<(xJ8ikt|8sjz6g))| zTEmlpX9TF$ES1mhim>lc2ppljZV1`9gt3*T{|+ywY70sw@dD3Y^GCcoA}gVzL2cVJ z$YwbK=r>>3T<{_(*30qNZdQ?Hx#f;E=V+zpU)3;m6gmS#|LTs0y*q6NBKm`{iNGQX z#yo=@Z~t!H$x$aPD`OO)Fg&#}&=Yrky~M$;J~DDD@fm<@l_u-8X7Dblp)t#yKQQr;6mC@)_=ank zSwh?pdLD=j!VVJ}(Z^RhxTZ*qYwQ9~t?bm#Yp8GSr86Rq)?uWwNCLB!cw1^C2W?## z($tuNo=oHXHlo+S(aT1IZD-c%Gg)PC2-iHk?baFxVrfFF$SDj8g%0<6q3CR3V_hCS@O~b9{w*C zrC|b@))qu__dS&UsbgxptL2o0dFnhv>hCuFRxP~hPn?`$)^si7F$ZDxPy8K=MD+)| z?A)03tDIR=>@1k-#UZ2iU;?!Wck}y885VbRg&TL_uG==6ol@OR;<~{vwU|C!pi_tm zAy?gN?k6z~>{S@>r9$VTHlq_#nT)9P0VN+WUF?s3tg`BI%v!JzvhiKUOIzLYl*#;E zp?&9qjKxtXqd3^N;G>)unDt~*B?0s+}v zbMkvMETZ^B%%?SI6{wcmKR7xc?|a0da$QRWef##bFh_|TV)0vxXm|l1LHx~xGy8BM zW~#tUy0PG?al^K)KPQ0F@baY8)ER>j!MUaZ1G2d*!B%EEdV#0m>dINz@W%;+Mo$A_R-xm};@Yg;LWiS)%R3D z4F7t0>^KU`(C^U`WSkt}`FiH3=&9=O-X0asxGn!ead87J7M3#8?KWRKWpofwCjmp= z*!ff%1YcQtu@7DmH>C$$nJrz=5f1J)#3h9%NaLU?9_GdYGW@~hB*YcKYhMdAfQ0!t zzwY3uo!{|BwKRNG>Z)A-UouMfPb-Esz^(SN_L0?ATXxO@EPZ{ZhNTNJX`a;$`HZig z4DYKxF4?SymV${vT`3wO(9N7x1#ge3@8BPQh#Vzq*!?dK}zQ6Z6dcg0JPV$q!UP;Wb z0DX@$0?BvAMj_6MrKyPNvxPFYRQx<>jEPv~WN^^G!DN4!H!qREvb!h4gf01g?c+G< zqs2=2mIKH+3`{m|!?3y}(g~4bSw(^8w;ZN6wd;mPp71uvct$VNR2z8r4R&~g@D^<0 zVXakrB-TLGeykh4RQu4!ZdQUF9v<=U;!qa1#YfB{+xK&fSxboo_%Wxv&?A6o3E*HF zVL`?)_CeWgi|ZVs7HRu1a6qnYd`Y!_HjHk>kp)|P4RJyue>K}KuDWu$d?ZW>v?l&1 zm;6l1W^{@o;qlH~>09j4YkCJ zKMWkR8dia*Zfws1&3$VvPAo*9jNg{!1R$DpP)gs1K4G0dr8M($rc}1jEVTE)s^?!@ z!1_SGuBFHxk&Bz2D36)C&JUk%y<^qiS~TM>U6DT)6dB|!GA-PIo$Lb;8m-WMg+6C4 ztp6n_q{-A=&QtQw_eC|>m`Y8>l|sX=HY~EnC$Vqjhb#+7h`d5s`-#C)O(H$oqs>{` z_er7K-=!y{+u-s7wc=d6+Y}k$y)J$z z&K*NrY>F;4{^R-=$|;=AZE5}FKbYZf#|(ArsCkOhVgB1BOdGEI)5liE(dbaDb3->V z=98N8hd0VB971}NZw<{Ujs7$V*(}F>Xe!w_jcu*YQ{LW)TPnBgwj!6(WbY6iTFKFd zDp$F^#Jga_ITYJZ2|KU!{{by?XwKJz{s~`eFi$c%SVee)7&YB{c8y=s z*xz@~GGd3WU*D3Qqn$XWx4RTjgqzM4`kZt`kwLrThP9j@h|b!<<&(jHEbR8f)>-0a6f+P|UtppTrEkPX zYjBm8ua_kk?zh$Xs&-)ZZE`p(dsg%w&+`!b{qDIvMx-Go=GY{>CGWEC^#qNuOF`w{ zPoy@3yRv(nc4G-7tE<^)s5!Kp@&u6sX0G@bW@i(6?{`UEP1vALi(TXZpRa2*qy%xe z{MFXE*DSz!wV zyzA;}*;Z)XtA8{$B{~+Zd(U8ZMKJ;kgheWk#ro|F(7l~M0kxc5V;xk%v0b7zB&IY6*hlCq_hIef%2e3W18f4Zpm{sMuFo>?+(!*`ikpq@>x3O ze&Un$7BO*@-T}!H_X?{4`l%ZCr5@U-1I?|pzgmFNyE~JGd(qs!YKN<2aid;{Y`Uw#g z4S4|#A>}NG39F7Xk&l@2Jc@1)*`Il`i__{gjuC?A%hX!A{FMdUFO&W%V%`9U9By=9 zYH<$L-qme&HLQBT_#E%Ua#NQW+0yg<#W95Tg6QFW$At~?FLr17 zaI_>++m##!sf@+)i;xPUJV8lo3F^s7MZWXm$a8v6P5*R*cfI4P+YON#JeE@yOTL(8 zQ}FWvT~+L!zr4tLwv*zSC>J925clZlOGm2R+t;TKtyk%ezNaDhm98_N{!Y%*^kE27 zd8)ao_Zi+m?7D zJ6AycW%b>NHJHf+QvIq}^eKWK<5m^&I2v%8N3xj;cX?^>$pqXEu0vkmX11E+Cov$E zUjPmLt6*|Tg5bm?_RQmNaR1o`n~}D)!IysiKmHwU1bip+xB03e zk-21B_uzpjkMJRO5}fup{5ge=gvnx=AIkN5*p9a9s!cElq51+n@n~lVin8SLApOS! z^}~UlOT`z=1nQsntA>QZU8B|eXt4CmS?IV#`d9pF%^=ugDl0c*X-WOC(~abnpQD3c z;JOX3aIZo4cc#+9EG(*I#+WUHA3hXHH z@I_32qA2*HpxYlfD~fAF-!VbX{IpIDTq}dJdxs)Ku4{lfC;JdIsxMjjrKV?n1|cYZ zeoY~59qjU9JBG<2v+9rR8MwX@AQIm2S>07I_7D|aJn&hAzQ$0T?iM{?E#-HK-Mrzs z7=z&7j2~SFyK@4RkiKuOo68_2Pv1;kI0oE4*U%Ep>~~JswA9cDC~YA{-_S(xn@P-l z#(WF7tbHXwE~!GV-HJH)>u2G+X2}NUTR3kSLLy13F<J(mY9PMp4WNN zDRvfn=H6$Tf8hTCWu)xKo3?~$ycvD&`qTRAic_}a z#wunA;5TH05b33(2S~7V)0xBBW2i7mM2vHq+=n-qe?-rJijQC9x-8?_82^Hgt}-v8 z!i2)!at>U>NA6WC+aX&5R3P{k6@-Fy8cNGsvP{BOx>C>4$Nf<0f-U2Jt#1 zW#J~Ms|e>_fptIYSzZMF$zuA<2VV8zN4y!?-zEW={<)-}t$EDf_lX#wO`0EG zQE?2}Ea3Voo@JZZ%}5jou4bU0*-V9zwhK81?7ZQJ26efkUkm zLP+p{0CKY8xN&?gkSAVmD{!ImG{rhX``U5%K!A44@7|Mw_PK@*kM0V{flYI^#WYuV`J#sUs=BS+9dAcoZ7OIN zja-pY{DK$wyJW4moj()#sK3)O<&I}pY8Q&(=S7UVq9MMuxj{?)wI83-8CwkJ`2{pTBzqJJ@F~L{=KwukcQ$8o?O%)W((JS1$$s ziPHiMa(C``6R(dY`49fh-A}Ik!CiOuJtIEJ;#JRe*^coKKI3F=_Ms65H@=OS{a}T z+DH$=!zz%RZHdiyO*y6RiqjmgygZ)v-*2S(VjqsOKWf7eXQaW9Zc%nuzV!u1yG0|! zei+nF4#IUD)?_K~cUbwZ&cd89;V>#u-263<_wc?(j$R*tS)X3sThnx_ZocLoA#$=S zLTohd^1fCq_5>8>DwDUl8iDYh>j0EMv)Hc09+=zDVqH$V1XH;AgC-*Lya)JAJ^}5$ z=AOwZh{Mu(^TC-~);H_#4pgOe_ZWQRcnFO?Ao8rw@qygOITO+S~^f|E|9I8u`QvN!?WU~V-*;fe(bR2=JE%!78( zVdOF-5_3SEEOR5YQJopO@L{jdDH1mLBBSCFiG}vVLP|A(Y~PlDRZ!a`JhZwmgqwQ+ za_;nI9{h)V$#-L&wKB#F!S?g5+Q%@ooWpb7?L2@b;s=F@yGRvOh2T2`2XS*Y>{!M@ zpTUg;{;N>s*OCGXyCqsW$1dv#(S7cvdh|@mlN*5UAXwC>cb=tNEW+E zIW4uap?AD6#5a*6?1o}pzPr9A?V@>39h}rXkB!{JY;bhl9yAacn`~o= zoopykCD=0bbv@&`U9JHw{Tg!pA?$TDK|q86UEQYwh#c!iUzAx+UynU>p@~jZS}wUJ zZXkb&CDvGIS{3BJzhrbL$McqNCYtjXRWusRel|cuP|cj;G&+inOlf^aY(^mKNTXTXyV0=7tmo6S z;B#bTa5$E6^1|!d{9hrxhm=6mlk@uRe z1VEt+(hfo4l%5O;!s|KFr)x#~p60gYo>cw*z|}A$KW4d@0J#WXp(bksP_1|PAhtAm z_~KOzEgjbVQf3QC)W&r|Nd2*fuu@}8+AuGQQx@ZA{NY_MCqmkEl@+lhE@&0HZ!Z@l z4Ox4AFROlX|EO*Ix!!VU4nhl)ot^T+LBVA;b>efO+DhZyA&J{LbUX&S_2xIAoFjcp ziX%8fYqQ9eWkg`PYx*3QjK{LSbjjjh%#BW-TVrpnunWjb4iWjMwr$=g4ZSI2aba$f zmHmi08+343^}0>ndJy6qsdAA7cww+hSM!bzm%2rg^-EoktVQxbgH?3XW11X+NZ)_y zCa+w6_$H2JB*cQp;QtRBTASvd_#bT8D`&#?=l#26&1bj>{vG1lLaE~}p*`Tao}h{9 zssF`=kOSXkynq66J~>`n)N_4cm!jSNE$*kpm#+TLUMd?_qR1*M~#Xt4oGovtcX z^>h{mwi3B}YCs-GcKH@3gs7$Ns`kT1Lxq zxm@sv7e{5?1FhBU7n`~t_HQpmG$wzc2XllSHs0Ghd3sHpHknLm8+{VoH&O|L7Zh{B-+y6_OCrr z{d)C(fQofML9!U;_SjM1k_o4N@~Fc=`}nMjHy(3X())n~ScLKZ9#lv2^J4}ysPRfjPT}dG0vpm(0eIW z@EYQPz96!rvPZHml(Yvsb))Px>7%mg@HopuF97xcX=v0%N2;x5(kCLkYrwg$+LBI#69xD-UbsYVi@PC9TXIRd zb4XLkcYV{|7!p2eqV+@)=#_>e4>!6jNe<}wUf`^HyZ`37M_}*y*?bmUB?@F`7s~2) zMQq0~>$Yp5B;?hM{XWKM=*eK z;V^9ewnp88UN4$??>mR_M@Y~gye--v#_Hi$FDLQ8?JB!q;M-N&5A`vat%4MlVHLV@ z>q~B2%RLJ&&LkX6VyW&`XJn=|hxfRO^w(cV&W!!lzXiVFh)A9(i4PXX6cUV;#l)Fo!HB`)|gA^}m{J|Ca2=mPz{1*a@cZh2+&LmFC<#YdTMv z7@nD*NM#`qW;q3OsAEi>-#$df^Zb-w?_+$!c0QJuGYf%TsQEze4aW9d!XCtd{1^BT z_shbMU~Fz$YaO|L?`ziO&5R-qHdIb`<>{wN0umMk2iclxzw51_pXV6r^zrUBdS#dF zhprUy`&k5i>#%PLZ`KH-9|ZF*tZlM-3v|Auh;$|i?LSVkxOhY8o#WuwK4tf%X`L7L zSR&so8{L$r6-monHwBoknBK$JF7luBKPnFeUgTtHoh;`6cxLY$clODyaqBUndybCn z2@i}29G|g_++#}XEc8-&8icOB6Y~+A%)hN>kybz%PWyJPjr6Y-pKPLxwu?Rol$Q{0 z_<8t zX)#%3cEPfxl4k%N|L0hWdC7@f!Z#O<;Y34`o8qpBgB=7OF(){8C6vq#_IG2~ilCTJ z*0YoTkkgm20>U z8$J7)Zd%Y(Nw@Q0@ENI9k`Oyty$m<*w=^x>`Xd*c2QG?JwB@+#wu6@`sY(4Zf`yNU zVdk?nd^%mjArJ@A5DwSexzV7-2o$V(`>Ti24cGnMp-Z4~-oD&qhW(D8Cu~F`Zx4e+ zSF&zSOyx!l>>E4STrY~oF$`lAST^foAp|I1JBzfcS2slu`Pb*`LUu>rAd4&1u#6zS zTV4$vpG6`fdE_%g zF;%fXj>Fr2$0q*dTTqR9T&;h?r=HN{Ub&t&@rgQ*!LlSJpTxD3wRi;$vN3{+E+}go zHRE>+e98^<+B_p_hxL;_@{LzM*0R*tURJHdmGsASRvR8K{}x7VO0_56aV|PHS7)3& zntFP^hN?$?daMajgoSlyKZD=Dmhsq)IT(rO$Qv{qjdmSTC z@_49TGf{9bO5>9CnCg@zF_Z)7VuvAhK82g=nhRH!;w6-?hR#E{UA_H646g@y0A6*8 z>wOXbTFMYcI#58v1P#3m5%*cSSSCD(Jy@_*!k4TxS@;YKU541Nr51m7X}$+am4$|@ z*1i>S^=TMY^T!6ncd0F(aYGB#JvjBBKKiG|$H#ahT!RkY5EgUjgq7aPt%HEw*X0?k zqqZM%s~heRb4(80a1D4$G~b7%#Quldu0T(7=5Q8n0-QwTz|AJ(&Z}Yz;;_bAW-V)n ziBQAMDDFIeha*2>5OxOF51ewIoGgL~qL8}T0~k_ZcN{N#rTwRo<8OmjnEE%(*^}Qt zGWxx}xAotY-u{=()vzs`7YD#xV&|s%X~<5wEO^AS-D(?e#B2YEXNdr{3`Cv-l>so{ zI%N{QXQya24B9=F@#034trb&V*Q)`ul&Ch9UWNlqz4c}UcEovY{I=nEj*v`i0OT^) zThOp3j^{*{z0Y8X#qAw2Q;!8(5}QC6wsYZHM_^FmI5oBpSS z>BS9@9j61HB%I#_ZL;!2Sx_^6;^H%Ee8THR2{Vujdn%Q1{RjgW)8C@6;q2b)dstl< zp88m|KH&uTdg)M2b6FBV%Y`7uT|X&>)B_CWC` zN{lNAm&m2J4S7PFVd(y>PkwJ2_L--C zzDMDZDi8Jndo+2WuD*NFhr)kK5!ty_EQvfU2!E8e#^NymF{=^H9+T7}SN2nrx9LlF z&@^_$|DsB+P1Ah$f2a~l76Plfm{f$l%+ROUbPDnaS=JF1214(9wZdi7A715zq{ju$ zyrdkwjuZ%#R!iVC{2%k;&V^{%*tH+k3Xpw~x`YTD_?J!w(l?^RO(d{Yjw@_zkVwg? ziywaiI%`1Dp9@5a#=_9UQ7>_x&tP0p_LuOTnKQ|y@ma* zp8SM`|7PwXZCwC!-NORf>)XncDlaXJl^?uu(P zRUqPG5I2Vdf9JOy>1V{k;;WwCRUrRy0_IB@wCbR~to5rfW7gMtDxg1i_jrFdy8kWg zK+Rp{U@M9tkIGN&m$Q{Q8>4qlN4vi_O01c=6vQqzUbFKsf=^W{^VY>wXp8Sq<+=*v z92iu*1fl(u__2OP>q2HM;oB#VD#k)g$0NnOM7{-$z_MyKsngd}Ji)aM#y9VDk+2r}6wx;(>qdeGQxg2a=B0Eej(TghiL+%&03Zbn$15jT z2#JfNeOk;L03?vbuDSA1gU?R@WCt$TO0YHs?UzeGj%QZYYy?V2Qji@u zb3&mlN2ZCrYG1F#@W+vcfZ)mJFE30HK-d4r)Ro6W75(iQGmL#~m3=IsBKuNVX6%%r zB#Mk8TgsN~Gh@jTQ7MWnp-6kf8h_H z^?!#Przp+#-SjN&(MlrGl^qlt`8OT7#*}RSp8QIco_g86Q8EZ=J==ko@t;kPd?$*(8Q65+*C5584ySoFC2j;|4%GMl6zy-NiD!xG`+r8PaT`^}CZ zn3@Ec_j$YPaxVh$-??`r5BF1k4`y5a>mcxS`6LCMr?q4pFJDX!)qaehOgAQ3i}XeV z!8(_U&pUraudg|-pU|8dz>A&=y|KRr?hX{KVz^mC^S2Y<8Qo0}CcWY;xN(PDIXZYh z0mEpe%&in@OM;=&2Z6l++4j>_PwLk7D*tMncokJ2QQqcvtV7AHAUg&h*LTUeKdqCO zmJ@PKvP#(6?pRo9NDGZ!^9xG2EEmESRpsk~`qx96wb1XFmauX?m3e&fJJ3S=4L^MC zLF!W&De2lw&RoOjqrZ!vrrv-psc$%VEV@=yzo96`>|;VWgP zV;`P9yEiFDIJawaW=e-kv+vOUos0fjN2vd0S^zQd(M6X?PuA;>Q&RnmU|n@NS`ZI# zV+oPxucqc`^ET_+YQ}jtgum^zAax{x@r%;mFJ8y4|LM{Z)$j4O{~RS233g#U(%F5# zrt%<4ERpnJC;Ubikc{j(j}wi$H+{%P%YX#?Io;WNM{~U!aEZj}@KM6OlMwJ*=K;_m zIs5Jr87e7{j$g=8L#y-M_~A1y7|6rrl6|juQc_%j?bb<~V-4>`X~%BYPcVg_g3hPb zMKma83D=9n<{ZKWA7alZv`wzg`_9xwc!Qb@U{{{36%>PWcAE)`d?tujcp_9IE&0W> zj|yE)a97eUP-ybJX8SE+l9NtxPL2p&H9s$ z5ed6&V6x`A-;H=?gjbt0Vwe|bH9B4_!Rx$(rd3LXpCF{S#T4|r69H=6#y3!|=ydlx zDJ_-&STR@)p@5}{H6Hu{)11~&`iF=oQ%1rJA$@Yt<57NBDjjXP!d^I>S!PLzXMDZ# ziHZme5b;Pa(TOGbNhWhLTt|&@r#uvN`S%JTcZH z(iQY~r9$iGN=#~s(Y?w59=5FKAX>PA-Y)4=(wqR($kyk~ON zyYoDfWtGZtvsO;Z*{B+{nOqq#7Ci0HPJhCL`)XPl64L0vw;=hw( zVxP+XA#dF00poY!-K#HmbacDQ0xX1ln1pf6d8Yw;e< zj2jpAP15oRAl<5ua~nY0zPv>vw@TKR5swDEH-|Ds!=y6xADSoTHJTFfWzzZ4kZYuqs@U(?mR)10Z>#mM)D?w&FNYh8v_{*S7TV z$Eh^l4Am-;;^SlAF)!jSxORYyeOK;+2_O}{q( zfYO~s*0dK&mCu|?o!u2}^wt9ID8E4&N%J<`#n6-?g|6PDHUM4b26G9XrQ%jpRW3mnSuA41HLqbO&8{FC}a2p ztO5cpH+1^ZG;)*Iaf-oU!#B@nbSJ;j37Yb*Rxfay!d`@jf>}oR{{??+NxEs_|A7?$ zKv)az`hNOoz=nIb#QN$9UWV%Zzmh_Df^k+UUxz|ie9;o^9iHJosb=kl^eja(NWpB% z3u`cz`cJAkWXFa(YafIZw>2F9iz#xhPps3WHAYfW_a%d=TunU{YU|P8bUk0Zp2m;w zE_^KiLtcY@Ds3-VT=6<3;p5(&-{yMmtFoX};QP}i7q5o0TDlxA$-H0h~4094@1JNhmOq~-D!rC((xAmiEeu>_3rUTYM1J6PrSaqJIfBJLj zh8+;~p=!hRoa!HWv7mETNWG}ZyFopKx-3Ym`@%Ck91ht&S2dh^U>qQJNyAR-s6nQ#=~6} zX)nq%ei*P`{utVST8#VRb^Q}LEUpgOCozd6lX}u2>i7y3wGx%)3Mb^=sbs>_tRaRQ zLYVtLjAf2n7l*q?AX=wx;z!y5;IhCmodC_|*em0dru)G=R0IE$d_$@RaB~~ME=F=* zsK#pm;AqWMRTp|1Yg}i91t#B9#$?+Or8G32(cPx*@KY*bZ4u;Rng?E9@4|v}oExf1gdJ@H7y_$Cw}Z`B zO|8~!?gul&t;NjJs$YbF&nY8pM%;`T;1mP?W{LfsX3zJ0*v zb^qRJt_1oFTrB0l`ZE96B5K49Y9;6H5zA2X(9d^91x0P*%a&3yYva$0i-L&Cq6%z3 zV}Y>nOt-UgaeFlLhzpGO0(3%_*yu}!A0vNG2$9kMdfuX^KEPDJw%$}UbgbK=mP=^s zqcdI|+<9)OJH(}ShL{IXF=`n;ygGmBnLsm%OT}ARqax6w zo$$i_`rnHtx?B1(=lGbP@NpphQ zE*<9FA_%#Qk%Gr(^47e!6-Af3b7TJ)UC>?F=z60I{aZDk*Tmar5IAcu5Ue)AVxxrMpqaBZMt=f6TMNOx zJpt;DsDDV)an<*kR=;B!R6_>3Y^S`C;D3xSQS@RIseB{)ayI0**XFhu=jg{A;jKZM z60_{>(>GnX*D*ra%|DZdUZ`(!!vE6fytBDt%;ku5>n}G`_J~TH4npDS} zIZOnO2wTDSEQrAa*sq+E*E&5hL>l5Cne*5){&T!PqeFOfDojjsgO}#UD!O-kr`8fl3l8lX0&gHfsOlB}^+_)T zmz2Br^LLN?68ff_pN7l7ZNk73La#RG5Mt>L?ti`)cT#Kf}7zmW-yYq~u0d zKcH?io~Y5NJgUxmK8HIqrQ|sOlWSSvRM;p3np{Q6K%>1z+%{u8Bd7jGr9y|56|m8B zVv)*Ojp=hs8P+Y4KO8FtTc3b;WB5d{Spe~*<@ewC%3+x$tWe=OSU>}Kkosa+^x7L) zI^f(jzA$HX3S+5DML_80d5EKlzXV8Dj1VxF2gLBmn#0xz^|i>gPtB+;3e@Qd_kfbZ zxbDuyO@+(e7>|3&Blg#teJtF0$n-2k-PqgoDlD*GcpMGDxzUidzFn_`Igv>@!a6mo z`npqW-_P(7pou5I7*AfqFN**TOe}W|XyWUO0!NS@K{jdqe9Sm?|4u7IH2p#r_Hidy ztp@oWD-*=M|3e~xK?vlX(!Bp{sNczScX*#(Os9yc(Ug0^2wye}6AWye1dV*;84}jE zit<$sgW$-gsBFUFl*BXQ-jLCRsB}6SjKhsVbJ1`NtLG{bxPW7u(f(1i2i9$juDO=4 z6oZvG0u;RH3VV@%H-3QRQn#Z+Rdi+Ww8OFBE|#1aQveI09AEDhH|wqpI{TyA8IMn% zPOP}40__@V_Wsil@p{j#2B0y?6ogN-*2DIGCT>)<6rm;^*5NM;?OM3;%6|tc;nki8 zW57D*fV!FJAi@{uj_sA{DMkUj6DlF!aF{SWb>j|*jf%NkS4{JLgRjsrTtvlU*t)Gc zH21H}S-h$k*Yvp@M*mC`gN;tT>!~j1i&%6!lB+mQUwie99Cly1l4`UBJZ8{sbm3K4+U;K(k3XrC zMY-MoIPF010kmANuh9G2`^LQcE2TbFaG4i-mKqOe_phLYU4t@tqj~CKou;%s?6q3J$-d&kC|RQ%A?!hWd}F{Rj@Ow5 zENk0UpJbU-zRU7cN0`FWwu&3=g)uijhUSZigz^4?Vb$?LV2O9s1XRV9FWTi(3YhbO zD<{)M9qHSD`&2&lG!k#y093sxYb_zYdYM<~Pj{i-=F^{x@3#bQoIB*kvKb=q)?gwf z6?|Oy$o3!aBGt@#Tiq*YP-D&EU9Ax6S`R33tZuRaHO zJ8`*FZ<{#xD2Pe4Nw0c+iTso0#KIfEtiv?4^3d||=y*<)@nRb?hVLkMrh9KheF%UA z>P2NppHb(u*QuR`)^yyce6%yR6$;pLPA>yKLgVWbU@jg5RrDLw`SFK5(N?u&554pG zf>ix(gGTJN*UQ}xiAzijLh)l^kIX1x3}QvM{|3w!2iynApoPXWd$F73MP+IpT_=XhUN^^t*z?K?F7%JT(fPKb^!+! zh-o#efIa@IiiY92F0Y7!uJcy0yoSlfi=wV~2J7jx|_4!=R!PXX-N zO<|2?_C+*ZEU+40~MVK)y{HQ z%|1FPze>R^#2y=l}~wygKlVS(p5_liCheDWAvpoJz~~?)GqlAh}H# z|I{AI(+yN@>4I*@9?px4`H(NzcoG}53t>yu%)c3G+;3u%B6}NskQHxF+_kBWeWlmO zAM?qK%O2uj+3{2VS-Ut4F^(w_3Q^H?3eE93n@8x8?Z*G>?&RI7C^T~$!_ZPQ96{d2 zWes*YytFhK_4z&|G`Cz_+}Ekt=>DBZKEh>ToE|6902(ei3IOjR65x7(9nzqEmeis#4b`fYFB;vhHuIjZ7P{PUnz zNxZ%W-KKH3kLL6}>rr1bht_-4)_&&HLc)c8{xb!k{=u26Y7D`{ABv9{`Cn6GwJ0J3 zr6gccWbURgWpu47kU{cE9ry{;;)8(fcwOU}J0zIUwlg)4+{&I`v!zWkTu?%TxA&~& zyD0i03#yt~y9y>#--Vy!a)d6M<`< zV3YvN6aaJ&Ny?%(??C20vYnz(PRhswyK!(4^7Q+<#=DPyl8fzJNW^mvmmO4YFV)rt zOjtMN_L-{!8(;NLvR2pYAYc>u_v*Ej4q27YqvNQH1qEUU$UR$mNA||_*%Qom9CH(| zRK;sfB`P+Y)OsYQ!Ji*fV77K*GHhPSrf8}f)I}zP_Z^e!L>fKrI+3U+TwZ#9`Fb<4 z^-}Ra3>w6Z*;?bz!Ed=AXE@8gcpaPQ1*3VNi@;s*{dpJyiI{Yg>(ufD?u9S~DTt(vs2|^%n@=~2!amWc-fjvV{|iK)<7v&JxH;XlqWZUB6ocCe zs4s3rnLeKuRFinxm8a-^IyU2OnU(|0Boq^%a@K}%30`j{@q%TM_v{p~WIoXre%kJd zw1yOFxp9IdeBs^tB)rH#xw*3J+4kw^*y}QhxO|AWd7-FR5I|jM*7E-JChyxdkDkXL z=ShOmAp0~D8z??FzG*CVIw!dMdjMnFw-}Zhbslj!hqB8Y9fS*GCE~T?CL%u^R!yc~ z%qwH~42&=bNSJkX7&(#^!F1tV&`+Ao-EU2eoqNEJzbCz_IPBgD37sMKt6L%DAJ9_V zk~aAf5denKz~lsl_ghfqj4HzcMKKMDz16Tf$_FM0f#&#@j{b62W;H?SCpE#ahAErUk8A3+NV1rUKhj2zu}R-ja+f46q&;V zVUD#&&0|FNHJQ(AnHYlDKgfLPOA~jdOtw19(gf>|=zyg`7YJfLM$Nddmz2)H_*rS2$gB1W6<)AX` z+0&;;*qs-6`sLaC6Q5|rfAKN9m;Heoal)J$=>W;z?hV`i%^3JB;Pk*r)5*;45T0k@ zP@KGv;L6$(tsdrA9gj36Q+SGny(r(Q{;fY)FZCNu3!5#jTNJhJ;9Ws$AFMwob1HE@ z%sKfM19dGPyK$rQcQ|Cv|B3&3QL+9_Ac+L!>dxsBY@HTUWx>;`U3K1;^5Bc1XV6tK z2PKY$Rp5@RxwS(#6J~oRuHU5bo3sEpjvMu1P>tM@I}*;Zvr*%UOksK{{^syBSQuo? z`|uvvfRaLevMyski*G{J6Z;sjp>mrK9=mCk2uEaj6CkG; zoVRUock9aDFoX1|E&0=JoNvnGDvvH+{P=)agQe)N93umOI(~;`#(Wy6OS*uClJFpx zAgbdq%JMebSAIESajQv&1Nr||`Lo{AO>6v5zzTo@q%2k8&`CLvLh!Fh2_&PkgG^Lr zLy2+tPg0X-G-yb8Ug4kosMaRPLk;;?q_i=^jmu~D`)6B@oV*Vvo>gF(Ks~F+`P`L>GD#>`e;Pt_>2R-NVhteUr5S*!0#w590@&Y z0|iBv+uZ}g<_j|YJ3`IoammV>byYJ=0M0w@=5 zPDTJnT;3g=!c)l%-#yi`81MhZTq1`_q@gDn4At>1Sp6{151d*oe8T`&@`jU&;$j$v{OU^}PfUfnQ-ou(W69rXm3)Cys zz&oFEK${4ruP*F=E&pVrxBhLEQx-Pke2=v=r#WH4)w~s3qRe|D0)1P)YXm;yUzf?uQ)D z6aWz&8kE<~zP1+Z2>@Vz-huscHxBp=h$3LEhGBFN!`-s4>l1W`{s`9a{p(v?A+AqfH(ZzX{bUKQd>o%7rv#hEA~H-9xo~%S_!KZg z=jx0vaS5lHX3j?bLP5GpoB^u0J7NK7gBx$~pKg9iGq&KI*>IZ8GGPJKutb>Po($Uq z09%a=i?JnqD>o|e7e+qnOW4@9OpLOi68C1A{%G41>9XwOOglCT6i;&}Dl#|yV`#^7 z!~{9t%X{&$NZv8j0$NwiHSWhDMf=0Dap<4;50~bbm&qrJOrrliI_j6HJN@GtEgpg- zwW&S-JqWDrDY^9N0sjLp?Ajb@L5Bdf-!2l{l%jqh7a-@ea zPpFN6l?eSWUDpFg?8P(Q##1S5`#N|B>;}JC_pTYOxz~J>{}LxLMy-@p3fBJEM^W2{`2<}T{v{sQ!rUpg>Kl7a$cfef!HsOdg2Bt z=~Ju4%vFAce9e~$yn9D~59%+BwwZ0^v+;ORcr{+g(6Pt!-aocli)*NbPAMRhXf% z19&}iZF!F>laM}KcL^}AHT*y1^}`E z0~8C=kKgO-lQ6V5L1WwS3%78qkkSht_d;S5($s@Qlo%_nVJDdQUZlYoA24hFvxZ6h zX+mHHBfx*~=!s|iUMyQz35Gd~dgQ0X_iAA^DTkOB1%-%X!X;ijH{yjMf@)oQSqy6N ziv}rAJuxUCsV9TmFU6C@pXyhDLFclZc#uyo^+)RcXlXW1!t*Zub(IQp(B>W@#)rU$3k z#Xfz#z+kqgoi?vzQbB-K$@$xpC*KF5m-i3QmZzNRoji9!&P253mb`Yi=@j&P+jg(3 z$^pFGnC2Pucl+e14^%ycjF(d@_PTY!xA(|?zY98#LUm%!oApPQMvu5Yw6J}$wtoS3 z=cPC!zE`H0;LOE!wbhKDg#dAZV>2ZM*3ENZKg-!@9^&Ap2&c|<87ydTj=gG21iBU> z1NIL+)6|Wp%b67KnhMC>hamHW1;E!llKPnge|7NikM5Mr#e^ zmb|LuU3r9WP&K4I62B29gE`q0gN{8i@nSOE+$DzKtRG&577ky{C%)+wpDOLS(ZF3n zr1v=qI+0yDiXWC6W#&sYUv7vnQu()z?3u2D-)ha1nW*2Hz@1)wBt)eK7~dWc_tGY= zaecP^OdXiLr+EE_FW3yEynu+uDzmD#BAcD-G}BHcAnHoJi;hM^jK35wtxBQ6MLKR` z>Ov9&)td@w9{U1RZhb+S?}4Xs^FsJSAKCpn;KzPOiBjp9wzrHQ&bMA8$-@0Wvisb+ z(%(S`s|6_JA{O!`$UrYB2_MZ>ZV@8AAaw&D8-8l|!wX09jh?=5xP!bAyZL1P8=n(}BecpSD-2(k?JYOY zUokp|^T^Gckuu<+n#PHC`}vt-U}^9ASR(=p(1?6Cv|YuN2q*N6a>+`#Yh22TyuB1cFm0F-dLNJl`EI5}`@ zFv?*Agtc!`-c|(TL40a4cUdV@H|{ctCoyMr333)2_bpp({@8Ql>83Kvf?{%R5-)4ptTYfh5zS|#HOa3Hc60axCn|@@l5@e)DEt!;!1e#ATA=-uy`>| zDQidS@|zxq_-p7$*&mm)S0VT>9ONH1%1u!!ocqzdoHh(@!OF-Ax<*3^Ne$ckOz=zm zxs7`6gd7ypg8ru&nr@HN2N1)6oa?r&8a{pDVfP_BUo-ZyDHBf7ttOgP50y4;GhyYP zAAMwfYwQwG4}5hG;pEB%71SuJUs7KtKdU<4**Q#qpzUCMv6}hTH6hS75;8Ly*cb}r zqtL!@6FeVZ9w0T)<=uV+-<&{R*o`0DeE%efYfz5EtR~?uxJES7;So~dPPV=l;b^zS z&m#=dRlr0!r$tMpzinC1i3i(%HR}E8NJ8w=j2gn5Eh8tKn z9F${?<9v~qLTMZfOTcG*=zinOo50J2=m7?xGiJCYx4ynIQtQd|iPv*l z3Sp23CbRur>y;EoAWIRWV$7j1292vn9V4KoOa$*HUo}6%YK^#wo18L11Hg4IiB|g@ zGPo&YwmXpq#!dXO29T&?yDf|&L3HB%X?GqlhJeepXTO~Tr@#wkV#%UicI9enMY$K< zItbo1`Q}HDBQ>a!<(-f&>1?&OG%${#|4w=UP(M|vGoEWsYwi}`aRKGj7GmwCZ|x8_ zo8o6a6!sE9&7gNyaZ=5m-~DzgBtt@?96SxslkY*s%-{mPO7!kgd35)t3PgI{Pi#-u zUhRxEm|#AraER1u$u?r=SeMAKbMhr;k=x?FKmt6|g|^o6S$1k~eeme^Ce9*rP5RTe zj|CM?UYHdy2%F)~cB!r30Z8=w6vWqAADx46l=f_p>7B-W*7NU^;W(&7_4_)y2p-%p zj08CmoF6_61XgGT1<~c-DEO&g_q~aaP9g8h8iT&xwa2-KMl)MaAGirGAzSi+7Q+FH z&VYsDsT7MqOVyA5M@O;_xoJoD(E0&Z zhPoZGivkj25+~#U3>aHa74U4Plgx8%nu4fCa@$_UJ!4y+H@sAwO6MhI&TR63s(h#O zx|%s&?ck=(sh=)S8z7GMh$Zo`!|lVv-=5|c7dcfweh&W;A{x$xwRELBNFnnc+y`u5 zjjvt2vfrVJK^ygP{OdfhVKaW``#rtKNa0|@Y>DJk;A0J6ke`U{{+~6G*UAF+m(Uzq zgblBRf{34m0<_n=*%n?LN@}@;@4-|-14L57AI#=N6HAYSlVaW=6rRM z`MNa5=}JroFvBX``PFYOYx%7b|A^B7@an0Pl|l2(BqozBltX4kIST9ad6 zo^80(AaaW1?mVl4Z;o_5%xh@Els_>KTDyB#rQNY4X94kYK5Qb6*ReC{&!!L3VZ`Y@ zfM01PAo0=ikXnkX_*4r2aZs(v_@mC-#gA^8cfis)5YNnxM6gycyy27|gwj7*wZ06~ z`H(|<)HLOtxzVzF0!WI~u|d^i6X3k-mfRW;C5?_uWUSk^Cqs8_M+eneM{txWyJa7z zdWkr}a%03%fjC6EPHz`$Y7{oa10unmKKwOUOFGvbQwtPuFr@>DPOAt_pqEBvFprd| z|G}+obg3#r?Aid=Jdo!h?Oc&Db}4%OkU`}kc}_|z9w9Oz3wvHBz(UcPo+!%VD>)Eh zyd~tu8wy*DyM6o;kr2duT*e$&_n10WlW?`1*%d6dAqYWooT7U#rg=Rmif0)k0 zvL41Sq4|T|Sni7cLau<3JP^rpUM3D*x^IM&l21_}$l>$%dx0rGOv%d3HSh`3OuoSA z{|&F1%ljO-y$)VuW66-l(RuG(on^=am&Tvp53?Iuuh^Vp(KKR)a75f5U?nhLO44M1 zncOf9%2;KXBROXNmHG>_I9g2TxLe_{GY0Z2Ats;Je?r?;zcya~DXhX|_a<~drPczP ztCNlRHsy<5=6sCgK_@fOee_9>Ii);r&buA=a(;F)8YC_-Df9Nnw;u2{Oj_y55!wk% zce}jKS35cQ0RGirsPSjehLxQ< zZGTATq5nV}twewIRfYd)ez*(g2`fANwu0r5&bx6Bpt1+Vc5Q(tv`z_LM+IXK`2(5Y z4uXV@9!aICax^$!nx9TwOc?^TVbzFj=(UaZc|4nIkH~C;2tdO_J;{z0!w1{t4R)~$Dp2L zGnUYxyl*xz{jCn;`Ec3bJ|9t>5n)VudQ!j9Xp9VSiCu@T2`=4`P&!(LBgiF3ysjBFF#?x*wWPbX%gp`SR21it+8WaSMwLK#IvEPP}kn`p?}F@HgiLET#weT{X4#ZH+o8Y%!^NbIQI@bg&aVxL+pL5N@=3 z593n81?sz;T%yD+F9KB##^jA3M4B-mTneboc~0VI#S*#C#lB-~l>3l3b(Ym66F3G& z`2me8-h1d@71{_(Y5y3!)P)r9TcrbgDO z`*1Y}FI3S#EOsELgZ{tyB~&xLyazwnv$oo*@vK?c-Cg|G((p5b-3rq{Kze0STs z^~lcIQ<_x#i5xk^Z8-okwebq6>$LZSi%@86+VD?d)Wqj$7I6NAk0k83#Gej zyN-IK@9f-5x$*bgc^v`X28EeXXpelyRjcT(ZBk#>H=eQMA1dqSSsh#<%YXVdacghT z$Io0$kSL@vNUxPaOVn+%2QID=mstY#J&wm#*%Iq0AEgyYu&t{yL`#4RvaexlGK^j4 zt#|+!Vyn0btOy>rfq757^o@B~C(*1V?FJaXBIq~2_awzfVnT5`+(Y&kxFS~M=;s8P z)GVVoRqqPa%Otj7MiXwOdSn7XSl_!_I%IT}gF{QN3HnY}q=#u; z!kQ_)174dL8bm=dcXRK=9);m|kZ-$D5$B9*)7QWAiW-zTMz!({rS!VlU5~ED`Kv_- zw~54hV19HqRXTsS2fL+|9=PcFvN!@+nYeGk#k?EA{?%1U`$F*2Y|zHZpnBHiYJwR0 zpYl{h>^xtwiY7Pq;p^+KOf6}*S=(~29{-!1u4$aqfe%yu>B1+pP+E(BivZ)!_(h!z zmYYW~|CjTI#o-C-;!7@gpc@YsP!t4#6%3uf!gj`4+S&{RxseD+ z(=Vgu=*+52!JLR3WJ#nU!>@AgZnGw~pcZ^ZU|x=X$tWcewgO1F;fFb$q?7(>cs@jt>Jp zog}}pp08{^Un0{jjhy_N)FOQQSG7SYqTY-;uS~}=hKfy6`6>sF7XM1cXx;)NOie`!`4bP^D;o`nj3}iKDE=eM37yRV?r+(PSv7`F;b$z{-4U!69My7Y;mz9FXUg~AuWQy22G0>U8!ry~mzi{Lsw5p&b*2Q()tIMV2qo{w2D$3&T)u)6hzn4-6W)j(8v8upDFS4L zALo^|ST~>CQMBUKplGU_ctm^#3_ePF%b{NOU;AyZf%OeW5@dt7V87l{kEXrq?)6{& zD?as*!z5<&9bL=r(S{G2F1gW`#OLo(av^C`lN7Op4&h?J`n#~L*b7}B}4G>npt3-k6Ki1+|^$Y`rBa@h6h8iwVL$FO`A9z< zO_C8%jUWp6qzLU8K*xt&mmQYd%8H679|X{rmUeU14Xiy>GY>&4xIxyW1tOQ*1ZX9ZbO`4;`N`nJ34rXeEXfOz*LJ8p+MWS|Kc%BZr~QFC2Ugi<%;RnA zqkPBV7s*2){^|JX`FW;iW|8T3oGiho3;(75y{xs6DNkNj3}rnQvE0F01H%9$BLCDm zH#1la&o|+FlaJ)fw~Csju5ujR?cr-l-TsByzYp~VW+?$%mKIlo-ls@=kIcUN7pq=n zDbc|Z>(I=GJ1h2=Q0|*{EVojN(?8ul?*3_ybZ7pdJ^%H+mqPNDU?>|NqE8DS*H*El z#_0Lp+Am|h)PC0p6bq~w8#_#Z_=6*|cnHcvQFaEGQU(O(Oy76=`BtpTpLMx(*duFj z|Ibd*j4{hE2E34T6br{qF}#fUX~2NB6UmE)h5@_mA+f+`o4e-L zAV+|O*g+#WOrsHw9QpwvRzJBA{!xYU;e=x|D{^=(0^2oU-fJ!B(#8?EuL1p~0-$*E zsO*-~hdD5@wVu3laa=^_ZB4(2*x%Uj8w&v&kKU9&`PY#8MqhUGITire?V!O2Fr$I2 zNi@)S4ElC)Xzu9zOc;KGdAtd7b#W%`Uc~Zma_fViU#Q%+4`D%;0FA1{1OaEQ;5Lh@soN*o21_7qxQl_%T^_?zgf-nio8N zXSIx)k*^dypF(Aw(_M!9i*IOs9|W2MLzq(?zoyDFp`XEG%TDCeTsavEan!#7hMjjj zDofe`QaW81z}s4iGIOU;3>JqDfg#+drbs~Y0GGTCe;6p^_7MwoP z%Uln*FcFDBlT8X;UH*ao+!{07VD#a6W>jeJLH!KJlul(q6>Bn77K;c*13-g|x>9K9 z5q>xKqUm)!IV%iUj>7}3-r>diu41CGl?3DB2s$zm>?-x_s&M)s13<8H_&??=^P+C5 z#J?!@9E5m1kB&bA4p<>4QVqG+e$#QHx^ZA>o=!6}#UAd%tn`mzuB& zBOpti#PKE7EJXX3VJ2OcF8aHGA#onEG`2tHg`XmPvQeam#h?P&AeD4u}WZ`^ADr%b}tBn-38X89~JMmLsSsNBs`5uauE>& zEkg&G0Nq)C0R5e6Png(F2MsqjhFH)f_sPE76w4s+tm%__cG~a`YO#siCes?o-+DqG6%NkX4se4m>Gp%JL)#+Vs{HtDF#=ltWNPhU z@6LN@0CSylW%LiU%I{hpEw^#jYehr#ZBn;iY{ zqti@F#QHu!gqb%oXW%{%B7HLLpmh8%;k@7+)sJ~lM3^5zEVx~9ur>(%2>Zpw{kv(j z3AH2S_!poSa-UAvM^2*}Vnn+SU3-%lOzqtRcr-@l2h<4YL4Ll~VJ2oX(s}&ED{G|f z>igfIoNR1lB~dN|s6JSS?dEH(Y~Br24OVhW*k0gr{F9 z7!cI=0HNrx3~P&VWTPk=MwQx^H;Y6rFdb1n15SxeO4n>0j^F`+*KK@j4~!y=aXLsw zIda6r!#51i9(DOvFmavpTpO}`-Y}E`((?Oq>o)$vCxb6_Q=qsQo|^56a~VKDK<1jx zrRVGxn~pSwW9GVhr64VF9XT*KA>ehd`DrbuZq7AD*)v`pNvHOcw|+uYqX)&Pth8wH zB7I%`netbx=It{g!8lF_*|WTNiggfSmL2dPx0Y@~n^|tfa%(S7OqTJyl1VaSCVZ3| zOww=&q5VybxUf30Av4*$oX=w}sXIX0n0`*%5= zA2)J`PA6PCFZn!Fs$Zwqxn4ACW|krapvh%GmR;> z^)n-FLs8SaUms6;=s$i`$A5D_!Nfg&Yo}-X#=r7V5TVjXBT-Wrt3uZEWOt@>{IK`? zGsAfi$?dA0+d^2>(^1piL@pJ_saBDS0^u1Vw7n_Vzq=g%2E&v-yt0A^TPN1?754;D zgo>IxZ;r-+$AO=i5B~jdPR9`IG3>+JBc^zb_;C7g=x#GFTh3zV6-d^0PSazA8G=?9 zzC1R%FiUi&;i~aoOoD1}89trAIJJ6m$y({FDs#oqBeB)XPS5x23$br}k4fU>HJk4&9WxjI8R#ZHi-Ep|I94yE^14H2 z>ZG$YkKHir!p6jAE%UP#b{0s}+k_*}bq-dBj>Qw7`0vSwud&Ss3Zb_cR)z#Yzq37s z%{3*{ooC^Z8)OBkfBPk5H)|e{S|h0j>a~67?IV0Fy65yqb1a)f?SJesGM;#hwtU(%5J>?Fk5u5W%7tb}OO|XDkk%Pt-rjGY= za1Z$imKJU85b$H}Li}-=Zykq&sz$8ULYW^@M|eF-<?5ZS7r%J&Joyc3dfP>nAjCZOTQ3EUL)N7iUT%V%KJhRa(RFeQKC5IZJl%}XlO zz|R3i-awAX>}Dry2uUPkAP;t7$hYN9(EZH(@XXmpBn=G5ux(&qP-3VU5#4)4atTc|o^n|s+BV)1`v zh0n=(=>9TAN;yk49j~pRR^GecJKfALyiA)q)I~ryMG)?L|66zjm@LWiC65Whj(iy#Y1-h9GI&?I zOF8AI$mg)Y2fz`(*FRggnS>VZoM41t^Y{$@Z4;iqtBboYe2LYf9D(<)h8Hg-TKr*h zoM{lGZ*Y2bWpp=Yo8HT}lfr`3p@5C(TK4x!%yt&`&PF`vTm?;U$4XMs@%lSMFk~oX z_9*Y|)^o*kHyn__lN-(EJtubh=olA6N1imuskNywu{g89_xkzpZ6cK3&d%7OyE#%U zj%Z!JHRd_DyUnc=bp~_)s=N~_JpZ%80okyP@6MPG?%EW;_t(@hQkoF^%YU;2ahu5C z){6Ut;d6VU7Ril~0+@3vfD^47r_7Awg7SAhsKm>!}NLO_mg@;-E?y5P z!ezqudw&pFsaa9RkT=cR47f~#SG5Zp1m0LaISfEg=W2HG01`Mz5R002;rx%jrbh37 zgNAA)Du#9<)V%#cKVfO=6z3hH-j_9-_2V14Ph0CXvNBAxj`E7?*=?IoSV-^nLIcHk z1^DssCk15SA$H=AL*jEt{c6ni!Mh5vbX+3t zmg!El0}gQqg{dzLMHBPSA9x}ys zGL;U-Nmn&QD#ZckSMAQNt0@E>!*h5A?yLds>RWii@0O~x_v93B4kD2F>Amk&JM>>n z#@*gqJMPe>Jx?^$&;U>2zVI`j${!bzm6-)Or!LDTj`l>V1U_-_yG=;i99)6!mW~tG z)vK7!A8^HJ3Myju_@&DO7$`=lf|#Vv+dY5yzFJEEo>&(lqaE~5ZJ6W^c51?^8fG{B z@S3nd&riZp6SXt`E0u*cH~&0+AxaT`xeifdVhLTn16yy?@CjJ>?jY@lkPDCbMQ0Vj z9FUJ&5c&?72ORCu1*DlD9ip%BOv%bX_>Y+h!Vk|`G0sul<`LY;|VLv3)Me=$PPBzT1(bF(#N0R_fF>knJ=;J4^F$~8k5|nRZC$0G9c4FKf zpZOQ*tJKdW2kz>B@weCx76_AM|5=nb8W`B?^}73m#Mb{Loj4`2_S)hZcfhG#AC2iu z`@LZ)EUpAw(iNkw`LWW&Jt?cgG0o3sS1C`Su4Q`?LHk{TZ1hVcn8|mJ6@BUY+z#0l zFTC@u#6;s<0UrHSGh`q7%2gJizQJyz5O|!Po_oytO8YC5#S~tg z!!s`$0ufE)-67J(qqE=QQ{!MnEJbC28+Dee^Xfm4EDS)Ta*IumD-_gRbIxs@C7 z*R~I0Il4;`-l+maNu@x{>#kAucgWR$t;z@w(g^p0lI9yJ!y6ZuLgEx_n)5gediGC{ zI7FJtV^-H>ITgjsAI3bj%!tHXk2Nh;X=c_XGMz3-2MuZonvsihU{~Z238R)}$13sA zbrBu|5G;l_z=gh>IvZ=<2&%UdA=INqT#>>N|Hk&3zh)oUZsx(OCQRxi{)kc7`SlD$*e_o%s(W3U_ww4}~Zl!1@B}C*kTe5wMlj#KfP~U5)P$EPb}b zZKtIN^%r0tI+2B04`O_?mv~+ra=9GmIMrQX|2qzwp00ozF?#2SR7T zK($e>RK<#tPvXubo_0Cths9dB=?3dseQ&a)&Uca52$}G}kO@wjjqpFdy8*ek(B&j z6KGGmWx>V&aZYaS^R+z}iE_R@(QxD#7$4`6i!O@XXy{8&Q!RU2Pg~A@_Jf2Y;H;6F zzj7nT!xi%5Gk$Y_IyA4%f6E<0qH*bJ;=E@8zlDdDsZWKo^->SywIuLpof)p(T_wHa zvJe^27C0@*qfR8^r~-Xklbi5_*i_gM%(}wxneDX&e!qkRiZb*84osEJe`T%=uEU2J zur6?B9!4VfgYDAwAD=z=7G5c!Rtm-WBoI(8@k5EWu&XNUsPt$NZ3ETVQ^Lls%^6@T z%h}aNy4CsWvR1u{^{Z=DDB(XE)wtW*aa>jQuQvaa+iIp6*zg*&UN^6d3UlBs;%teOHDQe2 z>1W0tEJ0;ek3G zX?9s6jh*!Sv3h>rnfvsbUdwFzUc(o0u*}8fRRC^3_vTIi)Nl9E2ERGdaZh7tjwy*} z-rO4;+xd`@F%nDE+LYGToXES6QTv*B&g`UVXT$1HE^O`FB`rutvGB{D)A@x-*pqLw zx+-QJnl+NQWlj!|ce@T_P7}e|2f>a7J_QPu%`Gouyo1y|{a8MOQg=gFM;ua-Lj)96PCPoYAe^TVz=RN0#q7aPY8L!LacYaJ7{huZ6k0=b(7HD|48)!i zUQLiWV1j>_?w*MNG`H{tW*MMUL~A*J$pSxt^aNeGE3i$M5TVOMYL_XRA%bxmOeg;( z(_5iliR)J{%$@WFo83>sQo-lIcbXC^vIyabdrwTQukk1b+ur`14o?PLD`NwLU{bJX z@z{rq3b5+A{~E6Gzx2c*)kc$VLV}{QO`SRI)W~uF7kE}BQbV)42viXEM|qG)SBwwD zgU7+Xrfouq7kRUfcmG}++3~uLtgHUXHX`rH_{1UyrZ%Ko&n$9J)d`TZpIrJdWPy~B zSfvlu4K0G6J9G ze_t}TOptvvoWh+-KjjQ*eT|If%qB=_b`H-wi7@p(_2Cpqa@lFU7?c+;%oi*8}*wQ$xYEZ7Vqg3lH)A$r^eSi6rU3VKbY;Bb6HdBkpD zgh{PViE8Nc>ltP<1|>q$v|@s6Z*;`wfBWT%>fJN%Lo|lM-z&E@a*n-raaa z*hW%%u`Pr+Whh)L&^OgvyRXKm!}`sUc=ni=`P2v5=Wr9KCGJ9+nmqdC1_p2K?<{$<5MQy7IO`x89t)iMiW3kv^b&+{YB~>rrH(41{0@e z`ba$LvW=92d6qe*ZGYhjEs&9}uTWd4ed{DrfK}r-g@MTW_E>P{c3=+b{^2B}R1M;k zcS{aDLk07i+roZ7>E->Kr6BZaT|hjGKJoC=C?*o#V59y{xk5pe`DwQ8o%QehC-ZsN{gqOxL}HM<#&ABOYxzbe30ksKX}f_B;s|W6+ky*y_|eZUoG+HS zHzH$Zu5VTNgy?0~yJ33L_9=Y4=xUuKBjGY~KkMs^Iq4;OKcV*}4F4s^xBc^#Pa>zi zv;1QqZ4sK&Q2#@SGV>3aaVOUV&)#>5b1(ok@3_`OXghFSI6@C5|ELy(1BUX!_>i<; zuXE#S)K>|eZHF2k$r^fi_HDPzdJ9Y2Tay|0Jfv>SW03Pd+nqD(3bA+|L3+O3B z1Y2@(&;?|?lF3&xK1rIB2?xBf-9_5?uZ54yX3nxB)cjUD!?ZCcKw!zw%bQ!Mw$z5fTXky~ zvpT7O*Yi#|hUGwyYy(P>60uFl3cu3`VRJGOM3l`R0ue8@35_fif%Wl6`n0H#8E7J# zLW9Tj=RH3*+l-wJ=8bR|4(9vmnftHM?~Oj2Qt#6hj>`J$+aB#x4%sJuWfLJZKp{2Z zdiDlMgFP>Bi`*R<_b47pnv$5yVha@#4C5H+|CnJ0{o?vB5l{|;I`24veoOw>HoPeW z!t{Ldbyn^0{eI-oOhdyH=(egMm>8M;r)IEccpjB3(03w6iy?F+f1>oIt5kaL_!CAR zPx%u7Je$!zUlu$1x?7aM#W$J0Lpx z1dMJWKJfe?O8@l!-*~2)kDxJxeHc!$ad-h@n1`J_A@KX-b$tB&6J2R*K+o@4!h-aM zJ*+cb{`}Qw{2-6L<(mPh9auJIY4vn@nRU|PjwI1`Rpn%u#<5$!F>`CMf{__RIrvHQ zR7^95_VC6c7gXFpKJLf8W)EZ*>=}^U##0=bzo5p`JoXaqZXrQmh7BX$@VPx+`$Zq5 zt_VM5d%&Y~+1tkRRqn+@f+)h9cZZGP}m-)y`Jfd(mCq5UjLz(x~&4N_hc4`MO z6v_SnYnAe*SQaGwvr3y`I!QN57MHDK3C+x7zlR?ZcO=zdI(rJ7Wj@TeP%Jb@BULM;C@!VDTbMy#4;lnex<0E`rLSdtV$JwkLcp7WCD@lJqWhmy)TFZlg+3waV}Y zV{dyW4f!#O7U<=cZC|8_^d&@%V*v9!Pg8u;zQ;qM6}vYpBA!RY?N%aiUgC$AN&w!E z3JovwyeNOq$H+Kl{rUA2*uuw$G7FP-2c(~nq3=FhgrCLG5PTQPSS%z@5-L2FL**~I zdv~lIbwZR9#Uw4nxV{T!XeF2x?t&i>!L<^wr2n4sgU?26J{DVIyn!S8dEn_ELyN$T z{bQw1iV!c@JF_HczS``K-;5QBf;2t@gsuisF|z7R4$&Km*yt_J-TX2~-H2~5`-K!4 z@cZm0df!!M;A=?b_UZ;Vk^j{$L>W^$&@`Z*I$L7!D4_^v;s(w>Pke0CKmtrm&hrUf zlYxiYBEwDaIh8nn6P{K`0>e#>7wu8ev{>O`*RMp@Z3x~j z=0MZ2MH<|&+Y!G)@jvak)&IW#d=qHL6WmVjNBsPkg5a+J?T`P9Q89fgc=4;pvteC6 zYcQ>Ife&Vyc4yMA*j+Rsh@Cl8MeVHe*6un|OPef&;j!P37xzt!rVrhkui1|QT+;SX zg}O_$$J+p-!giXgvvZAuZzNe5FQIybP`hbB8ZROZz9^>tAg##8)6D%~Znh_v;rr*$ zgn_vk4^xPC+Jfui;Xf~*bTf$en<`8-F1iL4?G9ZDe14#Pkmu9`WOyNgJdS}GRbxBJ zb{$PoUG_CE8f#myVmH*V6pEy+9WNX%Sn|}L5Qy4#Y&m=51Y_bm7FqvKy4B6S~X4|UM9TGBy zoe^rD$Mxj!uN=wsSaS(yseKYDVC@|&{=t}5IEQCG#Xs;6n(qw*%pl=_D>nF=wad{g zTV8t&*Vx9~25;fGkx%47lg>|Q(#?l2e}_p%yeXJ`hnZh^boiby#I)gYrV5p$T~uL3 z#8m6Sn`dX|{A|Iq9Qvnl!M~V<{rDF({_aOqwbUki&hRn`aj-faFlk+5 zOOiqXQ*PoSM)DnhU6+%h;f6D!fZ_M7Ty&bvgkwRA)6w>~p?!Qmb6&7RX?x0yeO;d! zKoZ6D!&=v=%u}Jnw-H0f=?5;}8sqRo@44rGJq_@9gyIi*22k-7i=q3WGajL#U#%Qe z>zNAI8nPS{O0-eC-rMg;P)b_xF_Q}e47nwhmX-2Ck|;d@xdyV!qi zNG}a2k%uF~lZlm-+QQVrBAVGow3!|;`J;1ye^`9yd!V2WRz)my^p@|*fW8h4!E}(MA7#SW^g@8rK!Z|4vZIxnChgw+6CD{NO@@}+0o4;lF@aq zY$ET(!PPSrfwN!UdOU^hn$S_HaL|MwFQG&S~98A74exirHursBnx$EFI(L8P6_6OqwcEt8|X z%w7{HnN<_qh}FK}r{47*o!*S){MOlc8~3lxO#4dCjAAe$yo(q$A|U1Dy8}unI^J*A z2C2gr|9jQ!X~+gIwo5{rXYL;PfG~>{F*E(_2odDIVgRaSG~OF5yvQhxEnl zpiK6;x`T2h>BWe80C+OCmPkk%H+R6nR&#`vL>tWV#chR5;;gWY?>cOq2zcvk!$Lia zyw9G5Z-Gt0oOwpP@_%f@D!H%QFu7)2+4>&WIDUa+^)i#|DNx@CX}fkn)LuLe2iCRl z5Oh{-;UOHO_hX_f&@`egLBaT)h11y6<$tkYs}Vtq8E=#S`hIj!5=7vkcjFPdr`1kG zD!40e2mCv^i|@RW8kfaS_Yi1eV}eQ#{`oz5HV0r!quV^xncYY_oHZcyHCj&J4Ljoj~b&UB*g-BC-dn9eg|jYfH|60t?i%P zR4vA@8-$S)U!@OAoy$+TKA>00XYMvuxfSH{osl=^^a01Iv$JCk{0e$;%-E<@jkim9 za1;k;`Ipe8PE#KX9V!@d5}XIB&qaJhWBX9$4>Br(WliSHl#Mu#bI1w>^FLKOuMTJS zTa}mXs!_LF^%Kjb@IK~`YOD4I2>vHMc*!Kk=-!DTSk$-QGpRd(CX9L=_rm{H5sPxO zEu}iv@ayf<_+KSd;SU*a8=f*bWN0WnGgub?tXWWvsoMuAck<-w?y?mubtEf6S_Z_T zr0n3Xl!}2m#f&fbTCP18kbe#(?m9I@KxXH$^mfR1Pp*!qQG~kAQaJt-@LBU#tb%%E}M zphD)a)x$cjJNzdn{!HuTuHIK+YAX=C(;=4Q*Jr+5KII)Ca#o@&0Dfqgj=9GHBNUhB zpQUIpZkr6a6spMRod%G*_9F*iBBLL<`LZLGDm0r%WeA;Dj(E1sKL_k>btErCua>!3J^I?&xH*imv2&sZ_vcH|k;u2%S;|c$3 zkn!kQ7CifBka@w-{6#ap!4Yf^(ZZHaxuCjGyv2vI>(4&>v%)P#i?9LTiLA=WPby4$ z6NL%$_oP$J+O!E2i4(_uf8v^>`v6}p_8mb7+aJel3KU0)jJ!Nptf-%(^t|07Px;hY z>y7k4(=;OeA^%;kQ7pBBWLI&vApl1hzkWV|sLkb$Be9c8so_^{msMgSZ1e^p_}HaZ zu#OdvUvRKWadLe0CEP?KEse&}-c@_w0IZSDjQvul;L zJrG$z=J-gC``>9ZQ>W$M(l0@?W-f&yu7-^@HvygIw{jmhR{8}RLXX9GO_>#$C2okS z5*{tvQehaWa;2mKY(4Kr@%KGVk+2(Fqt!#?n)VH zQ=S*aY9xel$JG~6;|w(H060&(-g)E@^?8Yc^=amWQOxRKPg|%$OCZRR=Hk%&hzVY5%x|g;g*oN%TKwA2#I^1kGu& zjZBGm|C8kN{+P2m@UCBmInQ;n5{iL|`_5s_sVl36B7_%1UCCB`BZEU!(TA%Sf%=z3v#}&4^nupjA`96iGB&M zdZ#tV+`Dq?_3PAgm|jBG3)1hIE&u=EA5OY;nr^@%>%V2hEp774EmyN~2K*JFD5jx7 zZ9eREq0m{j*5<9LLeEL41W4%@<2{4wyN=8D`xt^ z^1D#Y7%Q9__(P-3Y>o>I^pYW9kQA_N51b3kbP*P3-lqc+nuQu$Pyl5Gahfd)oDO*# z1ih7-MbJ*Jw4Uhwu?R!|t-Vz^`rYZ=hu6Ld&Qz~>pLR5yY2(hLal;SY9FlhFFv@jn zBm!NpD{!5EnW$ilvkUk(?oxj)G~?0bxJ)4)$O_qfka=EaF#%oFB1?{6!Qd2}%>yBp_Hk6z$ zieRD}CYF+l+_IoB_WnP~-mFS2+Y|6yV45b!L3wviH%@u&{saD6g>rhW4Cdx0Q0i{~ z@j@fjDDED*^ASl9bO^eq7POA}T~ZEno%rYp**i9Mw?tvm2RaDsg@Lxre$u@If!S7g~I3h^Lt_2iiFjzc#g>w!xSG1 z=e-!)owFBTzkJyg+u$)Q$IU}VfWip9ozi#r!BSC-cXboHOhI1HTEb@ZgA1s4G7d zGGV5nRZVdLA?sMiALP!j`Ml?;0MyO%tOC}8K+pfr$v9_O(E2~tgGADeMeE>qdtb2# zpUg}?R^xX%jv4J?K}>|LL8eJ1(+Ji;nwEZ|YAhqa?V`*jb*0)^9WP3-@GY(ee=FX zWfuM)K9nl3U_!;UobY(GG>Klim}ZbSS@MOwArI3rf42={1cwJp0M;SngC>mkvSW_l z$0H8M;1~aXdK^o(yilEi4)>9yPADlU==_iZZ^QUHumnT511?Bv4}5d#^^ecjxoQ}x zyIs5uA2bP?r-IY=tUZ@aKeoB`r^m^dw$e>C^L+5I_9-D=HXTXzKwRv*@BZYbG*;ijb6ogFK!$U7~$Y1#+tO)I7M(`5#(cM!+hKG-~(oVaO5Gb$q&)y zBZE?gSY|(TopHF( z$#DLL<=skl(Q#+fYh(`w{7E>o37VN~oqR3|R$U>?wx0)PSaEgVF#dgu^7j(cae>ZA z?w!g`!6i2A+bX1K*{Q-;zBIRKPwHtnTGDp3ZM7B?&jJVs z&qvpYC8A^J<{ChW8^82X2P3pJl4(^ozjHJFgo9S!s4yqe;Qg=lZjaW;XnZrrR|Bi2 znAghG61}${!WiWz)GA{xN3h~##dXRqU=w|jZWclo+KFW!aX9@pR_9hnOs^N>m!aaf z=V6NrDoDQN^?94|uzROjtYW~Oeqz&E7LfN}CBKMU7MGKu3$71KuVrVXyw8_Cad-_) zWh?1>#r-9%yr}gEAJd{dPf{;@@*>qgL!YgYa0W%b=tVj7+h|@D=f1%#I>FOo+)kWS zdcSDGs0`!vVi-ZI9@<3p4*W42hwX_|W#{5qm>Z_#=J+#BE##@T^T8-K5*irR≤M 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

D1hRNGU_wYz4Vyx%8geU1+h;l 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%0AKYxG) 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

    hzzY_mTEc^ip=Xjup8?>s1%kZ4JvX|N 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%0Dl zy$i>wXo?@)n-^W-K@SlI^!ADmp2YQZeYZv59N=;Fe$sr53#ky%br(l!HD5Q>o9qPf z8jr>#7!NuH57Tld>Uzfnn6FZvW4GETcUeX;mZRBo4AZbecAb}g*CU=@CLK=vVyLDRD4 zidK87JWaa=QsrDx4O? zFFg(C&LBi^e3R|_o!Gj+Jzt#$wAd+;wnYMACj=i_!#PBfM&pLm8Wvi=cs=DE&(pf} zU{Y@qZyDK;A@BYDHb{;T>HYH!-EyrRSic?s*bXlOH?=jnpLAVN%tR$L<(Ht7QWY)nPOH+l9yNMkn>6Y zcl5h-(iiZ*U3ekh0WUbp&*SeZ2W{j=uO$9S1xxDF9w+m zK-zDcPxyA|2KjWKTNiCBfZS?du(V>sGmB(KlQfy=Kj?EkuG@Zq;dv~WPZI-oM3mU? zs!nqa(5_I9>_q>)U8fp!Y|d>6y2$cle!2fV7b8Lq$uU)yzF4r+-QlLp9*myvMi>($ zkO~r&3m8ZYU;9cLS%&rnRbV`b{?s!h;AppYadbs*q^#X5^h570wZ}$qau6qU#kYP9l3Am6*USv-QCPkSElk=g46Cd1s^8<`w>OhG`l;nl7NVlat5TGm4zM`Cyvm)p52>4lG)#;W1vaF@sI-kurl-8J-_@IBE-hSCsd7hQt}cprK0Cpg@Y!vz0QaVCb$0BxuiAc-vT`mknjC zE1u8kQY{B#Wj19WnAIZcq+Ew&_OPrK$givL4~()yyC?*}mkc<_iBgT!a8^NuJq0V2G#eWiEmG@`Xp_M6Pvu z^W1-ZB|rv-!U?5XsGOfCb|&F1_s(A`Ce@2h40oUp(smQf>@t!em}Dz7KkUIC$C}cD zZPj?u|M6e()6VwqQ!Z;N1hM#WfQ(7~o=j z=;t^qzF6W!4uZ4}5$*k6AQ+3n=yChy+C?Yyn>7;7d&L(jM?M3SSRr)LJyL0H42qo< z#vfdy9q;K#fLT=^c-?nyyb)rrpWOIwKQjn>l*|vfITs?i5#~pC)f?zPduA!W1z#3c zXp4Z!FS*T$4Bc#=eGprjM&PWc0j4_u`;Tsrugc2@N@*=3=3`b5o@PDe=Qep6-HOAR zJk4n@>P}OLQKtS7Hf&VtbT3|b4`uGyn5Y`!{H1}yf9qxf0A~siec&lLV`v!wN!xn(JpF&__QZix`kn165JtZCb`Js9WJL%Y-Ca7ReU#!^JO}L|@ z!KE?U#>W-8tdj8kcB(JQ;K!h!JSoM)T9-eLOv=79(g&a6Jv((jUkp&9Dpb3-qg3VE0rskK;{(DP9c$iDDP-@hrDhE}$!cDr? zpKZfo4YPhH1hT5^8PP-p8B4HiV(UGgOFaa^-Lvoxw3ajb$)Z2PqcZL_ZsMJlG9&?f z9_&2)5#8WNl|#>IaC~`DNarIrMZ+41GoI5h2(rLQ{gyr1cu>g5YVS5cipVuRInrR9 z4UUKc&uEyv=Me4Z3tMacTyE%jG2bWz2h>@tsBaH~=8{7wbd?vJKL;J>nyVCJV z3-61SCa}Z!(U68hDx75`A#2LGPdP(V_s?-fUFFG}UD_Y7C4+`bh)8fzVh5uQUinLk zCg@bcWao8=+2BP!}b&Dvt-{Biwc&zwyBBdrhYnQXr%mueIa8T21c{DZsQ}{ikwB zkZ_Dd8O=gj@&L$vO68zfFky^}LJpPGf&k+q`M=4%AP{b(R%eb`J^*n%T83HswNxB; zQ9f`eQHGffQSeCtAHR%*9~|6|{WbH!YCD>DEssPqa11=1V15;rKzwl_oc-#`l66u>@>N2&wcGmvr|7i%T|*IE5?iM31-H zxyv6hR7!!(M5v|s|7#e)gwQRxixL*_1cVUrvI=PvuJru5P`l3e5Obr3ul)nm{9oDA zM{06i$Zvq^Ars5tGc_VW^QAjQ^Ez`H=If<}*YPBCPVDT@BRXF^BETez4I`*O%@1FF zzJZz;or@&GW4@WYxJbTpZNDQ!%RO;GCsmHeUfG5ERLU5jVFBP@QU3JB*X{FWM(&sI z&U`>)sC7tf#{VvOM^PwqAz)sSu#W7afA;P8M>6GjNr9MSkF>ZsdGvpbCpuTuRKNKS zEzb7~v_I0X&cw13>6(gm6y~T(3}`M~EC^(`fSFZouxcKsV}r1f*Sw0e%FDNvbpeY|3a?3fi+W(D(06P6&f^lJEz4T%YuumOeY)K2hy#56tKK%p zMcrMc`!7DR@D;^Yp8dz(@C%YG;jzQigU;^`hKJJzgDZ3G9f4dAVI+E zYrW5e)9tUv*i=bhSaiRA6GpIAXp1 zez`nbh(;B>qW&AlVzTCACPz0*SYlpa-${nq+V!3m2Nwq29QGs8`5fCn$30Q~uJ7V{ zTt)E3D=aue5*S8jtnH+rFTp8e!Khj44(a16C)7)YHqj&4Nt=eE#_sp=vkbtzQfPDfu5% zUj&9}99s!BJ9Kz{u>){$hXone63*vG1WMrP)pf%i;f0v1wwjun9liqnyXtX({`d7k zzO$3{wY%h2IkHx-@l-M!<-z#FTUQAD5>Ye*Y1c>YXx4GSZa+Ph{$Py-b$GsbPArFm zAbW8)&zTG9{fAYf7xQ}pyPEKeFaG+J?EL?f91KxOBt!hTyuF{ht^=;zT*fb$&;pab8;Akotti2VO-?%SE5fm@_4=Hrgvu(3#o zrGOx(hWg-cz_F#iRgq+xz2pt}im&0;;S^_k;lkWd)`8dci zq@ol0U+?j94iawNDSYB6RZpGCO5doFx zcmCL-OAm#;V2XAE+QN@4o+X)|J0EFoSo1B4w&EF<)MRXF#{k2D8_k-ND8HvSMTX_t zvd;*}@N^-r!S_vjC3hvU#8Xzr;&XFfM}oz}WMsRUM3KlAf4cTvW$LJXiQwin9SjX; zWo{depw&;~c)oy;xdUcm?g#R9GHOstdhDKqJs4C3SI3XhHDh?>z@{1{?{_5X&1fykK2@9f2u9Zsqd|f|E&N{YNIH%SxZ494K zVcVNlq>`^m3R_&cVK(zHJK+YvpK3^ZCe+5?pxt#lbLykRiwkh?-|BxRxY^6kNNm1* zImg=aaNq-*+8Bt1j3=mczag9l!`VM|x-r!&5N>I2=pA6xc|v7>lXG*5ccHysL=%zI zNbrpPca_C^;l&iE+OWSNuik35s|PO&_?;nYEe^)og-nS?Gx<1<@y9G>KT)M$@K-io z1}c!r$=OqIvNxHZ950Z+iBk28dg-1}CPP#av?qynGBpF5@8AOD9Wx0+;tFNgKE+q& zAmIB`*482}+$0a~$7eU)WBW$_bFu-Rpy+K(5UnRC>ysG&JlOk?jl}SpWIy0->n^7PG5M>0DUbV`Fvy3Gc^q^Z+`FNIBDTx04?b-) zX{V~b_@0(_w#>^@{mGUY#CA!Fa>vmFZ!ToGE^brSm!pv<3!del@$cqAB5I!VVR|jV zJ>*H5T+a@ID2I*cT$JeS#r_Xd`h)SrzR;MW(HqQb1q7i_Aqz`PC>grGdqsD(sQfV% zO=0gt!wOi9C~lHQ(mw;-LT^t5in>ov84+heqJM-rWCeC|^M{ZISVXyM9?zg7U+<9v zxKM=On6wy#P^&orZT|c>d$) zrtlv&=&?Fs8N+ndy)Q#rnYjZu=UIoxAFSsz_b)r+o+Ou}zH`W}#&k|Cz2*O8z{S!A zL2Kycr0Psc@{XRVZbroA%bD>wmPe0!*|X}By4lOQ?4w}h%Pv$3mZ~R3IwU`^cf&XN zK76HN@9YXlz|AxYB^&da%^OXkHOi8Vb-u@z^pJ}|w4@bxbTn~d&Den}cJ><=AN_x0 z!seG-AXskEH~7vxh)>u+0czjEL*_NVg{W)eNF#3#>s^7$`LyD%A}L~`Z|0L5om+pg zKD=-R1FPn)RR$j&C^(B9SxwRN#iJWrBW@KFm(q{A3!0T~3fu`46?^(GW&uXmX8HZ8 zv(2M@&mH+cd2j}(!MwDiu}<2H$5X|#w~XFtI!}T`3K)F+B)l+!MBautQ9xt|l=kzF0}io{2;MriMOJ)V(jW~dWg&&Z0p)Ri2_@rVWX z>9f;y_3*nkdo2OMb?h}RH1MwJ`|E0^mv3TBBD$1*zN4zAIN$e~9CEc9r`;=-zse)k0|0;d#zaa)wPcr!-!sv{nM_E7ae%=86>hNA537PYHH-xpyfuS zg8@S*{pG5QdmaLIwd=;tMb5KDEaN%L38Rg<`*@)Eb{5*?Jvh$MQ!S$CnkvXQyl zUmD|TU4X8JufhQR-3$al_N!gh*IN+i3i>fJo0zw<@1)Q%SADVnQKj>q(yb#^PFYyz zU)3b*WN0686f05k3-H0o3n;{+6p+M-!awa&elIdL1%b()P>(l7b z>3L)=ORhWCm1ollV?PvkGC*>nWnfC1jc5`Vcyv-(Q!Mc9%U`lLj5<;GP)dwzd6!Z% zBK=rmg}kzb?=TqwSRt>vIDIHIVU3q8d^@xlN@)n}f5s&slgkgY65zni1-H%;o#IO zoJhPd^(Q*eu&7M&z3C|t&YM5LL_r}q*!JdUKkfzuGI1PL-!?Q6)V|8TALY!HsV2Jm zfm$|sd}04m4((DCNu3=wNK55nD1yEt*|NIxq>}W?o?*&uaAG)oGc{DTkU;WM`J&<` z7g{an==@WfOqWzZ_Rf6+Z)xyMC%@>DZ>~;uqPDsm^R;iLtOMmnejtY@QIxtsj}#wn zhK%y(vh>uR?|A`&stJm1M*CEsR^~@CxDOa%LUt-8NNg74&ALA~upl!) z>l@5zDMV&VjqX%O-fU~gxH*7MJFh)*2D>ofO}(^Sq@zKnYHJ|o%6`gY6(VYjN>>g! zXh4rMVtol>RES^2YVk2jlfe*}jR;UGvh^qFWi`>_82akc*6s<*%QS)jMbT_VMlTlQ zZS+#$i}yB2@WY@ZKlfJco-8#3iL=_IktHrP%b!e&*z>T*j8K_gWT8G-WU zK9woJ$$MWy&?gxVfMks*Z2w|}>-Hu!#YIZ=<8I{Y<&e_+*Q>FreiWR^ao;sMerTnM zz_^>r+=nGM-Xl9$A849%BIqG1xhp#>u7B(bGOwmb^F6~yQA5jtLXUy>@4!^}1!c5` z|08HeY#SvyWoEgw`w#o#jTS&kMZs&B`(NHDP_Ti-Oy|YMQ1T94(t%6&8~c49Q_Hiz zp=ow%+E)p1`8ot$4P@@yAbUP|%cTASs~}TFcd{MMvyw!!R$tqvyK>vJ4xtnn?aT@ZF6@@zMPfbuh?^y&- zh`hll%@$EqePQZbbg7835eRM-snPZp*Ny;*8_RP_LQWggbiHtT@LAS6xG);ZE6LCb zdlP33+tmSO^}N_wOm$A`=sT^2ThYqrhrN>(ku+uh-eHe~_PL)_Z!NT`PL|rvV1yxp zPOD&~R@7#m${QTd-Tjo^42SWn1T+*7^T=kMhMnDesyXt;k6DNM#yjMD!+#PZ7Qu6y z-^&EYgJh~%rin;Wry^Ho^AL8L*Nmqf)0~#pLoQ#NeCZu?xW6G4$&}>&o*wep16^a5 z^l?A(lJ%b7T)$#@vo5IRKZZF zTM&a1mQ8*Q1IS_+tEQ8Bkj$;;DEgV&pu*qa{4@1=z<#fhZ@4xdyug?+-(>vycZIhe z+d`%nJATt9>8Uh`Zhs-X{oC|wf$RVuyw(eXL^-|z{q;fPd|_`5*8aZMV&0P|6QQ5i zv_g(UI_*dA>40R{$!riuvoZELo!f1oReMf_ch(@UV3ZTa>-P64OI&8>I9_*(ICQJw_GBJ$b zms>exHkb7*m1i!BUmIaJoLb_}rANt20yTY@_6(Qeoguwy&6ON`w-^a4dz(~y(wb<8tWL4ug8UE*Tr-&ALcXHhoc=RZUZsPW8tak8 zSN(<4n>na#+OEG1a-pOx8hFGSg&-MbrDZAz_9E-huEWUZ^H{gXHkO&DIG=?m#s%pP zJ&ry&Hla^M>5;%L-)|c*n>O>HZ9SbH=$XLNj(mGNRaJYsI_>Kh3~pyLrRiVuI{_E( zqCr3~m@Mg*);wkq#bmZ_mAG;TOZ)`0w_0bT2t6PGmkMy@Z$2nLSdFUmbW|1*F=P~J zuj&4fg`AsFjCu50s||1q$;j8vh>BW8@t7*H$A??}ly%CD1<#@2<>#`{Zrq zAR39D2OK8m#|@=H)7yZSed=4OzXCEBMKGWDu*1Hmnxly(*S*xyZP+wyW5e%8#_Id` z8&*>wRrB3H{M)t4+Bp)(q%TTserRMV#cGB#OIE?|QtA{QF4oJpNg)Tp@ZD zuO^O{^O!vWRLEl+N@IsWS4Ke)&v40k=*M?3ragART#C-fILGDrm>#pWtQrTeJ+Q%Z z7~i`?pO7N8y2zq41ka3ePg!W3U2-pvhEV6M&e=wvFdMWYC?T(WAw6f^jgWwSSWIy=D6{ZQKw*yZFidXJ{3 z3QYeuV57*}RCD_ULk%f)?VCk1oB2G}#syVzNAR#3jYJ7*3$FFA!IzyeEH__a4zfS4 zb)2U|dj?WU3=9%d{vZDk2o2)j?|wd;On>@c?!R$iow>4yWo@wXPaLloIjr-Wuu&1DCX=->ZwNr5ESb zn+`q2T(ca;*(35ZZ>ELrKHV!ea%A>E zQ9QICd3}-9ax<^jNj3W9r;S_*Oq9Udv={PxUWHD0!s%BON5P$MU=;Ch{kPYWTh9*= zXN~BSFZKla)-mk+D`~1H%)(#4%_V*47qouwB^;*1b2}Ud7 z=O)M3h6~H-tN7E_x)75k+EZ_a1dne`8!gT?ww^H%mz#3){U^V{!Lr)>vIVSj)WHjt zL%%Uk42A1x(q^DrTwvPSa!4+%c5Z3oYh?0rR-bprj2c`im&h@N+c=ZJN}7j{NN#ao z-n51$k6@Bvzx1qTLv@78B@|_j4LyA-;HW)Z7MClIBsNhdwd`-6hSS<04Xsb~>LSuy z0;W~jj{t|(V%SKYXQrvxL0XHPywvS)=1#wlfAp?RUg;ozu%&&v!AGkLL)2BGi z7e*tA#~TmarsWx}glxuoPf=Ns9i^GS3wHOvXHb>f<)R0f#Rs;{q!Dt9+J%#8BX-h9 zikd|&OJYBDR*3o}#<8Z?$5gQw9(W~cp^`BsU#PH1x z{=vv=?&ZvNRFEc-;->-OSQv{5jQs``46hwikjBp-veD4V_=KwSc!B+G7n-!T+CO~& z(`;>IcoBdoq)Y!+W~0Xb<&kJIblN{eNo$=)=k%dJhCmuv&&&SqoO@s|KV2!z0}ayq z-J>j=hsXe~p{8}X^(37TL+cJ+nZw9~7k2fse;m*+2+v{Byh;C!U=#@8EL3u-Gb zkJPdQ8A{E0Afx=zpfR;KvGS$%{5uM&fyyBX*J+y~D*|Ez!}91cztUs4_WwKs1BF|x zbh7&*x-IrvDpA{u@SDaxmX-W#1oeWO6%rr)tr9U5v@aZ#0(P3DSMfo~cB*G_LcAms z!Ry4IZs2~6k+L=kTk#+g?AgGt_jS{pPp#h9V7*H=kGTIYuEmZdXcNs6ZQjm-geKB? z`07~hCud@fM5WCMe1K`~zh`{MX;kAM%edoM_lEshcG9gTiX*`#SHx)?8G~_*+8$|j z5+yy6-*$F}5)HcuxFBam(O~+XO9ms+#kveHxVqQ?Dvl8vS1)(rY8{U8~yu^}98ydEBcclgu>0K%wTECb`xEEAp-9njtZD)?| ztF#o;J{}1A5Z}x6#$3~%AvKFD#<_S9twyMLX7oRH=Q^!NSLJmfQs!5m3+ zZGk8eA`YK^S93|ha-0ymcZ4Lg$5m>rcr>57W*M%_LO9PbNHlan#yO{8>-FP{3LLtU z<+R4mwMC&Ub0hN_4Y5qtMNVU6q?6J72mJLI(U2`hL_x*=K~Ob67im9wz2yu|@PsjT zEkXUmu%5E?9}WH@YJKP#?Qf?uaT9D}&BD^hiM>_a`F8`|a18{gfvPfFBVcD35U+C8 z$j|^L@cQ{TsGi~9yi^WUCh+{iCTjV|asg6vuZ&2~cezd9f5L@F5DH^zCS3Yrh?=)| zV7dAP^h9eV7%NwAgbtr6V9@42{r(ng|oU%EgXF)aiQWS7Y>v;!)*~& zs%$VvMf%rp9vz{<;5()mnmh>3RYOko-W>!P#tj{~gyZ*AwBbJ&qO8@KE^{d@K96lv zU3=h06YK@I8xI%nzM2w;Ml33sYv<;;DC=$(lb+;&Dp9z9t6$Ar{ax%e-0+pt!>G~U z*!!jmCn|W1RWvW7D~fFSH`=HTg)588gQhyLK!W77PVQZ>H!4P)-9Cr~KjOQ;*w=t73b1cd%Xh=Ko>-_QIT>M~a#I|%+ z{x=hoDZk$_4+gUs;1~CRkk%K!Edv_0kPhVcFo_i1&09HlNky3rVoB=?`qwXeC2?ti z@Q|Um`|M`OZ5dCSZ)Jm-8CfTsp5xjC0!SV0t(n2IJ@5mfX{%s$r*`-B9(DOl&XtQ> zT{rHxJqV_o+(KNje$;fW;M3vLo_O=kjT>2`YBZ>T?lJUo{)=f$!Y-l9eF|qY!fSGH(g?6+rE%}k0v5T$Nd@|EIudNp`c1qm z0e36k1h=bX&QdT_v@56fXb->1>s<7bP7H{d`JRr88#(&Vh5&t6kmR#k@1$=Q2@m9alIwwxmE&~0gwG#Y4-1ywMe@9C>neL)9?(o?0d zbVN29#4}$m3o@^axE#z2gYat-JnGwgFcmB}vYCmbwKM$Ryf`Id>X@k-Iiv~KHv;m@ zqkB|52!L3{caOT_G2O2qPGGy(=<_3xVzxYBx&fZ_0cqDq(TP1~|D%=*q2d%|JI~%TzQ+(q!x+{?8XZ&b32`vmOOTsE+TjaJM`qSrb#+J$dCdZ*op!_rLG8}wR5O1 zt6P_|&Kho8v^uB>3SD^o8(6=4Q!RFYd5D}GQXIss0Q*;P9G^H$Bujf`iNSj|iOY$@ z?bppcjcseHwoh!5A|S+eM~bs(>WasVTLy89r;p8SA#UL0HQ78&8w8Ixev$O;_!E|f zjK~E5$^S)v&hcv){fYJVAEKecx5)E?Ui@1G$kO75R&-48G(9;Lp>GF@b z^*a)kBFjmPH7+cDE&jR_hcjbafiwOrzq=wz^E4TrdPKIv;oHTt`<^Aa#x)QoSDAJ! zP=b+91QGH~o|f=I^I7hJ$i;KohhI|9zmvxvzhhlkwnk(Un5W`OUaH4qt{Yz_ULZX(Kw_sV8S#xXkd$q z`|D81ZS&B5<)pN+BL7s$s+4B0^*ZhoKX;Q#-6MLL8OPA0sM$rTAr>}iY7|HR!}bZe zY=oHGa$d)qem@wycREe%*9IvhRjv1=hx6Yn+o7!``zfXClCXQ&zHk)cLiFcosR%*R za^~?{falV3@(vB3;414Pvp~A;#=f5&hg&OiCfyrM4xBd)zc!O$jyf%e8`d&pJS#It z9SQ9>i!G~1^6&= z-czB9@yGll;9*@Rv#|4EqNbSi=`t5fnA=I-FzoK_@FybRcJ-elQ6q%n1W59-kZ z8$`sXVODiT>GHsTFKADiTz5XB>hU-&{w&qY zL{1o|<-)b`PhtjW=mKg4ybO>Qz?Q%LWX&qoU6AHq(Q^xno#Ahn+|ghfc97%4!iSb# zrdhw;qcaATYTB$;2(|$U)y`z4<9=YIcMP$Ff!%{eIth4sZTKCliTm^^1=J?CCKiC% za z7QSXChkok}^iq zT3=WCAB<5aelC{F#8fc*g%}^C_6)eDdlr0sB8iSsaNd+$Y(8lsbv!;YSS-{m-Bz_` z+vz9l`}!$zoFuJ?S>Htsjn`5K`9=ujR6ys5z28~Zijey{k zKu+RH$Xq1tEq*y=m!w@>G0A7J%*7Vt5(4P`V-iEEREA64z}$(2Pd!)!fq zPDDRj9E3Vgj5Br+vt{X%CGw8q&d-{X|Gp`&X)c%sdjdwPlm{WVc>^Y+pKu50r=0tPL!v}V`-@sF* zHmA@RHhvw7pE%92LH)w}K<_#cR%cnKkt?e9hwuJQE13LA!`0i+aPOs4isE|9Fv6K4 zi!&0-Xj~g;Qr(~8Y_8omNTx4G7gB<7 zkr$Vs^_zf)1Vq*r!$|Xbk!;NS`_y+8{)w3h+S*T3qz;$8pHmIDYFWj6ifJ~WIQ5J7 zOs1AH#jev<2-{g0-}D02EIWJjYvZs}3ZA0+%36Q#KYSftW~&r^YfqdX$^CpGYPx@y zcM^;{uRqW_FP-IMXY036cI1bFmf@zOg`cu^ZD0!#sZ}AJ%V!itxth*Ro`D~C`M%Po z;yk7LFA{*3*M{ZAp1P?P2zpu*jWLCdZdK)0p@&(edxsZ;ao7qW%;vv93sP}*xQe*( zd!(pOU!9DjF)oMVpN7U^P_*-_)A*EaHz0ud zW!5pTh9I~bbI#qU|Mm-NB*V|}#v+a*`C9~8A6aC>hh4L(JCf3aCy>@ZXnp7c_dh%lWZ_FW zBpnzh|4}*~;V0(N9yfsj7x)(z$p(_WUGbRNt&;p7uL=JmmN&`Fk8KYq^HJ|LmdHUQ zaqwl?kA}hO7!OukqH6>(SoD3^r#%DgpXGIFtz#+pF%=w0l&1Hb*}}pu)_v#`nTlIg}jQHz$b@+>y(13Pgg}?^nG+KfnxXZl90n) z3L&yUMPBWV`00z6#s5?S7pj0=*~)nh?e{neKpy@YeYg^QM`Iw>UO~$LT6#A~;pKR0 zfVapIx@;KeuBQyrWNw)067h5{k-AT}yB!~46=Qr!RUZ}{pFeSdth51t@n_b$-Q#PIrAs}Z%K{&n94BG_h!j~~%K6G#5I3tlk;`ze6 zW;*kuhz7nJx(>S$=Ua5gBs!E%nJU6Raf$r7JzV6_;Cxe4k)bxvcB-nBJ7v>_E^L(oq+qbJJAb`Ay${hfpvVw@e8{TjWHtTRH9i~Qe9;Ihtl#X@pJxit*Aq%U zosUA!duUOannz>gUgOwMs8L^l?R#Bmey-Tu5_8eP1V@_J)zGG#)*_rz(t`-=huu{V zBso+?eQe00x3rVDV2I;fShpH5$JzM|=j7?=7lvgRD%P=RRuK8frnFo7)a#C?(3=N0 z5U=Khtz=M#R~g*X!PiXZ@s~wkCKu!H8L<*Q8A>NBcLB^={lF_G*x@n=`0f~5s7T+# zyoER~j8E;~7N_ryNUjyr1C+8U7L2e6XQT@+Z##CAM>Z6|nCHFt`E(B$K5aSA)T_{j zSXvwfZjWJok1WuB@@RT#d;z2A4-?xNu;*4UWzRGn_K|n>X(%w--4<_TubVRtDt9 zl)AgqYl@&zh60M69KRcJUT(;f!nNEE!G9qf+~|aR^7};z>bQr$K9bzdH_NnqZojLbYt;tsL4jV3kjr~bG{7C8!8|N{-R}p7;aR2NC ze}~%H3g$hY@y+h@%!BL~h@~hK3>989|6uZOR}I1-VpPb6j(W~{oxFZoUZ_iogAW?2om;Rq91xx-``S&Zdb zdjxJQjT$ze1rnD#bOfLXUh)>x`=19&07EVaarRr~({%wx+`pZt!{&G9(1ahkj)TPJ zUZ&>=p z)4Y2X9BNjU0ax(aDH4ir21OJ;4kf*1j+9XH*yOP|b1Q6rf{F7|Yb@O4z*X}z zMHoCt!`^w@NJ!SH>rz+AYQNj!FR~os(Ny)Z`%;nw9;92{V=uiii+o|EMhokylucMNev5{ zAU+6H(5y6x1ow}80HQSP&z&O^vmHNLOUk!rcLl& z>k%XHzH7uVf3?~y$96dc?VOdGUW?8tPJ-;YVThnfI<+o=oiI9YIF1TIZ#_qo2Ejpi zuEr3E5F=zi09#AN-AaXTG33|ksXh-h%+WJFPQ&T2s0!+{xJfFkEJ14E;>{PC-)i|Z zA{c`M4X>p%w~FoJDCY$BO~s#FFFgg`Qb9vgfX#$2EM?|70KRO}8-s-9y3A6=H)n!6 znE4+kPK`5H1}1C5K?%*Iu>tcGkvMho4*~zfIYo4bPVZkBe8n!b_^s<7>b z{DUru0nm>m`Auw&==80Oc6ucdyjp0c!uurDcLfAD?MmFiLf$HWYu;K58ypeUP&o&F z$AMH?ZW@Qg(=dt!nFEOU`g}iGZxI7qdznuu!3BG$B=%eViJX=X7x3K}Hc-YaRE5&T?0oYbD=}A*nJ%RA`65Cd* zq;K_WMxt(>Y?anlPlLU!?p%yI{==k1i~r>4{ML-7f(xZgXV@rfi+ALsum5Jix&KB; zGLIjznRI2g-}J^e!#B#>4fzu8{(?&;rmnf$RT-C$_$c>6u`}Myhy_CB9iJi z<>&_<`bVDtjC?QI-dsnR4Ljcywm3~nReRyBz!CrMe-1qpr!2AL>B}`#&Zh3C@DXix z8-}*zqgd&M9GL~_m$9fU=W8-qXbI`6eQt|Kn=EICy+JC+v4>eiGOKhIbTlbRwmy&J zHpkHs@k26I+D?5O{F{{deUBwb{mJrDG1FavvEu?Q#{!amsBmYEY{HBJVeh@XPzCRg zFwsLWzq zb^Ds+oQd1R08s$gu8b4I8FY0k^?fsbK7$#@-qKMnJ1LwdJmZKbWSXAjLmUL~8GxPd*y(`184kbK2dk`Kyk+i(>G1N3jF&oB2$S(LjVaFpg1spR8%ZI(*~1YL*QHtBUgLfqmms zI9$Jm@=xHX-P-<#;*#)yHoh=`!ccDR#{lToifAz$ejcPtOTHc#gRk&8KjwQGYN(f!%GmyTDYH-4B zlN;@%*saU4-4_7?_m4*Fq$x_hHtS**5_a#VpC9S+CZPQLlYGe`0pE{zFm88m;soFb znay#YrI$9rax6G-6@BQ@nissK#w8aD(z=Y2_U97Sm>P<3D3;h{q4gvcqd51CUW-um z<{MtE#}=9B>A|%qzy{{tj7?LCym7qN9SA5s=QM* z^C?DpU-se0+s`KU!!{27$uw9unQF|HVd7CNg*2yGBva7MI7mA+?;ViELq9uy~Q%O%0`>Mh(H?+Q+9V2O7ryqM=oGkfxss*%ZeNy}J$B3%gbou%i4BS4(q=&2aU1v4o zn-Dd7BjC;aKFA0-w^<3y?{>7^to7-E^9_i+c; zofXaM%is_FTj#2N^n45=S@N&mm`N{mp%ZUg?%yt6-gugX5Y|3~K?&36G@-=fQ3vEpogpH@UM9^K-@d3xJ{ z$#b(-(bbAL`n6g6)#!@X*bkz_*>hoA&t4rg(Bd{j(Ppem8lw*gxWl90Z|=tJSnPV3 z%RME5zXM&Ev%8B(zZ-LaIK7X3VQwj2>uV#WnkOH1K3v~OUpw?Yc=)XVIk`&>yt>vG z8N9)^V9BJer1j-tz{{tBR*@lfZlDEhUI`;642#)~jL3li+Ng|)D;DSG*p9Zg)^!Ay_( zm<(~NC+a;YNF4OCMdfFdaEpSwRkn-1SI#{d`}bB>P4a9SW=a??rK5`d}r*tCW|z55?$X7(FvNGk^5Ny~z zE-msbjr{??dptkeE5&|)5>k^U z6}m@)c)Q_1gHv>!_P>jQ_}eY=EsX~VFd5|f^a#*-J@%Ne5h}r-RzH4(UXtj~xS&7t zJ=}#Rwe-|f%4&A&?)uR@17>5MSAa8)%L_>W$z^OTZ{Har6LpR}WX;0{@LWSH*f2g2 zHwcE5;Kg>rkYjI#LXX?yD92Xu&DaNz&>&T+i}4QzM6o?-3+B96>(CDMfEsZ*l`M_3 z_;IF?@e^#`Zw>@pbS>E`Kza%sG%bbrWQ_VQZEdMNWm8_g&YUlF8e#&>v3_OLoSM{F zUbeLP9#Rx3Ry%VZP%!sf&Y5k#LuPV%wj<*H^@u!Lccr=n{qaN)K9z?2=2m2c9Kwe4 zPy#X36HIb=PR5(JV+$UJ&Xk*yaNyP~a*b&lWn)~Fg$7Zm*Bccg%=ts%V6=M&^T3D_ zX|orW8t^9A_$pZxw%>_YT`NWm2bqZnDM}cdT^}l)-T`ADUGRumVj{VhI8jgws%cu` zfb-YlvRP_c^TsQu+d9@Bxux7@~-n^>{^@}GNkp3<~VeP+SsatS9 zs%$I*UaTW~6aVDewP2WR{p4ZsKJ!yaVNdwRgb7o(6+cgM#9Suw?9p%OvkjrA>>fpO z_GO`>3EW44gsQTv0m0>E{H%{TKE$@S2ru>I4-aOiotJ$?ZRx}#prJmO&Kq<37H`}_ zH#pkl3=%^oJnGE~;p}3#4ZaLZ+G8ZI+JEq=Qd;o>8ALHL5?R-^M8;#iK@W+{cFAvo z8ppI)NSr@_`@f5mbaz>*zNoImVYD%VZ}Zi&0xK_ebD=c)*M&~yXVLDHIfwF+7^zmp zD!um8Rw&fCZKqx)71H&J3o-)9cOnnUf#ctn_(+Y!izoMb!&YM@X$*o5@AiuIf;Da3 z!OannOHf2YuvbKor_TSKQY)XS@Y>^FVp>W>!W+m%`3N8yKv2_&@6%w+PdjIe2*E(` zXRku0x;j#fYMLNYl|6)I9iq1%+nxg-;usRrxc867K-8)Ll#=5S`AF;}oO zO_?{8elc7cysI739T6+3;_Y3uXhyr(Qo9@_4-Rxj$MjIn*BjSRls}&P9+G>T(9yLq zUa1qXHqv2J)pY4!E6-Xn%(Z}9?vMSU*za?{dt)O3Iz1Qs_R@M+E78Q*5UFm|IeIq) z*Ub=Zxor>#=32g1h1=+2JNVefdvfoZnYg_@ z%Z)I(F7;%6<(@lJhh+F<91AVwCez8MOq?{fEBbDX)@9mpI!q9YG8ZP5Sz#z*NgGw- zxJ6n6!5wZ9U5m}RWkJTB8gml#?J#>&AHe`S9iV6_YM|Y`P87L89jjF6!a*GbHMLK2 zsXeh3!&;qb=_)jeJ-++g&sSI-KPdI)OSE_;`P_OlL6_<5&6X&&Ut732`b@{}f73ot z`IiwdKCJ=rRBYy{G|L%DqkfxJP}mic;gD&%M$;o z7GPJIH=Y2|Q}=I2walsf*~6tm0V2}!+hvQW|G=&fjCP_g(x)LA-Ykb2qkA}N&U6qy z-*ee#IZgk!$!eQgHDAm`1?tJ7qQo@;3FoDO6$X7IFSC3FBDMb*`#u=1b^oaKPayR!4e|ZYyeJy|KU6T3opz^Q9!m{(6@*$f+~G}S4h9ka8_+D&F1!=Q+N$hSB#MO!dus# zy$eSq4V7;op;DiVU_6%%`Poc~GL7~*xDs->l4)T_lM!x~$va_nZ&^g}LDfB(Cm}m+ zxc}lCFK#5YsR^)EwR#>6Tm(YU#vWOEN6BX$UhB|K`~uOdMeSIeHq| za)=EjfN?X9bk((?NHLodN*h<@))HOoBex7yr;VA^rQdFLMz?vShaDV<5ybHdjRP#! zx-ka@PyG9$Ezc1kmm7@U8S^X93k?>VyChb~{_00);n8G8qk;Ho^fVF@Tn6*M3Dq}_wZY+^Wn(bx1e}Hhxw3^TQXJ-n=#YzFf(s1s z9Wd3z_l5X!cDhL?yoNAIqXrcpqA~v;a)+B>lt26bkURFANFrlS{70IfL`OZ-r*zRT z$R3D#=jTBVCMnBC`sLVrUkd#2&FxB0MfD4~Mlh0F79?YlnFn#K&)$oP)QSRb6b+>6 z4u`btXL~DC_*kT13&8&Lbo9>)Z~N}|%-o|*Re~l7N_N?2+`jSygmIDCc~Y;3+2uoEVCsp6zMLOj<6AzQQ4hioqGOjW^#(wH+z#Cwy3EV?By8-90Z)hS9XW->uZ?ziY zQi|x)Sk3h!Mx*Qe8Ij|h8@+05U+(`dcOGhqD%6~L2x{kC^|;3hJ_%iZduoyD;VmoU zq73Ot*sAs?IN@P~4C@i5%v+cTr>`wjOw3M9f^z+Yh@zShCb=rvD zz+e(AvLD9V@y!jCmnjhdzk60>zxEu)fSmz`UjOm&D4%aSYY6tH=;IjxILv(>&qMg7 z`uu(c7>m!4Mns+TOl&#=n-)G&0R}ixSn>ixJ_pPU{!#sR5(mTC8sflouNz!ETk0{ZaMftz`x=75g#Gv}LMMSe*YiDYsUZR9gTJf7wwD)K652D}6I( zJbYk-81@iydA#Tg{Js`NzoZQW#qnl8POk$!1SDlADBbI$V+a^m zBmemjlF285*ZBo=NIcK`cX0z6lk$E}G`pdPg;wBaD}&F&Q)?M+M~l3@&Kj({0$w_T zK=hne+we`1l@locgGa1;ljFegn5@o_q{BbupGFnvJ02k`i!$BH&x%FDhy3#@j@jJ~ zqele;!p3nR>@_0II;(Og+BgyXi7e(cdgeu769;;4@C$s6t#lZVTl!au#3@wh9RKu- zhi3o3zu-KfP$5!tT*r;9+YENEf+307w3>c)#@frNtz!FIi2qZNB(Qj%3IS`X;JXc* z$tap)zi*IoXXEpk9zfaX;(4biJaBf1E_f8|XS0tA4?Ypkb&A`NrLBl`v5W2NZAMQg zu(`pgxIlwZ-ZJgae;@`gS@<~X+}_P*mTK3 z2=~vSM4|ydLt-p`6$?@>DpZM|d@%$P#rN9^x}Wwsix%2XpK{js@Y^@k=7^T^s8Y}% zvVRd4LwzcK+8U|qS+3kM=2uz`VDFT^fC<3*G#pcj*A32h1(|>Fjv!nHCmS0>OSr~8 z&!#3)bgqxA#<=o+DjE=5-w^}SS#sd7i&*Qm)rC^}?b$vqW)}v(3t-aU`P3shQYDx! z`gD6;rgYwbz5C!(1R@pSQN0N0`qgreEtiF!@s)qSYFrtE+3WQC7~QDda6kvSU=OpH zjSZn+#`AdlpDZEE5$b>T!U=cfVNs*Qr^7gYeagE*GKzY?pT_zK2L?AJE#4WqOZ68| z)J&(Nhx_bG_-J+mzuCXFc=Eo4>c8{R0DM%gy?rSf06G}VHS6}b8Q6NpWR%0V=<#-L z43-YFfHsT(}R3{C&Eh#8{2n95Ui$D=YU&jhC@lXuJ(9~ z@KMZM0Ohrmk&0Y|zpuF~L`YtBn@LA8ykGyylOLuJsO63_3gEUT9&h;hH-Dww5#6V< z{csfdp*z&vkaE1if0k;97vF~8I`w!c`H)MTL0_>wVf_8MB&FTURg>CMxOMihf-PIc z;^hjrfwH84lwzHs1HZb}WPIkrj?VS-61%lKHeHEcq`jjft&$F7I-;2z}SPPqsG(`~g(R5`sZoDf2rqcs-w^u8qQ!o42fU zgbF)O%~mkHFz;&P`VcvehHe5o&DVFEHB_S5+6GTq87r1v)G$jqf#ZBZTI?SNqmyj9 zsT|zup&{Q5DgSPSb6i$mkr5;$8eIO8wa1=pBA4}5Wwy(Mcpj*f{5vDOhIzG zI|=Xj<#Ysk+lM|@DlDfGSb0?g5OE9ABl|Sa~f{BDb#lc;#V);JWb#F@RK@4`i-mX|vxhSa=NE|eV52uigu1VrV0tuR zcLpJql%W*ZpqtG3r#$F`M5Ycp$9NbAln0SK1F#C;pe{XCjU(Y1yF6{WI)e88dP?V; z|7rs1S7EwVH=;;e2%9N8rNTGa63b<1pkR*XLjeY7U&qgcnffy` zrB|=xmC|$2+iNlAg{0CJ6WZ7eNiE^4qdBn{h!w}vk7*M|}d!t9%X;?};eT8#;a4m-! z{fd5p=&X}QOm%6rkFtstWPmagQh{xefkbl4O^-iD791>O4VzB0Tz(cc>a1?Hp|@H6 zkA?Mh*04!!?Sp)gxuy_U>+&#htmk4s2jjDaxXkNWr+CyjQHAK(%fo{firZ>~@>P;= z5N&RV{J_@zY9w!F)!qf?yLw38wrWqEV~;5Vb7X+<^t-=1y*Tm|le|I62PMSipzl82 zgJ^)|cWyJ!4LoAIsN;ssU+lxjM?APg1^dUy?}FV&Rj+_8Xroz2BFPia{A^sXs-A| z1T-Bl{kk{XkMR5Isnh&VXX6C%=Li^SdhP`lZ`Q;!f$$Oeuv{#5`@xPb)9}p}2omuW z;q7UI4;Hr7Qz|0Z0}L*{M6qXHxOp?4PZnc78X9>asqE4z+x~Vm-gB@BThXT)M5KZL zJsvS4Yfn-Com#Y)a!>sRk6KK$=$g^R^ zU75~}3-bXfRt6o1YZJ`W&mX*HpEk?YF#env6ac%ta5Qm2ek#I%9_>$`6}_qgZ2LVm zD=GsICYAz;yyl1Ezqt&4Go>5j{)PHj2jJp@%1Zpjt>F8&%p{ehw8k*sS53>J)A)>x?x2Ts&q2_*TFmNE2h=3i16C}L&ccy}l3S=qnw z`QszZ=l4XdSWgSo8TxyuX=m%-5x~Tn#?M6HdIXFw(j{P+?JaZ5TLMZLmd`5gLA`T+ z1qaf~Z+dVM$E^)0I6Rto#`uee%FM;vCnH&v7W-h*E-23>}5YY#-N|$A^i~ zA5o1F4rdE&`g)c4ACm7^Jl^`o0@8CjrzLt$opRXw zbAh-q`7Q8xceWB3p8-c-9v`9pHTRyqw6ad~#&iTO44mC0K^q6jQ`5iBrHbRz-$lGF znuOlQtStWiW2R7b!v3Ens=PV~wo96>X+=GzGwt?;LmfR;Yd&^*yaB9w+sS3 zlJ_3}rXsYl@#c%jvWk4t4PNg{&s5 z5BCIOw!z-JQ~hloEwl`#EVBM6)$@?d5_0%d3*}(m_n@(ER5-SerCoz6Br+ZzL0w#Qmoi+C}>}CG3KmcnH?+!z)Z0Ov{k+^dK1gN%pP8Z(%VTHEQl_%guJNsnMoPjlzTJhY_|H3sE&HFk4or#XAVP358uH{*=cor<%RZv1;Tvk_ z2myE{gh;b--KRR5<2eSUm0wXH2t5Y`pVqP)e!lUp74&k&(WL-2&5>l%mm=sqUY-M#TMI3%B?3)bO2$ivkY`hAWRYRFvRK{a1sODujiGI)jbK&Z8R6vhpi4Haqj^p|nRAO=RV# z_C7pVC>EVY(?i3VXm>22bPcoyn_0^d0}hW_hk@?%jWe#)j)LzTn)UbDA6Cmnfl#Ii z!n^od{qAsIkZXG$lUH+v1EKPjnIZ=AUE^CsFi@ z$v|g8di>1Ff`>9W+KfOK%Mg}7S*u0HGF}Kf_mpYu1Z%A*?D1ikG6JuY7iVS__(4;Y z)t#!EL-X6;;M5d5>Bd;=Q;HGImYXtA^KksW{dDZ5qCE+>{s{Myk zoYL^tplH=`+C`k@Yl}_hQFvGsqae9ry*T0pqj;}=ix8ve!s?rhkxId^*I`H15A^uY zNit#)Iv4y(+f|9MXt^?YU1X|qf$ktH*GWHa%OmSo4DBCr-qYrTDDxgbb;R)Kbv2d& zp_$hbZa|NFWa#t4;N8m%3*B#Oz(wiL&nrn_Yo*OkSe*B$Ky&#AL%>jo^zjk_NAo~Z z@DZ1@*Gh8T%O0+;ixA($OzN2Gm-k2H;V% zL?Ns}Yj{WqyTDyX3}~sYuYazj8=^LY*A2qGUo+74#?A`zu~nOXxrZ!n71s>bA?0u} zU2u3zYoz3Pt0 zl%#vche&Zrm=B;#{b4okI2e#`m_+!z?oZJ!4J2|Nb|_uSbk9dMuDeZWrT{9QI!{^% zB&O1U7~C;^8t1V+{yx6g7B=>7tIy|N3?iD3T0K{1OpnN7I||+%0`LE_UTQA+{+`eD zE1>ODT49qYxyzkML5%jthspOD?Kh^^Rw*8vNN20uA~L<;IsZBmoxSmULEy3Kh4W_b z;$9gtn4jzuS$lRzrTMOYLkoRxy|Ne(K4tbf3Ca?^O}Op%LR`jN-zk5jZ50;tJG+p` zAaikK|LK9d;CFY!9^n47(2(WszbbtoLIv)46B_`(Fa5F3686?7$4ioLs-j9i(Bj4c zmcO8~c~O=ISe|#8l&ZU#y?C@v!uk7qgP?#QEGsx#=HakH{9m@n$Dn}l0~LTZGH4+N z4+};`-tw`Bw%B@}sH;ibH_lkLl+N%_A;67%#DUTtpTMV|BN*p_>Ru@|QBm9}{=TgS zi!9hqom6GZx7ByS-|fnr?6I)ukHRlkrM3aCN!`X9QwLriqCMUtxq$xf9a0zpM+Z1_ z1v5S6bY7TY`OZRaZh*Q_Uc9C9u#o$0`c5;}p}wy@*STz$m6z-J*D;Z$`bWiGLw5)? zvVH_17xgtvF7t>)jcYXjPr+=tfkgkwlu^T7@z}h+hN#H?-q&x6s%!`M>wekfP$ei1XP3MeU@OGTP;y3h``&1^|L-Etq#m0$6RkR& z)=lBPOMg%QZMI(rJAhJ-udF1_vIveH7eqwfn!vT(quL7F=$=SbB6jYoA|u8QbVq8C z@rChU&Me!m#x}k|9x1@t!M2ML%NY%p!t0}=_{lhKHfg6L!e~M<(R)_%BUh8)={eky z8Oz&XaeM*2K#+p7(=#VN}pZc7e+noeFGgoj`pasKp^PHid1ci?cG&Sj~h#{G6 zXT#-SMmLLFW+j?PpmF6UUvj>W>rRD&RXB4Ef4`j-3=0!>|7{3JXqM~$zO38+jTbMW z;cd^r@XjGb3DIqA$${NC5!f4{XHW_|CL9%+zEEa=X`oPC?yFf`Ugch^2^YWH-3ZtV z(;hy@#-kF>TLJmi{kXPug$;&ROqCXs#gg z_{3$W^&hWJ#nPZ{BWFmyv#VAM_6wu%S^IdKWb;M4K36w|2otTQ%X?%y|NPrH#k_V7 zN0)~g(oy4*hQEl}eyGhaXQJ0R|2YV>MT0(dCZ5-o^d@}TQ7%bf%IYbYGs($T)rAKX zW;l)ua#~APJ6xk0liS+HE)otD0@&aQm;RBMd%pkvoZ`dy`h8jG@6{VwaZ>Z6o% z4IeHM&yK!ncIxB*ItR3F(NND-?N%xShyWwqFOj|f99L<@A^eQbDDm?Eu0NmHiVyZ= zqz!1p_VQfweCfnG@`=>ndK?r$JfL$uc1fJbq<5MibGpoDqGc#iqdyn+VVp!b_?!6! zegF4sbaS0K+af%uPcy{F*H=K2*&Z5v4Xd$JRTd^M3e4N#I`^OZkh= z+i#tPalTsqgbi+$uHX^d!^MaTT><}#t2d8_>igrz?`-yc%RY9AvKB>*B@{(jvXm`b zb}3|=8Dz^ENyySl$QF`i#$MT_NS3k7HiQhu+~0kFevjYp@qK*#;qfr;otg7G=iKu; zuk&2kzgg)QE`b7N-xJ6+wp%uTf|_3wJJkps{3kmQ5>K*iZ%pHQ&*ET8Prugn6{Y_U zBp+PPTBvQ756XTacHiTn^UAlH>5Iw-ca$9bo?W_}cofxcec`|CGmd zL36Mfuj^CMjA%v_=Rfv^uXOIWk!Q+E9fUgm~tFzB2#I zP`VqeD_>M~<}WLDhVWm1ZN*wT$pCW;uk2QU&>q&ZUo?F_AKN3rRNl^!j-;JG%Nvc7 zkH82KmDZ{`ns?#)aPW#sE4U@o-m=FK_UFuO{B8Q9*R^F%WeGnn zjRzjXhj$((K$v?djT0CwkV)g#GWs?saq+4ZhXpK5#leV%JW+e(QSm2tLY9Y^QFE5u z-%mZyplV`D`r76m;PjTCfhiq;e~vq^r2i{;Gn~lJmbLhV#av`0`%Kjm4wm-BS|bgd zt9$yaX7*bCze;`FbC*WlxQeUON3hrjkaK|-B3{l7PnnitMdmV!ia>%OCjcH-`-|~E zBe-@ESETprVLybc7VgvEe-kf_3o6Wl{L>W9$?eS{nZ7k<;s6W-5FP%;r??`4-l6Tn zJXa0!RClC!*k%ycee2OHwZLich=&6Zb6C4MBOsoCQYhc<`%%Q{YmWlCHoyy_jb{#K zX^#YVs&oH=Y0Yd9bx7jEs;6<`3C)b25GW>{m&{(n$A6xA8hCYjvjgQ3Ki5^DzMRxW z&oC^mcP5u1ZDsxfI7)x?7ZHTed|6L_?o(edlk+=faEpI>5ym}Dw}m8}>eyt}*m>-6n8nfn_viCl_5Gp)sg?{e6Q&L8ny zo&%%BYgs*(ns#WsQu?ftm;QipFBdOK5S}_V$RgSdco@&%i5%Zc@rPv~3W&W)MD$wp zl7`jn{Q%nwg=d{#E!4L; zWGZ>;t#)^+br2+pyO_oyPo%%4-y*5=50WWPlv!jJc$%PI>09fY27NXmI-K>2gYqQ? zASzSa@H;rdeh%od4d+N{tvM^C{z`kxxbZ1~UZm-M!~AGDqb9Pzf=;a0b^~Wm+{bBJ ztV|6@l0R}FWhFnS4)%$yY2y6}KiB=+=IuMhkf=>HMjUEiJsk&6*!79S6gdApQ+c zAp@K0aZ9Q^71xmNd@rwbL$TNS_ep&Qj;Df1j46?_Qo;@r z;~i;%gg3G3Rsa-U1JMs7oDp=gQj3!{AGTuEGF7-bV}h0?w!hy`0@c;yo7jBbK&qu zFt+P}*V#59MIR9xxE-Oyf(pG)XIyH2|Gt3pyTzvxP$3O5`N-EkUWXiLmmRbpUzaUW z{aLYzjChhX{nLMp3@Hk`J#-q0tF#voDim)!6UDKyH2Mp-Ok-o8uz?;9AFWN}B?gDw zir68V9@8j4s+nD!%f_dX-u+GdP_9iRr-`Ndc^|_5iVh}%4t|)@9-}1f8(TRQjxe9L z5!RRQ#e7&n3j6KO{(0VuJ)+}OV{|IIVdKnYV%V&5NulNq0qi`yrSoeGh`X#@*=cl} z2A3`Wi6!BbPSNZ4#nXELtl^iPDPyf8eBGvr=LfJyaDrun`(~UH;EH{^7yZ^|d)#Pd zd;K!2xXGuBuTZj*yt?{UXbVgzR}B;3Qi=0CxYW2v09TF3d&5)~veex>YO7$3ZeLPN z%ba?ap!yQ+LaXQk@(%ZD?6!D}S)29py`8p>bbt*SdiL9OOj0&fUw;a~ z!Fc-CyKRa(TQjW%OI%yJYO}cSMI=#^9)$kTZ7bBFEB2^AJ(bZJhmn0x6wv;WcC@Wu zj=XF&5WZsmOFFHJ$4zs?;WK%`ION|-A9MQaRBYswn=zv-Wl zl*cdroEEKU-E|rQ-a$WH9K1JBPKvyh=l)Wenr=4TUiVMl7njfhd-2;RT9h5P=emvh z4+_C~>BkAsJ7QeXk#Ar3aLnHMe{UA@Qj%z3#{lYnyq+YY{ys#3d!BUZ?J{BZ*Ey#X zEJ!7Kf=Lx(;uHHe!Ab)VW3^Lo^0^OhjOKO|ZAVIStl}^q_m?R$Oc;jNzE_g_dyzOm zGR|1T!DBK9{pO{}^$d}G&AU-5(cZmLo$T|84|BXdFOt>O%?1y`&)eoiw9^|8WFdw2m!mTzd^^7B4D>B+ z7D*mE?}B-C&vIbtfPZFj5lMEDR@ia!2Ik18LVdQ8WVn1f)^#=+5aHptm36za4YE$z zdT{o1v{O0VZN$%87vw>(j`oZ~67&h_=TQE6kowMMdo|2S+I*mWXvG6dV|apGY7cD{ zR`(|Ay%jYgvV`932Lux%7Gs4!F&2=vPckZbcqzq>f$bVh7w>ND#iRTB&P;7fR8#^FYmq7Jb>G1Qw)qG34Eo$ZnqA?A-qe|m{9oyp^N_X>z_hgX% z@O)OTu&JyPXHeeGQi)rTCZZgj4N@gWH~D#TaS?K-Az>=Sot3QGGuMqhA*j+pa5vT` zwi)rxFfY#sr7CzjZi}|dr}b_MTcEvlBB-62S3Tb@8Tl= z;RzJX_oXqgV%$Gk=JD{t^4lLCSH+y5(`^1z#Ap}M8ubGWCBBhbF`acR6y!N%QrD7q zyISAN;y}LQ1BJSOuH#D@Y-F*VbBK^en4iXTPnP%VIc(vM=qTuNXxHLU6m9gxt0w69 zaPbC&nBAVC)7klONITQ)BE!}28w*{tK;o^G{iQiZpmHaGyvP*TPm`GJM4mB01~J5E z-um5!>1F-OkmJ?Cy*#0Kj&+?`)!7}s9&jGA5igvnoi({98#15$~1UcJR`+N|}AxpG!HOSqs~N+!H$KQsBxYc&=4V{*rd{%~lfN zS{J^iu!!N zGK3OsQtcJa<#+)yO^_i<_y0y>Ud+J@j`s~WdmC*g5%x=;AP)sPe-ON$bH52qceG&w zqHcLmn6f4$Imft$OtB)SH2I*vvRP8)YjH09e{{6}d5{4$y&VWn|D1cNjv#K% z?fiyPnBm?{}tmMaS`u{NC1FddD9=i9aSuc!q0+NY;MB>cM>sldgYtI9mB#T>jtz zxW98t@`T;U_nycSw@-v8@?m@3Su-F-F3y1ICtyI%44MJtX|-CoPGojY_v-12Rn;_$ zN4!q+NlJ}hV&1d$BzUY_X%61~Hl zL?RZ{GR-K7&zgKKq{44FGo$Mfsr|O-PS9xJDBbQe!Enq|hcw!&QlFZiz3<1xx9C~$Bzu=cAf-_amrXvB_>U$ESN6+>@YSbB zh$fjvsA8%s?$bhXB;akXm)RDJu0H2;tvcA3W&)7rzVhDw|5{CWtF5o2{gj*? z@*~;P#&m+lXT>ch~21fcO1ko_>Xnq&w2_9D#8v4PfkIY3k`8M z;???hL{hWospAH4W(tEGKN*yh0dH8&gi?Wb=@?EI4!UY~je9RKd~#;v#)8w^#o949 zUwDbs*@EqXF6Tj-vKdsSzwyhbI??lFuUmtb^YuH(YcqSeao~K~MjP-h1kx>KxFmi8 z@1gK#2GRwSX1!HVFLCOm@+$9*fYgeiKF+BaNolLZHu|oQw2wsQ5Yx{7X<%UC#mjfCwBUBX9bEAjGEOnn>vJH?580?hDR)QS+xohF^Yzd-%2-X<~Jvox{Eq|WzDpT zrK#d05h7=lM}TS^r$B(HfwBO7=?a~TA(aPpDi@1JAGr-l3;O9$f5-4Dyu8uf0{-qT z`uz;jfunwl#fv!}LpVpO^a?h!J+36alK_4@_i$Ofw)}D!n_k}R-@qORg!4;S!8K_W zKAnsZ{zPskOjxm1PCxp9BIl@{d*jpT;{w6;s7B@D+t9*RivF&JjkpoItUFq3f{fRZ z#9$A#`0C#jIQzvGf4c#z91HB zSZ-)F8TrHKL)p(hv!jkXw<(_;5-nrDJRhTWyc+1dO{OYrtvCAqs-S-}Y#p-sT>6?Q zrIvG9drE4lDe%>BKdlJTuFbbPjSay3tJ5S<5}qekW=^!MRT%O$BY%$$q{gJI52{lr zfDG5&#j$mG`IvgLzhvFbp-_Dkhg3hmHw;81ZdeR%Q$^)kAg(#FX#-10N+trP|8$kN zFGmGLP+1q$>gJ!n{_|$|s2fG9lO_2x780uE`gnn|>*%qTHy7Rxr-sxB^#Sf*6620p zQs-bIoXVhp$k!?Zyo56`YcYLiOVJ^SUj1zpTCJPy=X2UOC(V)Yqb$QrGz96KHIK$1 zU9ZP9CX|r@9$&8G^jF}(EGB_#x#`TvE_mSEH?_0%W6`4-!-k6r++dK=Tgil;&*k#$d{8Y23R0D$APhrZY<)m^&pXDW)&pp z%SC#eK4#P*$+F>d7(z_l@o~Z6%xlMVy?#zXSX(bfNNkQ7?mMw4-W1x=|BKi!Ho6{r zO;h^2me6wsgA>(yJ7~LkKd1fNxzJJ+W{rN4uypdDu0l87% zW9mJ4`0&=rOn5!J>%9)H^M2A8#PVO8qL21tF>Jv7pMDI=4a|UefTncH?>9e?)d0?t zE#o85UVZhJ6-7ApW0l-`IWBboyB11k@Oa4KkD5Fh+YXB9tT2=GE)e#t+y3=0lJeH( z$y+>sZ(*2^Em3SE@|XwJEi}~~;N19{zyRxl_FsM*ExpGIEbLXYyo93p+U}h~E`%e; z>bQ>aXP0h4ko4;#-E)C0(Xeb@6O9!loeA@-yTYHgRYRErkb?o`0))Kt>qwMUMTGq> zCceSbC|>Yy{3Y@$OaZ(2iL2|;X)^;@wpZIoC-8A;$(dvir@${arY#k|6j^j~Hb?|a zHj_ctipNz0PM7B2;pVn-T)9s8)0kkGic2iKc&REk#-v|BcQc!LuC4JCdlJ5OEkm+j zyQuf`U9h5&XLq9KwxxPDJw#kGW*u)Ee(DA(L)H(Dj#>zPyw%%bcK%-*xs8W6?tWVq{{%cdX(`Dm8HKa4DlrLNU0Axg!zy zJ8Vzvv2P{BI#ZM;dn6`3p#Kwb3=KxAn3NR}5S1eWMmJGb#KLqb_Ef+iKAj#7;sojs z+)3hL4a!~d*~=}aL*Grm3ps?v#CJcF>aE?msHpLKu3@ykzX zunixML6ncp3&mY}wsgHvpSr?reyARIWlU`KAY1U;vll+$m6hNYN21LE39vr#>^#%A z1)Vk^K&A#!q1NV*2f`pamlhyDp>j_ph%|afN`JPp{=1_mRESe5v_iYAWf?^2*pBV= zT65d^WR$EHo`RvbU(5Q=WW6cBXa6_Z>e5(A?h9=!b@Pt*zsmA2_JVsy2~hJ^jFtJ+YF5_Ym9;yRqP!Ddc@zIKThf@g*rwwY)&mkx`2?d6Rx5_Bj_c@IXyweVZ;{9JdQlSjXpie@@G!&f@8+Y}!(VWXT3ZnGbV z3_{{qDZ}7=mR(bKMX%yt*T@L&uw^U}p9QLa)gEJ01hu0yagbxslSmSii$UfN2z&H- zO%q&xhu#N4ZcfYB^I)|5=)@y-y8}mX%ajKMk1Ht#m5^Bxm=}cw)sH6=kCho8-v#N# zGio7`u*J7RerafhR%7ql?S`f%9B19kt9|M;CGb71^cghWQeP&$EkM?)I{%vnVkO`h z+{$8oE@JosudZJOA@iyMJdu6zY#}xsGN7{3D$ggN2jx#$Q9Ut3N^|Tds+-^F7(mFklS?DXF!kR<_Hbq-!K*KhpMJehG z^XqQ9qUfkE7?>)SZ0up&(-TJkTu1k=nB~b}DaR{`17= zMW}KfZ6J>8x=h;EBa_R^vjaYP@ekm zEdPDHXWs`&6|7ZgB!m}frNDHD)qE;1a;~#)J6=@bq6+teW39vQ#@LP=#l_sc(-H&j zN!`Sue(Q^w4wroD(EbPKi-TNiUN7gE=;NCIiC!#Sxdxz$Km1&IS=vwD&0jJ!C+|}R z#NSWzw5ahpw#AG5m9Y^9jB>JBihxVAJeH-u>7*7RZK(Psx&ov3v4-$k6GJ7@*`H)5 zgydIMGqUQzi^A-8Ii?*d{-O8ALlh9Ws|wYySbz4ABy~JO@OMrqw7srdr!hIjVg`vY zF65;;8{$~uOAJEf>dGtcEhX6u2@zrhXlv(mLGYEfJmTiVRZvMyIDS-w+tw3)<@CDR zmW|vUA4G*QjuaDgev&PC)ZBItXWC%y{h95|zFr6s`?ZimKH%kLniRnd#3aq?=nhT+zd?7`WD5~aXSMWqX?_S;Mg2c&W%x|6A{kLk-gJm0m@?`^r- zrKY-ZD(I6w@%ZI4w5bUf@ZM-TTh(#xqN{JZ`51^0Vtl%02MSy<#_6GP^f4Q>xDW-M zcZm8S_&v-ROG67THP>~?@Gh+=Qad#$?32nP+1qjdMwla5#6jmDhU|i#rdbF}j+qJ=S=~uwcuAb&e*cWSm^xm?nalD z2#0lJBR^mto(j9KT8Rf71^^p)L;bh)9D89v#D5U;w1|ZV8|eJ0c0JnSb=<`(BXXRM zGaI!EY@DWIl~Nv7-Z*pSktVRh||vtdV|$b2K6BL>LI z&bL2V*oR|H64u{~P5%9{yWe27H{aP`;etWA8%~v*cX~wR$gN!9#O;XV4dzg8wu72~ zN}JJvWG6S0>%={E@b8;1+xN*2-Bh6JpiTgPAFJl70ic#Sj9`m7jx~5p5>~sRdV%Bq zLrL9=x8?2^>KR$?u+y}@Cc0HUOmxFT#Vzlk>uNDBE#Oyi$y>zjj71z@W`ktsCYC+c zF#C?4XQs^bNz)h--CfCS;>iCr%Nw$pYs+dr8O<6Aai4d(ANPdF`MD;A>+qD!z3%T9 zyrrI1X$R#~+j7K(pNyYOOgdC${OasVfiIug-P1WArr$r$@~GaV@af;VyM_;x1A=qpXM>ENHM5Mn;T&E61o){=6<&j z%!7aM`T9ga>iK^vJKISt)k&&xkCJDRFa?(w9+w!7_F1cjJs`E{b;ldf8>A5f5N-py z!b0FbI1J&=UC<7{WCDxBJGKXy^Q*~QAK!CDowRju`B-n4`pO=@_hamMUE$)k?RC`P zP6~ofTwT}r9@iY2M(<$Ab>{@_gYl^P25dU<%0Ru@%=_Q4^0W`EhDSbJ2R%OJ~=H2AgOrP=UlpNVc!eak!;@o za$6|4260trRL2{^yR?JZ5x&gQZuAL;nE2|mLMUIJ4SPJY9YEyB*iS9@l`*fMkXVtD z@~86Kj-FR^(XU;tzI$FzuZR3^1pmU!x)V?m)}+%gtvb8TgeK%<%JpJdx!l!d4qX#P z`u(tkt}Z?Yk*s^aricS4iC9_gJ{3+^~R z?~|y<mB{P3l7iK#+pc8-+J={%zzvzv2g0SqO)SANY!PP5Jz=(dC8YG37_z*IS> zCS)ZeHkqldCJHD2QI>giZ>g)58W@=LhgeQed)Ac3w5M!2eRO~8WUNawooeBZ&lKw4 zwoI<#0kJvQU}A!HbSS&CpUYr}XyDMf{x)X(+K86BE5_9HS>+q>ZwbUv_|~hlDpxp; z3ofZM*O_zqU`xM{o1V}&Q`UWRS4bTML@zYuL>*6jncVcEs`QC{5`knIG~uCI2tZwm zLrhj1UJyqgfk`WrNlh=kXEyZ+q-CpBie3M}49*!a(JGu=VLghHMgx2o4O$zsx;9~Y zDLXN+U#v`@e_UGU_fmTo-us;z+@-#K$=vcaWCzjw&$R~&{<1<1#_xh<)J_cVKys}k zDfr2BhnX2lg9u=F03-j(#u`J>)6}Cjz`RIjQ0Mo)lmGI+NH5P*17z?J!&;E(JlV|j zH;Lqo`(`L^JUpfCMW=d)(n1iP0v{0C;dJZg#kWz9Lql70Zg9wURY^B^m~NjF{&C$l z38@3#XzQ@@W-8j*40V2bGm^v56M z?75l0OsIbmQf+BjY~oL#AsyG|0;@~M9QZj=%F4ExF%cxy(<7yOoE&ep0VJ2mNxTLk z>2fP#YZocvwT!;alI+mr2sD&FtTDIc^)%^l5=^RZ;^ervujljGt$hC}{e>FaJg}7+hKM|LQp}_1 zo=bn1wW`nB9>>6AXu|}dNW`q|GOHiNwdK~mkQLAiuGiKc)?Fa6AubB9y9k_~ zr~Zg}eVRQ&EB)!5KFBYwhN3aKAQ`iw&kfOY=W@Gcs1PqlHHd);bT`&>dd{Z!dI@qFZ#*pUy8|LuGrnIn7Tnn%?(&crysN zFZm7ddTsjGk$TQv>GZPe!c$z0 z?Ts)5Nh4>4_({mSmFw}4RbYP0y7AoNt(v|WsBLr2mpN!NQO#f2(fHq==l@i}iylVh zdFC$^%TKf+M zaG1#+Jw6UaJbZiNXNXW&-#@hSDW`3XOpS~vnYa^5g@N0QbZ0*#{?$KFQ$n*JE@i8@ z)U!|gV!l)Iv6QODQIEZE*wA4s(i!dG2U5hz^UBiuNND@k>Ysj zL+1}Lpizumg^V6iIunrio5P$g&Eg1dq&+WSiX}JJYcNNu;soqq-+GGWFVJObBI)U{ z@Hu4V@h2vo(tH}@`B0#-Hk%P=oum#7OH+uV#7qBxwrK_XU!rhaWj6}-<`i7ETCC_= z5kYCa%hj+I@k?u|8jbZTImDk;sEt?T|HYy_kwQ0--O)U>1q3@6X9p0SLU1U2t(3^N zRf2BhspwW4#HZcTR4#!1hnnAIq5a>jWdHsK@R$bX&LG)w=-rm|$cOmWY%WK^yKtk* z;yKbR6;7*nx zO2_83g@(cf)i`IKWnMFuN`2JeV=c`Ay+*}k+`Kqf`-IhrrBpOoPZ_YoKXMkGroRV^ zs>tD7ac(syW@Y|a!LSN8LxkTTqn2mn7t8wYuaUi9*zY+WB1HKe8FtM1i!)=A7dUOi zFN9LQ60H3Tya@A^of7tAH2AObXH+f&gD60RyD<2RpGG!%MH{9MEDso8Duc+`vDbe- z6*k8F3EabTy2sm{@o5Wl2Fyr)JWBuS)9ws)$6lhY9onT6t{tM zIfn%Bulb8J1ezER(<7!}otL$Rz|%GT7+bb+4S~Cf1Z}?WkMWYAwQ^_w#ldGAV;QG! z?Sr_peM?kV4hUvf)f++V-0i5qHh_CaTU>SDzl12ryp-1ZVO%r@QgFBug;O>@-)y3; z*tKONU4$&+GCnqlF;LofQ%m;evX9i+O9J-?6A*M)IY#4*_P4sZ*gSvjOm%e24p+?7O~7B8E3Qj7RJvb*N&e*b&={63b|Iy*`BUiN;RH z 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