CMU,[gazebo]process has died.报错解决.VLP-16.velodyne

2023-05-16

解决方法:

sudo apt-get install ros-noetic-velodyne-*

报错:

        roslaunch vehicle_simulator system_garage.launch 一输入就报各种各样的process has died,接着就是Gazebo卡死,这个错误困扰了笔者几个星期。

心路历程:

         笔者踏踏实实从基础开始学

https://so.csdn.net/so/search?q=%E4%BB%BF%E7%9C%9F%E6%9C%BA%E5%99%A8%E4%BA%BA&t=blog&u=Netceor&urw=

        从头开始了解了launch文件、xacro文件和world文件,并了解他们的语法、关系和作用。

        后面再一一从launch文件入手,查看到底是哪段代码让Gazebo“便秘”?

一、查看launch文件

逐段注释运行,最后发现是vehicle_simulator.lauch除了问题

<launch>

  <arg name="world_name" default="garage"/>
  <arg name="vehicleHeight" default="0.75"/>
  <arg name="cameraOffsetZ" default="0"/>
  <arg name="vehicleX" default="0"/>
  <arg name="vehicleY" default="0"/>
  <arg name="terrainZ" default="0"/>
  <arg name="vehicleYaw" default="0"/>
  <arg name="gazebo_gui" default="true"/>
  <arg name="checkTerrainConn" default="true"/>

  <include file="$(find ps3joy)/launch/ps3.launch" />

  <include file="$(find local_planner)/launch/local_planner.launch" >
    <arg name="cameraOffsetZ" value="$(arg cameraOffsetZ)"/>
    <arg name="goalX" value="$(arg vehicleX)"/>
    <arg name="goalY" value="$(arg vehicleY)"/>
  </include>

  <include file="$(find terrain_analysis)/launch/terrain_analysis.launch" />

  <include file="$(find terrain_analysis_ext)/launch/terrain_analysis_ext.launch" >
    <arg name="checkTerrainConn" value="$(arg checkTerrainConn)"/>
  </include>

  <include file="$(find vehicle_simulator)/launch/vehicle_simulator.launch" >
    <arg name="world_name" value="$(arg world_name)"/>
    <arg name="vehicleHeight" value="$(arg vehicleHeight)"/>
    <arg name="cameraOffsetZ" value="$(arg cameraOffsetZ)"/>
    <arg name="vehicleX" value="$(arg vehicleX)"/>
    <arg name="vehicleY" value="$(arg vehicleY)"/>
    <arg name="terrainZ" value="$(arg terrainZ)"/>
    <arg name="vehicleYaw" value="$(arg vehicleYaw)"/>
    <arg name="gui" value="$(arg gazebo_gui)"/>
  </include>

  <include file="$(find sensor_scan_generation)/launch/sensor_scan_generation.launch" />

  <include file="$(find visualization_tools)/launch/visualization_tools.launch" >
    <arg name="world_name" value="$(arg world_name)"/>
  </include>

  <node launch-prefix="nice" pkg="rviz" type="rviz" name="rvizGA" args="-d $(find vehicle_simulator)/rviz/vehicle_simulator.rviz" respawn="true"/>

</launch>

二、进入vehicle_simulator.lauch

继续逐段注释运行,发现camera link摄像头传感器和lidar link这段注释后,Gazebo不便秘了。

  <param name="camera_description" command="$(find xacro)/xacro --inorder '$(find vehicle_simulator)/urdf/camera.urdf.xacro'" />
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_camera" args="-urdf -param /camera_description -model camera"/>

  <param name="lidar_description" command="$(find xacro)/xacro --inorder '$(find vehicle_simulator)/urdf/lidar.urdf.xacro'" />
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_lidar" args="-urdf -param /lidar_description -model lidar"/>

  <param name="robot_description" command="$(find xacro)/xacro --inorder '$(find vehicle_simulator)/urdf/robot.urdf.xacro'" />
  <node pkg="gazebo_ros" type="spawn_model" name="spawn_robot" args="-urdf -param /robot_description -model robot"/>

三、最后发现仅注释掉lidar,留下camera能够正常运行

终端显示:

这说明是lidar的问题。

四、查找VLP-16发现这个是16束激光雷达,与普通的相比就是多了空间的概念,能够把立体轮廓扫描出来。

        然后查找Gazebo VLP-16仿真教程,并尝试安装环境、跑一遍。

https://blog.csdn.net/weixin_44570248/article/details/121974171

        最后发现还有包没有安装完毕:

sudo apt-get install ros-noetic-velodyne-*

再次运行,成功运行:

 

 

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

