ros

Autoware 培训笔记 No. 4——寻迹

天涯浪子 提交于 2020-04-27 22:25:17
1. 前言 好多初创公司公布出来的视频明显都是寻迹的效果,不是说寻迹不好,相反可以证明,寻迹是自动技术开始的第一步。 自动驾驶寻迹:一种能够自动按照给定的路线(通常是采用不同颜色或者其他信号标记来引导)进行移动的汽车。 本章内容有和No. 1、No. 2与No. 3重复的内容,为了方便自己调试,我将重复的内容也贴出来。 注意: 所有需要在 [Simulation] 菜单下加载的数据,都需要在所有操作之前操作,否则在RViz显示时,会出现frame_id错误。 采用寻迹方式,首先要做的就是要确定汽车离航迹点集上的那个点最近,然后通过control算法将车辆移动到该航迹点上。所以寻迹寻迹方法最核心的操作同样是定位。 本节寻迹我们同样仿真数据与真车实测两个方式来介绍 2. 仿真数据寻迹 2.1 打开runtime manager 2.2 打开地图要定位的数据(在百度网盘中有,这是我们录制的用于定位的数据) 进入 [Simulaton] 页面,点击界面右上方 [Ref] 按钮,加载录制用于定位的 bag 文件。 点击 [Play] 然后点击 [Pause]暂停。 2.3 加载地图,加载world到map以及base_link到velodyne的TF变化 (1) 设置从base_link到velodyne坐标系的TF (与No. 1重复) 在 [Setup] 菜单中,确保

Hector SLAM解读(1)原文翻译

烈酒焚心 提交于 2020-04-27 20:32:11
一种带有 3D 运动状态估计的 slam 系统 A Flexible and Scalable SLAM System with Full 3D Motion Estimation 摘要: 在许多应用场景中,比如城市搜救和搜索(USAR)机器人,需要去获取未知环境的地图。我们提出了一个快速在线学习占用栅格地图、占用较少计算资源的系统。它利用激光雷达系统与基于惯性传感器的3D位姿估计系统进行融合,实现了一种鲁棒的扫描匹配方法。通过地图变化的快速近似和多分辨率栅格地图,在各种有挑战性的环境中实现了可靠的定位与建图。提供了多种数据集以适应嵌入式手持建图系统。我们表明,该系统是足够准确的,在我们考虑的应用场景中,不需要显式闭环检测技术。该软件可作为ROS的开源代码包。 I.介绍 学习环境模型并定位自身是一个真正的机器人在真实世界运行的最重要的能力。在本文中,我们提出了一种灵活的、可升级的系统来解决SLAM问题,已成功的运用在了UGV、USV和一个小型的室内导航系统上。该方法消耗的计算资源较少,故可以应用于低成本、低功耗的嵌入式系统。该方法是在ROS上实现的开源软件。它适应ROS上的API和导航stack,并可以在ROS的生态中替代其他SLAM方法。 本文介绍的系统旨在保证计算力要求低的前提下,实现足够精确的环境感知和自我定位。它可以应用在小尺度的、不必做大的闭环的系统中

使用hector-slam和Kinect V1建图

扶醉桌前 提交于 2020-04-27 20:20:05
一.建图实际操作 下载源码测试源码,depthimage_to_laserscan,参考 https://blog.csdn.net/u010925447/article/details/56494680 解压到你的ros工作空间路径中。 使用catkin_make编译功能包。 分析launch文件,修改使其在自己的平台上可用:参考 https://www.jianshu.com/p/429e59d48322 运行launch文件 启动转换节点:roslaunch depthimage_to_laserscan sample_node.launch(包含主节点和深度相机启动节点) 二.利用深度相机仿激光数据创建地图 下载hector_slam_example:下载地址 https://github.com/chenxingzhe/hector_slam_example,编译(cmake)(无需里程计即可建图,核心节点hector_mapping订阅/scan话题) sudo apt-get install ros-indigo-hector-slam Install the dependency packages:rosdep install hector_slam_example 在启动之前如果你用的是kinect,那就修改一下launch文件 然后就是roslaunch

