Loading [MathJax]/jax/output/CommonHTML/fonts/TeX/AMS-Regular.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >ROS2极简总结-文件系统

ROS2极简总结-文件系统

作者头像
zhangrelay
发布于 2021-12-02 04:55:25
发布于 2021-12-02 04:55:25
3.3K00
代码可运行
举报
运行总次数:0
代码可运行
参考文献:ROS2 Filesystem

概述

  1. 什么是功能包?
  2. 工作空间结构如何?
  3. 如何新建工作空间和功能包?

功能包

  • ROS2 软件称为功能包。
  • ROS2 中最小的构建部件。
  • 专用于一种功能,例如 :
    • 硬件驱动
    • 算法
    • 可视化工具
    • 库 ...
  • 包可以分组到综合包(例如 navigation2)
    • 引用一个或多个相关包
    • 只包含执行依赖
    • 有利于发布和版本控制

功能包安装选项

Debian Package 功能包

Source Repositories 源代码

Automatic installation 自动安装

"Latest" code “最新”代码

Stable versions 稳定版本

Manual compilation 手动编译

Prebuilt binaries 预建二进制文件

Allows code adjustments 允许代码调整

功能包安装

Debian

$ sudo apt install ros-<distro>-package-name

实例:$ sudo apt install ros-foxy-nav2-core

! package_name: nav2_core --> install:ros-foxy-nav2-core

  • 自动安装
    • 位置: /opt/ros/<distro>/...
    • 安装所有需要的依赖条件

源代码安装

  • 下载源码: 在自定义工作空间 (如 ~/devel_ws/src): git clone https://github.com/ros/ros_tutorials.git -b foxy-devel
  • 安装此功能包所有的依赖 $ rosdep install --from-paths src --ignore-src --rosdistro foxy -y
    • rosdep :必备,实例如下
    • 管理多个版本控制的功能包: vcstool
      • 版本控制系统 (version control system,VCS) 工具
      • 一个命令行工具,可以更轻松地处理多个存储库。例如:工作空间(如 ~/devel_ws):

$ wget https://raw.githubusercontent.com/ROBOTIS-GIT/turtlebot3/foxy-devel/turtlebot3.repos

$ vcs import src < turtlebot3.repos

功能包内容-文件夹结构

Python功能包

$ ros2 pkg create --build-type ament_python --dependencies [deps] --node-name my_node my_package

文件:

  • setup.cfg:setuptools 可执行文件放在 lib 中
  • setup.py:setuptools 的安装脚本

CMake功能包

$ ros2 pkg create --build-type ament_cmake --dependencies [deps] --node-name my_node my_package

package.xml

  • 功能包的元信息
  • 列出包的依赖项

依赖关系

  • 依赖项可以是其他 ROS 包和系统库(例如 Boost)
  • 依赖项:
    • <buildtool_depend>:编译工具需要
    • <exec_depend>:执行时需要(例如 Python 脚本)
    • <build_depend>:编译所需(例如 rclcpp、ament_cmake)
    • <test_depend> :运行单元测试所需
    • <build_export_depend> : 如果导出的头文件依赖于其他头文件
    • <depend> :多合一(<build_depend>、<build_export_depend> 和 <exec_depend>)

setup.py

实例 (turtlebot_teleop package): 路径: ~/devel_src/src/turtlebot/turtlebot_teleop

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    setup(
      ...
      entry_points={
          'console_scripts': [
              'teleop_keyboard = 
              turtlebot3_teleop.script.teleop_keyboard:main'
          ],
      },
    )

安装teleop_keyboard的可执行文件到devel_ws/install/turtlebot3_teleop/lib/ turtlebot3_teleop/。

CMakeLists.txt

定义编译规则。 例如:

  • 声明可执行文件的编译
  • 如何解析头文件和库引用

主要是 CMake,加上特定于 ament 的内容。

CMakeLists.txt案例:

Colcon-通用型编译工具

  • 编译系统:在单个包上运行
  • 编译工具:对一组包进行操作

使用案例:

  • # 避免每次调整 python 脚本时都需要重新编译
    • $ colcon build --symlink-install
  • # 编译指定功能包
    • $ colcon build --packages-up-to <name-of-pkg>

具体参考colcon官方帮助文档。

Lint 工具

Lint 工具:静态检查 Python 或 C++ 源代码的错误和标准合规性。

