编程思想:消息是ROS程序的一等公民。
碎碎念:Hello米娜桑,这里是英国留学中的杨丝儿。我的博客技术点集中在机器人、人工智能可解释性、数学、物理等等,感兴趣地点个关注吧,持续高质量输出中。
唠嗑QQ群:兔叽的魔术工房 (942848525)
B站账号:杨丝儿今天也在科学修仙(UP主跨站求个关注)
:star:知识点整理
- 【机器人】开发系统镜像制作指南
- 【机器人】ROS1学习笔记:架构部分
- 【机器人】ROS1工程案例:最简单的信息传递
- 【机器人】ROS1工程案例:自定义消息类型
- 【机器人】ROS1程序运行实用技巧
- 【机器人】ROS1程序中的服务Service:精简解析
- 【机器人】ROS1工程案例:服务和动作
:question:问:ROS框架的设计理念是怎么样的?
- ROS2采用分布式架构,采用自发现的方式进行节点间的通信建立。
- ROS1相对就显得不伦不类,因为rosmaster,也就是主节点的存在,ROS1的架构介于分布式系统和客户端/服务端系统之间。
- 主节点负责命名,起到和地址字典类似的作用。
:o:答:ROS1关键词域
graph TB subgraph 程序相关 C[多线程]--> F[面向过程普通节点] C-->G[面向对象服务节点] end
graph TB subgraph 节点相关 A[主节点]--- B[分布式]--- H[命名空间概念]---A end subgraph 消息相关 D[通信策略]--- E[消息对象]---D end
:o:答:ROS1到2的进步
ROS 2.0 主要是为了让 ROS 符合工业级的运行标准,采用了 DDS 这个工业级别的中间件股则可靠的额通信。
- 通信节点可以动态地发现新的节点,而且用共享内存的方式使得通信效率更高。
- 依赖于动态的 P2P 的自发现模式,也就去掉了 ROS Master 这个中心节点。
- DDS 上层通过 DDS API 封装,实现了 DDS 的实现对于 ROS Client 透明。
- 注:ROS 2.0 还是一个开发中的框架,还需要时间。
:question:问:ROS开发环境配置策略该是怎样的呢?
ROS是一个软件框架,备选的语言有python和C++。但是需要注意的是,不管是哪种语言的环境,都需要按照官方文档中的安装方法进行安装和配置。
如果不这样做,那么,举例来讲,ROS1同时使用Python3和Python2的问题就很难解决了。
推荐使用Linux系统环境,因为频繁的终端操作。同时不建议使用命令行插件进行辅助开发,ROS自带的catkin工具已经足以满足开发需要。
可以阅读一下:【机器人】开发系统镜像制作指南
:question:问:命名也有OS两个字母,为什么说ROS是中间件?
首先OS,也就是操作系统的定义是要与系统硬件交互,并提供一套用户使用的方法。ROS不具备这样的性质,但是因为在机器人硬件设备上,对外暴露出来的不是底层运行的正常OS而是在OS之上的ROS,所以感觉ROS也是一个OS,负责控制系统硬件。
就是因为这样的性质,我们使用ROS间接得控制系统底层硬件,所以叫做中间件。
:o:答:软硬件桥接方式
这个并不是ROS需要考虑的问题,根据平台的不同,我们使用的桥接方法也不尽相同。但是为了保证程序的泛用性,我们在命令行中通过重命名消息实现软硬件节点的通信。
:o:答:编程语言的接口
ROS中,python相关的依赖是rospy,而C++就是roscpp。
:question:问:ROS程序设计中的常用调试工具有哪些?
可以从下面几个指令开始了解:rqt_graph
、rostopic
、rosmsg
、rosservice
、rossrv
。