1.CV_CAP_PROP_FRAME_HEIGHT、CV_CAP_PROP_FRAME_WIDTH、CV_CAP_PROP_FPS、CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G')))
位声明;
注释掉。
// capture.set(CV_CAP_PROP_FRAME_HEIGHT, 240);
// capture.set(CV_CAP_PROP_FRAME_WIDTH, 320);
// capture.set(CV_CAP_PROP_FPS, 30.0);
// if (!capture.set(CV_CAP_PROP_FOURCC, CV_FOURCC('M', 'J', 'P', 'G')))
// {
// ROS_INFO("set format failed \n");
// }
2.tf2_buffer_未声明
ROS- 解决error “tf2_buffer_’ was not declared in this scope”_向阳花开_的博客-CSDN博客问题描述:
使用ros melodic版本 编译程序,遇到报错如下:
error: ‘tf2_buffer_’ was not declared in this scope
inline tf2_ros::Buffer& getBuffer() { return tf2_buffer_; }
^~~~~~~~~~~
解决方法:
经查询,发现是ros noetic/melodic版本对该处进行了修改,与之前版本不同,用 tf2_buffer_ptr_替代了tf2_buffer_ ,所以需要修改程序,路径:ROS_PRO/ros_huanyu_car/src/huanyu_navigation/amcl/src/
程序amcl_node.cpp
修改为:
//inline tf2_ros::Buffer &getBuffer() {return tf2_buffer_;}
inline tf2_ros::Buffer &getBuffer() {return tf2_buffer_ptr_;}
//tf_->getBuffer().setTransform(tf_msg->transforms[ii], "rosbag_authority");
tf_->getBuffer()->setTransform(tf_msg->transforms[ii], "rosbag_authority");
}
3.编译器c++11报错:变成14:
路径:ROS_PRO/ros_huanyu_car/src/teb_local_planner/CMakeList.txt
error: #error PCL requires C++14 or above 7 | #error PCL requires C++14 or above
om /home/mjm/Desktop/ROS_PRO/ros_huanyu_car/src/teb_local_planner/src/optimal_planner.cpp:39:
/usr/include/pcl-1.10/pcl/pcl_config.h:7:4: error: #error PCL requires C++14 or above
7 | #error PCL requires C++14 or above
修改该node下的CMakeList
原先:
CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
修改后:
CHECK_CXX_COMPILER_FLAG("-std=c++14" COMPILER_SUPPORTS_CXX14)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X)
if(COMPILER_SUPPORTS_CXX11)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14")
4.报错error:no matching function for call to "g2o::BlockSolver
error:no matching function for call to "g2o::BlockSolver>::BlockSolver(teb_local_planner::TEBLinearSolver*&)'
修改:option_planner.cpp文件(文件路径:ROS_PRO/ros_huanyu_car/src/teb_local_planner/src)
源文件:
boost::shared_ptr optimizer = boost::make_shared();
TEBLinearSolver* linearSolver = new TEBLinearSolver(); // see typedef in optimization.h
linearSolver->setBlockOrdering(true);
TEBBlockSolver* blockSolver = new TEBBlockSolver(linearSolver);
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(blockSolver);
修改后:
boost::shared_ptr optimizer = boost::make_shared();
std::unique_ptr linearSolver(new TEBLinearSolver()); // see typedef in optimization.h
linearSolver->setBlockOrdering(true);
std::unique_ptr blockSolver(new TEBBlockSolver(std::move(linearSolver)));
g2o::OptimizationAlgorithmLevenberg* solver = new g2o::OptimizationAlgorithmLevenberg(std::move(blockSolver));
最终编译完成:
[100%] Built target move_base_node
* Terminal will be reused by tasks, press any key to close it.