ROS操作系统快速入门

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

文章目录

参考视频:机器人操作系统 ROS 快速入门教程

一、简介

手机界的安卓操作系统就和机器人界的ros操作系统一样,向上可以扩展不同应用,向下可以适应不同的硬件设备

模块化、分布式的系统设计

  • 模块化:ros中每个.lanuch文件相当于一个机器人,每个node节点相当于一个模块

  • 分布式:可以使用多个计算机(实际上是cpu)来处理不同模块的计算任务

ros操作系统要跑在运算能力强的芯片上,例如瑞芯微、树莓派、电脑等,通过数据链路(usb、串口)与单片机进行通信传输指令与数据,在ros的应用中开发能够进行串口通信的node,例如GMapping(建图)、Move_base(自主导航)

在这里插入图片描述

二、安装虚拟机与ROS系统安装

虚拟机的缺点

  • 运行效率低【两个系统之间隔着虚拟机】
  • 调用宿主硬件的方法比较繁琐【利用宿主电脑的显卡GPU进行CUDA加速,映射操作比较复杂】

安装ubuntu20.04

ubuntu20.04安装教程

一些注意点:

  1. 关于20.04版本:

    • 可以在这个页面下载:https://releases.ubuntu.com/20.04.5,选“64-bit PC (AMD64) desktop image”版本
  2. 修改分辨率

    • 因为分辨率看不见按钮,通过命令行修改分辨率
    • 按Ctrl+Alt+T,出现终端窗口,然后在终端窗口输入命令:
    • xrandr -s 1280x800后回车(需要注意的是1280和800中间的x是字母x)
      在这里插入图片描述
  3. 安装过程跳过更新
    在这里插入图片描述

  4. 虚拟机备份

  5. 安装vmware tools工具

    • 安装步骤
    • 注意:由于文件夹由于容量过小,不能在这个文件夹解压,需要将文件夹移动到用户目录下
  6. Ubuntu20.04使用过程中总是弹出检测到系统程序出现问题的解决方法

  7. Ubuntu已安装VMware Tools仍无法粘贴复制主机文件夹

  8. 刚建立好的linux虚拟机使用NAT方式可以连接外网,系统重启几次,系统无法上网,这是什么问题导致的呢?

其他教程:

三、ROS系统安装

切换镜像源

  1. 要知道当前系统的代号,可以用以下命令:
lsb_release -a
  1. 换镜像源教程

关于无法保存只读文件问题,可以在home目录下创建好该文件然后复制过去

  1. 刷新列表,一定要执行刷新
sudo apt-get update//必须执行
sudo apt-get upgrade//非必须执行

视频教程

教程链接

文章教程

四、ROS应用商城APT源

简介与指令介绍

ubuntu有自带的下载源,到指定的应用商城下载软件包

ROS官方应用商城网站:index.ros.org

添加不同的源,就类似于添加不同的应用商城

下载指令格式:

suod apt install ros-noetic-软件包名称

软件包需要ros系统启动起来才能使用,另外开终端输入

roscore

报错的解决方法

运行软件包指令

rosrun 包的名称 节点的名称

案例

安装如下两个软件包进行测试

sudo apt install ros-noetic-turtlesim
sudo apt install ros-noetic-rqt-robot-steering

运行两个软件包

rosrun turtlesim turtlesim_node
rosrun rqt_robot_steering rqt_robot_steering

输入框中可以修改速度发送的主题名称
在这里插入图片描述

ros应用商城介绍

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

点击软件包的名称可以查看详细信息,例如源代码存放位置是github

右侧的website内有软件包的使用细节介绍
在这里插入图片描述

五、GIthub

在github中下载的是源码,没有编译,需要在本地编译,编译时有指定的文件格式,所以需要建立一个工作空间,所谓的工作空间就是符合某种要求的目录结构,编译器会安装这个目录结构去检索源代码,完成编译工作

建立如下目录结构:

在这里插入图片描述

安装git与克隆软件包

sudo apt install git

在src目录下克隆软件包

git clone https://github.com/6-robot/wpr_simulation.git

执行安装依赖包的脚本

下载后的目录结构中有scripts目录,【用于放置脚本文件,执行脚本可以为下载安装和编译需要用到的依赖项,为实体机器人映射端口】,根据ros版本执行不同的脚本,此类操作只需要执行一次
在这里插入图片描述

./install_for_noetic.sh

编译

cd ~/catkin_ws
catkin_make

注意:该指令(catkin_make)只能在catkin_ws路径下,会对src里面的源代码进行编译

