首页 > 其他分享 >基于ROS2的智能协同系统

基于ROS2的智能协同系统

时间:2024-10-16 16:37:01浏览次数:7  
标签:协同 colcon package setup 智能 install xacro 安装 ROS2

基于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 urdf
  DESTINATION 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

标签:协同,colcon,package,setup,智能,install,xacro,安装,ROS2
From: https://www.cnblogs.com/Mintisn/p/18470231

相关文章

  • 车易泊车位管理相机 —— 智能管理,停车无忧
    在现代城市生活中,停车问题一直是困扰着车主和城市管理者的难题。车位难找、停车管理混乱等问题不仅浪费了人们的时间和精力,也影响了城市的交通秩序和形象。而车易泊车位管理相机的出现,为解决这些问题提供了一种高效、智能的解决方案。一、车易泊车位管理相机的功能与特点......
  • 独家爆料:OpenAI意外开源,Swarm AI多智能体框架!
    1.OpenAI开源Swarm智能体框架OpenAI刚开源的Swarm多智能体框架,短短时间就在github狂揽11.6w星!让我们先快速了解一下Swarm的主要特点:轻量级:Swarm以轻巧的架构,简化了代理的协调和执行。高度可控:简洁的接口让多代理系统控制变得精准易行。易于测试:设计上便于测试,让开......
  • ComfyGen:AI驱动的智能图像工作流生成器
    近日,来自Nvidia和特拉维夫大学的研究人员推出了一款名为ComfyGen的创新AI工具,为图像生成领域带来了新的突破。ComfyGen能够基于简单的文本提示自动生成复杂的图像工作流程,极大地简化了高质量图像生成的过程。ComfyGen的核心优势在于其多步骤工作流程approach。不同于传统......
  • 人工智能是如何走到今天的
    10月8日,瑞典皇家科学院宣布,2024年度诺贝尔物理学奖授予美国科学家约翰·霍普菲尔德(JohnHopfield)以及加拿大学者杰弗里·辛顿(GeoffreyHinton),以表彰他们利用人工神经网络实现机器学习的基础性发现和发明。此前大家预测的物理学奖热门领域(如凝聚态物理或量子物理)最终都没有获奖......
  • 可人工智能对话的单机游戏《樱园旧梦》游戏、源码、教程,完全免费和开源
    (一)游戏简介特点1:可人工智能对话,女主角自动理解和学习用户(男主角)所教的话语和知识,用户可以提问教过的话语。特点2:很美好的意境,高清全屏的三维虚拟世界。特点3:单机游戏(不联网),绿色游戏(免安装),低配置电脑也可以流畅运行,完全免费、完全开源、完整无缺。play文件夹里DreamStart.ex......
  • OpenAI 开源项目 “swarm” 涉嫌抄袭?智能体 Eagle DevAgent 深度解秘
    近日,OpenAI的新多智能体框架Swarm引发了一场激烈的争议——20岁创始人KyeGomez控诉OpenAI窃取了其初创公司Swarms的知识产权。青年才俊的G创始人声称,OpenAI不仅盗用了其项目的名称,还抄袭了相似的代码结构和方法。这一消息迅速引发了科技社区的广泛关注,这两个......
  • 基于深度学习的智能传感与监控
    基于深度学习的智能传感与监控技术通过利用传感器收集数据,并使用深度学习算法对这些数据进行分析,以实现智能化的监控和管理。这些系统广泛应用于智慧城市、工业自动化、医疗健康、农业、安防等领域,提升了数据分析的精确度、实时性和自动化水平。1.智能传感概述智能传感技术......
  • 8.7K+ Star!Swarm:一个多智能体协同框架
    Swarm简介Swarm[1]是一个由OpenAISolution团队管理的实验性框架,用于探索多智能体系统的协同工作。它提供了一个轻量级、高度可控的平台,适合开发者学习和实验多智能体协同的模式。注:它目前处于实验阶段,不推荐在生产环境中使用,因此没有官方支持。项目特点主要特点......
  • 2024.10.31 人工智能技术学 第三课时 AI
    预训练(前提基础)补充语料库微调:针对特定人任务的专门训练。——学科专业化推理:模型根据输入生成输出文本。——学生解答问题的过程生成式人工智能包括图像生成、音频生成、视频生成、文本生成海螺AI(很不错)文心一言kimi(写作业用)智谱清言CAJ可以读知乎论文PPTMINDSHOW:ht......
  • 生成式人工智能工程师认证,必须拿下
    最近听说百度智能云推出了“生成式人工智能工程师认证”,我还挺感兴趣的。作为一个在AIGC领域打拼的人,大家都知道,大模型这些年是真的火,从ChatGPT到各类国内外的大模型,感觉不学点东西就要被行业甩下了。所以听到有这么个认证,我第一反应是——这是不是个不错的学习机会?一方面,通过这样......