鱼香ROS社区
    • 版块
    • 最新
    • 未解决
    • 已解决
    • 群组
    • 注册
    • 登录
    紧急通知:禁止一切关于政治&VPN翻墙等话题,发现相关帖子会立马删除封号
    提问前必看的发帖注意事项: 社区问答规则(小鱼个人)更新 | 高质量帖子发布指南

    驱动雷达报错

    已定时 已固定 已锁定 已移动 未解决
    综合问题
    雷达驱动 stdbadalloc
    3
    13
    712
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • 小伊小
      机器人小伊
      最后由 编辑

      std::bad_alloc异常在C++程序中通常表示内存分配失败。这可能是因为系统内存不足,或者程序试图分配比可用内存更大的内存块。在你给出的场景中,这个问题发生在运行一个Docker容器内的ROS激光雷达驱动程序时。

      以下是一些建议的解决步骤:

      1. 检查系统资源:

        • 确保你的系统有足够的可用内存和交换空间。
        • 使用free -h或top命令来检查内存使用情况。
        • 如果可能的话,关闭一些不必要的程序或服务以释放内存。
      2. 调整Docker容器内存限制:

        • Docker容器默认没有内存限制,但你可以设置限制。如果设置了限制并且它太低,可能会导致std::bad_alloc异常。你可以使用--memory标志来增加内存限制。
      3. 检查Docker容器内进程:

        • 使用docker exec -it <container_id> bash进入容器内部。
        • 使用top或htop命令检查容器内的内存使用情况。
        • 如果发现有进程占用了大量内存,考虑优化它或杀死它。
      4. 检查ROS节点内存使用:

        • 如果可能的话,使用ROS的内存分析工具(如rostopic bw、rosnode info)来检查哪个节点可能在使用大量内存。
      5. 更新或修复程序:

        • 如果这个问题是由程序中的一个bug引起的,尝试更新到最新版本的ROS驱动程序。
        • 检查是否有已知的bug修复或内存管理优化。
      6. 检查Docker卷和设备挂载:

        • 确保/dev、/dev/shm和/tmp/.X11-unix等卷和设备被正确挂载,并且没有权限问题。
      7. 查看日志和错误消息:

        • 检查ROS日志和Docker容器日志,看是否有更详细的错误信息。
        • 这可能会给你关于问题来源的更多线索。
      8. 搜索相关错误:

        • 在线搜索std::bad_alloc和ROS激光雷达驱动程序的组合,看看是否有其他人遇到过类似的问题并找到了解决方案。
      9. 联系支持:

        • 如果以上步骤都不能解决问题,考虑联系ROS社区或激光雷达驱动程序的开发者支持。

      最后,注意你提供的命令中使用了--privileged标志,这会给容器几乎所有的宿主机权限。虽然这有时是必要的,但它也增加了安全风险。确保你了解这个标志的含义,并在可能的情况下避免使用它。


      以上为生成回答,仅供参考~

      我是小伊,已接入ChatGpt,所有回复,仅供参考~

      1 条回复 最后回复 回复 引用 0
      • 小鱼小
        小鱼 技术大佬 @763141425
        最后由 编辑

        @763141425 虚拟机还是实体机,电脑内存硬盘配置是什么样子的,这个看起来不太相关网络问题,不过最好也提供一下网络结构

        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

        7 2 条回复 最后回复 回复 引用 0
        • 7
          Jason @小鱼
          最后由 编辑

          @小鱼 实体机,16G内存,256G硬盘,电脑通过网线连接路由器,可以PING通雷达。

          输入~$ ros2 topic list
          反馈:/parameter_events
          /rosout
          /scan
          这一步都是正常的

          再输入ros2 topic hz /scan
          雷达驱动的终端就报错了

          小鱼小 1 条回复 最后回复 回复 引用 0
          • 7
            Jason @小鱼
            最后由 编辑

            @小鱼 换了两台电脑都这样

            1 条回复 最后回复 回复 引用 0
            • 小鱼小
              小鱼 技术大佬 @763141425
              最后由 编辑

              @763141425 报什么错呢

              新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

              7 1 条回复 最后回复 回复 引用 0
              • 7
                Jason @小鱼
                最后由 编辑

                @小鱼 terminate called after throwing an instance of 'std::bad_alloc'
                what(): std::bad_alloc

                7 1 条回复 最后回复 回复 引用 0
                • 7
                  Jason @763141425
                  最后由 编辑

                  @小鱼

                  完整的代码:

                  1. 驱动雷达
                  2. 建图测试
                  3. 退出
                    #? 1
                    UART2SOCKET:8888->/tmp/fishbot_laser
                    Prepare to Accept connect!
                    3 <socket.socket fd=6, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('172.17.0.3', 8888), raddr=('192.168.0.105', 55719)> 4
                    PTY: Opened /dev/pts/6 for 0.0.0.0:8888
                    [YDLIDAR INFO] Current ROS Driver Version: 1.4.5
                    [YDLIDAR]:SDK Version: 1.4.5
                    [YDLIDAR]:Lidar running correctly ! The health status: good
                    [YDLIDAR] Connection established in [/tmp/fishbot_laser][115200]:
                    Firmware version: 1.5
                    Hardware version: 1
                    Model: S4
                    Serial: 2021031700000035
                    [YDLIDAR]:Fixed Size: 330
                    [YDLIDAR]:Sample Rate: 3K
                    [YDLIDAR INFO] Current Sampling Rate : 3K
                    [YDLIDAR INFO] Now YDLIDAR is scanning ......
                    terminate called after throwing an instance of 'std::bad_alloc'
                    what(): std::bad_alloc
                    ^CTraceback (most recent call last):
                    File "/workspace/install/fishbot_laser_driver/lib/fishbot_laser_driver/laser_x2", line 33, in <module>
                    sys.exit(load_entry_point('fishbot-laser-driver==0.0.0', 'console_scripts', 'laser_x2')())
                    File "/workspace/install/fishbot_laser_driver/lib/python3.10/site-packages/fishbot_laser_driver/fishbot_laser_x2.py", line 83, in main
                    SocketServer()
                    File "/workspace/install/fishbot_laser_driver/lib/python3.10/site-packages/fishbot_laser_driver/fishbot_laser_x2.py", line 35, in init
                    self.main()
                    File "/workspace/install/fishbot_laser_driver/lib/python3.10/site-packages/fishbot_laser_driver/fishbot_laser_x2.py", line 68, in main
                    os.write(write_fd, data)
                    KeyboardInterrupt
                    [ros2run]: Interrupt
                  小鱼小 1 条回复 最后回复 回复 引用 0
                  • 小鱼小
                    小鱼 技术大佬 @763141425
                    最后由 编辑

                    @763141425 什么系统诶,

                    不行试试这个:

                    https://fishros.org.cn/forum/topic/1524/拓展3-fishbot-树莓派配置建图导航

                    新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                    7 1 条回复 最后回复 回复 引用 0
                    • 7
                      Jason @小鱼
                      最后由 编辑

                      @小鱼

                      系统是Ubuntu 24.04,ros2是jazzy。

                      小鱼小 1 条回复 最后回复 回复 引用 0
                      • 小鱼小
                        小鱼 技术大佬 @763141425
                        最后由 编辑

                        @763141425 请使用humble

                        新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                        7 1 条回复 最后回复 回复 引用 0
                        • 7
                          Jason @小鱼
                          最后由 编辑

                          @小鱼

                          一键安装好像只支持jazzy和rolling版本

                          ubuntu要换成22.04版本么

                          小鱼小 1 条回复 最后回复 回复 引用 0
                          • 小鱼小
                            小鱼 技术大佬 @763141425
                            最后由 编辑

                            @763141425 是的,换22

                            新书配套视频:https://www.bilibili.com/video/BV1GW42197Ck/

                            1 条回复 最后回复 回复 引用 0
                            • 第一个帖子
                              最后一个帖子
                            皖ICP备16016415号-7
                            Powered by NodeBB | 鱼香ROS