编译完成后会得到如下几个文件
在这里插入图片描述
然后是将catkin_ws工作空间里面的环境变量加载到终端里面,使用source指令载入工作空间的环境设置

source ~/catkin_ws/devel/setup.bash

使用roslaunch运行编译好的ros程序

roslaunch wpr_simulation wpb_simple.launch

在这里插入图片描述
通过上面安装的速度控制工具可以控制机器人运动,运行软件包

rosrun rqt_robot_steering rqt_robot_steering

通常会把设置工作空间环境参数的source指令放到终端启动的初始化脚本文件bashrc中

gedit ~/.bashrc

在最末尾添加

source ~/catkin_ws/devel/setup.bash

在终端输入

source ~/.bashrc

六、安装vscode

快速下载教程

下载后的路径在

/home/fang/下载

执行解压

sudo dpkg -i 压缩包名称

运行vscode

code

在vscode软件中将/home/fang/catkin_ws/src添加为工作空间

安装插件:

  • chinese
  • ros(会顺带安装c++和python等插件)
    在这里插入图片描述
  • cmake(安装CMake Tools会自动安装CMake)
    在这里插入图片描述
  • bracket【vscode已经内置了,无须安装】
  • C/C++ Extension Pack【它包含了 vscode 编写 C/C++ 工程需要的插件(C/C++、C/C++ Themes、CMake、CMake Tools和Better C++ Syntax等)】

其他插件:地址

设置编译快捷键:

按下:ctrl+shift+b
选择第一项:
在这里插入图片描述
此时编译工作空间里面的软件包

当然也可以设置第一项为默认编译选择,点击右侧齿轮按钮

此时工作目录中出现的tasks.json文件,修改group选项
在这里插入图片描述

设置拼写错误检查

  • 出现头文件引用问题是,c/c++插件没有找到,删除左侧的c__cpp_properties.json文件,然后关闭vscode再打开,此时ros插件会初始化,会修改c__cpp_properties.json文件,自动将头文件添加到路径中

  • 特殊情况:ros插件无法识别,则需要手动关闭报错,按住ctrl+shift+p,输入:error squiggles,选择禁用错误波形曲线,此时左侧会多一个setting.json文件, 如果要启动检查则改为true

在这里插入图片描述

七、超级终端Terminator

安装Terminator

sudo apt install terminator

ctrl+AIT+T启动Terminator,在运行其他任务的时候可以分割界面

在这里插入图片描述

快捷键

  • ctrl+shifr+E:分割为左右
  • ctrl+shifr+O:分割为上下
  • ALT+方向键:切换焦点窗口
  • ctrl+shifr+W:删除刚刚切割的窗口

注意:ctrl+shifr+E可能会激活ubuntu输入法的符号模式,需要取消输入法对该快捷键的占用,终端输入:ibus-setup,删除该快捷键的占用,操作步骤如下

在这里插入图片描述

在这里插入图片描述

八、Node节点与Package包

基本单元:node

一个机器人由多个节点组成

在这里插入图片描述

节点的组织形式:package

使用apt下载的,虽然只使用了一个软件包里面的某些节点的功能,但是下载的还是整个软件包(package)

在这里插入图片描述
ros采用cmake和catkin作为编译工具,引入了package的概念(ros中各个节点采用模块化的思想),可以将各个节点的关联性进行分类,一次只安装一个包(一组节点),此时包可以理解为节点的容器

九、写一个Node节点

创建超声波节点的软件包

进入catkin_ws/src目录:

catkin_create_pkg ssr_pkg rospy roscpp std_msgs 

catkin_create_pkg指令:

catkin_create_pkg <包名> <依赖项列表>

ps:依赖项是通用的依赖项,也可以成为通用节点

  • rospy:ros和python结合
  • roscpp:ros和cpp结合
  • std_msgs :标准消息

此时会创建两个文件,两个目录

在这里插入图片描述

ps:

  • 凡是catkin软件包里面一定含有package.xml
  • CMakeLists.txt是指令和注释,可以作为编译项进行复制,避免写错,##表示注释 ,#表示指令

roscd指令

该指令可以在终端中进入指定软件包的文件地址

在这里插入图片描述

路径:/opt/ros/noetic/share/roscpp 里面都是软件包,来源于安装ros的desktop-full基础包或独立扩展包
catkin_ws工作空间中的软件包则是源码,而在此目录下是可执行文件

在bashrc中source /opt/ros/noetic/setup.bashsource ~/catkin_ws/devel/setup.bash就分别是软件包的两个安装空间

创建超声波node节点

在srv目录下创建chao_node.cpp文件

