text:
\section{Direct Sparse VO with Stereo Cameras}

Our Stereo DSO is a system that combines static stereo with multi-view stereo.
As is demonstrated in~\cite{engel2015large},
such hybrid approach brings several advantages over each of the separate one:
\begin{itemize}
\setlength\itemsep{0em}
\item Absolute scale can be directly calculated from static stereo from the known baseline of the stereo camera.
\item Static stereo can provide initial depth estimation for multi-view stereo.
\item Due to the fixed baseline, static stereo can only accurately triangulate 3D points within a limited depth range. This limit is resolved by temporal multi-view stereo.
\item They can complement each other in degenerate cases where edges are parallel to epipolar lines.
\end{itemize}
An overview of our system is shown in Fig~\ref{fig:system_overview}.
Instead of using random depth for initialization~\cite{engel2013semi, engel2014lsd,
engel2016direct}, our system uses depth estimation from static stereo matching
(Sec~\ref{sec:tracking}). Based on the direct image alignment formulation
(Sec~\ref{sec:direect_alignment}), new stereo frames are first tracked with respect to
their reference keyframe in a coarse-to-fine manner (Sec~\ref{sec:tracking}).
The obtained pose estimate is used to refine the depth of recently selected points.
Then our system checks whether a new keyframe is needed by the current active window.
If not, a non-keyframe will be created, otherwise a new keyframe will be generated and added to the active window
(Sec~\ref{sec:frame_management}). For all keyframes in the active window, a joint
optimization of their poses, affine brightness parameters, as well as the depths of all the observed 3D
points and camera intrinsics is performed. To maintain the size of the active window,
old keyframes and 3D points are marginalized out using the Schur complement (Sec~\ref{sec:windowed_optimization}).

\subsection{Notation}
Throughout this paper we use light, bold lower-case letters and bold upper-case letters
to denote scalars ($u$), vectors ($\mathbf{t}$) and matrices ($\mathbf{R}$) respectively.
Light upper-case letters are used to represent functions ($I$).

Camera calibration matrices are denoted by $\mathbf{K}$.
Camera poses are represented by matrices of the special Euclidean group $\mathbf{T}_{i} \in SE(3)$,
which transform a 3D coordinate from the camera coordinate
system to the world coordinate system. $\mathbf{\Pi_{K}}$ and $\mathbf{\Pi^{-1}_{K}}$
are used to denote camera projection and back-projection functions. In this paper, a 3D
point is represented by its image coordinate $\mathbf{p}$ and inverse depth $d_\mathbf{p}$ relative to its host keyframe.
The host keyframe is the frame the point got selected from.
The inverse depth parameterization has been demonstrated to be advantageous when errors in images
are modeled as Gaussian distributions~\cite{davison2007monoslam, civera2008inverse}.

\begin{figure}[t]
\begin{center}
\includegraphics[width=1.0\linewidth]{figures/system_overview.pdf}
\end{center}
\vspace{-1.0em}
   \caption{System overview.}\label{fig:system_overview}
   \vspace{-1.0em}
\end{figure}

