1.【ROS博客】基于ROS的自动驾驶数据集可视化项目(附源代码)
2.hdl_graph_slam|后端优化|hdl_graph_slam_nodelet.cpp|源码解读(四)
3.Autoware.universe 源码解读(一)
【ROS博客】基于ROS的自动驾驶数据集可视化项目(附源代码)
项目简介
基于加州大学伯克利分校 MSC Lab的自动驾驶数据集,本项目旨在进行数据集的可视化。项目源代码已上传至 GitHub,英文版文章与演示视频也已准备就绪。
数据集展示
左侧展示了GPS信号的可视化,通过 Mapviz 工具,爬虫可以爬源码吗将行驶过程中走过的路径显示出来,左上角则呈现了车前摄像头的视角。右侧是自定义的可视化,利用绿色代表 y 轴正方向,蓝色表示 x 轴正方向。紫色圆点表示汽车行驶过程中各个方向的无法安装源码网站加速度信息,天蓝色箭头指示汽车前进方向,绿色则代表不同强度的加速度。
问题与解决方案
在使用 Mapviz 可视化 GPS 信号时,遇到了数据格式不匹配的问题。通过在自定义的 package 中编写 `trans_GPS.cpp` 文件,成功实现了数据格式转换,解决了数据可视化的问题。同时,还撰写了关于 Mapviz 的基础使用教程。
加速度信息的可视化涉及确定坐标轴方向、避免信息跳动以及直观显示加速度大小。osgb转cesium源码通过在 RVIZ 中绘制 x 和 y 轴,并使用平滑器处理频繁读取的 IMU 数据,成功解决了这些问题。极坐标系的引入使得加速度大小的显示更为直观。
汽车前进方向的可视化涉及到姿态信息的获取与 RVIZ 显示角度的调整。通过分析 IMU 的 orientation 数据,并设置 marker 的 orientation 值,实现了方向的正确显示。
相机信息的可视化面临格式转换问题。通过使用 `image_transport` 包装解决了传感器数据格式不兼容的问题。
总结
在本项目中,eclipse多个源码目录通过学习与实践 ROS 相关知识,成功实现了自动驾驶数据集的可视化。接下来,将集中精力深入学习 OSM 的使用,并着手进行 GPS 定位与搜索的小项目开发。
hdl_graph_slam|后端优化|hdl_graph_slam_nodelet.cpp|源码解读(四)
hdl_graph_slam源码解读(八):后端优化后端概率图构建核心:hdl_graph_slam_nodelet.cpp
整体介绍 这是整个系统建图的核心,综合所有信息进行优化。所有的信息都会发送到这个节点并加入概率图中。 包含信息 1)前端里程计传入的位姿和点云 2)gps信息 3)Imu信息 4)平面拟合的参数信息 处理信息步骤 1)在对应的callback函数中接收信息,并放入相应的队列 2)根据时间戳对队列中的信息进行顺序处理,加入概率图 其他内容 1)执行图优化,adnroid studio 源码调试这是一个定时执行的函数,闭环检测也在这个函数里 2)生成全局地图并定时发送,即把所有关键帧拼一起,得到全局点云地图,然后在一个定时函数里发送到rviz上去 3)在rviz中显示顶点和边,如果运行程序,会看到rviz中把概率图可视化了 关键帧同步与优化 cloud_callback cloud_callback(const nav_msgs::OdometryConstPtr& odom_msg,const sensor_msgs::PointCloud2::ConstPtr& cloud_msg) 该函数主要是odom信息与cloud信息的同步,同步之后检查关键帧是否更新。 关键帧判断:这里主要看关键帧设置的这两个阈值keyframe_delta_trans、keyframe_delta_angle 变成关键帧的要求就是:/hdl_graph_slam/include/hdl_graph_slam/keyframe_updater.hpp 优化函数 optimization_timer_callback(const ros::TimerEvent& event) 函数功能:将所有的位姿放在posegraph中开始优化 loop detection 函数:主要就是将当前帧和历史帧遍历,寻找loop。 闭环匹配与信息矩阵计算 匹配与闭环检测 潜在闭环完成匹配(matching 函数) 不同loop的信息矩阵计算(hdl_graph_slam/information_matrix_calculator.cpp) gps对应的信息矩阵 hdl_graph_slam/graph_slam.cpp 添加地面约束 使用add_se3_plane_edge函数的代码 执行图优化 优化函数optimization_timer_callback 执行图优化,闭环检测检测闭环并加到了概率图中,优化前 生成简化版关键帧,KeyFrameSnapshot用于地图拼接 生成地图并定时发送 生成地图:简化版关键帧拼接 定时发送:src/hdl_graph_slam_nodelet.cpp文件中 系统性能与扩展性 hdl_graph_slam性能问题在于帧间匹配和闭环检测精度不足,系统代码设计好,模块化强,易于扩展多传感器数据融合。 总结 hdl_graph_slam后端优化是关键,涉及大量信息融合与概率图构建。系统设计清晰,扩展性强,但在性能上需改进。Autoware.universe 源码解读(一)
在Autoware的自动驾驶仿真软件中,launch文件起着至关重要的作用。autoware.launch.xml是其中一个基础的launch文件,它使用XML语言编写,以定义启动ROS节点、参数和设置默认值。这个文件的核心结构包括version="1.0"(XML 1.0版本)和encoding="UTF-8"(UTF-8编码)。
文件的前半部分侧重于参数定义和设置,包括地图路径、车辆模型、传感器模型和点云容器,这些都可以通过传递参数进行灵活调整。例如,vehicle_id和launch_vehicle_interface是两个全局参数,vehicle_id默认值为环境变量VEHICLE_ID的值,而launch_vehicle_interface默认为true,表示是否启动车辆接口。
参数check_external_emergency_heartbeat控制外部紧急停车功能,当不需要时需将其设为false。system_run_mode和launch_system_monitor等参数分别定义了系统的运行模式和是否启动系统监视器。此外,rviz可视化工具的启用、rviz配置文件路径,以及感知模式的选择等也被详细定义。
launch文件中还包括一个include标签,引入了global_params.launch.py,该文件通过arg标签传递参数,以进行更精细的配置。例如,如果launch_vehicle设置为true,它将启动vehicle.launch.xml,并传递参数。
总的来说,autoware.launch.xml通过巧妙地定义和传递参数,灵活地控制和配置Autoware的各个子系统,以实现自动驾驶的模拟和测试。