似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。

本文主要是介绍似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

其实你看别人给的ROS功能包其实就是一个或者几个cpp文件,包括像T265的,像PX4官方给的VIO的,ZN无人机课程里的transfer.py,并没有多少代码量,搞不好真的是可以自己写的。你对别人提供的ROS功能包不满意那就自己写嘛。这样自己参与程度更高,代码能力也得到加强,感觉挺好的,可以说项目是自己写的,自己做的。是的,追求自己从零手写。

这里我也感受到听课时由很大帮助的,有的东西单靠自己可能达不到那个层面,就是你想可能都想不到。

MAVROS真正去看Github源码其实也没有多少,多以没必要觉得有多高深,连官方文档都不敢看,没必要,你甚至源码都可以研究透。

目前我看了GAAS的px4_mavros_run.py还有PX4官方给的那个VIO,我看了下都是有共同点的,都是先订阅一些消息,然后对这些消息做一些逻辑处理,然后再发布一些消息,完了,真的就是这样,都有一个Main函数,不管是用Python写的还是C++写的。你会订阅话题发布话题,就可以写一些基础的ROS功能包了。

到了能写ROS包的地步,你就很灵活了,不会被被别人的ROS包所束缚,只会装别人的ROS包,或者别人没有写的你就没辙了,只会去百度去copy别人的教程。真正能自己写ROS包就非常灵活了,可以自己灵活改动去实现自己想实现的功能,就像自己会画PCB一样。真的让我感受到从零手写是非常有必要有意义的。就像无人机你会自己组装了,就不会被束缚于只能买别人的到手飞,甚至飞控也能自己写。我觉得这才是真正技术上的提升和进步。我确实没想到ROS包还能自己写,一开始只知道去找别人现成的教程,买别人的课,可能就是没想过还能真正自己写,或许想过但是不太相信能自己写。

我们这么理解,一个ROS节点本质就是一个可执行文件嘛,就是一个main函数,C++工程嘛,它逃离不开这个本质我们就可以用C++工程分析它。找到它的main函数,找到它调用的函数,找到它定义的类。应该是可以分析得非常透彻并且自己写的。还会调用ROS的一些API

本质就是一堆可执行文件,而且相互通信,launch文件就是启动这堆可执行文件。

所以你看古月的  ROS入门21讲,专门讲一个publisher的编写,而且用C++和python两种语言编写,一个publisher其实就可以看作一个节点,一个功能包了!!!所以他讲那些是有道理的,也确实是非常有用的。其实古月入门21讲里就是在教你怎么写ROS功能包,他写publisher也是以创建功能包的形式来的。

===========================

下面摘自:

https://blog.csdn.net/sinat_16643223/article/details/107823244

任何的程序,只要它有C++或者python的API,它就可以被接入ROS,比如把Airsim接入到ROS里面。如果大家会写python的话就可以非常简单地把一个程序接入到ROS里面。他对原有的airsim提供地ROS包不满意就自己写了一个。

 

 

 

之前阿木的mavros  offboard的可以也讲了一个ROS节点的编写,他讲了之后就觉得思路很清晰了,也不过如此。当时以为这是MAVROS的代码,现在回看不是的,就是一个ROS节点,怪不得这里面说如果理解了每一句代码,对ROS应该就手到擒来了。

这篇关于似乎写个ROS功能包并不难,你会订阅话题发布话题,加点逻辑处理,就可以写一些基础的ROS功能包了。的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/507685

相关文章

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

Python使用FastAPI实现大文件分片上传与断点续传功能

《Python使用FastAPI实现大文件分片上传与断点续传功能》大文件直传常遇到超时、网络抖动失败、失败后只能重传的问题,分片上传+断点续传可以把大文件拆成若干小块逐个上传,并在中断后从已完成分片继... 目录一、接口设计二、服务端实现(FastAPI)2.1 运行环境2.2 目录结构建议2.3 serv

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

Debian 13升级后网络转发等功能异常怎么办? 并非错误而是管理机制变更

《Debian13升级后网络转发等功能异常怎么办?并非错误而是管理机制变更》很多朋友反馈,更新到Debian13后网络转发等功能异常,这并非BUG而是Debian13Trixie调整... 日前 Debian 13 Trixie 发布后已经有众多网友升级到新版本,只不过升级后发现某些功能存在异常,例如网络转

修复已被利用的高危漏洞! macOS Sequoia 15.6.1发布

《修复已被利用的高危漏洞!macOSSequoia15.6.1发布》苹果公司于今日发布了macOSSequoia15.6.1更新,这是去年9月推出的macOSSequoia操作... MACOS Sequoia 15.6.1 正式发布!此次更新修复了一个已被黑客利用的严重安全漏洞,并解决了部分中文用户反馈的

从基础到高级详解Python数值格式化输出的完全指南

《从基础到高级详解Python数值格式化输出的完全指南》在数据分析、金融计算和科学报告领域,数值格式化是提升可读性和专业性的关键技术,本文将深入解析Python中数值格式化输出的相关方法,感兴趣的小伙... 目录引言:数值格式化的核心价值一、基础格式化方法1.1 三种核心格式化方式对比1.2 基础格式化示例