\subsection{Direct Image Alignment Formulation}\label{sec:direect_alignment}
Suppose a point set $\mathcal{P}_{i}$ in a reference frame $I_i$ is observed in another frame $I_j$,
the basic idea of direct image alignment can be formulated as
\begin{equation}\label{eq:direct_alignment_basic}
E_{ij}=\sum_{\mathbf{p}\in{\mathcal{P}_{i}}} \omega_{\mathbf{p}} \Big\| I_j[\mathbf{p'}] - I_{i}[\mathbf{p}] \Big\|_{\gamma},
\end{equation}
where $\|\cdot\|_{\gamma}$ is the Huber norm and $\omega_{\mathbf{p}}$ is a weighting that down-weights high image gradients
\begin{equation}
\omega_{\mathbf{p}}=\frac{c^{2}}{c^{2}+\|\nabla I_{i}(\mathbf{p})\|^{2}_{2}},
\end{equation}
with some constant $c$. $\mathbf{p'}$ is the projection of $\mathbf{p}$ in $I_j$ calculated by
\begin{equation}\label{eq:projection}
\mathbf{p'}=\mathbf{\Pi_{K}}\big(\mathbf{T}_{ji}\mathbf{\Pi^{-1}_{K}}(\mathbf{p}, d_{\mathbf{p}})\big),
\end{equation}
with $d_{\mathbf{p}}$ the inverse depth of $\mathbf{p}$ and $\mathbf{T}_{ji}$ the transformation
that transforms a point from frame $i$ to frame $j$:
\begin{equation}
\mathbf{T}_{ji}:=\begin{bmatrix}\mathbf{R}_{ji} & \mathbf{t}\\0 & 1\\\end{bmatrix}=\mathbf{T}^{-1}_{j}\mathbf{T}_{i}.
\end{equation}

Conventional direct methods, both dense and semi-dense, tend to use as many pixels from
each image as possible. While bringing heavy computational burden to the system, its
benefit saturates fast. Therefore, in~\cite{engel2016direct} the authors proposed a
strategy to select a fixed number of points from each frame, uniformly across all the
regions with sufficient gradient. For each selected point, a small neighborhood around
it is used to calculate the photometric error in (\ref{eq:direct_alignment_basic}). In
this paper we follow the same approach, but use the stereo image pair to verify the
selected points and assist the depth initialization. More details are provided in
Sec~\ref{sec:frame_management}.

As the photometric error is calculated directly on pixel intensities, it is very
sensitive to sudden illumination changes between consecutive frames. Ideally the exposure
time of each frame, as well as the camera response function (which can be highly non-linear)
are directly accessible from the hardware~\cite{engel2016monodataset}, which can be used
to correct such effect. When this information is not available (as for most existing datasets),
similar to~\cite{engel2016direct},
we introduce two parameters $a_{i}$, $b_{i}$ for each image to model an affine brightness
change. The energy function in (\ref{eq:direct_alignment_basic}) is then modified
to
\begin{equation}\label{eq:direct_alignment_energy}
E_{ij}=\sum_{\mathbf{p}\in{\mathcal{P}_{i}}}
       \sum_{\tilde{\mathbf{p}}\in{\mathcal{N}_{\mathbf{P}}}}
       \omega_{\tilde{\mathbf{p}}} \bigg\| I_j[\tilde{\mathbf{p}}']-b_{j} -
                                           \frac{e^{a_{j}}}{e^{a_{i}}}(I_{i}[\tilde{\mathbf{p}}]-b_{i}) \bigg\|_{\gamma},
\end{equation}
with $\mathcal{N}_{\mathbf{P}}$ the 8-point pattern of $\mathbf{p}$ as defined in~\cite{engel2016direct} and $\tilde{\mathbf{p}}'$ the projection of the pattern point $\tilde{\mathbf{p}}$ into $I_j$.
$a_{i}$, $a_{j}$, $b_{i}$, $b_{j}$ are estimated in the windowed optimization as is shown in Sec~\ref{sec:windowed_optimization}.

\subsection{Tracking}\label{sec:tracking}
Each time a new stereo frame is fed into the system, direct image alignement~\cite{engel2013semi} is used to track it with respect to the newest keyframe in
the active window: a constant motion model is used to assign an initial
pose to the new frame to be tracked. All the points inside the active window are projected into the new frame. Then the pose of the new frame is optimized by minimizing the energy function (\ref{eq:direct_alignment_energy}) while keeping the depth values fixed. The optimization is performed with Gauss-Newton on an image pyramid in a coarse-to-fine order.

To initialize the whole system, i.e., to track the second frame with respect to the initial one using
(\ref{eq:direct_alignment_energy}), the inverse depth values of the points in the first
frame are required. Previous monocular direct VO approaches use random depth values for
initialization~\cite{engel2013semi,engel2014lsd,engel2016direct}, thus usually need a
certain pattern of the initial camera movement. In this work we use static stereo
matching to estimate a semi-dense depth map for the first frame. As at this stage the affine
brightness transfer factors between the stereo image pair are unknown, correspondences are
searched along the horizontal epipolar line using the NCC of the
$3\times5$ neighborhood.

\subsection{Frame Management}\label{sec:frame_management}
If a new stereo frame is successfully tracked, we use the same criteria as in
~\cite{engel2016direct} to determine if a new keyframe is required. The basic idea is
to check if the scene or the illumination has sufficiently changed. Scene changing is
evaluated by the mean squared optical flow, as well as the mean squared optical flow
without rotation between the current frame and the last
keyframe in the active window. Illumination change is quantized by the relative
brightness factor $|a_{j}-a_{i}|$.

To create a new keyframe, a sparse set of points is selected from the image, which
will be called candidate points in the rest of the paper. To select points evenly distributed across the image and only points that have sufficient image gradient, the
image is divided into small blocks and for each block an adaptive threshold is calculated.
Instead of using square blocks of fixed size~\cite{engel2016direct}, we use blocks with size that is proportional to the image size. We find this helpful for images
with dissimilar width and height like the ones from KITTI.
A point is selected if it surpasses the threshold of the block and it has the largest
absolute gradient in its neighborhood.

Before a candidate point is activated and optimized in the windowed optimization, its
inverse depth is constantly refined by the following non-keyframes. In the monocular
case, the candidate point is usually initialized to have a depth range from 0 to infinity,
corresponding to a large depth variance. In our case, we use static stereo matching with NCC to obtain a better depth initialization
for the candidate points, which significantly increases the tracking accuracy.

When old points are removed from the active window by marginalization
(Sec~\ref{sec:windowed_optimization}), candidate points are activated and added to the
joint optimization. Each activated point is hosted in one keyframe and is observed by
several other keyframes in the active window. Each time an active point is observed
in another keyframe, it creates a photometric energy factor defined as the inner part of
(\ref{eq:direct_alignment_energy}):
\begin{equation}\label{eq:point_residual}
E^{\mathbf{p}}_{ij}=\omega_{\mathbf{p}} \bigg\| I_j[\mathbf{p}']-b_{j} -
                                                \frac{e^{a_{j}}}{e^{a_{i}}}(I_{i}[\mathbf{p}]-b_{i}) \bigg\|_{\gamma}.
\end{equation}
For simplicity of notation, we omit the summation over the neighborhood $\mathcal{N}_{\mathbf{P}}$
in the above equation as well as in the rest of this paper.
A factor graph of the energy function is shown in Fig~\ref{fig:factor_graph}, where each
factor (represented as small square in the middle) depends on the inverse depth of the
point, the cameras poses of the host keyframe and the
keyframe that observes this point, as well as their affine brightness correction factors. The constraints from static stereo (denoted with red lines) introduce scale information into the system. Moreover, they also provide good geometric priors to temporal multi-view stereo.

\begin{figure}
\begin{center}
\includegraphics[width=1.0\linewidth]{figures/factor_graph_4.pdf}
\end{center}
\vspace{-0.5em}
   \caption{Factor graph of the energy function. In this example, 5 points are observed
            by 4 keyframes. Each energy factor is related to one point and two keyframes,
            thus depends on the inverse depth of the point, the camera poses of the two keyframes
            and their affine brightness correction factors, as well as the camera intrinsic
            parameters (we assume the same for the left and the right cameras, and omit it
            here for simplicity). Constraints from host keyframes and static stereo are
            shown in dark blue and red respectively.
            Remaining constraints in light blue are the ones from the keyframes the points
            are observed.}\label{fig:factor_graph}
   \vspace{-1.0em}
\end{figure}

\subsection{Windowed Optimization}\label{sec:windowed_optimization}
Putting all the energy factors together, the final energy function to be minimized in the
windowed optimization is
\begin{equation}\label{eq:final_energy}
E=\sum_{i\in{\mathcal{F}}}
  \sum_{\mathbf{p}\in{\mathcal{P}_{i}}}
  \sum_{j\in{obs(\mathbf{p})}}
  E^{\mathbf{p}}_{ij},
\end{equation}
where $\mathcal{F}$ is the set of the keyframes in the current window and $obs(\mathbf{p})$ is the set of the keyframes in $\mathcal{F}$ that can observe $\mathbf{p}$. The energy is optimized iteratively using Gauss-Newton algorithm:
\begin{equation}
\delta\boldsymbol{\xi} = -({\mathbf{J}^{T}\mathbf{WJ}})^{-1}\mathbf{J^{T}Wr},
\end{equation}
\begin{equation}
\boldsymbol{\xi}^{new} = \delta\boldsymbol{\xi} \boxplus \boldsymbol{\xi},
\end{equation}
where $\mathbf{r}$ contains the stacked residuals, $\mathbf{J}$ is the Jacobian and $\mathbf{W}$
is the diagonal weight matrix. The parameters we want to optimize are enclosed in
\begin{equation}
\begin{split}
\boldsymbol{\xi} = ( & \mathbf{T}_{0,...,N_{f}-1}, d_{0,...,N_{p}-1}, \mathbf{c}, \\
                      & a^{L}_{0,...,N_{f}-1}, b^{L}_{0,...,N_{f}-1}, \\
                      & a^{R}_{0,...,N_{f}-1}, b^{R}_{0,...,N_{f}-1}),
\end{split}
\end{equation}
where $\mathbf{c}$ is the vector containing the global camera intrinsics, $L$ and $R$ denote the parameter of the left and right camera frame, and $N_{f}$ and $N_{p}$ are the numbers of keyframes and active points in the current window, respectively.
The $\boxplus$-operator on $\mathbf{T}$ is
defined using Lie Algebra $se(3)$ as
\begin{equation}
\boxplus : se(3) \times SE(3) \rightarrow SE(3), \mathbf{x} \boxplus \mathbf{T} := exp(\hat{\mathbf{x}})\mathbf{T},
\end{equation}
whereas on the rest parameters it is simply the conventional addition.

\noindent{\textbf{Temporal Multi-View Stereo.}} Each residual from temporal multi-view stereo
is defined as
\begin{equation}\label{eq:residual}
r^{t}_k =  I_j[\mathbf{p}'(\mathbf{T}_{i}, \mathbf{T}_{j}, d, \mathbf{c})]-b_{j} -
                  \frac{e^{a_{j}}}{e^{a_{i}}}(I_{i}[\mathbf{p}]-b_{i}).
\end{equation}
Similar to~\cite{engel2016direct} the Jacobian is defined as
\begin{equation}\label{eq:Jacobian}
\mathbf{J}^{t}_{k} = \bigg[ \frac{\partial I_j}{\partial \mathbf{p}'} \frac{\partial \mathbf{p}'(\delta\boldsymbol{\xi} \boxplus \boldsymbol{\xi})}{\partial \delta \boldsymbol{\xi}^{t}_{geo}},
                        \frac{\partial r_k(\delta\boldsymbol{\xi} \boxplus \boldsymbol{\xi})}{\partial \delta\boldsymbol{\xi}^{t}_{photo}}
                 \bigg],
\end{equation}
where the geometric parameters $\boldsymbol{\xi}^{t}_{geo}$ are $(\mathbf{T}_{i}, \mathbf{T}_{j}, d, \mathbf{c})$
and the photometric parameters $\boldsymbol{\xi}^{t}_{photo}\!=\!(a_i, a_j, b_i, b_j)$.\\

\noindent{\textbf{Static Stereo.}} For static stereo the residual is modified to
\begin{equation}\label{eq:residual_static}
r^{s}_k = I^R_i[\mathbf{p}'(\mathbf{T}_{ji}, d, \mathbf{c})]-b^R_{i} -
                  \frac{e^{a^R_{i}}}{e^{a^L_{i}}}(I_{i}[\mathbf{p}]-b^L_{i}).
\end{equation}
The Jacobian has the same form as in (\ref{eq:Jacobian}) but now with less geometric
parameters $\boldsymbol{\xi}_{geo}\!=\!(d, \mathbf{c})$, because the relative transformation between
the left and right cameras $\mathbf{T}_{ji}$ is fixed. Therefore, $\mathbf{T}_{ji}$ is not optimized in the
windowed optimization. \\

\noindent{\textbf{Stereo Coupling.}} To balance the relative weights of temporal
multi-view and static stereo, we introduce a coupling factor $\lambda$ to weight
the constraints from static stereo differently. The energy function in (\ref{eq:final_energy})
thus can be further formulated as
\begin{equation}
E = \sum_{i\in{\mathcal{F}}}
    \sum_{\mathbf{p}\in{\mathcal{P}_{i}}}
    \Big(\sum_{j\in{obs^{t}(\mathbf{p})}} E^{\mathbf{p}}_{ij}
    +\lambda E^{\mathbf{p}}_{is}\Big),
\end{equation}
where $obs^{t}(\mathbf{p})$ are the observations of $\mathbf{p}$ from
temporal multi-view stereo, and $E^{\mathbf{p}}_{is}$ the energy belonging to the static stereo residuals. The effects of the coupling factor are detailed in Sec~\ref{sec:evaluation_kitti}. \\

\noindent{\textbf{Marginalization.}} To keep the active window of bounded size, old keyframes are removed by
marginalization using the Schur complement~\cite{leutenegger2015keyframe, engel2016direct}.
Before marginalizing a keyframe, we first marginalize all active points that are not observed
by the two latest keyframes together with all active points hosted in the keyframe.
Afterwards, the keyframe is marginalized and moved out of the active window. Let $\mathbf{H}=\mathbf{J}^{T}\mathbf{WJ}$ and
$\mathbf{b}=\mathbf{J}^{T}\mathbf{W}\mathbf{r}$ be the
Gauss-Newton system containing only the variables to marginalize and the variables connected to them in the factor graph.
If we use $\alpha$ and $\beta$ to respectively denote the variables to keep and to
marginalize, the Gauss-Newton system can be rearranged to
\begin{equation}
\begin{bmatrix} \mathbf{H}_{\alpha\alpha} & \mathbf{H}_{\alpha\beta} \\
                \mathbf{H}_{\beta\alpha} & \mathbf{H}_{\beta\beta} \end{bmatrix}
\begin{bmatrix} \mathbf{x}_{\alpha} \\ \mathbf{x}_{\beta} \end{bmatrix} =
\begin{bmatrix} \mathbf{b}_{\alpha} \\ \mathbf{b}_{\beta} \end{bmatrix}.
\end{equation}
Multiplying the second line by $\mathbf{H}_{\alpha\beta}\mathbf{H}^{-1}_{\beta\beta}$ and
subtracting it from the first leads to
\begin{equation}
\underbrace{(\mathbf{H}_{\alpha\alpha}-\mathbf{H}_{\alpha\beta}\mathbf{H}^{-1}_{\beta\beta}\mathbf{H}^{T}_{\alpha\beta})}_{\widehat{\mathbf{H}}_{\alpha\alpha}}\mathbf{x}_{\alpha} =
\underbrace{\mathbf{b}_{\alpha}-\mathbf{H}_{\alpha\beta}\mathbf{H}^{-1}_{\beta\beta}\mathbf{b}_{\beta}}_{\widehat{\mathbf{b}}_{\alpha}}.
\end{equation}
The resulting system $\widehat{\mathbf{H}}_{\alpha\alpha}\mathbf{x}_{\alpha}=\widehat{\mathbf{b}}_{\alpha}$ only depends on the variables to keep $\mathbf{x}_{\alpha}$ and is added as prior to the subsequent optimizations.

\section{Conclusion}
In this work, we introduced Stereo Direct Sparse Odometry as a
direct large-scale capable method for accurately tracking and mapping
from a stereo camera in real-time. We detailed the technical
implementation including the integration of temporal multi-view stereo
and static stereo within a marginalization framework using the Schur complement. Thorough qualitative and quantitative evaluations on the KITTI dataset
and the Cityscapes dataset demonstrate that Stereo DSO is the
currently most accurate and robust method for tracking a stereo camera
in challenging real-world scenarios. In particular, an evaluation on
the KITTI testing set showed that even without closing large loops,
Stereo DSO provides more accurate results than Stereo ORB-SLAM2 with loop closuring and global bundle adjustment.

In future work, we plan to extend our approach to a full SLAM system
by adding loop closuring and a database for map maintenance. Besides, we
also consider explicit dynamic object handling to further
boost the VO accuracy and robustness.\\

\noindent{\textbf{Acknowledgments}. This work was supported by the ERC
Consolidator Grant ``3D Reloaded''. We would like to thank Jakob Engel
and Vladyslav Usenko for their supports and fruitful discussions. }
\section{Evaluation}\label{sec:evaluation}
We evaluate our method on two popular datasets: the KITTI Odometry Benchmark and the
Cityscapes Dataset. Both datasets provide synchronized stereo sequences with rectified
high resolution images. We compare our method thoroughly with state-of-the-art stereo VO methods, both
feature-based and direct method on KITTI.
On Cityscapes, we create several sequences with ground truth camera poses calculated from the provided GPS
coordinates. We show both the tracking and 3D reconstruction results on this dataset and demonstrate that our method can be used for large-scale camera tracking and 3D reconstruction.

\subsection{KITTI Visual Odometry Benchmark}\label{sec:evaluation_kitti}
\begin{figure}
\begin{center}
\includegraphics[width=0.96\linewidth]{figures/coupling.pdf}
\end{center}
\vspace{-0.7em}
   \caption{Average translational and rotational errors on Seq. 06 for different coupling factors.
   }\label{plot:coupling_06}
   \vspace{-1.2em}
\end{figure}
We evaluate our method on the KITTI Odometry Benchmark~\cite{geiger2013vision}, where altogether 22 driving
sequences are provided. The first 11 (00-10) sequences are provided with ground truth 6D
poses as training set, whereas the latter 11 sequences comprise the testing set.

We first test the influence of the stereo coupling factor on an example sequence (Seq. 06).
The translational and rotational errors obtained by using different coupling factors are
shown in Fig~\ref{plot:coupling_06}: Introducing constraints from
static stereo with certain weightings ($\lambda=1,2$) significantly reduces both translational and rotational errors. Further increasing the weighting ($\lambda>3$) makes the method more sensitive to incorrect matchings from static stereo and thus degrade the performance. The estimated trajectories
for $\lambda = 0-3$ are shown in the supplementary material.

The comparison of the VO accuracy of different stereo methods on the training set are shown in Table~\ref{tab:kitti_training}.
We compare our method to Stereo LSD-SLAM and ORB-SLAM2, which are currently the state-of-the-art direct and
feature-based stereo VO methods respectively.
The results for Stereo LSD-SLAM are cited from~\cite{engel2015large} (VO only), while the ones for
ORB-SLAM2 are obtained by running their code with default settings. For fair comparison we turned off its
loop-closure detection and global bundle adjustment. It can be seen that our results are almost
always better than LSD-SLAM.
Compared to ORB-SLAM2, all our rotational errors are better, but
translational errors are slightly mixed. We claim that this might result from the relatively low frame rate
of the dataset.

\begin{table}
\small
\begin{center}
\begin{tabular}{|c|c|c|c|c|c|c|}
\hline
     & \multicolumn{2}{c|}{St. DSO} & \multicolumn{2}{c|}{ORB-SLAM2} & \multicolumn{2}{c|}{St. LSD-VO} \\
\hline
Seq. & \multicolumn{1}{c}{$t_{rel}$} & \multicolumn{1}{c|}{$r_{rel}$} & \multicolumn{1}{c}{$t_{rel}$} & \multicolumn{1}{c|}{$r_{rel}$} & \multicolumn{1}{c}{$t_{rel}$} & \multicolumn{1}{c|}{$r_{rel}$} \\
\hline
\hline
00   & \multicolumn{1}{c}{0.84}          & \multicolumn{1}{c|}{\textbf{0.26}}          & \multicolumn{1}{c}{\textbf{0.83}} & \multicolumn{1}{c|}{0.29} & \multicolumn{1}{c}{1.09}          & \multicolumn{1}{c|}{0.42}  \\
01   & \multicolumn{1}{c}{1.43}          & \multicolumn{1}{c|}{\textbf{0.09}} & \multicolumn{1}{c}{\textbf{1.38}} & \multicolumn{1}{c|}{0.20}          & \multicolumn{1}{c}{2.13}          & \multicolumn{1}{c|}{0.37}  \\
02   & \multicolumn{1}{c}{\textbf{0.78}}          & \multicolumn{1}{c|}{\textbf{0.21}} & \multicolumn{1}{c}{0.81} & \multicolumn{1}{c|}{0.28}          & \multicolumn{1}{c}{1.09}          & \multicolumn{1}{c|}{0.37}  \\
03   & \multicolumn{1}{c}{0.92}          & \multicolumn{1}{c|}{\textbf{0.16}} & \multicolumn{1}{c}{\textbf{0.71}} & \multicolumn{1}{c|}{0.17}          & \multicolumn{1}{c}{1.16}          & \multicolumn{1}{c|}{0.32}  \\
04   & \multicolumn{1}{c}{0.65}          & \multicolumn{1}{c|}{\textbf{0.15}} & \multicolumn{1}{c}{0.45}          & \multicolumn{1}{c|}{0.18}          & \multicolumn{1}{c}{\textbf{0.42}} & \multicolumn{1}{c|}{0.34}  \\
05   & \multicolumn{1}{c}{0.68}          & \multicolumn{1}{c|}{\textbf{0.19}} & \multicolumn{1}{c}{\textbf{0.64}} & \multicolumn{1}{c|}{0.26}          & \multicolumn{1}{c}{0.90}          & \multicolumn{1}{c|}{0.34}  \\
06   & \multicolumn{1}{c}{\textbf{0.67}} & \multicolumn{1}{c|}{\textbf{0.20}} & \multicolumn{1}{c}{0.82}          & \multicolumn{1}{c|}{0.25}          & \multicolumn{1}{c}{1.28}          & \multicolumn{1}{c|}{0.43}  \\
07   & \multicolumn{1}{c}{0.83}          & \multicolumn{1}{c|}{\textbf{0.36}}          & \multicolumn{1}{c}{\textbf{0.78}} & \multicolumn{1}{c|}{0.42} & \multicolumn{1}{c}{1.25}          & \multicolumn{1}{c|}{0.79}  \\
08   & \multicolumn{1}{c}{\textbf{0.98}} & \multicolumn{1}{c|}{\textbf{0.25}} & \multicolumn{1}{c}{1.07}          & \multicolumn{1}{c|}{0.31}          & \multicolumn{1}{c}{1.24}          & \multicolumn{1}{c|}{0.38}  \\
09   & \multicolumn{1}{c}{0.98}          & \multicolumn{1}{c|}{\textbf{0.18}} & \multicolumn{1}{c}{\textbf{0.82}} & \multicolumn{1}{c|}{0.25}          & \multicolumn{1}{c}{1.22}          & \multicolumn{1}{c|}{0.28}  \\
10   & \multicolumn{1}{c}{\textbf{0.49}} & \multicolumn{1}{c|}{\textbf{0.18}} & \multicolumn{1}{c}{0.58}          & \multicolumn{1}{c|}{0.28}          & \multicolumn{1}{c}{0.75}          & \multicolumn{1}{c|}{0.34}  \\
\hline
\hline
mean & \multicolumn{1}{c}{0.84} & \multicolumn{1}{c|}{0.20} & \multicolumn{1}{c}{0.81} & \multicolumn{1}{c|}{0.26} & \multicolumn{1}{c}{1.14} & \multicolumn{1}{c|}{0.40}  \\
\hline
\end{tabular}
\end{center}
\vspace{-0.7em}
\caption{Comparison of accuracy on KITTI training set.
         $t_{rel}$ translational RMSE ($\%$), $r_{rel}$ rotational RMSE (degree per 100$m$).
         Both are average over 100$m$ to 800$m$ intervals. Best results are shown as bold numbers.}\label{tab:kitti_training}
         \vspace{-1.2em}
\end{table}

\begin{figure}[h!]
\begin{center}
\includegraphics[width=0.9\linewidth]{figures/tl.pdf}
\includegraphics[width=0.9\linewidth]{figures/rl.pdf}
\includegraphics[width=0.9\linewidth]{figures/ts.pdf}
\includegraphics[width=0.9\linewidth]{figures/rs.pdf}
\end{center}
\vspace{-0.8em}
   \caption{Average translational and rotational errors with respect to driving intervals (top two)
   and driving speed (bottom two) on KITTI testing set (Seq. 11-21).
   In all the cases, our VO results (without loop closure) are better than the SLAM results (with loop closure, for ORB-SLAM2 also with global bundle adjustment) of LSD-SLAM and ORB-SLAM2. It is surprising to see that even for large intervals our method
   performs better, as in such cases loop closure usually reduces the errors significantly.}\label{plot:kitti_testing}
   \vspace{-1.5em}
\end{figure}

In Fig~\ref{plot:kitti_testing} we show our results on the testing set.
We show the same plots as recommended by the benchmark,
where translational errors and rotational errors with respect to different distance
intervals and driving speeds over the entire set are plotted. It is worth noting that the results for the
other two methods are obtained by their SLAM system with loop closure (for ORB-SLAM2 also
with global bundle adjustment), while ours are from pure VO. As can be seen from the plots,
our method performs the best under all settings.

\begin{figure}
\centering
\begin{subfigure}[]{0.98\linewidth}
\includegraphics[width=0.48\linewidth]{figures/00_traj_mono_00.pdf}
\includegraphics[width=0.48\linewidth]{figures/00_traj_stereo_00.pdf}
\end{subfigure}
\begin{subfigure}[]{0.98\linewidth}
\includegraphics[width=0.48\linewidth]{figures/00_traj_mono_05.pdf}
\includegraphics[width=0.48\linewidth]{figures/00_traj_stereo_05.pdf}
\end{subfigure}
\vspace{-0.3em}
   \caption{Qualitative results on KITTI sequence 00 and 05. For the monocular VO results we perform
   a similarity alignment to the ground truth. }\label{fig:qualitative_kitti}
\end{figure}

\begin{figure}
\centering
\begin{subfigure}[]{0.98\linewidth}
\includegraphics[width=0.97\linewidth]{figures/dso_fail.png}
\end{subfigure}
\begin{subfigure}[]{0.98\linewidth}
\includegraphics[width=0.48\linewidth]{figures/csF1.png}
\includegraphics[width=0.48\linewidth]{figures/csF2.png}
\end{subfigure}
\begin{subfigure}[]{0.98\linewidth}
\includegraphics[width=0.48\linewidth]{figures/csF3.png}
\includegraphics[width=0.48\linewidth]{figures/csF4.png}
\end{subfigure}
   \caption{An example of severe brightness change due to camera auto exposure/gain control.
   Despite the affine brightness correction our method still fails here due to
   the extreme brightness change as well as the strong rotational motion of the car.
   }\label{fig:cs_illumination}
   \vspace{-1.0em}
\end{figure}

To show the benefit of using a stereo camera, Fig~\ref{fig:qualitative_kitti} qualitatively compares the results of different monocular VO methods with our method on the sequences 00 and 06. Both state-of-the-art feature-based and direct monocular VO methods can not handle the scale drift properly. Results on all training sequences can be found in the supplementary material.

\subsection{Cityscapes Dataset}
To evaluate our method on more realistic data, we further run our Stereo DSO on the Cityscapes
Dataset~\cite{cordts2016cityscapes}. Although this dataset is dedicatedly designed for scene
understanding and image segmentation, it also provides a long sequence (over 100,000
frames) captured using a stereo camera system. We choose this dataset as it provides
industrial level images with high dynamic-range (HDR) and fairly high frame rate (17Hz). Moreover,
in contrast to most existing datasets that provide street view sequences with global shutters,
the images of Cityscapes were captured using rolling shutter cameras, which has been considered as a main challenge to direct methods.
Although we do not address the rolling shutter calibration problem specifically in this paper,
our method implicitly makes use of two advantages of modern stereo camera systems:
Firstly, they have very fast pixel clock which reduces the rolling shutter effect; Secondly, the corresponding
rows of the left and right images are synchronized. Therefore, static stereo can compensate the errors
introduced by the rolling shutter effect across multiple views (multi-view stereo).

\begin{figure*}[t!]
\begin{center}
\includegraphics[width=0.98\linewidth]{figures/CS_quality_3by3.pdf}
\end{center}
\vspace{-0.5em}
   \caption{Examples of qualitative results on the Cityscapes Dataset.}\label{fig:qualitative_cs}
\vspace{-1.0em}
\end{figure*}

As for this dataset only inaccurate GPS/vehicle odometry information is provided,
it is hard to evaluate the VO performance accurately. Besides, this dataset has lots of
moving objects such as cars driving right in front of the camera as well as severe uncalibrated brightness
changes (Fig~\ref{fig:cs_illumination}). Although our method has considered brightness changes
in the energy function, it seems the simple affine brightness modeling is not sufficient to handle
extreme cases. Our method fails in the scene
as shown in Fig~\ref{fig:cs_illumination}, where the severe brightness change is combined
with a strong rotational movement of the car.

To evaluate our tracking accuracy, we divide the long sequence into several smaller ones with
length of 3000 to 6000 frames. For each small sequence, we calculate the ground truth camera
poses from the GPS coordinates using the Mercator projection and align these poses
to our trajectories using a SE(3) transformation. Some results of the estimated camera trajectories
can be found in Fig~\ref{fig:cs_traj}. As a big advantage of our method over
the feature-based methods, our VO approach creates precise and much denser 3D reconstructions.
Fig~\ref{fig:qualitative_cs} shows some reconstruction results on the Frankfurt sequence.
Although the reconstructions are
sparser than the ones from previous dense or semi-dense approaches, they are much more
accurate due to the bundle adjustment in the windowed optimization. More evaluation results
can be found in the supplementary material.

\begin{figure}
\centering
\begin{subfigure}[]{0.98\linewidth}
\includegraphics[width=0.48\linewidth]{figures/cstr1.pdf}
\includegraphics[width=0.48\linewidth]{figures/cstr2.pdf}
\end{subfigure}
\begin{subfigure}[]{0.98\linewidth}
\includegraphics[width=0.48\linewidth]{figures/cstr3.pdf}
\includegraphics[width=0.48\linewidth]{figures/cstr4.pdf}
\end{subfigure}
\vspace{-0.3em}
   \caption{Estimated trajectories on the Cityscapes Frankfurt stereo sequence. The sequences are obtained by dividing the long sequence into several smaller segments of 5000 to 6000 frames.
   }\label{fig:cs_traj}
   \vspace{-1.0em}
\end{figure}

\section{Introduction}

\subsection{Real-time Visual Odometry}
\begin{figure}[t]
\begin{center}
 \includegraphics[width=1.0\linewidth]{figures/show_case.pdf}
\end{center}
\vspace{-0.7em}
\caption{Results of Stereo Direct Sparse Odometry on sequence 00 of
  the KITTI Dataset. On top is the estimated camera trajectory. To
  distinguish the sparsity from previous dense or semi-dense direct
  methods, we show the depth maps used for tracking in the middle. An example of a reconstructed scene is shown at bottom.}
\vspace{-1.2em}
\end{figure}
While traditionally robotic systems such as self-driving cars have
been largely relying on Laser or Lidar to actively sense their
environment and perform self localization and mapping, more recently
camera-based SLAM and odometry algorithms have witnessed a drastic
boost in performance. Although such passive sensors require a
sufficiently illuminated and textured scene
to infer 3D structure and motion, they comprise several advantages
including higher resolution, higher sensing range and sensing rate as well as lower weight, size and hardware cost. This makes them far more
versatile -- the smaller size and weight, for example, enable
applications such as visual-inertial autonomous navigation of
nanocopters \cite{dunkley14iros}.
As a result, there is a huge demand for real-time capable visual
odometry and visual SLAM algorithms. Among the most desirables
properties are maximal accuracy, robustness (to changes in
scene structure, lighting and faster motion) and density of
the reconstructed environment. In this paper, we propose what we
believe to be the currently most accurate and robust real-time visual
odometry method.

\subsection{Related Work}

The first real-time capable visual SLAM and odometry systems were
pioneered around 2000
\cite{chiuso2002structure,nister2004visual,davison2007monoslam,civera2008inverse}.
The key idea underlying these structure and motion techniques is to
select a set of keypoints (typically corner-like structures), track
them across frames and jointly infer their 3D location and the camera
motion. More recently, we have witnessed a boost of increasingly
performant solutions stemming from numerous advances both in computing
hardware and in algorithmic sophistication. For example, Klein and
Murray~\cite{klein2007parallel} parallelized the motion and 3D structure
estimations. Strasdat et al.~proposed to
expand the concept of keyframes to integrate
scale~\cite{strasdat2010scale} and proposed a double window
optimization~\cite{strasdat2011double}.
Mei et al.~\cite{mei2011rslam} developed a relative SLAM approach for
constant-time estimation.
More recently,
ORB-SLAM~\cite{mur2015orb, mur2016orb} introduced an efficient visual
SLAM solution based on ORB features and innovations such as map reuse.
It has gained a lot of popularity due to its high tracking accuracy
and robustness and is among the state-of-the-art methods for visual
SLAM.

While the traditional structure and motion/visual SLAM algorithms were
based on heuristically selected keypoints, more recently a number of
so-called direct methods were proposed
\cite{stuhmer2010real,newcombe2011dtam,engel2013semi,forster2014svo,engel2014lsd}.
These aim at computing geometry and motion directly from the
images thereby skipping the intermediate keypoint selection step.
Algorithmically they typically rely on robust cost functions and
optimization through Gauss-Newton iteration as done also for RGB-D
based SLAM in \cite{kerl2013dense, kerl2013robust, klose2013efficient}.
While the methods
\cite{stuhmer2010real,newcombe2011dtam} rely on variational methods
and total variation regularization to generate dense reconstructions
in real-time (on powerful GPUs), the latter
works \cite{engel2013semi,forster2014svo} abstain from dense solutions in order to not oversmooth or
hallucinate geometric structures but rather generate semi-dense or sparse
reconstructions without the need for GPU support. The extension of
direct monocular SLAM algorithms to large-scale environments was
proposed in LSD-SLAM \cite{engel2014lsd,engel2015large}. The key idea
is to incrementally track the camera and simultaneously perform a
pose graph optimization in order to keep the entire camera trajectory
globally consistent. While this kind of stripped-down version of
bundle adjustment (which includes motion, but excludes structure) does not remove the drift, it appears to spread
it out across the computed trajectory. Since then, the semi-dense
direct VO/SLAM has been further extended by support for omnidirectional
cameras~\cite{caruso2015large} and tightly coupling with IMU~\cite{usenko2016direct}. A rolling shutter calibration
method for LSD-SLAM has been recently proposed
in~\cite{kim2016direct}.

While we are witnessing an ongoing competition between
keypoint based algorithms and direct algorithms, recently Direct
Sparse Odometry (DSO) \cite{engel2016direct} was shown to outperform
the state-of-the-art keypoint based monocular SLAM algorithm ORB-SLAM
\cite{mur2015orb} in terms of both accuracy and robustness on a fairly
large dataset for monocular camera tracking
\cite{engel2016monodataset}.

While this seems to indicate a certain advantage of direct methods,
DSO has several shortcomings as a technique for visual
odometry or SLAM: Firstly, the mentioned performance gain was
demonstrated on a photometrically calibrated dataset. In the absense
of this photometric calibration (many datasets do not provide it), the
performance of direct methods like DSO substantially degrades.
Secondly, being a pure monocular system, DSO invariably cannot
estimate the scale of the reconstructed scene or the units of camera
motion. Furthermore, the estimated trajectory suffers from  substantial
scale drift such that even manually providing the best scale
does not resolve the problem -- see Fig~\ref{fig:qualitative_kitti}.
Thirdly, as shown in~\cite{engel2016direct} DSO is quite sensitive to
geometric distortions as those induced by fast motion and rolling
shutter cameras. While techniques for calibrating rolling shutter exist for direct
SLAM algorithms~\cite{kim2016direct},
these are often quite involved and far from real-time capable.

\subsection{Contribution}

In this work, we propose {\em Stereo DSO} as a novel direct visual
odometry method for highly accurate and robust motion
and 3D structure estimation in real-time from a moving stereo camera.
It addresses the aforementioned shortcomings of previous approaches by
leveraging the additional sensor information. Thus it provides an
accurate and (due to the stereo initialization) much faster converging scale
estimation and is less sensitive to missing photometric calibration or
the effects of rolling shutter. In particular:
\begin{itemize}
\item We derive a stereo version of DSO. To this end, we detail the
  proposed combination of temporal multi-view stereo and static stereo
  and their integration with marginalization using the Schur complement.
  Unlike previous extension of monocular direct approach~\cite{engel2014lsd}
  to stereo~\cite{engel2015large} (both apply filtering approaches to the geometry that do not involve bundle adjustment), we propose a novel way to extend the energy function and the entire bundle adjustment procedure in a manner that real-time capability is assured.
\item  We perform systematic quantitative evaluations on the KITTI dataset
  and on the Cityscapes dataset. Comparisons to alternative
  methods like Stereo ORB-SLAM and Stereo LSD-SLAM demonstrate that the
  proposed Stereo DSO is superior to these techniques, in particular
  when evaluated on the KITTI testing set, indicating that the method generalizes better to unknown settings.
\item A quantitative evaluation over longer ranges
  demonstrates that the proposed Stereo DSO algorithm without loop
  closure optimization outperforms Stereo ORB-SLAM which applies global pose graph optimization and bundle adjustment.
\end{itemize}

\section{Related Work}
Feature-based VO was initially addressed by filtering approaches~\cite{chiuso2002structure, davison2007monoslam, civera2008inverse}.
Then more research effort has been put onto the keyframe-based approaches as mapping only needs to be performed on selected frames and thus more sophisticated optimization can be applied.
One example is PTAM~\cite{klein2007parallel} that parallelizes the optimization for tracking and mapping.
The Keyframe-based framework has been further developed by Strasdat \etal to integrate scale~\cite{strasdat2010scale} and then into a double window optimization pipeline~\cite{strasdat2011double}.
A more recent feature-based method ORB-SLAM~\cite{mur2015orb, mur2016orb} has gained a lot of popularity due to its high tracking accuracy and robustness, as well as several other nice features like loop closure and map reuse.
It has achieved state-of-the-art performance on several datasets such as the KITTI Dataset~\cite{geiger2013vision} and the EuRoc MAV Dataset~\cite{burri2016euroc}.
We compare the performance of our method with ORB-SLAM in Sec~\ref{sec:evaluation}.

Direct VO methods try to estimate camera poses by minimizing the photometric error from image alignment.
The optimization is performed directly on pixel intensities instead of cautiously designed features, therefore more information from the images can be used.
The direct concept has been successfully applied for RGB-D images in~\cite{kerl2013dense, kerl2013robust, klose2013efficient}.
With the given depth images, high tracking robustness and efficiency can be achieved.
On RGB images, direct image alignment is combined with a variational formulation to deliver dense 3D reconstructions~\cite{stuhmer2010real, newcombe2011dtam}.
Since entire images are used, these computationally expensive approaches are usually limited to run in small workspace or on powerful GPUs.
A semi-dense VO method has been proposed in~\cite{engel2013semi} to reduce the computational burden by only using pixels with high intensity gradient.
Geometric and photometric errors are minimized for the selected pixels which enables real-time VO on CPUs and even on smart phones~\cite{schops2014semi}.
This novel approach has been later extended to the popular LSD-SLAM system~\cite{engel2014lsd,engel2015large}.
By integrating pose graph optimization, the system constructs a semi-dense 3D map with global consistency.
Since then, the semi-dense direct VO/SLAM has been further developed for omnidirectional cameras~\cite{caruso2015large} and with IMU integration~\cite{usenko2016direct}.
A rolling shutter calibration method for LSD-SLAM has been recently proposed in~\cite{kim2016direct}.
The most recent direct VO method is proposed in~\cite{engel2016direct}.
With a evenly selected sparse pixel set, the monocular VO method performs a joint optimization for all model parameters and achieves unprecedented tracking accuracy.
The method requires a full photometric calibration for which the camera response function, the dense lens vignetting factor, as well as the exposure time for each frame need to be available.
To the best of our knowledge, ~\cite{engel2016monodataset} is currently the only dataset that provides such information.
In this work we propose a novel formulation to integrate stereo cameras to the system, which highly increases the accuracy and robustness on images without photometric calibration.
The performance is evaluated on three widely used datasets in Sec~\ref{sec:evaluation}.

\section{More Results on Cityscapes}
As mentioned in the main paper, without specifically handling moving objects and sudden strong brightness changes, our method is currently
not able to run on the entire Frankfurt sequence (around 107,000 frames). Therefore,
we divide the full sequence into several smaller sections, each with a length of 5000-6000
frames resulting in a comparable coverage to the KITTI sequences. Exemplary results with
ground truth are shown in Fig~\ref{plot:cs_trajectories}. The plots of a few sections reveal that the ground truth poses calculated from the provided GPS coordinates are not always accurate.
In Fig~\ref{fig:frankfurt} we show the ground truth trajectory of the entire sequence as well as the estimated
trajectories aligned to it.

\begin{figure*}
    \centering
    \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/00.png}
        \includegraphics[width=0.32\textwidth]{figures/00_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/00_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 00}
    \end{subfigure}
    \vspace{-0.25em}

    \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/01.png}
        \includegraphics[width=0.32\textwidth]{figures/01_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/01_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 01 (ORB-SLAM fails on this sequence)}
    \end{subfigure}
    \vspace{-0.25em}

        \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/02.png}
        \includegraphics[width=0.32\textwidth]{figures/02_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/02_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 02}
    \end{subfigure}
    \vspace{-0.25em}

        \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/03.png}
        \includegraphics[width=0.32\textwidth]{figures/03_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/03_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 03}
    \end{subfigure}

\caption{Full results on the KITTI training set. The trajectories estimated by our VO method
are shown in the left column. The comparisons to the ground truth are shown in the right
column. The results of the two state-of-the-art monocular VO methods, namely ORB-SLAM (VO only) and DSO, are shown in the middle. The trajectories are aligned to the ground truth using similarity transformations (7DoF) and rigid-body
transformations (6DoF) for the monocular methods and our stereo method respectively.}\label{plot:kitti_trajectories}
\end{figure*}

\begin{figure*}\ContinuedFloat
    \centering
        \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/04.png}
        \includegraphics[width=0.32\textwidth]{figures/04_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/04_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 04}
    \end{subfigure}
    \vspace{-0.25em}

        \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/05.png}
        \includegraphics[width=0.32\textwidth]{figures/05_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/05_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 05}
    \end{subfigure}
    \vspace{-0.25em}

        \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/06.png}
        \includegraphics[width=0.32\textwidth]{figures/06_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/06_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 06}
    \end{subfigure}
    \vspace{-0.25em}

        \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/07.png}
        \includegraphics[width=0.32\textwidth]{figures/07_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/07_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 07}
    \end{subfigure}
