【ROS理论与实践-赵虚左老师】Chap1 ROS概述与环境搭建

第一章 ROS概述与环境搭建

学习新的知识三部曲:先去了解相关概念,然后安装官方软件包,最后搭建集成开发环境。

1.1 ROS简介

机器人是各种硬件和软件集成,甚至可以说机器人系统是当今工业体系的集大成者。
不重复造轮子 提高研发效率 复用性和模块化开发愈发强烈
传统模式到现代模式

1.1.1 ROS概念

1.是适用于机器人的开源元操作系统(基于linux的二级操作系统)
2.ROS集成了大量的工具 库 协议,简化了对机器人的控制
3.ROS可以运行在多台计算机上 也就是分布式系统分散计算压力
4.ROS=Plumbing(通讯机制)+Tools(工具软件包)+Capabilities(机器人高层功能)+Ecosystem(机器人生态系统)
通讯就是数据交互 也就是核心功能
工具提供了仿真功能,极其有用
功能,有部分是其他人做好封装好的,我们需要做的就是下载下来后安装直接调参复用结合具体机器人(尺寸啥的)调参 大部分不是算法的优化。 机器人研发有时候就是调参 调参侠
生态,搭建一个圈子 武林盟主啥的 掌握话语权

1.1.2 ROS设计目标

1.代码复用
2.分布式:ros是进程(也就是节点 nodes)的分布式框架,ros中的进程可以分布于不同的主机,不同主机协同工作,分散计算压力
3.松耦合:ros中功能模块封装于独立的功能包或者元功能包,便于分享,功能包中的模块以节点为单位运行,以ros标准的IO作为接口,开发者不需要关注内部实现,只要了解接口规则就可以实现复用,实现模块间点对点的松耦合连接
4.精简
5.语言独立性
6.易于测试
7.大型应用(基于分布式)
8.丰富的组件化工具包
9.免费且开源:功能包巨多 遇到要实现某个功能时,先不要自己实现,先去github上先找找看看有没有实现,有的话自己就不需要重复造轮子,直接拿来复用。

1.2 ROS安装

1.3 ROS快速体验

ROS中设计的编程语言主要以C++和python为主。
C++运行效率高但是编码复杂,而python反之。roscpp旨在成为ros的高性能库,而rospy一般用于对性能无要求的场景,提高开发效率。 视需求而定!

ROS中的程序实现流程五步法:

1.先创建一个工作空间(_ws)
2.再创建一个功能包(在src文件夹里面)
3.编辑源文件(cpp或者py文件)
4.编辑配置文件(cmakelist)
5.编译并执行(catkin_make)

mkdir -p demo1_ws/src //创建多级目录
cd ./demo1_ws/ //进入工作空间
catkin_make  //编译工作空间
catkin_create_pkg helloworld roscpp rospy std_msgs //要进入src下  进行创建功能包 功能包名称 依赖  最后一个为标准消息库
source ./devel/setup.bash   //配置环境变量
rosrun helloworld haha  //包名+ C++节点(也就是进程名字 add_executable(节点名  ……))

在这里插入图片描述
在这里插入图片描述

1.4 ROS集成开发环境搭建

1.4.1 安装终端

一款好用的终端:Terminator
sudo apt install terminator
常用快捷键:
Alt +方向键:终端切换
ctrl +shift+w:关闭当前终端
+x:最大化当前显示终端
+E:水平分割终端
+O:垂直

1.4.2 安装vscode

使用vscode进行ROS开发或者SLAM开发 永远滴神 很好用
ROS插件是基于Python和C++插件的
vscode中解决中文乱码问题:加条语句

ctrl+~ vscode中引出终端

setlocale(LC_ALL,"");

1.4.3 launch文件演示

官方给出的优化策略是使用launch文件,可以一次性启动多个ROS节点

launch文件的实现
1.选定功能包右击 添加launch文件夹
2.选定launch文件夹右击 添加launch文件
3.编辑launch文件内容(xml格式)

<launch>
    <node pkg="helloworld" type="demo_hello" name="hello" output="screen" />// info信息显示在屏幕上
    <node pkg="turtlesim" type="turtlesim_node" name="t1"/> 
    <node pkg="turtlesim" type="turtle_teleop_key" name="key1" />
    <!--node pkg="hellovscode" type="hello_vscode_c" name="hellovscode" output="screen" /--> //!-- --注释
</launch>

node —> 包含的某个节点

pkg -----> 功能包

type ----> 被运行的节点文件

name --> 为节点命名

output-> 设置日志的输出目标

4.运行launch文件

roslaunch 包功能名 功能包里launch文件名

5.运行结果: 一次性启动了多个节点

1.5 ROS架构(有点科普)

自身结构

就 ROS 自身实现而言: 也可以划分为三层

文件系统

ROS文件系统级指的是在硬盘上面查看的ROS源代码的组织形式(也就是工作空间文件夹的组织形式

计算图

ROS 分布式系统中不同进程需要进行数据交互,计算图可以以点对点的网络形式表现数据交互过程,计算图中的重要概念: 节点(Node)、消息(message)、通信机制_主题(topic)、通信机制_服务(service)

1.5.1 ROS文件系统

1.package.xml
该文件定义有关软件包的属性,例如软件包名称,版本号,作者,维护者以及对其他catkin软件包的依赖性。请注意,该概念类似于旧版 rosbuild 构建系统中使用的manifest.xml文件。

2.CMakelists.txt
文件CMakeLists.txt是CMake构建系统的输入,用于构建软件包。任何兼容CMake的软件包都包含一个或多个CMakeLists.txt文件,这些文件描述了如何构建代码以及将代码安装到何处。

1.5.2 ROS文件系统相关命令

文件操作,无外乎就是增删改查与执行等操作,接下来,我们就从这五个维度,来介绍ROS文件系统的一些常用命令。
1.增
catkin_create_pkg 自定义包名 依赖包 === 创建新的ROS功能包

sudo apt install xxx === 安装 ROS功能包

2.删
sudo apt purge xxx ==== 删除某个功能包

3.查
rospack list === 列出所有功能包

rospack find 包名 === 查找某个功能包是否存在,如果存在返回安装路径

roscd 包名 === 进入某个功能包

rosls 包名 === 列出某个包下的文件

apt search xxx === 搜索某个功能包

4.改
rosed 包名 文件名 === 修改功能包文件

需要安装 vim

比如:rosed turtlesim Color.msg

5.执行
5.1roscore
roscore === 是 ROS 的系统先决条件节点和程序的集合, 必须运行 roscore 才能使 ROS 节点进行通信。

roscore 将启动:

ros master

ros 参数服务器

rosout 日志节点

5.2 rosrun
rosrun 包名 可执行文件名 === 运行指定的ROS节点

比如:rosrun turtlesim turtlesim_node

5.3 roslaunch
roslaunch 包名 launch文件名 === 执行某个包下的 launch 文件

1.5.3 计算图

显示节点之间的交互模式
节点多的时候使用很多

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值