ROS基本概念

节点和管理器
=========================================
节点【node】  -- 执行单元
    执行具体任务的进程、独立运行可执行文件
    不同节点可使用不同的编程语言,可分布式运行在不同的主机
    节点在系统中名称必须唯一的
节点管理器【ROS Master】 --控制中心
    为节点提供命名和注册服务
    跟踪和记录话题/服务通信,辅助节点相互查找、建立连接
    提供参数服务器,节点使用此服务器存储和检索运行时的参数

话题通信
=========================================
话题【topic】   -- 异步通信机制
    节点用来传输数据的重要总线
    使用发布/订阅模型,数据由发布者传输到订阅者,同一话题的订阅者或发布者可以不唯一
消息【Message】 -- 话题数据
    具有一定的类型和数据结构,包括ROS提供的标准类型和用户的自定义类型
    使用编程语言无关的.msg文件定义,编译过程中生成对应的代码文件
消息发布代码流程
    1、ROS初始化
    2、ROS创建节点句柄
        在节点初始化和关闭一节中,使用ros::NodeHandle管理节点的内部引用,使启动和关闭一个节点变得简单.
        在创建时,如果一个内部节点没有被启动,节点句柄将启动该节点.一旦所有的节点句柄实例被销毁,那么节点将被自动关闭.
    3、定义发布者
    4、设置循环频率
    5、循环
        定义消息类型
        发布消息
        执行睡眠时间(频率延时)


服务通信
=========================================
服务【Service】 -- 同步通信机制
    使用客户端/服务端(c/s)模型,客户发送请求数据,服务器完成处理后返回数据
    使用编程语言无关的.srv文件请求和应答数据结构,编译过程中生成对应的戴拿文件

参数
=========================================
参数【parameter】 -- 全局共享字典
    可通过网络访问的共享、多变量字典
    节点使用此服务来存储和检索运行时的参数
    适合存储静态、非二进制的配置参数,不适合存储动态配置的数据

文件系统
=========================================
功能包【Package】
    ROS软件中的基本单元,包含节点源码、配置文件、数据定义等
功能包清单【Package manifest】
    记录包的基本信息,包含作者、许可信息、依赖信息、依赖选项、编译标志等
元功能包【Meta Packages】
    组织多个用于同一目的的功能包

工作空间
--------------------------------------------------
工作空间(workspace)是一个存放工程开发相关文件的文件夹
    src 代码空间 (source space)
    build 编译空间 (build space)
    devel 开发空间 (development space)
    install 安装空间 (install space)

创建工作空间
    mkdir -p ~/空间名称/src
    cd ~/空间名称/src
    catkin_init_workspace   //初始化工作空间cd
编译工作空间
    cd ~/空间名称/
    catkin_make   //产品build 和 devel 文件夹
    catkin_make install  //添加install文件夹
设置环境变量
    source devel/setup.bash
检查环境变量
    echo $ROS_PACKAGE_PATH

创建功能包
--------------------------------------------------
    cd ~/空间名称/src
    catkin_create_pkg test_pkg std_msgs rospy roscpp  //创建 test_pkg 的功能包 依赖于 rosspy roscpp
    
    CMakeLists.txt                        # 定义package的包名、依赖、源文件、目标文件等编译规则,是package不可少的成分
    package.xml                            # 描述package的包名、版本号、作者、依赖等信息,是package不可少的成分
    src/                                # 存放ROS的源代码,包括C++的源码和(.cpp)以及Python的module(.py)
    include/                            # 存放C++源码对应的头文件
    scripts/                            # 存放可执行脚本,例如shell脚本(.sh)、Python脚本(.py)
    msg/                                # 存放自定义格式的消息(.msg)
    srv/                                # 存放自定义格式的服务(.srv)
    models/                                # 存放机器人或仿真场景的3D模型(.sda, .stl, .dae等)
    urdf/                                # 存放机器人的模型描述(.urdf或.xacro)
    launch/                                # 存放launch文件(.launch或.xml)

编译功能包
    cd ~/空间名称
    catkin_make
    source ~/空间名称/devel/setup.bash
    echo $ROS_PACKAGE_PATH

创建服务
--------------------------------------------------
1、.srv文件的创建                            # 向功能包添加自定义服务文件(.srv)
2、功能包CMakeLists.txt                    # 修改CMarkLists.txt
3、catkin_make                            # 编译功能包
4、创建服务节点                            # 在功能包的src文件夹下面创建service 和client 的源码文件
5、修改CMakeLists.txt文件                    # 将服务注入到CmarkLists.txt
6、rosrun 服务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值