Autoware.Auto avp仿真详解

2023-05-16

1.定位

定位节点启动的是


    ndt_localizer = Node(
        package='ndt_nodes',
        executable='p2d_ndt_localizer_exe',
        namespace='localization',
        name='p2d_ndt_localizer_node',
        parameters=[
            LaunchConfiguration('ndt_localizer_param_file'),
            # Use preset initial pose, if using a preset simulation
            {'load_initial_pose_from_parameters': LaunchConfiguration('with_lgsvl')},
        ],
        remappings=[
            ("points_in", "/lidars/points_fused_downsampled"),
            ("observation_republish", "/lidars/points_fused_viz"),
        ]
    )
  

在仿真系统中ros2 node info /localization/p2d_ndt_localizer_node:

其定位结果输出的是话题是:

/localization/ndt_pose: geometry_msgs/msg/PoseWithCovarianceStamped

frame_id: map

也就是车辆在地图上的位姿

同时也向话题/tf 发送消息:

综上,在仿真中启用的定位节点是ndt_nodes\

出现的问题,在发送定位状态时,将四元数转换成欧拉角,ros2(foxy) 和 python 和ros1 有了区别,折腾了半天,解决方案如下:

解决方案有两个:

1.安装官方库

sudo apt install ros-foxy-tf-transformations
sudo pip3 install transforms3d

import tf_transformations
q = tf_transformations.quaternion_from_euler(r, p, y)
r, p, y = tf_transformations.euler_from_quaternion(quaternion)

2. 自己写个函数

 import numpy as np


def euler_from_quaternion(quaternion):
    """
    Converts quaternion (w in last place) to euler roll, pitch, yaw
    quaternion = [x, y, z, w]
    Bellow should be replaced when porting for ROS 2 Python tf_conversions is done.
    """
    x = quaternion.x
    y = quaternion.y
    z = quaternion.z
    w = quaternion.w

    sinr_cosp = 2 * (w * x + y * z)
    cosr_cosp = 1 - 2 * (x * x + y * y)
    roll = np.arctan2(sinr_cosp, cosr_cosp)

    sinp = 2 * (w * y - z * x)
    pitch = np.arcsin(sinp)

    siny_cosp = 2 * (w * z + x * y)
    cosy_cosp = 1 - 2 * (y * y + z * z)
    yaw = np.arctan2(siny_cosp, cosy_cosp)

    return roll, pitch, yaw  

上面两个解决方案都参考下面这个链接

https://gist.github.com/salmagro/2e698ad4fbf9dae40244769c5ab74434

仿真启动的核心launch文件是Autoware/src/autoware_demos/launch.avp_core.launch.py

首先对感知的结果进行解析学习。

感知结果,用于rviz显示的话题:

/perception/lidar_bounding_boxes_viz

1.感知:

        avp 仿真中用的是简单的欧几里德聚类将点云进行聚类并输出boundingbox,但是存在一定问题,会出现将大片的点云聚类为一个障碍物,输出的boundingbox 会入侵到可行使区域导致车辆停止,需要优化。

        为了便于修改,计划使用ade_home下的源码进行编译然后启动,方便自己修改各种需求。

       编译问题

      1.1 costmap_generator_nodes 编译错误 

        1.1.1找不到 <grid_map_cv/grid_map_cv.hpp> 和<grid_map_ros/grid_map_ros.hpp>

在/opt/Autoware下这个库已经有了,所以在adehome/AutowareAuto/src/planning/costmap_generator/package.xml 中直接增加依赖

<depend>grid_map_cv</depend>

    1.1.2  velodyne_nodes 编译出错,仿真中用不到,屏蔽掉

     colcon build --packages-ignore velodyne_nodes

  编译完成

尝试从本地启动

第一次:rviz可以起来,但是没有加载出地图

原因 :地图文件在/opt 下,需要修改launch 文件

修改 adehome/AutowareAuto/src/launch/avp_sim.launch.py 中的map_pcd_file和map_yaml_file的文件参数如下:

map_pcd_file = "/opt/AutowareAuto/share/autoware_demos/data/autonomoustuff_parking_lot_lgsvl.pcd"

map_yaml_file = "/opt/AutowareAuto/share/autoware_demos/data/autonomoustuff_parking_lot_lgsvl.yaml"