ROS下实现darknet_ros(YOLO V3)检测

倖福魔咒の 提交于 2020-04-26 23:22:47
一. 代码下载 代码Github主页: https://github.com/leggedrobotics/darknet_ros 下载命令: mkdir -p catkin_workspace/src cd catkin_workspace/src git clone --recursive git@github.com:leggedrobotics/darknet_ros.git cd ../ 下载时间可能比较长,请耐心等待… 二. 编译 在ROS工作空间目录下,执行命令: catkin_make -DCMAKE_BUILD_TYPE=Release 此时会开始编译整个项目,编译完成后会检查{catkin_ws}/darknet_ros/darknet_ros/yolo_network_config/weights文件下有没有yolov2-tiny.weights和yolov3.weights两个模型文件,默认下载好的代码里面为了节省体积是不带这两个模型文件的。因此编译之后会自动开始下载模型文件,此时又是一段漫长的等待时间。 如果刚好你之前已经下载好了模型文件,那就好了,在开始编译之前就把模型文件拷贝到上述文件夹下,就不会再次下载了。 三. 运行代码 1. 图像话题发布 因为darknet_ros会直接订阅指定的图像话题名,然后对图像进行检测,绘制检测框,并发布相应的检测话题

1.编译cartographer ROS

孤街浪徒 提交于 2020-04-25 18:37:01
1.系统要求 cartographer ROS与Cartographer要求一样,即 64-bit, modern CPU (e.g. 3rd generation i7) 16 GB RAM Ubuntu 14.04 (Trusty) and 16.04 (Xenial) gcc version 4.8.4 and 5.4.0 支持的ROS版本: Indigo Kinetic Lunar Melodic 编译并安装 为了编译Cartographer ROS,推荐使用 wstool 和 rosdep 。为了更快得编译,建议使用 Ninja 。 sudo apt- get update sudo apt - get install -y python-wstool python-rosdep ninja-build 在catkin_ws中创建一个新的cartographer_ros工作空间。 mkdir catkin_ws cd catkin_ws wstool init src wstool merge -t src https: // raw.githubusercontent.com/googlecartographer/cartographer_ros/master/cartographer_ros.rosinstall wstool update -t src

cartographer 分析

别等时光非礼了梦想. 提交于 2020-04-25 18:36:43
原文链接: http://blog.csdn.net/zyh821351004/article/details/52421005 cartographer与karto的比较 1. 两者采取的都是图优化框架。 采取的优化库不一致, karto采取的是spa(karto_slam)或g2o(nav2d), cartographer采取的是google的ceres构建problem优化。 karto的前端与后端采取的是单线程进行,cartographer按paper说明,采取的是4线程后端优化,还在进一步确定。 2. 运动预测部分:tracker karto利用的是odom进行初始位置的预测, cartographer部分利用imu构建预测模型,scanmatcher与odom(可选)构建观测模型,采取UKF进行运动预测, cartographer带有tracker的说法。 // Implementation of a Kalman filter. We follow the nomenclature from Thrun, S. et al., Probabilistic Robotics, 2006. // Extended to handle non-additive noise/sensors inspired by Kraft, E., A // Quaternion

从代码理解 cartographer 1

怎甘沉沦 提交于 2020-04-25 16:59:59
之前看了不少的cartographer的从总体上了解cartographer的文章。但是代码是怎么做的,代码怎么写的。我一点都不清楚。 所以这是一次再出发,我自己从代码层面去看cartographer。 在从代码层面上了解cartographer的,有知乎的一个 cartographer源码解读系列 在了解读系列之后,我心里还不是很清楚。所以我自己开始自己的解读过程的记录。 我自己了解cartographer的一个随笔过程。 在我写ROS程序的时候,我自己就是一个过程思维。每一步都经历了什么过程。 所以我在这一系列里面,尝试着解读这些问题。 首先是数据从哪里进去。 如果有错误,希望大家指出。谢谢 官方流程图: 官方流程图还是很清晰明了地讲解了数据的输入有哪几个种类。 在官方流程图的最左边,首先说明了输入的数据雷达的范围数据,IMU数据以及Odom数据。 下面,我们就来了解清楚这些数据进行输入时,代码具体如何执行,以及Google的工程师,是如何设计了这些类。 这些都是我很好奇的地方。 第一部分:Cartographer订阅的各种话题的流程是什么。 在Cartographer的流程图里面,分别有三种数据,雷达数据,odom数据以及IMU数据。 这三个数据分别是雷达驱动所发出的,以及底盘驱动所发出来的Odom数据以及IMU数据。 Cartographer分别订阅了他们所发出来的话题。

