第一章 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 计算图

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

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

  1. 【ROS理论与实践-赵虚左老师】Chap2 ROS通信机制

    第二章 ROS通信机制 通信是ROS中的核心 Core 机器人是一种高度复杂的系统性实现,在机器人上可能集成各种传感器(雷达.摄像头.GPS-)以及运动控制实现,为了解耦合,在ROS中每一个功能点都是 ...

  2. ROS理论与实践——赵虚左Autolabor

    ROS理论与实践 Autolabor官网:http://www.autolabor.com.cn/ 赵虚左老师课件:http://www.autolabor.com.cn/book/ROSTutori ...

  3. 在Jetson Nano上学习ROS的记录(版本Ubuntu18.04,课程来源赵虚左老师的《ROS理论与实践》)第十二章 机器人导航(仿真)

    系列文章目录 第一章 ROS空间创建.helloworld的实现.开启多个节点 第二章 话题通信 第三章 服务通信 第四章 参数服务器 第五章 常用指令 第六章 通信机制实操 第七章 ROS通信机制进 ...

  4. ROS机器人入门课程《ROS理论与实践》零基础教程(推荐课程)

    ROS的入门,对于纯小白的我来说很是痛苦,尤其是听完古月老师的21讲之后,更是浇灭了学习的兴趣,当时还在考虑要不要他的买课,还是算了,反正也听不懂,,,!!! 在一番挣扎之后,发现了赵虚左老师的课程, ...

  5. ROS入门跟着我就够了(一)ROS概述与环境搭建

    写在最前面的话: 这是第一次在CSDN写博客,也算是正式踏入这个圈子 准备两三天一更,把学习经历完整记录下来 希望最后回看过来能收获很多 查了很多资料,入门ROS比较好的免费资源是古月居的讲授以及赵虚 ...

  6. 《ROS理论与实践》学习笔记(九)机器人自主导航

    <ROS理论与实践>学习笔记(九)机器人自主导航 课程内容 ROS中的导航框架 导航框架中的关键功能包 move_base amcl 机器人自主导航案例 导航仿真 程序接口 move_ba ...

  7. ros理论与实践网盘资源

    ros理论与实践网盘资源 链接:https://pan.baidu.com/s/1a-cmpgiJ4m2dZdDJ7HTRAw 提取码:q0pt

  8. <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS

    <笔记>机器人操作系统ROS理论与实践--第一讲:认识ROS 前言 一.为什么需要ROS 二.ROS的总体设计 1.一个目标 2.五个特点 3.四位一体 三.ROS的系统实现--三个层次 ...

  9. ROS理论与实践——二、ROS基础

    ROS理论与实践--二.ROS基础 前言 一.创建工作空间 1 什么是工作空间 2 创建流程 二.创建功能包 1 创建命令 2 创建流程 三.ROS通信编程 1 话题编程 1.1 话题编程流程 1.2 ...

最新文章

  1. 深度学习数据特征提取:ICCV2019论文解析
  2. uva 11069 A Graph Problem
  3. 理解jmeter聚合报告
  4. “===” 也有不靠谱的时候
  5. 低功耗设计——基于UPF进行设计
  6. mysql galera status_MySQL galera cluster集群的监控
  7. 博文视点读书节第七日丨IT大咖来荐书,CS提升分享今晚开播,晒单赢福袋活动上线!
  8. Paint的方法总结(一):基本常用Api
  9. java 需要 不是语句,我应该避免使用Java标签语句吗?
  10. linux vim 编译python,Ubuntu下编译Vim8(+python)无数次编译失败
  11. 高中计算机技术基础教学ppt,高中信息技术教学课件
  12. Linux(Ubuntu 22.04)虚拟机共享主机上的文件夹
  13. 学习《图说设计模式》观察者模式
  14. 神经网络及其变种串联
  15. CSS 样式属性大全
  16. 【粉笔结构化面试】综合分析类
  17. 计算机弹奏卡布奇诺,计算机学院信息安全技术协会卡布奇诺加糖队在第十二届全国大学生信息安全竞赛中喜获佳绩...
  18. 常见服务器返回状态码
  19. SDNU-ACM第一次月赛地大武汉选拔赛
  20. c语言中热河输入空格,热河 - 在线打字测试(dazi.kukuw.com)

热门文章

  1. 利用maya+poser合成kinect 训练数据
  2. 如何在云服务器上部署gitblit
  3. linux 终端设备 - 线路规程
  4. “元宇宙”到底是啥?为啥火了?鼓励探索警惕忽悠
  5. Postgresql中序列正确使用建议
  6. 对于android.intent.action.MAIN和android.intent.category.LAUNCHER的理解
  7. 小程序的页面生成图片分享朋友圈
  8. 关于SVN,Git,GitHub的总结
  9. C 判断文件是否存在及读写执行权限
  10. Cesium立体建筑物闪烁效果