rplidar ros sdk 无原因挂死情况分析解决

2023-05-16

今天在rplidar sdk上遇到个问题,怀疑以前也遇到过,这里记录一下

问题环境

rplidar A3 + ubuntu16.04

问题现象

运行rplidar sdk ,无原因程序死掉,无错误日志

问题定位及解决

  1. 想查看core的堆栈信息,使用命令ulimit -c unlimited ,配置了输出路径,重启,结果还是看不到.
    此路不通,估计需要进一步分析原因

  2. 用代码注释的方法,定位到问题出现在下面代码中

for( ; i < count; i++ ) {
    if (nodes[i].dist_mm_q2 != 0) {
        float angle = getAngle(nodes[i]);
        int angle_value = (int)(angle * angle_compensate_multiple);
        if ((angle_value - angle_compensate_offset) < 0) angle_compensate_offset = angle_value;
        for (j = 0; j < angle_compensate_multiple; j++) {
            angle_compensate_nodes[angle_value-angle_compensate_offset+j] = nodes[i];
        }
    }
}
angle_compensate_nodes 数组大小是1440, A3的,A2只有360,而数组的索引`angle_value-angle_compensate_offset+j`有时的值超过1440,达到1442,或者1443
分析索引:
j 从 0-> 4
angle_compensate_offset 一直是0
angle_value = (int)(angle * angle_compensate_multiple);angle_compensate_multiple一直是4
再跟踪angle,进入一下代码:
static float getAngle(const rplidar_response_measurement_node_hq_t& node)
{
    return node.angle_z_q14 * 90.f / 16384.f;
}
来自真正的nodes[i],node[]数据是从驱动中取出来的.
这样我们没有办法限制驱动上传的数据,只能在上层进行限制
最终的办法是:在索引上面进行限制,当要越界时,丢掉该数据.
 for (j = 0; j < angle_compensate_multiple; j++) {
     if (angle_value-angle_compensate_offset+j > 1439) continue;
        angle_compensate_nodes[angle_value-angle_compensate_offset+j] = nodes[i];
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rplidar ros sdk 无原因挂死情况分析解决 的相关文章

  • android-studio的sdk管理器中没有LLDB

    I am using android studio 3 6 3 in my Manjaro Linux I am trying to run c in android studio for that i need LLDB I reinst
  • 如何在 iPhone 应用程序中保持 Web 服务器的登录状态?

    简而言之 我想要一个 iPhone 应用程序 使用输入的用户名和密码值登录到 Web 服务器 然后维护此登录 以便用户可以将数据 POST 到服务器 这只是使用cookie的问题吗 如果是这样 如何执行检查以验证用户是否已登录 Thanks
  • 如何以粉丝专页而非用户身份发布到 Facebook 粉丝专页

    我怎样才能以粉丝页面而不是用户的身份在粉丝专页墙上发帖 使用 javascript sdk 现在在 Init 上我正在接收 menage pages 并获取合适的 fanpage id 我如何更改下面的调用 var target param
  • Java SDK for REST API 服务的错​​误处理

    我们正在构建一个 Java SDK 以简化对提供 REST API 的服务之一的访问 该SDK供第三方开发者使用 我正在努力寻找在 SDK 中实现错误处理的最佳模式 以更适合 Java 语言 假设我们有其余端点 GET photos pho
  • Kinect 1.8 颜色帧和深度帧不协调

    我的程序存在深度和彩色图像之间协调不佳的问题 玩家面具与人物不在同一位置 见下图 void AllFreamReady object sender AllFramesReadyEventArgs e using ColorImageFram
  • Android 模拟器出现蓝屏死机

    无论我从 Android SDK 和 AVD Manager 创建哪种类型的 Android 虚拟设备 每当我启动它时 我的整个笔记本电脑都会在出现蓝屏死机后关闭 我在事件系统日志中看到此错误 驱动程序 VPCAppSv sys 已被阻止加
  • 如何使用Android SDK插件?

    任何人都可以分享一些开发新 SDK 附加组件 例如 Google 地图 API 的详细信息吗 我没有找到有关如何构建新 SDK 附加组件的任何详细信息 使用 SDK 插件连接到 Twitter Facebook YouTube 应用程序是个
  • 为什么Android Studio 1.0 rc会开始下载Android SDK而不检测是否存在?

    我已经在我的 Archlinux 盒子里安装了 Android Studio 1 0 rc 和 Android SDK 但是当我尝试创建一个新的Android应用程序时 AS会尝试直接从dl ssl google com下载另一组SDK 我
  • 我应该使用哪个版本的 iOS SDK?

    请告诉我应该使用哪个版本的 iOS SDK 以便我的应用程序可以在 iPhone 3 0 或更高版本上运行 您应该注意两个不同的概念 基础 SDK 这是您用来构建应用程序的内容 最新版本是 4 2 因此您应该使用它来构建您的应用程序 iOS
  • 在 MKStoreKit 的应用程序购买中失败:“产品的 iTunes 连接配置出现问题:xxx”

    我正在尝试使用 MKStoreKit 在我的应用程序中实现应用程序内购买 我已按照所有步骤操作 但出现错误 产品的 iTunes 连接配置问题 我重新创建了配置文件 检查了产品 ID 是否与 iTunes 连接中的相同 发送并拒绝了二进制文
  • 使用 CMake 链接 .s 文件

    我有一个我想使用的 c 函数 但它是用Intel编译器而不是gnu C编译器 我在用着cmake构建程序 我实际上正在使用ROS因此rosmake但基础是cmake所以我认为这更多是一个 cmake 问题而不是ROS问题 假设使用构建的文件
  • AVCaptureVideoPreviewLayer 和从相机位置预览

    我正在开发一个允许用户拍照的应用程序 我已经开始使用AVCam https developer apple com library ios samplecode AVCam Introduction Intro html苹果提供了 但我实际
  • 线程 1:信号 SIGABRT

    当我为 Xcode 项目运行模拟时出现上述错误 这出现在 O abort with payload 文件中 dyld abort with payload 0x10aae66f8 lt 0 gt movl 0x2000209 eax imm
  • 用于色彩空间转换的 IMTransform 视频处理器的设置

    我正在尝试使用视频处理器 MFT 进行一些基本的色彩空间转换 我的相机本身支持 NV12 我需要 RGB24 来编写一些着色器 以提供类似卡通的效果 下面是用于执行 MF 的 Media 类的定义 class Media public IM
  • ROS中spin和rate.sleep的区别

    我是 ROS 新手 正在尝试了解这个强大的工具 我很困惑spin and rate sleep功能 谁能帮助我了解这两个功能之间的区别以及何时使用每个功能 ros spin and ros spinOnce 负责处理通信事件 例如到达的消息
  • android studio 错误:缺少功能:WATCH

    我尝试在我的智能手表上使用 android studio 运行一个简单的应用程序 并收到以下消息 我的智能手表运行 Android 4 4 2 其 API 级别为 19 我尝试过但没有帮助的事情 将最低 SDK 版本更改为 API 19 r
  • 如何使用一个凉亭同时创建两个地图?

    如下图所示 现在我的gazebo正在运行2个slam gmapping包 首先是 turtlebot slam gmapping 发布到 map 主题 第二个是 slam gmapping 发布到与第一个相同的 map 主题 我想创建一个新
  • waitUntilObjectExists() Amazon S3 PHP SDK 方法,它到底是如何工作的?

    该函数是否会暂停 php 脚本 直到在 s3 服务器上找到该对象 我将它放在 foreach 循环中 一张一张地上传图像 找到对象后 我调用一个方法在本地删除图像 然后删除本地文件夹 如果为空 这是正确的处理方式吗 谢谢 foreach f
  • 使用 AWS SSO 时 AWS Java SDK 未找到配置文件

    当我使用 AWS SSO 登录时 我无法访问 aws 我使用以下方式从计算机登录 aws sso login profile staging 配置文件的配置如下 profile staging sso start url https som
  • Android 操作系统上的 NFC 堆栈

    有人可以帮助我了解 NFC Android 堆栈的当前状态吗 随着OS 2 3发布了小型 NFC 支持 仅限于 NXP 标签读取 后来 Google 增强了 API 所以在OS 2 3 3支持更广泛的标签 并且还可以使用 p2p 我的问题是

随机推荐

  • 使用pjsip传输已经编码的视频

    pjsip功能很强 xff0c 做sip rtp语音通话库首选 在2 0之后 xff0c 也支持视频 不过 xff0c 它的视频功能缺省是从视频设备采集 xff0c 然后进行编译 xff0c 再发送出去的 假设 xff0c 我们已经有了视频
  • CentOS7中英文输入法及切换

    安装完CentOS7后如果没有拼音输入法 xff0c 先在输入源里找下有没有 打开设置 gt gt 区域和语言 gt gt 输入源 搜索pinyin就可以找到拼音输入法 xff0c 然后点击添加 回到设置 xff0c 选择键盘 gt gt
  • rtpsession详解

    以下过程仅分析推送视频模式 xff1a 服务器监听rtsp端口号 xff0c 当有客户端连接后 xff0c 会创建RTSPSession xff0c 在客户端请求过程中的announce时 xff0c 会创建RTPSession xff0c
  • gdb调试coredump(使用篇)

    什么是coredump Coredump叫做核心转储 xff0c 它是进程运行时在突然崩溃的那一刻的一个内存快照 操作系统在程序发生异常而异常在进程内部又没有被捕获的情况下 xff0c 会把进程此刻内存 寄存器状态 运行堆栈等信息转储保存在
  • ffmpeg常用基本命令(转)

    ffmpeg f s16le ar 16000 ac 2 i lucy 16k pcm output wav ffmpeg f s16le ar 48000 ac 2 i lucy 48k pcm output 48k wav ffmpeg
  • busybox详解

    转载地址 点击打开链接 1 根文件系统简介 所谓制作根文件系统 xff0c 就是创建各种目录 xff0c 并且在目录里创建相应的文件 例如 xff1a 在 bin目录下放置可执行程序 xff0c 在 lib下放置各种库等等 通常配合chro
  • Linux下查看文件和文件夹大小

    1 Linux下查看文件和文件夹大小2 删除系统日志等 场景 xff1a 在sts中执行自动部署时候maven提示 No space left on device错误 xff0c 后来经检查发现是磁盘空间满了 xff0c 用下面的方法分析发
  • 解决安装wine时的依赖问题

    因为在Linux上没有比source insight更强大的代码工具了 xff0c 故在ubuntu上必须继续使用source insight 前段时间安装过wine xff0c 什么问题也没有 xff0c 安装命令 sudo apt ge
  • ros kinect设备 gmapping 出现"No matching device found" 错误

    电脑连接上kinect v1 xff0c 运行命令 xff1a roslaunch turtlebot navigation gmapping demo launch 出现下面的错误 INFO 1511252619 048751272 No
  • 找到文件夹下所有的软链接

    这个比较简单 xff0c 使用命令 ls alR grep l
  • (无人机方向)ros小白学习之路(五)mavros消息的订阅和发布与offboard例程仿真与解析

    文章目录 前言应用mavros控制无人机消息流以mavros中setpoint position local为例子1 确定话题的功能和消息类型如果快速找到对应的mavlink消息 2 确定话题并最终找到转化为uorb消息 官方example
  • 调试rviz,并解决问题“For frame [laser]: Fixed Frame [map] does not exist”

    以rplidar为例 xff0c 运行命令 roslaunch rplidar ros rplidar launch 然后运行rviz xff0c 查看输出的雷达扫描数据 rosrun rviz rviz结果如下 xff1a 可以看到什么都
  • 解决ssh中的”Connection closed by 10.0.0.21“问题

    远程的电脑是个新安装的ubuntu xff0c 在本地执行ssh时 xff0c 出现错误 Connection closed by 10 0 0 21 解决步骤 xff1a 首先保证远程PC的ssh 服务启动 xff0c 使用命令ps e
  • navigation 调试 -2- 小车的配置问题

    1 确定传感器 xff08 sensors xff09 在小车的位置 影响 xff1a 导航 xff0c 建图 a 前提是使用kobuki机器人模板 xff0c 传感器使用深度 43 rgb摄像头 xff08 例如kinect xff09
  • Building ceres-solver fail with eigen3 "error: no type named ‘Literal’ in ‘struct Eigen::NumTraits"

    以前编译ceres solver没有出现过问题 xff0c 最近在编译时报出一个问题 xff1a 75 Building CXX object internal ceres CMakeFiles jet test dir jet test
  • c++中nan,inf详解

    nan xff1a not a number 非数字 注意事项 xff1a 对负数开方sqrt 1 0 对负数求对数 log 1 0 0 0 0 0 0 0 inf inf inf inf inf这些操作都会得到nan 0 0会产生操作异常
  • 经纬度的多种格式和转换方式

    格式 方式格式单位用途 注意事项度 d dd ddddddd度百度地图和google地图度 分 d ddmm mmmmmmdd单位是度 xff0c mm mmmmmm单位是分GPGGA度 分 秒 d ddmmss ssdd单位是度 xff0
  • 【Apollo】supervisor组件的应用

    Supervisor 一个client server系统 xff0c 用来控制一系列进程在UNIX like操作系统上 supervisord server xff1a 响应client端的命令 xff0c 控制进程启动 xff0c 停止
  • ubuntu 无登录界面,内核出错

    内核错误的原因 pc出现没有正常关机而直接下电 破坏内核文件 就有可能造成内核错误 在升级内核时 强制pc下电 也有可能造成内核错误 问题现象 显示ubuntu背景偏彩色的图片 但不会弹出登录窗口 解决方式 重新上电按下ESC 进入ubun
  • rplidar ros sdk 无原因挂死情况分析解决

    今天在rplidar sdk上遇到个问题 怀疑以前也遇到过 这里记录一下 问题环境 rplidar A3 43 ubuntu16 04 问题现象 运行rplidar sdk 无原因程序死掉 无错误日志 问题定位及解决 想查看core的堆栈信