Navigation(一) move_base源码最全解析

这一生的挚爱 提交于 2020-04-25 09:50:38
一、概述   目测是全网最全的解析,花了几个小时通读并整理的,供大家参考学习。   概况的话可以看下古月居 https://www.guyuehome.com/270 ,其实它是翻译官方的,英语ok的可以去ros wiki翻看原版。    重点:navfn包 全局规划(Dji算法)、base_local_planner包 局部规划(Trajectory Rollout 和Dynamic Window approaches算法) 二、move_base.h 1 #ifndef NAV_MOVE_BASE_ACTION_H_ 2 #define NAV_MOVE_BASE_ACTION_H_ 3 4 #include <vector> 5 #include < string > 6 7 #include <ros/ros.h> 8 9 #include <actionlib/server/simple_action_server.h> 10 #include <move_base_msgs/MoveBaseAction.h> 11 12 #include <nav_core/base_local_planner.h> 13 #include <nav_core/base_global_planner.h> 14 #include <nav_core/recovery_behavior

ros开发之pointcloud_to_laserscan功能包浅析

你离开我真会死。 提交于 2020-04-24 12:33:11
ROS智能移动小车开发过程中需要slam建图定位,我这边具备的硬件条件为:Robosense 16线激光雷达,笔记本电脑(ubuntu16.04,Ros-Kinetic),当前不借助里程计完成SLAM建图定位的只有二维建图的hector-slam算法,需要将激光雷达三维点云转换为二维点云数据,功能包的配置实现过程可以参考: https://blog.csdn.net/geerniya/article/details/84880514 接下来主要记录pointcloud_to_laserscan功能包三维点云转二维原理: 原理实现主要在pointcloud_to_laserscan/src/pointcloud_to_laserscan_nodelet.cpp中的void PointCloudToLaserScanNodelet::cloudCb(const sensor_msgs::PointCloud2ConstPtr& cloud_msg)中: 输出数据类型为sensor_msgs/LaserScan,终端输入rosmsg show sensor_msgs/LaserScan得到具体格式如下: std_msgs/Header header uint32 seq time stamp string frame_id float32 angle_min float32 angle

12.2 ROS NavFn全局规划源码解读_2

百般思念 提交于 2020-04-23 14:38:51
博客转载: https://blog.csdn.net/Neo11111/article/details/104645228 全局规划中使用Dijkstra算法进行实际计算的部分在NavFn类里完成,它通过传入的costmap来设置costarr数组,再通过costarr数组对存储地图上所有cell点Potential值的potarr数组进行更新,并通过potarr数组来计算梯度gradX和gradY,通过迭代比较,最终得到一条完整的全局规划路径。 【相关文件】 navfn/src/navfn_ros.cpp navfn/src/navfn.cpp 本篇记录对navfn.cpp中定义的NavFn类的阅读和理解。 【代码分析】 navfn.cpp –目录– NavFn::setCostmap | 将Costmap“翻译”成costarr NavFn::calcNavFnDijkstra | Dijkstra计算主体部分 NavFn::setupNavFn | 处理costarr,初始化potarr、gradx、grady NavFn::propNavFnDijkstra | 更新potarr数组 NavFn::updateCell | 单点Potential传播 NavFn::calcPath | 路径生成 <1> NavFn::setCostmap 用指针指向数组costarr