基于ROS2的智能协同系统

news/2024/10/22 10:54:28

基于ROS2的智能协同系统

任务一: 基础

任务

  • 配置ubuntu环境,注意ROS版本与ubuntu版本间的对应关系

  • 安装ROS 2框架

  • 使用Publisher-Subscriber结构,完成两个node节点间传输数据功能

    • 传输文字与视频

STEP: 配置Ubuntu环境

安装VMware

安装虚拟机(VMware)保姆级教程(附安装包)_vmware虚拟机-CSDN博客

下载 Ubuntu 22.04 LTS 镜像文件 Alternative downloads | Ubuntu 选择22.04的bittorrent文件,使用qbittorrent等软件下载就好.

配置好虚拟机

可能遇到的问题

VMware Workstation 17 运行虚拟机总是闪屏,有时还导致原系统死机/黑屏_vmware虚拟机不断闪屏-CSDN博客

STEP: 安装ROS2框架

按照这个步骤来 ubuntu22.04安装ROS2 详细教程-CSDN博客

如果遇到这个问题: [关于ROS安装及ROS定位不到软件包的问题解决_rosdep install --rosdistro melodic --ignore-src ---CSDN博客](https://blog.csdn.net/YMMMAR/article/details/122142925#:~:text=检查网络连接是否正常,可以尝试使用以下命令更新 软件包 列表: sudo apt-get update,源。 3. 检查 软件包 名称是否正确,有时候输入错误的 软件包 名称也会导致 定位不到软件包。)

可以尝试更换一下网络环境, 连接热点

STEP: ROS2入门

ROS2——创建ROS2工作空间_ros2创建工作空间-CSDN博客

跟着这个教程, 实现一个简单的订阅者和发布者:

ROS2入门教程—创建一个简单的订阅者和发布者(C++版)_ros2 c++-CSDN博客

过程中,可能需要安装rosdepcolcon :

安装colcon

colcon 是用于构建 ROS 2 工作空间的工具,如果你的系统提示 colcon: command not found,说明你还没有安装 colcon。你可以按照以下步骤来安装并配置 colcon

1. 安装 colcon

可以通过包管理器安装 colcon。首先,确保你的系统已经安装了 ROS 2,并且你的系统源已经配置好。

Ubuntu 下安装 colcon

执行以下命令来安装 colcon 和相关的构建工具:

sudo apt update
sudo apt install python3-colcon-common-extensions

这个命令会安装 colcon 以及一些常见的扩展,如用于自动补全的 colcon-cmakecolcon-ament-cmake 等。

2. 验证安装

安装完成后,你可以通过以下命令验证是否成功安装 colcon

colcon --version

如果命令输出 colcon 的版本号,则表示安装成功。按照gpt步骤做到这里就ok了, 之后跟着博客的步骤走

3. 设置环境变量(可选)

确保你已经正确地设置了 ROS 2 的环境变量。你可以通过在终端运行以下命令来加载 ROS 2 的环境:

source /opt/ros/<your_ros2_distro>/setup.bash

<your_ros2_distro> 替换为你正在使用的 ROS 2 发行版名称,比如 foxyhumble

为了每次启动终端时自动加载这些环境变量,你可以将这行命令添加到 ~/.bashrc 文件中:

echo "source /opt/ros/<your_ros2_distro>/setup.bash" >> ~/.bashrc
source ~/.bashrc

4. 构建 ROS 2 工作空间

安装完成 colcon 之后,你就可以在工作空间中使用它来构建功能包。比如进入你的工作空间:

cd ~/dev_ws
colcon build

这将会自动构建你在 src 目录中的所有 ROS 2 功能包。

总结

  • 通过 sudo apt install python3-colcon-common-extensions 安装 colcon
  • 确保正确加载 ROS 2 的环境变量。
  • 使用 colcon build 来构建你的工作空间。

在每次编译前, 需要确认功能包的依赖项是否安装好, 在dev_ws路径运行

rosdep install -i --from-path src --rosdistro humble -y

最后 实现两个节点的通信

. install/setup.bash
ros2 run cpp_pubsub listener

为什么需要. install/setup.bash

在 ROS 2 中,. install/setup.bash 是一个关键步骤,用于设置你工作空间中的环境变量,确保系统能够正确找到并运行你已经构建好的功能包。具体来说,这个步骤的主要作用如下:

1. 添加安装路径到环境变量

在你使用 colcon build 构建功能包时,构建的二进制文件和库会被安装到工作空间的 install 目录中。通过运行 . install/setup.bash,你会将 install 目录中的路径添加到你的环境变量(如 PATHLD_LIBRARY_PATHPYTHONPATHAMENT_PREFIX_PATH 等),使系统可以找到这些文件。

2. 为什么需要 source install/setup.bash

在你运行 ros2 run cpp_pubsub listener 这样的命令时,ROS 2 需要知道:

  • 从哪里加载功能包。
  • 从哪里找到依赖库和其他资源(例如,已编译的节点、消息定义等)。

当你运行 . install/setup.bash(相当于 source install/setup.bash),这会在当前的 shell 中执行脚本,更新你的环境变量,以便 ros2 命令能够找到你的功能包以及所有依赖项。

如果不运行这个步骤,ROS 2 可能找不到你刚刚构建的功能包,导致无法正确执行 ros2 run 命令。

3. 什么时候需要运行 install/setup.bash

  • 首次构建后:当你第一次通过 colcon build 构建了工作空间,你需要运行 . install/setup.bash 来让系统知道新的功能包和二进制文件的位置。
  • 每次新打开一个终端时:在每个新的终端会话中,环境变量不会自动保留。因此,每次打开一个新的终端后,如果你想运行工作空间中的功能包,你需要再次运行 . install/setup.bash

4. 使 install/setup.bash 自动加载(可选)

如果你不想每次都手动运行这条命令,你可以将它添加到你的 ~/.bashrc 文件中,以便每次打开新终端时自动加载:

echo "source ~/dev_ws/install/setup.bash" >> ~/.bashrc
source ~/.bashrc

总结

  • . install/setup.bash 的目的是将你的工作空间安装路径添加到环境变量中。
  • 它确保你能够使用 ros2 命令找到和运行你构建的功能包。
  • 每次打开新终端时,你都需要重新运行这条命令,或者将其加入 ~/.bashrc 文件以自动执行。

按照上述步骤我们实现了两个node节点间传输文本的功能, 下一步需要实现传输视频的功能.

STEP 两个节点间传输视频

需要检查自己是否安装了opencv2(或者说opencv4) 和 cv_bridge, 要想实现视频的传输, 我们需要这两个库.

合理使用prompt, 让gpt根据之前的基础模板参考实现一个传输视频的发布者和订阅者.

完善代码后, 需要和之前一样添加并完善依赖项:

<!-- package.xml   -->
<!-- 添加依赖项 --><buildtool_depend>rclcpp</buildtool_depend><buildtool_depend>std_msgs</buildtool_depend><buildtool_depend>sensor_msgs</buildtool_depend><buildtool_depend>cv_bridge</buildtool_depend><buildtool_depend>OpenCV</buildtool_depend>
# CMakeLists.txt
# find dependencies
find_package(ament_cmake REQUIRED)
# uncomment the following section in order to fill in
# further dependencies manually.
find_package(rclcpp REQUIRED)
find_package(std_msgs REQUIRED)
find_package(sensor_msgs REQUIRED)
find_package(cv_bridge REQUIRED)
find_package(OpenCV REQUIRED) # 添加openCV作为依赖项# 增加编译规则 发布者 
# 2024年10月15日: 添加依赖opencv4 cv_bridge
add_executable(talker src/publisher_member_function.cpp)
ament_target_dependencies(talker rclcpp std_msgs sensor_msgs cv_bridge OpenCV)
# 订阅者
add_executable(listener src/subscriber_member_function.cpp )
ament_target_dependencies(listener rclcpp std_msgs sensor_msgs cv_bridge OpenCV)

编译:

colcon build --packages-select cpp_pubsub

编译完成后分别运行listener talker

. install/setup.bash
ros2 run cpp_pubsub listener

我们就可以看到虚拟机上出现视频流了(如果要视频流畅, 你应该将定时器设置为40ms或以下)

image-20241016142336530

任务二: 仿真

  • 完成URDF、rviz、Gazebo的探索学习
  • 创建激光雷达,使用URDF创建自定义模型,在Gazebo中搭建仿真环境,在rviz模拟器中使用键盘完成对小车的控制,并实时在Gazebo中完成构图

URDF+Gazebo+Rviz仿真_gazebo模型显示在rviz-CSDN博客

ROS_blinkroad的博客-CSDN博客

新建一个功能包task2, 添加依赖项:

你需要在功能包的 package.xmlCMakeLists.txt 中配置依赖项,以便让你的功能包能够使用 urdfxacro 这些库。

1. package.xml 中添加依赖

package.xml 文件中,你需要明确声明你的功能包依赖于 urdfxacro。这可以确保在构建和运行时这些依赖项会被自动处理。

打开 package.xml 文件,在合适的地方(通常是在 <build_depend><exec_depend> 部分)添加如下依赖:

<package format="3"><!-- 其他已有内容 --><!-- 添加 urdf 和 xacro 依赖 --><build_depend>urdf</build_depend><exec_depend>urdf</exec_depend><build_depend>xacro</build_depend><exec_depend>xacro</exec_depend><!-- 其他已有内容 -->
</package>

解释:

  • <build_depend>:功能包在编译时所依赖的包。
  • <exec_depend>:功能包在运行时所依赖的包。

2. CMakeLists.txt 中添加依赖

CMakeLists.txt 中,你需要使用 find_package 来找到 urdfxacro 包,以确保它们在构建过程中被正确加载和使用。

打开 CMakeLists.txt,添加如下内容:

cmake_minimum_required(VERSION 3.5)
project(my_robot_package)# 找到 urdf 和 xacro 包
find_package(urdf REQUIRED)
find_package(xacro REQUIRED)# 其他已有内容 ...# 安装 URDF 文件
install(DIRECTORY urdfDESTINATION share/${PROJECT_NAME}/
)# 其他已有内容 ...

解释:

  • find_package(urdf REQUIRED)find_package(xacro REQUIRED) 会确保在构建时找到这两个包。
  • install(DIRECTORY urdf DESTINATION ...) 语句用于确保 urdf 文件夹中的 URDF 文件在安装包时被正确处理。

3. 重新构建功能包

在修改完 package.xmlCMakeLists.txt 之后,返回到工作空间的根目录,然后重新构建功能包:

cd ~/dev_ws
colcon build

通过这些步骤,你的功能包将正确依赖 urdfxacro,并且能够在启动时处理这些文件。

如果没有安装xacro, 先去安装

这个错误提示 CMake 找不到 xacro 包的配置文件,通常是因为 xacro 没有安装或没有被正确添加到 CMake 的查找路径中。可以按照以下步骤来解决问题:

1. 确认 xacro 是否已经安装

首先,确保 xacro 已经正确安装。可以使用以下命令检查:

ros2 pkg list | grep xacro

如果 xacro 没有安装,可以使用以下命令来安装它:

sudo apt update
sudo apt install ros-humble-xacro

(如果你使用的不是 ROS2 Humble 版本,将 humble 替换为你的 ROS2 版本,比如 foxygalactic。)

2. 设置 xacro_DIR 环境变量

如果 xacro 已经安装,但 CMake 仍然找不到它,可以通过手动设置 xacro_DIR 来指定其路径。

首先,找到 xacro 的安装位置。使用以下命令查找 xacro 包的安装目录:

ros2 pkg prefix xacro

这个命令会返回 xacro 包的安装路径,比如 /opt/ros/humble. 然后在你的 CMake 构建过程中,设置 xacro_DIR 环境变量:

export xacro_DIR=/opt/ros/humble/share/xacro/cmake

3. 修改 CMakeLists.txt

在你的 CMakeLists.txt 中,尝试使用 ament_cmake 来寻找 xacro,而不是直接调用 find_package(xacro REQUIRED)

find_package(ament_cmake REQUIRED)
find_package(xacro REQUIRED)

这可以确保 CMake 使用 ament_cmake 查找 ROS2 中的包,确保依赖项能够正确被识别和使用。

4. 重新构建功能包

在确认 xacro 已安装并设置了正确路径后,重新构建你的功能包:

cd ~/dev_ws
colcon build

总结:

  • 确保 xacro 已经安装。
  • 使用 ros2 pkg prefix xacro 找到 xacro 包的路径,并设置 xacro_DIR 环境变量。
  • 修改 CMakeLists.txt 使用 ament_cmake
  • 重新构建功能包。

这样应该可以解决 CMake 找不到 xacro 的问题。

colcon build --packages-select task2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/72307.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

客服系统结束对话,拉黑用户,拉黑用户IP功能

我们做在线客服系统,经常遇到有来捣乱的人,在我们的对话框页面胡乱发言 或者辱骂客服人员,我们客服系统支持将这个对话结束,把这个人来黑,把他的IP拉黑的功能 针对捣乱的人,可以一键三连,对方再也不能废话 gofly.v1kf.com 十年开发经验程序员,离职全心创业中,历时三年…

倒排索引

什么是倒排索引 倒排索引(Inverted Index)也叫反向索引,有反向索引必有正向索引。通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。 倒排索引的结构 倒排索引通常包含两个主要部分: 词项字典(Term Dictionary):存储所有词项及其相关信息(如词频、位…

vite+ts搭建的项目,@配置失效的解决办法

今天创建新项目,按照往常的管理去配置@别名安装依赖:因为path是node中的模块,node又不支持ts,所以:yarn add @types/node 或者 npm i @types/node然后进vite.config.ts,添加添加@别名 resolve: {alias: {@: resolve(__dirname, src)}}其实到这里,就可以使用@符号了,但仅…

点阵数码管显示屏驱动VK16K33C SOP20高亮LED数显屏驱动芯片,内置RC振荡器, I2C通讯接口

产品品牌:永嘉微电/VINKA 产品型号:VK16K33C 封装形式:SOP20 概述 VK16K33C是一种带按键扫描接口的数码管或点阵LED驱动控制专用芯片,内部集成有数据锁 存器、键盘扫描、LED 驱动模块等电路。数据通过I2C通讯接口与MCU通信。SEG脚接LED阳 极,GRID脚接LED阴极,可支持8SEGx…

网站首页在后台哪里修改?网站后台管理员密码修改?

网站首页修改位置登录后台:首先使用管理员账号登录到网站的内容管理系统(CMS)后台。 导航至页面管理:在后台管理界面中找到“页面管理”或“内容管理”的选项。 选择首页编辑:在页面列表中找到网站首页对应的条目,点击进入编辑模式。 进行修改并保存:根据需求修改首页内…

网站后台修改模板?公司网站轮播如何修改?

网站后台修改模板登录后台:使用管理员账号登录网站后台。 导航至模板管理:在后台主界面中找到“模板管理”、“主题设置”或类似的选项。选择模板:从模板列表中选择当前使用的模板或想要切换的新模板。编辑模板:进入模板编辑页面,可以对模板的样式、布局等进行调整。保存并…

微信小程序-wxs

<wxs src="../../wxs/filter.wxs" module="tools"></wxs>具体参考小程序文档-框架 具体使用: 1.demo.wxml <wxs src="../../wxs/filter.wxs" module="tools"></wxs> <view class="numweek {{tools.d…