\caption{Full results on the KITTI training set (cont.). The trajectories estimated by our VO method
	are shown in the left column. The comparisons to the ground truth are shown in the right
	column. The results of the two state-of-the-art monocular VO methods, namely ORB-SLAM (VO only) and DSO, are shown in the middle. The trajectories are aligned to the ground truth using similarity transformations (7DoF) and rigid-body
	transformations (6DoF) for the monocular methods and our stereo method respectively.}
\end{figure*}

\begin{figure*}\ContinuedFloat
    \centering
        \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/08.png}
        \includegraphics[width=0.32\textwidth]{figures/08_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/08_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 08}
    \end{subfigure}
    \vspace{-0.25em}

    \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/09.png}
        \includegraphics[width=0.32\textwidth]{figures/09_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/09_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 09}
    \end{subfigure}
    \vspace{-0.25em}

    \begin{subfigure}[]{0.98\textwidth}
        \includegraphics[width=0.32\textwidth]{figures/10.png}
        \includegraphics[width=0.32\textwidth]{figures/10_traj_mono.pdf}
        \includegraphics[width=0.32\textwidth]{figures/10_traj_stereo.pdf}
        \vspace{-1\baselineskip}
        \caption{Seq. 10}
    \end{subfigure}

   \caption{Full results on the KITTI training set (cont.). The trajectories estimated by our VO method
   	are shown in the left column. The comparisons to the ground truth are shown in the right
   	column. The results of the two state-of-the-art monocular VO methods, namely ORB-SLAM (VO only) and DSO, are shown in the middle. The trajectories are aligned to the ground truth using similarity transformations (7DoF) and rigid-body
   	transformations (6DoF) for the monocular methods and our stereo method respectively.}
