When we assume g,l and m are known fit is not good.
g = 9.81; l = 0.2 ; m = 0.09;
model[k_?NumberQ] := (model[k] =
Module[{y, x},
NDSolveValue[{y''[x] == -g*Sin[y[x]]/l - k y'[x]/m,
y[0] == data[[1, 2]], y'[0] == 0}, y, {x, 0, 3*Pi}]])
nlm = NonlinearModelFit[data, model[k][x], k, x,
Method -> {NMinimize, Method -> "DifferentialEvolution"}];
Plot[nlm[x], {x, 0, data[[-1, 1]]},
Epilog -> {Red, PointSize[Medium], Point[data]}, PlotRange -> All,
Frame -> True]
nlm["BestFitParameters"]
{k -> 0.405883}

We can do better than this when we assume we only know g.
g = 9.81;
model[k_?NumberQ, l_?NumberQ,
m_?NumberQ] := (model[k, l, m] =
Module[{y, x},
NDSolveValue[{y''[x] == -g*Sin[y[x]]/l - k y'[x]/m,
y[0] == data[[1, 2]], y'[0] == 0}, y, {x, 0, 3*Pi}]])
nlm = NonlinearModelFit[data, model[k, l, m][x], {k, l, m}, x,
Method -> {NMinimize, Method -> "DifferentialEvolution"}];
Plot[nlm[x], {x, 0, data[[-1, 1]]},
Epilog -> {Red, PointSize[Medium], Point[data]}, PlotRange -> All,
Frame -> True]
nlm["BestFitParameters"]
{k -> 1.25031, l -> 0.298879, m -> 10.5371}

g = 9.81;
model[k_?NumberQ,
l_?NumberQ] := (model[k, l] =
Module[{y, x},
NDSolveValue[{y''[x] + k y'[x] == -g*Sin[y[x]]/l,
y[0] == data[[1, 2]], y'[0] == 0}, y, {x, 0, 3*Pi}]])
nlm = NonlinearModelFit[data, model[k, l][x], {k, l}, x,
Method -> {NMinimize, Method -> "DifferentialEvolution"}];
Plot[nlm[x], {x, 0, data[[-1, 1]]},
Epilog -> {Red, PointSize[Medium], Point[data]}, PlotRange -> All,
Frame -> True]
nlm["BestFitParameters"]
{k -> 0.119336, l -> 0.29895}

lis missing now. You should add them in the equation. – anderstood Feb 18 '18 at 14:13Most@ToExpression[ "{" <> Import["http://m.uploadedit.com/bbtc/1518933165520.txt"] <> "}"]-- there are minor syntax errors that are fixed with the braces andMost, at least currently. – Michael E2 Feb 18 '18 at 14:48kfor damping is a terrible notation... ($k$ usually denotes stiffness). – anderstood Feb 18 '18 at 15:28