ROS使用总结
1.什么是ROS?
✓ROS是机器人操作系统(Robot Operating System)的英文缩写。
✓ROS是用于编写机器人软件程序的一种具有高度灵活性的软件架构。它包含了大量工具软件、库代码和约定协议,旨在简化跨机器人平台创建复杂、鲁棒的机器人行为这一过程的难度与复杂度。
✓ROS的原型源自斯坦福大学的STanford Artificial Intelligence Robot (STAIR) 和 Personal Robotics (PR)项目。
通常这样解释ROS:
✓1. 通道:ROS提供了一种发布-订阅式的通信框架用以简单、快速地构建分布式计算系。
✓2. 工具:ROS提供了大量的工具组合用以配置、启动、自检、调试、可视化、登录、测试、终止分布式计算系统。
✓3. 强大的库:ROS提供了广泛的库文件实现以机动性、操作控制、感知为主的机器人功能。
✓4. 生态系统:ROS的支持与发展依托着一个强大的社区。尤其关注兼容性和支持文档,提供了一套“一站式”的方案使得用户得以搜索并学习来自全球开发者数以千计的ROS程序包。
ROS的简单理解:
ROS不是传统意义上的操作系统,而是一种系统软件框架
ROS使用面向服务的软件技术,通过网络协议将节点间数据通信解耦。这样可以轻松集成不同语言不同功能的代码。
ROS不是一种编程语言。
ROS不仅是一个函数库,除包含客户端外,还包含一个中心服务器、一系列命令工具、图形化界面工具以及编译环境。
2.ROS开发环境搭建
安装参考: /cn
(1)sudo rosdep init 初始化rosdep,rosdep用于检查和安装软件包的依赖
(2)rosdep update 初始化rosdep,在根目录下保存一些文件,文件夹名为.ros
(3)source /opt/ros/kinetic/setup.bash
设置ROS_PACKAGE_PATH等环境变量,ROS根据这些环境变量来定位文件 setup.bash还定义了一些ros系统的bash函数,如roscd和rosls等.
(4)测试ROS是否正确安装
roscore
rosrun turtlesim turtlesim_node
rosrun turtlesim turtle_teleop_key
在三个终端分别执行指令
3.ROS的重要概念
ROS有三个层级的概念,分别是:文件系统级、计算图级和开源社区级。
文件系统级:
ROS的内部结构、文件结构和所需的核心文件都在这一层里,理解ROS文件系统是入门ROS的基础。一个ROS程序的结构,是一些按不同功能进行区分的文件夹。一般的文件夹结构是:
Workspace(执行编译工具catkin_make的目录)
-----src(源文件空间文件夹,放各个功能包)
----l + msg + srv + src + scripts
----include + + launch
-----build(编译空间文件夹)
-----devel(开发空间文件夹)
计算图级:主要是指进程之间(节点之间)的通信。ROS创建了一个连接所有进程的网络,通过这个网络节点之间完成交互,获取其他节点发布的信息。
开源社区级:主要是指ROS资源的获取和分享。通过独立的网络社区,我们可以共享和获取知识、算法和代码,开源社区的大力支持使得ROS系统得以快速成长
ROS中的重要概念说明
主节点(master)
主节点(master)负责节点到节点的连接和消息通信,类似于名称服务器(Name Server)。roscore是它的运行命令,当您运行主节点时,可以注册每个节点的名字,并根据需要获取信息。没有主节点,就不能在节点之间建立访问和消息交流(如话题和服务)。 主节点使用XML远程过程调用(XMLRPC,XML-Remote Procedure Call)与节点进行通信。
XMLRPC是一种基于HTTP的协议,主节点不与连接到主节点的节点保持连接。换句话说,节点只有在需要注册自己的信息或向其他节点发送请求信息时才能访问主节点并获取信息。通常情况下,不检查彼此的连接状态。由于这些特点,ROS可用于非常大而复杂的环境。XMLRPC也非常轻便,支持多种编程语言,使其非常适合支持各种硬件和语言的ROS。
当启动ROS时,主节点将获取用户设置的ROS_MASTER_URI变量中列出的URI地址 和端口。除非另外设置,默认情况下,URI地址使用当前的本地IP,端口使用11311
节点(Node)
作为ROS系统的核心,节点是用C++或Python(ROS客户端库roscpp、rospy)编写的程序,用来执行任务或进程。
消息(Message)
节点之间通过消息进行通信,这些消息包含一个节点发送给其他节点的信息数据,消息类型有ROS标准类型和基于标准消息开发的自定义类型两种。
话题(Topic)
话题消息通信是指发送信息的发布者和接收信息的订阅者以话题消息的形式发送和接收信息。
功能包(package)
功能包(package)是构成ROS的基本单元。ROS应用程序是以功能包为单位开发的。功能包包括至少一个以上的节点或拥有用于运行其他功能包的节点的配置文件。它还包含功能包所需的所有文件,如用于运行各种进程的ROS依赖库、数据集和配置文件等.
4.话题通信机制(了解)
在这张图我们可以看出,在ROS中有两个节点分别是Talker和Listener,他们启动顺序没有要求,他们想要建立联系,那么他们分别发布,订阅的话题必须一致。
ROS 通信机制的过程
1)Talker启动,通过1234这个端口使用RPC向节点管理器(ROS Master)注册发布者的信息,包含所要发布消息的话题名;随后ROS Master会将该节点的注册信息放入注册列表中储存起来,以等待接受此话题的接收者Listener。
2)Listener启动,通过使用TCP向节点管理器(ROS Master)注册接收者的信息,包括所需订阅的话题名。
3)ROS Master根据Listener所需的订阅话题在注册列表寻与之匹配的话题,如果没有到匹配的发布者,则等待发布者的加入,如果到可以与之匹配的发布者信息,则可以通过RPC向Listener发送Talker的RPC地址信息。
4)Listener接收到Talker的RPC地址信息,就尝试通过RPC像Talker发送连接许可,以便于传输订阅的话题名,消息类型以及TCP/UDP。
5)Talker接受到Listener发来的连接请求后,继续通过RPC向Listener确认链接信息,其中就包括自己的TCP信息
6)Listener接收到确认的消息后,就使用TCP与Talker进行连接
7)等连接成功后,Talker才向Listener发送话题消息类型
5.ROS的常用命令
ROS常用命令
roscore ros + core
启动master
rosrun ros + run
运行节点 rosrun imu_com imu_com
roslaunch ros + launch
运行多个节点及设置运行选项 roslaunch pkg launch_filename
rostopic ros + topic
确认ROS的话题信息 rostopic list;
rostopic echo /imu; rostopich hz /imu; rostopic echo imu | grep framed_id;
rosbag ros + bag 记录和回话ROS消息
rosbag record /imu /velodyne_points
rosmsg ros + msg 显示ROS的消息类型
rosmsg show
catkin_create_pkg 自动生成功能包
catkin_make 基于cmake来进行构建
catkin_make是将cmake与make的编译方式做了一个封装的指令工具, 规范了工作路径与生成文件路径.
6.ROS的工具
三维可视化工具(Rviz)
ROS GUI开发工具(rqt)
CMake编译介绍
1.CMake编译的流程:
CMake指令依据 文件,生成Makefiles/makefiles文件,
make再依据此makefiles文件编译链接生成可执行文件
>cmake如何使用
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论