\end{figure*}

\begin{figure*}
    \centering
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_0.pdf}
        \caption{1-6000}\label{fig:11}
    \end{subfigure}
    ~
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_6000.pdf}
        \caption{6001-12000}\label{fig:12}
    \end{subfigure}
    ~
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_27000.pdf}
        \caption{27001-33000}\label{fig:13}
    \end{subfigure}
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_36000.pdf}
        \caption{36001-42000}\label{fig:21}
    \end{subfigure}
    ~
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_48000.pdf}
        \caption{48001-54000}\label{fig:22}
    \end{subfigure}
    ~
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_54000.pdf}
        \caption{54001-60000}\label{fig:23}
    \end{subfigure}
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_69000.pdf}
        \caption{69001-55000}\label{fig:31}
    \end{subfigure}
    ~
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_87000.pdf}
        \caption{87001-93000}\label{fig:32}
    \end{subfigure}
    ~
    \begin{subfigure}[t]{0.32\textwidth}
        \centering
        \includegraphics[width=\textwidth]{figures/selected_cs_90000.pdf}
        \caption{90001-96000}\label{fig:33}
    \end{subfigure}
   \caption{Estimated camera trajectories on the Cityscapes Frankfurt stereo sequence.
   The sequences are obtained by dividing the full sequence into several smaller sections
   with length of 5000 to 6000 frames and coverages comparable to the sequences of
   KITTI. The sub-captions name the corresponding frame indices in the full sequence. The ground truth poses are calculated from the provided GPS coordinates using the Mercator projection. In some figures, \eg Fig~\ref{fig:31}, the inaccuracies of the GPS are clearly visible.}\label{plot:cs_trajectories}
