幻宇机器人ros程序编译报错

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>::BlockSolver(teb_local_planner::TEBLinearSolver*&)'

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. 

你可能感兴趣的:(自动驾驶,人工智能)