对于Python功能包

  • package.xml
    • <test_depend>ament_copyright</test_depend>
    • <test_depend>ament_flake8</test_depend>
    • <test_depend>ament_pep257</test_depend>

对于CMake功能包

  • package.xml
    • <test_depend>ament_lint_auto</test_depend>
    • <test_depend>ament_lint_common</test_depend>

ament_lint_auto: ament_cmake_copyright, ament_cmake_cppcheck,ament_cmake_flake8, ament_cmake_lint_cmake, ament_cmake_pep257, ament_xmllint ament_lint_common: ament_clang_format, ament_clang_tidy, ament_cmake_clang_format, ament_cmake_clang_tidy

工作空间

  • 包含具有特定结构的 ROS 2 包的目录
  • 结构

Colcon 在编译 src/ 时候创建 build/ install/ log/

用于开发

  • 源代码空间(src/):
    • 包含功能包的源版本
  • 编译空间(build/):
    • 调用 CMake 并生成工件的位置

准备安装

  • 安装空间(install/):
    • 准备发布的独立包
  • 包结构类似于 /opt/ros/<distro>

环境设置文件

  • 工作空间初始化时生成的安装文件:setup.bash、setup.zsh ...
  • 在使用 ROS 2 之前获取 ROS 2 安装工作空间
    • $ source /opt/ros/<distro>/setup.bash
  • 获取自定义的工作空间: $ source <ws-path>/install/setup.bash

---> ROS可以找到并使用ROS环境内的任何资源

编译工作空间示例:

  • 进入工作空间目录:$ cd ~/devel_ws
  • 初始化 ROS 2 安装工作空间 $ source /opt/ros/foxy/setup.bash
  • 安装 rosdep 包的所有依赖项:下载并安装 ROS 包所需的依赖项。 第一次,需要运行: rosdep update
  • 安装功能包的所有依赖项
    • 然后可以使用:
    • $ rosdep install --from-paths src --ignore-src --rosdistro foxy -y
  • 编译工作空间
    • $ colcon build --symlink-install
  • 在工作空间中编译 colcon 后,导入 ROS 环境:
    • $ source <ws-path>/install/setup.bash(包括 /opt/ros/<distro>/setup.bash)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/08/02 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​[ROS2]源码安装turtlebot3用于调试(简易版)