\end{figure*}

\section{Full Results on KITTI}
Fig~\ref{plot:kitti_trajectories} shows our trajectory estimates for all training sequences of KITTI (left)
and their comparisons to the ground truth (right). To show the improvements over monocular methods, the results of the monocular ORB-SLAM (VO only) and monocular DSO are shown in the middle.
The trajectory estimates of the monocular methods are aligned
to the ground truth using a similarity transformation (7DoF), while the results
of our method are aligned using a rigid-body transformation (6DoF). Obviously, scale
drift is the main problem of the monocular methods, which can be resolved by using stereo cameras.
In addition, monocular DSO seems to have larger scale drift than monocular ORB-SLAM.
We believe this results from the sensitivity of direct methods to the low frame rate, large optical flow, as well as other unmodeled effects in the image domain, such as non-lambertian reflectance and illumination changes that
have not been corrected sufficiently.

\begin{figure}[!t]
\begin{center}
\includegraphics[width=1.0\linewidth]{figures/frankfurt_large.jpeg}
\end{center}
   \caption{The full Frankfurt trajectory superimposed on the corresponding Google Map
   scene. The trajectory estimates of the subsections (blue) are aligned to the ground truth trajectory (orange) using a rigid-body transformation (6DoF). Best viewed printed.}\label{fig:frankfurt}
\end{figure}

\section{Effect of Stereo Coupling Factor}
The estimated trajectories on KITTI Seq. 06 using coupling factors ($\lambda$) 0-3
are shown in Fig~\ref{plot:coupling_traj}.

\begin{figure}
\begin{center}
\includegraphics[width=0.98\linewidth]{figures/06_coupling0.pdf}\vspace{-0.5em}
\includegraphics[width=0.98\linewidth]{figures/06_coupling1.pdf}\vspace{-0.5em}
\includegraphics[width=0.98\linewidth]{figures/06_coupling2.pdf}\vspace{-0.5em}
\includegraphics[width=0.98\linewidth]{figures/06_coupling3.pdf}
\end{center}
   \caption{Trajectories on KITTI Seq. 06 using coupling
   factors ($\lambda$) 0-3. Increasing the weighting of the static stereo constraints significantly reduces the translational drift.}\label{plot:coupling_traj}
\end{figure}

redpajama_set_name: RedPajamaArXiv


text:
"""
Created on Fri Oct 22 08:13:38 2010

Author: josef-pktd
License: BSD (3-clause)
"""

import numpy as np
from numpy import polynomial as npp

class LagPolynomial(npp.Polynomial):

    #def __init__(self, maxlag):

    def pad(self, maxlag):
        return LagPolynomial(np.r_[self.coef, np.zeros(maxlag-len(self.coef))])

    def padflip(self, maxlag):
        return LagPolynomial(np.r_[self.coef, np.zeros(maxlag-len(self.coef))][::-1])

    def flip(self):
        '''reverse polynomial coefficients
        '''
        return LagPolynomial(self.coef[::-1])

    def div(self, other, maxlag=None):
        '''padded division, pads numerator with zeros to maxlag
        '''
        if maxlag is None:
            maxlag = max(len(self.coef), len(other.coef)) + 1
        return (self.padflip(maxlag) / other.flip()).flip()

    def filter(self, arr):
        return (self * arr).coef[:-len(self.coef)]  #trim to end

ar = LagPolynomial([1, -0.8])
arpad = ar.pad(10)

ma = LagPolynomial([1, 0.1])
mapad = ma.pad(10)

unit = LagPolynomial([1])

redpajama_set_name: RedPajamaGithub


Your search to find apartments in Tucson, AZ has led you to the right place. You may review our floorplans below, and please call 520-299-1582 to ask about current availabilities. Be sure to view our photo gallery to catch a glimpse of Tucson living at its finest.


