Drake

#include <drake/solvers/mixed_integer_rotation_constraint.h>
Public Attributes  
std::array< std::array< VectorXDecisionVariable, 3 >, 3 >  B_ 
B_ contains the new binary variables added to the program. More...  
std::array< std::array< VectorXDecisionVariable, 3 >, 3 >  lambda_ 
λ contains part of the new continuous variables added to the program. More...  
std::array<std::array<VectorXDecisionVariable, 3>, 3> B_ 
B_ contains the new binary variables added to the program.
B_[i][j] represents in which interval R(i, j) lies. If we use linear binning, then B_[i][j] is of length 2 * num_intervals_per_half_axis_. B_[i][j](k) = 1 => φ(k) ≤ R(i, j) ≤ φ(k + 1) B_[i][j](k) = 0 => R(i, j) ≥ φ(k + 1) or R(i, j) ≤ φ(k) If we use logarithmic binning, then B_[i][j] is of length 1 + log₂(num_intervals_per_half_axis_). If B_[i][j] represents integer k in reflected Gray code, then R(i, j) is in the interval [φ(k), φ(k+1)].
std::array<std::array<VectorXDecisionVariable, 3>, 3> lambda_ 
λ contains part of the new continuous variables added to the program.
λ_[i][j] is of length 2 * num_intervals_per_half_axis_ + 1, such that R(i, j) = φᵀ * λ_[i][j]. Notice that λ_[i][j] satisfies the special ordered set of type 2 (SOS2) constraint. Namely at most two entries in λ_[i][j] can be strictly positive, and these two entries have to be consecutive. Mathematically