分析完成了,其实就可以解题了,但是我想读一些文献再开始写作。
一个相当简单的运动学模型。
原文瞎jb起名,啥啥啥的
横向的停车
纯跟踪算法,用Mathematica设计了一个小程序,可以用鼠标拖动目标点(绿色点),并观察前轮的转角,如下图。目标点是纯跟踪算法中的核心概念,这个目标点是人为设计或者选择的。跟踪性能的好坏不仅取决于控制参数的选择,目标点的选择也起到重要的作用。当目标点选取的不好时,例如距离无人车当前位置过近,则会出现控制量剧烈变化。
也可以用鼠标拖动无人车的参考点,观察前轮的转角,如下图。从图中可以发现,在距离目标比较近时,纯跟踪算法的表现很糟糕,参考点位置有一点点改变都会导致前轮转角剧烈变化。但是无人车的定位本身是必然存在偏差的,所以纯跟踪算法在前视距离短时稳定性并不好。
cuboid[center_: {0, 0}, dim_, radius_: 0] := Rectangle[center - dim/2, center + dim/2, RoundingRadius -> 0.01];
move2D[shape_, pose_] := Translate[Rotate[shape, pose[[3]], {0, 0}], pose[[1 ;; 2]]];
L = 1.64;
\[Delta]max = 25 Degree ;
bicycle[pose_, \[Delta]_] := {
rearWheel = cuboid[{0, 0}, {0.4, 0.1}, 0.1];
frontWheel = move2D[rearWheel, {L, 0, \[Delta]}];
trunk = cuboid[{L/2, 0}, {L, 0.02}, 0.1];
move2D[{Blue, frontWheel, rearWheel, Black, trunk, Red, Circle[{L, 0}, 0.22, {0, \[Delta]}]}, pose]
};
Manipulate[
pose = Flatten@{p, \[Theta]};
dirvec = AngleVector[\[Theta]];
vertvec = {-dirvec[[2]], dirvec[[1]]};
p1 = p + L*dirvec;
dl = Norm[goal - p];
\[Alpha] = VectorAngle[goal - p, {1, 0}] - \[Theta];
\[Delta] = ArcTan[2*L*Sin[\[Alpha]]/dl];
R = Abs[dl/2/Sin[\[Alpha]]];
c = p + Sign[\[Alpha]]*R*vertvec;
a1 = -VectorAngle[p - c, {1, 0}];
a2 = -VectorAngle[goal - c, {1, 0}];
Graphics[{bicycle[pose, \[Delta]], Point[c], AbsoluteThickness[1],
Line[{p1, p1 + AngleVector[\[Theta] + \[Delta]]*0.3}], AbsoluteDashing[{6, 3}], Black, Line[{p, p1 + dirvec*0.3}], Gray, Line[{p, c}], Line[{c, goal}], Line[{goal, p}], Line[{c, p1}], Orange, Circle[c, R(*,{a1,a2}*)], AbsolutePointSize[8], White, Point[p], Red, Point[c], Darker@Green, Point[goal], Red, Text[Style[ "\[Delta]=" <> ToString@Round[\[Delta]*180/Pi, 0.01] <> "\[Degree]", FontSize -> 16], p1 + dirvec*0.5], Text["\!\(\*SubscriptBox[\(d\), \(l\)]\)=" <> ToString@Round[dl, 0.01], (p + goal)/2 + {0, 0.1}]},
ImageSize -> 600, PlotRange -> 1.5 {{-1.5, 1.5}, {-0.5, 1.5}},
Axes -> False], {{p, {0, 0}}, Locator, Appearance -> Graphics@Point[{0, 0}]}, {{goal, {0.16, 0.12}}, Locator, Appearance -> Graphics[{Green, Point[{0, 0}]}]}, {{\[Theta], Pi/6}, 0, 2 Pi, 0.01}, TrackedSymbols :> True, Initialization :> {goal = {0.16, 0.12}}]
2 跟踪:控制机器人跟随某个运动着的状态(即轨迹),实际生活中的例子就是让汽车沿着车道中心线行驶。
一个对模型的优缺点的分析文章,也写到这里
这个模型的特点
PID不适合自动驾驶
整理一下,计算一下
控制论好爽啊,这个东西好有趣。
https://zhuanlan.zhihu.com/p/74380868
关于曲率
https://blog.csdn.net/robinvista/article/details/104582045
遇到一个很不错的文章,写上来
https://blog.csdn.net/robinvista/article/details/106279968
混合A*算法,这个里面有demo
https://ww2.mathworks.cn/help/nav/ref/plannerhybridastar.html
Matlab的A*算法
2019b就可以使用了
https://github.com/karlkurzer/path_planner
狗日的,我好想我的ROS
https://github.com/ApolloAuto/apollo/tree/master/modules/planning/open_space
Appoll
https://blog.csdn.net/robinvista/article/details/118538616
https://github.com/hbanzhaf/steering_functions
ROS,还得搭建环境
https://blog.csdn.net/muyilove/article/details/82346050
奶奶的,这么贵的电脑,屎一样的键盘,我真的醉了,我这个键盘10块钱用了五年了。