Figure 1: Brain MRI with and without contrast.
Given the patient's findings, the differential diagnosis at the time was metastatic masses secondary to malignancy, toxoplasmosis, fungal or bacterial abscess, CNS lymphoma, cryptococcus, or a demyelinating disease. Tests for JC virus, PML, and HIV were all found negative. The lack of extraparenchymal disease and the lack of central diffusion on MRI imaging made metastasis, lymphoma, and abscess less likely. A demyelinating disease was more likely given the incomplete rim of diffusion and enhancement of the lesions as well as the lack of peri-lesional edema and mass effect.
Cerebral spinal fluid from the lumbar puncture showed elevated protein (66 mg/dl) with normal WBC level, and oligoclonal bands with an elevated IGG index (7.91), which was suggestive of a demyelinating disease. A stereotactic brain biopsy showed diffuse foamy macrophages with only rare small CD20-positive B cells and some perivascular small T cells by immunohistochemistry for CD3 (Figure 2A and Figure 2D). Luxol fast blue-H&E showed abundant foamy macrophages and confirmed myelin loss (Figure 2B). Given these findings, the histopathologic differential diagnosis included ADEM, multiple sclerosis, and subacute infarct (destructive myelinolysis); however, relative axonal preservation shown on neurofilament staining favored an active demyelinative process (Figure 2C). The stain for spirochetes in brain biopsy was negative.
Figure 2: Brain biopsy with immunohistochemistry.
The pathology of perivascular infiltration of lymphocytes, abundant macrophages, and myelin loss is suggestive of a demyelinating disease. Malignancy, toxoplasmosis, fungal or bacterial abscess, CNS lymphoma, cryptococcus, subacute infarct were ruled out by CSF studies, MR image assessment, and stereotactic brain biopsy. The clinical diagnosis of acute disseminated encephomyelitis (ADEM) , a rare autoimmune demyelinating disorder usually triggered secondary to an infectious process, was made based on the patient's acute clinical presentation, a lack of history of previously unexplained neurologic symptoms, his neuroimaging, CSF and histopathological findings.
A CSF sample was found reactive for both venereal Disease Research Laboratory test (VDRL) and Fluorescent treponemal antibody absorption test (FTA-ABS), which is diagnostic for neurosyphilis. A family member provided collateral information that the patient was diagnosed with syphilis many years prior and did not seek treatment. The evidence is consistent with a neurosyphilis para-infectious process acting as a triggering factor for the encephalopathy.
The final diagnosis was acute disseminated encephomyelitis (ADEM) secondary to neurosyphilis.
The patient was started on a five-day regimen of high dose methylprednisolone and a 10-day regimen of Penicillin G. On hospital day 3, the patient began to show signs of neurocognitive improvement. The patient's cognitive status-as measured by the Montreal Cognitive Assessment (MOCA), Word-Reading Test (WRAT-4), and the Repeatable Battery for the Assessment of Neuropsychological status (RBANS)-showed objective improvement. His cognition, problem solving skills, and linguistic abilities have significantly improved over time but remained below baseline.
Acute Disseminated Encephalomyelitis (ADEM) is a rare disease with an estimated annual incidence rate of 8 per 1,000,000 . It presents as an autoimmune demyelinating disease of the central nervous system triggered by a recent infectious process in most but not all cases . ADEM typically presents with brain edema, perivenous infiltration of lymphocytes, macrophages, or neutrophils, and perivenous swelling with demyelination.
Patients typically present with a rapid deterioration of symptoms including altered mental status, motor deficits, ataxia, nystagmus, seizures, and headaches. It is proposed to occur due to myelin autoantigens (myelin basic protein, proteolipid protein, and myelin oligodendrocyte protein) sharing antigens with those of an inciting pathogen. These infectious antibodies cross react with myelin autoantigens and result in diffuse encephalomyelitis [4,5].
Metastatic disease, toxoplasmosis, fungal or bacterial abscess, CNS lymphoma, and cryptococcus were initially ruled out in this patient. It was then hypothesized that either multiple sclerosis or ADEM were the cause of the patient's clinical presentation. To distinguish patients with ADEM from those with multiple sclerosis, previous investigators have proposed that a patient must present with two of the following three findings: 1. Presence of symptoms (ex: confusion) that are atypical for multiple sclerosis, 2. Gray matter involvement on brain MRI and 3. Absence of oligoclonal bands in the CSF .
ADEM usually produces a widespread CNS disturbance, similar to our patient's presentation, while multiple sclerosis is typically monosymptomatic . Likewise, our patient presented with confusion, which is atypical in the presentation of MS. On neuroimaging, lesions secondary to ADEM typically present in greater number than multiple sclerosis, have poor definitions, and are more likely to involve gray matter such as the basal ganglia [3,6]. Such a pattern was evident in our patient's neuroimaging studies. CSF studies in our patient demonstrated the presence of oligoclonal bands and an elevated IgG index; however, these findings can be seen in multiple sclerosis as well as ADEM [3,6]. Likewise, his rapid improvement with steroid therapy is not typical of tumefactive MS, which would be the subtype of MS associated with these lesions. Given the clinical presentation, laboratory as well as pathological findings, and neuroimaging, the final diagnosis is most likely ADEM secondary to a neurosyphilis triggering event.
To our knowledge, this is the first reported case of ADEM occurring secondary to neurosyphilis as an inciting event. Therefore, neurosyphilis should be included in the differential diagnosis of this uncommon condition, as a timely high-dose corticosteroid regimen has been shown to improve clinical outcomes and reduce the recurrence risk . Additionally, initiating corticosteroids in later stages of the disease is believed to be significantly less effective .
The authors of this paper would like to thank the division of neuropathology at the Cleveland Clinic for providing the histopathological imaging seen in this case report.
Menge T, Hemmer B, Nessler S, Wiendl H, Neuhaus O, et al. (2005) Acute disseminated encephalomyelitis: an update. Arch Neurol 62: 1673-1680.
Leake JA, Albani S, Kao AS, Senac MO, Billman GF, et al. (2004) Acute disseminated encephalomyelitis in childhood: epidemiologic, clinical and laboratory features. Pediatr Infect Dis J 23: 756-764.
de Seze J, Debouverie M, Zephir H, Lebrun C, Blanc F, et al. (2007) Acute fulminant demyelinating disease: a descriptive study of 60 patients. Arch Neurol 64: 1426-1432.
Poser CM (1969) Disseminad vasculomyelinopathy. A review of the clinical and pathologic reactions of the nervous system in hyperergic diseases. Acta Neurol Scand 37: 3-44.
Reik L Jr (1980) Disseminated vasculomyelinopathy: an immune complex disease. Ann Neurol 7: 291-296.
Schwarz S, Mohr A, Knauth M, Wildemann B, Storch-Hagenlocher B (2007) Acute disseminated encephalomyelitis: a follow-up study of 40 adult patients. Neurology 56: 1313-1318.
Alexander M, Murthy JM (2011) Acute disseminated encephalomyelitis: treatment guidelines. Ann Indian Acad Neuro 14: S60-64.


The Columbian Literary Society was founded in 1846. The Hesperian Literary Society was founded in 1851. Records of both the Columbian Literary Society and Hesperian Literary Society documenting their activities. Included are numerous minute books, roll books, treasurer's books, book lists, constitutions and bylaws as well as some correspondence and programs for events co-hosted by the societies.
Contains correspondence, reports, financial information, roll books, record books, and minute books of the Columbian and Hesperian Literary Societies. The two societies conducted many joint debates so their papers are in one collection. Most of the collection is in oversize boxes. The collection ranges in date from 1848-1942.
[Identification of item], Columbian and Hesperian Literary Society Records, Duke University Archives, David M. Rubenstein Rare Book & Manuscript Library, Duke University.
The Columbia Literary Society was first organized in 1846 at Union Institute. The Society grew with the school, witnessing the founding of Trinity College and its development into Duke University. In 1881, the CLS started the College Herald, forerunner of the Chronicle.
The Hesperian Literary Society was founded in 1851 at the suggestion of President Craven, because in his opinion, all first class colleges had two societies. According to tradition, it was called "Hesperian" because it was originally intended to be joined by boys from Western North Carolina.
The two societies are the only student organizations known to have existed when Normal College became Trinity College in 1859. They each had libraries and competed in acquiring books. The joint efforts of both societies led to the creation of The Archive and The Chronicle publications. Additionally, they both accumulated larger number of books than the college library.
According to the Trinity College Catalogue, by 1860 each society held 2,200 volumes, while the school itself held only 650. In 1887, new president John Franklin Crowell persuaded the literary societies to merge their collections with that of the college, creating a combined library of 10,000 volumes. The new library was housed on the second floor of the old Trinity College chapel, and Crowell claimed to have catalogued each of the books himself.
After Trinity moved to Durham in 1892, the library occupied a large single room in the Washington Duke Building, the main building of the campus. One student from each of the two literary societies served as librarians.
Both societies continued to co-exist until the Hesperian Literary Society dissolved in 1931-1932, although a similar organization, the Hesperian Union, organized in 1937. The Columbian Literary Society ended in 1938.
The Columbian and Hesperian Literary Society Records were received by the University Archives as a transfer in 1971.
Accession A71-67 is described in this finding aid.


On Wednesday, Reuters reported that an Iraqi military delegation had traveled to Iran to discuss future strategic cooperation between the two countries. It was the latest in a long line of indicators of entrenched and deepening Iranian influence on the broader Middle East. The meetings between Iraqi and Iranian officials were apparently motivated by Monday's independence referendum in the northern, Kurdish region of Iraq. That vote appears to be helping to tighten the connections not only between Iraq and Iran but also between those two countries and Turkey, which has traditionally had strained relations with the Islamic Republic.
On Monday, the Huffington Post reported upon the latest efforts by European nations to deter the Trump administration from decertifying Iranian compliance with the 2015 nuclear agreement – an action that could lead to the dissolution of the Joint Comprehensive Plan of Action.
On Monday, just days after it was reported that the Iranian Revolutionary Guard Corps had premiered the domestically-produced Khorramshahr ballistic missile in a military parade, the Associated Press reported that the IRGC also put the Russian-made S-300 missile defense system on public display in central Tehran. Both ceremonies were presented as part of Defense Week, the annual commemoration of the 1980-88 Iran-Iraq War, which doubles as an annual outlet for anti-Western propaganda.
At the United Nations General Assembly yesterday in New York, thousands of people gathered outside the building to protest the presence of Iranian President Hassan Rouhani and to call for an end to the Iranian regime's brutal rule.
They gathered to make it clear to the people of the United States that the people of Iran are not happy with the clerical rule of their country.
On Monday, Newsweek reported that the head of the Iranian army, Major General Abdolrahim Mousavi had issued both general and specific threats against the Israel, via the Iranian Students News Agency. Mousavi reportedly declared that the Jewish state would likely not exist 25 years from now if its government continued along the current geopolitical path. This is reminiscent of a number of similar claims made by various Iranian officials over the years, including Supreme Leader Ali Khamenei.
On Friday, it was reported that Iran, Russia, and Turkey had finalized the framework of an agreement by which observers from each of the three nations will be positioned around Idlib Province in Syria, ostensibly to enforce de-escalation in the area that is still largely controlled by militant rebel groups. The details of this agreement have yet to be finalized, both with regard to Idlib itself and with regard to the three other deconfliction zones that will supposedly be set up by the three parties.


We are focused on achieving exceptional long-term investment returns. To achieve this goal, we must invest in proven, growing companies and partner with talented management teams who have shown their ability to direct and grow successful companies.
Our focus will be on providing these individuals with the resources they need to reach our mutual goals. These resources will include financial support, operational consulting, and assistance in long-term planning. The level of our involvement will be determined by the needs of the business and through regular interaction with management. Our goal is to assist management in achieving their long-term growth plans while allowing them to operate their companies on a day-to-day basis without intervention or interference.
The Fund is looking to hold its investments in portfolio companies for 6 to 8 years. This investment horizon is longer than that targeted by most private equity funds. This longer investment horizon demonstrates the Fund's willingness and ability to support the portfolio company's management in their long-term organic growth. It also highlights the Fund's ability and willingness to supporting multiple acquisitions which can be completed over a period of years and sufficiently integrated into the business to fully realize the growth and operational leverage or synergies generated by these add-on acquisitions.


text:
<?php

namespace lajax\translatemanager\bundles;

use yii\web\AssetBundle;

/**
 * Scan Plugin asset bundle
 *
 * @author Lajos Molnár <lajax.m@gmail.com>
 * @since 1.4
 */
class ScanPluginAsset extends AssetBundle {

    /**
     * @inheritdoc
     */
    public $sourcePath = '@lajax/translatemanager/assets';

    /**
     * @inheritdoc
     */
    public $js = [
        'javascripts/scan.js',
    ];

    /**
     * @inheritdoc
     */
    public $depends = [
        'yii\web\JqueryAsset',
        'lajax\translatemanager\bundles\TranslationPluginAsset',
    ];

}


