ROS学习第一步————创建工作空间&下载package包

ROS学习

ROS简介

ROS(Robot Operating System,机器人操作系统) 是一个用于机器人开发的开源框架,它为机器人软件的开发提供了一套标准化的工具和库。ROS并不是一个传统意义上的操作系统,而是一个运行在Linux上的中间件,用于处理机器人软件开发中的常见问题。


核心特点

  1. 模块化设计

    • ROS将机器人功能划分为独立的模块(称为“节点”),每个节点专注于完成一个任务(如传感器数据处理、运动控制等)。
    • 节点之间通过消息机制进行通信,支持分布式计算。
  2. 跨平台支持

    • ROS 1 主要支持 Linux 系统(如 Ubuntu)。
    • ROS 2 支持多平台,包括 Linux、Windows 和 macOS。
  3. 强大的工具链

    • 提供了大量工具,如:
      • Rviz:用于3D可视化。
      • Gazebo:用于物理仿真。
      • rosbag:用于记录和回放数据。
  4. 社区支持

    • ROS拥有一个活跃的开源社区,提供丰富的教程、文档和开源包,涵盖传感器驱动、路径规划、SLAM等领域。
  5. 开源生态

    • ROS是完全开源的,用户可以自由使用、修改和分发。

ROS架构

ROS的架构由以下主要组件组成:

  1. 节点(Node)

    • ROS中的基本执行单元,每个节点完成一个独立的任务。
    • 例如,一个节点负责读取激光雷达数据,另一个节点负责路径规划。
  2. 主题(Topic)

    • 节点之间通过主题进行通信。
    • 例如,激光雷达节点可以将数据发布到“/scan”主题,其他节点可以订阅该主题。
  3. 服务(Service)

    • 提供同步的请求-响应机制,用于需要即时反馈的任务。
  4. 参数服务器(Parameter Server)

    • 用于存储和管理全局参数,方便节点共享配置信息。
  5. 消息(Message)

    • ROS中的数据传输单位,定义了节点之间的通信格式。
  6. 动作(Action)

    • 用于处理需要较长时间完成的任务(如机器人导航),支持异步反馈。

ROS 1 和 ROS 2 的区别

特性ROS 1ROS 2
发布年份20072017
通信机制基于TCP/UDP基于DDS(实时通信支持)
平台支持仅支持Linux支持Linux、Windows、macOS
实时性不支持实时性支持实时性
安全性无内置安全机制支持认证与加密
适用场景传统机器人开发多机器人、嵌入式、工业应用

ROS应用场景

  1. 服务机器人
    • 家用机器人(如扫地机器人、语音助手机器人)。
  2. 工业机器人
    • 自动化生产线、物流机器人。
  3. 无人驾驶
    • 自动驾驶汽车中的传感器融合、路径规划等。
  4. 学术研究
    • 机器人算法开发与验证。
  5. 仿真与培训
    • 使用仿真工具(如Gazebo)进行虚拟环境测试。

ROS的优势

  1. 开源免费:降低开发成本。
  2. 模块化架构:支持分布式系统。
  3. 丰富的社区资源:快速获取已有的解决方案。
  4. 灵活性强:支持多种编程语言(如C++、Python)。

ROS的不足

  1. 学习曲线陡峭:需要掌握Linux、C++/Python等基础知识。
  2. 版本兼容性问题:不同ROS版本之间不完全兼容。
  3. 实时性较弱(主要针对ROS 1)。

ROS APT

APT是一种ubantu自带的一套软件包下载工具,类似于应用商城,使用它可以从网上的源服务器下载指定的软件包并自动安装

  • 进入网页https://index.ros.org/
    在这里插入图片描述
    简介:
    在这里插入图片描述
    ROS Index是搜索ROS和ROS 2资源(包括包、存储库和系统依赖项)的入口点。
    您可以在搜索栏中输入关键字和短语,然后根据资源类型过滤结果,或者您可以浏览完整的包、存储库和系统依赖项列表。

  • 点击package list
    在这里插入图片描述
    列举了ROS官方商店中的所有软件包

  • 包的基本信息
    随机选择一个package,进入其简介页面
    在这里插入图片描述
    左上角板块列举了当前package的版本号,开源协议,编译工具等
    左下角为package的源码信息,可以获取包的源代码进行学习和修改
    右侧为包的具体信息,包括简介,拓展链接,当前维护者和原作者,单击website可以查看软件包的使用细节的页面
    在这里插入图片描述

  • 如何进行下载
    在终端中输入 sudo apt install ros-<版本>-<package名>
    在这里插入图片描述

    • 如何确认版本版本:
      版本和Ubuntu版本相关
      ROS版本,支持的Ubuntu版本
ROSUbuntu版本对应的版本
ROSUbuntu 20.04 (LTS)Noetic
ROSUbuntu 18.04 (LTS)Melodic
ROS 2Ubuntu 22.04 (LTS)Humble
ROS 2Ubuntu 20.04 (LTS)Foxy

