对于网站建设的提问,属于软件开发工具的是,网站建设运营的灵魂是,创新的品牌网站建设#x1f60f;★,:.☆(#xffe3;▽#xffe3;)/$:.★ #x1f60f; 这篇文章主要介绍fsd_algorithm架构学习与源码分析。 无专精则不能成#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客#xff0c;一起学习#xff0c;共同进步。 喜欢的朋友可以关注一下★,°:.☆(▽)/$:.°★ 这篇文章主要介绍fsd_algorithm架构学习与源码分析。 无专精则不能成无涉猎则不能通。——梁启超 欢迎来到我的博客一起学习共同进步。 喜欢的朋友可以关注一下下次更新不迷路 文章目录 :smirk:1. 项目介绍:blush:2. 架构学习:satisfied:3. 源码学习 1. 项目介绍
------------------ 叮叮叮 ------------------
大学生无人驾驶方程式有两支很牛的车队国外苏黎世联邦理工的AMZ-Driverless和国内北理的Smart Shark-BITFSD大佬们的无人驾驶车和算法做的很顶这里就不方便放视频了贴一下他们的网站和Github大佬们将稳定的算法和仿真平台开源了并分享在github给我等学习mobai
AMZ官网https://www.amzracing.ch/
AMZ Github地址https://github.com/AMZ-Driverless/fssim
BITFSD官网http://www.bitfsd.com/
BITFSD Github地址https://github.com/bitfsd/fsd_algorithm
2. 架构学习
------------------ 架构很棒 ------------------
环境配置建议选择Ubuntu 18.04 and ROS Melodic。
fsd_algorithm算法仓库包含ros和tools。
tools提供了ros模板的生成可通过py脚本generate.py自助选择生成对应语言C/Python、对应节点名包名、对象名和类名的ros节点。
ros中包含了fsd的核心算法如perception包、estimation包、planning包、control包和与仿真器连接的interface_fssim包。
环境配置过程如下
# 1.clone将ros下的包cp到自己的catkin_ws/src中
# 进入ros/control/controller/script安装cppad和ipopt两个优化库
# 编译 catkin build# 2.clone fssim仿真仓库到另一个catkin中
# 安装依赖下载gazebo的models等
# 编译 catkin build# 3.进入仿真项目环境启动仿真环境 roslaunch fssim auto_fssim.launch
# 然后启动算法包里的仿真接口 roslaunch fssim_interface fssim_interface only_interface.launch
# 最后运行相关算法
# roslaunch fsd_common_meta trackdrive.launch
# roslaunch fsd_common_meta skidpad.launch
# roslaunch fsd_Common_meta acceleration.launch3. 源码学习
------------------ 代码写的也不错 ------------------
perception模块包含YOLO-ROSdarknet_ros的目标检测包用coco数据集训练可配置参数文件在darkned_ros/config/ros.yaml订阅的话题是/camera/rgb/image_raw发布的话题有/darknet_ros/found_object、/darknet_ros/bounding_boxes和/darknet_ros/detection_image此外还有动作发送/darknet_ros/check_for_objects以此实现目标检测结果的获取激光雷达聚类包Lidar Cluster基于PCL订阅的是威力登的点云/velodyne_points发布的是聚类结果/perception/lidar_cluster参数配置在./config/lidar_cluster.yaml在lidar_cluster中用preprocessing先对点云进行过滤再用ClusterProcessing进行聚类处理。
estimation模块主要是loam建图定位和robot_localization定位包用扩展卡尔曼和无损卡尔曼等方法获取车辆的精确位置和位姿信息。
planning模块有边界检测、线检测、8字检测和路径生成这几个包。边界检测boundary_detector的核心思想是搜索和选择基于OpenCV3订阅/local_map发布/planning/boundary_detections和其他几个显示话题基于地图边界信息生成最优路径和边界结果线检测line_detector用到了霍夫变换订阅雷达聚类结果/perception/lidar_cluster发布全局路径/planning/global_path可以看到本仓库的算法的模板是getNodeRate loadParameters subscribeToTopics publishToTopics run sendMsg 和一个callback函数这个包核心在于createPath创建全局路径这里线生成Path Generator包应该是进行路径优化会根据不同的任务生成不同的参考路径如直线加速是根据目标点参数8字是根据转换矩阵循迹任务是根据地图信息最后生成控制指令并发布。
control模块用到了cppad和ipopt依赖因为控制中用到了许多数值优化的方法主要是根据slam地图状态和参考轨迹信息计算出安全且舒适的控制指令发布到底层也是分了3种工况。 以上。