ROS入门学习一

  •  一 、ROS简介

1.ROS特点:其功能模块都封装与独立的功能包(package)或元功能包(meta package),ros的核心在于其分布式网络,基于TCP/IP的通信方式,实现模块间点对点的松耦合连接。

2.ros的架构设计:主要有三层,基于linux系统的OS层。实现核心通信机制及众多robot开发库的中间层,主要包括基于TCP/IP再次封装的TCPROS/UDPROS的通信系统,三种通信模型,订阅/发布模型、服务器/客户端模型、进程内通信Nodet。在ROSMaster的管理下的应用层。

3.相关概念:计算图:从计算图来看,ROS的功能模块以节点为单位独立运行,可以分布在不同的主机中。节点(node):即执行运算的任务进程,一个系统一般由多个节点组成,运行时可以通过计算图观察,图中的进程即节点,连线即端对端的连接关系。

消息(msg):一种以发布订阅(Publish/subscribe)方式传递,一个节点可以发布多个Topic,或订阅多个Topic。服务(srv):发布订阅的方式很灵活,但对于同步传输却不适合。基于服务器/客户端(servicer/client)模型,其数据类型,包含两个部分,一个用于请求,另一个用于应答。节点管理器(ROSMaster)即用命令roscore启动。

 4.ROS文件系统

功能包(package):包含ROS节点,库配置文件、每个包中均有package.xml描述功能包清单,用于记录功能包的依赖选项,编译标志等。

功能包典型文件结构                       

这些文件夹的主要功能如下:

1)config:放置功能包的配置文件

2)include:放置功能包需要用到的头文件(自定义头文件)

3)scripts:放置可直接运行的Python脚本

4)src:放置需要编译的C++代码

5)launch:放置功能包中的启动文件

6)msg:放置自定义消息类型

7)srv:放置自定义服务消息类型

8)action:放置功能包自定义的动作指令

9)CMakeLists.txt:编译功能包的规则

10)package.xml:功能包清单。

  • 二、创建工作空间(work_space)
mkdir -p ~/catkin_ws/src        //在根目录创建文件夹 /catkin_ws/src
cd ~/catkin_ws/src              //进入src目录
catkin_init_workspace           //初始化工作空间,这步可以省略
cd ~/catkin_ws                  //进入工作空间catkin_ws
catkin_make                     //执行catkin_make进行编译,将会生成build、devel目录
source ./devel/setup.bash

工作空间常见的四个目录为

1)src:代码空间(Source Sapce),放置开发过程中的功能包,储存Ros功能包的源码文件。

2)build: 编译空间(Build Space),放置编译过程的缓存信息和中间文件。

3)devel: 开发空间(Development Space),用来放置编译过后的二进制文(可执行文件),以及编译后产生的头文件(自定义消息/服务编译后均会残生头文件)。、

4)install: 安装空间(Install Space),编译成功后,即可使用命令make install将文件安装在该空间中,运行该空间的环境变量脚本,即可在终端执行可执行文件。

  • 三、vscode中开发Ros

1.创建工作空间

与上述第二大步相同,当上面的创建工作空间完成后,执行以下命令进入vscode

cd ~/catkin_ws    //进入工作空间
code .            //打开vscode

2.创建功能包

右击工作空间中的src目录,点击Create Catkin Package(需要安装ROS插件),创建功能包。

 输入功能包名为hello_world

 添加功能包依赖

 即可得到下面的功能包,结构如下图所示

3.创建hellowold节点

首先在功能包下的src目录创建hello_world.cpp文件。编写如下代码

#include <ros/ros.h>

int main(int argc, char  *argv[])
{
    ros::init(argc,argv,"hello_world");  //节点初始化,节点命令为hello_world
    ros::NodeHandle nh;                  //创建节点句柄

    ROS_INFO("Hello_world");             //屏幕输出hello_world
    return 0;
}

 注:出现头文件飘红,以及无代码补全功能时,可在工作空间的.vscode文件夹中修改c_cpp_properties.json文件,includePath添加飘红的头文件路径,将cppStandard改为 ”c++17“即可。

 修改功能包中的CMakeLists.txt文件

add_executable(hello_world src/hello_world.cpp)  //添加可执行文件hello_world

target_link_libraries(hello_world                //将可执行文件与库 &{catkin_LIBARIES}链接
  ${catkin_LIBRARIES}
)

修改完毕后,即可在工作空间打开终端,输入catkin_make进行编译

source ./devel/setup.bash  //添加环境变量

catkin_make                //进行编译

编译通过后,将生成可执行文件,文件放在devel/lib/hello_world/hello_world文件夹中,通过rosrun执行可编译文件

roscore       //启动ROSMaster节点管理器

rosrun hello_world hello_word // rosrun后第一个选项为功能包名,第二个选项为节点名(实际为可执行            
                              //文件名)

注意:每次打开新的终端,都需要添加环境变量,即source ./devel/setup.bash,若想不用每次都输入,可在系统home目录按ctrl+h显示隐藏文件,在文件.bashrc中添加setup.bash路径

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值