无人驾驶-室内外循迹运行

1. 前言

好多初创公司公布出来的视频明显都是循迹的效果,不是说循迹不好,相反可以证明,循迹是自动技术开始的第一步。

自动驾驶循迹:一种能够自动按照给定的路线(通常是采用不同颜色或者其他信号标记来引导)进行移动的车。

真车寻迹

真车寻迹与仿真寻迹类似,差别在于仿真定位采用事先记录的数据,真车定位采用实际的激光雷达。

2. 真车循迹

2.1 打开runtime manager

2.2 启动激光雷达

1)针对velodyne 多线lidar

如果你有velodyne激光可以启动默认配置:[Sensing] 页面下 [Lidars] 选项下针对你的velodyne选择,velodyne激光对应的发布的点云topic:/velodyne_packets,frame_id:velodyne,topic会被重映射成为/points_raw。

例如:假如你有16线激光,点选 [velodyne VLP-16] 的 [config],点选[ref],加载/home/pix/Autoware/ros/src/sensing/drivers/lid ar/packages/velodyne/velodyne_pointcloud/param s/VLP16db.yaml路径下的配置文件(自己多线激光雷达可以针对这个配置改写),退出 [config],勾选 [velodyne VLP-16] 选项(一般的操作都是先修改config或者app下的配置或参数文件,然后勾选选项)。

 查看点云输出。

2)针对其他品牌多线lidar

如果你有其他品牌的激光,他们发布的topic不是/velodyne_packets,且frame_id同样不对应,这时可以自己写个程序转一下,参照:https://www.cnblogs.com/hgl0417/p/11067660.html。然后单独运行你的lidar driver node,将你的点云数据模拟成velodyne数据。此时,不需要点选runtime manager上的lidar配置文件(每个配置文件对应一个package或者node,意义在于将对应的topic发布,此时你已经发布了topic,所以不需要在点选上述配置文件)。

2.3 加载world到map以及base_link到velodyne的TF变化,加载地图

1) 设置从base_link到velodyne坐标系的TF

在 [Setup] 菜单中,确保 [Localizer] 下选项为 [Velodyne],在 [Baselink to Localizer] 中设置好各个参数之后点击 TF 按钮,其中x、y、z、yaw、pitch、roll表示真车雷达中心点与车身后轴中心点的相对位置关系(右手坐标系,真车后车轴为原点),此时可以点击[Vehicle Model],如果[Vehicle Model]为空,那么会加载一个默认模型(在rviz显示时,如果有激光雷达数据,车辆会显示为黑色)。如下图:

2)设置从world到map转换

点击 [Map] 页面,点击 [TF] 的 [ref] 选择 autoware/ros/src/.config/tf/tf_local.launch 文件,这是加载默认world到map的坐标转换,打开tf_local.launch文件如下:  

<launch>

    <node pkg="tf" type="static_transform_publisher" name="world_to_map" args="0 0 0 0 0 0 /world /map 10" />

</launch>
 args的参数“0 0 0 0 0 0 /world /map 10”表示:从/world坐标系转换到/map坐标系的x, y, z, roll, pitch, yaw转换,且频率为10Hz。

点击 [TF] 按钮,如下图:   

(2)加载地图

选择runtime manager的 [Map] 菜单,点击 [Point Cloud] 按钮的 [ref],加载培训笔记 No. 1产生的.pcd文件(点云地图),并点击 [Point Cloud] 按钮,进度条显示OK,则加载完毕,如下图:

2.4 设置相关滤波器

 选择 [Sensing] 页面,点击 [Points Downsampler] 下 [voxel_grid_filter] 的 app,设置一些参数,[voxel_grid_filter] 是一种将采样方法,将点云数据用质心近似(用于降采用),如下图:

这里,[Voxel Leaf Size] 参数值为2,意义是2米的立方体内的全部点近似用1个质心代替。[Measurement Range]的参数值为2,意义是点云的有效的距离为200米。 

在[Sensing] 菜单下的 [Points Preprocesser] 下 [ring_ground_filter],[app]设置如下:

             

[ring_ground_filter]用于区分地面与障碍物。参数描述如下:

[Sensor Model]参数为激光雷达的线扫条数,我们项目用的是16线激光雷达,这里我们选16;

[Sensor Height]参数表示传感器距离地面高度;

[Max Slope]表示最大的坡度,根据Alex如果不给出好坡度,容易将坡识别为障碍物;

[Vertical Thres]表示障碍物和地面的差异度,如果大于这个值则被认为是障碍。

2.5 设置导航

1)在 [Computing] 菜单栏右侧 [Mission Planning] 中勾选 [lane_rule],[lane_stop],[lane_select] 三个选项,如下图:

[Acceleration]表示到达/通过停止线的加速度;

[Stopline Search Radius]表示搜索停止线圆心,半径1m的waypoints;

2)在菜单栏 [Computing] 右侧的 [astar_planner] 下的 [obstacle_avold], [velocity_set] 并勾选,如下图:

[obstacle_avold]表示避障的相关参数;

[velocity_set]表示避障速度设置的相关参数。

3)在菜单栏 [Computing] 右侧的 [waypoint_maker] 下的 [waypoint_loader] 加载waypoints。

4)在 [Computing] 菜单栏,找到 [waypoint_follower] 下 [pure_pursuit] 与 [twist_filter] 的 [app] 进行设置并勾选。

在 [Computing] 菜单栏,找到 [lidar_localizer] 下 [ndt_matching]的 [app] 进行设置并勾选。

在 [Computing] 菜单栏,找到 [autoware_connect] 下 [vel_pose_connect]的 [app] 进行设置并勾选。

autoware循迹配置已完

3. 启动底盘连接

我这里是将autoware生成的速度、航向角数据信息通过rostopic下发给STM32模块处理,分别控制四轮转向驱动,也可以通过can下发给车的底盘。

4.室内外循迹效果,如下图:

停车场循迹效果如下:

无人驾驶从初学到精通,基于Autoware开源系统带你畅游自动驾驶SLAM、感知、定位、决策、路径规划、执行等关键模块。

具体代码请联系QQ:574226409 WX:18682265246

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/411449.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

✅技术社区项目—JWT身份验证

通用的JWT鉴权方案 JWT鉴权流程 基本流程分三步: ● 用户登录成功之后&#xff0c;后端将生成的jwt返回给前端&#xff0c;然后前端将其保存在本地缓存; ● 之后前端与后端的交互时&#xff0c;都将iwt放在请求头中&#xff0c;比如可以将其放在Http的身份认证的请求头 Author…

跨境外贸自动评论脚本开发常用代码!

随着跨境电商的兴起&#xff0c;自动化评论成为了提升销售和客户满意度的重要工具&#xff0c;通过编写自动评论脚本&#xff0c;商家可以快速地在各个平台留下正面评价&#xff0c;提高产品的曝光率和信誉度。 本文将介绍跨境外贸自动评论脚本开发的一些常用代码&#xff0c;…

STM32控制数码管从0显示到99

首先 先画电路图吧&#xff01;打开proteus&#xff0c;导入相关器件&#xff0c;绘制电路图。如下&#xff1a;&#xff08;记得要保存啊&#xff01;发现模拟一遍程序就自动退出了&#xff0c;有bug&#xff0c;我是解决不了&#xff0c;所以就是要及时保存&#xff0c;自己重…

远程访问Mysql数据库(最新有效)

在我们日常的开发中&#xff0c;我们的Mysql数据库一般都是不可以直接远程访问的&#xff0c;但有时候在特定的场景下&#xff0c;也想要远程访问&#xff0c;那要怎么配置呢&#xff1f; 其实要配置远程访问很简单&#xff0c;只需要做如下配置&#xff1a; 1.查看当前的用户…

代码随想录算法训练营day26

题目&#xff1a;39_组合总数&#xff08;没看题解&#xff09; 给定一个无重复元素的数组 candidates 和一个目标数 target &#xff0c;找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的数字可以无限制重复被选取。 说明&#xff1a; 所有数字&…

Yolov8有效涨点:YOLOv8-AM,添加多种注意力模块提高检测精度,含代码,超详细

前言 2023 年&#xff0c;Ultralytics 推出了最新版本的 YOLO 模型。注意力机制是提高模型性能最热门的方法之一。 本次介绍的是YOLOv8-AM&#xff0c;它将注意力机制融入到原始的YOLOv8架构中。具体来说&#xff0c;我们分别采用四个注意力模块&#xff1a;卷积块注意力模块…

idea设置

全局配置 proxy 一般公司网络是局域网络&#xff0c;需要配置proxy keyMap 设置自己习惯的快捷键模式 auto Import 自动添加和移除jar包 console 编码格式 &#xff08;有可能会造成乱码&#xff09; java编码格式设置 Tab size File and Code Templates 进公司必设 File…

React组件详解

React组件分为两大类 1.函数组件 2.类组件&#xff08;最常用&#xff09; 组件化 import ReactDom from "react-dom";// // 1.通过函数创建一个组件 // 2.函数名字必须大写开头 // 3.函数必须有返回值 function Func1() {return <h2>这是一个基础组件</h…

web组态插件

插件演示地址&#xff1a;http://www.byzt.net 关于组态软件&#xff0c;首先要从组态的概念开始说起。 什么是组态 组态&#xff08;Configure&#xff09;的概念来自于20世纪70年代中期出现的第一代集散控制系统&#xff08;Distributed Control System&#xff09;&#xf…

