幻宇机器人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<g2o::BlockSolverTraits<-1, -1>>::BlockSolver(teb_local_planner::TEBLinearSolver*&)'

error:no matching function for call to "g2o::BlockSolver<g2o::BlockSolverTraits<-1, -1>>::BlockSolver(teb_local_planner::TEBLinearSolver*&)'

 

修改:option_planner.cpp文件(文件路径:ROS_PRO/ros_huanyu_car/src/teb_local_planner/src)

源文件:

  boost::shared_ptr<g2o::SparseOptimizer> optimizer = boost::make_shared<g2o::SparseOptimizer>();
  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<g2o::SparseOptimizer> optimizer = boost::make_shared<g2o::SparseOptimizer>();
  std::unique_ptr<TEBLinearSolver> linearSolver(new TEBLinearSolver()); // see typedef in optimization.h
  linearSolver->setBlockOrdering(true);
  std::unique_ptr<TEBBlockSolver> 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. 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值