Preview.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2018-2019, CNRS-UM LIRMM
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25  * POSSIBILITY OF SUCH DAMAGE.
26  */
27 
28 #pragma once
29 
30 #include <lipm_walking/Pendulum.h>
31 
32 namespace lipm_walking
33 {
34 
42 struct Preview
43 {
44  EIGEN_MAKE_ALIGNED_OPERATOR_NEW
45 
49  Preview();
50 
58  Preview(const Eigen::VectorXd & stateTraj, const Eigen::VectorXd & inputTraj);
59 
67  void integrate(Pendulum & state, double dt);
68 
76  void integratePlayback(Pendulum & state, double dt);
77 
85  void integratePostPlayback(Pendulum & state, double dt);
86 
90  unsigned playbackStep() const
91  {
92  return playbackStep_;
93  }
94 
98  double playbackTime() const
99  {
100  return playbackTime_;
101  }
102 
103 private:
104  Eigen::VectorXd inputTraj_;
105  Eigen::VectorXd stateTraj_;
106  double playbackTime_ = 0.;
107  unsigned playbackStep_ = 0;
108 };
109 
110 } // namespace lipm_walking
unsigned playbackStep() const
Get current playback step.
Definition: Preview.h:90
void integratePostPlayback(Pendulum &state, double dt)
Post-playback integration of state reference.
Definition: Preview.cpp:88
State of the inverted pendulum model.
Definition: Pendulum.h:40
double playbackTime() const
Get current playback time.
Definition: Preview.h:98
void integratePlayback(Pendulum &state, double dt)
Playback integration of state reference.
Definition: Preview.cpp:75
Main controller namespace.
Definition: build.dox:1
Solution of a model predictive control problem.
Definition: Preview.h:42
EIGEN_MAKE_ALIGNED_OPERATOR_NEW Preview()
Initialize with zero state and input trajectories.
Definition: Preview.cpp:47
void integrate(Pendulum &state, double dt)
Integrate playback on reference.
Definition: Preview.cpp:63