#include <ros/ros.h>

int main(int argc, char *argv[])//argv没有const
{
   
   
    /* code */
    ros::init(argc,argv,"chao_node");//节点初始化后才能与ros系统产生连接,才能调用ros的核心功能
    printf("hello world");
    //节点启动后一直运行,true可以替换为ros::ok()函数,避免节点不响应任何外部信号,例如ctrl+c
    while(ros::ok()){
   
   
        printf("hhhhh");
    }
    return 0;
}

为新建节点添加编译规则

打开CMakeLists.txt,添加如下两条

# 为这个包的节点添加可执行指令
# 前一项:指定可执行文件的名字,可以和节点名保持一致
# 后一项:指定从哪个代码文件进行编译
add_executable(chao_node src/chao_node.cpp)

# 链接ros::init函数所在的库文件
target_link_libraries(chao_node
  ${
   
   catkin_LIBRARIES}
)

运行节点

  1. 启动roscore
  2. 终端输入:rosrun ssr_pkg chao_node

rosrun <包名> <节点文件名>

十、Topic话题与Message消息

Topic 话题

  1. 话题Topic是节点间进行持续通讯的一种形式
  2. 话题通讯的两个节点通过话题的名称建立起话题通讯连接话题中通讯的数据,叫做消息Message
  3. 消息Message通常会按照一定的频率持续不断的发送,以保证消息数据的实时性
  4. 消息的发送方叫做话题的发布者Publisher。
  5. 消息的接收方叫做话题的订阅者Subsciber。
  6. 一个ROS节点网络中,可以同时存在多人话题
  7. 一个话题可以有多个发布者,也可以有多个订阅者2
  8. 一个节点可以对多个话题进行订阅,也可以发布多个话题
  9. 不同的传感器消息通常会拥有各自独立话题名称,每个话题只4有一个发布者。
  10. 机器人速度指令话题通常会有多个发布者,但是同一时间只能有一个发言人。

一个话题多个发布者的情况是存在的,例如底盘驱动需要速度指令,该指令可以由跟踪或者导航节点发布,注意的是要控制发布的顺序

在这里插入图片描述

Message 消息

不同的消息包有不同的消息类型,标准消息包std_msgs就包含多个基本消息类型

可以将消息类型理解为C语言中的结构体

十一、Publisher 发布者和Subscriber 订阅者的实现

Publisher 发布者的实现

chao_node.cpp

  1. 确定话题名称和消息类型
  2. 在代码文件中include消息类型对应的头文件
  3. 在main函数中通过NodeHandler大管家发布一个话题并得到消息发送对象。
  4. 生成要发送的消息包并进行发送数据的赋值
  5. 调用消息发送对象的publish()函数将消息包发送到话题当中。
#include <ros/ros.h>
#include<std_msgs/String.h>