第二次启动:地图以及各可以出来,但是车辆model没有

修改 adehome/AutowareAuto/src/launch/avp_sim.launch.py 中的urdf_path文件参数如下:

urdf_path = "/opt/AutowareAuto/share/lexus_rx_450h_description/urdf/lexus_rx_450h.urdf"

最终发现车辆模型没有出来,且车辆不能运动,引起决定,将launch文件改为两部分,一部分启动自定义的节点,一部分启动/opt下已经生成的节点

上面编译有问题的节点全部使用/opt下的节点,还有 地图和urdf加载的节点,剩下的节点使用 自己编译完成的。

再次尝试,车辆可以动了,一切正常,车辆模型还是发不出来再修改下

把rviz启动改成启动/opt下的就可以了,应该是配置文件的问题,先不管了

基本ok,可以进行定制化开发!

下面针对感知boundingbox会入侵可行使区域进行优化:

(1) 确定被分类完的话题 /perception/points_clustered

节点名称/perception/euclidean_cluster_cloud_node 

输入的话题为/points_nonground

参数文件:

/AutowareAuto/src/autoware_auto_launch/param/euclidean_cluster_.param.yaml

为了调试方便,将这个节点的启动单独放一个launch:

通过调节参数文件中的

min_cluster_threshold_m

max_cluster_threshold_m : 可以调节点云聚类,从而减小比较大的boundingbox入侵可行驶区域

此处的修改目的很简单,不要求感知的结果正确,只要求感知生成的障碍物不会偏大,而入侵了可行使区域。因此暴力的将上面两个参数修改为0.2 和0.8

2. 路径规划

        在对感知进行修改后,车辆还会出现碰撞而卡住的情况。但是并非是撞到东西,而是进入了地图的不可行使区域,接下来主要解决以下几个问题:

1.车辆的卡住问题:

2.车辆不能倒车的问题:

3,车辆卡住后不能手动控制的问题:(人工接管)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Autoware.Auto avp仿真详解 的相关文章

  • tensorflow2.0系列(4): Eager Execution和Auto Graph

    目录 静态图的弊端Eager模式Eager execution的基本特性对 numpy 的支持 Auto Graph 动态图static analysis VS dynamic flow局部参数的可见域python collections
  • MySql查看与修改auto_increment方法

    本文将介绍如何查看表的auto increment及其修改方法 查看表当前auto increment 表的基本数据是存放在mysql的information schema库的tables表中 xff0c 我们可以使用sql查出 span
  • Autoware 安装(源码)过程 与 踩坑记录(Ubuntu18.04)

    目录 autoware 源码安装 安装 ROS Melodic xff1a 设置软件源 设置密钥 xff1a 安装ROS xff1a rosdep xff1a 安装rosinstall 添加ROS环境变量 配置ROS环境变量 创建工作目录
  • Ubuntu18.04安装autoware.ai

    前言 Autoware AI是世界上第一个用于自动驾驶技术的 All in One 开源软件 xff0c 关于它的介绍就不再赘述了 xff0c 感兴趣的可以去看一下知乎文章 xff0c 这里主要说明一下autoware ai的安装配置 之前
  • Docker安装Autoware

    使用gitee上的autoware源码包编译遇到的问题非常多 xff0c 主要是依赖很多 使用Docker来安装autoware相对简单很多 1 xff0c Docker用户权限问题 sudo groupadd docker sudo gp
  • C++中auto的用法

    目录 1 auto初始化 1 1auto还可以与指针 xff0c 引用以及const进行组合 xff0c 但是在不同场景下会有相对应的推导规则 1 1 1指针和引用 1 1 2const 2 增强for循环 3 auto的限制 C 43 4
  • AUTOWARE下底盘CAN通讯实现

    无人驾驶系列 autoware与底盘CAN通讯实现 本文介绍在使用autoware时 xff0c 如何将autoware发送的消息传输给底盘 xff0c 实现对线控底盘的控制 准备工作 xff1a 1 系统具备ROS和autoware 2
  • Ardupilot笔记:Rover auto模式下的执行流程

    先从mode auto cpp的update 开始分析 流程如图 xff1a 进入函数update 后会执行函数navigate to waypoint mode auto cpp span class token keyword void
  • autoware花屏重影问题

    autoware 安装 花屏 重影问题 最近尝试下autoware来做建图 xff0c 无奈各类安装太过麻烦 xff0c 这里给几个小问题做下纪律 1 xff0c 安装过程 xff0c 走的官网那个 xff0c 事实证明官网教程最全面 xf
  • ROS 中写 python 的 roslaunch

    文章目录 1 必看教程 快速入门 1 1 快速入门ROS的视频教程 里面有一节是专门讲 roslaunch 的 https www bilibili com video av59458869 1 2 PDF文档 How to create
  • C++14中返回类型推导的使用

    使用C 14中的auto返回类型 编译器将尝试自动推导 deduce 返回类型 namespace int xx 1 auto f return xx return type is int const auto f3 return xx r
  • 初始化器列表返回的生命周期扩展

    所以我有一个 lambda 其返回类型是auto我在阵列支持方面遇到问题initializer list在这里被摧毁 const auto foo const auto a const auto b const auto c return
  • 使用 C++11 的“auto”如何提高性能?

    我明白为什么autoC 11 中的类型提高了正确性和可维护性 我读到它还可以提高性能 几乎总是自动作者 Herb Sutter 但这部分缺乏很好的解释 How can auto提高性能 谁能举个例子吗 auto可以通过以下方式提高性能避免静
  • 自动类型推导中的常量

    我正在阅读 Scott Meyers 的 Effective Modern C 第 1 项包含以下示例 template
  • auto it = vector.begin() 结果类型不可转换为 const_iterator

    容器需要提供iterator可以隐式转换为的类型const iterator 鉴于此 我正在尝试使用auto通过初始化一个对象vector begin 并使用该结果对象std distance其中 RHS 是const iterator 这
  • 身份函数:模板和自动的区别

    我正在为我的一些类编写一个身份函数 用于记录其调用的计数 长话短说 指标 目前 我正在尝试计算使用模板与使用模板的性能差异 优点auto 这是从我正在做的代码中摘取的一个简短示例 namespace Metrics unsigned lon
  • 使用 constexpr auto/char-array 变量观察到的不同行为

    跟进这个问题拥有 constexpr 静态字符串会导致链接器错误 https stackoverflow com questions 34792403 having a constexpr static string gives a lin
  • decltype(auto) 和 decltype(returning expr) 作为返回类型有什么区别?

    有什么区别decltype auto and decltype returning expression 作为函数 模板 的返回类型如果expr在这两种情况下都没有使用括号吗 auto f gt decltype auto return e
  • 为什么 auto 在 C++ 中的 2D 和 1D 数组的“range for”中工作方式不同

    您好 我正在 C 中处理 2D 和 1D 数组并使用范围为访问元素 我使用的代码如下 对于二维数组 int ia 3 4 1 2 3 4 5 6 7 8 9 for auto row ia for auto col row cout lt
  • 从函数正确传播“decltype(auto)”变量

    这是来自 decltype auto 变量有任何实际用例吗 https stackoverflow com questions 57438217 are there any realistic use cases for decltypea

