ROS学习初步


1>分布式系统:

ROS最主要的构成是节点(node,每一个节点可以看做为一个单独的处理单元.它可以接受外部的消息(这个步骤叫订阅,subscribe,也可以向外部发出自己的消息(这个步骤叫发布,publish;

服务与消息机制,是节点功能实现的一个典型方式.也就是接收外界的消息消息,并完成对该消息的响应.经典的应用举例:一个提供加法运算服务的节点,定时查询消息,一旦接收到消息(两个数值),立即返回加法运算的结果(两数之和).

节点是一个单独的处理单元.这样会大大简化程序设计和代码量.每个节点在代码层看起来就是一个独立的执行文件,有一个main()函数入口.

 

2>TCP通讯机制:

节点之间的通讯是通过类似TCP通讯机制的通讯底层所实现的.所以整个ROS上的节点是否跑在同一运算平台上并不重要(不考虑运算能力).只要这些节点之间有高效的通讯通道,便可以让节点相对运算平台透明.这也是分布式系统的特点.

但节点之间通讯的管理需要一个管理员(ros中被称为roscore节点).当节点分布在不同的计算机上时,需要指明master.通常master节点一般运行在机器人端,交互和监控的节点一般运行在远程PC端.这样做是为了避免远程PC端的关机不影响机器人正常工作.


3>Tf:

Tf模块是机器人运动功能的核心支持模块.它的全称为transform,主要用于坐标转换./tf消息(/tftopic)可以被多个节点订阅和发布.需要用到坐标转换的地方非常多.例如,SLAM建立地图的时候,需要实时处理好map, odom, 机器人底盘,机器人传感器之间的位置变换关系.机械手臂运动时,需要知道机器臂相对其他部分的姿态和位置.

 

4>仿真/调试工具:

ROS学习另外一个重要方面就要是熟练使用仿真和调试工具.

主要用到的仿真工具有:gazebo, 

调试工具则更加多种多样:rviz, rqt_****


5>开源代码

学习机器人,离不开开源代码.因为机器人涉及到的知识面太广,个人几乎不可能在每个方面都达到专家级别的水准.此外,就算能力够,工作量也不够个人来承担.所以借力开源社区的成果是非常有必要的.

ROS所有的stackpkg都提供了源代码.Stackpkg是功能包,需要开发某项功能的时候,应该优先考虑现有的软件中是否有.当我们开发功能包的时候,应该优先考虑使用已有的数据结构和接口.

 

6>多种开发语言/脚本

每一种语言都有自己的优缺点.机器人开发设计的领域较广,所以理所当然地需要使用多种程序语言或者脚本.通常会用到如下语言or脚本,用于不同的功能:

批量运行ros节点会使用launch脚本

Roslaunch    *.launch

开发 node 通常会用到python语言和c++语言

Python       *.py

Src           *.cpp *.cxx *.c *.h *hpp

配置launch脚本的参数通常使用yaml脚本

Config        *.yaml

机器人仿真和机器人可视化通常会用到urdfxacro脚本

Urdf          *.urdf

Xacro         *.xacro

Stackpkg的编译需要进行工程配置,通常会使用到cmakexml文件

Cmake         

xml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值