创建工作空间

  1. 打开Linux系统中的终端
    分别完成以下步骤

    • mkdir catkin_ws
      在主目录下新建一个文件夹
    • cd catkin_ws
      转移路径至主文件夹中的catkin_ws文件夹
    • mkdir src
      在catkin_ws文件夹下创建src文件夹,意为source用于存放资源
      在GitHub上下载资源需要进入src文件夹
    • cd src
      转移路径至主文件夹中的catkin_ws文件夹中的src文件夹下
      在这里插入图片描述
      以上为终端指令为操作系统基础指令
  2. 引入工具git
    在这里插入图片描述

  3. 进入GitHub网站,在搜索栏输入wqr_simulation,选中
    在这里插入图片描述

  4. 点击Code,复制链接
    在这里插入图片描述

  5. 在终端输入进行克隆
    在这里插入图片描述

  6. 安装scripts中的依赖包
    在这里插入图片描述
    在这里插入图片描述
    在终端中该目录中输入./install_for_noetic.sh
    在这里插入图片描述

    • scripts目录中主要存放脚本文件,用于完成一些使用频率不是很高的操作(文本文件和python程序)
  7. 编译工作空间中src的源码
    打开在catkin_ws路径下的终端输入catkin_make进行编译
    在这里插入图片描述

检验工作空间

  1. 将catkin_ws工作空间中的环境变量参数加载到终端程序中
    打开在catkin_ws路径下的终端输入source ~/catkin_ws/devel/setup.bash

在这里插入图片描述

  1. 打开仿真环境Gazebo
    在catkin_ws路径下的终端输入roslaunch wpr_simulation wpb_simple.launch
    出现如图所示页面
    在这里插入图片描述
  2. 测试Gazebo
    打开一个新的终端,输入rosrun rqt_robot_steering rqt_robot_steering,此指令调用的是rqt_robot_steering包,出现以下界面
    在这里插入图片描述
    调节速度可实现仿真中机器人的自由转动

设置空间变量的环境参数

通常我们会把设置工作空间的环境参数的source指令添加到终端程序初始化脚本~/.bashrc文件中以便于每次打开终端能够直接运行ROS程序,不需要反复重复

  • 在终端中输入 gedit ~/.bashrc,出现以下界面
    在这里插入图片描述
    在文件末尾新起一行,添加 source ~catkin_ws/devel/setup.bash并保存即可
### 如何下载 ROS 功能或查找可用的 ROS 列表 #### 使用 `apt` 安装官方发布的 ROS 对于基于 Debian 的 Linux 发行版(如 Ubuntu),可以利用系统的管理工具来安装已发布到 ROS 软件仓库中的功能。通过以下命令实现: ```bash sudo apt update sudo apt install ros-$ROS_DISTRO-package_name ``` 其中 `$ROS_DISTRO` 是当前使用的 ROS 版本代号,例如 `humble` 或 `noetic`;而 `package_name` 则是要安装的具体名[^1]。 #### 查找可用的 ROS 列表 可以通过访问 ROS 官方网站或者使用终端命令查询可获取的功能列表。以下是两种方法: - **在线资源**: 访问 [ROS Index](http://rosindex.github.io/) 可以浏览所有公开注册过的 ROS 及其文档链接。 - **本地搜索**: 如果已经配置好 ROS 源,则可以直接在命令行输入如下指令列出所有可能安装的: ```bash sudo apt-cache search ros-$ROS_DISTRO- ``` 此操作会返回一系列匹配项,每个项目代表一个独立的 ROS 组件或库文件[^2]。 #### 创建自定义 ROS 并添加依赖关系 如果目标未被预编译成二进制形式分发给用户端,那么就需要手动克隆源码至工作空间再自行构建它。通常这涉及以下几个方面的工作流程: 1. 初始化一个新的 Catkin 工作区 (假设尚未建立). ```bash mkdir -p ~/catkin_ws/src &amp;&amp; cd ~/catkin_ws/ catkin_make source devel/setup.bash ``` 2. Git clone 对应项目的远程存储地址进入 src 文件夹下. 3. 修改 CMakeLists.txt 和 package.xml 来声明新增加的外部依赖项,比如标准消息类型头文件(std_msgs),C++接口(roscpp)以及 Python绑定(rospy)[^4]. 4. 进入顶层目录重新执行一次完整的 make 流程完成最终组装过程. ```bash cd ~/catkin_ws/ rosdep install --from-paths src --ignore-src -r -y catkin_make ``` 上述步骤确保了即使某些特定需求无法直接满足时也能灵活应对各种复杂场景下的开发任务[^3]。 #### 验证话题信息 当成功部署某个节点之后,可通过下面这条语句检验其对外暴露的服务端口详情状况[^5]: ```bash rostopic info /topic_name ``` 替换 `/topic_name` 成实际关心的那个主题名称即可获得更详尽的数据流动描述记录。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值