Skip to main content

ROS Integration

Published: 2020-01-15 | Lastmod: 2020-03-16

自动驾驶系统结构 #

在繁忙的工作之余,学习完这门课 Udacity - Self-Driving Car Engineer, 虽然辛苦,但是收货很多。 对无人车上配置的传感器、涉及到的功能模块、各模块之间的交互都有了大致的了解。 更有幸的是参与了自动泊车系统的研发、重构、优化等一个几乎完整的工程项目开发周期。

毕业课程项目 #

Nanodegree毕业课程设计,该图包含了项目涉及到的几个ROS Node,以及系统中流动的ROS Message。

tl_detector

根据图像信息:

  1. 检测是否存在红绿灯标牌
  2. 分类是红灯还是绿灯

若检测到红灯,则将最靠近停止线的waypoint的序号发送出去。

TODO: 增加OpenCV Image Processing & Deep Learning跳转链接

waypoint_updater

生成前面一段需要跟踪的路径点,且增加了速度属性。当前方存在红灯时,会设置waypoints的速度慢慢减少到0停止。

waypoint_follower

采用pure pursuit算法,计算出车辆需要输出的线速度和角速度,以geometry_msgs::TwistStamped消息发送出去。

twist_controller

使用PID控制器,通过brake/throttle控制车辆的加减速度,使之达到期望的线速度。
使用YawController控制器,计算打方向盘的角度。

控制的原理可参考 Control

其他 #

该项目没有涉及路径规划、位置确定、障碍物跟踪模块。

Planning

实际自动驾驶中,汽车跟踪的轨迹预先是不知道的,所以不会有Waypoint Loader模块。 需要根据用户的需求,做出正确的路径规划。

  1. 类似于导航软件,根据用户指定的目的地,输出一条全局路径规划。
  2. 在跟踪全局路径时,需要有局部路径规划,控制车辆轨迹的平滑稳定。

路径规划的原理可参考这两篇博客:Path PlanningROS 路径规划

Positioning

实际车辆在运行过程中,不会精确知道自己的位姿。定位所涉及的方法有:

  1. GPS/INS
  2. Odometry
  3. Visual/Lidar SLAM
  4. HD Map Matching

障碍物跟踪

融合多传感器的感知结果,预测与追踪障碍物的轨迹。


Next: GPS/INS组合导航
Previous: LOAM