c++ 相关问题

C ++是一种通用编程语言。它最初被设计为C的扩展,并保持类似的语法,但现在是一种完全不同的语言。使用此标记来查询有关使用C ++编译器编译的代码的问题。对特定标准版本[C ++ 11],[C ++ 17]等相关问题使用版本特定标记。

函数名后面可以加“const const”吗?

我正在调查一段代码(不是我写的),如下所示: 自定义类型 foo::bar(void) const const { // 巴兹 } 据我了解,const const实际上应该只是const....

回答 2 投票 0

VS code 找不到 Hpp 函数定义

我正在使用 VS 代码在 cpp 中编写一个小项目,但我遇到了一个错误,其中找不到我在 hpp 文件中声明的函数的定义。 我创建了一个简单的...

回答 1 投票 0

单一生产者单一消费者

我接受了一次采访,他让我使用环形缓冲区(Circular buffer)为单个生产者和单个消费者编写代码。 我为此做了以下代码,但他对此代码不满意......

回答 1 投票 0

如果 C++11 中存在 `std::initializer_list` ctor,如何使用默认成员初始值设定项?

考虑以下代码: #包括 结构体A { A(整数,整数){ std::cout << "A::A(int, int)\n"; } A(std::initializer_list) { ...

回答 1 投票 0

在两台计算机上使用浮点数的相同代码会给出两种不同的结果

我有一些 C++ 中的图像处理代码,它可以计算梯度并使用霍夫变换算法在其中找到直线。该程序使用浮点进行大部分计算...

回答 7 投票 0

找到向量中的最小值

下面我附上了一个项目的代码,该项目旨在查找用户输入向量中的最小值,如果向量为空,则返回 -1,如果向量只有一个索引,则返回 0。我已经跑了...

回答 2 投票 0

在 QT 小部件上可视化实时点云

我正在尝试在我的 qt 小部件上可视化点云。以下是我的代码片段。此代码可以显示 .pcd 文件中的点云。我希望在 q 上可视化实时点云...

回答 1 投票 0

QtCreator 小部件内的 PCL 查看器,带有 VTK 和 QVTKOpenGLStereoWidget

我需要使用 Qt 小部件创建一个图形窗口,该窗口允许在其中表示我之前使用 PLC 库加载的点云。 这是我到目前为止不起作用的(我

回答 1 投票 0

ROS PCL 和 Drake 的链接错误:不同的 VTK 版本

在包含各种 ROS 包和 Drake 作为库时,我一直面临链接问题,并将问题范围缩小到 VTK。 ROS(noetic) PCL 似乎依赖于 VTK 7.1.0,而 Drake

回答 2 投票 0

初始化 Eigen::Vector4f 时大小无效

当我尝试在 ROS / PCL 中运行此行时 本征::Vector4f 归一化(3,1); 我收到以下错误: /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:281: void Eigen::PlainObjectBase 当我尝试在 ROS / PCL 中运行这行时 Eigen::Vector4f normalized(3,1); 我收到以下错误: /usr/include/eigen3/Eigen/src/Core/PlainObjectBase.h:281: void Eigen::PlainObjectBase<Derived>::resize(Eigen::Index, Eigen::Index) [with Derived = Eigen::Matrix<float, 4, 1>; Eigen::Index = long int]: Assertion `(!(RowsAtCompileTime!=Dynamic) || (rows==RowsAtCompileTime)) && (!(ColsAtCompileTime!=Dynamic) || (cols==ColsAtCompileTime)) && (!(RowsAtCompileTime==Dynamic && MaxRowsAtCompileTime!=Dynamic) || (rows<=MaxRowsAtCompileTime)) && (!(ColsAtCompileTime==Dynamic && MaxColsAtCompileTime!=Dynamic) || (cols<=MaxColsAtCompileTime)) && rows>=0 && cols>=0 && "Invalid sizes when resizing a matrix or array."' failed. Aborted (core dumped) 我正在使用 Ubuntu 20.04,Eigen 3.3.7。 你能告诉我如何解决这个问题吗?预先感谢。 @Homer512 解释的解决方案是: normal.normalized();

回答 1 投票 0

对 `pcl::PCLBase<pcl::PCLPointCloud2>::setInputCloud(std::shared_ptr<pcl::PCLPointCloud2 const> const&)

我正在尝试使用 pcl 库的 VoxelGrid 来过滤从 ros 消息中提取的点云。那么下面是与这个问题相关的部分代码: pcl::PCLBase 我正在尝试使用 pcl 库的 VoxelGrid 来过滤从 ros 消息中提取的点云。所以以下是与这个问题相关的部分代码: pcl::PCLBase<pcl::PCLPointCloud2>::PCLPointCloud2ConstPtr cloudPtr(cloud_pc2); pcl::VoxelGrid<pcl::PCLPointCloud2> sor; sor.setInputCloud(cloudPtr); sor.setLeafSize(0.1f, 0.1f, 0.1f); sor.filter(cloud_filtered); 我看到了他们直接做的在线教程: pcl::PCLPointCloud2::Ptr cloud_filtered (new pcl::PCLPointCloud2 ()); pcl::VoxelGrid<pcl::PCLPointCloud2> sor; sor.setInputCloud (cloud); sor.setLeafSize (0.01f, 0.01f, 0.01f); sor.filter (*cloud_filtered); 但是在这两种情况下,我都得到了 setInputCloud 函数的未定义引用。有人知道为什么会发生这种情况吗?我还将附上我的 CmakeList 文件 cmake_minimum_required(VERSION 3.5) project(loam_os2) # Default to C99 if(NOT CMAKE_C_STANDARD) set(CMAKE_C_STANDARD 99) endif() # Default to C++14 if(NOT CMAKE_CXX_STANDARD) #set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_STANDARD 17) endif() if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_CXX_COMPILER_ID MATCHES "Clang") add_compile_options(-Wall -Wextra -Wpedantic) endif() # find dependencies find_package(ament_cmake REQUIRED) find_package(rclcpp REQUIRED) find_package(std_msgs REQUIRED) find_package(sensor_msgs REQUIRED) find_package(PCL 1.10 REQUIRED) find_package(pcl_conversions REQUIRED) find_package(tf2_ros REQUIRED) find_package(tf2 REQUIRED) include_directories(${PCL_INCLUDE_DIRS} include) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) add_executable(pcl_example_node src/pcl_example.cpp src/pcl_example_node.cpp) target_link_libraries( pcl_example_node ${PCL_LIBRARIES} ) ament_target_dependencies( pcl_example_node rclcpp std_msgs sensor_msgs pcl_conversions tf2 tf2_ros ) install(TARGETS pcl_example_node DESTINATION lib/${PROJECT_NAME}) # Install launch files. install(DIRECTORY launch DESTINATION share/${PROJECT_NAME}/ ) if(BUILD_TESTING) find_package(ament_lint_auto REQUIRED) # the following line skips the linter which checks for copyrights # uncomment the line when a copyright and license is not present in all source files #set(ament_cmake_copyright_FOUND TRUE) # the following line skips cpplint (only works in a git repo) # uncomment the line when this package is not in a git repo #set(ament_cmake_cpplint_FOUND TRUE) ament_lint_auto_find_test_dependencies() endif() ament_package() 提前感谢您的任何建议 这里是完整的错误: usr/bin/ld: CMakeFiles/pcl_example_node.dir/src/pcl_example.cpp.o: in function Pcl_example::lidar_callback(std::shared_ptr<sensor_msgs::msg::PointCloud2_<std::allocator<void> > >)': pcl_example.cpp:(.text+0x122f): undefined reference topcl::PCLBase<pcl::PCLPointCloud2>::setInputCloud(std::shared_ptr<pcl::PCLPointCloud2 const> const&)' collect2: error: ld returned 1 exit status make[2]: * [CMakeFiles/pcl_example_node.dir/build.make:360: pcl_example_node] Error 1 make[1]: * [CMakeFiles/Makefile2:78: CMakeFiles/pcl_example_node.dir/all] Error 2 make: *** [Makefile:141: all] Error 2 Failed <<< loam_os2 [12.2s, exited with code 2] Summary: 0 packages finished [12.5s] 1 package failed: loam_os2 1 package had stderr output: loam_os2 从版本 1.11.0 开始,PCL 使用 std::shared_ptr 而不是 boost::shared_ptr。您似乎使用的是 PCL 1.10,因此 setInputCloud 会期望得到 boost::shared_ptr,但是您正在传递 std::shared_ptr。由于我看不到 cloudPtr 或 cloud 分别来自您的代码片段中的位置,因此除了使用较新的 PCL 版本之外,我无法提出解决方案。

回答 1 投票 0

PCL 查看器中的分段错误

我目前正在 Ubuntu Ubuntu 22.04.3 和 rosbag 点云上使用 ROS 2 humility。 但是,现在启动节点时出现 [ros2run] 分段错误。 我只收到错误,wh...

回答 1 投票 0

如何使用pcl_ros删除pointcloud2数据中的地板表面

首先,感谢您的阅读。 现在我正在尝试删除点云数据中的地板, 这是我编写的用于删除地板点云的代码。 #包括 #包括 #

回答 1 投票 0

pcl::io::loadPCD/PLY 在使用 nvcc/cuda 编译时出现分段错误

#包括 #包括 #包括 #包括 #包括 #包括 #include <iostream> #include <pcl/io/pcd_io.h> #include <pcl/io/ply_io.h> #include <pcl/point_cloud.h> #include <pcl/console/parse.h> #include <pcl/common/transforms.h> #include <pcl/visualization/pcl_visualizer.h> int main(int argc, char* argv[]){ //pcl::PointCloud<pcl::PointXYZ>::Ptr s___(new pcl::PointCloud<pcl::PointXYZ>()); pcl::PointCloud<pcl::PointXYZ> s__; std::vector<int> filenames = pcl::console::parse_file_extension_argument(argc,argv,".pcd"); pcl::io::loadPCDFile(argv[filenames[0]], s__); return 0; } 无论是使用共享指针还是 PointCloud 对象本身,当程序(在运行时)点击“loadPCDfile”行时,我都会收到分段错误错误! 这是我单独使用 gcc 编译时没有出现错误的情况。为什么?附: > 我不想使用包装器 Ubuntu 18.04 个人计算机1.11 CUDA 11 海湾合作委员会7.5 特征值 3.7 cmake 是, cmake_minimum_required(VERSION 3.20.0) project(t LANGUAGES CXX CUDA) find_package(Eigen3 QUIET) find_package(PCL 1.11 REQUIRED) find_package(CUDA) include_directories(${PCL_INCLUDE_DIRS}) link_directories(${PCL_LIBRARY_DIRS}) add_definitions(${PCL_DEFINITIONS}) set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "") set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};--ptxas-options=-v;-std=c++17) include_directories( ${PCL_INCLUDE_DIRS} ${CUDA_INCLUDE_DIRS} ${EIGEN3_INCLUDE_DIRS} ) if(NOT EIGEN3_FOUND) # Fallback to cmake_modules find_package(cmake_modules REQUIRED) find_package(Eigen REQUIRED) set(EIGEN3_INCLUDE_DIRS ${EIGEN_INCLUDE_DIRS}) set(EIGEN3_LIBRARIES ${EIGEN_LIBRARIES}) # Not strictly necessary as Eigen is head only # Possibly map additional variables to the EIGEN3_ prefix. else() set(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) endif() add_executable (t t.cu) target_link_libraries(t ${CUDA_LIBRARIES} ${CUDA_CUBLAS_LIBRARIES} ${CUDA_curand_LIBRARY} ${PCL_LIBRARIES}) 然后,当制作可执行的 t.out 时,我有名为 map.pcd 的 pcd 文件 然后我就跑 ./t.out 地图.pcd 并且发生分段错误 我知道这是一个奇怪的问题,所以不太可能发生。但事实证明 .cu 文件中的 pcl::io::LoadPCD/PLY 就是这种情况。我使用问题部分提供的 cmake 尝试了近 10 次,但问题仍然存在。我在一位同事的帮助下找到了解决方案,我们正在向 pcl github 报告此错误。由于未知原因,您必须执行此操作才能读取 .cu 文件中的点云文件 pcd/ply,速度慢得多,但它可以工作。 pcl::PointCloud<pcl::PointXYZ>::Ptr source(new pcl::PointCloud<pcl::PointXYZ>()); pcl::PCLPointCloud2 cloud_blob; pcl::io::loadPCDfile("path/file.pcd", cloud_blob); pcl::fromPCLPointCloud2(cloud_blob, *source);

回答 1 投票 0

将索引插入到 PCL 库中的 pcl::octree::OctreePointCloudSearch<pcl::PointXYZ>

我正在尝试使用 pcl::octree::OctreePointCloudSearch 八叉树对点云进行分区和执行一些操作。 在该方法中,它提供了一个公共函数,名为

回答 1 投票 0

如何将四元数改为世界坐标中的旋转矩阵

我正在尝试转换点云以进行注册。 我有四元数,但是当我使用点云库进行转换时。它似乎在局部坐标中变换点云而不是

回答 1 投票 0

为什么循环和可视化点云落后于 PCL 可视化工具?

问题来了。我有一个点云指针向量,我想一次可视化一个。我拥有的是一个可视化工具,它查看向量中的第一个点并等待键盘输入...

回答 2 投票 0

文件不存在

我对 ROS 和 Ubuntu 相当陌生。 我只是按照以下说明进行操作:https://pcl.readthedocs.io/en/latest/extract_indices.html 我在catkin中创建了一个名为Extract_Indices的新文件夹

回答 1 投票 0

PCL:根据 2 个线方程过滤点云

给定 y = mx + c 形式的两条线方程,所有不在两条线之间的点都必须被过滤掉。 目前我正在使用直通过滤器,它大约过滤...

回答 1 投票 0

如何为pcl_ros实现PassThrough

我在这里使用代码使用 2D 激光雷达进行 3D 映射。我想尝试实现直通过滤器来删除获取点中的异常值。我尝试用 scan3dMsg 代替云。

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.