ROS-基础知识(六)

1、http://wiki.ros.org/

ROS具有一个庞大的社区ROS WIKI(http://wiki.ros.org/ ),这个网站将会始终伴随着你ROS开发,无论是查阅功能包的参数、搜索问题还是。当前使用ROS开发的软件包已经达到数千万个,相关的机器人已经多达上千款。此外,ROS遵从BSD协议,对个人和商业应用及修改完全免费。这也促进了ROS的流行。

2、

ROS并不是一个真正的操作系统。相反,它是一个框架和服务的集合,这些框架和服务提供了类似操作系统的功能,运行在由机器人硬件支撑的异构计算机集群之上。ROS服务包括硬件抽象、底层设备控制、进程间消息传递和包管理。

ROS并不是目前唯一可用的“机器人框架”。可供选择的框架包括PlayerYARPOrocosCARMEN。ROS的与众不同之处在于,它的设计以丰富的机器人平台为中心,使用驱动传感(倾斜激光器、pan/tilt传感器头、附在手臂上的传感器),其目标是利用自然分布的计算环境。另外,ROS的目标是成为一个几乎与语言无关的薄层,以便在其他机器人平台上轻松运行基于ROS的代码。ROS有PythonC++Lisp实现,而对Java和Lua的支持仍处于试验阶段。

ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。ROS虽然叫做操作系统,但并非Windows、Mac那样通常意义的操作系统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个中间件,基于ROS的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。

3、
节点(Node)–执行单元

    执行具体任务的进程、独立运行的可执行文件;
    不同节点可使用不同的编程语言,可分布式运行在不同的主机;
    节点在系统中的名称必须是唯一的。

节点管理器(ROS Master)–控制中心

    为节点提供命名和注册服务;
    跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;
    提供参数服务器,节点使用此服务器存储和检索运行时的参数

4、ROS通信机制
1.话题通信
话题(Topic)–异步通信机制

    节点间用来传输数据的重要总线;
    使用发布/订阅模型,数据由发布者传输到订阅者,同一个话题的订阅者或发布者可以不唯一。

消息(message)–话题数据

    具有一定的类型和数据结构,包括ROS提供的标准类型和用户自定义类型;
    使用编程语言无关的.msg文件定义,编程过程中生成对应的代码文件。
5、

如上图所示,计算机的操作系统将计算机硬件封装起来,而应用软件运行在操作系统之上,不用管计算机具体应用的是什么类型的硬件产品。这能大大提高软件开发效率(否则大家只能都写汇编了)。

  同理,ROS则是对机器人的硬件进行了封装,不同的机器人、不同的传感器,在ROS里可以用相同的方式表示(topic等),供上层应用程序(运动规划等)调用。

6、

ROS用节点(Node)的概念表示一个应用程序,不同node之间通过事先定义好格式的消息(Topic),服务(Service),动作(Action)来实现连接。

7、

 

catkin 工作空间

  •     catkin: ROS定制的编译构建系统,对CMake的扩展
  •     组织和管理功能包的文件夹,以catkin工具编译
  •     操作:
  •         建立工作空间:
  •             mkdir -p ~/catkin_ws/src
  •             cd ~/catkin_ws/
  •             catkin_make
  •         编译:
  •             cd ~/catkin_ws #注意,一定要切换到此处进行编译
  •             catkin_make
  •             source ~/catkin_ws/devel/setup.bash # 编译完成后需要source刷新环境
  •     catkin worksapce:
  •         src:package 源代码,真正写代码的地方
  •             src通常放置功能包package,Eg.package1,package2.etc
  •             package是catkin编译的基本单元,catkin编译的对象就是一个又一个的package
  •             编译系统会递归的查询每一个package
  •             package
  •                 ROS软件的基本组织形式,
  •                 catkin编译的基本单元
  •                 一个package可以包含多个可执行文件(节点)
  •                 判断package的方式:至少包含CMakeLists.txt,package.xml
  •                     CMakeLists.txt:
  •                         规定catkin编译的规则,例如,源文件,依赖项,目标文件
  •                     package.xml
  •                         定义package的属性,例如:包名,版本号.作者,依赖项
  •                     scripts:
  •                         脚本 (python 文件,shell文件)
  •                     include
  •                         C++头文件
  •                     src
  •                         C++源文件
  •                         python modue
  •                     srv(服务)
  •                         *.srv
  •                     msg(消息)
  •                         *.msg
  •                     动作(action)
  •                         *.action
  •                     launch:*.launch
  •                     config:*.yaml
  •         build: cmake & catkin 缓存和中间文件
  •         devel: 目标文件
  •             头文件
  •             动态链接库
  •             静态链接库
  •             可执行文件
  •     rosbuild:ROS早期采用的编译系统,目前主流的ROS项目已经不采用
  •     常用指令:
  •         rospack
  •             查找某个pkg的地址
  •                 rospack find package_name
  •             列出本地所有pkg
  •                 rospack list
  •         roscd
  •             跳转到某个pkg路径下
  •                 roscd package_name
  •         rosls
  •             列举某个pkg下的文件信息
  •                 rosls package_name
  •         rosed
  •             编辑pkg的文件
  •                 rosed package_name file_name
  •         catkin_create_pkg
  •             创建一个pkg
  •                 catkin_create_pkg <pkg_nmae>[deps]
  •         rosdep
  •             安装某个pkg所需的依赖
  •             rosdep install [pkg_name]
  •     Metapackge
  •         虚包:无实质内容,但是依赖其他软件包,使得安装更加方便
  •         Stack:软件包集,现已被Metapackage代替
  •         常见metapackgae
  •             navigation:导航相关的功能包集
  •             moveit:运动规划相关(主要是机械臂)
  •             image_pipeline(图像获取,处理相关的功能包集)
  •             vision_opencv(ROS与OpenCV相关的功能包)
  •             turtlebot
  •             pr2_robot
     

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值