随机推荐

  • MQ与Webservice的区别

    Webservice 和MQ MessageQueue 都是解决跨平台通信的常用手段 xff0c 两者有哪些区别呢 xff1f 个人认为最本质的区别在于 Webservice近乎实时通信 xff0c 而MQ却通常是延时通信 什么意思呢 xf
  • uORB通信机制和添加自己的topics学习笔记

    本文参考 Ubuntu16 04下PX4环境快速搭建及uORB通信机制进行操作 结合网上一篇uROB的介绍PX4 Pixhawk uORB深入理解和应用进行深入的了解 1 简介 uORB Micro Object Request Broke
  • 看到一篇很好的介绍磁力计原理的博客

    详细内容戳这里http blog sina com cn s blog 402c071e0102v8ig html
  • QT工程转换为VS2013项目文件

    xff08 win7系统 xff09 1 点击开始 xff0c 输入cmd xff0c 打开cmd 2 输入cd c apm点击回车键 注 xff1a apm是我的qt的工程文件夹 xff0c 最好放在c盘 xff0c 其他盘转换都不成功
  • C语言:函数返回字符串的四种方法

    转载连接 xff1a 1 https blog csdn net turkeyzhou article details 6104135 comments 2 https www cnblogs com qingergege p 649668
  • C语言:字符串中查找指定字符——strchr()和strrchr()

    参考文章连接 xff1a 1 http c biancheng net cpp html 161 html 2 http c biancheng net cpp html 172 html 1 头文件 xff1a include lt st
  • C语言:整型、浮点型和字符串间转换

    参考文章链接 xff1a 1 http c biancheng net cpp html 1573 html 2 http c biancheng net cpp html 1574 html 1 整型 浮点型 gt 字符串 整数转换为字符
  • 学习贵在坚持!

    最近学习颇为不顺 xff0c 周围都是一些不利的消息 xff0c 有些心灰意冷 可是这不是与我写本文的初衷相悖了么 xff1f 看到了比自己优秀的人干出来辉煌的事情 xff0c 写出来文字优美的文章 xff0c 自己就有相形见绌的自卑感 可
  • Qt中 QString 和int, char等的“相互”转换

    原文链接 xff1a https blog csdn net ei nino article details 7297791 Qt中 int float double转换为QString 有两种方法 1 使用QString number 如
  • 计算器第二版:C语言,VC++6.0

    使用栈实现 xff0c 前缀表达式变后缀表达式的原理 xff0c 但是没有转换 xff0c 是边转换边实现 xff1a include lt stdio h gt include lt stdlib h gt include lt coni
  • 计算器第三版:C语言,递归,VC++6.0

    参考文章 xff1a https blog csdn net u011692041 article details 49796343 https blog csdn net u011692041 article details 497991
  • 计算器第四版:C++,QT

    核心算法和第二版一样 xff1a 头文件 xff1a calculate h ifndef CALCULATE H define CALCULATE H include lt QMainWindow gt include lt QPushB
  • USB协议概念学习

    1 USB总线结构 usb的总线拓扑结构如下所示 xff1a 从USB总线结构可以看出 xff0c 主要由3部分组成 xff1a USB主机 Host USB线缆 USB设备 hub Func等 USB主机 xff1a 一般成为USB Ho
  • 创新工场两道笔试题0919

    题目1 字符串去重 xff0c 老题目 xff0c 只是要求不能开辟新空间用来复制原字符串 思路 xff1a 使用布尔型的简单hash表可以节省空间 xff0c 用来存储字符是否出现的信息 xff0c 刚开始hash表里面都是false x
  • ROS仿真机器人学习笔记二:创建4轮小车模型及相关xraco文件修改

    系列文章目录 提示 xff1a 这里可以添加系列文章的所有文章的目录 xff0c 目录需要自己手动添加 例如 xff1a 第一章 Python 机器学习入门之pandas的使用 提示 xff1a 写完文章后 xff0c 目录可以自动生成 x
  • 旧电脑升级Windows11时检查CPU和TPM2.0不满足的解决方案(慎重)

    上个月微软发布了Windows11 22H2正式版 xff0c 不少新电脑也接收到了推送 xff0c 楼主的台式 xff08 i3 8100 军规星H310M xff09 也接收到了推送 xff0c 但是碍于Win11蛋疼的右键和状态栏消息
  • windows下安装docker

    windows下安装docker 0 前置条件 环境说明 xff1a windows11 家庭中文版 开启Hyper V xff08 可以百度如何开启 xff09 如何添加Hyper V 创建hyper txt xff0c 复制如下内容 x
  • STM32CubeMX配置生成FreeRTOS项目

    文章目录 1 安装STM32CubeMX软件1 1 下载安装1 2 安装要用到的芯片软件包 2 配置FreeRTOS项目2 1 创建工程2 2 配置SYS2 3 配置RCC2 4 配置系统运行时钟2 5 配置UART1串口作为调试代码2 6
  • ScrumMaster的教练职责

    ScrumMaster是Scrum团队的敏捷教练 Ken Rubin说 xff0c 类似于运动团队的教练 xff0c ScrumMaster观察团队使用Scrum的过程 xff0c 帮助团队提高工作绩效 教练不是顾问 xff0c 不提供解决
  • Autoware.Auto avp仿真详解

    1 定位 定位节点启动的是 ndt localizer 61 Node package 61 39 ndt nodes 39 executable 61 39 p2d ndt localizer exe 39 namespace 61 39