CMU,[gazebo]process has died.报错解决.VLP-16.velodyne 的相关文章

  • 在管道中获取命令输出,C for Linux

    我需要运行 Linux CLI 命令并从 C 获取其标准输出 我可以使用 pipeline 创建一个管道 然后 fork exec 在调用 exec 之前将子级的标准输出描述符重定向到管道 并从父级中的管道读取 另外我还得伺候孩子 是否有一
  • 读取写入管道的信息后无法退出 while 循环

    TLDR 您必须关闭所有子项中所有管道的写入端 仅当没有进程的写入端仍然打开时 读取才会检测到 EOF 感谢 Bodo 作为操作系统课程作业的一部分 我试图从格式为以下的文件中读取行x operand y并将这些行分配给不同的子进程 以便每
  • java中获取某些进程的cpu使用率的正确命令行是什么

    给定进程 ID 在 Java 中从进程获取当前 cpu 使用情况的正确命令是什么 命令 typeperf Memory Available bytes processor total process time 不适用于特定进程 并且任何第
  • 叉子和线程有什么区别?

    谁能解释一下叉子和线程之间的区别 分叉给你一个全新的进程 它是当前进程的副本 具有相同的代码段 当内存映像发生变化时 通常这是由于两个进程的不同行为 您会分离内存映像 写入时复制 但可执行代码保持不变 任务不会共享内存 除非它们使用某些内存
  • AppleScript:从应用程序隐藏/获取进程名称

    我想隐藏最前面的应用程序 我知道您可以使用以下语法隐藏进程 tell application System Events set visible of process to false end tell 我知道如何获取最前面的应用程序 pa
  • 使用php触发另一个php脚本,然后忽略

    我正在尝试弄清楚该怎么做是这样的 我有一个 php 文件 让我们调用trigger php运行一些 php 代码来启动我们将调用的另一个 php 文件backgroundProcess php开始处理 虽然trigger php需要忽略发生
  • 获取完整的正在运行的进程列表(Visual C++)

    我目前正在使用 EnumProcesses 函数来获取正在运行的进程的列表 然而 由于我的应用程序在用户空间中运行 因此它无法获取不在用户下运行的进程 包括系统进程 的句柄 是否有其他方法可以让我访问这些内容 我所需要的只是进程名称 只是为
  • 如何在容器化世界中独特地解决“流程”?

    这是一个普遍问题 但出于争论的目的 您可以假设我们有一组通过 AMQP 和 HTTP 组合进行通信的进程 有两种具体情况需要考虑 最简单的一个 Q 如果 A 向 B 发送消息 B 如何识别 A 发送回复的位置 A A 必须以某种方式告诉 B
  • Delphi - 获取应用程序打开了哪些文件

    如何使用 Delphi 获取应用程序打开的文件的列表 例如 winword exe 打开哪些文件 使用原生API函数NtQuery系统信息 http msdn microsoft com en us library ms724509 28V
  • 文件被哪个进程锁定?

    Net 中有没有办法准确找出哪个进程锁定了文件 EDIT 我这样做是因为我想让我的用户知道他们无法修改 打开该文件 因为目前他们正在使用的另一个程序 例如 Excel 已打开该文件 希望这会有所帮助 对此的简短回答是否定的 然而 长的答案是
  • 强制终止子进程的Java工具/方法

    我正在寻找一个 Java 工具 包 库 可以让我强制杀死 一个子进程 该工具 包 库必须在 Windows 平台上运行 强制 需要对 Linux Unix 的支持 我的问题 我的 Java 代码创建了一个子进程 它根本不会对 杀死子进程的标
  • Kill - 它会立即终止进程吗?

    什么是kill到底是怎么做的 我有一个父进程 它正在一个接一个地创建 100 个 作为示例 子进程 在任何孩子的工作结束时 我都会杀死孩子kill pid of child SIGKILL 我看不到ps输出 但是如果父进程出现问题并且我退出
  • 为什么说内核位于进程地址空间中?

    这可能是一个愚蠢的问题 但它突然出现在我的脑海中 所有有关进程地址空间和虚拟内存布局的文本都提到进程地址空间 为内核保留的空间 例如在 32 位系统上 进程地址空间为 4GB 其中 1GB 为 Linux 中的内核保留 在其他操作系统上可能
  • 查看 Windows 上进程的打开文件处理程序

    我想查看 Windows 上进程的打开文件处理程序 以验证读取了正确的配置文件 ProcMon 和其他工具显示引用的模块 dll 我需要查看所有文件 例如 xml txt 等 的打开文件句柄 流程浏览器 http technet micro
  • Linux C++:从 main() 返回是否会导致多线程应用程序终止?

    这个问题看起来可能是重复的 但我找不到 如果我错过了之前的问题 抱歉 在 Java 中 我有大部分经验 如果你的 main 分叉一个线程并立即返回 进程将继续运行 直到进程中的所有 非守护进程 线程都停止 在 C 中 情况似乎并非如此 一旦
  • 关于僵尸进程和线程的问题

    自从我阅读一些有关进程和线程的新主题以来 我脑海中浮现出这些问题 如果有人能帮助我 我会很高兴 1 如果一个线程被标记为不可取消 然后该进程在临界区内被终止 会发生什么 2 我们的程序是否有操作系统已知的主线程 我的意思是操作系统是否给予程
  • Java中子进程的重定向I/O(为什么ProcessBuilder.inheritIO()不起作用?)

    我正在按以下方式启动一个流程 try final Process mvnProcess new ProcessBuilder cmd c mvn version directory new File System getProperty u
  • 线程/进程/任务之间有什么区别?

    线程 进程 任务之间有什么区别 Process 进程是正在执行的计算机程序的实例 它包含程序代码及其当前活动 根据操作系统 OS 进程可能由同时执行指令的多个执行线程组成 基于进程的多任务处理使您能够在使用文本编辑器的同时运行 Java 编
  • 进程终止时释放资源

    当进程被任务管理器等进程终止时 如何释放资源 有没有办法在进程关闭之前调用函数 如果您的进程被终止 您实际上无能为力 根据定义 杀死一个进程就是杀死它 该进程没有机会运行任何代码 这很大程度上是 设计使然 想象一下 您可以注册一个例程 当您
  • 内核如何区分线程和进程

    Linux 中的线程被称为轻量级进程 无论是进程还是线程 它们的实现都是通过task struct数据结构 1 gt 那么 从这个意义上说 内核如何区分线程和进程 2 gt 当发生上下文切换时 线程如何在上下文切换中获得更少的开销 因为在此

随机推荐