注意:链接中的https://ghproxy.com/ 为使用代理下载github代码。
首飞
2022/04/13
5670
​[ROS2]源码安装turtlebot3用于调试(简易版)
[ROS2]数据回放伴侣Rviz+plotjuggler
PlotJuggler是一个类似于rqt_plot的基于Qt的数据可视化工具。但PlotJuggler拥有更强大和好用的功能。你可以导入文本文件让它显示文本文件中的数据。你也可以导入ros的bag包,它能自动解析bag包中的数据。并可以回放bag包的数据,然后用Rviz来显示数据。PlotJuggler的功能有很多,这里只介绍几种我常用的功能。应该足以应付日常的机器人开发调试工作。
首飞
2022/05/01
1.5K0
[ROS2]数据回放伴侣Rviz+plotjuggler
webots和ros2笔记02-启程
看完01-资料篇https://zhangrelay.blog.csdn.net/article/details/112670542。
zhangrelay
2021/03/03
8750
ROS2机器人实验报告提示02➡沼泽⬅
颜色属性(color profile)这个选项请注意,不用输密码,一路取消……镜像不能保存在本体,但可以保存到其他盘。
zhangrelay
2021/12/02
3970
ROS2机器人实验报告提示02➡沼泽⬅
ROS2极简总结-命令行接口基础
ros2 <main_command> <sub_command> <<arguments>>
zhangrelay
2021/12/02
1.7K0
ROS2极简总结-命令行接口基础
ROS2 框架下运行 Python
ROS2是怎么搭建这个房子的呢?它是要先创建一个统一的固定名字的文件夹“src”,然后在这个文件夹下面再去具体定义各个房间。
为为为什么
2024/07/12
7200
[ROS2]下载Navigation2源码来学习
注意:链接中的https://ghproxy.com/ 为使用代理下载github代码。
首飞
2022/04/24
6280
[ROS2]下载Navigation2源码来学习
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
参考链接:https://github.com/bunchofcoders/basic_bocbot
zhangrelay
2020/02/19
3.9K0
使用机器人操作系统ROS 2和仿真软件Gazebo 9搭建机器人教程(一)
ROS2机器人应用简明教程4工区
工区/工作区/工作空间(workspace简写为ws)是机器人操作系统核心概念之一。
zhangrelay
2020/07/03
9350
ROS2机器人应用简明教程4工区
ROS2之OpenCV的windows和linux差异在哪里
使用 rosdep install 看到 wnen 的错误只是 rosdep 告诉它不知道给定操作系统的“opencv2”是什么,因此它无法安装满足 cv_basics pacakge 的 package.xml 中列出的要求的东西.至于解决方案,建议参考问题#232795,该问题很好地解释了 rosdep 的工作原理以及您接下来可以做什么。
zhangrelay
2022/06/15
7590
ROS2、slam_toolbox、Navigation2、Gazebo(转)
Slam Toolbox软件包基于LaserScan消息的形式组合来自激光测距仪的信息,并从odom-> base链接中进行了TF转换,从而创建了空间的二维地图。该软件包将允许完全序列化重新加载的SLAM地图的数据和姿态图,用于持续建图、定位,合并或进行其他操作。允许SLAM Toolbox在同步(即,处理所有有效的传感器测量,无论是否滞后)和异步(即,在可能的情况下处理有效的传感器测量)模式下运行。
zhangrelay
2020/03/09
2.7K0
ROS2、slam_toolbox、Navigation2、Gazebo(转)
Webots和ROS2使用说明(部分翻译)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/18
1.7K0
Webots和ROS2使用说明(部分翻译)
【C++】ROS:ROS2环境配置与基础示例
ROS 2 (Robot Operating System 2)是一个开源的机器人操作系统,它是ROS(Robot Operating System)的下一代版本。它提供了一系列工具、库和约定,用于构建机器人应用程序。与ROS 1相比,ROS 2具有更强大的功能,更好的性能和更好的可靠性。
DevFrank
2024/07/24
2.2K0
【C++】ROS:ROS2环境配置与基础示例
ubuntu18.04 LTS安装ROS图文教程「建议收藏」
没有安装Ubuntu18.04LTS的自行安装,安装过程祥见我的另一篇文章,地址如下
全栈程序员站长
2022/09/30
1.9K0
ubuntu18.04 LTS安装ROS图文教程「建议收藏」
ROS2编程基础课程--colcon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
zhangrelay
2019/09/19
2.8K0
ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机
前面的文章《ROS2 机器人操作系统入门和安装以及如何使用 .NET 进行开发》中提到,组成机器人的关键部分主要是电机、传感器、软件和电池。机器人的智能感知主要通过视觉传感器,视觉传感器对于机器人来说,就像人类之于眼睛的关系,可说非常重要。那么如何通过 ROS 获取远端机器人的摄像机传感器的图像信息呢?
桑榆肖物
2023/08/22
2K0
ROS2 中 使用奥比中光 Orbbec Astra Pro 深度相机
计算机操作系统(OS)安装机器人操作系统(ROS)实现物联网功能
博客中大量介绍了将Ubuntu等Linux系统借助机器人操作系统ROS实现机器人控制设计开发和物联网功能案例,并可基于OpenAI等实现人工智能相关训练。
zhangrelay
2021/03/03
2.1K0
ROS文件系统(工程结构)
介绍catkin的编译系统,catkin工作空间的创建和结构,package软件包的创建和结构,介绍CMakeLists.txt文件,package.xml以及其他常见文件。
小飞侠xp
2019/05/13
1.8K0
ROS文件系统(工程结构)
ROS 2 Humble Hawksbill 之 f1tenth gym
# F1TENTH gym environment ROS2 communication bridge This is a containerized ROS communication bridge for the F1TENTH gym environment that turns it into a simulation in ROS2.
zhangrelay
2022/06/30
1.5K0
ROS 2 Humble Hawksbill 之 f1tenth gym
ROS2机器人编程简述humble-第二章-DEVELOPING THE FIRST NODE .2
0.1ROS2机器人编程简述新书推荐-A Concise Introduction to Robot Programming with ROS2
zhangrelay
2023/02/03
6290
推荐阅读
相关推荐
​[ROS2]源码安装turtlebot3用于调试(简易版)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验