日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

ROS初学笔记 - C++11与PCL库冲突问题

發布時間:2024/4/18 c/c++ 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ROS初学笔记 - C++11与PCL库冲突问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者: zhch_pan
原文鏈接:https://www.cnblogs.com/zhchp-blog/p/7249487.html/
出處: 博客園
轉載說明:如有侵權,請聯系我刪除,謝謝!

  • ROS版本為indigo,PCL庫版本 1.7,gcc版本是5.4.0(gcc只有4.7及以上的版本才支持c++11的編譯格式)

  • 如果代碼里有c++11格式的語句,比如:

  • for (auto p:cloud.points) {// 將點云里的點插入到octomap中tree.updateNode( octomap::point3d(p.x, p.y, p.z), true ); }

    則在編譯的時候,應在CMakeLists.txt中加入

    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
  • 經過測試,非ROS工作空間中,使用cmake … / make 方式編譯,編譯格式是否為c++11與pcl并沒有沖突,但是如果在ROS工作空間中,用catkin_make編譯時,如果編譯格式設置為c++11,則有些用到pcl的時候會出現報錯:
  • 段錯誤(核心已轉儲) segmentation fault (core dumped)

    例如我遇到的一個情況:

    在一個ROS-package中,因為要對點云進行濾波操作(Removing outliers using a Conditional or RadiusOutlier removal),新建remove_outliers.cpp,其中包含頭文件

    #include <pcl/filters/radius_outlier_removal.h> #include <pcl/filters/conditional_removal.h>

    同時我的CMakeLists.txt中之前設置了編譯格式為支持c++11(

      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")

    ),

    使用catkin_make編譯通過后,一旦rosrun該節點,直接出現“段錯誤(核心已轉儲)”,去掉這倆頭文件,便可以正常運行節點,但是也無法做濾波了。

    解決方案:

    同一個workspace下,創建一個新的功能包,單獨編譯該濾波node.
    同時 新建pkg 的CMakeLists.txt保留默認格式(不使用C++11)

    總結

    以上是生活随笔為你收集整理的ROS初学笔记 - C++11与PCL库冲突问题的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。