ROS2极简总结-文件系统


参考文献: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 github_link

    • 实例: $ 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


    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 包所需的依赖项。
    • 第一次,需要运行:
    • $ sudo rosdep init
    • $ 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)

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
### 回答1: ROS2 Web Bridge是一个开源的软件包,旨在使ROS2(Robot Operating System 2)与Web端进行通信和交互。它提供了一种简单而强大的方式,通过WebSocket协议将ROS2系统中的数据传输到Web浏览器。 ROS2 Web Bridge允许Web开发人员使用常见的Web技术(例如JavaScript)直接与ROS2系统进行交互。它提供了一个轻量级的接口,可以订阅和发布ROS2主题,并在Web浏览器中实时显示传感器数据、控制机器人等。 此外,ROS2 Web Bridge还支持ROS2服务和动作。它允许Web应用程序在Web端调用ROS2服务,从而实现与ROS2节点的双向通信。通过一个用户友好的Web界面,用户可以发送控制命令给机器人,执行任务并获得实时反馈。 ROS2 Web Bridge的主要优点之一是其跨平台性。它基于WebSocket协议,因此可以在不同的操作系统和设备上使用,无论是在PC端还是移动设备上。 此外,ROS2 Web Bridge还支持认证和授权机制,以确保通信安全。这对于确保只有被授权的用户可以访问和控制ROS2系统非常重要。 总的来说,ROS2 Web Bridge为ROS2系统提供了一种简便而强大的方式,使Web开发人员能够与ROS2系统进行交互。它扩展了ROS2的功能,使得机器人开发更加灵活和可视化。 ### 回答2: ros2-web-bridge是一种用于在ROS 2和Web应用程序之间进行通信的桥接工具。ROS 2是机器人操作系统的第二代版本,而Web应用程序是通过Web浏览器访问的应用程序。 ros2-web-bridge有几个主要功能。首先,它允许ROS 2中的节点直接与通过Web浏览器访问的Web应用程序进行通信。这使得在Web界面上实时监控和控制ROS 2系统变得更加容易。例如,可以使用ros2-web-bridge将传感器数据从ROS 2节点发送到Web应用程序,以便在Web界面上实时显示传感器数据。同时,还可以将来自Web界面的用户输入发送到ROS 2节点,以便远程控制机器人或系统。 其次,ros2-web-bridge还提供了一些工具和API,用于将ROS 2中的消息和服务转换为Web格式。这使得可以轻松地在ROS 2和Web应用程序之间进行数据传输和交互。它支持使用ROS 2的套接字和JSON进行通信,并提供了将消息和服务转换为JSON格式以及反向转换的功能。这样,ROS 2节点可以与通过Web浏览器访问的Web应用程序进行无缝通信。 总而言之,ros2-web-bridge为ROS 2和Web应用程序之间的通信提供了一个便捷的桥梁。它简化了ROS 2系统与Web界面之间的集成,并提供了实时数据传输和远程控制的能力。这对于构建基于ROS 2的机器人或系统的开发者和使用者来说是非常方便的工具。 ### 回答3: ros2-web-bridge是一个用于将ROS 2和Web技术进行连接的工具。它提供了一个桥接器,使得可以通过Web浏览器与ROS 2通信。这个工具是建立在ROS 2和Web Socket之间的通信基础上的。 通过ros2-web-bridge,我们可以在Web浏览器中实时地订阅和发布ROS 2的消息。这使得我们可以通过Web界面来控制ROS 2的机器人,或者将ROS 2的数据可视化展示出来。这对于远程监控、远程操作和数据可视化都非常有用。 ros2-web-bridge使用ROS 2提供的接口来与ROS 2系统进行通信。它将ROS 2的消息转换为适用于Web Socket的格式,并在浏览器和ROS 2之间建立起适配的连接。通过这种方式,Web界面就能够与ROS 2系统进行实时的双向通信。 ROS 2中的消息传递方式是异步的,而Web浏览器通常使用同步的方式进行通信。ros2-web-bridge通过在ROS 2和Web Socket之间进行适配和转换,使得二者能够协同工作。这意味着ROS 2中的数据可以通过ros2-web-bridge传输到Web浏览器,并在该浏览器中进行处理和展示。 总的来说,ros2-web-bridge是一个功能强大的工具,它架起了ROS 2和Web技术之间的桥梁。它使得我们可以通过Web浏览器来与ROS 2进行通信,进而实现远程操作和数据可视化的目的。通过ros2-web-bridge,我们可以更加灵活和方便地利用ROS 2的功能。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangrelay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值