int main(int argc, char *argv[])
{
   
   
    /* code */
    ros::init
ROS入门级教程 本文讲述ROS入门级教程,介绍ROS的安装,ROS程序的主体架构、核心概念、已有程序的编译与使用、常用的调试工具和一些指令。 阅读详情

相关推荐

医院网络设计(完整文档+思科拓扑图)

大家好,我是小华学长,一名计算机领域的博主。经过多年的学习和实践,我积累了丰富的计算机知识和经验,在这里我想与大家分享我的学习心得和技巧,帮助你成为更好的程序员。作为一名计算机博主,我一直专注于编程、算法、软件开发等领域,在这些方面积累了大量的经验。我相信分享是一种双赢的方式,通过分享,我可以帮助他人提升技术水平,同时也能够得到学习交流的机会。在我的文章中,你将会看到我对于各种编程语言、开发工具以及常见问题的解析和分析。我会结合自己的实际项目经验,为你提供实用的解决方案和优化技巧。

qq1325513482的博客 2万+

ROS入门到精通0-1:教程导读

ROS概念太多太复杂?ROS入门到精通系列订阅必看

FRIGIDWINTER的博客 1万+

【机器视觉】Halcon 最新版本安装教程(HALCON 24.11.1.1 Progress-Steady)

注:如果使用评估版本,下载前先了解最新评估授权密钥所支持的版本。。近几年不同版本安装过程类似,均可参考本教程。

OpenSeek的博客 3万+

ROS(Robot Operating System机器人操作系统

ROS=通信+工具+功能+生态ROS是适用于机器人的开源元操作系统,机器人里,一个模块负责“看”(摄像头),一个负责“动”(电机),ROS让它们能像微信群聊一样交换信息,而不用管对方是用C++还是Python写的。

2501_93463049的博客 866

ROS(Robot Operating System)全面深入详解,入门学习ROSROS2

并不是一个传统意义上的操作系统,而是一个机器人软件开发框架。它提供了一套标准的通信机制、开发工具、库函数和约定,使得开发者可以更加高效地构建复杂的机器人应用。通俗理解:如果说操作系统(如 Windows/Linux)管理的是计算机硬件资源,那么 ROS 管理的就是机器人各组件之间的协作。它就像是机器人的"神经系统",负责连接感知模块(眼睛/耳朵)、决策模块(大脑)和执行模块(手脚)。Nav2是 ROS2 的标准导航框架,是 ROS1 Navigation Stack 的升级版。│ Nav2 架构 │。

Together_CZ的博客 1012

最全ROS 入门

由浅入深,一文讲清ROS

阿呆的隐秘角落 1万+

ROS操作系统

ROS全称叫机器人操作系统(Robot Operating System, ROS),虽然它叫操作系统,但实际上和我们认识的linux、mac、windows不一样,它是基于ubuntu(linux)上运行的一套框架,我们编写的ROS程序都基于这套框架上运行。对于ROS系统,有一个重要的概念叫 “节点”,其实每个节点就是单独的一个程序,比如处理摄像头、雷达、电机等,都可以由不同的开发人员独自写一个程序运行并关联(通信),他们也都有一个属于自己的二进制文件。

weixin_56204139的博客 3667

ROS入门21讲课件源码:助你快速掌握机器人操作系统精髓

ROS入门21讲课件源码:助你快速掌握机器人操作系统精髓 去发现同类优质开源项目:https://gitcode.com/ ROS入门21讲课件源码,是ROS(Robot Operating System,机器人操作系统)学习者的宝藏资源。以下是对这一项目的深入解读与推荐。 项目介绍 ROS入门21讲课件源码,为ROS初学者提供了一个全面的学习方案。项目包含21讲详尽的课件PPT和配套源码,旨在帮...

gitblog_06746的博客 816

操作系统ppt_公开课视频及PPT | 机器人操作系统ROS快速入门

点击上方“计算机视觉life”,选择“星标”快速获得最新干货SLAM研习社对之前所有直播进行了总结,包括视频、PPT,方便大家二次学习。主题:《机器人操作系统ROS快速入门》内容:介绍ROS入门基础,主要包括ROS基本概念和简单编程,适合新入门的小白玩家嘉宾:李书伟,天津大学研究生,主要研究方向是视觉SLAMPPT:关注公众号:计算机视觉life,后台回复:ROS视频录像视频PPT从0...

weixin_39785400的博客 351

ROS入门实例中文版教程:快速掌握机器人操作系统的核心功能

ROS入门实例中文版教程:快速掌握机器人操作系统的核心功能 【下载地址】ROS入门实例中文版教程 ROS(机器人操作系统入门实例中文版教程,专为初学者设计,帮助您快速掌握ROS的核心知识与实践技能。教程结构清晰,内容由浅入深,每个实例均配有详细步骤说明,确保您能轻松跟随并完成练习。通过动手实践,您将深入理解ROS的节点...

gitblog_06774的博客 443

ROS1 快速入门

ROS 是指机器人操作系统,是一个用于开发机器人软件的开源框架。虽然叫做“操作系统”,但它实际上更像是一个中间件或机器人开发平台,它通常运行在 Linux 上,为机器人应用提供了一套工具、库和约定

weixin_46284302的博客 482

如何入门ROSROS学习资料大全

近几年来,ROS机器人操作系统在国内越来越火,学习的资料也越来越多,但机器人是个综合性很强的学科,涉及知识面广。没有专业基础的人学习ROS还是有些困难的,为了帮助新手快速入门ROS,以下这些资料一定要收藏。 ROS官方资料:wiki http://wiki.ros.org/ h...

chuigua5164的博客 659

ROS 初学入门学习及资源推荐

ROS 初学入门概要及资源推荐 1 ROS简介 参考链接: https://baike.baidu.com/item/ros/4710560?fr=aladdin ROS 即 机器人操作系统(Robot Operating System),是用来进行机器人开发的开源系统,是基于Linux系统的一种操作系统,依赖于Linux的内核,它被称为操作系统的原因是能做类似于操作系统可以做到事情,包括硬件抽象...

weixin_43980155的博客 1251

ROS入门必备的学习资料

  近几年来,ROS机器人操作系统在国内越来越火,学习的资料也越来越多,但机器人是个综合性很强的学科,涉及知识面广。没有专业基础的人学习ROS还是有些困难的,为了帮助新手快速入门ROS,将为大家分享一些专业学习资料。 ROS官方资料:wiki   http://wiki.ros.org/ http://wiki.ros.org/cn/   api http://docs.ros.or...

qq_38403231的博客 1207

ROS机器人操作系统入门笔记(一、二节)

ROS机器人操作系统入门-中国大学MOOC 讲义:https://github.com/kaixindelele/ros_demo_mooc/blob/master/ros-tutorial-icourse163.pdf 代码示例:https://github.com/DroidAITech/ROS-Academy-for-Beginners 有一位大佬做了同样的笔记:大佬的读书笔记(1)...

Asber的博客 1449

ROS入门学习记录

ros study record 工程架构 创建工作空间及编译 mkdir catkin_ws创建一个catkin编译的工作空间 cd catkin_ws进入到catkin_ws mkdir src再创建一个src的文件夹,这个是必须的 cd ../..回到最外层的目录 sudo chmod -R 777 catkin_ws对整个工作空间及子目录进行可读可执行可操作的赋权 catkin_make...

darcsdn 1265

机器人操作系统ROS)在线实训平台学习实验指南

2019年更新:ROS 1.0(Kinetic)和ROS 2.0(Ardent)安装与测试 试用和学习机器人操作系统最便捷的打开方式 https://blog.csdn.net/ZhangRelay/article/details/88530278 机器人操作系统ROS)在线学习指南 在高校开设ROS相关课程已经积累了一年多的经验,由于自动化类专业在课程安排中不同于计算机...

zhangrelay的专栏 1万+

ROS机器人操作系统入门

ROS机器人操作系统入门 去发现同类优质开源项目:https://gitcode.com/ 欢迎来到ROS(Robot Operating System)机器人操作系统入门指南。本资源是由热心的ROS用户整理的一份基础操作汇总,旨在帮助初学者快速理解和掌握ROS的核心概念及实用技巧。ROS是一个广泛应用于机器人领域的开源框架,它提供了软件架构、工具和库,使开发复杂的机器人应用变得更加高效和模块化...

gitblog_06659的博客 810

探索机器人操作系统的奥秘:ROS入门讲义推荐

探索机器人操作系统的奥秘:ROS入门讲义推荐 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在机器人技术日新月异的今天,ROS(Robot Operating System)作为机器人开发的标准框架,已经成为全球开发者不可或缺的工具。为了帮助初学者快速掌握ROS的核心概念和操作技巧,我们特别推出了这份《ROS操作系统入门讲义》。这份讲义不仅内容详实,而且讲解方式通俗易...

gitblog_06622的博客 326

ROS学习资料大全

近几年来,ROS机器人操作系统在国内越来越火,学习的资料也越来越多,但是机器人是个综合性很强的学科,涉及知识面广。https://wiki.ros.org , 针对ROS1 的文档。所以文档看起来比较旧。机器人操作系统ROS Indigo 入门学习(0)——ROS的UNIX基础。https://docs.ros.org ,针对ROS2的文档。

jiankangyq的博客 760

2000-2022年上市银行相关指标面板数据.zip

2000-2022年上市银行相关指标数据1、时间:2000-2022年2、来源:附在文件内,见表格名称3、指标:证券代码、证券简称、上市日期、上市公司(银行)类型、不良贷款余额、不良贷款拨备覆盖率、不良贷款比率、净利差、净息差、净息差(公布值)、单一最大客户贷款比例、存款总额、存贷款比率、成本收入比、最大十家客户贷款占资本净额比例、生息资产、生息资产收益率、计息负债、计息负债成本率、贷款减值准备、贷款总额、贷款损失准备充足率、非利息收入、非利息收入占比、非生息资产、非计息负债、加权风险资产净额、库存现金、拨贷比、无息负债、杠杆率、核心资本充足率、核心资本净额、流动性覆盖率、生息资产平均余额、计息负债平均余额、资本充足率、资本净额、银行理财产品余额、资本净额、一级资本充足率、一级资本净额(2013)、信用风险加权资产(2013)、加权风险资产净额(2013)、市场风险加权资产(2013)、操作风险加权资产2013、核心一级资本净额2013、核心一级资本充足率2013、资本充足率2013、资本净额20134、范围:42家银行

上一篇: gcc、g++编译的使用与区别【含vscode中简单的GDB调试】
下一篇: 在Linux系统下使用GDB调试C++程序【命令行调试与vscode编译器调试】
Is Fang
博客等级 码龄7年 764粉丝 · 152原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值