Thomas Bolden grew up at the streets, his adolescence a blur of fragmented thoughts. yet now he's controlled to place his previous in the back of him, locate the lady he desires to proportion his existence with, and carve out a winning profession on Wall highway. until eventually, within the blink of an eye fixed, his global is became the other way up. A strange kidnapping sends him fleeing for his lifestyles, his face in every single place at the television information, and a violent, shadowy association is framing him for crimes he didn't dedicate.
battle-hardened police officers, The Patriots Club is classic Reich: exceptional, breathtaking, and most unlikely to place down until eventually the ultimate unforgettable web page is turned.
A lady can by no means make herself too tricky, too powerful, or too highway smart.
Miranda Steele. Smart-talking, sizzling pepper-eating loner whose abusive ex-husband stole her child and gave it up for adoption. She involves Atlanta to seek for her daughter.
Wade Parker. filthy rich proprietor of the Parker Investigative organisation and such a lot eligible forty-four-year-old bachelor in Atlanta. He nonetheless mourns the dying of his socialite spouse yet needs to now remedy a hectic homicide case.
A serial killer strangling younger women in a extraordinary ritual. Why?
She doesn't desire a man.
He must discover a killer.
Together, can they retailer a 13 12 months previous lady?
Months after foiling a world terrorist assault, medical professionals borderless healthcare professional Jonathan Ransom is operating below an assumed identify in a distant nook of Africa. His spouse, Emma, eager to break out the wrath of department, the key American intelligence supplier she betrayed, has been in hiding. either look ahead to sharing a stolen weekend in London--until a terrorist assault ruins their romantic rendezvous. within the aftermath, Emma disappears and Jonathan is apprehended via the police and threatened, except he is helping safe his wife's catch. He embarks on a breathless chase throughout Europe, looking for Emma, and preserving department at bay . . . till he realizes that each one alongside he's been a pawn in a high-stakes online game of overseas intrigue some distance past his imagining.
Don't leave out Christopher Reich's new mystery, Rules of Betrayal, coming in hardcover in July. the 1st novel within the sequence, Rules of Deception, is on the market now in paperback.
Whilst sincere younger Caleb Williams involves paintings as a secretary for Squire Falkland, he quickly starts off to suspect that his new grasp is hiding a mystery. As he digs deeper into Falkland's previous and eventually finds the terrible fact, the result of his interest turn out calamitous when—even even though Caleb has loyally sworn by no means to reveal what he has discovered—the Squire enacts a merciless revenge. A story of gripping suspense and mental energy, William Godwin's novel creates a searing depiction of the insupportable persecution meted out to an outstanding guy in pursuit of justice and equality. Written to reveal the political oppression and corrupt hierarchies its writer observed on this planet round him, Caleb Williams makes a thorough name to finish the tyrannical misuses of power.
• Revised creation examines Godwin's historical past of spiritual dissent, the literary and political weather of his instances, and his trust in "philosophical anarchism"
Investigating legal professional Dan Gordon is operating for a unit of the U.S. division of Justice that combats cash launderers open air the USA. A regimen venture develops right into a advanced foreign plot concerning homicide, espionage, kidnapping, conspiracy, and romance. Gordon, an indefatigable bloodhound, calls on his innate shrewdness, in addition to his mystery Mossad previous and coaching, to ferret out the reality. during this intelligence mystery, lawyer Haggai Carmon, a U.S division of Justice open air advisor, weaves an creative plot. The Byzantine, subterranean tools in which rogue states - as a result the theocracy of Iran - search to obtain nuclear fabrics are illuminated. as a way to know how the CIA and the Mossad paintings, by myself and jointly, you'll get no larger photo than the single instructed during this compulsively readable intelligence thriller.From the alternate Paperback edition.
The First Hands-On, useful, All-Ruby Refactoring Workbook!
Refactoring–the artwork of bettering the layout of current code–has taken the realm via hurricane. So has Ruby. Now, for the 1st time, there's a refactoring workbook designed from the floor up for the dynamic Ruby language.
Refactoring in Ruby gives you the entire lifelike, hands-on perform you must refactor Ruby code fast and successfully. You'll observe how one can realize "code smells," which sign possibilities for development, after which ideal your program's layout one small, secure step at a time.
The publication indicates you while and the way to refactor with either legacy code and through new test-driven improvement, and walks you thru real-world refactoring intimately. The workbook concludes with numerous purposes designed to assist perform refactoring in lifelike domain names, plus a convenient code assessment record you'll discuss with time and again. alongside the best way, you'll study robust classes approximately designing better caliber Ruby software–lessons that might assist you adventure the enjoyment of writing regularly nice code.
…or a minimum of candy suggestions of homicide. Maggie Longstreet has lots of them after slimy, formidable Richard trades her in for a newer version. She's so depressed she will be able to slightly get off the bed whilst Larry Hawkins, a doubtless not-at-all depressed acquaintance, commits suicide immediately. by surprise Maggie is going on excessive alert, remembering anything her evil ex acknowledged approximately Larry—something hugely suspicious.
Fortunately, Maggie isn't on my own in her adventure—a very appealing, a lot more youthful guy proves much more enjoyable than Richard ever used to be. in reality, the genuine pride of this witty, sly secret is seeing Maggie come alive back after a suffocating marriage. Set in the'70s, it has a little that Mad males believe of girls close to whatever giant. and fully unexpected.
There are not any witnesses, no suspects, and no clues. The spouse and son? They're either a bit off-kilter, yet they've got alibis. simply whilst Carella and Hawes are approximately to place the case at the shelf, the killer moves back. Now the detectives are scorching at the path of a guy loopy sufficient to homicide with an ax.
All people is familiar with all people within the Hollows, a old fashioned, captivating city outdoor of recent York urban. It's a spot the place neighbours regulate one another's childrens, the place humans say hi within the supermarket, and the place highschool cliques and antics are by no means rather forgotten. As a toddler, Maggie came across dwelling less than the microscope of small-town lifestyles stifling. yet as a spouse and mom, she has fortunately back to The Hollows's insular embody. As a psychologist, her wisdom of kin histories offers strong insights into her patients' lives. So whilst the female friend of her teenage son, Rick, disappears, Maggie's intuitive present proves beneficial to the case--and additionally dangerous.
Eerie parallels quickly emerge among Charlene's disappearance and the kidnapping of one other neighborhood lady that shook the neighborhood years in the past whilst Maggie used to be undefined. The research has her husband, Jones, the lead detective at the case, appearing unusually. Rick, already a brooding youngster, turns into much more withdrawn. In a city the place the previous is usually current, not anyone is above suspicion, no longer even a son within the eyes of his father.
"I understand how a second can spiral out of control," Jones says to a surprised Maggie as he searches Rick's room for incriminating facts. "How the results of 1 careless motion can expense you everything."
As she attempts to reassure him that Rick embodies his father in the entire vital methods, Maggie realizes this may be precisely what Jones fears so much. made up our minds to discover the reality, Maggie pursues her personal leads into Charlene's disappearance and exposes a long-buried city secret--one that can wreck every little thing she holds pricey. This exciting novel approximately one community's difficult but fragile bonds will depart readers asking, How good do i do know the folks i admire? and the way a long way may i am going to guard them?


text:
Liberty & Family Ltd
Lyme Regis Events Diary
Fashion Consultation
Clare Collins
10A Broad Street
DT7 3QD
E-mail: collins.reader@btinternet.com
Contact us directly:
No., street:
Your e-mail address:*
and phone number:*
Mon 10.00 a.m. to 5.00 p.m
Tue 10.00 a.m. to 5.00 p.m
Wed 10.00 a.m. to 5.00 p.m
Thur 10.00 a.m. to 5.00 p.m
Fri 10.00 a.m. to 5.00 p.m
Sat 10.00 a.m. to 5.00 p.m
Sun 12.00 p.m. to 5.00 p.m
We can post items out to you.
Please contact us on 07771 874511 for further information.
© Clare Collins

redpajama_set_name: RedPajamaCommonCrawl


Every ham or shortwave listener struggles with local RFI. This article kicks off a new series on how to use noise cancelers and get your spectrum back.
You turn on your radio and tune the bands. Usually, you hear some signals. But often, those signals are drowned out or hurt by local radio frequency interference. Especially, if you live in an urban neighborhood. Even with a really good antenna on a tower, local RFI is troublesome. I hear about lots of folks being tempted to just give up. My message is "not yet". Every ham or shortwave listener should at least try using a noise canceler before packing it in. They can work surprisingly well.
More than a century ago, radio operators adopted a series of Brevity or Q Codes, shorthand ways of saying complicated things quickly in Morse Code. They are still in use. Two of the original Q Codes still in use are QRN and QRM. QRN means I am experiencing atmospheric or static interference. QRM means I am experiencing signal interference. Perhaps today we need a new code, QRFI, which means I can't hear you through all of the local RFI.
If you want to see and hear the most frequent sources of local RFI, take a look at Sounds of RFI at the ARRL web site. For advice on how to identify and locate sources of radio frequency interference, check my video Adventures with RFI.
There is a lot you can do to clean up sources of local RFI in your own home. Most of your problems will come from switching power supplies, either AC/DC or the so called "electronic transformers" which provide AC/AC for low power lighting. Any switching power supply is essentially a free running oscillator. Often you can kill or reduce the RFI by winding ferrite chokes on the power cables. Same with birdies or radio tones coming out of your computer or network gear. But my most complex in-house RFI comes from my front-loading washer and treadmill and defies easy filtering. Fortunately, these appliances are used only occasionally.
But even if you clean up your own nest, you still get local RFI from your neighbors, often hundreds of meters away. Having a good outdoor antenna does not help, in fact it can just pick up more noise. This is where setting up a noise canceler can really help. The trick is setting up noise probes around your perimeter. More on that shortly.


As a company with an interest in web marketing darlington, you may realise the importance of an SEO package that meets all of the most basic requirements, at a good price. However, you may also have some extra money to spend and may therefore wonder which team of professionals in web marketing could bring you the best return on your investment (ROI).
It is to serve website owners in such a position that Web Ahead Internet has assembled the most effective Intermediate web marketing package. This package shares with the Basic package its commitment to achieving the finest possible organic search engine results, but targets a greater number of keywords while also incorporating an optimised Google local listing.
All in all, the Intermediate web marketing package is highly suitable for any company that would like to give its site a strong search engine presence, without spending a fortune doing so. It is also a good choice for any site that presently has relatively low search engine results of less than one million.
Our Intermediate web marketing package targets twice as many keywords as our Basic package, meaning twice the impact. You can depend on our experts in web marketing Darlington to choose the most realistic, but relevant and fruitful keyword phrases so that you get the best value from your online campaign.
A well-optimised site map can make a big difference to your organic search results, as it will help search engine spiders to do their work and discover more of your site's most relevant pages and content.
With more people than ever before using the search engines to search for businesses close to them, including from smartphones and other mobile devices, you are missing out on potential customers if you do not have an optimised Google Places listing that is informative and makes the best possible impression. Our experts in web marketing Darlington ensure that your own local listing stands out from the competition.


text:
Q: $10$ numbers from $1,2,\dots,37$
$10$ numbers are chosen from $\{1,2, \ldots, 37 \}$. Show that we can
  choose $4$ of them such that the sum of two of these four is equal to the
  sum of the other two.

My attempt : Almost nothing I think. Firstly, it suffices to find $4$ numbers such that the difference two of them is equal to the difference of the other two so one can compare differences assuming no two are equal resulting to some bounds e.g. the least of the ten numbers is less than $12$ and the bigger of these is $\geq 26$. Any help?

A: Edit: The original answer contains an unacceptable mistake, so I post a new answer.
Continue the method mentioned in Christoph's comment. If we get two disjoint pair we have done. Otherwise, the only case is $(x_1-d_1,x_1)$ and $(x_1,x_1+d_1)$, then do the following loop(start from  $i=2$):
Loop $i$: Exclude the pairs we got, so there are $45-2(i-1)$ pair of numbers, and $36-(i-1)$ possible differences. Again, by pigeon hole principle(if $i<10$), if we get two disjoint pairs we have done. Otherwise, the only case is $(x_i-d_i,x_i)$ and $(x_i,x_i+d_i)$. If $x_i=x_j$ for some $i\neq j $ , then the pairs $(x_i-d_i,x_j-d_j)$ and $(x_i+d_i,x_j+d_j)$ are what we need, done. Otherwise continue the loop.
Now I show that we will be done on or before $i=9$. Suppose $i$ attend $9$ and cannot get two disjoint pairs by pigeon hole principle, then by definition of $x_i$'s, all of them are different. So the set {$\min(x_i-d_i|i\leq8),x_1,x_2,...,x_8,\max(x_i-d_i|i\leq8)$}=original set. So $x_9$ must equal to  one of $x_1,x_2,...,x_8$, otherwise the set {$\min(x_i-d_i|i\leq9),x_1,x_2,...,x_8,x_9,\max(x_i-d_i|i\leq9)$} is subset of original set but number of elements is larger than the original set, contradiction arises.