Jmeter 的 jar 包开发环境搭建,看这一篇就够了!

01 JDK环境变量配置 JAVA_HOMEE:\Program Files\Java\jdk1.8.0_102 Path%JAVA_HOME%\bin; CLASSPATH.;%JAVA_HOME%\lib\dt.jar;.;%JAVA_HOME%\lib\tools.jar 验证环境变量有没有生效&#xff1a;看到如下信息说明 JDK 环境变量已经生效 02 配置 maven 环境 1、下载地址&…

Unity中URP实现水体(水下的扭曲)

文章目录 前言一、使用一张法线纹理&#xff0c;作为水下扭曲的纹理1、在属性面板定义一个纹理&#xff0c;用于传入法线贴图2、在Pass中&#xff0c;定义对应的纹理和采样器3、在常量缓冲区&#xff0c;申明修改 Tilling 和 Offset 的ST4、在顶点着色器&#xff0c;计算得到 应…

解析ChatGPT Plus相比chatgpt3.5有哪些优势

「ChatGPT Plus」提供更出色的对话体验和更广泛的应用能力&#xff0c;学生可以用来写作、职场人也可以用来写计划书、策划书等等&#xff0c;并且问它一些问题比搜索引擎好用多了简直。但普通人使用起来有一点门槛&#xff0c;并且升级4.0也难住了许多爱好者。 ChatGPT主要功能…

【C++进阶】STL容器--stack和queue深度剖析优先队列适配器原理

目录 前言 1. 容器的使用 1.1 stack 1.2 queue 2. 什么是适配器 3. stack&&queue底层实现 4. deque的简单介绍 4.1 deque的缺陷 5. priority_queue 思考 6. priority_queue的实现 前言 栈和队列在C语言中大家都有所了解&#xff0c;C语言的栈和队列都是我们手动去…

2024最新版本Teamviewer安装和使用

事情背景 今年元宵节刚好是周末&#xff0c;就回趟家&#xff0c;整个项目几百人都解决不了的问题&#xff0c;眼巴巴要看着要我分析。我就只能远程看看&#xff0c;结果向日葵卡得不行&#xff0c;同事推荐用Teamviewer&#xff0c;诶&#xff0c;真香。 由于现在Teamviewer…

神经网络系列---权重初始化方法

文章目录 权重初始化方法Xavier初始化&#xff08;Xavier initialization&#xff09;Kaiming初始化&#xff0c;也称为He初始化LeCun 初始化正态分布与均匀分布Orthogonal InitializationSparse Initializationn_in和n_out代码实现 权重初始化方法 Xavier初始化&#xff08;X…

ETL数据仓库的使用方式

一、ETL的过程 在 ETL 过程中&#xff0c;数据从源系统中抽取&#xff08;Extract&#xff09;&#xff0c;经过各种转换&#xff08;Transform&#xff09;操作&#xff0c;最后加载&#xff08;Load&#xff09;到目标数据仓库中。以下是 ETL 数仓流程的基本步骤&#xff1a…

工作中常见问题总结

工作中常见错误清单 1、springboot实现无数据库启动 问题 springboot往往是作为b/s系统的server端的架子来使用&#xff0c;但是有些时候&#xff0c;是作为静默的server&#xff0c;并没有界面和数据库&#xff0c;但是springboot默认是链接数据库的&#xff0c;如何解决这个…

sql-labs第46关 order by盲注

sql-labs第46关 order by盲注 来到了第46关进入关卡发现让我们输入的参数为sort&#xff0c;我们输入?sort1尝试&#xff1a; 输入?sort2,3,发现表格按照顺序进行排列输出&#xff0c;明显是使用了order by相关的函数。 我们将参数变成1进行尝试&#xff0c;就会报错&…

C++基础学习——哈希表的封装

目录 ​编辑 一&#xff0c;实现一个可封装的哈希表 1&#xff0c;哈希表的节点 2&#xff0c;哈希表的成员 3&#xff0c;哈希表成员方法的实现 4&#xff0c;迭代器的实现 5&#xff0c;在哈希表中加入迭代器 二&#xff0c;封装哈希表 1&#xff0c;unorder_map封装 2…

【hot100】跟着小王一起刷leetcode -- 49. 字母异位词分组

【【hot100】跟着小王一起刷leetcode -- 49. 字母异位词分组 49. 字母异位词分组题目解读解题思路代码实现 总结 49. 字母异位词分组 题目解读 49. 字母异位词分组 ok&#xff0c;兄弟们&#xff0c;咱们来看看这道题&#xff0c;很明显哈&#xff0c;这里的关键词是字母异位…