我发现ROS的工作空间目录是那样并不是ROS规定的,而是cmake编译的目录结构一般就是那样,对ROS包工程的理解更进了一步,就是普通的C++工程编译生成可执行文件,python的话不需要编译直接运行

编程入门 行业动态 更新时间:2024-10-06 21:25:58

我发现ROS的工作空间<a href=https://www.elefans.com/category/jswz/34/1771435.html style=目录是那样并不是ROS规定的,而是cmake编译的目录结构一般就是那样,对ROS包工程的理解更进了一步,就是普通的C++工程编译生成可执行文件,python的话不需要编译直接运行"/>

我发现ROS的工作空间目录是那样并不是ROS规定的,而是cmake编译的目录结构一般就是那样,对ROS包工程的理解更进了一步,就是普通的C++工程编译生成可执行文件,python的话不需要编译直接运行

我现在发现ROS的工作空间目录是那样并不是ROS规定的,而是cmake编译的目录结构一般就是那样,这不是ROS独有的,而是都是这样的。学过cmake就应该知道。

 

其实现在知道还是有些小区别的,catkin_make和cmake还是有些小区别的(具体区别可以看我其他博文),所以ROS工程目录和普通的C++工程还是有些小区别的。

 

拍自《ROS机器人开发实践》

ROS中的编译器使用的是CMake

ROS包需要编译成可执行文件才行执行。

别人ROS功能包都是以C++文件存放的,放在Github上,最典型的阿木的普罗米修斯,你要用别人写好的功能包,首先是把那些C++文件拷贝到本地,然后编译成可执行文件,然后运行,这样就好理解了吧!!!!!!!!!你也不用单纯死记ROS是这么操作的。

所以ROS你不管概念怎么样逃脱不了C++的本质啊是不是。

这里就明确说了生成可执行文件,我估计后面启动节点的命令就是运行可执行文件,因为那名字不就是生成的可执行文件的名字么。

.html

 

=9

 

一个ROS包的C++文件里面应该是有一个main函数的,这样才能生成可执行文件,这是我推测的。

一个可执行文件执行起来应该就可以看作一个进程了,所以是不是一个ROS包就可以看作一个进程。

 

python不是编译型语言,python就不需要编译,如果一个ROS包是python写的,就不需要编译,直接运行就可以了应该。我想起GAAS包好像就是Python写的,感觉他们用python写可能是有道理的,不用编译,拿来就可以运行了,我看阿木的普罗米修斯的ROS好像也是用Python写的。python我也还想再去系统学一遍。其实这么去看普罗米修斯可能也没什么高级的,外在看着高级可能就像你当初看飞控一样,实际了解本质之后可能自己写都没什么问题。我现在教你自己跑个双目SLAM我也觉得没什么。是的。我感觉把SLAM和ROS梳理一遍之后我再去做双目SLAM我思路清晰得多了,而且也觉得只是个普通的事情,没什么的。我现在简历上就敢写会ROS了。

拍自胡春旭的《ROS机器人开发实践》

ROS21讲的第10讲里面明确给你讲到了这个可执行文件,而且这个可执行文件是生成在哪个文件夹。

 

 

vision_to_mavros其实也是一个带main函数的C++文件生成的可执行文件,所以以后再叫你写个ROS功能包你不用害怕什么的,你能写C++工程,能写Python工程,就可以写,就这么简单。看清本质之后就没什么了。

 

阿木的普罗米修斯的ROS包似乎也是python写的。

 

 

 

我现在再去看一个ROS功能包,就直接去它的src文件夹,里面当做一个C++工程去看,先找main函数,思路清晰很多。

你现在再去看realsense-ros应该也是有胆量的。

 

 

 

 

VINS的github上的ROS功能包我就找到了main函数,也是在src文件夹下面

.cpp

main函数在最下面

 

 

我现在应该可以确定,但凡有cmakelist的地方,它同文件夹下的C++文件肯定有main函数。

 

 

ORB_SLAM的main函数,只是需要注意它是放在examples这个文件夹下面的,不是放在根文件夹下,根文件夹下的src里面的文件没有main函数,我最后实际看ROS书上用ORB_SLAM也是在examples文件夹里面!!!!!!证明我的思路没有错!!!!!!!生成的可执行文件是跟着main函数走的。

拍自《ROS机器人开发实践》

 

 

这样我以后是有底气直接去啃那些SLAM  ROS包的源码的。

 

 

 

我现在发现有更为便捷的方式找main函数,cmakelists.txt  会写编译要生成的可执行文件名称,以及哪些源码文件参与编译!!!!这个在古月的ROS入门21讲里面也有讲到的。

比如

 

这是ORB_SLAM里面的

.txt

 

 

既然一个ROS功能包也是一个可执行文件,一个进程,我感觉ROS也是一个进程,那个master节点就是一个进程,它可以管理这些进程,包括管理这些进程间的通信啊什么的,但是这些进程本质还是一个机遇linux操作系统的一个进程。只不过ROS的master进程可能权利稍微大一些,可以执行一些操作系统层级管理进程的功能,包括进程间通信,启动一个进程关掉一个进程,原本这些应该是linux操作系统的进程调度来管理的,只不过ROS MASTER这个进程通过某些设置可以执行一些操作系统层次的操作,导致让人觉得ROS像是一个操作系统,我觉得本质是这么一个概念。特别是你系统学了freertos操作系统之后对操作系统的一些作用概念是清楚的。

 

 

 

 

 

 

是不是一个Node节点就是一个可执行文件,launch只不过是启动这些可执行文件的,就像一个脚本。

本身launch文件可以直接 roslaunch + launch文件的绝对路径

 

launch文件那些参数实际可能就是传递给可执行文件的参数。

 

更多推荐

我发现ROS的工作空间目录是那样并不是ROS规定的,而是cmake编译的目录结构一般就是那样,对ROS包工程的理解更进了一步,就是普通的C++工程编译生成可执行

本文发布于:2024-02-27 20:07:29,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1765919.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:目录   工程   不需要   进了   可执行文件

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!