A: Let $A = \{ a_1, \ldots, a_{10} \}$ be a subset with ten elements, where $i < j \rightarrow a_i < a_j$, of $B = \{1, \ldots, 37\}$.
Obviously $a_{10} - a_1 \leq 36$. Define $d_i := a_{i + 1} - a_{i}$. We have $1 \leq d_i \leq 27$, and $\sum_{i = 1}^9 d_i = a_{10} - a_{1} \leq 36$. If $d_i = d_j$, then $a_i + a_{j + 1} = a_j + a_{i + 1}$. So in order for a four-subset satisfying the desired property not to exist, all $d_i$ must take different values. There is no set of nine distinct positive integers whose sum is smaller than 36.
As far as I can tell, the property would still hold for numbers much larger than 37, too - this proof doesn't consider differences between numbers which aren't adjacent.

redpajama_set_name: RedPajamaStackExchange


Shop for Antivirus email activation , Security Software by electronic download, by purchasing CD- ROM DVD at. The key benefits of using a MoTeC system and what you should know before you buy.
Although the wheel is capable of running truly wirelessly from a standard Xbox 360 battery pack ( rechargeable or two AA. ) to steer towards a certain position, to maintain a certain angle to the wind ( so that sailing boats need not change their sail trim), electronic self- steering gear can be programmed to hold a certain compass course any other function which can reasonably be defined. Created and Developed by © Borgeson Universal Company.
Select the software update below depending on which Multifunction Display ( MFD) you will be using to perform the Remote Update. Adaptation Channel 001: Characteristic Curve. SimpleLink MCU LaunchPad kits System- on.
Power steering software download. Scalable software tools provide multiple points of entry for programming your LaunchPad kit. Get started with microcontroller ( MCU) LaunchPad™ Development Kits from Texas Instruments. It is the ideal go- to solution to film stunning high- quality videos take outstanding photos capturing the best moments of your everyday life. Unfortunately, this is not the first time a steering committee has been selected to distribute funds in the wake of a horrific tragedy. We consulted with the National Center for Victims of Crime Las Vegas, which has assisted victims of many recent tragedies, Orlando , Charlottesville, including Aurora for guidance on who in the community should be on the the steering committee. Product Comparison charts:. The Xbox 360 Wireless Racing Wheel was developed by Microsoft for the Xbox 360 and was introduced at E3. The flying 4K HDR camera that you can take with you everywhere on the go ANAFI is the new generation of drone. Holley carburetors powered every Monster Energy NASCAR® Cup team and. Power steering software download. Power Steering Conversions and Dodge Steering.
Started in NevonProjects an initiative by NevonSolutions Pvt. Learn more NIST websites for programs using non- appropriated funds ( NVLAP those that are excepted from the shutdown ( such as NVD) will continue to be available , PSCR) updated.
Choose from a variety of low- cost kits and BoosterPack plug- in modules. Electric power- assisted steering ( EPAS) automatically adjusts to deliver the precise feel control you need at higher speeds as well as the assistance slower speeds require. AgFiniti Prescriptions Expands to include Prescriptions for all Operations!
Select a server " Engine. Select " obd2" or " manuf". 0- Light Off Displays total number of Current OBD- 2 trouble codes from all emission servers.
May 17 general boating questions , · Discussion of boats anything else directly related to an engine. Ag Leader - 01/ 18/ 19. Due to a lapse in government funding, the majority of this website is not being updated until further notice. It currently supports only the vehicles with 11- bit CAN systems ( like Punto Mk2 Delta, Stilo, Bravo' 07, Croma, 159, 147 Thema) by using a regular ELM327 LATEST VERSION NOW.
Ltd grows exponentially through its research in technology. Select to Request.
Depending on the Steering Aid Generation/ Software Version this Channel may or may not be active. NevonProjects works towards development of research based software embedded/ electronics mechanical systems for research & development purposes.
Buy Oreck Magnesium RS Swivel- Steering Bagged Upright Vacuum LW1500RS - Corded: Patio Lawn & Garden - FREE DELIVERY possible on eligible purchases. 5 Product for After Market Driver Recorder/ Dashboard Camera 89 Wireless Power Charger 90 Cup Holder 91 360˚ Around Viewing System 92 PCB Build- up PCB.
Discover all the amazing exterior specs options on the Toyota Avalon, from headlights to taillights everything in between. Generation 1 while later/ updated Generation 2 , early Generation 2 still allowed switching between up to 16 different predefined Characteristic Curves, the Adaptation Channel is being inactive/ ont rear suspension analysis simulation software program. Tiller pilot steering wheel attached Chartplotter . To keep up to date with the latest software you can subscribe to our mailing list and we will send you a message when new software is released.
Holley® has been the undisputed leader in fuel systems for over 100 years. Power steering software download. Now you can generate prescriptions for all operations!
Name Booth # Categories State Country; SHOXS: 3071 : Seating Safety / Survival, Boat Building Supplies, Interior Hardware, Safety & Survival, Equipment Testing pending on the sophistication of the control unit ( e. Released in November the force feedback steering wheel controller includes the standard gamepad buttons along with floor- mounted accelerator brake pedals. The latest versions of MoTeC software, including software for archived products.
The software reads data from vehicle' s CAN network and displays it on screen. Why choose MoTeC?
Software controls everything from safety critical systems like brakes and power steering, to basic vehicle controls like doors and windows. Yet the average car today may have up to 150, 000 bugs, many of which could damage the brand, hurt customer satisfaction and, in the most extreme case, lead to.
Whether you' d like to monitor a single UPS, integrate with leading virtualization platforms or monitor an entire data center Eaton has a power management software solution for you. Electric Power Steering Systems 05 06 JTEKT responds to market demand as a steering system supplier supporting a safe and exciting vehicle society Merits of Steer- by- Wire Freedom in communication between the driver and system during ADAS operation.
This innovative software solution ensures system uptime and data integrity by allowing you to remotely monitor, manage and control UPSs and other devices on your network. IPM provides a solution that is easy to use and maintains business.
The Raymarine ACU- 150 is a component of the Evolution™ Autopilot system and is designed to provide power and control to a Raymarine Type- 1 Hydraulic Drive Unit ( M81120. FES Dashboard This is a digital dashboard/ trip computer.


text:
Q: Kotlin Multiplatform app crashes on start When I run my app, it is supposed to show a screen for a user to create an account or sign in. I had the code working as a regular kotlin app and decided to make a multiplatform app instead so I remade the project as multiplatform. KMM does not support this code:
import kotlinx.android.synthetic.main.activity_sign_in.*
so I had to change to ViewBinding. Here is the code I used previously and what I changed it to:
Before:
import android.content.Intent
import android.os.Bundle
import android.widget.EditText
import com.cj.globekotlin.Extensions.toast
import com.cj.globekotlin.FirebaseUtils.firebaseAuth
import kotlinx.android.synthetic.main.activity_sign_in.*

class SignInActivity : AppCompatActivity() {
    lateinit var signInEmail: String
    lateinit var signInPassword: String
    lateinit var signInInputsArray: Array<EditText>

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_sign_in)

        signInInputsArray = arrayOf(etSignInEmail, etSignInPassword)
        btnCreateAccount2.setOnClickListener {
            startActivity(Intent(this, CreateAccountActivity::class.java))
            finish()
        }

        btnSignIn.setOnClickListener {
            signInUser()
        }
    }

    private fun notEmpty(): Boolean = signInEmail.isNotEmpty() && signInPassword.isNotEmpty()

    private fun signInUser() {
        signInEmail = etSignInEmail.text.toString().trim()
        signInPassword = etSignInPassword.text.toString().trim()

        if (notEmpty()) {
            firebaseAuth.signInWithEmailAndPassword(signInEmail, signInPassword)
                .addOnCompleteListener { signIn ->
                    if (signIn.isSuccessful) {
                        startActivity(Intent(this, HomeActivity::class.java))
                        toast("signed in successfully")
                        finish()
                    } else {
                        toast("sign in failed")
                    }
                }
        } else {
            signInInputsArray.forEach { input ->
                if (input.text.toString().trim().isEmpty()) {
                    input.error = "${input.hint} is required"
                }
            }
        }
    }
}

Current:
import android.content.Intent
import android.os.Bundle
import android.widget.EditText
import com.cj.globemultiplatform.android.Extensions.toast
import com.cj.globemultiplatform.android.FirebaseUtils.firebaseAuth
import com.cj.globemultiplatform.android.databinding.ActivitySignInBinding

class SignInActivity : AppCompatActivity() {
    lateinit var signInEmail: String
    lateinit var signInPassword: String
    lateinit var signInInputsArray: Array<EditText>

    private lateinit var binding: ActivitySignInBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        binding = ActivitySignInBinding.inflate(layoutInflater)
        setContentView(R.layout.activity_sign_in)

        signInInputsArray = arrayOf(binding.etSignInEmail, binding.etSignInPassword)
        binding.btnCreateAccount2.setOnClickListener {
            startActivity(Intent(this, CreateAccountActivity::class.java))
            finish()
        }

        binding.btnSignIn.setOnClickListener {
            signInUser()
        }
    }

    private fun notEmpty(): Boolean = signInEmail.isNotEmpty() && signInPassword.isNotEmpty()

    private fun signInUser() {
        signInEmail = binding.etSignInEmail.text.toString().trim()
        signInPassword = binding.etSignInPassword.text.toString().trim()

        if (notEmpty()) {
            firebaseAuth.signInWithEmailAndPassword(signInEmail, signInPassword)
                .addOnCompleteListener { signIn ->
                    if (signIn.isSuccessful) {
                        startActivity(Intent(this, HomeActivity::class.java))
                        toast("signed in successfully")
                        finish()
                    } else {
                        toast("sign in failed")
                    }
                }
        } else {
            signInInputsArray.forEach { input ->
                if (input.text.toString().trim().isEmpty()) {
                    input.error = "${input.hint} is required"
                }
            }
        }
    }
}

Initially, I thought that this would work but now whenever I open the app, it crashes. I think this change is what's causing the crashes. Is that possible? If so, how can I fix this?

A: There are a couple of problems with your android code:

*

*There is no connection between your inflated binding and the content you are setting, you should use

binding = ActivitySignInBinding.inflate(layoutInflater)
setContentView(binding.root)

*Your lateinit variables for the inputs are used in the signInUser() method, but it's not initialised. I'd suggest removing that and using binding.signInEmail and the other views.

Also, if you're trying to share code between Android & iOS, you should be aware that you'll need to abstract away any platform specific implementation. For ex: all packages that are android specific will not work on iOS at this moment. This specific code is pretty Android platform heavy, thus I wouldn't even try to share this in a KMM app, only business logic, perhaps up to a ViewModel layer.


text:
Canada and Sri Lanka
Services for Canadians if you're visiting, studying, working or doing business in Sri Lanka. Includes information about coming to Canada.
Travel advice and advisories - Sri Lanka
Exercise a high degree of caution
Canada-Sri Lanka relations
Canada's diplomatic, economic or cultural relationship with Sri Lanka.
Doing business in Sri Lanka
The Canada Fund for Local Initiatives
High Commission of Canada in Sri Lanka, in Colombo
Address: 33-A 5th Lane, Colpetty, Colombo 03, Sri Lanka
Trade Commissioner Service office in Colombo, Sri Lanka
Address: 33A, 5th Lane, Colpetty, Colombo, 3, Sri Lanka
Sri Lanka, Maldives
Canada and Sri Lanka news (Canada news)
Canada and Sri Lanka news (Local statements)
Canada's Indo-Pacific Strategy
Advancing and defending Canada's interests by supporting a more secure, prosperous, inclusive, and sustainable region, while protecting Canada's national and economic security.
High Commission of Canada to Sri Lanka and Maldives
Canada in Sri Lanka and Maldives