【ROS】fsd_algorithm架构学习与源码分析(致敬)

news/2024/7/10 19:16:55 标签: 学习, c++, 开源, ros

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍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.launch

😆3. 源码学习

------------------ 代码写的也不错 ------------------

perception模块包含YOLO-ROS(darknet_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模块用到了cppadipopt依赖,因为控制中用到了许多数值优化的方法,主要是根据slam地图状态和参考轨迹信息,计算出安全且舒适的控制指令发布到底层,也是分了3种工况。

在这里插入图片描述

以上。


http://www.niftyadmin.cn/n/4931725.html

相关文章

3.6 Spring MVC文件上传

1. 文件上传到本地 实现方式 Spring MVC使用commons-fileupload实现文件上传,注意事项如下: l HTTP请求方法是POST。 l HTTP请求头的Content-Type是multipart/form-data。 SpringMVC配置 配置commons-fileupload插件的文件上传解析器CommonsMultip…

Flink-网络流控及反压剖析

参考: Apache Flink学习网

Android侧滑栏(一)可缩放可一起移动的侧滑栏

在实际的各类App开发中,经常会需要做一个左侧的侧滑栏,类似于QQ这种。 今天这篇文章总结下自己在开发中遇到的这类可以跟随移动且可以缩放的侧滑栏。 一、实现原理 使用 HorizontalScrollView 实现一个水平方向的可滑动的View,左布局为侧滑…

爆肝整理,Python自动化测试-Pytest参数化实战封装,一篇打通...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 参数化&#xff1…

面试热题(两数之和)

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答…

安科瑞物联网表在虚拟电厂的应用

安科瑞 崔丽洁 应用场景 一般应用于控制中心 功能 能计量当前组合有功电能,正向有功电能,反向有功电能,正向无功电能,反向无功电能; ADW300支持RS485通讯、LORA通讯、NB、4G及Wifi通讯; 三套时段表,一年可以…

maven编译始终提示无效的目标发行版的解决方法

摘自个人印象笔记2021-05-07:https://app.yinxiang.com/fx/55e1d5f4-aeea-446a-a768-0f1a48195f5b(图显示不完整可查看原笔记内容)1:确保IDE中的编译版本正确 在idea中,主要看项目属性中和setting的java compiler中对应的jdk版本是否正确&…

SQL-每日一题【1484. 按日期分组销售产品】

题目 表 Activities: 编写解决方案找出每个日期、销售的不同产品的数量及其名称。 每个日期的销售产品名称应按词典序排列。 返回按 sell_date 排序的结果表。 结果表结果格式如下例所示。 示例 1: 解题思路 前置知识 group_concat函数的功能   将group by产生的…