From eff105d1dd7913225abe62119e5ce4e16fbdc4b9 Mon Sep 17 00:00:00 2001 From: Marc Toussaint Date: Mon, 11 Nov 2024 17:57:50 +0100 Subject: [PATCH] RobotLearning lecture --- RobotLearning/01-introduction.tex | 326 ++++ RobotLearning/02-taxonomy.tex | 151 ++ RobotLearning/03-roboticsEssentials.tex | 494 ++++++ .../04-machineLearningEssentials.tex | 242 +++ RobotLearning/05-dynamicsLearning.tex | 874 ++++++++++ RobotLearning/06-ImitationLearning.tex | 555 +++++++ RobotLearning/07-ImitationLearning2.tex | 601 +++++++ RobotLearning/08-RL.tex | 802 +++++++++ RobotLearning/09-RL2.tex | 686 ++++++++ RobotLearning/10-invRL.tex | 520 ++++++ RobotLearning/11-safeLearning.tex | 580 +++++++ RobotLearning/12-manipulation.tex | 639 +++++++ RobotLearning/13-plan.tex | 1037 ++++++++++++ RobotLearning/14-multiRobot.tex | 689 ++++++++ RobotLearning/15-discussion.tex | 305 ++++ RobotLearning/b1-DynamicsLearning.bib | 305 ++++ RobotLearning/b2-ImitationLearning.bib | 570 +++++++ RobotLearning/b3-ReinforcementLearning.bib | 444 +++++ RobotLearning/b4-InverseRL.bib | 230 +++ RobotLearning/b5-SafeLearning.bib | 454 +++++ RobotLearning/b6-Manipulation.bib | 368 +++++ RobotLearning/b7-TampLearning.bib | 268 +++ RobotLearning/b8-MultiRobotLearning.bib | 516 ++++++ RobotLearning/codepics | 1 + RobotLearning/compile.sh | 16 + RobotLearning/cutSolutions.sh | 4 + RobotLearning/e01-robotics-ML.tex | 154 ++ RobotLearning/e02-systemid.tex | 177 ++ RobotLearning/e03-imitation_learning.tex | 143 ++ .../e04-imitation_learning2-ideas.tex | 66 + RobotLearning/e04-imitation_learning2.tex | 166 ++ RobotLearning/e05-RL.tex | 102 ++ RobotLearning/e06-RL.tex | 141 ++ RobotLearning/e07-invRL.tex | 151 ++ RobotLearning/e08-SL.tex | 116 ++ RobotLearning/e09-grasping.tex | 131 ++ RobotLearning/e10-tamp.tex | 148 ++ RobotLearning/e11-multiRobot.tex | 156 ++ RobotLearning/fix-journal.sh | 9 + RobotLearning/macros-local.tex | 14 + RobotLearning/plainurl-lis.bst | 1470 +++++++++++++++++ RobotLearning/script.tex | 150 ++ latex/style-exercises.tex | 1 + latex/style-slides.tex | 1 + pics/RLagenAndEnvironment.png | Bin 0 -> 32588 bytes pics/clune-ES1.png | Bin 0 -> 155079 bytes pics/clune-ES2.png | Bin 0 -> 52724 bytes pics/clune-ES3.png | Bin 0 -> 35690 bytes pics/forceClosure-frictionCone.png | Bin 0 -> 29681 bytes pics/gaussianProcess1.png | Bin 0 -> 63614 bytes pics/openai-ES1.png | Bin 0 -> 108836 bytes pics/openai-ES2.png | Bin 0 -> 33082 bytes pics/pcaThrees1.png | Bin 0 -> 57558 bytes pics/roblearn.png | Bin 0 -> 705284 bytes 54 files changed, 14973 insertions(+) create mode 100644 RobotLearning/01-introduction.tex create mode 100644 RobotLearning/02-taxonomy.tex create mode 100644 RobotLearning/03-roboticsEssentials.tex create mode 100644 RobotLearning/04-machineLearningEssentials.tex create mode 100644 RobotLearning/05-dynamicsLearning.tex create mode 100644 RobotLearning/06-ImitationLearning.tex create mode 100644 RobotLearning/07-ImitationLearning2.tex create mode 100644 RobotLearning/08-RL.tex create mode 100644 RobotLearning/09-RL2.tex create mode 100644 RobotLearning/10-invRL.tex create mode 100644 RobotLearning/11-safeLearning.tex create mode 100644 RobotLearning/12-manipulation.tex create mode 100644 RobotLearning/13-plan.tex create mode 100644 RobotLearning/14-multiRobot.tex create mode 100644 RobotLearning/15-discussion.tex create mode 100644 RobotLearning/b1-DynamicsLearning.bib create mode 100644 RobotLearning/b2-ImitationLearning.bib create mode 100644 RobotLearning/b3-ReinforcementLearning.bib create mode 100644 RobotLearning/b4-InverseRL.bib create mode 100644 RobotLearning/b5-SafeLearning.bib create mode 100644 RobotLearning/b6-Manipulation.bib create mode 100644 RobotLearning/b7-TampLearning.bib create mode 100644 RobotLearning/b8-MultiRobotLearning.bib create mode 120000 RobotLearning/codepics create mode 100755 RobotLearning/compile.sh create mode 100755 RobotLearning/cutSolutions.sh create mode 100644 RobotLearning/e01-robotics-ML.tex create mode 100644 RobotLearning/e02-systemid.tex create mode 100644 RobotLearning/e03-imitation_learning.tex create mode 100644 RobotLearning/e04-imitation_learning2-ideas.tex create mode 100644 RobotLearning/e04-imitation_learning2.tex create mode 100644 RobotLearning/e05-RL.tex create mode 100644 RobotLearning/e06-RL.tex create mode 100644 RobotLearning/e07-invRL.tex create mode 100644 RobotLearning/e08-SL.tex create mode 100644 RobotLearning/e09-grasping.tex create mode 100644 RobotLearning/e10-tamp.tex create mode 100644 RobotLearning/e11-multiRobot.tex create mode 100755 RobotLearning/fix-journal.sh create mode 100644 RobotLearning/macros-local.tex create mode 100644 RobotLearning/plainurl-lis.bst create mode 100644 RobotLearning/script.tex create mode 100644 pics/RLagenAndEnvironment.png create mode 100644 pics/clune-ES1.png create mode 100644 pics/clune-ES2.png create mode 100644 pics/clune-ES3.png create mode 100644 pics/forceClosure-frictionCone.png create mode 100644 pics/gaussianProcess1.png create mode 100644 pics/openai-ES1.png create mode 100644 pics/openai-ES2.png create mode 100644 pics/pcaThrees1.png create mode 100644 pics/roblearn.png diff --git a/RobotLearning/01-introduction.tex b/RobotLearning/01-introduction.tex new file mode 100644 index 0000000..3ec73c4 --- /dev/null +++ b/RobotLearning/01-introduction.tex @@ -0,0 +1,326 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Introduction} +\renewcommand{\keywords}{[word cloud from all CoRL 2023 papers]} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{What is this lecture about?} +\slide{What is this lecture about?}{ + +~ + +\item Related Lectures: +\begin{items} +\item Guanya Shi (CMU): Robot Learning {\urlfont\url{https://16-831-s24.github.io/lectures}} + +\item Erdem Biyik (USC): {\urlfont\url{https://liralab.usc.edu/csci699/}} + +\item Jan Peters (TU Darmstadt): {\urlfont\url{https://learn.ki-campus.org/courses/moocrobot-tud2021}} + +\item Yisong Yue \& Hoang M. Le (CalTech): +{\urlfont\url{https://sites.google.com/view/icml2018-imitation-learning/}} + +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What is this lecture about?}{ + +\item Shi's lecture (referenced below): + +~ + +\show{shi1} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What is this lecture about?}{ + +\item Shi's lecture (referenced below): + +~ + +\show{shi2} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What is this lecture about?}{ + +\item In Shi's view: +\begin{items} +\item Formalize the problem ``making sequential decisions in a physical world'' ($\to$ MDPs) +\item Focus on Learning in MDPs $\to$ Reinforcement Learning +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What is this lecture about?}{ + +\item However, the topic is much wider + +\item Robotics is a very wide field -- \textbf{Learning can be applied almost anywhere} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What is this lecture about?}{ + +\item Module description (Moses 41016) -- Learning Outcomes +\begin{items}\ttiny +\item The students have a systematic understanding of the wide variety of contexts and problems settings in which machine learning methods can be applied within robotics. +\item They understand how the learning problems are mathematically formulated in these settings. +\item{} [They also learn about underlying ML methods to tackle these problems.]\dots +%% \item They can decide which kinds of learning methods are applicable and appropriate for which kinds of problem settings. +%% \item They can transfer advances in machine learning to applications in robotics. +%% \item They have first experience with some basic learning methods applied to robotics problems. +\end{items} + +\item Content +\begin{items}\ttiny +\item The term Robot Learning generally denotes the use of learning methods in the context of robotics, which is ubiquitous in modern robotics research. This course aims to provide a systematic introduction to the field, in particular to the various contexts and problem setting where machine learning can be applied and the specific learning methods themselves. This includes topics such as: + +\item System identification, model learning, residual model learning +\item Imitation learning, behavior cloning, learning from demonstration +\item Reinforcement Learning (RL), skill learning, offline RL +\item Constraint learning, grasp learning, iterative learning control +\item Learning to predict plans, learning to warmstart MPC or optimization +\item Inverse RL +\item \dots +%% \item Learning as optimization, in-situ learning/trial-and-error vs. offline optimization +%% \item Evolutionary learning +%% \item Online/lifelong learning +%% \item Safe Learning +%% \item Multi-robot learning +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Motivation}{ + +\item OpenAI / Figure robot: {\urlfont\url{https://www.youtube.com/watch?v=Sq1QZB5baNw}} + +\item Boston Dynamics: {\urlfont\url{https://www.youtube.com/watch?v=tF4DML7FIWk}} + +~\pause + +\item CoRL 2023 award/finalist papers: +\begin{items} +\item \url{https://hshi74.github.io/robocook/} +\item \url{https://mimic-play.github.io/} +\item \url{https://robot-parkour.github.io/} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{The State-of-the-Art in Robot Learning}{ + +~ + +\item Conference on Robot Learning ~ {\urlfont\url{https://www.corl.org/}} + +\item Robotics: Science and Systems Conference ~ {\urlfont\url{https://roboticsconference.org/}} + +\item ICRA, IROS, L4C conferences + +\item NeurIPS, ICML conferences + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item The meta-goal of this lecture: + +Enable you to read \& understand papers at these conferences + +~\pause + +\item Some of the lectures will directly discuss essential research papers + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Planned Lectures}{ + +\small + +\item Taxonomy (today) + +\item Robotics Primer \& Machine Learning Primer + +\item Dynamics Learning / System Identification + +\item Imitation Learning + +\item \emph{Method Lecture:} Diffusion \& other policy representations + +\item Reinforcement Learning \& variants (several lectures) + +\pause\tiny + +\item Safe Learning, Multi-Robot Learning + +\item Constraint Learning, Grasping/Manipulation Learning, Affordance Learning + +\item \emph{Method Lecture:} Robotics/3D ML: Rotation encodings, PointNet, SE(3)-Equivariant + +\item \emph{Method Lecture:} Black-Box Optimization, CMA, CEM + +\item Plan Prediction Learning (from MPC to Language Models) + +\item Online adaptation + +\item \emph{Method Lecture:} Generative models (PCA, auto encoder, VAE, GANs, diffusion, stochastic outputs in transformers) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Organization}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Organization} +\slide{Organization}{ + +\item 6 LPs (180h, 12h/w, 15 weeks) + +\item Lectures, weekly, in person + +\item Tutorials, weekly: +\begin{items} +\item Weekly exercise sheets, mix of analytic/coding, to be discussed in the tutorials +%% \item \textbf{Mandatory} hand-in coding assignments, every $\sim3$ weeks:\\ +%% Submit your optimization algorithms/problems $\to$ are numerically evaluated/graded +\end{items} + +~ + +\item ISIS as central webpage + +\item Contact: +\begin{items} +\item Office (grades/etc): Ilaria Cicchetti-Nilsson \url{} +\end{items} + +\newcommand{\face}[2]{ +\begin{minipage}{12mm} +\centering +\showh[.8]{faces/#1}\\ +\ttiny #2 +\end{minipage} +} + +\hfill\face{ilaria}{Ilaria Cicchetti-Nilsson} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Assignments \& Exam}{ + +\item Tutorial exercises are a mix of analytic and coding problems. \textbf{Voting System:} +\begin{items} +\item When attending a tutorial, students mark in an ISIS questionnaire which exercises they have worked on +\item Students are randomly selected to present their solutions (no need for correct solutions -- just something to present and discuss) +\item When not attending: upload pdf notes/solutions on ISIS +\end{items} + +~ + +\item \textbf{Exam prerequisite:} +\begin{items} +\item at least 50\% votes in the exercises +%\item at least 50\% points in the hand-in coding assignments +%\item[] \emph{(Moses: Bestehen der benoteten Programmier- und Hausaufgaben)} +\end{items} + +~ + +\item The written exam will be about analytical problems, determines final grade (no portfolio) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Prerequisites}{ + +\item Module description: +\begin{items} +\item Knowledge in Machine Learning +\item Fundamentals in AI (esp. Markov Decision Processes) +\item Foundations of robotics +\item Basic programming skills +\end{items} + +\pause + +\item Self-Checks: +\begin{items} +\item Maths, AI, ML \& Robotics lectures:\\ +{\urlfont\url{https://www.user.tu-berlin.de/mtoussai/teaching/Lecture-Maths.pdf}\\} +{\urlfont\url{https://www.user.tu-berlin.de/mtoussai/teaching/Lecture-AI.pdf}\\} +{\urlfont\url{https://www.user.tu-berlin.de/mtoussai/teaching/Lecture-MachineLearning.pdf}\\} +{\urlfont\url{https://www.user.tu-berlin.de/mtoussai/teaching/Lecture-Robotics.pdf}} + +\item ML: not only pyTorch.. but also \emph{Hastie et al: The Elements of Statistical Learning}?\\ +{\urlfont\url{https://hastie.su.domains/Papers/ESLII.pdf}} + +\item For reference:\\ +{\urlfont\url{https://www.user.tu-berlin.de/mtoussai/teaching/\#reference-material}} +\end{items} + +\pause + +\item Numeric coding in Python (numpy) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Module description (Moses 41016)}{\label{lastpage} + +\item Grading +\begin{items} +\item graded, written exam, English (90min) +\end{items} + +\item This module is used in the following module lists: +\begin{items}\ttiny +\item Automotive Systems (M. Sc.) +\item Computer Engineering (M. Sc.) +\item Computer Science (Informatik) (M. Sc.) +\item Elektrotechnik (M. Sc.) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/RobotLearning/02-taxonomy.tex b/RobotLearning/02-taxonomy.tex new file mode 100644 index 0000000..c0a91d6 --- /dev/null +++ b/RobotLearning/02-taxonomy.tex @@ -0,0 +1,151 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Taxonomy} +\renewcommand{\keywords}{} + +\slides + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Robot Learning Taxonomy}{ + +~ + +\item[] \textbf{I.~ What is learned?} +\begin{items} +\item Which mapping between state, control, rewards/values/constraints, plan, observation is learned? +\end{items} + +~ + +\item[] \textbf{II.~ How is the data generated?} +\begin{items} +\item By robot itself? (online?) By human demonstration? In simulation? +\item Optimally? ~ Safe? +\item Are labels available? (Supervised vs.\ RL vs.\ un-/self-supervised) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{I.~ What is learned?}{ + +%% \item ``Variables'' in a robotic system: +%% \begin{items} +%% \item state $x_t$, control $u_t$, rewards $r_t$, values $V(x_t)$, constraints $\phi(x_t)$, plan $\hat x_{0:T}$, observations $y_{0:t}$ +%% \end{items} + +%% ~\pause + +~ + +\show[.35]{RLagenAndEnvironment} +{\hfill\tiny [Satinder Singh, $\sim$2005]} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{I.~ What is learned?}{ + +%% [at the board] + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{I.~ What is learned?}{ + +%% \small (System Variables: state $x_t$, control $u_t$, rewards $r_t$, values $V(x_t)$, constraints $\phi(x_t)$, plan $\hat x_{0:T}$, observations $y_{0:t}$) +%% \pause + +\begin{itemize} +\item State, control $\to$ next state: \textbf{dynamics} -- System identification \pause +\item State $\to$ control: \textbf{policy} -- Optimal Control, iterative learning control, Reinforcement Learning \pause +\item State, control $\to$ \textbf{rewards} -- Reward function. Model-based RL, InvRL \pause +\item Observations $\to$ control: \textbf{policy} (in partially observable case) \pause +\item State $\to$ plan: \textbf{plan prediction} -- for MPC, but also language models +\item Observations $\to$ state: \textbf{state estimation} \pause +\item State/Observations $\to$ value: \textbf{value function} -- learnt, also planned/computed (DDP) +\item State/Observations $\to$ constraint: -- constraint model, success model, affordance +\item ... +\end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{II.~ How is the data generated?}{ + +\small + +\item By human demonstration +\begin{items} +\item Imitation learning (behavior cloning) +\item Inverse Reinforcement Learning, human preference learning +\end{items} + +\pause + +\item Online, by robot itself +\begin{items} +\item on-policy/off-policy learning, RL vs.\ offline RL +\end{items} + +\pause + +\item In simulation/domain transfer +\begin{items} +\item sim2real gap, domain randomization, domain transfer +\end{items} + +\pause + +\item ``Optimally'': e.g.\ maximizing information gain +\begin{items} +\item Active Learning, intrinsic rewards, Bayesian RL \& Exploration +\item Frequency excitation in system identification +\item Pink noise, structured RL exploration +\end{items} + +\pause + +\item ``Safely'': e.g.\ subject to chance constraints +\begin{items} +\item Safe RL, safe exploration, simultaneous risk learning +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Robot Learning Taxonomy}{\label{lastpage} + +\item These two dimensions (\emph{I. What is learned? II. How is the data generated?}) span a large space of robot learning approaches +\begin{items} +\item Quite beyond focus on RL only +\item Across the fields of robotics and control theory +\item Learning is not necessarily \emph{replacing} ``search \& planning, classical control, optimization'' +\end{items} + +~\pause + +\item Other aspects: +\begin{items} +\item \emph{Direct/Indirect?} ~ Is the mapping learned directly? Or are components/models learned that are input to a classical solver? +\item \emph{Scenario specific} ~ E.g.\ specific for grasping, or multi-robot systems +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot diff --git a/RobotLearning/03-roboticsEssentials.tex b/RobotLearning/03-roboticsEssentials.tex new file mode 100644 index 0000000..5d95087 --- /dev/null +++ b/RobotLearning/03-roboticsEssentials.tex @@ -0,0 +1,494 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Robotics Essentials} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} +\providecommand{\SE}{\text{SE}} +\providecommand{\ang}{\text{ang}} +\providecommand{\ul}{\underline} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Robotics Essentials Outline}{ + +~ + +\item A robot is an articulated multi-body system: ~ kinematics \& dynamics + +~ + +\item Standard Control: ~ IK,~ path finding \& traj. opt, PD \& MPC + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Articulated Multibody System} +\slide{Robot as Articulated Multibody System}{ + +\item A robot is a multibody system. Each body +\begin{items} +\item has a pose $x_i\in\SE(3)$ +\item has inertia $(m_i, I_i)$ with mass $m_i\in\RRR$ and inertia tensor $I_i \in \RRR^{3\times 3}$ sym.pos.def. +\item has a shape $s_i$ (formally: any representation that defines a pairwise signed-distance $d(s_i, s_j)$) +\end{items} + +~ + +\info{Useful: ``multibody system'' on Wikipedia} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Robot as Articulated Multibody System}{ + +\item \textbf{Tree structure:}\anchor{200,-35}{\showh[.18]{geo-transforms-2}} + +\begin{items} +\item Every body is linked to a parent body or the world +\item We have relative transformations $Q_i \in \SE(3)$ from parent (or world) +%\item \emph{Algorithm:} Computing pose $x_i$ is done by fwd chaining/concatenating all $Q_i$ from world to $i$ +\end{items} + +\info{If not tree-structured, we only represent a tree and use additional constraints to describe loops $\to$ more involved, but doable} + + +~\pause + + +\twocol[.02]{.65}{.28}{ + +\item \textbf{Articulated Degrees of Freedom (dofs):} +\begin{items} +\item Some of the relative transformations $Q_i$ may have articulated (=motorized) \textbf{dofs} $q$ so that $Q_i(q)$ + +\info{Different types of joints (hinge, prismatic, universal, ball) have different \# dofs and different mapping from dofs $q \mapsto Q_i(q)$} + +\item We stack all dofs of all relative transformations into a single\\ \textbf{joint vector} $q\in\RRR^n$ +\end{items} + +}{ +\showh[1]{kinematics-3} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\cen{$x\in\SE(3)^m$: all body poses, \qquad $q\in\RRR^n$:~ joint vector} + +~ + +~ + +\begin{items} +\item Forward kinematics: $q \mapsto x$,~ $\dot q \mapsto \dot x$,~ $\ddot q \mapsto \ddot x$ +\item Forward dynamics: $u \mapsto \ddot q$,~ inverse dynamics: $\ddot q \mapsto u$ \quad ($u\in\RRR^n$: joint torques) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Forward Kinematics} +\slide{Forward Kinematics ~ $q \mapsto x$}{ + +\item Given $q$, what is the pose of any body $i$? + +$$q ~ \mapsto ~ \mat{c}{x_1\\x_2\\\vdots \\x_m} = \phi(q) \quad \in \SE(3)^m$$ + +~ + +\begin{items} +\item \emph{Algorithm:} First determine all rel.\ trans. $Q_i(q)$, then forward chain them + +\item Often one cares only about position/orientation of one particular body $x_i$: the \textbf{``endeffector''} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Forward Velocities \& Jacobian ~ $\dot q \mapsto \dot x$}{ + +\item Given $\dot q$, what is the linear and angular velocity $(v_i, w_i)$ of any body $i$? + +$$\dot q \mapsto \mat{c}{v_1,w_1\\v_2,w_2\\\vdots \\v_m,w_m} = J(q)~ \dot q \quad\in \RRR^{m\times 6} $$ + +\begin{items} +\item with \textbf{Jacobian} $J(q)=\del_q \phi(q) ~ \in\RRR^{m\times 6\times n}$. + +\info{Since, $\phi$ is $\SE(3)$-valued, the Jacobian actually has output in its tangent space $se(3) \equiv \RRR^6$. In practise, code typically provides separate positional Jacobian $J^\pos \in \RRR^{m\times 3\times n}$ and angular +Jacobian $J^\ang \in \RRR^{m\times 3\times n}$.} + +\pause + +\item Since we know how to compute $\phi(q)$, we can think of $J(q)$ as the ``autodiff'' of it +\item However, positional/angular Jacobians are really very easy to provide without expensive autodiff + +\info{In practise, one only needs to figure out the $J^\pos, J^\ang$ for a rotational and translational joint -- all others follow from this.} +%[Algorithmically all $\dot x_i$ can also be computed by forward propagating velocities along the three, without need to compute Jacobian first.] +\end{items} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Forward Accelerations ~ $\ddot q \mapsto \ddot x$}{ + +\item Given $\ddot q$, what is the linear and angular acceleration $(\dot v_i, \dot w_i)$ of any body $i$? + +$$\ddot x = \dot J(q)~ \dot q + J(q)~ \ddot q ~\approx~ J(q)~ \ddot q$$ + +~ + +\begin{items} +\item One typically approximates $\dot J = 0$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{The word ``kinematics''}{ + +\info{in parts from Wikipedia} + +~ + +\begin{items} +\item Mathematical description of possible motions of a (constrainted/multibody) system/mechanism \emph{without considering the forces} +\item ``geometry of [possible] motions'' +\item Formally: Describe the space (manifold) of possible system poses and all possible paths in that space +\item Read \textbf{generalized coordinates} on wikipedia: Understanding motion in terms of coordinates and (non-)holonomic constraints: +\end{items} + +\cen{ +\showh[.15]{hexapod}\qquad +\showh[.2]{deltaRobot}\qquad +\showh[.15]{coordinates} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Inverse Dynamics} +\slide{Inverse dynamics ~ $\ddot q \mapsto u$}{ + +\item Given $\ddot q$, what joint torques $u$ do we need to generate this $\ddot q$ (accounting for gravity)? + +~\pause + +\item Coupled Newton-Euler equations: For each body:\anchor{20,-40}{\showh[.3]{featherstoneRNE}\anchor{-35,-7}{\ttiny from Featherstone'14}} +\begin{align*} +F_i = \mat{c}{f_i \\ \tau_i} +&= \mat{c}{m_i \dot v_i \\I_i \dot w_i + w_i\times I_i w_i} \\ +F^\text{back}_i +&= F_i - F^\text{ext}_i + \sum_{j=\text{child(i)}} F^\text{back}_j \comma u_i = h_i^\T F^\text{back}_i +\end{align*} + +\info{where $F^\text{ext}_i$ are external (e.g.\ gravity) forces; and $F^\text{back}_i$ is the force ``send back through the joint to the parent of $i$''; $h_i$ is the joint axis (picking up the torque)} + +\info{Can also be written as linear equation system between $\ddot q$, $F$, $F^\text{back}$, and $u$ (with sparse matrices only) -- and solved/inverted in $O(m)$.} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{\centering + +solved! \quad We can accelerate the thing as we like + +~\pause + +the rest is planning: How should I accelerate to reach some future goals? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Standard Control Stack} +\slide{Standard Template: Waypoint + Reference Motion + Controller}{ + +\pause + +\item Standard problem setting: Control motors, so that at $t=T$ seconds the endeffector $x_i$ is at desired position $y^*\in\RRR^3$, i.e., $\phi(q_{t=T}) = y^*$ + +\pause + +\item Problem decomposition: +\begin{items} + \item Find a final robot pose $q_T$ that fulfills constraint + $\phi(q_{t=T}) = y^*$ -- \textbf{inverse kinematics} + \item Find a nice \emph{reference} motion from current robot pose $q_0$ to $q_T$ -- \textbf{path finding, trajectory optimization, or trivial interpolation/PD} + \item Find a control policy $\pi: x_t \mapsto u_t$ that reactively sends motor commands to follow the reference motion -- \textbf{inverse dynamics, PD control, Riccati} +\end{items} + +\info{You could think of this as three different time scales: rough future waypoint(s)/goal(s), continuous motion to next waypoint, short-term controls.} + +\info{There are other ways to approach this: +You could remove step (1) and shift that issue into (2), or remove (1 \& 2) and shift all issues into (3) - morphing this into other approaches. E.g. directly defining a desired force/acceleration behavior in ``task space'' (=operational space control).} + +\info{continuous replanning/re-estimation can also make (1) and (2) reactive.} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Inverse Kinematics} +\slide{Inverse Kinematics}{ + +\item Find $q$ to fulfill $\phi(q) = y^*$ for differentiable fwd kinematics $\phi$. + +\begin{align*} +&\min_{q\in\RRR^n} \norm{q-q_0}^2 \st \phi(q) = y^* \\ +\text{or}\quad&\min_{q\in\RRR^n} \norm{q-q_0}^2 + \m \norm{\phi(q) - y^*}^2 \quad\text{for large $\m$} +\end{align*} + +~ + +\item Solution for linearized $\phi$: +\begin{align*} +q^* +&= q_0 + J^\T (J J^\T + \textstyle\frac{1}{\mu} \Id)^\1 (y^*-\phi(q_0)) +\end{align*} + +~ + +{\tiny\hfill Python Package: \url{https://marctoussaint.github.io/robotic/}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Path Finding \& Trajectory Optimization}{ + +\item Given current $q_0$ and future $q^*$, find a collision free \textbf{path} +\begin{items} +\item Wolfgang H\"onig's \& Andreas Orthey's lecture +\item RRTs, PRMs, under constraints (kinodynamic) +\end{items} + +~\pause + +\item \textbf{Trajectory} opimization +\begin{items} +\item Time continuous formulation: +\tiny\begin{align*} + \min_{q(t)} ~& \int_0^T c(q(t),\dot q(t),\ddot q(t))~ dt ~\st~ q(0)=q_0,~ q(T) = q^*, \dot q(0)=\dot q(T)=0 ~, + \forall_{t\in[0,T]}: \bar\phi(q(t),\dot q(t),\ddot q(t)) \le 0 ~. +\end{align*} + +\item Time-discretized, assuming $k$-order Markov coupling terms (KOMO): +\cit{A tutorial on Newton methods for constrained trajectory optimization and relations to SLAM, Gaussian Process smoothing, optimal control, and probabilistic inference}{Marc Toussaint}{Springer 2017} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Control around a Reference}{ + +\item Use \textbf{Inverse Dynamics} directly +\begin{items} +\item We have $\ddot q^*(t)$ $\to$ map it to controls $u$ directly +\item But what if you're off the reference a bit? \emph{How to steer back?} +\end{items} + +\pause + +\item Use \textbf{PD law} to accelerate back to reference: +\begin{items} +\item Define a PD law $\ddot q^\text{desired} = \ddot q^*(t) + k_p (q^*(t) - q) + k_d(\dot q^*(t) - \dot q)$ with desired PD behavior back to reference +\item Then use Inv dynamics $\ddot q^\text{desired} \mapsto u$ +\item (Also ok, but needs severe tuning: directly define a PD controller $\ddot u = M \ddot q^*(t) + K_p(q^*(t) - q) + K_d(\dot q^*(t) - \dot q)$.) +\end{items} + +\pause + +\item Use \textbf{Riccati} to get an \textbf{Optimal Linear Regulator} around reference +\begin{items} +\item Define optimal control problem, e.g., $\min_{\pi:q,\dot q\mapsto u} \int_0^T c(q(t), \dot q(t), u(t))~ dt + \phi(x(T))$ +\item We can linearize dynamics around reference $\to$ has an analytic solution (Algebraic Riccati eq.) +\item Resulting controller is a ``linear regulator'', i.e., a PD law where matrices $K_p, K_d$ depend on $t$ and are chosen optimally. +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Model-Predictive Control (MPC)} +\slide{Model-Predictive Control (MPC)}{ + + +\item When getting far away from the reference, linearization of Riccati might break, and PD is too simple + +~\pause + +\item Continuously replan ($\sim$ 10-1000Hz): re-solve the optimal control problem +\begin{items} +\item Optimal Control problem can also include task constraints directly, not only following a reference +\item As a compromise: typically limit horizon +\end{items} + +~ + +\cen{\textbf{This is a default way of ``thinking control'' in robotics}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Summary}{ + +~\pause + +\item A robot is an articulated multi-body system +\begin{items} +\item Fwd kinematics: $q \mapsto x$,~ $\dot q \mapsto \dot x$,~ $\ddot q \mapsto \ddot x$ +\item Fwd dynamics: $u \mapsto \ddot q$,~ inv dynamics: $\ddot q \mapsto u$ \end{items} + +~\pause + +\item Standard Control Template: +\begin{items} +\item IK (or constraint solving) to estimate future goal/waypoints +\item Path Finding \& Trajectory Optimization to estimate Reference Motion +\item PD, Linear Regulator, or MPC to control (around the reference) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Challenges} +\slide{How far can we get with this approach?}{ + +~\pause + +\item What did we assume to \emph{know}? +\begin{items} +\item Structure of multi-body system, all shapes, inertias +\item All goals/objectives modelled (=programmed) as differentiable costs/constraints +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Challenge 1: Interacting with the environment}{ + +\item If we only care about the \textbf{robot itself} (all goals/objectives/models concern the robot directly) -- the above it totally fine + +~\pause + +\item Things get challenging when we care about \textbf{interacting with the environment} +\begin{items} +\item Models/goals/objectives of interaction (contact, grasp) are more complicated +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Challenge 1: Interacting with the environment}{ + +\item Example: Locomotion +\begin{items} +\item Interaction: Making contact with the ground to generate ground forces + +\item Robot root is not attached to world, but free floating (complicates dynamics a bit) + +\item Dynamics heavily influenced by ground forces, which are \emph{contact complementary} hard on-off switching of forces at contact $\to$ hybrid/discrete structure, makes dynamics and solvers much much more complicated (hybrid control) +\end{items} + +~\pause + +... more complicated than ``vanilla robot'', but still doable + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Challenge 1: Interacting with the environment}{ + +\item Example: Manipulation +\begin{items} +\item Objects in the environment (part of the ``multibody system'') have their own DOFs, but are NOT ``articulated'' with motors: if not grasped or touched, they cannot move $\to$ their Jacobian $\del_q x_i = 0$ + +\item Hard on-off switching of manipulability; hybrid dynamics \& problem + +\item Dynamics of object motions can be much more complicated than (also free-floating) robot dynamics: friction, stiction, slip, non-point contacts + +\item Waypoint constraints $\phi(x_t)$ much more complicated (correct grasping of complex shape, pushing, throwing) + +\item If objects are deformable, their form becomes DOF (e.g. neural latent code) -- becomes much much more complicated in above approach +\end{items} + +~\pause + +\item In essence, things become much more complicated, but one still \emph{can} write down essential physics equations of object interaction, and use these equations in above approach + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Challenge 2: State Estimation}{ + +\item All of the above requires to estimate states +\begin{items} +\item $q_0$ (includes pose of a mobile robot) +\item $x_i$ (poses of objects in environment) +\item shapes and inertias in the environment, dynamics parameters (e.g.\ friction) +\end{items} + +~ + +\info{Basic state estimation can often also be formulated as optimization problem (e.g.\ graph-SLAM) -- similar to motion optimization: Find estimates (also of past motion) that is \emph{most consistent} with sensor readings; minimze error between real readings and model-predicted readings. (Or as probabilistic inference.)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Relation to Robot Learning}{\label{lastpage} + +\item On the formal/theory side, they share foundations: +\begin{items} +\item Optimal Control formulation $\oto$ Markov Decision Processes \& Reinforcement Learning +\item More generally: optimality formulations $\to$ learning/black-box opt.\ approaches +\end{items} + +~\pause + +\item Components can be \emph{replaced} or \emph{shortcut} by learning: +\begin{items} +\item Dynamic modelling $\oto$ system identification +\item Optimal Control (e.g., MPC, Riccati) can be shortcut by learning $V$- or $Q$-function +\item Need of inverse dynamics can be shortcut by learning $Q$-function instead of $V$-function +\item Constraint solving (also IK) can be shortcut by directly learning a policy or sampler that fulfills constraint +\pause +\item \textbf{Shortcut state estimation:} Avoid all state-based models, learn direct sensor-based models (policies, value functions, planners, dynamics, etc) +\item \textbf{End-to-end:} Shortcut the whole approach by learning images $\mapsto$ torques +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot + diff --git a/RobotLearning/04-machineLearningEssentials.tex b/RobotLearning/04-machineLearningEssentials.tex new file mode 100644 index 0000000..593fa4f --- /dev/null +++ b/RobotLearning/04-machineLearningEssentials.tex @@ -0,0 +1,242 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Machine Learning Essentials} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Machine Learning Essentials}{ + +\item Supervised ML ~ $f_\t: x\mapsto y$ + +~ + +\item Unsupervised ML ~ $p_\t(x)$ \quad (and conditional $p_\t(x|z)$) + +\info{Neglected here: Optimal embeddings, clustering} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Supervised ML} +\slide{Supervised ML}{ + +\item Given data $D=\{(x_i,y_i)\}_{i=1}^n$ and a parameterized $f_\t: x \mapsto y$, find $\t$ + +$$\min_\t \underbrace{\sum_{i=1}^n \ell(y_i, f_\t(x_i))}_\text{(data) loss} ~ + \underbrace{R(\t)}_\text{regularization}$$ + +~ + +~\pause + +\cen{done! \quad That's (supervised) ML} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Loss Functions}{ + +\item Regularizations: +\begin{items} +\item $L_2$ (Ridge): ~ $R(\t) = \norm{\t}_2^2$ +\item $L_1$ (Lasso): ~ $R(\t) = \norm{\t}_1$ +\end{items} + +~\pause + +\item Regression $y\in\RRR^m$: Squared error: $\ell(y, \hat y) = (y-\hat y)^2$ + +\info{Robust variants: Huber loss, Forsyth} + +~\pause + +\item Classification $y \in \{0,..,M\}$ (where $f: x \mapsto f(x)\in\RRR^M$ discriminative values) +\begin{items} +\item Neg-Log-Likelihood: $\ell(y, f(x)) = -\log p(y|x)$ with $p(y|x) = \frac{e^{f_y(x)}}{\sum_{y'} e^{f_{y'}(x)}}$ +\item Hinge: $\ell(y, f(x)) = \sum_{y'\not=y} [1 - (f_{y^*}(x)-f_{y'}(x))]_+$ +\item Cross-Entropy: $\ell(y,f(x)) = -\sum_z h_y(z) \log p(z|x)$ \emph{same as NLL for one-hot-encoding $h_y(z) = [y=z]$} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Parameterized Functions}{ + +\item Linear $f_\t(x) = \t_0 + \sum_{j=1}^d \t_j x_j = \bar x^\T \t$ + +~\pause + +\item Linear in features: $f_\t(x) = \phi(x)^\T \t$ \quad {\tiny (or Hilbert space..)} +\begin{items} +\item Linear: $\phi(x) = (1,x_1,..,x_d)~ \in\RRR^{1+d}$ +\item Quadratic: $\phi(x) = (1,x_1,..,x_d,x_1^2,x_1x_2,x_1x_3,..,x_d^2)~ \in\RRR^{1 + d + \frac{d(d\po)}{2}}$ +\item Cubic: $\phi(x) = + (..,x_1^3,x_1^2x_2,x_1^2x_3,..,x_d^3)~ \in\RRR^{1 + d + \frac{d(d\po)}{2} + \frac{d(d\po)(d\pt)}{6}}$ +\item Also: Radial-Basis Functions (RBF), piece-wise linear +\end{items} + +\cen{~ +\showh[.2]{codepics/quad3Class} +\showh[.3]{codepics/quad3Class2} +%% \showh[.2]{codepics/cubicClass} +%% \showh[.2]{codepics/cubicClass2} +\quad +\showh[.2]{codepics/kernelRidgeClass} +\showh[.3]{codepics/kernelRidgeClass2} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Parameterized Functions}{ + +\newcommand{\nlin}{\underset{\rotatebox{-90}{\tiny $\leftarrow$nlin}}} +\newcommand{\lin}{\underset{\rotatebox{-90}{\tiny $\leftarrow$lin}}} + +\item Neural Nets: Repeating non-linear and linear parts: ~ (this is a 3-layer NN): +$$f_\t(x) = \lin{W_3}~ \nlin\phi\[~ \lin {W_2}~\nlin\phi[~ \lin {W_1} ~x + b_1 ~] + b_2 ~\] + b_3 $$ +\vspace*{-5mm}\begin{items} +\item Non-linear parts: +\begin{items} +\item rectified linear unit (ReLU): $\phi(x) = [x]_+ = \max\{0,x\}$ % = x [x\ge 0]$ +\item leaky ReLU: $\phi(x) = \max\{0.01x, x\}$ % = \begin{cases} 0.01 x & x<0 \\ x & x\ge 0\end{cases}$ +\item sigmoid, logistic: $\phi(x) = 1/(1+e^{-x})$ +%tanh & $\phi(x) = \tanh(x)$ +\item max-pooling, soft-max, layer-norm +\end{items} +\item Linear parts: +\begin{items} +\item Fully connected ($W_i$ is a full matrix) +\item Convolutional +\item Transformer-like (cross-attentions) +\end{items} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item In essense +\begin{items} +\item You define the parameterized function $f_\t$ +\item You define the loss $\ell$ and regularization $R$ +\item You provide the data set $D$ + +~ + +\item An optimizer (analytic for linear models, stochastic gradient otherwise) finds good parameters $\t$ +\end{items} + +~\pause + +\item And you cross-validate to check your hyper-parameter choices + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Unsupervised ML} +\slide{Unsupervised ML}{ + +\item Given data $D=\{x_i\}_{i=1}^n$, learn ``something'' about $p(x)$ + +~\pause + +\item Important setting: parameterized \textbf{autoencoder} $f_\t: x \mapsto z \mapsto x'$, find $\t$ + +$$\min_\t \underbrace{\sum_{i=1}^n \ell(x_i, f_\t(x_i))}_\text{autoencoding loss} ~ + \underbrace{R(\t)}_\text{regularization}$$ + +\begin{items} +\item You learn to reproduce $x$ through a compact \textbf{latent code} $z\in\RRR^h$ ~ (while $x\in\RRR^d$ is high-dimensional) +\item $z$ has high entropy (typically Gaussian) distribution $\to$ you can \textbf{generate} $x'\sim p(x)$ by sampling $z$ and decoding +\item If $f$ is linear, this is called \textbf{Principle Component Analysis} +\item Better: Variational Autoencoder (VAC): Enforces $p(z)$ to have proper distribution. +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example:~ Digits}{ + +\show[.6]{pcaThrees1} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item There are other ideas in unsupervised learning, but the autoencoding objective is a major breakthrough + +~ + +\begin{items} +\item You ``understand'' the structure of data if you can compress and de-compress it +\item Autoencoders do this with powerful NN architectures +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Diffusion Denoising Models}{ + +\item Given data $D$, you want to learn a ``system'' that \textbf{generates} samples $x\sim p_\t(x)$ where $p_\t(x)$ models $D$ + +~\pause + +\item Autoencoders are one approach, Diffusion Denoising Models another: +\begin{items} +\item Train a stepwise stochastic process (Langevin dynamics) to generate samples $x\sim p_\t(x)$ +\item Has its origin in ``energy-based models'' and score matching +\item The step-wite sample generation process is very powerful +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conditional Generative Models}{\label{lastpage} + +\item Given data $D=\{(x_i,c_i)\}_{i=1}^n$ train a \emph{conditional} distribution $p_\t(x|c)$ +\begin{items} +\item We're actually back to Supervised ML $c \mapsto x$ (where $c$ is the input) +\item But \textbf{if $x$ is high-dimensional} (and $c$ low-dim.), the generative model aspect is important: +\item The reconstruction objective enforces the system to find a good latent representation to generate high-dim. $x$ +\item this is complemented by making conditional to $c$ +\end{items} + +$$ +f_\t: \renewcommand{\arraystretch}{.9} +\begin{array}{c@{~}c@{~}c@{~}c@{~}c} +x & \mapsto & z & \mapsto & x' \\ + & & \,\rotatebox{90}{$\mapsto$} & & \\[-1ex] + & & c & & + \end{array}$$ +\small +A loss $\ell(x_i, f_\t(x_i, c_i))$ jointly trains autoencoding $x\mapsto z\mapsto x'$ and conditional generation $c\mapsto z\mapsto x'$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slidesfoot + diff --git a/RobotLearning/05-dynamicsLearning.tex b/RobotLearning/05-dynamicsLearning.tex new file mode 100644 index 0000000..33895eb --- /dev/null +++ b/RobotLearning/05-dynamicsLearning.tex @@ -0,0 +1,874 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint \& Wolfgang H{\"o}nig} + +\renewcommand{\topic}{Dynamics Learning} +\renewcommand{\keywords}{(aka.\ System Identification, Model Learning)} + +\slides + +\input{macros-local} +\providecommand{\bm}[1]{\boldsymbol{#1}} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item I. What is learned? +\begin{items} +\item Incl. which mapping exactly, model assumption, parameterization, loss function +\end{items} + +~ + +\item II. How is the data generated? + +~ + +\item III. Multirotor Examples + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{I. What is learned?}{ + +~\pause + +\show[.9]{robLearn1} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Dynamics Learning -- State-based view}{ + +\item Learning the \emph{state-based} dynamics: + +$$ x_t = f(x_{t\1}, u_{t\1}) \qquad\text{or}\qquad p(x_t \| x_{t\1}, u_{t\1}) $$ + +~\pause + +\item Distinguish three cases: +\begin{items} +\item \textbf{Parameter Estimation:} $f$ is assumed physics with unknown physics parameters $\Th$ +\item \textbf{Full Regression:} $f$ is learned as regression model +\item \textbf{Residual Dynamics:} learn the difference to a nominal physics model +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Dynamics Learning -- Observation-based view}{ + +\small + +\item $x_t$ is the system \emph{state} + +\info{Markov Property: We call a variable \emph{state} if the future is conditionally independent on the past when conditioned on state; $I(\text{future}, \text{past} \| \text{state}) = 0$.} + +\item Sometimes the true state is not observed (or unknown), only observations $y_t$ are available ($y_t$: sensor readings, or \emph{state estimates} from sensors) \anchor{50,-40}{\showh[.3]{robLearn-dynamics}} + +~\pause + +\item We need to use the \textbf{history} of observed $y_t,u_t$ to predict next $y_t$! +\item Distinguish three cases: +\begin{items} +\item \textbf{Autoregression:} Learn a direct history-based model $y_t = f(y_{t-H:t}, u_{t-H:t})$ +\item \textbf{Recurrent Model:} Learn a recurrent model with latent state $h_t$ (e.g.\ LSTM) +\item \textbf{State-space Model:} Jointly learn embedding/decoding $x\mapsto y$ and latent dynamics $x,u\mapsto x'$ (is also a recurrent model) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item In summary, six cases we'll discuss more concretely: +\begin{items} +\item state-based dynamics +\begin{items} +\item physical parameter estimation +\item full regression +\item residual dynamics +\end{items} +\item observation-based dynamics +\begin{items} +\item autoregression (NARX) +\item observation-based dynamics -- recurrent model +\item observation-based dynamics -- state-space model +\end{items} +\end{items} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Why learn the dynamics? +\begin{items}\tiny +\item Given learned dynamics, we can use planning (MPC) or RL against the learned model to generate controllers +\item Examples in literature: Schaal'02, Deisenroth'15 (PILCO!), Finn'17, Driess'23, Schubert'23 +\end{items} + +~\pause + + +\item Quick terminology: +\begin{items}\tiny +\item Dynamics Learning $\oto$ System Identification (in control theory), Model Learning (in model-based RL) +\item In control theory $u_t$ are called \textbf{inputs} and the \emph{observations/measurements} $y_t$ are called \textbf{outputs} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Parameter Estimation} +\slide{State Dynamics -- Parameter Estimation}{ + +\item Assume that dynamics $x_t = f_\Th(x_{t\1}, u_{t\1})$ has unknown physical parameters $\Th$,\pause e.g.: + +~ + +~ + +\show[.5]{franka-sysId1} +\show[.5]{franka-sysId2} + +\citehere{2019-gaz-DynamicIdentificationFranka} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{State Dynamics -- Parameter Estimation}{ + +\item Given data $D=\{(x_t, x_{t\1}, u_{t\1})\}_{t=1}^T$, find parameters + +$$\min_\Th \sum_{t} \norm{x_t - f_\Th(x_{t\1}, u_{t\1})}^2$$ + +~\pause + +\item Sometimes, it is possible to describe $f_\Th$ as linear in $\Th$. See Gaz'19! +\begin{items} +\item Then finding optimal $\Th$ leads to a linear least squares problem. +\item Otherwise: Black-box optimization (CMA-ES) or gradient-based (SGD, Gauss-Newton) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Dynamics Regression} +\slide{State Dynamics -- Full Regression}{ + +\item Learn $f_\t$ directly, using some ML regression, e.g.\ (old-fashioned LWR): + +~ + +\show[.35]{schaal-dyn1} +\show[.4]{schaal-dyn2} + +\citehere{2002-schaal-ScalableTechniquesNonparametric} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{State Dynamics -- Full Regression}{ + +\item Given data $D=\{(x_t, x_{t\1}, u_{t\1})\}_{i=1:n,t=1:T_i}$, find parameters + +$$\min_\t \sum_{t} \norm{x_t - f_\t(x_{t\1}, u_{t\1})}^2$$ + +$\to$ same formulation as parameter estimation, really. + +~\pause + +\item Use supervised ML to minimize regression error + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{State Dynamics -- Full Regression (probabilistic)}{ + +\item Given data $D=\{(x_t, x_{t\1}, u_{t\1})\}_{i=1:n,t=1:T_i}$, find parameters + +$$ \min_\t - \sum_{t} \log p_\t(x_t \| x_{t\1}, u_{t\1}) $$ + +where $p_t(x_t \| x_{t\1}, u_{t\1})$ is a probabilistic regression, e.g.\ Gaussian Process: + +~ + +\show[.4]{gaussianProcess1} +{\tiny\hfill(from Rasmussen \& Williams)} + +\info{Marc Deisenroth's PICLO paper had huge impact: Using learned GP dynamics to derive optimal controls.} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Residual Dynamics} +\slide{State Dynamics -- Residual Dynamics}{ + +\item Given a nominal dynamics $f_M$ (e.g., assumed physics), learn a residual model $f_\t$ to minimze + +$$\min_\t \sum_{t} \norm{x_t - [f_M(x_{t\1}, u_{t\1}) + f_\t(x_{t\1}, u_{t\1})]}^2$$ + +~\pause + +\item Examples: Gaz'19, Multirotor Examples + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Observation-based models (Autoregression, Recurrent, State-Space)} +\slide{Observation-based Dynamics -- Autoregression (NARX)}{ + +~ + +\show[.5]{narx} + +\citehere{1997-siegelmann-ComputationalCapabilitiesRecurrent} + +\begin{items} +\item NARX=``Autoregression with controls'' \quad our notation: $y_t = f_\t(y_{t\myminus H:t\1},u_{t\myminus H:t\1})$ +\item developed in time-series modelling, sequence modelling +\end{items} + +\pause + +\item How long does the history $H$ have to be? +\pause +\item What's the modern version of autoregression? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Observation-based Dynamics -- Autoregression (Transformers)}{ + +~ + +\show[.5]{transformer-dyn1} +\show[.5]{transformer-dyn2} + +\citehere{2023-schubert-GeneralistDynamicsModel} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Observation-based Dynamics -- Recurrent Model}{ + +\small + +\item Rather than giving the model a history as input, it should \emph{learn} to memorize relevant information, i.e., learn a latent representation for relevant information $\to$ recurrent NN + +\pause + +\item Train a latent representation $h_t$ to consume history information and predict $y_t$ + +~ + +\show[.5]{Recurrent_neural_network_unfold} +\hfill{\tiny (Wikipedia; change in notation: $x\leadsto (y,u), o\leadsto y$)} + +\medskip + +\item The most common NN architecture is LSTM (better: Gated Recurrent Units): + +\cen{\showh[.3]{LSTM}\quad{\tiny (Hochreiter, Schmidthuber, 1997)}} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Observation-based Dynamics -- State-Space Model}{ + +\item Also a recurrent model, but explicitly assumes latent state $x_t \in \RRR^d$ + +~ + +\show[.6]{dyn-stateSpace1} +\show[.3]{dyn-stateSpace2} + +\citehere{2018-doerr-ProbabilisticRecurrentStatespace} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Observation-based Dynamics -- State-Space Model}{ + +\item Jointly train an embedding/decoding $g: x\mapsto y$ and latent dynamics $f:x,u\mapsto x'$: +\begin{align*} +\begin{array}{c@{}c@{~}c@{~}c@{~}c} +x &, \mathbf{u} \overset{f}\mapsto & x' \\[-1ex] +\!g \rotatebox[origin=c]{-90}{$\mapsto$} ~~& & \!\!g \rotatebox[origin=c]{-90}{$\mapsto$}~~ \\[-1ex] +\mathbf{y} & & \mathbf{y'} + \end{array} +\end{align*} + +\item Only $u_{1:T}, y_{1:T}$ are observed! Train model to maximize data likelihood, +$$\log p(y_{1:T} \| u_{1:T}) \ge \text{Evidence Lower Bound (ELBO)} $$ +\begin{items} +\item This method trains both, $g$ and $f$, and implicitly \emph{infers} a notion of state $x_t$ +\item Technically, use SGD to maximize ELBO +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item More Literature for the six cases provided at the end of these slides... + +} +%% \slide{}{ + +%% In +%% \citehere{1997-siegelmann-ComputationalCapabilitiesRecurrent} + +%% \begin{bibunit}[unsrturl] +%% %\setcounter{enumiv}{#1} %%muss in bu?.bbl rein! +%% %\renewcommand{\refname}{\vspace{-\parskip}}\let\chapter\phantom \let\section\phantom +%% \nocite{*} +%% \putbib[b1-DynamicsLearning] +%% \end{bibunit} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{II. How is the data generated?}{ + +~\pause + +\item Importance of data generation is (mostly) under-acknowledged in papers! + +~ + +\item Ideas to generate \emph{good} data may be more important than ML method details + +~\pause + +\item What is \emph{good} data? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Data Quality} +\slide{Good Data -- in Linear Regression}{ + +\item Reconsider regression with linear model $f_\t(x) = \bar x^\T \t$, loss +$$L(\t) = \sum_i (y_i - f_\t(x_i))^2 ~+~ \l\norm{\t}^2$$ +and solution +$$\t^* = (X^\T X + \l\Id)^\1 X^\T y ~.$$ + +\item What is good data? + +\pause + +\item What is the estimator variance $\Var{\t^*}$? +\pause +\begin{items} +\item Assume data with variance $\Var{y}=\s^2 \Id_n$ +\pause +\item Then $\Var{\t^*} = (X^\T X+\l I)^\1 \s^2$ +\pause +\item Smaller variance via larger $\l$ (but then larger bias), or \textbf{larger $\det(X^\T X)$}! +\end{items} + +\pause + +\item Good data means reducing variance (=randomness) of estimated model! +\begin{items} +\item large $\det(X^\T X)$ $\oto$ cover input space!\\ +\info{Large estimator variance $\oto$ ``Overfitting'': Reducing variance prevents overfitting. Hastie has great section on \emph{shrinkage} methods (=regularization)} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Good Data -- in Linear System Identification}{ + +~ + +\show[.5]{control-sysId} + +{\urlfont\url{https://ethz.ch/content/dam/ethz/special-interest/mavt/dynamic-systems-n-control/idsc-dam/Lectures/Signals-and-Systems/Lectures/Fall2018/Lecture11_sigsys.pdf} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Frequency Excitation} +\slide{Good Data -- in Linear System Identification}{ + +\small +\item Cover the input space $\to$ cover frequency space +\begin{items} +\item Linear dynamics can be Laplace transformed into frequency domain: +$$Y(s) = H(s)~ U(s)$$ +\item $U(s)$ are controls; $Y$ observations; $H(s)$ is called \textbf{transfer function} (complex) +\item $H(s)$ can be probed by sending a single control frequence ($U(s) = \d_{ss'}$) +\end{items} + +\show[.4]{control-sysId2} + +\item In essence: stimulate the system with control frequencies $u(t) = \cos(k t / \tau_0)$ for $k=0,1,..$ + +\pause + +\item Franka SystemId paper [Gaz'19]: Sinusoidal reference motions (Eq.\ 31): +$$ \dot q_{i,\text{des}(t)} = A_i \sin\left(\textstyle\frac{2\pi}{T_i}~ t\right)\comma i\in\{1,..,n\} $$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Good Data -- in general}{ + +~ + +\item Think about good state space coverage! ~ (in all variants of Robot Learning) +\begin{items} +\item Frequency coverage in control systems +\item Exploration in RL beyond $\e$-greedy +\item Long-term structured variation (at least pink noise, Ornstein-Uhlenbeck) instead of Brownian motion +\item Explicit exploration: Novelty seeking, information seeking, exploration bonus, Bayesian RL +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{III. Background: Multirotors}{ + +\twocol[.02]{.6}{.35}{ + + +\item State $\mathbf{x}=(\mathbf{p}, \mathbf{q}, \mathbf{v}, \mathbf{\omega})^\T$ + +\item Control $\mathbf{u}_{\Omega}=(\Omega_1,\hdots,\Omega_n)^\T$ + +\item Forces $\mathbf{f} = \sum_i c_{f_i} \Omega_i \mathbf{z}_{\Omega_i} = \mathbf{F} \mathbf{u}_{\Omega}$, + +\item Torques $\bm{\tau} = \sum_i ( c_{f_i} \mathbf{p}_{\Omega_i} \times \mathbf{z}_{\Omega_i} + c_{\tau_i} \mathbf{z}_{\Omega_i} ) {\Omega}_i = \mathbf{M} \mathbf{u}_{\Omega}$ + +\item Dynamics +$$ + \begin{array}{l} + \Dot{\mathbf{p}} = \mathbf{v}, \quad\quad\quad\quad~~\, + % + m\dot{\mathbf{v}} = m\mathbf{g} + \mathbf{R}(\mathbf{q}) \mathbf{F} \mathbf{u}_{\Omega} +\mathbf{f}_a,\\ + % + \Dot{\mathbf{q}} = \cfrac{1}{2} \, \mathbf{q} \circ \begin{bmatrix} 0 \\ \bm{\omega} \end{bmatrix}, + % + \mathbf{J}\Dot{\bm{\omega}} = -\bm{\omega} \times \mathbf{J}\bm{\omega} + \mathbf{M} \mathbf{u}_{\Omega} + \bm{\tau}_a, + \end{array} +$$ + +}{ +% from 10.1109/MRA.2012.2206474 +\showh[1]{mahony2012fig2} +{\hfill\tiny [Mahony, $\sim$2012]} +} + +\info{Propellers create forces and torques, rest is Newton-Euler} + +\info{$\mathbf{f}_a$, $\bm{\tau}_a$ can model drag, wind, aerodynamic interactions etc.} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: What is learned?}{ + +\item Parameters that are hard to measure: inertia $\mathbf{J}$, motor params ($c_{f_i}$, $c_{\tau_i}$, delay) + +~ + +\item Residuals $\mathbf{f}_a$, $\bm{\tau}_a$ + +\info{potentially as a function of the state (e.g., drag) or environment (e.g., downwash)} + +\info{potentially non-Markovian, i.e., a function of a history of states} + +~ + +\item Full dynamics model not so much --- Why? + +\pause + +\info{Impossible to gather data from all states safely} + +\info{Rotational symmetries are surprisingly difficult to learn} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it ``learned''? (Classic)}{ + +Estimate parameters with dedicated experiments + +\item Inertia: Swing body in different positions and record motion; solve an optimization problem + +\showh[0.35]{foerster_fig2_2a} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it ``learned''? (Classic)}{ + +Estimate parameters with dedicated experiments + +\item Motors: Use thrust stand (often for a single motor + propeller) + curve fitting + +\twocol{.6}{.35}{ + +\showh[0.6]{foerster_fig3_2} + +}{ + +\showh[0.6]{foerster_fig3_5} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it ``learned''? (Classic)}{ + +Estimate parameters with dedicated experiments + +\item Drag: Use wind tunnel + curve fitting with ``guessed'' models + +\showh[0.4]{foerster_fig4_8} + +\citehere{2015-forster-SystemIdentificationCrazyflie} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it ``learned''? (Classic)}{ + +Estimate parameters with dedicated experiments + +~ + +\item Is this learning? + +\pause + +\info{Yes, since curve fitting is extensively used} + +~ + +\item Advantages and Disadvantages? + +\pause + +\info{Pros: Physics intuition (explainability); can improve ``important'' parameters if needed; no need to have a flying system} +\info{Cons: Labor and equipment intensive; does not capture unmodeled terms; does not capture the robot as a system} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it learned? (Parameter Estimation)}{ + +\item Assumption: we have a system that can already fly; Can we do better? + +\info{Strong assumption, since controllers need models, too} + +\item Direct (analytical) optimization + +\citehere{2024-eschmann-DataDrivenSystemIdentification} + +\info{Will skip the discussion here} + +\item Probabilistic formulation (Gaussian noise) + +\citehere{2016-burri-MaximumLikelihoodParameter} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it learned? (Maximum Likelihood)}{ + +% \item Assumption: we have a system that can already fly, can we do better? + +% \info{Strong assumption, since controllers need models, too} + +\item Given: Dataset with trajectory (position, orientation, motor speed), $\mathbf{Z}$; measurements (IMU data, motor commands), $\mathbf{U}$ +\item Goal: + +$$ +\hat{\mathbf{X}}_{ML}, \hat{\mathbf{\theta}}_{ML} = \argmax_{\hat{\mathbf{X}}, \hat{\mathbf{\theta}}} p(\mathbf{Z}, \mathbf{U}, \hat{\mathbf{X}}, \hat{\mathbf{\theta}}) +$$ + +(parameters to estimate $\hat{\mathbf{\theta}}$; state estimates $\hat{\mathbf{X}}$; probability $p$) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it learned? (Maximum Likelihood)}{ + +\item Assumptions to simplify $p(\mathbf{Z}, \mathbf{U}, \hat{\mathbf{X}}, \hat{\mathbf{\theta}})$ +\begin{itemize} +\item White noise (IMU, motors) +\item Access to a prior trajectory $\rightarrow$ linearize around it and reason about ``residuals'' instead +\end{itemize} +\item $p(\cdot)$ becomes a mixture of Gaussians $\rightarrow$ can be maximized by minimizing the negative log-likelihood + +\info{essentially a least square problem} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it learned? (Maximum Likelihood)}{ + +\show[0.5]{2018-burri-FrameworkMaximumLikelihood-alg1} + +where $\bar y=(\hat{\mathbf{X}}, \hat{\mathbf{\theta}})^\T$ from before + +\citehere{2016-burri-MaximumLikelihoodParameter} +\citehere{2018-burri-FrameworkMaximumLikelihood} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it learned? (Supervised Deep NN)}{ + +\item Basic models do not capture ``complicated'' aerodynamic effects + +~ + +\item Blade Element Momentum (BEM) work for single rotors (but high computational effort) + +~ + +\item Can we use (more) data to use function approximation instead?\\ Challenges: + \begin{itemize} + \item Training/Data efficiency + \item Inference speed + \end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it learned? (Supervised Deep NN)}{ + +\item Key idea: learn the ``residual physics'', only + +\info{Input: past $h$ states and motor commands $\rightarrow$ not Markovian!} +\info{Output: forces and torques that cannot be explained by the basic model(s) ($\mathbf{f}_a$, $\bm{\tau}_a$)} + +~ + +\show[0.6]{2021-bauersfeld-NeuroBEMHybridAerodynamic_fig2} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: How is it learned? (Supervised Deep NN)}{ + +\item ML method: Supervised training --- Where do the labels come frome? + +\pause + +\info{Solve dynamics for $\mathbf{f}_a$, $\bm{\tau}_a$} + +~ + +\item Architecture + \begin{itemize} + \item Input $h=20$ (past 50 ms) + \item temporal convolutional (TCN) with 25k parameters (MLP and other parameters in ablation) + \end{itemize} + +~ + + \item Main takeaway: strong model/physics priors are better + + +\citehere{2021-bauersfeld-NeuroBEMHybridAerodynamic} + +\info{Video: {\urlfont\url{https://youtu.be/Nze1wlfmzTQ}}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: Data Collection}{ + +\item Motion capture system for accurate position/orientation state estimates + +\info{Sampling at 500 Hz, submillimeter accuracy} +\info{Very costly: EUR 20k -- 100k} + +\item On-board data logging of IMU + +\info{Sampling at 1000 Hz, very noisy} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: Data Preprocessing}{ + +\item Two data sources $\rightarrow$ Synchronization needed (incl. clock skew) +\begin{itemize} + \item Online Option: Send data to one computer using a low-latency link (and account for link delay) + \item Offline Option: Solve optimization problem for clock skew and bias +\end{itemize} + +~ + +\item Some derivatives (e.g., $\mathbf{v}$) are not directly observable +\begin{itemize} + \item Online Option: Use data from an online filter (e.g., Extended Kalman Filter) + \item Offline Option: Interpolate data (e.g., using splines), use analytical solution of fitted spline +\end{itemize} + +~ + +\item Motor delays (``easy'' to measure) +\begin{itemize} + \item Option 1: Include it in model explicitly + \item Option 2: Shift/filter data accordingly +\end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Multirotors: Data Quantity}{ + +\item Maximum Likelihood: 45 sec flight data ``The pilot was careful to excite all axes, especially in yaw direction.'' + +\item NeuroBEM: 96 flights, 75 min flight data (1.8M data points) (up to 18 $m/s$ and 47 $m/s^2$) + +} + + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \slide{IV. Applications}{ +% % [WH ]I think we can remove this slide now? + +% papers \& videos + +% \item NeuroBEM \url{https://youtu.be/Nze1wlfmzTQ} + +% % Should we talk about bootstrapping: learn dynamics from real data, use it to train in simulation via RL, deploy? + +% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Literature}{ + +\item State Dynamics -- Parameter Estimation: + +\citehere{2015-forster-SystemIdentificationCrazyflie} + +\citehere{2024-eschmann-DataDrivenSystemIdentification} + +\citehere{2018-burri-FrameworkMaximumLikelihood} + +\citehere{2019-gaz-DynamicIdentificationFranka} + +\item State Dynamics -- Full Regression: + +\citehere{2002-schaal-ScalableTechniquesNonparametric} + +\citehere{2015-deisenroth-GaussianProcessesDataEfficient} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Literature}{ + +\item Observation-based Dynamics -- Autoregression (NARX): + +\citehere{1990-chen-NonlinearSystemIdentification} + +\citehere{1997-siegelmann-ComputationalCapabilitiesRecurrent} + +\item Observation-based Dynamics -- Recurrent Model (also visual!): + +\citehere{2021-bauersfeld-NeuroBEMHybridAerodynamic} + +\citehere{2017-finn-DeepVisualForesight} + +\citehere{2023-driess-LearningMultiobjectDynamics} + +\citehere{2023-schubert-GeneralistDynamicsModel} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Literature}{ + +\item State-Space Models (learning a \emph{state} dynamics based on only observations): + +\citehere{2018-doerr-ProbabilisticRecurrentStatespace} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{not mentioned...}{\label{lastpage} + +\begin{items} +\item Constrained ML models (Geist) +\item Embed to Control +\item Koopman embedding +\item Dual control +\item Safe Exploration +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b1-DynamicsLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/06-ImitationLearning.tex b/RobotLearning/06-ImitationLearning.tex new file mode 100644 index 0000000..fd20a43 --- /dev/null +++ b/RobotLearning/06-ImitationLearning.tex @@ -0,0 +1,555 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Imitation Learning} +\renewcommand{\keywords}{Learning from Demonstration, Behavior Cloning, Direct (Interactive) Policy Learning, Traj.~Dist.~Learning, Constraint Learning, (excluded: Inv. RL)} + +\slides + +\input{macros-local} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{General Idea}{ + +\item Given expert demonstration data $D=\{(x^i_{1:T_i}, u^i_{1:T_i})\}_{i=1}^n$ +{\small\begin{align*} +i:& \quad\text{episode/demonstration} \\ +x^i_{1:T_i}:& \quad\text{$i$th state trajectory} \\ +u^i_{1:T_i}:& \quad\text{$i$th control trajectory} +\end{align*} +without external rewards/objectives/costs defined + +} +$\to$ extract the ``relevant information/model/policy'' to reproduce demonstrations + +~\pause + +\item Reproducing could mean various things +\begin{items} +\item Move along similar trajectories (e.g.\ imitate a gesture) +\item Reproduce the \emph{effect} of the demonstration (manipulation, flight maneuver, no traffic collisions) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Examples}{ + +%% [[todo]] +%% flight maneuvers +%% table tennis +%% grasping +%% coffee making +%% suturation (surgery sewing) +%% battery insertion + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Early Work} +\slide{Early Work}{ + +\show[.8]{shi-l5p12} +\hfill{\tiny (Shi's lecture 5)} + +{\urlfont\url{https://www.youtube.com/watch?v=ntIczNQKfjQ}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Early Work}{ + +\small + +\item Behavior Cloning (later called so): %\anchor{20,-20}{\showh[.1]{alvinn1}\showh[.1]{alvinn2}} + +\citehere{1988-pomerleau-AlvinnAutonomousLand} + +\item Early review paper: + +\citehere{2003-schaal-ComputationalApproachesMotor} +\info{clarifies direct policy learning (BC) vs. trajectory imitation (and auto-control); mentiones work from the 60ies, but esp.\ 90ies} + +\item Early work named \textbf{Learning from Demonstration} (or Programming by Demonstration) + +\citehere{1997-atkeson-RobotLearningDemonstration} + +\info{Idea: Avoid explicit programming $\to$ teach by demonstration. See also entries in ``Handbook of Robotics''...} + +\item Another early survey: + +\citehere{2009-argall-SurveyRobotLearninga} +\info{Distinguishes 3 kinds: behavior cloning, use data to learn dynamics (system identification), learn plans (nowadays uncommon)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Types of Imitation Learning +\begin{items} +\item Behavior Cloning %~ {\tiny[deterministic or probabilistic (energy/diffusion) policy learning]} + +\item Trajectory Distribution Learning (\& Constraint Learning) +%~ {\tiny[e.g.\ GMMs, ProMPs, keypoints, flow, Neural descriptor fields]}} + +\item Direct (Interactive) Policy Learning %~ {\tiny[DAgger]} + +\item Inverse Reinforcement Learning (not covered today) %~ {\tiny[implicit reward learning]} +\end{items} + +~\pause + +\item Data Generation +\begin{items} +\item Distributional (domain) shift, ``compound errors'' in imitation, on-/off-policy +\item Data augmentation or interactive data aggregation +\item Collection techniques: Tele-Operation, Kinesthetic Teaching, Human Demonstrations +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Behavior Cloning} +\slide{Behavior Cloning}{ + +\item Formulate Imitation Learning literally as \emph{Supervised ML} + +\item Given data $D=\{(x^i_{1:T_i}, u^i_{1:T_i})\}_{i=1}^n$, find +\begin{align} +\min_\t \sum_{i,t} \ell(u^i_t, \pi_\t(x^i_t)) ~, +\end{align} +where $\pi_\t: x \mapsto u$ is a deterministic policy (e.g.\ NN) mapping states to controls + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Behavior Cloning}{ + +\show[.8]{shi-l5p12} +\hfill{\tiny (Shi's lecture 5)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Behavior Cloning}{ + +\item Behavior Cloning literally imitates the demonstrated mapping $x\mapsto u$ + +~\pause + +\item Issues: +\begin{items} +\item But does that also imitate the \emph{long term behavior} or \emph{eventual effect} of the demonstrations? + +(Ignores distributional shift.) + +\item Does it capture the ``essence'' of what is demonstrated? + +\item Can it deal with multi-modal demonstrations? ($\to$ next week: multi-modal policies) +\end{items} + +%% ~\pause + +%% \item Next week: Learn a probabilistic policy $\pi_\t(u \| x)$ -- the distribution of controls in $x$ +%% \begin{items} +%% \item Demonstrations are very often multi-modal -- mean regression may lead to non-sense +%% \item Huge advances in leveraging generative AI for that purpose (diffusion models, generative sequence models) $\to$ next lecture +%% \end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Trajectory Distribution Learning} +\slide{Trajectory Distribution Learning}{ + +\info{This is not common terminology, and seemingly skipped in other Imitation Learning lectures -- unfortunately. I think this captures an essence of the problem.} + +\item What does it mean to capture the ``essence'' of data? +\pause +\begin{items} +\item Learn a \emph{distribution model} $p_\t(x_{1:T})$ of demonstrated trajectories! +\begin{align} +\max_\t ~ \prod_i p_\t(x^i_{1:T_i}) \quad\text{(likelihood maximization (LM))}~, +\end{align} +where $p_\t$ is some model class powerful enough to represent ``essence'' +\end{items} + +%% (e.g.\ Auto-encoding, compression, latent representation learning, distribution learning, unsupervised learning + +~\pause + +\item What are ``powerful'' models? +\begin{items} +\item Transformer models, diffusion models +\item But we'll start with very basic Gaussian models +\item ...and discuss models specifically for robotic manipulation +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Trajectory Distribution Learning: GMMs}{ + +\cen{\showh[.4]{gmms1}\qquad\showh[.4]{gmms2}} + +\citehere{2007-calinon-IncrementalLearningGestures} + +\begin{items} +\item Embed trajectories $x_{1:T}$ in ``space-time'' $\{ (t, x_t) \}_{t=1}^T$ +\item Fit a density estimator to $p(t,x_t)$ ~ (easiest: Gaussian Mixture Model (GMM), LM well studied) +\item Can be translated to control policy by reading out conditional $p(x|t)$ and using inverse dynamics +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Trajectory Distribution Learning: GMMs}{ + +\begin{items} +\item A simple way to describe the distribution of demonstrated trajectories + +\item Variance of learned $p(x|t)$ captures ``consistent bottlenecks'' in demonstrations + +\info{Is that a key structure in demonstrations? Search also ``Calinon constraints''} + +\item Can be combined with Dynamic Time Warping to temporally align demonstrations + +\item GMM approach is around for $\sim 20$ years +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Trajectory Distribution Learning: ProMPs}{ + +~%\info{ProMP: Probabilistic Movement$|$Motion Primitive} + +\cen{\showh[.65]{promps1}\quad\showh[.35]{promps2}} + +\citehere{2013-paraschos-ProbabilisticMovementPrimitives} + +~ + +\begin{items} +\item Nothing but (prob.) linear regression $t\mapsto x_t$ with basis function features ~ (LM$\oto$regression) +\item Very simple distribution model over +trajectories \info{could use GPs to kernelize} +\item Related to Inference Control (AICO, ICML'09), Path Integral methods (RSS'12) +\item Great flexibility to condition, compose, and blend +\item Somewhat superseeds earlier work on learning movement primitives from demonstration + +\info{typically Dynamic Movement Primitives (DMPs, Schaal et al'03)} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Constraints \& Feature Learning} +\slide{Trajectory Distribution Learning: Features \& Constraints}{ + +\item Think about Manipulation! + +~\pause + +\cen{\showh[.45]{keypoints1}\qquad\showh[.35]{keypoints2}} + +\citehere{2022-manuelli-KPAMKeyPointAffordances} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Trajectory Distribution Learning: Features \& Constraints}{ + +\item Think about Manipulation! + +\show[.7]{neuralDescFields} + +\citehere{2022-simeonov-NeuralDescriptorFields} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Trajectory Distribution Learning: Features \& Constraints}{ + +\item Think about Manipulation! + +~ + +\show[.7]{constraints} + +\citehere{2022-ha-DeepVisualConstraints} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\slide{Trajectory Distribution Learning: Features \& Constraints}{ + +\item Connects to large body of literature: +\begin{items} +\item More examples: FlowBot3D, UMPNet, Bi-KVIL, "Waypoint-based imitation learning", .. +\pause +\item Human Activity Modelling, Action Segmentation: + +\show[.5]{Improving1} +\end{items} + +~\pause + +\item What really is the essence to extract from demonstrations? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Back to Behavior Cloning... + +~\pause + +\item Issues: +\begin{items} +\item But does that also imitate the \emph{long term behavior} or \emph{eventual effect} of the demonstrations? + +\textbf{(Ignores distributional shift.)} + +\item Does it capture the ``essence'' of what is demonstrated? +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Distributional Shift} +\slide{Distributional (Domain) Shift}{ + +\pause + +\item Standard ML: ~ $x,y \sim p(x,y)$ \textbf{i.i.d.}; ~ same $p$ for trains \& test + +~\pause + +\item Sequential Decision Processes: own policy $\pi$ influences test distrib.\ $p_\pi(x_t)$! +\pause +\begin{items} +\item Fundamental difference between learning in sequential decision processes and Supervised ML! +\item Also in off-policy \& offline RL: + We \emph{train} a policy (or $Q,V$-function) with losses relative to $p_{\pi_\b}(x_t)$ with \emph{behavior policy} ($\pi_\b$) +\item Generally called distributional shift, or Out-of-Distribution (OOD) testing +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Distributional Shift in Behavior Cloning}{ + +\item When we train policy $\pi_\t$ in BC, we minimize +\begin{align} +\min_\t \sum_{i,t} \ell(u^i_t, \pi_\t(x^i_t)) ~\oto~ \min_\t \Exp[\pi^*]{\ell(u, \pi_\t(x))} +\end{align} +but when using the policy, we generate fully different distribution + +~\pause + +\show[.3]{offtrack1} +\hfill{\tiny Also called \textbf{Compound Error} \qquad (Shi's lecture 5)} + +~\pause + +\item What we should train is this:! +\begin{align} +\min_\t \Exp[\pi_\t]{\ell(\pi^*(x), \pi_\t(x))} +\end{align} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Distributional Shift in Behavior Cloning}{ + +\item BC formulates a supervised ML problem, but in view of testing, it is not: + +~ + +\show[.7]{offtrack2} +\hfill{\tiny (Shi's lecture 5)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{How address the Distributional Shift?}{ + +\pause + +\item Ensure the data better covers the eventual $p_\pi(x_t)$ of trained $\pi$ +\pause +\begin{items} +\item Enforce the expert to demonstrate also for non-optimal states (cover also non-expert situations) +\item Collect data interactively at exactly the states visited by $\pi$ ~ (DAgger) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Enforcing wider expert demonstrations}{ + +\item Occasionally perturb the expert! Add noise! + +~ + +\cen{\showh[.5]{noise1}\showh[.5]{noise2}} +\hfill{\tiny (Shi's lecture 5)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{DAgger} +\slide{DAgger}{ + +\cen{\showh[.5]{dagger1}\showh[.5]{dagger2}} + +\citehere{2011-ross-ReductionImitationLearninga} + + +{\urlfont\url{https://www.youtube.com/watch?v=V00npNnWzSU}} + +~\small + +\item This repeatedly collects data from the current $\pi$, to approximate $\min_\t \Exp[\pi]{\ell(\pi^*(x_t), \pi_\t(x_t))}$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item From Yue's ICML'18 tutorial: + +\show{yue} + +~\small + +\item Crucial point: For DAgger we have a very different setting: Access to the environment (testing rollouts), interactively querying the expert. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Data Collection}{ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Data Collection (TeleOp, Kinesthetic, MoCap, Video)} +\slide{Data Collection}{ + +\item We've covered the theoretical aspect concerning distributional shift + +\item Data source: +\begin{items} +\item Tele-Operation +\item Kinesthetic Teaching +\item Human Demonstrations \& Motion Capture +\item Videos Only +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Tele-Operation: Aloha}{ + +\show{aloha1} + +\citehere{2023-zhao-LearningFineGrainedBimanualc} + +{\urlfont\url{https://tonyzhaozh.github.io/aloha/}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Kinesthetic Teaching}{ + +\show{kinesthetic} + +\hfill{\ttiny Learning movement primitives for force interaction tasks (Kober et al'15)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Human Demonstrations \& Motion Capture}{ + +\centering + +\twocol{.3}{.5}{ +\showh{mocap} +}{ +\citehere{2008-do-ImitationHumanMotion} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Human Demonstrations From Video Only}{ + +\show[.6]{avid} + +\citehere{2020-smith-AVIDLearningMultiStage} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{\label{lastpage} + +\item This whole lecture talked about states! Same for observations $y_t$ only! +\begin{items} +\item History-input policies ~ (analogous to autoregressive dynamics) +\item Recursive (RNN) policies ~ (analogous to recursive dynamics) +\item Transformer policies ~ (sequence models) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b2-ImitationLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/07-ImitationLearning2.tex b/RobotLearning/07-ImitationLearning2.tex new file mode 100644 index 0000000..220eb89 --- /dev/null +++ b/RobotLearning/07-ImitationLearning2.tex @@ -0,0 +1,601 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Wolfgang H{\"o}nig} + +\renewcommand{\topic}{Imitation Learning 2} +\renewcommand{\keywords}{Inspired by Guanya Shi's Lecture 6} + +\slides + +\input{macros-local} +\providecommand{\bm}[1]{\boldsymbol{#1}} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Recap}{ + +\item Imitation Learning + \begin{itemize} + \item Given: expert demonstration data $D=\{(x^i_{1:T_i}, u^i_{1:T_i})\}_{i=1}^n$ + \item Goal: reproduce demonstrations + \end{itemize} + +\item Main Challenges: + + \begin{itemize} + \item Distributional Domain Shift \hspace{1cm} Solutions: + \begin{itemize} + \item Behavior Cloning: add noise + \item DAgger: interactively add additional \emph{expert} data + \item Trajectory Distribution Learning: rely on controller + \end{itemize} + + \item Data Collection \hspace{1cm} Solutions: + \begin{itemize} + \item Humans: teleoperation, kinesthetic teaching, motion capture, videos + \pause + \item \textbf{high-effort computations} (w.r.t. to computation or observation), e.g., \emph{Privileged Teacher} + \end{itemize} + \end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline Today}{ + +\item Data Collection: Privileged Teacher + +~ + +\item Generative Models + +~ + +\item Case Studies + + \begin{itemize} + \item Quadrotor Acrobatics + \item Learning from ALOHA data + \item Transfer Learning + \end{itemize} + + % Experts that aren't human + % quadrotors + % Learning from ALOHA data + % Hybrid cases (Alpha Go, relationship to decision making (e.g., Ichter paper)) +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Privileged Teacher} +\slide{Privileged Teacher}{ + +\item So far we considered to directly learn $\pi_\t: x \mapsto u$ (or $\pi_\t: y \mapsto u$) +\item $y$ might be high-dimensional or unstructured (e.g., RGBD sequences) + +\item Key insight: First learn \emph{privileged} policy (``teacher''); use it to generate data for the ``student'' + \begin{enumerate} + \item Learn $\pi_{\t_1}: z \mapsto u$ (where $z$ contains some ``ground truth'' data, e.g., states, traffic lights, neighbor behavior) + \item Use $\pi_{\t_1}$ to generate data $D=\{(x^i_{1:T_i}, u^i_{1:T_i})\}_{i=1}^n$ + \item Learn $\pi_{\t_2}: x \mapsto u$ + \end{enumerate} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Privileged Teacher}{ + +\show[.65]{learningByCheating} + +~ + +\show[.7]{learningByCheatingFig1} + +~ + +\citehere{2020-chen-LearningCheating} +{\urlfont\url{https://youtu.be/u9ZCxxD-UUw}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Privileged Teacher}{ + +\item Pros and Cons compared to one-stage IL? + +~ + +\pause + +\twocol{.5}{.5}{ + Pros: + \begin{itemize} + \item Second stage can be easily trained with DAgger + \item Data augmentation simple + \end{itemize} +}{ + Cons + \begin{itemize} + \item Simulation-focused + \item Hierarchical approach (requires domain knowledge) + \end{itemize} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Generative Models}{ + +\item Generative Model: + \begin{itemize} + \item Input: Data $D=\{d^i\}_{i=1}^n$ + \item Learning: find distribution $p_\t$ such that $d^i \sim p_\t$ + \item Inference: generate novel data $d^* \sim p_\t$ + \end{itemize} + +~ +\pause +% Interaction +\item What generative models do you know? +\pause +\info{GAN, VAE, Diffusion, for details see:} + +\citehere{2024-bishop-DeepLearningFoundations} + +~ + +\item Relationship to IL + \begin{itemize} + \item If $D=\{(x^i_{1:T_i}, u^i_{1:T_i})\}_{i=1}^n$, we can learn \emph{conditional} distribution $p_\t(u_t | x_t)$ + \item Can also generate solution trajectories (esp. in combination with ``classic'' methods) + \end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{GAN} +\slide{Generative Adverserial Network (GAN)}{ + +\item Train two networks (generator and discriminator) + +\twocol{.5}{.4}{ +\show[0.9]{bishop_fig17_1} +}{ +\citehere{2024-bishop-DeepLearningFoundations} +\citehere{2017-weng-GANWGAN} +} + +\item Loss function ($d_\phi$ should be 1 for real data): +\begin{align*} +\max_{\omega} \min_{\phi} -\frac{1}{N_{data}} \sum_{n\in \text{data}} \ln d_\phi(x_n) - \frac{1}{N_{gen}} \sum_{n\in\text{gen}} \ln (1-d_\phi(g_\omega(z_n))) +\end{align*} + +% Interaction: what is this loss function -> cross-entropy for binary classification + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{GAN + Imitation Learning = (GAIL)}{ + +\twocol{.65}{.3}{ +\show[0.9]{GAIL1} +\show[0.9]{GAIL2} +}{ +\item Generator is a policy $x\mapsto u$\\ +\item Discriminator has $x, u$ as input +\item Steps: +\begin{enumerate} + \item \textbf{Rollout/Sample trajectories using generator (=policy)} + \item Update discriminator + \item Update policy +\end{enumerate} +} + +\citehere{2016-ho-GenerativeAdversarialImitationa} + +% Interaction: How is this different from DAgger? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{VAE} +\slide{Variational Autoencoder (VAE)}{ + +\item Train two networks (encoder and decoder) + +\twocol{.6}{.3}{ +\show[1.0]{lilianweng-vae-gaussian} +}{ +\citehere{2024-bishop-DeepLearningFoundations} +\citehere{2018-weng-AutoencoderBetaVAE} +\citehere{2024-chan-TutorialDiffusionModels} + +{\tiny ML Lecture, slides 8 and 9} +} + +\item Loss function: +\begin{align*} +\min_{\theta, \phi} - \mathbb{E}_{\mathbf{z} \sim q_\phi(\mathbf{z}\vert\mathbf{x})} \log p_\theta(\mathbf{x}\vert\mathbf{z}) + D_\text{KL}( q_\phi(\mathbf{z}\vert\mathbf{x}) \| p_\theta(\mathbf{z}) ) +\end{align*} + +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Variational Autoencoder (VAE)}{ + +\item Training: SGD Updates for both networks + +\show[0.5]{bishop-VAE} + +\info{There is an error in the Bishop book (Alg. 19.1): $\mu$ and $\sigma$ are swapped at the highlighted line} + +\item Inference: Sample from Normal distribution and execute decoder +} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Variational Autoencoder (VAE) + Imitation Learning}{ + +\show[0.9]{ichter1} + +\cen{\showh[.4]{ichter3}\qquad\showh[.3]{ichter2}} + +\citehere{2018-ichter-LearningSamplingDistributions} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Diffusion} +\slide{Diffusion}{ + +\item Train one network that ``removes'' noise + +\twocol{.6}{.3}{ + +\show[0.9]{ddpm_fig2} + +Forward diffusion process: sample $\mathbf{x}_{0}$ and add iid Gaussian noise +\begin{align*} + q(\mathbf{x}_{1:T} \vert \mathbf{x}_0) = \prod^T_{t=1} q(\mathbf{x}_t \vert \mathbf{x}_{t-1})\\ + q(\mathbf{x}_t \vert \mathbf{x}_{t-1}) = \mathcal{N}(\mathbf{x}_t; \sqrt{1 - \beta_t} \mathbf{x}_{t-1}, \beta_t\mathbf{I}) +\end{align*} + +}{ +\citehere{2024-bishop-DeepLearningFoundations} +\citehere{2021-weng-WhatAreDiffusion} +\citehere{2024-chan-TutorialDiffusionModels} +\citehere{2020-ho-DenoisingDiffusionProbabilistic} + +{\tiny ML Lecture, slide 11} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Diffusion}{ + +\item Train one network that ``removes'' noise + +\twocol{.6}{.3}{ + +\show[0.9]{ddpm_fig2} + +Reverse process: learn $p_\theta(\mathbf{x}_{t-1} \vert \mathbf{x}_t)$ +\begin{align*} +p_\theta(\mathbf{x}_{0:T}) = p(\mathbf{x}_T) \prod^T_{t=1} p_\theta(\mathbf{x}_{t-1} \vert \mathbf{x}_t)\\ +p_\theta(\mathbf{x}_{t-1} \vert \mathbf{x}_t) = \mathcal{N}(\mathbf{x}_{t-1}; \boldsymbol{\mu}_\theta(\mathbf{x}_t, t), \boldsymbol{\Sigma}_\theta(\mathbf{x}_t, t)) +\end{align*} + +}{ +\citehere{2024-bishop-DeepLearningFoundations} +\citehere{2021-weng-WhatAreDiffusion} +\citehere{2024-chan-TutorialDiffusionModels} +\citehere{2020-ho-DenoisingDiffusionProbabilistic} + +{\tiny ML Lecture, slide 11} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Diffusion: Training}{ + +\show[0.65]{bishop_alg20_1} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Diffusion: Sampling}{ + +\show[0.65]{bishop_alg20_2} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Diffusion + Imitation Learning}{ + +\show[0.6]{diffusion-policy1} + +\show[0.9]{diffusion-policy2} + +\citehere{2023-chi-DiffusionPolicyVisuomotora} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Comparison of Generative Models}{ + +\show[0.6]{lilianweng-generative-overview} + +% Interaction +\item What are advantages / disadvantages? (e.g., sample quality, sample efficiency, distribution ``coverage'', ease of training) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Case Studies} +\slide{Case Study: Deep Drone Acrobatics}{ + +\show[0.8]{deepDroneAcrobatics} + +\citehere{2020-kaufmann-DeepDroneAcrobatics} + +{\urlfont\url{https://youtu.be/2N_wKXQ6MXA}} + +% show video + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Deep Drone Acrobatics}{ + +\item Input + \begin{enumerate} + \item \textbf{Abstraction} of sequence of last camera images (feature tracks) + \item \textbf{Preprocessed} sequence of IMU data + \item Reference trajectory + \end{enumerate} +\item Output + \begin{itemize} + \item Desired body rates and thrust (to be tracked by attitude controller) + \end{itemize} +\item Data +\begin{itemize} + \item Purely from simulation (privileged expert = optimization-based MPC controller) +\end{itemize} +\item Learning +\begin{itemize} + \item Privileged Teacher (here: given, not learned from human demonstrations) + \item DAgger +\end{itemize} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Deep Drone Acrobatics}{ + +~ + +\show[1.0]{deepDroneAcrobatics_fig4} + +~ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Deep Drone Acrobatics}{ + +Unique design choices: +\begin{itemize} + \item Pre-processing of input for \textbf{sim-to-real transfer} + + \show[0.6]{DeepDroneAcrobatics_fig5} + + \item Asynchronous network branch inference + \item Custom DAgger rollout for \textbf{sim-to-real transfer}: only use policy if similar to expert; also include random actions +\end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Using ALOHA Data}{ + +\show{aloha1} + +\citehere{2023-zhao-LearningFineGrainedBimanualc} + +{\urlfont\url{https://tonyzhaozh.github.io/aloha/}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Using ALOHA Data}{ + +~ + +\show[1.0]{aloha_fig3} + +~ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Using ALOHA Data}{ + +\item Conditional Variational Autoencoder (CVAE) + \begin{itemize} + \item Encoder: joint positions, expert action sequence ($k >> 1$) + \item Latent space: $z$ ``style'' (dim=32) + \item Decoder: observations (4 RGB images), joint positions, ``style'' $z$; output: planned action sequence + \end{itemize} + +\show{aloha_fig4} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Using ALOHA Data}{ + +\twocol{.6}{.4}{ + +\item Inference: $z$ is always set to 0 (deterministic generator) +\item Key insights: transformer architectures for encoder and decoder; MPC-style encoding (action chunks + temporal ensemble) + +\item Fun statistics: +\begin{itemize} + \item 80 M parameters; 5h training (RTX 2080 Ti); 10ms inference + \item 50 demonstrations per task (about 20min of data) +\end{itemize} +}{ + \show[0.9]{aloha_fig5} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Domain Adaptive Imitation Learning (DAIL)}{ + +\show{DAIL} + +\item How to perform a task, given demonstrations from a different domain (viewpoint, embodiment, and/or dynamics mismatch)? + + +\show[0.6]{DAIL_fig4} + +{\urlfont\url{https://youtu.be/l0tc1JCN_1M}} + +\citehere{2020-kim-DomainAdaptiveImitation} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Domain Adaptive Imitation Learning (DAIL)}{ + +\item Given: \textbf{unprocessed} examples for the same tasks for robots $x$ and $y$ +\begin{itemize} + \item $D_{x,y}=\{(D_{M_x, T_i}, D_{M_y, T_i}) \}_{i=1}^N$ for $N$ tasks $\{T_i\}_{i=1}^N$ + \item Data is not paired/aligned, i.e., $s_x^{(t)}$ does not ``match'' $s_y^{(t)}$ + + \show[0.5]{DAIL_fig1a} +\end{itemize} +\item Goal: Given a new demonstration of unseen task $T_j$ for $y$, transfer/execute directly (``zero-shot'') on robot $x$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Domain Adaptive Imitation Learning (DAIL)}{ + +\item Learning Alignment from $D_{x,y}=\{(D_{M_x, T_i}, D_{M_y, T_i}) \}_{i=1}^N$: + \begin{enumerate} + \item Learn $\pi_{y,T_i}^*$ for all $T_i$ (Behavior Cloning) + \item Learn mapping of states from $x$ to $y$: $f_{\theta_f}: x_x \mapsto x_y$ + \item Learn mapping of actions from $y$ to $x$: $g_{\theta_g} u_y \mapsto u_x$ + \item Learn dynamics/step function of $x$: $P_{\theta_P}^x: x_x, u_x \mapsto x_x$ + \end{enumerate} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Domain Adaptive Imitation Learning (DAIL)}{ + +\item Adaption + \begin{enumerate} + \item Learn $\pi_{y,T_j}^*$ for new task $T_j$ (Behavior Cloning) + \item $\pi_{y,T_i}^*(x_x) = g_{\theta_g}(\pi_{y,T_j}^*(f_{\theta_f}(x_x)))$ + \end{enumerate} + +% \item Approach: Generative Adversarial MDP Alignment (GAMA) + +\show{DAIL_fig1bc} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Domain Adaptive Imitation Learning (DAIL)}{ + +\item Alignment Approach: Generative Adversarial MDP Alignment (GAMA) +\begin{itemize} + \item Discriminator tries to separate real transitions ($(x,u) \to x'$) from aligned transitions + \item ``Generator'' are $f$ and $g$ (deterministic) +\end{itemize} + +\show[0.9]{DAIL_alg1} + +} + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \slide{Case Study: NTE}{ + +% \item TODO: perhaps better in the multi-robot learning class +% \item alpha zero? +% \item the locomotion paper guanya had? +% \item maybe car racing paper? + +% } + +% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \slide{To Do}{ + +% privileged teaching examples: locomotion (?), drone acrobatics; put at beginning or end? + + +% } + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusion}{\label{lastpage} + +\item Imitation Learning works well for robotics + \begin{itemize} + \item Efficient, effective, stable training + \item Fast inference + \item State-of-the-art real-robot results (mobile robots, manipulation, planning) + \end{itemize} + +\item Main challenge: acquire labeled data + \begin{itemize} + \item Simulation possible (e.g., make slow algorithms fast) $\Rightarrow$ Use \textbf{DAgger} and/or \textbf{privileged teacher} paradigm + \item Only real data $\Rightarrow$ intuitive data collection interfaces, powerful generative and sequence models, transfer learning + \end{itemize} + +\item Details can be tricky (what to learn [policy, trajectory, value function], how to represent inputs, network architectures) + +\item Not discussed (yet): How to become better than the ``expert'' (notion of reward) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b2-ImitationLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/08-RL.tex b/RobotLearning/08-RL.tex new file mode 100644 index 0000000..06f32f0 --- /dev/null +++ b/RobotLearning/08-RL.tex @@ -0,0 +1,802 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Reinforcement Learning} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} +\newcommand{\rmax}{{\textsc{R-max}}} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{I. What is learned?}{ + +~\anchor{220,-20}{\showh[.45]{robLearn1}} + +~ + +~\small + +\item So far we discussed dynamics and imitation learning +\begin{items} +\item The mappings we learned concerned $x, y, u$ (including also dynamics parameters $\Theta$ and constraints $\phi(x)$) +\item Demonstration data was given, or dynamics data well-collected +\item There is no external task/cost evaluation +\end{items} + +\item In RL, we assume \textbf{rewards $r$ given}, which opens a new dimension +\begin{items} +\item We will learn state values ($V$-, $Q$-function) and a policy maximizing expected discounted rewards +\item RL is more autonomous in that it explores the world and generates its own data +\item But it relies on an externally given reward function +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +~ + +\item First essentials towards modern Deep RL methods + +~ + +\item Then a discussion of challenges + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Markov Decision Process} +\slide{Markov Decision Process}{ + +\item \emph{The world:} An MDP $(\SS, \AA, P, R, P_0, \g)$ with state space $\SS$, action space $\AA$, transition probabilities $P(s_{t\po} \| s_t,a_t)$, reward fct $r_t = R(s_t,a_t)$, initial state distribution $P_0(s_0)$, and discounting factor $\g\in[0,1]$. +\pause + +\item \emph{The agent:} A parameterized policy $\pi_\t(a_t|s_t)$. + +~\pause + +\item Together they define the path distribution $(\xi=(s_{0:T\po},a_{0:T}))$ +\anchor{10,-40}{\showh[.25]{mdp1}} +$$P_\t(\xi) = P(s_0)~ \prod_{t=0}^T \pi_\t(a_t|s_t)~ P(s_{t\po}|s_t,a_t)\qquad\qquad$$ + +\pause + +and the \textbf{expected discounted return} ~ (\tiny with \emph{discounting factor $\g\in[0,1)$}) +$$J(\t) = \EEE_{\xi\sim P_\t}\big\{\underbrace{\Sum_{t=0}^\infty \g^t r_t}_{R(\xi)}\big\} += \int_\xi P_\t(\xi)~ R(\xi)~ d\xi$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Value Function, Bellman, Q-Iteration} +\slide{Value functions}{ + +\info{The following assumes a deterministic policy $a=\pi(s)$; stochastic $\pi(a|s)$ is handled with expectations over $a$.} + +\item The \defn{value function} of a policy $\pi_\t$ gives the return when started in state $s$: +\begin{align*} +V^\pi(s) +&= \Exp{ \Sum_t \g^t r_t \| s_0\=s } \\ +V^\pi(s) +&= R(s,\pi(s)) + \g \Exp[s'|s,\pi(s)]{V^\pi(s')} && \text{\tiny(Bellman Equation)} +\end{align*} + +~\pause + +\item The \defn{Q-function} gives the return when starting in state $s$ +and taking first action $a$: +\begin{align*} +Q^\pi(s,a) +&= \Exp{ \Sum_t \g^t r_t \| s_0\=s, a_0\=a } \\ +Q^\pi(s,a) +&= R(s,a) + \g \Exp[s'|s,a]{ Q^\pi(s',\pi(s')) } && \text{\tiny(Bellman Equation)} +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Optimal Value Function and Policy}{ + +%% ~ + +%% \item A policy $\pi^*$ is \defn{optimal} iff +%% \begin{align*} +%% \forall s:~ V^{\pi^*}(s) = V^*(s)\comma +%% \text{ where } ~ V^*(s) = \max_\pi V^\pi(s) ~, +%% \end{align*} +%% \small +%% i.e., simultaneously maximises the value in all states + +%% {\tiny (In MDPs there always exists (at least one) optimal deterministic +%% policy.)} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{}{ + +%% \twocol{.3}{.3}{ +%% An example for a \\ +%% value function... +%% }{\center + +%% \showhs[5]{15x20holes} + +%% } + +%% ~ + +%% {\hfill\tiny\texttt{demo: test/mdp runVI}} + +%% ~ + +%% ~ + +%% \cen{\textbf{Values provide a gradient towards desirable states}} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Value function}{ + +%% ~ + +%% \item The value functions $V$ or $Q$ is a central concept in all of RL! + +%% {\small\medskip + +%% Many algorithms can directly be derived from properties of the value +%% function. + +%% } + +%% ~ + +%% \item In other areas (stochastic optimal control) it is also +%% called \emph{cost-to-go} function ($\text{cost}=-\text{reward}$) + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Bellman Optimality Equation}{ + +\small +\item Bellman equations ($\oto$ \emph{Policy Evaluation}): +\begin{align*} +V^\pi(s) +&= R(s,{\color{blue}\pi(s)}) + \g \Exp[s'|s,{\color{blue}\pi(s)}]{V^\pi(s')} &&\qquad\\ +Q^\pi(s,a) +&= R(s,a) + \g \Exp[s'|s,a]{ Q^\pi(s',{\color{blue}\pi(s')}) } +\end{align*} + +\pause + +\item Bellman optimality equations: ($\oto$ Q-Iteration/Value Iteration) +\begin{align*} +V^*(s) +&= {\color{blue}\Max_a} \[R(s,{\color{blue}a}) + \g \Exp[s'|s,{\color{blue}a}]{ V^*(s') }\] +~= \Max_a Q^*(s,a) \\ +Q^*(s,a) +&= R(s,a) + \g \Exp[s'|s,a]{ {\color{blue}\Max_{a'}} Q^*(s', {\color{blue}a'}) } \\ +\pi^*(s) +&= \textstyle\argmax_a Q^*(s,a) +\end{align*} + +\hfill{\ttiny +\showh[.1]{bellmanOpt}\qquad +\showh[.1]{bellman}\quad +Richard E. Bellman (1920--1984) +} + +\info{Sketch of proof: If $\pi^*$ would be other than +$\argmax_a[\cdot]$, then $\pi'=\pi$ +everywhere except $\pi'(s)=\argmax_a[\cdot]$ would be better.} + + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item The core question is how to actually compute them + +~ + +\item Model-based: ~ (if we know or estimated the models $P(s'|s,a), R(s,a), P(s_0)$) +\begin{items} +\item Q-Iteration, Policy Iteration +\end{items} + +~ + +\item Data-based: ~ (if we directly use data $D=\{ (s_i,a_i,r_i,s_{i\po}) \}_{i=0}^n$) +\begin{items} +\item ``Reinforcement Learning'' +\item TD-Learning, Q-learning, Actor-Critic +\item Modern: DDPG, TC3, SAC, etc +\end{items} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Model-based: Q-Iteration}{ + +\item Bellman Optimality equation for $Q^*$: +\begin{align*} +Q^*(s,a) +&= R(s,a) + \g \Expno[s'\|s,a] \big\{ \underbrace{\max_{a'} Q^*(s', a')}_{V^*(s')} \big\} +\end{align*} + +~\pause + +\item \textbf{Q-Iteration:} \quad initialize $Q_{k\=0}(s,a)=0$, then iterate: +\begin{align*} +\forall_{s}:~ V_{k\po}(s) &= \max_{a'} Q_k(s,a') \\ +\forall_{s,a}:~ Q_{k\po}(s,a) &= R(s,a) + \g \Exp[s'|s,a]{ V_{k\po}(s') } +\end{align*} +stopping criterion: \quad $\max_{s,a} |Q_{k+1}(s,a) - Q_k(s,a)| \le \e$ + +\info{Note: Using $V_{k\po}$ in this iteration is like a buffer -- cf.\ the ``target network'' in neural RL.} + +\item \textbf{Theorem:} Q-Iteration converges to the optimal state-action value function $Q^*$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Proof of convergence of Q-Iteration} +\slide{Q-Iteration -- Proof of convergence}{ + +\small + +\item Let $\D_k = \norm{Q^* - Q_k}_\infty = \Max_{s,a} |Q^*(s,a) - Q_k(s,a)|$ +\begin{align*} +\hspace*{-10mm}Q_{k+1}(s,a) + &= R(s,a) + \g \Exp[s'|s,a]{ \Max_{a'} Q_k(s',a') } \\ + &\le R(s,a) + \g \Exp[s'|s,a]{ \Max_{a'}\[ Q^*(s',a') + \D_k \] } \\ + &= \[ R(s,a) + \g \Exp[s'|s,a]{ \Max_{a'} Q^*(s',a') }\] + \g \D_k \\ + &= Q^*(s,a) + \g \D_k +\end{align*} + +similarly: $Q_{k+1} \ge Q^* - \g \D_k$ + +~ + +\item The proof translates directly also to value iteration + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Comments \& Relations}{ + +%% \small + +%% \item Value Iteration is a form of \textbf{Dynamic Programming}, which propagates values \emph{backward} +%% \begin{items} +%% \item In deterministic worlds, Value Iteration is the same as +%% \emph{Dijkstra backward}; it labels all nodes with the value +%% ($\oto$ cost-to-go). +%% \end{items} + +%% ~\pause + +%% \item In \emph{control theory}, the Bellman equation is formulated for +%% continuous state $x$ and continuous time $t$ and ends-up: +%% $$ +%% -\frac{\del}{\del t} V(x,t) +%% = \min_u \[c(x, u) + \frac{\del V}{\del x} f(x,u) \] +%% $$ +%% which is called \emph{Hamilton-Jacobi-Bellman} equation. For linear quadratic systems, this becomes the \emph{Riccati equation} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Policy Iteration} +\slide{Model-based: Policy Iteration}{ + +\item \textbf{Policy Evaluation:} Dynamic Programming for $Q^\pi$ instead of $Q^*$: Iterate: +\begin{align*} +\forall_{s}:~ V_{k\po}(s) &= Q_k(s,{\color{red}\pi(s)}) \\ +\forall_{s,a}:~ Q_{k\po}(s,a) &= R(s,a) + \g \Exp[s'|s,a]{ V_{k\po}(s') } +\end{align*} +stopping criterion: \quad $\max_{s,a} |Q_{k+1}(s,a) - Q_k(s,a)| \le \e$ + +~ + +\item \textbf{Policy Improvement:} Then update the policy to become better: +\begin{align*} +\pi(s) \gets \argmax_a Q(s,a) +\end{align*} + +~ + +\item Iterating the two steps above is guaranteed to converge + +\item This is also called \textbf{actor-critic} (with $\pi$=actor, and $Q^\pi$=critic) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\small + +\item The two discussed methods (Q-Iteration and Policy Iteration) can +compute optimal policies, but require a known (or estimated) model + +\item To approximately do the same from data, we follow two strategies +\begin{items} +\item Whenever there was an expectation $\Exp{\cdot}$ in these equations, we replace it by sample data +\item Whenever there was a full function update (e.g.\ $\forall_{s,a}: Q(s,a) \gets \cdots$ or policy improvement) we need to replace it by a \textbf{data-based loss functions} and do gradient steps. +\end{items} + +~\pause + +\item For simplicity, the following focusses on Policy Iteration (or \emph{actor-critic}) approaches + +\info{Similar strategies can be applied for ``Deep Q-Learning'':\\ \citehere{2015-mnih-HumanlevelControlDeep} But major RL methods nowadays follow actor-critic approaches} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Bellman Residual Loss} +\slide{Data-based: Bellman Loss for the Q-function}{ + +\item Recall +$$Q^\pi(s,a) = R(s,a) + \g \Exp[s'|s,a]{ Q^\pi(s',\pi(s')) }$$ + +\medskip + +\item Given data $D=\{ (s_i,a_i,r_i,s_{i\po}) \}_{i=0}^T$, define the \textbf{Bellman residual}: +$$\BB^\pi(Q_\t, \bar Q) = \Exp[(s,a,r,s')\sim D]{~ [Q_\t(s,a) - r - \g \bar Q(s', \pi(s'))]^2 ~} $$ + +\pause + +\item This defines a supervised ML problem for $Q_\t$! We have $Q$-gradients and can do standard SGD. +\begin{items} +\item Actually we want $\bar Q \equiv Q_\t$, and could compute gradients also accounting for $\g \bar Q(s', \pi(s'))$. This is called \textbf{Bellman residual minimization}, and known since the 80ies, but has challenges \cite{2010-maillard-FinitesampleAnalysisBellman,2017-geist-BellmanResidualBad} +\item So instead, during training we fix $\bar Q$ to some ``old version'' of $Q_\t$: We set $\bar Q = Q_{\bar\t}$ where $\bar \t$ is a low-pass filter of $\t$ (a \textbf{delayed} version of the current parameters $\t$). This stabilizes training. +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\cite{2003-lagoudakis-LeastsquaresPolicyIterationa} + +\slide{}{ + +\item So, for a given policy $\pi$, ~ $\BB^\pi(Q_\t, \bar Q)$ defines a loss for $Q_\t$ + +\item How can we also define a loss function for the policy? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Data-based: Return Maximization for the Policy}{ + +\item To train the policy, we choose to directly maximize expected return: +$$J(\t) = \EEE_{\xi\sim P_\t}\big\{\underbrace{\Sum_{t=0}^\infty \g^t R(s_t,a_t)}_{R(\xi)}\big\} += \Int_\xi P_\t(\xi)~ R(\xi)~ d\xi$$ + +\begin{items} +\item This is not really an error, but exactly what we aim to maximize +\item All we need is the gradient $\Del \t J(\t)$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Policy Gradient} +\slide{Policy Gradient $\Del \t J(\t)$}{ + +\info{The word ``policy gradient'' means gradient of $J(\t)$ w.r.t.\ the policy parameters $\t$.} + +~ + +\item For a deterministic policy $a = \pi_\t(s) \in\RRR^d$: +\begin{align*} +\Del \t J(\t) +&= +\Exp[s\sim P_{\t}]{\Del a Q^{\pi_\t}(s,a)\big|_{a=\pi_\t(s)} \Del \t \pi_\t(s)} +\end{align*} + +\info{Derived here: +\cite{2014-silver-DeterministicPolicyGradient}, and led to the \textbf{Deep Deterministic Policy Gradient (DDPG)} method +\cite{2019-lillicrap-ContinuousControlDeep}. Is the foundation of many followups. This gradient is somewhat noisy, D4PG is an improvement.} + +~\pause + +\item For a stochastic policy $\pi_\t(a|s)$: (standard ``Policy Gradient Theorem''): +{\tiny\begin{align*} +\hspace*{-5mm} +&\Del \t J(\t) += +\Del \t +\int P_\t(\xi)~ R(\xi)~ d\xi += \int P_\t(\xi) \Del \t \log P_\t(\xi) R(\xi) d\xi \\ +\hspace*{-5mm} +&= +\Exp[\xi\sim P_\t]{\Del \t \log P_\t(\xi) R(\xi)} + = \Expno[\xi\sim P_\t] \Big\{ \Sum_{t=0}^H \g^t~ [\Del \t \log\pi_\t(a_t|s_t)]~ + \underbrace{\Sum_{t'=t}^H \g^{t'-t} r_{t'}}_{Q^{\pi_\t}(s_t,a_t)} \Big\} +\end{align*}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{RL: Interleaving training with data collection}{ + +\twocol{.45}{.45}{ +\showh[.8]{TD3} +}{ + + +\item Actor-Critic style Deep RL: +\begin{items} +\item $\Del \t \BB(Q_\t, \bar Q)$ provides gradient steps for $Q_\t$ +\item $\Del \t J(\t)$ provides gradient steps for $\pi_\t$ +\item gradually training both is interleaved with collecting more data +\end{items} + +~ + +\citehere{2018-fujimoto-AddressingFunctionApproximation} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Deep RL} +\slide{Techniques to improve methods}{ + +\item Papers on techniques in state-of-the-art methods: +\begin{items} +\item In Deep Q-Learning (DQN) approaches: \cite{2018-hessel-RainbowCombiningImprovements} (Rainbow paper) +\item In Actor-Critic approaches: \cite{2018-fujimoto-AddressingFunctionApproximation} (TD3 paper) +\item A state-of-the-art actor-critic method: \cite{2018-haarnoja-SoftActorcriticOffpolicy} (SAC paper) +\end{items} + +\pause + +\item Many ideas: +\begin{items}\tiny +\item Replay buffers (``experience replay''): Limited buffer of experiences to train on (approximates $P_\t(s,a,r,s')$) +\item Double Q-Learning: maintain 2 indep. Q-functions $Q_{1,2}(s,a)$ (and use min in policy update) +\item Delayed targets: low pass filter $\bar Q$ of $Q$ as target +\item Smoothed policy samples: add (clipped) noise when sampling policy in Bellman loss +\item Prioritized Replay: (pick replay data where Bellman error is largest) +\item Dueling Networks: (decompose Q in value and advantage) +\item Multi-Step Learning: ($n$-step updates) +\item Distributional RL: (let Q-function predict return \emph{distribution}, not mean) +\item Noisy Nets: (replace $\e$-greedy exploration by ``learnt noise'') +\end{items} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Discussion}{ + +\item The previous material should enable you to read about modern Deep RL methods (TD3, D4PG, SAC) + +~ + +\item Rest of this lecture is discussion +\begin{items} +\item Why do we actually learn $Q$ and not $V$? +\item What if we have partial observability? +\item How is the data collected? +\item How are reward functions engineered? +\item Why not just use black-box optimization? +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Why do we actually learn $Q$ and not $V$?}{ + +~\pause + +\item $Q(s,a)$ tells us what is the best action $a = \argmax_a Q$ + +\pause + +\item In control, value functions are also estimated, but never $Q$ (I think). Why? + +\info{E.g. the Hamilton-Jacobi-Bellman Eq: $ +-\frac{\del}{\del t} V(x,t) + = \min_u \[c(x, u) + \frac{\del V}{\del x} f(x,u) \] +$.} + +~\pause + +\item Without Q-function, we'd somehow have to learn how to walk up-hill on $V$: +\begin{items} +\item Learn an \emph{inverse model} $(s, \Delta s) \mapsto a$ +\item Learn a ``flow'' policy $\pi: s \mapsto \Delta s \approx \Del s V(s)$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What if we have partial observability?}{ + +\item Policy has only access to observations $y_{0:t}$ + +~\pause + +\item[\color{black}$\to$] Make the $Q$ function a recursive NN + +~ + +\twocol{.4}{.5}{ + +\show[.6]{DRQN} + +}{ + +\citehere{2015-hausknecht-DeepRecurrentQlearning} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Data Collection in RL} +\slide{How is the data collected?}{ + +~\pause + +\item A core challenge in modern RL! + +\item Many modern methods \emph{require} that the data is collected from the current $\pi_\t$! +\begin{items} +\item So that $\Exp{\cdot}$ can be replaced by the data in the Bellman equations +\item This is called \textbf{on-policy} -- we'll discuss off-policy next time +\item But $\pi$ is so uninformed! So non-exploring! So iid. in each step ($\sim$ Brownian noise) +\item Check pseudo codes of mentioned methods (SAC, DDPG, TD3, etc) +\end{items} + +~\pause + +\item In old RL (discrete state-action spaces), things were much better! +\begin{items} +\item \textbf{Explicit Exploit or Explore} \cite{2002-kearns-NearoptimalReinforcementLearning} -- a \emph{must read!} +\item \rmax{} \cite{2002-brafman-RmaxaGeneralPolynomial}, Optimistic value initialization, Bayesian RL +\item These methods design policies to systematically explore, typically by \textbf{systematically rewarding exploration} +\item Optimism in the face of uncertainty: Rewarding decisions with uncertain outcomes! +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{How is the data collected?}{ + +\item In Deep RL: Structured noise instead of Brownian: + +\citehere{2022-eberhard-PinkNoiseAll} + +\item Parameter-space noise: (add noise to $\t$ instead of $a$) + +\citehere{2018-plappert-ParameterSpaceNoise} + +\pause + +\item Guided Policy Search\\ \citehere{2013-levine-GuidedPolicySearch} +\begin{items} +\item Use model-based trajectory optimization to generate data +\end{items} + +\item Demonstration Guided \cite{2021-pertsch-DemonstrationGuidedReinforcementLearning} + +\item Or just give up: +\begin{items} +\item Offline Reinforcement Learning: Assume the data was generated somehow externally +\item Imitation Learning \& Inverse RL: Learn from demonstrations +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Reward Engineering} +\slide{How are reward functions engineered?}{ + +\item Reward shaping theory: You can add potentials without changing optimal policy + +\citehere{1999-ng-PolicyInvarianceReward} + +~\pause + +\item Reward engineering: + +\medskip + +\twocol{.4}{.5}{ +\show[.5]{ballInCup1} +}{ +\showh{ballInCup2} +} + +\citehere{2009-kober-LearningMotorPrimitives} +{\urlfont\url{https://www.youtube.com/watch?v=qtqubguikMk}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Why not just use black-box optimization?}{ + +\item Eventually, $\max_\t J(\t)$ is an optimization problem +\begin{items} +\item Instead of deriving gradients (via Bellman, and $Q$-functions), why not treat as black-box or \textbf{derivative-free optimization} problem? +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\show[.6]{openai-ES1} + +\citehere{2017-salimans-EvolutionStrategiesScalable} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{}{ + +%% \item The ES they employ: + +%% ~ + +%% \show{openai-ES3} + +%% \begin{items} +%% \item Is an instance of our ``General Stochastic Search'' scheme: + +%% \quad $\t$ is the mean; $\l=n$ samples $x_t \sim \NN(\t, \s^2 I)$; evaluations $f(x_i)$ + +%% \item The update is more like a stochastic gradient step rather than selection + +%% \quad In expectation, $F_i\e_i \dot= (F_\t + \na F^\T \s\e_i)\e_i \approx 0 + \s \na F$. + +%% \end{items} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item \small Ratio of ES timesteps to TRPO timesteps needed to reach various percentages of TRPO's learning progress at 5 million timesteps: + +~ + +\show[.6]{openai-ES2} + +} + +%% go through paper + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\show[.5]{clune-ES3} + +\citehere{2018-such-DeepNeuroevolutionGenetic} + +~ + +\item Roughly: ``Do you spend your time training nets, or simulating?'' + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{}{ + +%% \show{clune-ES1} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\show[.5]{clune-ES2} + +~ + +\item Conclusion: It varies from problem to problem what is better. + +And it is suprising that ``naive'' black-box ES can beat elaborate RL-methods + +} + +%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{}{ + +%% \item Salimans, T., Ho, J., Chen, X., Sidor, S., \& Sutskever, I. (2017). Evolution strategies as a scalable alternative to reinforcement learning. arXiv preprint arXiv:1703.03864. + +%% \item Such, F. P., Madhavan, V., Conti, E., Lehman, J., Stanley, K. O., \& Clune, J. (2017). Deep neuroevolution: Genetic algorithms are a competitive alternative for training deep neural networks for reinforcement learning. arXiv preprint arXiv:1712.06567. + +%% \item Stulp, F., \& Sigaud, O. (2013). Robot skill learning: From reinforcement learning to evolution strategies. Paladyn, Journal of Behavioral Robotics, 4(1), 49-61. + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \slide{Lots of Terminology}{ + +%% \item In RL, the following terminologies are important to distinguish: +%% \begin{items} +%% \item model-free RL vs.\ model-based RL vs.\ policy search +%% \item on-policy vs.\ off-policy methods +%% \item standard RL vs.\ batch RL vs.\ offline RL +%% \end{items} + +%% ~ + +%% \item We'll summarize these later +%% \begin{items} +%% \item First learn the basics: model-free RL +%% \end{items} + +%% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{\label{lastpage} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b3-ReinforcementLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/09-RL2.tex b/RobotLearning/09-RL2.tex new file mode 100644 index 0000000..8b80802 --- /dev/null +++ b/RobotLearning/09-RL2.tex @@ -0,0 +1,686 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{RL II: Offline RL \& Sim2Real} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Some RL application papers + +\item Offline RL ~ (on-policy vs.\ off-policy) + +\item Sim2Real +\begin{items} +\item Domain Randomization +\item Privileged Training \& Imitation Learning +\item Domain Adaptation +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item \textbf{Some RL application papers} + +\item Offline RL ~ (on-policy vs.\ off-policy) + +\item Sim2Real +\begin{items} +\item Domain Randomization +\item Privileged Training \& Imitation Learning +\item Domain Adaptation +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\twocol[.05]{.45}{.45}{ + +\show[1]{10-abbeel} + +~ + +\citehere{2010-abbeel-AutonomousHelicopterAerobatics} + +}{ + +\show{10-abbeel-2} + +\hfill{\urlfont\url{http://heli.stanford.edu/}} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\twocol[.05]{.45}{.45}{ + +\show[.9]{22-wurman} + +~ + +\citehere{2022-wurman-OutracingChampionGran} + +}{ + +\show[.9]{22-wurman-2} + +\hfill{\urlfont\url{https://sonyresearch.github.io/gt_sophy_public/}} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\twocol[.05]{.45}{.45}{ + +%\show{10-abbeel} +\show[.9]{23-kaufmann} + +~ + +\citehere{2023-kaufmann-ChampionlevelDroneRacing} + +}{ + +\show[.9]{23-kaufmann-2} + +\hfill{\urlfont\url{https://www.youtube.com/watch?v=fBiataDpGIo}} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Some RL application papers + +\item \textbf{Offline RL ~ (on-policy vs.\ off-policy)} + +\item Sim2Real +\begin{items} +\item Domain Randomization +\item Privileged Training \& Imitation Learning +\item Domain Adaptation +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{On-Policy vs.\ Off-Policy Methods}{ + +\item \textbf{On-policy:} estimate $V^\pi$ or $Q^\pi$ while executing +$\pi$ ~ (e.g., Policy Evaluation) +\begin{items} +\item The value-function updates directly depend on the policy +$\pi$ +\end{items} + +\item \textbf{Off-policy:} estimate $Q^*$ while executing $\pi$ ~ (e.g., Q-learning) +\begin{items} +\item The actually executed (data-collecting) policy $\pi$ is also called ``behavioral policy'' +\item In contrast, values $Q^*$ are estimated for the optimal policy $\pi^*$ +\end{items} + +\pause + +\item \small Off-policy is considered more efficient, as it can +use off-policy-distribution data + +~\pause + +\info{More technically: Consider you have data $D=\{ +(s_i,a_i,r_i,s_{i\po}, a_{i\po}) \}_{i=0}^n$ collected with behavior policy +$\pi$. When you make $Q$- or $V$-updates, do you take only +expectations w.r.t. $D$? Or do you take conditional expectations +$a_{i\po} \sim \pi^*(a|s_{i\po})$ w.r.t.\ another policy? (E.g.\ +greedy policy.)} + +\info{SAC is called off-policy, because when training $V$ it takes +expectations w.r.t.\ $a_t\sim\pi_\t$ (instead of w.r.t.\ data collected previously).} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Offline RL} +\slide{Offline RL}{ + +\item Motivation: +\begin{items} +\item Separation of Concerns! +\item Separate thinking about Data Collection, and thinking about \textbf{what +best to make of given data} +\item Real-world data is expensive! +\item Data collection (exploration) in RL is an issue anyway +\item No matter how RL collects data, it makes sense to study + what best to make of given data + +~\pause + + %% side note: ``exploration-exploitation dilemma'' yes, ok. But in principle we understood this theoretically: Bayesian RL, POMDPs, E^3 -- but in practise (with NN function approximation) remains a practical problem because efficient RL methods assume on-policy data distribution +\item \textbf{The data could come from anywhere:} huge data sets of other observed agents, of human behavior, perhaps extracted from abundant video +\item The data is not collected by ``our AI agent'' itself -- but +can still be used to learn a $Q^*$-function and train our agent for +optimal behavior +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Offline RL}{ + +\item Naive problem formulation: Given data $D=\{ +(s_i,a_i,r_i,s_{i\po}) \}_{i=0}^n$, find $\t$ to +\begin{align*} +\min_\t\quad &\Exp[(s,a,r,s')\sim D]{~ [Q_\t(s,a) - r - \g +Q_{\bar \t}(s', \pi(s'))]^2 ~} \\ +\st & \bar\t \approx \t \\ +&\pi \approx \argmax_\pi \Exp[(s,a)\sim D]{Q_\t(s,a)} +\end{align*} +In words: +\begin{items} +\item minimize the empirical Bellman residual, with delayed +$Q_{\bar\t}$-target +\item ...where eventually $\pi$ becomes optimal and $\bar\t$ converges +\end{items} + +~\pause + +\item That's a well-defined problem +\begin{items} +\item We have gradients for everything: Bellman gradient, +deterministic policy gradient -- let's go! +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Offline RL}{ + +\item Resulting policy fails badly, due to distribution shift, just as +in imitation learning: + +~ + +\show[.3]{offtrack1} +\hfill{\tiny Also called \textbf{Compound Error} \qquad (Shi's lecture 5)} + +\item In the naive problem formulation +\begin{items} +\item there is no penalty for ``dreaming'' crazy $Q$-values outside the +data distribution +\item the trained policy is likely to exploit these arbitrary +$Q$-values +\end{items} + +\pause + +\item We don't have the DAgger option: Can't collect more data to +cover reached states! + +\pause + +\item[\color{black}$\to$] We need to \textbf{add a penalty for leaving +the data +distribution}! + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Regularization} +\slide{Offline RL}{ + +\item We need to add a penalty for leaving the data +distribution... +\begin{items} +\item Many different ideas, incl.\ literally penalizing ``distribution +distance'' (divergence regularization) +\item Modern versions found simple approaches: +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{TD3+BC}{ + +\twocol[.05]{.4}{.5}{ + +\show[.9]{21-fujimoto} + +~ + +\citehere{2021-fujimoto-MinimalistApproachOffline} + +}{\small + +\item Use TD3 (twin delayed deep deterministic..) + +\item Simply add a BC term to the policy objective! +$$\pi \approx \argmax_\pi \Exp[(s,a)\sim D]{\l Q_\t(s,a) + +(\pi(s)-a)^2 }$$ + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{S4RL}{ + +\twocol[.05]{.4}{.5}{ + +\showh[.9]{22-sinha} + +~ + +\citehere{2022-sinha-S4rlSurprisinglySimple} + +}{\small + +\item Include a strong data augmentation in the $Q$-function loss + +~ + +\hspace*{-15mm}{\ttiny$\min_\t \Exp[(s,a,r,s')\sim D]{~ [\Frac 1I \Sum_i Q_\t(\TT_i(\tilde s|s),a) - r - \g +\Frac 1I \Sum_i Q_{\bar \t}(\TT_i(\tilde s'|s'), \pi(s'))]^2 ~} $} + +~ + +where $\TT_i$ generates a variant of $s$ (they propose 7 alternative, +including spatial smoothing and adversarial) + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Offline RL Application}{ + +~ + +\twocol[.05]{.45}{.45}{ + +\show[.9]{23-kumar} + +~ + +\citehere{2023-kumar-PreTrainingRobotsOffline} + +}{ + +\show[.9]{23-kumar-2} + +~ + +\hfill{\urlfont\url{https://sites.google.com/view/ptr-final/}} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Offline RL Conclusions}{ + +\item Scientifically important ~ (separation of concerns) + +\item Opens new dimension: Train optimal behaviors +from \emph{any} data + +\item Promising future applications ~ (leverage massive data, reward re-labelled data) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Some RL application papers + +\item Offline RL ~ (on-policy vs.\ off-policy) + +\item \textbf{Sim2Real} ~ (slides based on Shi's lecture) +\begin{items} +\item Domain Randomization +\item Privileged Training \& Imitation Learning +\item Domain Adaptation +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Sim2Real} +\slide{}{ + +\item Why train in Simulation? +\begin{items} +\item Real-world data is expensive! +\item Many RL methods require millions of samples +\item Simulation is fast +\item Simulation is safe, can be fully explored +\item Simulation provides ground truth labels (e.g.\ train priviledged policy) +\item Simulations get better and better, including simulating sensors +(image rendering) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\showh[.7]{shi-sim2real-1} +\hfill\tiny{from Shi's lecture} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item What are Sim2Real issues? +\begin{items} +\item Simulation never matches real world exactly; policies overfit to +simulation and fail in real +\item \textbf{Parameteric mismatches:} Other dynamics parameters, +e.g.\ friction, inertias +\item \textbf{Non-parameteric mismatches:} Physical effects not +simulated: Wind, exact fluids, sand/dust +\end{items} + +~\pause + +\item Approaches to tackle this: +\begin{items} +\item Domain Randomization +\item Privileged Training \& Imitation Learning +\item Domain Adaptation +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Domain Randomization} +\slide{Domain Randomization}{ + +~ + +\twocol[.05]{.45}{.45}{ + +\show[.9]{17-tobin} + +~ + +\citehere{2017-tobin-DomainRandomizationTransferring} + +}{\small + +\item Train a single policy to perform well in many domain variants + +\item Original paper focussed on perception, but works equally for any +other parameter $\Th$ + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Domain Randomization}{ + +\item Let $\Th$ be a simulation parameter:~ $x_{t\po} = f(x_t, +u_t; \Th)$ + +\item Randomly sample $\Th\sim p(\Th)$ at the start of each episode + +\item Otherwise, use standard RL +\begin{items} +\item But since the world is ``more uncertain'', the RL problem +becomes harder +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item What if we train a policy $\hat\pi(s_t, \Th)$ that get's $\Th$ as input? + +~ + +Is that cheating? ~ \cite{2020-chen-LearningCheating} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Privileged Training \& Imitation Learning} +\slide{Privileged Training \& Imitation Learning}{ + +\pause + +\item Priviledged RL Training: +\begin{items} +\item We first train $\hat\pi(s_t, \Th)$ using standard RL +\item Much easier than without access to $\Th$ +\end{items} + +\medskip + +\item Sensorimotor Imitation using DAgger: +\begin{items} +\item Then we train a policy $\pi(s_t)$ to imitate $\hat\pi(s_t, \Th)$ +\item As we can query $\hat\pi(s_t, \Th)$, we can use DAgger! Much +more efficient than plain BC +\end{items} + +~\pause + +\item This approach is a core paradigm beyond RL: +\begin{items} +\item First develop a method to solve a problem using full +information (could be a planner) +\item Then train a policy to imitate that method with only available (sensor) information +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Privileged Training \& Imitation Learning}{ + +~ + +\twocol[.05]{.45}{.45}{ + +%\show{10-abbeel} +\show[.9]{20-lee} + +~ + +\citehere{2020-lee-LearningQuadrupedalLocomotion} + +}{ + +\show[.8]{20-lee-2} + +\hfill{\urlfont\url{https://youtu.be/txjqn8h6pjU}} + +\hfill{\urlfont\url{https://youtu.be/Xnn4sVSpSh0}} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Privileged Training \& Imitation Learning}{ + +~ + +\twocol[.05]{.4}{.5}{ + +\show[.9]{20-lee-3} + +%% ~ + +%% \citehere{leeLearningQuadrupedalLocomotion2020b} + +}{\small + +\item The privileged policy gets full information as input: Exact $\Th$ and +state $s_t$, including terrain model + +\item The sensorimotor policy only sensor obs.\ $y_t$ + +$\to$ the sensorimotor policy needs to use the sequence $y_{0:t}$, +e.g.\ recursive or transformer + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item The sensorimotor policy uses full observation sequence $y_{0:t}$ +to output controls $u_t$... +\begin{items} +\item What else could it predict based on $y_{0:t}$? +\end{items} + +~\pause + +\cen{\emph{The unobserved physics parameters $\Th$!}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Adaptive Control}{ + +\item Large area within Control Theory + +\item Assumes environment has \emph{varying} parameters $\Th$ ~ +(not directly observed) + +~\pause + +\item One approach: Estimate $\Th$ from past observations and use for +control + +\item Robust control: Estimate posterior belief $p(\Th|y_{0:T})$ over +possible $\Th$ and use control robust to all possibilities + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Domain Adaptation} +\slide{Domain Adaptation}{ + +\item In the Robot Learning community, the word \emph{Domain +Adaptation} is used for any controller that adapts (to varying +unobserved $\Th$) based on past observations $y_{0:t}$. + +~\pause + +\item Explicit approach: +\begin{items} +\item Train an estimator $\psi: y_{0:t} \mapsto \hat\Th$ +\item Then train a policy $\pi(y_{0:t}, \psi(y_{0:t}))$ for fixed $\psi$ +\end{items} + +~ + +\item Implicit approach: +\begin{items} +\item As in Lee et al'20 +\item Just train $\pi(y_{0:t})$, but potentially imposing a +representation that is also predictive for $\Th$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Sim2Real Conclusions}{ + +\item (Pre-)Training in Sim became a standard in modern Robot Learning + +~ + +\item Sim2Real is not considered a blocker anymore: +\begin{items} +\item Domain Randomization, Privileged Training \& Sensorimotor are +powerful approaches +\item Even if policies do not directly transfer $\to$ Real-World +finetuning requires much less data +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Side note: Privileged Training for Imitation Learning}{\label{lastpage} + +\item The paper below used same approach, but in the context +of Imitation Learning: +\begin{items} +\item The privileged policy imitated a human demonstrator using full +access to the driving simulation +\item The sensorimotor policy imitated the privileged policy +\end{items} + +\citehere{2020-chen-LearningCheating} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b3-ReinforcementLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/10-invRL.tex b/RobotLearning/10-invRL.tex new file mode 100644 index 0000000..669f1a4 --- /dev/null +++ b/RobotLearning/10-invRL.tex @@ -0,0 +1,520 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Inverse RL} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Value Alignment + +\item Inverse RL + +\item Preference-based RL + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\twocol[.05]{.45}{.45}{ + +\show[.6]{20-russell} + + +}{ + + +\item Stuart Russell +\begin{items} +\item Russell \& Norvig: \emph{Artificial Intelligence: A Modern +Approach} (1995) +\item Decision \& Game Theory +\end{items} + +~ + +\citehere{2019-russell-HumanCompatibleAI} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Value Alignment} +\slide{Russell: Value Alignment}{ + +\item ``Standard model of AI'' +\begin{items} +\item Define fixed objective; maximize +\end{items} + +~\pause + +\item Difficulty in defining objectives +\begin{items} +\item Consequences (aspects of optimal behavior) unclear +\item Humans are bad at defining objectives +\end{items} + +~\pause + +\item Russell's proposal: +\begin{items} +\item Systems should infer human preferences from behavior +\item Avoid overfitting +\item Large apriori uncertainty (incl.\ noise assumption in human behavior) to avoid overfitting +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\twocol[.05]{.45}{.45}{ + +%\show{10-abbeel} +\show[.9]{16-hadfield-menell} + +~ + +\citehere{2016-hadfield-menell-CooperativeInverseReinforcement} + +}{ + +\item Game-theoretic formalization of \emph{Value Alignment} +\begin{items} +\item ..is just one possible formulation +\item example for efforts to make ``Value Alignment'' more rigorous +\end{items} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Value Alignment + +\item \textbf{Inverse RL} + +\item Preference-based RL + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Inverse Reinforcement Learning}{ + +\item Instance of \textbf{Imitation Learning}; recall: +\begin{items} +\item Given expert demonstration data $D=\{(s^i_{1:T_i}, a^i_{1:T_i})\}_{i=1}^n$ +without external rewards, objectives, costs defined +\item Extract the ``relevant information/model/policy'' to reproduce +demonstrations +\end{items} + +~\pause + +\item Recap: Types of Imitation Learning +\begin{items} +\item Behavior Cloning + +\item Trajectory Distribution Learning (\& Constraint Learning) + +\item Direct (Interactive) Policy Learning (DAgger) + +\item \textbf{Inverse Reinforcement Learning} +\begin{items} +\item Builds on the full formalism of RL +\end{items} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Inverse Reinforcement Learning}{ + +\item General Idea: +\begin{items} +\item Given expert demonstration data $D=\{(s^i_{1:T_i}, a^i_{1:T_i})\}_{i=1}^n$ +\item \textbf{infer the reward function} assuming the demonstrated +behavior is (approx.) optimal +\end{items} + +~\pause + +\item Benefits of understanding the reward function \emph{behind} +demonstrations: +\begin{items} +\item Can apply and generalize to fully different domains, leading to +different policy +\item Can be better than demonstrator +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Inverse Reinforcement Learning}{ + +\item Methods we discuss: +\begin{items} +\item Max Margin IRL (Apprenticeship Learning) +\item Max Entropy IRL +\item Adversarial IRL +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{General Approach} +\slide{IRL: General Approach}{ + +\small + +\item Recall the value of a policy $\pi$ +$$J(\pi) = \Exp[\xi\sim P_\pi]{\Sum_{t=0}^\infty \g^t R(s_t,a_t) }$$ + +\pause + +\item Given a demonstration policy $\pi^*$, we want to find $R$ such +that for any other policy $\pi$: +$$J(\pi^*) \ge J(\pi) \quad\iff\quad \Exp[\xi\sim P_{\pi^*}]{\Sum_{t=0}^\infty \g^t R(s_t,a_t) } +\ge \Exp[\xi\sim P_\pi]{\Sum_{t=0}^\infty \g^t R(s_t,a_t) }$$ + +~\pause + +\item To simplify this, let's assume $R(s,a)$ is \textbf{linear in +features} $\phi(s,a)$: +\begin{align} +R(s,a) +&= w^\T \phi(s,a) = \sum_i w_i \phi_i(s,a) \\ +\To\quad J(\pi) +&= w^\T \Exp[\pi]{\Sum_{t=0}^\infty \g^t \phi(s_t,a_t) } \stackrel\Delta= w^\T \mu(\pi) +\end{align} +and we want +$$\forall_{\pi\not=\pi^*}:~ w^\T \mu(\pi^*) \ge w^\T\mu(\pi)$$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Max Margin IRL} +\slide{Apprenticeship Learning}{ + +~ + +\show[.6]{04-abbeel} + +~ + +\citehere{2004-abbeel-ApprenticeshipLearningInversea} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Apprenticeship Learning}{ + +\item First, $\pi^*$ is not really given but +\begin{items} +\item we estimate $\mu(\pi^*) += \Exp[\pi^*]{\Sum_{t=0}^\infty \g^t \phi(s_t,a_t) }$ from the +demonstration data $D$ +\item This $\mu(\pi^*)$ is the only information used from the +demonstrations +\end{items} + +\item Second, we generate a series of other policies $\pi_i$ against +which we discriminate $\pi^*$ + +\item Third, formulate ``discrimination'' as a max margin problem: +\begin{algorithmic}[1] +\State initialize $\pi_0$ +\For{$i=0,1,2,\ldots$} +\State $w,t \gets \argmax_{w,t\in\RRR} +t \st \norm{w}\le 1\comma \forall_{j\in\{0,..,i\}}:~ w^\T\mu(\pi^*) \ge +w^\T \mu(\pi_j)+t$ +\State $\pi_{i\po} \gets \argmax_\pi J(\pi)$ \quad\textbf{RL problem!} +\EndFor +\end{algorithmic} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Max Entropy IRL} +\slide{Maximum Entropy IRL}{ + +\show[.6]{08-ziebart} + +\citehere{-ziebart-MaximumEntropyInverse} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Maximum Entropy IRL}{ + +\info{skipping details} + +\item First, the expert might be noisy, demonstrations $\xi$ are assumed +$$P(\xi; w) = \frac{\exp\{w^\T \mu(\xi)\}}{\Int \exp\{w^\T \mu(\xi')\}~ d\xi'}$$ + +\item Second, find $w$ that leads to max entropy $P(\cdot; w)$ but +matches demonstrations: +\begin{align*} +\min_w +& \int P(\xi;w) \log P(\xi;w)~ d\xi \\ +\st +& \Exp[\xi\sim P(\xi;w)]{\mu(\xi)} = \mu(\pi^*) +\end{align*} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Adversarial IRL} +\slide{Adversarial IRL}{ + +\item Recall idea of GANs: + +$$\min_G \max_D \Exp[x\sim p_\text{data}]{\log D(x)} + \Exp[y=G(z), +z\sim p_z]{\log[1-D(y)]} $$ + +\begin{items} +\item Train a discriminator $D$ to label data positive, and +generator's samples negative +\item Train a generator $G$ to maximize likelihood of being classified +data +\end{items} + +\citehere{2014-goodfellow-GenerativeAdversarialNets} + +~\pause + +\item The max margin idea is very similar: +\begin{items} +\item Find a reward function that discriminates $\pi^*$ optimal from +all others +\item Find other policies $\pi_i$ iteratively to discriminate against +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Adversarial IRL}{ + +\twocol[.05]{.45}{.45}{ + +\show[1]{18-fu} + +~ + +\citehere{2018-fu-LearningRobustRewards} + +}{ + +\show[1]{18-fu2} + +} + +\tiny Earlier similar work: \cite{2016-finn-GuidedCostLearning} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Adversarial IRL}{ + +\show[.6]{18-fu3} + +\small + +\item The discriminator $D_{\t,\phi}(s,a,s')$ operates on triplets and +is parameterized as +\begin{align*} +D_{\t,\phi}(s,a,s') +&= \frac{\exp\{f_{\t,\phi}(s,a,s')\}}{\exp\{f_{\t,\phi}(s,a,s')\} ++ \pi(a|s)} \\ +f_{\t,\phi}(s,a,s') +&= g_\t(s,a) + \g h_\phi(s') - h_\phi(s) \\ +&\approx \underbrace{r(s,a) + \g V(s')}_{Q(s,a)} - V(s) = A(s,a) +\end{align*} +\begin{items} +\item This particular decomposition is crucial! +\item Training this way $g_\t(s,a)$ automatically gets ``reward +semantics'', and $h_\phi$ ``value semantics'' +\item $A(s,a)$ is called \emph{advantage function} +%\item Interesting \emph{generalization} experiments +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Inverse RL Summary}{ + +\item Conceptually highly interesting + +\item The max-margin/discrimination/adversarial idea is core to many +approaches +\begin{items} +\item Max entropy is alternative way of thinking +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Value Alignment + +\item Inverse RL + +\item \textbf{Preference-based RL} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Preference-based RL} +\slide{Preference-based Learning}{ + +\item In ML: +\begin{items} +\item Given data of +preference tuples $D = \{ (x^i_1\succ x^i_2) \}_{i=1}^n$ ~ (each tuple +means a user preference ) +\item learn a mapping $f: X \mapsto \RRR$ to minimize, e.g. +$$\sum_{i=1}^n [f(x^i_2) - f(x^i_1)]_+$$ +\end{items} + +~\pause + +\begin{items} +%\item This is a ReLu loss -- others more common +\item Read about \emph{label ranking, instance ranking, object ranking} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Preference-based RL}{ + +\item Given \emph{trajectory segment} data $D=\{(s^i_{1:T_i}, +a^i_{1:T_i})\}_{i=1}^n = \{\xi^i\}_{i=1}^n$ and \emph{preferences} +$\xi^i \succ \xi^j$ for some pairs $(i,j)$, find a reward function s.t. + +$$\xi^i\succ \xi^j \quad\To\quad \sum_{t=1}^T R(s^i_t,a^i_t) > \sum_{t=1}^T R(s^j_t,a^j_t) $$ + +~\pause + +\item Long history, e.g. + +\citehere{2012-akrour-APRILActivePreference} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Deep RL from Human Preferences}{ + +\twocol[.05]{.45}{.45}{ + +\show[1]{17-christiano} + +~ + +\citehere{2017-christiano-DeepReinforcementLearning} + +}{ + +\show[1]{17-christiano2} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Deep RL from Human Preferences}{ + +\item Iteratively update a policy $\pi$ and reward function $R_\psi$: +\begin{items} +\item Run RL algorithm to update $\pi$ with $R$; collect episodes + +\item Select segments $\xi^i$ +from these episodes; let a human specify preferences $\xi^i \succ \xi^j$ + + +\item Update $R$ to minimize ``preference loss'' +\end{items} + +\item Assume human preferences are noisy (Bradley-Terry model) +$$P(\xi^i\succ \xi^j;R) = \frac{\exp\{\sum_{t=1}^T +R(s^i_t,a^i_t)\}}{\exp\{\sum_{t=1}^T R(s^i_t,a^i_t)\} + \exp\{\sum_{t=1}^T R(s^j_t,a^j_t)\}}$$ +\begin{items} +\item Maximize likelihood $\max_\psi \sum_{\xi^i \succ \xi^j} \log +P(\xi^i\succ \xi^j; R_\psi)$ for all human provided preferences +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Robotics Application}{\label{lastpage} + +\twocol[.05]{.45}{.45}{ + +\show[1]{23-hejna} + + +~ + +\citehere{2023-hejnaiii-FewshotPreferenceLearning} + +}{ + +\show[1]{23-hejna2} + +{\urlfont\url{https://sites.google.com/view/few-shot-preference-rl/home} + +} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b3-ReinforcementLearning,b4-InverseRL} +}{} + +\slidesfoot diff --git a/RobotLearning/11-safeLearning.tex b/RobotLearning/11-safeLearning.tex new file mode 100644 index 0000000..dfea918 --- /dev/null +++ b/RobotLearning/11-safeLearning.tex @@ -0,0 +1,580 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Wolfgang H{\"o}nig} + +\renewcommand{\topic}{Safe Learning} +% \renewcommand{\keywords}{Inspired by Guanya Shi's Lecture 6} + +\slides + +\input{macros-local} +\providecommand{\bm}[1]{\boldsymbol{#1}} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Safety}{ + +~ + +What might ``safety'' refer to in safe learning? + +~ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Motivation}{ + +\show[1.0]{safe_learning_survey_fig1.png} + +\citehere{2022-brunke-SafeLearningRobotics} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +~ + +\item Definitions of Safety and Safe Learning + +~ + +\item Overview of Existing Solutions (\& Case Studies) + + +~ + +\item Discussion / Open Challenges + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{What is learned?}{ + +~\anchor{220,-20}{\showh[.45]{robLearn1}} + +~ + +~\small + +\item Consider policy $\pi: x_t \mapsto u_t$ +\begin{itemize} +\item Safety means (intuitively) that if we rollout $\pi$ ($x_{t+1}=f(x_t,\pi(x_t))\quad \forall t$), we never end up in a ``bad'' state (e.g., collision, crash, stability/tracking) for ``valid'' start states $x_0$ +\item In some cases, safety should apply while learning as well +\end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Safety Definitions} +\slide{Definition of Safety (1)}{ + +\item Dynamics $x_{k+1} = f_k(x_k, u_k, w_k)$ +\begin{itemize} + \item $x_k \in \mathcal X$ (state) + \item $u_k \in \mathcal U$ (action) + \item $w_k \sim \mathcal W$ (process noise) + \pause + \item Why $f_k$ and not $f$? +\end{itemize} + +\pause + +\item Objective $J(x_{0:N}, u_{0:N-1}) = l_N(x_N) + \sum_{k=0}^{N-1} l_k(x_k, u_k)$ + +\item Safety constraints + \begin{itemize} + \item State constraints (e.g., no collisions) + \item Input constraints (e.g., actuation limits) + \item Stability guarantees (e.g., robot converging to desired reference path) + \end{itemize} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Definition of Safety (2)}{ + +\show[1.0]{safe_learning_survey_fig3.png} + +\citehere{2022-brunke-SafeLearningRobotics} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Definition of Safety (3)}{ + +\item Hard constraints (safety level 3) + +\begin{align*} + c_k^j(x_k, u_k, w_k) \leq 0 \quad \forall k \quad \forall j +\end{align*} + +\item Chance constraints (safety level 2) + +\begin{align*} + Pr(c_k^j(x_k, u_k, w_k) \leq 0) \geq p^j \quad \forall k \quad \forall j \quad p^j \in [0,1] +\end{align*} + +\item Soft constraints (safety level 1) + +\begin{align*} + c_k^j(x_k, u_k, w_k) \leq \epsilon_j \quad \forall k \quad \forall j\\ + l_\epsilon(\boldsymbol{\epsilon}) \geq 0 \text{ (Cost function term)} +\end{align*} + + +% \note{$j$ is the constraint index} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Definition of Safe (Control) Learning}{ + +% \item Let $f_k(x_k, u_k, w_k) = \bar f_k(x_k, u_k) + \hat f_k(x_k, u_k, w_k)$ ($\bar f_k$ prior model; $\hat f_k$ uncertain dynamics) + + +% TODO: add equation 9 + +% \item Collected data $(x, u, c, l)$ may inform/update dynamics ($\hat f_k$), safety constraints ($c$), or cost ($l$) + +\show[1.0]{safe_learning_talk_1.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Relationship to (Classic) Controls}{ + +\item Robust control + \begin{itemize} + \item Assume disturbance bounds known + \item Find \emph{fixed} controller that works even in the worst-case + \end{itemize} + +\item Adaptive controls +\begin{itemize} + \item Assume environment has \emph{varying} parameters $\Th$ ~ (not directly observed) + \item Controller changes \emph{online} (e.g., by estimating $\Th$) +\end{itemize} + +\item Tube-based Model Predictive Control (MPC) +\begin{itemize} + \item Robust control in MPC framework: use tighter constraints to account for unmodeled dynamics +\end{itemize} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Relationship to (Classic) Controls}{ + +\show[1.0]{safe_learning_talk_2.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \slide{Relationship to (Classic) RL}{ + +% \item Constrained MDPs (CMDPs) +% \item Robust MDPs + +% } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Relationship to (Classic) RL}{ + +\show[1.0]{safe_learning_talk_3.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +~ + +\item Definitions of Safety and Safe Learning + +~ + +\item \textbf{Overview of Existing Solutions (\& Case Studies)} + + +~ + +\item Discussion / Open Challenges + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Existing Solution Strategies}{ + +~ + +\begin{enumerate} +\item Safely Learn Uncertain Dynamics +\item RL that Encourages Safety and Robustness +\item Safety Certification +\end{enumerate} + +~ + +\info{Online Adaption/Learning (dynamics, cost function, constraints, control parameters) vs Offline (update in batches)} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Existing Solution Strategies}{ + +\show[0.7]{safe_learning_survey_fig4.png} + +\citehere{2022-brunke-SafeLearningRobotics} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Safety Certification} +\slide{Strategy III: Safety Certification: Constraint Set}{ + +\item Key idea + \begin{itemize} + \item Learn policy ``as usual'' + \item At runtime, apply a safe action $u_{\text{safe}} = \argmin_{u} \norm{u - u_{\text{learned}}}^2$ such that $x_{k+1}$ is safe + \end{itemize} + +\item Safe states can be computed by + \begin{itemize} + \item Control Barrier Functions (CBFs) + \item Hamilton-Jacobi Reachability Analysis + \item Predictive safety filters\\ + \info{keep track of safe control inputs that could steer back to a known safe state} + \end{itemize} + +% interaction +% Advantages / Disadvantages ? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy III: Safety Certification: Constraint Set}{ + +\item More Advanced + +\begin{itemize} + \item If safety layer is differentiable $\rightarrow$ end-to-end training (e.g. \cite{2020-riviere-GLASGlobaltoLocalSafe}) + \item Learn safety filters directly +\end{itemize} + +\show[0.3]{2023-wabersich-DataDrivenSafetyFilters.png} +\citehere{2023-wabersich-DataDrivenSafetyFilters} + + +% TODO: refer to that other tutorial paper + +% interaction +% what safety levels can be achieved? + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy III: Safety Certification: Stability}{ + +\item Stability: (informal) Can the robot track the reference, even with (small) disturbances? + \info{Formal proofs via Lyapanov functions or contraction theory} + +\item Typical assumptions: +\begin{itemize} + \item Bounded disturbance + \item Bounded change in disturbance (Lipschitz continuous with known Lipschitz bound) + \item Unbounded control authority +\end{itemize} + +\item Lipschitz-based: Treat neural network as ``disturbance''; limit magnitude and Lipschitz bound during training (\emph{Spectral Normalization}) (e.g., \cite{2019-shi-NeuralLanderStable}) + +\item Region of Attraction: Lyapunov Neural Networks \cite{2018-richards-LyapunovNeuralNetwork} + +%Stability Certification (Lipschitz-based, Learning Regions of Attractions) + + +% CASE STUDY: Neural Lander + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Neural Lander (based on slides from Shi)}{ + +\show{2024-shi-lec22-neurallander1} + +Video: {\urlfont\url{https://youtu.be/FLLsG0S78ik}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Neural Lander (based on slides from Shi)}{ + +\show[1.0]{2024-shi-lec22-neurallander3} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Safety Encouraging RL} +\slide{Strategy II: RL that Encourages Safety and Robustness}{ + +\item 1. Safe Exploration and Optimization + +\item 2. Risk-averse RL and uncertainty-aware RL + +\item 3. RL for Constrained MDPs (CMDPs) + +\item 4. RL for Robust MDPs + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy II: RL that Encourages Safety: Safe Exploration}{ + +\item Safe Exploration: only allow the policy to explore safe states + + +\show{2012-moldovan-SafeExplorationMarkov} + +\show[0.45]{2012-moldovan-SafeExplorationMarkov_fig1} + +\citehere{2012-moldovan-SafeExplorationMarkov} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy II: RL that Encourages Safety: Safe Exploration}{ + +\item Safe Exploration: only allow the policy to explore safe states + +\show[1.0]{2012-moldovan-SafeExplorationMarkov_fig4} + +\citehere{2012-moldovan-SafeExplorationMarkov} +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy II: RL that Encourages Safety: Safe Exploration}{ + +\item Safe Optimization: Minimize cost function without sampling inputs that violate safety constraints, e.g., SafeOpt \cite{2016-berkenkamp-SafeControllerOptimization} + +\show[0.9]{2016-berkenkamp-SafeControllerOptimization_fig2.png} + +Safe set $\mathcal S_n$ (red): Could be potential maximizers $\mathcal M_n$ (green) or expanders $\mathcal G_n$ (magenta) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: SafeOpt}{ + +\twocol[.02]{.45}{.45}{ +\show[1.0]{2016-berkenkamp-SafeControllerOptimization_alg1.png} +}{ +\begin{itemize} +\item Update sets using GPs +\item From the union of safe potential maximizers or expanders, measure where the uncertainty is highest +\end{itemize} +} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: SafeOpt}{ + +Application: Safe controller gain tuning + +\show[0.5]{2016-berkenkamp-SafeControllerOptimization_fig3.png} + +Video: {\urlfont\url{https://youtu.be/GiqNQdzc5TI}} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy II: RL that Encourages Safety: Safe Exploration}{ + +\item Learning a safety critic: learn a Q-function that predicts ``safety'', e.g., \cite{2021-thananjeyan-RecoveryRLSafe} + +\show[0.9]{2021-thananjeyan-RecoveryRLSafe_fig2.png} + +%interaction: which safety levels can be achieved + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy II: RL that Encourages Safety: Risk-averse RL}{ + +\item Learn/estimate \emph{risks} (e.g., probability of a collision) +\item At runtime, prefer actions with low risk (e.g., MPC planner) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Agile But Safe \cite{2024-he-AgileSafeLearning}}{ + +\show{2024-he-AgileSafeLearning_fig2.png} + +Web: {\urlfont\url{https://agile-but-safe.github.io/}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy II: RL that Encourages Safety: RL for CMDPs}{ + +``However, most of the work in this area remains confined to naive simulated tasks, motivating further research on their applicability in real-world control.'' + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Strategy II: RL that Encourages Safety: RL for Robust MDPs}{ + +\item Robust Adversarial RL \cite{2017-pinto-RobustAdversarialReinforcement} + +\twocol[.02]{.45}{.45}{ + \show{2017-pinto-RobustAdversarialReinforcement_fig7.png} +}{ +\begin{itemize} +\item Train two policies: a robust policy and a destabilizing adversary (that can apply random forces on the robot) +\item Trained iteratively +\end{itemize} +} + +\item Domain Randomization + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Safe Dynamics Learning} +\slide{Strategy I: Safely Learn Uncertain Dynamics}{ + +\item 1. Learning Adapative Control + +\item 2. Learning Robust Control + +\item 3. Learning Robust MPC + +\item 4. Safe Model-based RL + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +~ + +\item Definitions of Safety and Safe Learning + +~ + +\item Overview of Existing Solutions (\& Case Studies) + +~ + +\item \textbf{Discussion / Open Challenges} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Open Challenges} +\slide{Open Challenges}{ + +\item Broader class of robots (hybrid dynamics, multi-robot, soft-robot, ...) + +\item Scalability \& Sampling/Computational Efficiency + +\item Imperfect State Measurements + +\item Verification of Safety-Related Assumptions + +\item Automatic Inference about What is Safe + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Discussion}{ + +\item What about other learning problems? + \begin{itemize} + \item Learning planners that output waypoints/trajectories (rather than a policy that outputs one action)? + \item Using humans as input (e.g., through language)? + \item Including perception (e.g., $y \mapsto u$) + \item We discussed Safe RL and safe dynamics learning; What would Safe Imitation Learning be? What would Safe Inverse RL be? + \end{itemize} + +\item How would you safely learn how to fly from scratch? +% purposefully explore a limited set of "unsafe" actions not really used + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \slide{To Do}{ + +% \item Safe exploration in active learning (estimating failure prob. with GPs, chance constraints) + +% \item Safe exploration in RL (returnability, Pieter Abbeel) + +% \item Schoellig survey paper + +% \item adverserial problem formulations (Drew Bagnell [robust control]) + +% Leutenegger (classic pipeline for safety) + +% } + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusion}{\label{lastpage} + +\item Three Safety Levels: soft constraints, chance constraints, hard constraints + +\item Safety filters can be easily used, but are difficult to design for uncertain dynamics + +\item Encouraging safety has other advantages (e.g., sim-to-real transfer) + +\item Many practical challenges remain, especially for full robotic solutions + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b5-SafeLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/12-manipulation.tex b/RobotLearning/12-manipulation.tex new file mode 100644 index 0000000..d7dca26 --- /dev/null +++ b/RobotLearning/12-manipulation.tex @@ -0,0 +1,639 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Manipulation \& Grasp Learning} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} +\providecommand{\SE}{\text{SE}} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Manipulation Intro + +\item Background on Grasping + +\item Grasp Learning Methods + +\item Briefly: Other Manipulation Learning + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Manipulation} +\slide{Manipulation is a Core Challenge in Robotics!}{ + +\pause + +\item Recall the ``Robotics Essentials Lecture'' +\begin{items} +\item Robotics is about Articulated Multibody Systems + +\item Objects in the environment are part of the ``multibody system'' +(slide 21); have their own DOFs, but are not articulated + +\item hybrid dynamics: on-off switching of manipulability; friction, stiction, slip, non-point contacts + +\end{items} + +~\pause + +\item Think back about the last 5 lectures \& exercises +\begin{items} +\item dynamics learning, imitation learning, RL, InvRL, safe learning +\item Most work: state space $\oto$ robot configuration (Hopper, +Walker, helicopter, UAVs, quadropeds) +\item Few works involved game environments: SpaceInvaders, Pong +\item Some works about image-based manipulation of single object: +image $\oto$ state +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Manipulation -- Definition}{ + +\item Matt Mason: + +\cen{\emph{Manipulation is when an agent moves +things other than itself.}} + +\citehere{2018-mason-RoboticManipulation} + +~\pause + +\item My view: \emph{General-purpose Manipulation $\oto$ Ability to reach \emph{any} +physically possible environment configuration} + +~\pause\tiny + +\item Earlier work/definitions was fully focussed on grasping; now +includes pushing, throwing, sticking, tools, ropes, any means... + +\item Great Lecture: + +\citehere{2023-tedrake-RoboticManipulationLecture} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Manipulation Learning}{ + +\item What is learned?\anchor{80,-20}{\showh[.5]{robLearn1}} + +~\pause + +\item Policy: Image $\to$ Controls +\begin{items} +\item Grounded in MDP formalism: $x_t, u_t \mapsto r_t, x_{t\po}$ +\item is about the control process in fine time resolution +\end{items} + +~\pause + +\item Solutions/Constraints: Image $\to$ grasp pose, push pose +\begin{items} +\item Not about the control process; no MDP formalism; no rewards, but $x \mapsto $success/no-success +\item The learned model predicts successful grasps, push poses, throw +parameters, etc +\item These are then executed using standard control theory +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Manipulation Intro + +\item \textbf{Background on Grasping} + +\item Grasp Learning Methods + +\item Briefly: Other Manipulation Learning + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Grasping Background}{ + +\tiny See also Chapter 12 of + +\citehere{2017-lynch-ModernRobotics} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Contacts \& Force Closure} +\slide{Contacts}{ + +\item Contact between two bodies -- definitions: +\begin{items} +\item configuration $q=(q_1,q_2)$ (with $q_i\in\SE(3)$ pose of $i$th body) +\item Their shapes define the \textbf{pairwise signed-distance} $d_{12}(q_1, q_2)$ +(and its gradient) +\item Two nearest points $p_1$, $p_2$ are called \textbf{witness +points} \anchor{50,-40}{\showh[.2]{poa2}} +\item We also have the contact normal $n\in\RRR^3$ +%\item Contact types: Static, rolling, sliding, breaking +\end{items} + +~\pause + +\item Multiple contact forces on one body: +\begin{items} +\item One body, $C$ contact points at position $p_i$, each +creates \textbf{wrench} $(f_i,\tau_i)\in\RRR^6$ at $p_i$, totals: +\begin{align*} +f^\text{total} + &= \sum_{i=1}^C f_i \comma +\tau^\text{total} + = \sum_{i=1}^C \tau_i + f_i\times(p_i-c) +\end{align*} +\item Newton-Euler equation describes the resulting acceleration: +\begin{align*} +\mat{c}{f^\text{total} \\ \tau^\text{total}} +&= \mat{c}{m \dot v \\I \dot w + w\times I w} \\ +\end{align*} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\tiny +Since \emph{``Manipulation is when an agent moves +things other than itself''} these equations ``fully describe'' what +manipulation is about: Creating contact forces to appropriately +accelerate objects. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\ftang}{f^{=}} + +\slide{Contacts}{ + +\item Contact Friction: +\begin{items} +\item Point finger can not transmit torque $\To$ ~ $\tau_i = 0$ \quad +(better: patch models) +\item Point finger sticks only when tangentil force +$\ftang \le \m f^\perp \quad (f^\perp = n n^\T f,~ \ftang += f - f^\perp)$ +\item The set $F_i = \{f_i : \ftang_i \le \m f_i^\perp\}$ is called the \textbf{friction cone} + +\twocol{.4}{.4}{ +\show[.4]{forceClosure-frictionCone} +}{ +\show[.3]{forceClosure2} +} +\end{items} + +~\pause + +\item \textbf{Force closure:} +\begin{items} +\item A \textbf{contact configuration} $\{(p_i,n_i)\}_{i=1}^C$ with friction coeff $\mu$ creates force closure + +$\iff$ we can generate (counter-act) + arbitrary $f^\text{total}$ and $\tau^\text{total}$ by choosing + $f_i\in F_i$ appropriately. + +$\iff$ The \emph{positive linear span of the fiction + cones} covers the whole space of $(f^\text{total},\tau^\text{total})\in\RRR^6$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Force Closure \& Force Closure Metric \& Form Closure \& Caging}{ + +~\small + +\item Force closure: The contacts can apply an arbitrary +wrench (=force-torque) to the object. + +\pause + +\item Force closure metric: Limit finger force $|f_i|\le 1$ and compute radius (=origin-distance) of convex hull + +\item Form closure: The object is at an isolated point in + configuration space. Note: form closure $\iff$ frictionless force + closure + +\item Caging: The object is not fixated, but cannot escape + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Manipulation Intro + +\item Background on Grasping + +\item \textbf{Grasp Learning Methods} + +\item Briefly: Other Manipulation Learning + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Grasp Learning} +\slide{Grasp Learning}{ + +\item What is learned?\pause +\begin{items} +\item Simplified parallel gripper:\anchor{100,-10}{\showh[.2]{graspNet1}} +\item Input: RGB-D image of scene +\pause +\item Output: Set of \textbf{grasps} (=gripper poses $q^\text{gripper}\in\SE(3)$) in the scene: + +\medskip + +\show[1]{graspnet2} + +\medskip + +\item Alternative output: A network that can score any proposed grasp +\end{items} + +~\pause + +\item Training data: pairs of scene (usually converted +to \textbf{point cloud} $P_s$) and grasps +$$D = \big\{ ~ \big(P_s, \{ q_{s,i} \}_{i=1}^{G_s}\big) ~ \big\}_{s=1}^S $$ + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{GraspNet 1}{ + + +\twocol[.05]{.45}{.45}{ + +\show{graspnet4} + +\citehere{2020-fang-Graspnet1billionLargescaleBenchmark} + +}{\footnotesize + +\item Focusses on data collection (details later) + +$D = \big\{ (P, \{(\underbrace{p\in P, v, D, R}_{q^\text{gripper}\in\SE(3)}, +w)_i\}) \big\}$ + +\item Given data, they propose architecture +\begin{items} +\item First PCL $\to$ $v$/success classifier per point $p$ +\item Then predict $D,R,w$ +\item with separate loss functions for each part +\end{items} + + +} + +~ + +\show[.8]{graspnet3} + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{GraspNet 2}{ + + +\twocol[.05]{.45}{.45}{ + +\show{anygrasp1} + +\citehere{2023-fang-AnygraspRobustEfficient} + +}{\footnotesize + +\item Much more complex architecture + +{\urlfont\url{https://youtu.be/dNnLgAGreec}} + +\item Also dynamic (temporally stable) predictions: + +{\urlfont\url{https://www.youtube.com/watch?v=2O7UoOxeLlk}} + +} + +~ + +~ + + +\show[.5]{anygrasp2} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Other Grasp Learning Work}{ + +\small + +\item Classic: Identifying ``antipodal'' grasps in point clouds: + +\citehere{2017-tenpas-GraspPoseDetection} + + +\item Classic: DexNet family: + +\citehere{2017-mahler-DexNetDeepLearning} + +{\urlfont\url{https://www.youtube.com/watch?v=i6K3GI2_EgU}} + + +\item More from the ``RL'' side (``closed loop grasping''): + +\citehere{2020-song-GraspingWildLearning} + +{\urlfont\url{https://www.youtube.com/watch?v=UPJjpIhXpZ8}} + +\item Contact-GraspNet + +\citehere{2021-sundermeyer-ContactgraspnetEfficient6dof} + +{\urlfont\url{https://www.youtube.com/watch?v=qRLKYSLXElM}} + +\item Using Diffusion Models + +\citehere{2023-urain-SeDiffusionfieldsLearning} + +{\urlfont\url{https://www.youtube.com/watch?v=Tk6l3WsPGMY}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Grasp Data Collection (model- and simulation-based)} +\slide{Grasp Data Collection}{ + +\item My view: +\begin{items} +\item All of the above papers show: If we have good data, we have good +ideas on how to design ML architectures to predict grasps + +\item Data Collection is the key! +\end{items} + +~\pause + +\item Two approaches: +\begin{items} +\item Model-based labels ~ (grasp theory, force closure) +\item Simulation-based labels +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Model-based Grasp Labels}{ + +\item GraspNet-1Billion and DexNet 2.0 papers: +\begin{items} +\item For every point in the scene, for every (or sampled) approach +direction, every offset/roll/width +\item Compute a classical grasp score: Force closure metric +\item Requires knowledge of ground truth object poses and shapes $\to$ +precise object pose estimation +\end{items} + +\show[.7]{graspnet6} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Model-based Grasp Labels}{ + +\item So, force closure theory is the origin of wisdom here! + +~ + +\item The learning machinery ``only'' transfers it to the real world +-- predicting force closure grasps based on real RGB-D + +~ + +\item Cp.\ to imitation learning from a privileged expert! Here the +privileged expert is the force closure metric assuming known object shapes. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Simulation-based Grasp Labels}{ + +\citehere{2021-eppner-AcronymLargescaleGrasp} + +~ + +~ + +\item Use generic rigid body physics simulator:\anchor{50,0}{\showh[.25]{acronym2}} +\begin{items} +\item Throw random objects (from \texttt{ShapeNet}) into a scene (and +render RGB-D image) +\item generate random grasps -- smartly engineered! +\item Close and lift gripper -- measure in-hand motion during both phases +\item ``we simulate 17.744 million grasps, out of which 59.21\% (ap- +proximately 10.5 million grasps) succeed.'' +\end{items} + +\pause + +\item So, the physics simulator (=Newton-Euler equations + contact +models) is the origin of wisdom here! +\begin{items} +\item Again, cp.\ to imitation learning from privileged expert (=simulation) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Grasp Learning Summary}{ + +~\small + +\item Rather advanced for standard parallel gripper; less for more +complex hands + +\item In my view, proper data generation is key -- existing methods still have +deficits + +\item Given proper data, the advances in learning are +unstoppable (stronger architectures, diffusion, etc) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Manipulation Learning} +\slide{Manipulation Learning}{ + +\item Manipulation is more than ``pick-and-place'' +\begin{items} +\item manipulating articulated objects +\item pushing, throwing +\item rolling, spinning, balancing/stacking, etc. +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Recall: Extracting Constraints in Imitation Learning}{ + +~ + +\twocol{.45}{.45}{ + + +%\citehere{2022-manuelli-KPAMKeyPointAffordances} + + +\show[.7]{neuralDescFields} + +%\citehere{2022-simeonov-NeuralDescriptorFields} + +}{ + +\show[.7]{constraints} + +~ + +\cen{\showh[.45]{keypoints1}\qquad\showh[.35]{keypoints2}} +%% \citehere{2022-ha-DeepVisualConstraints} + +%% \item more: +%% \citehere{2024-gao-BiKVILKeypointsbasedVisual} + +%% \citehere{2023-shi-WaypointBasedImitationLearning} + +} + +~ + +~ + +\small +\item Extract ``constraints of success'', but eventually +pick-and-place + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Manipulating Learning for Articulated Objects}{ + +~ + +\twocol[.05]{.35}{.55}{ + +\show{flowbot1} + +\citehere{2024-eisner-FlowBot3DLearning3D} + +}{\footnotesize + +\item Assumes ``gripper can be attached to any point on surface'' + +\item Learn a mapping $P \mapsto$ flow field $F_p \in \RRR^3$ for +each $p \in P$ + +{\urlfont\url{https://drive.google.com/file/d/1jiEHT--WQec5diEJE6a4dMJkBnP3d36B/view}} + +} + +~ + +~ + +\cen{\showh[.45]{flowbot2}\quad\showh[.45]{flowbot4}} + +\show[.6]{flowbot3} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Similar earlier work: + +~ + +\show[.6]{umpnet1} + +\citehere{2022-xu-UniversalManipulationPolicy} + +~ + +\show[.5]{umpnet2} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusions}{\label{lastpage} + +\item Manipulation Learning is often beyond the MDP and RL framework! + +\item We often don't learn low-level policies, but: +\begin{items} +\item Predicting grasps in an RGB-D scene +\item Predicting manipulability (flow) of articulated objects from +RGB-D +\item Predicting keypoints/waypoints of interaction +\end{items} + +~\pause + +\item BUT, I think this is sooo far away from truely +understanding/learning General-purpose Manipulation! + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b6-Manipulation} +}{} + +\slidesfoot diff --git a/RobotLearning/13-plan.tex b/RobotLearning/13-plan.tex new file mode 100644 index 0000000..7ebc5c6 --- /dev/null +++ b/RobotLearning/13-plan.tex @@ -0,0 +1,1037 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{TAMP \& Language} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} +\providecommand{\SE}{\text{SE}} +\renewcommand{\path}{{\text{path}}} +\renewcommand{\succ}{{\text{succ}}} +\newcommand{\goal}{{\text{goal}}} +\newcommand{\switch}{{\text{switch}}} +\newcommand{\pre}[1]{{\textsf{#1}}} +\newcommand{\rt}{{\mathcal{T}}} +\newcommand{\xv}{{\underline x}} +\newcommand{\secmpc}{{\sc SecMPC}} +\newcommand{\face}[2]{ +\begin{minipage}{11mm} +\centering +\showh[1]{faces/#1}\\ +\ttiny #2 +\end{minipage} +} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Remaining Lectures}{ + +\item June 25: TAMP \& Language +\item July 2: Multi-Robot Learning +\item July 9: Robot Learning Discussion -- Lecture Feedback -- Exam Info + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Background on Task and Motion Planning (TAMP) + +\item Learning in TAMP + +\item Language in Robotics + +\item LLMs \& TAMP + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Task and Motion Planning} +\slide{Task and Motion Planning (TAMP) examples:}{ + +\tiny + +\twocol{.5}{.4}{\centering + +\movh[]{.7}{movies-marc/14-Mordatch-CIO}\\ +Mordatch et al: CIO (SIGGRAPH'12) + +\medskip + +\movh[]{.7}{movies-marc/20-Garret-PDDLStream}\\ +Garrett et al: PDDLStream (ICAPS'20) + +}{\centering + +\movh[]{.6}{movies-marc/RSS-concat600600}\\ +Toussaint at al: LGP (RSS'18) + +\medskip + +\movh[]{.9}{movies-marc/21-valentingRSSsubmission}\\ +Hartmann et al. (IROS 20) +%\movh[]{.4}{movies-marc/OpenAI-game-pushAround}\\ +%\hfill OpenAI Hide \& Seek (arxiv'19) + +} + +%% \medskip + +%% \normalsize +%% %% Mujoco? + +%% \cen{\emph{What does it take to generate such behavior?}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Task and Motion Planning (TAMP)}{ + +~ + +\item What is the right level of ``abstraction'' to reason about +manipulation? + +\pause + +\begin{items} +\item Low-level motor commands? (Torques?) +\item Mid-level kinematic commands? (6D endeff target +position/velocity) +\item Actions/skills? (Pick, place, push, throw, hit, \emph{how long +is the list?}) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Abstractions}{ + +\item What does the AI/RL researcher say about abstractions? +\begin{items} +\item Hierarchical MDPs, Options, Hierarchical RL +\item (Classical AI: Landmarks in A* search) +\item Abstraction learning is hard: +\begin{items} +\item Given action primitives $\to$ state abstractions clear +(Konidaris' work) +\item Given state abstractions $\to$ action primitives clear (``skill +discovery'') +\item Classical ideas for state abstractions: identifying bottlenecks +(=doors in configuration space; McGovern, Barto 2001) +\end{items} +\item Modern view: Data-driven: Assume tons of demonstrations and +cluster-segment them +\end{items} + +~\pause + +\item What does the Roboticist say about abstractions?\pause +\begin{items} +\item Force level, motion level, task level +\item Task level: discrete symbolic state and actions (STRIPS/PDDL) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{STRIPS/PDDL}{ + +\show{task_planning_example} + +\medskip + +\begin{items} +\item A symbolic state $s_t$ is a set of grounded literals +\item A symbolic action operators defines a precondition and effect +\item Eventually, \textbf{his defines the set of possible successor states +$s_{t\po} \in \succ(s_t)$} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Task and Motion Planning}{ + +\item Task-level is defined by +\begin{items} +\item symbols (predicates), objects (constants), and action operators +\item initial state $s_0$, goal sentence, action operators imply $\succ(s_t)$ +\end{items} + +\item Motion-level is defined by +\begin{items} +\item world configuration space $\XX$, goal configurations $\XX_\text{goal}\subseteq\XX$ +\item feasible space $\XX_{s,\t} \subseteq\XX$ depending on logic state $s$ +and \emph{entry point} $\t$ (action parameter) + +\info{$\XX_{s,\t}$ is called \emph{foliation}, or multi-modal space ~ +$\to$ ~ \textbf{multi-modal motion planning (MMMP)}} +\end{items} + +\item Path-Finding formulation of TAMP: +\begin{items} +\item Find sequence of $(s_i,\tau_i)$ of symbolic states and +continuous feasible paths $\tau_i$ that lead to goal: +\item Paths: $\tau_i: [0,1] \to \XX_{s_i,\t_i}$ +\item Continuity: $\tau_i(0) = \tau_{i\1}(1)$ +\item Entry points: $\t_i = \tau_{i\1}(1)$ (e.g.\ action parameter, +grasp, lower-dim feature of $\tau_{i\1}(1)$) +\item Goal: $s_K \models \text{goal}, \tau_K(1) \in \XX_\text{goal}$ +\end{items} + +\citehere{2021-garrett-IntegratedTaskMotion} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Logic-Geometric Program} +\slide{TAMP as Logic-Geometric Program (LGP)}{ + +\small + +\hspace*{-5mm}\twocol[.05]{.55}{.4}{ + +\tiny +\begin{align*} +\hspace*{-5mm}\min_{s_{1:K} \atop x:[0,KT]\to \XX} & \int_0^{KT} c(\xv(t))~ dt \\ +\hspace*{-5mm}\st~& x(0)=x_0,~ \\%\phi_\goal(X_T)\le0,~\\ +& \forall_{t\in[0,T]}:~ + \bar\phi(\xv(t), s_{k(t)})\le0 \\ +& \forall_{k\in\{1,..,K\}}:~ + \hat\phi(\xv(t_k), s_{k\1}, s_k)\le0 \\ +& s_K \models \text{goal},~ \forall_{k\in\{1,..,K\}}:~ s_k \in \succ(s_{k\1}) +\end{align*} + +\small + +\item {Skeleton} $s_{1:K}$ defines {schedule of physical + modes} + +\item {Constraints} $\hat\phi, \bar\phi$ {define correct physics \textbf{differentiable}} + + +\ttiny\medskip + +[inequalities subsume equalities; $\xv=(x, \dot x, \ddot x)$] + +}{ + +\pause + +\show[.75]{tampLogic} + +~ + +\item Solving implies searching over $s_{1:K}$ and solving the corresponding NLP + +} + +\medskip + +%% \cit{Toussaint}{Logic-Geometric Programming: An Optimization-Based Approach to Combined Task and Motion Planning}{IJCAI'15} + +%% \cit{Toussaint, Lopes}{Multi-Bound Tree Search for Logic-Geometric Programming}{ICRA'17} + +%% \cit{Toussaint, Allen, Smith, Tenenbaum}{Differentiable Physics and Stable Modes for Tool-Use and Manipulation Planning}{R:SS'18} + +\citehere{2015-toussaint-LogicGeometricProgrammingOptimizationBased} + +\citehere{2018-toussaint-DifferentiablePhysicsStable} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{renderings(!) of example solutions...}{ + +\threecol{.3}{.4}{.25}{\centering + +%\vspace*{-5mm} +\movh[]{.9}{movies-marc/RSS-concat600600}% +\anchor{-40,-7}{\ttiny(R:SS 18)} + +%~ + +%%\movh[]{.9}{videos/19-forceBased-pushWithStickFloat3_COMP} +\movh[loop]{.9}{videos/19-forceBased-pushWithStick-good_COMP} + +}{\centering + +\movh[loop]{.9}{movies-marc/21-valentingRSSsubmission}% +\anchor{-40,-7}{\ttiny(IROS 20)} +%20-IROS-BUGAassembly} + +\medskip + +\movh[loop]{.75}{videos/19-forceBased-liftRing-dynamic_COMP}% +\anchor{-40,-7}{\ttiny(IROS 20)} + +}{\centering + +~ + +\movh[loop]{.9}{movies-marc/20-DeepVisualReasoningData}% +\anchor{-40,-7}{\ttiny(R:SS 20)} + + +~ + +\movh[loop]{.9}{videos/19-banana-03} + +~ + +%\movh[]{.9}{videos/19-forceBased-bookOnShelf2_COMP} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Abstractions}{ + +~ + +\item What does ``LGP'' say about abstractions? +\pause +\begin{items} +\item There are two levels: the convex level (NLP), and the non-convex +(discrete decisions) +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Intro to Task and Motion Planning (TAMP) + +\item \textbf{Learning in TAMP} + +\item Language in Robotics + +\item LLMs \& TAMP + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Learning in TAMP} +\slide{Is model-based TAMP a dead end?}{ + +\item LGP formulates TAMP as model-based optimization problem +\begin{items} +\item Assumption of having a world model is unrealistic ~ (state +estimation from vision ill-posed...) +\item High computation time for large problems -- why plan from +scratch every time? +\end{items} + +~\pause + +\item Opportunities for learning: +\begin{items} + +\item \textbf{Replace exact model by learned constraints $\phi(x)$} +\begin{items} +\item The LGP definition actually only needs constraints +$\phi(x)$, no explicit world model +\item Instead of hand-defining these from a model $\to$ image-conditional neural models $\phi_\t(x; \II)$ +\end{items} + +\item \textbf{Learn to predict plans} +\begin{items} +\item Instead of solving from scratch, learn to predict promising +actions $a_{1:K}$ from the scene image +\end{items} +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Replace exact model by learned constraints $\phi(x)$: + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Constraints Learning} +\slide{}{ + +\show{22-ha1} + +\medskip + +\twocol[.05]{.45}{.45}{ + +\item Learn $\phi(x,\II)$ with $V$ input images $\II$ s.t.: +\begin{items} +\item $\phi(x; \II)=0$ $\iff$ $x$ is correct grasp +\item $\phi(x; \II)=0$ $\iff$ $x$ is correct hanging +\end{items} + +}{ + +\small + +\item Data generating in simulation: +\begin{items} +\item Collect trial-and-error data on correct grasps and hanging +\end{items} + +%% \item (Pre-train backbone on shape reconstruction) + +} + +\medskip + +\citehere{2022-ha-DeepVisualConstraintsa} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Deep Visual Constraints: Network Architecture}{ + +\medskip\small + +\twocol[.03]{.4}{.5}{ + +\showh[.9]{jungsu2} + +~ + +\showh[.9]{jungsu1} + +~ + +\citehere{2022-ha-DeepVisualConstraintsa} + +}{ + +\item Camera views $\II = \{(I^1, K^1), ..., (I^V, K^V)\}$ + +Wanted: image-based constraint model + +\cen{$\phi(x; \II)$} + +~%\pause + +\item First train a $d$-dimensional \textbf{field representation} + +\cen{$y(p; \II) = \frac{1}{V}\Sum_i \text{MLP}(\text{UNet}(I^i, K^i(x)), K^i(x))$} + +\medskip +{\tiny [$p\in\RRR^3$, pre-trained for shape decoding (SDF prediction)]} + +~%\pause + +\item Function is queried at finite set of \emph{interaction points} $p_1(x),..,p_K(x)$ to get the feature + +\cen{$\phi(x;\II) = \text{MLP}(y(p_1(x);\II),..,y(p_K(x);\II))$} + +\medskip +{\tiny [fine-tuned for manipulation success (trial \& error in sim)]} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Deep Visual Constraints}{ + +{\tiny (No search over skeletons, no reactive MPC, just optimal path for given sequence of constraints.)} + +~ + +%\twocol{.5}{.4}{ + +\movc[]{.45}{videos/jungsu/MugHaningDemo} + +%% }{ + +%% \movc[]{.7}{videos/jungsu/training-concat} + +%% } + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Similar: Learn Dynamics Constraints}{ + +%% \medskip + +%% \cen{\showh[.45]{nerf1}\qquad\showh[.25]{nerf2}} + +%% ~ + +\twocol[.05]{.45}{.45}{ + +~ + +\show[1]{nerfDyn1} + +\citehere{2023-driess-LearningMultiobjectDynamicsa} +%% \face{Danny_Driess}{Danny Driess}\quad +%% $\cdots$\quad +%% \face{russ_tedrake}{Russ Tedrake} + +{\urlfont\url{https://dannydriess.github.io/compnerfdyn/}} + +~ + +\show[1]{nerfDyn3} + +}{ + +\show[1]{nerfDyn2} + +~\small + +\item Each object has a latent code $z_i^t$ + +\item learn dynamics $z_{1:m}^t \mapsto z_i^{t\po}$! + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Learning to predict plans.. + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Learning to predict plans} +\slide{}{ + +\twocol[.05]{.4}{.5}{ + +\show[1]{20-danny1} + +\show{20-danny2} + +~ + +\citehere{2020-driess-DeepVisualReasoning} + +}{\small + +\item Data collection $D = \{ \left(S^i, g^i, a^i_{1:K^i}, F^i\right) \}_{i=1}^n$ +\begin{items} +\item with scene $S^i$, goal $g^i$, actions $a^i_{1:K^i}$, +feasibility $F^i$ +\item random generated ``in simulation'', \textbf{model-based TAMP +solver used to label feasibility} +\end{items} + +~ + +\item Train a sequential policy: + +{\tiny +$\pi(a_k; g, a_{1:k\1}, S) =$\\ +$P(\exists_{K>K}\exists_{a_{k\po:K}}: a_{1:K} \text{feasible} \| a_k, +g, a_{1:k\1}, S)$ + +} +\begin{items} +\item Similar to language model: Predict next +``token'' $a_k$ given previous $a_{1:k\1}$ conditional $g,S$ +\end{items} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Deep Visual Reasoning: Network Architecture}{ + +~ + +\showh[.4]{talk-LGP/danny1}~\showh[.55]{talk-LGP/danny2} + +~\small + +\item Uses RNN -- modern version would use transformer + +\item Special encoding of predicates $\bar a, \bar g$ and references $O$ (as masks) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Deep Visual Reasoning: Results}{ + +~ + +\twocol[.05]{.45}{.45}{ + +\movc[externalviewer]{1.}{movies-marc/20-deepVisualReasoning} + +}{ + + +\show[.8]{talk-LGP/forMarc/results1} + +\show[.8]{talk-LGP/forMarc/results2} + +~\tiny + +\item Often, the first proposed action sequence is feasible + +} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item Intro to Task and Motion Planning (TAMP) + +\item Learning in TAMP + +\item \textbf{Language in Robotics} + +\item LLMs \& TAMP + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Language in Robotics} +\slide{}{ + +\twocol[.05]{.45}{.45}{ + +\show[1]{20-tellex1} + +~ + +\citehere{2020-tellex-RobotsThatUse} + +}{ + +\small + +\item Great survey on Natural Language Robot Interaction +\begin{items} +\item Using natural language to command robots, set tasks +\item Using natural language to instruct robots, e.g.\ as part of +demonstrations +\item Different to standard NLP or dialog systems: \textbf{language +needs to be physically grounded} +\end{items} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Natural Language Robot Interaction: Examples}{ + +\medskip + +\twocol[.05]{.45}{.45}{ + +\show[.9]{20-tellex3} + +\ttiny from \cite{2020-tellex-RobotsThatUse} + +}{ + +\tiny + +\item robot asks for help +\item human sets task (with language \& gesture) +\item robot ``reads/comprehends'' wikihow +\item demonstrations via dialog +\item human sets task (nagivation) +\item ... +\item human sets task (object identification) +\item human sets task (navigation) +\item human sets task (manipulation) + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Natural Language Robot Interaction: Datasets}{ + +\twocol[.05]{.5}{.35}{ + +\show[.8]{20-tellex2} + +}{ + +\tiny ``Data sets typically consist of natural language paired with some form of sensor-based context information about the physical +environment'' + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\small + +\item Previous survey highlights substantial literature on Natural Language Robot +Interaction \emph{before} rise of LLMs + +\medskip + +\tiny Example: {\urlfont\url{https://youtu.be/VqSb-ZZuIwI?t=2523}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\key{Language-Image Models (CLIP, CLIPort, SayCan, PaLM-E, RT-2)} +\slide{CLIP (Contrastive Language-Image Pre-training)}{ + +~ + +\twocol[.05]{.45}{.45}{ + +\show[1]{clip1} + +~ + +\citehere{2021-radford-LearningTransferableVisual} + +}{ + +\tiny ``We demonstrate that the simple pre-training task of predict- +ing which caption goes with which image is an +efficient and scalable way to learn SOTA image +representations from scratch on a dataset of 400 +million (image, text) pairs collected from the internet.'' + +~ + +\show[1]{CLIP1} + +} + +~ + +\info{Contrastive Training: ``maximize the cosine similarity of the +image and text embeddings of the $N$ real pairs in the batch while +minimizing the cosine similarity of the embeddings of the $N^2 - N$ incorrect pairings.} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{CLIPort}{ + +~ + +\twocol[.05]{.45}{.45}{ + +\show{CLIPort1} + +~ + +\citehere{2022-shridhar-CliportWhatWhere} + +{\urlfont\url{https://cliport.github.io/}} + +}{ + +\tiny + +``CLIPort: a language-conditioned imitation-learning agent that combines the broad semantic understanding (what) of CLIP +with the spatial precision (where) of Transporter'' + +} + +~ + +\item Trains a policy $\pi: (y_i, l_l) \mapsto a_t$ +\begin{items} +\item top-down orthographic RGB-D $y_t$, language +instruction $l_t$, pick-n-place 2D coordinates $a_t$ +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{SayCan}{ + +~ + +\twocol[.05]{.45}{.45}{ + +Do As I Can, Not As I Say: +Grounding Language in Robotic Affordances + +~ + +\citehere{2023-brohan-CanNotSay} + +{\urlfont\url{https://say-can.github.io/}} + +}{ + +\show[1]{SayCan2} + +} + +~ + +\item Use a LLM (PaLM) to predict \emph{multiple} actions (with +probabilities) +\item Multiply each option with \emph{affordance prediction} +(= probability of success) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{PaLM-E}{ + +~ + +\twocol[.05]{.45}{.45}{ + +\show[1]{palme1} + +~ + + +\citehere{2023-driess-PaLMEEmbodiedMultimodala} + +{\urlfont\url{https://palm-e.github.io/}} + +}{ + +\show[.8]{palme-LLM} + +~\small + +\item Input: \emph{Multi-modal sentence:} +\begin{items} +\item Interleaves words, images (with segmentation), vectors, reference-keywords +\item All token-encoded +\item Various image encodings (ViT, object-centric ViT, OSRT, NeRFs pre-trained) +\end{items} + +\item Output: +\begin{items} +\item Sequences of action primitives (previously trained, RT-1) +\end{items} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +~ + +\tiny + +\twocol{.45}{.45}{\centering + +\movh[]{.7}{videos/23-palme-planning_4x_compressed} + +``Bring me the rice chips from the drawer'' + +~ + +\movh[]{.7}{videos/23-palme-green_star} + +``Bring me the green star'' + +}{\centering + +\movc[]{.7}{videos/23-palme-red_blocks_to_coffee} + +``Push red blocks to the coffee cup'' + +~ + +\movh[]{.7}{videos/23-palme-green_blocks_to_turtle} + +``Push green blocks to the turtle'' + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Example input/output}{ + +~\small + +\item Prompt:\quad \texttt{Given . Q: How to grasp the green object?.} + +Target:\quad \texttt{A: First grasp the orange object and place it on the table, then grasp the green object.} + +~ + +\item Prompt:\quad \texttt{Given . Q: How to stack the white object on top of the red object?.} + +Target:\quad \texttt{A: First grasp the green object and place it on the table, then grasp the white object and place it on the red object.} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{PaLM-E Evaluations}{ + +\small + +\item Data sets: +\begin{items} +\item \textbf{TAMP data (generated by our LGP-TAMP planner)} +\item Table data (previous RT1 paper) +\item SayCan data +\item Other visual/language data: WebLI, VQA, COCO, etc. +\end{items} + +\item Pre-taining: +\begin{items} +\item LLM backbone: language, VQA (WebLI, VQA, COCO) +\item Encodings: reconstruction, auto-encoding +\end{items} + +\item Ablation studies: +\begin{items} +\item Varying transformer sizes +\item generalization (to unseen object situations, esp.\ higher number of objects) +\item freezing, refining, full-learning of backbone LLM or encodings +\item with full/partial choice of data sets \& sizes +\item various image encodings +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{PaLM-E evaluations}{ + +\twocol{.45}{.45}{\centering + +\showh[.9]{palme-ex1} + +~ + +\showh[.9]{palme-ex3} + +}{\centering + +\showh[.9]{palme-ex2} + +~ + +\showh[.9]{palme-ex5} + +} + +%\showh[.9]{palme-ex4} + +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Follow Up: RT-2}{ + +~ + +\twocol[.05]{.45}{.45}{ + +\show{RT2-1} + +~ + +\citehere{2023-zitkovich-Rt2VisionlanguageactionModels} + +}{ + +\show[1]{RT2-2} + +~\tiny + +\item quasi-continuous actions (trained end-to-end): + +\show[1]{RT2-3} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusion}{\label{lastpage} + +\item Levels of abstraction: Force, motion, task + +\item Task and Motion ``Planning'': Core problem formulation of +robotic AI +\begin{items} +\item TAMP theory \& solvers are fully model-based +\item Clear opportunities for learning: constraint learning, learning +to predict plans +\end{items} + +\item Language $\oto$ task \& action level +\begin{items} +\item Lots of classical literature on \emph{language grounding} +\item Connecting natural language with typical robot task descriptions (STRIPS/PDDL) +\end{items} + +\item Huge recent focus on marrying LLMs + TAMP + robotics + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b7-TampLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/14-multiRobot.tex b/RobotLearning/14-multiRobot.tex new file mode 100644 index 0000000..a5c9595 --- /dev/null +++ b/RobotLearning/14-multiRobot.tex @@ -0,0 +1,689 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Wolfgang H{\"o}nig} + +\renewcommand{\topic}{Multi-Robot Learning} + +\slides + +\input{macros-local} + +\providecommand{\bm}[1]{\boldsymbol{#1}} + +% Tikz support +\ifthenelse{\isundefined{\scripthead}}{ +\usepackage{tikz,tkz-euclide} +\usetikzlibrary{shapes.geometric, arrows, shadows.blur, shadows, shapes.multipart} +\usetikzlibrary{positioning} +\usetikzlibrary{intersections} +\usetikzlibrary{tikzmark} +}{} + +% custom definitions +\ifthenelse{\isundefined{\scripthead}}{ + \usepackage{breqn} + \usepackage{bm} +}{} +\newcommand{\B}[1]{\mathbf{#1}} +\newcommand{\fav}{\B{f}_a} +\newcommand{\faf}{f_a} +\newcommand{\tauav}{\bm{\tau}_a} +\newcommand{\tauaf}{\tau_a} +\newcommand{\famax}{f_{a,\mathrm{max}}} +\newcommand{\tauamax}{\tau_{a,\mathrm{max}}} +\newcommand{\favhat}{\hat{\B{f}}_a} +\newcommand{\tauavhat}{\hat{\bm{\tau}}_a} +\newcommand{\fnom}{\bm{\Phi}} +\newcommand{\set}{\mathbf{r}} +\newcommand{\env}{\mathrm{env}} +\newcommand{\sm}{\mathrm{small}} +\newcommand{\la}{\mathrm{large}} + +\slidestitle + + +\slide{Motivation: Multi-Robot Systems}{ + +\item Multiple robots (typically in a team) with a common goal + +\item Typical promises: + \begin{itemize} + \item Achieve goal faster + \item Achieve goal more robustly + \item Higher flexibility (esp. heterogeneous systems) + \item Cheaper (?) + \end{itemize} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Motivation: Multi-Robot Systems}{ + +\item Successful (industrial) solutions + + \begin{itemize} + \item Warehouse logistics (Amazon Robotics, former Kiva systems) + + % https://youtu.be/TUx-ljgB-5Q + \movh[]{.6}{movies-wolfgang/amazon-warehouses} + + \item Aerial Drone shows (Intel, Verity Studios) + \end{itemize} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\slide{Motivation: Multi-Robot System Challenges}{ + +\item Controls: additional constraint for inter-robot collision avoidance + +\item Decision Making: information sharing, task assignment, curse-of-dimensionality for centralized approaches, safety/robustness for decentralized systems + +\item Perception: sensing team members, sensor fusion + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\slide{Outline}{ + +\item \textbf{Handling Dynamic Neighbors} + +\begin{itemize} + \item LSTMs + \item CNNs + \item DeepSets + \item Graph Neural Networks +\end{itemize} + +\item Multi-Agent Reinforcement Learning (MARL) + +\item Discussion / Open Challenges + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Dynamic Neighbors}{ + +\item Team of robots has time-varying neighbors/observations/communication links + +\item Often need to learn with time-varying input dimensionality +\begin{itemize} + \item Example: (Distributed) collision avoidance maps observation of neighboring robots to actions $f(\mathcal Y) \to u$ +\end{itemize} + +\item Learned functions need to be \textbf{permutation-invariant} and support \textbf{dynamic domain cardinality} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{LSTMs \cite{2018-everett-MotionPlanningDynamic}}{ + +\show{2018-everett-MotionPlanningDynamic.png} + +\item Key idea: Feed observations of neighbors into an LSTM (closest neighbor last) + +\show[0.5]{2018-everett-MotionPlanningDynamic-fig3.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{CNNs \cite{2019-sartoretti-PRIMALPathfindingReinforcement}}{ + +\twocol{.6}{.4}{ + \show[1.0]{2019-sartoretti-PRIMALPathfindingReinforcement.png} + + \begin{itemize} + \item Key idea: Encode neighbor information as a picture + \item Videos: {\urlfont\url{https://goo.gl/T627XD}} + \end{itemize} +}{ + \show{2019-sartoretti-PRIMALPathfindingReinforcement-fig2.png} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{Deep Sets} +\slide{Deep Sets \cite{2017-zaheer-DeepSets}}{ + + \begin{itemize} + \item Any continuous, permutation-invariant function $f(\mathcal X)$ can be approximated: + \vspace{15mm} + \begin{equation*} + f(\mathcal X) \approx + \tikzmark{rho}\rho \left( + \tikzmark{sum}\sum_{x\in\mathcal X} + % \tikz[baseline]{\node[draw=black,ellipse,thick,anchor=base] (phi) {$\phi(x)$};} + \tikzmark{phi}\phi(x) + \right) + \end{equation*} + \vspace{10mm} + \item Improvement over Convolutional NN (\textbf{CNN}): continuous space, efficiency + \item Example:\\[2mm] + \includegraphics[width=0.6cm]{deepsets/digit5.png} + \includegraphics[width=0.6cm]{deepsets/digit4.png} = 9\\[2mm] + \includegraphics[width=0.6cm]{deepsets/digit9.png} + \includegraphics[width=0.6cm]{deepsets/digit6.png} + \includegraphics[width=0.6cm]{deepsets/digit5.png} = 20 + + \end{itemize} + + \begin{tikzpicture}[ + remember picture, + overlay, + expl/.style={draw=black,fill=black!10,rounded corners,text width=5cm}, + arrow/.style={line width=1.5mm,->,>=stealth}, + ] + \node [expl, above right=of pic cs:phi] (hs) {Learns \textbf{representation} of each element}; + \draw[arrow,line width=0.5mm, black, bend right] (hs.west) to ([xshift=0.4em,yshift=0.5em]pic cs:phi); + + \node [expl, below=of pic cs:sum] (sp) {\textbf{superposition} in hidden state}; + \draw[arrow,line width=0.5mm, black] (sp) to ([xshift=0.4em,yshift=-1.5em]pic cs:sum); + + \node [expl, above left=of pic cs:rho] (agg) {Learns \textbf{aggregation} of hidden state}; + \draw[arrow,line width=0.5mm, black, bend left] (agg.east) to ([xshift=0.4em,yshift=0.5em]pic cs:rho); + + + \end{tikzpicture} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: GLAS \cite{2020-riviere-GLASGlobaltoLocalSafe}}{ + +\item Goal: imitate (slow) centralized controller using only local observations: $\pi: y \mapsto u$ + +\item Data: Example trajectories by solving many multi-robot motion planning instances with a centralized planner + +\item Approach: Behavior Cloning + Privileged Teacher +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: GLAS \cite{2020-riviere-GLASGlobaltoLocalSafe}}{ + +\show[0.8]{glas/data_expert_gen.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: GLAS \cite{2020-riviere-GLASGlobaltoLocalSafe}}{ + +\show[0.8]{glas/data_mask_nonlocal.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: GLAS \cite{2020-riviere-GLASGlobaltoLocalSafe}}{ + +\item Train (5 small feedforward networks trained jointly) + +\show[0.8]{glas/architecture_simple.pdf} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: GLAS \cite{2020-riviere-GLASGlobaltoLocalSafe}}{ + +\item How would one train this in practice in pyTorch? +\info{variable number of neighbors vs. batching} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Neural-Swarm2 \cite{2022-shi-NeuralSwarm2PlanningControl}}{ + +\item Goal: predict aerodynamic interaction +\info{unmodeled physics, as a function of neighbors' positions} + +\show[0.4]{neuralswarm2/fig1b.jpg} + +\item Data: Real flight tests (synchronized trajectories with poses of robots and measured accelerations and motor commands) + +\item Approach: Behavior Cloning + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Neural-Swarm2 \cite{2022-shi-NeuralSwarm2PlanningControl}: Heterogeneous Deep Sets}{ + + \twocol{.45}{.45}{ + \vspace{-2.0cm} + \begin{equation*} + \favhat^{(i)} + \approx + \tikzmark{rhoh}\bm{\rho}_{\mathcal{I}(i)}\left(\tikzmark{sumh}\sum_{k=1}^K\sum_{\B{x}^{(ij)}\in \set_{\mathrm{type}_k}^{(i)}}\tikzmark{phih}\bm{\phi}_{\mathcal{I}(j)}(\B{x}^{(ij)})\right) + \end{equation*} + + + \begin{tikzpicture}[ + remember picture, + overlay, + expl/.style={draw=black,fill=black!10,rounded corners,text width=3cm}, + arrow/.style={line width=1.5mm,->,>=stealth}, + ] + \node [expl, above=of pic cs:phih] (hs) {Learns \textbf{representation} from type $\mathcal{I}(j)$ neighbor}; + \draw[arrow,line width=0.5mm, black] (hs.south) to ([xshift=0.4em,yshift=0.5em]pic cs:phih); + + \node [expl, below=of pic cs:sumh] (sp) {\textbf{superposition} in hidden state}; + \draw[arrow,line width=0.5mm, black] (sp) to ([xshift=0.4em,yshift=-1.5em]pic cs:sumh); + + \node [expl, above=of pic cs:rhoh] (agg) {Learns \textbf{aggregation} for type $\mathcal{I}(i)$}; + \draw[arrow,line width=0.5mm, black] (agg.south) to ([xshift=0.4em,yshift=0.5em]pic cs:rhoh); + \end{tikzpicture} + + }{ + \includegraphics[width=\linewidth]{neuralswarm2/fig1a.pdf} + \begin{multline*} + \fav^{(3)} \approx \bm{\rho}_{\la}\left(\bm{\phi}_{\sm}(\B{x}^{(31)})+\\ + \bm{\phi}_{\sm}(\B{x}^{(32)}) +\bm{\phi}_{\env}(\B{x}^{(34)})\right) + \end{multline*} + } + \begin{itemize} + \item \textbf{Expressiveness}: can approximate any $K$-Group permutation-invariant function + \item \textbf{Efficient}: only $2K$ networks need to be trained + \end{itemize} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Neural-Swarm2 \cite{2022-shi-NeuralSwarm2PlanningControl}}{ + + \vspace{5mm} + \twocol{.5}{.15}{ + \includegraphics[height=0.8\textheight]{neuralswarm2/heatmap-ssls.png} + }{ + \includegraphics[height=0.8\textheight]{neuralswarm2/heatmap-legend.png} + } +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Neural-Swarm2 \cite{2022-shi-NeuralSwarm2PlanningControl}}{ + +\url{https://youtu.be/Y02juH6BDxo} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{GNNs} +\slide{Graph Neural Networks (GNNs)}{ + +\item Inspiration: CNNs as graph + +\show{2024-bishop-DeepLearningFoundations-fig13.3.png} + +\citehere{2024-bishop-DeepLearningFoundations} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Graph Neural Networks (GNNs)}{ + +\item Graph $\mathcal G = (\mathcal V, \mathcal E)$ + +\item Basic case: learn features for each node $n\in\mathcal V$ + +\item Use $L$ layers with $D$-dimensional vector $h_n^{(l)}$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Graph Neural Networks (GNNs)}{ + +\show{2024-bishop-DeepLearningFoundations-alg13.1.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Graph Neural Networks (GNNs)}{ + +\item Examples for Aggregate/Update: +\begin{itemize} + \item Aggregate($\{ h_m^{(l)}: m\in \mathcal N(n) \}$) = $MLP_\rho \left( \sum_{m\in\mathcal N(n)} MLP_\phi(h_m^{(l)})\right)$ + \item Update($h_n^{(l)}, z_n^{(l)}$) = $f(W_{self} h_n^{(l)} + W_{neigh} z_n^{(l)} + b)$ +\end{itemize} + +\item Extensions to have input/output features per edge and graph + \info{See e.g., \cite{2024-bishop-DeepLearningFoundations}} + + +\item Training ``as usual'' (on whole graphs) + +\item In practice: PyG {\urlfont\url{https://www.pyg.org/}} or DGL {\urlfont\url{https://www.dgl.ai/}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Learning to Communicate for Multi-Robot Path Finding \cite{2020-li-GraphNeuralNetworks}}{ + +\show[1.0]{2020-li-GraphNeuralNetworks.png} + +\item Goal: Learn how to communicate to imitate a centralized Multi-Agent Path Finding expert + +\item Data: Trajectories computed by a centralized expert + +\item Approach: IL w/ DAgger + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Learning to Communicate for Multi-Robot Path Finding \cite{2020-li-GraphNeuralNetworks}}{ + +\show[0.9]{2020-li-GraphNeuralNetworks-fig1.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Multi-Robot Perception \cite{2022-zhou-MultiRobotCollaborativePerception}}{ + + +\twocol{.4}{.6}{ +\show[1.0]{2022-zhou-MultiRobotCollaborativePerception.png} + + +\item Goal: Learn what to communicate for depth estimation or segmentation + +\item Data: Labeled Data mostly from simulator; some from real flights + +\item Approach: Behavior Cloning +}{ +\show{2022-zhou-MultiRobotCollaborativePerception-fig1.png} + +} + +\item Video: {\urlfont\url{https://youtu.be/2bdhLI3dqo0}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{GNN Applications}{ + +\item Flocking (in simulation) \cite{2020-tolstaya-LearningDecentralizedControllers,2021-kortvelesy-ModGNNExpertPolicy,2022-gama-SynthesizingDecentralizedControllers} + +\item Navigation (simulation + RL) \cite{2022-yu-LearningControlAdmissibility} + +\item Graph Control Barrier Function (simulation + IL w/ DAgger) \cite{2023-zhang-NeuralGraphControl} + +\item Learning to Communicate Variations \cite{2021-li-MessageAwareGraphAttention,2022-gama-SynthesizingDecentralizedControllers} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\slide{Outline}{ + +\item Handling Dynamic Neighbors + +\begin{itemize} + \item LSTMs + \item CNNs + \item DeepSets + \item Graph Neural Networks +\end{itemize} + +\item \textbf{Multi-Agent Reinforcement Learning (MARL)} + +\item Discussion / Open Challenges + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{MARL} +\slide{MARL Definition}{ + +\item Single Robot: MDP $(\SS, \AA, P, R, P_0, \g)$ with state space $\SS$, action space $\AA$, transition probabilities $P(s_{t\po} \| s_t,a_t)$, reward fct $r_t = R(s_t,a_t)$, initial state distribution $P_0(s_0)$, and discounting factor $\g\in[0,1]$. +\pause + +\item Multi-Robot: Markov game $(N, \SS, \AA, P, R, P_0, \g)$ with $N$ robots, $\SS$ \emph{joint} state space, $\AA=A_1 \times A_2 \times \ldots \times A_N$ \emph{joint} action space, reward fct $r_1,\ldots,r_N = R(s,a)$ + +\item Goal: Find policy (or policies) that maximize expected reward + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Rewards}{ + +\item \textbf{Fully cooperative}: $r_1 = r_2 = \ldots = r_N$ +\info{No credit assignment; difficult to train} + +\item \textbf{Competitive}: zero-sum games ($\sum_i r_i = 0$), prey-predator games (cooperative per team; competitive per game) + +\item \textbf{Mixed Cooperative-Competitive}: (local) reward shaping, to achieve a common goal + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Learning}{ + +\item \textbf{Centralized} model as stacked robot (centralized training \& inference) + +\item \textbf{Independent Learning} each robot learns own policy (decentralized training \& inference) + +\item \textbf{Centralized Training Decentralized Execution (CTDE)} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Challenges}{ + +\item Non-Stationarity: if policy of other agents can't be observed, the Markov assumption is violated (e.g., distributed Q-Learning) + +\item Scalability: in standard policy gradient algorithms, the probability of estimating the policy gradient correctly might decrease exponentially with the number of agents +\info{Concrete example: appendix of \cite{2017-lowe-MultiAgentActorCriticMixed}} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Approaches}{ + +\item Centralized critic, e.g., Multi-Agent deep deterministic policy gradient (MADDPG, \cite{2017-lowe-MultiAgentActorCriticMixed}) + +\item Factorized value functions, e.g., Value Decomposition Networks (VDN, \cite{2018-sunehag-ValueDecompositionNetworksCooperative}) + +\item Communication Learning +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Practical Considerations}{ + +\item VMAS (Vectorized Multi-Agent Simulator for Collective Robot Learning) {\urlfont\url{https://github.com/proroklab/VectorizedMultiAgentSimulator}} +\info{Simple 2D physics engine build in pyTorch} + +\item MARLlib {\urlfont\url{https://github.com/Replicable-MARL/MARLlib}} + +\item More Details/Overview about MARL: + +\citehere{2022-wang-DistributedReinforcementLearning} + +\citehere{2023-orr-MultiAgentDeepReinforcement} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Distributed Collision Avoidance (Ground) \cite{2020-fan-DistributedMultirobotCollision}}{ + +\show[0.6]{2020-fan-DistributedMultirobotCollision.png} + +\twocol{.3}{.7}{ + \show[1.0]{2020-fan-DistributedMultirobotCollision-fig4.png} +}{ + \show{2020-fan-DistributedMultirobotCollision-fig3.png} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Distributed Collision Avoidance (Ground) \cite{2020-fan-DistributedMultirobotCollision}}{ + +\item Goal: find decentralized policy: $\pi: y, g \mapsto u$ + +\item Data: Collected in simulation during RL (input LIDAR, relative goal, velocity; output: action) + +\item Approach: PPO (centralized learning, decentralized execution; shared policy) + +\item Video: {\urlfont\url{https://sites.google.com/view/hybridmrca}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Distributed Collision Avoidance (UAVs) \cite{2024-huang-CollisionAvoidanceNavigation}}{ + +\item Goal: find decentralized policy: $\pi: y, g \mapsto u$ + +\item Data: Collected in simulation during RL (input state, nearby obstacles, nearby neighbors; output: thrust per rotor) + +\item Approach: IPPO (centralized learning, decentralized execution; shared policy) + +\item Video: {\urlfont\url{https://sites.google.com/view/obst-avoid-swarm-rl}} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Case Study: Neural Tree Expansion \cite{2021-riviere-NeuralTreeExpansion}}{ + +\item Goal: find decentralized policies for multi-team games (e.g., reach-target avoid) + + +\twocol{.45}{.45}{ +\showh[1.0]{2021-riviere-NeuralTreeExpansion-fig1.png} +}{ + \begin{itemize} + \item Data: Collected with a neural-biased ``expert'' (large Monte-Carlo Tree Search) + + \item Approach: MCTS + IL + DAgger (essentially: AlphaZero in continuous state spaces) + + \item Video: {\urlfont\url{https://youtu.be/mklbTfWl7DE}} + \end{itemize} +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\slide{Outline}{ + +\item Handling Dynamic Neighbors + +\begin{itemize} + \item LSTMs + \item CNNs + \item DeepSets + \item Graph Neural Networks +\end{itemize} + +\item Multi-Agent Reinforcement Learning (MARL) + +\item \textbf{Discussion / Open Challenges} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\key{DiNNO} + +\slide{DiNNO: Distributed Neural Network Optimization \cite{2022-yu-DiNNODistributedNeural}}{ + +\show[0.45]{2022-yu-DiNNODistributedNeural-fig1.png} + +\item Collect data locally, local augmented Lagrangian update, share resulting weights via consensus + +\item Works for IL and RL + +\item Web: {\urlfont\url{https://msl.stanford.edu/projects/dist_nn_train}} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{LLMs and Multi-Robots \cite{2024-chen-WhySolvingMultiagent}}{ + +\show[0.5]{2024-chen-WhySolvingMultiagent.png} + +\item (Arxiv, Jan. 2024) + +\show[1.0]{2024-chen-WhySolvingMultiagent-fig1.png } + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\slide{LLMs and Multi-Robots \cite{2024-chen-WhySolvingMultiagent}}{ + +\show{2024-chen-WhySolvingMultiagent-fig2.png} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\slide{Open Challenges}{ + +\item Deployment to real robots (especially RL) + +\item Safety (esp. partially unknown dynamics, perception) + +\item Interpretability (of communication) + + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Conclusion}{\label{lastpage} + +\item Multi-Robot brings new challenges + \begin{itemize} + \item Large state space (or violation of Markov assumption) + \item Dynamic number of neighbors + \item Reasoning about communication + \end{itemize} + +\item Deep Sets: permutation invariant architecture that is easy to train and computationally efficient +\info{useful for $\pi: x, \mathcal N \mapsto u$} + +\item GNN: Generalization of deep sets +\info{useful for learning communication} + +\item Learning a decentralized policy from a centralized expert works well (IL + DAgger) + +\item Deployment to real robot teams remains challenging + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b8-MultiRobotLearning} +}{} + +\slidesfoot diff --git a/RobotLearning/15-discussion.tex b/RobotLearning/15-discussion.tex new file mode 100644 index 0000000..df9ded9 --- /dev/null +++ b/RobotLearning/15-discussion.tex @@ -0,0 +1,305 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint} + +\renewcommand{\topic}{Discussion, Exam Info, \& Feedback} +\renewcommand{\keywords}{} + +\slides + +\input{macros-local} + +\slidestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item 1 slide Robot Learning discussion + +\item Exam Info + +\item Feedback + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item Check out the ``script'' (collection of all slides \& exercises +with TOC) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\item We had a whole lecture about Robot Learning + +But was there a single paper/demo where \emph{``a robot learned something''}, +like literally? :-) + +~\pause + +\item From our initial lecture plan: +\begin{items} +\item How realize online adaptation/learning? +\item Ok: Online adaptive control and parameter estimation. But online +RL? +\item livelong learning? +\end{items} + +~\pause + +\item \emph{What other Robot Learning types were we missing?} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item 1 slide Robot Learning discussion + +\item \textbf{Exam Info} + +\item Feedback + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Exam Info}{ + +\item 90 mins, around 8 to 10 questions + +\medskip\pause +\emph{Kinds of questions:} +\medskip + +\item Knowledge: ($\sim$70\%) +\begin{items} +\item brief answers, e.g.\ reproducing statements, definitions, equations from slides +\item example formats for answers: +\begin{items} +\item triology of definitions: data set, what function (input/output), +loss function +\item multiple choice, brief text answers +\item pseudo code +\end{items} +\end{items} +\item Application: ($\sim$30\%) +\begin{items} +\item Text answers +\item ``Assume you are in a situation.... how can you leverage learning...'' +\item also creative ``How could you use \emph{this or that} method to ...'' +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Exam Info -- Example Knowledge Question}{ + +~ + +{\tiny + +\textbf{Dynamics Learning} + +Denoting states by $x_t$, observations by $y_t$, and controls by $u_t$, +\begin{enumerate}\tiny +\item For learning deterministic dynamics in the case of observable +state, define the data set, the function (input/output), and a typical +loss function. + +\item When state $x_t$ is not observed, but observations $y_t$, we need a different function +model. Choose one and again, provide a definition for a data set, +function (input/output), and loss function to train it. + +\item Which NN architectures would you choose to represent $f_\t$ in +question (b)? + +\end{enumerate} + +~\pause + +possible answers: +\begin{enumerate}\tiny +\item data $D=\{(x_t, x_{t\1}, u_{t\1})\}_{t=1}^T$ + +function $f_\t: ~ x_{t\1}, u_{t\1} \mapsto x_t$ + +loss $L(\t) = \sum_{t} \norm{x_t - f_\t(x_{t\1}, u_{t\1})}^2$ + +\item +window approach with history length $H$ + +data $D=\{(y_t, y_{t\myminus H:t\1}, u_{t\myminus H:t\1})\}_{t=1}^T$ + +function $f_\t: ~ y_{t\myminus H:t\1},u_{t\myminus H:t\1} \mapsto y_t$ + +loss $L(\t) = \sum_{t} \norm{y_t - f_\t(y_{t\myminus H:t\1},u_{t\myminus H:t\1})}^2$ + +\item Not recurrent (is not consistent to the window approach). + +Plain MLP, or Transformer. +\end{enumerate} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Exam Info -- Example Application Question}{ + +~ + +{\tiny + +\textbf{Vacuum Cleaning Robot} + +Consider a vacuum cleaning robot, i.e. a differential drive robot with the following dynamics (TODO: give dynamics). The robot has a 2D LIDAR, a binary sensor that can detect if it's on carpet (1=carpet, 0=hard floor), and a binary bump sensor (1 if the chassis hit an obstacle anywhere, 0 otherwise). + +\begin{enumerate}\tiny +\item Consider learning a more accurate dynamics model by learning the residual dynamics. Describe how you would collect data for this case. Mathematically define the data set, including the computation of the required variables (if not directly collected). Define a suitable learning method and loss function. + +\item Now consider learning a policy that directly maps the current sensor readings to the motor outputs. Mathematically define this problem as a reinforcement learning instance. Be specific about states, actions, transitions, and reward. Briefly state how you would train a suitable policy and what challenges might occur when using the policy on a physical robot. + +\item Now consider the same policy as in b), but as imitation learning problem. Describe the required data set and loss function. How could one address challenges that arise with out-of-distribution inputs when deploying on a real robot? +\end{enumerate} + +} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Exam Info}{ + +\item Relevance of exercise sheets (little): +\begin{items} +\item Questions may be related to concrete papers -- not in that much depth +as in exercise literature reading -- but same depth as on slides +\item no concrete coding/python questions +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Outline}{ + +\item 1 slide Robot Learning discussion + +\item Exam Info + +\item \textbf{Feedback} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Lehrevaluation \& ISIS feedback}{ + +\item 8 and 5 users + +\item ISIS feedback, very good grades +\begin{items} +\item erforderliche Wissensstand ist teilweise sehr hoch; Vorlesungen +teilweise etwas überladen, Tempo oft hoch +\item More programming would have been nice; tasks from the begining +which build upon each other were nice.. [should build further] +\end{items} + +\item Lehrevaluation, fine grades +\begin{items} +\item very intresting topics; It is an intensive lecture, but I also have the feeling I learn a +lot. That's why I really enjoy this lecture + +\item VL-Ü: Es wäre gut diese eine Woche zu versetzen. + +\item exercises quite time intensive + +\item often the solutions provided are very short +\end{items} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{}{ + +\emph{Your feedback?} + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Our questions to you}{ + +\item Should we require hard prerequisites? + +\item More (ML? robotics?) method lectures? + +\item More coding exercises/examples? +\begin{items} +\item Our view: Coding exercises worked well until the point when, to do it properly, one would + need to seriously train networks +\end{items} + +\item (recording ok, but how deal with black board) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\slide{Planned Lectures}{\label{lastpage} + +\small + +\item Taxonomy (today) + +\item Robotics Primer \& Machine Learning Primer + +\item Dynamics Learning / System Identification + +\item Imitation Learning + +\item \emph{Method Lecture:} Diffusion \& other policy representations + +\item Reinforcement Learning \& variants (several lectures) + +\tiny + +\item Safe Learning, Multi-Robot Learning + +\item Constraint Learning, Grasping/Manipulation Learning, Affordance Learning + +\item \emph{Method Lecture:} Robotics/3D ML: Rotation encodings, PointNet, SE(3)-Equivariant + +\item \emph{Method Lecture:} Black-Box Optimization, CMA, CEM + +\item Plan Prediction Learning (from MPC to Language Models) + +\item Online adaptation + +\item \emph{Method Lecture:} Generative models (PCA, auto encoder, VAE, GANs, diffusion, stochastic outputs in transformers) + +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ttiny +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b6-Manipulation} +}{} + +\slidesfoot diff --git a/RobotLearning/b1-DynamicsLearning.bib b/RobotLearning/b1-DynamicsLearning.bib new file mode 100644 index 0000000..ebc049e --- /dev/null +++ b/RobotLearning/b1-DynamicsLearning.bib @@ -0,0 +1,305 @@ + +@article{2015-deisenroth-GaussianProcessesDataEfficient, + title = {Gaussian Processes for Data-Efficient Learning in Robotics and Control}, + volume = {37}, + rights = {https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/{OAPA}.html}, + issn = {0162-8828, 2160-9292}, + url = {http://ieeexplore.ieee.org/document/6654139/}, + delete_delete_delete_doi = {10.1109/TPAMI.2013.218}, + abstract = {Autonomous learning has been a promising direction in control and robotics for more than a decade since data-driven learning allows to reduce the amount of engineering knowledge, which is otherwise required. However, autonomous reinforcement learning ({RL}) approaches typically require many interactions with the system to learn controllers, which is a practical limitation in real systems, such as robots, where many interactions can be impractical and time consuming. To address this problem, current learning approaches typically require task-specific knowledge in form of expert demonstrations, realistic simulators, pre-shaped policies, or specific knowledge about the underlying dynamics. In this paper, we follow a different approach and speed up learning by extracting more information from data. In particular, we learn a probabilistic, non-parametric Gaussian process transition model of the system. By explicitly incorporating model uncertainty into long-term planning and controller learning our approach reduces the effects of model errors, a key problem in model-based learning. Compared to state-of-the art {RL} our model-based policy search method achieves an unprecedented speed of learning. We demonstrate its applicability to autonomous learning in real robot and control tasks.}, + pages = {408--423}, + number = {2}, + journal = {{IEEE} Transactions on Pattern Analysis and Machine Intelligence}, + shortjournal = {{IEEE} Trans. Pattern Anal. Mach. Intell.}, + author = {Deisenroth, Marc Peter and Fox, Dieter and Rasmussen, Carl Edward}, + urlyear = {2024}, + year = {2015}, + langid = {english}, + file = {Deisenroth et al. - 2015 - Gaussian Processes for Data-Efficient Learning in .pdf:/home/mtoussai/Zotero/storage/6X5TVTAJ/Deisenroth et al. - 2015 - Gaussian Processes for Data-Efficient Learning in .pdf:application/pdf}, +} + +@article{2024-chrosniak-DeepDynamicsVehicle, + title = {Deep Dynamics: Vehicle Dynamics Modeling With a Physics-Constrained Neural Network for Autonomous Racing}, + volume = {9}, + rights = {https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/{IEEE}.html}, + issn = {2377-3766, 2377-3774}, + url = {https://ieeexplore.ieee.org/document/10499707/}, + delete_delete_delete_doi = {10.1109/LRA.2024.3388847}, + shorttitle = {Deep Dynamics}, + abstract = {Autonomous racing is a critical research area for autonomous driving, presenting significant challenges in vehicle dynamics modeling, such as balancing model precision and computational efficiency at high speeds ({\textgreater}280 km/h), where minor errors in modeling have severe consequences. Existing physics-based models for vehicle dynamics require elaborate testing setups and tuning, which are hard to implement, time-intensive, and cost-prohibitive. Conversely, purely data-driven approaches do not generalize well and cannot adequately ensure physical constraints on predictions. This letter introduces Deep Dynamics, a physics-constrained neural network ({PCNN}) for autonomous racecar vehicle dynamics modeling. It merges physics coefficient estimation and dynamical equations to accurately predict vehicle states at high speeds. A unique Physics Guard layer ensures internal coefficient estimates remain within their nominal physical ranges. Open-loop and closed-loop performance assessments, using a physics-based simulator and full-scale autonomous Indy racecar data, highlight Deep Dynamics as a promising approach for modeling racecar vehicle dynamics.}, + pages = {5292--5297}, + number = {6}, + journal = {{IEEE} Robotics and Automation Letters}, + shortjournal = {{IEEE} Robot. Autom. Lett.}, + author = {Chrosniak, John and Ning, Jingyun and Behl, Madhur}, + urlyear = {2024}, + year = {2024}, + langid = {english}, + file = {Chrosniak et al. - 2024 - Deep Dynamics Vehicle Dynamics Modeling With a Ph.pdf:/home/mtoussai/Zotero/storage/A5UXLQPK/Chrosniak et al. - 2024 - Deep Dynamics Vehicle Dynamics Modeling With a Ph.pdf:application/pdf}, +} + +@article{2020-six-IdentificationPropellerCoefficients, + title = {Identification of the Propeller Coefficients and Dynamic Parameters of a Hovering Quadrotor From Flight Data}, + volume = {5}, + rights = {https://ieeexplore.ieee.org/Xplorehelp/downloads/license-information/{IEEE}.html}, + issn = {2377-3766, 2377-3774}, + url = {https://ieeexplore.ieee.org/document/8957463/}, + delete_delete_delete_doi = {10.1109/LRA.2020.2966393}, + abstract = {Several methods can be applied to estimate the propeller thrust and torque coefficients and dynamics parameters of quadrotor {UAVs}. These parameters are necessary for many controllers that have been proposed for these vehicles. However, these methods require the use of specific test benches, which do not well simulate real flight conditions. In this letter, a new method is introduced which allows the identification of the propeller coefficients and dynamic parameters of a quadrotor in a single procedure. It is based on a Total-Least-Square identification technique, does not require any specific test bench and needs only a measurement of the mass of the quadrotor and a recording of data from a flight that can be performed manually by an operator. Because the symmetries of classic quadrotors limit the performance of the algorithm, an extension of the procedure is proposed. Two types of flights are then used: one with the initial quadrotor and a second flight with an additional payload on the vehicle that modifies the mass distribution. This new procedure, which is valiyeard experimentally, increases the performance of the identification and allows an estimation of all the relevant dynamic parameters of the quadrotor near hovering conditions.}, + pages = {1063--1070}, + number = {2}, + journal = {{IEEE} Robotics and Automation Letters}, + shortjournal = {{IEEE} Robot. Autom. Lett.}, + author = {Six, Damien and Briot, Sebastien and Erskine, Julian and Chriette, Abdelhamid}, + urlyear = {2024}, + year = {2020}, + langid = {english}, + file = {Six et al. - 2020 - Identification of the Propeller Coefficients and D.pdf:/home/mtoussai/Zotero/storage/2V5CU9AB/Six et al. - 2020 - Identification of the Propeller Coefficients and D.pdf:application/pdf}, +} + +@article{2002-schaal-ScalableTechniquesNonparametric, + title = {Scalable Techniques from Nonparametric Statistics for Real Time Robot Learning}, + volume = {17}, + issn = {0924669X}, + url = {http://link.springer.com/10.1023/A:1015727715131}, + delete_delete_delete_doi = {10.1023/A:1015727715131}, + pages = {49--60}, + number = {1}, + journal = {Applied Intelligence}, + author = {Schaal, Stefan and Atkeson, Christopher G. and Vijayakumar, Sethu}, + urlyear = {2024}, + year = {2002}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/6MKICWXJ/Schaal et al. - 2002 - [No title found].pdf:application/pdf}, +} + +@inproceedings{2016-burri-MaximumLikelihoodParameter, + location = {Stockholm, Sweden}, + title = {Maximum likelihood parameter identification for {MAVs}}, + isbn = {978-1-4673-8026-3}, + url = {http://ieeexplore.ieee.org/document/7487627/}, + delete_delete_delete_doi = {10.1109/ICRA.2016.7487627}, + abstract = {As the applications of Micro Aerial Vehicles ({MAVs}) get more and more complex, and require highly dynamic motions, it becomes essential to have an accurate dynamic model of the {MAV}. Such a model can be used for reliable state estimation, control, and for realistic simulation. A good model requires accurate estimates of physical parameters of the system, which we aim to estimate from recorded flight data. In this paper, we present a detailed physical model of the {MAV} and a maximum likelihood estimation scheme for determining the dominant parameters, such as inertia matrix, center of gravity ({CoG}) with respect to the {IMU}, and parameters related to the aerodynamics. To incorporate all information given by the {IMU} and the physical {MAV} model, we propose to use two process models in the optimization. We show the effectiveness of the method on simulated data, as well as on a real platform.}, + booktitle = {2016 {IEEE} International Conference on Robotics and Automation ({ICRA})}, + pages = {4297--4303}, + booktitle = {2016 {IEEE} International Conference on Robotics and Automation ({ICRA})}, + delete_delete_delete_publisher = {{IEEE}}, + author = {Burri, Michael and Nikolic, Janosch and Oleynikova, Helen and Achtelik, Markus W. and Siegwart, Roland}, + urlyear = {2024}, + year = {2016}, + langid = {english}, + file = {Burri et al. - 2016 - Maximum likelihood parameter identification for MA.pdf:/home/mtoussai/Zotero/storage/6P2NPQTP/Burri et al. - 2016 - Maximum likelihood parameter identification for MA.pdf:application/pdf}, +} + +@thesis{2015-forster-SystemIdentificationCrazyflie, + title = {System Identification of the Crazyflie 2.0 Nano Quadrocopter}, + rights = {http://rightsstatements.org/page/{InC}-{NC}/1.0/}, + url = {https://www.research-collection.ethz.ch/handle/20.500.11850/214143}, + institution = {{ETH} Zurich}, + type = {Bachelor Thesis}, + author = {Förster, Julian}, + urlyear = {2024}, + year = {2015}, + langid = {english}, + delete_delete_delete_doi = {10.3929/ethz-b-000214143}, + delete_delete_delete_note = {Accepted: 2017-12-15T11:43:49Z}, + file = {Full Text PDF:/home/mtoussai/Zotero/storage/W7YW3XE4/Förster - 2015 - System Identification of the Crazyflie 2.0 Nano Qu.pdf:application/pdf}, +} + +@article{2021-geist-StructuredLearningRigid, + title = {Structured learning of rigid‐body dynamics: A survey and unified view from a robotics perspective}, + volume = {44}, + issn = {0936-7195, 1522-2608}, + url = {https://onlinelibrary.wiley.com/delete_delete_delete_doi/10.1002/gamm.202100009}, + delete_delete_delete_doi = {10.1002/gamm.202100009}, + shorttitle = {Structured learning of rigid‐body dynamics}, + abstract = {Abstract + Accurate models of mechanical system dynamics are often critical for model‐based control and reinforcement learning. Fully data‐driven dynamics models promise to ease the process of modeling and analysis, but require considerable amounts of data for training and often do not generalize well to unseen parts of the state space. Combining data‐driven modeling with prior analytical knowledge is an attractive alternative as the inclusion of structural knowledge into a regression model improves the model's data efficiency and physical integrity. In this article, we survey supervised regression models that combine rigid‐body mechanics with data‐driven modeling techniques. We analyze the different latent functions (such as kinetic energy or dissipative forces) and operators (such as differential operators and projection matrices) underlying common descriptions of rigid‐body mechanics. Based on this analysis, we provide a unified view on the combination of data‐driven regression models, such as neural networks and Gaussian processes, with analytical model priors. Furthermore, we review and discuss key techniques for designing structured models such as automatic differentiation.}, + pages = {e202100009}, + number = {2}, + journal = {{GAMM}-Mitteilungen}, + shortjournal = {{GAMM}-Mitteilungen}, + author = {Geist, A. René and Trimpe, Sebastian}, + urlyear = {2024}, + year = {2021}, + langid = {english}, + file = {Submitted Version:/home/mtoussai/Zotero/storage/KPNZSE35/Geist and Trimpe - 2021 - Structured learning of rigid‐body dynamics A surv.pdf:application/pdf}, +} + +@article{2022-geist-PhysicsinformedRegressionImplicitlyconstrained, + title = {Physics-informed regression of implicitly-constrained robot dynamics}, + url = {http://elib.uni-stuttgart.de/handle/11682/12789}, + author = {Geist, Andreas René}, + urlyear = {2024}, + year = {2022}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/XBHBKZCQ/Geist - 2022 - Physics-informed regression of implicitly-constrai.pdf:application/pdf}, +} + +@inproceedings{2018-doerr-ProbabilisticRecurrentStatespace, + title = {Probabilistic recurrent state-space models}, + url = {http://proceedings.mlr.press/v80/doerr18a.html}, + pages = {1280--1289}, + booktitle = {International conference on machine learning}, + delete_delete_delete_publisher = {{PMLR}}, + author = {Doerr, Andreas and Daniel, Christian and Schiegg, Martin and Duy, Nguyen-Tuong and Schaal, Stefan and Toussaint, Marc and Sebastian, Trimpe}, + urlyear = {2024}, + year = {2018}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/3I3DEAJI/Doerr et al. - 2018 - Probabilistic recurrent state-space models.pdf:application/pdf}, +} + +@misc{2022-gu-EfficientlyModelingLong, + title = {Efficiently Modeling Long Sequences with Structured State Spaces}, + url = {http://arxiv.org/abs/2111.00396}, + abstract = {A central goal of sequence modeling is designing a single principled model that can address sequence data across a range of modalities and tasks, particularly on long-range dependencies. Although conventional models including {RNNs}, {CNNs}, and Transformers have specialized variants for capturing long dependencies, they still struggle to scale to very long sequences of \$10000\$ or more steps. A promising recent approach proposed modeling sequences by simulating the fundamental state space model ({SSM}) {\textbackslash}( x'(t) = Ax(t) + Bu(t), y(t) = Cx(t) + Du(t) {\textbackslash}), and showed that for appropriate choices of the state matrix {\textbackslash}( A {\textbackslash}), this system could handle long-range dependencies mathematically and empirically. However, this method has prohibitive computation and memory requirements, rendering it infeasible as a general sequence modeling solution. We propose the Structured State Space sequence model (S4) based on a new parameterization for the {SSM}, and show that it can be computed much more efficiently than prior approaches while preserving their theoretical strengths. Our technique involves conditioning {\textbackslash}( A {\textbackslash}) with a low-rank correction, allowing it to be diagonalized stably and reducing the {SSM} to the well-studied computation of a Cauchy kernel. S4 achieves strong empirical results across a diverse range of established benchmarks, including (i) 91{\textbackslash}\% accuracy on sequential {CIFAR}-10 with no data augmentation or auxiliary losses, on par with a larger 2-D {ResNet}, (ii) substantially closing the gap to Transformers on image and language modeling tasks, while performing generation \$60{\textbackslash}times\$ faster (iii) {SoTA} on every task from the Long Range Arena benchmark, including solving the challenging Path-X task of length 16k that all prior work fails on, while being as efficient as all competitors.}, + number = {{arXiv}:2111.00396}, + delete_delete_delete_publisher = {{arXiv}}, + author = {Gu, Albert and Goel, Karan and Ré, Christopher}, + urlyear = {2024}, + year = {2022}, + eprinttype = {arxiv}, + eprint = {2111.00396 [cs]}, + keywords = {Computer Science - Machine Learning}, + file = {arXiv Fulltext PDF:/home/mtoussai/Zotero/storage/HNS4LA6Y/Gu et al. - 2022 - Efficiently Modeling Long Sequences with Structure.pdf:application/pdf;arXiv.org Snapshot:/home/mtoussai/Zotero/storage/MYYGA4M5/2111.html:text/html}, +} + +@article{1990-chen-NonlinearSystemIdentification, + title = {Non-linear system identification using neural networks}, + volume = {51}, + issn = {0020-7179, 1366-5820}, + url = {https://www.tandfonline.com/delete_delete_delete_doi/full/10.1080/00207179008934126}, + delete_delete_delete_doi = {10.1080/00207179008934126}, + pages = {1191--1214}, + number = {6}, + journal = {International Journal of Control}, + shortjournal = {International Journal of Control}, + author = {Chen, S. and Billings, S. A. and Grant, P. M.}, + urlyear = {2024}, + year = {1990}, + langid = {english}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/SY2G25NV/Chen et al. - 1990 - Non-linear system identification using neural netw.pdf:application/pdf}, +} + +@book{2013-billings-NonlinearSystemIdentification, + title = {Nonlinear system identification: {NARMAX} methods in the time, frequency, and spatio-temporal domains}, + url = {https://books.google.de/books?hl=de&lr=&id=Xmp-ZViDjGAC&oi=fnd&pg=PA549&dq=billings+system+identification&ots=geSSMbrvZn&sig=B03Q4EMkWgsyS4RVsHeDejI1kKs}, + shorttitle = {Nonlinear system identification}, + delete_delete_delete_publisher = {John Wiley \& Sons}, + author = {Billings, Stephen A.}, + urlyear = {2024}, + year = {2013}, +} + +@article{1997-siegelmann-ComputationalCapabilitiesRecurrent, + title = {Computational capabilities of recurrent {NARX} neural networks}, + volume = {27}, + url = {https://ieeexplore.ieee.org/abstract/document/558801/}, + pages = {208--215}, + number = {2}, + journal = {{IEEE} Transactions on Systems, Man, and Cybernetics, Part B (Cybernetics)}, + author = {Siegelmann, Hava T. and Horne, Bill G. and Giles, C. Lee}, + urlyear = {2024}, + year = {1997}, + delete_delete_delete_note = {Publisher: {IEEE}}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/6VFQE43G/Siegelmann et al. - 1997 - Computational capabilities of recurrent NARX neura.pdf:application/pdf}, +} + +@inproceedings{2017-finn-DeepVisualForesight, + title = {Deep visual foresight for planning robot motion}, + url = {https://ieeexplore.ieee.org/abstract/document/7989324/}, + pages = {2786--2793}, + booktitle = {2017 {IEEE} International Conference on Robotics and Automation ({ICRA})}, + delete_delete_delete_publisher = {{IEEE}}, + author = {Finn, Chelsea and Levine, Sergey}, + urlyear = {2024}, + year = {2017}, + file = {arXiv Fulltext PDF:/home/mtoussai/Zotero/storage/ML48GYZM/Finn and Levine - 2017 - Deep Visual Foresight for Planning Robot Motion.pdf:application/pdf}, +} + +@misc{2023-schubert-GeneralistDynamicsModel, + title = {A Generalist Dynamics Model for Control}, + url = {http://arxiv.org/abs/2305.10912}, + abstract = {We investigate the use of transformer sequence models as dynamics models ({TDMs}) for control. We find that {TDMs} exhibit strong generalization capabilities to unseen environments, both in a few-shot setting, where a generalist {TDM} is fine-tuned with small amounts of data from the target environment, and in a zero-shot setting, where a generalist {TDM} is applied to an unseen environment without any further training. Here, we demonstrate that generalizing system dynamics can work much better than generalizing optimal behavior directly as a policy. Additional results show that {TDMs} also perform well in a single-environment learning setting when compared to a number of baseline models. These properties make {TDMs} a promising ingredient for a foundation model of control.}, + number = {{arXiv}:2305.10912}, + delete_delete_delete_publisher = {{arXiv}}, + author = {Schubert, Ingmar and Zhang, Jingwei and Bruce, Jake and Bechtle, Sarah and Parisotto, Emilio and Riedmiller, Martin and Springenberg, Jost Tobias and Byravan, Arunkumar and Hasenclever, Leonard and Heess, Nicolas}, + urlyear = {2024}, + year = {2023}, + eprinttype = {arxiv}, + eprint = {2305.10912 [cs]}, + keywords = {Computer Science - Artificial Intelligence, Computer Science - Robotics}, + file = {arXiv Fulltext PDF:/home/mtoussai/Zotero/storage/R5E6IY36/Schubert et al. - 2023 - A Generalist Dynamics Model for Control.pdf:application/pdf;arXiv.org Snapshot:/home/mtoussai/Zotero/storage/JP2KEIIX/2305.html:text/html}, +} + +@article{2019-gaz-DynamicIdentificationFranka, + title = {Dynamic identification of the franka emika panda robot with retrieval of feasible parameters using penalty-based optimization}, + volume = {4}, + url = {https://ieeexplore.ieee.org/abstract/document/8772145/}, + pages = {4147--4154}, + number = {4}, + journal = {{IEEE} Robotics and Automation Letters}, + author = {Gaz, Claudio and Cognetti, Marco and Oliva, Alexander and Giordano, Paolo Robuffo and De Luca, Alessandro}, + urlyear = {2024}, + year = {2019}, + delete_delete_delete_note = {Publisher: {IEEE}}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/8AVTFFIT/Gaz et al. - 2019 - Dynamic identification of the franka emika panda r.pdf:application/pdf}, +} + +@inproceedings{2023-driess-LearningMultiobjectDynamics, + title = {Learning multi-object dynamics with compositional neural radiance fields}, + url = {https://proceedings.mlr.press/v205/driess23a.html}, + pages = {1755--1768}, + booktitle = {Conference on robot learning}, + delete_delete_delete_publisher = {{PMLR}}, + author = {Driess, Danny and Huang, Zhiao and Li, Yunzhu and Tedrake, Russ and Toussaint, Marc}, + urlyear = {2024}, + year = {2023}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/8P25Y94B/Driess et al. - 2023 - Learning multi-object dynamics with compositional .pdf:application/pdf}, +} + +@misc{2024-eschmann-DataDrivenSystemIdentification, + title = {Data-Driven System Identification of Quadrotors Subject to Motor Delays}, + url = {http://arxiv.org/abs/2404.07837}, + delete_delete_delete_doi = {10.48550/arXiv.2404.07837}, + abstract = {Recently non-linear control methods like Model Predictive Control ({MPC}) and Reinforcement Learning ({RL}) have attracted increased interest in the quadrotor control community. In contrast to classic control methods like cascaded {PID} controllers, {MPC} and {RL} heavily rely on an accurate model of the system dynamics. The process of quadrotor system identification is notoriously tedious and is often pursued with additional equipment like a thrust stand. Furthermore, low-level details like motor delays which are crucial for accurate end-to-end control are often neglected. In this work, we introduce a data-driven method to identify a quadrotor's inertia parameters, thrust curves, torque coefficients, and first-order motor delay purely based on proprioceptive data. The estimation of the motor delay is particularly challenging as usually, the {RPMs} can not be measured. We derive a Maximum A Posteriori ({MAP})-based method to estimate the latent time constant. Our approach only requires about a minute of flying data that can be collected without any additional equipment and usually consists of three simple maneuvers. Experimental results demonstrate the ability of our method to accurately recover the parameters of multiple quadrotors. It also facilitates the deployment of {RL}-based, end-to-end quadrotor control of a large quadrotor under harsh, outdoor conditions.}, + number = {{arXiv}:2404.07837}, + delete_delete_delete_publisher = {{arXiv}}, + author = {Eschmann, Jonas and Albani, Dario and Loianno, Giuseppe}, + urlyear = {2024}, + year = {2024}, + eprinttype = {arxiv}, + eprint = {2404.07837 [cs, eess]}, + keywords = {{SysId}}, + file = {arXiv Fulltext PDF:/home/mtoussai/Zotero/storage/MG8MTZT7/Eschmann et al. - 2024 - Data-Driven System Identification of Quadrotors Su.pdf:application/pdf;arXiv.org Snapshot:/home/mtoussai/Zotero/storage/YATW54JZ/2404.html:text/html}, +} + +@article{2018-burri-FrameworkMaximumLikelihood, + title = {A framework for maximum likelihood parameter identification applied on {MAVs}}, + volume = {35}, + rights = {© 2017 Wiley Periodicals, Inc.}, + issn = {1556-4967}, + url = {https://onlinelibrary.wiley.com/delete_delete_delete_doi/abs/10.1002/rob.21729}, + delete_delete_delete_doi = {10.1002/rob.21729}, + abstract = {With the growing availability of agile and powerful micro aerial vehicles ({MAVs}), accurate modeling is becoming more important. Especially for highly dynamic flights, model-based estimation and control combined with a good simulation framework is key. While detailed models are available in the literature, measuring the model parameters can be a time-consuming task and requires access to special equipment or facilities. In this paper, we propose a principled approach to accurately estimate physical parameters based on a maximum likelihood ({ML}) estimation scheme. Unlike many current methods, we make direct use of both raw inertial measurement unit measurements and the rotor speeds of the {MAV}. We also estimate the spatial-temporal alignment to a modular pose sensor. The proposed {ML}-based approach finds the parameters that best explain the sensor readings and also provides an estimate of their uncertainty. Although we derive the proposed method for use with an {MAV}, the approach is kept general and can be extended to other sensors or flying platforms. Extensive evaluation on simulated data and on real-world experimental data demonstrates that the approach yields accurate estimates and exhibits a large region of convergence. Furthermore, we show that the estimation can be performed using only on-board sensing, requiring no external infrastructure.}, + pages = {5--22}, + number = {1}, + journal = {Journal of Field Robotics}, + author = {Burri, Michael and Bloesch, Michael and Taylor, Zachary and Siegwart, Roland and Nieto, Juan}, + urlyear = {2024}, + year = {2018}, + langid = {english}, + delete_delete_delete_note = {\_eprint: https://onlinelibrary.wiley.com/delete_delete_delete_doi/pdf/10.1002/rob.21729}, + keywords = {{SysId}}, + file = {Full Text PDF:/home/mtoussai/Zotero/storage/RLW4WNTH/Burri et al. - 2018 - A framework for maximum likelihood parameter ident.pdf:application/pdf;Snapshot:/home/mtoussai/Zotero/storage/VW8LB8NV/rob.html:text/html}, +} + +@inproceedings{2021-bauersfeld-NeuroBEMHybridAerodynamic, + title = {{NeuroBEM}: Hybrid Aerodynamic Quadrotor Model}, + volume = {17}, + isbn = {978-0-9923747-7-8}, + url = {https://www.roboticsproceedings.org/rss17/p042.html}, + shorttitle = {{NeuroBEM}}, + booktitle = {Robotics: Science and Systems {XVII}}, + author = {Bauersfeld, Leonard and Kaufmann, Elia and Foehn, Philipp and Sun, Sihao and Scaramuzza, Davide}, + urlyear = {2024}, + year = {2021}, + file = {Full Text PDF:/home/mtoussai/Zotero/storage/EWQLCLGZ/Bauersfeld et al. - 2021 - NeuroBEM Hybrid Aerodynamic Quadrotor Model.pdf:application/pdf}, +} diff --git a/RobotLearning/b2-ImitationLearning.bib b/RobotLearning/b2-ImitationLearning.bib new file mode 100644 index 0000000..8f4a6fe --- /dev/null +++ b/RobotLearning/b2-ImitationLearning.bib @@ -0,0 +1,570 @@ +@article{-duan-OneShotImitationLearning, + title = {One-{{Shot Imitation Learning}}}, + author = {Duan, Yan and Andrychowicz, Marcin and Stadie, Bradly and Ho, OpenAI Jonathan and Schneider, Jonas and Sutskever, Ilya and Abbeel, Pieter and Zaremba, Wojciech}, + abstract = {Imitation learning has been commonly applied to solve different tasks in isolation. This usually requires either careful feature engineering, or a significant number of samples. This is far from what we desire: ideally, robots should be able to learn from very few demonstrations of any given task, and instantly generalize to new situations of the same task, without requiring task-specific engineering. In this paper, we propose a meta-learning framework for achieving such capability, which we call one-shot imitation learning.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/UYQLSYU3/Duan et al. - One-Shot Imitation Learning.pdf} +} + +@article{1988-pomerleau-AlvinnAutonomousLand, + title = {Alvinn: {{An}} Autonomous Land Vehicle in a Neural Network}, + shorttitle = {Alvinn}, + author = {Pomerleau, Dean A.}, + year = {1988}, + journal = {Advances in neural information processing systems}, + volume = {1}, + url = {https://proceedings.neurips.cc/paper/1988/hash/812b4ba287f5ee0bc9d43bbf5bbe87fb-Abstract.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/HWYQXFWK/Pomerleau - 1988 - Alvinn An autonomous land vehicle in a neural net.pdf} +} + +@inproceedings{1997-atkeson-RobotLearningDemonstration, + title = {Robot Learning from Demonstration}, + booktitle = {{{ICML}}}, + author = {Atkeson, Christopher G. and Schaal, Stefan}, + year = {1997}, + volume = {97}, + pages = {12--20}, + url = {https://mcgovern-fagg.org/amy_html/courses/cs5973_fall2005/lfd.pdf}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/LE72XZRU/Atkeson and Schaal - 1997 - Robot learning from demonstration.pdf} +} + +@article{2003-schaal-ComputationalApproachesMotor, + title = {Computational Approaches to Motor Learning by Imitation}, + author = {Schaal, Stefan and Ijspeert, Auke and Billard, Aude}, + editor = {Frith, C.D. and Wolpert, D.M.}, + year = {2003}, + journal = {Philosophical Transactions of the Royal Society of London. Series B: Biological Sciences}, + shortjournal = {Phil. Trans. R. Soc. Lond. B}, + volume = {358}, + number = {1431}, + pages = {537--547}, + issn = {0962-8436, 1471-2970}, + delete_delete_delete_doi = {10.1098/rstb.2002.1258}, + url = {https://royalsocietypublishing.org/delete_delete_delete_doi/10.1098/rstb.2002.1258}, + urlyear = {2024}, + abstract = {Movement imitation requires a complex set of mechanisms that map an observed movement of a teacher onto one's own movement apparatus. Relevant problems include movement recognition, pose estimation, pose tracking, body correspondence, coordinate transformation from external to egocentric space, matching of observed against previously learned movement, resolution of redundant degrees–of–freedom that are unconstrained by the observation, suitable movement representations for imitation, modularization of motor control, etc. All of these topics by themselves are active research problems in computational and neurobiological sciences, such that their combination into a complete imitation system remains a daunting undertaking—indeed, one could argue that we need to understand the complete perception–action loop. As a strategy to untangle the complexity of imitation, this paper will examine imitation purely from a computational point of view, i.e. we will review statistical and mathematical approaches that have been suggested for tackling parts of the imitation problem, and discuss their merits, disadvantages and underlying principles. Given the focus on action recognition of other contributions in this special issue, this paper will primarily emphasize the motor side of imitation, assuming that a perceptual system has already identified important features of a demonstrated movement and created their corresponding spatial information. Based on the formalization of motor control in terms of control policies and their associated performance criteria, useful taxonomies of imitation learning can be generated that clarify different approaches and future research directions.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/4JP8TFM3/Schaal et al. - 2003 - Computational approaches to motor learning by imit.pdf} +} + +@inproceedings{2004-abbeel-ApprenticeshipLearningInverse, + title = {Apprenticeship Learning via Inverse Reinforcement Learning}, + booktitle = {Proceedings of the Twenty-First International Conference on {{Machine}} Learning}, + author = {Abbeel, Pieter and Ng, Andrew Y.}, + year = {2004}, + series = {{{ICML}} '04}, + pages = {1}, + delete_delete_delete_publisher = {Association for Computing Machinery}, + location = {New York, NY, USA}, + delete_delete_delete_doi = {10.1145/1015330.1015430}, + url = {https://dl.acm.org/delete_delete_delete_doi/10.1145/1015330.1015430}, + urlyear = {2024}, + abstract = {We consider learning in a Markov decision process where we are not explicitly given a reward function, but where instead we can observe an expert demonstrating the task that we want to learn to perform. This setting is useful in applications (such as the task of driving) where it may be difficult to write down an explicit reward function specifying exactly how different desiderata should be traded off. We think of the expert as trying to maximize a reward function that is expressible as a linear combination of known features, and give an algorithm for learning the task demonstrated by the expert. Our algorithm is based on using "inverse reinforcement learning" to try to recover the unknown reward function. We show that our algorithm terminates in a small number of iterations, and that even though we may never recover the expert's reward function, the policy output by the algorithm will attain performance close to that of the expert, where here performance is measured with respect to the expert's unknown reward function.}, + isbn = {978-1-58113-838-2}, + file = {/home/mtoussai/Zotero/storage/RYHNMSCZ/Abbeel and Ng - 2004 - Apprenticeship learning via inverse reinforcement .pdf} +} + +@inproceedings{2007-calinon-IncrementalLearningGestures, + title = {Incremental Learning of Gestures by Imitation in a Humanoid Robot}, + booktitle = {Proceedings of the {{ACM}}/{{IEEE}} International Conference on {{Human-robot}} Interaction}, + author = {Calinon, Sylvain and Billard, Aude}, + year = {2007}, + pages = {255--262}, + delete_delete_delete_publisher = {ACM}, + location = {Arlington Virginia USA}, + delete_delete_delete_doi = {10.1145/1228716.1228751}, + url = {https://dl.acm.org/delete_delete_delete_doi/10.1145/1228716.1228751}, + urlyear = {2024}, + booktitle = {{{HRI07}}: {{International Conference}} on {{Human Robot Interaction}}}, + isbn = {978-1-59593-617-2}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/NPBZGNEN/Calinon and Billard - 2007 - Incremental learning of gestures by imitation in a.pdf} +} + +@inproceedings{2007-syed-GameTheoreticApproachApprenticeship, + title = {A {{Game-Theoretic Approach}} to {{Apprenticeship Learning}}}, + booktitle = {Advances in {{Neural Information Processing Systems}}}, + author = {Syed, Umar and Schapire, Robert E}, + year = {2007}, + volume = {20}, + delete_delete_delete_publisher = {Curran Associates, Inc.}, + url = {https://proceedings.neurips.cc/paper/2007/hash/ca3ec598002d2e7662e2ef4bdd58278b-Abstract.html}, + urlyear = {2024}, + abstract = {We study the problem of an apprentice learning to behave in an environment with an unknown reward function by observing the behavior of an expert. We follow on the work of Abbeel and Ng [1] who considered a framework in which the true reward function is assumed to be a linear combination of a set of known and observable features. We give a new algorithm that, like theirs, is guaranteed to learn a policy that is nearly as good as the expert's, given enough examples. However, unlike their algorithm, we show that ours may produce a policy that is substantially better than the expert's. Moreover, our algorithm is computationally faster, is easier to implement, and can be applied even in the absence of an expert. The method is based on a game-theoretic view of the problem, which leads naturally to a direct application of the multiplicative-weights algorithm of Freund and Schapire [2] for playing repeated matrix games. In addition to our formal presentation and analysis of the new algorithm, we sketch how the method can be applied when the transition function itself is unknown, and we provide an experimental demonstration of the algorithm on a toy video-game environment.}, + file = {/home/mtoussai/Zotero/storage/YE4WPIQ3/Syed and Schapire - 2007 - A Game-Theoretic Approach to Apprenticeship Learni.pdf} +} + +@inproceedings{2008-do-ImitationHumanMotion, + title = {Imitation of Human Motion on a Humanoid Robot Using Non-Linear Optimization}, + booktitle = {Humanoids 2008-8th {{IEEE-RAS International Conference}} on {{Humanoid Robots}}}, + author = {Do, Martin and Azad, Pedram and Asfour, Tamim and Dillmann, Rudiger}, + year = {2008}, + pages = {545--552}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/4756029/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/LIIKZLZU/Do et al. - 2008 - Imitation of human motion on a humanoid robot usin.pdf} +} + +@article{2009-argall-SurveyRobotLearninga, + title = {A Survey of Robot Learning from Demonstration}, + author = {Argall, Brenna D. and Chernova, Sonia and Veloso, Manuela and Browning, Brett}, + year = {2009}, + journal = {Robotics and autonomous systems}, + volume = {57}, + number = {5}, + pages = {469--483}, + delete_delete_delete_publisher = {Elsevier}, + url = {https://www.sciencedirect.com/science/article/pii/S0921889008001772?casa_token=23LVhxWg4jgAAAAA:GehDaKG7uEQPK4tGHZvaYo9YPFM63lvQpXoH7LjTu46LEo4YSRpe2UtyEMGEaxrvrjkq7P_1mw}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/FZZ8NDYT/Argall et al. - 2009 - A survey of robot learning from demonstration.pdf;/home/mtoussai/Zotero/storage/LIQ85VQW/S0921889008001772.html} +} + +@article{2009-daume-SearchbasedStructuredPrediction, + title = {Search-Based Structured Prediction}, + author = {Daumé, Hal and Langford, John and Marcu, Daniel}, + year = {2009}, + journal = {Machine Learning}, + shortjournal = {Mach Learn}, + volume = {75}, + number = {3}, + pages = {297--325}, + issn = {1573-0565}, + delete_delete_delete_doi = {10.1007/s10994-009-5106-x}, + url = {https://delete_delete_delete_doi.org/10.1007/s10994-009-5106-x}, + urlyear = {2024}, + abstract = {We present Searn, an algorithm for integrating search and learning to solve complex structured prediction problems such as those that occur in natural language, speech, computational biology, and vision. Searn is a meta-algorithm that transforms these complex problems into simple classification problems to which any binary classifier may be applied. Unlike current algorithms for structured learning that require decomposition of both the loss function and the feature functions over the predicted structure, Searn is able to learn prediction functions for any loss function and any class of features. Moreover, Searn comes with a strong, natural theoretical guarantee: good performance on the derived classification problems implies good performance on the structured prediction problem.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/EAEU494S/Daumé et al. - 2009 - Search-based structured prediction.pdf} +} + +@inproceedings{2010-ross-EfficientReductionsImitation, + title = {Efficient Reductions for Imitation Learning}, + booktitle = {Proceedings of the Thirteenth International Conference on Artificial Intelligence and Statistics}, + author = {Ross, Stéphane and Bagnell, Drew}, + year = {2010}, + pages = {661--668}, + delete_delete_delete_publisher = {{JMLR Workshop and Conference Proceedings}}, + url = {https://proceedings.mlr.press/v9/ross10a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/RKYCCN6B/Ross and Bagnell - 2010 - Efficient reductions for imitation learning.pdf} +} + +@online{2011-ross-ReductionImitationLearninga, + title = {A {{Reduction}} of {{Imitation Learning}} and {{Structured Prediction}} to {{No-Regret Online Learning}}}, + author = {Ross, Stephane and Gordon, Geoffrey J. and Bagnell, J. Andrew}, + year = {2011}, + eprint = {1011.0686}, + eprinttype = {arXiv}, + eprintclass = {cs, stat}, + delete_delete_delete_doi = {10.48550/arXiv.1011.0686}, + url = {http://arxiv.org/abs/1011.0686}, + urlyear = {2024}, + abstract = {Sequential prediction problems such as imitation learning, where future observations depend on previous predictions (actions), violate the common i.i.d. assumptions made in statistical learning. This leads to poor performance in theory and often in practice. Some recent approaches provide stronger guarantees in this setting, but remain somewhat unsatisfactory as they train either non-stationary or stochastic policies and require a large number of iterations. In this paper, we propose a new iterative algorithm, which trains a stationary deterministic policy, that can be seen as a no regret algorithm in an online learning setting. We show that any such no regret algorithm, combined with additional reduction assumptions, must find a policy with good performance under the distribution of observations it induces in such sequential settings. We demonstrate that this new approach outperforms previous approaches on two challenging imitation learning problems and a benchmark sequence labeling problem.}, + pubstate = {prepublished}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Machine Learning,Statistics - Machine Learning}, + file = {/home/mtoussai/Zotero/storage/A25LCW59/Ross et al. - 2011 - A Reduction of Imitation Learning and Structured P.pdf;/home/mtoussai/Zotero/storage/KGTCW2HF/1011.html} +} + +@article{2013-paraschos-ProbabilisticMovementPrimitives, + title = {Probabilistic Movement Primitives}, + author = {Paraschos, Alexandros and Daniel, Christian and Peters, Jan R. and Neumann, Gerhard}, + year = {2013}, + journal = {Advances in neural information processing systems}, + volume = {26}, + url = {https://proceedings.neurips.cc/paper/2013/hash/e53a0a2978c28872a4505bdb51db06dc-Abstract.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/JGL5EM3P/Paraschos et al. - 2013 - Probabilistic movement primitives.pdf} +} + +@inproceedings{2016-ho-GenerativeAdversarialImitationa, + title = {Generative {{Adversarial Imitation Learning}}}, + booktitle = {Advances in {{Neural Information Processing Systems}}}, + author = {Ho, Jonathan and Ermon, Stefano}, + year = {2016}, + volume = {29}, + delete_delete_delete_publisher = {Curran Associates, Inc.}, + url = {https://proceedings.neurips.cc/paper_files/paper/2016/hash/cc7e2b878868cbae992d1fb743995d8f-Abstract.html}, + urlyear = {2024}, + abstract = {Consider learning a policy from example expert behavior, without interaction with the expert or access to a reinforcement signal. One approach is to recover the expert's cost function with inverse reinforcement learning, then extract a policy from that cost function with reinforcement learning. This approach is indirect and can be slow. We propose a new general framework for directly extracting a policy from data as if it were obtained by reinforcement learning following inverse reinforcement learning. We show that a certain instantiation of our framework draws an analogy between imitation learning and generative adversarial networks, from which we derive a model-free imitation learning algorithm that obtains significant performance gains over existing model-free methods in imitating complex behaviors in large, high-dimensional environments.}, + file = {/home/mtoussai/Zotero/storage/7XTMHMNH/Ho and Ermon - 2016 - Generative Adversarial Imitation Learning.pdf} +} + +@online{2017-merel-LearningHumanBehaviors, + title = {Learning Human Behaviors from Motion Capture by Adversarial Imitation}, + author = {Merel, Josh and Tassa, Yuval and TB, Dhruva and Srinivasan, Sriram and Lemmon, Jay and Wang, Ziyu and Wayne, Greg and Heess, Nicolas}, + year = {2017}, + eprint = {1707.02201}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/1707.02201}, + urlyear = {2024}, + abstract = {Rapid progress in deep reinforcement learning has made it increasingly feasible to train controllers for high-dimensional humanoid bodies. However, methods that use pure reinforcement learning with simple reward functions tend to produce non-humanlike and overly stereotyped movement behaviors. In this work, we extend generative adversarial imitation learning to enable training of generic neural network policies to produce humanlike movement patterns from limited demonstrations consisting only of partially observed state features, without access to actions, even when the demonstrations come from a body with different and unknown physical parameters. We leverage this approach to build sub-skill policies from motion capture data and show that they can be reused to solve tasks when controlled by a higher level controller.}, + pubstate = {prepublished}, + keywords = {Computer Science - Machine Learning,Computer Science - Robotics,Electrical Engineering and Systems Science - Systems and Control}, + file = {/home/mtoussai/Zotero/storage/U79V692I/Merel et al. - 2017 - Learning human behaviors from motion capture by ad.pdf;/home/mtoussai/Zotero/storage/Z2PLBE4I/1707.html} +} + +@online{2017-weng-GANWGAN, + title = {From {{GAN}} to {{WGAN}}}, + author = {Weng, Lilian}, + year = {2017-08-20T00:00:00+00:00}, + url = {https://lilianweng.github.io/posts/2017-08-20-gan/}, + urlyear = {2024}, + abstract = {[Upyeard on 2018-09-30: thanks to Yoonju, we have this post translated in Korean!] [Upyeard on 2019-04-18: this post is also available on arXiv.] Generative adversarial network (GAN) has shown great results in many generative tasks to replicate the real-world rich content such as images, human language, and music. It is inspired by game theory: two models, a generator and a critic, are competing with each other while making each other stronger at the same time.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/RNZXNYIX/2017-08-20-gan.html} +} + +@inproceedings{2018-codevilla-EndtoEndDrivingConditional, + title = {End-to-{{End Driving Via Conditional Imitation Learning}}}, + booktitle = {2018 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Codevilla, Felipe and Muller, Matthias and Lopez, Antonio and Koltun, Vladlen and Dosovitskiy, Alexey}, + year = {2018}, + pages = {4693--4700}, + delete_delete_delete_publisher = {IEEE}, + location = {Brisbane, QLD}, + delete_delete_delete_doi = {10.1109/ICRA.2018.8460487}, + url = {https://ieeexplore.ieee.org/document/8460487/}, + urlyear = {2024}, + abstract = {Deep networks trained on demonstrations of human driving have learned to follow roads and avoid obstacles. However, driving policies trained via imitation learning cannot be controlled at test time. A vehicle trained end-to-end to imitate an expert cannot be guided to take a specific turn at an upcoming intersection. This limits the utility of such systems. We propose to condition imitation learning on high-level command input. At test time, the learned driving policy functions as a chauffeur that handles sensorimotor coordination but continues to respond to navigational commands. We evaluate different architectures for conditional imitation learning in vision-based driving. We conduct experiments in realistic three-dimensional simulations of urban driving and on a 1/5 scale robotic truck that is trained to drive in a residential area. Both systems drive based on visual input yet remain responsive to high-level navigational commands.}, + booktitle = {2018 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + isbn = {978-1-5386-3081-5}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/TJK6LUM8/Codevilla et al. - 2018 - End-to-End Driving Via Conditional Imitation Learn.pdf} +} + +@inproceedings{2018-ichter-LearningSamplingDistributions, + title = {Learning {{Sampling Distributions}} for {{Robot Motion Planning}}}, + booktitle = {2018 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Ichter, Brian and Harrison, James and Pavone, Marco}, + year = {2018}, + pages = {7087--7094}, + issn = {2577-087X}, + delete_delete_delete_doi = {10.1109/ICRA.2018.8460730}, + abstract = {A defining feature of sampling-based motion planning is the reliance on an implicit representation of the state space, which is enabled by a set of probing samples. Traditionally, these samples are drawn either probabilistically or deterministically to uniformly cover the state space. Yet, the motion of many robotic systems is often restricted to “small” regions of the state space, due to e.g. differential constraints or collision-avoidance constraints. To accelerate the planning process, it is thus desirable to devise non-uniform sampling strategies that favor sampling in those regions where an optimal solution might lie. This paper proposes a methodology for nonuniform sampling, whereby a sampling distribution is learned from demonstrations, and then used to bias sampling. The sampling distribution is computed through a conditional variational autoencoder, allowing sample generation from the latent space conditioned on the specific planning problem. This methodology is general, can be used in combination with any sampling-based planner, and can effectively exploit the underlying structure of a planning problem while maintaining the theoretical guarantees of sampling-based approaches. Specifically, on several planning problems, the proposed methodology is shown to effectively learn representations for the relevant regions of the state space, resulting in an order of magnitude improvement in terms of success rate and convergence to the optimal cost.}, + booktitle = {2018 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + keywords = {Acceleration,bias sampling,collision avoidance,Collision avoidance,collision-avoidance,Feature extraction,Manifolds,mobile robots,Planning,Probabilistic logic,robot motion planning,Robots,sampling methods,sampling-based motion planning,variational autoencoder}, + file = {/home/mtoussai/Zotero/storage/HIRAD8JE/Ichter et al. - 2018 - Learning Sampling Distributions for Robot Motion P.pdf;/home/mtoussai/Zotero/storage/A5FP9BKA/8460730.html} +} + +@online{2018-weng-AutoencoderBetaVAE, + title = {From {{Autoencoder}} to {{Beta-VAE}}}, + author = {Weng, Lilian}, + year = {2018-08-12T00:00:00+00:00}, + url = {https://lilianweng.github.io/posts/2018-08-12-vae/}, + urlyear = {2024}, + abstract = {[Upyeard on 2019-07-18: add a section on VQ-VAE \& VQ-VAE-2.] [Upyeard on 2019-07-26: add a section on TD-VAE.] Autocoder is invented to reconstruct high-dimensional data using a neural network model with a narrow bottleneck layer in the middle (oops, this is probably not true for Variational Autoencoder, and we will investigate it in details in later sections). A nice byproduct is dimension reduction: the bottleneck layer captures a compressed latent encoding.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/YR6VHYYX/2018-08-12-vae.html} +} + +@inproceedings{2020-chen-LearningCheating, + title = {Learning by Cheating}, + booktitle = {Conference on {{Robot Learning}}}, + author = {Chen, Dian and Zhou, Brady and Koltun, Vladlen and Krähenbühl, Philipp}, + year = {2020}, + pages = {66--75}, + delete_delete_delete_publisher = {PMLR}, + url = {http://proceedings.mlr.press/v100/chen20a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/5YI4TLHU/Chen et al. - 2020 - Learning by cheating.pdf} +} + +@inproceedings{2020-chen-LearningCheatinga, + title = {Learning by {{Cheating}}}, + booktitle = {Proceedings of the {{Conference}} on {{Robot Learning}}}, + author = {Chen, Dian and Zhou, Brady and Koltun, Vladlen and Krähenbühl, Philipp}, + year = {2020}, + pages = {66--75}, + delete_delete_delete_publisher = {PMLR}, + issn = {2640-3498}, + url = {https://proceedings.mlr.press/v100/chen20a.html}, + urlyear = {2024}, + abstract = {Vision-based urban driving is hard. The autonomous system needs to learn to perceive the world and act in it. We show that this challenging learning problem can be simplified by decomposing it into two stages. We first train an agent that has access to privileged information. This privileged agent cheats by observing the ground-truth layout of the environment and the positions of all traffic participants. In the second stage, the privileged agent acts as a teacher that trains a purely vision-based sensorimotor agent. The resulting sensorimotor agent does not have access to any privileged information and does not cheat. This two-stage training procedure is counter-intuitive at first, but has a number of important advantages that we analyze and empirically demonstrate. We use the presented approach to train a vision-based autonomous driving system that substantially outperforms the state of the art on the CARLA benchmark and the recent NoCrash benchmark. Our approach achieves, for the first time, 100\% success rate on all tasks in the original CARLA benchmark, sets a new record on the NoCrash benchmark, and reduces the frequency of infractions by an order of magnitude compared to the prior state of the art.}, + booktitle = {Conference on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/7HBZXKG7/Chen et al. - 2020 - Learning by Cheating.pdf} +} + +@inproceedings{2020-ho-DenoisingDiffusionProbabilistic, + title = {Denoising {{Diffusion Probabilistic Models}}}, + booktitle = {Advances in {{Neural Information Processing Systems}}}, + author = {Ho, Jonathan and Jain, Ajay and Abbeel, Pieter}, + year = {2020}, + volume = {33}, + pages = {6840--6851}, + delete_delete_delete_publisher = {Curran Associates, Inc.}, + url = {https://proceedings.neurips.cc/paper_files/paper/2020/hash/4c5bcfec8584af0d967f1ab10179ca4b-Abstract.html}, + urlyear = {2024}, + abstract = {We present high quality image synthesis results using diffusion probabilistic models, a class of latent variable models inspired by considerations from nonequilibrium thermodynamics. Our best results are obtained by training on a weighted variational bound designed according to a novel connection between diffusion probabilistic models and denoising score matching with Langevin dynamics, and our models naturally admit a progressive lossy decompression scheme that can be interpreted as a generalization of autoregressive decoding. On the unconditional CIFAR10 dataset, we obtain an Inception score of 9.46 and a state-of-the-art FID score of 3.17. On 256x256 LSUN, we obtain sample quality similar to ProgressiveGAN.}, + file = {/home/mtoussai/Zotero/storage/U8TUTBGM/Ho et al. - 2020 - Denoising Diffusion Probabilistic Models.pdf} +} + +@inproceedings{2020-kaufmann-DeepDroneAcrobatics, + title = {Deep {{Drone Acrobatics}}}, + booktitle = {Robotics: {{Science}} and {{Systems XVI}}}, + author = {Kaufmann, Elia and Loquercio, Antonio and Ranftl, Rene and Müller, Matthias and Koltun, Vladlen and Scaramuzza, Davide}, + year = {2020}, + delete_delete_delete_publisher = {{Robotics: Science and Systems Foundation}}, + delete_delete_delete_doi = {10.15607/RSS.2020.XVI.040}, + url = {http://www.roboticsproceedings.org/rss16/p040.pdf}, + urlyear = {2024}, + abstract = {Performing acrobatic maneuvers with quadrotors is extremely challenging. Acrobatic flight requires high thrust and extreme angular accelerations that push the platform to its physical limits. Professional drone pilots often measure their level of mastery by flying such maneuvers in competitions. In this paper, we propose to learn a sensorimotor policy that enables an autonomous quadrotor to fly extreme acrobatic maneuvers with only onboard sensing and computation. We train the policy entirely in simulation by leveraging demonstrations from an optimal controller that has access to privileged information. We use appropriate abstractions of the visual input to enable transfer to a real quadrotor. We show that the resulting policy can be directly deployed in the physical world without any fine-tuning on real data. Our methodology has several favorable properties: it does not require a human expert to provide demonstrations, it cannot harm the physical system during training, and it can be used to learn maneuvers that are challenging even for the best human pilots. Our approach enables a physical quadrotor to fly maneuvers such as the Power Loop, the Barrel Roll, and the Matty Flip, during which it incurs accelerations of up to 3g.}, + booktitle = {Robotics: {{Science}} and {{Systems}} 2020}, + isbn = {978-0-9923747-6-1}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/F7KX6798/Kaufmann et al. - 2020 - Deep Drone Acrobatics.pdf} +} + +@inproceedings{2020-kim-DomainAdaptiveImitation, + title = {Domain {{Adaptive Imitation Learning}}}, + booktitle = {Proceedings of the 37th {{International Conference}} on {{Machine Learning}}}, + author = {Kim, Kuno and Gu, Yihong and Song, Jiaming and Zhao, Shengjia and Ermon, Stefano}, + year = {2020}, + pages = {5286--5295}, + delete_delete_delete_publisher = {PMLR}, + issn = {2640-3498}, + url = {https://proceedings.mlr.press/v119/kim20c.html}, + urlyear = {2024}, + abstract = {We study the question of how to imitate tasks across domains with discrepancies such as embodiment, viewpoint, and dynamics mismatch. Many prior works require paired, aligned demonstrations and an additional RL step that requires environment interactions. However, paired, aligned demonstrations are seldom obtainable and RL procedures are expensive. In this work, we formalize the Domain Adaptive Imitation Learning (DAIL) problem - a unified framework for imitation learning in the presence of viewpoint, embodiment, and/or dynamics mismatch. Informally, DAIL is the process of learning how to perform a task optimally, given demonstrations of the task in a distinct domain. We propose a two step approach to DAIL: alignment followed by adaptation. In the alignment step we execute a novel unsupervised MDP alignment algorithm, Generative Adversarial MDP Alignment (GAMA), to learn state and action correspondences from \textbackslash emph\{unpaired, unaligned\} demonstrations. In the adaptation step we leverage the correspondences to zero-shot imitate tasks across domains. To describe when DAIL is feasible via alignment and adaptation, we introduce a theory of MDP alignability. We experimentally evaluate GAMA against baselines in embodiment, viewpoint, and dynamics mismatch scenarios where aligned demonstrations don’t exist and show the effectiveness of our approach}, + booktitle = {International {{Conference}} on {{Machine Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/IXTZYA94/Kim et al. - 2020 - Domain Adaptive Imitation Learning.pdf;/home/mtoussai/Zotero/storage/Y2J2WZKK/Kim et al. - 2020 - Domain Adaptive Imitation Learning.pdf} +} + +@article{2020-lee-LearningQuadrupedalLocomotionb, + title = {Learning Quadrupedal Locomotion over Challenging Terrain}, + author = {Lee, Joonho and Hwangbo, Jemin and Wellhausen, Lorenz and Koltun, Vladlen and Hutter, Marco}, + year = {2020}, + journal = {Science Robotics}, + volume = {5}, + number = {47}, + pages = {eabc5986}, + delete_delete_delete_publisher = {American Association for the Advancement of Science}, + delete_delete_delete_doi = {10.1126/scirobotics.abc5986}, + url = {https://www.science.org/delete_delete_delete_doi/10.1126/scirobotics.abc5986}, + urlyear = {2024}, + abstract = {Legged locomotion can extend the operational domain of robots to some of the most challenging environments on Earth. However, conventional controllers for legged locomotion are based on elaborate state machines that explicitly trigger the execution of motion primitives and reflexes. These designs have increased in complexity but fallen short of the generality and robustness of animal locomotion. Here, we present a robust controller for blind quadrupedal locomotion in challenging natural environments. Our approach incorporates proprioceptive feedback in locomotion control and demonstrates zero-shot generalization from simulation to natural environments. The controller is trained by reinforcement learning in simulation. The controller is driven by a neural network policy that acts on a stream of proprioceptive signals. The controller retains its robustness under conditions that were never encountered during training: deformable terrains such as mud and snow, dynamic footholds such as rubble, and overground impediments such as thick vegetation and gushing water. The presented work indicates that robust locomotion in natural environments can be achieved by training in simple domains.}, + file = {/home/mtoussai/Zotero/storage/2R62AGRK/Lee et al. - 2020 - Learning quadrupedal locomotion over challenging t.pdf} +} + +@online{2020-smith-AVIDLearningMultiStage, + title = {{{AVID}}: {{Learning Multi-Stage Tasks}} via {{Pixel-Level Translation}} of {{Human Videos}}}, + shorttitle = {{{AVID}}}, + author = {Smith, Laura and Dhawan, Nikita and Zhang, Marvin and Abbeel, Pieter and Levine, Sergey}, + year = {2020}, + eprint = {1912.04443}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/1912.04443}, + urlyear = {2024}, + abstract = {Robotic reinforcement learning (RL) holds the promise of enabling robots to learn complex behaviors through experience. However, realizing this promise for long-horizon tasks in the real world requires mechanisms to reduce human burden in terms of defining the task and scaffolding the learning process. In this paper, we study how these challenges can be alleviated with an automated robotic learning framework, in which multi-stage tasks are defined simply by providing videos of a human demonstrator and then learned autonomously by the robot from raw image observations. A central challenge in imitating human videos is the difference in appearance between the human and robot, which typically requires manual correspondence. We instead take an automated approach and perform pixel-level image translation via CycleGAN to convert the human demonstration into a video of a robot, which can then be used to construct a reward function for a model-based RL algorithm. The robot then learns the task one stage at a time, automatically learning how to reset each stage to retry it multiple times without human-provided resets. This makes the learning process largely automatic, from intuitive task specification via a video to automated training with minimal human intervention. We demonstrate that our approach is capable of learning complex tasks, such as operating a coffee machine, directly from raw image observations, requiring only 20 minutes to provide human demonstrations and about 180 minutes of robot interaction.}, + pubstate = {prepublished}, + keywords = {Computer Science - Computer Vision and Pattern Recognition,Computer Science - Machine Learning,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/2TJEHHR4/Smith et al. - 2020 - AVID Learning Multi-Stage Tasks via Pixel-Level T.pdf;/home/mtoussai/Zotero/storage/L3EW7K7Q/1912.html} +} + +@online{2021-weng-WhatAreDiffusion, + title = {What Are {{Diffusion Models}}?}, + author = {Weng, Lilian}, + year = {2021-07-11T00:00:00+00:00}, + url = {https://lilianweng.github.io/posts/2021-07-11-diffusion-models/}, + urlyear = {2024}, + abstract = {[Upyeard on 2021-09-19: Highly recommend this blog post on score-based generative modeling by Yang Song (author of several key papers in the references)]. [Upyeard on 2022-08-27: Added classifier-free guidance, GLIDE, unCLIP and Imagen. [Upyeard on 2022-08-31: Added latent diffusion model. [Updated on 2024-04-13: Added progressive distillation, consistency models, and the Model Architecture section. So far, I’ve written about three types of generative models, GAN, VAE, and Flow-based models. They have shown great success in generating high-quality samples, but each has some limitations of its own.}, + langid = {english} +} + +@inproceedings{2022-florence-ImplicitBehavioralCloning, + title = {Implicit {{Behavioral Cloning}}}, + booktitle = {Proceedings of the 5th {{Conference}} on {{Robot Learning}}}, + author = {Florence, Pete and Lynch, Corey and Zeng, Andy and Ramirez, Oscar A. and Wahid, Ayzaan and Downs, Laura and Wong, Adrian and Lee, Johnny and Mordatch, Igor and Tompson, Jonathan}, + year = {2022}, + pages = {158--168}, + delete_delete_delete_publisher = {PMLR}, + issn = {2640-3498}, + url = {https://proceedings.mlr.press/v164/florence22a.html}, + urlyear = {2024}, + abstract = {We find that across a wide range of robot policy learning scenarios, treating supervised policy learning with an implicit model generally performs better, on average, than commonly used explicit models. We present extensive experiments on this finding, and we provide both intuitive insight and theoretical arguments distinguishing the properties of implicit models compared to their explicit counterparts, particularly with respect to approximating complex, potentially discontinuous and multi-valued (set-valued) functions. On robotic policy learning tasks we show that implicit behavior-cloning policies with energy-based models (EBM) often outperform common explicit (Mean Square Error, or Mixture Density) behavior-cloning policies, including on tasks with high-dimensional action spaces and visual image inputs. We find these policies provide competitive results or outperform state-of-the-art offline reinforcement learning methods on the challenging human-expert tasks from the D4RL benchmark suite, despite using no reward information. In the real world, robots with implicit policies can learn complex and remarkably subtle behaviors on contact-rich tasks from human demonstrations, including tasks with high combinatorial complexity and tasks requiring 1mm precision.}, + booktitle = {Conference on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/AD8HRZA6/Florence et al. - 2022 - Implicit Behavioral Cloning.pdf} +} + +@article{2022-ha-DeepVisualConstraints, + title = {Deep Visual Constraints: {{Neural}} Implicit Models for Manipulation Planning from Visual Input}, + shorttitle = {Deep Visual Constraints}, + author = {Ha, Jung-Su and Driess, Danny and Toussaint, Marc}, + year = {2022}, + journal = {IEEE Robotics and Automation Letters}, + volume = {7}, + number = {4}, + pages = {10857--10864}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9844753/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/PUZWSE5K/Ha et al. - 2022 - Deep visual constraints Neural implicit models fo.pdf} +} + +@inproceedings{2022-janner-PlanningDiffusionFlexiblea, + title = {Planning with {{Diffusion}} for {{Flexible Behavior Synthesis}}}, + booktitle = {Proceedings of the 39th {{International Conference}} on {{Machine Learning}}}, + author = {Janner, Michael and Du, Yilun and Tenenbaum, Joshua and Levine, Sergey}, + year = {2022}, + pages = {9902--9915}, + delete_delete_delete_publisher = {PMLR}, + issn = {2640-3498}, + url = {https://proceedings.mlr.press/v162/janner22a.html}, + urlyear = {2024}, + abstract = {Model-based reinforcement learning methods often use learning only for the purpose of recovering an approximate dynamics model, offloading the rest of the decision-making work to classical trajectory optimizers. While conceptually simple, this combination has a number of empirical shortcomings, suggesting that learned models may not be well-suited to standard trajectory optimization. In this paper, we consider what it would look like to fold as much of the trajectory optimization pipeline as possible into the modeling problem, such that sampling from the model and planning with it become nearly identical. The core of our technical approach lies in a diffusion probabilistic model that plans by iteratively denoising trajectories. We show how classifier-guided sampling and image inpainting can be reinterpreted as coherent planning strategies, explore the unusual and useful properties of diffusion-based planning methods, and demonstrate the effectiveness of our framework in control settings that emphasize long-horizon decision-making and test-time flexibility.}, + booktitle = {International {{Conference}} on {{Machine Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/ZMUAHILP/Janner et al. - 2022 - Planning with Diffusion for Flexible Behavior Synt.pdf} +} + +@incollection{2022-manuelli-KPAMKeyPointAffordances, + title = {{{KPAM}}: {{KeyPoint Affordances}} for {{Category-Level Robotic Manipulation}}}, + shorttitle = {{{KPAM}}}, + booktitle = {Robotics {{Research}}}, + author = {Manuelli, Lucas and Gao, Wei and Florence, Peter and Tedrake, Russ}, + editor = {Asfour, Tamim and Yoshida, Eiichi and Park, Jaeheung and Christensen, Henrik and Khatib, Oussama}, + year = {2022}, + volume = {20}, + pages = {132--157}, + delete_delete_delete_publisher = {Springer International Publishing}, + location = {Cham}, + delete_delete_delete_doi = {10.1007/978-3-030-95459-8_9}, + url = {https://link.springer.com/10.1007/978-3-030-95459-8_9}, + urlyear = {2024}, + isbn = {978-3-030-95458-1 978-3-030-95459-8}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/MSL38PAU/Manuelli et al. - 2019 - kPAM KeyPoint Affordances for Category-Level Robo.pdf} +} + +@inproceedings{2022-pearce-ImitatingHumanBehaviour, + title = {Imitating {{Human Behaviour}} with {{Diffusion Models}}}, + author = {Pearce, Tim and Rashid, Tabish and Kanervisto, Anssi and Bignell, Dave and Sun, Mingfei and Georgescu, Raluca and Macua, Sergio Valcarcel and Tan, Shan Zheng and Momennejad, Ida and Hofmann, Katja and Devlin, Sam}, + year = {2022}, + url = {https://openreview.net/forum?id=Pv1GPQzRrC8}, + urlyear = {2024}, + abstract = {Diffusion models have emerged as powerful generative models in the text-to-image domain. This paper studies their application as observation-to-action models for imitating human behaviour in sequential environments. Human behaviour is stochastic and multimodal, with structured correlations between action dimensions. Meanwhile, standard modelling choices in behaviour cloning are limited in their expressiveness and may introduce bias into the cloned policy. We begin by pointing out the limitations of these choices. We then propose that diffusion models are an excellent fit for imitating human behaviour, since they learn an expressive distribution over the joint action space. We introduce several innovations to make diffusion models suitable for sequential environments; designing suitable architectures, investigating the role of guidance, and developing reliable sampling strategies. Experimentally, diffusion models closely match human demonstrations in a simulated robotic control task and a modern 3D gaming environment.}, + booktitle = {The {{Eleventh International Conference}} on {{Learning Representations}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/V9FH8FPM/Pearce et al. - 2022 - Imitating Human Behaviour with Diffusion Models.pdf} +} + +@inproceedings{2022-simeonov-NeuralDescriptorFields, + title = {Neural Descriptor Fields: {{Se}} (3)-Equivariant Object Representations for Manipulation}, + shorttitle = {Neural Descriptor Fields}, + booktitle = {2022 {{International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Simeonov, Anthony and Du, Yilun and Tagliasacchi, Andrea and Tenenbaum, Joshua B. and Rodriguez, Alberto and Agrawal, Pulkit and Sitzmann, Vincent}, + year = {2022}, + pages = {6394--6400}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9812146/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/GBWCG3SH/Simeonov et al. - 2022 - Neural descriptor fields Se (3)-equivariant objec.pdf} +} + +@inproceedings{2022-tagliabue-DemonstrationEfficientGuidedPolicy, + title = {Demonstration-{{Efficient Guided Policy Search}} via {{Imitation}} of {{Robust Tube MPC}}}, + booktitle = {2022 {{International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Tagliabue, Andrea and Kim, Dong-Ki and Everett, Michael and How, Jonathan P.}, + year = {2022}, + pages = {462--468}, + delete_delete_delete_doi = {10.1109/ICRA46639.2022.9812122}, + url = {https://ieeexplore.ieee.org/document/9812122}, + urlyear = {2024}, + abstract = {We propose a demonstration-efficient strategy to compress a computationally expensive Model Predictive Controller (MPC) into a more computationally efficient representation based on a deep neural network and Imitation Learning (IL). By generating a Robust Tube variant (RTMPC) of the MPC and leveraging properties from the tube, we introduce a data augmentation method that enables high demonstration-efficiency, capable of compensating the distribution shifts typically encountered in IL. Our approach opens the possibility of zero-shot transfer from a single demonstration collected in a nominal domain, such as a simulation or a robot in a lab/controlled environment, to a domain with bounded model errors/perturbations. Numerical and experimental evaluations performed on a trajectory tracking MPC for a multirotor show that our method outperforms strategies commonly employed in IL, such as DAgger and Domain Randomization, in terms of demonstration-efficiency and robustness to perturbations unseen during training.}, + booktitle = {2022 {{International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + file = {/home/mtoussai/Zotero/storage/L4ZXD8SJ/Tagliabue et al. - 2022 - Demonstration-Efficient Guided Policy Search via I.pdf;/home/mtoussai/Zotero/storage/3Y3DCKAE/9812122.html} +} + +@inproceedings{2023-belkhale-HydraHybridRobot, + title = {Hydra: {{Hybrid}} Robot Actions for Imitation Learning}, + shorttitle = {Hydra}, + booktitle = {Conference on {{Robot Learning}}}, + author = {Belkhale, Suneel and Cui, Yuchen and Sadigh, Dorsa}, + year = {2023}, + pages = {2113--2133}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v229/belkhale23a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/U5RTLI2B/Belkhale et al. - 2023 - Hydra Hybrid robot actions for imitation learning.pdf} +} + +@inproceedings{2023-chi-DiffusionPolicyVisuomotora, + title = {Diffusion {{Policy}}: {{Visuomotor Policy Learning}} via {{Action Diffusion}}}, + shorttitle = {Diffusion {{Policy}}}, + booktitle = {Robotics: {{Science}} and {{Systems XIX}}}, + author = {Chi, Cheng and Feng, Siyuan and Du, Yilun and Xu, Zhenjia and Cousineau, Eric and Burchfiel, Benjamin and Song, Shuran}, + year = {2023}, + delete_delete_delete_publisher = {{Robotics: Science and Systems Foundation}}, + delete_delete_delete_doi = {10.15607/RSS.2023.XIX.026}, + url = {http://www.roboticsproceedings.org/rss19/p026.pdf}, + urlyear = {2024}, + abstract = {This paper introduces Diffusion Policy, a new way of generating robot behavior by representing a robot’s visuomotor policy as a conditional denoising diffusion process. We benchmark Diffusion Policy across 12 different tasks from 4 different robot manipulation benchmarks and find that it consistently outperforms existing state-of-the-art robot learning methods with an average improvement of 46.9\%. Diffusion Policy learns the gradient of the action-distribution score function and iteratively optimizes with respect to this gradient field during inference via a series of stochastic Langevin dynamics steps. We find that the diffusion formulation yields powerful advantages when used for robot policies, including gracefully handling multimodal action distributions, being suitable for high-dimensional action spaces, and exhibiting impressive training stability. To fully unlock the potential of diffusion models for visuomotor policy learning on physical robots, this paper presents a set of key technical contributions including the incorporation of receding horizon control, visual conditioning, and the time-series diffusion transformer. We hope this work will help motivate a new generation of policy learning techniques that are able to leverage the powerful generative modeling capabilities of diffusion models. Code, data, and training details will be publicly available.}, + booktitle = {Robotics: {{Science}} and {{Systems}} 2023}, + isbn = {978-0-9923747-9-2}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/J4YZRG6N/Chi et al. - 2023 - Diffusion Policy Visuomotor Policy Learning via A.pdf} +} + +@online{2023-zhao-LearningFineGrainedBimanualc, + title = {Learning {{Fine-Grained Bimanual Manipulation}} with {{Low-Cost Hardware}}}, + author = {Zhao, Tony Z. and Kumar, Vikash and Levine, Sergey and Finn, Chelsea}, + year = {2023}, + eprint = {2304.13705}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2304.13705}, + urlyear = {2024}, + abstract = {Fine manipulation tasks, such as threading cable ties or slotting a battery, are notoriously difficult for robots because they require precision, careful coordination of contact forces, and closed-loop visual feedback. Performing these tasks typically requires high-end robots, accurate sensors, or careful calibration, which can be expensive and difficult to set up. Can learning enable low-cost and imprecise hardware to perform these fine manipulation tasks? We present a low-cost system that performs end-to-end imitation learning directly from real demonstrations, collected with a custom teleoperation interface. Imitation learning, however, presents its own challenges, particularly in high-precision domains: errors in the policy can compound over time, and human demonstrations can be non-stationary. To address these challenges, we develop a simple yet novel algorithm, Action Chunking with Transformers (ACT), which learns a generative model over action sequences. ACT allows the robot to learn 6 difficult tasks in the real world, such as opening a translucent condiment cup and slotting a battery with 80-90\% success, with only 10 minutes worth of demonstrations. Project website: https://tonyzhaozh.github.io/aloha/}, + pubstate = {prepublished}, + keywords = {Computer Science - Machine Learning,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/HK5W964P/Zhao et al. - 2023 - Learning Fine-Grained Bimanual Manipulation with L.pdf;/home/mtoussai/Zotero/storage/V9S34NMR/Zhao et al. - 2023 - Learning Fine-Grained Bimanual Manipulation with L.pdf;/home/mtoussai/Zotero/storage/PU3VWUBA/2304.html} +} + +@book{2024-bishop-DeepLearningFoundations, + title = {Deep {{Learning}}: {{Foundations}} and {{Concepts}}}, + shorttitle = {Deep {{Learning}}}, + author = {Bishop, Christopher M. and Bishop, Hugh}, + year = {2024}, + delete_delete_delete_publisher = {Springer International Publishing}, + location = {Cham}, + delete_delete_delete_doi = {10.1007/978-3-031-45468-4}, + url = {https://link.springer.com/10.1007/978-3-031-45468-4}, + urlyear = {2024}, + isbn = {978-3-031-45467-7 978-3-031-45468-4}, + langid = {english}, + keywords = {Convolutional networks,Decision theory,Deep learning,Directed graphical models,machine learning,Neural networks} +} + +@online{2024-chan-TutorialDiffusionModels, + title = {Tutorial on {{Diffusion Models}} for {{Imaging}} and {{Vision}}}, + author = {Chan, Stanley H.}, + year = {2024}, + eprint = {2403.18103}, + eprinttype = {arXiv}, + eprintclass = {cs}, + delete_delete_delete_doi = {10.48550/arXiv.2403.18103}, + url = {http://arxiv.org/abs/2403.18103}, + urlyear = {2024}, + abstract = {The astonishing growth of generative tools in recent years has empowered many exciting applications in text-to-image generation and text-to-video generation. The underlying principle behind these generative tools is the concept of diffusion, a particular sampling mechanism that has overcome some shortcomings that were deemed difficult in the previous approaches. The goal of this tutorial is to discuss the essential ideas underlying the diffusion models. The target audience of this tutorial includes undergraduate and graduate students who are interested in delete_delete_delete_doing research on diffusion models or applying these models to solve other problems.}, + pubstate = {prepublished}, + file = {/home/mtoussai/Zotero/storage/867UN8UR/Chan - 2024 - Tutorial on Diffusion Models for Imaging and Visio.pdf;/home/mtoussai/Zotero/storage/7UMDUQX2/2403.html} +} + +@article{2024-sontakke-RoboclipOneDemonstration, + title = {Roboclip: {{One}} Demonstration Is Enough to Learn Robot Policies}, + shorttitle = {Roboclip}, + author = {Sontakke, Sumedh and Zhang, Jesse and Arnold, Séb and Pertsch, Karl and Bıyık, Erdem and Sadigh, Dorsa and Finn, Chelsea and Itti, Laurent}, + year = {2024}, + journal = {Advances in Neural Information Processing Systems}, + volume = {36}, + url = {https://proceedings.neurips.cc/paper_files/paper/2023/hash/ae54ce310476218f26dd48c1626d5187-Abstract-Conference.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/FPNT9IG4/Sontakke et al. - 2024 - Roboclip One demonstration is enough to learn rob.pdf} +} diff --git a/RobotLearning/b3-ReinforcementLearning.bib b/RobotLearning/b3-ReinforcementLearning.bib new file mode 100644 index 0000000..14d4573 --- /dev/null +++ b/RobotLearning/b3-ReinforcementLearning.bib @@ -0,0 +1,444 @@ +@inproceedings{1999-ng-PolicyInvarianceReward, + title = {Policy Invariance under Reward Transformations: {{Theory}} and Application to Reward Shaping}, + shorttitle = {Policy Invariance under Reward Transformations}, + booktitle = {Icml}, + author = {Ng, Andrew Y. and Harada, Daishi and Russell, Stuart}, + year = {1999}, + volume = {99}, + pages = {278--287}, + url = {https://people.eecs.berkeley.edu/~pabbeel/cs287-fa09/readings/NgHaradaRussell-shaping-ICML1999.pdf}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/F323NFHJ/Ng et al. - 1999 - Policy invariance under reward transformations Th.pdf} +} + +@article{2002-brafman-RmaxaGeneralPolynomial, + title = {R-Max-a General Polynomial Time Algorithm for near-Optimal Reinforcement Learning}, + author = {Brafman, Ronen I. and Tennenholtz, Moshe}, + year = {2002}, + journal = {Journal of Machine Learning Research}, + volume = {3}, + pages = {213--231}, + url = {https://www.jmlr.org/papers/volume3/brafman02a/brafman02a.pdf?ref=https://githubhelp.com}, + urlyear = {2024}, + issue = {Oct}, + file = {/home/mtoussai/Zotero/storage/3VLQIT2M/Brafman and Tennenholtz - 2002 - R-max-a general polynomial time algorithm for near.pdf} +} + +@article{2002-kearns-NearoptimalReinforcementLearning, + title = {Near-Optimal Reinforcement Learning in Polynomial Time}, + author = {Kearns, Michael and Singh, Satinder}, + year = {2002}, + journal = {Machine Learning}, + volume = {49}, + number = {2/3}, + pages = {209--232}, + issn = {08856125}, + delete_delete_delete_doi = {10.1023/A:1017984413808}, + url = {http://link.springer.com/10.1023/A:1017984413808}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/JP3VWHYA/Kearns and Singh - 2002 - [No title found].pdf} +} + +@article{2003-lagoudakis-LeastsquaresPolicyIteration, + title = {Least-Squares Policy Iteration}, + author = {Lagoudakis, Michail G. and Parr, Ronald}, + year = {2003}, + journal = {The Journal of Machine Learning Research}, + volume = {4}, + pages = {1107--1149}, + delete_delete_delete_publisher = {JMLR. org}, + url = {https://www.jmlr.org/papers/volume4/temp/jmlr.4.6.zip}, + urlyear = {2024} +} + +@inproceedings{2009-kober-LearningMotorPrimitives, + title = {Learning Motor Primitives for Robotics}, + booktitle = {2009 {{IEEE International Conference}} on {{Robotics}} and {{Automation}}}, + author = {Kober, Jens and Peters, Jan}, + year = {2009}, + pages = {2112--2118}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/5152577/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/XQVRD7Q4/Kober and Peters - 2009 - Learning motor primitives for robotics.pdf} +} + +@article{2010-abbeel-AutonomousHelicopterAerobatics, + title = {Autonomous {{Helicopter Aerobatics}} through {{Apprenticeship Learning}}}, + author = {Abbeel, Pieter and Coates, Adam and Ng, Andrew Y.}, + year = {2010}, + journal = {The International Journal of Robotics Research}, + volume = {29}, + number = {13}, + pages = {1608--1639}, + delete_delete_delete_publisher = {SAGE Publications Ltd STM}, + issn = {0278-3649}, + delete_delete_delete_doi = {10.1177/0278364910371999}, + url = {https://delete_delete_delete_doi.org/10.1177/0278364910371999}, + urlyear = {2024}, + abstract = {Autonomous helicopter flight is widely regarded to be a highly challenging control problem. Despite this fact, human experts can reliably fly helicopters through a wide range of maneuvers, including aerobatic maneuvers at the edge of the helicopter’s capabilities. We present apprenticeship learning algorithms, which leverage expert demonstrations to efficiently learn good controllers for tasks being demonstrated by an expert. These apprenticeship learning algorithms have enabled us to significantly extend the state of the art in autonomous helicopter aerobatics. Our experimental results include the first autonomous execution of a wide range of maneuvers, including but not limited to in-place flips, in-place rolls, loops and hurricanes, and even auto-rotation landings, chaos and tic-tocs, which only exceptional human pilots can perform. Our results also include complete airshows, which require autonomous transitions between many of these maneuvers. Our controllers perform as well as, and often even better than, our expert pilot.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/5HZNU5CM/Abbeel et al. - 2010 - Autonomous Helicopter Aerobatics through Apprentic.pdf} +} + +@inproceedings{2010-maillard-FinitesampleAnalysisBellman, + title = {Finite-Sample Analysis of {{Bellman}} Residual Minimization}, + booktitle = {Proceedings of 2nd {{Asian Conference}} on {{Machine Learning}}}, + author = {Maillard, Odalric-Ambrym and Munos, Rémi and Lazaric, Alessandro and Ghavamzadeh, Mohammad}, + year = {2010}, + pages = {299--314}, + delete_delete_delete_publisher = {{JMLR Workshop and Conference Proceedings}}, + url = {http://proceedings.mlr.press/v13/maillard10a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/8N257LFZ/Maillard et al. - 2010 - Finite-sample analysis of Bellman residual minimiz.pdf} +} + +@inproceedings{2013-levine-GuidedPolicySearch, + title = {Guided Policy Search}, + booktitle = {International Conference on Machine Learning}, + author = {Levine, Sergey and Koltun, Vladlen}, + year = {2013}, + pages = {1--9}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v28/levine13.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/NRYNXVL2/Levine and Koltun - 2013 - Guided policy search.pdf} +} + +@inproceedings{2014-silver-DeterministicPolicyGradient, + title = {Deterministic Policy Gradient Algorithms}, + booktitle = {International Conference on Machine Learning}, + author = {Silver, David and Lever, Guy and Heess, Nicolas and Degris, Thomas and Wierstra, Daan and Riedmiller, Martin}, + year = {2014}, + pages = {387--395}, + delete_delete_delete_publisher = {Pmlr}, + url = {http://proceedings.mlr.press/v32/silver14.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/IYVSCM9I/Silver et al. - 2014 - Deterministic policy gradient algorithms.pdf} +} + +@inproceedings{2015-hausknecht-DeepRecurrentQlearning, + title = {Deep Recurrent Q-Learning for Partially Observable Mdps}, + booktitle = {2015 Aaai Fall Symposium Series}, + author = {Hausknecht, Matthew and Stone, Peter}, + year = {2015}, + url = {https://cdn.aaai.org/ocs/11673/11673-51288-1-PB.pdf}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/FVQWYNPS/Hausknecht and Stone - 2015 - Deep recurrent q-learning for partially observable.pdf} +} + +@article{2015-mnih-HumanlevelControlDeep, + title = {Human-Level Control through Deep Reinforcement Learning}, + author = {Mnih, Volodymyr and Kavukcuoglu, Koray and Silver, David and Rusu, Andrei A. and Veness, Joel and Bellemare, Marc G. and Graves, Alex and Riedmiller, Martin and Fidjeland, Andreas K. and Ostrovski, Georg}, + year = {2015}, + journal = {nature}, + volume = {518}, + number = {7540}, + pages = {529--533}, + delete_delete_delete_publisher = {Nature Publishing Group UK London}, + url = {https://www.nature.com/articles/nature14236}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/LE7I9KX2/nature14236.html} +} + +@article{2017-geist-BellmanResidualBad, + title = {Is the {{Bellman}} Residual a Bad Proxy?}, + author = {Geist, Matthieu and Piot, Bilal and Pietquin, Olivier}, + year = {2017}, + journal = {Advances in Neural Information Processing Systems}, + volume = {30}, + url = {https://proceedings.neurips.cc/paper/2017/hash/e0ab531ec312161511493b002f9be2ee-Abstract.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/94G45M84/Geist et al. - 2017 - Is the Bellman residual a bad proxy.pdf} +} + +@online{2017-salimans-EvolutionStrategiesScalable, + title = {Evolution {{Strategies}} as a {{Scalable Alternative}} to {{Reinforcement Learning}}}, + author = {Salimans, Tim and Ho, Jonathan and Chen, Xi and Sidor, Szymon and Sutskever, Ilya}, + year = {2017}, + eprint = {1703.03864}, + eprinttype = {arXiv}, + eprintclass = {cs, stat}, + url = {http://arxiv.org/abs/1703.03864}, + urlyear = {2024}, + abstract = {We explore the use of Evolution Strategies (ES), a class of black box optimization algorithms, as an alternative to popular MDP-based RL techniques such as Q-learning and Policy Gradients. Experiments on MuJoCo and Atari show that ES is a viable solution strategy that scales extremely well with the number of CPUs available: By using a novel communication strategy based on common random numbers, our ES implementation only needs to communicate scalars, making it possible to scale to over a thousand parallel workers. This allows us to solve 3D humanoid walking in 10 minutes and obtain competitive results on most Atari games after one hour of training. In addition, we highlight several advantages of ES as a black box optimization technique: it is invariant to action frequency and delayed rewards, tolerant of extremely long horizons, and does not need temporal discounting or value function approximation.}, + pubstate = {prepublished}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Machine Learning,Computer Science - Neural and Evolutionary Computing,Statistics - Machine Learning}, + file = {/home/mtoussai/Zotero/storage/4WKKNJ63/Salimans et al. - 2017 - Evolution Strategies as a Scalable Alternative to .pdf;/home/mtoussai/Zotero/storage/3TK9DIJI/1703.html} +} + +@inproceedings{2017-tobin-DomainRandomizationTransferring, + title = {Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World}, + booktitle = {2017 {{IEEE}}/{{RSJ}} International Conference on Intelligent Robots and Systems ({{IROS}})}, + author = {Tobin, Josh and Fong, Rachel and Ray, Alex and Schneider, Jonas and Zaremba, Wojciech and Abbeel, Pieter}, + year = {2017}, + pages = {23--30}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/8202133/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/S828W577/Tobin et al. - 2017 - Domain Randomization for Transferring Deep Neural .pdf} +} + +@inproceedings{2018-fujimoto-AddressingFunctionApproximation, + title = {Addressing Function Approximation Error in Actor-Critic Methods}, + booktitle = {International Conference on Machine Learning}, + author = {Fujimoto, Scott and Hoof, Herke and Meger, David}, + year = {2018}, + pages = {1587--1596}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v80/fujimoto18a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/IFMWMVEZ/Fujimoto et al. - 2018 - Addressing function approximation error in actor-c.pdf} +} + +@inproceedings{2018-haarnoja-SoftActorcriticOffpolicy, + title = {Soft Actor-Critic: {{Off-policy}} Maximum Entropy Deep Reinforcement Learning with a Stochastic Actor}, + shorttitle = {Soft Actor-Critic}, + booktitle = {International Conference on Machine Learning}, + author = {Haarnoja, Tuomas and Zhou, Aurick and Abbeel, Pieter and Levine, Sergey}, + year = {2018}, + pages = {1861--1870}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v80/haarnoja18b}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/5ZVTAITJ/Haarnoja et al. - 2018 - Soft actor-critic Off-policy maximum entropy deep.pdf} +} + +@inproceedings{2018-hessel-RainbowCombiningImprovements, + title = {Rainbow: {{Combining}} Improvements in Deep Reinforcement Learning}, + shorttitle = {Rainbow}, + booktitle = {Proceedings of the {{AAAI}} Conference on Artificial Intelligence}, + author = {Hessel, Matteo and Modayil, Joseph and Van Hasselt, Hado and Schaul, Tom and Ostrovski, Georg and Dabney, Will and Horgan, Dan and Piot, Bilal and Azar, Mohammad and Silver, David}, + year = {2018}, + volume = {32}, + number = {1}, + url = {https://ojs.aaai.org/index.php/AAAI/article/view/11796}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/QUBKXVWV/Hessel et al. - 2018 - Rainbow Combining improvements in deep reinforcem.pdf} +} + +@online{2018-plappert-ParameterSpaceNoise, + title = {Parameter {{Space Noise}} for {{Exploration}}}, + author = {Plappert, Matthias and Houthooft, Rein and Dhariwal, Prafulla and Sidor, Szymon and Chen, Richard Y. and Chen, Xi and Asfour, Tamim and Abbeel, Pieter and Andrychowicz, Marcin}, + year = {2018}, + eprint = {1706.01905}, + eprinttype = {arXiv}, + eprintclass = {cs, stat}, + url = {http://arxiv.org/abs/1706.01905}, + urlyear = {2024}, + abstract = {Deep reinforcement learning (RL) methods generally engage in exploratory behavior through noise injection in the action space. An alternative is to add noise directly to the agent's parameters, which can lead to more consistent exploration and a richer set of behaviors. Methods such as evolutionary strategies use parameter perturbations, but discard all temporal structure in the process and require significantly more samples. Combining parameter noise with traditional RL methods allows to combine the best of both worlds. We demonstrate that both off- and on-policy methods benefit from this approach through experimental comparison of DQN, DDPG, and TRPO on high-dimensional discrete action environments as well as continuous control tasks. Our results show that RL with parameter noise learns more efficiently than traditional RL with action space noise and evolutionary strategies individually.}, + pubstate = {prepublished}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Machine Learning,Computer Science - Neural and Evolutionary Computing,Computer Science - Robotics,Statistics - Machine Learning}, + file = {/home/mtoussai/Zotero/storage/3X3IFXHV/Plappert et al. - 2018 - Parameter Space Noise for Exploration.pdf;/home/mtoussai/Zotero/storage/U6MPXGBZ/1706.html} +} + +@online{2018-such-DeepNeuroevolutionGenetic, + title = {Deep {{Neuroevolution}}: {{Genetic Algorithms Are}} a {{Competitive Alternative}} for {{Training Deep Neural Networks}} for {{Reinforcement Learning}}}, + shorttitle = {Deep {{Neuroevolution}}}, + author = {Such, Felipe Petroski and Madhavan, Vashisht and Conti, Edoardo and Lehman, Joel and Stanley, Kenneth O. and Clune, Jeff}, + year = {2018}, + eprint = {1712.06567}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/1712.06567}, + urlyear = {2024}, + abstract = {Deep artificial neural networks (DNNs) are typically trained via gradient-based learning algorithms, namely backpropagation. Evolution strategies (ES) can rival backprop-based algorithms such as Q-learning and policy gradients on challenging deep reinforcement learning (RL) problems. However, ES can be considered a gradient-based algorithm because it performs stochastic gradient descent via an operation similar to a finite-difference approximation of the gradient. That raises the question of whether non-gradient-based evolutionary algorithms can work at DNN scales. Here we demonstrate they can: we evolve the weights of a DNN with a simple, gradient-free, population-based genetic algorithm (GA) and it performs well on hard deep RL problems, including Atari and humanoid locomotion. The Deep GA successfully evolves networks with over four million free parameters, the largest neural networks ever evolved with a traditional evolutionary algorithm. These results (1) expand our sense of the scale at which GAs can operate, (2) suggest intriguingly that in some cases following the gradient is not the best choice for optimizing performance, and (3) make immediately available the multitude of neuroevolution techniques that improve performance. We demonstrate the latter by showing that combining DNNs with novelty search, which encourages exploration on tasks with deceptive or sparse reward functions, can solve a high-dimensional problem on which reward-maximizing algorithms (e.g.\textbackslash{} DQN, A3C, ES, and the GA) fail. Additionally, the Deep GA is faster than ES, A3C, and DQN (it can train Atari in \$\{\textbackslash raise.17ex\textbackslash hbox\{\$\textbackslash scriptstyle\textbackslash sim\$\}\}\$4 hours on one desktop or \$\{\textbackslash raise.17ex\textbackslash hbox\{\$\textbackslash scriptstyle\textbackslash sim\$\}\}\$1 hour distributed on 720 cores), and enables a state-of-the-art, up to 10,000-fold compact encoding technique.}, + pubstate = {prepublished}, + keywords = {Computer Science - Machine Learning,Computer Science - Neural and Evolutionary Computing}, + file = {/home/mtoussai/Zotero/storage/UPTQ8JRE/Such et al. - 2018 - Deep Neuroevolution Genetic Algorithms Are a Comp.pdf;/home/mtoussai/Zotero/storage/HRLK94NF/1712.html} +} + +@inproceedings{2019-fujimoto-OffpolicyDeepReinforcement, + title = {Off-Policy Deep Reinforcement Learning without Exploration}, + booktitle = {International Conference on Machine Learning}, + author = {Fujimoto, Scott and Meger, David and Precup, Doina}, + year = {2019}, + pages = {2052--2062}, + delete_delete_delete_publisher = {PMLR}, + url = {http://proceedings.mlr.press/v97/fujimoto19a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/23BZB8Q4/Fujimoto et al. - 2019 - Off-policy deep reinforcement learning without exp.pdf} +} + +@online{2019-lillicrap-ContinuousControlDeep, + title = {Continuous Control with Deep Reinforcement Learning}, + author = {Lillicrap, Timothy P. and Hunt, Jonathan J. and Pritzel, Alexander and Heess, Nicolas and Erez, Tom and Tassa, Yuval and Silver, David and Wierstra, Daan}, + year = {2019}, + eprint = {1509.02971}, + eprinttype = {arXiv}, + eprintclass = {cs, stat}, + url = {http://arxiv.org/abs/1509.02971}, + urlyear = {2024}, + abstract = {We adapt the ideas underlying the success of Deep Q-Learning to the continuous action domain. We present an actor-critic, model-free algorithm based on the deterministic policy gradient that can operate over continuous action spaces. Using the same learning algorithm, network architecture and hyper-parameters, our algorithm robustly solves more than 20 simulated physics tasks, including classic problems such as cartpole swing-up, dexterous manipulation, legged locomotion and car driving. Our algorithm is able to find policies whose performance is competitive with those found by a planning algorithm with full access to the dynamics of the domain and its derivatives. We further demonstrate that for many of the tasks the algorithm can learn policies end-to-end: directly from raw pixel inputs.}, + pubstate = {prepublished}, + keywords = {Computer Science - Machine Learning,Statistics - Machine Learning}, + file = {/home/mtoussai/Zotero/storage/RKIY228X/Lillicrap et al. - 2019 - Continuous control with deep reinforcement learnin.pdf;/home/mtoussai/Zotero/storage/LS3EXCL8/1509.html} +} + +@inproceedings{2019-molchanov-SimtoMultiReal, + title = {Sim-to-({{Multi}})-{{Real}}: {{Transfer}} of {{Low-Level Robust Control Policies}} to {{Multiple Quadrotors}}}, + shorttitle = {Sim-to-({{Multi}})-{{Real}}}, + booktitle = {2019 {{IEEE}}/{{RSJ International Conference}} on {{Intelligent Robots}} and {{Systems}} ({{IROS}})}, + author = {Molchanov, Artem and Chen, Tao and Hönig, Wolfgang and Preiss, James A. and Ayanian, Nora and Sukhatme, Gaurav S.}, + year = {2019}, + pages = {59--66}, + issn = {2153-0866}, + delete_delete_delete_doi = {10.1109/IROS40897.2019.8967695}, + url = {https://ieeexplore.ieee.org/document/8967695}, + urlyear = {2024}, + abstract = {Quadrotor stabilizing controllers often require careful, model-specific tuning for safe operation. We use reinforcement learning to train policies in simulation that transfer remarkably well to multiple different physical quadrotors. Our policies are low-level, i.e., we map the rotorcrafts' state directly to the motor outputs. The trained control policies are very robust to external disturbances and can withstand harsh initial conditions such as throws. We show how different training methodologies (change of the cost function, modeling of noise, use of domain randomization) might affect flight performance. To the best of our knowledge, this is the first work that demonstrates that a simple neural network can learn a robust stabilizing low-level quadrotor controller (without the use of a stabilizing PD controller) that is shown to generalize to multiple quadrotors. The video of our experiments can be found at https://sites.google.com/view/sim-to-multi-quad.}, + booktitle = {2019 {{IEEE}}/{{RSJ International Conference}} on {{Intelligent Robots}} and {{Systems}} ({{IROS}})}, + file = {/home/mtoussai/Zotero/storage/NZIGZUEJ/Molchanov et al. - 2019 - Sim-to-(Multi)-Real Transfer of Low-Level Robust .pdf;/home/mtoussai/Zotero/storage/8XWXZX8F/8967695.html} +} + +@inproceedings{2019-saleh-DeterministicBellmanResidual, + title = {Deterministic Bellman Residual Minimization}, + booktitle = {Proceedings of {{Optimization Foundations}} for {{Reinforcement Learning Workshop}} at {{NeurIPS}}}, + author = {Saleh, Ehsan and Jiang, Nan}, + year = {2019}, + url = {https://optrl2019.github.io/assets/accepted_papers/8.pdf}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/6GHDUL4Q/Saleh and Jiang - 2019 - Deterministic bellman residual minimization.pdf} +} + +@inproceedings{2020-chen-LearningCheating, + title = {Learning by Cheating}, + booktitle = {Conference on {{Robot Learning}}}, + author = {Chen, Dian and Zhou, Brady and Koltun, Vladlen and Krähenbühl, Philipp}, + year = {2020}, + pages = {66--75}, + delete_delete_delete_publisher = {PMLR}, + url = {http://proceedings.mlr.press/v100/chen20a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/5YI4TLHU/Chen et al. - 2020 - Learning by cheating.pdf} +} + +@online{2020-hafner-DreamControlLearning, + title = {Dream to {{Control}}: {{Learning Behaviors}} by {{Latent Imagination}}}, + shorttitle = {Dream to {{Control}}}, + author = {Hafner, Danijar and Lillicrap, Timothy and Ba, Jimmy and Norouzi, Mohammad}, + year = {2020}, + eprint = {1912.01603}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/1912.01603}, + urlyear = {2024}, + abstract = {Learned world models summarize an agent’s experience to facilitate learning complex behaviors. While learning world models from high-dimensional sensory inputs is becoming feasible through deep learning, there are many potential ways for deriving behaviors from them. We present Dreamer, a reinforcement learning agent that solves long-horizon tasks from images purely by latent imagination. We efficiently learn behaviors by propagating analytic gradients of learned state values back through trajectories imagined in the compact state space of a learned world model. On 20 challenging visual control tasks, Dreamer exceeds existing approaches in data-efficiency, computation time, and final performance.}, + langid = {english}, + pubstate = {prepublished}, + file = {/home/mtoussai/Zotero/storage/TQ976CLY/Hafner et al. - 2020 - Dream to Control Learning Behaviors by Latent Ima.pdf} +} + +@article{2020-lee-LearningQuadrupedalLocomotion, + title = {Learning Quadrupedal Locomotion over Challenging Terrain}, + author = {Lee, Joonho and Hwangbo, Jemin and Wellhausen, Lorenz and Koltun, Vladlen and Hutter, Marco}, + year = {2020}, + journal = {Science Robotics}, + shortjournal = {Sci. Robot.}, + volume = {5}, + number = {47}, + pages = {eabc5986}, + issn = {2470-9476}, + delete_delete_delete_doi = {10.1126/scirobotics.abc5986}, + url = {https://www.research-collection.ethz.ch/bitstream/handle/20.500.11850/448343/1/2020_science_robotics_lee_locomotion.pdf}, + urlyear = {2024}, + abstract = {A learning-based locomotion controller enables a quadrupedal ANYmal robot to traverse challenging natural environments. , Legged locomotion can extend the operational domain of robots to some of the most challenging environments on Earth. However, conventional controllers for legged locomotion are based on elaborate state machines that explicitly trigger the execution of motion primitives and reflexes. These designs have increased in complexity but fallen short of the generality and robustness of animal locomotion. Here, we present a robust controller for blind quadrupedal locomotion in challenging natural environments. Our approach incorporates proprioceptive feedback in locomotion control and demonstrates zero-shot generalization from simulation to natural environments. The controller is trained by reinforcement learning in simulation. The controller is driven by a neural network policy that acts on a stream of proprioceptive signals. The controller retains its robustness under conditions that were never encountered during training: deformable terrains such as mud and snow, dynamic footholds such as rubble, and overground impediments such as thick vegetation and gushing water. The presented work indicates that robust locomotion in natural environments can be achieved by training in simple domains.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/CHNMBD8E/Lee et al. - 2020 - Learning quadrupedal locomotion over challenging t.pdf} +} + +@article{2021-fujimoto-MinimalistApproachOffline, + title = {A Minimalist Approach to Offline Reinforcement Learning}, + author = {Fujimoto, Scott and Gu, Shixiang Shane}, + year = {2021}, + journal = {Advances in neural information processing systems}, + volume = {34}, + pages = {20132--20145}, + url = {https://proceedings.neurips.cc/paper_files/paper/2021/hash/a8166da05c5a094f7dc03724b41886e5-Abstract.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/QDTQ3RMA/Fujimoto and Gu - 2021 - A minimalist approach to offline reinforcement lea.pdf} +} + +@unpublished{2021-pertsch-DemonstrationGuidedReinforcementLearning, + title = {Demonstration-{{Guided}} Reinforcement Learning with Learned Skills}, + author = {Pertsch, Karl and Lee, Youngwoon and Wu, Yue and Lim, Joseph J.}, + year = {2021}, + eprint = {2107.10253}, + eprinttype = {arXiv} +} + +@inproceedings{2022-eberhard-PinkNoiseAll, + title = {Pink Noise Is All You Need: {{Colored}} Noise Exploration in Deep Reinforcement Learning}, + shorttitle = {Pink Noise Is All You Need}, + booktitle = {The {{Eleventh International Conference}} on {{Learning Representations}}}, + author = {Eberhard, Onno and Hollenstein, Jakob and Pinneri, Cristina and Martius, Georg}, + year = {2022}, + url = {https://openreview.net/forum?id=hQ9V5QN27eS}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/AGNT8JKJ/Eberhard et al. - 2022 - Pink noise is all you need Colored noise explorat.pdf} +} + +@inproceedings{2022-sinha-S4rlSurprisinglySimple, + title = {S4rl: {{Surprisingly}} Simple Self-Supervision for Offline Reinforcement Learning in Robotics}, + shorttitle = {S4rl}, + booktitle = {Conference on {{Robot Learning}}}, + author = {Sinha, Samarth and Mandlekar, Ajay and Garg, Animesh}, + year = {2022}, + pages = {907--917}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v164/sinha22a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/LFS2KERX/Sinha et al. - 2022 - S4rl Surprisingly simple self-supervision for off.pdf} +} + +@article{2022-wurman-OutracingChampionGran, + title = {Outracing Champion {{Gran Turismo}} Drivers with Deep Reinforcement Learning}, + author = {Wurman, Peter R. and Barrett, Samuel and Kawamoto, Kenta and MacGlashan, James and Subramanian, Kaushik and Walsh, Thomas J. and Capobianco, Roberto and Devlic, Alisa and Eckert, Franziska and Fuchs, Florian and Gilpin, Leilani and Khandelwal, Piyush and Kompella, Varun and Lin, HaoChih and MacAlpine, Patrick and Oller, Declan and Seno, Takuma and Sherstan, Craig and Thomure, Michael D. and Aghabozorgi, Houmehr and Barrett, Leon and Douglas, Rory and Whitehead, Dion and Dürr, Peter and Stone, Peter and Spranger, Michael and Kitano, Hiroaki}, + year = {2022}, + journal = {Nature}, + volume = {602}, + number = {7896}, + pages = {223--228}, + delete_delete_delete_publisher = {Nature Publishing Group}, + issn = {1476-4687}, + delete_delete_delete_doi = {10.1038/s41586-021-04357-7}, + url = {https://www.nature.com/articles/s41586-021-04357-7}, + urlyear = {2024}, + abstract = {Many potential applications of artificial intelligence involve making real-time decisions in physical systems while interacting with humans. Automobile racing represents an extreme example of these conditions; drivers must execute complex tactical manoeuvres to pass or block opponents while operating their vehicles at their traction limits1. Racing simulations, such as the PlayStation game Gran Turismo, faithfully reproduce the non-linear control challenges of real race cars while also encapsulating the complex multi-agent interactions. Here we describe how we trained agents for Gran Turismo that can compete with the world’s best e-sports drivers. We combine state-of-the-art, model-free, deep reinforcement learning algorithms with mixed-scenario training to learn an integrated control policy that combines exceptional speed with impressive tactics. In addition, we construct a reward function that enables the agent to be competitive while adhering to racing’s important, but under-specified, sportsmanship rules. We demonstrate the capabilities of our agent, Gran Turismo Sophy, by winning a head-to-head competition against four of the world’s best Gran Turismo drivers. By describing how we trained championship-level racers, we demonstrate the possibilities and challenges of using these techniques to control complex dynamical systems in domains where agents must respect imprecisely defined human norms.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/Q585Q8CZ/Wurman et al. - 2022 - Outracing champion Gran Turismo drivers with deep .pdf} +} + +@article{2023-kaufmann-ChampionlevelDroneRacing, + title = {Champion-Level Drone Racing Using Deep Reinforcement Learning}, + author = {Kaufmann, Elia and Bauersfeld, Leonard and Loquercio, Antonio and Müller, Matthias and Koltun, Vladlen and Scaramuzza, Davide}, + year = {2023}, + journal = {Nature}, + volume = {620}, + number = {7976}, + pages = {982--987}, + delete_delete_delete_publisher = {Nature Publishing Group}, + issn = {1476-4687}, + delete_delete_delete_doi = {10.1038/s41586-023-06419-4}, + url = {https://www.nature.com/articles/s41586-023-06419-4}, + urlyear = {2024}, + abstract = {First-person view (FPV) drone racing is a televised sport in which professional competitors pilot high-speed aircraft through a 3D circuit. Each pilot sees the environment from the perspective of their drone by means of video streamed from an onboard camera. Reaching the level of professional pilots with an autonomous drone is challenging because the robot needs to fly at its physical limits while estimating its speed and location in the circuit exclusively from onboard sensors1. Here we introduce Swift, an autonomous system that can race physical vehicles at the level of the human world champions. The system combines deep reinforcement learning (RL) in simulation with data collected in the physical world. Swift competed against three human champions, including the world champions of two international leagues, in real-world head-to-head races. Swift won several races against each of the human champions and demonstrated the fastest recorded race time. This work represents a milestone for mobile robotics and machine intelligence2, which may inspire the deployment of hybrid learning-based solutions in other physical systems.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/XS2XHDPM/Kaufmann et al. - 2023 - Champion-level drone racing using deep reinforceme.pdf} +} + +@online{2023-kumar-PreTrainingRobotsOffline, + title = {Pre-{{Training}} for {{Robots}}: {{Offline RL Enables Learning New Tasks}} from a {{Handful}} of {{Trials}}}, + shorttitle = {Pre-{{Training}} for {{Robots}}}, + author = {Kumar, Aviral and Singh, Anikait and Ebert, Frederik and Nakamoto, Mitsuhiko and Yang, Yanlai and Finn, Chelsea and Levine, Sergey}, + year = {2023}, + eprint = {2210.05178}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2210.05178}, + urlyear = {2024}, + abstract = {Progress in deep learning highlights the tremendous potential of utilizing diverse robotic datasets for attaining effective generalization and makes it enticing to consider leveraging broad datasets for attaining robust generalization in robotic learning as well. However, in practice, we often want to learn a new skill in a new environment that is unlikely to be contained in the prior data. Therefore we ask: how can we leverage existing diverse offline datasets in combination with small amounts of task-specific data to solve new tasks, while still enjoying the generalization benefits of training on large amounts of data? In this paper, we demonstrate that end-to-end offline RL can be an effective approach for delete_delete_delete_doing this, without the need for any representation learning or vision-based pre-training. We present pre-training for robots (PTR), a framework based on offline RL that attempts to effectively learn new tasks by combining pre-training on existing robotic datasets with rapid fine-tuning on a new task, with as few as 10 demonstrations. PTR utilizes an existing offline RL method, conservative Q-learning (CQL), but extends it to include several crucial design decisions that enable PTR to actually work and outperform a variety of prior methods. To our knowledge, PTR is the first RL method that succeeds at learning new tasks in a new domain on a real WidowX robot with as few as 10 task demonstrations, by effectively leveraging an existing dataset of diverse multi-task robot data collected in a variety of toy kitchens. We also demonstrate that PTR can enable effective autonomous fine-tuning and improvement in a handful of trials, without needing any demonstrations. An accompanying overview video can be found in the supplementary material and at thi URL: https://sites.google.com/view/ptr-final/}, + pubstate = {prepublished}, + keywords = {Computer Science - Machine Learning,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/UTZWNQLZ/Kumar et al. - 2023 - Pre-Training for Robots Offline RL Enables Learni.pdf;/home/mtoussai/Zotero/storage/BT7HGIB2/2210.html} +} diff --git a/RobotLearning/b4-InverseRL.bib b/RobotLearning/b4-InverseRL.bib new file mode 100644 index 0000000..ccdb948 --- /dev/null +++ b/RobotLearning/b4-InverseRL.bib @@ -0,0 +1,230 @@ + +@inproceedings{2016-finn-GuidedCostLearning, + title = {Guided Cost Learning: Deep Inverse Optimal Control via Policy Optimization}, + url = {https://proceedings.mlr.press/v48/finn16.html}, + shorttitle = {Guided Cost Learning}, + abstract = {Reinforcement learning can acquire complex behaviors from high-level specifications. However, defining a cost function that can be optimized effectively and encodes the correct task is challenging in practice. We explore how inverse optimal control ({IOC}) can be used to learn behaviors from demonstrations, with applications to torque control of high-dimensional robotic systems. Our method addresses two key challenges in inverse optimal control: first, the need for informative features and effective regularization to impose structure on the cost, and second, the difficulty of learning the cost function under unknown dynamics for high-dimensional continuous systems. To address the former challenge, we present an algorithm capable of learning arbitrary nonlinear cost functions, such as neural networks, without meticulous feature engineering. To address the latter challenge, we formulate an efficient sample-based approximation for {MaxEnt} {IOC}. We evaluate our method on a series of simulated tasks and real-world robotic manipulation problems, demonstrating substantial improvement over prior methods both in terms of task complexity and sample efficiency.}, + booktitle = {International Conference on Machine Learning}, + pages = {49--58}, + booktitle = {Proceedings of The 33rd International Conference on Machine Learning}, + delete_delete_delete_publisher = {{PMLR}}, + author = {Finn, Chelsea and Levine, Sergey and Abbeel, Pieter}, + urlyear = {2024}, + year = {2016}, + langid = {english}, + delete_delete_delete_note = {{ISSN}: 1938-7228}, + file = {Full Text PDF:/home/mtoussai/Zotero/storage/6VR8EWJU/Finn et al. - 2016 - Guided Cost Learning Deep Inverse Optimal Control.pdf:application/pdf}, +} + +@article{-ziebart-MaximumEntropyInverse, + title = {Maximum Entropy Inverse Reinforcement Learning}, + abstract = {Recent research has shown the benefit of framing problems of imitation learning as solutions to Markov Decision Problems. This approach reduces learning to the problem of recovering a utility function that makes the behavior induced by a near-optimal policy closely mimic demonstrated behavior. In this work, we develop a probabilistic approach based on the principle of maximum entropy. Our approach provides a well-defined, globally normalized distribution over decision sequences, while providing the same performance guarantees as existing methods.}, + author = {Ziebart, Brian D and Maas, Andrew and Bagnell, J Andrew and Dey, Anind K}, + langid = {english}, + file = {Ziebart et al. - Maximum Entropy Inverse Reinforcement Learning.pdf:/home/mtoussai/Zotero/storage/7U4XSJJA/Ziebart et al. - Maximum Entropy Inverse Reinforcement Learning.pdf:application/pdf}, +} + +@inproceedings{2008-syed-ApprenticeshipLearningUsing, + location = {New York, {NY}, {USA}}, + title = {Apprenticeship learning using linear programming}, + isbn = {978-1-60558-205-4}, + url = {https://dl.acm.org/delete_delete_delete_doi/10.1145/1390156.1390286}, + delete_delete_delete_doi = {10.1145/1390156.1390286}, + series = {{ICML} '08}, + abstract = {In apprenticeship learning, the goal is to learn a policy in a Markov decision process that is at least as good as a policy demonstrated by an expert. The difficulty arises in that the {MDP}'s true reward function is assumed to be unknown. We show how to frame apprenticeship learning as a linear programming problem, and show that using an off-the-shelf {LP} solver to solve this problem results in a substantial improvement in running time over existing methods---up to two orders of magnitude faster in our experiments. Additionally, our approach produces stationary policies, while all existing methods for apprenticeship learning output policies that are "mixed", i.e. randomized combinations of stationary policies. The technique used is general enough to convert any mixed policy to a stationary policy.}, + pages = {1032--1039}, + booktitle = {Proceedings of the 25th international conference on Machine learning}, + delete_delete_delete_publisher = {Association for Computing Machinery}, + author = {Syed, Umar and Bowling, Michael and Schapire, Robert E.}, + urlyear = {2024}, + year = {2008}, + file = {Full Text PDF:/home/mtoussai/Zotero/storage/SZ57AQUU/Syed et al. - 2008 - Apprenticeship learning using linear programming.pdf:application/pdf}, +} + +@inproceedings{2010-syed-ReductionApprenticeshipLearning, + title = {A Reduction from Apprenticeship Learning to Classification}, + volume = {23}, + url = {https://proceedings.neurips.cc/paper/2010/hash/5c572eca050594c7bc3c36e7e8ab9550-Abstract.html}, + booktitle = {Advances in Neural Information Processing Systems}, + delete_delete_delete_publisher = {Curran Associates, Inc.}, + author = {Syed, Umar and Schapire, Robert E}, + urlyear = {2024}, + year = {2010}, + file = {Full Text PDF:/home/mtoussai/Zotero/storage/FNZFLSMB/Syed and Schapire - 2010 - A Reduction from Apprenticeship Learning to Classi.pdf:application/pdf}, +} + +@inproceedings{2004-abbeel-ApprenticeshipLearningInversea, + location = {Banff, Alberta, Canada}, + title = {Apprenticeship learning via inverse reinforcement learning}, + url = {http://portal.acm.org/citation.cfm?delete_delete_delete_doid=1015330.1015430}, + delete_delete_delete_doi = {10.1145/1015330.1015430}, + booktitle = {Twenty-first international conference}, + pages = {1}, + booktitle = {Twenty-first international conference on Machine learning - {ICML} '04}, + delete_delete_delete_publisher = {{ACM} Press}, + author = {Abbeel, Pieter and Ng, Andrew Y.}, + urlyear = {2024}, + year = {2004}, + langid = {english}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/BXTLIE5H/Abbeel and Ng - 2004 - Apprenticeship learning via inverse reinforcement .pdf:application/pdf}, +} + +@inproceedings{2000-ng-AlgorithmsInverseReinforcement, + title = {Algorithms for inverse reinforcement learning.}, + volume = {1}, + url = {http://www.datascienceassn.org/sites/default/files/Algorithms%20for%20Inverse%20Reinforcement%20Learning.pdf}, + pages = {2}, + booktitle = {Icml}, + author = {Ng, Andrew Y. and Russell, Stuart}, + urlyear = {2024}, + year = {2000}, + delete_delete_delete_note = {Issue: 2}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/ZYFBIX2T/Ng and Russell - 2000 - Algorithms for inverse reinforcement learning..pdf:application/pdf}, +} + +@misc{2018-fu-LearningRobustRewards, + title = {Learning Robust Rewards with Adversarial Inverse Reinforcement Learning}, + url = {http://arxiv.org/abs/1710.11248}, + abstract = {Reinforcement learning provides a powerful and general framework for decision making and control, but its application in practice is often hindered by the need for extensive feature and reward engineering. Deep reinforcement learning methods can remove the need for explicit engineering of policy or value features, but still require a manually specified reward function. Inverse reinforcement learning holds the promise of automatic reward acquisition, but has proven exceptionally difficult to apply to large, high-dimensional problems with unknown dynamics. In this work, we propose adverserial inverse reinforcement learning ({AIRL}), a practical and scalable inverse reinforcement learning algorithm based on an adversarial reward learning formulation. We demonstrate that {AIRL} is able to recover reward functions that are robust to changes in dynamics, enabling us to learn policies even under significant variation in the environment seen during training. Our experiments show that {AIRL} greatly outperforms prior methods in these transfer settings.}, + number = {{arXiv}:1710.11248}, + delete_delete_delete_publisher = {{arXiv}}, + author = {Fu, Justin and Luo, Katie and Levine, Sergey}, + urlyear = {2024}, + year = {2018}, + eprinttype = {arxiv}, + eprint = {1710.11248 [cs]}, + keywords = {Computer Science - Machine Learning}, + file = {arXiv Fulltext PDF:/home/mtoussai/Zotero/storage/HKYR55CI/Fu et al. - 2018 - Learning Robust Rewards with Adversarial Inverse R.pdf:application/pdf;arXiv.org Snapshot:/home/mtoussai/Zotero/storage/I53R7JDH/1710.html:text/html}, +} + +@misc{2018-tucker-InverseReinforcementLearning, + title = {Inverse reinforcement learning for video games}, + url = {http://arxiv.org/abs/1810.10593}, + abstract = {Deep reinforcement learning achieves superhuman performance in a range of video game environments, but requires that a designer manually specify a reward function. It is often easier to provide demonstrations of a target behavior than to design a reward function describing that behavior. Inverse reinforcement learning ({IRL}) algorithms can infer a reward from demonstrations in low-dimensional continuous control environments, but there has been little work on applying {IRL} to high-dimensional video games. In our {CNN}-{AIRL} baseline, we modify the state-of-the-art adversarial {IRL} ({AIRL}) algorithm to use {CNNs} for the generator and discriminator. To stabilize training, we normalize the reward and increase the size of the discriminator training dataset. We additionally learn a low-dimensional state representation using a novel autoencoder architecture tuned for video game environments. This embedding is used as input to the reward network, improving the sample efficiency of expert demonstrations. Our method achieves high-level performance on the simple Catcher video game, substantially outperforming the {CNN}-{AIRL} baseline. We also score points on the Enduro Atari racing game, but do not match expert performance, highlighting the need for further work.}, + number = {{arXiv}:1810.10593}, + delete_delete_delete_publisher = {{arXiv}}, + author = {Tucker, Aaron and Gleave, Adam and Russell, Stuart}, + urlyear = {2024}, + year = {2018}, + eprinttype = {arxiv}, + eprint = {1810.10593 [cs, stat]}, + keywords = {Computer Science - Artificial Intelligence, Computer Science - Machine Learning, Statistics - Machine Learning, I.2.6}, + file = {arXiv Fulltext PDF:/home/mtoussai/Zotero/storage/JRC78XNN/Tucker et al. - 2018 - Inverse reinforcement learning for video games.pdf:application/pdf;arXiv.org Snapshot:/home/mtoussai/Zotero/storage/PRNKIIHB/1810.html:text/html}, +} + +@incollection{2011-akrour-PreferenceBasedPolicyLearning, + location = {Berlin, Heidelberg}, + title = {Preference-Based Policy Learning}, + volume = {6911}, + isbn = {978-3-642-23779-9 978-3-642-23780-5}, + url = {https://link.springer.com/10.1007/978-3-642-23780-5_11}, + pages = {12--27}, + booktitle = {Machine Learning and Knowledge Discovery in Databases}, + delete_delete_delete_publisher = {Springer Berlin Heidelberg}, + author = {Akrour, Riad and Schoenauer, Marc and Sebag, Michele}, + editor = {Gunopulos, Dimitrios and Hofmann, Thomas and Malerba, Donato and Vazirgiannis, Michalis}, + urlyear = {2024}, + year = {2011}, + langid = {english}, + delete_delete_delete_doi = {10.1007/978-3-642-23780-5_11}, + delete_delete_delete_note = {Series Title: Lecture Notes in Computer Science}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/AFUYMRFP/Akrour et al. - 2011 - Preference-Based Policy Learning.pdf:application/pdf}, +} + +@book{2017-sadigh-ActivePreferencebasedLearning, + title = {Active preference-based learning of reward functions}, + url = {https://escholarship.org/uc/item/88k894w7}, + author = {Sadigh, Dorsa and Dragan, Anca D. and Sastry, Shankar and Seshia, Sanjit A.}, + urlyear = {2024}, + year = {2017}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/4JPD4W4C/Sadigh et al. - 2017 - Active preference-based learning of reward functio.pdf:application/pdf}, +} + +@article{2024-hejna-InversePreferenceLearning, + title = {Inverse preference learning: Preference-based rl without a reward function}, + volume = {36}, + url = {https://proceedings.neurips.cc/paper_files/paper/2023/hash/3be7859b36d9440372cae0a293f2e4cc-Abstract-Conference.html}, + shorttitle = {Inverse preference learning}, + journal = {Advances in Neural Information Processing Systems}, + author = {Hejna, Joey and Sadigh, Dorsa}, + urlyear = {2024}, + year = {2024}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/SZB6KT8R/Hejna and Sadigh - 2024 - Inverse preference learning Preference-based rl w.pdf:application/pdf}, +} + +@incollection{2012-akrour-APRILActivePreference, + location = {Berlin, Heidelberg}, + title = {{APRIL}: Active Preference Learning-Based Reinforcement Learning}, + volume = {7524}, + isbn = {978-3-642-33485-6 978-3-642-33486-3}, + url = {http://link.springer.com/10.1007/978-3-642-33486-3_8}, + shorttitle = {{APRIL}}, + pages = {116--131}, + booktitle = {Machine Learning and Knowledge Discovery in Databases}, + delete_delete_delete_publisher = {Springer Berlin Heidelberg}, + author = {Akrour, Riad and Schoenauer, Marc and Sebag, Michèle}, + editor = {Flach, Peter A. and De Bie, Tijl and Cristianini, Nello}, + editorb = {Hutchison, David and Kanade, Takeo and Kittler, Josef and Kleinberg, Jon M. and Mattern, Friedemann and Mitchell, John C. and Naor, Moni and Nierstrasz, Oscar and Pandu Rangan, C. and Steffen, Bernhard and Sudan, Madhu and Terzopoulos, Demetri and Tygar, Doug and Vardi, Moshe Y. and Weikum, Gerhard}, + editorbtype = {redactor}, + urlyear = {2024}, + year = {2012}, + delete_delete_delete_doi = {10.1007/978-3-642-33486-3_8}, + delete_delete_delete_note = {Series Title: Lecture Notes in Computer Science}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/RMLZDAQK/Akrour et al. - 2012 - APRIL Active Preference Learning-Based Reinforcem.pdf:application/pdf}, +} + +@article{2016-hadfield-menell-CooperativeInverseReinforcement, + title = {Cooperative inverse reinforcement learning}, + volume = {29}, + url = {https://proceedings.neurips.cc/paper_files/paper/2016/hash/c3395dd46c34fa7fd8d729d8cf88b7a8-Abstract.html}, + journal = {Advances in neural information processing systems}, + author = {Hadfield-Menell, Dylan and Russell, Stuart J. and Abbeel, Pieter and Dragan, Anca}, + urlyear = {2024}, + year = {2016}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/5JBMV9WZ/Hadfield-Menell et al. - 2016 - Cooperative inverse reinforcement learning.pdf:application/pdf}, +} + +@article{2017-christiano-DeepReinforcementLearning, + title = {Deep reinforcement learning from human preferences}, + volume = {30}, + url = {https://proceedings.neurips.cc/paper/7017-deep-reinforcement-learning-from-}, + journal = {Advances in neural information processing systems}, + author = {Christiano, Paul F. and Leike, Jan and Brown, Tom and Martic, Miljan and Legg, Shane and Amodei, Dario}, + urlyear = {2024}, + year = {2017}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/8Y6K28I3/Christiano et al. - 2017 - Deep reinforcement learning from human preferences.pdf:application/pdf}, +} + +@book{2019-russell-HumanCompatibleAI, + title = {Human compatible: {AI} and the problem of control}, + url = {https://books.google.com/books?hl=en&lr=&id=Gg-TDwAAQBAJ&oi=fnd&pg=PT8&dq=human+compatible+russell&ots=qoZKXK7gQ0&sig=p4x57HjxfMAVCpQ4O_XcE7J4ECY}, + shorttitle = {Human compatible}, + delete_delete_delete_publisher = {Penguin Uk}, + author = {Russell, Stuart}, + urlyear = {2024}, + year = {2019}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/G4NPFVKQ/Russell - 2019 - Human compatible AI and the problem of control.pdf:application/pdf}, +} + +@article{2014-goodfellow-GenerativeAdversarialNets, + title = {Generative adversarial nets}, + volume = {27}, + url = {https://proceedings.neurips.cc/paper/5423-generative-adversarial-nets}, + journal = {Advances in neural information processing systems}, + author = {Goodfellow, Ian and Pouget-Abadie, Jean and Mirza, Mehdi and Xu, Bing and Warde-Farley, David and Ozair, Sherjil and Courville, Aaron and Bengio, Yoshua}, + urlyear = {2024}, + year = {2014}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/3SDGHWF6/Goodfellow et al. - 2014 - Generative adversarial nets.pdf:application/pdf}, +} + +@inproceedings{2023-hejnaiii-FewshotPreferenceLearning, + title = {Few-shot preference learning for human-in-the-loop rl}, + url = {https://proceedings.mlr.press/v205/iii23a.html}, + pages = {2014--2025}, + booktitle = {Conference on Robot Learning}, + delete_delete_delete_publisher = {{PMLR}}, + author = {Hejna {III}, Donald Joseph and Sadigh, Dorsa}, + urlyear = {2024}, + year = {2023}, + file = {Available Version (via Google Scholar):/home/mtoussai/Zotero/storage/TXAIR35Q/Hejna III and Sadigh - 2023 - Few-shot preference learning for human-in-the-loop.pdf:application/pdf}, +} diff --git a/RobotLearning/b5-SafeLearning.bib b/RobotLearning/b5-SafeLearning.bib new file mode 100644 index 0000000..0c0907c --- /dev/null +++ b/RobotLearning/b5-SafeLearning.bib @@ -0,0 +1,454 @@ +@article{-bagnell-RobustSupervisedLearning, + title = {Robust {{Supervised Learning}}}, + author = {Bagnell, J Andrew}, + abstract = {Supervised machine learning techniques developed in the Probably Approximately Correct, Maximum A Posteriori, and Structural Risk Minimiziation frameworks typically make the assumption that the test data a learner is applied to is drawn from the same distribution as the training data. In various prominent applications of learning techniques, from robotics to medical diagnosis to process control, this assumption is violated. We consider a novel framework where a learner may influence the test distribution in a bounded way. From this framework, we derive an efficient algorithm that acts as a wrapper around a broad class of existing supervised learning algorithms while guarranteeing more robust behavior under changes in the input distribution.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/L53EFPKI/Bagnell - Robust Supervised Learning.pdf} +} + +@article{-berkenkamp-SafeModelbasedReinforcement, + title = {Safe {{Model-based Reinforcement Learning}} with {{Stability Guarantees}}}, + author = {Berkenkamp, Felix and Schoellig, Angela P and Turchetta, Matteo and Krause, Andreas}, + abstract = {Reinforcement learning is a powerful paradigm for learning optimal policies from experimental data. However, to find optimal policies, most reinforcement learning algorithms explore all possible actions, which may be harmful for real-world systems. As a consequence, learning algorithms are rarely applied on safety-critical systems in the real world. In this paper, we present a learning algorithm that explicitly considers safety, defined in terms of stability guarantees. Specifically, we extend control-theoretic results on Lyapunov stability verification and show how to use statistical models of the dynamics to obtain high-performance control policies with provable stability certificates. Moreover, under additional regularity assumptions in terms of a Gaussian process prior, we prove that one can effectively and safely collect data in order to learn about the dynamics and thus both improve control performance and expand the safe region of the state space. In our experiments, we show how the resulting algorithm can safely optimize a neural network policy on a simulated inverted pendulum, without the pendulum ever falling down.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/XMG3N757/Berkenkamp et al. - Safe Model-based Reinforcement Learning with Stabi.pdf} +} + +@article{-berkenkamp-SafeModelbasedReinforcementa, + title = {Safe {{Model-based Reinforcement Learning}} with {{Stability Guarantees}}}, + author = {Berkenkamp, Felix and Schoellig, Angela P and Turchetta, Matteo and Krause, Andreas}, + abstract = {Reinforcement learning is a powerful paradigm for learning optimal policies from experimental data. However, to find optimal policies, most reinforcement learning algorithms explore all possible actions, which may be harmful for real-world systems. As a consequence, learning algorithms are rarely applied on safety-critical systems in the real world. In this paper, we present a learning algorithm that explicitly considers safety, defined in terms of stability guarantees. Specifically, we extend control-theoretic results on Lyapunov stability verification and show how to use statistical models of the dynamics to obtain high-performance control policies with provable stability certificates. Moreover, under additional regularity assumptions in terms of a Gaussian process prior, we prove that one can effectively and safely collect data in order to learn about the dynamics and thus both improve control performance and expand the safe region of the state space. In our experiments, we show how the resulting algorithm can safely optimize a neural network policy on a simulated inverted pendulum, without the pendulum ever falling down.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/RTQ2CN2E/Berkenkamp et al. - Safe Model-based Reinforcement Learning with Stabi.pdf} +} + +@article{-dai-LyapunovstableNeuralnetworkControl, + title = {Lyapunov-Stable Neural-Network Control}, + author = {Dai, Hongkai and Landry, Benoit and Yang, Lujie and Pavone, Marco and Tedrake, Russ}, + abstract = {Deep learning has had a far reaching impact in robotics. Specifically, deep reinforcement learning algorithms have been highly effective in synthesizing neural-network controllers for a wide range of tasks. However, despite this empirical success, these controllers still lack theoretical guarantees on their performance, such as Lyapunov stability (i.e., all trajectories of the closed-loop system are guaranteed to converge to a goal state under the control policy). This is in stark contrast to traditional model-based controller design, where principled approaches (like LQR) can synthesize stable controllers with provable guarantees. To address this gap, we propose a generic method to synthesize a Lyapunov-stable neural-network controller, together with a neural-network Lyapunov function to simultaneously certify its stability. Our approach formulates the Lyapunov condition verification as a mixed-integer linear program (MIP). Our MIP verifier either certifies the Lyapunov condition, or generates counter examples that can help improve the candiyear controller and the Lyapunov function. We also present an optimization program to compute an inner approximation of the region of attraction for the closed-loop system. We apply our approach to robots including an inverted pendulum, a 2D and a 3D quadrotor, and showcase that our neural-network controller outperforms a baseline LQR controller. The code is open sourced at https://github.com/StanfordASL/neural-network-lyapunov.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/FJQ9FPME/Dai et al. - Lyapunov-stable neural-network control.pdf} +} + +@article{-gillula-ReducingConservativenessSafety, + title = {Reducing {{Conservativeness}} in {{Safety Guarantees}} by {{Learning Disturbances Online}}: {{Iterated Guaranteed Safe Online Learning}}}, + author = {Gillula, Jeremy H and Tomlin, Claire J}, + abstract = {Reinforcement learning has proven itself to be a powerful technique in robotics, however it has not often been employed to learn a controller in a hardware-in-the-loop environment due to the fact that spurious training data could cause a robot to take an unsafe (and potentially catastrophic) action. One approach to overcoming this limitation is known as Guaranteed Safe Online Learning via Reachability (GSOLR), in which the controller being learned is wrapped inside another controller based on reachability analysis that seeks to guarantee safety against worst-case disturbances. This paper proposes a novel improvement to GSOLR which we call Iterated Guaranteed Safe Online Learning via Reachability (IGSOLR), in which the worst-case disturbances are modeled in a state-dependent manner (either parametrically or nonparametrically), this model is learned online, and the safe sets are periodically recomputed (in parallel with whatever machine learning is being run online to learn how to control the system). As a result the safety of the system automatically becomes neither too liberal nor too conservative, depending only on the actual system behavior. This allows the machine learning algorithm running in parallel the widest possible latitude in performing its task while still guaranteeing system safety. In addition to explaining IGSOLR, we show how it was used in a real-world example, namely that of safely learning an altitude controller for a quadrotor helicopter. The resulting controller, which was learned via hardware-inthe-loop reinforcement learning, out-performs our original handtuned controller while still maintaining safety. To our knowledge, this is the first example in the robotics literature of an algorithm in which worst-case disturbances are learned online in order to guarantee system safety.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/67H3C96C/Gillula and Tomlin - Reducing Conservativeness in Safety Guarantees by .pdf} +} + +@article{-herbert-ScalableLearningSafety, + title = {Scalable {{Learning}} of {{Safety Guarantees}} for {{Autonomous Systems}} Using {{Hamilton-Jacobi Reachability}}}, + author = {Herbert, Sylvia and Choi, Jason J and Qazi, Suvansh and Gibson, Marsalis and Sreenath, Koushil and Tomlin, Claire J}, + abstract = {Autonomous systems like aircraft and assistive robots often operate in scenarios where guaranteeing safety is critical. Methods like Hamilton-Jacobi reachability can provide guaranteed safe sets and controllers for such systems. However, often these same scenarios have unknown or uncertain environments, system dynamics, or predictions of other agents. As the system is operating, it may learn new knowledge about these uncertainties and should therefore upyear its safety analysis accordingly. However, work to learn and upyear safety analysis is limited to small systems of about two dimensions due to the computational complexity of the analysis. In this paper we synthesize several techniques to speed up computation: decomposition, warm-starting, and adaptive grids. Using this new framework we can update safe sets by one or more orders of magnitude faster than prior work, making this technique practical for many realistic systems. We demonstrate our results on simulated 2D and 10D near-hover quadcopters operating in a windy environment.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/T4NRD24N/Herbert et al. - Scalable Learning of Safety Guarantees for Autonom.pdf} +} + +@article{-ray-BenchmarkingSafeExploration, + title = {Benchmarking {{Safe Exploration}} in {{Deep Reinforcement Learning}}}, + author = {Ray, Alex and Achiam, Joshua and Amodei, Dario}, + abstract = {Reinforcement learning (RL) agents need to explore their environments in order to learn optimal policies by trial and error. In many environments, safety is a critical concern and certain errors are unacceptable: for example, robotics systems that interact with humans should never cause injury to the humans while exploring. While it is currently typical to train RL agents mostly or entirely in simulation, where safety concerns are minimal, we anticipate that challenges in simulating the complexities of the real world (such as human-AI interactions) will cause a shift towards training RL agents directly in the real world, where safety concerns are paramount. Consequently we take the position that safe exploration should be viewed as a critical focus area for RL research, and in this work we make three contributions to advance the study of safe exploration. First, building on a wide range of prior work on safe reinforcement learning, we propose to standardize constrained RL as the main formalism for safe exploration. Second, we present the Safety Gym benchmark suite, a new slate of high-dimensional continuous control environments for measuring research progress on constrained RL. Finally, we benchmark several constrained deep RL algorithms on Safety Gym environments to establish baselines that future work can build on.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/6MMHDV5X/Ray et al. - Benchmarking Safe Exploration in Deep Reinforcemen.pdf} +} + +@article{-taylor-ControlLyapunovPerspective, + title = {A {{Control Lyapunov Perspective}} on {{Episodic Learning Via Projection}} to {{State Stability}}}, + author = {Taylor, Andrew and Dorobantu, Victor and Krishnamoorthy, Meera and Le, Hoang M and Yue, Yisong and Ames, Aaron D}, + abstract = {The goal of this paper is to understand the impact of learning on control synthesis from a Lyapunov function perspective. In particular, rather than consider uncertainties in the full system dynamics, we employ Control Lyapunov Functions (CLFs) as low-dimensional projections. To understand and characterize the uncertainty that these projected dynamics introduce in the system, we introduce a new notion: Projection to State Stability (PSS). PSS can be viewed as a variant of Input to State Stability defined on projected dynamics, and enables characterizing robustness of a CLF with respect to the data used to learn system uncertainties. We use PSS to bound uncertainty in affine control, and demonstrate that a practical episodic learning approach can use PSS to characterize uncertainty in the CLF for robust control synthesis.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/9EFPKPNG/Taylor et al. - A Control Lyapunov Perspective on Episodic Learnin.pdf} +} + +@inproceedings{2012-moldovan-SafeExplorationMarkov, + title = {Safe Exploration in {{Markov}} Decision Processes}, + booktitle = {Proceedings of the 29th {{International Coference}} on {{International Conference}} on {{Machine Learning}}}, + author = {Moldovan, Teodor Mihai and Abbeel, Pieter}, + year = {2012}, + series = {{{ICML}}'12}, + pages = {1451--1458}, + delete_delete_publisher = {Omnipress}, + location = {Madison, WI, USA}, + abstract = {In environments with uncertain dynamics exploration is necessary to learn how to perform well. Existing reinforcement learning algorithms provide strong exploration guarantees, but they tend to rely on an ergodicity assumption. The essence of ergodicity is that any state is eventually reachable from any other state by following a suitable policy. This assumption allows for exploration algorithms that operate by simply favoring states that have rarely been visited before. For most physical systems this assumption is impractical as the systems would break before any reasonable exploration has taken place, i.e., most physical systems don't satisfy the ergodicity assumption. In this paper we address the need for safe exploration methods in Markov decision processes. We first propose a general formulation of safety through ergodicity. We show that imposing safety by restricting attention to the resulting set of guaranteed safe policies is NP-hard. We then present an efficient algorithm for guaranteed safe, but potentially suboptimal, exploration. At the core is an optimization formulation in which the constraints restrict attention to a subset of the guaranteed safe policies and the objective favors exploration policies. Our framework is compatible with the majority of previously proposed exploration methods, which rely on an exploration bonus. Our experiments, which include a Martian terrain exploration problem, show that our method is able to explore better than classical exploration methods.}, + isbn = {978-1-4503-1285-1}, + file = {/home/whoenig/Zotero/storage/D557M7WS/Moldovan and Abbeel - Safe Exploration in Markov Decision Processes.pdf} +} + +@inproceedings{2016-berkenkamp-SafeControllerOptimization, + title = {Safe Controller Optimization for Quadrotors with {{Gaussian}} Processes}, + booktitle = {2016 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Berkenkamp, Felix and Schoellig, Angela P. and Krause, Andreas}, + year = {2016}, + pages = {491--496}, + delete_delete_publisher = {IEEE}, + location = {Stockholm, Sweden}, + delete_delete_doi = {10.1109/ICRA.2016.7487170}, + url = {http://ieeexplore.ieee.org/document/7487170/}, + urlyear = {2024}, + abstract = {One of the most fundamental problems when designing controllers for dynamic systems is the tuning of the controller parameters. Typically, a model of the system is used to obtain an initial controller, but ultimately the controller parameters must be tuned manually on the real system to achieve the best performance. To avoid this manual tuning step, methods from machine learning, such as Bayesian optimization, have been used. However, as these methods evaluate different controller parameters on the real system, safety-critical system failures may happen. In this paper, we overcome this problem by applying, for the first time, a recently developed safe optimization algorithm, SAFEOPT, to the problem of automatic controller parameter tuning. Given an initial, low-performance controller, SAFEOPT automatically optimizes the parameters of a control law while guaranteeing safety. It models the underlying performance measure as a Gaussian process and only explores new controller parameters whose performance lies above a safe performance threshold with high probability. Experimental results on a quadrotor vehicle indicate that the proposed method enables fast, automatic, and safe optimization of controller parameters without human intervention.}, + booktitle = {2016 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + isbn = {978-1-4673-8026-3}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/RCWM64SZ/Berkenkamp et al. - 2016 - Safe controller optimization for quadrotors with G.pdf} +} + +@online{2016-daftry-RobustMonocularFlight, + title = {Robust {{Monocular Flight}} in {{Cluttered Outdoor Environments}}}, + author = {Daftry, Shreyansh and Zeng, Sam and Khan, Arbaaz and Dey, Debadeepta and Melik-Barkhudarov, Narek and Bagnell, J. Andrew and Hebert, Martial}, + year = {2016}, + eprint = {1604.04779}, + eprinttype = {arxiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/1604.04779}, + urlyear = {2024}, + abstract = {Recently, there have been numerous advances in the development of biologically inspired lightweight Micro Aerial Vehicles (MAVs). While autonomous navigation is fairly straightforward for large UAVs as expensive sensors and monitoring devices can be employed, robust methods for obstacle avoidance remains a challenging task for MAVs which operate at low altitude in cluttered unstructured environments. Due to payload and power constraints, it is necessary for such systems to have autonomous navigation and flight capabilities using mostly passive sensors such as cameras. In this paper, we describe a robust system that enables autonomous navigation of small agile quad-rotors at low altitude through natural forest environments. We present a direct depth estimation approach that is capable of producing accurate, semi-dense depth-maps in real time. Furthermore, a novel wind-resistant control scheme is presented that enables stable way-point tracking even in the presence of strong winds. We demonstrate the performance of our system through extensive experiments on real images and field tests in a cluttered outdoor environment.}, + langid = {english}, + pubstate = {preprint}, + file = {/home/whoenig/Zotero/storage/NRPBJSNB/Daftry et al. - 2016 - Robust Monocular Flight in Cluttered Outdoor Envir.pdf} +} + +@inproceedings{2017-pinto-RobustAdversarialReinforcement, + title = {Robust {{Adversarial Reinforcement Learning}}}, + booktitle = {Proceedings of the 34th {{International Conference}} on {{Machine Learning}}}, + author = {Pinto, Lerrel and Davidson, James and Sukthankar, Rahul and Gupta, Abhinav}, + year = {2017}, + pages = {2817--2826}, + delete_delete_publisher = {PMLR}, + issn = {2640-3498}, + url = {https://proceedings.mlr.press/v70/pinto17a.html}, + urlyear = {2024}, + abstract = {Deep neural networks coupled with fast simulation and improved computational speeds have led to recent successes in the field of reinforcement learning (RL). However, most current RL-based approaches fail to generalize since: (a) the gap between simulation and real world is so large that policy-learning approaches fail to transfer; (b) even if policy learning is done in real world, the data scarcity leads to failed generalization from training to test scenarios (e.g., due to different friction or object masses). Inspired from H-infinity control methods, we delete_delete_note that both modeling errors and differences in training and test scenarios can just be viewed as extra forces/disturbances in the system. This paper proposes the idea of robust adversarial reinforcement learning (RARL), where we train an agent to operate in the presence of a destabilizing adversary that applies disturbance forces to the system. The jointly trained adversary is reinforced – that is, it learns an optimal destabilization policy. We formulate the policy learning as a zero-sum, minimax objective function. Extensive experiments in multiple environments (InvertedPendulum, HalfCheetah, Swimmer, Hopper, Walker2d and Ant) conclusively demonstrate that our method (a) improves training stability; (b) is robust to differences in training/test conditions; and c) outperform the baseline even in the absence of the adversary.}, + booktitle = {International {{Conference}} on {{Machine Learning}}}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/7GQN8XU2/Pinto et al. - 2017 - Robust Adversarial Reinforcement Learning.pdf} +} + +@inproceedings{2018-chua-DeepReinforcementLearning, + title = {Deep {{Reinforcement Learning}} in a {{Handful}} of {{Trials}} Using {{Probabilistic Dynamics Models}}}, + booktitle = {Advances in {{Neural Information Processing Systems}}}, + author = {Chua, Kurtland and Calandra, Roberto and McAllister, Rowan and Levine, Sergey}, + year = {2018}, + volume = {31}, + delete_delete_publisher = {Curran Associates, Inc.}, + url = {https://proceedings.neurips.cc/paper/2018/hash/3de568f8597b94bda53149c7d7f5958c-Abstract.html}, + urlyear = {2024}, + abstract = {Model-based reinforcement learning (RL) algorithms can attain excellent sample efficiency, but often lag behind the best model-free algorithms in terms of asymptotic performance. This is especially true with high-capacity parametric function approximators, such as deep networks. In this paper, we study how to bridge this gap, by employing uncertainty-aware dynamics models. We propose a new algorithm called probabilistic ensembles with trajectory sampling (PETS) that combines uncertainty-aware deep network dynamics models with sampling-based uncertainty propagation. Our comparison to state-of-the-art model-based and model-free deep RL algorithms shows that our approach matches the asymptotic performance of model-free algorithms on several challenging benchmark tasks, while requiring significantly fewer samples (e.g. 8 and 125 times fewer samples than Soft Actor Critic and Proximal Policy Optimization respectively on the half-cheetah task).}, + file = {/home/whoenig/Zotero/storage/BDV2S46L/Chua et al. - 2018 - Deep Reinforcement Learning in a Handful of Trials.pdf} +} + +@online{2018-richards-LyapunovNeuralNetwork, + title = {The {{Lyapunov Neural Network}}: {{Adaptive Stability Certification}} for {{Safe Learning}} of {{Dynamical Systems}}}, + shorttitle = {The {{Lyapunov Neural Network}}}, + author = {Richards, Spencer M. and Berkenkamp, Felix and Krause, Andreas}, + year = {2018}, + eprint = {1808.00924}, + eprinttype = {arxiv}, + eprintclass = {cs}, + delete_delete_doi = {10.48550/arXiv.1808.00924}, + url = {http://arxiv.org/abs/1808.00924}, + urlyear = {2024}, + abstract = {Learning algorithms have shown considerable prowess in simulation by allowing robots to adapt to uncertain environments and improve their performance. However, such algorithms are rarely used in practice on safety-critical systems, since the learned policy typically does not yield any safety guarantees. That is, the required exploration may cause physical harm to the robot or its environment. In this paper, we present a method to learn accurate safety certificates for nonlinear, closed-loop dynamical systems. Specifically, we construct a neural network Lyapunov function and a training algorithm that adapts it to the shape of the largest safe region in the state space. The algorithm relies only on knowledge of inputs and outputs of the dynamics, rather than on any specific model structure. We demonstrate our method by learning the safe region of attraction for a simulated inverted pendulum. Furthermore, we discuss how our method can be used in safe learning algorithms together with statistical models of dynamical systems.}, + pubstate = {preprint}, + file = {/home/whoenig/Zotero/storage/3FZVFXZY/Richards et al. - 2018 - The Lyapunov Neural Network Adaptive Stability Ce.pdf;/home/whoenig/Zotero/storage/UCJ8Q6KI/1808.html} +} + +@inproceedings{2018-wang-SafeLearningQuadrotor, + title = {Safe {{Learning}} of {{Quadrotor Dynamics Using Barrier Certificates}}}, + booktitle = {2018 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Wang, Li and Theodorou, Evangelos A. and Egerstedt, Magnus}, + year = {2018}, + pages = {2460--2465}, + delete_delete_publisher = {IEEE}, + location = {Brisbane, QLD}, + delete_delete_doi = {10.1109/ICRA.2018.8460471}, + url = {https://ieeexplore.ieee.org/document/8460471/}, + urlyear = {2024}, + abstract = {To effectively control complex dynamical systems, accurate nonlinear models are typically needed. However, these models are not always known. In this paper, we present a datadriven approach based on Gaussian processes that learns models of quadrotors operating in partially unknown environments. What makes this challenging is that if the learning process is not carefully controlled, the system will go unstable, i.e., the quadcopter will crash. To this end, barrier certificates are employed for safe learning. The barrier certificates establish a non-conservative forward invariant safe region, in which high probability safety guarantees are provided based on the statistics of the Gaussian Process. A learning controller is designed to efficiently explore those uncertain states and expand the barrier certified safe region based on an adaptive sampling scheme. Simulation results are provided to demonstrate the effectiveness of the proposed approach.}, + booktitle = {2018 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + isbn = {978-1-5386-3081-5}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/L7WHDM94/Wang et al. - 2018 - Safe Learning of Quadrotor Dynamics Using Barrier .pdf} +} + +@article{2019-cheng-EndtoEndSafeReinforcement, + title = {End-to-{{End Safe Reinforcement Learning}} through {{Barrier Functions}} for {{Safety-Critical Continuous Control Tasks}}}, + author = {Cheng, Richard and Orosz, Gábor and Murray, Richard M. and Burdick, Joel W.}, + year = {2019}, + journal = {Proceedings of the AAAI Conference on Artificial Intelligence}, + shortjournal = {AAAI}, + volume = {33}, + number = {01}, + pages = {3387--3395}, + issn = {2374-3468, 2159-5399}, + delete_delete_doi = {10.1609/aaai.v33i01.33013387}, + url = {https://ojs.aaai.org/index.php/AAAI/article/view/4213}, + urlyear = {2024}, + abstract = {Reinforcement Learning (RL) algorithms have found limited success beyond simulated applications, and one main reason is the absence of safety guarantees during the learning process. Real world systems would realistically fail or break before an optimal controller can be learned. To address this issue, we propose a controller architecture that combines (1) a model-free RL-based controller with (2) model-based controllers utilizing control barrier functions (CBFs) and (3) online learning of the unknown system dynamics, in order to ensure safety during learning. Our general framework leverages the success of RL algorithms to learn high-performance controllers, while the CBF-based controllers both guarantee safety and guide the learning process by constraining the set of explorable polices. We utilize Gaussian Processes (GPs) to model the system dynamics and its uncertainties.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/7IQVAIZ7/Cheng et al. - 2019 - End-to-End Safe Reinforcement Learning through Bar.pdf} +} + +@article{2019-fisac-GeneralSafetyFramework, + title = {A {{General Safety Framework}} for {{Learning-Based Control}} in {{Uncertain Robotic Systems}}}, + author = {Fisac, Jaime F and Akametalu, Anayo K and Zeilinger, Melanie N and Kaynama, Shahab and Gillula, Jeremy and Tomlin, Claire J}, + year = {2019}, + journal = {IEEE TRANSACTIONS ON AUTOMATIC CONTROL}, + volume = {64}, + number = {7}, + abstract = {The proven efficacy of learning-based control schemes strongly motivates their application to robotic systems operating in the physical world. However, guaranteeing correct operation during the learning process is currently an unresolved issue, which is of vital importance in safety-critical systems. We propose a general safety framework based on Hamilton–Jacobi reachability methods that can work in conjunction with an arbitrary learning algorithm. The method exploits approximate knowledge of the system dynamics to guarantee constraint satisfaction while minimally interfering with the learning process. We further introduce a Bayesian mechanism that refines the safety analysis as the system acquires new evidence, reducing initial conservativeness when appropriate while strengthening guarantees through real-time validation. The result is a least-restrictive, safety-preserving control law that intervenes only when the computed safety guarantees require it, or confidence in the computed guarantees decays in light of new observations. We prove theoretical safety guarantees combining probabilistic and worst-case analysis and demonstrate the proposed framework experimentally on a quadrotor vehicle. Even though safety analysis is based on a simple point-mass model, the quadrotor successfully arrives at a suitable controller by policy-gradient reinforcement learning without ever crashing, and safely retracts away from a strong external disturbance introduced during flight.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/F3HI53DX/Fisac et al. - 2019 - A General Safety Framework for Learning-Based Cont.pdf} +} + +@inproceedings{2019-shi-NeuralLanderStable, + title = {Neural {{Lander}}: {{Stable Drone Landing Control Using Learned Dynamics}}}, + shorttitle = {Neural {{Lander}}}, + booktitle = {2019 {{International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Shi, Guanya and Shi, Xichen and O'Connell, Michael and Yu, Rose and Azizzadenesheli, Kamyar and Anandkumar, Animashree and Yue, Yisong and Chung, Soon-Jo}, + year = {2019}, + pages = {9784--9790}, + delete_delete_publisher = {IEEE}, + location = {Montreal, QC, Canada}, + delete_delete_doi = {10.1109/ICRA.2019.8794351}, + url = {https://ieeexplore.ieee.org/document/8794351/}, + urlyear = {2024}, + abstract = {Precise near-ground trajectory control is difficult for multi-rotor drones, due to the complex aerodynamic effects caused by interactions between multi-rotor airflow and the environment. Conventional control methods often fail to properly account for these complex effects and fall short in accomplishing smooth landing. In this paper, we present a novel deeplearning-based robust nonlinear controller (Neural-Lander) that improves control performance of a quadrotor during landing. Our approach combines a nominal dynamics model with a Deep Neural Network (DNN) that learns high-order interactions. We apply spectral normalization (SN) to constrain the Lipschitz constant of the DNN. Leveraging this Lipschitz property, we design a nonlinear feedback linearization controller using the learned model and prove system stability with disturbance rejection. To the best of our knowledge, this is the first DNNbased nonlinear feedback controller with stability guarantees that can utilize arbitrarily large neural nets. Experimental results demonstrate that the proposed controller significantly outperforms a Baseline Nonlinear Tracking Controller in both landing and cross-table trajectory tracking cases. We also empirically show that the DNN generalizes well to unseen data outside the training domain.}, + booktitle = {2019 {{International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + isbn = {978-1-5386-6027-0}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/G2FPNDE5/Shi et al. - 2019 - Neural Lander Stable Drone Landing Control Using .pdf} +} + +@article{2020-hewing-CautiousModelPredictive, + title = {Cautious {{Model Predictive Control Using Gaussian Process Regression}}}, + author = {Hewing, Lukas and Kabzan, Juraj and Zeilinger, Melanie N.}, + year = {2020}, + journal = {IEEE Transactions on Control Systems Technology}, + shortjournal = {IEEE Trans. Contr. Syst. Technol.}, + volume = {28}, + number = {6}, + pages = {2736--2743}, + issn = {1063-6536, 1558-0865, 2374-0159}, + delete_delete_doi = {10.1109/TCST.2019.2949757}, + url = {https://ieeexplore.ieee.org/document/8909368/}, + urlyear = {2024}, + abstract = {Gaussian process (GP) regression has been widely used in supervised machine learning due to its flexibility and inherent ability to describe uncertainty in function estimation. In the context of control, it is seeing increasing use for modeling of nonlinear dynamical systems from data, as it allows the direct assessment of residual model uncertainty. We present a model predictive control (MPC) approach that integrates a nominal system with an additive nonlinear part of the dynamics modeled as a GP. We describe a principled way of formulating the chanceconstrained MPC problem, which takes into account residual uncertainties provided by the GP model to enable cautious control. Using additional approximations for efficient computation, we finally demonstrate the approach in a simulation example, as well as in a hardware implementation for autonomous racing of remote-controlled race cars with fast sampling times of 20 ms, highlighting improvements with regard to both performance and safety over a nominal controller.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/EG5NCU2L/Hewing et al. - 2020 - Cautious Model Predictive Control Using Gaussian P.pdf} +} + +@article{2020-riviere-GLASGlobaltoLocalSafe, + title = {{{GLAS}}: {{Global-to-Local Safe Autonomy Synthesis}} for {{Multi-Robot Motion Planning With End-to-End Learning}}}, + shorttitle = {{{GLAS}}}, + author = {Riviere, Benjamin and Honig, Wolfgang and Yue, Yisong and Chung, Soon-Jo}, + year = {2020}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {5}, + number = {3}, + pages = {4249--4256}, + issn = {2377-3766, 2377-3774}, + delete_delete_doi = {10.1109/LRA.2020.2994035}, + url = {https://ieeexplore.ieee.org/document/9091314/}, + urlyear = {2024}, + abstract = {We present GLAS: Global-to-Local Autonomy Synthesis, a provably-safe, automated distributed policy generation for multi-robot motion planning. Our approach combines the advantage of centralized planning of avoiding local minima with the advantage of decentralized controllers of scalability and distributed computation. In particular, our synthesized policies only require relative state information of nearby neighbors and obstacles, and compute a provably-safe action. Our approach has three major components: i) we generate demonstration trajectories using a global planner and extract local observations from them, ii) we use deep imitation learning to learn a decentralized policy that can run efficiently online, and iii) we introduce a novel differentiable safety module to ensure collision-free operation, thereby allowing for end-to-end policy training. Our numerical experiments demonstrate that our policies have a 20\% higher success rate than optimal reciprocal collision avoidance, ORCA, across a wide range of robot and obstacle densities. We demonstrate our method on an aerial swarm, executing the policy on low-end microcontrollers in real-time.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/BYMHIRFI/Riviere et al. - 2020 - GLAS Global-to-Local Safe Autonomy Synthesis for .pdf} +} + +@article{2020-zhou-DeepNeuralNetworks, + title = {Deep Neural Networks as Add-on Modules for Enhancing Robot Performance in Impromptu Trajectory Tracking}, + author = {Zhou, Siqi and Helwa, Mohamed K and Schoellig, Angela P}, + year = {2020}, + journal = {The International Journal of Robotics Research}, + volume = {39}, + number = {12}, + pages = {1397--1418}, + delete_delete_publisher = {SAGE Publications Ltd STM}, + issn = {0278-3649}, + delete_delete_doi = {10.1177/0278364920953902}, + url = {https://delete_delete_doi.org/10.1177/0278364920953902}, + urlyear = {2024}, + abstract = {High-accuracy trajectory tracking is critical to many robotic applications, including search and rescue, advanced manufacturing, and industrial inspection, to name a few. Yet the unmodeled dynamics and parametric uncertainties of operating in such complex environments make it difficult to design controllers that are capable of accurately tracking arbitrary, feasible trajectories from the first attempt (i.e., impromptu trajectory tracking). This article proposes a platform-independent, learning-based “add-on” module to enhance the tracking performance of black-box control systems in impromptu tracking tasks. Our approach is to pre-cascade a deep neural network (DNN) to a stabilized baseline control system, in order to establish an identity mapping from the desired output to the actual output. Previous research involving quadrotors showed that, for 30 arbitrary hand-drawn trajectories, the DNN-enhancement control architecture reduces tracking errors by 43\% on average, as compared with the baseline controller. In this article, we provide a platform-independent formulation and practical design guidelines for the DNN-enhancement approach. In particular, we: (1) characterize the underlying function of the DNN module; (2) identify necessary conditions for the approach to be effective; (3) provide theoretical insights into the stability of the overall DNN-enhancement control architecture; (4) derive a condition that supports data-efficient training of the DNN module; and (5) compare the novel theory-driven DNN design with the prior trial-and-error design using detailed quadrotor experiments. We show that, as compared with the prior trial-and-error design, the novel theory-driven design allows us to reduce the input dimension of the DNN by two thirds while achieving similar tracking performance.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/QY8WXGHJ/Zhou et al. - 2020 - Deep neural networks as add-on modules for enhanci.pdf} +} + +@article{2021-thananjeyan-RecoveryRLSafe, + title = {Recovery {{RL}}: {{Safe Reinforcement Learning With Learned Recovery Zones}}}, + shorttitle = {Recovery {{RL}}}, + author = {Thananjeyan, Brijen and Balakrishna, Ashwin and Nair, Suraj and Luo, Michael and Srinivasan, Krishnan and Hwang, Minho and Gonzalez, Joseph E. and Ibarz, Julian and Finn, Chelsea and Goldberg, Ken}, + year = {2021}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {6}, + number = {3}, + pages = {4915--4922}, + issn = {2377-3766, 2377-3774}, + delete_delete_doi = {10.1109/LRA.2021.3070252}, + url = {https://ieeexplore.ieee.org/document/9392290/}, + urlyear = {2024}, + abstract = {Safety remains a central obstacle preventing widespread use of RL in the real world: learning new tasks in uncertain environments requires extensive exploration, but safety requires limiting exploration. We propose Recovery RL, an algorithm which navigates this tradeoff by (1) leveraging offline data to learn about constraint violating zones before policy learning and (2) separating the goals of improving task performance and constraint satisfaction across two policies: a task policy that only optimizes the task reward and a recovery policy that guides the agent to safety when constraint violation is likely. We evaluate Recovery RL on 6 simulation domains, including two contact-rich manipulation tasks and an image-based navigation task, and an image-based obstacle avoidance task on a physical robot. We compare Recovery RL to 5 prior safe RL methods which jointly optimize for task performance and safety via constrained optimization or reward shaping and find that Recovery RL outperforms the next best prior method across all domains. Results suggest that Recovery RL trades off constraint violations and task successes 2–20 times more efficiently in simulation domains and 3 times more efficiently in physical experiments. See https://tinyurl.com/rl-recovery for videos and supplementary material.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/I87T8VNN/Thananjeyan et al. - 2021 - Recovery RL Safe Reinforcement Learning With Lear.pdf} +} + +@article{2022-brunke-SafeLearningRobotics, + title = {Safe {{Learning}} in {{Robotics}}: {{From Learning-Based Control}} to {{Safe Reinforcement Learning}}}, + shorttitle = {Safe {{Learning}} in {{Robotics}}}, + author = {Brunke, Lukas and Greeff, Melissa and Hall, Adam W. and Yuan, Zhaocong and Zhou, Siqi and Panerati, Jacopo and Schoellig, Angela P.}, + year = {2022}, + journal = {Annual Review of Control, Robotics, and Autonomous Systems}, + volume = {5}, + pages = {411--444}, + delete_delete_publisher = {Annual Reviews}, + issn = {2573-5144}, + delete_delete_doi = {10.1146/annurev-control-042920-020211}, + url = {https://www.annualreviews.org/content/journals/10.1146/annurev-control-042920-020211}, + urlyear = {2024}, + abstract = {The last half decade has seen a steep rise in the number of contributions on safe learning methods for real-world robotic deployments from both the control and reinforcement learning communities. This article provides a concise but holistic review of the recent advances made in using machine learning to achieve safe decision-making under uncertainties, with a focus on unifying the language and frameworks used in control theory and reinforcement learning research. It includes learning-based control approaches that safely improve performance by learning the uncertain dynamics, reinforcement learning approaches that encourage safety or robustness, and methods that can formally certify the safety of a learned control policy. As data- and learning-based robot control methods continue to gain traction, researchers must understand when and how to best leverage them in real-world scenarios where safety is imperative, such as when operating in close proximityto humans. We highlight some of the open challenges that will drive the field of robot learning in the coming years, and emphasize the need for realistic physics-based benchmarks to facilitate fair comparisons between control and reinforcement learning approaches.}, + issue = {Volume 5, 2022}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/P6697L69/Brunke et al. - 2022 - Safe Learning in Robotics From Learning-Based Con.pdf;/home/whoenig/Zotero/storage/6H6UBH5V/annurev-control-042920-020211.html} +} + +@article{2022-brunke-SupplementalMaterialSafe, + title = {Supplemental {{Material}} for {{Safe Learning}} in {{Robotics}}}, + author = {Brunke, Lukas and Greeff, Melissa and Yuan, Zhaocong and Zhou, Siqi and Schoellig, Angela P}, + year = {2022}, + abstract = {As supplemental material for our review article “Safe Learning in Robotics: From Learning-Based Control to Safe Reinforcement Learning”, we provide a summary—in table form—of the 84 approaches mentioned in Section 3, with a specific focus on (i) the learning models used, (ii) the safety properties achieved, and (iii) the robotic tasks considered.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/BBWCM88L/Brunke et al. - Supplemental Material for.pdf} +} + +@video{2022-learningsystemsandroboticslab-IROS2022Keydelete_delete_note, + entrysubtype = {video}, + title = {{{IROS}} 2022 {{Keydelete_delete_note}}: {{Safe Learning}} in {{Robotics}} by {{Prof}}. {{Angela Schoellig}}}, + shorttitle = {{{IROS}} 2022 {{Keydelete_delete_note}}}, + editor = {{Learning Systems and Robotics Lab}}, + editortype = {director}, + year = {2022}, + url = {https://www.youtube.com/watch?v=g6eHhvHMSy8}, + urlyear = {2024}, + abstract = {Abstract: The next generation of robots will rely on machine learning in one way or another. However, when machine learning algorithms (or their results) are deployed on robots in the real world, studying their safety is important. In this talk, I will summarize the findings of our recent review paper “Safe Learning in Robotics: From Learning-Based Control to Safe Reinforcement Learning”. I will present my team’s research in this context and show experimental demonstrations of safe learning algorithms on flying robots, ground vehicles, and mobile manipulators. I will conclude by highlighting the many open questions in this field and hope to convince you to help solve these challenges. Finally, I will introduce the open-source simulation environment “safe-control-gym”, which was developed by my team to test and benchmark safe learning algorithms and accelerate progress in this field. Bio: Angela Schoellig is an Alexander von Humboldt Professor for Robotics and Artificial Intelligence at the Technical University of Munich. She is also an Associate Professor at the University of Toronto Institute for Aerospace Studies and a Faculty Member of the Vector Institute in Toronto. Angela conducts research at the intersection of robotics, controls, and machine learning. Her goal is to enhance the performance, safety, and autonomy of robots by enabling them to learn from past experiments and from each other. In Canada, she has held a Canada Research Chair (Tier 2) in Machine Learning for Robotics and Control and a Canada CIFAR Chair in Artificial Intelligence, and has been a principal investigator of the NSERC Canadian Robotics Network. She is a recipient of the Robotics: Science and Systems Early Career Spotlight Award (2019), a Sloan Research Fellowship (2017), and an Ontario Early Researcher Award (2017). She is a Curious Minds Award winner (2022), a MIT Technology Review Innovator Under 35 (2017), a Canada Science Leadership Program Fellow (2014), and one of Robohub’s “25 women in robotics you need to know about (2013)”. Her team is the four-time winner of the North-American SAE AutoDrive Challenge (2018-21). Her PhD at ETH Zurich (2013) was awarded the ETH Medal and the Dimitris N. Chorafas Foundation Award. She holds both an M.Sc. in Engineering Cybernetics from the University of Stuttgart (2008) and an M.Sc. in Engineering Science and Mechanics from the Georgia Institute of Technology (2007). More Information: [1] Lukas Brunke, Melissa Greeff, Adam W. Hall, Zhaocong Yuan, Siqi Zhou, Jacopo Panerati, and Angela P. Schoellig, "Safe learning in robotics: From learning-based control to safe reinforcement learning," in Annual Review of Control, Robotics, and Autonomous Systems, vol. 5, pp. 411-444, 2022, available at https://arxiv.org/pdf/2108.06266.pdf. [2] Zhaocong Yuan, Adam W. Hall, Siqi Zhou, Lukas Brunke, Melissa Greeff, Jacopo Panerati, and Angela P. Schoellig, "Safe-Control-Gym: A Unified Benchmark Suite for Safe Learning-Based Control and Reinforcement Learning in Robotics," in IEEE Robotics and Automation Letters, vol. 7, no. 4, pp. 11142-11149, 2022, available at https://arxiv.org/pdf/2109.06325.pdf.} +} + +@article{2022-yuan-SafeControlGymUnifiedBenchmark, + title = {Safe-{{Control-Gym}}: {{A Unified Benchmark Suite}} for {{Safe Learning-Based Control}} and {{Reinforcement Learning}} in {{Robotics}}}, + shorttitle = {Safe-{{Control-Gym}}}, + author = {Yuan, Zhaocong and Hall, Adam W. and Zhou, Siqi and Brunke, Lukas and Greeff, Melissa and Panerati, Jacopo and Schoellig, Angela P.}, + year = {2022}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {7}, + number = {4}, + pages = {11142--11149}, + issn = {2377-3766, 2377-3774}, + delete_delete_doi = {10.1109/LRA.2022.3196132}, + url = {https://ieeexplore.ieee.org/document/9849119/}, + urlyear = {2024}, + abstract = {In recent years, both reinforcement learning and learning-based control—as well as the study of their safety, which is crucial for deployment in real-world robots—have gained significant traction. However, to adequately gauge the progress and applicability of new results, we need the tools to equitably compare the approaches proposed by the controls and reinforcement learning communities. Here, we propose a new open-source benchmark suite, called safe-control-gym, supporting both modelbased and data-based control techniques. We provide implementations for three dynamic systems—the cart-pole, the 1D, and 2D quadrotor—and two control tasks—stabilization and trajectory tracking. We propose to extend OpenAI’s Gym API—the de facto standard in reinforcement learning research—with (i) the ability to specify (and query) symbolic dynamics and (ii) constraints, and (iii) (repeatably) inject simulated disturbances in the control inputs, state measurements, and inertial properties. To demonstrate our proposal and in an attempt to bring research communities closer together, we show how to use safe-control-gym to quantitatively compare the control performance, data efficiency, and safety of multiple approaches from the fields of traditional control, learning-based control, and reinforcement learning.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/6IDBRJ9R/Yuan et al. - 2022 - Safe-Control-Gym A Unified Benchmark Suite for Sa.pdf} +} + +@article{2022-zhou-BridgingModelRealityGap, + title = {Bridging the {{Model-Reality Gap With Lipschitz Network Adaptation}}}, + author = {Zhou, Siqi and Pereida, Karime and Zhao, Wenda and Schoellig, Angela P.}, + year = {2022}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {7}, + number = {1}, + pages = {642--649}, + issn = {2377-3766, 2377-3774}, + delete_delete_doi = {10.1109/LRA.2021.3131698}, + url = {https://ieeexplore.ieee.org/document/9632405/}, + urlyear = {2024}, + abstract = {As robots venture into the real world, they are subject to unmodeled dynamics and disturbances. Traditional model-based control approaches have been proven successful in relatively static and known operating environments. However, when an accurate model of the robot is not available, model-based design can lead to suboptimal and even unsafe behaviour. In this work, we propose a method that bridges the model-reality gap and enables the application of model-based approaches even if dynamic uncertainties are present. In particular, we present a learning-based model reference adaptation approach that makes a robot system, with possibly uncertain dynamics, behave as a predefined reference model. In turn, the reference model can be used for model-based controller design. In contrast to typical model reference adaptation control approaches, we leverage the representative power of neural networks to capture highly nonlinear dynamics uncertainties and guarantee stability by encoding a certifying Lipschitz condition in the architectural design of a special type of neural network called the Lipschitz network. Our approach applies to a general class of nonlinear control-affine systems even when our prior knowledge about the true robot system is limited. We demonstrate our approach in flying inverted pendulum experiments, where an offthe-shelf quadrotor is challenged to balance an inverted pendulum while hovering or tracking circular trajectories.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/SYE37J7S/Zhou et al. - 2022 - Bridging the Model-Reality Gap With Lipschitz Netw.pdf} +} + +@article{2023-berkenkamp-BayesianOptimizationSafety, + title = {Bayesian Optimization with Safety Constraints: Safe and Automatic Parameter Tuning in Robotics}, + shorttitle = {Bayesian Optimization with Safety Constraints}, + author = {Berkenkamp, Felix and Krause, Andreas and Schoellig, Angela P.}, + year = {2023}, + journal = {Machine Learning}, + shortjournal = {Mach Learn}, + volume = {112}, + number = {10}, + pages = {3713--3747}, + issn = {1573-0565}, + delete_delete_doi = {10.1007/s10994-021-06019-1}, + url = {https://delete_delete_doi.org/10.1007/s10994-021-06019-1}, + urlyear = {2024}, + abstract = {Selecting the right tuning parameters for algorithms is a pravelent problem in machine learning that can significantly affect the performance of algorithms. Data-efficient optimization algorithms, such as Bayesian optimization, have been used to automate this process. During experiments on real-world systems such as robotic platforms these methods can evaluate unsafe parameters that lead to safety-critical system failures and can destroy the system. Recently, a safe Bayesian optimization algorithm, called~SafeOpt, has been developed, which guarantees that the performance of the system never falls below a critical value; that is, safety is defined based on the performance function. However, coupling performance and safety is often not desirable in practice, since they are often opposing objectives. In this paper, we present a generalized algorithm that allows for multiple safety constraints separate from the objective. Given an initial set of safe parameters, the algorithm maximizes performance but only evaluates parameters that satisfy safety for all constraints with high probability. To this end, it carefully explores the parameter space by exploiting regularity assumptions in terms of a Gaussian process prior. Moreover, we show how context variables can be used to safely transfer knowledge to new situations and tasks. We provide a theoretical analysis and demonstrate that the proposed algorithm enables fast, automatic, and safe optimization of tuning parameters in experiments on a quadrotor vehicle.}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/C2QL2JI4/Berkenkamp et al. - 2023 - Bayesian optimization with safety constraints saf.pdf} +} + +@article{2023-wabersich-DataDrivenSafetyFilters, + title = {Data-{{Driven Safety Filters}}: {{Hamilton-Jacobi Reachability}}, {{Control Barrier Functions}}, and {{Predictive Methods}} for {{Uncertain Systems}}}, + shorttitle = {Data-{{Driven Safety Filters}}}, + author = {Wabersich, Kim P. and Taylor, Andrew J. and Choi, Jason J. and Sreenath, Koushil and Tomlin, Claire J. and Ames, Aaron D. and Zeilinger, Melanie N.}, + year = {2023}, + journal = {IEEE Control Systems}, + shortjournal = {IEEE Control Syst.}, + volume = {43}, + number = {5}, + pages = {137--177}, + issn = {1066-033X, 1941-000X}, + delete_delete_doi = {10.1109/MCS.2023.3291885}, + url = {https://ieeexplore.ieee.org/document/10266799/}, + urlyear = {2024}, + langid = {english}, + file = {/home/whoenig/Zotero/storage/9N9QWZP8/Wabersich et al. - 2023 - Data-Driven Safety Filters Hamilton-Jacobi Reacha.pdf} +} + +@online{2024-he-AgileSafeLearning, + title = {Agile {{But Safe}}: {{Learning Collision-Free High-Speed Legged Locomotion}}}, + shorttitle = {Agile {{But Safe}}}, + author = {He, Tairan and Zhang, Chong and Xiao, Wenli and He, Guanqi and Liu, Changliu and Shi, Guanya}, + year = {2024}, + url = {https://arxiv.org/abs/2401.17583v3}, + urlyear = {2024}, + abstract = {Legged robots navigating cluttered environments must be jointly agile for efficient task execution and safe to avoid collisions with obstacles or humans. Existing studies either develop conservative controllers ({$<$} 1.0 m/s) to ensure safety, or focus on agility without considering potentially fatal collisions. This paper introduces Agile But Safe (ABS), a learning-based control framework that enables agile and collision-free locomotion for quadrupedal robots. ABS involves an agile policy to execute agile motor skills amidst obstacles and a recovery policy to prevent failures, collaboratively achieving high-speed and collision-free navigation. The policy switch in ABS is governed by a learned control-theoretic reach-avoid value network, which also guides the recovery policy as an objective function, thereby safeguarding the robot in a closed loop. The training process involves the learning of the agile policy, the reach-avoid value network, the recovery policy, and an exteroception representation network, all in simulation. These trained modules can be directly deployed in the real world with onboard sensing and computation, leading to high-speed and collision-free navigation in confined indoor and outdoor spaces with both static and dynamic obstacles.}, + langid = {english}, + organization = {arXiv.org}, + file = {/home/whoenig/Zotero/storage/2ZRCKS5L/He et al. - 2024 - Agile But Safe Learning Collision-Free High-Speed.pdf} +} + +@online{2024-xiao-SafeDeepPolicy, + title = {Safe {{Deep Policy Adaptation}}}, + author = {Xiao, Wenli and He, Tairan and Dolan, John and Shi, Guanya}, + year = {2024}, + eprint = {2310.08602}, + eprinttype = {arxiv}, + eprintclass = {cs}, + delete_delete_doi = {10.48550/arXiv.2310.08602}, + url = {http://arxiv.org/abs/2310.08602}, + urlyear = {2024}, + abstract = {A critical goal of autonomy and artificial intelligence is enabling autonomous robots to rapidly adapt in dynamic and uncertain environments. Classic adaptive control and safe control provide stability and safety guarantees but are limited to specific system classes. In contrast, policy adaptation based on reinforcement learning (RL) offers versatility and generalizability but presents safety and robustness challenges. We propose SafeDPA, a novel RL and control framework that simultaneously tackles the problems of policy adaptation and safe reinforcement learning. SafeDPA jointly learns adaptive policy and dynamics models in simulation, predicts environment configurations, and fine-tunes dynamics models with few-shot real-world data. A safety filter based on the Control Barrier Function (CBF) on top of the RL policy is introduced to ensure safety during real-world deployment. We provide theoretical safety guarantees of SafeDPA and show the robustness of SafeDPA against learning errors and extra perturbations. Comprehensive experiments on (1) classic control problems (Inverted Pendulum), (2) simulation benchmarks (Safety Gym), and (3) a real-world agile robotics platform (RC Car) demonstrate great superiority of SafeDPA in both safety and task performance, over state-of-the-art baselines. Particularly, SafeDPA demonstrates notable generalizability, achieving a 300\% increase in safety rate compared to the baselines, under unseen disturbances in real-world experiments.}, + pubstate = {preprint}, + file = {/home/whoenig/Zotero/storage/ARYUJ2W2/Xiao et al. - 2024 - Safe Deep Policy Adaptation.pdf;/home/whoenig/Zotero/storage/2U63I5GS/2310.html} +} + +@online{2024-zhou-ControlBarrierAidedTeleoperationVisualInertial, + title = {Control-{{Barrier-Aided Teleoperation}} with {{Visual-Inertial SLAM}} for {{Safe MAV Navigation}} in {{Complex Environments}}}, + author = {Zhou, Siqi and Papatheodorou, Sotiris and Leutenegger, Stefan and Schoellig, Angela P.}, + year = {2024}, + eprint = {2403.04331}, + eprinttype = {arxiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2403.04331}, + urlyear = {2024}, + abstract = {In this paper, we consider a Micro Aerial Vehicle (MAV) system teleoperated by a non-expert and introduce a perceptive safety filter that leverages Control Barrier Functions (CBFs) in conjunction with Visual-Inertial Simultaneous Localization and Mapping (VI-SLAM) and dense 3D occupancy mapping to guarantee safe navigation in complex and unstructured environments. Our system relies solely on onboard IMU measurements, stereo infrared images, and depth images and autonomously corrects teleoperated inputs when they are deemed unsafe. We define a point in 3D space as unsafe if it satisfies either of two conditions: (i) it is occupied by an obstacle, or (ii) it remains unmapped. At each time step, an occupancy map of the environment is upyeard by the VI-SLAM by fusing the onboard measurements, and a CBF is constructed to parameterize the (un)safe region in the 3D space. Given the CBF and state feedback from the VI-SLAM module, a safety filter computes a certified reference that best matches the teleoperation input while satisfying the safety constraint encoded by the CBF. In contrast to existing perception-based safe control frameworks, we directly close the perception-action loop and demonstrate the full capability of safe control in combination with real-time VI-SLAM without any external infrastructure or prior knowledge of the environment. We verify the efficacy of the perceptive safety filter in real-time MAV experiments using exclusively onboard sensing and computation and show that the teleoperated MAV is able to safely navigate through unknown environments despite arbitrary inputs sent by the teleoperator.}, + langid = {english}, + pubstate = {preprint}, + keywords = {Computer Science - Robotics}, + file = {/home/whoenig/Zotero/storage/UH34L4EF/Zhou et al. - 2024 - Control-Barrier-Aided Teleoperation with Visual-In.pdf} +} diff --git a/RobotLearning/b6-Manipulation.bib b/RobotLearning/b6-Manipulation.bib new file mode 100644 index 0000000..61c93f1 --- /dev/null +++ b/RobotLearning/b6-Manipulation.bib @@ -0,0 +1,368 @@ +@book{2017-lynch-ModernRobotics, + title = {Modern Robotics}, + author = {Lynch, Kevin M. and Park, Frank C.}, + year = {2017}, + delete_delete_delete_publisher = {Cambridge University Press}, + url = {https://books.google.com/books?hl=en&lr=&id=5NzFDgAAQBAJ&oi=fnd&pg=PR11&dq=modern+robotics+book&ots=qsJmY4kXPh&sig=o1uhr6h_eJKF33_HBe2xZaT32Ow}, + urlyear = {2024} +} + +@online{2017-mahler-DexNetDeepLearning, + title = {Dex-{{Net}} 2.0: {{Deep Learning}} to {{Plan Robust Grasps}} with {{Synthetic Point Clouds}} and {{Analytic Grasp Metrics}}}, + shorttitle = {Dex-{{Net}} 2.0}, + author = {Mahler, Jeffrey and Liang, Jacky and Niyaz, Sherdil and Laskey, Michael and Doan, Richard and Liu, Xinyu and Ojea, Juan Aparicio and Goldberg, Ken}, + year = {2017}, + eprint = {1703.09312}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/1703.09312}, + urlyear = {2024}, + abstract = {To reduce data collection time for deep learning of robust robotic grasp plans, we explore training from a synthetic dataset of 6.7 million point clouds, grasps, and analytic grasp metrics generated from thousands of 3D models from Dex-Net 1.0 in randomized poses on a table. We use the resulting dataset, Dex-Net 2.0, to train a Grasp Quality Convolutional Neural Network (GQ-CNN) model that rapidly predicts the probability of success of grasps from depth images, where grasps are specified as the planar position, angle, and depth of a gripper relative to an RGB-D sensor. Experiments with over 1,000 trials on an ABB YuMi comparing grasp planning methods on singulated objects suggest that a GQ-CNN trained with only synthetic data from Dex-Net 2.0 can be used to plan grasps in 0.8sec with a success rate of 93\% on eight known objects with adversarial geometry and is 3x faster than registering point clouds to a precomputed dataset of objects and indexing grasps. The Dex-Net 2.0 grasp planner also has the highest success rate on a dataset of 10 novel rigid objects and achieves 99\% precision (one false positive out of 69 grasps classified as robust) on a dataset of 40 novel household objects, some of which are articulated or deformable. Code, datasets, videos, and supplementary material are available at http://berkeleyautomation.github.io/dex-net .}, + pubstate = {preprint}, + keywords = {Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/PPEMWU45/Mahler et al. - 2017 - Dex-Net 2.0 Deep Learning to Plan Robust Grasps w.pdf;/home/mtoussai/Zotero/storage/DKTLAIRN/1703.html} +} + +@article{2017-tenpas-GraspPoseDetection, + title = {Grasp {{Pose Detection}} in {{Point Clouds}}}, + author = {Ten Pas, Andreas and Gualtieri, Marcus and Saenko, Kate and Platt, Robert}, + year = {2017}, + journal = {The International Journal of Robotics Research}, + shortjournal = {The International Journal of Robotics Research}, + volume = {36}, + number = {13-14}, + pages = {1455--1473}, + issn = {0278-3649, 1741-3176}, + delete_delete_delete_doi = {10.1177/0278364917735594}, + url = {http://journals.sagepub.com/delete_delete_delete_doi/10.1177/0278364917735594}, + urlyear = {2024}, + abstract = {Recently, a number of grasp detection methods have been proposed that can be used to localize robotic grasp configurations directly from sensor data without estimating object pose. The underlying idea is to treat grasp perception analogously to object detection in computer vision. These methods take as input a noisy and partially occluded RGBD image or point cloud and produce as output pose estimates of viable grasps, without assuming a known CAD model of the object. Although these methods generalize grasp knowledge to new objects well, they have not yet been demonstrated to be reliable enough for wide use. Many grasp detection methods achieve grasp success rates (grasp successes as a fraction of the total number of grasp attempts) between 75\% and 95\% for novel objects presented in isolation or in light clutter. Not only are these success rates too low for practical grasping applications, but the light clutter scenarios that are evaluated often do not reflect the realities of real-world grasping. This paper proposes a number of innovations that together result in an improvement in grasp detection performance. The specific improvement in performance due to each of our contributions is quantitatively measured either in simulation or on robotic hardware. Ultimately, we report a series of robotic experiments that average a 93\% end-to-end grasp success rate for novel objects presented in dense clutter.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/HCFQITMT/Ten Pas et al. - 2017 - Grasp Pose Detection in Point Clouds.pdf} +} + +@inproceedings{2018-kalashnikov-ScalableDeepReinforcement, + title = {Scalable Deep Reinforcement Learning for Vision-Based Robotic Manipulation}, + booktitle = {Conference on Robot Learning}, + author = {Kalashnikov, Dmitry and Irpan, Alex and Pastor, Peter and Ibarz, Julian and Herzog, Alexander and Jang, Eric and Quillen, Deirdre and Holly, Ethan and Kalakrishnan, Mrinal and Vanhoucke, Vincent}, + year = {2018}, + pages = {651--673}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v87/kalashnikov18a}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/9UD9H8WQ/Kalashnikov et al. - 2018 - Scalable deep reinforcement learning for vision-ba.pdf} +} + +@article{2018-mason-RoboticManipulation, + title = {Toward {{Robotic Manipulation}}}, + author = {Mason, Matthew T.}, + year = {2018}, + journal = {Annual Review of Control, Robotics, and Autonomous Systems}, + shortjournal = {Annu. Rev. Control Robot. Auton. Syst.}, + volume = {1}, + number = {1}, + pages = {1--28}, + issn = {2573-5144, 2573-5144}, + delete_delete_delete_doi = {10.1146/annurev-control-060117-104848}, + url = {https://www.annualreviews.org/delete_delete_delete_doi/10.1146/annurev-control-060117-104848}, + urlyear = {2024}, + abstract = {This article surveys manipulation, including both biological and robotic manipulation. Biology inspires robotics and demonstrates aspects of manipulation that are far in the future of robotics. Robotics develops concepts and principles that become evident only in the creative process. Robotics also provides a test of our understanding. As Richard Feynman put it: “What I cannot create, I do not understand.”}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/N29Y5BID/Mason - 2018 - Toward Robotic Manipulation.pdf} +} + +@inproceedings{2019-liang-PointnetgpdDetectingGrasp, + title = {Pointnetgpd: {{Detecting}} Grasp Configurations from Point Sets}, + shorttitle = {Pointnetgpd}, + booktitle = {2019 {{International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Liang, Hongzhuo and Ma, Xiaojian and Li, Shuang and Görner, Michael and Tang, Song and Fang, Bin and Sun, Fuchun and Zhang, Jianwei}, + year = {2019}, + pages = {3629--3635}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/8794435/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/5CJC7JSP/Liang et al. - 2019 - Pointnetgpd Detecting grasp configurations from p.pdf} +} + +@inproceedings{2019-mousavian-6dofGraspnetVariational, + title = {6-Dof Graspnet: {{Variational}} Grasp Generation for Object Manipulation}, + shorttitle = {6-Dof Graspnet}, + booktitle = {Proceedings of the {{IEEE}}/{{CVF}} International Conference on Computer Vision}, + author = {Mousavian, Arsalan and Eppner, Clemens and Fox, Dieter}, + year = {2019}, + pages = {2901--2910}, + url = {http://openaccess.thecvf.com/content_ICCV_2019/html/Mousavian_6-DOF_GraspNet_Variational_Grasp_Generation_for_Object_Manipulation_ICCV_2019_paper.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/42AS48WE/Mousavian et al. - 2019 - 6-dof graspnet Variational grasp generation for o.pdf} +} + +@inproceedings{2020-fang-Graspnet1billionLargescaleBenchmark, + title = {Graspnet-1billion: {{A}} Large-Scale Benchmark for General Object Grasping}, + shorttitle = {Graspnet-1billion}, + booktitle = {Proceedings of the {{IEEE}}/{{CVF}} Conference on Computer Vision and Pattern Recognition}, + author = {Fang, Hao-Shu and Wang, Chenxi and Gou, Minghao and Lu, Cewu}, + year = {2020}, + pages = {11444--11453}, + url = {http://openaccess.thecvf.com/content_CVPR_2020/html/Fang_GraspNet-1Billion_A_Large-Scale_Benchmark_for_General_Object_Grasping_CVPR_2020_paper.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/I36Y8VH7/Fang et al. - 2020 - Graspnet-1billion A large-scale benchmark for gen.pdf} +} + +@article{2020-kleeberger-SurveyLearningBasedRobotic, + title = {A {{Survey}} on {{Learning-Based Robotic Grasping}}}, + author = {Kleeberger, Kilian and Bormann, Richard and Kraus, Werner and Huber, Marco F.}, + year = {2020}, + journal = {Current Robotics Reports}, + shortjournal = {Curr Robot Rep}, + volume = {1}, + number = {4}, + pages = {239--249}, + issn = {2662-4087}, + delete_delete_delete_doi = {10.1007/s43154-020-00021-6}, + url = {https://delete_delete_delete_doi.org/10.1007/s43154-020-00021-6}, + urlyear = {2024}, + abstract = {This review provides a comprehensive overview of machine learning approaches for vision-based robotic grasping and manipulation. Current trends and developments as well as various criteria for categorization of approaches are provided.}, + langid = {english}, + keywords = {Artificial intelligence,Deep learning,Robotic grasping and manipulation,Sim-to-real transfer,Simulations}, + file = {/home/mtoussai/Zotero/storage/VYEIBQVX/Kleeberger et al. - 2020 - A Survey on Learning-Based Robotic Grasping.pdf} +} + +@article{2020-song-GraspingWildLearning, + title = {Grasping in the Wild: {{Learning}} 6dof Closed-Loop Grasping from Low-Cost Demonstrations}, + shorttitle = {Grasping in the Wild}, + author = {Song, Shuran and Zeng, Andy and Lee, Johnny and Funkhouser, Thomas}, + year = {2020}, + journal = {IEEE Robotics and Automation Letters}, + volume = {5}, + number = {3}, + pages = {4978--4985}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9126187/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/U7573WRM/Song et al. - 2020 - Grasping in the wild Learning 6dof closed-loop gr.pdf} +} + +@article{2020-zeng-TossingbotLearningThrow, + title = {Tossingbot: {{Learning}} to Throw Arbitrary Objects with Residual Physics}, + shorttitle = {Tossingbot}, + author = {Zeng, Andy and Song, Shuran and Lee, Johnny and Rodriguez, Alberto and Funkhouser, Thomas}, + year = {2020}, + journal = {IEEE Transactions on Robotics}, + volume = {36}, + number = {4}, + pages = {1307--1319}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9104757/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/KC8NACZT/Zeng et al. - 2020 - TossingBot Learning to Throw Arbitrary Objects wi.pdf} +} + +@inproceedings{2021-breyer-VolumetricGraspingNetwork, + title = {Volumetric Grasping Network: {{Real-time}} 6 Dof Grasp Detection in Clutter}, + shorttitle = {Volumetric Grasping Network}, + booktitle = {Conference on {{Robot Learning}}}, + author = {Breyer, Michel and Chung, Jen Jen and Ott, Lionel and Siegwart, Roland and Nieto, Juan}, + year = {2021}, + pages = {1602--1611}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v155/breyer21a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/2VHGCFMP/Breyer et al. - 2021 - Volumetric grasping network Real-time 6 dof grasp.pdf} +} + +@inproceedings{2021-eppner-AcronymLargescaleGrasp, + title = {Acronym: {{A}} Large-Scale Grasp Dataset Based on Simulation}, + shorttitle = {Acronym}, + booktitle = {2021 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Eppner, Clemens and Mousavian, Arsalan and Fox, Dieter}, + year = {2021}, + pages = {6222--6227}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9560844/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/EU2UEKC8/Eppner et al. - 2021 - Acronym A large-scale grasp dataset based on simu.pdf} +} + +@inproceedings{2021-sundermeyer-ContactgraspnetEfficient6dof, + title = {Contact-Graspnet: {{Efficient}} 6-Dof Grasp Generation in Cluttered Scenes}, + shorttitle = {Contact-Graspnet}, + booktitle = {2021 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Sundermeyer, Martin and Mousavian, Arsalan and Triebel, Rudolph and Fox, Dieter}, + year = {2021}, + pages = {13438--13444}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9561877/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/C8GY3NSS/Sundermeyer et al. - 2021 - Contact-graspnet Efficient 6-dof grasp generation.pdf} +} + +@article{2022-ha-DeepVisualConstraints, + title = {Deep Visual Constraints: {{Neural}} Implicit Models for Manipulation Planning from Visual Input}, + shorttitle = {Deep Visual Constraints}, + author = {Ha, Jung-Su and Driess, Danny and Toussaint, Marc}, + year = {2022}, + journal = {IEEE Robotics and Automation Letters}, + volume = {7}, + number = {4}, + pages = {10857--10864}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9844753/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/PUZWSE5K/Ha et al. - 2022 - Deep visual constraints Neural implicit models fo.pdf} +} + +@incollection{2022-manuelli-KPAMKeyPointAffordances, + title = {{{KPAM}}: {{KeyPoint Affordances}} for {{Category-Level Robotic Manipulation}}}, + shorttitle = {{{KPAM}}}, + booktitle = {Robotics {{Research}}}, + author = {Manuelli, Lucas and Gao, Wei and Florence, Peter and Tedrake, Russ}, + editor = {Asfour, Tamim and Yoshida, Eiichi and Park, Jaeheung and Christensen, Henrik and Khatib, Oussama}, + year = {2022}, + volume = {20}, + pages = {132--157}, + delete_delete_delete_publisher = {Springer International Publishing}, + location = {Cham}, + delete_delete_delete_doi = {10.1007/978-3-030-95459-8_9}, + url = {https://link.springer.com/10.1007/978-3-030-95459-8_9}, + urlyear = {2024}, + isbn = {978-3-030-95458-1 978-3-030-95459-8}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/MSL38PAU/Manuelli et al. - 2019 - kPAM KeyPoint Affordances for Category-Level Robo.pdf} +} + +@inproceedings{2022-simeonov-NeuralDescriptorFields, + title = {Neural Descriptor Fields: {{Se}} (3)-Equivariant Object Representations for Manipulation}, + shorttitle = {Neural Descriptor Fields}, + booktitle = {2022 {{International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Simeonov, Anthony and Du, Yilun and Tagliasacchi, Andrea and Tenenbaum, Joshua B. and Rodriguez, Alberto and Agrawal, Pulkit and Sitzmann, Vincent}, + year = {2022}, + pages = {6394--6400}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9812146/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/GBWCG3SH/Simeonov et al. - 2022 - Neural descriptor fields Se (3)-equivariant objec.pdf} +} + +@article{2022-xu-UniversalManipulationPolicy, + title = {Universal Manipulation Policy Network for Articulated Objects}, + author = {Xu, Zhenjia and He, Zhanpeng and Song, Shuran}, + year = {2022}, + journal = {IEEE robotics and automation letters}, + volume = {7}, + number = {2}, + pages = {2447--2454}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9681198/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/IUAF37UD/Xu et al. - 2022 - UMPNet Universal Manipulation Policy Network for .pdf} +} + +@inproceedings{2023-chi-DiffusionPolicyVisuomotora, + title = {Diffusion {{Policy}}: {{Visuomotor Policy Learning}} via {{Action Diffusion}}}, + shorttitle = {Diffusion {{Policy}}}, + booktitle = {Robotics: {{Science}} and {{Systems XIX}}}, + author = {Chi, Cheng and Feng, Siyuan and Du, Yilun and Xu, Zhenjia and Cousineau, Eric and Burchfiel, Benjamin and Song, Shuran}, + year = {2023}, + delete_delete_delete_publisher = {{Robotics: Science and Systems Foundation}}, + delete_delete_delete_doi = {10.15607/RSS.2023.XIX.026}, + url = {http://www.roboticsproceedings.org/rss19/p026.pdf}, + urlyear = {2024}, + abstract = {This paper introduces Diffusion Policy, a new way of generating robot behavior by representing a robot’s visuomotor policy as a conditional denoising diffusion process. We benchmark Diffusion Policy across 12 different tasks from 4 different robot manipulation benchmarks and find that it consistently outperforms existing state-of-the-art robot learning methods with an average improvement of 46.9\%. Diffusion Policy learns the gradient of the action-distribution score function and iteratively optimizes with respect to this gradient field during inference via a series of stochastic Langevin dynamics steps. We find that the diffusion formulation yields powerful advantages when used for robot policies, including gracefully handling multimodal action distributions, being suitable for high-dimensional action spaces, and exhibiting impressive training stability. To fully unlock the potential of diffusion models for visuomotor policy learning on physical robots, this paper presents a set of key technical contributions including the incorporation of receding horizon control, visual conditioning, and the time-series diffusion transformer. We hope this work will help motivate a new generation of policy learning techniques that are able to leverage the powerful generative modeling capabilities of diffusion models. Code, data, and training details will be publicly available.}, + booktitle = {Robotics: {{Science}} and {{Systems}} 2023}, + isbn = {978-0-9923747-9-2}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/J4YZRG6N/Chi et al. - 2023 - Diffusion Policy Visuomotor Policy Learning via A.pdf} +} + +@article{2023-fang-AnygraspRobustEfficient, + title = {Anygrasp: {{Robust}} and Efficient Grasp Perception in Spatial and Temporal Domains}, + shorttitle = {Anygrasp}, + author = {Fang, Hao-Shu and Wang, Chenxi and Fang, Hongjie and Gou, Minghao and Liu, Jirong and Yan, Hengxu and Liu, Wenhai and Xie, Yichen and Lu, Cewu}, + year = {2023}, + journal = {IEEE Transactions on Robotics}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/10167687/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/VPY7PGCA/Fang et al. - 2023 - Anygrasp Robust and efficient grasp perception in.pdf} +} + +@article{2023-newbury-DeepLearningApproaches, + title = {Deep Learning Approaches to Grasp Synthesis: {{A}} Review}, + shorttitle = {Deep Learning Approaches to Grasp Synthesis}, + author = {Newbury, Rhys and Gu, Morris and Chumbley, Lachlan and Mousavian, Arsalan and Eppner, Clemens and Leitner, Jürgen and Bohg, Jeannette and Morales, Antonio and Asfour, Tamim and Kragic, Danica}, + year = {2023}, + journal = {IEEE Transactions on Robotics}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/10149823/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/A4MGJJAP/Newbury et al. - 2023 - Deep learning approaches to grasp synthesis A rev.pdf} +} + +@online{2023-shi-WaypointBasedImitationLearning, + title = {Waypoint-{{Based Imitation Learning}} for {{Robotic Manipulation}}}, + author = {Shi, Lucy Xiaoyang and Sharma, Archit and Zhao, Tony Z. and Finn, Chelsea}, + year = {2023}, + eprint = {2307.14326}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2307.14326}, + urlyear = {2024}, + abstract = {While imitation learning methods have seen a resurgent interest for robotic manipulation, the well-known problem of compounding errors continues to afflict behavioral cloning (BC). Waypoints can help address this problem by reducing the horizon of the learning problem for BC, and thus, the errors compounded over time. However, waypoint labeling is underspecified, and requires additional human supervision. Can we generate waypoints automatically without any additional human supervision? Our key insight is that if a trajectory segment can be approximated by linear motion, the endpoints can be used as waypoints. We propose Automatic Waypoint Extraction (AWE) for imitation learning, a preprocessing module to decompose a demonstration into a minimal set of waypoints which when interpolated linearly can approximate the trajectory up to a specified error threshold. AWE can be combined with any BC algorithm, and we find that AWE can increase the success rate of state-of-the-art algorithms by up to 25\% in simulation and by 4-28\% on real-world bimanual manipulation tasks, reducing the decision making horizon by up to a factor of 10. Videos and code are available at https://lucys0.github.io/awe/}, + pubstate = {preprint}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Machine Learning,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/C54KEBPP/Shi et al. - 2023 - Waypoint-Based Imitation Learning for Robotic Mani.pdf;/home/mtoussai/Zotero/storage/6K5TBX67/2307.html} +} + +@online{2023-tedrake-RoboticManipulationLecture, + title = {Robotic {{Manipulation}} - {{Lecture Website}}}, + author = {Tedrake, Russ}, + year = {2023}, + url = {https://manipulation.csail.mit.edu/index.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/MF2HIBRF/index.html} +} + +@inproceedings{2023-urain-SeDiffusionfieldsLearning, + title = {Se (3)-Diffusionfields: {{Learning}} Smooth Cost Functions for Joint Grasp and Motion Optimization through Diffusion}, + shorttitle = {Se (3)-Diffusionfields}, + booktitle = {2023 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Urain, Julen and Funk, Niklas and Peters, Jan and Chalvatzaki, Georgia}, + year = {2023}, + pages = {5923--5930}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/10161569/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/J5CPWDUT/Urain et al. - 2023 - Se (3)-diffusionfields Learning smooth cost funct.pdf} +} + +@online{2024-eisner-FlowBot3DLearning3D, + title = {{{FlowBot3D}}: {{Learning 3D Articulation Flow}} to {{Manipulate Articulated Objects}}}, + shorttitle = {{{FlowBot3D}}}, + author = {Eisner, Ben and Zhang, Harry and Held, David}, + year = {2024}, + eprint = {2205.04382}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2205.04382}, + urlyear = {2024}, + abstract = {We explore a novel method to perceive and manipulate 3D articulated objects that generalizes to enable a robot to articulate unseen classes of objects. We propose a vision-based system that learns to predict the potential motions of the parts of a variety of articulated objects to guide downstream motion planning of the system to articulate the objects. To predict the object motions, we train a neural network to output a dense vector field representing the point-wise motion direction of the points in the point cloud under articulation. We then deploy an analytical motion planner based on this vector field to achieve a policy that yields maximum articulation. We train the vision system entirely in simulation, and we demonstrate the capability of our system to generalize to unseen object instances and novel categories in both simulation and the real world, deploying our policy on a Sawyer robot with no finetuning. Results show that our system achieves state-of-the-art performance in both simulated and real-world experiments.}, + pubstate = {preprint}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Computer Vision and Pattern Recognition,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/2D2BVESP/Eisner et al. - 2024 - FlowBot3D Learning 3D Articulation Flow to Manipu.pdf;/home/mtoussai/Zotero/storage/QLZ2HUXS/2205.html} +} + +@online{2024-gao-BiKVILKeypointsbasedVisual, + title = {Bi-{{KVIL}}: {{Keypoints-based Visual Imitation Learning}} of {{Bimanual Manipulation Tasks}}}, + shorttitle = {Bi-{{KVIL}}}, + author = {Gao, Jianfeng and Jin, Xiaoshu and Krebs, Franziska and Jaquier, Noémie and Asfour, Tamim}, + year = {2024}, + eprint = {2403.03270}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2403.03270}, + urlyear = {2024}, + abstract = {Visual imitation learning has achieved impressive progress in learning unimanual manipulation tasks from a small set of visual observations, thanks to the latest advances in computer vision. However, learning bimanual coordination strategies and complex object relations from bimanual visual demonstrations, as well as generalizing them to categorical objects in novel cluttered scenes remain unsolved challenges. In this paper, we extend our previous work on keypoints-based visual imitation learning (\textbackslash mbox\{K-VIL\})\textasciitilde\textbackslash cite\{gao\_kvil\_2023\} to bimanual manipulation tasks. The proposed Bi-KVIL jointly extracts so-called \textbackslash emph\{Hybrid Master-Slave Relationships\} (HMSR) among objects and hands, bimanual coordination strategies, and sub-symbolic task representations. Our bimanual task representation is object-centric, embodiment-independent, and viewpoint-invariant, thus generalizing well to categorical objects in novel scenes. We evaluate our approach in various real-world applications, showcasing its ability to learn fine-grained bimanual manipulation tasks from a small number of human demonstration videos. Videos and source code are available at https://sites.google.com/view/bi-kvil.}, + pubstate = {preprint}, + keywords = {Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/GDGJTWMI/Gao et al. - 2024 - Bi-KVIL Keypoints-based Visual Imitation Learning.pdf;/home/mtoussai/Zotero/storage/FNIREUFB/2403.html} +} diff --git a/RobotLearning/b7-TampLearning.bib b/RobotLearning/b7-TampLearning.bib new file mode 100644 index 0000000..1b1eef7 --- /dev/null +++ b/RobotLearning/b7-TampLearning.bib @@ -0,0 +1,268 @@ +@inproceedings{2010-kollar-UnderstandingNaturalLanguage, + title = {Toward Understanding Natural Language Directions}, + booktitle = {2010 5th {{ACM}}/{{IEEE International Conference}} on {{Human-Robot Interaction}} ({{HRI}})}, + author = {Kollar, Thomas and Tellex, Stefanie and Roy, Deb and Roy, Nicholas}, + year = {2010}, + pages = {259--266}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/5453186/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/NCAYER9I/Kollar et al. - 2010 - Toward understanding natural language directions.pdf} +} + +@incollection{2013-matuszek-LearningParseNatural, + title = {Learning to {{Parse Natural Language Commands}} to a {{Robot Control System}}}, + booktitle = {Experimental {{Robotics}}}, + author = {Matuszek, Cynthia and Herbst, Evan and Zettlemoyer, Luke and Fox, Dieter}, + editor = {Desai, Jaydev P. and Dudek, Gregory and Khatib, Oussama and Kumar, Vijay}, + year = {2013}, + volume = {88}, + pages = {403--415}, + delete_delete_delete_publisher = {Springer International Publishing}, + location = {Heidelberg}, + delete_delete_delete_doi = {10.1007/978-3-319-00065-7_28}, + url = {https://link.springer.com/10.1007/978-3-319-00065-7_28}, + urlyear = {2024}, + isbn = {978-3-319-00064-0 978-3-319-00065-7}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/3RTSY9CX/Matuszek et al. - 2013 - Learning to Parse Natural Language Commands to a R.pdf} +} + +@inproceedings{2014-howard-NaturalLanguagePlanner, + title = {A Natural Language Planner Interface for Mobile Manipulators}, + booktitle = {2014 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Howard, Thomas M. and Tellex, Stefanie and Roy, Nicholas}, + year = {2014}, + pages = {6652--6659}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/6907841/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/HLT6TV3U/Howard et al. - 2014 - A natural language planner interface for mobile ma.pdf} +} + +@inproceedings{2015-toussaint-LogicGeometricProgrammingOptimizationBased, + title = {Logic-{{Geometric Programming}}: {{An Optimization-Based Approach}} to {{Combined Task}} and {{Motion Planning}}.}, + shorttitle = {Logic-{{Geometric Programming}}}, + booktitle = {{{IJCAI}}}, + author = {Toussaint, Marc}, + year = {2015}, + pages = {1930--1936}, + url = {https://argmin.lis.tu-berlin.de/papers/15-toussaint-IJCAI.pdf}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/T95BLUKJ/Toussaint - 2015 - Logic-Geometric Programming An Optimization-Based.pdf} +} + +@article{2016-paul-EfficientGroundingAbstract, + title = {Efficient Grounding of Abstract Spatial Concepts for Natural Language Interaction with Robot Manipulators}, + author = {Paul, Rohan and Arkin, Jacob and Roy, Nicholas and M Howard, Thomas}, + year = {2016}, + delete_delete_delete_publisher = {{Robotics: Science and Systems Foundation}}, + url = {https://dspace.mit.edu/handle/1721.1/116438}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/MSHMIAHB/Paul et al. - 2016 - Efficient grounding of abstract spatial concepts f.pdf} +} + +@article{2016-tamar-ValueIterationNetworks, + title = {Value Iteration Networks}, + author = {Tamar, Aviv and Wu, Yi and Thomas, Garrett and Levine, Sergey and Abbeel, Pieter}, + year = {2016}, + journal = {Advances in neural information processing systems}, + volume = {29}, + url = {https://proceedings.neurips.cc/paper_files/paper/2016/hash/c21002f464c5fc5bee3b98ced83963b8-Abstract.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/TQCKBXMV/Tamar et al. - 2016 - Value iteration networks.pdf} +} + +@inproceedings{2018-gopalan-SequencetoSequenceLanguageGrounding, + title = {Sequence-to-{{Sequence Language Grounding}} of {{Non-Markovian Task Specifications}}.}, + booktitle = {Robotics: {{Science}} and {{Systems}}}, + author = {Gopalan, Nakul and Arumugam, Dilip and Wong, Lawson LS and Tellex, Stefanie}, + year = {2018}, + volume = {2018}, + url = {https://dilipa.github.io/papers/rss18_seq2seq.pdf}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/CZ6RK2HR/Gopalan et al. - 2018 - Sequence-to-Sequence Language Grounding of Non-Mar.pdf} +} + +@article{2018-toussaint-DifferentiablePhysicsStable, + title = {Differentiable Physics and Stable Modes for Tool-Use and Manipulation Planning}, + author = {Toussaint, Marc A. and Allen, Kelsey Rebecca and Smith, Kevin A. and Tenenbaum, Joshua B.}, + year = {2018}, + delete_delete_delete_publisher = {{Robotics: Science and systems foundation}}, + url = {https://dspace.mit.edu/handle/1721.1/126626}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/XZKL2C69/Toussaint et al. - 2018 - Differentiable physics and stable modes for tool-u.pdf} +} + +@online{2020-driess-DeepVisualReasoning, + title = {Deep {{Visual Reasoning}}: {{Learning}} to {{Predict Action Sequences}} for {{Task}} and {{Motion Planning}} from an {{Initial Scene Image}}}, + shorttitle = {Deep {{Visual Reasoning}}}, + author = {Driess, Danny and Ha, Jung-Su and Toussaint, Marc}, + year = {2020}, + eprint = {2006.05398}, + eprinttype = {arXiv}, + eprintclass = {cs, stat}, + url = {http://arxiv.org/abs/2006.05398}, + urlyear = {2024}, + abstract = {In this paper, we propose a deep convolutional recurrent neural network that predicts action sequences for task and motion planning (TAMP) from an initial scene image. Typical TAMP problems are formalized by combining reasoning on a symbolic, discrete level (e.g. first-order logic) with continuous motion planning such as nonlinear trajectory optimization. Due to the great combinatorial complexity of possible discrete action sequences, a large number of optimization/motion planning problems have to be solved to find a solution, which limits the scalability of these approaches. To circumvent this combinatorial complexity, we develop a neural network which, based on an initial image of the scene, directly predicts promising discrete action sequences such that ideally only one motion planning problem has to be solved to find a solution to the overall TAMP problem. A key aspect is that our method generalizes to scenes with many and varying number of objects, although being trained on only two objects at a time. This is possible by encoding the objects of the scene in images as input to the neural network, instead of a fixed feature vector. Results show runtime improvements of several magnitudes. Video: https://youtu.be/i8yyEbbvoEk}, + pubstate = {preprint}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Computer Vision and Pattern Recognition,Computer Science - Machine Learning,Computer Science - Robotics,Statistics - Machine Learning}, + file = {/home/mtoussai/Zotero/storage/SLVRQ7UB/Driess et al. - 2020 - Deep Visual Reasoning Learning to Predict Action .pdf;/home/mtoussai/Zotero/storage/UASRLN8F/2006.html} +} + +@online{2020-nguyen-RobotObjectRetrieval, + title = {Robot {{Object Retrieval}} with {{Contextual Natural Language Queries}}}, + author = {Nguyen, Thao and Gopalan, Nakul and Patel, Roma and Corsaro, Matt and Pavlick, Ellie and Tellex, Stefanie}, + year = {2020}, + eprint = {2006.13253}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2006.13253}, + urlyear = {2024}, + abstract = {Natural language object retrieval is a highly useful yet challenging task for robots in human-centric environments. Previous work has primarily focused on commands specifying the desired object's type such as "scissors" and/or visual attributes such as "red," thus limiting the robot to only known object classes. We develop a model to retrieve objects based on descriptions of their usage. The model takes in a language command containing a verb, for example "Hand me something to cut," and RGB images of candiyear objects and selects the object that best satisfies the task specified by the verb. Our model directly predicts an object's appearance from the object's use specified by a verb phrase. We do not need to explicitly specify an object's class label. Our approach allows us to predict high level concepts like an object's utility based on the language query. Based on contextual information present in the language commands, our model can generalize to unseen object classes and unknown nouns in the commands. Our model correctly selects objects out of sets of five candiyears to fulfill natural language commands, and achieves an average accuracy of 62.3\% on a held-out test set of unseen ImageNet object classes and 53.0\% on unseen object classes and unknown nouns. Our model also achieves an average accuracy of 54.7\% on unseen YCB object classes, which have a different image distribution from ImageNet objects. We demonstrate our model on a KUKA LBR iiwa robot arm, enabling the robot to retrieve objects based on natural language descriptions of their usage. We also present a new dataset of 655 verb-object pairs denoting object usage over 50 verbs and 216 object classes.}, + pubstate = {preprint}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Computation and Language,Computer Science - Computer Vision and Pattern Recognition,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/7IWPHBL6/Nguyen et al. - 2020 - Robot Object Retrieval with Contextual Natural Lan.pdf;/home/mtoussai/Zotero/storage/7X4YAK26/2006.html} +} + +@article{2020-tellex-RobotsThatUse, + title = {Robots {{That Use Language}}}, + author = {Tellex, Stefanie and Gopalan, Nakul and Kress-Gazit, Hadas and Matuszek, Cynthia}, + year = {2020}, + journal = {Annual Review of Control, Robotics, and Autonomous Systems}, + shortjournal = {Annu. Rev. Control Robot. Auton. Syst.}, + volume = {3}, + number = {1}, + pages = {25--55}, + issn = {2573-5144, 2573-5144}, + delete_delete_delete_doi = {10.1146/annurev-control-101119-071628}, + url = {https://www.annualreviews.org/delete_delete_delete_doi/10.1146/annurev-control-101119-071628}, + urlyear = {2024}, + abstract = {This article surveys the use of natural language in robotics from a robotics point of view. To use human language, robots must map words to aspects of the physical world, mediated by the robot's sensors and actuators. This problem differs from other natural language processing domains due to the need to ground the language to noisy percepts and physical actions. Here, we describe central aspects of language use by robots, including understanding natural language requests, using language to drive learning about the physical world, and engaging in collaborative dialogue with a human partner. We describe common approaches, roughly divided into learning methods, logic-based methods, and methods that focus on questions of human–robot interaction. Finally, we describe several application domains for language-using robots.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/DKPP7IXR/Tellex et al. - Robots That Use Language A Survey.pdf} +} + +@inproceedings{2021-driess-LearningGeometricReasoning, + title = {Learning Geometric Reasoning and Control for Long-Horizon Tasks from Visual Input}, + booktitle = {2021 {{IEEE}} International Conference on Robotics and Automation ({{ICRA}})}, + author = {Driess, Danny and Ha, Jung-Su and Tedrake, Russ and Toussaint, Marc}, + year = {2021}, + pages = {14298--14305}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9560934/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/YAXKAM95/Driess et al. - 2021 - Learning geometric reasoning and control for long-.pdf} +} + +@article{2021-garrett-IntegratedTaskMotion, + title = {Integrated {{Task}} and {{Motion Planning}}}, + author = {Garrett, Caelan Reed and Chitnis, Rohan and Holladay, Rachel and Kim, Beomjoon and Silver, Tom and Kaelbling, Leslie Pack and Lozano-Pérez, Tomás}, + year = {2021}, + journal = {Annual Review of Control, Robotics, and Autonomous Systems}, + shortjournal = {Annu. Rev. Control Robot. Auton. Syst.}, + volume = {4}, + number = {1}, + pages = {265--293}, + issn = {2573-5144, 2573-5144}, + delete_delete_delete_doi = {10.1146/annurev-control-091420-084139}, + url = {https://www.annualreviews.org/delete_delete_delete_doi/10.1146/annurev-control-091420-084139}, + urlyear = {2024}, + abstract = {The problem of planning for a robot that operates in environments containing a large number of objects, taking actions to move itself through the world as well as to change the state of the objects, is known as task and motion planning (TAMP). TAMP problems contain elements of discrete task planning, discrete–continuous mathematical programming, and continuous motion planning and thus cannot be effectively addressed by any of these fields directly. In this article, we define a class of TAMP problems and survey algorithms for solving them, characterizing the solution methods in terms of their strategies for solving the continuous-space subproblems and their techniques for integrating the discrete and continuous components of the search.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/VEYZWPUX/Garrett et al. - 2021 - Integrated Task and Motion Planning.pdf} +} + +@inproceedings{2021-radford-LearningTransferableVisual, + title = {Learning Transferable Visual Models from Natural Language Supervision}, + booktitle = {International Conference on Machine Learning}, + author = {Radford, Alec and Kim, Jong Wook and Hallacy, Chris and Ramesh, Aditya and Goh, Gabriel and Agarwal, Sandhini and Sastry, Girish and Askell, Amanda and Mishkin, Pamela and Clark, Jack}, + year = {2021}, + pages = {8748--8763}, + delete_delete_delete_publisher = {PMLR}, + url = {http://proceedings.mlr.press/v139/radford21a}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/4R9QN9ET/Radford et al. - 2021 - Learning transferable visual models from natural l.pdf} +} + +@article{2022-ha-DeepVisualConstraintsa, + title = {Deep Visual Constraints: {{Neural}} Implicit Models for Manipulation Planning from Visual Input}, + shorttitle = {Deep Visual Constraints}, + author = {Ha, Jung-Su and Driess, Danny and Toussaint, Marc}, + year = {2022}, + journal = {IEEE Robotics and Automation Letters}, + volume = {7}, + number = {4}, + pages = {10857--10864}, + delete_delete_delete_publisher = {IEEE}, + url = {https://ieeexplore.ieee.org/abstract/document/9844753/}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/UQ9FPNAW/Ha et al. - 2022 - Deep visual constraints Neural implicit models fo.pdf} +} + +@inproceedings{2022-shridhar-CliportWhatWhere, + title = {Cliport: {{What}} and Where Pathways for Robotic Manipulation}, + shorttitle = {Cliport}, + booktitle = {Conference on Robot Learning}, + author = {Shridhar, Mohit and Manuelli, Lucas and Fox, Dieter}, + year = {2022}, + pages = {894--906}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v164/shridhar22a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/LDUN9ZZ7/Shridhar et al. - 2022 - Cliport What and where pathways for robotic manip.pdf} +} + +@inproceedings{2023-brohan-CanNotSay, + title = {Do as i Can, Not as i Say: {{Grounding}} Language in Robotic Affordances}, + shorttitle = {Do as i Can, Not as i Say}, + booktitle = {Conference on Robot Learning}, + author = {Brohan, Anthony and Chebotar, Yevgen and Finn, Chelsea and Hausman, Karol and Herzog, Alexander and Ho, Daniel and Ibarz, Julian and Irpan, Alex and Jang, Eric and Julian, Ryan}, + year = {2023}, + pages = {287--318}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v205/ichter23a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/FC4PP9P9/Ahn et al. - Do As I Can, Not As I Say Grounding Language in R.pdf} +} + +@inproceedings{2023-driess-LearningMultiobjectDynamicsa, + title = {Learning Multi-Object Dynamics with Compositional Neural Radiance Fields}, + booktitle = {Conference on Robot Learning}, + author = {Driess, Danny and Huang, Zhiao and Li, Yunzhu and Tedrake, Russ and Toussaint, Marc}, + year = {2023}, + pages = {1755--1768}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v205/driess23a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/JMYXEAKE/Driess et al. - 2023 - Learning multi-object dynamics with compositional .pdf} +} + +@online{2023-driess-PaLMEEmbodiedMultimodala, + title = {{{PaLM-E}}: {{An Embodied Multimodal Language Model}}}, + shorttitle = {{{PaLM-E}}}, + author = {Driess, Danny and Xia, Fei and Sajjadi, Mehdi S. M. and Lynch, Corey and Chowdhery, Aakanksha and Ichter, Brian and Wahid, Ayzaan and Tompson, Jonathan and Vuong, Quan and Yu, Tianhe and Huang, Wenlong and Chebotar, Yevgen and Sermanet, Pierre and Duckworth, Daniel and Levine, Sergey and Vanhoucke, Vincent and Hausman, Karol and Toussaint, Marc and Greff, Klaus and Zeng, Andy and Mordatch, Igor and Florence, Pete}, + year = {2023}, + eprint = {2303.03378}, + eprinttype = {arXiv}, + eprintclass = {cs}, + url = {http://arxiv.org/abs/2303.03378}, + urlyear = {2024}, + abstract = {Large language models excel at a wide range of complex tasks. However, enabling general inference in the real world, e.g., for robotics problems, raises the challenge of grounding. We propose embodied language models to directly incorporate real-world continuous sensor modalities into language models and thereby establish the link between words and percepts. Input to our embodied language model are multi-modal sentences that interleave visual, continuous state estimation, and textual input encodings. We train these encodings end-to-end, in conjunction with a pre-trained large language model, for multiple embodied tasks including sequential robotic manipulation planning, visual question answering, and captioning. Our evaluations show that PaLM-E, a single large embodied multimodal model, can address a variety of embodied reasoning tasks, from a variety of observation modalities, on multiple embodiments, and further, exhibits positive transfer: the model benefits from diverse joint training across internet-scale language, vision, and visual-language domains. Our largest model, PaLM-E-562B with 562B parameters, in addition to being trained on robotics tasks, is a visual-language generalist with state-of-the-art performance on OK-VQA, and retains generalist language capabilities with increasing scale.}, + pubstate = {preprint}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Machine Learning,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/8D9I88PE/Driess et al. - 2023 - PaLM-E An Embodied Multimodal Language Model.pdf;/home/mtoussai/Zotero/storage/73CXFSVF/2303.html} +} + +@inproceedings{2023-zitkovich-Rt2VisionlanguageactionModels, + title = {Rt-2: {{Vision-language-action}} Models Transfer Web Knowledge to Robotic Control}, + shorttitle = {Rt-2}, + booktitle = {Conference on {{Robot Learning}}}, + author = {Zitkovich, Brianna and Yu, Tianhe and Xu, Sichun and Xu, Peng and Xiao, Ted and Xia, Fei and Wu, Jialin and Wohlhart, Paul and Welker, Stefan and Wahid, Ayzaan}, + year = {2023}, + pages = {2165--2183}, + delete_delete_delete_publisher = {PMLR}, + url = {https://proceedings.mlr.press/v229/zitkovich23a.html}, + urlyear = {2024}, + file = {/home/mtoussai/Zotero/storage/PJLASJ5D/Brohan et al. - RT-2 Vision-Language-Action Models Transfer Web K.pdf;/home/mtoussai/Zotero/storage/M4WJHT67/zitkovich23a.html} +} diff --git a/RobotLearning/b8-MultiRobotLearning.bib b/RobotLearning/b8-MultiRobotLearning.bib new file mode 100644 index 0000000..746b456 --- /dev/null +++ b/RobotLearning/b8-MultiRobotLearning.bib @@ -0,0 +1,516 @@ +@inproceedings{2017-lowe-MultiAgentActorCriticMixed, + title = {Multi-{{Agent Actor-Critic}} for {{Mixed Cooperative-Competitive Environments}}}, + booktitle = {Advances in {{Neural Information Processing Systems}}}, + author = {Lowe, Ryan and family=WU, given=YI, given-i=YI and Tamar, Aviv and Harb, Jean and Pieter Abbeel, OpenAI and Mordatch, Igor}, + year = {2017}, + volume = {30}, + delete_delete_delete_publisher = {Curran Associates, Inc.}, + url = {https://proceedings.neurips.cc/paper_files/paper/2017/hash/68a9750337a418a86fe06c1991a1d64c-Abstract.html}, + urlyear = {2024}, + abstract = {We explore deep reinforcement learning methods for multi-agent domains. We begin by analyzing the difficulty of traditional algorithms in the multi-agent case: Q-learning is challenged by an inherent non-stationarity of the environment, while policy gradient suffers from a variance that increases as the number of agents grows. We then present an adaptation of actor-critic methods that considers action policies of other agents and is able to successfully learn policies that require complex multi-agent coordination. Additionally, we introduce a training regimen utilizing an ensemble of policies for each agent that leads to more robust multi-agent policies. We show the strength of our approach compared to existing methods in cooperative as well as competitive scenarios, where agent populations are able to discover various physical and informational coordination strategies.}, + file = {/home/mtoussai/Zotero/storage/FHWHRDC2/Lowe et al. - 2017 - Multi-Agent Actor-Critic for Mixed Cooperative-Com.pdf} +} + +@inproceedings{2017-zaheer-DeepSets, + title = {Deep {{Sets}}}, + booktitle = {Advances in {{Neural Information Processing Systems}}}, + author = {Zaheer, Manzil and Kottur, Satwik and Ravanbakhsh, Siamak and Poczos, Barnabas and Salakhutdinov, Russ R and Smola, Alexander J}, + year = {2017}, + volume = {30}, + delete_delete_delete_publisher = {Curran Associates, Inc.}, + url = {https://papers.nips.cc/paper_files/paper/2017/hash/f22e4747da1aa27e363d86d40ff442fe-Abstract.html}, + urlyear = {2024}, + abstract = {We study the problem of designing models for machine learning tasks defined on sets. In contrast to the traditional approach of operating on fixed dimensional vectors, we consider objective functions defined on sets and are invariant to permutations. Such problems are widespread, ranging from the estimation of population statistics, to anomaly detection in piezometer data of embankment dams, to cosmology. Our main theorem characterizes the permutation invariant objective functions and provides a family of functions to which any permutation invariant objective function must belong. This family of functions has a special structure which enables us to design a deep network architecture that can operate on sets and which can be deployed on a variety of scenarios including both unsupervised and supervised learning tasks. We demonstrate the applicability of our method on population statistic estimation, point cloud classification, set expansion, and outlier detection.}, + file = {/home/mtoussai/Zotero/storage/CP2BILA5/Zaheer et al. - 2017 - Deep Sets.pdf} +} + +@inproceedings{2018-everett-MotionPlanningDynamic, + title = {Motion {{Planning Among Dynamic}}, {{Decision-Making Agents}} with {{Deep Reinforcement Learning}}}, + booktitle = {2018 {{IEEE}}/{{RSJ International Conference}} on {{Intelligent Robots}} and {{Systems}} ({{IROS}})}, + author = {Everett, Michael and Chen, Yu Fan and How, Jonathan P.}, + year = {2018}, + pages = {3052--3059}, + delete_delete_delete_publisher = {IEEE}, + location = {Madrid}, + delete_delete_delete_doi = {10.1109/IROS.2018.8593871}, + url = {https://ieeexplore.ieee.org/document/8593871/}, + urlyear = {2024}, + booktitle = {2018 {{IEEE}}/{{RSJ International Conference}} on {{Intelligent Robots}} and {{Systems}} ({{IROS}})}, + isbn = {978-1-5386-8094-0}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/KXMBPUDG/Everett et al. - 2018 - Motion Planning Among Dynamic, Decision-Making Age.pdf} +} + +@article{2018-sunehag-ValueDecompositionNetworksCooperative, + title = {Value-{{Decomposition Networks For Cooperative Multi-Agent Learning Based On Team Reward}}}, + author = {Sunehag, Peter and Lever, Guy and Gruslys, Audrunas and Czarnecki, Wojciech Marian and Zambaldi, Vinicius and Jaderberg, Max and Lanctot, Marc and Sonnerat, Nicolas and Leibo, Joel Z and Tuyls, Karl and Graepel, Thore}, + year = {2018}, + abstract = {We study the problem of cooperative multi-agent reinforcement learning with a single joint reward signal. This class of learning problems is difficult because of the often large combined action and observation spaces. In the fully centralized and decentralized approaches, we find the problem of spurious rewards and a phenomenon we call the “lazy agent” problem, which arises due to partial observability. We address these problems by training individual agents with a novel value-decomposition network architecture, which learns to decompose the team value function into agent-wise value functions.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/AFV8ZGZH/Sunehag et al. - 2018 - Value-Decomposition Networks For Cooperative Multi.pdf} +} + +@article{2019-sartoretti-PRIMALPathfindingReinforcement, + title = {{{PRIMAL}}: {{Pathfinding}} via {{Reinforcement}} and {{Imitation Multi-Agent Learning}}}, + shorttitle = {{{PRIMAL}}}, + author = {Sartoretti, Guillaume and Kerr, Justin and Shi, Yunfei and Wagner, Glenn and Kumar, T. K. Satish and Koenig, Sven and Choset, Howie}, + year = {2019}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {4}, + number = {3}, + pages = {2378--2385}, + issn = {2377-3766, 2377-3774}, + delete_delete_delete_doi = {10.1109/LRA.2019.2903261}, + url = {https://ieeexplore.ieee.org/document/8661608/}, + urlyear = {2024}, + abstract = {Multi-agent path finding (MAPF) is an essential component of many large-scale, real-world robot deployments, from aerial swarms to warehouse automation. However, despite the community’s continued efforts, most state-of-the-art MAPF planners still rely on centralized planning and scale poorly past a few hundred agents. Such planning approaches are maladapted to realworld deployments, where noise and uncertainty often require paths be recomputed online, which is impossible when planning times are in seconds to minutes. We present PRIMAL, a novel framework for MAPF that combines reinforcement and imitation learning to teach fully decentralized policies, where agents reactively plan paths online in a partially observable world while exhibiting implicit coordination. This framework extends our previous work on distributed learning of collaborative policies by introducing demonstrations of an expert MAPF planner during training, as well as careful reward shaping and environment sampling. Once learned, the resulting policy can be copied onto any number of agents and naturally scales to different team sizes and world dimensions. We present results on randomized worlds with up to 1024 agents and compare success rates against state-of-the-art MAPF planners. Finally, we experimentally valiyear the learned policies in a hybrid simulation of a factory mockup, involving both real world and simulated robots.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/BFYHZGKY/Sartoretti et al. - 2019 - PRIMAL Pathfinding via Reinforcement and Imitatio.pdf} +} + +@article{2020-fan-DistributedMultirobotCollision, + title = {Distributed Multi-Robot Collision Avoidance via Deep Reinforcement Learning for Navigation in Complex Scenarios}, + author = {Fan, Tingxiang and Long, Pinxin and Liu, Wenxi and Pan, Jia}, + year = {2020}, + journal = {The International Journal of Robotics Research}, + shortjournal = {The International Journal of Robotics Research}, + volume = {39}, + number = {7}, + pages = {856--892}, + issn = {0278-3649, 1741-3176}, + delete_delete_delete_doi = {10.1177/0278364920916531}, + url = {http://journals.sagepub.com/delete_delete_delete_doi/10.1177/0278364920916531}, + urlyear = {2024}, + abstract = {Developing a safe and efficient collision-avoidance policy for multiple robots is challenging in the decentralized scenarios where each robot generates its paths with limited observation of other robots’ states and intentions. Prior distributed multi-robot collision-avoidance systems often require frequent inter-robot communication or agent-level features to plan a local collision-free action, which is not robust and computationally prohibitive. In addition, the performance of these methods is not comparable with their centralized counterparts in practice. In this article, we present a decentralized sensor-level collision-avoidance policy for multi-robot systems, which shows promising results in practical applications. In particular, our policy directly maps raw sensor measurements to an agent’s steering commands in terms of the movement velocity. As a first step toward reducing the performance gap between decentralized and centralized methods, we present a multi-scenario multi-stage training framework to learn an optimal policy. The policy is trained over a large number of robots in rich, complex environments simultaneously using a policy-gradient-based reinforcement-learning algorithm. The learning algorithm is also integrated into a hybrid control framework to further improve the policy’s robustness and effectiveness. We valiyear the learned sensor-level collision-3avoidance policy in a variety of simulated and real-world scenarios with thorough performance evaluations for large-scale multi-robot systems. The generalization of the learned policy is verified in a set of unseen scenarios including the navigation of a group of heterogeneous robots and a large-scale scenario with 100 robots. Although the policy is trained using simulation data only, we have successfully deployed it on physical robots with shapes and dynamics characteristics that are different from the simulated agents, in order to demonstrate the controller’s robustness against the simulation-to-real modeling error. Finally, we show that the collision-avoidance policy learned from multi-robot navigation tasks provides an excellent solution for safe and effective autonomous navigation for a single robot working in a dense real human crowd. Our learned policy enables a robot to make effective progress in a crowd without getting stuck. More importantly, the policy has been successfully deployed on different types of physical robot platforms without tedious parameter tuning. Videos are available at https://sites.google. com/view/hybridmrca.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/4GPWDTU4/Fan et al. - 2020 - Distributed multi-robot collision avoidance via de.pdf} +} + +@article{2020-hu-VoronoiBasedMultiRobotAutonomous, + title = {Voronoi-{{Based Multi-Robot Autonomous Exploration}} in {{Unknown Environments}} via {{Deep Reinforcement Learning}}}, + author = {Hu, Junyan and Niu, Hanlin and Carrasco, Joaquin and Lennox, Barry and Arvin, Farshad}, + year = {2020}, + journal = {IEEE Transactions on Vehicular Technology}, + shortjournal = {IEEE Trans. Veh. Technol.}, + volume = {69}, + number = {12}, + pages = {14413--14423}, + issn = {0018-9545, 1939-9359}, + delete_delete_delete_doi = {10.1109/TVT.2020.3034800}, + url = {https://ieeexplore.ieee.org/document/9244647/}, + urlyear = {2024}, + abstract = {Autonomous exploration is an important application of multi-vehicle systems, where a team of networked robots are coordinated to explore an unknown environment collaboratively. This technique has earned significant research interest due to its usefulness in search and rescue, fault detection and monitoring, localization and mapping, etc. In this paper, a novel cooperative exploration strategy is proposed for multiple mobile robots, which reduces the overall task completion time and energy costs compared to conventional methods. To efficiently navigate the networked robots during the collaborative tasks, a hierarchical control architecture is designed which contains a high-level decision making layer and a low-level target tracking layer. The proposed cooperative exploration approach is developed using dynamic Voronoi partitions, which minimizes duplicated exploration areas by assigning different target locations to individual robots. To deal with sudden obstacles in the unknown environment, an integrated deep reinforcement learning based collision avoidance algorithm is then proposed, which enables the control policy to learn from human demonstration data and thus improve the learning speed and performance. Finally, simulation and experimental results are provided to demonstrate the effectiveness of the proposed scheme.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/3X8D3IAJ/Hu et al. - 2020 - Voronoi-Based Multi-Robot Autonomous Exploration i.pdf} +} + +@inproceedings{2020-li-GraphNeuralNetworks, + title = {Graph {{Neural Networks}} for {{Decentralized Multi-Robot Path Planning}}}, + booktitle = {2020 {{IEEE}}/{{RSJ International Conference}} on {{Intelligent Robots}} and {{Systems}} ({{IROS}})}, + author = {Li, Qingbiao and Gama, Fernando and Ribeiro, Alejandro and Prorok, Amanda}, + year = {2020}, + pages = {11785--11792}, + delete_delete_delete_publisher = {IEEE}, + location = {Las Vegas, NV, USA}, + delete_delete_delete_doi = {10.1109/IROS45743.2020.9341668}, + url = {https://ieeexplore.ieee.org/document/9341668/}, + urlyear = {2024}, + abstract = {Effective communication is key to successful, decentralized, multi-robot path planning. Yet, it is far from obvious what information is crucial to the task at hand, and how and when it must be shared among robots. To side-step these issues and move beyond hand-crafted heuristics, we propose a combined model that automatically synthesizes local communication and decision-making policies for robots navigating in constrained workspaces. Our architecture is composed of a convolutional neural network (CNN) that extracts adequate features from local observations, and a graph neural network (GNN) that communicates these features among robots. We train the model to imitate an expert algorithm, and use the resulting model online in decentralized planning involving only local communication and local observations. We evaluate our method in simulations by navigating teams of robots to their destinations in 2D cluttered workspaces. We measure the success rates and sum of costs over the planned paths. The results show a performance close to that of our expert algorithm, demonstrating the validity of our approach. In particular, we show our model’s capability to generalize to previously unseen cases (involving larger environments and larger robot teams).}, + booktitle = {2020 {{IEEE}}/{{RSJ International Conference}} on {{Intelligent Robots}} and {{Systems}} ({{IROS}})}, + isbn = {978-1-72816-212-6}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/2PTD57QB/Li et al. - 2020 - Graph Neural Networks for Decentralized Multi-Robo.pdf} +} + +@article{2020-riviere-GLASGlobaltoLocalSafe, + title = {{{GLAS}}: {{Global-to-Local Safe Autonomy Synthesis}} for {{Multi-Robot Motion Planning With End-to-End Learning}}}, + shorttitle = {{{GLAS}}}, + author = {Riviere, Benjamin and Honig, Wolfgang and Yue, Yisong and Chung, Soon-Jo}, + year = {2020}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {5}, + number = {3}, + pages = {4249--4256}, + issn = {2377-3766, 2377-3774}, + delete_delete_delete_doi = {10.1109/LRA.2020.2994035}, + url = {https://ieeexplore.ieee.org/document/9091314/}, + urlyear = {2024}, + abstract = {We present GLAS: Global-to-Local Autonomy Synthesis, a provably-safe, automated distributed policy generation for multi-robot motion planning. Our approach combines the advantage of centralized planning of avoiding local minima with the advantage of decentralized controllers of scalability and distributed computation. In particular, our synthesized policies only require relative state information of nearby neighbors and obstacles, and compute a provably-safe action. Our approach has three major components: i) we generate demonstration trajectories using a global planner and extract local observations from them, ii) we use deep imitation learning to learn a decentralized policy that can run efficiently online, and iii) we introduce a novel differentiable safety module to ensure collision-free operation, thereby allowing for end-to-end policy training. Our numerical experiments demonstrate that our policies have a 20\% higher success rate than optimal reciprocal collision avoidance, ORCA, across a wide range of robot and obstacle densities. We demonstrate our method on an aerial swarm, executing the policy on low-end microcontrollers in real-time.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/53RL3PQW/Riviere et al. - 2020 - GLAS Global-to-Local Safe Autonomy Synthesis for .pdf} +} + +@inproceedings{2020-shi-NeuralSwarmDecentralizedCloseProximity, + title = {Neural-{{Swarm}}: {{Decentralized Close-Proximity Multirotor Control Using Learned Interactions}}}, + shorttitle = {Neural-{{Swarm}}}, + booktitle = {2020 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Shi, Guanya and Honig, Wolfgang and Yue, Yisong and Chung, Soon-Jo}, + year = {2020}, + pages = {3241--3247}, + delete_delete_delete_publisher = {IEEE}, + location = {Paris, France}, + delete_delete_delete_doi = {10.1109/ICRA40945.2020.9196800}, + url = {https://ieeexplore.ieee.org/document/9196800/}, + urlyear = {2024}, + abstract = {In this paper, we present Neural-Swarm, a nonlinear decentralized stable controller for close-proximity flight of multirotor swarms. Close-proximity control is challenging due to the complex aerodynamic interaction effects between multirotors, such as downwash from higher vehicles to lower ones. Conventional methods often fail to properly capture these interaction effects, resulting in controllers that must maintain large safety distances between vehicles, and thus are not capable of close-proximity flight. Our approach combines a nominal dynamics model with a regularized permutation-invariant Deep Neural Network (DNN) that accurately learns the high-order multi-vehicle interactions. We design a stable nonlinear tracking controller using the learned model. Experimental results demonstrate that the proposed controller significantly outperforms a baseline nonlinear tracking controller with up to four times smaller worst-case height tracking errors. We also empirically demonstrate the ability of our learned model to generalize to larger swarm sizes.}, + booktitle = {2020 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + isbn = {978-1-72817-395-5}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/VEMEJII2/Shi et al. - 2020 - Neural-Swarm Decentralized Close-Proximity Multir.pdf} +} + +@inproceedings{2020-tolstaya-LearningDecentralizedControllers, + title = {Learning {{Decentralized Controllers}} for {{Robot Swarms}} with {{Graph Neural Networks}}}, + booktitle = {Proceedings of the {{Conference}} on {{Robot Learning}}}, + author = {Tolstaya, Ekaterina and Gama, Fernando and Paulos, James and Pappas, George and Kumar, Vijay and Ribeiro, Alejandro}, + year = {2020}, + pages = {671--682}, + delete_delete_delete_publisher = {PMLR}, + issn = {2640-3498}, + url = {https://proceedings.mlr.press/v100/tolstaya20a.html}, + urlyear = {2024}, + abstract = {We consider the problem of finding distributed controllers for large networks of mobile robots with interacting dynamics and sparsely available communications. Our approach is to learn local controllers that require only local information and communications at test time by imitating the policy of centralized controllers using global information at training time. By extending aggregation graph neural networks to time varying signals and time varying network support, we learn a single common local controller which exploits information from distant teammates using only local communication interchanges. We apply this approach to the problem of flocking to demonstrate performance on communication graphs that change as the robots move. We examine how a decreasing communication radius and faster velocities increase the value of multi-hop information.}, + booktitle = {Conference on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/6ZXZYICM/Tolstaya et al. - 2020 - Learning Decentralized Controllers for Robot Swarm.pdf} +} + +@article{2021-damani-PRIMAL_2Pathfinding, + title = {{{PRIMAL}}\$\_2\$: {{Pathfinding Via Reinforcement}} and {{Imitation Multi-Agent Learning}} - {{Lifelong}}}, + shorttitle = {{{PRIMAL}}\$\_2\$}, + author = {Damani, Mehul and Luo, Zhiyao and Wenzel, Emerson and Sartoretti, Guillaume}, + year = {2021}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {6}, + number = {2}, + pages = {2666--2673}, + issn = {2377-3766, 2377-3774}, + delete_delete_delete_doi = {10.1109/LRA.2021.3062803}, + url = {https://ieeexplore.ieee.org/document/9366340/}, + urlyear = {2024}, + abstract = {Multi-agent path finding (MAPF) is an indispensable component of large-scale robot deployments in numerous domains ranging from airport management to warehouse automation. In particular, this work addresses lifelong MAPF (LMAPF) – an online variant of the problem where agents are immediately assigned a new goal upon reaching their current one – in dense and highly structured environments, typical of real-world warehouse operations. Effectively solving LMAPF in such environments requires expensive coordination between agents as well as frequent replanning abilities, a daunting task for existing coupled and decoupled approaches alike. With the purpose of achieving considerable agent coordination without any compromise on reactivity and scalability, we introduce PRIMAL2, a distributed reinforcement learning framework for LMAPF where agents learn fully decentralized policies to reactively plan paths online in a partially observable world. We extend our previous work, which was effective in low-density sparsely occupied worlds, to highly structured and constrained worlds by identifying behaviors and conventions which improve implicit agent coordination, and enable their learning through the construction of a novel local agent observation and various training aids. We present extensive results of PRIMAL2 in both MAPF and LMAPF environments and compare its performance to state-of-the-art planners in terms of makespan and throughput. We show that PRIMAL2 significantly surpasses our previous work and performs comparably to these baselines, while allowing real-time re-planning and scaling up to 2048 agents.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/5CDDPWN5/Damani et al. - 2021 - PRIMAL$_2$ Pathfinding Via Reinforcement and Imit.pdf} +} + +@inproceedings{2021-kortvelesy-ModGNNExpertPolicy, + title = {{{ModGNN}}: {{Expert Policy Approximation}} in {{Multi-Agent Systems}} with a {{Modular Graph Neural Network Architecture}}}, + shorttitle = {{{ModGNN}}}, + booktitle = {2021 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + author = {Kortvelesy, Ryan and Prorok, Amanda}, + year = {2021}, + pages = {9161--9167}, + delete_delete_delete_publisher = {IEEE}, + location = {Xi'an, China}, + delete_delete_delete_doi = {10.1109/ICRA48506.2021.9561386}, + url = {https://ieeexplore.ieee.org/document/9561386/}, + urlyear = {2024}, + abstract = {Recent work in the multi-agent domain has shown the promise of Graph Neural Networks (GNNs) to learn complex coordination strategies. However, most current approaches use minor variants of a Graph Convolutional Network (GCN), which applies a convolution to the communication graph formed by the multi-agent system. In this paper, we investigate whether the performance and generalization of GCNs can be improved upon. We introduce ModGNN, a decentralized framework which serves as a generalization of GCNs, providing more flexibility. To test our hypothesis, we evaluate an implementation of ModGNN against several baselines in the multi-agent flocking problem. We perform an ablation analysis to show that the most important component of our framework is one that does not exist in a GCN. By varying the number of agents, we also demonstrate that an application-agnostic implementation of ModGNN possesses an improved ability to generalize to new environments.}, + booktitle = {2021 {{IEEE International Conference}} on {{Robotics}} and {{Automation}} ({{ICRA}})}, + isbn = {978-1-72819-077-8}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/EV2ESCQ3/Kortvelesy and Prorok - 2021 - ModGNN Expert Policy Approximation in Multi-Agent.pdf} +} + +@article{2021-li-MessageAwareGraphAttention, + title = {Message-{{Aware Graph Attention Networks}} for {{Large-Scale Multi-Robot Path Planning}}}, + author = {Li, Qingbiao and Lin, Weizhe and Liu, Zhe and Prorok, Amanda}, + year = {2021}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {6}, + number = {3}, + pages = {5533--5540}, + issn = {2377-3766, 2377-3774}, + delete_delete_delete_doi = {10.1109/LRA.2021.3077863}, + url = {https://ieeexplore.ieee.org/document/9424371/}, + urlyear = {2024}, + abstract = {The domains of transport and logistics are increasingly relying on autonomous mobile robots for the handling and distribution of passengers or resources. At large system scales, finding decentralized path planning and coordination solutions is key to efficient system performance. Recently, Graph Neural Networks (GNNs) have become popular due to their ability to learn communication policies in decentralized multi-agent systems. Yet, vanilla GNNs rely on simplistic message aggregation mechanisms that prevent agents from prioritizing important information. To tackle this challenge, in this letter, we extend our previous work that utilizes GNNs in multi-agent path planning by incorporating a novel mechanism to allow for message-dependent attention. Our Message-Aware Graph Attention neTwork (MAGAT) is based on a key-query-like mechanism that determines the relative importance of features in the messages received from various neighboring robots. We show that MAGAT is able to achieve a performance close to that of a coupled centralized expert algorithm. Further, ablation studies and comparisons to several benchmark models show that our attention mechanism is very effective across different robot densities and performs stably in different constraints in communication bandwidth. Experiments demonstrate that our model is able to generalize well in previously unseen problem instances, and that it achieves a 47\% improvement over the benchmark success rate, even in very large-scale instances that are ×100 larger than the training instances.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/KH27ASU3/Li et al. - 2021 - Message-Aware Graph Attention Networks for Large-S.pdf} +} + +@article{2021-riviere-NeuralTreeExpansion, + title = {Neural {{Tree Expansion}} for {{Multi-Robot Planning}} in {{Non-Cooperative Environments}}}, + author = {Riviere, Benjamin and Honig, Wolfgang and Anderson, Matthew and Chung, Soon-Jo}, + year = {2021}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {6}, + number = {4}, + pages = {6868--6875}, + issn = {2377-3766, 2377-3774}, + delete_delete_delete_doi = {10.1109/LRA.2021.3096758}, + url = {https://ieeexplore.ieee.org/document/9484771/}, + urlyear = {2024}, + abstract = {We present a self-improving, Neural Tree Expansion (NTE) method for multi-robot online planning in non-cooperative environments, where each robot attempts to maximize its cumulative reward while interacting with other self-interested robots. Our algorithm adapts the centralized, perfect information, discreteaction space method from AlphaZero to a decentralized, partial information, continuous action space setting for multi-robot applications. Our method has three interacting components: (i) a centralized, perfect-information “expert” Monte Carlo Tree Search (MCTS) with large computation resources that provides expert demonstrations, (ii) a decentralized, partial-information “learner” MCTS with small computation resources that runs in real-time and provides self-play examples, and (iii) policy \& value neural networks that are trained with the expert demonstrations and bias both the expert and the learner tree growth. Our numerical experiments demonstrate Neural Tree Expansion’s computational advantage by finding better solutions than a MCTS with 20 times more resources. The resulting policies are dynamically sophisticated, demonstrate coordination between robots, and play the Reach-Target-Avoid differential game significantly better than the state-of-the-art control-theoretic baseline for multi-robot, doubleintegrator systems. Our hardware experiments on an aerial swarm demonstrate the computational advantage of Neural Tree Expansion, enabling online planning at 20 Hz with effective policies in complex scenarios.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/74S2QLG6/Riviere et al. - 2021 - Neural Tree Expansion for Multi-Robot Planning in .pdf} +} + +@article{2022-gama-SynthesizingDecentralizedControllers, + title = {Synthesizing {{Decentralized Controllers With Graph Neural Networks}} and {{Imitation Learning}}}, + author = {Gama, Fernando and Li, Qingbiao and Tolstaya, Ekaterina and Prorok, Amanda and Ribeiro, Alejandro}, + year = {2022}, + journal = {IEEE Transactions on Signal Processing}, + shortjournal = {IEEE Trans. Signal Process.}, + volume = {70}, + pages = {1932--1946}, + issn = {1053-587X, 1941-0476}, + delete_delete_delete_doi = {10.1109/TSP.2022.3166401}, + url = {https://ieeexplore.ieee.org/document/9755021/}, + urlyear = {2024}, + abstract = {Dynamical systems consisting of a set of autonomous agents face the challenge of having to accomplish a global task, relying only on local information. While centralized controllers are readily available, they face limitations in terms of scalability and implementation, as they do not respect the distributed information structure imposed by the network system of agents. Given the difficulties in finding optimal decentralized controllers, we propose a novel framework using graph neural networks (GNNs) to learn these controllers. GNNs are well-suited for the task since they are naturally distributed architectures and exhibit good scalability and transferability properties. We show that GNNs learn appropriate decentralized controllers by means of imitation learning, leverage their permutation invariance properties to successfully scale to larger teams and transfer to unseen scenarios at deployment time. The problems of flocking and multi-agent path planning are explored to illustrate the potential of GNNs in learning decentralized controllers.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/B33QIANH/Gama et al. - 2022 - Synthesizing Decentralized Controllers With Graph .pdf} +} + +@article{2022-shi-NeuralSwarm2PlanningControl, + title = {Neural-{{Swarm2}}: {{Planning}} and {{Control}} of {{Heterogeneous Multirotor Swarms Using Learned Interactions}}}, + shorttitle = {Neural-{{Swarm2}}}, + author = {Shi, Guanya and Honig, Wolfgang and Shi, Xichen and Yue, Yisong and Chung, Soon-Jo}, + year = {2022}, + journal = {IEEE Transactions on Robotics}, + shortjournal = {IEEE Trans. Robot.}, + volume = {38}, + number = {2}, + pages = {1063--1079}, + issn = {1552-3098, 1941-0468}, + delete_delete_delete_doi = {10.1109/TRO.2021.3098436}, + url = {https://ieeexplore.ieee.org/document/9508420/}, + urlyear = {2024}, + abstract = {We present Neural-Swarm2, a learning-based method for motion planning and control that allows heterogeneous multirotors in a swarm to safely fly in close proximity. Such operation for drones is challenging due to complex aerodynamic interaction forces, such as downwash generated by nearby drones and ground effect. Conventional planning and control methods neglect capturing these interaction forces, resulting in sparse swarm configuration during flight. Our approach combines a physics-based nominal dynamics model with learned deep neural networks with strong Lipschitz properties. We make use of two techniques to accurately predict the aerodynamic interactions between heterogeneous multirotors: 1) Spectral normalization for stability and generalization guarantees of unseen data and 2) heterogeneous deep sets for supporting any number of heterogeneous neighbors in a permutationinvariant manner without reducing expressiveness. The learned residual dynamics benefit both the proposed interaction-aware multirobot motion planning and the nonlinear tracking control design because the learned interaction forces reduce the modelling errors. Experimental results demonstrate that Neural-Swarm2 is able to generalize to larger swarms beyond training cases and significantly outperforms a baseline nonlinear tracking controller with up to three times reduction in worst-case tracking errors.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/K5RC9APD/Shi et al. - 2022 - Neural-Swarm2 Planning and Control of Heterogeneo.pdf} +} + +@article{2022-wang-DistributedReinforcementLearning, + title = {Distributed {{Reinforcement Learning}} for {{Robot Teams}}: A {{Review}}}, + shorttitle = {Distributed {{Reinforcement Learning}} for {{Robot Teams}}}, + author = {Wang, Yutong and Damani, Mehul and Wang, Pamela and Cao, Yuhong and Sartoretti, Guillaume}, + year = {2022}, + journal = {Current Robotics Reports}, + shortjournal = {Curr Robot Rep}, + volume = {3}, + number = {4}, + pages = {239--257}, + issn = {2662-4087}, + delete_delete_delete_doi = {10.1007/s43154-022-00091-8}, + url = {https://delete_delete_delete_doi.org/10.1007/s43154-022-00091-8}, + urlyear = {2024}, + abstract = {Recent advances in sensing, actuation, and computation have opened the door to multi-robot systems consisting of hundreds/thousands of robots, with promising applications to automated manufacturing, disaster relief, harvesting, last-mile delivery, port/airport operations, or search and rescue. The community has leveraged model-free multi-agent reinforcement learning (MARL) to devise efficient, scalable controllers for multi-robot systems (MRS). This review aims to provide an analysis of the state-of-the-art in distributed MARL for multi-robot cooperation.}, + langid = {english}, + keywords = {Communication learning,Cooperation,Mixed cooperative-competitive settings,Motion planning,Multi-robot systems,Reinforcement learning}, + file = {/home/mtoussai/Zotero/storage/VRUMZLA4/Wang et al. - 2022 - Distributed Reinforcement Learning for Robot Teams.pdf} +} + +@article{2022-yu-DiNNODistributedNeural, + title = {{{DiNNO}}: {{Distributed Neural Network Optimization}} for {{Multi-Robot Collaborative Learning}}}, + shorttitle = {{{DiNNO}}}, + author = {Yu, Javier and Vincent, Joseph A. and Schwager, Mac}, + year = {2022}, + journal = {IEEE Robotics and Automation Letters}, + volume = {7}, + number = {2}, + pages = {1896--1903}, + issn = {2377-3766}, + delete_delete_delete_doi = {10.1109/LRA.2022.3142402}, + url = {https://ieeexplore.ieee.org/abstract/document/9681319}, + urlyear = {2024}, + abstract = {We present DiNNO, a distributed algorithm that enables a group of robots to collaboratively optimize a deep neural network model while communicating over a mesh network. Each robot only has access to its own data and maintains its own version of the neural network, but eventually learns a model that is as good as if it had been trained on all the data centrally. No robot sends raw data over the wireless network, preserving data privacy and ensuring efficient use of wireless bandwidth. At each iteration, each robot approximately optimizes an augmented Lagrangian function, then communicates the resulting weights to its neighbors, upyears dual variables, and repeats. Eventually, all robots’ local model weights reach a consensus. For convex objective functions, this consensus is a global optimum. Unlike many existing methods we test our algorithm on robotics-related, deep learning tasks with nontrivial model architectures. We compare DiNNO to two benchmark distributed deep learning algorithms in (i) an MNIST image classification task, (ii) a multi-robot implicit mapping task, and (iii) a multi-robot reinforcement learning task. In these experiments we show that DiNNO performs well when faced with nonconvex deep learning objectives, time-varying communication graphs, and streaming data. In all experiments our method outperforms baselines, and was able to achieve validation loss equivalent to centrally trained models. See msl.stanford.edu/projects/dist\_nn\_train for videos and code.}, + booktitle = {{{IEEE Robotics}} and {{Automation Letters}}}, + keywords = {Data models,Deep learning,Deep learning methods,distributed robot systems,multi-robot systems,Neural networks,Optimization,Robots,Task analysis,Training}, + file = {/home/mtoussai/Zotero/storage/GXC7KSJJ/Yu et al. - 2022 - DiNNO Distributed Neural Network Optimization for.pdf;/home/mtoussai/Zotero/storage/753RABDB/9681319.html} +} + +@inproceedings{2022-yu-LearningControlAdmissibility, + title = {Learning {{Control Admissibility Models}} with {{Graph Neural Networks}} for {{Multi-Agent Navigation}}}, + author = {Yu, Chenning and Yu, Hongzhan and Gao, Sicun}, + year = {2022}, + url = {https://openreview.net/forum?id=xC-68ANJeK_}, + urlyear = {2024}, + abstract = {Deep reinforcement learning in continuous domains focuses on learning control policies that map states to distributions over actions that ideally concentrate on the optimal choices in each step. In multi-agent navigation problems, the optimal actions depend heavily on the agents' density. Their interaction patterns grow exponentially with respect to such density, making it hard for learning-based methods to generalize. We propose to switch the learning objectives from predicting the optimal actions to predicting sets of admissible actions, which we call control admissibility models (CAMs), such that they can be easily composed and used for online inference for an arbitrary number of agents. We design CAMs using graph neural networks and develop training methods that optimize the CAMs in the standard model-free setting, with the additional benefit of eliminating the need for reward engineering typically required to balance collision avoidance and goal-reaching requirements. We evaluate the proposed approach in multi-agent navigation environments. We show that the CAM models can be trained in environments with only a few agents and be easily composed for deployment in dense environments with hundreds of agents, achieving better performance than state-of-the-art methods.}, + booktitle = {6th {{Annual Conference}} on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/YAJBDF2B/Yu et al. - 2022 - Learning Control Admissibility Models with Graph N.pdf} +} + +@inproceedings{2022-zabounidis-ConceptLearningInterpretable, + title = {Concept {{Learning}} for {{Interpretable Multi-Agent Reinforcement Learning}}}, + author = {Zabounidis, Renos and Campbell, Joseph and Stepputtis, Simon and Hughes, Dana and Sycara, Katia P.}, + year = {2022}, + url = {https://openreview.net/forum?id=TAgVKiF2O8p}, + urlyear = {2024}, + abstract = {Multi-agent robotic systems are increasingly operating in real-world environments in close proximity to humans, yet are largely controlled by policy models with inscrutable deep neural network representations. We introduce a method for incorporating interpretable concepts from a domain expert into models trained through multi-agent reinforcement learning, by requiring the model to first predict such concepts then utilize them for decision making. This allows an expert to both reason about the resulting concept policy models in terms of these high-level concepts at run-time, as well as intervene and correct mispredictions to improve performance. We show that this yields improved interpretability and training stability, with benefits to policy performance and sample efficiency in a simulated and real-world cooperative-competitive multi-agent game.}, + booktitle = {6th {{Annual Conference}} on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/G5LR9HU5/Zabounidis et al. - 2022 - Concept Learning for Interpretable Multi-Agent Rei.pdf} +} + +@article{2022-zhou-MultiRobotCollaborativePerception, + title = {Multi-{{Robot Collaborative Perception With Graph Neural Networks}}}, + author = {Zhou, Yang and Xiao, Jiuhong and Zhou, Yue and Loianno, Giuseppe}, + year = {2022}, + journal = {IEEE Robotics and Automation Letters}, + shortjournal = {IEEE Robot. Autom. Lett.}, + volume = {7}, + number = {2}, + pages = {2289--2296}, + issn = {2377-3766, 2377-3774}, + delete_delete_delete_doi = {10.1109/LRA.2022.3141661}, + url = {https://ieeexplore.ieee.org/document/9676458/}, + urlyear = {2024}, + abstract = {Multi-robot systems such as swarms of aerial robots are naturally suited to offer additional flexibility, resilience, and robustness in several tasks compared to a single robot by enabling cooperation among the agents. To enhance the autonomous robot decision-making process and situational awareness, multi-robot systems have to coordinate their perception capabilities to collect, share, and fuse environment information among the agents efficiently to obtain context-appropriate information or gain resilience to sensor noise or failures. In this letter, we propose a general-purpose Graph Neural Network (GNN) with the main goal to increase, in multi-robot perception tasks, single robots’ inference perception accuracy as well as resilience to sensor failures and disturbances. We show that the proposed framework can address multi-view visual perception problems such as monocular depth estimation and semantic segmentation. Several experiments both using photo-realistic and real data gathered from multiple aerial robots’ viewpoints show the effectiveness of the proposed approach in challenging inference conditions including images corrupted by heavy noise and camera occlusions or failures.}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/FVI2HZBJ/Zhou et al. - 2022 - Multi-Robot Collaborative Perception With Graph Ne.pdf} +} + +@inproceedings{2023-howell-GeneralizationHeterogeneousMultiRobot, + title = {Generalization of {{Heterogeneous Multi-Robot Policies}} via {{Awareness}} and {{Communication}} of {{Capabilities}}}, + author = {Howell, Pierce and Rudolph, Max and Torbati, Reza Joseph and Fu, Kevin and Ravichandar, Harish}, + year = {2023}, + url = {https://openreview.net/forum?id=N3VbFUpwaa}, + urlyear = {2024}, + abstract = {Recent advances in multi-agent reinforcement learning (MARL) are enabling impressive coordination in heterogeneous multi-robot teams. However, existing approaches often overlook the challenge of generalizing learned policies to teams of new compositions, sizes, and robots. While such generalization might not be important in teams of virtual agents that can retrain policies on-demand, it is pivotal in multi-robot systems that are deployed in the real-world and must readily adapt to inevitable changes. As such, multi-robot policies must remain robust to team changes -- an ability we call adaptive teaming. In this work, we investigate if awareness and communication of robot capabilities can provide such generalization by conducting detailed experiments involving an established multi-robot test bed. We demonstrate that shared decentralized policies, that enable robots to be both aware of and communicate their capabilities, can achieve adaptive teaming by implicitly capturing the fundamental relationship between collective capabilities and effective coordination. Videos of trained policies can be viewed at https://sites.google.com/view/cap-comm .}, + booktitle = {7th {{Annual Conference}} on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/7A2NXQM5/Howell et al. - 2023 - Generalization of Heterogeneous Multi-Robot Polici.pdf} +} + +@inproceedings{2023-liu-TraCoLearningVirtual, + title = {{{TraCo}}: {{Learning Virtual Traffic Coordinator}} for {{Cooperation}} with {{Multi-Agent Reinforcement Learning}}}, + shorttitle = {{{TraCo}}}, + author = {Liu, Weiwei and Jing, Wei and Gao, Lingping and Guo, Ke and Xu, Gang and Liu, Yong}, + year = {2023}, + url = {https://openreview.net/forum?id=TgJ8vJUVUBR}, + urlyear = {2024}, + abstract = {Multi-agent reinforcement learning (MARL) has emerged as a popular technique in diverse domains due to its ability to automate system controller design and facilitate continuous intelligence learning. For instance, traffic flow is often trained with MARL to enable intelligent simulations for autonomous driving. However, The existing MARL algorithm only characterizes the relative degree of each agent's contribution to the team, and cannot express the contribution that the team needs from the agent. Especially in the field of autonomous driving, the team changes over time, and the agent needs to act directly according to the needs of the team. To address these limitations, we propose an innovative method inspired by realistic traffic coordinators called the Traffic Coordinator Network (TraCo). Our approach leverages a combination of cross-attention and counterfactual advantage function, allowing us to extract distinctive characteristics of domain agents and accurately quantify the contribution that a team needs from an agent. Through experiments conducted on four traffic tasks, we demonstrate that our method outperforms existing approaches, yielding superior performance. Furthermore, our approach enables the emergence of rich and diverse social behaviors among vehicles within the traffic flow.}, + booktitle = {7th {{Annual Conference}} on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/YAIL6YUZ/Liu et al. - 2023 - TraCo Learning Virtual Traffic Coordinator for Co.pdf} +} + +@article{2023-orr-MultiAgentDeepReinforcement, + title = {Multi-{{Agent Deep Reinforcement Learning}} for {{Multi-Robot Applications}}: {{A Survey}}}, + shorttitle = {Multi-{{Agent Deep Reinforcement Learning}} for {{Multi-Robot Applications}}}, + author = {Orr, James and Dutta, Ayan}, + year = {2023}, + journal = {Sensors}, + volume = {23}, + number = {7}, + pages = {3625}, + delete_delete_delete_publisher = {Multidisciplinary Digital Publishing Institute}, + issn = {1424-8220}, + delete_delete_delete_doi = {10.3390/s23073625}, + url = {https://www.mdpi.com/1424-8220/23/7/3625}, + urlyear = {2024}, + abstract = {Deep reinforcement learning has produced many success stories in recent years. Some example fields in which these successes have taken place include mathematics, games, health care, and robotics. In this paper, we are especially interested in multi-agent deep reinforcement learning, where multiple agents present in the environment not only learn from their own experiences but also from each other and its applications in multi-robot systems. In many real-world scenarios, one robot might not be enough to complete the given task on its own, and, therefore, we might need to deploy multiple robots who work together towards a common global objective of finishing the task. Although multi-agent deep reinforcement learning and its applications in multi-robot systems are of tremendous significance from theoretical and applied standpoints, the latest survey in this domain years to 2004 albeit for traditional learning applications as deep reinforcement learning was not invented. We classify the reviewed papers in our survey primarily based on their multi-robot applications. Our survey also discusses a few challenges that the current research in this domain faces and provides a potential list of future applications involving multi-robot systems that can benefit from advances in multi-agent deep reinforcement learning.}, + issue = {7}, + langid = {english}, + keywords = {deep reinforcement learning,multi-agent learning,multi-robot systems,survey}, + file = {/home/mtoussai/Zotero/storage/CWSG83PE/Orr and Dutta - 2023 - Multi-Agent Deep Reinforcement Learning for Multi-.pdf} +} + +@inproceedings{2023-wu-HijackingRobotTeams, + title = {Hijacking {{Robot Teams Through Adversarial Communication}}}, + author = {Wu, Zixuan and Ye, Sean Charles and Han, Byeolyi and Gombolay, Matthew}, + year = {2023}, + url = {https://openreview.net/forum?id=bIvIUNH9VQ}, + urlyear = {2024}, + abstract = {Communication is often necessary for robot teams to collaborate and complete a decentralized task. Multi-agent reinforcement learning (MARL) systems allow agents to learn how to collaborate and communicate to complete a task. These domains are ubiquitous and include safety-critical domains such as wildfire fighting, traffic control, or search and rescue missions. However, critical vulnerabilities may arise in communication systems as jamming the signals can interrupt the robot team. This work presents a framework for applying black-box adversarial attacks to learned MARL policies by manipulating only the communication signals between agents. Our system only requires observations of MARL policies after training is complete, as this is more realistic than attacking the training process. To this end, we imitate a learned policy of the targeted agents without direct interaction with the environment or ground truth rewards. Instead, we infer the rewards by only observing the behavior of the targeted agents. Our framework reduces reward by 201\% compared to an equivalent baseline method and also shows favorable results when deployed in real swarm robots. Our novel attack methodology within MARL systems contributes to the field by enhancing our understanding on the reliability of multi-agent systems.}, + booktitle = {7th {{Annual Conference}} on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/WMADPMG6/Wu et al. - 2023 - Hijacking Robot Teams Through Adversarial Communic.pdf} +} + +@inproceedings{2023-wu-IntentAwarePlanningHeterogeneous, + title = {Intent-{{Aware Planning}} in {{Heterogeneous Traffic}} via {{Distributed Multi-Agent Reinforcement Learning}}}, + author = {Wu, Xiyang and Chandra, Rohan and Guan, Tianrui and Bedi, Amrit and Manocha, Dinesh}, + year = {2023}, + url = {https://openreview.net/forum?id=EvuAJ0wD98}, + urlyear = {2024}, + abstract = {Navigating safely and efficiently in dense and heterogeneous traffic scenarios is challenging for autonomous vehicles (AVs) due to their inability to infer the behaviors or intentions of nearby drivers. In this work, we introduce a distributed multi-agent reinforcement learning (MARL) algorithm for joint trajectory and intent prediction for autonomous vehicles in dense and heterogeneous environments. Our approach for intent-aware planning, iPLAN, allows agents to infer nearby drivers' intents solely from their local observations. We model an explicit representation of agents' private incentives: Behavioral Incentive for high-level decision-making strategy that sets planning sub-goals and Instant Incentive for low-level motion planning to execute sub-goals. Our approach enables agents to infer their opponents' behavior incentives and integrate this inferred information into their decision-making and motion-planning processes. We perform experiments on two simulation environments, Non-Cooperative Navigation and Heterogeneous Highway. In Heterogeneous Highway, results show that, compared with centralized training decentralized execution (CTDE) MARL baselines such as QMIX and MAPPO, our method yields a \$4.3\textbackslash\%\$ and \$38.4\textbackslash\%\$ higher episodic reward in mild and chaotic traffic, with \$48.1\textbackslash\%\$ higher success rate and \$80.6\textbackslash\%\$ longer survival time in chaotic traffic. We also compare with a decentralized training decentralized execution (DTDE) baseline IPPO and demonstrate a higher episodic reward of \$12.7\textbackslash\%\$ and \$6.3\textbackslash\%\$ in mild traffic and chaotic traffic, \$25.3\textbackslash\%\$ higher success rate, and \$13.7\textbackslash\%\$ longer survival time.}, + booktitle = {7th {{Annual Conference}} on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/PEZ3FR3R/Wu et al. - 2023 - Intent-Aware Planning in Heterogeneous Traffic via.pdf} +} + +@inproceedings{2023-zhang-NeuralGraphControl, + title = {Neural {{Graph Control Barrier Functions Guided Distributed Collision-avoidance Multi-agent Control}}}, + author = {Zhang, Songyuan and Garg, Kunal and Fan, Chuchu}, + year = {2023}, + url = {https://openreview.net/forum?id=VscdYkKgwdH}, + urlyear = {2024}, + abstract = {We consider the problem of designing distributed collision-avoidance multi-agent control in large-scale environments with potentially moving obstacles, where a large number of agents are required to maintain safety using only local information and reach their goals. This paper addresses the problem of collision avoidance, scalability, and generalizability by introducing graph control barrier functions (GCBFs) for distributed control. The newly introduced GCBF is based on the well-established CBF theory for safety guarantees but utilizes a graph structure for scalable and generalizable decentralized control. We use graph neural networks to learn both neural a GCBF certificate and distributed control. We also extend the framework from handling state-based models to directly taking point clouds from LiDAR for more practical robotics settings. We demonstrated the efficacy of GCBF in a variety of numerical experiments, where the number, density, and traveling distance of agents, as well as the number of unseen and uncontrolled obstacles increase. Empirical results show that GCBF outperforms leading methods such as MAPPO and multi-agent distributed CBF (MDCBF). Trained with only \$16\$ agents, GCBF can achieve up to \$3\$ times improvement of success rate (agents reach goals and never encountered in any collisions) on \${$<$}500\$ agents, and still maintain more than \$50\textbackslash\%\$ success rates for \${$>\backslash$}!1000\$ agents when other methods completely fail.}, + booktitle = {7th {{Annual Conference}} on {{Robot Learning}}}, + langid = {english}, + file = {/home/mtoussai/Zotero/storage/W4VWX7DS/Zhang et al. - 2023 - Neural Graph Control Barrier Functions Guided Dist.pdf} +} + +@book{2024-bishop-DeepLearningFoundations, + title = {Deep {{Learning}}: {{Foundations}} and {{Concepts}}}, + shorttitle = {Deep {{Learning}}}, + author = {Bishop, Christopher M. and Bishop, Hugh}, + year = {2024}, + delete_delete_delete_publisher = {Springer International Publishing}, + location = {Cham}, + delete_delete_delete_doi = {10.1007/978-3-031-45468-4}, + url = {https://link.springer.com/10.1007/978-3-031-45468-4}, + urlyear = {2024}, + isbn = {978-3-031-45467-7 978-3-031-45468-4}, + langid = {english}, + keywords = {Convolutional networks,Decision theory,Deep learning,Directed graphical models,machine learning,Neural networks} +} + +@online{2024-chen-WhySolvingMultiagent, + title = {Why {{Solving Multi-agent Path Finding}} with {{Large Language Model}} Has Not {{Succeeded Yet}}}, + author = {Chen, Weizhe and Koenig, Sven and Dilkina, Bistra}, + year = {2024}, + eprint = {2401.03630}, + eprinttype = {arXiv}, + eprintclass = {cs}, + delete_delete_delete_doi = {10.48550/arXiv.2401.03630}, + url = {http://arxiv.org/abs/2401.03630}, + urlyear = {2024}, + abstract = {With the explosive influence caused by the success of large language models (LLM) like ChatGPT and GPT-4, there has been an extensive amount of recent work showing that foundation models can be used to solve a large variety of tasks. However, there is very limited work that shares insights on multi-agent planning. Multi-agent planning is different from other domains by combining the difficulty of multi-agent coordination and planning, and making it hard to leverage external tools to facilitate the reasoning needed. In this paper, we focus on the problem of multi-agent path finding (MAPF), which is also known as multi-robot route planning, and study the performance of solving MAPF with LLMs. We first show the motivating success on an empty room map without obstacles, then the failure to plan on the harder room map and maze map of the standard MAPF benchmark. We present our position on why directly solving MAPF with LLMs has not been successful yet, and we use various experiments to support our hypothesis. Based on our results, we discussed how researchers with different backgrounds could help with this problem from different perspectives.}, + pubstate = {prepublished}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Computation and Language,Computer Science - Multiagent Systems}, + file = {/home/mtoussai/Zotero/storage/BR9BTFS6/Chen et al. - 2024 - Why Solving Multi-agent Path Finding with Large La.pdf;/home/mtoussai/Zotero/storage/QCYFELAD/2401.html} +} + +@article{2024-garg-LearningSafeControl, + title = {Learning Safe Control for Multi-Robot Systems: {{Methods}}, Verification, and Open Challenges}, + shorttitle = {Learning Safe Control for Multi-Robot Systems}, + author = {Garg, Kunal and Zhang, Songyuan and So, Oswin and Dawson, Charles and Fan, Chuchu}, + year = {2024}, + journal = {Annual Reviews in Control}, + shortjournal = {Annual Reviews in Control}, + volume = {57}, + pages = {100948}, + issn = {1367-5788}, + delete_delete_delete_doi = {10.1016/j.arcontrol.2024.100948}, + url = {https://www.sciencedirect.com/science/article/pii/S1367578824000178}, + urlyear = {2024}, + abstract = {In this survey, we review the recent advances in control design methods for robotic multi-agent systems (MAS), focusing on learning-based methods with safety considerations. We start by reviewing various notions of safety and liveness properties, and modeling frameworks used for problem formulation of MAS. Then we provide a comprehensive review of learning-based methods for safe control design for multi-robot systems. We start with various shielding-based methods, such as safety certificates, predictive filters, and reachability tools. Then, we review the current state of control barrier certificate learning in both a centralized and distributed manner, followed by a comprehensive review of multi-agent reinforcement learning with a particular focus on safety. Next, we discuss the state-of-the-art verification tools for the correctness of learning-based methods. Based on the capabilities and the limitations of the state-of-the-art methods in learning and verification for MAS, we identify various broad themes for open challenges: how to design methods that can achieve good performance along with safety guarantees; how to decompose single-agent-based centralized methods for MAS; how to account for communication-related practical issues; and how to assess transfer of theoretical guarantees to practice.}, + keywords = {Certificate-based multi-agent control,Safe multi-agent reinforcement learning,Verification for multi-agent systems}, + file = {/home/mtoussai/Zotero/storage/J746HGIG/Garg et al. - 2024 - Learning safe control for multi-robot systems Met.pdf} +} + +@online{2024-huang-CollisionAvoidanceNavigation, + title = {Collision {{Avoidance}} and {{Navigation}} for a {{Quadrotor Swarm Using End-to-end Deep Reinforcement Learning}}}, + author = {Huang, Zhehui and Yang, Zhaojing and Krupani, Rahul and Şenbaşlar, Baskın and Batra, Sumeet and Sukhatme, Gaurav S.}, + year = {2024}, + eprint = {2309.13285}, + eprinttype = {arXiv}, + eprintclass = {cs}, + delete_delete_delete_doi = {10.48550/arXiv.2309.13285}, + url = {http://arxiv.org/abs/2309.13285}, + urlyear = {2024}, + abstract = {End-to-end deep reinforcement learning (DRL) for quadrotor control promises many benefits -- easy deployment, task generalization and real-time execution capability. Prior end-to-end DRL-based methods have showcased the ability to deploy learned controllers onto single quadrotors or quadrotor teams maneuvering in simple, obstacle-free environments. However, the addition of obstacles increases the number of possible interactions exponentially, thereby increasing the difficulty of training RL policies. In this work, we propose an end-to-end DRL approach to control quadrotor swarms in environments with obstacles. We provide our agents a curriculum and a replay buffer of the clipped collision episodes to improve performance in obstacle-rich environments. We implement an attention mechanism to attend to the neighbor robots and obstacle interactions - the first successful demonstration of this mechanism on policies for swarm behavior deployed on severely compute-constrained hardware. Our work is the first work that demonstrates the possibility of learning neighbor-avoiding and obstacle-avoiding control policies trained with end-to-end DRL that transfers zero-shot to real quadrotors. Our approach scales to 32 robots with 80\% obstacle density in simulation and 8 robots with 20\% obstacle density in physical deployment. Video demonstrations are available on the project website at: https://sites.google.com/view/obst-avoid-swarm-rl.}, + pubstate = {prepublished}, + keywords = {Computer Science - Artificial Intelligence,Computer Science - Multiagent Systems,Computer Science - Robotics}, + file = {/home/mtoussai/Zotero/storage/XDSZUNSX/Huang et al. - 2024 - Collision Avoidance and Navigation for a Quadrotor.pdf;/home/mtoussai/Zotero/storage/YNMX92TA/2309.html} +} diff --git a/RobotLearning/codepics b/RobotLearning/codepics new file mode 120000 index 0000000..93eea73 --- /dev/null +++ b/RobotLearning/codepics @@ -0,0 +1 @@ +../MachineLearning/pics/codepics \ No newline at end of file diff --git a/RobotLearning/compile.sh b/RobotLearning/compile.sh new file mode 100755 index 0000000..7540d47 --- /dev/null +++ b/RobotLearning/compile.sh @@ -0,0 +1,16 @@ +for input in ./[01]*.tex +do + echo '-----------------------------------' + echo 'compiling' ${input} + bibtex ${input%.*} + pdflatex -interaction=nonstopmode ${input} > /dev/null + grep "Warning" ${input%.*}.log + grep "Missing" ${input%.*}.log + grep -A2 "Undefined control sequence" ${input%.*}.log + grep -A2 "Error" ${input%.*}.log +done + +#echo '-----------------------------------' +#echo 'compiling script' +#makeindex script.idx +#pdflatex -interaction=nonstopmode script.tex > /dev/null diff --git a/RobotLearning/cutSolutions.sh b/RobotLearning/cutSolutions.sh new file mode 100755 index 0000000..f0d0937 --- /dev/null +++ b/RobotLearning/cutSolutions.sh @@ -0,0 +1,4 @@ +for input in ./e*.tex +do + sed -i '/begin{solution}/,/end{solution}/d' ${input} +done diff --git a/RobotLearning/e01-robotics-ML.tex b/RobotLearning/e01-robotics-ML.tex new file mode 100644 index 0000000..5e48f97 --- /dev/null +++ b/RobotLearning/e01-robotics-ML.tex @@ -0,0 +1,154 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\exnum}{Weekly Exercise 1} + +\exercises + +\excludecomment{solution} + +\exercisestitle + +All 4 exercises are a bit too much for a start. Question 3 is bonus. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Basic Inverse Kinematics} + +\begin{enumerate} +\item Inverse kinematics (or general constraint solving) can be framed as the optimization problem +\begin{align} +&\min_{q\in\RRR^n} \norm{q-q_0}^2 + \mu \norm{\phi(q)}^2 ~, +\end{align} +for some constraint function $\phi: \RRR^n \to \RRR^d$. Assuming linear $\phi(q) = \phi(q_0) + J (q-q_0)$ with Jacobian $J$, the solution is +\begin{align} +q^* = q_0 - (J^\T J + \textstyle\frac{1}{\mu} \Id)^\1 J^\T~ \phi(q_0) ~. +\end{align} +Verify this by deriving it step by step. + +\item To enforce a hard constraint, we want to take the limit $\mu\to\infty$. But $J^\T J$ is typically not invertible (e.g., $d200$. To avoid finding new hyperparameters, use TD3 rather than SAC for training, where the default settings (with MlpPolicy and action noise) should work well. + + \textbf{Hint:} The action noise can be defined as follows: +\begin{code} +\begin{Verbatim}[numbers=none,fontsize=\footnotesize] +from stable_baselines3.common.noise import NormalActionNoise +action_noise = NormalActionNoise(mean=np.zeros(n_actions), sigma=0.1 * np.ones(n_actions)) +\end{Verbatim} +\end{code} + + \item Validate your policy in environments with different wind magnitudes and gravities. You can adjust these settings when making a gym environment, e.g., +\begin{code} +\begin{Verbatim}[numbers=none,fontsize=\footnotesize] +env = gym.make('LunarLanderContinuous-v2', enable_wind=True, gravity=-10, wind_power=5) +\end{Verbatim} +\end{code} + For gravity, use values between -11 and -1; for the wind magnitude use values between 0 and 20. + + In which settings does your policy work well and in which does it not? + + \item Train a policy with domain randomization on both gravity and wind\_power. How does this policy compare to the other policy when validating in different settings as in b)? + + \textbf{Hint:} You can use the callback mechanism of the policy (for \texttt{\_on\_rollout\_end}) to add the randomization at the end of each episode. To do this, you can directly modify the parameters of the environment, e.g., set \texttt{env.gravity = \newline np.random.uniform(min\_value, max\_value)}. +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b3-ReinforcementLearning} +}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/RobotLearning/e07-invRL.tex b/RobotLearning/e07-invRL.tex new file mode 100644 index 0000000..9bedb81 --- /dev/null +++ b/RobotLearning/e07-invRL.tex @@ -0,0 +1,151 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\exnum}{Weekly Exercise 7} + +\renewcommand{\teacher}{Marc Toussaint \& Wolfgang H{\"o}nig} +\renewcommand{\addressTUB}{ + Learning~\&~Intelligent~Systems Lab, Intelligent Multi-Robot Coordination Lab, TU~Berlin\\\small + Marchstr. 23, 10587 Berlin, Germany +} + +\exercises + +\input{macros-local} +\providecommand{\ttiny}{\tiny} + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Literature: Adversarial Inverse Reinforcement Learning} + +Here is an advanced paper on inverse RL applied to robotics problems: + +\bibentry{2018-fu-LearningRobustRewards} + +The paper was a big step forward in enabling Deep Learning methods for +Inverse RL, namely by formulating a loss function similar to +Generative Adversarial Networks (GANs) -- actually following the +original idea formulating InvRL as a discriminative (max margin) +problem \cite{2000-ng-AlgorithmsInverseReinforcement}. A followup paper \cite{2018-tucker-InverseReinforcementLearning} +provides a nicer summary of the history of InvRL ideas and proposes improvement +on Adversarial InvRL, but without robotics applications. + +The paper webpage +{\urlfont\url{https://sites.google.com/view/adversarial-irl}} provides +some videos. Here the questions: +\begin{enumerate} +\item Let's start with the experiments in Section 7.2: The setting of +the evaluation is \emph{transfer learning}. Be able to explain Table +1: What are the two domains and what kind of transfer is tested? What +does ``TRPO, ground truth'' mean (TRPO is a standard RL method)? + + +\item In Section 7.3, the setting of evaluation is \emph{imitation +learning}. How is that different to the setting of 7.2? How does AIRL +compare with GAIL (a pure imitation learning method) and the TRPO expert? + + +\item The last equation in Sec. 4 (page 4) defines the discriminator +$D_\t(s,a)$. In GANs, a discriminator outputs the probability of whether +the input data point is from the ``original source'' instead of from the +learned generative model. What exactly is the meaning of the output of +the $D_\t(s,a)$ defined here? + + +\info{Note that, as in GANs, Alg.~1 describes an algorithm that +also improves the ``generative model'' (here the learned policy $\pi$) +whenever the discriminative model was improved.} + +\item At first it might be unclear why learning $D_\t(s,a)$ is related +to extracting an underlying reward function. The last equation in Sec +6 (page 6) is quite crucial to understand this -- explain roughly why +the two neural nets $g_\t(s)$ and $h_\phi(s)$ in Eq.(4) end up estimating +reward and value functions. + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Inverse RL on a Toy Control Problem} + +Consider a trivial control domain, with state $x\in\RRR$, controls +$u\in[-1,1]$, and deterministic state transitions $x_{t\po} = x_t + +u_t$. + +The expert policy $\pi^*$ is deterministic and chooses $\pi(x) += \text{clip}(-x)$, where $\text{clip}(x) = \max\{-1, \min\{+1,x\}\}$ +(a typical notation for clipping you should get used to). + +\begin{enumerate} +\item What is a reward function $R(x)$ (depending on state only), +such that the expert policy $\pi^*$ is optimal? Derive the Q-function +$Q^{\pi^*}(x,u)$ for your reward function $R(x)$ and prove that +$\pi^*$ is optimal. Assume a given discounting $\g\in[0,1)$. Is +$\pi^*$ the only optimal policy for your $R(x)$, or do equally optimal +policies exist? + + +\item For a given $\g$, there exist many reward functions $R(x)$ such +that $\pi^*$ is optimal. (Rescaling $R$ is trivial -- neglect this.) Describe a space of alternative reward +functions such that $\pi^*$ is still optimal; e.g., find some +(non-trivial) $F(x)$ such +that for $R(x) \gets R(x) + F(x)$, $\pi^*$ is still optimal. + + +\info{Note, this sounds like a question about reward shaping +(=changing $R$ while guaranteeing invariance of the optimal +policy) \cite{1999-ng-PolicyInvarianceReward}. However, this question +is slightly different, as we have a concrete deterministic dynamics +and do not require invariance w.r.t.\ all possible world dynamics.} + +\item Now, conversely, find a (minimal) variation $F(x)$ such +that for $R(x) \gets R(x) + F(x)$, $\pi^*$ is not optimal anymore. + +\info{This illustrates how a choice of reward function can +discriminate between policies; as is implicit in adversarial InvRL.} + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Practical Exercise: Exploration in RL} + +In this exercise, we will revisit the Continuous Mountain Car problem from \texttt{gym}. Previously, running SAC with default parameters from StableBaselines3 did not perform well. This week, we will explore whether exploration can make things work better. + +One way to explore in RL is by adding noise to the actions taken. The paper \textit{Pink Noise Is All You Need: Colored Noise Exploration In Deep Reinforcement Learning} ({\urlfont\url{https://openreview.net/pdf?id=hQ9V5QN27eS}}) compares three types of noise: +\begin{itemize} +\item Gaussian (white) noise +\item Ornstein-Uhlenbeck (OU) noise +\item Pink noise +\end{itemize} +Our goal is to compare the effects of these noises on agent actions during training. + +\begin{enumerate} +\item Review the \texttt{ActionNoise} wrapper from StableBaselines3 ({\urlfont\url{https://stable-baselines3.readthedocs.io/en/master/_modules/stable_baselines3/common/noise.html#ActionNoise}}), and the Pink Noise paper. Implement a child class \texttt{MyPinkNoise(ActionNoise)} that returns pink noise when called. Skeleton code is provided; you need to implement the call and reset methods. + +\item StableBaselines3 includes implementations of Gaussian and OU noise ({\urlfont\url{https://stable-baselines3.readthedocs.io/en/master/common/noise.html}}). Using your pink noise implementation, plot the different noise traces by plotting the 1D action on the y-axis and the time step on the x-axis with $\texttt{scale=0.3}$ for all noises. + +What do you observe? + +\item Use all three noise types to train SAC on MountainCarContinuous with default parameters. Using $\texttt{scale=0.3}$, train for $\texttt{total\_timesteps=2e4}$. + +What do you observe? Plot the learning curves of all training runs. + +HINT: It is not expected that all noises will lead to successful training. You do not need to adjust any SAC parameters. +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b3-ReinforcementLearning,b4-InverseRL} +}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/RobotLearning/e08-SL.tex b/RobotLearning/e08-SL.tex new file mode 100644 index 0000000..8a40d35 --- /dev/null +++ b/RobotLearning/e08-SL.tex @@ -0,0 +1,116 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\exnum}{Weekly Exercise 8} + +\renewcommand{\teacher}{Marc Toussaint \& Wolfgang H{\"o}nig} +\renewcommand{\addressTUB}{ + Learning~\&~Intelligent~Systems Lab, Intelligent Multi-Robot Coordination Lab, TU~Berlin\\\small + Marchstr. 23, 10587 Berlin, Germany +} + +\exercises + +\input{macros-local} + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Literature: Neural Lander} + +Here is a paper that claims to combine safety and learning: + +\bibentry{2019-shi-NeuralLanderStable} + +The paper is at the intersection of control theory and learning and +several other works exist to extend the idea to new domains. + +Questions: +\begin{enumerate} +\item Take a look at the proposed control law (8) and (12). What exactly is learned and how is the learned function applied in the controller? + + +\item The paper shows exponential stability, i.e., that the position error will go to zero quickly (around (14)). +Explain in words the variables $\epsilon_m$, $L_a$, and $\rho$. +Explain how this equation tells us that the learned function needs to be Lipschitz-bounded. + + +\item Write down pseudo code on how one can use SGD or Adam and train a basic feed forward neural network with ReLU activation to have a bounded Lipschitz constant. (Use the information in the paper from III.B.) + + +\item What needs to change if $\tanh$ activation functions are used to achieve the same Lipschitz-bound? + + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Fun With Definitions} + +In the safe learning survey paper and the lecture, the robot dynamics were defined as $x_{k+1} = f_k(x_k, u_k, w_k)$. +In RL and MDPs a transition model is used instead as $p(x_{k+1}|x_k, u_k)$. Here we look at the relationship of the two. + +\begin{enumerate} +\item Consider an MDP with states $s, t, g$ and actions $a,b$. The transition model is $p(t|s,a)=0.1, p(g|s,a)=0.9, p(g|s,b)=0.2, p(s|s,b)=0.8, p(t|t,a)=1, p(t|t,b)=1, p(g|g,a)=1, p(g|g,b)=1$. The goal for the robot starting at $s$ is to avoid $t$ and reach $g$. What is a safe sequence of actions here? Write down an equivalent formulation using the notation in the paper/lecture. + + +\item Consider 1D single-integrator dynamics (i.e., state is position and the velocity can be controlled directly) and $\mathcal W$ zero-mean Gaussian: $x_{k+1} = x_k + u_k \cdot \Delta t + w_k$, where $w_k \sim N(0, \sigma^2)$. Write down an equivalent transition model. + + +\item The use of $f_k$ allows hybrid models, where the dynamics might change over time. How can such changes be encoded in the MDP transition model? + + +\item We defined the cost as $J(x_{0:N}, u_{0:N-1}) = l_N(x_N) + \sum_{k=0}^{N-1} l_k(x_k, u_k)$. How can a discount factor be encoded here? + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Working With Code: safe-control-gym} + +One implementation / benchmark for this is safe-control-gym, see + +\bibentry{2022-yuan-SafeControlGymUnifiedBenchmark} + +for the paper and {\urlfont\url{https://github.com/utiasDSL/safe-control-gym}} for the code on github. + +You may install it locally following the instructions to try it, although some questions can also be answered just by reading the code. + +\begin{code} +\begin{Verbatim}[numbers=none,fontsize=\footnotesize] +git clone https://github.com/utiasDSL/safe-control-gym.git +cd safe-control-gym +pip install -e . +\end{Verbatim} +\end{code} + +\begin{enumerate} +\item Group the available algorithms (see the Readme file in the repo) using the taxonomy/grouping from the lecture (you may ignore the ones that have nothing to do with safety). Try to find academic references for each algorithm. + + +\item One interesting aspect of the toolbox is that it provides analytical models for the dynamics and constraints. Where are these models located for the three default systems (cartpole, quadrotor2d, quadrotor3d)? + + +\item Consider the example for a safety filter in examples/mpsc for a 2D quadrotor. How can you constrain the states and actions of the filter? Constrain the $x$ coordinate to be within -1 and 2 and show the resulting plot(s), compared to the default setting (your choice of ``unsafe'' controller). + + +\item Consider the example for safe RL (examples/rl). For safe\_explorer\_ppo there is a pre-training and a regular training. What exactly is the difference between those two? How can you specify what safety means for your application? + + +\end{enumerate} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b5-SafeLearning} +}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/RobotLearning/e09-grasping.tex b/RobotLearning/e09-grasping.tex new file mode 100644 index 0000000..d2b2822 --- /dev/null +++ b/RobotLearning/e09-grasping.tex @@ -0,0 +1,131 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\exnum}{Weekly Exercise 9} + +\renewcommand{\teacher}{Marc Toussaint \& Wolfgang H{\"o}nig} +\renewcommand{\addressTUB}{ + Learning~\&~Intelligent~Systems Lab, Intelligent Multi-Robot Coordination Lab, TU~Berlin\\\small + Marchstr. 23, 10587 Berlin, Germany +} + +\exercises + +\input{macros-local} + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Literature: Grasp Data Collection} + +Here is a core paper on grasp data collection: + +\bibentry{2020-fang-Graspnet1billionLargescaleBenchmark} + +The collection of labelled grasp data is a central issue in +learning-based grasing. Once such data is available, we can use strong +supervised ML or diffusion methods to learn disciminative or +generative models of grasps. The above paper is a good example on how +grasp data generation is typically ``engineered'', and uses a +model-based (force closure) method to provide grasp labels. (An +alternative is to use a generic physical +simulator, e.g., \cite{2021-eppner-AcronymLargescaleGrasp} is a recent +paper generating a grasp dataset using the PhysX simulator.) + +The questions are only about Section 3.2 and 3.3: +\begin{enumerate} +\item Sec. 3.2 describes how 97,280 RGB-D images were taken. How is +the camera pose known for each image? What are ArUco markers? For how +many scenes were images collected? + + +\item Concerning Sec. 3.3 (paragraph ``6D Pose Annotation''), how exactly are all 6D object poses +annotated? + + +\item Paragraph ``Grasp Pose Annotation'' is the core. Provide pseudo +code to what is happening in the 2nd paragraph; make the looping over +objects/points/anything explicit. (Section 5.2, 2nd +paragraph provides the ranges of $D, A,$ and $V$.) The last paragraph +describes how these object grasps are transferred to the +scenes. Summarize what information the eventual dataset comprises for +one scene. + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Force Closure} + +This is a great robotics book: + +\url{https://hades.mech.northwestern.edu/images/2/25/MR-v2.pdf} + +The Section ``Grasping and Manipulation -- Exercises'' contains +interesting force and form closure questions, around Fig. 12.29 and +12.30. + +\begin{enumerate} +\item Solve Ex. 12.8 (page 507 in the pdf). Note that a twist in 3D +space is a 6-vector combining a translation and rotation vector; here +in 2D it is a 3-vector with 2D translation and one +rotation. Sec. 12.1.6 (page 475) explains how to draw a twist as +``CoR'' -- see footnote\footnote{A convenient way to represent a +planar twist $V = (v_x, v_y, \o)$ (with rotation velocity $\o$, and +translational velocities $v_x,v_y$) is as a \textbf{center of +rotation (CoR)} at $(-v_y /\o , v_x /\o )$. An additional marker '+' +or '-' tells if we rotate positively or negatively around this center.} + +\item Solve Ex. 12.17. (I'll provide explicit equations defining force +closure in the lecture.) (Ex. 12.18 is also a great exercise.) + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Practical Exercise: Explore the Graspnet data} + +This exercise doesn't need much coding -- the aim is simply to familiarize +youself with existing datasets and conventions for learning-based grasping. + +\begin{enumerate} +\item +Follow {\urlfont\url{https://graspnetapi.readthedocs.io/en/latest/install.html}} +to download and unzip all the data (sorry -- lots of files... If you +develop a script to do all downloads, share it with all students.) + +\item +Follow {\urlfont\url{https://graspnetapi.readthedocs.io/en/latest/example_vis.html}} +to visualize the grasp data. Automatically loop through all available +objects (calling \texttt{showObjGrasp}), and all available scenes +(calling \texttt{showSceneGrasp}). + +What is the difference between format='rect' versus '6d'? (And why may +it take minutes for format='6d'?) + +\item The '6D grasp' documentation +{\urlfont\url{https://graspnetapi.readthedocs.io/en/latest/grasp_format.html#d-grasp}} +explains how the grasp pose (translation and orientation) is +stored. For a given scene (e.g.\ id=0), write a loop to output the +grasp-translation and grasp-rotation-matrix for all grasps. + +(What I do not understand: The Rectangle Grasp description seems to +only describe grasps in the image plane -- how it the real 3D rotation +represented? Or it is not?) + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b6-Manipulation} +}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/RobotLearning/e10-tamp.tex b/RobotLearning/e10-tamp.tex new file mode 100644 index 0000000..53a0f7b --- /dev/null +++ b/RobotLearning/e10-tamp.tex @@ -0,0 +1,148 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\exnum}{Weekly Exercise 10} + +\renewcommand{\teacher}{Marc Toussaint \& Wolfgang H{\"o}nig} +\renewcommand{\addressTUB}{ + Learning~\&~Intelligent~Systems Lab, Intelligent Multi-Robot Coordination Lab, TU~Berlin\\\small + Marchstr. 23, 10587 Berlin, Germany +} + +\exercises + +\input{macros-local} +\providecommand{\SE}{\text{SE}} + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Literature: Learning to Plan in TAMP} + +Here is an example paper for learning to plan: + +\bibentry{2020-driess-DeepVisualReasoning} +%\bibentry{2021-driess-LearningGeometricReasoning} + +The paper trains an image-based action sequence prediction. A follow-up +paper\footnote{\bibentry{2023-driess-PaLMEEmbodiedMultimodala}} +does something similar with a much more ambitious Large Manguage +Model, but the above paper more clearly defines the problem in +relation to TAMP. To get an overview, +you may first watch the video {\urlfont\url{https://www.youtube.com/watch?v=i8yyEbbvoEk}}. + +Here are the questions: +\begin{enumerate} +\item Eq.~(4) defines the action sequence prediction model $\pi$. Note +that $S$ is the scene, $g$ the goal, and $a_{1:K}\in\TT(g, S), +F_S(a_{1:K})=1$ means ``$a_{1:K}$ is feasible and leads to goal $g$''. + +How does this $\pi$ relate to modern sequence/language models, which +also predict the next word/token given previous tokens? (What exactly +is similar and different?) + +How does this $\pi$ relate to a trained state evaluation function as +they are used, e.g., in modern chess/go engines? (Which score a board and +therefore provide a heuristic for search. What exactly is similar and different?) + + +\item In Eq.~(4), the actions $a_k$ are input to the network. But they +are encoded in a very particular way, as explained in subsection C +(see also video at 0:20sec). How exactly are actions encoded? + + +\item As always, understanding the data generation is key. Section V.B +(page 7) explains the data generation process, and Eq.~(5) the +definition of $D_\text{data}$ (ingnore $D_\text{train}$). In this +whole process, how often was the feasibility $F_S(a_{1:K})$ of an +action sequence $a_{1:K}$ in a scene $S$ being computed. (This +computation happended fully model-based assuming full knowledge of the +scene instantiated in the simulator.) + + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Optimal Sequential Manipulation in TAMP} + +\twocol[.05]{.8}{.15}{ +Consider the scene on the right, where we have one robot with 7 +degrees of freedom (dofs) $q\in\RRR^7$, and a stick with its pose +$s\in\SE(3)$ as degrees of freedom. (Ignore the triangle in the +image.) + +As discussed in the lecture, we consider the whole scene as a single +multibody system with $(q,s)$ as its configuration. Initially the +stick is lying somewhere on the table (away from the red ball); the final goal +is for the stick to touch the red ball. +}{ +\showh[1]{tamp-stick} +} + +Assume that you have access to three constraint functions: +\begin{itemize} +\item $\phi_\text{grasp}(q,s) \in\RRR^3$ is a 3-dimensional constraint such +that $\phi_\text{grasp}(q,s)=0$ indicates a correct (stable) grasp of +the stick by the robot. +\item $\phi_\text{touch}(s) \in \RRR^1$ is a 1-dimensional constraint +such that $\phi_\text{touch}(s)=0$ indicates that the stick touches +the red ball. +\item $\phi_\text{coll}(q,s) \in \RRR^1$ is a 1-dimensional constraint +such that $\phi_\text{coll}(q,s)\le 0$ indicates that nothing in the +scene collides. +\end{itemize} +\begin{enumerate} +\item Formulate a mathematical program that represents the problem of +optimally grasping the stick and then, with the grasped stick, +optimally touching the red ball. The problem should only be about finding +the grasp pose and the final pose -- not yet the motions in between. As usual, optimality should reflect minimal motion effort by the robot. Assume the initial +configuration is $(q_0,s_0) \in \RRR^7\times \SE(3)$. + + +\item It is quite natural to choose $(q_1,s_1,q_2,s_2)$ as the decision +variables of the above mathematical program. But can you think of an +alternative, lower-dimensional parameterization of the problem? + + +\item Now modify the mathematical program above (of a) or b)) to +include the full motion from the start configuration until the stick touches the +ball. Use an optimality criterion as is standard in trajectory +optimization. + + +\item Neglect the motion again; consider only grasp and touch. But +this time consider a sequence of 4 actions: grasp-stick, place-stick, +grasp-stick, touch-ball, where the 2nd action places the stick back on +the table before picking it up again. Can you think of scene (stick +and ball placement) where +this action sequence makes sense? Instead of +$(q_1,s_1,q_2,s_2,q_3,s_3,q_4,s_4)$, what would be a lower-dimensional +parameterization? + +\end{enumerate} + +(For discussion at the tutorial:) You know how path +finding in a standard setting is defined as finding a collision free +path.\footnote{E.g., finding a continuous path $\g: +[0,T]\to \XX_\text{free}$ from a given start configuration $\g(0)=x_0$ +to a final configuration $\g(T) \in \XX_\text{goal}$ within the free +configuration space $\XX_\text{free} = \{ x\in\XX: \phi_\text{coll}\le +0\}$.} How can the same sequential manipulation problem as in b) be +represented as a path finding problem (respecting all constraints but +neglecting optimality)? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b7-TampLearning} +}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/RobotLearning/e11-multiRobot.tex b/RobotLearning/e11-multiRobot.tex new file mode 100644 index 0000000..97e9614 --- /dev/null +++ b/RobotLearning/e11-multiRobot.tex @@ -0,0 +1,156 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\exnum}{Weekly Exercise 11} + +\renewcommand{\teacher}{Marc Toussaint \& Wolfgang H{\"o}nig} +\renewcommand{\addressTUB}{ + Learning~\&~Intelligent~Systems Lab, Intelligent Multi-Robot Coordination Lab, TU~Berlin\\\small + Marchstr. 23, 10587 Berlin, Germany +} + +\exercises + +\ifthenelse{\isundefined{\scripthead}}{ + \usepackage{tikz} + \usetikzlibrary{shapes,snakes} + \usepackage{tkz-base} + \usepackage{tkz-euclide} +}{} + +\input{macros-local} + +\excludecomment{solution} + +\exercisestitle + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Literature: Neural-Swarm2} + +Here is the paper we discussed in the lecture that uses (and extends) deep sets for a control problem that arises in multi-robot aerial swarms~\footnote{A shorter and perhaps easier to follow earlier work is +\bibentry{2020-shi-NeuralSwarmDecentralizedCloseProximity} +}: + +\bibentry{2022-shi-NeuralSwarm2PlanningControl} + +The paper is an extension of the NeuralLander paper to the multi-robot case we discussed in exercise 8. + +Questions: +\begin{enumerate} +\item How does the dataset exactly look like? How was the data obtained? What sensing/measurement capabilities were needed to obtain such data? + + +\item Write down pseudo code on how one can use SGD or Adam and train a 2-group permutation-invariant function using the heterogeneous deep sets proposed in (9). + + +\item Consider the use-case of motion planning (Fig. 6). Explain how the neural network is applied inside the motion planner. + + +\item In the considered examples for $K$-group permutation invariant functions, $K$ is relatively small (4 in the paper). Consider the case where $K$ is large or unknown, for example if we are able to measure the size of the neighboring robot (a real value). How could learning be applied in this case? + + +\end{enumerate} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exsection{Encodings for Environmental Monitoring} + +Consider a team of robots that is spatially distributed as shown below. +In the figure, circles are robots, the numbers are their associated measurements (such as temperatures), and lines indicate the existence of a communication link. +The goal is to find the minimum of their sensor measurements. +In this question we will explore various concrete encodings for such problem. + +\begin{center} + \begin{tikzpicture} + \tkzInit[xmax=5,ymax=5,xmin=0,ymin=0] + %\tkzGrid + \tkzAxeXY + + \node[circle, + fill=black, + label=$5$] (n1) at (1, 1) {}; + + \node[circle, + fill=black, + label=$2$] (n2) at (4, 5) {}; + + \node[circle, + fill=black, + label=$\,\,\,\,\,3$] (n3) at (4, 3) {}; + + \node[circle, + fill=black, + label=$4$] (n4) at (2, 3) {}; + + \draw (n1) -- (n4); + \draw (n4) -- (n3); + \draw (n4) -- (n2); + \draw (n2) -- (n3); + \end{tikzpicture} + \end{center} + +\begin{enumerate} +\item First consider the abstract, centralized setting with function $f(\mathcal X) = \min_{x\in\mathcal X} x$, where $\mathcal X$ is a set of real numbers. In other words, the function takes one or more numbers as input and returns the smallest element of these numbers. Recall that the deep set +\begin{equation} +f(\mathcal X) \approx \rho \left(\sum_{x\in\mathcal X} \phi(x) \right) +\end{equation} +should be able to approximate this function. Provide concrete (differentiable) functions for $\rho$ and $\phi$ for this case.\\ +Hint: You can find some inspiration in the original Deep Set paper or the paper from question 1. + + +\item Now assume the case where robots have a limited communication radius. One example is shown in the figure, where the lines show communication links. Define the \texttt{Aggregate} and \texttt{Update} functions of a simple message-passing neural network. + +Demonstrate in the example above, how the node at $(1,1)$ computes the minimum value. + + +% min(5,4) -> 4 +% (4,3,2) -> 2 + +%TODO: concrete instance; ask to manually show execution + +% + +\item How could a CNN be used for the case with limited communication radius? Be specific about the layers the CNN should have. + + +\item For the use-case outlined above, what are advantages and disadvantages of the three encodings (Deep Sets, GNN, CNN)? Consider both small (=few neighbors) and large (=many neighbors) cases. + + +\end{enumerate} + +% example problem -> playing with different potential network architectures (CNN, DeepSet, GNN) + +% deepset on paper for something like the max() function? + +% GNN on paper for the same function? + +% CNN on paper for the same function + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% \exsection{Programming} + +% To be decided on Monday, if there will be another programming assignment. + +% Either train a simple DeepSet or GNN using pytorch, in a basic robotic domain (flocking?, collision avoidance?, perhaps imitating artificial potentials? or plain task assignment [not very robotic]) + +% Variant 1: +% team of 3 double integrators -> expert using cvxpy (stacked) -> find distributed policy, e.g, with deepset + +% Variant 2: +% 10 robots, 10 tasks, Hungarian method as expert +% GNN that learns how to assign tasks + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifthenelse{\isundefined{\scripthead}}{ +\bibliographystyle{plainurl-lis} +\bibliography{b8-MultiRobotLearning} +}{} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\exerfoot diff --git a/RobotLearning/fix-journal.sh b/RobotLearning/fix-journal.sh new file mode 100755 index 0000000..2bbc9c0 --- /dev/null +++ b/RobotLearning/fix-journal.sh @@ -0,0 +1,9 @@ +sed -i \ + -e 's/journaltitle/journal/' \ + -e 's/date/year/' \ + -e 's/eventtitle/booktitle/' \ + -e 's/doi/delete_doi/' \ + -e 's/publisher/delete_publisher/' \ + -e 's/note/delete_note/' \ + -e 's/{\([0-9][0-9][0-9][0-9]\)-[0-9][0-9]-[0-9][0-9]}/{\1}/' \ + -e 's/{\([0-9][0-9][0-9][0-9]\)-[0-9][0-9]}/{\1}/' $1 diff --git a/RobotLearning/macros-local.tex b/RobotLearning/macros-local.tex new file mode 100644 index 0000000..ee2ccf9 --- /dev/null +++ b/RobotLearning/macros-local.tex @@ -0,0 +1,14 @@ +\ifthenelse{\isundefined{\scripthead}}{ + +\providecommand{\info}[1]{\smallskip{\ttiny [#1]\par}} + +\usepackage{bibentry} +\nobibliography* + +\ifthenelse{\isundefined{\setbeamertemplate}}{}{ + \setbeamertemplate{bibliography item}{\insertbiblabel} +} + +\providecommand{\citehere}[1]{{\fontsize{5}{1}\selectfont\bibentry{#1}\par}} + +}{} diff --git a/RobotLearning/plainurl-lis.bst b/RobotLearning/plainurl-lis.bst new file mode 100644 index 0000000..5d435c0 --- /dev/null +++ b/RobotLearning/plainurl-lis.bst @@ -0,0 +1,1470 @@ +%%% Modification of BibTeX style file /usr/local/texlive/2019/texmf-dist/bibtex/bst/base/plain.bst +%%% ... by urlbst, version 0.8 (marked with "% urlbst") +%%% See +%%% Modifications Copyright 2002-03, 2005-12, 2014, 2019, Norman Gray, +%%% and distributed under the terms of the LPPL; see README for discussion. +%%% +%%% Added webpage entry type, and url and lastchecked fields. +%%% Added eprint support. +%%% Added DOI support. +%%% Added PUBMED support. +%%% Added hyperref support. +%%% Original headers follow... + +% BibTeX standard bibliography style `plain' + % Version 0.99b (8-Dec-10 release) for BibTeX versions 0.99a or later. + % Copyright (C) 1984, 1985, 1988, 2010 Howard Trickey and Oren Patashnik. + % Unlimited copying and redistribution of this file are permitted as long as + % it is unmodified. Modifications (and redistribution of modified versions) + % are also permitted, but only if the resulting file is renamed to something + % besides btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst. + % This restriction helps ensure that all standard styles are identical. + % The file btxbst.doc has the documentation for this style. + +ENTRY + { address + author + booktitle + chapter + edition + editor + howpublished + institution + journal + key + month + note + number + organization + pages + publisher + school + series + title + type + volume + year + eprint % urlbst + doi % urlbst + pubmed % urlbst + url % urlbst + lastchecked % urlbst + } + {} + { label } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +% urlbst... +% urlbst constants and state variables +STRINGS { urlintro + eprinturl eprintprefix doiprefix doiurl pubmedprefix pubmedurl + citedstring onlinestring linktextstring + openinlinelink closeinlinelink } +INTEGERS { hrefform inlinelinks makeinlinelink + addeprints adddoiresolver addpubmedresolver } +FUNCTION {init.urlbst.variables} +{ + % The following constants may be adjusted by hand, if desired + + % The first set allow you to enable or disable certain functionality. + #1 'addeprints := % 0=no eprints; 1=include eprints + #1 'adddoiresolver := % 0=no DOI resolver; 1=include it + #1 'addpubmedresolver := % 0=no PUBMED resolver; 1=include it + #2 'hrefform := % 0=no crossrefs; 1=hypertex xrefs; 2=hyperref refs + #1 'inlinelinks := % 0=URLs explicit; 1=URLs attached to titles + + % String constants, which you _might_ want to tweak. + "URL: " 'urlintro := % prefix before URL; typically "Available from:" or "URL": + "online" 'onlinestring := % indication that resource is online; typically "online" + "cited " 'citedstring := % indicator of citation date; typically "cited " + "[link]" 'linktextstring := % dummy link text; typically "[link]" + "http://arxiv.org/abs/" 'eprinturl := % prefix to make URL from eprint ref + "arXiv:" 'eprintprefix := % text prefix printed before eprint ref; typically "arXiv:" + "https://doi.org/" 'doiurl := % prefix to make URL from DOI + "doi:" 'doiprefix := % text prefix printed before DOI ref; typically "doi:" + "http://www.ncbi.nlm.nih.gov/pubmed/" 'pubmedurl := % prefix to make URL from PUBMED + "PMID:" 'pubmedprefix := % text prefix printed before PUBMED ref; typically "PMID:" + + % The following are internal state variables, not configuration constants, + % so they shouldn't be fiddled with. + #0 'makeinlinelink := % state variable managed by possibly.setup.inlinelink + "" 'openinlinelink := % ditto + "" 'closeinlinelink := % ditto +} +INTEGERS { + bracket.state + outside.brackets + open.brackets + within.brackets + close.brackets +} +% ...urlbst to here +FUNCTION {init.state.consts} +{ #0 'outside.brackets := % urlbst... + #1 'open.brackets := + #2 'within.brackets := + #3 'close.brackets := % ...urlbst to here + + #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +% urlbst +FUNCTION {output.nonnull.original} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +% urlbst... +% The following three functions are for handling inlinelink. They wrap +% a block of text which is potentially output with write$ by multiple +% other functions, so we don't know the content a priori. +% They communicate between each other using the variables makeinlinelink +% (which is true if a link should be made), and closeinlinelink (which holds +% the string which should close any current link. They can be called +% at any time, but start.inlinelink will be a no-op unless something has +% previously set makeinlinelink true, and the two ...end.inlinelink functions +% will only do their stuff if start.inlinelink has previously set +% closeinlinelink to be non-empty. +% (thanks to 'ijvm' for suggested code here) +FUNCTION {uand} +{ 'skip$ { pop$ #0 } if$ } % 'and' (which isn't defined at this point in the file) +FUNCTION {possibly.setup.inlinelink} +{ makeinlinelink hrefform #0 > uand + { doi empty$ adddoiresolver uand + { pubmed empty$ addpubmedresolver uand + { eprint empty$ addeprints uand + { url empty$ + { "" } + { url } + if$ } + { eprinturl eprint * } + if$ } + { pubmedurl pubmed * } + if$ } + { doiurl doi * } + if$ + % an appropriately-formatted URL is now on the stack + hrefform #1 = % hypertex + { "\special {html: }{" * 'openinlinelink := + "\special {html:}" 'closeinlinelink := } + { "\href {" swap$ * "} {" * 'openinlinelink := % hrefform=#2 -- hyperref + % the space between "} {" matters: a URL of just the right length can cause "\% newline em" + "}" 'closeinlinelink := } + if$ + #0 'makeinlinelink := + } + 'skip$ + if$ % makeinlinelink +} +FUNCTION {add.inlinelink} +{ openinlinelink empty$ + 'skip$ + { openinlinelink swap$ * closeinlinelink * + "" 'openinlinelink := + } + if$ +} +FUNCTION {output.nonnull} +{ % Save the thing we've been asked to output + 's := + % If the bracket-state is close.brackets, then add a close-bracket to + % what is currently at the top of the stack, and set bracket.state + % to outside.brackets + bracket.state close.brackets = + { "]" * + outside.brackets 'bracket.state := + } + 'skip$ + if$ + bracket.state outside.brackets = + { % We're outside all brackets -- this is the normal situation. + % Write out what's currently at the top of the stack, using the + % original output.nonnull function. + s + add.inlinelink + output.nonnull.original % invoke the original output.nonnull + } + { % Still in brackets. Add open-bracket or (continuation) comma, add the + % new text (in s) to the top of the stack, and move to the close-brackets + % state, ready for next time (unless inbrackets resets it). If we come + % into this branch, then output.state is carefully undisturbed. + bracket.state open.brackets = + { " [" * } + { ", " * } % bracket.state will be within.brackets + if$ + s * + close.brackets 'bracket.state := + } + if$ +} + +% Call this function just before adding something which should be presented in +% brackets. bracket.state is handled specially within output.nonnull. +FUNCTION {inbrackets} +{ bracket.state close.brackets = + { within.brackets 'bracket.state := } % reset the state: not open nor closed + { open.brackets 'bracket.state := } + if$ +} + +FUNCTION {format.lastchecked} +{ lastchecked empty$ + { "" } + { inbrackets citedstring lastchecked * } + if$ +} +% ...urlbst to here + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {output.bibitem.original} % urlbst (renamed from output.bibitem, so it can be wrapped below) +{ newline$ + "\bibitem{" write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + +FUNCTION {fin.entry.original} % urlbst (renamed from fin.entry, so it can be wrapped below) +{ add.period$ + write$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checka} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {new.sentence.checka} +{ empty$ + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {new.sentence.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.sentence + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ duplicate$ empty$ + { pop$ "" } + { "{\em " swap$ * "}" * } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {format.names} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { ", " * t * } + { numnames #2 > + { "," * } + 'skip$ + if$ + t "others" = + { " et~al." * } + { " and " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", editors" * } + { ", editor" * } + if$ + } + if$ +} + +FUNCTION {format.title} +{ title empty$ + { "" } + { title "t" change.case$ } + if$ +} + +FUNCTION {n.dashify} +{ 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {format.date} +{ year empty$ + { month empty$ + { "" } + { "there's a month but no year in " cite$ * warning$ + month + } + if$ + } + { month empty$ + { " \textbf{" year * "}" * } + { month " " * year * } + if$ + } + if$ +} + +FUNCTION {format.datep} +{ year empty$ + { "" } + { " (" year * ")" * } + if$ +} + +FUNCTION {format.btitle} +{ title emphasize +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { "volume" volume tie.or.space.connect + series empty$ + 'skip$ + { " of " * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { "number" } + { "Number" } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { " in " * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { edition "l" change.case$ " edition" * } + { edition "t" change.case$ " edition" * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { "pages" pages n.dashify tie.or.space.connect } + { "page" pages tie.or.space.connect } + if$ + } + if$ +} + +FUNCTION {format.vol.num.pages} +{ volume field.or.null + number empty$ + 'skip$ + { "(" number * ")" * * + volume empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + } + if$ + pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { ":" * pages n.dashify * } + if$ + } + if$ +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + 'format.pages + { type empty$ + { "chapter" } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { "In " booktitle emphasize * } + { "In " format.editors * ", " * booktitle emphasize * } + if$ + } + if$ +} + +FUNCTION {empty.misc.check} +{ author empty$ title empty$ howpublished empty$ + month empty$ year empty$ note empty$ + and and and and and + key empty$ not and + { "all relevant fields are empty in " cite$ * warning$ } + 'skip$ + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { "Technical Report" } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ key empty$ + { journal empty$ + { "need key or journal for " cite$ * " to crossref " * crossref * + warning$ + "" + } + { "In {\em " journal * "\/}" * } + if$ + } + { "In " key * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.crossref.editor} +{ editor #1 "{vv~}{ll}" format.name$ + editor num.names$ duplicate$ + #2 > + { pop$ " et~al." * } + { #2 < + 'skip$ + { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { " et~al." * } + { " and " * editor #2 "{vv~}{ll}" format.name$ * } + if$ + } + if$ + } + if$ +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + "In " + } + { "Volume" volume tie.or.space.connect + " of " * + } + if$ + editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { series empty$ + { "need editor, key, or series for " cite$ * " to crossref " * + crossref * warning$ + "" * + } + { "{\em " * series * "\/}" * } + if$ + } + { key * } + if$ + } + { format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ editor empty$ + editor field.or.null author field.or.null = + or + { key empty$ + { booktitle empty$ + { "need editor, key, or booktitle for " cite$ * " to crossref " * + crossref * warning$ + "" + } + { "In {\em " booktitle * "\/}" * } + if$ + } + { "In " key * } + if$ + } + { "In " format.crossref.editor * } + if$ + " \cite{" * crossref * "}" * +} + +% urlbst... +% Functions for making hypertext links. +% In all cases, the stack has (link-text href-url) +% +% make 'null' specials +FUNCTION {make.href.null} +{ + pop$ +} +% make hypertex specials +FUNCTION {make.href.hypertex} +{ + "\special {html: }" * swap$ * + "\special {html:}" * +} +% make hyperref specials +FUNCTION {make.href.hyperref} +{ + "\href {" swap$ * "} {\path{" * swap$ * "}}" * +} +FUNCTION {make.href} +{ hrefform #2 = + 'make.href.hyperref % hrefform = 2 + { hrefform #1 = + 'make.href.hypertex % hrefform = 1 + 'make.href.null % hrefform = 0 (or anything else) + if$ + } + if$ +} + +% If inlinelinks is true, then format.url should be a no-op, since it's +% (a) redundant, and (b) could end up as a link-within-a-link. +FUNCTION {format.url} +{ inlinelinks #1 = url empty$ or + { "" } + { hrefform #1 = + { % special case -- add HyperTeX specials + urlintro "\url{" url * "}" * url make.href.hypertex * } + { urlintro "\url{" * url * "}" * } + if$ + } + if$ +} +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { eprintprefix eprint * eprinturl eprint * make.href } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { doiprefix doi * doiurl doi * make.href } + if$ +} + +FUNCTION {format.pubmed} +{ pubmed empty$ + { "" } + { pubmedprefix pubmed * pubmedurl pubmed * make.href } + if$ +} + +% Output a URL. We can't use the more normal idiom (something like +% `format.url output'), because the `inbrackets' within +% format.lastchecked applies to everything between calls to `output', +% so that `format.url format.lastchecked * output' ends up with both +% the URL and the lastchecked in brackets. +FUNCTION {output.url} +{ url empty$ + 'skip$ + { new.block + format.url output + format.lastchecked output + } + if$ +} + +FUNCTION {output.web.refs} +{ + new.block + inlinelinks + 'skip$ % links were inline -- don't repeat them + { % If the generated DOI will be the same as the URL, + % then don't print the URL (thanks to Joseph Wright for this code, + % at http://tex.stackexchange.com/questions/5660) + adddoiresolver + doiurl doi empty$ { "X" } { doi } if$ * % DOI URL to be generated + url empty$ { "Y" } { url } if$ % the URL, or "Y" if empty + = % are the strings equal? + and + 'skip$ + { output.url } + if$ + addeprints eprint empty$ not and + { format.eprint output.nonnull } + 'skip$ + if$ + adddoiresolver doi empty$ not and + { format.doi output.nonnull } + 'skip$ + if$ + addpubmedresolver pubmed empty$ not and + { format.pubmed output.nonnull } + 'skip$ + if$ + } + if$ +} + +% Wrapper for output.bibitem.original. +% If the URL field is not empty, set makeinlinelink to be true, +% so that an inline link will be started at the next opportunity +FUNCTION {output.bibitem} +{ outside.brackets 'bracket.state := + output.bibitem.original + inlinelinks url empty$ not doi empty$ not or pubmed empty$ not or eprint empty$ not or and + { #1 'makeinlinelink := } + { #0 'makeinlinelink := } + if$ +} + +% Wrapper for fin.entry.original +FUNCTION {fin.entry} +{ output.web.refs % urlbst + makeinlinelink % ooops, it appears we didn't have a title for inlinelink + { possibly.setup.inlinelink % add some artificial link text here, as a fallback + linktextstring output.nonnull } + 'skip$ + if$ + bracket.state close.brackets = % urlbst + { "]" * } + 'skip$ + if$ + fin.entry.original +} + +% Webpage entry type. +% Title and url fields required; +% author, note, year, month, and lastchecked fields optional +% See references +% ISO 690-2 http://www.nlc-bnc.ca/iso/tc46sc9/standard/690-2e.htm +% http://www.classroom.net/classroom/CitingNetResources.html +% http://neal.ctstateu.edu/history/cite.html +% http://www.cas.usf.edu/english/walker/mla.html +% for citation formats for web pages. +FUNCTION {webpage} +{ output.bibitem + author empty$ + { editor empty$ + 'skip$ % author and editor both optional + { format.editors output.nonnull } + if$ + } + { editor empty$ + { format.authors output.nonnull } + { "can't use both author and editor fields in " cite$ * warning$ } + if$ + } + if$ + year empty$ + 'skip$ + { format.datep "year" output.check } + if$ + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ + format.title "title" output.check + inbrackets onlinestring output + new.block + % We don't need to output the URL details ('lastchecked' and 'url'), + % because fin.entry does that for us, using output.web.refs. The only + % reason we would want to put them here is if we were to decide that + % they should go in front of the rather miscellaneous information in 'note'. + new.block + note output + fin.entry +} +% ...urlbst to here + + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + format.datep "year" output.check + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { journal emphasize "journal" output.check + possibly.setup.inlinelink format.vol.num.pages output% urlbst + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.datep "year" output.check + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + new.block + note output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title "title" output.check + howpublished address new.block.checkb + howpublished output + address output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check } + { format.authors output.nonnull + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.btitle "title" output.check + crossref missing$ + { format.bvolume output + format.chapter.pages "chapter and pages" output.check + new.block + format.number.series output + new.sentence + publisher "publisher" output.check + address output + } + { format.chapter.pages "chapter and pages" output.check + new.block + format.book.crossref output.nonnull + } + if$ + format.edition output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + format.datep "year" output.check + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.chapter.pages output + new.sentence + publisher "publisher" output.check + address output + format.edition output + } + { format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + format.datep "year" output.check + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + crossref missing$ + { format.in.ed.booktitle "booktitle" output.check + format.bvolume output + format.number.series output + format.pages output + address empty$ + { organization publisher new.sentence.checkb + organization output + publisher output + } + { address output.nonnull + new.sentence + organization output + publisher output + } + if$ + } + { format.incoll.inproc.crossref output.nonnull + format.pages output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {conference} { inproceedings } + +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull + address output + } + if$ + } + { format.authors output.nonnull } + if$ + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.btitle "title" output.check + author empty$ + { organization empty$ + { address new.block.checka + address output + } + 'skip$ + if$ + } + { organization address new.block.checkb + organization output + address output + } + if$ + format.edition output + format.date output + new.block + note output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + "Master's thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + format.datep output + title howpublished new.block.checkb + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title output + howpublished new.block.checka + howpublished output + new.block + note output + fin.entry + empty.misc.check +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.btitle "title" output.check + new.block + "PhD thesis" format.thesis.type output.nonnull + school "school" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output } + { format.editors output.nonnull } + if$ + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.btitle "title" output.check + format.bvolume output + format.number.series output + address empty$ + { editor empty$ + { publisher new.sentence.checka } + { organization publisher new.sentence.checkb + organization output + } + if$ + publisher output + format.date "year" output.check + } + { address output.nonnull + format.date "year" output.check + new.sentence + editor empty$ + 'skip$ + { organization output } + if$ + publisher output + } + if$ + new.block + note output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + format.tr.number output.nonnull + institution "institution" output.check + address output + format.date "year" output.check + new.block + note output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + format.datep output + new.block + title empty$ 'skip$ 'possibly.setup.inlinelink if$ % urlbst + format.title "title" output.check + new.block + note "note" output.check + fin.entry +} + +FUNCTION {default.type} { misc } + +MACRO {jan} {"January"} + +MACRO {feb} {"February"} + +MACRO {mar} {"March"} + +MACRO {apr} {"April"} + +MACRO {may} {"May"} + +MACRO {jun} {"June"} + +MACRO {jul} {"July"} + +MACRO {aug} {"August"} + +MACRO {sep} {"September"} + +MACRO {oct} {"October"} + +MACRO {nov} {"November"} + +MACRO {dec} {"December"} + +MACRO {acmcs} {"ACM Computing Surveys"} + +MACRO {acta} {"Acta Informatica"} + +MACRO {cacm} {"Communications of the ACM"} + +MACRO {ibmjrd} {"IBM Journal of Research and Development"} + +MACRO {ibmsj} {"IBM Systems Journal"} + +MACRO {ieeese} {"IEEE Transactions on Software Engineering"} + +MACRO {ieeetc} {"IEEE Transactions on Computers"} + +MACRO {ieeetcad} + {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} + +MACRO {ipl} {"Information Processing Letters"} + +MACRO {jacm} {"Journal of the ACM"} + +MACRO {jcss} {"Journal of Computer and System Sciences"} + +MACRO {scp} {"Science of Computer Programming"} + +MACRO {sicomp} {"SIAM Journal on Computing"} + +MACRO {tocs} {"ACM Transactions on Computer Systems"} + +MACRO {tods} {"ACM Transactions on Database Systems"} + +MACRO {tog} {"ACM Transactions on Graphics"} + +MACRO {toms} {"ACM Transactions on Mathematical Software"} + +MACRO {toois} {"ACM Transactions on Office Information Systems"} + +MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"} + +MACRO {tcs} {"Theoretical Computer Science"} + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { " " * } + 'skip$ + if$ + s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := + nameptr numnames = t "others" = and + { "et al" * } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.organization.sort} +{ author empty$ + { organization empty$ + { key empty$ + { "to sort, need author, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.organization.sort} +{ editor empty$ + { organization empty$ + { key empty$ + { "to sort, need editor, organization, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { "The " #4 organization chop.word sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + " " + * + year field.or.null sortify + * + " " + * + title field.or.null + sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { longest.label } + +INTEGERS { number.label longest.label.width } + +FUNCTION {initialize.longest.label} +{ "" 'longest.label := + #1 'number.label := + #0 'longest.label.width := +} + +FUNCTION {longest.label.pass} +{ number.label int.to.str$ 'label := + number.label #1 + 'number.label := + label width$ longest.label.width > + { label 'longest.label := + label width$ 'longest.label.width := + } + 'skip$ + if$ +} + +EXECUTE {initialize.longest.label} + +ITERATE {longest.label.pass} + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" longest.label * "}" * write$ newline$ +} + +EXECUTE {begin.bib} + +EXECUTE {init.urlbst.variables} % urlbst +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} diff --git a/RobotLearning/script.tex b/RobotLearning/script.tex new file mode 100644 index 0000000..081400a --- /dev/null +++ b/RobotLearning/script.tex @@ -0,0 +1,150 @@ +\input{../latex/shared} + +\renewcommand{\course}{Robot Learning} +\renewcommand{\coursepicture}{roblearn.png} +\renewcommand{\coursedate}{Summer 2024} +\renewcommand{\teacher}{Marc Toussaint \& Wolfgang H{\"o}nig} + +\script + +\newcommand{\setbeamertemplate}[2]{} + +\usepackage{ifthen} +%\newboolean{inheader} +%\setboolean{inheader}{true} +%\newboolean{loadbib} +%\setboolean{loadbib}{false} + +\providecommand{\info}[1]{\smallskip{\ttiny [#1]\par}} +\usepackage{bibentry} +\setbeamertemplate{bibliography item}{\insertbiblabel} +\nobibliography* + +\providecommand{\citehere}[1]{{\fontsize{5}{1}\selectfont\bibentry{#1}\par}} + +\excludecomment{solution} +%\usepackage{etoolbox} +%\setboolean{inheader}{false} + + \usepackage{tikz} + \usetikzlibrary{shapes,snakes} + \usepackage{tkz-base} + \usepackage{tkz-euclide} + %% \usetikzlibrary{shapes.geometric, arrows, shadows.blur, shadows, shapes.multipart} + %% \usetikzlibrary{positioning} + %% \usetikzlibrary{intersections} + \usetikzlibrary{tikzmark} + %% \tikzstyle{arrow} = [line width=1.5mm,->,>=stealth] + %% \usepackage{breqn} + %% \usepackage{bm} + +%%%%%%%%%% +\newlength\rightmargintoc +\setlength\rightmargintoc{\linewidth} +\addtolength\rightmargintoc{-7em} + +\makeatletter +\def\subsubsectocline#1#2#3#4#5{% +\parshape 2 4em \rightmargintoc \dimexpr\parindent+4em\relax \rightmargintoc +\@tempdima#3 +\ifdim\lastskip=1sp;\hskip1ex\relax\ \else\fi{\footnotesize#4}\hskip1sp% +} +\renewcommand*\l@subsubsection{\subsubsectocline{1}{0em}{2.8em}} +\makeatother + +\pretocmd{\chapter}{\addtocontents{toc}{\par}}{}{} +\pretocmd{\section}{\addtocontents{toc}{\par}}{}{} + +\AtEndDocument{% +\ifnum\value{subsubsection}>0\relax + \addtocontents{toc}{\par} + \fi} +%%%%%%%%%% + +\author{\teacher} +\renewcommand{\theauthor}{\teacher} + +\renewcommand{\slides}[1][]{ + % \clearpage + \subsection{\topic} + \index{\topic} + {\small #1} + (slides by \teacher) + \setcounter{mypage}{0} + \smallskip\nopagebreak\hrule\medskip +} + +\scripttitle + +\emph{This is a direct concatenation and reformatting of lecture + slides and exercises.} + +\tableofcontents + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\clearpage +\slidefont +\fancyhfoffset{0mm} + +\section{Lectures} + +\input{01-introduction.tex} +\input{02-taxonomy.tex} +\input{03-roboticsEssentials.tex} +\input{04-machineLearningEssentials.tex} +\input{05-dynamicsLearning.tex} +\input{06-ImitationLearning.tex} +\input{07-ImitationLearning2.tex} +\input{08-RL.tex} +\input{09-RL2.tex} +\input{10-invRL.tex} +\input{11-safeLearning.tex} +\input{12-manipulation.tex} +\input{13-plan.tex} +\input{14-multiRobot.tex} +%15-discussion.tex + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\clearpage +\fancyhfoffset{0mm} +\parindent 0ex +\parskip 1ex + +\section{Exercises} + +\input{e01-robotics-ML.tex} +\input{e02-systemid.tex} +\input{e03-imitation_learning.tex} +\input{e04-imitation_learning2.tex} +\input{e05-RL.tex} +\input{e06-RL.tex} +\input{e07-invRL.tex} +\input{e08-SL.tex} +\input{e09-grasping.tex} +\input{e10-tamp.tex} +\input{e11-multiRobot.tex} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% \clearpage +%% \phantomsection +%% \addtocontents{toc}{\par} +%% \addcontentsline{toc}{section}{Index} +%% \printindex + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\bibliographystyle{plainurl-lis} +\bibliography{b1-DynamicsLearning.bib,% +b2-ImitationLearning.bib,% +b3-ReinforcementLearning.bib,% +b4-InverseRL.bib,% +b5-SafeLearning.bib,% +b6-Manipulation.bib,% +b7-TampLearning.bib,% +b8-MultiRobotLearning.bib} + +\end{document} + diff --git a/latex/style-exercises.tex b/latex/style-exercises.tex index d72e99c..6b3e1c8 100644 --- a/latex/style-exercises.tex +++ b/latex/style-exercises.tex @@ -58,6 +58,7 @@ \parskip 0.5ex \newcommand{\codefont}{\helvetica{8}{1.2}{m}{n}} + \newcommand{\urlfont} {\fontsize{6}{1.1}\selectfont} \input{../latex/macros} diff --git a/latex/style-slides.tex b/latex/style-slides.tex index 6ca05e5..6fd03b9 100644 --- a/latex/style-slides.tex +++ b/latex/style-slides.tex @@ -38,6 +38,7 @@ \newcommand{\headerfont}{\helvetica{14}{1.5}{b}{n}} \newcommand{\slidefont} {\helvetica{11}{1.4}{m}{n}} %\newcommand{\codefont} {\helvetica{8}{1.2}{m}{n}} + \newcommand{\urlfont} {\fontsize{6}{1.1}\selectfont} \renewcommand{\small} {\helvetica{10}{1.4}{m}{n}} \renewcommand{\tiny} {\helvetica{8}{1.3}{m}{n}} \newcommand{\ttiny} {\helvetica{7}{1.3}{m}{n}} diff --git a/pics/RLagenAndEnvironment.png b/pics/RLagenAndEnvironment.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb65d8cf3d466d0d92e1f2a403ef25c862e7ee7 GIT binary patch literal 32588 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 G{`y}z>ld*A literal 0 HcmV?d00001 diff --git a/pics/clune-ES1.png b/pics/clune-ES1.png new file mode 100644 index 0000000000000000000000000000000000000000..885482eb36c777937f08984275d6c7491da72478 GIT binary patch literal 155079 zcmb4r2|QQry7m&G3{6N08A2(PqRc5tL_(4&Wz3j)rV>SEN|KNvl+0zyR8l1KJcOc5 z8IpPYu7ADz-TUmbzw@2X@BN+KDg4)3&-2{(HQnp>8D)98_1o7I1VN{8^7vVTAb&&< zYx1er;BQph-cR6v$n9hm)TybdJHM#(;{V-dFL&Nv&Dz-B$-vf#FtM_>G}>o(+1AL& z%Ffimd{eX&j--v#(7iUdSaS#o%X2enUCEYcXG_mewd#wo}}Z*I@as5 z`i9@6zuS&YIV3dFZrtb$!&+(%pN+EAw|Vv(h!Vg57+X^|v{#n&*P9IvN6G#EcTU=* z?B9Pl>7zjXn#`kos4?m1i^IQv(#NbZF(M*j-D^gVwd4af6gS>%bliep$>Gyc-r3n% zR(7l{b&!8z@W-mAj?Nunx8FZRv3BiR1JT$GZ{q*)d%rxp_}3?Vv1j^oO+t@rI7#2l zvB|el>-QhH-`a=;{Qlj?nUzg8kv=4dx@@F|v&o<}UEgbZm@$fB>sEF#`{V}?TAH4z zQPFL0YRUfE*T*jDI`y?Yfa932(xZcw@86%$)r}IM+pxiFc8rx^W?|{<=xCUqo}MNn zBiljm$Gvsmg@mV1o0oNm6$Nw))X$u$JNGO!v~l7~8QGJ>#P>ZttL@n)uCA`%zklaC zamRUeWqE1-ms{r3D5vkAwr$-`_ts zH@8(#ucE4oW&8H+EG+zc_7rSG(}%NgI|G}bjg(`l`($s}R5DfO7@T3U(*hH$^IYh*-xK74Hwjpj*P5QD|zwa)0;O2U3pjc@86HR#}zNm zjH+p9NIH$}&`o;!^jm*rC@tl&Q>XSEITEor6c!fd=;#y$M#njh}J-10)}*VyORxaqw7d@}E(q@;|_ zZUF}ehZ|HIq#TABdKw05V^m_KmV4jah>ngv=1Z%3?wr8hy$Ooa?sFN2m7C?{%0qco zq`X!NGcqPVhVlFQ`Vtv-12x^lM`Iehy4;uMt`cX?oXNBOcIx=?cPi4$2QAu!XlMeG zRAL&MkGr(x_x_p zgi-<4zpAy8raO;tN?H_bjjWEAaLKxJ zN9oFyJu3D1iKNq!EepG^f7ll%#;CELyz?{;(;1T{Tt#%vS%&Ga6vrD-%@4rMrpn}$S z?&xi7$6-J*!l4Q^G%|XcmL@<{eEhgDKYzO}(4L;2-ptI5K`wa9${^dTnYo{rxwyC% zxF#B&DiTkUl3Eq%7!Rc;WlKp(Nu&#su906@cniV6$k@4het1GYNwL8O$+~+47aSCzNu;mg{ zQ$0pn_7#{;^uD=$`}WMtj1rICukY2u#-DnnGK*?mS64i6;hCBH35$-G>j>q?hwBTr zhgNoF8C89X5Y{htH@kFcGYbn1ar5R);>ojT?XOQW?MD^U)6U*svEGz zs)Oifc(zQNHtjd9dty}ez{tepS1ONeSt9S?$Ow5Uu40JhLL>LCU6seZK0VyeofO~a zSUP-0os7J5)JHPr#7XXThsDHAYIYE}0s^=yap1^_*>XX%nwlD-)Fc0B^cJm0k&!6m z^aL6q`O@It)aTEKQ6gH?bo**vq^4@9sgZl5q0O9Q5#K8$WHUSVx$DSyPf2)C5NUB{ zHTF7p6?M^_%Jw-^KIn123KGFw_EqiRBKx^{)H+zt$+^4_PNGtuO} zx>9uie$!xme5K3CJM=y0=ZuVu!I6G+$wL;(%F5b}?Kf$*qBNjZ|19kD`dPlU?mZ*- z!Wxmt)b#Y#@6{~P?o?D%1ogUgW+S)J5_4a^ELJq@CEdym&RSLx&CUJz@ndI!r!VaWl-I4hjn!&Ag1)TpwfqXz_efG0-@bie z!NIYD^U7{hgTXIfPI*77LHl7KK7IO>C(Oda;H>*Z8&&wKXl zvHSjMldN{<0C17SXAS|q!jtrzA!baG)%3Kq3D)E-U0oKImQlgMM?>~91$60|mif{h zI&^62#HmxKzSqWh%};)d9+&TtyEkZVZr*qVy(Y$eavkA5``L+GzTfwB;N;X4g}2ME z?_uHLjS;6$pGH5JdY2N_$5h|3g|txQq=oX6J8|NImR9gLF#xr5=gtAV;44zpI#IB# zhU?%#`>*eAW5-X=%%C_d`mEdXKtOllOBq#xth4hRY7g1Pn#V^nGczSrR{H{_DQoOS z`1nj45)_D?JUk-kjkq>(@z=n=!TfU}oeCsG*4bGbB|bY4;1um6O)L9-YwK+3HFAl8 zdl~H(US3|TtgJ>xMs9A48Y$;aqvT;XkdF@7vZ<=7_KV3A8TLaB2?^XG`e)9_2uQv* ztPJ_|NvVFjNYPF)v5t=)PXUB=cXxmO{JFi|1viX~s*RS67dv2evuR1{lntqO)?Pfr z(ERjOE_JM<_G`y|`7IV_&TPy-s=5fo7i@QV6VX2~5NdR#yu94S#Ra(cU<$h*bgIszNQBiOPXZT`jVWFg=B8U=|n)>S1D-CsZ2FKrQ zA=u|{{xFgD|3@<(`ed-|Jn(NMz%5(yB;We=>({JV17t8gH6>!v_9QK>M)#xP0hK5* z4Lv;pe*Tf(-iwBY+u7N=83MwkRfx0?6lpUXqLPA4@4;(m` zu6H^_)VllA$B%J}AO0J8LWf31XhMG>;IHrLDVb&i^7W-- zp(OBm^YimX^_5awhYmTkXBiP0m&(_RfmiGTNhtj6=j(eyPA=+*oiR=dVC$PVZ)7bj zXSY{)jC0cJCK(L6o;-2F_wLgQ1-CC)_u)j1ke!AyvMv)-SXllxbpq_wGFm2uHwX)=rE}AV*+h6Ro z$v3T0$X=3T|Ng6hD!>lziu*G@Q@7SQdizkUzS<@rAbS6b@Gr6b;{u~k6F#@3cI(9YIYKqs&F+c(A?JC?w7i`-^$NU;!- z9t$tCvTWb_tV2sRR1S@fX4|wW6D(`$=d9t+RE-ai)s_y!HXvL@DvqeF=&RHEk7 zC&L2~Koj;usHx1f@5A^tY3b-X_t;*&%5g;8@kgH1cyxODc${3o;FWdj)?r8Co+aB- zR^nc~pe62yh28wTk%Rf~4b#!LI9`Hd-I;Hfl$YnMs2Gr!Hzyx+{o3fk$2E=$0FQxz z8zO2bDJeY{M{`lKaOd^)^*BuS_V% zb$&19jo6fw#b343A3l5#)XGZ8%R4VGKL9d{(vP!YC^!o|fg%eIi@IZJX(^~z$h>tc zuYkbVj~^D7FJ~K+`J#`4V1BjFk^lM0h-@c6zd5S()MbMCfFZT+9sz;0Cr^R^FP_}0 znV+l@ynFYqnwnZ)U*Eoc`xL$d^hiod=BLEA@c9>DWdQXrnVBi9ic{YD=b?|n=0zC- zlEQv|2}l~ilxK&wQy_Q(J_U1O=>xcWxz>cw*yY}nk z+wLNc%gd`V$T4Z%+a~SM@%{hD0n{CVcc>IXqVd2X`;l|A`(CL3nimf2CH78Vw!9wo7R zEo~wOy{KXVw-OV1p4^fU5fMq`+an~jk@zt>s_-4{_r;4BeEtw6sJwBSXYB(QczSa~ ztif`Li@=xVpxHwKcMtt;SrSip# zuQ#PdjS6vb#iKUj>;C=w;LfdGU5^Dg%dSF$AY_=d-j|mLN0@^-;By=t4n5n=&#%}@ z1~7h%c;a=AP1I@!!NA0{M&|6^l9txL9g_iJ6+xw&ykVu~swY0(y>^UYe}}-25Sc4vtfU^}sPG zT$4@jN*!si_ix|1^U0~lgZIhx#6)9PSCTAn`O>9|Sgqn_=Lbze-@fc+q9Jh5`@emw zT^c}HsI07H5wRe=D=JPJ8GQo}a0d!Cd_yFD@<)TsaP2Q57z@)zQwiS!T>_tHGcc z-LY2Xei_PHzeST64;}#lW%~0keXosj;R=R!}fq_q8Ldl)Lk2$16PWs5U9T zvfX?3e2qx8J-mYuI(Sg&^y$wT24$#aiONy_0eju#Po9K)QVFP#CtOK3{q^f5v82RA z-%3Nz$x7Ze{?0jtR-eV77U7xwz}+-I*SK_PZqh<9t9PzCQWQn&t(BrR%ir5c>XeGg zhLv&g5-e*F$FaelskyhMj@v!;9A&gWoa+pUiYhXxWs{eeM-?DU&CG`0DSx=j^5Kh( zySw|~W9;|OublwWm!@0wAuuK38t>gBb%}tzs(}Tr(^qtLKR?$<8GPKsB^17l-KB4Dc^Iu**}wVOBB z5@5qm6A~m`CVhUG0#ywS4Kc_WLHp?$KPc<^ft8hIw}Kj|hd@2TBAI;yUt^T{|HEq!Q*ZF|S{>uVqd7Y^I9*Ecmm zz`%01EX+`?@rU$2t+d zO!il%>AtRsmK49zl-zw~>#zpoxzmb@eU(dqRF#(96epFHYbq+vLzi^o39XcH7*=<2 z$w!MpkqHjo)HCq?+qchoSNqVt;Sr3V>XW-*Wi{rvfxW_VhUi^hoCWF$08VzF&$3}@ zF?Ym}&@}oIif}(r$a3yM5MNi+c_Kb{`Mz1HqXnNDz*obW>7Mg=hjjrDf3vE3_UsyOT;qD@b62hmLkS};misey&Ep3EbD*!s^X-wA z)>l;I=isxo*JBeSycLt0$5)-4G|!#u&bQ-@^1?j<*?+96qRF%@ z+Rew8oJv;L>MO6m7=G0+EpP)1t*#~@@;<%7!}z!S{3DW*%Tb1u9nG1M$0H>9G_wO?h4@Irnbgx)juR=IK%h24= z!1;J4Hri=ZZRL+=v}H zNbh$Ud~tkSB}Ck5jA6@`l(aOS%5JlH(H{54x;hzNln1~>fVupU36FiV-%9;A0!-`S z7{>@1$Z9|BasNfB1?IH@domU6y*`<7|%`O=F*6cUPHOFQ0uJEyPD&cI-3 zX?a@O2>=5mJvKJhUG%`k4`C3g5)?wYx##ulS0t)p(wb((m)vT7-5w*;( z*J4LrmcXMy7n!2^2~dD8`xI3_q^QnTB$AbxInRCGR?K9qEC1WKZyVSodeh#|zUm4m z=a;n^wQx(-FVT}3>dLnxSyJC8zg3|h0Ui)R|9gZV{BH;!jef>H>5SjR-k_&^dpJ2c zxw#XzM1K4m&e!}6=XG>+PAY3@wU-BM?J4n6q5tam^xLxb`SWc!PpBebpJ2fJKfc>% zr)Z{kbas}&3EFkoejFzl(ijAU>o;!b7dmIcd?;oy znX|7|JgSfr}cOn|Bsm(4>s+ty4I85~%R*BDwB~ z6O=@Sik(kya!$5O^1ivKC!G@Rb9LR_o;X1H`T4{~cJ>kwR-li*4}q(|y4X}lj~=ah zuut4$VG4j0N7<^USQ47#!Vr+ZwDUwSgtc6Y_AKijDRc9Y2M?IOOjCO3*xK6K+5N(i z=(s&#Y-B`6%-&w}_3Kv@M(|^9SfXZ-hoHtC^P|7J{m?Kp_sf8Iti?14?-mIX;VN;Iv^$A;c9AsgM#9j%FD=n45 zCri4`%+1fEudsts;rFHH)}0&d=SNcbT{3T&UMX^XaO>{fwcbHN8$+gk z{UY~HPUZ_)g2YYqLP6!O#A1`nC@a&;sX{bF&zX{CcXDzfsA*_M?$+$|kK@||KQKVB zm>E9F%xI_il`9uC^X!KbHe$BLmP{2U<+3s_Lt_E$?PA_Th>6Ospv&V_v z>{_X+>grubP&4{hyvH6~YmKg}2S9VK88GL6K5EUjnKrP-kr(Ff825ap40JtiIyyQs z84yx#;6ke321O9m1|6LrU%q_7Vf_C6K}?LbfdR^SL*!ld3RF7@Nl8ct$7_y6?Z14& z(NVc@}!+_-UUU?!Qwf-OYY1&f{kkp+kp53M#1W#j?Z0h)Sz#EwU| zsb#JHaXgn!WdM9U{Qk^{2$Y~*wH(`GM^5#OcjaF;GizTE{h-Ip_I5cO;0FHC)%4M; zj*gUstHB1BBxn>&Hbrl2&3_-Xq;(#D9)>QAIf52Yhosk=tSrrIrs?2(4W6lb%`9eR zjzWiW4-rn`tc`kSy975gXqO~5ewRX4cTD*uGMNh(9u*cYMF^YtG-i>FPYpF<`I$v5 zn2CqK<%7kM^b)v0(dZLI#`zZjonN4KcB#O8e3qKJj2)kEhs~kLi;`DS^w5XOr86}x z?R(9O=g&FAqj!bpK=(4uol+hY+tjVRQ;^R;uAsZus%fYg_!l1WfzHsojY?%wzw2rG@1AR7!o!?#_4+;5gTK6)U!#G2G>~|k!V
    zaPHCQJ{yz{!}nmImhS*zm{@Aiib>n z@_Uwr$m`_fL0q)#o#9e+@tVPz^wWLs@8Z7DgYm_kR9w7*l`-_#H*A*L`Z;jNkx48& z7SkD5fmSN)GHEz=Hmji*DS@sClr!xtLk02KWjLPGD~ryv5D_N^h% z-ibVqMUmMJALAB{isHYFs)&7_g{FN~ziyx|_82xcchyfAqjZ4HK8u2p2aNoEeBOZz zkq(UQqeqXx5>j8h==fz%7CW+5mVH$BcJ!d{7>=#m;>^A%ZfW<3hY#(O$#i!(6C1Z| zQPa^;VsCX`m@-pU4Yr9Fv+1?Z5w3VDdco@#SBfs0KPb}W_*VH4Lpiy%B=L@%&|(*M zo3Vg}t*@_-%|J!vhfYSKK~pM>$w}K-SaNHSFIim}NuO`=Lh8W9;myMRJ)-m*RjJw4TPjwt&hcFFf8#&`V$d>Q zy>c)#On@>|ROF$hwN3YaXy`F|IW)Pwx&=-3^;ehXe!}gT`X)$u3%FWTRMgGQ4Tm2F z6|xE|bA5pfa%+La8;2mrLnoA#l|`6?o&ZewUTmo?4fIqDbO3;eAA+`FZEgMBdPAVq zd^p%UG=Du3YqN|1@t|wwmlnOBwswkxkzJN@;4oW z5Xyb>=+QS%j^3znJF^uQ8M+sEZhd%R@42&QIeB;zRKTXrKZnI!!) z@4v1S%;r!*+<`{bjeQ0f3w`1geWPOyL8~k6{ZB*Woy-3at@@wH+JDGt@o@a0ymbej zJ0k;ic^Mfj&D|C;{Mp~OPcp_NKq$9jzWpY zqN9?MlD$0%KZ2l(*bmnA_Zu3B2DJiO!1MBw+S>6iRt|waJ`~u**ul^nh%@Ty3D(iduUI*s>mPq+=V6`F zcmL#cQ2^y+#t=-IamCZ8b#pAX5m2FIZK`v=_B1qvJbtWXoCZDvj|FTp;-Fc`qemBP zY;0<0pRoTHoW{>W_m`N5&;Wr()-2>=%DL39;!$7@B$<;(C0c1fr@;QU_4pZc5LRJP zQESO4bU1))vp%oGJLoI*OFWApc}D$htXyzu+Xkwzg^gvmdMM?n=v*Y<+GIE}pibw0G89Tgdy~lXmH3^FX>SMeNV2oI^(TJM$ zx1{A%|FiF-a;Rwa?W=6oog8nxEPVq40&d?{5EM<6eD|(nX*FkM*%S&sFg_p`GB<-? z9B=0!TmeGR+157EzmPHAxFm2y{Dg?ep zjMvIMG;dBWE|;94@$r(YeJ6TnSBE42cu2=r@8>&?UVy{Gs}db#sLgTRbJNqB>E(D< zD%C-^t#thcjdILlv1f2MXU{H}9wPh6>&(L#5)wkgv=@pb(g)+;nKlrIqeh=Y^yJ&K zCnQ)`Pj75|e0*%I7%l4j&g4{baxxJ9cw6R;CE7PmkxD#U2vkhy*AfyEHBsWwK|6XjQQqLd z6XM{Aee$HPg^lb`eVqH?p+h93 z2L@uPYmb_ZOC1^>zG7}Z-kzP5pC8eW+|_{yCCK{)-~VQvgO73f1ff+e3l<1L72?8h zaP$-`9vWU=-mx99W)`w@Qa2tgxpj76p*#BCv6%6HJi~%wC7Gqpv**rHl5Rq>r@&Lb z&CgFx!OBWtsVAlnB0P`MLm4({*C|tYWpEBeaq8y zyu8CGbdVtslEX)MB7`>;c+Pz!fC8V@)THho=Q!F?p54}qDwcGv&-`)TTtvuj)I+_~~DSv9`5q?~dG{XoYn^Ba_OSqKh6vT9G9mB*$e z4n*Mz!ZLXefc&Yt8dyN7crz9sJ~c$upfsi8`V;c;VotV|m&<8t=B8RILwZIhwrAO~V+Vzb3F<7#ikO>o zwzeL}2EWHHEhQ+ZQp(nDkpq~5N~~ZzP!nZo1Q8tiZoRIJlM|J9Mn*=?aDdO?ps83P zvT!fKrl53@m4c%3`7iwZz)t2pCiutAI>8nico*cGKyZ{d0C1~gcR0v35k00+K4vULx zs;f^axh)>iv8XdZ!U_L?FPtdcNjj7`0v-~08`OmQW~9!@c5-w3a95rrQ8yw;|2jGr zG6ho~*u8?*qg|p+_PaM=+ajfS=fyiJZ)_Q9X=#EKHm$BEv8dP8@Wmi3;v|MzksopA zhX&aU@vbtg5PDCvq}vHSUCU8b9UXVDKZKSHZxUL=rJ};ScR$O^Ybz@&gM3h3y-!-Y z=j~hg)d{H!9{Mm`fIEl3eEC`b2p6$w(XR+vMZg-C7ld8}w+TAC-a zfVK~!V`6&nfD5w8i_$VPua2~&8WZ`G(I1CzDgX27X{Gkn?h_H2 zLDCT|0+9mEbiL-*RuyICvE>u~V*j+lsEGbJDyXRT^)QYY7#NVx=yXjB32A`Yj9^}b zk})djxpNP0-(EMrXQ|V=BvmWhm*gBo0Qh0uA3kKZeR6-Cvaz9oxQMLSsC9|2?|U35 zuouu0$jXCiA1Hnx2zypb%jM1WwfgQq*J^z$6BS0HSWj=|lNSiq!^e*ck+maZ8S2Zi z?yMMVV! zK_rZz(0L$fg(nT!wLRCGUAMZbihuw9pDn4{I3CcYtjx{-BCCh3y7B}ZPnEJk3PH8T zGxA)XZhfYfgrpOY%Bvday!b`XMyC|kA(U%VaVKK@L_yp4=oTok#TM|L8L^{YJC2^! z)Qk}}Q65=9kpyBj7Gm!2!A4Zt+T7G66!A$#YTjpHH+BlN=pLwr5Ue#*FYM}l%iy8^ zw=GD~6nl(bmzhDwA2Y(eI0>wyL;b0)`y}=g9mqnv(~kQ?;#%k z%{7M}!|i~v2<}A2@_7GcUpPkC-B2D$DMj1s&oKv}sqZ1zT3J)moox~rA0LkvK-9I0 znVyCmOyqU$d{Vtez;)-vKqypR%hTb|Lhv}^;^P4^aDe8G@3Dy9EBgXRs;(Bnzn&sD zCvBEZ8=p#X?%liB4?3haLX`j>2&2~KuE15TEHAWoaKLX14G9_KoOG^_ljBwpP#`1q zYnX?YR#sAOGe7(p`A;T#tG1fx7P-DkOS6LcX|Ifo^vD(aTTj^Kp2d?&_`mEEWp0}f zF{Z31Y%c@=W6uWfY!WCcIIH>YX=36UZ<29x7Fyobt3Riv>_d=6JqQKnl%8m=}Nke%{tnijSd_R0bmX}-UMXcLhktcA51`r=rTB^#;PYQV90DTA~t}H$2iQ*{uuP z9@pe(VlV+d_=#e21ZhK34qe6Bz{!e%N0*yR3IHMu27g9DRYr!$--Ub@m&a~$#9=>3F@5~P}vKyn`x7p5TkUUz3_Wbs=9g>@f7 ziVfk`CCd+z6f8%7q6u1vAQ1Bg0SF*_02pYZ7G`E&A{A8Cjg5IcoYoE+2v0 zQt&&s+4K9y0b7Y*dPi*=l|Pf5o<86yja}KB-@M+h%w=&V6*BRWftMK>K-jOQZ`Zy= z77K(AA|FC@GhO)!hsfLvGtbjf#y@!?10AWjNw`NT4q5+dI-^M>bM}o7zaDurl}sjFB5|=|B#c`MLvH7g4m?o55E*#Nq*h?_qdY; zBklj+;M0F#=jkJzdVi$|Ly>ucdW5cnhrQKC{>Ds2ZEXp_YpQmxa+KI1kZyt8mzS|F zDB)LOa)C5jH4s6!3 z|MoEq?nUT&Y%7V}+MV#MkTg?fd!3h;{QUWhdie1mZ*Lk!_$)FqGLDWp(b3&7aGb4n z+TuI?{ntzjWVM@&V@M=H(5IFo!3u zuHFQ7ndkJQgv3Oq9XqCPQQ=oDPHg8^!8^#Y#O|G@4kUyC_a--~o`o%$4YRVjKNRgLOiwLAf z?{Onx1oF2RX92QXnng=zr}p_qE&sT4sTazf#1vK4NuHKcv_wQrKFkvWV%pTXk%c&{ zPDEtnFC`N^`1JJj+AlUI8$NuHmy^RRg{sXaIaRcG0+po9INQY$Q0VyB-LbD<8?tpb zAH5#mv50&UGEHV?yA|L@6W&o#th#TSo2Mai++B^;Ua2Q7!wC<|wp$zjECUT3()|*- zx)1K(*U7keR8dh8DHu_!obcPXUmc;nu$q@|^F{W^k$m7wD7jNMuNRX4=F2uFe`h0w znQ23WVIm+GQdf6|Opf~*&JA2R*vmZV87BIenPU;PqVQb3MK%_%I_iPK44BUuKt)_c zP6)^nn1rJeKn3YTR1<|&zn6uQtZz0o=q~hTY+__CU_&raAkQ%;1w4E6*IqM|X9ZVxIAPbn&*kRabulKPt|qpg0dtrZm(*2W-M5mSEZf-Ls%6w-;vma-nU z@fMdB77nd61aNCOg4?+$#0-CC|G|S6DHY}AH~W9IWs(9Eu)H9;$E83iLc|aJbJ`{b z!!F*9s-s5#7T1)*okE$ekhTY8Ktn*^tQ#Y(KGVM(LKXvdHm3cUWW2u0#A0*!F>nXn z_Jb7-4O!2g-A?Np8|6 z!J@jx#w}a6gocObW@Y)`xG1H!a@ml*JM%v30-5lErVgs2s z62$mN?2QVQ2jJXVc{To>XgUx>t(7;m%?(Z=zV+2mA%Ob|4E>(2#p$|b*k z{Q|Voo^_0sHZxJbiTeK+qwa71a9U1o7boZ2PoI83pQ#Hbo$CTADT{>zf2#UcP-kdR zh1uDpL07%AXR}C|6MZ!`VM$33h}6JBXm$*8WThw(xYj(XWIV-MN{s7zKuf{pjwxYj z5oo;W>w6&L6PoCY7kjaDNixaYXl_qMYt~hO2~b2Bg0@_Iez(g*2jz zSjkzxapn2vDJkUMkoQok95Tn(I0C0ayCdl;BStTnKKvsKkX}MUZ%2-3p>sI!{Ep1x z*~QmVQ4#ch$BaL@i#C*tI9)h)jC`Kys5RWP0f?sp%#*t!U%>VveBlVoJ`!(%xoSp0yJ;T z+c2`Sf<5hEW2+Ih1CrfAj~u_Brxns4aJM@K&Gme}sw#3G0BcKIyAyGwg6#q2oK+hTyu{4Rmd%^j5XeWOI`i}K?G(*k>%Cho5u>g_NjiBp z*LLiOG~!@vOp4G~IBb3(sK0`l_p?d=!m?kPB;geh{cI2K-MiQSQ3rloe}7QpFGRvH z8aO;Sc-V7^BrXF{jS0ZesOso=bZ`zB<7v!FeNeN;o@L!0Di?#SLT~*CqkvEelNJFm+Oap(_ z{F4Uu*nA$17&R7KO}wBT?*bUxP=&1a*dnp6d$&G}HPA{lLAWp239OcZy-~kMXjIRf zAtly(E?>9ifok_BO`I>hwrM<@1XUXvfZQ$!{$f1iBX(Lnt^;Ek!NDB+_N68zeV7&S zj%x^BA&dWvkp~ib$Be)~Ui^`C{Wm54f4u_aKQQ6H-&pcbpIS;Z=_orRJNxQjJ(n%j z1$3!hiVsZ9&1o_v0X^}k#Gs?W(C}%a4G#U=3?_5RL?MfQ`GyInr3RuIDd)&&@6lOGhJ2C>}*hmxtE;tpYM{(yZ zrY@$%#jPQfcz!|YfTjiZfa!ho#RPgM_Rn2idDiCguL1vDUBz5}eEk~t{Q0S^)72Y2 z)JF^)(Wmd-+qh}ijaTo$VGGka|1JJA?o2XXUb$OcWQ!})lA%YyF&7dN!sHcOXyp=* zEE5}EQhwiVJT48u2G4Us8t$B3%Aa_ z%uadZX!xm81&5pvUB()f$B7coJ#yxUW++E`z|fA3yWUjyQW#e;%`AR-c0Xhlo?p(;q*U<4JZjAcMwyk-c>F}Ns# zo}n`m=#@}x@UcL=n2gHF%xnkJgg6l&7bjxf{Wvm`Ur?~8t?jU3MGz?k3b7bE7zKgJ zWF(zoVZsOb1PK_jSP^rtlsrZ^d3pa#R@&QQ2n@<54k2dXrY0u~@Lm~63O&}%405Ef z5#F7X`SN9dx2!%--lFAn)MLi|h7}tZwEhlgcSSDzUj{K{ADdRO zTS3r0$h`5clAZ=c7s$MklTg4Er4aKSm{K7Lxw)c%cng30WerWuQ1`#`&|H<6fn6hG zZ+{T)vsp`eDH3$;Axmh?As=vRfuEktLSUdFI5;@C+nbsa($l>lTNbRDKdYRBFfkc1 z<#HJ$81oZ}eE!wO$Uk%yxrO&5<(nNEyqUG`-t^g*n7)8Z>FU6c`!62$pptFaI*1-n z6JQh&P`}cWlQ(7r6cmUN%!jV1kHldF!Mvx~W7Oh`ifPKCgvaV{&znuo2RjGQGKyP} z6gdB{p7$OJi5)~sx_)i$Hjg96EzQgyI@tT%(&_13#p!O`Ui{TnZBd$r^6l%QTW`xL zM-MqqTqK>kFWP{eLt=!GY2D7NSFbJ%>w>r44-Q6*MFlUJ5)hby=7Nj0v#YAD%|+S= zIJmi@>LN5-l!nVd)S$ZL-r%cHi^dpfx+=Dqp>qTAKo_*Xmz^z4_$*1!jEM{Q$6sZh zD~){e+G`*MX{R?rYwwMTPG*KD%##GDvIGBKd?$p2t(>?90S(?Z-8eqVa=vTqR+p+p9bAR zU~K&JYouKup78|lo!xc)>#s1@l|0JVvSw<@tE@A=s9X9aMQCmDg5R!@Edm9GYm@8}Z_83~44}B1kp<1Rc8+-nn%~X#cpR zAr=fs4*q1Mw3n35!VMV|7Zietp(C=G+JuL&NoweX5WGMKyncrCmL^DFcr6f%D%CYn zDw}+rH+*=}NkT$XO5rTo*RQ`Guy*gNo^{g1fFh2=+|2d^h84i8`)S4Pz5`@b;YOKI zSwwgbXv@XiQlbe?&zeoHdSYBgHGNo1Btzb9{$^sf;oTia8a{qpUnbOT!qeAFcW3Sq z_ffn+Y`=)eciVj2w!5%gEZugzaR=|QISgtE2fH%Y+Sw@FTJApX2Jy3>_n_}##${?^ z!g=OL#NE4e7u43`#UXFQjW+V4{B4u=lz6k*vrS@UdA0`tB6gkW!448gTv>y;--<Gd}3m>+zV4di1CR-3u=XD==&1IiNBSRJ~`I|J}ah z_da$v3fy=^C)m_y*dxO_`fdB8ni;~~hRppTk&eOu1JVnVji{ZQ3oaw}VrKRXUNgL< z@G41&-qvLzgwW~IGt;br@sr}hK zQf-2HLkwk+ULm9J3_rp%CWbqBuaur6mJdQY^t@ixiC;jwKR3=*&=aK?9nP`(-0}Id z2d)e5BNL_n@;cd;=gF) z)vIan;DbU!y&fJ_kTiinx=Xw^h^Fi0UotRwW1OwE_W|jZQKdaS(y;0g4M|BaejD?W z)_QGOYaoJWn~4m>h(Y6kAs{@$DR_nIEGk;|=3b@YIjABcB5&m+kR)-Ygpa|;a0)@N zF4_$nVh$Ls4=8^tWC40gcw;=0`4!$kwu)SE+si$BH zkj3vSCzVyDp$;N7I$;Xj2kL}xLg$xo{LzN+8NT+@x-CrYE?j2;-VZX5L^+T9+bSRj zBkt(!MPA-yg?zp#MlZ=v%~PK@|ZNYSpp zIXU)OoVEvkes5cS26dpF)|lx z0euPyHeY>$SbV znsWN^vyIIPKUb+UjtX^bpk2?L|2kl!6r>NxCJ4wd73_3?^?VYM{myo(`)tM7Xl778&G&+waaf@G$#^J$Qf@L7bSl?JJ8l!z&}; z!yY>Hs#|i^g(wwzQBVMYTz^T;(a8y(-S)f2moB}XJ@-(hwhWaC9vJ*vk*i;i$IkjH zhPP!oIXFNnfh9k+z%lyHu*82MaOnZ-p-8=B8oUPXtD9)Q*X!v$8L}uTP0DVlp}xKo z|5XrvR%=JLj*gCEn!Pu8?VrCr86(r!UhIVA!qT!fI(tJ6{h#la@nvF}lAJSLGZ%3p z{u%h1sPvzoAZLD5!};frwzT_1WHwS9#ee<(`nRV|HvRs~jYoVFv;TbSEs4;#krjpw zD3N@l>1#+oveD;0hQn1m)OfdDkGAk8T_g4Niv2I!h~NK85q#NHEZ`r1doW7wfB8W> zjx}oi`Sj!WRG&s&JIV{7zH=vOs*p5q6R>CZZWnlCplO&^O9(!cpx=cP2bTja1*Z-1 z$L9BUSq$b-U9tb?H;)Vr!Hy>*glG|2Mtb-W@IA1|-4mp@&tVFgJIbvRw&Gscz@nm%pd?&V|Wc5U{{FRwuX^&e$VecOkPk>Qu0JHk6W&0yXI_V6xgWz&1i{YEPFn^&nw-GU%sV02!Dmgq zaNB}i^_`t8gw4;da{fLO&fjKC znoY=@KE02ZSN^)z|6%RD<9h7-KK`SrNW%;*DMXSamC;biOxdf2$}EH=N=OnVBP5lT zokUi#nmk$8Pud{*!^e;K$NKDOy45MzWJCMYak%ct?xKsqLrGhY@esN3mRD1!e7*W8 z;bf1VC)Yucvvqclp4{S<7pfuzp|DL(mRs#*-d9FVapa_j^wfpEE3Uwv2%K7uZqXc1+2Q=G*#M^NN%$(U~BF?#X8VkhGBmwKd{5^>lh}*b|TF35} z+lE#Wn-;8^&p?h;q5S>(K3CKNjf`w@xD!FTIZ#m^UxhJMOtx99uGc`*>>vCj7}GXQ zV-p`p2=KsF^=Y@l9pW-DC^EM)0Pr!-fiD#*fz+vQj_#cE@g8BR4<3J9<6I zP78X4TEDtWp+&JMA+Qjng>a2wT|->1EPIXSEi63zH0Q{Vo5T$e9EK-TO2Gb>eh)Shn5iI3gU_0H78*MZa`ep>Ue$Z)v<2 zNM8*svle*Z%^MHgJ(t6e(c2?ur-J}c*!Yv?4g8kO5yBx9?#|9Tn2b%1{YM{*(4vKa z44hFYv-GnUSlR=uZPF}1(n<3iDkA{I8Muvx>h3I{lmgrmw-p+6_N{V&q^KMp!5Kn5wnjloNCL z)Ts~PBQS}FdS2Ubpzue+eXq2E=KycOj>LeHxf9I&U%a32NTtVd%?#ahsv*}2Ii`pm z_j1~iR!7#Zo^}wuAyFSOWXxW;z-?BZ+0=~e0`Rz%@UbjYv-AzRJ+x2zcNT2Lr$h+YXs^ddr9+!5_G-1p?$}07 z?p<8KC^>HxDj{T^1Rgd0`bAB}#qIgmUTiwyy}sAhu2;9v(sK1NFbT35q>%h==Z+l% zNLS!~Uw7}&q7ROzHi%E-Y#d!Nq79Rn7h9)o6ezLLHs0s%Dt}Ao^=15Mcqlo+-rhba zhHI^r@SKdUCF~Rh(KEBrt(fPtIxz+AbNI@Ss_PC=?|d2WX&b9js^0RdpuIwF&EyH8 zr#U}@EZ*ONMZW#oNL9gf@Wqsr$}wixBU%3$SqN4uGmlb@G?9oJb?frOum0vS2M;ds z@OaD@^q&4%0(@> zawhqj&$eE@d)TlAD^yRKFTMFtbnemM*s8BL?bJPJ%7X7%q%u@oxG3_rmoEc)MFeMl zt85bm-6Ac31_y~Z3{A^YMHAoN+)3oQm8PxslS}*9=X-dK7V_`3Ubb_$QOkkC&_X$< z`-@VY$}uwKlGA4a6X7k}KWL$!6l((MAyFs1+txys;YVsoKLR83jQWo>A2I|zmU{d4 zxzDb=+UlxO?vsqcuA$c*dMLKt6Iuj}HZUVD>l&{=c`|js*&a9d42^Uj_#U~}j?b!nyPCm#O8WS*? zu+asVZfzTVR8p9x-^sM& z391UjjFCmwv03X8K14L%>gs0>9XjutEh+zYmh6txniO0j#P#M4X2@fRXd2F*mpC!< z%=T3yC#}endrys!e)Q<|>};!d+w+p;1{lYFT95Y-NDOt!eXk3sU>q#80>XyxEZ7+B zt?OfFQ^%eP-?okN8To=B&^YcNFh^G7_HUaQWkJotMj?n(fVNk@eb21?7~s8$$Tm23 z39_qej9v?AgXw?2_?Y&Gm8P=`5H6?<)q=fwT~_uoq^8JV8iJ~aD>Ro}KhI_|$41&-HBKyq6B z@ngWRA1gRj!KXNLxpy1;|u7W_c3ar=GI z^_bpW*HF`)0-K{8O$xE6<>56!*sUTLscWU*fBN()_5IUjIj+*xR9Qq2Jm2UryyW7-=&yBsm&-j3pP;7LOI!OT zgtO1i>+WcJ@dV%dwcBFf!)s#Ar@HS)!OffKHxP%b_)EW>W;1kt>E@nOr|CZy!$<^{ z3W*gV5u0%Q5!!bcQ0e|stbwT7h;2sQeEQUU z_;8KfbG)H@!+$D>=-S3XD3hGipXTJe1hGJVdFZaHva;cVhrNX?3h0XV8OkMJAs$%R z0gbPt!TcNORb|>geDZ{zpP(2yJD7TIg=J9Cs4-{YiXuacI{$vl^ga9kqjR)YLxiN; zAk}-5HF;FA7s3iB&J82skoIR8mMoMfye9dzW-DD?%gY1KOIXEJT%Tz{(Z=^?ol}tA zCi)sn+tSj+%C@rUOI93zAG+fNx~cD{XIvcpP$hJZN^*yD5f+PkxG%l(oJ46b+shX= z{qE1|3yh+HT&X`e_%h~I{#s>cBT3&zjbILaRr+bW+cY8`b{0H*@Sq!drLs3|cXZb8 z1dQ(8P*cImEV_H!GRr-g)9273uJ860<_0#Ag}+Pn;vXlD9~Wa7(#p;zCWlV@M=Nt- zWvBn&8k~eG{on1HoOb^4qPv2&GiegB<1x!8BQYWa=SZyjt3d1=gaM)GnmH*Li~;>l zPL4GQHFzZE`=KY)N#2vwy!o=7rKodU>_s0efAe(cADs z$1!~Xj>B*+I%fXbfC8ke{EGjou=Qa{cWSP;PTdAGMjjQY8!*P&FLwqbT#UMt^mRwo zl)M*H9{V2%*U~7G*pjV0c~SMKM%`<2^1$t!O)>%|*ilbcTQ#?ezP$outxT>zu=adR zh8(=2O+bX$=$*5A%WiO6v}o3}X`yb@7B4=-^aZMoT6Icc7%0r8h6=pr!G?ykZSUU} zeNF#oGnBjqc_|N=h`&=OPrAy*+(B@g=yc+}X7*G|gpGBddw-u9nTCA-%eD)7v6s@* z)tj%ldwVO5pwQT~y_gUB>4l!GPPR$z$a9N9O>*!Z6wGy3B@SyCGC=BB`FT@KLO)G$ zzjj99yXkbxp+|OhQERiEC*(y^roL!0!lIiO%s_wE@Ah*!9^f$3w|3AXdc!E z1o%l|8B|tQE-Wg_iCKh}#P6bIURm&@;*ydx4K8GK_Oh>j{dy2QPifUhjxPz3XuY8+ zlC}bLy7)3jdc{=aJ~5$_z^)C|Rx3>(kwWb3LPx2X;w8GN&u+O!?3BqHVZM(y`7zOQ zYui^+yMI`eO(HQAq<|jSZvN|562iax7c(4&Ucp?;lt`?M>^rFI#nc`me?ww8IhD5A z<+i7s7h$n09Ddr`?le-=7>0R-G3Mv@GB+pa|J$$02iL`)IWw;3^c5??h=Dv}3vpfJ^O+B7*~f|FCui1M5gN~d*qlN3~*osqlg5wTN6dc@Uf z$K8Jh8TW5{yPKwF9G=AGrUzgGrKF@vT~4Fg2aykPE2iw{x{{Z)Ro|FfLA>BLTI(e% zSFU_tRfQfX`wl64HA|Bvb{6<9Th506fSA6u*< zMuPiI5D{;1opaqV0^f4*I=Abb%5A8+hm3=6PYRmx4F0oLTa5sZp@2eg2lN;^|=S zyCSuf`|ometh-NAG*lmRP3@ z!0yYR=(Bsl+_}bb)djm{e9hO=^@xV6i0}Rk`w?8>Eq!*{9ezO!Ep<2V6}&91Y#oS~ zhzD(3RS#xPGa9hq@w|Ju$X+~s`lG}%juMN}B#0w6UUxS$Hzx=B%hB*HTc)3%E5FHl zeN6h#PCvSZxB)y@&Q||QH4(^zw@%WMm616^OeY7AyV4peK@K+4o?qW}kcuic>2Y!~ z8sIT>EkFf+vpKLN1PFfJeS!OOp8Q!j>e3_32TV#{D>=?{O*yg=>Sbwx1rMY`7E88I z>rL)+=f3*w(hQE~a!FBfQUvEIOe4+v!yg$&8bB=rm=LAk5F zkFt%yg-e%!k1At;VtJF`Ok8J&?BcNRvRCWIjU>Z?Y>EKWB35f~!CcPEpS&Lq<;|IT z5Q&vrFdT8D;s$u6sT*ZLnN*Xx>FDn!FD*J*LPXcVaPpEI>R--`Y>gfkbrFDcYv-2A zWmkebd&6WmEE)617sYvo;F7b!()PJWUTRy4Grzcb@Y=vvXmnb4Hc+w_zjE4FQ$20f zBKhyu9iMp~x#l}{dsa*`hU|(r>=%xoa!(QuJ9d<@uvqgw+&bX^HUlqC1Ve?HSC-*O z?U`YQ`!?ZHu$yWsbR1U4=01Ij+JnjE^{r>4is{{7Lb7H`gHoiWr`K9u{#Z@-Elx>7!0cYNkP(;isjfHt;RO%!7-)t=yqO zGa)-k1sHlHA;D_m#4o5*e3o+&p?S`lx3i~wZ!pc4Re)*O#knC%2 zSn%?4nSl-MD*{`7y6hEK59^aE##(BNk`WX;J*A(;Pp&ZXDxkwiw^kV5{Q3Fg$FfSM z`1xqY&NVG{DG)jE2`1je&a6(N&y=vDJkJTVK0l37HQ4-u7>MCAHipMKg;=GE?-C_ z;fImvgG;A3ZISQ@sfKEDDASB z)6AJeh7N6t@yzYS zI=XWR%**tE%)L@V?+&+EK86b13Rt(cZP<_t*RIjE>-+NZtokDf9B=G7^2Z@2MTb0( zqn*LiL>y`?0xTikRO$UB2~h#qEWDz)PC=V~{^`|Pt^+@!4f__Hh+ekLGsU83sH&}RzUlNN)b z###iH-nj9GXTPj|e|m=Q$(dW;r>4#Qvo>SLo^hxATQ6zSa4_@5!daL^FHFMPe%9FC zXrIVU58Qg)X~F~)Boii1%#CZ*HjXUU5(JZ&*;A$*OH3Sj_&x`OoIy7PzlC1LeslV3 z4>1&>;^~AS0^Qs^l0+G7U;qP5Ds@_U$})~Gj#IMwZO+8(nrOXn%XN3?Or$4j&5rq} z4jpnw^SSJ+@liTs#m&Upt7i9B$i+WDGdv8y*CG|Q5@ z>}<2_$(dJ@wUOJuYC_gUW;}%1MN|d#)bz_heVnp%7t=yt8fF`7Q?>EGbI|hIFBesGojp6zyp3moH-+9G*}=y@~P0aV76EX^fg~ z=9MSAW3@7?l7E*Gj?YBJh9Hu|z!S=YLom%2FW*{+DgQiC%pBah~t zSG_iB`H3FWS5Oxb^uh0j#m1kw%*UsETgO2Lqb}u-8UyMLX~_LXgh91ayYTPs zb5v@N)LR>EwCC>UNgRJ-qHPp>`!%?7`?Q^gLxw!Nd-pR?2RT$gFdP=-6h-`krdd6t z5^%caICa+E{rhwBP{ThU9}6eclk;CU|Fe5Gs*-;{(eNZg;hsMqN?us*xw^V#TnFIh z8Mm%XgUJU2eEaJM71(vVT1ttb%tvevIf*tpp@2iNB26MtW(hy?c96l1V=(VI~z! zPu4wOb9KRoW_##L5*j(IVl|gunWb9#=+Qg~{UNPHJdA_nprtdP2qrQr?ryt>iLMWk zf$)fG%+1K$+p}j1@MGMoS*OYE12!>bL<;#XHG%QnM}%ahw703<5*9Xk+_>0*o{F`; zj}hZ$wCWajSCoVa=TJQ<^Ds`z<@}@a$5|0 z=FWNU@~6v0U&(@ZzUr$d1YLI*m!Y&{aQ<}e!qd}JG8$gC310ppGY~ke7Chb0p6>%* zAPB!@;8~i+-MV(=sohUJx=XQcvE8K6!JiMGI<*GGDs7CUfboKGkdRB-SL`z0i{u@k zSwIR7^6T!|_YU3At@>^{A1S^V`Q3cD1tN$x5U%sZgI&^x(~GBV)G>B@zYh!zMbf7i z*XohlsNU<=8^BtG)4qQ!fuE(3Y9%Hl|FdbA+j|-?k-HBy+Y6A^a3xJajNTSSp;=(K z?5k&VUfet?Dz)z)^%aN&79;R+W)V5nhyFE`qYjROr&7VOkgNKxdfw1lPwQJoR@DJ~D`lS*o zCxJICD-Qc?9YO_ueAV?Xu5wqE$|R>NyJ;EkdvD$7N%J2 z;hTo9uG1MlyfiC|fn;w$3n6geura$eFoBG<@?AU|RE)*Uyg)0qgXPizJf zUU@Y-50IX6EHTt0_l6)KzJ2iEf!N#km1p_MnZaK?m8gY#PhKQ9YO;Mx4BdU*VrAd7{ zwnPsOi0o0e7G$0kxFu=3l0D=HIYUDN8hp4T*kmw2&7P^pmySB-e?XjewX6S;_;@h~ zf7rNDhEKO{v%MKr=icfHUGoLfmKs(Aqusc1qh?^tonuZXxI}!G)05WZGA#r&xBTtn z$5W`O=p`;!RaQy~3=&x%hWcVeipVXL>O(Go(#!}IQC%*j`Tog?@L4b{Yp4je?)><+^(`s#4n7LmKWmC0pB)7))?c-fMVx>E69fW8e=91SN8Szpk zaG!+aLZb185pcV>q08Nnil-$M|G8hm-f|4X`O)K$0cPm$owQ}~Kxw^#Rhq<_bD(@5 z6*8|?!AV3fVpOz{m6vyf8qQFn?6S^~VdKLnHn;|7%$&I<*2(8WFU_sWBeu5n|G&f} zqPvv0nAI{s_r%$=-@knm&Da#wylxTTU9iAa|G)=vq5%uHecG7U@jTS7s;b1B(fqDP zM)qrxoz3ZgbG*@W{SiUZV{$=}=mJqnGqSV)dhVG;i%ui`Q212stS; zh`=&{CK3#>Qx4Y;4d(<1?oH1i2*Y=7AYv?Ass5LkBM0FJT-h%vj z6>l5JId8DBU#Yq1+*#uw3VW_MMU9~ioM-_YrW_>!@(nk1ORAO@6_u1+0TIWwp4}2# zkk~=(Q$fCVUZML2jY2ZV#*9Iah&>sbbuAyO7DM!9_Fn&)sehG}G~%)jzIPOl>2IC& z+qgArSJDlGv|hV*ZQ#DYoHeBzegDQZ9yt65ra`MsZdnL;0{a;JsP;v2!tvvv&Nswn zBG<6t_IXUpfUj{wSCeH3?UBY=Ndeby#)ac9TYGkt{??^^`yPFWI+7EDT1LqaGBFw5 zV6~U+S1(RvEPTHIkxc+_fLA%-{u#hVxnaN*r`GXU@(&dpulSvtoj7zeYSxg;;x58{YPn zri+lIi~nOVDi4@9A0I27BxKAu56TvKdA$QDlanI^Qg`oN>p$#shpX0;MvnC4ZcVEs zBer8&EiSqDd?$FDPuFdSmyDbcNB?r@5M_32;rQ9JH|G2s3DHeHFxc4GZ_OGgYih`x zNKU@oHtVGwb*PrI+jsyy)5CJpfZVHwWG5O`L^#t_|LC>HOH1Y1TCQfq>ZX1M26ZA) z2kTq$Y6T}1qi(q#nHRPf&AiL#fLX!)re9?TlAeH6;yuuKFFl!&YwD6idwV5IOh?uS z)i;AtCTfx-q-tER@L9+FXPyeG92Bw`pemp2teM$?Wq)PXXD->=biR?InyKY*DL{9Z zbFSHd!gfcU7*`NnJ9MhVjw9f!+8ScKnxi8?-VcD1>z^6;;|cV>=H4KTWDf5JoX&%<#cd5%JYvfqXJ@%cyt>XB? zGcw88HKimia1xPePYyY~tc-fN=0FGDLK2D3+>fYIt{i=$XS?nDTz8cnM^ffaRfO05 zKT~-#wv|NCp+^%EDtI0tZmNqOjP04iCCZe>;$p;l)zxvVkZ#?6KAP&n%-Y=9Wo34g%bb5MbQ( zcWRupBV+JL{v#_XIEF$J2xV>bQf>WCW8Nv06H=lbnq#QnzrWHFq@wKToWt3lm4u*( zmiDKU7q0u47NGU;3?XovHC4(syO|ffRK71gO)}QVmgt$*8&kWCotC1qyPfvC;fS;; zJt>>k#{6!{V9fWLE_GkEYVdP7F~o928R%$4A1SUp5;{JSu-gMI0K{IzbksCY%9zn{ zchu!6qncfULPh%po@CVjk^)&q_cj+Q85FrBXKPRPx@|fe%!QQ@xcnYk50STRB z$HPg24sg?7H`KSV2!s`?X*n}$XHW56YM2?LBsUYC_Iya6k!b0JAl`mJz))!2KQkmM zwp|tJ2cgey|GHPBsvfnfYpK1HOih@T|I-QRg_amEI9%BtoRC#w(7ud};q)0Z_Co+t z#gYQaW`RS@8oUmk|G#jMx}T-7|Dgqt%w4^3i&A41w>@Pb1T^_EU%q`4c~0`9eq5E# zp^l#V?$LT$Ol2E4RiuOSmMl>mflrBpS=2u^El59m_A{5|#=CWm$5N2x<>yn@aub@H znK2P-aaNkmgh?^k()-(5jZS_cUiB=L_hnJ`YK8kjrT+!BsZ6iF%-l4)!?mUL6KBuH*dSBg zafGa_LN28SPy+GQ-34LmbsR_Bo*eqGuH89w?OIH>D~Jwwant>T%Lp!bZ`(92oR>|H z*2a(2qq*z0 z_}k@W^|HAM%Q?&GL=n+)ZU=AC@+Ed95vyMyApjl8}Sypy=k)crHO?454w|XW*Zr zBOoM--w65(rqTM?sQ;nV)>wxr3{!rSDYau=L)sFfi_-QTrkvZu&IVNHa)xl@G@e^C zZw+?}4#OA@qGAKRy(FgpQ{W&7SVC#TDz>2&y8*cR)1bQOYt^t*1Q0U(CnLid>JW_` z^;}2=B{lCiU^A!<5lf$+Y1_9c_#D!HP=m6~x33-Qw!bnR@%)0#Ap20%hqmU`k8Our z{f2CaJPvW4#GHYB`$|xL>BgPP?m2Maa=wBP#Ob_8YdVoov9T{;jeuu4N+^8xjqT|z zDZ8QK<442@FVRD0Ald!tU3&H^v_(dLJBuFE$LzhF)A|hR@FU3Cpu5NKGm;UQg(Ma- z{ja|}^ZonEhO#L7HiwDgy{(?iP28qE!*^o(i%j*enHpQ(?L7FXxY%pS5{(WWHo6gf zaAo~^D^w&QZUpU+e?0o=$w28c%Y%5h%3enabuZd#s|MKE@@=Jrf~6ss=WkgMsf@0z z9lFva$oGpDicE*Mu@w~#<2-fwFvrMZ`*<#c^N2F5Vc+;fDS=#w;C$#Fn&6)e4RSA5 z{TD9teE46Pb0bgdhMzkJ40^`{umkKY=MG6}LJ*vNT<403v=?MzZT!o3is5VO!D>Uh#!B2W!-@T{VR5L0tV5jUmxme7PQK0dj}@ zeZwSzn*M&3mq)2>jof%F<<~pb25n-y;Z?Mis8QWRH-95w7Mv^~<;s;VB4(g880iTW zy@+y{#PqxD&EsU|1IKmT+v#7= zE^+{fZsTXm{un%i^TjF zHTv*nuRh#u{=3nqw@1O^fRwS>|!wSC8+dIM=zk_)!hmtTD zUWCaQN)+_$BxvjpSnu-k4`l~k_Te!GTqCrnw9-|TVUXRrbfGA` ztr(oW*>6_YMK>b`1}sck9n)#)2A#55Dg#7brWZg1`sp`5rqs}Ig`8M^4-tX^B|{64 zz=@?X#BFTP2L%Q5=@bctz?`KT!uJ#dmB#iQ*sGT(lzT&5rWh%0(ZiWcGc=_27Neg{l!jUnk>l z2nPZu88+t*;ZSG|ph^M*1NmCCr}RbyPF7aAkQoE71Sy@9{qWYUlOm{gtFR^San$jg zurs>Oh?mYq*sDk17Q0Af zW2)Huah@5Snd-Q;<*m)oQMz%^#V32bo1(Mkd3@~MC{0hlf2}@uuIpi9D+Y}wDP|>8mc{Jf z?`rxlmo|D>MS0CPX0Iv(WF5f0Nz>Di?Ef|Do@!AU09XH6m(i%T)6k&NXN=8wLD*R!Ee_X^ zEd6E97)uVS709TFB=TOx8OV589*CcJVb+bQ)1odyQ~ixTl%DP0k3y2RZAM1GYRzM? z*6`9|FywR6^ZY>RD3LMaFgT3q>w=brMGK^N+}_oV+7~>3>rW(@BNj7wK+K&RomW}? zHibl;XpsnspSeRbTDE&#rGksNwsd0pYIhQ?5jbv^EIA7}8asY-w1ClbFS+M=En0=|KQT9KCkV&wdI<>Qg5#Nn_qI0KCtu;CcOm(q$T-_;V zfQ=Cn3C7%=15=@{0f95!SbKI%3~a$BYjQDyf3jvovY_;*_7$};^4@Nv9!K$>Vb24? zw?CwUPxq^JzcG^YLkPln(~!TQ+R4twhPLGLl`FNfid~HIP?!P#aU#@2t>kF6=rndp z?Kgcv46+u4%;y4K6K2Pd!8*hKC999RvRg*_#mSMCMXn>(9jI71Bd=}L+~u};)(=WF z;)QI7GWaXf9<8GSlV8AhM`-BIl00D|lyQW(l5?oSZ-+$O}4Pn(Pv$qf~QHMlc*S zNT%i4BI1bus5`D-8-s2T7e%XzL59Ig9z9q(zvkV2)7&Q)Lc8e{yb1f=!Tk^ScuV#A z|8$9qeO&JG&!3kxWIuek>-K97imqj+xM`RUW_@oEx)^NR1nQJ`=S%^>Nn2$;f}=$c zN_PoDQ&$bE8_Fk`3YK#5;$$bMu0vLyrYwMB*SP+A8D|GTNFU#POcHQRqvlP#Rl~7* zl%?{ws^3AFx@XLN`Vx&gEIHC*{4F7GQaw>(^M%{CY12NY9Zprp*|XI%iUeVTqhm5{ z6p&9vcRFf>gld1av{VdhBe?$N?VcmJ8ro@{GxN|jjJ&3H6>@$*m`EN>k7Dt`?0XXy zshvLW+AIKvz2(Z%4oP9298c!-$g-I zocX>UHiSB%TnszIy;AYzDxO_ra?vxZPdG{gmR8cD{Xs zd%v8hFiD#8=!~_scz}0!HcJIYeGfK?K_qPnL4O;{XHWlQD5pN3JzK<}0Zw3kslhgS ze?pP5bU!4k`LcKLLG%^gDfgM$|~EMMxu*+%yMqb$5^(lTd86B2&&gMdewFAp9Gc2)?}?)>m|{`-RwK zXtYxCJ+=N}<&TKM8MKBWCmE;zXc=r{+}DmyLm-;M$1qJ`kMdZ=BFVO(W6tj$Z%RoOV6Sp z<)~b{V(bwnJQy3p3l^fv$jy}sOt%HGCP3K5y;ZAL6dw&&NDhWErYz*`F#dQO+}81l z%11B&E4FFF@A&ZU-83YO#N%q{nnx_?cBOCWH zkp){zVJmMHn+j18XKl?|2Yy-rUIJ>+(Thw~SB3q`QpqEH!N_0{$2I z%+Rp0^*i!U_At{ArP%(_Yq*S6?CmxQWkYCOES|PMAla+olfB0U&4wdijLu8oEBB;X z6M|sKzg4(#bkQrUE*l&gAdbNK5A0gxEj*Rv304S&zwOBi7v+|yj{$ChbP6we)Ju@*4(99-Md>&xfB_;6?(b2$l=udY1B@|4&spa@f5!v1!SABTqb>|8H z3EH^Xy6IevI50(hpWFJek5nF7)auE-pJfpGqjXC*oyPkI%R59CdXJPm{7Y;7v6QuM zNXocw@%GJ|?*+bl>i4RKEHypgFjOm;d+>kQ;KSUCkvMZUvNmf(+XM;*sxQ?Lu3JWa z){GZH2@f|ni8-rP5`C91e|BMhdkrLnqQRtLpQ+SZZ3;}xt>g{3C#E3&HRHG-3<1%i z>q{gozAIPe6jRyKwF{QBW~o&>L*KR%Xqr_6QGZH^f?w^MJdn--3yp`z>fU^dE>c1` zr-)Mcx2z@a?Sr_`zb?%}I9y!Z`)j5Fj}mYf*d;e&HS_MMT&G=fA81+E;e1GZnHApv zaGbt4FCV{Hn^LQHzUD$X)TPhFMfE!#oNPbSz-aQwSuJ^qTE~}P(fYck*IDJd!^5)m zv>eN}OWXalLPGxY27*-Xt6F>n!47eE>(tv<%|!Mb5gz`kZE|YrV@xuJA35t^j!8o* zhC3za9)GV8gvzus*+;sGq00^5wZ}K2htKZ2wGeU+K%w08rNY+)z@zpKo`e{Pb3X%? z14kMT+mKBr$gyJ{505(vLDd;Qw|nO!0Lgg2;tx<`<$)@_vznShl62*R>5h#U+sU1f z_-!rEJ$L@R(OxZm{qRK<@;h4g$a~o4wLbDU` zi!$KH%dP!IX4eX_7hH4g9X$I2YT2RBbxPL0I{QBKw(a@%p&#PPJLIh}7}=1q>SgQh z7K+LTBzrWi)G>LgAT4vZF5rP|9fs9ZLiab2e0ubk`cXBIjT%#0brOK%B8s0C?=s4zg ze`Vm3p|%7?u%syMuaWlA6AQpHz0iqlNr0LrCXkZ7bL<$kJW#{la8{?Bb8B5gAVZ$2 zV%f%1YxFwYA`wdvoSmI1riCC#urHs)ywTG4^NjXkf*?)$(D<*vVI40T(5OcIMiyX& zg7CXSG(9CNh!)bzHaa}*H4N*@q-7>0O9^=^jpOAt^=IcAX?2wTr6>|%F3eIRf|{5C zpiA|Qc89aeq~rf23j{b`%)1(~Q6+lo+(#-;EVA`NKg?REGS%K?#fV^U&v=um1tTs6 ze+we@2C#sX?uynHgc(B22w7wVfYk1eiMfW`yX!W)W%;P(931YweCbXDdH3#kWV)=g zshG$w`&iZN1&6ND`lDZ=Ri1f?Xo!;BT|K64s6%$gWV{f}?4-fW zWE!y;o!KZ1U3iumm`M>QI#ds?$_J-Z+}vY<`Bt}L(FKBpmEt(cEW3Zc(}_t< zE~PaNHqA3X4{GS9IBSChU?IgER$h1I-o(%HrElBg&#`w77q1^)q74=<~i zsVn_tQj&K-Kw4pP=bKLTRWs9GYrCv?l|M}D>ifLMSJb+njT~MTGHgMy)Ws{Kg{$Vz zq-ZFBbSR*>&~RDtpN8U;HvS9yFQ4_@un6l_DCDo%HJSW1I6%uetCV%4l&C}v}3(` zw!>6+n;j9fcR@3`0!iZAR2rmjELBw3Qaq&k-0|(7YvbnWS)B;mcCsih_;{#{?a|{~ zW+&UOP0p9KH;k8UJ1sb@|M4KJuUlLn9*@rs)^?wyY@-rbWMyc4bi|ZflFvR@N32dO zTf3^_yw=C_9|D@oONM+pXtv6OrTB{|>ZD$W?jG$dvB`JL;ExX;X&H#i%suc?OE!iMdCDR*d4Ci{B@vT zO*t(KgRS&uTSsu5h!tmH6Mgl*pr# z-JsI3t4dRj7!I7be%PFpt(pC(TZasUccC{9G| zJ$GKgb6;Vcp7_(ZzvQ>~r{61gs61HHPx;WhS^g?h>@WF_xF5Iuw8_-kpgSewiSLTu zx3B8sN43tKJ?GA~Fd zZW6AL)c7tB4wz%d;4+pes3D-qWd_q!eC(jd@HJedl%{VhD_Kn6*f?m?E~Tc1X$Lio za&V~s@RE z`+VZf!vOc|;!AD5pIG9%QIGW{QoMpz&6K}f4GXW%9U!N*RQiYd`Rc~EM}d#t`TBDy z*mkFv;ln?AG>Gw`eqjmGzHv)N#yiiRsDAx&uYfk|j;}CCzi=Y5e|5+q3-#%X&%TsM ziv1)Frby3Afil&}2@~9IRU;=6X}b{AJo}vIzq9~VNc-t45uRwZWX~}dr%&^2o*hi? zsG^cg21Uggd+sQ&_6~@yF`ZF9NgqgAxwj7L0EEkK>peAfb(|9{JB;flJab2BEcY&?*r^l7ux3vv4KmT;rb*Y1~ z9e0Bz;mahdzx&S-ejj>Q?TSz7qUV(~)*yP#r>BERfWQHR1c5n_hsK%hy}OJ<1mPh1 zl&J1ar?SnPzHUezJfB$bK(}f`-OafbEe?hxxmC;>_UqG@{K_4JwWX-Mspdx?d~toQ z5xScsM7sQB;)KAku(49_KrgWarLrS}62d|H~?@M=eFCl*aLBUb5cw)vX)To1CsgYcWZd+jM9xo$g0 z21<2SeLkBF*iwbOIe)DtU%nJV%Q&v2zbdI^Cd~96o z7(Mkq(i!pH!Ww+%Uc3^flzdrgrwrOsMFBxRUZwG)Ms*pqU>6; z=VF!Juzt@@#@-w-KYZ=l5FxVFMt$eBY0l0Eue&FVS#NaTAeqaiy>xbk4@oeiO2AM> zR%z)%n;&>RsV2?8?PK#$iE=yd8jFgLd1I0?P&K?`-znjYv8Sk=8;>e$+qOGM zWz5H-E*Z~7Rkt+%#tlVP!=P-}8qXu0%5PisQW4_jTn7#AaEQ@iu7<^nR>rJMjf>N? zQWiZ%0_lWXwB(HI3kjp3=4hU&KmELovvUSnFA6G`HwD?>9JxNIY`UA7e6ao4vB0S_ zF8g$^ZG0%ZPV?*w+n9UXrOny^BF4URZ0e`ev!~tc*|BO8C7HF8bI6)jC|G0gOk)Z=gPNf(<9;t7CE5Xo1Kj;I=mP;dh%wk6ld*|+m+p( zFZ|L;`+ZvUgEz}N+jc(`@qKY=@Q*4jfBy^7tIwJB?ZbpV?7Bkyi4&`lWAUz~f*29; zoDCO1)2_3?BR`kOMpA!Kd7e~U;Sv}-x5(PJRu28BZI z>~Jt*ljV|=^JyG8xVUqHo4OjJK(V?;wHbg1QapX6&^i>L!o%&WhMe7;N3&3wxz zPoFOE@CcD4y1Q`cot&X-zANm;nP&#Kfa8=37NHq~3!1O-gXq*+@AZ%d}% z@g2IUt1otSRqon#fwy-il9|t+WIEhatR-$5g_nQ;u&tt^fxdnR-O=%zunj)O4FZtC z^?>T()QJ-+jzZYXuO8+fSFukAo0urFEZej}ZQZFQx%9|;x@fLFcuk~~AK$*MhgD`p zwk|uB{<+7|lRf4qIUhPce%I2ZJ2OL%e<>Xsb1!|wrqJO}FRf}Lef@#e*XLd>yTzL; z>-91&TZi$9YnvK&G>ucXLG)5HX=m>)dhxvpQAsZONDBVumKM!pYsf2}KQSFG!cWAQ zPyfoPtVN585VhECv<rvEjA!G8UX~I3A`rkppK?nG_0j$Y(J{bGdNJ`Sm*Nf3 zSZ{3!z4`f2uIH0M(lg|&l<6}0;gTs&hxM|o20Fu|Sl_bIWkti}eD`DoYh+H9zKM~w z)_yTkVZy^P9UiS{?8H6%U3u+=>d5a06|JYloGOl2(e}Paqpwa8vR|_k2{?w~{D^P>fCUm*3D3N2SxbG$YVHMe0mwnAwE`H3%g86?Q}5D4psoR& z5o0pM^UUmPWb;K^e8=6u1^JGtxtqWW^{*IXvJ!2$U<6>yurMg43y$+tk;`*IvE=D} zff(#3+;z6+8lEs=0{VY0U=sf6#5X>GEFgp)gM~Ma2(n#Xc0M27<8&O$lj{o?4BHZB zZd=zuql=72x9zaD%Q^RJG6fo=zh6}8){Tjmq23vdc16LidD$qco_+MC0q8FGlBa;A zsHuVtGS``+O@N5dk`uFagz}Fc^^^D8Z>PM$?#6f-73rlM5SVS@OpHv14U2VI&-2)G z;K&OHz@HsEnC7ElrA&{?XW|dpI?`NofFsoY%&8u=WOsC-z) zSl8<-+ZP|`IGAUj_vYi&9BvZ9l?Ye6xcd(uN{ji7!CF*TkQ^Plb^Gx0W$@_%)Y`tP zKluJXzg9^Jq}%ZXc%r=}ZZ&)>k_p)?y+9%x-^K!`$gTPEsU zA?~BjNJl5HurN|f4)Y;EBRp{jY@MwII-%X+yV9c=FF?s2Unc4jmD{zmzR^=h2P0ej zD%)_wPgS1aK=4pnYf6wep^hnx+>~%EJtI6T>{F+jr_-0_whZdh;~5mn8)7SfGaKU= zDsD7j0I}1e&Vw6gIVsN!U*m4=KmEM4P`v27MN5;E02(pJXrEA+k-7pVkql92Xru(wSNTW0lxa ziG%L19CPRJCYH2E*=j>dIVxygj#V_pq(FJT89=u$!xXU8>_zW1*bp1|UF#5JvRYk)frc-G|Y?cHaUX7-kn?i8?J$lr9U6bhyr!92s_20kCil8h5 zfD=U(5*k8+auB{@sCLc>(AzV5&efab_VN@*IJ2M;mz;tA5ip2m(oz_;K64n(h}b3x z3{Bb{wujHC)BHl+k*DKdE&P&#h|n2Pm{TGO9ZXlee+b=1OTY!fk8fCWV38qEB7i!< zbut1Sov5xS_ES?Jn(VK#vjVuR<(?@Df!*PTj?}gm*d6= z#!$bYJq4PK%!8CA?j-&})vM9@2xEDyT$JslYk@FM9X}p_U3QkilbjrPrUv$AgxFT} zsStF9uOT|`Z?2-eA&v_NmjR)VbPeomo_}{aZ4(nwoKMJDlYf@)HdczYEKYS_D_37&y*47q>ICj^0Hl13TKG?YF}7RPM{ zWTV^9J1NN8LX^`4p*v~*iob*9vMchOliiv>&uD8~8(juSQSv`{AO;?=>ig^I?Zf{x zd2+`vnkLyGfUd*0L5xA~BrRFBIJ?1&ZZ0c4urNmMbkhi_WQ-aDT@U&~0Df`c`B*U} zUAWA2!NHSN9&Dg-_Lw&>VYjR#hD63^@Is63uRnI|4X4V{q@)%OLk3!k6HzuXZr(Yd zUA?5Nl7<-i1&&7k4FUZ>e*OeU=_;UFZ`jHC_9AVyIR4G6I#ypCe~2wh4O|F}5%&Oo z92I*sIWOP8@2aA*KBSGpmh9$ZfuN>>DnAL0J3F$Jdv8y;YFa2HD1+KU1ci zW<%IddtNHBY2Aq}+p+UpLuQr5Re z52@ka?;5R_EnhAXfAQjOg)YWkk?2@kB$tm((j7YVfZgFUv#vO45vly*-o0wJvE+8y z#Bnij!63V9AXSa)mEv4nGx~sC58&`&!FBB1`5x*#-UuKd_Nfl`$Ve}tp+?xZLrd<& zGvz(R@6Nm3sjleBlT}m=g0hCj=MNuZ_Us{`-%;=vHS&=kap zYyl#c1N~^OVq#`4TBKhx6v*Mew2puh6RZ#D4!^BXi~$OV_jUc%-dQ<0lAm^xJ%CdW zarxGuOy@ifyv=R9^<0svFDP^~`Rn%Wt!ZilJrsT{1$71B=~0RAJ((eIOgH8~MSMdZ zlwQnvs92>FF3_SOIb{!m0SH0EW4piey$ZvB@R{9&cdfQLHaY$mK9PCAsgE;b@LhzUz4&Kr*n8EEXFD<8Jb+yd+BPvYMe|E)){x}zhVYQSco~^$ZHV&*@rNTXWCH7 zG3xX>K!>a`IxQw$5hbU6_+PleY3b`9hD~?}>g`4MiP(E?hacE7mdVTYSv=wEywk-? zMigybbyU_QX4~`5LU*iut$8fsaqbnR@6p!=E^4 z@be_=Njw+?Lap7uzsuywwjmTP5+9^1-o71qjD$Cq$YB!tP-sp4?1WDNlE9rN84%pE zI{*}18>Qg8I_@ptC$0LT0$GYw;{gNQlBc~hB1bkWNWv>(JPH0ZSSRjDOG|&mkr;Tp z>WRYN&Ah~%-_1O2&^rbRTr=+aiO2h{j?cys@@iiP)z-f#1yDKdY=gDCvKIM#g!cktbMtOiUY)kK8C!U^4G6*=cMXeDZ``D5fFUJx}D+W#e|uD z%l0u?rBBn+0~{Qw%~QuSd<3`vH4);8u2wzHx2HB$rGAD_sTG?}`B)1UH7esNb@gddap*)wz;sg+GqaN0w?FXuAb~!W{&e>bCLNs;ay`lI&#;23h7xBIoEqmhON2Gt4aD&B>(4#O z1lkcBn@;A#dY`aP*0GLHRnnc+kA+7>L~PwEjuN5azHjwf2TTbn1-kEr)>3bFwAkmc zF<~Z`teMX~M$7$|rV&P8Q59r~Xc&r-g(kQ@y)Ym31NVYt3Fwq)8{W5XzK2IDdO?lj zHr_{aXP`bMl%&6z*=kxtnC}-P+a5SDYqO&;VagPO44nyBWI>WG!MK)@V<$)H>IC%J zccB(FLciHpcWH$(f{Mk%kj*8T*QvcWD|9i!4`nh3W`UsOV263TT4N%je`XBT4bQ^$ zKFlGIwgS}pi)esY{lI^>%#KF4G+3F)n)%2SQV$+J6pu}(HWxKevLJ&d`oc;X%{j&j zdV_XnN4@1oH8%gOmT-lhkaX|c5LIj{SNNGz(D24z!T9)IXi zQCsW!o_ojk^iPVx=xu8REH5!ft9S2Etx(`SUMpts?EyzGBqvwgLmvWQc$Y>6n=4l2 zgJ;GjS?!uZTGaRvBR04k1|vLhVzSbN(Or3{5}&OUzlLFklv^vb60dUkA(5ZZ7vRw z-7vs4OAsP=?nGhIdn%?RJXr#%Ib+mzSE+|iTZsITLUnO<}1Dj${sMr#mk`2CGFiyC0?e=G^%M#qWZ;67D&CUy8`(GaqWd+z~@hbVZ;^ zn{uzrGH5X-l1fTUTa3RA@kM_3-qZXrm&1 zpA+Jew~Np~)QEg=Zvz9nWRC6sgR(b)>TzHD|L+Es6iFJ44WcL!o0K%D%tJC|DoFzw zN)eJ$NTDP`(jdwZQl{7xMW{5Gk||SzsR$wZy>9kC&pzil&-$;w^{lh@v(G`_`}?`C z&vm`8_wYW$^m<$TQt4(1fifz2os?Ss;Cf> zTJ`+-#}6;ZoK#Yc@PqW%^7G3jm_{P`Lw@tttuS(5g4N@C+O1o+@jVwWSU~Pb8RG~1 ziXmOv%Cn0AiySfkbSx|ev226R{~)ap;6L(ktKq>prqkAG;?Z=@tHM|)xOr1b08}$p zHH;ukY=5!dY6t>JyW82|5JmgNTpTp19cngyKo()HM>NU4-Nj_-Q#cvYR*6gb zg9m1|A7Hq$IbqXzmB;q+4WcOw2&eGM`vYMI|e?fmwxuhQGXzw>M_XVLXR=kFDF}7&@IZ zrqij&1_l23CSE978WGm~m1zTR4C0tmV7QU+6H(s!^4@UrwgfCpqBBS_m@g{s@4;0k>g}QMr2PS0kNjdl8 zf~EpIlFoz^MTQq-;VnIPcIkqMf2co=DAZfFkAxa!U3`51{;uX{{ji#3$Rod#KgXxq z2Xxr~*Dq`9bqE+~RB`1&L^K%ybW)G1&2(BEcyro1c*PiR(r`V1QRCA|UB^*dTU*s= z&gNNj$L=<^V~(jh|+Gc z2qx_ba)iJ1J5SR)*8Q3xowF;U_yUo@NIZGsL=y zrhaW;jCuCdh5w*=M77;dbMe5y#%+UfMsQJuQLFS-R@+5>Djgqm(&p}?$YhWeAb=h$ zuVvrP$FusZJ0rQI8*IUDCQCKHZRxp!?t0|oW9DQK0qu}+L3v~(`Am<2^lQI;YaK^v zRRslnKtRBGZP|e$3v2xH#ey0tR?CU*F;h5hIFS(2i4XkMU%qU*QI?kN3J&Y2RcYeW z@b%DS`keL7(w3itAw+x#>Hjw&!Ve|{gAdm(Qr^)st}cGX)ByEFd#f@N1aA~2f>64l zLvj4*B7mfnTv8Wm%2OjRU0MtMoG(%$NHdI)HTv$IzxW!_GQap5l{!=Ey85Qy#WYYs zMyGf0(f$jjnjHR9ZF1uuGCHQGMs_*;Hy7akd#}ME7lRogqqRb06iJ)2?NddIeTw{P z*fORjCbKU1+jHP!j9Ea_P?xI7FEBPXX0ad0_joKkvQ|HO`*vjOC5QF%aDzTLKK>i{ zK5Hw-OgEOFQ|;}&A!&7WieMn=NadG=1-oi^6i;b^1*}4!6OmSaD8(Bi2nUh;8~Tg)P^A4w^xRyzmD*GTxuX4y*F!^_8ej%0i9@CW5#W!C*9F~GXg za$3Z;yB*o-wJv?{Vle`WrdZ6cAC3-}w~2Mi^_M=!XP-ZqoUGiXOEYHz zIQD0`M~P(oAR6C8ART5a7RO~YYf!yb4t-2ZR}clX;-k~aZqh^}^`}1PXzIDERDTA2 z+HrKC5`-)_Ain0fZ|grf0b zTf)K$s;}hdAK=9BZjr6JWABAWLFdnZHy>8goDY{$lw2z_5MQ}{Tht#56KBk*d-pEz z`Bg<@J~^IXKT^l;{s2QsX^EZs7Uo`iyr62j>Fp1qVXJYcEg=5mFGe z!{14D8@p=kP_A*{#)!Zt=P+%!4;PyM%Z&LUO zE^jjeC$j&cTg2bc8^F{IS{Op?ewwH0hYoGiNdxV{c%fkwV381Z3Wv6 ziYn#$T3+58Q2@6=@x|9UwDY_K+(F=J3u5EbqDEt!SSLx_0D)^^Zc#Bog6+<9=@ zue;R>7#y&~!;Hm#i3SZ5BSQYM-kUY)#Gs-o$r<$RJIt?+OJ)aEf3>^gsonNhK`B_w zLDs#0VP$4Qf+*TyHPk2Spt<>fk{pKrIVsz}sXmFvC)Cu{$;iqw0!Q25HVoC?KY6&l z5x9hKpWbt$e(QB6Yk#u)_I7r5o<99Pko|+9>dk%nyF+Eh5Uj*vJzR38S}>sa zE2Fj>;T<*joYZyNUm8fJm}XrTyyG1l2I%P(U=}BKGsk;XW;rgDNPi~+OBz=Imh5e| zoeA5zbx^;4a*B#1uRbC3ET!o9BZvenjU(imdZ@}X$(lc-=+s&@Mcq&!UP z`^KH5K4=inoVJx?Ym3X3*ZqEVJC0x0kVrgvGWtqY*x5S@<>dr_e6B4Y@pKb6mnilC zLyRxdTYW-XX&$Lnp7dGVy0B*a`gI`aSnwEGT^)wc1}a_T5;)y(pVnY;O?ygs%= zoJnRPkLOSCDOf2%%@FsoERDBi%w+C->9eiZ+CWO)Hot{Lb{*8|N=qCUSIMvfB{|&c z!yN0lQ>u6CVlBn5c`JbSxfX?T{S!kXL=uBO%HdY=K{=Q1bkxxXKVgwt;N9ck`J5SV z&7GH_c7oYpNzVsJ$&ZlIYMb%dS)ySKMoNPhJ?P=-=qh{k&SROsxDVUJOi$eH=XjU? z>74#~&|iNE42f+nC!RR|W=g1URtYKk|M$-y4^&Tg&W?qI1HXvPLckQ+V*$DxNt_5s zeM`Ri7g#iqE`sIO@Jq<3I4dkS@TEM6E zUN#o)!fA%!%b&?T$M5xLw#pdYGJm4Q%m2b~I4d2z{8PuWgEFRXhB0Oo6c_)z5x+tH z$gwNlt=rQftErLAcL_T(3<)+3zdL8bnY6Yms*maH&h+d5b}7VRZoWa0YS%{oF|^yQ z+}z-yn)|L)v17h|^X9?;nXV3dV`4&;*|0gzocaCRH}E4?+TsKVP8HqZlDqe^Wl}+G zbJuCII+RuHl#-UVD>~X*$p*3qQw=A~N=dEntf<)776?QIoAKF}l$ybgC}lxutF#2; zklcR1V(m2L5DeKkIav%FHYf4#kCfIC?f(bPqf`!>{`|g6jI5{ob=^8f+6t>RGZPb7 zzG(z>DNp(`DcjcXtl8Su_xHZ_!>~L!ifLxHcC>T$Hh6Umg4>?orVJxq2a+z3=2d01 z6j=>S#k)6eiHML2f&twBra?C@xNW-ML>T%c*`8tqXAe0S3Y>5P!oxaEnqwi677Qod z16e3Lo1M^r>Q33#*YZcq88*1=J5P>6qGwH7%Yg&yFa6Ia5#JZ*esI{1X1Bd|fcb=u zlBwPM=7ZO@s&}g1HS0b-mHB7eA?I3F>fsrBsrf@hN@%Wc8x~JA>Pwd{)f|owH0U3e zqt+X2Y;1^zh_Qo8f&h)t@A`Dw4xyyHyuuuT~G0krv5JgzaeD3q;!z1030&mci07|g_NgE{u;S&QLjgI`fa%kn9 zdva5NX zAF*T|Ginqj!AM|iMURi~WH-pIlWT{+#)=UgM$$lG)gE^KJPx2HtHyw00`GG-Ttm^u zEMcWYS%RzErfu7va?j{TxVD&g(h32XKE17+Hf|hC(Rut!y@_WFKfl{rs|cwCO4Hu! zuH?d>`tqRYc>^CDnn0P`8_){|5S@O8y#_R6Maw;Fd!>}JKj+U?BFzP?jdzVdIH?|- zpuKc(;VfY~AsD|XlyT%FvbZKuhv>R-pIhnMKGjFSBINLvU6*DLYPUZryF>D+J{5L0 zidpy8JnaMZ*4|I@d6_7V62UA@xyD;<%Dcr+>H4nNsqG+lGppa3)z6== zovDmC1KL&bvN9Pk`}GB|HZ;_gOD;05yl`GxCDgMGhp^E^@9H6TG!jxWSwjjzNpLH$ z2O~1?bHIjorE2XpyQ_Vylz_GMq|?J*E;Xs~0XC4f;{6M=h-KhxTrjFhzlA^c=2)sU5K60OK{G>LLP399vw|IxR$YTbo0;GuU;(| z^*wrh`Yaq^zUtKX`l^r%%`IQu;Lo=Zihgd^F?H#8b`MtH_*-C+Fn#vyKeMt_Y!**5 z9=owq)2i$V?(P3Lo`#W?zkJGilLz?mVQBJcf z_y1|U{{7Z%B6a}?^|7%rWxSnI9^9>1!;OHG(nwNLlauv1YCFn^Tl5cb$# z`l@c@;#zRGIcD4_FW$eu<&uFwv3$Se7@glAzSU>5%GT5omet%(1Hppu*mrV@yepHn z5h^F-5R5EgY%g|oZ6w>=cmW@byPGEb9iF!&H_?#V#snvi9lPWTO*(K`qvkG1P;Qyr zm5%{Jc$2qZ|2^7MtSSxAe$hBFAX7a)PUN{MwYr=>(#bupe$7Y;b!2Hb`!DEs`ol@WpQ3+vr@wm3S!c`(aZM>!#Z?5SS z_4Qr3qs_GVoU@^ik2hV?thj%_q_&Yp!uxvPKYT}X&8<-5nv(`)>}_Z`8=w@<2@+tu z>Cdr~4sZMq8AQjmx9Qo)m|g|1m@)(RB|0wFEL8mPA=h1*t+vJT)id2dVHz=FW`QcvBzoY}&}w$@eO*ZuV^FRlHo1Z-N$_8~#uF5Jm>I>34ftLbi{L zoWPYkAl0E+<&CXw<_g&=Q}1GjSJ5CIUl{efmCSEf!#;D30Qr7$xl zZe}2aQj=gjKRo4d{YySAG!4-zsb|mV5w`rNWDdhRt#NU}k)q|gm0@L>P20Y{(=pXP zJl=m+*)P_C<;8^dL%T)hIw!WWR*x<|d@OT|MtL{?w_d%(hzn3uB%fAF9667xVJYIh z@bkwPCtpVg2PuJ`fkMdf4J7_)&ny=ImaW;$F!wbwN5FyzGXO1?7m0w^qo|>vS;%(R z0@?CIzulp~bj9YZdSW9%fPaR}l)!S9fDN6_ZDCa|XCeZl?Acmkbr)C_Gy^bHWEc57 z^EpRv&d>)hP$mejpY5nowXj@;pr4B?PZ#CnJmtaT_<=eoD>D;Z6xJF2;&=45tfzX+ z>{?n|um7Hnso=`&_v(WoR%sC)R)GEwDnJmbGA1{^UVb$m)s z`E^1%&XxZfNr$8j5B}E>>v?=EU{dh;d8@Q|r7m}yPSKclbh?%jWt($x2t#5fawMb> zvqYWJESJ$iY=Jn}7{?957!*Y;5S$1L%|jIka~T6d&=C5>4O_AEzS$WnPTdA(n>MNj z1%-t%vlO$}=}iy=B z`2DBho{@?>W2Sbcl5_)b5lmgE20-^!f62##zg&mo)i*YxSYf-J&B_}r#|XutF(tQB zEz`g3=DoXXvg1Er)fN6{>O7-uCmb~$6%+P1`T>l8QZ$G?b?pb+Z z#Z82Yt!X>`K7A@N5(eqx1TYPJZ8tnMELzdVQ;L@HHxJ>N+VN_PCW*uSjA5K!*}%br zDFXMlMfVmp9QY z^DYd7$_>>>DrnE18SMEqka841(SRZ}&JOGe;z8EYqnkCufT{55Kp7O4v^;)Yt}{vU z?K%%qxZWL4@KpvD;?pWAc{&Y&La%VRv-=R-_P z3d*$Jv$5d{G8c{_tJK!`FLUg^%?BpNPi{QgHwqhXF5cI#McD_{Q-sD$En9Fbu-b&;2M|wg9jK9%;PvqAHq9_3??TPJ99&Xx(L}5sl?K`+5{p@E5`GOBpnNuSpVJZj_P4g-Z`dL^!sjTcQ5Qvlo&L|o} zz&cZum;Zo}rJ(_{+5-FZ zO-aj|gVpG*-2+mKboc%9k;(`>CN9EL`%ehyN9*HlFpelkRL~PpRy?i+nF~(@@WFXo%L+9W#`M)aE5a27u z;cmrS!%{CBIT5be*AeRwpKfAu_D@N?+yjYFW#m3X7mB?XqP{sysFBwyadxI-f;Nqs z^972ey1LOn6IRof*&4iRgLb1;L_YkK?4`E{KMBxLijIq;GKB>mhx3f?3YV)C^<$(r~HehtU?h?J+sV!oK*o z@;pMg4?r|2hHV5EjHn491UlH;?h172jLHn$L@O&5hJeP}mY3{iu%WE6k zIwY@b0Od&@129H1EKMl5ICx4Ei;EXuj^a4Mr0#Ui2luYzDA<%j4LZfh+e!Cws+JSoIlsX-T@ewO7BW*El?VnSzC+Sopy7G@Z^#XcG2bx#W`WjxI_{ zPdNqVJ=Z{td^?aX4V3-T(yDcq*8)Km0Febu(o|Jc0$_8l-(S0(q3>^@LGlwWclxQC zGh#<~tZz%);?=E^bwmCF0(Q`w#l_uhY3<3DLRgC7nUJ_OKR`>RkD@dzD{ntP)`XUk zk=^MbC<>w^A>ft<93}=LQo<3TVZewg1!0J%V7Y9J@z{|gj5 z_+!s?SI{@+4|-`SF*AvwLgMLfen4__hun!F2uqjoW^@0`uboSx+s(p4tctc0oNH{X zJf};D=AR`JL0h(r!-?QQ3?}Z(o1kHLDiPT1; z9z%wl!`H}gd-7E_I7LN@=Uyw@jUT@l2-sr)OeN4rDz1CsF8f)t#5E((D??-7S!Yj} z9e6*Vvi1GzSMxRBVtm~WiN*(-r=o83@7FIeOgXjCeDvx?Ils^bR^A^NJ^Di`qK9txX*sKTqlM zb9HNoxU6n1TE0#o-r!qac+U&$xsf*yY8XHVDR8pG-H!H44!Kvnd=L6cUJgWk12F;S-sN8lTp zNBuGdm|pY^%?ne3tV*uJ8Vko<8AoV2lRsi~=}sYYh?&RZ#@UB~SVcs%`DK5waXE6~Z+9V^SL1Q0b|UgAaAl>XyDipU%yaFileR4?;hd02xjA=k zCFyU_!@hj&v})&XH-t}Rb)PpJAM{Blytx0Ot@AuK#M#)}_t(@!?IXXY1DH7Yf#gdj z(2?Ii+cbo*NdRfP%UuD~ehv)ZxSx^Ht!vlZ?;M`u@yYyL&kdda1vor<_^_FdVHmC? zYVyGR$rmm(gQ^xp(Z^6~*#s|FkNB!=Gs|-+%{H{oU(N}Oj(Or3fj7KTTNG`-_xdCS z{jd&REr*ORFzc&CQqg^utiVLr4Ro7ryt@zpie4WPc~NC0?4k0d`c9X zu7TZKN&1=uw5}Q9i~E83;H@kgv(KM@a@ISfP;`Hp>Lc|RS>Q`0tIt^^&bs&ReLk#6 zcb7uY1qnu&eVTH&uZXvw7{c{`7$t!2%VH5OALBz<4c{crm6~DPi^!M|<>^rZdHCXJ ze|@#RO4x;K;`V?0DQh0 z*rLpz?^ic~&XfX#$CDVBh)H3s@8{pjhNnveIhl|Qm;7*++JQ~=RtkUAbxO0k+>(7H zB@EvhYb_2d<7AN=siG77Js^PT$Z7ZQZ_ma83J=`HQ~4>?W5V?uldlZIf5vcLp!>Eq zr`hP)LXg;%M)0K!QMj7?4_o|&Wzxe|n)cdJM5T>$m=ss=G&E)v1h?H?Z z!jhNO9;m*W!3j!!!uk-BM*6X1%YA&T-(`ndnO!~cq@r&Sv#*GZAVd_Lk!x`jDHe7{ z7vXP@n}8Kr1+kxkz*IpNMdFsJn9H(cw28|R4K}$WIBnV^dKEZ%O`aUXSFpC6i_4~s zUS*#WvIx)JpLJ@%6l5pSTW-GWHpC~duu$B$(1ZRUe+DDVF{8(Kji@#LdmYcl>zC-R zgV;~^zR(acK2-#es3{zNN)!<5(4|iae~k??oH=V&K;3QT%RXz@w#-@mt{7VcqIax| z1(017=dsPP6?426E&B9wy|G^(}(n|M`tZ?_Q>+4~TBVKjHD?KqiY>ePdOE zv`5P*WhfTx8UnKZ?+yn&_BWZqBc|y+m6>_o@AXd1%D_CSRs}Ikrr}Jc|J}{tLocO? zT}zAWZGBU^%QK0Yn{Ndi*`hH(W;U=)-{~iU_Rdyju%ErbE-N!vuH4ao=p1|dZLp(f zgimJu4r{t@%8vgFQt2>bL3xEF{NUcbJF#pyalX9my#BKjej3$BI`-UNa=cGoP5P?>2#<=E=DTJ8g!3tP=;N!y>&wPLZ< zY|FFDFa>sVb)^DFJ?s>gI5Ga{f*nQBmE95e;RGnRdT+<6v*WI)g(W6@_Wjwh?2tEH zg7BL!pT#dTmmTD;Ylmi)9wO-bSk(y8)FQiQ{>ZLi33-(Y-L9=_cYp5=b*_LpG_Bl?uWltQ!C_u16k^sS zARtexRYtS=u3-8C9OJ%;&N5KcmA}!NrpReIzpx&96uEyoBkXIR z_t(E4+5eyFlYjnmSF?UtJY2@yF==?@sK2)F!LHIciQ7O1EX~PDJbQLJI41;I>t2oZ z4jglq3x$PaNta?YOkO;>4^iZT)XF0B-2@6J z*uLm|V8u|(mxP7D^S5t{T#c_Ul?ka59Z`zF{B<^r_A~o8ltfG$0>wkI0*!+x6GVO! z_6=)!Q!#+WfG?&JV)*T()e16K3JVQL6Vwa?a9p$I2UuOVV^JfqeE{zXV2nV%B_k%j za=i_5m^8TyZ)EY4t1ycVN8g?%xn4%^f!#*a*hT*UjWBwaAV{;dZeoo$*C~{6_{Gvz ztSjg-adMhEsblT>iLX-^7IoAy0+ZIG~=evoN4ych^ipzNewA25Xsgme{%zD zVgU-!2@6Z%F9%=X7IU98DH^HAIDuzm6J{=o%4S5Xg_y+ox0&xHSGo0zKi?x>FT0sy1k3DXUEj(r@cs}R{r9Y zcEdQrw6#Jf=bFxnbrW9?&MVKG`tE(y9btl^`5UbU}&_Uxq3%h98Kxjp!1PrFo9 zniYQYoUuZ;plyG5Gh=K+UQ_;O#wJTeqt>aaDs?`=cr$OFFKa!?U_omjy@-IKqPuks z?+~Https-Qb~EIWP{z*!San;r^X5wk=k~>*wGv{sYI|$Su29eLWIxHPD@F*Jl(Q>U z*xuVGbGD^&m|kWcR6gnR8wf351EY!<3BzvDNzZoSGJ>BQBGHDk3d!RoLuAyy*@c+C zug8^SR^Bxl|3{CyIt|!t5*kJ1BKvgxQr-^n?G<8)D!rP02&NS1(#k{K*j(X%1K%T3Y5X1OV)8 z{ed;L7y?j2oDB<_)QvpA*d<4l{`AGorkQSzTP%c6e9AGolJV&aket}8Eo+6@9G*F zqh^)enCM*yP$k;<;*`kPtfVy2$;l`pZF^3l#Dw3iit zty#>AJc@P#*BT{2KsPBu#`H3`ZY^2)$yXa$xK(!>*6?&)%EOs*Hh1%3 z$9@0O(W43$14sh^I^$(Wh+&gHDzW~{muv0K>fac|Q~X6ou1Rk2u7x)bPDRL*ts@A0 z51?x*0<^KR{VQJIU4(A1X!-}YT&{y#w<3pZ9+}@?+}V?oOp*(henJkZDr_jM?0W@U zNg01u++_ORi{5tRh!L_DBb1(p4VNPj0eX`}P(;K{oDR`BJ~&wNwxi6CfWQ^H1LgX= z&tHG5nkQv9V#K^^P?!c=wm9g{dHXVcrJo>>P_l;oG8;FC&raFCq{Fth9;v4SQpbMZ zUY}tx#@M~RHT=AoArVRpF*rqJZBFT^pfzyWtFc6ZzbcoI&>{KHu~oHh|_=+g(UMr>r*MM@;n@KQ4v0}}9cbai!I zy0jid^cO*m!HV?Pgb5QuZ&jZ;@=}A23kU-W;(ed!FdkYWoAzHmD+#& zA@(W)AQMcE6V*H;Z2wbiH$_G=_qA)&W+sW>kK4k6R}dO!*YmZ`-xcrY>zkLEsh}~+ zKwUdCGu@gQ|L2);hCLF2oyW;Abva})06BEHHWv>*eoZ$b1Qm?0Djr}q z#+`9U47CW3XFYRIbaZ?7C@v-@3!xru37x{zQTzD<%5;28x-K3hx}&02Nmv zCeI3G>|$RvdT4Ht)$LJ<3lr_vgg91rjcaQ1XPQC`(0=VEowiyk-MTHtp>4&(5yYzW z=_595icKmfU#DJwv?E8@9luB#{A9w|v9n0I;xH`o@?ydjEcH}W!2oycC?#dvTA(yw zp($?K;Lo2r+wJ`U>@7XL-u-$4Nq)$0+qP~k@jzNeG_}GO4vSCXe4en;!&>60p%siF z&{`9CRf-oG-KB&Dj@Is1b91d=Szf7fPDPpz-~IL5x9O>=YJhchbp=esMf_0-mOK~VfG zGe~(v7qRnWQ89Ww|kal8j0abU}tef#nh1Eaett}n@=W)r(Y)T)fWaXMCAtc;Nt^9#u zr)R^Y8y){TB{rRJwY}LcVAvD9a(p^zXpsIcua)<_p?+*7C1!hcH1J_RRymAONbZyb zt{n^s;&$yaVZP)j!%cy@MnAC3L^Mg3lU~P*Uv+2uT)E~4Kfz@iAZ^>WrRp`-Bfg;tevQI=jbRZ*m9LP*sf=Z%$+k$_Jt}S#*o_?v z=cnlBTIhyQL@LiM>$P)|pZhU?S`D<|eiP@T!RLZ$FmsZz@0DbwIP!JplfI|N!wj{i zyP>x0j@I330?yCIz&@fw^8WqQn1b!=t@i}(c{scEmUX)_PhPJ6h|B?H9CvRzprjZ( z)qQiM(&z~ju614`B(le8I;-0)axnfUB5(Eq)dN<91kNhjNYQ%sJV>>jo`qx$O>0R} zMRRk&&=B$$0=IVgF5E za)NQM7{``~`l8pgX!IDAqqd5QWQ?5#5g8WMWf@vi5P3R6CnqQ7qi-29ut1ZJ+n3(E zhjwYe>6RB^7A?)o@W~gPot>8g#DE{Xf%7=BX~mKyh>Z9{qod2<^zg=tyDB^ldatL~ zpkNVRD=jM~v(K;OrRHo!e^;tA*vIAKL~++9@6%`GjN8|xIP|144| z8*L~L1io6s+&OYdyjH*n*jh2jY^%3U>W5Vkid#`C@9^QXU|qvYhpR83qLA~vf$bkA z>i`=Y)v6~_??w6<7;jlLe=EcaQeDW{^=j}LEZdkpU~(4$I09ZCVnOP*ZQBj=l>C%k zOM~(*<{tf6JRCJR5K~jg(cJda7>jr8Aoph;23F}Q+7n0Kp0NFVAFJhILn=Rq#brvL zyUL}{6wmT{(d?+tZDMa?4Rapnh`d|#{k%+y=bSNr_o%UBAEGrWSh#V#wfix%U`x#`CD-Mr4fTzTELi$7$8&;t7Kkfu z54jal+mAwnLH32l-PB1rY3tXPg%zjy%Btph^rs}b>MQd{i2ucY%~uA$|54Ivt5(Dx z{4~Lq9+yDi4yH$x^w$c1J2I-mk$v;^faAQdPKRmX82qGsC=1(F>~fT<|wRWp5WGr zSo;wjZ7#M^!1Pz21SoqeKd_)tBTWeU@Q$#x97OOF#(%~_AZ7rBlmp1{SM&BD4x_-b ztYmp@Idm+1;-8HT5UmM}J>iap8Sz?fZUo#1(cw4?-9JMG%V>Q2Q66MGKo2m2M;+a4QevqTYH z%`m#VHVO*Txb-EoY+dN#0kpv-4;3?5emlk^Y_Ms%LDQ)JI3nDv^{(AA$spv|9wlRx z_|Umo$-?~Z{m4mAg|&kiU`F?gLf*q`i(H9a_j_+m0Fq#k$cSRxyaUYG(;OUd1wUld zE6IHOu3e&+xGV~%u!%hu>(h)=a%mDF(*+sv;;J}WVuN@6^Rag_a+>FmEJ$MJ@>it-)URHC+@$MO-L97TfzjD6F9+P)cx^5cyDD zUec@a9yIDvu@a_b4zjb$A6-7BgEceFQ;Rd4$NfW@yw-(;9BS9*3FeN=df)NXdgV2s zp4_WZ1DL5KgM)HMd7OcjjC+c8^0^b#JG6`eT}h-AASi6#RRB?otsg$#%Mp-`peeZd z(#0JwCgvDk|B(j667bcgeuT$UXN7*)!nhrp_VKd#tVsGst#Y=-y4I=_QfS^BTu2vHV#6*LJG8PCGhq_8(d)tPA)zVM9OwDrmlk8rcR9{1YKXg_p}frNei=?cw*Nzbw!Y$)__3hhMU>+NML$+nf zxs@M#E>krQf3cMlAJOEGV-yPe1*n&8n_c~OBjh{OkTM}~4clj8-VBu#8|o=9!d~6wn+8E%%~5>uu?gwj3H~X8qUsnZx1b z?epIdx478l;`euEF2#Xuea_V#NKZR{oa>cbRj3-%W?2WD)#z8SxoQKMQ5VVB;kR#O*5`zDg%Q0mZq2LF6yy$ocA z??NakEhXEtyHpP2^u=#=NBBA>>ff)d6fHb{ez+N!JET(96WM$gP5bsrj?5z z<+Jkn?tgOuY_DaW4i%4}-HBhrh>QKPiFgsn>l_96N!1JOBrWkI=ptLoHS{77!CeIY(ej|7bFu`6q9? z&+_GqGgf8E!Q4cwBdQg@yo)G7<4 z;nhBY8Gfps`}b--6$gb;NL8(WyY3r&Urer6{JCRI%TM#i+SjX=Ui|U75*8Xh`d^t4 z$}Usfz$L^eX9lQU@Zae-_JtidIFHWlkW;pWEp{gYFGR%AgFB2|ck4tQJYu)rMs5ub zr#uD&)gwdtSSDH(Iy$zO6FrvvUt{y4|LO4hVrCj>svSFvp3QQCdVd!iW&z!f-f#@t zPf#}*GNcurTQV}(8aF~em>fi7J8jC8-%@c|85wdx`Er3<&%Uf185Iw+9TFIyE%o3* zctcGzJkRFV_j0E++kLrRQi5ylTF`9(GCKFj$Xn3vunt=}bRX_OKac20vSPqT^XB9O z2To*URA9VFsP(>t1PdTdaNmhb%5B0nZ7MA(IdS^*;utyCg`D%GQd?{2>wB+MHRD}% z`-O|6qlN(Lxu4Vi7z)KMw9xFe)&5w}R8qdpA)fcdSQdiOl_eJ9>WO%HcI2XaC)3sK zI7?HxBt#iECbtqDS;y@eI7(BAIb+mVr<5-rNII&9M6nA?yrZQ%JSPlHn=Ui^kKV2$ zM~0yWYpNI#>J}=_KyI0w`SZN57YcKpJaOs)!K;uiS6p3u+dlTi>Rg@yKUV!IoFMttB;7749n}sLOCT_XcI}SC>0hxztzAgMwt!&?@2*#W1Y@qB zccr32)_(!zi;IrCoj(O4DKD0E5P%jVl*1m!$m$dNK>VU# z2S!xq_U&n

    i{^&$bkGYeu_g6uUCh0ZHd3dYQ;oIniQ4&K*GZ2OLJo|5ILcDWTt? zQNa?-{@S8}s@tTRF^XIU)WYftyVZLC3+ydKo8H<3y+(2y=ia%q!{;5hJ8CrJtMfCa zGmoQ+&z37 z#Qj5eB5~-)alGKKZh4m92FQW2cd%1MrBUIGaU(~f*vV@%Fn`;crm$3wmuJJc}w;qefi^_CapP-%K^4I^nvoB`Ha3=QF>A z+jSGNE50y?u?l4eIAHHV10&8WKS5M-pG~btE0FX06+I&UtyTTlRSHotF)v`pMY?JY zY?HV57vz>YwH9R*?wz|jH4C`U4B|E9`^6c4z|oJ};}L&get<3b3lgk&kq#hBXBxGz za9k(H(V(4=5$&h8jH6D9z{0aFpnNhyqsAA$s5^J>^431&(b?p=Wn%hgbI_T8ZSG(1 z45)Wi^-#sv07F1FfU^jrt~`LGgt>5q=QugNudYrdJ`1axaXl7K9KG=G2fe9^ElT~x z44h%Or!ihzna~j3-YuPPWNh4^aSvXpYix|n@_jMB8ZAho86J*UhQGXBTAFlsfy2%6 zJGXCBaC_WzGUK~pmmsDsiuAEdfd;B=v_fwM?H?9|72m`FeCIC$D#Js5cuT^W>&1V= z%x<0&GqkH}vt7pT?)HI41O}}w0eQdjqm0c;u_kCM$*~5gubTo}fD;X4i`HO+ya*9< zg;6lE@%YTDBOzfw{B$4;qf5gb zJy^JTuzMkUd`d4lYu#UmwU=Mdy#U&AFaY`9EIfA-49}8fGIP=6mHUn_mBQ;Nf=)TZ)y&{0-Ypcve}}wspwV26>5w9a1VM6%u61w>ias zsVx_;Fy90U45%YOEG!iXK=xUE)r2(LYMvZK)?(BQtOpP!Gx#l8xX_Fs8-qI~B~<5Y zNE9d(%opHD0GVxC-hF|l*Mc#(g}9#EZR!WUT8n3(k~InoHcP4RSH-Nz>qyCnay$a* z;U!)qhX&G(^;MBa!x$RblmeFDw63aNTCzj>DuZ1^uT+0z*{x5tD&;xW|1r$EhWo@$ zuFC8=7gL6uk*Y|gu}Kvz<0d}IghY#%jLVue=F8Dg`XjnvC`Rgahx+wV1dxvFR#`k9 zuuu#t`|{%BSLEBbWz#?)Ajzg(QKQK)0aoP5%&Yzlz@_z^L;Dokx+-42OumjFR#xnW4J$9{@*$Npri7s7!IY9l4V!ZnM9Lv+zz*k@YuAK{vz*| z9+%n7q&rd5S8T8w5nTsMM&$0(31W;^u*)_?`&>^gtt2{O?pE!ezIW&=UinTOZW=pc zYd3Rwf$2m}Yv_`6e1qcRB9umt8t={qxTs{Co)R(4=l?x6@jV{RYtx z^Qo{kPh?ex+3dddd>j^E4@2eTdn=Yd1Y-?Je7$;x<}b zh>14*GtY=&DCk!l0W^PJyvM`e8hh{Pj8mjA|KKh05A=YoMyY0ylL`{|B&<+-_T2F9 z0vzba(y!|3a4}d4Q@nZb3R=6Sp9CQ4F0fU(`ryHyK;NNBwqkAMrizb?sisjQENr5S zdCwmt9!_r+a;(#lDe~USK67!xE4dw~OCQa(I;Q!|1m~dj1zD#HvBp-7*ny)92Xv~* zechftMN2U5S3f#selg+l@NmOv?mM}zA6F`hKvszWzMJ;?g)3#_kP4jeW8!JngxGZ; zKl|pgu=gRVIGEUl^=Ud-NnxWezD5L8SzMAy@i>&xFUxwh<&6F1ulZv>aa;$l{OB=4 z*TMoLx_9Yfu%bG0dGE8c`VRZ-^lsR* zJ9~WH4E8U>21o6)fUdEEA(p_8&f zh`^~qAlxUzOxuYIoMo>z@80dWYSlL`Oi?Y`t>@suUqo`WzCQeYngrvk(GLF$+Djd? z-nt6B46AhJ>#2mA$T+Yi6KyDIPVl=9Uqc@be=<5MD)GpX^B{<9SHA_@7EW3>HY<0d zU+d6f8*+PLSV%ZCHasii<=|^We~e*u`46Xy0oW@Q5aF|kAr>Vr98b`&^eHcQ%giq0P=k` zxwzcClZ~DVS2x?SQgdK$bRz(Z?X5XjUYefs!ufA0t-06r#+ z4)W_`9FlkbHV_}*suDu#>C=N^Z!U^=IWv&$U2*X-%o@xP{s_)MIQJ`7W{(I#)OP>D zgYaFMG`UDjQucCQUvqLplE+*B<~s^qhWaaMH9~UpvIb?W5>pugS|vqge8oIJ;Wwfd zR?VFQ6%+?xo%2IpzkG?P%x17V|1Xg*>Rr3Ot*zZuF6RC$p2}CgIjZ8#=@;P8EaunD zj9pi961M2mTD$gKEuxyzqa;y8n{B{=Mg9c6%o~i3C4}anTK}5YuUqP`w3|F%f?Q!2 z8a!Ial!b>V<(ydV9usv@S41QXg1C!+w0Yu_m!E&`{CQSv^HPr-d5y>B3B}Sw*|GyT z(QN5ig=+sq1+@aI_Dh34eV#Y?D~6l4X5OPwk_h6vkg^onHZ3%S0^C=6+Wr<6YxyBr z?nn2ZdJU!d&e+%p|KbD-kxWcqxwHQ^9wjb+4F5Ymh_gVlZ3I9MSyR3Ye@CZui~Ir( zJ5cWzz3dkQk-3Qz^@Xmlm868gPy7~l8SYXO%fP^&40aebECYo8_M<-;V{HEdhKVd9 z1XBFQW1@18o)EMgX}>op8ROvvP$+(O97rV+vEBn);(s~J`z(e3qU`QdlD1ecKV_!QS!&Ay%J zP!=@-!9@;rYfJeg5;>Smr=&;=_=9P#KDsp+wDgg}fe`nZonLUJ0%U%vuTNYZ`036x z{OgkT`lk>23mc13?qoG{Lc5!a0mIfJtPqwWIlUp;J#qiaCDDv?Hy`8R4jJM&VZsuS zjDTU?wR}Im8h62cJ~UW%`}|*Lw#cuy(7F+o38=f92`(YQNJ);iVb$k1n;c&GoTDdV zn|%K(h8cL>NaVmsK%a9kF)?b_Ec6X+nmaMGojlH&VRpu#-0(Nq6IE~#$dn^gtl}S4&69nu)3Dp$07r%XW zK(B_cr#v^**XLxmf*}|G;v9wMWnEqPagD4jk!OX$$H8lF?;MH6T%fZ`_Df94`wbp^ z{P5xA08{rbiD%(SF`P7`GgaA5B6MVR{n zjOE?qMSs@d@2`&&2kUyt;YUv&o4D**O^sfulj^eN%vZO&dwISxpf})4?%$t~#t?t` z!by??Tr;e6NJ#(2j!jfx4@+n#U<-7)x-Z>7#uj-*xo`n-IK)_u%uJ4F*RAeV6*w$~m3_ZiDd~@ubz=nJ^=6|qG;H;F(XfrTJB79 z0;qVt@HgqJxono63b;^&*3`J$$?H8n1g`++_y71x(eHiqRZ1v~CG@>Ld}4wPctGKc zW(z}buvx^}SBPtSXr<3?`$B+LX&Wn-+yP`iX6PE*~!6 z?KXEnJ_r!79=4uEKCSu!P~a;pv`Rh^dG-(B|spg+9m(& zIcoDA)%+#;ss__bvclN$2kg0ooRVE@Q}%@m0emS~z%)H>C6L94#Y2$6q;&>L<*D8{ zeqm8C%+z!htqF+wwS8!Ws8U=WlTRSYqheo=)*SXyxZ;vgliH!g_F2IAgQ0^)`~qxx z(+qz27h%+_U)Q2GW(_x@uT$En(fE{P9Bt0z#Ss0L>D{aHWt#D@<)j>fuKePDt}I78F$y~Tvj{(<`ETumjQ18d0m z%Ctqi)wg1YHEaH4sW5E#eyQzIQ6=>K>?X2%h3tgZav&+mYRgex7V_DWcHDfJ3=T@? z{iY?BwK@DIXlToe-{l5@x)e;MIE#d*s!9WEJyX*e(1Mrfxhnbf2Hl%>Y!)xxv**u; zTV!-Ma?U(;imT#GcWxRk!@>;Hp|`68Fe4xQW;+VeHQ2D_e~*L<(|o=orp=?8@4iy|i|1z{%FuHCzP#9d_}hp+IGNs$V&?=_#|AI!_C; z3)GC7p|DwhQTt3yO~Io8a3F8wonJu*eX;3T8vz1fAosztgQ3gwp>X_)C+OF&p9#V5 zh-Gw5y`P1GvLTeYeB}z=&V;UOMg9Z>1zxtS$^nmQa{J@5v}p8`@W1&-PJ4DLSu<{U zFI@_M^~0x6@e~2R_dYw%%okZrPAge~;E2Y3=4|aajG}H&?tf8|8^Aht9034W| z?hhaZr-$mJy^pdyx945YKEv2DQufVf=TSwi#&YB^Yc55D#sfRsb_e66u>%fIjszvywjIiY;F{@-Ke%Ce*d zegMV{=2P^<>5~eVTlIR=Z5-YAKz^bTBd#$tUrdT}yj`VlX!y45K%0+OZ1q%_nepw0 zL_72I^mxTk@mQj$nLT}a*xPB=ovjOhGkD}e?VeXv&7C)|Ja_AgCl=A@LhL5LrY2WDxyd|18_0 zEI00jm_}n{bnPClYs`NP@y~K;acI;*(pG(Whq`30t80&LY_SLZX6#`vkpHCb&i=_4 zG&9!us`thx&xiSq(#LNWU5|*VPyTOUfc@^Z*NclEW9NViEpC|@=RJD#sA1y+ad|B| zcfjB0)}24z@IOX;MK`T6?>>zD56;kT3#BXlWa94bH+!9HHbFbH~*)SmUa5`KrmXmOHC9KtMy6q9x$TIjhI|&qJO)kp3qx zC!wA&B(-)Ao$oC;;TLL+YxDL3wYb*C;>kwH)5MVI-J3HeI982T67u-*TP`@0z@ zv&Mt4qf6@V9tR@VI@E4EB**#lnVIst&;$IN<|!i+?IC2fUvt+b`}QweZICaUd+h&l z_vTSO_G|z5Swgc0Dk_>}YDT7zgiks(4Tk}_6kKqwhPG^r4p5E+uG!B819 zmNANcuhX^neeZic_wQNH-;cHSUVC2`s`L9fkI!+ur-OZ&e@#mD|Cp4N#XZwniq~%4 z+O9J6U*ed`n-3yc(NoTV-0L;gs`6s1=@L3khrVy$&>Ew=DiVrqNPhS*whCI z{m&1jSwMTa{+B5hsKjJ+8;=RJ%E|eGL920A4v$ov)v;5`%E%z^&xLLkvm^LThz_Q$U*C#`?M5q53FA|3V;~ii<$A4{F?pNaT{?t9T(#3wqUa&xvUuAH z!Ac8z$gnRPi|vQbjX!9u$3v^^V>c!_13Rf?FjupFDE(+Vd5z#>mCS__HLQklwH?rEt9t!>)iT0gY~>19KFCD~f#D!; z)U2^Pea!VC<1`o5y*f30TW+>Z&yKJ$C~+nv?M__SzhW?s3{>Vc2Hda~{6`8B0MLxc zb6Q0F!gh2jI7iY-xP(Ynk_;i@n+@5K?$=hJK2zJ;pI#@_3HBZ(0x#bEL(;lm(fx=j zFB~P4G4VfaMr!Eq(BvK#m0gF}=JjdG|8?Xp(sG^|c|@#7r7y)*HWK;w@9)lV z!0fLmW;TAcrIR^w@?^DFK(ze7C*VZGF>C`LGxS^Mo0W7;bw95VCes*bl_xuytgAo0 zN4twBE`fJ}ITLK>l}GtikJ;j5s;C{UyXbb(is5xtN)#@L<}g8J(j$*|k1wrV!x?DW z`>)4jIAjPj*R6*SWB#afop!jB`Uk#>b==6O5^bqINMw1Z(3N$vAG`Mr_{?9A>y2YX zWeI6l-hcYkL5#+6%OabAfwbSU?lKmj{+KMwv1`BbKuc|9HJ#?>veiZZT1i2KawR@K zy(lNtsebtPOXxM1xNN>VHZ?JIuW2nw`-L z_gX%V?6@pDVdvjh@%!5cTmMW~8x#=rKq5&!58M?Zh@BAF|6U3>1M|MD=U zlziU=+Nv#ZKziV3yGtpRsA2qCK7k`NWXKSMdAA9j<@x%R@@-N0k7zHlZf|;;G`ZaM zt-}POQG!((e+F6ZV_jXoR(hrElfr)48Lk>7bmLj=s`g(da;siy4O3{4@)-TrU zY%WSiPxSGGStH{KC_Eg)#9^>LXW4M|N8NItg22aA*Qu2#?X=%xFK#Yqe{G9zmiiqV zwWz%3|F%2z-8o|FYS+w;7gD`H`>PI^U;Q(D;Yel!st**)k+zXX2funa6?-Q)$nD>y zTo6DYe0mQU+jF8~vHcpSpw_v9JBFiJ9DL+Aw#)oT0K;7L>+ zsCqNO26L5bcjbTi{P|4?AZ1vGuewLirtjzN4*%B>%m`mG zpGw6U6uI2Xa8Y9FY!E6CyX9}Cz7h5mlz8-LJE6(LAt$LmAjGrC#@rcv77JI7r+ zWHj`|)Ui(|2i^8pO&rRB>Hd!!s_D(p2s;<;W$$Q(LN{-2{$0uxPf<@FboX<>TPLMu z*~(-zvF96i1>?x4&L3BrqOL3%pH(pfKv4R()TosjIy=Pib9F=G+Z!~_Y|i0c6B57%-3E`fys zNMf3X%8QwXOxW+a3jcRE)iSl4daGV@_~|qPdklQVQBk<+)pcXW*PiEIEeqQx{b5D% zS>wQuKKQ%kJ(E**oC`o<^0bUNeeAIBK+qfZn0clS~^5K!AJ`dIyObu-%I5IyR#1mxZ?r?59JHBb!}i z)zwB?^WOdWqvqY-j|ZfrpVDya`t-r;`F9x`*FfIIyEkqufK-sy{a@Wpb+}{dpIrC> zmfFz!6Y!sUzZGm7TW?H0{k=e~<)vgG(eUfrtG%`k7Rd!pr+k(Wo$f@a8jQYIp4Tl~mw~ zJuY~n?etu*fPI3AVrn7s+GCUYX>f&39#MJL6>8g~KyuBRW)L1A_R8w&dmVDcMSK5g zVLIOSrLn@yt-VC;fvpYH9QFDB;O@TLwTG{p?%>deR2k-NZsEZXgLUO9m&KYQKQErO zBeU{7>PoHPx0W|&H!NGdd%C_~Zer_>fj9r3*u?k62lY?iYW)6PT(c8?EPQhOq-$j) z*A1$k;}-t?J|Zzz_voa_J^ z0=NOdf~YNUS*KA@MRebM9+)c}9vzu#EiH1sR2m*v?iYN5n84s#X~=T|>Z|&HUBpOQ z`$ha=KdjTUsOyrfzdd&z6gc{av(%2|6C&K_IwfR1{42ccuC!OxBv!lv;BfN}?$n7I zf4Vz9W!8gscZkUf81Z7;_@{ou+9#cl3HCla14*xB;viQ35Xeik;o^52vK9_bjlqqD zEriO*Zn6gt=SB@5?3eR1DEzIvWYU8bZT|`h68C@-V7h-XNgs%ypXqj|E>Sae9!o;Jnca*{(&AgOs{$V9DZVNw#le9A#s_lVi@YbznYGE5FLo$ zjL;QQgI4|{RzM7KE%NNYp$(})be#W!IsX6kzeh)XB$1kgplFTp9GAjEn_}V;NVJ*7 zyo30x4k~&g1LJG5JSr?$3@b*<#zfjAHqaii^psVV#EGg3t$LB5M<@YJ z`)9wc!BUVx+Bm8=uvt!ZKWL7)*x2?0#Xl!K-6y8sv<>r80!t^woC|cl#D~H^U%W}{ zrQECYS@Xv2%h7K9-Md$>6iD)sBWE)!GRvTVDlg3W>p|I;pFFA$w!Ys8Qnb zGjtqcGGK>ihfaeYbBDGSjMPdI;i`x%x7gDneL&j59EiN4IxnCgJZJoxt{WkPvAJ}* zv|{B-qPEIbv?Z0Z%h1(XJ&s49nmk@A}rQnZbsf| z+^3J6E^x_%rP{$eY`<9!Ik;@3_nm~yO6z_=Eo?`_$tC(cEcbyJe8MYm`^l4wlma4l zZCa7#EI>{rh|X$*s}L+Osz{-9O`_ZFyfy^UD?y(Ci$)Gjh?(L1aNG6l*=O5Z-9zQNUT!W6`?sOkZ zIlaA$W47c>pL=EN7}Hk1sq-s8VToC{&N%k4R>9+3ps$2z5;WDb>qTBE!xy|yzbW1lt3{o z)@53nhs4WS(+OH?^y<^+Bs;FU?nJ=w{mv>qGo7b{Kdh3+2e`O8TjAtZ=#e{jO#Nqf z3wNEb)HpxzvzV1vTpYUKoj43Xd^oY3zm&Nzqw+l$31kc^Xo57Ez!W#DcJ5r6^smoi z`$gTdX~zNvzkaP@ckp0gYkVeX4+f8`kEob`olNf?$B$pJY?TYMWSg>aWWqo zEW%vVv4G$7r<{?q2nO1)>i5z<|yMC^J1wOb2sXWLHj z){fK6dAWC{+TN4egt+3XlMqMk-N%f6oSfWsn{i@wzWB>JXe~5&O9`d<+AshYmZb^7 z43b{mDgy#I9}8yA<6!S@<@)C6H3UFMkd+B7)c0YyO>#ihPmR3g_0i!Mzs0v*RM;l! zY3Da~Yd$k2lZo`BN!*^7+v3`d3f+_%9ERrOoM<0>$H(~Gp^NdE#wUJG zK7OkB^MDJ3`W!PGu;@aUFL;8QTM)LR##0!s?=vDvzeroTyhzNVUr^MRf9;cH& zejf~$YCN2PfcJ#kWTToy42VOvT{#)X>robVa_B-?Vp?n$eCE=xu>?h!6t+H~YV*_n z!bDV2SqXpbOaI8g{RYJnpeXi+-^SV7O9*3)hyQ6hOj;L= z?~x-fVM&uyj-cg4?FQM!qJ*bZqxzH2%#b*cnjt17;4l!SJY+typaUJ8!?u#gJyi~e zFFY`FiI}ZI6+&(=?m8hMVx3Q!ltSP8$l;h2YC0M^#x>xDsH}F+YjIt{D5;}k%_>rs zS`b;(UZ|{&+7WJJ@Lg?ic|XJSy|*gP7FWlfTcYXvi`wCJ?C{~|)N=Is;^ajEU{SQ$ zk7^M=7_)!qniY6mkOZbL;|_!|iia>~mKybWf$Na+pNKK3@)8~;k-8vn%asEz69c`w zLU&Z8TgvDs;n@3n`3YO@$F4d)RyOK= z62VSAr>A)opbNTk4_Fr8=ma}EkDhIoJ=$a0QXjr^M5D7BlGP%|z5VLJWVyYGlevmn z0t3mYiMx(J%jHISzJv$M26=KHg_)$)f%dS!V;+M+UZfzB#S3#&zSXYwIJuU$9R{RzM@r z^B{A=;>wJ+x*fZ91Gi?Vr^aWkj-1f<|R9J10xV1bQZD1t7a z!PZ~zO#i+YO@CPXNWR@T5ifmHeni}E)8)aAvCdoC7LOhhsd#P4%I4touzJNw(cUxlv8bD9v0{gjt)w#Gwf zw$n3)2*F%uRhhoh!D)%Ma%S=B?RTy6S*CvV=79GHcSD3p30i}fOE))13>Jh-Z8kgS zjnwOrBx8Bl(0!K6y~DoCuPls=yJ~-E*6}{zz^rm!-)4Nzj@jsshqd8~C^U1_QOftC zJp*szx|frd&Nq|4JYwIjU5DxAsc;-1J z#<@*3E|DgYd%Cs~T(ZytNrV0P@rv^DT9&>V9Y6;6*@DwdvSmuY@#b zK7MYbfkTG05n$=Lu^42B`ji_q{1~^g<%HOuIhoO+b7+$iW=$Tnw(Ciynh7qSnJ%Ej;3OE=c@zXB5+1SLa+nS(gul;3!s^iEw=qGvb4!_!$H$^?v363}R z-a0g>Dbjx2Ij5}`*WZ1ppRnno2S9?mdl#XG*Im2Z(Gpo2JwT1qr1k#d9PgUR^1eGqdXPl>>{5{SWWhWTz9Y`b0`|=i#;6NA^CSk)x?v zb+;?wS-MXzE~a-O|J28)9zIZ2MTI;A@J-f!Ll}}2C0!a9AAff7v#yHEBm^Qqd2w0r z4k6mYi&*>2MX<))lAdn9s~Bou-6uJrf5Fv4=@}x6DR4#` zmc$XIBM7%su3fujw04~2hWPit?b_}&c2paAyjQAS)_t$frkW#lS;G)Y@p}F8<&0ea zkUOu7BI0~=U%Y?cLK}t?k_B&klkWg378XHhwJ}TR`*szbqo;h1OmWzhJ;6)x|ZG3!sJr)&JvbV zkriXi0^E$vP5nN4-FuRyyv8+7Cji8JB`MT9u>%Gq3Z#G^~>!mcgn>oJh$2%^q`73tAm$v~L~|aIqMk zCDo`wR{0HEJ+dqUPN=P$!)&MWPPdN!4+n;bM4{mnH>i*xCwdo`*pD84m7fFG*?4tz z^(x8t*L$RkHLSaV0WH7N%1x5To}PxUQEByCbYpMOl2s#}&=HoZZ+ZHxP= z?p@9ax6}-`raQa1E2VVbx4u#|m|gIef^yW(52PV`Fm`J~9#VY3NX- zv|Ie`x*U4ihGDXLvqYN`;O62#?bhvzmNq={A}-u*L$8T;S3sTH3EsZGwvWEU$>y4~ z(>f+QX>vKT4U)ui4Qxo!Z0tDQQTw3(b(MhubGOPJ?ddXU(xzoU#UGIb#ipCPq#|A& z8N55DjlULP6Th}ho@|mHF@A{S9FJ#T$o~Vc6oQHE7OYWmU-~%%%+$qYqtdqS5*1&S zZA-4?-GBU`%c{80m;t&Ef%$T^g zVQe=UK6vnX&=g;j-HFD%Yg!M|0~R~3|9(5^LEB*pJh%<#G;Rl^XJl;Xn{&zLP-Wqq z^oLHn?2Id0O4~6)YbhQ>kWUEUXp_?Hn#(QtuIRh>?cFQF0yc?hhy;>jBi*GS{LQt?5}!UqS)bgkr5fdWXnV(rox#7kG~ceBtU@}7guo=< z&CEk^n5Mk*c{M*CQ^cY2PSM>yO@&6v1a*%1se0_R?~;%b2ki1LlP9kOkO>Irf6r0g zl53+_0t2~#q}0^J1oL}rh3zqIcMDpmwvr<-rwqHfq3@X5-7W(8^y>S6OV3j1Q3t5l z(AA)+heTYS=}4{X;xXuM{H$z(jQ8EouFs++WY)Oct5S&S;S-i=w$OTtguqM>-zoRW zYWUh;EYY}*>D@quV1J%MVV5542x*jzP_;? z&)a&2b2pE0ZHs+NQ%maVk*k2UbiTbu_n}N{RrK!eAEWnTAykR5WjXfJxeNsj z16$s;TeuIqMN6N&dAGV?y>J{Or?qjBxyy#fm-L{le zkgaalNpyooeiq)hIx9Z;CEq6AqWviv)FC$yT3$-&$0#CNNt9IR+RuWbmZZho5lKe;d zHMcTjnxn$OG)2z=u}V!l%x+HM1mU}FCmOZ`S~VLct9dAIgA_Biw@p4}S00;U;F9b_ zKPrzB_)}eU&B23@X$m=mY$cVPHQ3XqkC;AQKCvA=*K-cKy@j>J-vQgs-d!5d*_PN|?ING-V5qh=W!2~5I+xTZPn`If;kHP(9-x7-Y74lo zSG>J1Gi%NcsVF;fnLT4Ka%D<7%_fx_d&To{Qc_a+>$CWhbOW5*jlFkr`kUT1;>`z5 zrf*mHcE#*HuEwVOC&wc!YTv%-IVXX4pPz#zTB{+1_eULOEg8!;*;XkCC{QMn^Gt-+ zGY7v%r?oHTeF1-|)t^E>Khv^ur&TRY<}Q;0`D#Wc}-td+`-Z?VfmXfiAxLZ*XUODa`aO+HdTqRyBhSTWl%DUYNNpxZg-1N3%e7$ zWUlgg!~2hnD7U$*}d;A{XzH_G={m8CKM?N2R>S@p) z#+$>gxa>YMO(sxc5zqTpT6o3n$~V+duG|>2KU^SwKyaRAYyZ|gFfch%c-DZCAm8jg z*d3@u8cVZlkt}HOOIy44{DAVRw;)Df#0U?sTwynIOyEyYx9~oi5dNiARb5U$VPlfK zp9Mh#6Aw$jEx+3K`ViM_ozD}o(C{iXcA8}GG1fLq@k-=SJB0hOr4P!>yRaa&rAGWx zoB%@5>^(Y{_wS`;a8z5bv)PKFpU}uO{7eAYh7|2KeNsd?6_2w=;1YT%x-&X6V`!y; zzWFl24a0URaNj7aS;xh?4%gFmUZ(D{a%9qU4-cKZgDi_l$7L#ZiFcV#Yn8&^Bp{TC zD!G1Ns?=FE^^AQ`WXS2{E@dkYZ&;UTq5_3UX{lL(_s_XcZeGt{OQY<*(!A7du6NsT z=QY>y;ZiPs1Z51$uo%5Jzt{l_9HhLTc?oJL_vnCwch)mAE?buA`(W%TadEIl7>ye~ zal5Pt+x%igQ-wTDY<&@@L%vwkZ`jLuj3B{10BoGM?*9Fbe-JWH+^{g^km>Fd#z`-I zoZZ|+QQOf>ql8UmZHv+nrp8}1a$YxRL-%QMMh{i`cb~ZR;brgVY5lYVB!*djWdW1E zVswM;BO6a8o4PX^_tq_N);m7-y18Z>J~h`e8oxxt+`7AdUfoH_`OPbuPQ*-1e3@M(o*G+~F{o=UUR*nOZugWq znod8cyhy8nCB8H^daiyO{`;h=vqOoFrk#|>=Sz~Ul6Gz?4k7Eiq5G+A4koVM=V$XA z8fKbK$_tBxe!+*Jxkp zI?LUpm(HYQvb_#kt+HUP+^o}4L*2bkqA>x_5Y543_!4;+FM=vgaG!k2?|3uK1E8gN zxv~nnG3oc^fy!q?731;bB$8a@T982((@kN z(xjTN8btOh++6GVPR1{8t6FYX(N&2cVkIsiL1FmpC+z}%|2oUY)#fvSF3wI)O6uxA zxHnlmg?N%1fPRnVjU~=@l{%@7)$*hli-+LOot*6KFqwvFw$;ndo{c(qaQ%m>{-Eio zrOvsQ6z5yM+nKBoVj695WRuntgN-K14`1Hy9R9F$1||+NYA)7{t{ypfZTHiTa>K2} z;LaG+rG3=4azU{NXQQXvq)DCr{LW%_Lnl5I(;-v>6mUBMJ-U1m{D9A#IY{e5JuApo z8naD9LZAqFFIvQ|@Mk#8r)EzBFs9%kJguqmfP~}$5?Rys0PKxyY$*xED@xD0)bz2% zPe(g>cP6`iW`MQaouw5uWI{#1vBg}d{3v3&fvJQ+6831O){M0h@5u9jhtEz=7qbR{ z)M#2sk-7PDDO&^#7Msrv$-25&6JWCB(W4*yUZywQ)RtDi#1H4HPLO@4)qg=pLHK>E zM@s&GKBEmmPYhCdM$);W$wk^WS4&u@^ zXaHQa;{1q%%_mb+0fgXMF?ebzZZ2W^?X9nWn8PApL=hR+Lc$Z+bpyD4$ras`Xvxrc2*<;V87RoZ%mCdu)FZ&^jf z8!-9H!tJi)DsdnI=Zo)zPM$KQn(!fr#SV zt70~9zQ)wOS-!L017ok=z;&cQ4qf=rs73mlk2`l+Y$+bYu$MoB)=`7jts7=_^2m|1 z^zFRtLhy+bZ>es%gulg%W1FLW&yIypU`PNE>*in1zVJ@Aq%FR0q+UqHH(ro7J$d{% z3nJ}LIbE{ytn_w}LcW(5@J{WXiKhQRtubT9aCW}OdT3;O-{lY(LINmm-q;Ogl@*e{ z*|QJ3N@l6dFYK;j!JI>DjG7`7uyD3&Vm;joD!vG*bQoPgPsK zpM!)#{mruQL%!MI!ESccs<1M^oU9ETyz(QB(ppL_P_}5+K?q2vfgm0$5?F8(&?EN+ zWEI);==uV!p3($TnznA)f_NU6j-7iY`A1a$Gl_|f7=TD3<9a5aGb}WeKo%eV9=_B* zcA9V8xY5n%`;Q->^lUq1a!0nOx+?<<9$hvsE?(1(?G*5D4`+ek*-l+|s;jB7sx=dc ziJ(iyN%%*Q%ONy;W@b)Pr((!1@?UK(1dn@1N5z%HYFF0gV$!?XYWA4$M{aw3p$HEM z^1#UZFij9n)N!pH_KQt1)+6Alityd0f|a4MSG<-?pZ*x`mLZ~zs#2=N-TqFSk^}T+ z%A9q!>@wo<#WjxzB_!Ah$qV13mr4y?B_sq8LM1p6PmH+y@C%Hc^Lk}MvJ!HORFb%s zI9okY-LJ1-R8S!16ePPKt1VJhHI{H&if$I_E}Vp@IJ1IBk8_mhdR1wzGIJP$l44 zJJV)c1I;OHyP!L}E3*Qm!*SBxuDg#LD!Tu13OOY8U}2Wec8x#DPMf|teUWe8W^5iG z`FUs7%kEXXvir_emChQfoixb(-Uzh$L;CeY+_)A)2zV%tYTlrZLO%H@-!JR=4Zo5s z=Wrm>w`8WN;a&w6yj|2cFf@^#IL6+g-S_m-l55J#_wKgK!-IO=S$=UjX&PeQs_^vE z+EUUO_v~SXG}RU?nGZ)oV4S&T=4hlwuLcRo-hxz6Nt%~t)bSf+i-#g z-;VQ$vP(uEJbU&?E5IJZTPb)M)0Q>RxSpxTxTi9l@heFAR^~b zEr=@)umNxNQ;{UOO`WREP8U9#yLVY^pgGKdNXsuo5qZRu!jI}7J_BVU8%Te*e7V!m z1Oz%zYy7fheIF-~mBEAsp2j9Rf{?jx4}zi3pU;BX&9S;u0tQOP?)UHBIaH4& zU>nf_I&~-`LfKzFe}4EMs016hDAQWoTz7A4Wfrk+Oo`ZR&E;tmN%9Q7c9DO5@uImr zVY&odz_!n~FxtI6d7$3~N53c!mQ$iWikLZm+_;2(J}OOX&Rg!1Q0`wQYyZwxD|z(P z1rP&IfNJRp37+8Yz~spfsh`Kwe@;TftnrWcjGYH|Q>Ufd4|TGvP?5VtKS^Gd^KF6C z0sxRF!7qpxa>J14F=-UO2^{}`{eKbOLCdrBnu6PKuv2_KXsN5W7qD5it+Ktpu(Ca; z+53sl#@M-f(eWpJRg89d#w%t_D9LImFk^OGSo5jA^ zeWPWZ1)tKxAFdl%r7m>)zTEqV^0+a}Rl_`ie#xrtaazQ6Nz6Z9cn@+ zGkm@!9qGJgOq%_4rQ#jY5%TY6Zx4-`(?g}P!nSdJSSH`RAT+(!Y;OK`h8i?mW1gSi z_73xF6Wn6tq{@pJjlw-oR%?1=5aQ7n1$KdI+{x_ zFG)Gj{x*XD)x{NQ62q??{YLKsp6I=q8xSqId=Vl9dR~TNqh;jO;dTo3wBOSAtV6Y$ z3=T=EaMLh_)Yw`+iusLFBNkfQDo8(%+;1nDPM!4>pDSC6m*>uyJo##^Kk_UkNi&7{ zNA|3O+(LHfH8C`lB`Qb_0J&U+aYD>~F;_MrLHn_qw3Ik9T-!OnZqOvtq(<{OoGfdp zR4a|ll#~^Qit{V4Nv}C<-g&eA%Bq^V2gBV9Ct1qGWcRlH?WElTG`9M<=0(yviGe-lJ+SVw$Lq`VN zs2d*83Cpy2bH%oA%npzETs!UV#+{S5_g8U`PO$qmc3WMmqotXpWjle@1^Dsk(aA#- ztf4aVhf6FDN5`LUf0D7Yy;VS^lTW#^K!^xhc|lBS{_=%C*I6LHNKznD+iqG98RkIx3Mi|9B}+&=KXvBJ z=8?;!(Vyo^d|Jb9o4NDmZMot#@VTUrU+X`b*8JHFB#)vT8dd5gj8MG8_3z%1JX2j+ zNw_h2S_PlsT$_4ojbD5yp+BJ~>?1N!l9rT|Lx z1FJ(Ok0T=P)h*53Cs_91j5#_PM6K3#j$lnMFX5RT2_3S$bLm4w_+pwZFdt+Q9@xV6 zTZ!0V{tirt?8}<>_Pab2h1@#F59QgT3V8!y<|Fc5O`mU1QV2g@3oz<!Itc=TbFpWl7q3{>rhT1?d;E}qw_oX4mM09X8SeQw%vIEqNasiI;wLj}`O8&u z=C*9xHb*>C<);SPW+nZ!J{8itgNJ4Ry_(*t&S&P%?q{oV=s|*IAQSiX1HKl^_Ke$b zBvsaV_`c9>H64^4cUuQipuXlg9(BBO^{&w_nRSU-FPGTIy|?dURch_g`)bDU?w+(r z04>A$?BmR51GcjB&U)Imn77h1+&+g&cmC>?)Y)N7n&b539nmrJgmfJumQB zNI01e&eevVoHy{h;A(hCS}^cSB*~fS>CnjMF$HaCD@VO%?3CV|89B{=Y-dSg6i_K_ zzVhqGr*7)%Vt7g5$;EIckl{l%`o`og-!5&)67d zyZyLXzkWu&dqjNbXs zOgXZAU{*n&zST$Sdhe5RnDziXX`041U&mtGh{>P#%12tpmqZ37w{>__+9#n-M5bsU zYJ!}aYQkmRPaM|uI}kO(w9;Z{R;G1Z?r)5DrjlbT>JffDwad^xa z`kVu(5T@7nIfJbHM9u`Fgs`sgDCWu)~ylbf` zDIq!UbQu{)-dHUnhRRlw(?rtj!g@BlQ7!_CX;bIdje7=QeJf#zy3(J|<&t46w~-gU;Kcd4@uEHAD;+M4Ht7708}wbp8|RG zcXvFXY@{Qr1P!43`OWo%Oy~VHANzNZD<(!pG?UF-oeaLU7aDkr*>?cC6qpWPnWRv9 zbVgOSUD=~YAe8feIcyP9C6qlrb&;y@wq5f82B%Ci{EAmycmFBw@vN@E+EX-9orBLy zPCC%Q9z8a%&OUlHj1TcJlOfEt@ryym$uHYDch%`L)V;{Iyvt_Gz`64-WKG`_=izgb zF5A!EETf;YYIpZH{U;v3A@8#*!uR?Z_p~`Xe5FRl!5m#LDUrSua1Z}+l|`28n0`G* z{?{kDYw%cii>%S7qIAyO|9!C57r7zS8~iy!pZ;@7B2f(2l)8gV3f8oWf(PGigXax; zM@A>)K;Tv@Y3x8a1{STPzyU`b{k^UNKFY2 zNo-ytC28#n2iHEZI!FwIGPvKk41 zLalE3ZRS?Z-WLf0PlErFCF0BYE_O>Hj*#r*|#M{yo#Sl*t^z(?L zdj-2fK01;{Q8|78@!}k+^(Z?7C25XgqZhJQ|3$p^vOBL`KtzZ#a7iZvt*1|) zGO{yGF^Lv04(NMUa=vbn1$18r@~9Je~|?mja_wV9!&C5CGV7XQF3lmIMAR+w6*WeYBN%0#ioDV04i-F-s)R)(j1fNXqYRM$85gf_DObZuTpPa+DZr)^OLH|d~TVp#-;OB0`;RAHWKwtCnWdNiX zFE69Oz1z~`CroHBibwOGh>q@@APTl9(SUUcs@%kM1;vA1gJ%VnKET4_GpGfZ1j{4} z`-u7VFhxNtQ}I!uA{jT%SXVcsYB{ezW#~2A+26h6NE9N@DOzj}5vQb7Mit<1mulOV zb#UOP%7PhI5x@gXWt61{tgb**!kDw^%i$&Dhe)mOW;SHV8UT`}6uuemtbjLVx@Kl+ zSYu2oGZ_{LV~F;k#IRwOS);J?oi^={S1?Q$9W#f-$erGVQ= zt%nL8+_79%4};ljxGDLqjZ}(rOc(88K@}vsB5MTOSr!n0(reIOO}I7*ar?1yMnZ1s z%va2EuoKTsBl(dqC`_r-YvtC)R!8p(u(53A%7X-QXJ+>O6C%A)7xSU4dmp)WTUtN&B}>d7 z4CL0eeluP(&q&o-?%Wn#RimWdRU3^|EmYT2>H3k0B;-@v=n|B6ANtlMwKQDb;KXI5 zWVT1Wp1+|4jde7%m0;jX?!8kwp61I!=8lDu_twNGoA-UBzq1`sTgVTBOew)q|&|0b6iC^o$>`{=4|#pO*qTI=-rKX@#sF}}9GRar6VNr zKv9MPV{y!GPmtE)ijy?SDIr@BNy``2G_=z6OkAtOlis1BIZ#Sc;*W_zm}hYZ9s9QA z3BNw-p)q;dw5?``+>E&EY}Y5%Q>ekJnkhc~%zFCzVxj=$F~vP9H6Y#1NF{=v9F6$# zi06E7P5a^o#>w|dpRs(JEzhJ!uU__EsIq`QQ-Cu1L0{?}hTKNs9xdSF+6bO*=J)+LTR zW8%VPE4PhQnECx}R;V~q`%N;I8Et78Z6{NiH+tf%d3Jjo=k$DLQ(2Ka+Py>4xY+&s zNVq-S6^KYuCN=k)cBEl8`gr*+KTFL*B?b;~YMx~M09s={| zqmau+h;C9o?Yp7<{%4ux=bjB$677_q$@1gBq9(Dl;j(1Yktw$nu@2SF>&`kA z{yE?-+O8-!NI1CC$r{J*T@axx8#FR}=g!NkzRaV)=G;&Mh9FxpHNHEb-6o04>%@E_ zcES=!P2>u-X?O1JMGpC49sGLjl$@otrDNl`L%F$u{6RV^>TcGov%hcLwb}c7amLrn z|AX`D*z~I5!|#R8e;KlW{g>93+Ef3pG+D{|fz2$rj(Ij%HNuwGg1Q%TL0;C3NJdW> zFEklV1J=0dk+nmz%QI-E%?oF_O!z$^@k7Ak?Z*quj6nH8!gd7M1Svdj>N4lhrke$J zqu#A*(A=Q);pd)1dybO~KcQv$!$-oZwa;URUiua}BJ=mjEt^0{5e)J=XRS_HI_uZT ze<&UPHWdev!wMhX-fZIC)m>XA>&#lSuDiFw+jec+&d3XN-q9&r ztKskge(FV~qc7M0>w6=V4UR%mfH%Ec74T=}KtMYZO0fNdN@0H4GhXm?v)hx|L(?vHTR@8G&ZAbGO^kci%R4`!ruV z%ouj?GHD!QzT?Ti-|GCui+4^ibDA`X1%xDp&0Uz&{7JfVzv|0{Zr+)S4s*c;gkZo6 zzo&Uqb(Hefw?1Xg&?_{9|iu8E*c2!M=50aj!GnkL`+V}0v_`l88$cMuJuo#v13L(oPz5YT^qBA)hS~aK>SShW3-jQ76Zbp>Ekl5Hq7>0GXbA94JI_GoGP;v7}t5JKlSIM50*SuUN zdo?*wZu=eEjnsM?$!F)5Z7zK&@<*U7%=ZSFEzeqiKjZ5|`ap9oIpe&E1SuA(edeMD zApnR8WZVEv19WsdkkZu_@L&-V49YQ?;goSa4Zsmy2QTkQm7$t5Vl=(X+QTk*dl#2` z=-uhwfPu!)ii+Nj(D~gK4IBV+qx4HsAefO1IBLH5a-wsYIa6^@VS%m6iNUrTC=4H< zk8^jrscanA)#Ju4l_z5~w`KJ+Y~(IY<*+!~3$-I68b_TpS~Kl#bZD>bOym|(-J-t6 zxqD_DE6y7+O>@nj_=)Xp7Dlh|O4k@?rV@a9r-!N*V1363TWX4-_F^s;aCK||lmeg? z9x4zBEFHie$C*GK>Q@yEMY*6iWJohVu9hMgz%hc|iG~5vrN?HlWI`Tzjo>a&=7U4m zFr5EoRTmQU;@Z?eRFh~G;lcoWTE)X8j@A2RNc-XI{{Wm$cXwaFvH`ef`dj*&f)Uej z_rY)xeu-F|B|78YHv5+hm~-6x_KRPjxZjr;L^XJ4=NRPhh8-9;`PeJjqx}$yu7DfF z#L*OSnmx3J(xt>=y> zEQN#nyX9x!Z|+{3Fj|awX3lH%kuyW-;Zx$65+6d&y}3MC$22ZFqh;?a%mpFnl})u$ zm?sKe;Emy}Eqx!)$egFJxyT1y;04B#map}yHl})iMR6F;5O>>5 zeVYP7bp|`%B5ZtD^7DfSuN;I`tL4iptJI@3owTVMVHBHX=N^-;Ia?!U@7}=}dPK4B z=0~)r3a^yk_KNn+N=-A@k;&R%-s|bo=l8Z~qsk$llxIiA1CDa`tR{W5Ni1Vc#JZnV z*RGLBD_NVsCKIAa2-2dYu~r3!6C!`aRf`83H}+a!Ca*bk^>Xg}#%Sb;{677erLI52 zmGvos>}rUNimH9{=6GuAlZuKG1FKSh{iSUZO~X7xLPB`eyo}<@V#k+4Jf!`_KAXJ^Pqq{wE~uo{RD7w}i`Iq^55h)kP< z_kaySs0>hKaq3BVGn0pqE`RiB*14rGDVgT-Ybat6q~K8TFG4O=LuCp&J$t@Eo5a=2 zF{T_}F*}78k31pxY5;4-G|rE!Vol_f60<7P+9{FQ}eTQgLN{C2P4Af1vDQpU;a%wKxFsMVDIttl6)|Ef8B=YZT_mrQ`SP($E7Y z5(30hk=d!lM2Rq2cT;K9Zpau)o&&VC5fF;lKZwfRe*7WV59epmUv{Qp{AyU{rW88q zs>;d&zYyy~Z0H0U$;v2p;UG~Zxwia~QHlH9SL;T+%-YKm1H9F;n{3=(LGU9H@E6y( zWED+)+bhWztis1yD{Dhyr^OMC%KbF3OA`lUqT&4GANr@{{6F+hmgvJ~uawkILfusb zVe8$8Bc)vKGx~S#EF*w#ON4pqMM>WoH!!X@>)k@xNA_5;Lx;_-Bcx5uA0PkjS*~8h zynlhzmV7_%*gOqI!)UXVkp>zO2Ytf}3_IBMQBf}Tu)P;oJV5XG+P)7qN)KA1vwQCB zKA|m+K3cO4+qjgEoEDL?k-+)zDz{e(+XgMx&$@bccI92Al&#r#w)RVJ2JqyQC#O+}_{9uOr3OW>n@?6h_%N605FGq(&)TwlAcdufGujEk z&-#$!{*GuyS|CGgT3A}GjnqJFwNG$HK8f*p((>}lN%uOg9!ePu{2N}?MpCjymKE6@ zo|q)LC zoWs{iS$nTuxx#~~wJ~we^5%{9*EIj#cFC6QLo1s$O*YG_Gd3S)<4flgG`XGqO4PDI zX<}|G;y}G9lG;ZI_1b*#Ag^7-oCt@~)1y+ls>CJD`!D)LM_dxKjvcYda>{!E%Zn6< zX%kpep=}cwQ9Jr7!^OcdFa2V)6{60o+|#Z)z%7Dzvbg;{$q;rm5O%k& z;NWL;E24d&Divmigoe;-fYvn~jf8xvQS;Y&a{QKyC9$Fc$W2lpTLPsMmosDwOy9Qc z+pl;vA|O#SohhFZ7Zt@jD)*=;V*7TqCky#dJvT9e@j%{Jq)V?7#7)Q4bi_earrRYY zN)fi`f7nD>UoYk;@Mmbh?(Z0>H%G3s&+Pp}Q~XOt2d4B+e5DpKH6bD=`2^i69m$ZO zY>mconp$tNMt1MJPpoMu>+{WS9tft0)Xg8HHJ-}`M6|0_V7~V#LBRMIJou-K0{O;A z?G02CQ&Zt>zw+~Jxl;EJ&12QG=W*0my?ZZ!kFt)QIS>#8N@y`rVhFt~KV+PW84A#M zWbYqz`E3Lpll*xe9%YDT8f{J-g;G%2{Hfd~X=tTJPGf`tm$Lc=H~jeVj3Z7a zHtltX)+aX%4bFCzvUASl-DH8`z;jf$bKUpohsJ6wnpp7U$xz(y*zBWhqlq)Kpb8@X3TQMiVGH+9Bf|>lttvx15r=@)9Ry4KgXd)U} zSipvT=M5*yl{IF%X7Afz$np5f8rxUY7!;ojva~oa6 zAxvPEbj`70>;D)vJ{^>L^nWrwHx5afXciur*qP6^vg4RGUAm2HW5|GVE-lTUww~_? zwO(kSH6=O*ena1U4rDfGk8m~`qb=@5iA+x_;E^7Dg`*inBO1%aQcmycYEsj)_gH1aJSX!!OUoq$) z90F_9*Pl)EW|kwy8RL|Me6JQe9K;&KP~|PLE|fYKDzA5Su8x)Q3mfOoy+_Osh&h+U zt;D;hvC`FU--?R+KcCgo88Ck83LdO}@Xx^U{@+YYPzw;=^jWh+YMB9=sMeNNrFF(j zR&W9fU!D9{30)?sd;oizmWs~cZx`@Thoxi zgDvVeiP<3R#4rhN|N0Oyc3W-rCf+OdvpvgYmwOQTsfS;a$tkrY7F8_*S0@Ln;H<0C z4V4MJuL_+lULgMr_QS%?J@NK8H%af7SbG-+A}#^&vTIkbURvM!hld}yA-MHRO{PY} zkIO+#KAp?|t2bdDNR|zooY(#8m@C2IS(M#TXp^^S$wNABvD6|f^ z_i&`7-+k+>g^w1|Coy|BjBh97xQFz;=Ut%)+6s1AW`qA}M}(RWA8x(=^7>{x=xrev zuG5uydNRA1BcqzGhiUkJ7F-U@c|Od`ENQ!Aou+bfi}kw^q4f=`m2PCDcd}V`w4Y+! z_59sm%O>k}7dz!PGc=p?Bs4x-+AN%YfpCtt z(6w;BVx;ZSqmlx7Y4WoSHl+4d81$l(g(E}b>J+=SA^rnYt99Murj<=i=rtws#9m9k zyGCXUf!#vA?KR+g=@j(d!Nl9F6$|zRUEBI0(9b+)o*Z0(= zOMe)+%;nLfZ~QU}ZoesLSfjg}*x^tgndk`4n7&XvYZ`4~GXVTW#U3{l3sV~{pjXIF z=bWQ)BI}irviU>KGjC13S`iB_-N#vjUC}>q$$9JzIIgHysV*S#AEIMV1+(0`~%*! z7sNy|1QNwA29*F0v#nLU+s>Ytx9RG9mFhcpCXjz$RGZ(SCHm$>H#cu@Z&IP_`Cwu0 zsk=I%3?cP=2<(c%!HR%X^bQJcd4Vj1=eXKRd}w#wStn!1B4Tm!>hNeCtCBf`wH$rtce4#QOCI-J`m=s?SC>An zYg9(;8xXf(_8E&XPsdgJ>=!1L(qHIAc^JIaGYU@YaknGA^=|~y4NsWR`ILa729eM} zpWF1dr#K-!I{kz;Ttuh{Qv$}SiEa4Vf?gRS*?4+x1CdCk#>UKfgvbfjt6w(KK_N=w z`98~Cg5m5vySNx6u|(HCI+x>D-R{|)jb}FTCzWnbJhG>Kks0Gui{B%}T7>2?ozk9R zi$)s(ZBC9yQGX?FUHN}ri1F`!(SdwV*4yy#iFbBs_Z*#!!G5PnUR6GO0+A-zSQiZq zcGHVX!vFzKPEOtMsjc1#aYsbtRIh~ArjidF>4sQqw8)h6eWq)i{|{&H9gp?D|Bqkx z2wi4oMhMxVqOvY4lI*0iw^FH8vd3j*MQGSU36UgamQX?|R5D8&l_=?VfAxN!^Eu~y z&hPuZ-M;;GPQBB0yS-l` zL34%*qI;vMwYcpvsghU!^zZGp=_iu_3jkZc+i{IVLO3f!HCaYU zDRzAdkJrhibBTms2geC??P!gH*SYQ@G$vngmSDUxF=rc&8PF0STXBkpdf&u98jXJx zBf;=ifs>qoak|!21Use@Iq~=Im3(whU&BNE%S&(8+&B~!9!|4-NTPkilbX6MijMV= z*bkx7h94BsY@^+yvb~H8X9b#oyn}N_lQD!n#MZqcSQeN!ad$x`4CxG%Rk&0M<>-;O za9b^$nE6=3@mJ<#uOcyMbhVHW;Uh+3B2M5?{cWjv{D+nf6xc`${nM!hQ zAoEGFRld+1!sdgV&LRb&VgndbmgMf8<)e>Q8ebzY1FmbhGIAT``IrA;xMtdFa0T5u z@vZ#qSv!ozXn%ARI_S`Y`(W8>d&D^2{5Q+>)ijQ>;^w4Gna+%Ye!sz*a_lOO!hPZb(GCbSlAD_UO_S3L^zK|Yr16j83c>rI!)oB;HG|#EI>aNU*_h(pr54X5c_x<&e z_ipcgv9>GoP%(pEqlU58p${dTUaowpXVP>#_;RAB@*?EF5>fsw~b+#SHrDarbl>%w%+e}F55Jd@@1`u7hjEPbum z(L0=6$xiEd`lTAJ{{x9MOV#N?y_zavYx0^K>SmPX`ya8X0j9%(ggLQV=ov{mC_+#u z!MqFfe`NJR3RP}4s1bZJlt~nfym@)GSCoy~?xLJsXvkLu9wY}N< z7$`L$5I|fifNngxf`S5^O(?p!F7hVa#WWNF0fEh{9|1ZcCas{FqEh)W9TbCAL6$&H zu+z%wFz_94U5{DAs^Y9$Eu?5j$WZKg{I~{3CEf&ra+iVS4P|kV$il*osBtk*=FX{; z@brULS-&g!sZslZW@`kv zQ25~vgpt|L$ti4u?!%pcZ#!4&vI~@Z!Xb$me!WIHRM?Pil$Uq4x4Qvfb5#5uD;knF zC6wIZT9!j;vn=j^`cztWBW@PC^xcYdRzdx&8t^y(JKy=xTwVQS3svmUKugOQP86>6 z^|HOaECNcq_U=8+u|-;ttg9|-=^&ERx(wFOo4y1!VkM8Rqr&bQ57;y?|-%?DnEn1O&K;C z-0o#&H^4UAT()hAgpglFSy@I_HlO!mrx69i9YAZ(PxoOez#28RKv=~9H3P+|Z9ohG zH#daq+t}LhdBJdDnMKyht^cf<(fop(o^=&e{R^u3IAnhFJBUU&y`n4-n)uL}J) z0+G=iAt3+>XbPCG;XQp1i#>7Z7JG<{#&8VK>L4esA&`~^<3L`t_QGZry zTB22Q?!w~iOUq>*PRai!&-uSuss%Q0xzxeS(tTCdWu>hBsyCxm^V-to_$!9Iw?Evg z%oT9;npsbgj=seid#;CW^z78UoHMf5)1ur|wYa@GPr3LOIhLpPy-pi+*HK4WFZqZ1#K=r4^NaYrhZl-MWw%;3i=UL?dsKF zsp(0;dRDeoK>>i<*oFVzlcxYR;vTC)@(zhN+#1ZsKEJ$WBqRjU9(;xo&jZdwq?YVF z_+LFbDr`TOe}0}lJ&)17t+6%MG+C3B0IDs&w25-ppkBdSU|~cV9DxW24Gp}SHbLXo z!c&xXkZ}l#9<9?6gX9`1ftxEnp`t@$WKr}Nk5jL^<=V&)!=dnrfBOR0nFEyIsJo@Q$1bJk7b=45B6nMUuxK(x^R_(*^bLur5*Cv?x44B43d z0`M-la`4!}CEd8gX0{O)7R<5?Re)s1L89`~h*(sHVLp;f`D)J)u`Q1iC>OG{Mm-0pFjlb51=Qwn?D zs=%7$?K2eUyAYA!W?J~>hczzfqX3F@v9${S+H9l3>?gglj{EFIp|rI56P5AOgA zyOQ(AqhkpHs^snZdV3k3ehna{7a`}xTwq|r##2DHwjBMCWiNjRD+34TAsFnS`^C!+ zKE?LYUb5LZ5xxutHNw8cc38}5xYoP>Xlsl)gQdjIK(Ih0(ztmDjvl!C%=Fhkt)J(9CcN?sZ}h|;9@xW<^G{- zQiw88Og?<@V7_hGMZIBvX6R z&NxlYnlcNLUw1O9COBxwv~Mz{*JBT;I&b^pdYTTeR=OnT)~a=miYb=&55@RJEmxVy zxlQxYXnau=;>i%>#Gt8e?$0zEzPfWKlG9SfXRX8}1$kUGQ3hxsZ343(Fn|TfDI10q zm!5{19Hlr)qo7VGjz$@hJ68NjB~9Q{c=zFh7#+k_F!Xob!6*Sw~(fXc+-Uov$Y1Rdm=P#6Q=1=lxo*M3;fArokBsro@g=8PVY z?u#%H?R^}TU^nhpa4C+Rd{5$$4s|~<0}l#R)bKH?Cigo|>y?h-S7mZ)&H|RfwB1WE&)r(yz*O z;nAn#cs%5g?<>XIAAi9ljhZ#ct7zvS-Ysyg??>e6MAc*6^mz2^dD6r+eb!FSrg&pGcs#}o+0Bms(q7VI!z_&CUJjc^sZf7KRJ%0V@9D7Mp;yEIAW0W z3ziDMfC7+6%j=>jB<>3qSBmH|$?eKJapbD1$|))`l18-ydkcW=ia;lUo_SP8B6S*F z$4u;+xS+Vh6biyk8iBLIV2Lr2ObVaz(*r~%A=rbtI$s#V!P4kjdBm7o`HstAP9hN* zGOGQ15s~K18OGA5oN}bof;b1n$d9d|&HT;uIahS-D~Kii&h-K-f_`i9m(xGiG0RDu zu0u!+Z&UX zQ#XoOi$;@0Y!(lSnK4>;WK!Y2O*KYhDv>k~hu8R&S$unpdS*nirGXnczjLlv$M?Qh ztFem_HRo3&x9$_0%${s7FH%`Sdk)pd%twdb#i8tKhMHQ%V76o&HEz$?Ax_Q|TSs|) z4W|GtFDnBhL%A8{q)(Y~t2Dlt=WL@Kki4HM#+fZKYb+8W>q9;#CbJhcc2Tg&X_%U7G9V?E>N7l zF_las2o8Mo24Kwdo}Nz_L54+-QWlwnYt7G#aq5_QB9{g(WfC#y9GW{Z#T|xZeN&bg z=b6|iIQ3_?EcO*Z$AfMQ#T^=6G<%S02k>sn2+}xA?~IU64-as{btuj+$7eD#8AEflHf_Ru>dhzT*{)h5L!=Z7>+ox~+((}WE)&u#uOx=@7jU2A z({I?%!x~*nm#>~(x0?!N6y$dD*JXK5-~mEfN9C7OWzwN>^zrfnltfHKL6v}_xHlD< zysF;v9BM7KwwWm@PH2saiUM&K0#+qrPMgsKpjv=5&Dq_ZfrRiUh{-;X&itiFD$({sZGp!Q zes7AS9nwgKHhN-+S3$nG^%<`;95?!2s_B9$I_oSQo^6|BG;{H^bfB17*LN55UaPEB z(sSg}*NAauzR}jMPOquTbr70gmn@HWeEH&juP>-&c%3zlsAaJ{bVxN$w%_O-`AMm+ ze+0SSFHV$x|4ke}YvPT~MWg9b?xB>5_<3v;i4Bpae9CNaOo~0!MVRowOR-)ApfvHt zI`hAXiJY>h0AvP^3a=bo^pppNYRCeWX1Ixr&4qb)*aUw#3C#y~8Dg;juBPZZr%{;t z1_zBVx2TftWFeam9G;0=N)X;MNF|T~5PdE<_VSJIX{cwEZ&NVev zsMso25+}1)qoz}ByJdJ%^?hZs{|(3wfD=$Q1Rgzl=j3yEU? zyEuf!W=@rC<=a2f2xoah=!5(BF)(@1sOZg?R;ZG_4sVsfp^C#*%61|Qh!fu{7nXwC zx3{RNeRb_?8!OZ?S6`UEn!$3u+aPlN?;XOERxL=K#j*~;4($-!0*o9x?bRz$r9NQp z{dO6@1&HB-w{G3S1O^zSPKYWJGR@z!9ir%_v9^CY_k=9H=o=Zic;?JkjP5kcQr1O! z1^6CJI>PNGdQOo;l;==+OUIE4vr)&Zlz`X2<04~^Ouf$)-fATbFO-T(YR3d7vt9vq zJAA=*Q?NW_3B#C1+1}p%{Q0@Sas{SnF`Q^}a^)~G0B=FdeGW4=I!dT*Mqv+pnr}XR zBzS%?v}?2G0c{H3;)+9~nMY>}}lY$BT0;cK9=AO9;6k@W=^Qr*@;swGBF>AFQ_pjT$Y zYwyE;FKb_F1B^BYCE&BbAPiE#DLKVSsO_=1{of$w=AOEdBo_c&4D>U_wPa+p7BMQl zz2rWB08;RcjqoBdOYb0-9B@1w1)!H8+6rM~Ghdy`Ptrl|?T4GlyMd%uss;*Q=$LWi zJ*mV=51%uXq5vB8O??1uK#G7e_2kK07_$l-*xMWUnqqf;@m(CsP!wS(DL7&)%xDb4 zdq?&fPEfG)IDZj9-h2N()gdX)*8!&#;t%mO6bmKflg@s{BAKt!&_ zE=9+Q5Dcs!pwj4WZ-a&c6A2XLLu@81oCAOrNMTUSCe-O6ECj7j7!4gb2}H}BfW8F* zL1p#<1;dQi|-oDXcunIWKY#=41N-uc4Ic8tBd&H4l9MVFP_jrb8UIp69^FgoD`W`^D z%;r@~V7hn|yRh~*S8=}W;CV<}cGv+kj~Pex{YT5RQz5obahR zX5w*>!a(bBtqA@3al?|+EYLt0qeXtBROJv|6^;fP(fhQtGifOE5f6a*3bmlPGck$- zWkh-!=3f!{4r8fAVB^S@mo=U%s~u3Dz#KAIGlUQy2%Yltb+1uzA%QJwb|o1|^dWtL zT6WmhmME6tUYeb0!{rau4v(cqbdSRl%qwPB5w$&x)IN-nXn%Yca1NiMR!@up8kTL4St|uF4I|5oaJy$MzVcn&Hntz_@?uQTi`unr5SYZYF>l~u)5L1;` zTpaytx}R1hAILU779lF1C9A@!3_R`K`eV{p%OL&4iU*(EY>LtsUhjf4y5j%P0_0t~ zWK?c)L>_0_e$0A6nEOaCLES$W+EVZU9gB~jUzFSQyLTaBkJn8e+rQ_{ZZhkYW@*ZY zk=xIaSGPK6SA@xjL;a6vA_QC9_i7fTxarsFtXV%evo6_8hj{#j>(U-Hojn67%tkRW zLW>4I2xc8w`3GHHn$RJ;yBEV$1gh9M-(G$zV#kjj#b^b*sYQrpO+MDb!wG5$M=+!} zNMl9ATOy(b7XbP>^jesKF_b`9TBs55JaC-s2Wocuw4#zyE(R4i zIbmAjWrU~V_MlMOq3_>uexq(tC_a^$JR-f&DWkN;94F!xPfp5%3dW%f=`tjS)|Qr- zB(t(pAT??|+|6o{7#@kz756rfob&5FPvgL^=!N$HR2HiC(GS#xU zePWh~a4|nW{rdG$EHA=I{_Gi&siEOg)YNp4;koK~Q&mhX4@e)%3IMx?J}XG12bfau zb{#gxxKa7ckjzS6xIF+g!#Flms3S(80O(c##j~!z4>+LaZEU=5B;(D71~}d&H*GqO zZw9a+3lXjAJlnHXVYmDWPGn}$7!(JDI%pG#KhDnf_VZ&SA$_miaTiDe34Dh1Ee8GOe(g)jO^v)j)9M?->8*k{ulb(j-=^_8O+Wx^L6RuR) zH`L*I0dmxDhXaAg^fSF$Hi#<}Q2}VJPJ6`j;an$$DcxD1RXTX+ki&JK48TKJMgE~4f3Jz5e%g>si*MCh)Ps$kG1)+6vrD2i0@2I8MIJ&Z1ID<+s9{1tpJUHc(BP7+->ifLRD65{9`(E>Csx zc;Que>zAV=GD$>z@%F=qq71e&>CNfFb1McCK^dC%0)-_xez2U0Ew0 zrE2bO`}~-do)$*wAec*CaS1=(p^bchbal{>Osw1hjT+z;Wi}A@@(AKUV(PcdN=!o! zo)N?cDlTToy#pAGgS9`zr-(QJ~+v+%u6p_!q>b5eJ(OhFjWi)Hzq%< z;^9dY-jsIq6dUe4M%YTnTTk$vJ32Z{g|T^xq^)I<0OsOy z4b!&mX?_f$N+GT{3@Lf?X+Zf{2<7HhO9TJJpG6tI!k-k+dXu`emVg zP*;ay>M{Vg_6{mu5b!*D5{8YQ{Y8iIQ`V$rFmA?E#0=^%i1S-KMKPnVs1B3vWACuF zRe?2KIKM$!I;LX+VJ@uKj>2~cJw}bBG^$%1m2H2?7qM|lkAPgkhiUpX{~TSMJ?%Oy znd~VUNsA1=3Ob+_3qCZ+$k+MqB%`9jNz!>@Nk15n)P{5xgq{>9b2DiV;#X z!k6*GP{iOlZbjb$*v3-7-a2R4+0pU*#fu|o1K{XzadElx5E|*0phpOR0mjnO*Wa zf={b<`{}%I;Ji{@O*{W}y}=fT^1;hYKaYFT`j0vZ)D>M9V{5}6V^H{t11ET^sN%J? z?<8gGLBoK~qqD06Rf8Iv+@d8rl!Yz^CO}% z$ca+!D^;A2Q`Hq(lb+MLhR=b0r?r{$+@}5$#`glBc6PGtg`;+?5KI`V8J^by-~p^5 zKL`jAt5)Dk0AH0CgL;;YL|RpyO2MN4i5{)lmx(EsaL~VRY$TX$oZ!vLxL9FIO{oIQ zo5FW#84MXUFf)^ZtqtKB#GT)Y3Jrb~S>ufv`_ z7-&BSk{z-+SV;D1xCruy^Kq405~=U|Pa`T#G{3 zud`)I4a{liOaK#MZDChIWhHKd+j(wwHoR#9WVBO0MyX%4FWV_>WrM9iMuZ0oKsbeFilcnL*X)rW<(_(_1#HZTRy@CA=p;c(_;=&oIaIb zY6wIYi5T(K@_HXe_Brru%%WwtGA@o!wN}i%NXp6ww6tPK#X5&u=-@j+zQz8T2!FFj81_^j&oL=)AOWYd7}baKW%Z z2GStHd@3ssfXF6pjrgS9N!Cu54$>m9iW$P&GGoJTmb`0B?j05zCrSijW&vudeAvov zh&XkspN0jv?)r7kRTJBy@B_~9&xd@8!tb?yzb6J6i;ca#@pD@f6P8!<(Eht)p}`Bs zyf0QmrEGK7gFDRo^j~0Op*PSz@s%3qROZM&{HW?Xe=Tbwzg>(pZW-hdowi=_l=JGj z%q}ndhVPM_m+k0I$~L>?p=WM zu{WVk-0ImQOrQGXDssWyy}bn>T>|Z}PD;uheY4lj(G>CCly>8F0>e3!knBmbE0M~E zC6n>=-gosR?02dd6g+bNEM9!lm-x=Fe{KYJV^{&86Tx~Q?V5|qNF<~ble4&>=5k9rvbg5asqb-gM6glhDpi(`=))0u+y;p=PA@R> ziK}O8$SVZpGh*WjQ*6Qk@W=rZz_c;*8A(S3989566_=8V?wCLXAV_pnVvnU0W(Y`t zz3hC)#4i9_*w~QAn3fuqfxO4T5BW?z6SH}Jt!wwe3@Xng5uRi- z9>yXS<2>yH(ik-&$f_rm#MHsEvbfMQ@xIel2s))`mf?>;QhbDV8ikOdJW7bj5eo?{ zu@mzjWNR8if~?e4Rp0d$GDSGeUo{+S=jOGq-VWu=0#0lMN#R%X1E21xIOlU(zL4LBy@5vdm&xO>-N zJb-nj8reeC&!=nsF*6^-=vo(XUGb+yI=Nr8-(InoH++VDN>Fzyljz9P3e26I^D%u5 z?g~)yF#+`WQ!p(!ZnZFc4@KYD{z9aLn0Eq5pUr`9o$!sfB~pG&(Tr@0&_x{e>eW4O zzN}Jkpno;X#HI(VKt@p!u#o5e{Z~PpKlXjLkT*wVAcZ}SYr0fMHlCVB9j^eTDb8WY zPKObxhes6=F;j^hF$FOa^No?>Ry1U&Cjiz!GjZkeWu#OLBe9@Me0SymQZZ2o5M$53>!ecAsY7!Pk+H$&u}`0{yw77S!>~{r5HmDJ0k8a^&A~N@ z6mW37Q4ZXi4AND#+k_E6g-?P2UR}GN;|WU04^6#zF$6FlMcwyuNhxu{~e}APlRo; zJ>yWxPq-4cg`U!*l1l{nw{m)l7+9LGJl$!EUK&&<>KnE z@!YZ0Cwg+tp85bHSq1>aOQ02~&Qnjtg&WqTuu8Rg1Rj5VTJ~mvobl_Qn5I^GfJ{x4l zJsBEe$za>TfSViZ8|O1ZwHY~tsT;tb{>=vFg;6B>a1D$-N#U_MUA1sP`98j3VFyq{j@LTdVtw~x6wvs` zkK292+jTkroc{kpQ}RuJA4_(vr)PQ^eyuf>>u!5HIVqb3{r>3f=D0jw6uT`a*DO*& zy`c3dD=p2+$yuK3R%+j!59A9fpP1p_xxbfSPl(F2zOULN7UPWc$2WvP`$1N?cG?I| z`M9`FG*(n?c064Lt~es`+|Gg}TCacodvX03jJ+Y>P}fPB#pd3AadUQ{aYjOdDH5e% z(PEZ0+p(kLjg+F|e!_ym$A z3^cBBVuy(KKQEL?S`Z4onWX3^9+R%E6e(L9g7b?01lZZw!1lEM$fKG6 z&YTkF{nQsY<8Wyxvq4+bzMceHDO@M4$p$qc+Qv8IfokwrUMFZKgeCNv4CYT#T5 zFqp@eh1ZXc$nl0lrv2@so*qaF{oLG;6dVF^IiQZEL{f=vcDo*}%{B`Q42Hvk z1pJHJ9H->CPxH9pI@cnX!WxZ*9+u-Ceg5B$9CV>*#Cn0 zr9p5oc(yGh9f&Ki=t1TZs5x{HP<2y>A!JmB0J!AY3~FRVOM+WR`8I*!BKx-7;|~_; zYzOc#`fw%G7fWUv=U1CC?!$Jx*CC;q)YGud%~AV{>!Es(bfXC5PoXhD$pryeGdoZTigI*~`c=?`$f! zqE%U5R+i;zJ~R|7Sy;lODHkLej@jooHlF{XvGxcRM`CIk``?`P%44)#uEJJ%E&O`r z#*zi`sV1sLIg%mXQ)X8Ve|oVgN~OPCK&aZdSe!Lc)@-Yh!^%bN*cTXgr!pkY=~4~a zkAGJ4I0WvFPa=pwb-K=1x&+4tdmi=@NYZV_#)Kedxm=9m>bhpt$dJy5^X!q5 zDN&ef2Xi3GGQ4r}xtA83(sbpkc!LY8Zr;p(SZ09cZtncnh%m}jDi!M*;XIMQYZnH6n0#yag^w>SpC&UG9FqFVPlGn z%XMNXgFsJdv#JO$t6*D$^v%+1K-L}S(uH?#-?FT#3guBPx@#otFb25|tkoqRe*NRG zAD#oWO=VS{yuXQ+DK2IECU-9kmT9>}{?=funj6i4g=QY&DWR~n(XGg4eVYB&?a!TA z?jF-Z7`ehNJxvmJr01fB9^`gojhM9H$Pd z1N;l&EEgNUg&X~zNpmjqFmqW{^N*DZ%KBPqDMt^p4)8-%3y}Q6K|2g(h&HQ$@Wv|o z7-vfn*Y2^JW-L1dWgXvqF)8UG>J#!w@x!BHYnM}Ze&)WBhb4q)_H$WTK_^cZ?znEV zacidAVCj$%kLk0q!s430xnhDNzMmXwY}qpNXlBdSYPRTW(trz`WG`y!>L#(zRdlO8q@abk)1X;u61BO;P~u|Uy0r3RdwlwM zQ>==$%amhDyQP*=ZbcYSC~&0W9_b!>gk)P`fZR)qhjGE9j?baT+GarCNslejp0uHw@)7HUt|WAmy3QJ zv;^>dT)(*DU~qcy<_khVdqTYCb+X>!2pW~$hwBkfl=#KMGW(SXBl86FAL9(-41o~% z?oEMj(;%9|4FGx^U1d(4!P;W-)@*naPx zTvQ#ZQt(L=Ohd5J7@t&q3P0&kaprG;%jCyHAZg=xuHm8TimN5ub@Aqnd_oD?lOZbU zzg9&1Fszp(=)6gL=g|0I2cf#<Z1+Ja z21M3%hrh4yWgK7t{;w90L92iu41e>BN+|$|!|59QKcwsZT%08TBwgji%)b3Q7aa6t z5(8>VcI2Ku3%C?aPqg3+prp+ zRJpvP15=4D3M1O7e^%@hUXuX;TD(^m_plE|>7SXoM1Cz9QOp%Gee&&`_Ccsq2~IHi z0M1N&rc)RnY>>i;$XdvYzkd5RW&|E$*t3K=@Y@$kzXvf5f=kxT>Wx*To)-r*bBe8s z@%F9Jm)h{~wk$>L*h{@N=3sA+2@AIHP~W=MmIj0s5(q#KoI(xIJKNg>7Av`aop-(p zW4plEA#qI#mwjakKL0??G87%a<8IW}BI%QAKQcH77=d}J3;>(Ed$jh24rSDC6-c9& zmp4P+&jI8}9)S)9ZTWnmDMR~YzhadAHMcmdc@jbu^8nKn7Sd&6ngvko#5z$lFAy%c zc5oQXKi{9Zf zW_`AFHO8-1eA|K*^I@)*wEMpm=}?j36jH@dDml4B2M-Ep_(8kPCR62qq!CX;on+2SOM{Uds9 zhDW@lI^B#YRekd~kuX6wY&bLO|A!(ya`4R=St}U4fC+NsP7pIdG&G(L51$xojm8&) zB!xs;oxFCS6FdR>Vox**l=HA7F0SD-OAf$$_;s>L~Xsx_WG{qU>vEpr{-a_LG zyIRiG;`9TVA7=FZFY3>g|Ml2dYG!7P^B`^q3?W3*=j4tM_Ju1rEDTLeFGH+{|AFpa zj7-nOROxtg?oDp!J!L;=_HexN$KWBIe)Q%5W+we{(7_OoNlLO>TF*N>O#qE9L~(Zf zJGn`%wBKfK&KUK)2ccarUy2+sE+#e>TrQE*m3r*9^%ZJfHm8}>T*TDk z%UJa6yidAv@uZ7X=O-0?lq@2`SkS~7$R!gq29d12a%geg|Bqj0NbE(*}fg7)N-&xca#eo8cu*7C57P_DG+5suk&XT zxKUX!7Ie$9-Ja}sfT6&aBP<_1AOgA|5Vm}trem{dh%Lo-Sn|Dxs=)A|?)v~Qt^ALf z#jeiWN~5et9Nu!a+`E$Hx6j3~kfWpjRQ22Vqo2Gy&-+B;ssI`C1Qi{GC1_Hi3xH+> zGm0R$Si#C_cv{%R(bwF!m0~y;wMnD>@lgZIBmG7Wx;vwFcC+Ujn0@Ug=a>jr?>Iu` zGK|_3SFTrVF-%WViD%0mc=gurpS0iTH=r??c;n^c!z%Ivohm%lm?o{v27MOLiGT$( z3N$3dx5hgYQ#(*CjeLfP1Im$6pG|CSM0O9NUS+g!W7zYrT4f}(6Iu}zv^W%Lv|%oW zSa_n}sHnzF?N)t#qR&Cf`tSZ2%NgE1y65?p2B3hsSo zHTwO+To0MOErhsqt=Vb~`!rgzj%1W=aL`pbn4~Y~zcyU<0_Mg=Z5l_GPFC7oL_E-t zMs~Z0LIyhJl-Tgw$PYloYwzEWSR$5-p z^-9|Lv#ZoQHu|eqr+=WLft~y_<_e%DFZC}ID?9JUNKMh`Yw+G4)0v^NN!VwtnPNgQ zapHNP&^kHq=Ws7B#mkmiaIjsSYp`BPV~_aj(`plD8q-r#>Q2ohd#3#j5lz;ASl_!( z&bKq4Q|^cfvb5t@ysk46uX#lLn1--0NDgy zC!pY^k^_G+RCmT(5Fhp%TZ(;e^I8rN#iOCAIXQBC3A5@~@ZPZvagQ>l1wfhZkb`1% z=7{plVji3CoR=1^V`TdXEuTNL5SSskW0+%h&su= z4ChIRrrX--9{K;kAZ8-+_ptYIw?h=2ZC38I=Z%84;AS7U!;b=PhB*q*cqJz$`uX_8 zCnv8}4@G$ihyv?1^N%5bRU|eS%tMQ<^Pt$=F7g&~| zbBs!jPpOG|iHu%2EkP_qzBg@!Car9ud14L;WB zw07fU49y`CBDk_LS$SxSP_AYSl64QSqG42EYb!NnGnoUuM>&Q-Q6@Xqu6tXB!q;~i zNtE@^>2;s=t65W{D$~fVaeF6&RI2aYe#X?awAP7Ps07A-92$1x9N|Ftm3Ric?Z7CA z4T{EhXeb-XK^BAxUEFYB_3}Y5Za7Jha4c0)v+>2tmpC*|@(+wg{zSj>^ue!He!`p_ zQDxiO5ksk|r9}gXo0lMw+-nfYj#Ud@(Xo%B%F6FSk>IRODNfFKYT5e@z&G+<&*0XB zYCaT!>heF^#m|LYJF79^=0+8HVlLSrfBXaX1G|U!2VJ}xZwn_!*T)&wnGzZ7U9TJq z_TP7XO{qF_v(~DO()1wz=KE&&J$MSZ!=Q2PJ1w!>~(@CSI zbwjD!1^#;njUI2JHl zB3|hpXwtT(f&Tt@M00_Bf5C4q0oWZ9b};FyZpYrb^%FWE03O~4*btoR?d8>6(S(Vs z9uKlW&Mi-Na{FxO{|v()=a`eKjRp+C=o^r7Mp#fj$LOJk?H(B5?cL&{`iH+e`Ey=j zZ|g|MwHrL8I8YI^0arcd`34+2hHP@_>lw^LU(<_gy|*)tb$N+!T<6yKWViYjbOz#g zv^(hIJfcfuQn?IHR^`y#S3HvU`;k7m66vJ$Uyyuns}RR}BSK-Kc2njU`d;N4)3%^r}gThZTrr&V>sVSFc_?ckX## z-z>h=hhGlqP%{A3{EJv?e1$F#HZef7H$gbaDJc9xsA}F?e;=RLJ)wYMNnz8@;t-`n z85W92hSKrBe0pfEXP!4SXfA1!nlZa8<^kkG%6)8hnaw`}kc@G({Kc66@!(d#Kyku- zM_mpafI{OYykOIHqudB?;40r-*7nEi6|fU!XX}c;!13P24Dqbg*eYu+uPnuZD+*xD$qMZSgci6BkP z>7r7Z$CW02FTK%5$yw{RH2?eniVf)tnUmw={ebu(FV|zmW_u=I}-^Y8*^b6Bhb@w`5)Wi&T&Eos8Jo z2WeU>NVB#meR_>KADSdqu^jfJu06saQ*ORQCG+fLrux)6v=i$syNk2iI#$NHM7hJz zCW|fU6fI#u(27sY=5^E~P_us}m+GAt{=>p|Km_eC?jJd1Fkjrf2v`z)3dsIrhYu4o zUBD@~rLNK`u6`g)))fk0DwR;LL14gH8uNtkWCE(HeO4 zoM#~+fc`&ydB~Rwv@M*Inm*=wGm~lK+TapjCKd|I?S5OudHmsqz8}$ zqY0WnaF1bC7iZfFK8cY`;fXXU%*x3-l2NxoTDNaF)o<9GVrItnLbDt)HQ}ep+hr?Nv zlmd|U-Dboo0kc4Hbqgo=UVCe6`c)V4$}n~m%6e2<@H+&+k^+Q48#=mWReB0)chJh% zP`7X225Yvo_yy9MQPt3rd~cDRxVmaf9QN)t|3GMNX6~K)udE=|ISaxl@Z|UrnBoFS zgfqq*iZ<%CB5oK;s)SIt&#s(P6!Jhu-7+2<;*$VR!!Y&bHM^td>xqdqTye%v!y|2{ z+}7(jcw>v_c)c`})<5FTUxQ7d_gulWLqcUQ2Ce)e*kM;UQ;NTQfB$`Efx9 zQMBdT?P?FNBEljLItXDX=KA&P{|n!$Z1XqYnq@5MqUtQM#;;XaXuP|-+hk9w^@Z}q z+K7VkE&l3Jd@6lP`d-op+f@g|%eyekj_hn+P~K}PV?!IpZxBNq)-bCaLvjUdxV*fa z$Btq?Fn&oMK&QrdR@aFi6GU}*`8W}Av*3HIzW_BxL4lsjbqL>F0*i`onqtJ3>9%bU z^Wt31|C%*vLjPhDjvTN={kBe>TUodm%+t`1aPmUGGj=N$#>INRg2lAsN8M5wO;iR0 z_552eN=D@k1}HoatT93~oMT%p0?#tHi;WAk`c*kpyZYQr`z$oPQ*imB5 zwDQ`f?1^7h)v^K+f(pO-V?2)Mk%_(_hMqJ=SKM_46prcMjWYDOTfuk$wG%x@W|+wB zdZtYRjEgiZRQ{+9Ad648He$gv1At}5!4DhP&2YwMa-;AkbYD1%;&uxMECkQuet>PZ z`Q;R-MxDDxW~BPS`N9_PCI$vlm<-~|UEs82wfMs`@A~y`pox&X0in|0Y*lIOroIB0 z;vZ(a?FmobSi9tP-~f)aeYcKQSZlA|7#soO1PNYcII=pVqv&FHtP)kB8SNiRjs!M^ zYY5X6VDsW#XIu5cXy$Q;c1C5Wobt_MwPSyLh{DYs=J+(3|KN_o+dSEdled%prjiIw z=~|?z=cd1Hi^3a&@BOEb@!$S(;{LSD$Pupx2#F&CK0ag^>S;dYqHU`}|Bbw^YcIaX zN}+2`&C05WfgRW5x}rApCAj%3?W-fKM-0B!(4PpD&e^5$+fj^n6&LR{)BNT>UiD*o z`N|;lu3YiEpCS$s6-ImDn?s~iV(aVet)iik=_yYS<=tU47r>mpBiCB#!J|i)F1oX; z!0~~*GYGmEE-o(I^SG$j1FD0jIq3C6rb4UNKJm0Bl}Iu9G;$lNVK-EIo}RH!)#CP! zTaomh5B2^QxJd=IALJ&3IK}Y%eDMN!Cg0)#iLMU0P`1go+>%&+tc~Tf8nL#ZR zv!nU9tbq}L*M1yQj1TVZy||KDc;n>xg9h8PH-9OX3FeTV0HpeHGBd_xRFgUnxsUdNzB|XUOX6QVhz8#l|MDQlp2*x`*ZXMobYHfY$I#MYnv;ryGH%aws|&le zkAb9w#R&i&GX?}h#s*m-5(o$I{eb6NuKW3iG}^{-Vke|=h!&t_3!Nn4 z@<2<0UtC<{Z{OnCKf?F7zf@4r`rv^dh;HO}&&|&hMKo>`rV^{VKTjLu89t4TVUExF z+}z5`mxcKFV)iTcnFh1!cxeg!&|b9)$&M(Bh`fAK)wOG^92_IH-su=Tq$7sB__ZRE zsFgi@eIev|0qY8Kc!4FtVinZ7eq;b@e0Ea6(WBBDkVzuCoy<)CguCh>96?WDbAt#8 zs$|TJq9b7x?nBgB2+f4b;CEs(jri}xbv|8_*-Fu)k+PvzQumdG?U_XOU(7!23gR$|CaO5pxV z#Ka{fML#3%$9m@_0Fm+AJt0-2mJbbltzmKrV`rJ@oUp3|oV&7YWNw7t8f%VKF$io61*joSPV+fHaH3N=}i-vVUC}ev6 zZ#pTI7t@^GyUr*|aOqyE9hiJ3!<@DkMqx22^-A6?ZfS1xTOZ(>fQ93nKaRO32I;eL;ejkWRycY`#&5L44`$Z6bGbFxeC_4@vJ?_VrZ zqoRxqQa3+OFZ`568A!MT8>q(34zIZ`cUJBsOWsCHDi296tj4c!`PIylxZVe|I&sOG z{N z68a(x24+18um9y?{F2MLkw<+ZK1VhCjcG`*)6^T^a?F^>@!?v*y8<2k?O(YDyx3LR+V`Vz1l5?k`S|#oH?S3*Nl&lAd;+2x$07D-&XhM671clkGKeNDeRP@2 zaD+jyg#offkP-s0L-oB*N$C}WZ*|0U5*7Ip;?&xF04yOlXcnqbkkq#u8}Y$8Ta8v^ z+isigbdgQLS+TINfGQZH7>GHLfGZKAgt9ZXJ1)y!=dkYOl-gi0Ef6UR2nnHpx>;XO zWDlvm#FM*JE@dOwZsT5CXvLdsTOOostxC2^zDUJ#1g?fLK%M>lXD3LV&4+!SjFnn--b>zjDWk{^QaAL4|BcEUyO8qW z66A}LO1dHp3Iaa4z=|-(g2>-Ia^!-tb1P7HRNf@g%zh*9%2QF3 zTdifV?4Fpt12+^v7+X6#bRdu#4s>)F85l%wR|61Sq$v<(smms)c7I^t8=RgnpW->; zg|z}rD;sl#7akFMc!#mwdq^bE4Dm@xIDhs+2@ERBaT#Lu-b+6o{;^3Gc&01(tgqgo zbx{77q}5klYL2X_^QJiFx4QQ=+$|rj>hAq8Jx#sHQ!axDm$D1JJ<;cnbI`h|9Gwd` zJi7m8Rf+fFxXQleS7egTUS0PmQ^Kx=BL;WX6~A1GVSnl=SLAQLa%n3B?*CzlL(m^G zL7YNfKoCK6eAiLFA^Q<;@XUn^A0cAKz^(p%+NQag8Dmq^Hsue%fH$xH3`Vsm1joVX z_6799z^|4#7J*7N|GdixX9zAQmukd)5u+`JhXwcTFf8d4@Ez(7PU7o>q0bPZZ&+JIO;XhD~MyssSV0Lu+w zApn`SWH{cHl$4AT&5Mu!JA>9HmBu_)7;To3*52u&L`Iw>O2Ov$$SB1uwu{Eyw5E!s ztR_>Jv7<0idS>xtKtMon@a7{8Dw@}ew$W|TOdrVmDW2NWe!V>oF-i0!@-02F|Mbme z`Sic*gcvlIUC6`7=Lg^mXnLOEqT09b|0C?Z%7rdyh4(u{hQ&*=TpoNM--ISO}T1WsDd>ncMa2!k)B>@Ja@!O2Iacfwf#@@{* zw61Jz=sNFUB~tWL?UwxIg@0Zkp9Rm4Q^!>fn6*R7)<;BDnO-cW?8 zFn1)79YXPEhz1Y(S)&K$jHZ6#EXw%^xIO#p`^g+mKL01(L}-&iQkZvdn9Y>X$9%$nvlC4Al;6PA1uKTo9AH z>N@FUZk`eq)sF6bpcYC9;GAPQ*;@9=5XGNAeth!>vU&sfCUFgN;zR1{FM(iphna|? zZVQYC*|C$Tg!ysMxW)~a!d%kna{m!r5NOP!H5dOfU#|E1eOI_{G`F`$SlxuX+mC{3 z08P~c3gRDw-OC`XP!h{LNTvW1et_@MRl)@cs!?lmvgYhx<_sO=fH5?uW$rUuN}sCn ztGvd{}O0BQ`3afQj&hMTtGd`Jbn+09i%v-6CkGsPyUB(!>%W7eN%%lHIjnPxGJ&i z=-V4R&eYsiiwp`pd2}7g$pOzqy25l~z1L;)fRn68>v?}2{Kvm$#nIK%6PA1DAi4Tx z&R+hc#vB}WGX}9ogc3q=hns=qMhhlN?BU#e@aeimHgX^_B)Kov+~F5DD^**}zLL8i zX;`&=7zb3%8q?gc;o-@i+~nPJK2az2!!iUDA`XjCtV0QK`_olB2aUSbeDsDwV^1Ub zTKvZ+B4?D>jTK_P;$JPm?0emhzFii}0lCFY#acSG)Hw?73BLwLUdO1g1@2g@9ntyR z(V(l}YwJ_y>VndXJD8-j2Ub0de6;6PWb^X#Zr(q>xFPL_z{_Ay!~{>Bb9>q8q#sro zYgZ<<<53ZQD40RS489AlTy0om^uG{fhNJ(lab2q813tTz?X1oQ$O83vCFO z`DH?tXcL45!lDH#l$b>|hXd#Z%OQQUf1NloIJl0PS;D1n_bF9D-P>~2)Fqt-Q>$BD zlT%W}T(=C|dGgF6HmC2 z-T;s_8}}=^oWPN>(D^eO13#d=KhO_>2b2()$%L_j@={Vo;D;0xQf}WB%b3ORxRTE9 zd10CJCcW&G2S2HPXE~VJszuXArbvqJ*a3iY`NsoakF(iqhS_0^yS~AQdApZfCFyZ{M zIl6NcvR+(#@ist9pj7lBKC)55lZ0!Pd+&v&_wSb=(#3esMzjNf^I#hpJj5`Eo)m>@ z(Tx`xbxwlXx^>l*I~*3EaUx^<5P35M5$e#;?Yr6|qu(=+y@vkRU7maLGWj}PWZjXl zfNeO)!!Bxa2A=`f;wiZ`-Q#rsI3KMzLd>i8zx+#{4W38U1F_%nD)J+5}xX6LOMxo?hKn`UoZU{y=S5;n!KgyT=grlumk?l%b6Efk}a6agm?IJHbB z$#m))az0cOQoRaGA$NqmvoksZ5JT7cGx;b#WEU3}ru)1cnpvJ7V#2wG*4EzM{&SR3 zu-|ohgFlDD7IlVgv3YD?6GjrGWM*Hs$9jL1yt=_|<`YTL4SL)r@-_D&R$62~ z=8wEgU3k^r7x^gi_MRQf%h_vVhrlMxvjb#8i+`dc7_K_we*!TLsG#Up-?DBQ%f9u) z2OrYF5W-k3aqTt_I$LDDlZtA@kwd_EMo4>4n7wL+%Jl!5x)~!wCm|^*f;i6l`WM<@ zf2wo%wE47eiJtV22(Bm*+qtGBZG`mo|7VaUWGwF9UZr?nLq{2jfve)>CWY4OmoAaA zjdf;_{i+)V!X z$18_HjUceXe6nm)-!Sl3`{A1*WgpKR90OWIQPZMfREy|L=H+k%t0(gyfr!7>}G(acOGLl0j=6$Z)X3yw$>0YBlkI!i-`LT*QMptwn>KWxK7FND3 zUS6-|R;0-o*YKk{s{vPi@yn+4B7MZBi2j!UFON7=X_W*R5Mr z-4)U`BZv93s+cj|)3b+ zjJ^9iWh7-(kp;jQhuba{K1=Y_6b99nCFSQ1-%NK*=9?ytOjuRkRetLj7YSVDKjxF;5xveW~MHu>hq{wl%lHhoN~rm?Q(~l{4-R;R9{eQs4U+ zncf_l(AyXU0|jVs^zw-}Z=(If(2Bj?*|?|>l0`KmYIpQ}WQtqoSYmZql(GPWn~MNs zE>wOm5h1d5gSOjvpgmowk?@Xc-t`0-*^K3b=3uCwVv07yrurJoLv+MTVyP5o)3}Y9yY^?|)Xc~PID*9CPi1_gagHSi(#(xf5^u3LQB~ArO z{{dK>Oq#zfEFw4N*)*=m;Gm#^6-~6fRVzB07`r7oFSK4#bKj{$7gF0@Cp@C^4Z?B+ zv-Fa3sNL%t?3@;Z{YP4xUO`{X93=5OV5A^?|4GvwgrCJsYCqS9__tQUx`%eK?ycY3 zwC~5*0g8&EWwpAY@1rjZo4jck9U4Qnz5Cc z91VbA4Cwx0lSljnS~?{8;GkyuL83U?+KzZC_^8z`^^J|HjwV1>0N94bYp@G}%ZH%^ z!Cind(b|zV9m29LLmf3Bzz}>)pr43NGp+D>4nPI+)i%coS~3N+e=DK{6Vdd6nS^HE z#mb6;s60xF$T7kA@#Bk@mIJu3X&5&KeMhur%*oDmm$v8|c`h&Ru{-B(+>UZy@4|Mz ze3D->x{a|oPe7+)DWeC4$~x@w{QUj1XMaVS2K3Pf+6miPLmf>jv*uP2auJr10b>Y< z7bx0XJ;}hz*Cql$5As3xCDU+0C>dk;1DV;_f)!NkEiEPB1_133UBLU-ui@niv&=`! zf{2Ur-33;_pQmSMAurBIPBz1wKl3-hPEaWU*u7CKfh1iv&xdtAJ*Ikk5m5r@r6HP- zD`D=#3-MeP-ILO^sQT7htG00TK!Zktj?Nx!tMQufGo0GKgV}|f69wdgo#>00Q(LaY=o}IaMk=~hG!&KAbcXiC-RL*8X?nC2S^|)s%Z>ws| zUVQ%Y1&pEPG5y1bgPzyd5rrlI_4R%}D$*BL`=Y`d1Q~1)uM(-4!_f-qHDaVmIX92O zwdc~}55G9U0 zDxEe=H~o#iwc*alYpit*4Ju`t=u)mNnZaQCZY|nH(@*cJB!igG{S@Jf#+)zE%6|&C_6hg9e1l--HS)}au==v zoCDWJ{Bl_vpve!D!0|%sm-cV2_(AlEJ;w5(dZf}{)w43YbMz&K31b39c>jg)S*AF<O<@ODm)m)tpObp)xTNA+tm>^M9P+(c? z%of^0iyyKUKSY!mz)gXmP;wpr`pyZc5ooaDV-3=&HoYPQvo)4+FVd-SRD^$6NTw37 zd{^OHJ2)F~uE)OS?XG0}ZvW;XiLa+!{*{NidaZ@zlmE;|eZbN8pRA)XgUf%$rEb>{ zsz1^j(6`tyA7s4d1k<4-RzD~np_n4cMu;JaZFe_L$=9*%y85c;=Ekw}uRiZuqb|#G z?$oJOLrw=7e@NG%JS3ge|A6b_EL+Wd#PEcC&xvPrC;QP#rk(aMXQ4( za6Ut7GA!)2 z3;cEpUSXV-ZI426)&<=~;RF>os&X)Kpr??ejN=mJfn$V%J3=5~4Z>6-P7aQNMsVi! zziqcLa7ZXY+(!BlU?=E>!vNAB6pOH1i)C>leVQQwcg98WVM4%=rXpyp%;WHV)jWUL*r7j3ZWGUUTLwI5I zszB+E^Yo|K$Od;N8~F=3TDkKmH~ck9D)=2bY4>cwjP z!Y`hGUF&R?n5161Btyk@da>fYe;9KWsxFuTAKSNNp_0baHZ4AJL;OCXeBmo}wgWl4 z3xa0?4>8#3*f=d>5%)?+OyiY6?}xGRUVF2F-PZ%U{MHWC6*M(g5&G`jJ9jRvEPGG1 z12M`um|$&Z_Yh?RLdPZ$_XVULR|)bDPUR|aAWaQDEd_y{Cv+UbVD(K@kmR_+JOTP; z7I9ABzrzR!{$3=g07L2FSVZywgoo&X0H2|3iHWs#i@a}f)8JeAE4S`^yDwX|Sf_fd zaA$V>{F(68p7V3`PVbi?!tZ^OW{!DyXGbR1jBzkXMR6p&;N2JYFziJ^UJ7(xc84GH zxYdiz9wcLG0W%N;-UUcX%&R1m_=<{pOV4k&;<*RmHvm~g34n;g1d2bD>MXd`gUzsv z5(LtuWR~+$+913Ibew_9uo$k4miPk-E5(%&LmV8h!o?|2^dJ|QY}1XmS%gGNBx594 zoAJAWs^WA#lW=NKAJ8`_*Pj0oAW|Iuwu_E8=)s4Wp9Q@+_H(Wdi!XlESWihD-XU9& z5&h!xt>X%E&MYOv>_(FePl9n;A*MOVt$muRfNFcX&}2-nWs z#9CRLa1CKOn*3Gkk<4WOZr7im-`2)*?8YA4Qz+!IdH8}*cAc#_JqLR=Miv?)Q0wAx zewHP`>JDGDG3x|?l#|*4ZS9WMRsiCar=?Aip5pAx#mf4I+ne?YX6teZpkkpX$oU#x zgWwWdKMg=Yj*_{y!N%Ge3WKexFYEB;_^YbFw7ZY`{^mZn!||Fo@9d7CgY02PXVw>q z)2I5?aBwiRM{@`SDr>Mft`C&le}1oW`~+9bI8gjQ^fcr4`ntNY&btWs!1OEbZOCB7 zs}pQ008E4u$PM`}ZjfJIS6G8_PTXG7h>gKKKpE4t`)Na|;@7>(shMeN^k}Mfhx=Pi z%(Jvs_yT@*xlrO|s$A9E(RDsr?(TLf z;#cBWzWFcT5w;&MvmY*~A90l}5?bo74b^|{d0{E1Y;LfFsZB)h>7kadM=zCrcCRvdzW~bft6^$soqJ8|{C>g( zm>qFwIm1{mP}iT zN=<8LYl%;JE<$5b&jY2*;7ug_R+OIO62Mr30|&y&%Jy!9ea8;!KCt97vZ!XUV@TEp zYAMYs+@sk3m`_GVsn~RuUYI1)aAF0z1HygFcYRx6QQ}}$pk_JLE1Y1xgT?4($c$p zb>G0dkIldKoYE6|ntEGo`Mcr4oLMHS83DXCEN^pjbMz@DgP;R|S-$}=*YETDK9cnS z2W`1Q1_-0gfmH&M!;^ZKD5K^EWQgPmZf)GBY9E^hzcO+6*v0-PveSu1eQBYqAU zCx)J#caFFp8rYKo69YU@IG_o?KZD=gaI7G8d0iH=Bd;`xLih!#k}+}^>+2JMg8@$@ z2p~Y<{Ja!=(Z1kwqsTCYJPX?TQUUT5-+4%M!{hPO*YFRozWj)ItqlaMBhV%IBK~;^ zc(Fqh2-ejjX0|_sb!sOz7FmGctXC1<_i}U=_DwM2h49v3XCvzkkGwfidOM=#cI`TB zZcYwj89pCsv_Zp{OFOY#V!pFT{Gvamzm9i4)M+y= zHh;G5-Lp#>Qx%%b7AuIkW=|&@MrtyUOX4}6o(cXnfqjaadWJ?mDKcSV>mJe`maQhMFb(065kM4 zBg}bC03qBMDy4?TMyZ-#bSGD5&6jU_FOWo>Uy$ad<0ixC( zcr~!V+O`fM8wcQC1VS(|Sp(ID!{h^C4N0$W)zLK{R8ZQsd?VaTqF{3~|5|2R939Pd zbx?1}LW=wC8(i&ut32LTeVwvbZ=Nr<~=3-vv6uLtH{U|H#GpggB^dnurR6J z2B)|`STvOX+oFHAm)xPq>JY;OT%c&Ak!(&*tVYfQ&^kEmmSFyGy)z@za;l*JB)ezm zKKENpeDXXu1ar&i?=Kbo@`?D}px@Acen;)Z+TC94DjerWo@$7vb{R^$Od55A z@(qQ0TAAGG@rB?@cn1|C823zcnh zG8du5%ba$KR2Zy?%3$313`!y1AZ*t7=x8`)wthK@yy~xC!;=jkQSu!})ERnpgJcLB zP|T(WyKT9V2h13P6F=r(3kxq_y()5&MSAK$N_uO3#FZ-m1d-K%I_VhHVJMdCGZ5m1 zBrQfhdDtuoUW8s9U#)U8B}Kuy<}#f9Ps_`>?><8|MMHxv%8(5E05p^kpN)xlp@;^k z2g@6rl;=^O;da2f8&>f3T>;RT=?OhEg9A4Q+DZxnep(=e_;N#P5&q%?g&nw3G$0fN zg1eg{D(gNQBR4wfZ|Yb~zr zBm3=75#8Ni#Ldgac<`?)w#AFeZ@rtfBCLq=_u^#P`IVVt@5V!a{63A7G?@8{+Wmd^ zAN%IH1Tp{Odcx(ov}#dYn3F6blJX_}{A(m=0!1~iq5NYDyTN&lWj?PQs~I&6PBe_b zS^X}4JkqS_@y-r9DB_W?+h3ln&&|R@Nzl^LDn$e$8A+{NR#=#pD1dLCb`VRY&87pH zc;7#=XLO;uSy}qo&(g^&w3}){>B8dH?cZKhp51M;QwiVb{oA+fDqzks^YhC=qibzd zy2Ntg5tG?w78*4MNl8iIs}O)7^c2ayfN$>Hx^)~%1G~OOnGqd;~fxyTWlQBjn9 z{MUvU%A+0R8tAD7(BGSU7M0w-17eFEJ0K;2gA7&?kR`WZFcvH1j1nGY5*;}-7bE2~ zwj~#Z_?iu(N^GsEc3o=i#MvLLCy7R*M@m|_pr>q4S z0$*ebt)eQQ-5QU;0er2ahr=G0y+|&=Qv`wb*N+*Fzvac*7L$iK0g&pPJ_MmmNf4!5RZ=|oUM32Z+ z7*LCy*cF|vBboSaNmvEM#?d`&4hdOzc~l@r^sV--P7 z<8z!AzNav=EotTH9zWt5lNpTAoW-X$?~w$ok#5U$aTMwq9?|^sf#{ zjx0XOIkQY^s<1&$h9X|cPvfEjVFpqhob!2PI39ciadBM$G zeAo$tXxW-gwVYl;ZEg%~v|2@P6ZVix8+>(}tB1#)h*}Kb^S}4cWzvvh7{VARg~-pB zImNy!OR_S_vDQYju7xkEg;t@|W{YJU``#Yr;lRbgg)u4C%jW#7k5VEuZ;pKT{+AY@ z@scSGF<>n7UAoQg$*O8poWUwqxQ>J$ESJj3*R`15y-H6EByk@l{Cd_OLwt zX;OMl5zF0(4Z#}ryY;v<#inqm1E@?t11%cX5;Pqdp`o?7`GDR+lnWRR`A;xtOiRbc zDjucT*NJHqtG{2>hUXet;;7gBb=!9G$}~hDLqCIUH>S)-_#u#+d*3e{`UIh)^BUb6 zntu;;sHmYfAu<}LYHzQLp&?7M*BfQ11xr0)kwA{>;`i}G-|II)!--`KdE5%7%~czJ z!OSbL6chx0L*&dI0$zsVh=M>$gO$ztJ$s&F@1^UzBMXg`WFVz{>fK{;NX5*#k6B*f zt_SS={^_|~==i#;b;6i_M^d!S;K-kjM}H2u42}P%mQ(~9_F^8+rcI58`vS(Z*3dm; zKA{I>+a^K>7$=3;ZXoLTj3OgHYG6TIJV?WS*DiXSmZchn*KDlIX78a| z6k5G(kal+?p`<)Gbi3STwBgPx-`DB_$5COMFWY#Rd`rK5dliv(`$f{E(>{++g)e6- z-am5rHvMA7bknp5Cxb*3N6HJO+DNpHZ4^A6!tA}#<9>e*_8zK{Hr!)viT<#Fo=ryj z`83mx0aTEm;PoQ2d!S}~9p5-cF77|alx2(JBtH)&|5|$|6Xcqs`uV`&DSG?~GgnDi z5NAWeP~=+dY6m_f1Qf zO63D{a@tK=FvPfFaKm1xGLg1dc}a6i3y(=d?u3Y0w**6fOeEH`WZji3cloH-Uij2q z;VQ$j;e^@qA7{TtokLl>#_Zi(;ej`Ln4nqC>h|r$EuPgjRI&B4W)wuH^h(#g{F72& zGHZ*{3mQ2)CU?}2sH8J9&bq^nkEAxJOASRgz$xL3vH&@VK-K^~beA3x0Z>iN=T>Qj z2*36))McxPXTB@k+d)|%5JI^YUS<&Zd*E||t_)`NEQfegg`Efikn#TIHbJJ=L$9jJ zv{o4TtYSh!#z@{z$wUHU@yS)h86?%CNC!M(b)bsaHR{J)#2Q|UoXyJ{+);6O%}-OX zt=+f_4;tEcc}!GU`otG}X_6^y&i%@@sGkpc?kJXD-dWctEcwg$+|Ix!n|e4+1=6@q zHq$t>aeJNVij!U+k*vf0eTh4ZJ4CPE(l4ckmVrhtgsiq1yB=6TeB0eTfAUa~cJjEW z>u56*>%EvWt zY5LdOEiewz-5wUQv^#mSO=r8n{jt~Y=qFUZcZw<((-OQJ4!Q3VidS@Qu4hac`u(%> zv|}l%ILNeZOs@uV!M-TWM?LGi@ zE#RZ$I{?n}og*BiEdp2-IAmnv;X0L;eh7sm!{*(QueVdWVcN%jEiL*KTXa++x!<6) zHGPA(OOR7{tF%DPAiyyF$?Tnft4zjUyqs@&~Hp9KXD?b zCeil)st4}fYeL<$9p~#+ZyVe5hC%eQ8faLv@(Ht2y6*#Qz9_OWE3uL4$Z| z0ev!d@MKu(Bf&Dagk~1V4`4inzzHZMFcv6P>LH;6YBzlzvUYU#a5RN{*tqWMOKhjI zJL&1`*w~<+GbLRpymPhEGL)7+@W98pIfw%U%1{^^?CjhOr#Gu^ob`C=`)$`&&a{1I%v?6{kzv6q>Cw^a zj}Fej;---5i|}|zyuXzzAd|>J0xfH<<4b5UkygeN`Vl*X>BdUOPs1=K_6yi{`0)ghwjRfde9;0dtHV|Jf0 zQ>YQR2ZkH0EFR`%Mw%d;!|TOoaozq^U`(fWW@EMEI}D^AY0TRwWrmv-L9Mv>aGpfa zNPPFB+ULPfBygo_6Mlci35f{_Kw5ZKhF(KfiJV8}6P$8CXmf0aHa@dpo>sZJud}c3 zS^}l_E!wier%yQ()-XkzoBiZ@dT~_wYXw)+jw!1?yEsfE&KcJ|1v{jOW z@QbSHzIgpl%||G032T$&NE4Ej4@6x(XfN-c7TY2GXeLswgW{^~X}uhBJRrRDF_Rhn zo&^?nc!RJrH=?XS#@q#v)AXnxNcIb7-ACWn-a?yDC0^3YtBWWqh_fQu0dXP6d2?W5s@!QeD9`nJ>UjM-Vk zXQjkXs^GZ5Q@%tI8Zol&W89uPBoq8!NyalU%Bg`U!=YB?hB(fjT(iHuf=p@?%O%dVIA~t!GhVA;c8(0*}$)v@OfZC~kiCQ&_KJCGKnBqlK?}^DYe(X+zJw%xvp_ zZ=_A14d}RZBB{_gL=qjoGbrrtlZM}pnLmCQWOk-?Q`Zm1*Tp^xWiQ1Qq`vm-&Q%># zXJ%l}Y!B7zLtkb5OKsl)@hXeYC!a4_X({jzf|5aX)_v?cH3$=S&tsT3=!jsk`MUrW zP%4f?<_E?SuK>YU1OXE!EfdrJvb7k*6V);b=!SX6)??*f9>`2lQww_ZNQRV=p2WQy zlUjp6l^`quL_(bEb{`}hE{C3X@1VrQ(Ct_7eqC>m0#KY!LTkHo=eXKlR&a|dl~&cQp5h6**X zkf0!H>yFAwr6Wf$NEgK#>vO*%#O7fgb$6QpWZt?p6Y|e{78U0E_uG%RXLn!R#*CXg z)aMIol>Z`#P--}K^k_Jb;)i$dKxv&pObB8~we<8t`StHShK9Ci{HB@e+?t+cw-jXF zN=Qp%dJ}0sfb05C1T;*R@N%FYFMRZf28|qz^_1uqlklE>9~KIJPD%O;eHAykVAa~a zPq<&CLw;sCDO6-({-EBIpO^9`6=Fit+s1RMFVugzFSjo0xUu+jk1N}lI};~Qdg@^1@DFbFS_Li55DiDO=Yq;2fN5b@p1r?MCdYgQS z@Cu;*8yp>##Z%e4w+z7J!RCLfG%)FUS{AS{+jII?X*6~L2<8k6N3Y1Tkh^cVI&B-} z?3q_5ED@_Jb5yZmXa+je@oSYzRcJFA=F+dKF8XQe*Mr9arGa!h=-n_8=W;|u=q^`n zq0Q;g?@lY&K_TSx_XsdB`sWA;VkU>pC!H<_ygUgC5q6bAcgsEe2F*O(b-74m+l z96>64DPA*WZ%bBN7w%S6OkKGC1{|VS2SXkv@`{M?)t&ygK%?bNPf4Rj`N7uiZlHP1 zqI)pg7bP0Xiu?fRMAkU`)rm-ku^^~9Elr7^1 z+*@Ye?Rv3sohr2I8C~oTK2+?uS938^CsF&l3>`E-_?WK*t<04Lez~#RaY+R#Z)CCQ z`4z8WO-dzrDkOWW?IrXRr2QX(uL0c(0A!UBU=;1k7c~@c`c*qz!Zw-5rcq?FW`^ zZ&Vt#Aaq_<_9wVOAlt+7tuyhxJq__RsJ~E-gLOdhg~Jnps1TcTY}yok_lS{^;a4BA z^%831#&5N12OEb!V2h#>Lv>GL=jXn(i`B_Lq>I_Ieu1lI6h$f`$T7XA8~ z%dF0tnwMd50kc0=p3^wksO;lYPKLh^KomH9ce~NO*3M45`3c3H3a0!8Z;JQ5KcJ;W zPQD^AuP|W2aPRfG5i)JGv-2UKdZg}vq$j&y*waA1Jp-6~b_Cszhr7F5q+pZ5uk#Pv z)90n00w>l45eI^8q3=owdy$T_RCbAl&*~Zc#d+XrZLXj~p`L?M2@^zc17gpRktlpk z_4PfNbwE_Y6o7Gsj~;Ch=aZIZb3U^BWP28=jCl9B1rwG#I>159V)aW&P6XC281+xN z{uapUe_Vd&{oD7xiyKr-jvXt*>?G)Gidm(Qy@C8F0qr=a?t&K>HbxXcGzax7`aY~> zpZvwDQ2J`k8p8lqdJH%(glhw9#kus$-A(i>$<0?@eni;1oBY|~I`Qj%r%Z-PWok_JQpt8M)F-&iRCAI`s6Tsei@8g&@a`kE> z@}uZtk)8-V2zJ-3AuSop%k2;HW7ocnuYV5Od1b{??wu|rU!anR)D7`t3Zcxf1fmvP zy%%HLITU^5FJQtS3Lg%)#lh;;gdgbP>|4O5CEo_ z>V0&JlaQ~Mw~*VolArt@c_Jvz+9WUW&nVJ9TUWk;i{n;yT3TyYZEaAOq7D|%p(|ep zUQA!3@eOOe;-va9dKHQxV^`N1oLJMFj3D)=UbU*ealLUkqczfMbRnEU*&GpWaB(bU;*ihqd6bCQ z%9B&>-hpRwBY3NEMJA4)`I9335aSL1h zy#5WB#@GukZ;+1_uHO2jl2njB;w!PN~Wf}ekQdaxQGKodXTog<278T>a+#Tdbi5;7_z0tuTF-ICl9p;IsM){!hU zi{J{zjk_+lzQBV=aeAFr=kToz*V)=8%?kOw``Jko<5yQVCa5Naf+; zTEgDL(TmUu^cXndFM_56_=lSU7zjQ*K)x+^6TzEo*wBUF2+ceM;_$E z0Lh~t1Qm&QiHRJoK@*3*?ICzEQx>-f@F|lpC@RPic@S5^HHB|M5O`$DJsE1q0J#8A z0Rjhfn=Eu*_^AvTyQG)x3QB){`rMo2y?1i~3pyL*N5Caq;^Rkwqb02@i0Pz=#;&;a zH|MS?xVK7DamRFUg#Cn|AKxCCMh78OgMS;~QQj?yZd4$HL)Z5?8y=0?vqa%YleURo zk@9zP7ycMs6&Fx6Ot@Nv^b}a(#j|JIySiLpqlia-2VBlnw1e0-s0g6G;0=PjW3nTc zN$?a>a?xS%Ev^-134`_bcQun@S_jS_Bp$-q>Lv#<0L}uf1yt*(>v3E|vW5}oz0W;m zlQ+6!&wQWi??>7$#8S8eFxd$)*85-IhjjbVgh-X`K2$r9&r>k0@7f!Fi*O?f22LCvJ{#q9=f z+ww%&!PfOE92+;Da(2f2$_1}-@Jf(?P*PF#T&!(x#{^(vkFKg}CL+(no}U?{O!F`a zG~2R$Ya3ULZdM0{`2BzA$y!`;R79H4UR!^+uDRLSLr0G6*tTtpn~;J6H=z`6t0j*b z0<%d~+%eUJP=bZpOs7Fta(93Z*8BEqBjK$Qd-r-Gi4D&Mp`~~^cr-X3AUY32@H46r zk^(SPp;X&q02ZXJff4ba=pr>!R}G8l)70aN1uDlEgsTEYjDyZjs-GW~dv>L>p)Wq0 zIT1$7gs^7x5YS-&NyVZBtC5?XT{tD0O)hb_CPfG%vAJxT9^nFphi%?MA*&-)OrS@f z-dq6(7Uq-S{)8kA8v#l}n%eW5Q*j^iU~sO5p@D%Uf{+M5e}4+A!9(8O`v@}jHj*Af z9>Ncs8{!Kb3F5nVKf%&RkeSVaff%WJO-Oc;eX3tJCC-dsIp7Yr6QQQ4=q3W+ zY~9#M$B;ypNX)_s{%6?V?+W>5PMZ!T)={U*(OC$nb)P1#Qj}lU*N`Gp9~X0T+3kXj zBI}k`UD7(;>WbL2I5T9WA~FeWAil^^rH2o@ojK#jjO+|H;tY%xv{sIe+drL!2!LdI znU%2w2?9epDfj^Hkh9b|hxKksP*h9==5M3`Dn}|qYK7U5O9PDq&TIT10}pshfmw99 zHjFzZv10!9EhI0?!NQ0_79lZ~4l%q5X;gNqz^)K8faj3c4A-*oIFpJy%uHSihc*VC zS>qw69ZoGXcluB~-6d#Tm%n%Djdj0xLD7+*bFs#{5VhZxc~Iq41U`E3=YoXhsAD(A z)}D>vaI4hbB5O4F^lv|-FY{o$H8GGjlKp1&Iv6@^Cbl4x1Ul3vFWpCF_uS$K%!{f(9&-&Q-xHw9pV6dyBV|`iBet;jKo<82i@&YI? zSJ8UjpP3)JEO^8=gsF{v$6be0IWom_#*&s!WqVMEjGX{Cvf$9ek3GTcpV}cLZxl?4 z_FQrwWYCQdSU{Q|LEuDYu0pT?d{z@IalLN8^mF(=X2_GaqR@q2DtH`+@2TXAk{>M)f%QQ5B^U+4C-$~T8h1je0~eQcdJ z#}b{3ooZ4{oUN|!iLyc-dcL5N{)$SU01ZXnOeIVzPftl9rIw{ZKAx+IgQx~t)06>4 z_JiBSO(m#%OH<_B{}02;F$^MSKyinf@pS?}+36wGr915a5+HafG`aWSK|}-c)^W{Z z-)P&frkH{MaJ9mvXv`a<9tlm z+M7zB9BQ8hu0FaC$rpRQ(lNLNI5tc$_tVk}E=(Rhj5#I?5CLL4VyY@DVR`Z-6!m2O zito?&7pW5%k~7?D@FcqTi*%WCKB{8&$EA(JBJVf^+XJ`qA3U%yH9cU2Iml%2AaVu} zB{qY~2!juN;D*xryUbwEf-&n=F9r_sT?mW%*AhE)JB*fOY(h<)fTBVmIU`tfRa0WrK$vSHfhsD-duK491Zc~c9h$_J5u~U5G@qS4#72W@QIv$+jab? zqRPLt09`OEp*zhgEBg)e2blte4-ID-B5|OPKd~U%8F?Aw=ZH$Y5a_7%G32%l%up|X z&~r-MG(aK^Wwm-*k=`f9inVRx1R{ zWt(r%pqulFPhV@OR)!uJzjpRR0Bti5E^Xd>!3iaC_c$n0cdSRWe>ZZA)2=70sNQBZ z*ml>*Hfr1*Stvihygd!!0SZ-EP#AoyI)XuOE2N4i3mUFZyXR!>`VEUJt zb%h)b;YQG}HEl?%f#6?6sDG0G4B_|t*1C${uZ)ePEd{`g>7>h1iVkUgq^2p^clblO zwhV=_wfsN@p^q}BiB2=@^q_&jPmwEHh(KucIWztvB`JhdIx!m`ie)TZdrpyqAYOY;t8(lPcQSW#WzOt zsh9Z9zLtg1${jliCj{pmR1&zs$T0g)ipV2Qm9o>q?TD%*Nlu-dHJo+Xkn>S{3N1ed zlxpiku-1W@U+~_{Hiauc5RH?Z{NFDW3F?8Zm!un zRljLHhlq+DT14ZO7lYNI6njskY1@ACL@f(k4Fx;m?|OQBwQe&dEih3D?=UqqtcqOr zd-$HebiChW7YxxhCOD;Gh~Cf-i3s6G&a3t#*}wPxjxl>rPWY%aaj7sB}nz7$%^>$Ioz`g@3(UniJSSb)7%fV=QCB z&*zr7urTkjO-qcSPovs-gO1T|NW1p0@&W)dY~H|w#Z3y*;6ir(+>9lTDO*UO;SIu3 zo3}>zyg}dA%yoVhY7Xidd+TQE)6n)|#yy0hI5P0nTCFg_0O(L;ZVEww z6UO?6hacsm*B+lfY|Th$rU%R9|IKG^p|zC}?OBHt#fCF`zPX`*Eriy|#pRWnw5)8V zQNbat45W{#UKRQM;|sDQb}-Y9Evmd-r4rfn-@V?KZN{IlGlfL*mZ(gimxmArlaY0_K3F6-=-efVwK=|o!FqF1n0D=)$RSes6Wv$G?Eo9v2W+V zRED-~sV4<7b{{+KAubx|y%6OTnIw2^nfh^2x{j7M=1@pvDHgvsSsTpbe?LRrmy@h8 z5GstS2t5%a6O-@HugO?@Qm#jiumu5nQ^6=iA}uSc1ZBa*%YC#~AnCDJ>%@&&3c%)1 zm^H%lgvB@TAZi2`_E8K7tsTNvv%1>F`9=v7A94_fdFKu+7Y-*+iu^j-g@Io zm)a2?M$R|YbPwcLR7Ao4Z)^4pa7{O#^oc3}-1P}Qr0e@vG&(Z4fq8(3v6DlPD41(HSHj-e~0%Nevudvp@*r^%lW7; zu-geg3@UyRxZ-i(s(^oH1Bz>u6}AsXhQE2d@0#2A%x0+ht}j>F#czE!CE1i!kRJmI zDY(5VnVA9gEc!jJqqKu#WA4z*9{$k0j?v$WQk5OhUfAW!X`8|%A`|@OecE(v>VB%w zw(T!+m&YLQQEc-zp*22;-bCQ5S6R>?-IUQ>$$>}w=YH+%zP_Y?c{)|c1-Xy~7e8`f zBKPdzQP!cKeR?Z1pbqE&& zJ_vjH5gpGB%{SfM!ZUi8Wzv(al!!*LAy@bzf!CwJfd1_}Esf{)15{HwW5>g~$()mrParB16~q0Ms2 zfR+up?&9K1{nXhOy>Eh%PTSCOsKDUBDax2;K`<8cI-i)k-Qt=rIkN=Bzsebk;n^LX zhjXkU&QL)z6<6fyqV>52W?Y6m^6v3tff)fc1_}iX6)0Y*9W5gK09<0VwcLMcd<|Z5 ze1H}7#1QA8oJaO1Im|;r^d$uXdpE+>*dT3Aa!UlEZ*1I;x(HEVQ3Be%PYt$hs*9^6 zPdX!`SFi2%6!`gOami-ezr&V8A8`GD8k=ck|HC6a&8BLF zUN`mFYI?Yj!5thkHTC|LgYy;7B_3EIWGs69m-bTdsg=3mh&r#o{yzybt~WL8-EO~U zI8{jjF4XspuU|hbD5xyox8X*i=MK2n5hSMLdXd#DZL43#mMfm4f@`FOe4 zo*g@MOijrE9h_D`bEDGNT5QkyFrTgpvpl_-+57PB0<|ru&PZZ=VI*F!-|hE078W?W z6abH{jY7~OlzmJDq`)4lrDs;j>{#!WABmHWOpX9&2Rk0r)_=H-n+C5j24wR6(3 zm-Sj*=lFV;pCM!wQ~xG=igO=4n8Kg{Qc;Q=YT#%XfEHD>j8+-Ot}K^)RpraRGW@ST z_&G&gWwFrAacgx*N=(E-wuZR5+w~);f9%&$6v5-;cytTUL(^LQk6fF`F|Kk$uk;Sn z8=Cxg%_cCZ&&|y($z>d=GRC`-1>DXcRgz0KIhYxk&zEyL#}#ZkCRaB`#%(#yiL>qj zhI%9?Gx813E(CeI*>P-RG28mi=K#fRw%r&WUVXXI$!g9a_mI_5aw7Yc|AOkxlF>G70NjQ0V?|X%yw_FEB>#6_4cMo z{ehuWfv`f^hpc5W5C8T1W%v1={L63=eke>fu(MxP+j7|D^l4Jz9>0+3A4;3&9#Ng0S%w^~HXNvAONaDV z0QoD+zo%ehoI}fwqZ>hrNF#?tYX!ldAbJsq9_*#p#Y3Dy*Mus89+y*<3I=6;PaDRE zBcUJ9xqCP+5Q^6$jEtnuC}qG-!FY@vYv<(Dhl#5MQT-fGp&Wrjm?Em7@d_^4%X&Ke`@3$y*69MS(uf&-0Y(CJ zz%aTlYD&BoCcq`C-GPZ>hlTGeC-jP%sfHVB1&b&*i;DE==)+WTeTnlWq)K zg9eVSw9WLU=#_8|&f(UV{5`y)ueH0J;|}rwkP11=06|>D09FfrI+hT( ztPA{iXg1Q)Dp9Bxq>0bb*jnm-+7-`{F`2Hfa`8ijFF6Bqs{FSLddnbf)Xq344UCKg zV;(@s0+ zHw+pQg^#8?-Vja}tQiP8nME)PEviYEHs)|^%8eUV!cgwp*yx3{#Yx@jZt77WDXhP| zjS2@u>oGsJPd!&&%$^Q4xrKl8Kp`Kq6z#G`2?`kp$r5xlP(7k2h}vG7>P_y-iHy6i2H?KA51LN zP-yg}9lIb*!A#h*s2aNOtSeg1>-)>Fefb1llSkg2;FHG_f_DyCuM0ws|07K!*;j_C zG!Vj*4IRd%%N^aSo~wtYiI_vbaEwM+O<*JqV0g^fQ)|hEy#<1w9!Kr50pP}PsILHS zf;B{Py*6MPWTiQdtqu@Xb16IAk_5wsiJi8IGUhcO>}&=(|a44otc6^ zuH)fhA}X(1zXG@n$qHW(N+T))C#=3vCIh#Yqr}Ysm&-4dj47`AExsp=)e0UO`?bYYidRz4G=$#nTM5LA%M`-axd3_c}*dcrb zlN`(ZWPkYP7wxYwP#A|+-ZMx}2|qbHKKNYK;>W&+u3WDGHiHrMtXuxghVgDfgnboq zXt?6zLDb6QCMopTl&Vn%v?mL2L zzkeSdl=yZFznoHvtXNM{3c9?*s-;Tc;he4N3RE6M6dvaY4@RQ_rCh@-X=!QVpJlD( zFh$2zppYR6&kvamnf>oZ8HH6Gd$}!w*Y9PI_%&k5OUB&N!sG2mh3+6-Z|t>Vwa=B* z%;S4yax91ZJbUr^>!+ROb~hKRdbbvEiak^kdb66nKB~+kW^kMC6XRW$tWRhb3udn7 zy5^(rzQqex>auUED!))zD#w=Xpb+|$!XZZc#kQjLEM0G>e z1XbRFg9kYY$L5H77Y#9PxonmrUYkc9EV@;qr9JfQ&Ixgv9#7t-C=5GW)n%u#jc}?j zAw0APs{S!tC7LwwJXc&o0yFZ09nu65(nX_1g@4n7QEZt5)=XJX9F-xohV0lYpN4ucy6~{bUF4XKZni*`oE)tDZF zCI+w!f*U)&J?QCy+TY;1{r>%=p@N6dDaFU5`bFQ2P1D6g$%^dhKZ z0}?3HE~74o7#$ZqB9!mr-hn|SXE9_O0~iO?s3jIp-Vw1ebvZ0JShcl)(Hn^)zsoep zBymlihlXk_^hlv7?cka?GdG8lM%YEhVxo5|o1evwuyY+7M}OIKxs}>Fn^Csml3*rk z)RdRQim<@p{Bxv8u;e&7-<68-=L@z>&P*BA}@jR+sne=J(yCHvSxKyhNLsu(CG7Q!In zdujthP?S-;85+Ju2rWA9Pk-=*qV;->p;qi%g20R)usD>751u~VSt=0unPG2S+~D&z zx>giHFQ1TcM12XD5L_Rhji?{6>|`(e<53J7HP@z}G?nqspCrL!q> zH9RKnLal4j2SJ=l2}hUG_}DP!USkTV?ykN^_1&2)-N)X$tS=O!6mNECk6W8yzy9RO zMU;|eW@Z@G?8EKf)AIq(&k8dR$W={Ap&rp)wQqxBYGs&hOoud13W(*N90SYr*;z6P zBl?<5XS(^PyZ1Fgnt>Z7wWMl8v{lG;DFIv%_GP+=2ZAJO02Av%Le7UuD~IHwZ|qh( z@^E<8sw{oo@o!IeFDxu9A@CjHfdES(2o;qQ%*=vwuk$+VeZ|I}%R7;xRx~c6B7z50 z|33RMGn^auj4#?!JV)L(hBMs%ziM2$X27-*nJW9|@t0Pt4w)Q8Otn5J$ASV%@DN05ULLe++e9(?t{e2u+T{(3x;L21t**{|bqPb4&k|m> z8RoqJCI$!qRS5_jNS5K-e5cxzuRWS{2n`<=HPdDeGmCh{<KP$VCU3^6WnFfp*7? zs*?(|ZYyY4Rj-lAR?cJzIOapLQc88D39%HWyRJxGn;?u?0?GA$E=XHP5j~ub!VZ&L zA3hwK8(#k4^lGP*Zexm3m0`vQcaWXVp!J8e3vxCEg;@2Q*RL}f1bBPhzl{tgl$Ca% zBt1QqlJ6OBTjy|hPwa6@P!JCnS3UGY&}SPi{tEhDxZZ|XOd z(jq045Ad{q6F%Jp<_69U#}@bf`6>poCF<^4!GNWcV`~4gXt^vdk zI07w6-)-L=2#FoO9Sx7R7gymCijs54dtF+>GH!EkZciV2|e?3bLk21Vg%jwx?KeG?#F@vht3Z@Hq&w> zD>C#Hjn9Y0-@yOcEPv}U!WgL3!fs9v=HdNbQuM}N9J*}r^~PSJ10FFAq3wZ3k9(gkaS9>`AeoH*Yzsul;|W1<1*4L-O@Q@uAYGrC zaerxhPBV-pElXsM{PUur*&X#l7l5eNIoe99s_0A-8!m;^1OUT9A3AgEIs8?=&Cji+$Kl3(D}jXJc12;#G{;23V8bGyL-gRH z`6buXeFyu_+$&2>-yUP_p(pf}->!@yJcttnM|0x+w|IjX&V^w6tmIk@`SxNZL9qz- z2ug!}z*iO`Hn`NTGFT=nizHjW0|$h~#5y&$L+=5HJY*&=yiL*sqQ_vF1XO`>=Ddv| zDQ@S{uh!jFf(ZjuUhqr&)BXma>wyD!VUha>z5t{heEIU(Ea{fHA3e=`nY#tD}&LJAW928sFAv6^SQnlhPoUWI7n?vD>XHR>f}~ubaUp9#ji>Z zNv+Z0g)7L?lMJikN1r|&cGYw#9cnpwsY5>OIp^fPmFjU?Rh-HhuO93)KFDKJ40*-z znGle0xCjisrSdA6%ke0f@N3+n#L?-!j|(d+g`I-VA#*Ct!lC)%AAo<2{tp^KGf~bR zD6EWlDAKiG%{wGyed~0l+_gxqvCH^Ya6e%6%+1d73JAP`G^AIvg}JZRT|rte%w6Cg z0jE&3<#_Jdzi|EIXo2vu(-P`2`$oA8x2$*uR zL>pX7>o(U2$;=7-I%-)|p|+i)E7VFttxniVUp5lA8VuhELQ3iawitTzFwhiGQV@i= zI5sV6LmoapU^IN3oRq-81Ext!UDV!tc#Uq0&x{cEkZdFZ(n-o!yI1KGtY`_2D^h62G1uC}A9iwgb%BL~PZ- zdY5AA=!=5UOI`<8=%%cRsfydbZ^IRneHs*l&yAKNGMh_&nEMMg`HDyHo#md<-pa~l z!CozGz1FjSgnWJ_+aBGG5(Up?ON5&uvfv;k z)TZ@W687}*Jpv`ZJCeGnpRbasDckd`$$E14xmRT+%H5hgZ*;ObCkG;lbmxTGaq zb;<0HvpuE*W5 zq3|#;mNB$Gt&Bagej&qDWq9_@*&*%#92+o{#~BR31YgC}(x04ob$eK~A>jKf4j^PP znX61!M$OcO2K`Z@I|A+tmGhf(DPj0yWA1@(tX5Z_>AQoeB zei|`5|5o5uC*pn4eoLMOosC%@7*dqzygG#h3TTJwA@W1Zwe`(MurPoY^R+!sr=Z?TDtwftbiKTty-Xdk)1BS zFiKX=KsT^@)vB!;*#Z*U7Mvx~Ral(L5R?0|$cWmv!|~3c zEZ`)VrDy{8fs>tu0J<-V#7PM64$=!Cp8<^7G&krQESqlZj%ElIY1umACuA3wJm%-r zIpZ<nFmHo?f1syF zO-^pfb88j3`G(j>FI0puTo1Xnl#Z9RgTs@S#oyB?xQ*tAf}pw@s0+AK9$;qHj)GyO zlDDVl1N2|8-TJ(02Np-Xzby2Z3*Sf1D#*(-*$ODEfU)fzoN3{EwM)m%M?RMB>iC$l z=5{ofq4apFOK?69i++vMj4H z46uq*Lx1N1hqI6`&0cWdI=he-~se)hTAuNdjd@TPSuEI zjNf&M+qz|Jw>I6rn&$4xDiT-F=XA95^0Mn1{<&_(AJcCc+uA2oTx-*J;FPgim{ieZ z;XJk2*`XN{gR5o(0Mp?+d(teJ3;fL+|NZ+5#ylCwd*GfX^Q-F8b0`7mUX5=y6qDI? zQ)vePAias0N%o4ov+R0XA+nUw&Xc-?&&~D!5J7&7JB1^@eMcUuHx5 z?-OUi4`A8Q`>?NneE$y04#O#D)S>fPxLNyp0~k9H3iS)|PCo{HZ-1Meb!iIQ$)k|3 zHPM*+-Xqv`n?h%!jdrfK_fr|)sP;qDB{#R;g&B@a$2Irv^p-hl|ts}@*#C~yk2vrMZIc<2)a4r<^yaa_u0bi1DX{SB?XlWObJr$@2#QG@_o z{xh5)3%%zL{NwB35Xu#JZlWU7(9}fv2&Y>JIT`>w?byC)46XJ(9!+qPpgF_|sBs7V zp$cJA5l!>1AU8p0AU4!BeDV$^oY0YDBn}%NwMcn7bHW7|H;}7e2w@Bf2ymOnyLpbw z3Ys?5crcBvtgcq17dfaw=+2ZBqhkUP4oxDo{M{avz_nqn+yGlaKnox;sL3!H#Ct>c zxBl93VMagmtt?Epz`drtqGA9^uN4&m7<(+abb|SPV>7>J`ekAaXbHi@a$$+z)D#JV z1MgUQd;XbGmoB-SQFx}^a>UU+JkeMPMXHZMO3^&LR<(wq)WB`>^VuH%WC=Euz&*MA~6t^gAkE+V_fNGvXYz=0ljs^z4mBEbIAkyXh z$5FVTOj`OI!YMCu8S_drlSkoL4}=9nBy~=GrZ^;t{h-adu5_6RO7ctbT$G=^iYhW) zDNACDNCKqd@Q2FOpjYM&TZ#AudxZOK@!O`LqBp>16&A2FCjAyzE7XwC05g--mo39& zPz}ya5OaSJ+Q*2UPM^7o2g0%<+N|t6Z`|g5&KgRVcD!yO}2f9Um z0RcE^3g3+?Fi2KNO?jqmJ8<0h@L@#}kcjrsOMo=Ncp}hWoEs84UX%pet&#&Hvl(Iq z7YyrE_6l}=H8)k(c!wRAo{_QBMt79h%jI#ODG#T`w&f6p&XesBJHCW8^HbO0{NVSm$a!&g02R= z`R{6V2^YPWyV-^k!!Izr zdvPx%LoD6fqji|Ysadt#Lu<|U&=uzUsaJ_V9kwIEyVSDoO@iGJcLSq`xtlHkm-x}u zrKPRyjE2;&2m++HUOi}q!InVn(Kd;-!#{;eVJYEK9~kd;9=mb3Ybg5^+~yu5c91cL z^Nt`6ms8{7$`jyfj2nx)R!UOR+S(e%mi=0NnD1{tuqJ%htEW%b22a?EC)F`wbVJ;m z8mpm{2DnLCz%qu;e100jUq}}L%?eJnMEuaMoeNMJYL0yQ>{-q2+X5?oeyaKho#br? zHQ+05H^6Oyw7SLbQN`Y=pJJ-rJ*3#4+<(M$B!H#qLw^4u(LgpyXp5(j%q*3bllMhFb0SXU=*u#JU@I2X%JoB zdT{|Mx_NRN;>U#)x2ox+X!Eb!Tj062ElYW5V${APX7}=)`Tg?SY?EAnK6V;)gj&G6 zWKOf?m;Km#_2{L6_Eoeog+k`yDCD_@P0B(5u@$GjpPq)7zDjN9%I&*^Ee&%t*6n&f zZX4r=&FJ6wg<}Z$&Rj3gEVc4cpV&*yYveTGDG?CG31zALOH6DgQ-m)?B8&ZVZGznI zqb_q}dY_f|!$Qo>tWxL6{c0B{LKClVc2}MCk z$-K~3QBjeWv{O6h%>3O9bnS}cdi+kMhe^VxbXQ#Dc`#v4u1Zx9#~`qAebgRx(W>dU z5KTGb^!gPL?;fR|)5mpN)ARU9pV?+*THFwh*@+$EEE<)VR+0-TNlxAdAUYzV5wm&` zh)HE&&jO=^Ng8+o4uXbZ88|~?NCDp4%TG@-hf>RL*90J4*f288*;z6ogY>BxV}JxP z^YOYcgvcQ2LIdLhPC(o4aZ4!g-VEoX_k)Vdb{lT9F*&&70rC>hsBf!#7%&-X80$MwCXDFxP#42PyHo;>a?#ndpus`W3;oo)$;n8Jd6*}Oro9}=+|4ET!7dZbCx$Va%s<$R&bgumzL(; z=aHG0$Lqf-A_i=zSh#Q#ng_qkdpZ zEV(H`E&K$%%><6_Id4INgjvvr2B`sYLq4hjs+9i=;m^_0R%}U@WQJ+v=dZxXsnvbT z6=n)1L0FFWXF{9~AP-+^`@fLBxsOj-&pGs8EkWb_wVpuTaTr0;bqCr9xIY$(Wm+lG zf@~OqEYFG4?1bQE@0axBE>d9w(UbzaDC;YC706GXJtK=eIUOp>DinAqhf7PYBw8P^ zA3z|0Z+%@|B;Aj2Y{KAhVxr@hRe%9SS36@Ju*r_T1uO?uFNRhcKIH>iM(UMZeA{*Q zuC3I2dRrv<&fRA8efb#)yf>0h@gmwyPI39tH~2}&XrklqrMWQhgy*&g)x0d6>-oqFS}Q- zUfoISActrB&~z#z%A~^U&Ohf++pd2ioMht-k0OG={L9cq{P=uGpD1W*k|9Xhz04=~ z>p$`Ln2p{t+8&9}V|}#^58vqWXbk{$a4NS#@W&A}AuKFh_s>ssI_1pF*XR!wi*xhy zRjZxG0S#h|9w$31!L(C{6&b!g6FIys%s|8&F&K32cyg)YuTAaggxC=6NL^KJ?Q`%% zXkRevYs=Eu_8r6Fg>0}|=iy1hJRJ5c26bc%j@xQvL&J(z_f>P`g&#+kJA;4F?R@r3 zG@lK2d-D1!6bn+$a-57&QWsxRJ4V>T;CJ<+g-lt>;v6R(y*ZxTNaZvX!e&XnM}7sHO`NkGb$!3JhX;#wm(ce{_+eo%x(YX`5y1G!BVi;$S z>K5^Fi?(i?;ZU}2dw+jT{SkNvHJ?7T6TD6nPLYi6{;}*BSJraMX`l`2V5npFqvgS8)>%bz;(wXL#?I>BbrUsrq+- zRG^)xtE&TW3jhwf_^F2|i_xlAo|V8uX7WCeRUiNjqsj&b(uCHLLEZ08`rkWxfV|+^ zM(4@2gh025;t-S=(-_nfQ7z%f0sZkK^2>cOC@m=ZL14=p`R<}T#9q6_4-5zu!&2h# zP@SD}1`?SJe$PH;8lPEPM*yIV*x3U?92h_N$}m5syL%P<)gWF37z8_ih#x;IYVjhK zZ+RUVH?pF#GS%(;|3_gYxt&M72lo753L!NwL%)43UI>*Nx26v3}U(16$0(6G_Sp4mLg6@X#6zdjv6=CakD?lnInx}$6>>5hsj zyltO*)5SyHG=)LOCb3c!cG(QKgChW!fcJrYK>dLUjZlc4vG4eDtgWoj zjt2(>KyK#N0JF}v@l3>Scz6`qdZ8*q&kV^I2*%f8A8+D|1}y;6du)uIK%i6k*|TRI z)Gng8Lgzd(GLm*zj#<+8uO$1+JK5(1%m!Fw>=@jwM}|wUz-+ig`r>=vU|z;FAKDJmr9Rf zwrI6{fx(Kp1=;Hb`PG(_=ob2y@mY~Y2>xT?j=`N}G?QAnE&j@4jj8Th@4#r$BeYA< zBf{xz{)GGyI-D~wT{ELwv{X(gj%sSVA-*%c=ZyQ406|YPAE$rMi@VOnXN2`cCf<7n z0kxQyUHrb(U~7Tw^($9c4fQm$d+TR33csg@(zVOdUah^pm3$|_h@#w=ug#-XHT{ DYt(Ry literal 0 HcmV?d00001 diff --git a/pics/clune-ES2.png b/pics/clune-ES2.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffefc602b2ea858888b58cc8832aa715a4736b3 GIT binary patch literal 52724 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

  1. ^9El&Y@{suWE2~_+8u6D};rGt2$R#emV6{ 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 literal 0 HcmV?d00001 diff --git a/pics/clune-ES3.png b/pics/clune-ES3.png new file mode 100644 index 0000000000000000000000000000000000000000..f2313b2b53cd7e260edb535a4990f11488e5b333 GIT binary patch literal 35690 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�$;IES; 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 literal 0 HcmV?d00001 diff --git a/pics/forceClosure-frictionCone.png b/pics/forceClosure-frictionCone.png new file mode 100644 index 0000000000000000000000000000000000000000..faacde3ba2eb8b711b56c578bec2b494be4c73e5 GIT binary patch literal 29681 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�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 literal 0 HcmV?d00001 diff --git a/pics/gaussianProcess1.png b/pics/gaussianProcess1.png new file mode 100644 index 0000000000000000000000000000000000000000..bfed32b5e4ca34076a53dab8c1bce461014c4275 GIT binary patch literal 63614 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 z%0D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

    112n%DT})3+ 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 z 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 VuGvmT86e=0l~VdpAz>8wzW@YEMv?#k literal 0 HcmV?d00001 diff --git a/pics/openai-ES1.png b/pics/openai-ES1.png new file mode 100644 index 0000000000000000000000000000000000000000..2a882e812df9de1b19a976dc8cd0c6f7142abbf0 GIT binary patch literal 108836 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

      +j(}N|h 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�_SlFB1RSv6`m>sM{H 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

      nL6}C()*%2r9j`t+A`>-|;Dlxy&a* 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%0DC+a(|+WhAHdFjU>>f`;_*=fNlJ0tJsgnEk7Rl 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

      WS?A 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 z zGkd2Iq35lWv z9<-fGL|RfYuCYDFlcu)+vI5UD;#+ey&fG0WtFtr&bmxSM6kOh0?^_M?S7B> znU4_DH!e2P;LD87qZ;^j-qY>rbxGmoa}EHDW=Hi{^GN+!DJ7&i$2c$JdLH-j%iqX%0d8a$@`G3 zJDcB0tUx6hANcGdp3&P}AGbcq+v)^wcU#v}DHb|p5dj;yPWDu+kk znzOe`Bn4)q%Zc9b8z>^rFB9ws-y$vhBwGCPAvdy?xl_=qCQb*E+N&l>h|V@cUbf!< zHC?-GUC;P0M{A~QoLHpdT*IOH@DDyouR?cD8&Mkk*f=H>34TJEg2*Tor39OLkDx1Ft=lB~?)iZ9}VMsDGB`H&N> zHI)K{-d*!m(+elr1I&p<%u3*cmLip%IhAYl#4*4?$q3Y?gB$Ii&AmxOG(Uw1OS!QQ zojkf#MQ~QK7%PGk7sDdPwS|cx^+8E)n~5;Q0&d>`&@_Xr`)$XxeZpJS0X^w7B)$So zcwoPFBH=QCW!aO9kXlGk*~W@6gmP6bIlAE+>4ka$n+8kTr8JCEVSbTL6~?i%$*hAz zFo}8wy^Z^Wh4@c}ghMW>Z!1^{j73L$7}P1-tHL(S(LYC(3W%kyiKNw}pAR(TQ5{g#iy9flt2+%SGlB%fIM$_G)vd z`>I}B&w(S57{A&aeQ);W2@8?djq&DYAy5P!LV(I#$^Jt$zdV72`iX?ikJiNbS3MTW z#AZro(*F$jld9dn|LyHWQ~qF0rjME)nt5a*QyFJ0OyF#mL0qoX+MS|LjK%@Y+;1i$ znOUMDeRGHEf6opKPjOvIhK?t@RDPs0S;^QUlrNCUu|`5Nih)!R(KT7cj);o0fY`%v z?rz^_{0{#UZIgieCPNd^-*d{mJ}xF$pUX=atmI`f_KxvBvqqkvo87rcVMr_d4%ch* zvv@|w_*;)H4yv4-P|MF9n1o~nADTizwHuWPiX>P)Os6ue8sK)e;i{`+;1aMD6#b~F zaX8VC6UF9P|MufhZvddQ2<#8J4@+IhJ7~85;_bz7?0&{*SNn`syGD5=BY{OzQcRz; zam|0f=0+x~Lb_EK^03%(F^Iey_lUmB)dcit+v{}yxGk%Ib8l{K2iTNsqsaPf4nSZ} z7{7i0NM!x$C>nRVBo(ecnN(0=P~A}JFl+BJ-*aLVvqM+$MIO#?`%l6*Nx}50iGHnu zlb3-_gITM;D-tIwvx(LM#6bah3mN2F$%z|UDb^{SK24ZOew4pwx!`POX9)6vNr&Q{-=2Fi(GaFs#Mp+amw%1ZJ?GJ5ekV4|tg$&9Qsn4|YZ-S$%s^ zikt}y1puGRbv#)0{#yNb5+PML=K}lsjx#fNAoiI8E85j{QT%SLISJ^|(F*y;tA|YX zbkE;nuS+2=*~(MUQtDQg5E-;px32)oZU!mOr|v^!n{HKM)dMjCzyg3CsR#ZANh$nl z&(8KJMIjSOuoN;OuP-JEN>J7gBgZ&Z;qY>g<`NT#Jq80H>L>H_*AG_nL_)I_vi$E2 zke}94&=0wkOa|{YPX$IsFk*p_s5Y0Op!li8>un;otA7yWSI5OIJlmN?56(#DFcL zQs7X#(z{cC*bm#RmGyY{K+zEQesOXjw*1vZ0sk9ebT4$ELhQw^p!Gh+fuD*LkC*ni zx9=M%@_?_|J0M_#P=*6!tZ^zglgQ1pVNSLCO8b>!prsM@PEuam!} zy{ATvf$;mbKDGY$)070hlb4#0(z)=r^M99p)$^~E- zXYhy7Q!11!_M0z%g{+&K(y^%MgHlkl-x7nthTzA8DA7?M{+Dk(B)qWeQPU*k+-ov1 z@3lu^3tT=sJM+7F-RWebt1!GBZDwIEl9Fi{6u8FU8Hai7Ogod^F-~U8!>wTm{&M8< zJ3_`!3j^-2kMj?B>UH9b)m21aOTSCYF1fFX?Yx${RR|@~-x;GzCqSpezh}XzU2t3aT@>Kdb(CEmhvkDLWCK$a%Q} zbx@nnQ0Gaf6I)G;P9XTaiYGb5xR`-3r^N03?D=118R1^+<`n#R$M$brGjMxU;|cSj zrUFU6Ew}4~k%_2|2TMKWwaNfp6V^q3#Obi_uBXXvXUH3&&*th$lBq$f>g^fnY6v~l zoK03}eYA^F-=$MRB5wmv`zZ)QTqE@4N}LIFFg;%KPKVS0-t+PR2iyo1232ZRnSQHa z4+S@8(xGOCaVuBm+({um_3>Rfbd{3Fpa*Pog>2!jFBrY-{C@s9*~?fXv|=L0DGuJ; z`dE7QqB$kXt3E?POU((^hP$x>lPLLH01Bgmp1%+L2K>p~*Zu)qwfO8ww#Kps)J3x! z>#C*!K$H6FSuS|_{4xxRr%x$AerobNy^s~hLNye;fOkZm&33L3d zleF7y)R}aI5fS92IJAgmtkNqx9%%d0;Iia|E?%qxv&(_D!gHG;06@1#al?@qW zTYrNanj*8cvfr&zBq<@sLXom7fqBfr(LY|JOsY1E3Re-69R|3cw4^C<=KdqGjmfuQ2C6O(?5S?g46)bi z%oLhXsa09VtqQH?EXB-d8I+gu*xCU9;!Y8D?{mkk8XsEzAm@xVAwve7>X(;2ag&D; zKP~N&PL}>~vLgztE^z#P)8{lPN)qLSgewc9$~iB;AqY(@LWvxWAvu?@v@@e5^<=d4 z|7!tgO#AAcj8-ZG;7m>L+0-#I$76unSN2X+Vxo#eNNnuVW5{pkl@B;)K0#!sxOhcm ziUWgk1@Yh$g`Rx=>vR!%C3yuPI2qi1e+@sKF!Go&Lr)}RsNFr}^RoP>I7sL~5@Og_ zYDKvQw~@=ZMDfq9VcHOdtcgjDMh7WqKxt*^9E>K(#m*hBQ8w55jvtmO)UrB~h${4O zrD(#S5?gXt@$q<{cd@`8GCASXaNZnrveuOeWS~Xb_%3V8 z>+>S(HyRDvo`PX>qnpEctcy=L)0+`mtAAAn-zKmCO- zjcfm}jSDpuI3f#b0v?{|x)Xtw9_I&;IG=KeDRZYlBi6&|?uudWU)etQ;FA+0V6%6; zmlo42Z_xrpNIw>cnj&Tf+}P!SMC&ksv@-<%->CLa1zajD>ZT^-5N4?wjT#Rh%6>tS z4J&ah0wM3(UU&_ZbUh!ghBG%ES``!x7H#3+)or%}@a+uv*lT>khJm&(tKRH)&d)q1 ze`A+&m3i+G8z#r)tRk)2%WA&JgTq*Wz|*vLu9f4qP-`NdImD`Afr_Px^8`x;7$O)O zz8)ioZ5sDT6So%;0J5g~_q*4nL_lwi!z2xypJ~)cgrS52CrH-My=GM+SJ}CtJay-_l zy$8Dsz(RGlrC%f(E4|;qamt#|d7q018h4Jr+`yHaJm|i>5;5cnDcf0P_4lHe(&S8Q zPFN*%Mi3)x8sHsL)k%stvDp*W?j(x^5O&stkM{FlpLZn?w!6#Lo^Wye6&fiN9GQ!o z!u}g9l)g-GRiT0fc7iYQccPiHuME?!q+kHiVS^B;sK>9$Zd(MxH^6`L;hsmJ>3JYxQlhjIQr z`!ey;6^vDM!^{B?qgg9b|04WF>lm%161ml;_Jq?F4XXwkBYa9s z7->8aWF>tm95~VIkyE)_axIY5-Rkn>S$@s%E!N!s$e%2wlIqXSw|vN*GByz4nuvb3&X;PF52hef_qGk4%tv-XJ}D93>n(97P3% zlZS5rC>MbB(Pl8{M$Gw$GT@G>t%LX|`G6``{25`EJ?4Sx!L#t*r?60tTtc=X+?70@ zS|K6frjORY^M`?U`HUt`EIy2hwt7s2#Y52B#?nvSHiL3KR#1T|l_F=lL4-x6+(d10 zwIJ}=FVon|Xz+c&shBia;xDoJM=fnF*T-@hui0{kA1&1*6-60^gPo%X_;i3pdlQ(W zP!qPpKRz*~UYmiKBQ9YR?Mtm9OiXuzK8s^VNf?cF18}|b`n8CKU+Y^(Iu4>^K0yj5szaN-Yu;= z-9K7jjf!ZM8d{-`dNnt|VmVpwSScNA%~T9S40F9Clc36IH9>825M(mwDGE5}C0?QB z6CImtQ~y~N@t>MSJxTnRB93MGs<599{5;6&H**{KFD=s25?WS_*NTb*VVhpDY)c2y zf|_1k(-=Bs3O{JX?XL%nyFT!*T4t51^k)ngcFX zdELnr`Ir1!jg8UxudZ@^^6CTHxd=;-*Vzj?&J5OOHZyL*Hn_EIpEV9KIuXz}iz7^t{~Z&D6M_QF2P z=d23A-KjB&1B&&tn;L|AW`#56b*4bRRmM71@DN*coOWcs%!Q=`k!kCiC%7H#!Q zD?I02$++3}_1kc9!7%d4mHT6Q^EtX*AQ}aa>mTK3%Y~1b5S^HkXj=bl=nK5_3}0j* zXKTPMkH+$38?KGt8*ea`jx^W_C)$cxp3=Ro0|YRbpCvMOY0g<(-5Ri9*<6j#8ko25 ztFy{ye9y|JwGJB~!&fs!+=Q2yh(soNZ%}Y4i!fus?!6AN<5O0cu%Qbp0f^-#CT-dn zuJCkjKhvwJ)>t^T$E39Z!H^lRgJz?-`{bY(1>RMwCHNymhQ+15 z6#xQ&o56HclQEMW6??3CdVWls2#>do5WkvVJS2I&d7a4wGT_m>?R7R&xQN_MF`WYP zdp1hg!MCTT!h+hESG0{2>7fI~%RQim0wO(bX{j_Gom1XlOb@6jMSc#>+_2)G zvA!SI{;DVa8P3H(!GP7f&^lx*%=3+uUCk4fWwR92P4Bd=R{&SCJzGB`@YBBLj|m`E z_HK&AyHHnv{5J}~UtUIRr7*1-Eyppx=m5}LEpLp&!#RGrSDsB$|32g+!UGSlQ#3Zh z7pn&Aj~}^y0jV2)_Bo$FQ(^MONTHOMBc+Yv)v$=uRv;; zNvNa%R(U{kfl!$=_zssB9;`hJcYSB3il*#!YQbLmh3hK*lydFOm1dU@XCPiX)Jd5YEeIx5gLVp_uq;7F)8^^|BN|Dewjd3_KB zcY2$te@?c7mA9ZhcJ*H>QFE7*p=rLaO=|7>{0k2wnFm+@dNrF`SzHIlKAo|Z6;xh= z1YLW~tB`?ApeUcw0XbxhRjoT7t$BT=kq0{~!)02q8gKWR<+!RfdHcqs20V>KV|Nt%8+v3Ib&i+kQ6Nq{qvPTkyjudZmFjDfpQJx~nO{@GDU8 zUC&a9?OnbmZGd{e*B&0!qD9(%#zY??5;qz~!Q>9d-+RR)9zDuZSji)5atqZ{`(7j8 zHy2@DcYTqTU>!hIA|=&d$JR+^D)<6gG{cDpOK;H&Z(-e>1o;W6XFVVL$CYh@OlzSB;mmfK+m z#+VH`r81HRIQSv`H`+|<(B^O7YE4!k@wU#D!AmTH1HpAT#2Jr zwIcgGBg-f9TWfa&Hsx;fQ3_;o@jMYf@^Bl=WJr4&)8g?UL~(=L`{ENI?4EFoZsK3H z`ug3Brm`zWRK1)t`XW4}?$>1f0@EJv*C{#z&=+2Wy*ZLH?0cK+Nn2ELQk1ae@743O z`q= zfF0}4Q)XnuYSjRTgfg`a4#CPBWR$kuQ zJ>ia+11-e&Wml1Ph;0r?vR7K$$pf?EjG7eH$dN9VGtpqzWWG`>+v(ZM-=bKn-8#+~ zt@K74t;X{sb1`~ty-RCQmQa@*{2xtM8P(R>tV@fQ;_d~4TXBaLcZz!{THIZWySo>6 zcXxLU?(Ps=?>^sJ_h%9$kiF-fd2BLQ;>y-utacJ?j>oC#Cq z7q2ueyyQtRaruf7#ls(SzLs$(x8Y4GBk42?@Qp~-3+1~(c+&XIJHJ9OYQsD169FFN zG<8qK=QyoN^Km4L3LBG~-HDH$NfJoOiCK1OE|RTllK);67< zk`@+?r!PDR3jh}cOLd-&XFJwjH=OBsJiWjevw$U|nJ7A5vUbV1Qrhq9d6qBO+fUmg zWuskXktDQ~Mh7>*07&ru%7fG#;GabS!$agJO;68iizJEfn=^dRzREh;+F$vz_Sft$ zW(dv25{-anOkjNQaLyz*+m>{+IotkIOxGS#aZeuVk zP&25ZJ;+!!(hh!=P9;V++1E;SQQ3HnZI3Id$RTT}W7koFh*!&}Q{rPl5BU4^oU^HjFE|@Y92FWWT)cwE-F^!u) zt#^~ivH#0Ep({{US&ne<^o+{;7#e6@nlUc2#q@XOvc89LDsVZ&QlRJaaR|8_WT@FA z*)kv&s#-RUY9r~BhWw++DgLN4&H{k}KHz`EO1b7ANjv}2BMilID)_&WT}@qonkrVc z8NmW|dXMvHoCIXbptX1&^jDmg`k%NFm48ga*nlcwXZqV<3GAoD)aaTsjeiNEvLwU_ zHM&U08e!}Y9Tkd{i>1I9sfAI&>4%W$o-!e8?@QPglbBB@(x~Wcm#l1lRAor=7#2PwI*60qXM7!r_|nB8q7|{8Cdn_WNP55|+mzrO)Q#JgJwWA9o98 zls_9`>QGE!{!lamKGx9eEgr_0JHYNx*Y_=los{(RdI9Yz4l|OEVt=+W_MwE71E=&* z&EFjt1BDo9;9fACGgrPOXxyxClcJBG#7TnnGe*^!rcsfSE+WsD3IQ^fCSu~mhjv+@ zJ)q8;Uy08bZQuY=?0-R8N!IVN!_AUjm!l-#5;B1}Q$V;1IBk+LRVV4U`nnLjZqF+L z4p{Gge+?L98Vn%0YF_?fIAa67wiC!%d-Xe&woZri6`L~~>ytrFUcn0@<~v??+ChNC z`1YNy1n-7d2~@Hib)(_qi|Hhd)boB# z+S7ZLUeSMSW{lk{h3Kj6^ryC&-kZC`?+6H+gnO;w(}`-i+*$%pdI}g*&OAR`XB1zL zdk^OpdpX?{CtW3~^$rReUe2|{GX6@uX6nfLvtdd5++c>=^7rfC4k3&gH-+Msvgi*w z*rl*>IrL~2k!TVO49*BSfAJ8v5uZ;o6FyEyf?^u{8#5VWfBYxo_mKBIXnbH61xr{R z<(MkL(bHmu#ln{enc4p_$j8L@%|Z|9zy@UEnec}>-7QUh6rnw_k<)u#s^khe?&sNj z++ydu&s_7gQe0B57U5=Y$lR#VKQ8gbG?#5kRG17XCF5b?rebN#mcG1oAO)w&IXc01 z!{~~0YU-bH()?8!iUZoT5d-p}0uqH;go}=o5??8%^{WnpDJt|!of;>`FI-TmWatH? z=qTl<{F)gV`D|?8FB?{3Jiyqe<lY$>jO}&DF%$VnMyk~3sIwo&$ch&P%wlFs4@gmzzl(ZCC_X{a2CyV(qw$;MJXNfs zb>QZ*5@$Icz$Q$@bLNK2ETt3GFD_=IYVYI=I#q~KUfBE|d|H231kU}TgVNKM+<@WY zkAEh{Yb>Re$hipdC$6tc{lX&;B>Fs0n@f>IV~Uh5f4N!)AL#N(3+U<%-We0ObS9m8 z1T=0C6_%3s5H)hLa>Z}$=^`=n0VRcbv9r++$&=aZIt+1aQq2WG{gVX(Y7h2ZP8PX5 z`4xDUh1#54{GB(lM8JmU9kme|jg9~2YZt7uif#3J$nY;&hR2yrB?tHV${M-VwKEyi zM!>QY15**B(4O^wQO3QGWSzM|qIcmq+SXpZDnB*rTO!x`smu!^k7t>T6GYJX4}}qN z>2GWqellT4Vn9Rj|NaLPPJu_IbbtP=*q`4%d}2{P*XF*_7)_zEh&!K!^ZSSp(WU2T zkSUrd%~WD=xFrcX*a4(4KF`_-XmN=%g_zks%AV{{GIo{B0qxfGN7#;``ad0(gZqFq z2rn7;xA;5qwqE5HlkONKBg-oYpsNaUoBfDhd2v(lw^DGj^f-7&|MM~6$pS5`o}rol z#J-%HmOEY=-p=80t^qbcZ~PBg8EPM#m883a@m{YJtQ5ZOGXG^+wRTVEEIX5>z*01 zgh0IU&LuldNoh>Q<#tRh$os^~qm*HBvNix=WjglXRRw}TN~Qdw*FX4rV~{+xrdGVl7WHLy6n@L z4MvO-wRLSAi$;MyohTAMU7N>pVc5odTKJDQjiYTIWkT7finVS3%xw9dw_{ii#4H6~ z|8}3t(uRIPIdyv6M+s}Q$&-;U?JGcr8NAwmWD+#3anE&L4RlI*zj*uz%*jtHhC(Ns zdL^MHV#1e81Xv)tQpg#45bV@hO4 z4S*%FVwk)qF5_%pW{llu-%w95GZ502loCZ11ywW7$1-Iz#X;H76AU`3E;!ihg!T&W zt_zB7Zwd$32%Y!Y*0~UZ8@{!=70JlX8JQ_tKa;~ZRrn>Ei6I04(4*%h0mPj;cP9k2D z<5Ny>rdc)@+h6q0fQJ(x)rYbKe2NHg%g?wHKJN`P0|KhtatwxP5nGq&ksC~7Ew~2E zY!>zq9hx1?(BxNwE=S-^`~Yg%^fxPuKTTiBw1t5IpI6@4B2hvu^gEeM{!e2skHpi% zFWrf_a^rV53Px!ilyE<;q^|YbeJF@;YM6cDGbFK&KhA(eFlBGN8Z*Kc6dlF=%sNE$ zD8tHVr~_Ln=(Wk{nYr{>zv)e<#Mwv$ z)6j3viUt;11X5b^D6wQnhB!>~I1&jER*+Y<101uN%$#-+@7K@$VE64^r5am)1 zEly5SN!D~O?(wN1zVz zcGijF+FH;y<$Otm5wDCa4%f>*HL&$_nu>#!D}8IxJ?`cGwEZB?@W65Zv6Z8}eC)cR zw50tL{`Xvhz$)k;=+Kfs^4MaFru(Rk$()?@$(;-g$nTgIQFybHLzak4K?C7m0x^*! zP(fQiTxO9iOG{f?+A7CNq`V=^ub0L~kLSmfc}r_k7*I+noEPmE^#}Y1e3KZLrEK}a zhDjqbvImRcEPXc)`T07@LLm<~r_iGmz6}>Al1HJ0>@E5dTKo5Qq0YIBI1_mq>d%ID zj0HQ)Jm$4k^lmauV4TF!9_lBh(;usFX?hCDNGPi!>HI%WKdPd&+08xHeFq*CNKWdRgsE` zqXy3|;?s&q8Q~G4$kAv{*FE0E;TGZj?&qzm1_CH~+=6cMLE^0|j3^951be^93eSN9 zPJx5sIQgqSPkGd-Ps-)Af-bLc9&Wcvz{tbhcJPhAoFCYoWe2F#k?)Bqi9_tqpSTNf z3Wt-f{XgkZ;!x5M80{zRYtU3oNmA|9?kJaFY2s^sqxZWP@Q(V+)J4JvfxD@{_W==l z{(2gh)^4+nDKNx{gT$pbI|b%?ia(ANS576H^g;N%9=DiW-?yJn&sL>b5`ibMlW+pc z&x`i~sI}nXf5I@<0F3fj)xDg0A;(CXSO3>$Vlq zFQB18mx?qE8;+pQEke&ktgzflW~re}zRx_F&NLGix}@SE;Ee{Q{9{y>Row}gx99{( zvQeaQpguMTcTw3EiSNXfQX-Bbm($>l`ji@w(KQ#Uh;EP?;1nCJ=spg06}b_ffVo$5 zt2?Dd6DT;G&9LZ*!Go5X_=YX1^KPhx#pv!UDzH@a1vo@*nthH-iHS#Lx5*!G>Vn@V z_xWT_jQ_k{h5!;@|98;jd6UH)}! zIEOO%@0>R?S~Z6&VexpGeXFzVTy|2gM@8%d^i~wgohT~c<1eBJSC>f*dXOcRFnwbf zZ+Z~^q&bTEq$6`E)|g^|y0jm)`vUYYFw=o_ewF63y32_QruW~WY;yKTyeKo{%n(tJL8z?AR%p zQ?Y-2jgX0ar%gExR+VZZ!tI>_=WE^<6^V@{iCj zt3U`Hxy@5>RDe+s#1H$(e{2()jdE90L-NJ`u4TBHG%m16X87{ZR3RkL@Ynm;*TW>2 zha$OW4p3=8Ke|1HLWq=z4<44yV$jIYA!I!h+8!b*GrQH{u648$m)A@qQ*2R_OoM@Z zU7IEJybxCE;5qx? z3wLh6SGQ^Z`_>tL&;)>KH-DoNQob~&d@*hg%_;SdbuO4dLmXTL*GIX4fV@9LdyRtq zLN4c5!mZ!Qg(NPiB5d6e!vqo%AaY5W**-QH(>jK=f%%xyG2=hnQ=Y$N*?(Y{EjKt2 zM1+VLWB*Z~U{Wf>1WJ`n)BQK;M+()?bWNF~i>J5%DW%NUe|SS}pThm0p?Qh~q>Fye z$$-Sr*TWoG7})Im-VX3o)!OR&H`B8wp{n;*=O)KpmCtw?czeGaZOXMA;mk};e#C;% zW1x>*QqyKR8x0SoQ?Op9QGqlGHJSA2@t&!?qHhHTW4c*iQBe#CRKh**2AvQndw~Cs zdKFH zl76^lao1GI^qiXPwsMp%Ubp?H@5UxV!O_@yVTxsOWwD-X7V<}ittqCfh6mw>Lz>*{ zhYkP3k~`MGzQx;P?GLvVW#IVtx{(X``F;CFk7PCsSX>WCX_zTK~750C+N9VUoU)(ZitgEX1 zf?>`WCWtSDct{^H8Ft2nJY4{KY^E>K9mM(k8*_xZMM6|fHFT&%#wcIHlqM>t^nsi- zG;FkN!A!LP+m;9i>;zx99iIp(YLUug4nc?iJaE-bzU@OxCs89)Rfxi8EqhFjiir}k zuliqqmZzGEzBDqG88Ny+W2hp!;7Hp1Y15T!k7b~T&#KwKvKoOMT@)d}MoRQX`7;CY zpr(eH>75Tqp^aI>(H2T$_Oj9W-yjB1oxbfCAUHVWKD-V^$eLVn?blTCD!)M8hk{clCHbJ~ualN2v2OPTV3=Q$)ZRvQBD{J1{q!>3ADVSw;wsKI zH910C7^9OG+Emmmf0%pEiS|)wkgaD@&LsbKHS_t&BDM1-7aGQm7M;Erq(E)38>%dg zMYuwW8#UEb>9-dGGa?NGTp^CS3%4mZH46J<^{g+u8Cf4}^xqL$v|2f#<6@y@B~ub& zM{jcc^xTwXqjo&;Yc+!O`*(gu1(Nm7`D_yp4b|UWRvb^19>)W zqaAV)L6L{r1obJpPBz-zGlGulg{`j7T3${SUAxN2pyW)3%@$&5X(MG($~Xq43U%rd znHExidTEg!0W!S|#bGkcnP4#weX@fPP)E(tFLe!OTp}%Fua2PvpMccz7IAm2_&~$I z%49?O4P&?6UjRG&JRVh2DGRS|o-#{HdPTD(H}REvDDZ>uu{wUE8W$9wMNdVP_x7{bGLdEjS z>t`lNcRz{=u&UQ(!#2F6+rl`p^W{<3YABMs!VgeGU^E zp|0uKTJQA`xZ$o{`mb6hPfpCnnq`wNboISJ1B(m>{#aj5G&^&YP1ecqr13JBzyiFx zP;pmSW&04y#)Fu8((S)75ZrzlxT! zIfZ^Y5w_lW zcO$%aGHHyzxjI6Z-?%tfZ|4z?(1D|YNLRNe-a+Y9Ou86O#JyDoG0df(vMi+K-~RPiwih{4(*8=2L{$gxYh|VD^PxZ zNLNg`9{LtrfwANbKYEp%M)!?7feLemyGhsNYW|sxqKY0TtK#gk$oh$_hCkMNI)>ZTH#~4WwNyN13p3ZsL?V1$5`#rOefUiqyBms z!dzeT6#u8E7|ew02kOideIwSP7L-Emfg~xVloagO>?P4Ub!|g)GlQg8C_~X~K06Es z{Qfb<_3LFD{(D6B>_&RT!8ILhF-1dCLaSv0fl6$;9$zcZZwR*n+M;0piCnVWBHB<| zk^YPlNj)#T(Qg4=PT$2FMMwR2XB8aFDG>~Ncs!@Z)v;_~tBBlJEP%eX=OuP@+%!l+ zLMV|GEvA{-h&9dj(tJC#>jiQnW{j7>*81e|{y0mjh zQyjFH?zU7a)MexjOwA*%U%+?ZXS7Oft<6(lYnK=x!t*dG8IxN7nt>cM9G{#%5yupq zbhv+IEr4G_HoJhobu%pYbO$Oa zwca!QynMx%tV<0T+1~!TIFu(E8seqKk`d5IR&`3RO;NRbt)@xhbRt;{4md4T@DAE? z+24M7w9DLa2Xb_{#uH-bZtaM^lf`}|{KCq|F7q8_YHg;y`@n;@i8wh?jq1ZHgH&L& zWV6TY_MZzCpqG3&rul)pC|C5NYD1((ZB*vRMCPDA9;#u_YA@-)j%FA0=g3!+bPbG}HhK3$*xZDj=Y_e& zeu%<2!Q$HlL;NQ(!5|3{7>EY=*3!t)!E)yyzaMMNE+PMl8>Eq=iP~*gMM}9G{2B4^ zhafQ-)UGw-GKmo|BC0lr8fo@0 z&J><4u5$<+Tsm9FKQ7Y<4n8$BR1TvPF6Ae|18+KW^jjs8=z18%m~-Q zCP%Ws?fTQeX?SbW``7kJa{m@TL2urGzYypvtH2+nGK;o1R_>sZqnOZ((}CL0#c!46 z-x#960<7vZEqsu_Sp$9Nl@~G-{onXoQo&Luq4b#v2SN0})N;W_Wz^%tUeTAS3X{di z+_`I^)!stnL?pwL@VR+%vifqM67aoku1)YvK}4KJZHvZam?1ML%*KCAJdW{h=ESxP zG-3e5jd}v@CbGUkf{t(SV?yttC3wgo4TVUn@6noR z=cbPvBzWd1pSuAS=fgCvuD1FBy&3}h>Z8SKJ-rmC^|$xZECWU()3;?#sH+@h6&Ntq z$MQcDvSDdMPFF`P+5aL-XmA5Xt4+3{vi}AiG>?s82a9JIT4c-Vd73Okn~IkWqpEuaep7tA zeP1oEyMOGkK7A|VBPPHy~f^VA6oVG(-K`c)JiaM5{FmQjjzkpCmeNVJkOx@^;BDr zbXK~l<28u04D@Vr8nTExY*6_R2RZ0JUfD35(4d*3tHc6Vtu7&hHxh;Ljoe7A3?RkD z4^?E5V(Y{IZ}#q3?OTP;Wz7ZUN|NH1Q}+-VueDZ}=7%|ujbGk;1N2hJ7u+(!Wj??* z^$Fzkz3qrF5g{~uj0hlIl7&`#3Q(rhHUm+yKuj}GYpN`=m(s&2Z3%+_d#lg+C&%|) z3&v3(!xDxoB#^MqQ8ro+S9pkJOrV>c>C&V zp0?6cb8jZNKX=d}otHjGSr$bHW)^l($6ZWShE%ssGg~1(qJ1%pjOlwkiFw^61x1 zB0g~T>-}3%=IiW>06LK@*;n`{cnUHhL(SOW`aEa|7rJ4+FyDG6x{;KKn3BkSj(Ftq zdnL;=;cP*&1|V-T?3DUSTrujnDl6H-A~4eD{fJnCXn$Bd;1)Q_M#MLno6A3Ps_mmb zCQrX_pqK4`(xNOI^iyK6NS$ozx)hi#sPi!3k1;>1fJBSo9B*IajN-rl-7H{f!H+;7 z8dVu+0%ddNiO^`4RIhsquJEjhKH2g+Q_UMG?2K;hNW#0xF_k&Ofp z*7MzVDSdEYced1ft;nIFNgf)72^u^{Lm7z_3y9sin#PI?J(`})x!fcr38)!OfeL$n zkqRmBAA5avjE*hf#b9+vYB=M|zvzgbf$D?KBt(~TY111n@ z_$$gPSk9?fhHrmo_m#-w;R>3mo$q@I>Ch1zuc=HBJPdm*g6+F#56|;`!4zA7$m*nz zr)li)*Ya_+Ocw`~tc}ojZ{0v!?_F2SbBy8^yG60k;8JV|hSK1z2FfZ%g!X@l+vw}AmY zorF(bSDd8XvOT$B*gUIaU~g;G<6!vW)QtuCx5^g}_Ph6zJk2~BnwrtX2tn)~$AJ6R zV{k})!O%Q>WXu4x=9F3~?ZV>5xTGB`UMM0RnLS|1PD2M`g;b4MHk*f172VaO=_AH> znvp}~Vp4wfKcx41Ke>j~f@Qxz?)U?NbFSMe0xZaCB29C%P-EHH%3ufyNkP3-?El_#wfViUf!{G^c_#HxtUh^HkkUeT{%Su-D6H}<&{pg`ruzO>bcBHRVHvdDW_^P9%;2T@Y{f6F~ z8qMi2PFf2{G9Cegs zOKWW|uq%x8E9k9hPM%+ALtOp_^pgQ+EdDI1p(y1%s*un(qlgk&bLn`ye)M0x=*fv; z8->wk>WKc01RG}~=eHXbC>;y0<5fp*JPKOGr@HRaQoF#nnA!dc03DokSnHmWL_ zHg*{H&WD0mqWWLm^$^U@{w^?a)4is&aqCO|@ev+Mf+38;riY`fpR;0@VY+C4k)sH2YM6J{y7>N}TcMo4klz6=l zC9^iMx;PDzNR_cxhPTdqPK1s-Jud7aaVyd<`_4>nI0Rdgqz7lrz1;63+|#QBB?tYeFg{PcNpLTxJcuhWFB< zo7XGW(Ds_nze`_uq>tpCl*;rRKENG-86wa{h2a?K2q-|%$RQN-FE|Dzon-Pp>z05^Fu`-CnL8=iB4 z+6PY3MQYk(5Y1CTaaL)5WuTO_FjuQL^KQgTOTzMjEdRM?d^J89-N?x!wZ<*fW$dCYmF2%^ z%nnWUt_DDU))~U8Dmg&GlSKeBbiWeonR+1i7owSCl@QG01OmoshQq?@&W!K${>NYd zbqM$7_-n8N&~G4~R1xp}bTKDG?D0YjbLllRwUgjLAYba*H1dMKW6NGeB_P?!01ki+ z1RfC|KJwiU*%KaecimQ>0B$$p*8A!fq|M{oIRO8>?|9;e9fX@^Z_l(`-DuCc;JYOP z+J1HlH%2W*2EO-02tXd)IbT#J6+_)Qo$l#+p6J?op7LPW1ACT!0525Q7RUV)RHvHa zbGRYpN#zA9fW82)JZ)x4T)RiAi!t$rb9$n~XyUI)C2=`hlgVuMX*b3iBk>r>-(|2^GfmjPC_ybOX2b#WxMr*}#S_QEUfY@Up+|dVFQe zpGvOEll$I6$@Im}*SF^LbG-Gfe|`L~wB)*Y+WEA&$@Gg64Oxotc){h#OYo>krefEwNxYRj&R2&&N2iu{WFCGv z_2*=!<)>kWXi%Mcc%LT~jdrV$t;q*)nf{m@01iyYA+@egzXOYrr5$>mOA)JHNr4@G z#;?x8+1kHd+>!%LJ|R`Z8nf2Mhob||VZf69W%eKQdaxc|QD`XraC`&{R;{nUzx+KK zf>pUony6*l}Zo^8V0yK6n9{-E#OU4X_5()s(rC zY%00z^CJ(dTt_0Q75f!h*4hqltJja!G_XbD_xCp^Hx0#YFFxJ!UP^ji8ZztJC=)2D z9#h3L^JNxV+n-|EFL+#S3=#?wEfc`)3gof~0Ek_2<_jH~Gv^lx;Qqj=a%-Us@sY!S zUh%&Qpa-AX-~NqS=;dcSKS5=(lr8oK+cl*bH=aZ;Cjv~w;8Ucf-c2Q}=?dC0u(U%L zEbzqpbj2rM_st^KC(bCPVxMuDV1@ILEbxUi@}6X{cV%kO<==Bx;N(Ij6_Na`O_>jH z9abOD)w*(vDjZs!7vxqO=zPetSS-w3AO^G>jW15R2OXA;XZWz0M%y3v6|oa*)E}{4 zOcfG}$K=RQ@H5X)P0Yom3!FSpRkGxAYD4C0M)ti{m_E-8d_1V=)P)?cKkdm0#~UrC zN~!nCdB!=<$~WWv=3_gQxM55#e(nt@W?Fphi1w6(XTBH7g0EUgCt}ttR>cfXfjs7v? zw^r!5%$-f;k*0atnu0aOnnM!9=Y|L+#w|_k*plqPUfyT5jlCBBK~ZGrpD&H}**3PN zuvYc7!JMsQAJ!3oa1%9$64iu|M+61^I$7*QoFZJT5>+e}wA$`@7Tsn=SV;+U!$elx z`P9Au!6AT6u?J7a(Cq;hP{JdAA;2#Q_&kBb|6vn?(!}iOSEB$#kIc-^^k+8k17A?X zaAM2dIo67^z86QA^ z{zh5xSYS8{tA_NiW3p5;{=d=B<`Rm94sV_Ro$*4~gQS=3(ByOzSgSRE2Ik1Mh{sFC z-JZFmpxmcQ9v@TW7y&ZI0l1ZW!8zRhZcXVA#)bcwRNyEl6Kh-w=^=_;(E+ME@4dbz zWv^1Nhs%+0MZ_R-^2H@AL6*g^bDc_tY(^&?5;Y!$Z>VG@ z@f3#Vr$IHKiy^j(%2w5w#p@NziM{fPN|2=QoISz3Pey~69OSz%`T__=npi(o>BX`-G0?-G2ia-CWLjMXw!Wy`eMd`$l$Xy;A+D zYE%0sIaz-XEFhxPbay|)5`;JA!LYBpG%o zJ-4Owp4U+Q1b$5kc54F~z~<)LJB-eE%5cUSA)1-MG<4A(GL@Wj_)^g`q;GGerH z?6qiHY+Bss zsI?sfyY;PJI!a?%lgEL)aq%Qs9(=6S^Y4kfS(opY52;$wn0VSKO9#ElX`=F=7)&e* zTp>$SK;U3Q2$F3zx7_pYd4I1e4P>N1?E){#IO-vTS!mYUx@QJSqWNwwD>%rCX?-TF zKAvTi-fl*`{t5jODg1UV`W@N^xaLq#fiOf(lvZWKJxHygpody~hvteT|C8aX`(y*n zmtO|Q{qMAQYqlKt79S(^q9+fif#;5L?@b@~5&I&u7ORlWjY39ll+Qj@zBMcaMi!}A1)tFZPSng4B^giV^@(yr9pC65>5|~jj|%rrHb8bZ&jK_+*rkI3 zAeROCR1lNFAuHi`bOVrOXhJEPpV{-l$Gbl2fmOEtY^ddq=OBPT2nAQNKx#=4&Ljsl zz|s1@lR|N8XE7^vbN3!`;BPNl_pUaOFg1P@--c9NAZiAnw%mzSHMvQ;m@_RUDkF~n zviGDsb0u!DL=>wqu(iCw7j(b>qmA2A^&{56Q3D5u5I2oz=ehGiAZ#@3WvkX(9fexh z2i23v6Bzt#Tpw6~r?s111K^Masz@(akb#Hc6XDxU$Pv|Iz_DJ~UfurIzQg0VaOuPo zN4y^RpO(_~Hcrj;d3A+gaQi!1%0B?PCYHb+75(*oT z?g#%e1f=WtnXl`xXlJ*BqqgZ!)kJ`5eR+s|oe#2~_@T_p!ueZ2q&Pp1^7RYT}B4;TgsN74BQ>y6Gz0&-}T6T_74 z^obI*Lssho@`mDBxPfk;HlJlwDJ<`qL+WJA*f>Qaed*1A9R`T`nx4wwuJlkS()`uF zab-mc(4R^>!_S^Fj67fDL$Fj!h}FdC<%kw8xRM?Cw?aHzMHWY}qE8q-jIg-Tb3$Tesuu!rX0nq#OVrFqAd%Xs3 z%$6^(kfST9}b{W<7SwrLuKKKYP)H z+Rfv7k@_ZO&+01Ra#=Zc>^TtW7$MS(^UH6*+aH$<@YJDQlWqK?_TErM6y-78Ti1W5 zBD(yQEOWfsgX1>~n`v%o55tK|Cu1;GYtvj3BIBnW4h#r~G)$76D510lwt=PTPk`QC zoOQbo{Gf|zT#Jljr9Q^QO^>5(LGaNl#N=mAqwJnZmK>-lck7l&PmMp$3?y}WXp6n> zf%Sp4b!ZOdEp_JbTZFtflCImc%%EGD)S3kx1uofQZBV|vV2{1UsgTdi;*h1EWTA2n zpBu)ctyz0|J9H~dEiyRY0RkK6{p=auywuVbfgh5?o)^Q8HTdlt4vzm$n7JZ8iQfJn zL7^)+_zN6W<=C8mfjtkgNKJ_WI@Fu4jKE`PUuyODpTqDEjPv_>tFk0 zU3gY9t6dPjM96453D0E6r~mbD4KyJDD8tXduT9($u7@8!8Nn(b=r#JAC2iEs>yU59 ze&<8pHcg9G;~nK10wa>{_S1tS;ouLj!%PU9*V?3qQ|8@()171JW`~)o>%j|e+rv{B zFo*I@0^2nH!<0~nJcB)To~PI|0LdUXuT3JL$QE;=kj~fKDrdFc0>8ctgWnCs8?pX+ z&`c8iSubkDB|PHo=^Z34sBOm3i2bistS!y5^?cz;v;>g0bONry>`Y-k+YJnMEd`s? z`r(z5HtBkGG>a$YFO#2Y4S%bZ3@x`%xiVZX_(6Z?lY&Lx_>2sa*?aC=B;!E{u|j$Ap_$^tel8SoCsU!Z9BWQNwexTucycXN+;p!?OVm5UH4uR2|?R+cK1t-pH`gb)qXb)Lrk9*E$ZTykaRb*?!&i4Mo(mGy`=K`rw_1d^)sTh8FQ z&nKSFcjcchigXr|PZn@1R}ZJD!_pUc+Qh{~&z2L9$BXzFEV{gV2j+zz^R`!_&MJSQ zq4PJ#PR-VzMu0cp-*6t0er&{1dAwZJX17e;^|kfBKl*(H5A^k!$d~rKU%R6rJD9h* zHjHd^{4%y!7;qACRE(t%@(P&^a_qRb2%Zo#8htER=3jqp8(|XUXkrG4$BA)+h(J&# z_tAk?6ts!yVv8Iqe(L++1{Q86_Om8?JCe*fSb*K-S=+JK`u%icfP1->m3!iLv%Gd& zfH1Z0Bvxu=Ehzh6-=}BCx5E_FHHMWm%~Nc^Es)C$bgmTMXDkC_4($$Y4+|&so-a_{ z6IMOXDCkS>e}6lpTyq#@Y5hQe4LKDQDRM{YPZQ?aL*I+hONS#7y0U)%cSo3Zyv>)N z`lk-aMmRmIbX62~wDk$#)a?hFkXVp!##)`nNh=`tB&`(i0lH3(-tDx?7}oR~cYihA=?Cgjm_`+gVSfYj*IpokuXN zx#{mgvp*b}N$3^J|Mg*j0%)%HO7$vQ+PCEJQQgl5ZO5MILP0w|65s*SK~uFhmoB8KPa8 z*zM3@WbalHltY{6rfExX%#3}SH zh17)tQCwuPP5JiYf}jNwX5i-A4VCQ2^c@)vcA=x+*Pi&rX(~xecrxqs#aB~_w%w98 zDX_eybZ|Ac7hnwB?@d8ujb5YLB#nul$4h@r5~9c zlk!|Htz9r*?8jk-YWQVFcf>E0AD$b5jdSTlAeFxBUL}tAD=N{%YsL*Pw(l&oaZJrG zmuH_lAF6~n8Z$s)50>-SE+=K(320%0uVTSe=eK9H(x%D8B-$m{_tt8->2=KI8H+9E zB*^kh|C1@sQ^9&)&woWBo}0F=WtcVg^N2iymn_Qa(A-am68X^a%6-*^7D?CH{QL5; zYWV%~?3?`RNvowQgYNZ1lpw?P1dN|ze``Sc__CKQBiG9wozZ{Qq4Uux+2Hjl@xwq3 z|A&YyntG#DyZ<2F=K+haYk8yaI1LUG7 z4|hHa%m*~5_C`eL3@PC@3F%$p+t-9|qoAH1lg_m!*}Mz*x<6Sh!Ktr&G~*JgD#Vt- z$C4uNRi+$(zu>PrV@g*H*`E6QJ4G7Zj7_ZQPx<6HBNoj(;qMy<@`y=~jKk?2EjPZ8 z43=!3dncPb^l$sJr!_-P%a43!bp^sjrV=JY1S56mu_cxST&;P`H1_f!3e*9>mN%N^DFRW;+PDgKtr)t7Zgn$xJ|{t4 zcdlZjuXy&zBli4wnfx{#w(Ww4rClp^Go`@OdCxSBzo70CIw^m>#RT>3H5bR$GRCKT zVr@;j(M;v>|7bd^s4BZI3MTys5Zu8l1?Z^zq&_9q{*_>D)g?EQPt%X71i>I@qZ-wO#7-(^p7N*fv7 z$@$vE0@0IZ=HGa_J>1N%h3ent!SrcmQ)`Q|a#AtyR8C(7K$qOqsM!@#9u*-r5NRe^ zyCF%UGj8n^s8%g^_mlJG2_(6We?V9Jmfp-w$}Q6)m1(z?%Q+6%IOXZ}&*)xYV1fAU z3HDv*gNR~ikP)BnmV>dz-hcHB(CAvpXan1gzXx{`dRa)X@#y<)On&lyuC+^uF6LxW zi#r6K67X}jv7sE5a@U;uFcIajDPSMzztSHM+!O-M#SUisRD9Sv+jN zXsCoWa%}v~t6%^JAXfnC4s-oY)rJDJ+wqUrY@JkZ_+5410xNSY(-~NH_aLnAccO1@mi{^9o%2;L^tg@1@-}-`C`&27CFuYMFxr zEV?|C9tVA%?bxw)Uf6`9-OEd?1dvbuXrqGF!jpRzwQgbp63YAO7)wyypqlKHh4hI4 z`&R446&!4JHuK*xp5`QF2Yv)$MKI&Rs{K(qYmyrx-hED{#E@!(lBe z4l~pXeUS1<0eKeo;hQ0cCqZCH@$Y9EfCdJ`+sS#v%duUs`$@}r)5l#;TqrFtnGkP-T{1)`3?B z^s12fcE=>XZH?dIS3A7kp=)Zd4c*xuv<-is4tg>P+YJ~2q+HACjsx$Br*T~o8o&FW zuJ=PfleYz?`WvuV3p-2re%nTy`){kXooZb&L3m~?-z`!k6UD@ix;1zHkp>XzG`>32T(`DmH&i@N#v?;Gk)(R~ zsa#*6>2SvLDB~X>%gk!Y!rwh`O2#MRUJv-SXD|zLw(qANc35e0ZFZz75GXOp03xy0 z>x}$*4YC--_c)S`!EgVNJSZ*4F=_v#0H_-qf^>>p(VjndHvn5$#KW{$?kSYE7zXzz zbN8uTEnZ&8Ab`K~0m4fY6SbjQuKw8WcgRx}XmmEN<;7a2>ax(a0(3X{oKJEI>xIHA zfI&qInMRiM)XMsS5mAp%tUOq9Q;?~V)MK+6`UoKH0ho`3z$O5>)>6GGM->~&d?LWd z+(znGb70lse|@dX&Oy$^kp)Pu43jJ?7qfZ_`=Q10W}iO>Z?YyOG~`-+omrNM2P}u< z8-CpSITFPln8nQEe?5tQ1`z+vtj++KE)0)?Z%e{fWl6x5^iNaCC9OcjlA#2~N9NPY z81$?xVkz+M8e&h-e9~RQVs9rvF6l^=aQ(iScwqn=dvFUkFs70FIVR(5;9Tun3PWUB)UhWp zAzPqCdX{|D)M{2&tz+WYZQ#CK#Ll2?oQ%W>=fwtSXMo-pkTH}imt4B|t8NcO*=Q>D zNK`Ns#zxacj#sUE0rj*LH;${l3qe|)$KflYnph<=6GU8ouUm-co_O-mN+}fDWUme- zFrlaPaQQDym}eF|&HGstOI%Lhf*hQyPTTuNoy6SL(4ICQ>a;^@NX!%0GO$xo5-6gp zBA2~A=ZtMFY^3|c2d&J?0FAJ7R3egll1qag(xwu9YvJ4+%5n}62(3RO(q~-xM|M5z z4~zOAe|FHS3m8Fk|62^?Pz+71#D+~-1 zvaVgi!e+4WjKtpuy*29M6exag`f_Szvi49R>9D$Z=UM__#W6-cJm3=PNhYPT7HKmA zfi~-_agV?ttY(3x&2Q<=<6qe*MdWsA&z8!!XDC0<7;(_C97{bmMjVG>yrX)ZV;L`a z=y|=l3UJ>XW;k*FB1ijx5FjBgbT4MFjlj$1HnV1=m~T^-V2&R^K>M z^FPgb#>lv6RfBK-lQS9H%Ql2Yy~RpO&{ula zZ&%bBc)jRy{5hMYQ>u-TK2yd&NcskL?-}TiG&{ zZ-(gvDet=5|HuhS&p0tzLn_G1@Xn$c`S^V(7=0sCB@(*0MOTH)nuqRzRQ%Rd@GWNZ zL`ZWnNHO7CX#9-F-le`V%Rv|}m<}hi;mj3XHP<> z{fHoaFtE88wX)P?;kF@Iw5OPe>}@IpHx)CeP-L2O(3Lvj78zPJ`fO5xnxvJ#WOIlo zwIX7Jn6DH*vhN5Qn)w6;JeKM8v5e_0uXuj%#>Qxw33T9ka=@Dd^Q8`i^+F zbL8B?X^*NrOa*8-ak(5|)~WkUR8Xn@M+7(7{ObB5_7uJ15{^$$*&RI)ty3tFY%~Il zz`pf|S4;v)I{sCwgQ(HGgWYF=9bbJDk`@uCj1&70&d|9tWimgzAfHOctB6!iYa~LK zO1c{JUK-MXd#o9s*DN@D?qIecwnn|aoMc(yPHzJqRQuF!i{Q6S7mv%9g+@7Qs(kIX zx}iz^KlP|Cq~TCvVrd??QIHh^y+TlPMac&reqj6}pk);i7CE~wp)YgYaGd^c_sZc|3)L8I7ku$x-`!$HiVwi<- zg`THtgM;mlNY`azh?!hFyk}6jdzZg3)yJru1q%XN6-%xvN*}}t!JRGOBJGYvz|?u{lM8|@ujK6Z z%s)$gcA0mz#m-kPjhhNn^gHH8eYIhUZ&^z;f?NcNt-OeUMZd>2(SrPr4dX&kEg{Fv+z_s^u>Y1y|pgwoxMl}5h_8i;r?FoV~w6V^#@s+b?PP{G;%0~*zI};Au2dl zn8(V=p<^fsA@GxqBxR%B(nTkymgyjoDsP`eWn@NC|(>(AJWFn)u4!;~J5v6f{85(mG ztf!-T-yPJj9aqKx*OTKh@o#NC{0>;4RL$z$<0;-eI80#lee%unb7vS)9HmWyTkP;= zoR|^_8sB?$$ax*qhWV(V;?USMb@j+J^YS8f5XNC0$oDZz)2GC+k z>_q%`H0$1H>23{O6q4+2LuGa03!Ux18`qDk%Rux;B91}Yb1VTHY+KIFu1>&9P-`41 z#mRJeG1QCI&Su|0O1(!_rnmyMts%p`CpbhYW)lvB2@c75(f&V%aPlg1E2%K_{#~l6sA3Tnls0YYnV}M?iz`y}l?<1eDWKjF;*JiHk|*2AwOLuOUe9}9 zwzS@3mBSOZXkWr;eY7p4x0x7N;$=W^J6Ep6~w^ zI%JM)_e(A?{sWUHt$U7-$QO4|hEu_lK%F9^gYF_jctHP}{gO@EZZ2OoJmWBg5LX!# zWprwGjr^_(1~{`WCl{I;nMHqX#F681ntsNfr;q=-|C9o*9;Cd0On7;0Mk1+HW~GVe z3C)9U{-%Rr0vE<{XrHyiw0Mi$>_%}r+!}`@y|*l)j%j8*gP=2DW`NVNce+jY-1;C%1g z#voy_urwOm+en(_2n~R~9dS0Aqf1p5j~@q;O=Qg2^QnnVbNj4M;(Ll|4cVS zsyYVUnWBy}KnfMJJf8?o)gIjRZl)o$cBv%EF|6ocGQIM3civxgi+;5U5-?ot?LslZ ztY}re+O}LncWpd~Bh^I~vFFZn%HMDFqBuzRNyO-ozg>m^m(^g;@pn|=ae>_`u<+&$ zY4v@~F9f}6-Z`;D7YYs)<9&nB@!IKcDqAZ!jN!l2a@xoBph~B^ ziDA?_xvxJ)T(@<@T*}pTTafM7#y^9V%+-5Yu9do)h~qAhD38p`%5#BO^=WHWoTTAi z=9vb0Iw`23X1gxnf{ge)X{G?~Pn4B2;P^<=WXDvh-L& z=#-krTIUkV=o!J$zs<~8Qb#E?WGYlmYk&ILPf!&`O(t3rA1ZT*kYz5`TCE=6ok`d_ zu80@^p9QdiRFRp77vv0&x3V)(*EL=y;9qf#WHK|4zA+Wj zZeDVKm7l%3F)+s7#v|mu@?7tWX@9blMow0V7WO2w`Y(BR_Uv2T_EJ|Iji+`GHoDqm zZb?1NwiAkhW_YFE^Cuk^J@>v&hPVnI(T~bsWeMfKrgMZ+Wv2DyojJo2pDJ<9DnVL= z1mb`fzO$0oO+BSENw7;{=OyYW<}naXMf53AXV>y5kSs8hW#8@yi{*=)mN61UPI?Vc zkJig2WJeSH2V0}0Sj|n(5i&F`d?4rfv6pc0?Kf%~1I>%IIkG`GWfa$iyQMSBWOrlX ze3uZ}Ef(Nf4aQimq_L-J+uxZ%YB1TsJM=GEM`n(eQzUVvRKvO{EoL3Um>b=Jc!JM4 z|4zcg=>NL`bsp*3Q)_OTE+F^4L_k~=4x?&)A>hmyYidlfJ*=RdAEZINSemJ_;qBxU z`ggeFdyq3+sS&ta*Pggr5FgRjS^c!IT7zEy&>sY4g-_PZU&#V`YDm8uSZ%K#5xzY! zh#J|374)VSqdo2*UTag|xTy(WXnd~kK)Wx(YuIu8O+iW{8KfOd%p+xB5|otUH+qy_ zZGaEkWD%?Pm-21unT_vN`_@z#p|Fa`O^&$rkvq~l_$EprynLkOc3f;`)I?&PfRgvn z8<(Pb!lGlz8OY>K8S0HOG-aWGeR#%_AcWM_ICoC7HIVqAvJ+6b-#~B9pl+Yyx0EXx znAWRM)ZprvJnjpw@v8VZB<8MFr=+ zxeIHrcy`YZu~XvgJ)ST))H3bPN>)wDpV{~fjzDcwEK(JwO>pRD*?kw!R*D)1%{PZ+ zQT7iw{GOV3j;a1luwgZN6|rFH@hayLTLL>a3ub0JWwM+N;oligZFv0$FkAu~k;i)# zwWM{0tc~X1XIt;xKLUl*lv;k|lzy?akG!#?&cRZ=1#zWF8J<~2?sC9N9yTRMQEgi>mP7p*jVcOK6#>_t ztUq_UB2>-RYN{7^C|^7t6zXOYcJ@pi*qasAb-G7QCjlsjU-w2hW9tY}vZZP#(NJDn zt6!Yb!R>a%B~XgN9G-J>b$RR&e_z5xF;X^~rIT&Ue&IV){ou<+CGi)jeqiqX z9%{96Rf}x8`**}rE2h;H!I+Hf*C>;vj+bTVLudcDuFUq=2oa1<^E_Jg#}1(iHkC@{e&yoGx#-I%46*%$BMyDMj`3*kR}@jK!Pt21_XZi?~VFVd9ZD^KZ4V`!2J~ zBnr(2guQ=u6%kvpS(c_~<{Bnq)mG{{gLA|wNX{&|)q>Xt6V@FLwIvxjB&+70_`q7 zWS!|wbBYmOxqAgnenJhf$)z?lwoA#6*X?)>6epT+^>XDYTqS}Mi{8c;5I3+0n{6B^ z5Uq~yO|(Y@Vs72`U~_I|QMEh9|T6g1(ui%-Sh28=M1anLY>c9J5@qZoji zB$h3z=ZY*IBIIj}_Y?CHmH0t8l;Vd`3!rzY-S?+?=|xih>SdZ)TSjhH8B8y+U6)@Q zUu!`B%xUdP?YiriBO8O0#O+;HhOWi`sJCy9Il z_5|T#SW6>judj5qSh~FTcz#c>g1a$&f<1+82i8YBeUk_PAYF<&H$z}SwSf=|Hv6lU zW#s4(Pq(ec<+sf@GG!t?QxTo9M*g`06)-0BZrk71;1iS_1YXQhnzeFs*LoMn*o%sc z2m}^|xprWiaHNSlYbD*p;6ZvuhAfhLa)bisXBh37XP6+Z4c5VCON=b;f~i$9R*)h3 z4T5-lxSvo%RgTi(5ra@1497jaCs9MM$Jbxzp=%Xc5aTlr4*upjn_h zlc9Rm4SAXO znr0z>54-zewT3Pg69`|;G~C_I=DH1g`%twv{~8BIr>MqpGvf>!!TC^pyd+-Se0rh^ zMfw7V3V2)Lak2?*zF7R&LRX&OD(Dl^(;ZOOw2rpcKK;^oud7FL^MXT`6AVe3h|A2P z@VMj)qr(AD@Xn(q=O(1KfUiab3$HnS-PX4;jSB(Hge2!75IQDvWh+(*GVn)k<@rVz zTx9(xr|jV=q=fexKJ_xaz;2Dieh1f7K+M1s9lR@w@CVqVy78&FyGbHSx3H!zpu81% z=^nf^hY;{X$_MFF<|p7xikrp*&9H>=!c?uy?WY}=4?K9hTrL}!zUQ5n->YHL@_@mE z3$IsU429xgmM+cfry>hOTk&qm_y)7iL+XzT&O_~u0A`g`Wp zuApc^gXDIvZYj~j{&TUoZ-3y|d7DjiQ6R9**}R5FkTr->XdV?z_Z8y7tgZ!12h@cb zV!b9Zh&+-f>mLY zUVZdJW`UGdr(N?;so|$~{-lJ&2y}oCjpTp!ydA z#Lb>C@2h4wKlF8g8zIpqCS5J*vCo~|FX8psEG!-o#9ax+j5Y7Ir1;0{?b0V{R7Qe^terP?Tq{Ip__uj1u<8o-vP-OlW*K&$T`b>=efQq z>)%#_*3@s|R^=setFNie1np&HaFY82P0UCzk;>?lm}@@$?}EK`-{TRkBCh|o(#J!h zQYC;DAO4#{J9}n?Uep?*F;xnYVzrLkFTHS6czA#nD}C_*mOHWM1I z=2mx}cO`6sMH1$OQBn|fo5dj<$Q)^8`hV@6REvvEI!zschDwj73r3oWR`mJ<6Iy3w zC$OH%2A=`-L5I(^DP3&b*>HQ7F`SarwOOmEa4Al+uG?XNmN_@;?0dFP8?gp@=2Z~h zv{Ac<(>dnr62a>#{D|Y9f1Ew0R?v*e%gbQCc0(3Wa(jMpcU`&Fg`)_yOB)Vb;a%0* zX;aZREv1L&)dABTBv%!-!E-eGIo#Kk$lrq!V@UW^nvYv|E|FUEw`-j-53--Ip&zEV zi5x}J&%3gWT!a?dl=$~nQjBI`n@y45E?ub0APZDZuEM*u`M@AcbByL1(=1F=(dB)F z`ta89AEk9(W;=VYZew=aJp97_K1TMIC5V{wIeW4pRqC%sl2^^?E#mb>4H#2SYhRRm z*XPoKEQ2sdVJ0-K-qHR4N)UEWn^n=8`A-ZxV5Y?FtzQzsrd|P*WwcpMC>^V>eMZDQ zjJ){^lX!UGF&;dxyph22N+SqoekwS&!#4;hXl@qqs**W0K`(S#$#l;_BOj?f|E6af z?IvaO3|bvTk8i=Ud=p2HF9I0Ef5E1yQTrpO-E*_rKptIsgIX`b4_njlLgM!itl2`9 zc72>&(!lCkuc~{C5KWx!)v2(!(EL9=Eoo`YPTYtiQn;=3z(?LVn;5)L&CBhtx&GVE z9+y1*=iMVStA%y%qAK}~?++z*fNB44_aN{s-Cblk*YSu^XHmTzJF`5?YqoJae|YwP zlIK4~J_W{UR49Lpj;;CtSf#qPM|ohr|!3+B&0AI zVV>u!W9h}e*k5J|e+GB|Fap~_XQXDZ3?Af=I&7K5;9}0y*GS+gI|po(v7vu13Zn;= zff7s*Oo*q39LJ35zZ!XhJ(xHaIMu4GG#>QgDF$uPKlZZGy5<*I)DdV6RJK|~v#~Z? z))7?u7IXjFn;T4ArwY)h3hKlWH*K1?wT0^~*c*zG!fKlBz;Z5WR2wd|t(0Rp;0U%* zL(_E1e?dQ{ByfYO)*?Z7p03|jHl;F~6K)7xtIT|S4k|j+zAhfVu$pkUC`))~PpOZb z_^LH-vh)$wIy_iu-R-t%yxA{n_tFSY&!_B_%`tYf#=PTfR2!MFf(_ ze0Y7X`sAtDJr zQ19r&`+-58On~icW!L%hXrQEi=EsNk+&CQ*n;reoe?tme`+|L=yF;?k3CE}9u@V4b zYw!MyT2hDuj$Aj~#iHgvKP1d~tEDE~Paz}`N8bwG!}y7bmQ<;fI^1al(JH>=(u_X4 zLs_vQ1d4^pe5<|*pC1Pg5{Vb%Fb}4TVwNX7Q}=6*12~9kRswJM!N6}w6IFQfo6Mtw z#wG4{J!!+zhK?an2~XZ}|FHnc1{fIo&nl`dWlo+?c7M%Zpo7k(obKt)3gkUvU6Z?M zxU)an_$EN~{MTAw79x<0b04!{_i+@~FA9)<bG4mM?@+NHb4RJ1IT{}Xz@5PN-h6LC*;&wy| zvIr~`r3tSXP)*g!B2S+n3sdX|2^=6zf3YP|8;Tn*lrWo_g*m!t^*NS=L2!yd(WM|k zzp*_ENDktC`o0kE?D~vyHD+(6b&Tuw%Qv0v-j^()v8eT&ox{#YZ)cYg)uwt*mr#RV24NEc#spY|EP5 zU>VK@1dVswrUF$o{J;D4akU%#bM}s^<+Q;w%;epnWbO*H^VbszDiM|bnHjN*1B9*p z34a?v=j`3RUuT#2y?n#VemaT1{oP~|m!4&OcK)6=yV!{Ms3>FrwCI*yK=F`Mu0b{q z1$A9A(D#WeI>BBJ88O`=znrc4IurS~4{zP1$$oFuKysczcNkZb@99EQ_0I;I@F{l1 zg{lvQ@Bxr|N_GYsL`jm+IB9+CE6n+(YBi_E1~iWw1k?Ak>KdDf(H$-%!51@4&<(rs z`g}v4%>hsm)ZHWytL9}&>ipT5+HTLvm!oqQqE3rc?Q1;8tfSa=dcLFdbE^Jw0efI~ zUQ9asPtv;(eJX)6^=$r(U&rkX$5_I&#p|z8;NX9{zM$@#F8@7kS>Dx2;DjwHcdc?H zCsPOb-tW=}TQ!pzh;+UjJv2KoU$!K$udam<{3v-Tewz3I5Dq~3x|Xt+${VzBx_hW3 z=d^c`>b3l3?|yaZRVVr+JWm`DX#z1Za}Ttx0|SK4z{bEl8pAZIV2jw{f>_G0AV|!_ zu28Zupyp|yD*7q_Pu3Qnr8RSVXo(z8E_)XK`TVV8DBgZzC-<&T0HryZ*MW7ZC4ESR z)~X(pwLH{CNWDiZ(EO1aM#4ESC);bN-%QRznkikoqtMB=VW`kSEXAo^xm06X`z6LN zg)E`o{Vn$u!T22K*+)B~ZOrdQHZ5gh7rfKthxEul?z0S`WnK9;GebKwvo$*y9`G+D zUt|{5((d;vQ&U8LCZ6i!%2%9C-jdW66roeeu|JJP)T)(sIgde1JY!7tGy0H&TAB#K z2QgLM$8TN!1|6NRlvgH31&TX3rr@!0uF_HIwku@|9Mj(- zFY$k493m3==nwJ&dGZYdrY}Npgm4+sX>-lGgDlQ?*{=key={{X#>`NKjv<+@md2qimO3sr4UJfZ22g3vCVw9}5bHXc6 z>#@=hEK2RM%68E`P9yH7mr^MQ;xpb+shF-Csc&|RD7$QKlQ{Gu?l62ZMAj!ZBRCv> z=$wo|i*md_{>|*`>KJ;6XClMfOb^ExFCz@>a)#`*m%pCq;Cbio{PdPLCmyqeYEp(y zLPd@8vQ{Wbo!xt8TJK^SH^KYH;hTn`4(ItGTdub~Vr{0YvpKS6(qG2_m1gD?c^B=Z7#8`Eir594t?Izlv^|; z^C+1H-^b%Wa@nPaHl!Xt?$24#8-4Y zvF4q31mT5|z(JvWlPw&YnBdWjZHg+fcz{Kfzn@fvB5&0;M~(sn_D6Yj4b#o%^-n+l zEpYz6<9#QpRAxG~v?{(_!l9|C;2M+ahYFM0m(cBu+_}tS=kWi~pJZ}l+!H3g%#pW8 z=Kg{?#^imueuj_rouOW_-lcdF`85ks<{amC(-R1s<>vIP3YT_mcJVV*6oLFirhdqEcYK-C$4us$*s9bkdSBQ;pzxg zmWwH~-zdieALqZY0eLyp2`y<_8Kd1-WL3$o4Fg5P6jqd7b;WKE)Ci!#3D)B5&C#JV z1u$SoVb4n|i{w=PG;9%N+U50^e|&$!_cL;Pp5JYL?=<0!=5QLBo3Ikg*WN|Y76raU zi$MNXjcILi!vTo%>Gj=o3fHx7YGiAowm^iL z{^;L#%>u^;rb}DY=lhSBUahp{;3cdCpcVFNqg9FT_Z2sj<>AuHBiZnHLP#mIFNMhE zx|NlY?56{g!wO0{g4JN+d*=@d5*~EDEzi@7TZv5R@n4t%-DgGUmR+4N8l?6Y-#__1 z2-aK;PpAX!VyyFnQ#=KZU$ffKV$oAqLDd_U$0ZtPqK@sC$e%Y44=WeZBz2kAx_(mJ zpN$g)P;3(7=4~(dMzo&4V6~zfu(5oLv~Kg%Do&GzmcIZn}>sY6I0= z@mvsR3SdRMo))p5&rvy_!&VsoYtuPQMF)8x`Lp*Bu%skUUR}3O6i6^_coMD9jy5C< z-nlh66meu#a&Pm}kg9NS*`kdo&qiTcT3a0F%zmc&ui5>;-|hy|YKk%lDC4pfRHJgH zhm^KTnKD@8Q~bJ~mpi zEX~kPse*1XroNzCeC8h1W4zOgOcPde*>R)SNvA_nqpGVIyy$u>sS`VG$o$Z7f!EA%%oy8(s_j*_82;ncM6ZQ0> znYBwz`6GWB7PApqTE75|q)J*c!AZu;Mdqa78g_|z9>E!kT>m#}${a6Y z4RJK~gZemY{|6AS0fR*Ulw?oOu5EH30v|$9RELZ!m*Y3o;bFz1w@y#VU2a*d>_D=v zrm*B_gNz~_&HxxnrFv2SRbJO7@ z)@2NeDgk108;3`vfCmIVRvQ|VQPS3NA*-Z3q^vAW{g;bIW=1S#WxML|4(KIk0WY6W zTep5Jb82y0&b2e$3T^D4sUJR!^aGv_>JDh9OwcHrP6s^10i5YAO- zUg*TO({#AkzvH{BzA)+oYsZ3evTpb|{Q}Fc*^ogDR6d2TLO`v~sIEn;{snp^EuEFz z4EHOp0Z^E^F@gS5&R}VDNRtIT@7uwDC*6MCfG^EV?f!4_6L#0tj+*<)gVFE&Vj9GD zkP4>8=E;!8(aX3)$R`7!QyZtu`55Hk=;Soi1>N7MQk*O8WN^qMN)>c+O)k#j$#=Fg zLwW6=^nmC@=j2AX)P)1YV{|+WMZ65Nf)rb2chfcixPl(+zN!mEGpFTk-iI~_XYA!Q z{t>A?;40Wb;*c>2%TY7-9V69!wL#I)j!f%|j}~t>;TfYA=`DpUkFk1!P`Drlw*5Qp z)%y?n4eGa-d;&Q@%p4ZT?f4DmqvkQ?QJ`Ybm%e!H1!@;rlsQ{`_!{))2hbbySUEAy zg$FdA5ZNHCGQi-8*c~(JeF7rgtP(8Xr6R{F>R%$7owK;Q1X(PW?19qE&^a^5s_fs7 z5NVx_6fr6@RcQdch>jU>HcgSKgGpca1CIctLDQm&t>_Zc(`-#oIdNE$7aYM-=GZqM z`?Lzz!~_;QoLTB-p?*5DoyP;60|}p%6L7<&&$MI>?v?oa298G3B2XFcI9L_`bh`gS_qovf4g5xPe6`v%~xdcjBW^0|0wd~5JtzLOj8~mlVdA6NQ$Bd_8*V;9Au52;` zY?Z_p`xLQ5Jd=3QAK%z=T4e#of3Iik*0Vj#BM^TEHl!^nE!_-&Ob7PM`BUI{jnj?` zc$4wksB1O{BD-(Db&^Q|0l#15mY^*wGQx^a84lM6YFa9h^KGrMWWM29UkZa#Vw)d7 zFFY3dJUUJ=rb>?jsjRC=vKAXp6NN|Zgi{b&41_TH!BNSw=lohSGt}}w9a~iiQ&A6> z&oBd~pIJNxodlBWxTecbtVZ3~Zz0lIXSe*eTG&C2Sc>_wDUIkT7`_`fglIE$MHIg& z=#DL}cu89+FRy*hLC_M(aoT6YT@0O}Nh9RXpVa%wR7pWTAuqbm3}{b?AHP6bulCVm z#=gF-rmVVWu=5orTX1LIQrbjohK1Bug_Wj@hyQ6=zYhJ;r5`);75YU}gqJblTl@(A ztXSE)d8xC%_IOThx7VOcG``hzd@0lj-B(Nvij9SfXZAYo%-y8V{=Y?yUOhd2G3*!2 zUz?iNV{R*0>xj*=CF;Y2I|Wn~zHAbWZixI`xex4^!A;aJ(R9ddh%5o{a_S#n;)D!l z0}*&6P{0zz(U3nZlqu(Cn^hy7N#o`^C69~x@* z`&$BC4Q3j?rZYdZt2uV~wAP5sTuzbG$`LG-O*f`9PZ!%a=xsjDdd`e5Hgp4ToVi`1 zx!vNkX$QO2#nU5{6WuXd*>ABO`R2OnlHp>60N@f~33MFHIYRw z_wseT5=kcprI=Z_Ez2ALgrZa8fp2bSx5Y4CCJSxmJAfWvO_C<WQ;|L^8*m^*5cB`0p2hd3Mu0MY# z^wRqKBoca;UBfr&(iaY!e*8%JrH9iwhC+jbZz?En?4Y4r%!r2(>qv-PCtH4WLb8&4u@daKK#83ztr7rSG4^ z5^lz~iBWzu#TCii>A^eP<;o)?mmu35r_%23wBn1(lVwhT8?k_&@;>uPkoc`!Hncc~ zg?H@p8F@Ydd=$B=**jUuVC-nh(S4#FZ5kdP^Q&MQ zMtS$GFdNW;6pVU5kmn2_*rK#y#pNNBpNh{R0_O;>^@bl4^=mLK+9zan;4wl9SHE;|@b9!h6vvd|t*Yt_U0 zUFLtTgBN?ABUEZW%otnm%Ggbcxl*BcH_z_L7h@yya(7&}gNGtGRC2#I%>6}`@HGPT zppeW18u}!3R8<=a6e#a6rddnK81UIzIn5$H=WA_wMb_9)Zd44#sG1EY^{|bqe|)qg zE`zjq$UAw8QOY2q@*^!ArPr^`*ByS9EjG)(?1yZ-Cz#B$vzAMhm)wEo(|P#{%Xb}! zP#x|A{csE66fCNg8c)lQP*aKh#NPcA07==OTpwvXzZLVw+&_oVS=Mze-~7vMTQ7nre~kcUK+lV@M*t zaWQ4%f_IK>BJ>=%$}$LtHL(9#7bL%tnt&Hb$dY_IiwVzFO5J|rG-dzCj@1J{W>3Aq z1c~EkwR+>r-feTv%A>A8mUi-Nl)_d0jO@Of5P5P{LV8=&@?>apd&+1ZgY}58V=Hr= zhPBWjhm7@%@a2<4%sNfs1^?gHjG0CO&WN2`0Kq?~#Z@JZ0o?ue`iPeog0AjQ;*1Mb z`?T3Z^5VPZyz?<6;X7O3uE6wFIXL`kIe)+9JZg)FN9s;8NANTuhf5Xy9jkZsA{sj$ z&?4@k!TTE=W}~4V95ix1Fo}GljpjBa#jIstkkY{zz62$j8%lSO&v-(GYtPD?ZERkX zHP=WVCY-g|4O?Wk6}hTSj_K%N-%@Mn(AbttnZ!7`L}YBkAjYEdBT?UgIf@36jq^#o z2(e&B1clIAScSqix*9EN4;QbZxUs+WTv(x?oVBlB?lx{5^J`~qPv0pGa$)Gsig)~V z3bs5}SYU4yu=Jb0=nD*Wp6A66@>J=#FfeYw2i@vn|6Ew0iwwL$L31V*zdov2rIQ<|cm^JZwQP@KMk|Ls zpFeAinA9@hFSQ$7)%tT+45-n$WM{K^6A_!mWbAV4J;-EnT|yi9xeu1qM$LQ!C99KX zN;x@i&;W|6qED@b#W!fGR6#Kn^P}Ad6$J}B>-``1{*sl2B=A63DF7g(>ZF=5)COCm z0{`=6tIr}Adv&{k;o64ZyKC8AX#30@$S0*{g5hFOAxh61E@TVB1MFDNx2peJ9KaKpEdT^5act z>i(%^*|T<9U(FZ(+WqABRy6+pVkVI#aJUr|qT|dtl9aaKJieEYFVgj_89jo*6NDVs z{#$LMP;B+H8#p^$^o-mGQS1q8Pjyt1*3WTj!|$n{Vj^qW{nCJwpFuIH=CvmcjE{r( za-GgylrmZ-F={5ubz2LGqpa5YvE(JS+9_Wcg)i`M&;U|&UyRm=fjS%?ZGC|(`}1%0N#2yJLa|>$K!3o9INJO%k?KTWIFz}GyY_S5b?fk z7tiM?oZqNRmfpV#Yp#pCxCA_7UeRVPTo@i?8^2*&|ue9&?k^rseyE0bm8q# z49Q_Fak$Cw`Gv>0hivg>+~c2tAF`c~d;LP$r})K?wUo_C1DK?tsj33HGmotr=qXIG zdKqxg4dS0R;U<)mv-QLsHm9NF{EAR@IKu|6hvLPh>SLsvhDNQ?Ws>aMG1Jn0@KI){ z(r3VS3FuhRW>m9Z;?=`7wej3WA*lB>-dvg#8))X0DJ4ju0M7k`f+lW!nJq}+3Ybn^v^oEs_&U)JQs7r^Wb6=12kk{ZaNtKa~zi+N@Hp2P=2;Ufim_! zST>p*E?|d+)xFL0@-s@HNxYu+k1Nl(SKmnI$$Z7r zRrDpR?Lz>KqWJ#zaGs@-Yl9@r)V>$mx1#S$>WE|eRN13sANsAcW*rH}j>+()&@Ao# z?JH?SnTk^&70kdm_x3c<7nyF|+|Q#$?LQp6@Wt^IXBe2U_X6+7eDVh=It%P%f`AlB ztb+si%ePhy*k^K@vY{ZU20 zktCZWNMprP#P!0Zg;HN@6Kjzw?(Yp$vPToxQmK7+KM(v0lDq^uj`24I}m4eaUqJNz)VgF?Y!q`vN14a0lXx@I*m_H@1L2IVQv$3 zyg}4#AyQC<&-M;IIdzCvV6`EFlV+OIXq{Cue5}_uHq2LygD+;rL6bx1wVMRbk z6S(C~=c%i-)e>k`g_irph19TBp_qWk&Z?-424RLOXcx6%_#<3s++=F1*pG>h}6M5sHJ$+Un=yhgcZBWw? zIi+pzx~047%$7s~su-oj`xLw!M!|JHG9hq4mRkGRu2xr(JZ+qeynPMZ{NBGI*OlE} zi1@%q7L=zHW0I!z8qw<;XXi6Nfq+RqLbmhy->!ReG6A_p$KSR+OpKWB*Lmdd zzSchq+aK51salo&*FCzW0H~G6M!9OWFQEJVPEF$N+z;CV5b`Ke1y0!I2oaAeGp)^1 z3v!qnK_RQ7)jV}#yNa=eB_drd*InsH1!XrtehNdHG?NJ(212z|4)aNw^CS`!-{bEA z%bqQW;D~a^v<*JCs?6I%_B4C|#t`D8Fd+7&ZJ&>Gzd`w3m=K$xls_|)FOsty7D!w> z)nlruO=2M2xJT~nB9+9!3a13eNdq1&2`{kX&m-*LCR$xRYk{at!;>ep0vW3V(oghE zyrDu7vDxQ;q{X&1&~(|<9*ge-T z1RXa!(jU39(lR+v zHWAVkWrC;v$S2CP+Yv>HpfHm$6iY$+4bfBpfW63v5VO`k^6BswI?<6@Fh)8f@?(q0 zV^XBRfsd&Ld80@qqBq*e$U~!p717R#O_ zZijT3#0BoBIg3TLqxfA-D$J1#3?gF6^uvzkDWMj$u=9};!^cV)(?aNlm@sRnsUC%4 z`PF_TLbHL=pF&gIfkc@Rq!zZ+@w*SH&T+rG3)<--O_mB2VH`b-dTXoR*PBScOv1zH z0DmJq{EnO3S!PZk!+=(nv6_`NUEhE^YOru}CTdrqNb}dd1F@39muESkfK>z=Tk*r_ICZL)_~tFm z;t!ubDL*@Cl_c?xmRyn5ez7Yn^znNGoX)W)eOybW5X=SD+FP=-J6UKEQh-Wmx&{8`=UHZ!*X3TyS+jJ`CX+LF zq`W?lz&D=u@Y&O@T~mnvmLT9nZvXw4eEjJTGMpPLR_qup3oM+dQ?#`FcIT$6S>pFz z^zz7&`)@b6Uxa)jzyFe#Y{BCFtHlb@E04`EZSn;ZgzaktMFE~TuJOAsdUq{r2zUh^ zIifl`s2ft_6_-DpX!mw0<-5VbZiR0=?cq;;kg2|>O=o|r2@8QzO)S-8tPhF&?u%ZY zJfZROxdO8*Cb@#Mjcb!Sv9v{}Ep0pIgIzNHZ4$AxRcXH3>;b+KcP1Vi<(NbPzWy1< zMd;6dm|l6jcp1(ooTD zEJJd82#y>heEQ+_x~iPct%)eI zqJ$ogRm9O{pC8HNbx5Tw<8Ez7_WChWNhFUKH5|d!vbUp)APR_*gl$;p`680yL?QFZ zEZ#`K(Kswk0t8V+lq3XMa@H$FdddRYmFq5vNScDB8wlchSG#37QBXk;(R?bJ--E9{ zSlO@QRtW?&E?!=wqa(Z=A?Vj=Z1mCJQ^(3`hRNwTvMi#i>oayi)leH6 zQNnd3E?*#V{v*_e2E6?P1V@fhTw8M{6wy`3Md{#S(xca~iUq_-1NDzTMKQXD9$Q0n zxv_N}GoQySZ%{yDIiYwlA`)0Ry^EPz+mlvnJ`*CQfX}u~R#?5=(Nd7fZ1uiWGN2QKn=$c9dYr zfb+YMNQr!S4$mR^=Q+> z>&5(CX?c57NRlNe|M>ebU*Bo))jtl{${Ah4px=W%J|uHv!NYHF_&A$7-rwzQla4F= z;mZi$KG68;n*$zh>S&Jm=Vs@ln{(qTzx$=1k1x3i`Q;Pq-mk8CDeRm4^_zoEtDBSU zyyaJDw0L9ZN|N9gA9{&L75?(K1HOBxb@{ON47vs^5&6Y+A76azWpvo;hMt>L3Hv2- z?YD+vrN!d9#@Uo|Bupv5`LxQHzYb8TRax3-c0_u2eyy(ZXphIAEW_s?c{!6*`1^kv z)}WgG)`|7)d|KuDPu$#C@Nj-y9e7}qWSafn8!TFyMkBWatrlu@m=|lS1mC+zW$8Yq zuHzj`TY@GYx4J6*emtWoDk~2#bpzS$#*-MOzVj6KNCHWgXzb>#C^qk1?CK_OHJemc z9+3I-pJ?RsAW3+VDMoL8&hSq^>4Y{kO_M^gPBvd~<%ToOwgI-|o1E(J!0ByKHf42NW<$5d36&id@6 zi`j`j8r~LRw&Jjh#kp(;T(^I73|#1ZJDcD7U8N3tdS##5vkYn=h;L%*R28OW7*z8m z3fp-kz#9$_ok(DsCZ$ZCMx}=8b`c&QL2opXB=8LdsTHfJZNJHb!ajjm1X)#R)*1vx zBD9)1wfzGE!(obBISk#v?f2k|1X0{7#jQN1Vc-t>h)s{7s0z7!mAi{sqC-BeeK1a~ z)?{_f0s#+KucW9{8*FFF%w34{uUlJ~5=25?A`uUXco0>Q@OV{rcVBQ}Hcl>A zWv_6+SSrL1i#rrcb*9o0u6>Zk?N)fOoM$Ij;pWc|BQWLiRW_fL@cUhq%5}CgW&C~@ ziFg2?*99iLzmQ^Mvq-62Clc{eF4vjAnBd7)3BB1O9QJVcewI?X&e_Q!hNC{}b)AJP zR%`r=$7^VNyF@O(kL>kv@MMF7txbGmX^dKp7aQv+fdHWk7il##D$Dm#{C*@w#T}2M zc>PqC76FsMxf#5vG?mq5>d!KGQ)2|CXV9w^6t5R05JY>vi)$!~dpJhzX@*v_iGS)0 zwWr(EpJhjxe`Xq2G)g0%qggDVc)ZA7FOs5Q>N<^F7FTS9 z(A<2NkF`C$k^SP))SG1YvfO=im(}f6vd^=Wt7Xd7GQ~=fa|(6ePGId+0~`#Rh$8QfcI za_6B&u3(Taw$PfEe{^a@Ar+IEN?JlPJ|v^auNO4nrDC#^GB^|=UE+qLqNVr$V~>2y zKompAXlT%CSr0>5>N}recT&urWY`X@Qd^*LbQ#mp03&r}6%G$+Pw8mdIJi z8oIXcS%0TSDmu&e)cepC=hqp&uj@B^^{_Y&rzCRz;S|D>)NQAI(vH~1*3)LY#qTf; zhgq`hTV{Lg+6C#zl(h{w>yEu`uYK8ZCp_H8x!!wObldJep1q&x*za(gzD7;cVavI1 z?>harX9=jzU9?Vf_GLP#z<=Gmy$KtgGKaqT>y-I`^|05zZP;nsxosB%l+|&^?pLQ@ zR&Ily*WS9~ymn42#5+Ebz2z~0t&=!eObP@7fj}S-2n5IQj(TGV1OkCTAP@-t9}r?v zAP@)y0)ap

    %Z@q9UeM{ZhpP@#>U1DVWKh7_348-J9>s`d(x<{dum0@BvHc08?{$)B%%rR z*-BCO=8Ek;QhewkYdA@hnlZNjs130%U%jFx84cp_SFTLd*nB&;i%MD; z_|1oPwkXXUo}3c~0H8@&2vn#f71dYwSFZ&d$2U#|-0Uf)I=JA$gK>PdwzdbQrDLMh z(1ZQg4bOMEc>7nc-^OYOwKHAaq*VHa-A|gebH2c=iH~~V&^YilKD^5=IZ2ZAUX)t4-fKJFAOo4 z+oU`EQ(PB!cXxUbA4^j%96b1dq?QW?(=X%7LKymn6Vtc4yQ2qFGcuh&-{$7l@jqHg zD{!CrkgT$IG+*6Q3>`d2u)e8{yZ^(TWn!Tyac~9m@X+>5L|jTe=304s{z!dIM5%ls zcs>K~qWlb;oScx-1D(;C=3?vnh$)(aI%4nWIRPU9EK&i^saNn5D=#mvy6rh={*U(& zK62>`&P~5DdDxsl=k?0wmkZhPfhl`TIpR4Y<=nN37;4!tI z(q@gD(UeMr$2x0{IFW`GB^M8o|D^S%h zyy+r#s^H7h$bAo29R?yl9;f;J?%o%LFz_$9kB|KXpn4+v@1{mc-Tre=e?~~T1YCCN zY5;^Uf4*k>{Arn>Zr~*5{@ZQ;iv>LzC7VyZ^%GrKHazdS|J;r3;#W^S;(TY`zD=LB z_QQt{pFd9{)s>f*$6k_)=*KqIZvEK2+E@kA#Zufja{9=xU`m?fw)gfmAR`7`6iyLP zAHv_mRD)Ycc6*kYDs3q0Urz+77r}%gj)X#2SkG===(z^DG4Aif5+oO1k_Cj}k z6jn5i9%@RjU;I{v(dd66FPnQ8&ebw;Iujv7M6>L1`04g1qhBau3jkDcY~i^JdVO7e zpY|ObR@4qS#;(uxnXTQ8Pet3k&VGeg<${#~^6QH%-;Ny9G_XDLjp$~~WbeGjLvjq9 zN#e?N+&mL?r-D&O-aWa~ZsW?Vb5LwH|NM#aS)n5sC%{dc)c!_2nbd91EWz*@dxSoD zR~%M4Iw4IG4C5zEFdU2lnpxkzeJ#nA2&Sh)Lv;~bg@n9weh-_O7MrNg1@>qrt)+{l z^E=<&ZRlgE4#Ii#@L_|E7ex;X3I>V$+TDu|dr(_MkNH`YVPSMwWSCjaKC$|+uHE)M zUv*&d=euQPQ*b{UaeU;kVS;EfaNoiqV{^{zjIxLIo3Y##(XE@?-fCb^<{rW)m@$ z8V|man85Ht;v~{ulRi&amazhXj|c;msLM(yP-MEoVKVNM_iYprjWEH~U7E(rzC`9t z=&!NSRk_v6TVH<DT0wqb*RYEBm3xI}KMq6EVzx{|LPB_G=+!g2 zefx^%6owC_P4}N)_V*h4*we}V&#&YCG&VZ?&ws2G{_B3!wQC{M$7khLf8XwC{Nw#X z4(pZ!suEvw2Ny@r8vVAZt@tDtw_>81sNC*|bo#;}KfU`Ezk0>4_lv%IQcZomgHM8( z(NHaKg=_+B4&#!4yr_xpGpEh;<*;2XF z3;2p-#{^q(Gc&|`+WvXyKhaKyLQ$aTr^~?h4PJIZw86*LN=jPV9o&iC_H5lW5(z?X z_}sBO^d|khHkt@a1F7p!bq{KN`jsIeH!fdBqdn+Na>nv2@UybBXL_#?h(KJ&l0Cbe z=ePg>y}`}qwt64m98e-646l4-z=L<2wKO$}*?9fojZF3_>?%+{`rVV0cOrW+NkkdUQQ6bS4t;IY-KqfVWY5fiMT zWAfTNy*xf`(C1|?`qkwQPJ)h`fttFleev`u)UTsm-KAw@E_|3ndOm6Vc(e2S`5@$0 zDN9t*fbj2;P|zyCgl%Te?k0xbQA+9B{JYK9Yp9vJi9wR9+?r~(zAl!&-$zV&dx=r^ zTi$drikzZwvSbw;GqF2_6wVlutq8blgfOw)eC*W+xBHZ-H93^gXuNvPQ$t^3`p6`r zc}$F>D&UX$-&PVfu{(@tJ3VC7sDQ^^`}OX9H)-MOaoXXE%sc}^?Jh>7Axy|sy(%s~ zUs?%1<}BAGH~r1l4FUfC&WBg8D-7)-MhY`9d&K0`x!Ii^A=F>5WZtl&UBEWdwo&hjabf+XgCY3<(x z=>|ybd2z9QT3PXQ6nk9EtSMSiB=nzOs;rGCaQ^XY`e@D zFLMb#5`^o{3Y}GuZ2@zm4dXqwZPU@va1M-LHgiJhq)-@cT{3gHDS(oXZa+Y>wH7e! z`2kanWTX~Y4G#7fwEPpEfT!|e!!6=3u3>LfR#rk27ZbG0pF9=DCRSZpdi|Af zQx|M46#Q@DR>gUiy0ow}9u|h@t*S2)ABaQZr%z5WB;LN27&vh6v0_DpK6D1#5Z5vO z1@DQ?D6BtSXKBhve`y1C84Z^T3IZs2cYUf{JRNlZAI9DTp6kEu8~)lmGdtNUN=78g z-bD6_tPmM3gb-z9l?V-cMv2mtiYSy>p%7V>vPx+^?{A&gbzk@WJooGMc)ia5b)NsL z`1y|Ga~$t=sH;04K zKLn&R8Ws_eeCk+I;=a@3^736B9UrjX5lB-a%-w)Uh%vxB=vHuX@#ThEi4NUr3fgBg zjEVU6Ah5F?dO)KRTF%Y_n(}8JWuJ=-Kw|-%mDoV8&Cjb}IFje#yKU0c$thDgBuG3oXB) zo zW1j6E7;wcNlhrW9`w*|-wp|T_=@GG01Y9}aVMTx>1*a~CPUx>vQkaPUq#r|t1-%Hy zeFF4LOf8zoH2C?ke3XFknqT5KWTuLn^pJem=+{R(cN?Ul-kE2(SU8H+aKw5H&ko1A z9rE?9sH+QshnhSq-9bal^sxVm*tT5l+#|p;Sz1e zTaQ);GAif0VVj2xifd}HI7d_Pg3*U!?9OBVf(=Axg1+J{pTqJ3NOAC{R99Ap+llmnwbzAN%;rKF^)_KYc~3ezvX>__#P85Xs#8*jLLUt;k7 zu|LRXi}{UZ2$BS78!hp4eoAxya zV;S0w^qzr z_@I)1u46j_b;HkEO6&c2_wIr!J~oej6=;g}Lp3PyECjTD{Y*V?yfGMfB^ybJwy4~~ z=FyEg`Ij#3ER%D&$wt7+rOQTr>A9++A|>(u`6-~2nwpw^!%Gk~W+>^1G_)kKQO%vo z^buD)N^LzX8kplZptkP9xpUInWftb=uim&JxnpX2dXrOwQIYJ7b|b~coDa)81O)|w zv)S0#v;(KOVO6tD$JDWr`zy;16TU^WHH!RLE zXYzJNKh$jQ-0PTAzwO|m$lrPzoaDn1MXTG=Yg-~Dt zXv~3GJhs&82*e~{^&0_2$Y0b{Rpp7gTvbI$;1XQ}x@tzSjW#8Z$cEl>@h`e?VIA@M zZul89KGpr_6AwJNHII{l7@L_f^3e+6yZ__Uw!9l10ZbMH5ZpqKE}9CbMbPHyE>sT` zS$s*4EyPezk?5^d6T~M0Tb$pqKZ98z!3BOF6_ZT0AnqQ_XEU$rCQ#5T!qLRs-1}T8 zbms!JJ{8u$$!L4CIu0c`Q28~V6ET=^_j-F58YcCg((_4o_s<_X zELi<`);DR*x|)Pnm`ZX*qp2QKyrIR=y6cZ2^v^mvahNe%hJpIibqjVNdIN6<$9L|U zd$UMi!&{`xQW!Uzqvz{* z%#_jiLOus|ET!-5Tekp^`Pws%{-!rBHlU6u*00~izNGbh0=9^5!}HPFJ_a>3HR7le zOu34o@7kA_5Bi02G%Wcv5rl#10%S_oic##d?a9ZDsT1CGbC9FHWh?~W6Zt; z(2f+jM0_c7n>J_7>CjgqI8dw)PO$Gm-v}`IcEpz|L|CFeif2m}apN3Ao-mdofUPEC z%r0~@dkHRO-+X(aV-hGx_Sv(C5EFcM+0@g3FHPJAe-81A05z~8;{hN5sN}&i6acevz*a7 zIKtv{U(VqwnPmzoAVNFX{o66ss0qUD;iaWTq_iR*e|#ZqdBdB9LKFJrp%`UUe*$<2 zPA_Es52E`921R}(j93_FDsaX)%(=+|4cv~z8%hE*dH<~}HH>rsQsMo@cn3xkq)C@V zferGZdLg}lu8p)!N~Z}do|@s&U`Y*Nx;>4Fjq7-q4>Huv$L)QiF`D;wcgMVVoS8#L zPwd#S1BNl2IXe6IZ){h0gz@tRzBMQrkl&|LQm|MTpInEvPP`Xlbu>=c#D%ie%at;s z=Xs*7XqLUTA=Pgnc{3zeB_-m>{=!6$x$foj=Rv?_`=9xXV;-C7DpSL^MA0-iF~N2+ zM<`N4Oq8~4dG`GI^g@_<6=yCRHAPKXW4Z=1-~Z(TxMgj7Is+5PH?%bP;{xFK!xqM2 z*i%()EMwXgJE)9MfGzp*T#Q!kg5GO4EDU9TX#|!PgH>^1YCH57bUC2S&0V%7iM*t+ov}(#2tZR4zwIl5$q0APRsA|A%__v11rrhO3AHh@|ZoUw>faa;gBb?E~1xb zGVk2Eqb2+bpAhhr(a&51o!?)@q_wH&<1o5EB9%1n-{WB1yif0WGxm18=~sVHcy>7@ z)G*f!ZwDcahXO`)T=eCYuvTF@IiEgs6A-!661XmH;qNYAeeCpl6neBxE;kkInU~*v zfn*B12bLw2zsz0POkQLMIc}$OC)4S?=05kAI-*KMX9B&O~H55JPBUqCU(h*Qyb8B9P>i7YV0spdQ(YYHTm-*L^-)Fzl zz1WBQd0zAA7Oe8Nw^!Y~nO#CQ2Yy8C0$=oWa3GTn&<+9|A)DKU86OUE4hL3>+ZTGM zh_|MMe5_mie0>W}G(jVwD;9#I0OQzPUwJyEH%G&sm$whkCI5a9G=zqO&=O|LxWg_U zHx=|n4M9WUSa4(ML^p{2p`KS9u`ok53B3lMQCY^Y20qJ z{H%PAhnAWeeQzL|QuyW%Om$|4TToj#d)WbyC+!Vr9Z1BiB$&|37b=OBJbd=n^8;Rk#pe$AVvQhN}UJ@V3@g<4&MqVhGNlNCI|u z4;d}Hga{NBgl?Q@xzYDh;vr^#ELQ8G6eq&qm_T0vlSJ%|x%$D6(8(6C7~AOalR361 zw1}b%RTD&WAx9mnWMq|WblYXbz-cb^Gmq@KV&*=kB%Id9sq3G6)S*45BD`K}ax^@( zE-~Yxj#;H%01H&1)!;+seWHr{>WPUwnPqRH!mOw5Tt@y(QJq9<7Z;5^596`d^{0pa zGP=&gcueqHa@Z?lqgwRJnCF$SV@1(Eq4QU{XBAORG?>UkpNiEt^);fZJd(Oy{e*5=>3D60RRbg1Ym9~1} z?GEK%FCIM?;wpiGoH|Netl8Po5zCvlBHzN{w$*r}oc!9*E@-JksYed*6L0kZu6)B-TDC-iZj zuR{EEe6;!%EH*>wMS>PUvzdG6jvuGuvoaNIco_TWt?(O@5`;D46UlL>oSK(lqX#St z#V1aP(nCec=73TP!uDW-%|jXoJ{=ykt$Rv7abE<6e!sY+U?^HP=5+YfQ&CYp zp*Kv#qgph&EUmz)QX89zL5?!QMOXf%j!^bhYPr1#GPl;|=18LfRkt-?we zU=7G_ti_`z(Q4 zyZ_}&=yxTgWn>tBJ*6ZweZX;C11F}Sz($i`Yi;d(KROD-CS+s?{t7{aFB2XPO%wj*wl7cbLW13iV@{va!s3XHuyn8S$`}y61 z^St+@w5428>CZVl+m9c`mqgp?F=d?M->~04`OR-%LB+NF z#S*&8lq8P>&KZ{9CyH1_Z9F-)l5*j~8@w2mG60gfS^Z@o7jrjBoOs(hV4=V9q%m6y zKK)kr<`_7+9i5yk5K)C-IJmR|wj9L`>n~>JHFD4^wto_N{oV95>0pJ->HfhV7%|X( z!upd?whwEtAfIS#XlQZa8sI{+iHPJ={3=iT`x`(I0PcemV8@O>IAxGXEhjCl)f3!e z<>3s96J-Ycg@c?OqD`aZO?x}OY=@}Ghh3)}gFrfiP;!wJbY;<6+8X7LK58aTh z3KuQ{{lKOH9rd#{qN+FK>f4fPJE6tag1d)2=5``dLujY2?(wz>B*o#7#2T1-)b~-=3C04pQgzl2v~mNwY!?fnN!pYMF#%nF>o&R}%P? zd?3y!_S~j7zp#MZZqI-8oW#No#n z=<6Ft*5>BqNO3Xd8Y`^&d$sD!H_3lLOEw8%vl~FR;tN5^=g&J&eDWwLZ)iA(wjYFpl7fO7N`U8@6dzwlz(wnX zgf8agF%o#cgg{WYZ{del0AESuC1Bcq$<5NT0BY&-@|V5WBC|oAKErF6)TXDTyaOtC zQ3~%T^s@gxgfgn~-@p3zAA<_%UH_r_@qfG?{qNjAFsw%t3*CGRFkzO;%E@KrmP1F| z&|nk$@NCMp7T*h+-_FK(23?}5@v@AhXb3eo;kuIK_4tUniJ+ldX9ic{z>O5)L_8qi ziN@S^fr0Ms7Cv1RaEq5K9#aEaX0qw+?pA=Zy43so4z7&%7%DK+;`-zxEvrETA0A{Q z>fnpMz7zy^oW2@b?6TQuFKhGy(nWVb1coKBe_rd_Hk{U8py__9B4c$|@+@DQicE-L z)MnjX)aRX@O&?4wkah~>B*4Bg^ZvcMnwpKhy=jLW7bCftIQnN8Fi=<5H#i%y?bjPg zD)7I401IuH%1=Y!Q~*#du;c~|olK#H;GYce_wqvnl?(B2?p~BE+?S2AvZ6{ZO_5NM zb4HPlT|f^n2L@E&JL5eUUeD|xmkq#ob-4H1&-IK(1HjpUb)vKAd1r+PQY_d7sgT}g zec~Kr(SLqJOjmt}(^*ix<1(+?q5tY}kj+1Sxw+hrS&$ zL94#i^gNmaP@_0c-+%akLb?=o7ZEdfL7`5AXS6dY);WJ-g!E zxDf#YgM;5;y|@5Xa$(_HvJ*J|9^r~e7cdfLgZms`i0xBE00r1euT=b0WGz`nMMVL% zfOZxdd3!KRQ&t^&Ssw^938f>%b*Oh&Vo{6@4taur7hyF3ClU6Tu=mi@>8afWuv=q7M&}c(RdVD3BWZLW@cV>4!|}KA3T^Py*64O zX8}GFBvgWH+8#U*k(Q>P=GhBm0~#M6pE5+rK>h*YtH_*`Tv{?@l&F0)ln-#IVPDH; z1Ykq6*4HnDa|fsd8$GOGna2QihQU%g^puT{ZxC-EeqD4`i{F0&*Tw8b(6h3BhM-i> zwWkB;BaG>e&z5FYc?8H8nZ7noPX2rMt^h3Cb?HtwuY8o!=7BUL zQ`2GmDEyo~dkS-N2Z2dIc@yka5WD;NVg!R94fcyf;$%TXNEDQos=xpVBo=)dPB9cd zz(dfD#`bbS(<8wDp(qm^xF$LrfSvO4^4Qjd)#XU)adzH@P!7l^0R`VHmi`RG@~m17Oqf4KO&7jtmpnM%qB;0SU92r2N~PCW4@JDmm0@66Dps3|w5|IFWZ$+)N>-MUAVD&$!u2~;=WrQ?$@oV$bxrL4cRy@t1Yg=4GF{>HdjpW9 z?a?Euz#+A$Rb`XAk>5iBR0AlXk7Hv@fP9yvm(4}s0fB(UOQ?Zk-=E*VdKW?8G9K!J z3$${U^uPlPD=|*6?m_!W;og$Sj@o-~fT?`OCPHHPh$8ab$2;S|HVR%3APR>Wia_oBr zY8rf=mL8512Bru_+j*=lX44A^slx@z>9}|319uuTJ^Q|_%Dv(DsH0+Wk?`pZWu*VW z%mVuh7;HbTL!kEkUg*2I!twIG=^JXt((*FWp8kMm!z*;tWh1{eKFC(6#*U0e(Gid@ zpYvybDPEXykDaYWH?lpPNRLvlx zOTLt;&6vlvuTDX;v%Fyv?7uiCHW9|r<}?(cJH)SU7M=AnBYb%~@ z-m&8tG^)xus0aK6d0;NH-_xpVY|P2NUs(9y#S8A=D+(OwUQqR*?<5~L_Rx*M(C`}T z%HS`(AG*GQfUW0br)2b*`IQy0?#kcmYHQbYH6mt0rjB7*R%gc*IOHpHP6?>4A>alw z7JCfdMqgu-HXDe;l4%K2X}*TQ^{xnSIg}tqH567`R1^w-dlp0j$E$Re6ljJvZWJ1- zEUvBn4KX_hHO7kIiN`F)>|%Pm^c`(Jq4lf;t_27& zMw>Jj%Q@I{=-!k7(mHecv{5*E1%fD{d8+J`)WvnuU=EKthT8shTYc@ju+k!4hDyXI zRnaj1?rt5QSezy}*NF`L0|s&rk3}3#{tO&zCAw~V+1b0fr3+1AxX2tNedh#fENk8g z(MlrbbzS^~bW7WHkFRzP4()G)F?3xq9-#l(?8gN%5Ui@Xr zD>V+oBF!-_i7Sm#^DYu;D|Vgl>F+w{cOLG!>A|iLvG4}cMCi5U_Z7e8Z>B@(d zU;m6b^+Gr~Ct*aVD8L+n#?I^Z-6fy!buV8s)HgY9XxWg$86Fbfg68F@@p+ZZGo0W>g#WD(5$>PUQz7(=g#T_PLN^ zO9DH8O0HeoRipu=4oEiMAt$-vnPYog>Eti*vM-_TFn!_0&?@mWxWcz@- zV#y^PBv2}1KBrTtAT8YvA;>C!1Vk0cK1Dc6sfXg&Df(NTM7b6MzA`e{2nYPj#>N#0 z^u8=FdsXQd9eQg6GfDE4^30%+2L#Z>Jlx_%t)51ZK@Gq_y}BAfBS@pO`6$Mx-~$IH z7Q$wJ5wdjmq|=j*Gt4B z#=t881HK!OTb$^S8DZijgaZ$X0NX4sD#9yFP5FStDjvzN7OJ4X!(S(vOidvo23o-+ z>O(x2HhI{IUy}?#tOQXhyBt-1gwo)3Z;_qzG5d`*h}|Mn(WC#&`$a#+wu#wH zOYi?&l~>P%}uJaN$VEi z0W-v^l$TEf6GN5xfUPuO6IPW}0E41yf&LCN3s!4j`}<6_)`>fKzY-G@@j)S1!~u;7 z)wwKS(T15-fV&09 zjQx}q4jX2yntfX{%MLG_*iW%ve>$L)s=ox%)~eevQ5kPQgTf$E{5ecaXtXVL+@%D7xo>pyMLuNDy7`Jsfbp+v9y3cH_W zP#}=Yf|A2BD_{3u&8ts+g3eo9@5!_AT|TD6;^uK>J)(w(tt+dmb$6U+dwTC!RHedu zOKL=MEEf96CVAD2vQjAD#802uEL81<0lySez`mD=1C+vX9H8m)@{M~&+0l4;dhp}24)fR3&2 zdCJBz<8Os?G-}THbniN#GcuI*YUAX{cFZZ=VyAF*akaPX)?i0-LP6kl?!A}-xgI7^ zYwN5-e^%ol%nikE7it1S)z+h50{~>Br$z*vRgoU58Qu)Q;LEYqF8rqiRea^0byuXI-bOA9cGfWnq^9)tX&^WMS_dg@(v zQyxf6IB^1<;}4u=08j2hl>+)T%t~$5-d%5^yWL}Ly=qWUkc!H6JZ5c=9|I)@MYV_% z1~Rqe)Kqd+Dxzhcco&=Z`zK5m8jggNTn^1MG!=j9U#8sdoX;^_x;#wh^cst#(kZVR z>DE2j;FLs1poh&mr~R($?A^ZnE1aZQZ#nIFWM2qk<3hJR{KpM46TMpoY*C>~ODTx& z)*Si{T!Y=h?D$T^E9}+6A8NfJ zJJ5_}K{sz|7}<+nq3xsim8hIzq^+%zQ+-47^<+e6-x(&PNMv@5u%R|VzmLfr-)L!N zg^t*gk8a1++M1J%P3sM3FYm&9`H^pn!g?;8(#mP#qCG-h+@&#%bQ<Z=#vuM{s6Dr*2$a z$cgy)3>j#l+MWJS|FHjE0oi5Qs{i&qA7}aNdv1i)r3?~JgHyoxmPI@N(RSc2b2Y*h zLmA1T!3h&4v_b!ILGvMqqZT(ES=cejK=^e?uGQ#?v}Gn`AP)~~V0`b37qwTelxK_8 z>q^|nYAXM~nXn)Ga_&KKAYvHH4P7n*N%$6YQ#wwVc8wrC0eq*~ueily()K6$>Y_wg-MjJO52gYBbv$*RANpyNzo7iM2e>g33UrSia zBy8~=L-<-oOVYrXA@k0s4AD8~Jz7;{D4XtO7R>Jf2qDPPbD{l4gpE`mGdx@X&(Yscy1Zo(6R zSsf|)mAR9LT+jgA%}vADhA@eu#zxRez>@J7{?TecO1DBU4G>$YIwY381y?N~o>(*g3;kS6fLXg~P|9Qo2Sx#J+p63i&fBEu-BmDs`ABKgqug*gT2HYEc ztzVRUjUO22nQr_4VTK;$!9-)&D0sd{q%JqK@)vL-{0zN^FyKIAVHp&(tY}nku*xoS zC8t1U9zB@!)6YP`ET2ILu{c)uk9E{9Dk5Fkp03J^WZwZ3@Juz5(?3Ca1x^h5245NM z*c^gp36D6A!0ulH1lma}HRn7JzsD*`E?*6>@aPCRVI<$V^8={*!dW?U4Z+;CXAJWM zq<#;lV}y9bXUM@`cM?Z^XVJUGuit7Q*^wmV&V?S#$A{)*JXlSRyW`a>-gOfm|KS(6z_li6ao(s_8v08HW@fpK8_PCr zm5`v(KVoNPRoBoU2m}UyTVkY@E7-+NM6M`_hc_yGK8&2jgwl~>+wnFSHW}|vTY#TE zhi?TzmwdOTpv}QmZFBqpxbMUow>$*u>VE`c58a&y_Er`aYf@U@ z!!y^!Ecy^Z9@<{sTeR6QXs9YEGzVOuRO}Y6p9@Vg94%DVH~v_ORwgDUhBS=i<&itY zfU@)OOixeWkN%~Oa3lF=oHA{rqnFwyk_5kQU)hcABTD7}~IRej3jyCU|V%^l(=1CaJ?bp>uCPfU+mO3}!Ch1H9#)T?*MUcQ{KE$l(8W`0+EJ`k z#~2I<0WE0S_f2R90PX@0nR)k4vdU?9i^_8?-KAI0d9>;W*LpU0QKcOT^g)ZkCM5Lf zfeo6P{G^^zbL|arkrmwJ8XV?FgX)*CLdD($NSlFlJl41BPb|V?EZA z$`VLtfto;%iZ4K%g8-QTZ)32=w5N`oF08cx(^bYvtPkl@>h9L~xcqwMW zHJ@)wejw79r=P9cerdG#nnDBfDV7G|Q;!1oz#|9n1#kz}FAA-M>Fkm3w4!^{+i<;Y1R0f8Jp=CY_fEy;2E@4{D@w~kSg&s?8 zV$)Jnxa=-ob_Qo#KgQ$u47rFLg?LZo#H_5G{wwm6a)K)ouY-XBc3EaVG|IYq zHtU6v!o7V;ed?tiz83h-?0AZFm-cvh#Xk-Q{`=SXJ(zL&G=zw!v$NyYOq#q}9qzz` zJ@D{+y?j1UU>MHvilPCBSQbJTByDpNP~I;=vsO5H5zak?Y~k&ti-G?NBul-+Wq^n< zQ=8low1WE&j|7A>*fet#>g{A>ol-na;0vI;1TOO*`X%VWK@Das`(34~jDw80S>$u6Sgtb*(e%Gj}gb$(@j9!L~bfUbT* zw=?B-guR0H#S_0#PEJ`#iHztK%^x zPr!P?hO4TsU@l^1VuDg*UuS~aRQw>1vRK}3sonrF5fN8|81*g{7f%3V^W!(|+r2D*FRJ$xL@73{E-Y&! zKFc0BXu71YW=<7@tAf7C&eoQl`t8)ziTiE0XFpPGZ_G>+JN;0-aC2D3exXp?lb%$| zHTz25^AZF-trK#5k;H<`^b^~$$Cr{o`*3nQVrLmE7tp!%S7Rw^6ZQ$`=8%hBNkZns zRuD4Ryuo9Hq)zaX_=47h zg-jR2>FXt=+=T#Wma<;Rv6A~k|NM?p+`Mg@fO!r)s|H=<07_We+DCgpe%ORNMa=Y9_5o-GOV)G3n+OgLF0jKX z^9HmKL`Q7YWYE#43pnTzP=pMZyUMY%M=eFaiT)3&ClPSvv17*wFsASYYR2xVpuQ-P zIGnEcf1^vv8bB6Th!V&GZv>tNz8y#-UZTC(yNpNLJJ92jG?NUG1az7vfCr%)0Y%j7ysYTf6$%V2W zb;KAt!R31|4t~{&yeM{Iw|K%K9nX2{n(#4uJRgeAFL?(x3zLe745lA2UG^Aq$qzhx zwk9gT*O%O@N6K%`wUngFM@y`KjQir?{PIXQGG*0DlIV1Uv%E3z!_lR&MO}s+W@nK#UB0KK_n>1Upq@80F!)Q<#E4ow6{P1d zEpFU--m3Cy^@D|4MFIU{&0O8jQ0EiDK;9M8Eu}y9SDxt%KX7K~(X?7`h~6#-sb1!b z8Qwx_18-juJ|DPVY^90=#61Sg8V9CS`6*mS!aX3s%t!6mZw!TZ+dj{&xNJbv4c*_BZJS#(7>oS z5(-;{NVxdtLZ?UsFHM;*FZ?gp+*>8mH5U;Za!OlJFq4^u1a4*m(Uo}NQ;eXs1sCx)3K^M|gkj&i5)?#|b@6x&AU7PLE z9e8gs$@?07;vz!xVLwRZN2a55?$T6Q{mJJCOFWZH&RLZ3X^3=a1Xn$(qv(9Wp4z>Y zN}CPfHs7n^VMBd=tX!a{j>C;9c1!gg5c7Z@X=-W;NhLU)^kqns(^YqhsYxPc_jTpn z9Bjj`+u)LdBLTw#4gpg+C3t48T|52gZI-12w5B-5yVLs(Jc5Fdt?~_iUPKza#nS@x z1?d2}pzm>yDh6?FUt-t;F^V&!I1AV64{YwKJnq24Fs+hej>CryEK*Np(!I*VmSwu+ zDyzGlcykr0A~a75v3AGw9Y1HOPd?|!sDbFK>iw}B8%`ljyUPcY7&%?rYzZ=6 zsG`D1Trm$oHoX3jEzXyoO>9w&<&x03>oamRDE?mJIAYpz~G2aebrSU96G{LU&^q`x$KPzH1f=(I5 z6mt5}vN8^8Tvrzq@b&tT*KZuXhoo-%2L=M6OoQA2f)`j$*uQfJR#V2n=S0BfjRyzD zp$B(el1?WUBS4E};J!hb(87#WQGY{dkV zLwtOFi<1D#2$dGzZGN{2C@a7qgXciq!RG5xWcMK+M)_JNbQAD|eaF!Sm{!#Uu@nTc ztdS%n!B6!Bm!2p@K9MDS~Pi8@^yY|+H#qY@UpT`%)~3L zzU#Go=ig1!CP8#r(Z8 zpi+qpNXV{){pZ2Z&g9?P91>8lR`#c90*YaCN5=*wr2}AUl~2^x)Mx_PKzB&4twHJ& zXx&iPT0P^IC(oa&ZrNgRhpt6CXb>@?-K(;)cq4U=@?YZEPF{s0?cKC2zi;SFbw%RXMc+ZGg|cs=y-ry@{v3mP=`pzZpfvM!XM_c4Yfz|7NL2=NkAt7Pf$*fzX zG5}C5#ylnhC$;x|;e*(Rfm#Vd2PQIY!|KK3X>lIEZ$JZslnKfhm^ZSnA&RD9o}B<~ zgY_r$1fCx0gurl%b%XCQe;~+=+=~wM5u!FYf#Z7pU&N`2f(bgd(8@zxML+6u5yLTf z2<$ae;HeE!mvuiHSHOz;&ML6QY-0{m6BS3xgx0M~6`CD4?P%gQu`;ngYyKuq?Nj`$ zkV&+JFQ@jXmV9f|aLGXtvtbYa2PdTRY>eBR1TBQG?t8Sb^Jj%kWA)qk!8_y9rB5T` zs$g+g{ygedXc>ttV>613$(}Vz7I_2fM_PaKm?=-N=0u({Cw6^XU znnT)))*&<=Jf$dnKe2k!w>H4fukv8B0*gA`Z}<(>>??tvr(c3W0(SMXTS z%oPBwI|}8!jZGH9DbeXbaD@Y_W3pWhqi!Jy87nCYU)Y7r(ods^U)$%%)^;IyC~kal zLv%jnNCtt=L5LT3A{ScLfia=)f!`EZ!ob>0fFZ?LKZB=P! zFZK%ewAEAdLH9PKLxjGBVi3-42#2xBi{V!Fojco>N{l4_-P*Q~vMTiq<&Ug+KgAxv zy>0Hd@XY6A^BR$B#_j3$i1hTFz=(h11Z_io*X!5k!;ARzt#J43)Uyn)enauV6+Pk7 z2hs`8ep#6$>K{gTU(?G7oCX@+9iIHt7As>>fL`E9M^KT1f&v_9j~a@bUA1o$cF;*$>@E zXJ2p@?oJ$(6}`?3VHjhne}y&y?}Qxy>@&GX-0i+l7ZXAo!Ra8?=pb|vh-pUiaqu#0 z`6M<4O-)WF_%D6^YO!-Cb|urOXL9|;n)mht`ekDyI0q~7KVu`5#9Xgd_jgKata<)f2&SsmyMk$~^#0}E zQpN?+Ch4LpZxf*X`GOt-d`r3{i(>9a=mzj_JTDFJva)&*U8xcsa=}RStO=a=xXh_b z5rL8rm4ewuWea!!r8&lc!h`QD4_w6r2TBfi;HM~<541srU*w@T-Z+(QQi>)UJBiSw zqMvD~ukVY#Q>aszc_DMXh3JkQZaa69 zt6Ma})z+Oo(Z< zCDqT?_t6a%JQ(F~znj}_hg~>m_iiEf?^)S0>MfOyj^zqr+ zH5HN8xA`e!yJeEp7|sJZuUQ=L&OE8ti0{m2sM(3u3Lf&>-E6O* z|3{K92k-}gurIO`w1%P?x&BKFAWXRHP3FHMe~~RTxvHFi8)9MlpnsTg>CJ!sD|MWL z*N7SZ-QWLBuRGNhM2lacM*g7yYs8NYzpNzBFmPv@l;RialHsCL%)N{wHeu7y`-bGo zL#@u;UN~v-RU=RHwrdTwd^poMJ>B`9y9sX!G>=}O%?Lk`KZV~4?c((tH+I8;zOSQK z5+1-j$ehGQAYXqXM+&f6w|{Gfuo%aFU*7@fMA08{zP8+y({bVad1N4b$5o%|pZ(MR z{5cZ&;Df~GUUa6uOfGeE-4DxNtPRpW1EqOeTN}H@uhqy~9Gzxi`S+1dBDfM6 zi;(;}J31CxyV>+S+~2+Zo`pdB_pZRaBO~GESFg^4*@D~DFVJy_8olJgmoMv(_6z|* zi^l@MNiaziF+~+1;V~Qli~~evZ)exEGIF%S2$5`%27vZNV#G-J^aVs0ko^XPv1B}{ zG?&J<4_|(pc6@Ato`N6Yd%&Y?WCLS6uFE*R>c2fM@2i+;gjIb|b*7@v!Cjm$qm9eH zOA``*JRw0JTn0ou)CX={6=>LbrH?VW`^Hwd5eWF#8*c~)CPJ>sMUv=S@2`Vi#SI}d zzk_^z5!D_A-}7YXR;8W5@(2u^3vNcTXAv*97$sdXa*ay?Bo%> z*nc{w?;^G|0o&f^RyAo}vti_>q-SxIRB^5V+bd;5;k)cLOWZA)!r#k85N_4<0y$9BfX3{Rm6QjS_Z2o4z}S5_!w`M|SQ zAJfnlw<{UwvPVnV-;daX|{NE4DJY%7R?N z(mhepar9Ph@FU?sP*LbdDo2z1gE%16$QeBbFs{>Bwk+yfLQ8y+v<+1%LU8cpP`E>! z0Ixju(fsy@LJN$M#`Py&*YI2ex%&fK?7^bPbLY;SsYezFv|N#neDyz8LmT+FcG2DWu6cj^$9@KwYZV)|^ThPd~7r+Ckk}Gq=hHjblT;-MQ z8np>x;yb#mzT@CLAvl7h6AbXAe0mm_9+6>FU=ksYd$zIk#iY%3{^%3nk$}CE#Jgvod6qItyT90nM z-ZrWp7hM!zU_Vd)q)%$T*)4f*e|M-$UzuC$OB>NlsHln$Lu#XIU_fhPA4+vy{UnV4 zaO7d3yeHrrn0K}!Oc~_O?%hK7^x|2DKYV+0LhFUM>|v z8Dl?vf2Y>fiNyO{&npTiZ&3DMrc7L@7lg zvYC|)bOTNiJ$OE$1t7OEo_`t|v2Ld&r*yLDk`D#qOenP6+%6ri#5Fj0g6h4nbh6I< z-g6fu^{u2?-z&=``v(N*rO@}hS=U0w*TVWt0l%L#&ANgY*x#tmnx~4qXoxO}QY0ui zIy+NoA>G@AftB?VU@g}YP^oW@jMBuw5^T+N_Tt4g1pEMiQVXR`L^I)$)qU<3dmNL zJ*fy3aB}%IXcWOYa7newC;VQgp=Bi8eSNWME@>Btp&rLD&&Q_<>+9%Pe?J~@5c=&e zqw##lfhlIf?3_ZZAEK6z;gp&YQ|CSi6VE}~XS)KdCvI}5Wt^Y68hZE)np5oUVIt0X z+M1iE-ntd;=$I>;8N5;Im46%`778;HFf$e`Av)p^nRyyy*XTSJU@6E{j}X<94sxVe z*qU43iJCO-KK@%LZjyCk*5acUTLZ(fmXI511(&YAU15wCq4`0bydjO+w31(?Vf{YHN>uY?IXgQl~|)ZKH+?@Ozs^Md37`I$#HA>wCMw1Ye?=A`XgYHJ#9$S zA+FZd6)FX1d*t)CT@Q|br+4yfecRFGB66jDshb`)BEb?f&2Bs&8dr0o?=sdtq9?IU zzJ_Km=6~I(4I()ms1$&-ADjJzzXe;*EY?RIcdYTzt_smUzj009g)B;nHp!ptZTr^= z?%4BaVr`rb<5vbQdqIZmT`K;*J8G@+A}H^7F5kU{WKgtF9oh2MDkCztDAJZ(uuhG5 zoW6eNUag4^02$I1a(8}6Ecpnb@5^)d@}efdbUVFx6uvPY_TVR8AePX5A1vxUu>#$C zSt3aW7&jZN{8)EL=Hm_o@c1jaESID<;#T*c}ca_XVKSA zek{BR{aeIishkchA4YGj|3I|)+NmwI64GAvc4_ns3{crUYj3}aMRZ>JG8O&f#Mg;JixL_KmdH}b1AVC* z=!b?D35vH>l&kk$j~RuH3#(sB@d^LH4+JlU?XF#m7*Vhn&eyu!y_&%Xf`;wH!H=&p z|L8a!W-6#mKtIDsDCU|q4ls)HmZ)z^OfN8J^VdJ`^Y;0~S~VU27gD};4 z+Amv5L!=C9DE-B{*?0_`D_C(&wzvqRhun}L*6}8MYT`Udzjfz?InA#`L1kaI_iKVj zbXt-?OM~00XsA^FQvC|_4lKYU?2K6lHjx5}z44d7kJ0Jg#${>pGpn_cQMIeZSV-73(rm$8lbG8uEW=X3qemDWB62 z#I>75Rte}hRK%5m8+OOAuimjST-Nk-qb)`i8i78~Pw~`fxA3CD z&LqgtByTm8sJ)m%V}Yy?gk-omJD(ygb(b}8Bia>dXJo>|G=~YKc)=Nz$OIjF3(*a79cMO7LU^t%wZRlxuQ3;R?|42cXR%P7m%V3 z-??ME&^9!>ukZD}QWvyM0YbmybHWoBwiTs=TZQ3#u&YIWqI3{tJR0QE^K&w_? zU+;6~mouzTkiXmFjerUaaz^YiA~ypYhKf&U4j2L|py{9C^z%`nOzo+ANCWZRl_>qf zf`Tu3YqEs0zMR2TamG=D9f1Ur#s3Y;Z+SFGg_V*gAlNFuuVz^R!tr+7O)O>a!wW|M z_NP+CwE=FAsO-ml7i(%(Hrn}95Wvq5XMY4)hFMqxMq4M}nhH+>WhO0LkWM@bv=yc@`r^hD?c788 zV#?(l*YwI^U|1xJ3j`&TMP{vZ(Ua{oV&;dc(JUPGwo!=g!j9zT_V(jYAmiv9=27RS z-tnhTfDap3T9JuR&B~(tpry&P%-sfcZ^e&4Ic8!&FX{lE6~37J2e{eU!O`gD;1$V~ zCFXnFHs4NSZ5a71@qUjmBee%FyVuyO$D5_%`X|vXcr8*_21w|a&`(8#OW)1Q-`l=n z;_#|q+*GXN29AXNC(;1PMr;Ij)_Ie%aCqtv#v_F!8F~5rJ>%?hV=+->H?}Qpseb1) zFLwg+S^~!dP8lJsbd$8mPFzkcVceZzVTUtk=0TAJVl#6P>Po;OQHL2DEu?VxHK5u| z0NpkAMX|kJoS$zO1`IfS+6_6TdTKunL3HVPKD?8kkH1X6dUd)!7ph}Lc5G}H=;T9= zju5)Q004WNaJYJaCidjKd76!#Q(NWauCG9X;^OSQ_rL)IQ01O zjiZ%|bhh6BX$Zot*-6U(7p5$PT1t|V1hE+11lp(?xVUh<`~ZW7!f4uzPMg9WpleH) zG{zZZFkxz)Se$iVp-*4;qDA}zM-`ub-`S(CpUfh zUUs4&U9&;0{{`h}W^u`?%1XE-wwe=oG`zTF7ApTY(t}rUXh4Wn%~18Kuk;qo@c_Nl zqrQ)ir{27YDVx6h2RjLzkJS8vi(qE;W5~F1=b^qrK!P>I#yDD5JJf_>MiqbE+3 z8f>$9aOzH0mH>gZ2mc!mzUI#i2%OC4`0?VZs`Ze%u3nAEX@GTR%(I|TX7;-Lhcn2? z{ey&05B){LorM9bL)ZhQJvPAcW3yyWPrP#XAo@A&WCp=x zm*5^SmT0Fo_P#@iHAcc2;q-iteVo3SN4qDNtje4zf>F+ZNtkACQS_!8S3>S;)Rikx zM$LbXH74pn$tbT2w;Bb`@n=k_xymswZZx1|sC^O(`@o%BdQPN2ejS?ABOwi6eg;)P z1)`zkJ0svq6CRQHYLi;A+c8rXb;)rW!B23^|SaV-$FJf|ZF;wD5}X zdyq$#w~U_J)98nOv*F{bFpJ5jYT!?yyDyfIk$G3?kt}l9_hD3*2OW#nh^fzYJg^r~D56u*2Oxpbi^4!T2I-8BZ^# zFA>W~?h3hJ@yi`27 zwTDynzo`diSJL8Qg5DA(E=Nb7_VU^q>r9y*Ie~8jLmOhA)5p(@tu z)Ww~ge*1-PKFwoR=@K*J2L^OHZl0bv5P_mWKb#D;bssYm-G$#@Jh)y1=x&51 z!N33{Z&8saz&b#z5#ixTBYV-@EOTa>(#q3DUIdeu{@mhSE20&SS zLp(q6Q4_a!-rVp(4;?UI&*a&j8ZZ-Sn#f2)!v?3u&YhkfRv)a%fA9}$!Fcf<1NfD{ zgvN!f)6RcM4r)p@b}7$5Dm=`?vOf&~!BW#VJC$O-8Dz>A@BA?1!P>ss-BS`ruE)}w z4VAat2Nyh~4<7fc+)4A;{?pi7ABH0uRjsdrzPUP-y%;!A%C>I^e1;89zFi6mvtzwv zFGgVd-~#MT);2af_7|&K#^6YW$^q37bPNu#%CzD;8fUwzEbl=%1X>ajRp>-J`$}c# z!Ghz+!d49Qs|e%R>mE^0@wQENdZ}{L4ix-|%a@T*Tv=MGPD@!X3?f{4bu@Sd`&AKU zAMc)&=dAXqT(L2Jk-S`YjtX@jv!0ZsBt%W0(f^MW;Tgwx7`HSRYpjd_Ei1f3;4mP; zuvUGtbEA~!v2Vl68_Re8PCfkr@;c=I2^cdWjs|;32ETsAV|SgoOxD$Nv2qP2PrN~( z4qZLelIZ^jO~LuEi-xWSfpbYecPRfyZUtQApP8Hcj(dU(O3bMAmlw6wnfjE>^2)JXX@wjth>5wm z!5srXeyk@$#ro)vV_+B;bv@>t^@B70XvE`kZ9gm!LM~BxhEi+fKQu^s1&!%y^1k?U z&8@Evsd*8~y}e2pW_5(Ev>J@S%10nVu|pVxJ$_SiEobYJ zOa6kE5q!f)G%f)dx>fAjwavK_^a9!R={16}o&3G>@i!F#M>QaDXV%$uq3`hUGDb9_ zNuSX{I%$d-?s4by9te?0*>P-s5^L)4uWX^WQbJZ#U6UVN`f8$%s=RKQ_UTa>zA7ig z9BDyj7!0&^L0XWO#^bHQ)D;uAI5!yFmG9BpU7cmwac<} z)JZrna0}?2lQA_QblzH(o04I?Yy+sUL^C}Qr^FdwUx!!r_VyECY<)oWWoJ8MmR7v} zqxET81&zx$P;2~xf>^Eb6FrB@@=O;p&u+rR>DX{NX!)DnumV>rh>t*UC-)Dmz+H#l z4003nqEgaWk_2Z)F(y{CylxBvaEjycU|GVck&3bjsS3s~ zLF(g|chzK$7@7@?v*=!BeW$+S1BPqzzDz*_Gxzf+NVR9p&8SgS!JyQkcsB^>oyc8H zp!bB?y#O8{5s}iWs^6a@c7VAV@x-Xfv1N-L;u3KKAWBEy0~t}};lsXq?=i-!{9agJ zz2mT_=N4}66{syJ>rmVA-s1Knj0m9Bj@&2UgOE4njmreFI37$Kz*kTSBqd|a*(=sQ zb6w|r5r0GmIKiC@Li=ODPg^L?jAP$d<-u4?vQap~=~*~K|m9XEVo_wo=7+{(SvOp0WF}9EwKrKl~o`{ z_kgV}=2ugzK-#()n=s8%@a90esDcp)3c(Ke5NgXWc`3EOKao)%^1WEq*kokEDwe-^ zs^V*RdVTQd#jd7J5 zio%K9AEI{bt+6N)sNOC?DGMzoVSnUE6~=W80N6B1OG`@(V_*S2Gn@iJ<8g2AmKQHF zh4Qif!Dkb$9p*^QP3UQ=p%*hXRWn6kTo<}f?5^8B--84LaH<`5V@UR<0sloouE>L% z=|3zE&sG8E)#A*4GW7@aEbZ)&-u)G4MWVsB*ynriSkn-A<3Q7yFGI5dg#AzF4jG1( z)uu<^O-$_Ml-$f%DiDSXMgfVf*D`WDJIzoGO7Y>)@QxUmq7_B5IZ$jNalcURL`-13fR(-`A?;}=)?bxSGI zG*1_Lv)&+3aWg5eAC3c@N`bhn)hAa^;b)_&po0rhp4vr3FCv7OhQ`(xO9~%73UG51 z$#zqUpZ=-BQFriTi>AbW`Cq5>a&K9vOJ6dLfA;ZslEQiGQI}qEp^j@`Hae&3Ilm5M zVbm0f4+P2!$>Q)UA{LRk1Qb&ymUFm9I-l{Q*9}>Z(@J@=@raABBOp#fi*JfDHV&Bb zPv)}F07;t!SDtTAi#dzKYB&?ih;Sm0cmlj++i_5Ap4Aa$Xw0_^iC^e}P4vLFEpFo4 zyxHJ}21kL#%4A)!Zp4v=e*-*Ct*9+ zFpbmXy^mc$IZE=YSjtx=tpWDeHJt$d#{1Xx?>{A5XW=&!UU!v63+`1ZT3zl-OcqF0 z-AF+HJd#W1jm&0#bY{`A1%X7M9ag&mwGQcxZF`vb2;B3!6(0)SMDA-vt zyEdlm>>BcHr;?;l8*HUaGhYw(=7quS=+j!uTIgf7cw;(^d(f+=e}7O}c|AjD=JHp7 z6gkrE=9_O8F>VQ%VLJOC8b-zx(OK%kdRzOjfY8xV3YL4)Jt><|%A-vX&VGDXI4bYw)MZ6%OZQ!nG*OiSrjk{@E)OXX#phjPx3!Q=EXe!An#S)I!=&m_s{sMpnb?yCMcP}UMaA?L#nJ=w4^DewGTbmmc5`kteGCduFV6L#@Tx;Fe@r>fI|CfLv~i!DYOQ-v!ek8DifL z)Si&|%c(#lNFvDKR4_(oPEY%X8bf~7F@P9}*2GWf1c?5zvCU1N$rXyVjM+6uE%L&q zUN}jue8Wn3JmtP9EtokF@%5?gU3IhLb@g2;1f)e21V$}P!chHq7f?o8uj*bK8E}5X z%Dr|oF7JD0_!%JQ*Hmk?n<W)(N)M&fD?$zS5Ywq2@pKkNs zr78OP$DrSlD_G{WIWTXINZjd8SDh#cn#23np6xd_va$*fsL_`JPwRj&ybYv1#6D0F zpf5&W*;y1ju&`!}w}Rr=IMoND%>KEFvUiQk5n$%%H|O z>D_5iJ-Zn#*o+wWBYUxJ+i=>;3LQqGCLTIu%Ay$PB>D`HxgzX{jz?PwRdwQsb$)j2 zu}Ye{8|M4GB72X!DV$$5YM)^ks<@@Lyl{iH8;j~myYe8aScKmbP2S78r&7`ow61gKFx<`qQh{b$_C+wW-Tf8~SoX&WG39nMF1F31Ym$5>>>- z$AR1+#~Dhh`F*Z}0A<M{}j!Ce3^AQ zf1IxkgSnktes_6Q)fPmMAJ`6v_V!L*LKTpo^+Quz+tkFw)dZ^1uxPiPM1@Ibl~257 z0gK}Ge>@qwgpVa-N}nT#$?8hk_DXR970oRj`{u(lV>cvL9YJ11hx_%Bo?H2wSLtvW zCAYtQNz^qpWy6^b3LO3d=Rq~EOLO}s>$;Z!W`8!0V(?OxCLqvP>aY*0Rkxt00pG|OK zBN8+8!UYKdonNc)p@!pt^<-$DK5+sZ*&zdiD=-H|M9>F(U6=gup%OXc0{{WgIXuSs zr>XNDXl5;MEx`kXi4?IffCK<|d$_q}2w@@OYL7fDhj@;pDJ<1nyH+#x1rR1Op42G7 zW}j7sp6?%{hh*D{Cl;U3vlC?E?8GhpNLN)g_cUo6q%9}*w!iI=^ZZbF{WD1+t#NdO7dDo`D zu=sG(jwMCk5Th@q!G^lJ&oFiYk4%ieS6wZ_#Tv3#iHZo|)<*~d4mNnq;oyL5__uU|`-q2C~_eVDjEek5NMIAW1@0o=rU)&E9mtdAHfz}SMtxoac8 zV}e9IKy!ye_`eb-8Ab7li3%85%Bx=gi*T5ML`;1bD^Z8oeTbVdeSfN|!^a_@2MdC= zv0OW3vGkK^Y(_2svP_*Jf`=^v`IQOpTS|4=jB4)g0SABsdR&zz1Xcn}MLsbI&B=u<{0GJbV+7E5?xhUb_G z?887ut+;E~dJY*E!1^u|{a);WK4@RGYfWE)t=YYM8Bp}hDFG0q*0^sLi^~o;5lB5E zj%vtFQHVHh_x5|!Eq$JpNvRH8!8qZ{IHI&nwI1RhC{7fm591TUMQ~{7>uJJrRB+q2 z3=M*!|KIclpP~r;%Go*w#VZD7Y5iU~$Wwug(Z%KRhv51)Tn`c#je4(Ta8oH!fi+tw zTv_ajAUWp+D)hRvOHP$52i^$%vDPh5!}YcJ@lL5PH|$eG)N*=->Q*lwR7Jzort;e# zT_Om6>FU*?x_kC406H1zQqkm%0alGWgZeQzHumuNrzgOPranfv0`e^*ToT5B^J$qf zhw&r3b0p{}Ive0Xy(2i5hkxMG!iv#ScwtC15TiSiDr^oOj4ERIjQ0U2#25dP&77g? zll_mWEccma?cm%j8xawKw9cHFWHL>90kdY;W3hNW@VMtQ)eD3QjtQ@5TjunrVq4vqYsBX45ku5dD6W8%ctkTNu<1O?u~U%;IZPD}En56tz*k z?95|L+n)LNd2pfj?0&(f{r;0`6~lSPqw@Yo+U>o&vTf|Uu6?;t?IV(2Z<+?|0|y-B zA|Yye?Zj@q)Bu(7tC$Vo=>eae=MzkSPW6oFRxT1(FF*3EMpf)t5k3Bgh9Zf%yWIM7 zi8zb$$E#s@uvPo}r)`&C71@34lPb3*X#y@TlEcB(LDp5Gf%XquK1RCnb)6(^ufFS2 zq30kUNtTNlNEtBGjkEph&*63Wi|W%+J3L$bZ@B)p{|fkvA*!>dkGGr}U~gfefrJh2 zi|9>3p4jII|BGkFBs#C}ke_XnG@Ai{Mdf^_-n+p}%cH+mrN2GH`k*ZabC;l77Ao#iCDq90Zm)`i}gcMuJbQ*R^#|9wd)`QmL zk7H#owj?h|zyX$$ak?)06^0Qv(0juqhyVqjnZitd6hhhC!Y*)tc|vv4Sx<;5A5 z7Z(qMqu;xiEyzl(C+Ym)y7M7MyEO0R;c*A>5P{{PLWdy-!iQh!KfgX94F8Td25q5EHS>AHlW*tH3%2g_ zJ(*d5=3nj!`az4=j@aDnvAJ@crPUtcBfBKGJrLD?*wN8P>2mZIj#hR8!yoh!$(ez2 z;|;O0!AsW|QMijMv|JP#97}+=1>JlltBb-xZ7%=V)Np8cE(6^@E;PVb_(VRp6az#8 za0)%Pa|WgvbU%3Ai$o>g$P{?|Me;uw#8(lDS2nif%M|Y~(A2TH*mW^wuj9~B!KSZc zXFkrjcpQ_dY(vY6KGWIN)e4PXLPGBJqJpd7%|Z&&yz|gucx1#Y8;f`UV2%l4TLR~| z5@YWlKxt69pw%Ubs2{6Rr#K7A$%S0F=?lL28CCTq0A)y?b9l zQHKA#>h7LF6WgZzs}Qg;U}+${G(@67B|1f*`B?uVW?OCHs`eH03`+4dW)K(&;I%yq z7llx2MlK8@a6zImq*C?sTf~hU9~;9cgke5|f9bF7fwFwxQCJ?}`iL-Fm1uAZ4?Dy$ zSPT%E2pClvb16CjV{|Q01F8)Nj$sosG{;y1^&H^vjmyU~yiF_a z=2D#J0*eN7L?b#ccwqX4@0J9)IoqVJy9FMUs}L7R9W~M3vtcl zvwHGrgil4Z+yg5rfCX>o=f7a5#_^K<@#dFrCNv9HJ*IoeoskvfCe1cY-;}u{$g{~9 zpee8fARyRdKrY4vR8(4ZXsWwy%S!$M-5&p70`>~}bK4H0#RkCWYhu!lydqdh|42Yz zmVqH9*fGGTnpsx<5Q$s}eLH#l_@B|`UA0dHTlCXVd5>qV0;gUg z()8uQ8Jst|Hz0UTcFjV-0yc$BzNkO+_5UO*^5i6W*%Rop?(VlNcVoN~!krOGK7I6S znlg(-e)W@iss6C14FASjE^>9pJu`00+38EQA{*h)8JcnWtKXk?20`J+z1Pmp6Hx(U z)E(=koOJ-3Ba*2s(-rK`iwzy(LjQJTxO~<%W$D}T@sA^8bPAc8yJnbDbL0VV&R{Lp zAKct^2rI!gZfKup(=r99MNMv&k!aLdehDXcLKxodBTdh7!6^Ds8N4q-WeN@Cmli6h z75;+fChOHrEnq`Vs)Mor!pllLtH2sI8#0Cb$uTlalnSlM73q;M-1pa+aJ2UyXTrML z#gvVW_jwsorUwDfW!@6VpF+0tRCiuUP-#y?H;bSf>L(RR*VzyLV;os7N&k;=B$EXN z6%=0QCS+HG%4o^ll@%eBS$=tA3!T=qGxUu3JZW*5Z$X6;bPNpI!bc-MU5IxU&kYAD ziCd2pQpLk)w~1nOQT~TzPd#JyF5QkWQ2N9KlDM$5YF$=Z&L}jzfv$}}(orD|J?Bv6 z300Lyat{de2&5Kj!uaF}xpNAy!bgtL)qD|6IsgeI_@qOiWTZK5on%?C7xc;>u_mTv zy%&UqgR3i|C~Od(y~sgc9?kXV;kO<+ifZCwz}juW7@mPLHiPp3MEDdW8xAir<3bKq z*J4W=nCq4~t>|DJcwv0kI<>s+=1LCB3V}4X4+>>ouzQqV5)_hM*%-zl2OI}%$IhKQ zjaPQy1Vd{?OMt9n7(iq`@^eVmaPbW~Nt|;N`w9Z$&aq8~Y)Sv~@j?4A&<^2-mcwpBa6J>Od^5+#F{cqssw ztacUQr&LG#R7K7Ft(!Jx3Ll?}^mKN`7qBYJigCh5A_Kvka zJ8nl_a_Oq4t7gl#SKN8j-+u`wF8|v0)xiL(v;S>7MkzMclq@i>J?V=R4 zvP4q5weuYxc6q$kaL%pMJ-b4id8}g05dQ}3_X*>+~50ELWgI9AF95t!BADK-1UT)%f z{e;D!>S6%&8Gr!MEUJDCREK~U5eJ_h{HUo{urC*=uT53`zO%{)A5RAV7rJra{CLZK zf+#aM#sBy|bVo$J*V*xH`j-}7j=C^6X`k)src_AJPyW~^TCi#OU|%o=jGv+2FaIa2;$3!M;j1eiNA`;C-PYW^ zbT#&hGUTI(#kx03_ahPS&m;s5SnWkNhTo?s6LB(ES8v_O$apn2b{gH3+u-DXB|icn zQ2}8-TyafrX8i5Ofez=9ar{tdlds0bd4od$9)M)+Gk$)3Z{BRiMc=yB0UKjlat>L$ zk)k(@$%tgUbmXKrEwhWWf44{rin*Fo6|)npS`DWcgnNcY0FJJ;;igq|JZvkvQ%n>SMWC?0P~ z!PX1JY8Mt2{l+|iUO?KTPbMx(c)fBf6Ca0-#(VmT>zC+4gcH(g=C4EG_wLczozwPe zN!Wvc!h?jk5>IZ?o{vvHeKdmTm7?8iol6(%x<%bvUxSU#JFcun(ulUGVWN9lFU5JY zxX#2a1qB6=Pf!G}ScUoR_RFC>!YH*~3m_~hm?G?<6KYXH2VQ`T%*&VUUml1#I9!An zcFb?AYZ}1{wu)V@+=5NZ#YHc&L6)K_Vst}d8Q@yoo3InWi-4gKWwGDAIdg|06pz^C zk(`u-n99Ukx7wD%^Eiwx$ELqR&|+v{P=luyYaRRh?OQxz&?r63;K{!d%=Spg=i9LN z{&E5R_ii-H8`2X!yfRja?|1sp;N$I$m=usTSkR%|wG%=u^zi3T(L>J=tL)SB;sv=g zs_ucf*{^?U@Zs3RL@O+B+_>?QvWV4M=|Y((200LI7^-7m48W=Y8?v__zN^7DbA78w zE;HeQ|M*|5Ikpe0A1%@-zSEExn;N<5(RIha$y&K$QA%Te^Rqot+A`cP&u8t3)|JLt`D=sV3*ipXN7PO*K+a7MK;yho*sxxus#95uELnj~l zz+pv8kaR&91`Eny@ST~_Bww({@c-ls{#Z`#kd~9zWq5V5r*bmg9OHk-k0&@G!!v+! zwRbT7S4T$f&3_yjXbe^nF}fDEwvlcK#mIez8f*G*A|^BX{l94#sl+RJuP-z41$&jZ zlP(PjsIi{GP%bL^7E8A}yOBsYafP2+aqyzAP$#$q94a^g+FG{d3O8Szt3aScJIzSy zaU3c_G@GUWHM+=kX`_Znk; z{X;kPsvr=C8fn{ifBbRyiX`Bwge%(5fgJ$Ljw{i z?%%tY#`j1lJW0ZVa=QHyCOT>9GHj)@tp3K|EF}J!Mq0gt={-pz83+EymNPA6H3k`x zyhD~1eg5a>cu|*&eP9uxwt_$uG7U^za1?zK#T1oMRe(Hm=rpJfL%7e0fJmH{iSg6_ zX`eYaV4_1!AGAsdf#noBbV3!*o`fO)FBZ=>@X4Rs*AV0ekN zmKQG|?A)|Q5c9BNAQVC80<)>W@~R#_oK;pf4dx$^!*94B;8xA}(oA8Gcxp7Y2*`k< zaX94$>^PcQT0r~|Hi>OMs}Cas!FbP}bfHo7cU=Vf>&m0OpFe#%7rvHTNnS)`6#a6G z(r{o7R$#!BN=BsOaoSNcpMhzi);V%Hw#!4pLw~i_x@K}U$3L-DisL0Di8SPvUJ1*< zGP(#CAEfg9kIb#txadu!uXXec;q)mPX*tv7giH=*lT$VM}o+Dk59 zZuMPh3<+61`l2_vgpA(xEAB;~gA+!`SKZdu7VdyWf%6iNTo6 z$#TmInDpF&#tovf5=@CjaiU1Jx+~v(k?fz(OlE+%&Mmn1+zG5BN#6XXI$#9K=C3{F z&R*d#O>}f$u-+>t2aA9-Pd`ntu(04sZhsiKoHQ-8lgllC1IrpMCns`C3(!YA>qybS z7i4{CeXb){EJn9I?1D!mMgxo}IDF6-R!tsm4KanL7IQth5a0kEf!P_=5qo;#-)V@% zV=J|(NIXDv$dlU<*KtJU0YiXs@|nkBCV3W%^OJ}AT=a^?Us*c<>ckgpD$jfii7Z;7*s{{Vs$7~Q%N`yU0rWVlDb)o2ah;G>{keUA1GAo31z@qX^{T;#_bU#AnDG>J zvg0{d*9v+I37GPp@erMs=H-PMB(1(6M|XddCJ$rM`l$~aD9>?1$B*>24I9j@tr1Z2 z7BeJl0~r|^faf5BIN_&suKkrNt@1>z*-e->%Fh*c@i1Dz@;DAaI28&Jt^>eZB+$)6hA@9(eV7c+~D6L{f~c4%!QM0swa64E~E5OSRtb67)ncX{NG5;1x0UGLB@*oSj#nJE3SP-rqdP`qA-CQ#Y%8i8kZy zgVjCA09@#Ro|QGlNx z7*r6nrA6uMv zQRx2O$5*TbEY6viA~FDj(pkt+{d^K+JN+F3c0AjcJ=))3eP`-0yMFrQfG8Q^_FD%J z^q;AIt0I{lS6R6#n2MIc-}lzjE~Ke>GR5iK%(`uwISv~pIR0-_nzD{a^O-c}I{(G9 z)7L5ADBDn0?RmvI=N6IlH7(b0t-H;*0we95K1N*4GpI1J3;4D1kl51Xz_&j??kOhb z+Z#OJ-77&BL-odsbs+}&do+&z98f#DIIDVedDEo8Ci;{93vL~Go)pUKNhk&HJ$>jC z%>SoHyPw0X)X`yz$Uo>@0RRwJL47eYnwXlV7ZfDN#!6#=LYIn%yL5gBBog!7f$0=I8JB^4EP z=5J`QPQnLoBAO{cWkr}$X=!L8Ib=nk@xEyfj1k8u0!R@?iJLqNR8KpaJ2EgsNCd1X zSX=xz#KqgUBYPkKfCfGzn$hUcP@0;%``_S#0&K?uMc@t&X>O*7TMS~Vj?A>%4KyTr;vOcxt9s3{+#(Lh+o!1(wwEQ6nu zwMRBErKIP`tO?sn5s~2nlV~8?6;yl>i6Al(?GhZ@`0gnB%EiA7Guh`YAI5~xnoArkEZ&eTaYt7{X$9D{B#t<+o6{)ac!p!4 zgIsJDTZ*oOBwNmsd|*bCE0OE!zmT6!cK{wPD9rydHNXy$rpHJi)vF7a4%=v#M4hegW}2Rb^%R#>P29`PJ2ZPoL`O z>ql7aI>McpAM0wKs30t>#l`@O)dm8=L5W6)Orj-ZJo+re*t)_v2_Bm|}BOR-{%o-?`)W|U{!nl^1? zZjKAHc8n}b9INQp3|Bhj)!a5BIGVc3WR%mc#u*l}^C$wV)^SK2(ZUc%8w@PFOBiIV zT9>0Y6x;L!%<^ao@w*y@rv3WYt!j+O?}b!V^lM0h`$!-Q!HkEsdEEKX~TYe*Bm zaN&=nQktA~2u4Q6V1^ExAtml;g|mCE)x(twGCzdI*yv;EeB$T+=HoH zn3WK}mnMqO;kww#d_fOBpB|yMSIot0smJu#A{v43Pz2-Yj(v%kek{}7XKH%RoKl~> zGq6}xG;kb|R&akD#**0NxMR~(*Uaud0#%Ll(Dn?bw`KV#u(h93}XaP2@-2J%eRAk&H|55r3xX5B1=Rg;)Qb%ggf&4 za(KAgtHMo0+TAt81@%u5R{i znGC=|m}bLXuQYA%K&886S^aDSAX+`Wim3>tY*RIeSh; zGC$*_laDXNu28JhA?Vhu$p4Wd)A$LVdibaZ0Z>0!$0pap z=cYsoH?Nl@&-(1Ym(h*NbwR*>UpLNN@Kvbl+r88pEhvq+eTAp&2QBtFeUe6-g~fKL z>oU@8YeEtKjV0cwd$vFg2v`)Mzv7yU7=Q0J@^2vu!ZBe3yDj*5gccQgN3v*9)L~*FWd^+{kq2J_ z7eMYuV^`NSp0|(w)2;ArW2kJCYR}iw-TYW$4+KlW7%P$8<^1#r)Kn1VAZ$E7K6FEq z8%v&CL)TXh0h3J50tV;d9(u8Gzm+8gqTNRRIkjN4NcSVYfM4TPcdRQ&7onb>9_S|w zAj)X3!HQyJ-zFdc2ILT6Pu#?u>DOj0&9}dEK^ zn6$y7)*O4UI4D{IG=-FZVc!s5J{^ZT()K^ z9iPfof4}QmWu;to7b(Us+5Zp8Bm-6q0Q%wD*9Af@_oo4MVHoG1>;kBT`JRG!6axvs1^~-gC52^l zc=KTOO{B>e;^(>~AL7snb;-;DGwVUTJ>*gIgSI$LJEmLU=EH&;eFZTz1`clZk(L*v zXGUpGX{DD80Z~Q4p3%&9CEE3!2C}CD zn43O}CB7#MdG3v4pCZus-?w_?=L2jP*wRl}EL!pCe@;CQ`4Q_7xJrgt0?oQ!Y zl8|_LuUE(G8TpXs?iJK{zg=pRaXTfufEvvEuN2j;gx{?^e7(Mq!;XK1nV%zqp~E=g zb9z-Wpp@aYC=hD&ulZjI=j(6fd1}_F`zA_@ee-&?9!b#wnaFU#(o5W^N*mFBcaBW0 zIr1t*c-00YtqQlE=8g`mfEq+|bwi$s01_!V&2!sQur0eKWi(t&6Fv&uTrg%l#)5RB zq6G*BM6@5EsQJZ3%HX?qzoTh^3>PVIN{DcE9<&a(a<$}<=UQFnl*kc#*T`13v|+~v zT=|-7BRlH>KqN%iN$OwS8*!pOBO|o`DU-f*Jewu2+3m?w_7t8RXu%mDJ(@%tf#nC))ic|#@y5{E?(DMp8Q%*7Dehp3K*{YPEB2SJb4v_W!>-Z zoS}y}vW&m3-5s8Rr3=1FH-Uag-*Zy0r2-zbRcqi#NM|K;lFv>!e{OyJTo+pT|e)F0ac9_7^}X<^LHtuP+3*gX~e+c&>B9y1DNv2hpVAI;Ga=- z<+Jbme7k-^(Ckb)_V>Em+o$E^TvFc56N`*S{MC*vb?(@O1#c*#U$6YIW-h+O+qhMZX(Y1-rmWxB=(6{9mMGU;xbsnSJ&?C0Wr&BqGO@MSv~h0e)0UN{a!> z;hxlS+vXN+m6+e}&7X1&&lnd^QiX9no)|VG%Vdr>V zXeAAe*sfg<(AB_wh{A+75EofTQxi#)X`XPX#^H97>&n(i_$#YmJ03*Wu%G3>0B232 zto{AL-)*|EBpZ=jc>f{R$D#~~go<~xnOWY)>xc|f|4R#S@bF;_E<3>EgjvjhfW+hY$}KYCSy`%qTTdh_jr0tXcq+=vIZ$kF zlsbrrpb7*60CppAZ=Mn6R*E zz+35zz?%f44rQj~Cy{erIJf<|%gR+N-1sTts9tU0bb%+!rGh}p}QlA*y^ z+5FkEv)Bc7hrqxZ*oYfMcfdojcWb(i3H^UQ&Dejzv(Ir(9pw23+dfyf?!Rnxc!zYN zJJ_CFe}I6yV$_t~ALN7lH1KdVn6CmJjVkI-qr~H3PO`FIeq~0R+nA?J?~%)Udvsm5 z46AFB5{FiR@TH7g^o8h{^1c^r^{Id%-r%PE4>jY5|rAXvU%RYxdg_ z*xx)nNZ^V*uW;0HN;&E7t_&exS)9P=2T)7)9lVL|7V1r;6=Wd40$MRk{YQxBKpnIr z%@KF*V6f{J8Xt<#c$DSumN+u5wEX zmoemy%s3cVkCM7LB8aeb&__wh$?G>s-3I^g(oGQW6IkvenB@`d3psYKrLQzJ zW+Jrg$;mb-Ja#qyu1-!Y8#Z7=0TlsuNr;7wl{FL+jtdv!u3v}DgQx@kup4FX;X`bw zL@wfWZ1Y9yj2~#d7+6>>Auau)t*!0(^O1M=%N{C$6GGk$blCmV3#0i}sIS;63!=(& zSZuSaiXE9AR#DMmXDE6n&^^x*76Z61N%{fE8*9X(Sb2K*)%=|%T^6@pr(9TOGg3f^ zIXOEco*v42K+kZy%mP8epqM93Q9~}(#ib!_M?lFwmb&oIR?~kNI+v3pNMII!vE+l~ z7Z~jRpj7!l?{Oh`V=gB;3^d0>+_(Iz`l_WBq{cJ^+K{nc%=r}f2UMf^Hv(4)rpug? z$XXV|_d?1&x+xQJksje>&~@7*<4e_b7xxxa@q*Ht9n z()YMU{;8n7p^K5qtex{qBM_6t7H ziw-|fhIVC#xVWsO4aloHIIyN6ZtpbA940s?G&7*6 z;Mh53;ps}}TH>C`7D{cxC97!3<*uRNv?eU?pI>S>ekp6tl|q?W?)RYn(c_SMJriW~ z?|v!JEos*xUvLVNK}#&2ck%RGPYj1O!FEROoOND>)&MeMm-&Z@CO@HB{+4qqFyB*{ zCHq6;-P05`7MC4+7^3uK^~RHU43O%uyhfF$SmV`B(e+xUkOV;zxkeGdb|!pgKpx|S z&A|khdXJd-slB--pf9hFrg{w>9kSD)tZ9AzJW=X!GsJYmc5raEpVmMW!!ooUwdbl7m0y>75%%V_8SlAW)0L~Sx1%luNa4GWpuUlEeN{{y9 z_rlN?0?}gJ@T_CXw2UFw{)veh@H0b@QgQ5kUw!={{G!7-cuJv`_TGKS%}o)uZvbRJ z@cXBw)jfIQ2#9%1-_}ZRRWKMK(#8?EMAF$nF=Jw4FqV#XWIn|uf~B5R_LNhAm|$g9 zLcXE$ty&C>!0RxMW9h6LX6Kmz%8^dc1n~(8Lhn=1Qi5LNSZ;GPPjuYr+No*nY$R^V z5)T3WrcH@)aV!ujY}rDhv1n5>4$l}S$;9NH^7YfGy@)W1OP3Jlk00d^Q6adp_%rk8 zN5V;P7HzI_;L;o1M!eQ(Z*3DOUzGC@cm_n}GS%r*$ygDr1cbDl6*JJ@i><)VmrR2XG^% ztQ*WYqNMwC<94qKf6;xDNSy}uls6s^Gl&#Ym)?5~Y6i`MCmXARbdm6b_L4?qk8gNtqn&QUz94TYakoYDNC*lS;M zS^kc4)bWV~?%_Eiqh~FU`hV#XZK`=#r_%|f+Y{{2eBzK1L}WUELlDp8>SxSVIc0c^ z=-Iy|dx=cV&W=Oz4tYHQ5JwcLS=ihfRVbQRg{*J z5()>1kAF%N42rA6$I`+A&U;n@y5cCaz{Qaq6i#UOO1fWKO<~qDz41ERkkixi2W}pQ z%Ct+&P(~XV8D$IQ7Z#2|Gw{q9d=0+PpWt^vtZc`?D-d5Mwx~L~<3uq;(l}D^>jgp8 zg3b=b9YyjKvdE^VcVWW{v@?V~KGLveVwPcwyd;)%L9R!+F zY!M?Tdu=DtKN0PCIx%S@YE=}hE@EZs_D^2nD>g_qCkcs4{C&Iw>|BTi;qqZIP{BSE z&M7y=0nmg(Z^1d3t~o2+=qSnY1!-Rb#^oK4 zkZXeo9W7H>0zvI-bMSmi&cgI|to%Fjicn>4e>g!j{BQIN9Z4qhMnf08yRTC0R=su&&NJnah z7CkXBHI-4erzKfIbP?e|Fcu_u`e1PrRUJr+j`W6y3(zd%+;y3;H0=XvM@AViPd8v( zBnvzRsTKIey3QdmP{A zc>cIoT-SMi#{2zR?-p%P_edp*c_o;{iW8q8<%N`5+?cF6W*`-+qIkKvb$7+{9$+Qs zbwK2z@n|hMCB{(?XCI1tmJ6u-P-yLN3RL2g{6SNl+EU6FOE#lLxaTL@s+ zw_AqhegP;2c*hnsST)gQgdPVc7ABgcroxkF5b)hQ<>K%LIg#Y_b>+*~R2Mcq9>}>t zEyPyTIlla+e4DezC-OMkTu}Xa>3(ss8%g+M^iRiDz(trj@!_?G|C3<`fBdMw=CCHr zb8_vi*p1<`BzAUi&I!eT->MIGC`i-G2yzKTj*=NB;(^5cqyqHL@O73ViXT~&Vrap9 zEo^N!5tyB#5siC9zfM1S&y?v25Ar8r;`q^QnW{Lti&#)JZA)3xtNI4odj+9{d-0ML6k3l3zVd zj!)U_2j(yRR!4xtf8IL)X`-&KE;PLW@C^ZCS?A3`t5C3-IB7w!d(*qPWbSp|6g3`) z$uOn2=z9ZJurDT#M zU{{U-K2GFm+ptZZU1=tv4$Odzj4!n7K*Cz!mohZ``muHu?+jjmQH}v}bFbaQ8jB7B zwD~5&C4_@O^YR143J6==@wl5|!%(U^Q*_K#Oy{Y}^x&WrP{dM;%#@Ui&-Jt8fIAvn zSj2pFX_s;9YyhiJRfu;5qi1dKufz5>8K>LPRFIQDAIXylo8m<}2NJ^r3 z+#?~8zvbScq>G;S*3{v4CI!_61!srg=@3pn!xwAC-hPeFrTh%<**t)h2!(>$#PNKW z2RH@7?$oJ`OjQDG?B%%V!~$~HI=SuKyLS$E0)p#Oj9K!N)4lN$lbAzCk7+JbntO$O z@%}6TV*swe4Ui+d9mkBC*Ppt{szRviOeYPstoTN04>HaqYfXMLIT_uYdp_sJ?uf`Q zay!**+6sIpr1~!9T);Rj^ie4G25K*CKec8HD{HvtuJYTF_ode^gLuHWc_c$>94lp&=6CfjY-#w__s1$=NG2Bfcf?4u`xvf#lT9i0_L`|vXZVsN15eOjK z43f#gsabDd+MYLf(#7QiKm~##E`Ee6P~kz$@eH$rGa1jZUM|+VK~79UpUfIJG<%M+ z`P#;8RK}#7BPKRB0BlZ>I8(Bi0qSZR)hi$46B+9ll(hk)pe({LdX&92zs7iCj~_Y9 z$5EL}`O8xS9^JmXb=rXGF*Oi@Sz9F~j+%v)r!T~?h9t2fxjg64D^wB$+)?UcoH>2x z87k+4D$Tf+izBaA$&XmE8dZC1MOIO<_M>wyK*x#BnzjzNHVwiXz9AnAx{l1KJ41JX zlM||5zqLQ%06Q`Si-`KFF?-aQEqY9Si~$O-x(4M%%4yrD=h|@HqXI+izL`r>bxGa} zEi!O|EXfn$I)c4rj+buS;Ax63I-vJr-Q93BAlF$rvd=EGHnnAvCVu$hpq=T(kfo`1 z>JfX~s#t8&a}}rhQVdxx)uU(Ht`t~dOvzLV+P}P|mP5pn+xK7#@8on8>~GmCO09j0 z`kh0HB5sFFT7&e&wr80&aCEI-DkGC&j_irUlewf8lGKi{SoC_RZjom|k&`=zw6S?3 zx6eO1Z8Ov;+mzitC%CICR=(KEG8Ly>8OfLb2QCX24-X82h5wY3k53t}tKmn}wxeyb z&B!R{ke_x(Ktfj?a8!w7|9pc?NodzDz26RQZgD9(WqVW*KB|RCLtvnefr?fkj;Bsx z+AIqj+es*fC)7rfNu4bIqJ=y52bRTQr$!Vx@`+$)NfT65{8ry&<5I8%Stzn z<$d(=6#(_MesB#94-0+Ae&5Q?EzrY^T>}fx3jn2{TVP^(fZ^3CBJ3iT8R%;eAO?Y6 zhT-5-*%E)xfu|^nTK41sT4r9a7#cocsiwodY^jN1ot=K`eeBk zQqJ}``=ibEHxRvoCCA*lAsEXsP<=8lfzsZ3i9vd|s3>$&w4qpD)FeQjFD`69OcRP~ zt8Miv(krlAC&Wf|UyP%!2AzRDy5;8c&$@D=2-BVEt-OPoj*z3Z8O1<;@Fv*23*{^R zY_>rO!n2Mfnp<1*d|~s&^Kr^TQM*Gq)S) zY8?`$ZUW2rjTenqNWDaO+}#jJFGw(*--LZY~2^NcxKf_fpzt-jwL5@nyDq)4eh&^5u(?-^yL-+W=sL z2<0ipd9wp{;W4>3=xi`E;W>Gb=fob2p$^z<-yAo}ALwGdA4zgniWC(bVsV}4E% zWEawC14iE?>mc*H?H_ag#AKOJe_ZUZ}?fsI84b>K^FaeE;C(rQf)LPTufwyF->A z1}BiQyX#l9PNA~}BGDGLXJap8`^S&l%c-bivz1Y8lXSI`9P&PBkvCJtdwol;fK7e!W*^Yz`pLj8PmO% z9INWf6k;@r|HzlB;p!6L0<#gSp9w|$N^JQ2ZyqA19%(tMkNxiPdMk@uTR}?e3)ejbe_RpBNfRnW?<)5te&+`yWVcpN;VMB=MR8%F z3p`LdyKouF*#{p%NFEP>F#MyFwoZ`pRibf&aT2N(Ux8k~RfMsDBm*Dg2AL=DHgrCR zQTie$0?fGdqs`ZkvREa1+1r=l3l$fOkO>Yrg8l)giU!20(rp2W6j=w(2=CZ&8?Eo> z<)05yh3Arh)#Ex;kdp)S*^+sn1EC@~YwUdX%$fjc;`Q6 zXA`;R^7Yfhm*(;IjvhIJ=i!dBzi`zJogNlxQ&ST%Vrp0a1POKl5P-KroSDJ=zU>vx z7CcX^GzrvasC`_tojW@KWgM!iK*{J!Dr^B+p%^=jOCA5b?fv_LAB)dRcbk63&8*jS zIVTTN%G;YS5p`%kLBW%=!f+ksuw$RPMl^Qt=)wW1F~drbOgZQ_!G}XmKJ`%NLvJ^K zJvH?`03&H>=?Q;uY*8044l#&zgxi;%162knqrn!xyZOzVt%~O)f6tKfB2i{{JgIF- zlghz_a7_IG=!e7L9HtInp>BGOO?|CEK91_Z^o9z|V0Iah0cC0f6q&5c0Vc=pJ%PA2 zu>T9E%zJ$T8E%Ptg4lByFPSDktLDl4Ja{aDe}Pkgw>vpijdZx8kx3m@}&rFnIyK zf^X~1Qpd?IA}=p{`D63d8P+rxlM%KNy6`GUQ)0`@&tOwpr0BBMH~~I7jXjJfx8%tj zrdr4&qqu~_4m%J|Ry!}R;~&eI9aIO_3o^T{KW(C$ux@rEZFWs-^907ZYFRHM_2min zr$c*5X~N7}R)(o{)lmim8o~{0zSz`%*W{-SGuCsln}@li9kb)96lgWbCtA-L?(|&! zWB4vGSwpbT!tRN6ib?{IPq6Z>^DL37D8?BX7-Hh%=|j;wRG?^jd`lJ|P)X*%63|c! zGc&|Cv$C-8uWUUUK8AD|HU>B0y?agV-&?>A(MpcU`NgjUOaTB?*DX1^=SL$iY99v= zmz>P8q{x5pB=DjCxk$ozPFt$~cizYjZ%j$2``^Ejbr>iSL@&yAss86LU@YiVJNHhNmE{Ml?_F~zh3wUK?=GtTuA-1MT`5y=fB7&! zw-ePhBl0EfjB#E(IqztTT*pUKbCvg7F}P*pT5?$EfSMR6};3R4A=+zL}O&NQpy zp)&^`+v=TJs@lUrJt3UYt?kN<@5BW}68Pg2*zd=dlm5eK1>^1_4KYox!m0KbI9&{L zWL`E_M&tJxQ+|WV13m#}+8dQJY@Q$0y7vA3zL#L*!(N7a`O6VBQh6)eD~~oghn=oY z8JqVzE~4>5U*_)BcA1(*TYVEm?1N*2A!T+BF@%L^v@1n8;<=b&S1gT#u2jL-MZM+{ zo-AZs!SNkYM>wTE!x2NIWn>KC5>-;N(JpwXoSrLD+7(|_QsO!=G%_LseBA1;8uIqx zij}DG_6j);0pSNAP}kI9G!e^|EzWLkXjQva{B79&rv<<* zFx=TB@lXc11V|xNK(K~^d_aH(GVMq;y~UKSzCP&$*EB&rjd2tGD0?wCgzPPuFoSvy zKN8#~MB*eF0qPicC0z8WdA~BRdGDVBf`S7U?L2yQ^h%JJc>DMadMFU!eGp}%DaZ=7 z39|5L2oREvc6OoXaW0(J(1?H-@F&-V0t4ImRdPr^(TO#>NBz zY83HAe=~ehzvCNX-D9**6Z@0fw^dD|HIV9oG3)~T{DY{O(b)H+5rj_G@;jG^UlVta@Q&^-*t!PrWy3ICY^be}8u z9$2cUddl)Z%cn6NwNK*rR%iL=!#_UABOV4Q174)CFb${x8fpSSk1_iZfL238WN85$ z5n4iWT74Zvdg(%>hnE0qHjxD3_iL!207g%EsG(+F1S`unEfQn4x)WdP@17JMM6^ zq8j;obIF|^VIZ&;Aiy=e!eo*st6Io)nL+c3eRH|@P-_3J*@cK63&TY3z+KH%a@GZl z{D-r?iE-@i-?B~4yRN&NlfXV7`}$QGQ+ZI3qaEBpCf`ZD79Q2w$~_sdo*clyd)vAI zpW3$(@3mEEUEDn&iAE3)|JkRavYo&wfsJRlOLzGeQjQ5;1^*4(sMdQ(rK0@E+%GV* zG@%HXYAwJ+BAJA@GBJt{ zM;7Y~Ha;s|8$St2Dlq8uyKr3!5CG3oG`VEF9-{3D`XQkU>wH^x_kJ>@=#vhm#g<(Y z_fq@;FWbkbg>2s8DMJEBK%93hdrFRjYVW05w391&I?m_akQqyXifHck%vVDe8w<`p zFS=CjS1F~@$evX#FuEiVM+F#05C~o(UG;jN9r+sx$YiPPhEbxjjTp{s$>%W8d=P*i zvLb|7QM$)a@4!$5;;g&Ga&SZI-XsVGtMXAa|Hx zhm!*$u6Y&b>d*E~?jDB^vsPs~3J+DVD1D5*d^xv8&FJK$wI@^!02l2`xypY@3q5n~ zM6-8J(N;%?K_2YP5gniWv55c^vI_4=Dh>ihzkaaqfs(fqIjvozb1984U(yjI zv+^BNIB4pyQ774D{Han#lNL^!j|Au>MVwsE+W~2&fm#~a@UYHp#*C<-kf7SE;d|!J zg9psV)dD08OggdK!F#~=%y@*HaG!o$oXMnA_I4-Bb*e>J{PG$09lN*d+0N1Lyal9d!bUj z*aX@}|B{2~LY923h<9Updf`13P~iCa==!uYG~n{@>+XICz5VCAPNeo7EjH8(tdqC~ z)`WtViLJMvv~l%G5;pA%&E|E5qw`nrd3YnMr!~bZ^@M+#JV4$e8X|nL0H}Qdtc{9U zx<)6(zND%Ws#8nf1|vl3%c4a#6@O5BKJQZ7g-PY|5jSscBPgY*Ypr^YSz5;K$yQ9I zFOt*T%Sgzf;6W>lU4bLkXth`(s&Ie@=iJ{H;Zr<;^GI&xVcgP*{pMF}n4E1g+pP4| zb7dMAcs_@)T+#sww>lWT9U?l=g#Zg1ioEy5OVe>ndpVI4p}*ZyZ=$P~?!p0tUm{|4 z4(a1Cm4F{#0n>XH`G__R?a(>}1qG3C5()%Vv$&*c6?`Y`937)fz2I+u@_{L=;}!fZ z5UY%!BEi{ISytAIy^LYOry*3Rh%CkR0lzp!+V#VYJsS(enIW{e3@<3GjT#yn$eORM zRk8B8D}zuBqV6*ri?~$<5sJzSa7C|#OtBn2=`f8)aPp^{W};38_Jg9Ceu5t(!XFE2(*2Q zPm0>J7*@b}`eM4BPWSU(T4su<N_|#uZ1HjOj&vRwuI^*Alm#wWJRoZ6P&s6(fKSft5lZ1lKDhy$#LfsDAJf(6nGh zLcStZ8{TBQr+|ERT8Q-rsuQO{1tei^W)>M84ei(kkY~ZltH7^-z?}B>wp&b-dz(ts zn!w=#=ML|F4;c6Iu3l|{1N5?KjUw6(;x>dlL&J9_VzZzvKl8M}q*qFH_b4Uo^p|Ul z=T9QM2$T{e+EBx`ecvo(tof+YOiZtE=(d(Mx(_XF?Y`b#a&zq8zlfR&J|onjBIlp0 zUSXBC1R{(#N{)1!9pu<&USRKa+g?)SJ;!ineUU&#^Tm!^T_3EwuU&75+-o)M5mS=) zHD)bJAi$xR!5Q~_+9~PRVKk%rTXRN`jv4U&luP0ttiWHvH7||O@F_G^4x_+@h=m*y zkkWhV)F}u~(2F9b4sxfNsi`>2J%Qq(njTSg9>V~s$ryN)Z!dtupjNrL&pie911v(! zire8M9^Vnnh}uK-Y$bv(KyKirU=S$qT2IYd{$`m>$OU>`C(tW2E4m!rhc}gebur0* zgR$-b=@a)gAN#+dt1Si0bk@&L2`2?QRRoP-;t*hs>?wA&WP3|Ba-GoeLgZx@7~Jx;#cfi2 zR@2_fU{X%gTg(0KrbPWg_acRB+6YrbmDB1kTO1i%rImi44g2-Qz(5Vy1N5#CrDwB6 zsqtHBfUFM#7hFovVW{ad2BDp6ioUbxQLx7Q{m2(>G z;xC+^$Pk(ET?|By%7=OYahRbbbW^yw2;fTiBEyjOfki*&d#{Ef6jq>lA5C)XxotX&<%uZwwwT#oye{5$@(!BtU@C?MTsrC$d_R%smDUZ&;dqM#oh% zo8763RrtCrbL09W0g_G6Do|k1*df1|B!(9jY${w5Arh^cY1s5#f{`speV(o6QNwl9 z=a(SkZu@f)`5Y&eW36DfJ@1!EUSh^dE&=GLUVG7DDZU?wqL8rUub>eh{ z^D9fvht{7K-jsv-!Zn4p#(z8VpM>Vijx4Llh%WR&=dvX z!puh%3MEF_5!faC5jms(J~*+403)mCVRk5j?@@YM8YDRVm=Yo^e34oR!!n@zsR9XM+LS=@wu&-7cv1&HZnUm|fqEudW?UR@MY2 zB1z5t2I!57`bdtN+2@U&tpB?YV>)j2EbOHDZ)GyriOQsxOTdw-#WwMD2+P99^W1RT z`d&vqz*kBptbr9Ngbfw!bi(la5XySLe||*_U^rI$iftb{B`Q1 zGU^F0!99OJNW`gGHN9R2;s5)1}843kog z1%VBpBg+G)Dmc5xArXdSd*D$@T-LIYBcgqRu7N%qt_=*{6q!d3<2w_^siKWw)kbH%3`U6GgB zhAI&nh(^(9a;tNMmtR5O03B&_5{^ILVO`qhv8Kp8lVD{Cb07TmIX887vWJMrLRtLg z)`dTBz{*AVxgsXq&8-;j1JpY6MzF)m?AwRT;W74WS|+cFuA~<|OzG*#E~)xSE+vtI zKke_>-VD4ny5R_~S%oITVZf-8DhPC#Sj)8+R%?I}0=3803%x&*nj?6H>5qKK-BnL2dtcRND#fv?|cX?gn=HilxP0|1tp zKB{OCF;7otKp#?k{miPUTEBX?s|znAI6&(zAXy9;5^@{gWPzY?qK0KJAubP~18lI{ z{66Cvc80d~6HwmoKS5#fpZ7NHPUr=+mE^)?vTSXbQQE1Pe7R(`u zz0b(Z5Lu0}5J_Vi{hA1pizL-GF-q&{7Ix&<*= z|Cu)a{~`h=R^#HBmK0`=6UQyiu!C6!GEwoa7!h=cSqFjPXP%>2bNY$s!4iX zPw`26nFGwe4Dldo!b0;0wJTu^7b}ihlv=fDd~5Pd*Wl-UgK%pe=13=k1sf(+03mik8>;DVuqeFmxP!Zzn0UH)Jr-kJWN4|h;~$K2TcR2;gH=P#uUiROVmt|=Dw zUwyh`Q2=l7?ZJYYwLcX>AZ^;bc?(k%z*lg-&9`7$2BD2#g)s{~1xDND$$iBK$rNn?CePxA_dz!th)Vmb+A*oVOI+zQlzAO zARZ{Rz{Z#y^X9B)S3o%>CzsYT4)KNWboVI$r)a+w`C7WW%?AYNQc`GDaR}?^=zu4H z8v!pC4EgZrDBQZ-v1%|7VY}FdsS*S#3=44DRcAhrkN-f6#Kp}`suczXltG~&lv{k~ z`Q^pCXrBPijBMSe-NFz@1vR@kCDk# zIpvh+o;Ysz(|^1oUM(IeNBlt1@rROc-V8x!3ZxV=U0}7~fN*A9tr5C=KIEKeYvCh_W3OmX%{-Xu@9ZiAc@BH`USC2Wiy<@j4`#C#u@)3(xCn&kBe!kA71<4~bS{|Ps692N0XB$PT( z4}Be){Y@d~hF@)5N`f!h+Pd%i_tSAyq&Oj=7@eQ?Y8A8s2>U^Bbr!V{r>~oBH!Fd;-dTpf01wbWp31ZhnBLkePf(FsW38ZN z1H04e){C19bUMxxOuZlg%Bz7_GcifD5KHOdeMfb{Ge%e#q*+)-KEw1G6omr^7QXf? z!2W1enkl}Ki3zCB8q%({iarJ~*68dx{Q5-Kd|(PYQY9!9JM$Bsp5&;~I4YlVunQ=n z6EEoJJMjDf!XYoGJOO4lnmRlK$%V@={e65$`xV+MOUoYI4m5VNL-o>88ovOObBb9I z1Xx?0UuxOR1@ijV59GLN`VZWVnBii5z%_)r5a2yITJ-ba;4I30ID~O1a}!pNJQ1E3 zlOA1v#(QWQg%ugWFA3#(k~A_hFxdtX;o0i0SCBzRV(tVC>JM<;p@#tYehxB!onqiz z&{JT-)(>10Nbn-C5!UcVed@boZlFb;-E^>(!hFO*#9X~vUo57A29p_wFsu&D{X>T^@-umMp1$|D2upmU{fWl$6vYOxZU<&Ys1IiJ=RQ zS}*ppO@1kCUE{8&*Mt!c)Fhm}=@}USugWess#hJ5(}XGm5?m?i_J5092U6u-427A>geS$`TkoU%wloDU@C%`!r6N)==w_ZI~? z26<1e;$(SHQGtXbT@Tv3RhB-y`h2YZuS?@kE5GuL`RnXQ^Oo_ACNw#jOf8}bJ)awT zT{~<1Q^k4$fBy(PAcO(%b&AUO6Vp&vX7g?OhOL4dsklPt`0?!o7(I*cc3&ApP1u)q zVf@j%P`;$5pwaE+c{*Ik!sShbJrw;~Mnb~3@1uGI^QC%RXr}r42WtVbl1aa~Bx%FQ zm5J$LJVfC?)^k{T0IK5S4Ot@43az83M{@t2!)0o%4?p=zazdh7zxhDOhS$ujhB3k` zc<0XN8xxhT>bIB_+92iz%0N9x-vCy%J77$t#79t3a$B1KgM#ntAdcu(ol%P}NOYHVgEm^eV%b8r|;JgcUc2DgYI z-U!aml_7BBjL)7s`Ra0FdhLFzVw5vqz8ILWSB>)W@F?Ivgx^A59ql3BV|8^kgjAOY zs!dtuJD*_TC?7@)mhr-Oj;M}jl0~Of%sQEY1!!!s6Z@gz^PSQu0dU9n#(o(Yvn6(p zY_9Eww0`Ht#{2y6Ii5S?SSrVHPD4OOsGF&PSQs2S2q}76R`wlcQ>!uuMpEfOt7>JH z@wB{EK^^ORV&{Mih#M?mlt~jSyEY;dRYqRE3gQuXE&qWt66YA%hXK~bxzyNvTu=O_ ztXCG0U?94PGsnG+Z!vib7jR~3Y_d661D-<~2hDEYTub{5YhzS=(U`rWYzTkpw%fo@ zZrg_IRtxH*8=ei%f|AdjDG*80&h|fY^yn&TKs1pd0A?UCk{mUot^EIgwYG<+tO-Q4 z8~Z-$hnk2$I6017E8qfQVFy)J>#ze`PdB4r92+0sI|mjRj43CXLD)L=3f+w4UT9>^ z#W=xNSOzkRsSPc1DC^#$7@)GsH@fw8bQF^B6x0tG(SQj~4NWD!dOe8vdaIhmd~yW0DtHX*-8j`;NYU+Ghi59Tone`xOce!_0E^5wGVaPw*%heLV% zYs*ziE|gHlnTpp|>Wk{e1Tvhw%yLj@g+|=X`f+E2YmYT%tRRZH%0H9-Ae*T1~p!<`@%mF zY(3xEHP`9yU}o2hQp?8ueyDrv`vBxfqvq{)DjyvgA=<3n}}=Bv|bKTo>2fj^SD zt~U1#81CK4jo3D@Ir>C_r3h7gmZ(Fg%XM+^&swmRqkPbi2LLQFKAv|NPe?1L4Qs_) zZUcu!3K%ej;F}_eI-jnKdj_#hU|?@#n!fP4w3{~#7`F29jfvF7+5Y+bC3Q~)pqOP9 zF*p6+GD@?)bT??}BTfKE)XMRJ@(HjgMxp5ib83&I3m*tARrL?Yg^ZK+iYQ#S0g$6M zm7zv8rd_YkfAXtEt4q(eZ;p9}OGN;|Qp z=UM#GFPfhgEXCG{j1>k^zVZ+dpqYnT+GALroegu0lE9?B~ zpAZUT^b77Q^o!i#Xx*Qe^`mt8vAFoKqN1~_>zT!4 zu&L?b@gc(A=&pH_Lz%Z+bMi}jDa_Smz{oHE$H(B-4qFK)2W`pUL<=9`mLN9@sr%4! z`i*=9zI;Zh#(BvR?rZ$-*zuLaXm}4RnHbZyFn6 z)Z3>>hJ=VDBP})FT|@t7saAZ$v|f?f_j02tUwJjsdyW;yG#u#R>&vd(G3v}59X#-R zq}BWNXM}JhZWH(;Z*Zt#X?Yo{C5#MvKfU5e$D%fI{NkL`37k%2=K9$5kU$2*SZ;N9 z5x~l(X!ZN=UtH~U^E-29@6!@cJ4iw1-a!AP-?P-B!V0IF*JFAGdHEgh>G(CWjgLJ& zm$+)*TqdSzf@uIaKyjy`F@$(&sO34$zxyvUUqh-fdMj`XU=8n@2jQHsll;)tRX>`J zTQ3lNBQyb!cw{@^FAWQ>JNDqZVpGGXwY~4ml@Iswtgps?%?=qskNBObO~YTs1^(dY zhzfoQw_KZQZb|xQ5o*YFlaV#&EnylsyieCPvS7UOeI*8XNn>&R2s^pE?p2 zdZ1J{&#K(X05=ejlYQJ*>g@*~?XcMOtKrajTP&Dv7n#FF^S}&@hy0&lDhthBw5cfh z&&Dcs_w+EDI;h1M7PuqafDXHuW`F^HZL7QHaa0^N^mF|HDqzh9zOddu=I6OQK?fY1 zhl^yOd{J4}X5go5|IjJ!wesZIwi!ElX+_1%;0uRkxZmO;pfnE8HaJLovcC9%z2q$i zWlD2PK=bRe&#)8f3rB2Ii4{m}0ELIk!A>^qp-81`+7uvM@={rxK_i8As}+@QIY zCLf+Z^i){vR|D^ipZpus<=?-~;3l=FSBhj-lk?IlDg`)($`>`2;Ge?c;zpX05` zUurRA^R>Q{{5kow_wa2rIx1SmNvqw6EI0K6pzpz5r&DzEV$ax1`QenzE()DF8}}l literal 0 HcmV?d00001 diff --git a/pics/openai-ES2.png b/pics/openai-ES2.png new file mode 100644 index 0000000000000000000000000000000000000000..932bb1f79c1ce8d9be142b504669f76d7d9b8bdb GIT binary patch literal 33082 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 Is9FU653)b6;{X5v literal 0 HcmV?d00001 diff --git a/pics/pcaThrees1.png b/pics/pcaThrees1.png new file mode 100644 index 0000000000000000000000000000000000000000..2fab25517d4f481a702b10324f462b235d85a3f0 GIT binary patch literal 57558 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 z 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