【ros2】ros melodic迁移到ros2 dashing过程中碰到的问题及解决方法

序言

  • 总结踩坑经历,以利他人

1. error: forming pointer to reference type … &

  • 报错原因: ros2回调函数的参数不能是引用形式 &,需要去除&

  • 解决方法:

    • 如果是指针引用,直接去除引用

      void Callback(const your_topic_msgs::ConstPtr &msg)修改为
      void Callback(const your_topic_msgs::ConstPtr msg)
      
    • 如果是普通引用,去掉&并使用指针参数

      void Callback(const your_topic_msgs::SubStruct& msg)修改为
      void Callback(const your_topic_msgs::SubStruct::ConstPtr msg)
      

      ConstPtr为ros2消息头文件中重定义的消息类型的const指针

2. error: no match for ‘operator=’ (operand types are ‘publisher xxx’ and ‘publisher::shared_ptr’

  • 报错的代码:

    rclcpp::Publisher<your_msg> pub_;
    pub_ = handler->create_publisher<your_msg>(/your topic”, 1);
    
  • 报错原因: pub_声明的类型不对,应该声明为shared_ptr,即
    rclcpp::Publisher<your_msg>::SharedPtr pub_;

3. boost::system::system_category() 或者 boost::system::generic_category()

  • 报错的代码:

    在这里插入图片描述

  • 报错原因: 找不到boost方法的实现

  • 解决方法: 添加boost功能包,并添加头文件+库文件的搜索路径

    find_package(Boost 1.55.0 REQUIRED COMPONENTS system filesystem)
    include_directories(untitled ${Boost_INCLUDE_DIRS})
    link_directories(untitled ${Boost_LIBRARY_DIRS})
    target_link_libraries(untitled ${Boost_LIBRARIES})
    

4. undefined reference to ‘rosidl_message_type_support_t const* rosidl_typesupport_cpp::get_message_type_support_handle<自定义消息名字>’

  • 报错的代码:

    在这里插入图片描述

  • 报错原因: 链接生成可执行文件阶段,找不到函数实现。通常是.a或者.so(函数定义)的链接有问题

  • 解决方法:

    • 将编译好的install目录(包含include+share+lib)拷贝到项目里。install包含头文件、库文件以及.cmake配置文件等
    • find_package: 中添加功能包,名字就是cmakelists.txt中的project_name,如perception_msgs
    • include_directories:中添加头文件路径,your_path_to_msg/include/
    • target_link_libraries: 中添加库文件路径,因为find_package(your_pkg)后都会产生环境变量 your_pkg_INCLUDE_DIRS和your_pkg_LIBRARIES,添加消息库文件如下 在这里插入图片描述

5. 构造函数报错error: no matching function for call to ‘rclcpp_lifecycle::LifecycleNode::LifecycleNode()’

  • 报错的代码: 继承自rclcpp_lifecycle::LifecycleNode的子类构造函数报错

    在这里插入图片描述
    在这里插入图片描述

  • 报错原因: 基类中没有不带参数的构造函数,这个时候需要调用基类构造函数,然后又没有显示调用基类中带参的构造函数,就会出现该报错

  • 解决方法: 显示调用基类的构造函数,从而初始化从基类中继承来的成员变量。本问题解决如下

    在这里插入图片描述

  • 注:

    当基类中只声明了带参构造函数的时候要特别注意,需要显示调用基类构造函数;
    当基类中带参构造函数参数都有默认值时,在派生类中也可以不用显示调用基类构造函数;
    当基类中既有无参又有有参构造函数时,当不显示调用,则默认调用基类无参构造函数。

6. error: no matching function for call to ‘rclcpp::executors::SingleThreadedExecutor::add_node()’

  • 报错的代码: LifecycleYourNode继承自rclcpp_lifecycle::LifecycleNode这一行调用时报错如下

    在这里插入图片描述
    在这里插入图片描述

  • 报错原因: 参数类型不匹配,executor.add_node(argument)的参数类型是std::shared_ptr<rclcpp::Node>而不是std::shared_ptr<rclcpp_lifecycle::LifecycleNode>

  • 解决方法:

    在这里插入图片描述


【参考文章】
移植到ros2 foxy碰到的报错
问题2参考文章1
问题2参考文章2
问题3参考文章1
问题3参考文章2
问题5参考文章1
问题5参考文章2

created by shuaixio, 2023.05.03

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/17672.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

javascript中的严格模式

认识严格模式&#xff1a; 在ECMAScript5标准中&#xff0c;JavaScript提出了严格模式的概念&#xff08;Strict Mode&#xff09;: 严格模式很好理解&#xff0c;是一种具有限制性的JavaScript模式&#xff0c;从而是代码隐式的脱离了“懒散&#xff08;sloppy&#xff09;模…

软件测试实战,Web测试详细总结 (覆盖所有测试点),你要的都有

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Web自动化测试&…

在技术圈超卷的当下,学历到底是敲门砖还是枷锁?

前言 最近&#xff0c;突然之间被“孔乙己文学”刷屏了&#xff0c;短时间内“孔乙己文学”迅速走红&#xff0c;孔乙己是中国文学中的一位经典人物&#xff0c;他的长衫被认为是他的象征之一&#xff0c;孔乙己的长衫折射出很多现象&#xff0c;既有社会的&#xff0c;也有教育…

Android平台播放透明视频

Android平台播放透明视频 思路 设计一种特殊的视频&#xff0c;它的一半内容存储alpha信息&#xff0c;另一半内容存储rgb信息&#xff0c;接着通过OpenGL获取每个像素点的alpha值和rgb值进行混合&#xff0c;最后出来的画面就是带有透明效果的视频了。 可以上下的分&#xf…

服务器中了勒索病毒,升级后的Malox勒索病毒特征,勒索病毒解密数据恢复

Mallox勒索病毒是网络上较为流行的勒索病毒&#xff0c;但是随着黑客加密技术的不断升级&#xff0c;Mallox勒索病毒的新升级版本Malox勒索病毒已经开始出现。Malox勒索病毒是一种最近在网络上广泛传播的恶意软件&#xff0c;其感染方式多种多样&#xff0c;主要以加密受害人的…

基于zookeeper实现分布式锁

目录 zookeeper知识点复习 相关概念 java客户端操作 实现思路分析 基本实现 初始化链接 代码落地 优化&#xff1a;性能优化 实现阻塞锁 监听实现阻塞锁 优化&#xff1a;可重入锁 zk分布式锁小结 zookeeper知识点复习 Zookeeper&#xff08;业界简称zk&#xff…

Zookeeper系统模型介绍

目录 一、数据模型 二、 节点的类型 &#xff08;1&#xff09;持久节点 &#xff08;2&#xff09;持久顺序节点 &#xff08;3&#xff09;临时节点 &#xff08;4&#xff09;临时顺序节点 三、客户端命令行 &#xff08;1&#xff09;创建节点 &#xff08;2&…

最新VUE面试题

前言 本文以前端面试官的角度出发&#xff0c;对 Vue 框架中一些重要的特性、框架的原理以问题的形式进行整理汇总&#xff0c;意在帮助作者及读者自测下 Vue 掌握的程度。 本文章节结构以从易到难进行组织&#xff0c;建议读者按章节顺序进行阅读&#xff0c;当然大佬级别的…

操作系统——进程管理

0.关注博主有更多知识 操作系统入门知识合集 目录 0.关注博主有更多知识 4.1进程概念 4.1.1进程基本概念 思考题&#xff1a; 4.1.2进程状态 思考题&#xff1a; 4.1.3进程控制块PCB 4.2进程控制 思考题&#xff1a; 4.3线程 思考题&#xff1a; 4.4临界资源与临…

【分布式技术专题】「授权认证体系」OAuth2.0协议的入门到精通系列之授权码模式

这里写目录标题 OAuth2.0是什么OAuth2.0协议体系的Roles角色OAuth定义了四个角色资源所有者资源服务器客户端授权服务器 传统的客户机-服务器身份验证模型的问题 协议流程认证授权授权码 OAuth2.0是什么 OAuth 2.0是用于授权的行业标准协议。OAuth 2.0专注于简化客户端开发人员…

一文介绍Linux EAS

能量感知调度&#xff08;Energy Aware Scheduling&#xff0c;简称EAS&#xff09;是目前Android手机中Linux线程调度器的基础功能&#xff0c;它使调度器能预测其决策对CPU能耗的影响。依靠CPU的能量模型&#xff08;Energy Model&#xff0c;简称EM&#xff09;&#xff0c;…

疑难问题定位案例复盘(三)

今天我们分享一个数据库被异常改写的案例&#xff0c;通过该案例我们可以学习总结出常规的文件被改写问题定位思路。 问题现象 1、测试环境在进行特定压力测试时发现页面登陆异常&#xff0c;且调试日志多个进程持续打印“数据库打开失败”日志。 2、测试环境在进行多个压力测…

【机器学习】决策树(实战)

决策树&#xff08;实战&#xff09; 目录 一、准备工作&#xff08;设置 jupyter notebook 中的字体大小样式等&#xff09;二、树模型的可视化展示1、通过鸢尾花数据集构建一个决策树模型2、对决策树进行可视化展示的具体步骤3、概率估计 三、决策边界展示四、决策树的正则化…

PyCharm2023.1下载、安装、注册以及简单使用【全过程讲解】

在使用PyCharm IDE之前&#xff0c;请确保自己的计算机里面安装了Python解释器环境&#xff0c;若没有下载和安装可以看看我之前的文章>>>Python环境设置>>>或者还可以观看视频讲解。 注意&#xff1a;本文软件的配置方式仅供个人学习使用&#xff0c;如有侵…

02- 目标检测基础知识及优化思路汇总 (目标检测)

要点&#xff1a; 参考综述&#xff1a;深度学习目标检测最全综述 - 爱码网参考表达&#xff1a;https://www.cnblogs.com/xjxy/p/13588772.html 一 发展历程 分类网络是目标检测的基础&#xff0c;必须熟练掌握。 1.1 传统算法 V.J Detector 19年前&#xff0c;P. Viola 和 …

【java】Java 异常处理的十个建议

文章目录 前言一、尽量不要使用e.printStackTrace(),而是使用log打印。二、catch了异常&#xff0c;但是没有打印出具体的exception&#xff0c;无法更好定位问题三、不要用一个Exception捕捉所有可能的异常四、记得使用finally关闭流资源或者直接使用try-with-resource五、捕获…

全注解下的SpringIoc 续4-条件装配bean

Spring Boot默认启动时会加载bean&#xff0c;如果加载失败&#xff0c;则应用就会启动失败。但是部分场景下&#xff0c;我们希望某个bean只有满足一定的条件下&#xff0c;才允许Spring Boot加载&#xff0c;所以&#xff0c;这里就需要使用Conditional注解来协助我们达到这样…

Java面试题总结 | Java面试题总结10- Feign和设计模式模块(持续更新)

文章目录 Feign项目中如何进行通信Feign原理简述 设计模式spring用到的设计模式项目的场景中运用了哪些设计模式写单例的时候需要注意什么工厂模式的理解设计模式了解么工厂设计模式单例设计模式代理设计模式策略模式**模板方法模式**观察者模式**适配器模式**观察者模式**适配…

HNU-操作系统OS-实验Lab2

OS_Lab2_Experimental report 湖南大学信息科学与工程学院 计科 210X wolf &#xff08;学号 202108010XXX&#xff09; 前言 实验一过后大家做出来了一个可以启动的系统&#xff0c;实验二主要涉及操作系统的物理内存管理。操作系统为了使用内存&#xff0c;还需高效地管理…

【算法与数据结构】顺序表

顺序表 数据结构 结构定义结构操作 顺序表&#xff1a;结构定义 一个数组&#xff0c;添加额外的几个属性&#xff1a;size, count等 size: 数组有多大 count: 数组中当前存储了多少元素 顺序表三部分&#xff1a; 一段连续的存储区&#xff1a;顺序表存储元素的地方整型…