ROS和ROS2借助智能大模型的学习和研究方法

news2024/9/21 20:03:02

机器人相关知识的本身和价值-CSDN博客

知识本身在智能时代毫无价值,需要基于知识应用和创新才有价值。 

学历报废并非来自扩招,而是智能模型的快速发展。-CSDN blink-领先的开发者技术社区 

2024年中秋,智能模型实力已经如此,但还有大量朋友笃定旧模-CSDN blink-领先的开发者技术社区

 

真实故事可以网络自行搜索,但愿给朋友们一些启发, 2013年的事情,距离现在已经10多年啦。


视频:

ROS和ROS2借助智能大模型的学习和研究方法


ROS/ROS2:

roslaunch urdf_tutorial display.launch model:=green_cube.urdf

ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf

 

首先,我们来深入解析两条命令:roslaunch urdf_tutorial display.launch model:=green_cube.urdf 和 ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf。这两条命令分别用于在 ROS 1 和 ROS 2 中启动一个名为 urdf_tutorial 的包中的可视化节点,并传递一个 URDF 模型文件作为参数。

ROS 1 命令解析:roslaunch urdf_tutorial display.launch model:=green_cube.urdf
包名:urdf_tutorial 是 ROS 包的名字,这个包应该包含你所需的 URDF 文件、launch 文件和其他相关资源。
launch 文件:display.launch 是一个 XML 格式的 ROS 1 启动文件,它定义了要启动的节点、节点之间的连接、参数设置等。
参数传递:model:=green_cube.urdf 是一个传递给 display.launch 文件的参数。在 launch 文件中,这个参数通常会被用来设置某个节点的参数,比如 robot_description,它定义了机器人的 URDF 模型。
工作原理:当执行这个命令时,ROS 1 会查找 urdf_tutorial 包中的 display.launch 文件,并根据其中的定义启动相应的节点。同时,它会将 model 参数的值设置为 green_cube.urdf,并在启动过程中将这个值传递给需要的节点。
ROS 2 命令解析:ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf
包名:同样,urdf_tutorial 是 ROS 2 包的名字。
launch 文件:display.launch.py 是一个 Python 格式的 ROS 2 启动文件。与 ROS 1 的 XML 格式不同,ROS 2 使用了更现代的 Python API 来定义启动过程。
参数传递:model:=green_cube.urdf 同样是一个参数,但它被传递给 display.launch.py 文件。在 Python 启动文件中,这个参数可以通过 launch.substitutions.LaunchConfiguration 或 launch.actions.DeclareLaunchArgument 等 API 来获取和使用。
工作原理:当执行这个命令时,ROS 2 会查找 urdf_tutorial 包中的 display.launch.py 文件,并执行其中的 Python 代码来启动节点。在代码执行过程中,它会处理传递进来的 model 参数,并将其用于配置节点或设置参数。
关键点对比
文件格式:ROS 1 使用 XML 格式的 launch 文件,而 ROS 2 使用 Python 格式的 launch 文件。
API:ROS 1 和 ROS 2 的 launch 系统使用了不同的 API。ROS 1 主要依赖于 XML 标签来定义启动过程,而 ROS 2 则提供了更灵活的 Python API。
参数传递:在两种系统中,参数都可以通过命令行传递给 launch 文件。但在 ROS 2 中,参数的处理和使用更加灵活和强大。
节点配置:在 ROS 2 中,节点的配置和启动更加模块化和可重用。你可以使用 Python 代码来动态地创建和配置节点,这在 ROS 1 中是比较困难的。
总的来说,ROS 2 的 launch 系统提供了更多的灵活性和功能,使得启动和配置 ROS 应用程序变得更加容易和强大。同时,由于 ROS 2 使用了更现代的 Python 语言,它也更容易与其他 Python 库和工具集成。

 


ROS

在ROS(Robot Operating System)中创建一个URDF(Unified Robot Description Format)文件通常是为了描述机器人的结构、视觉和物理特性。URDF是XML格式的文件,它扩展了SDF(Simulation Description Format)并整合了URDF和XACRO的功能。以下是一个简单教程,教你如何创建一个描述绿色立方体的URDF文件。

1. 安装必要的ROS包
首先,确保你已经安装了ROS和一些必要的依赖包,比如xacro。

bash
sudo apt-get install ros-<your_ros_distribution>-xacro
将 <your_ros_distribution> 替换为你使用的ROS发行版本,例如noetic。

2. 创建一个ROS包
使用 catkin_create_pkg 命令创建一个新的ROS包,例如 my_robot_description:

bash
cd ~/catkin_ws/src  
catkin_create_pkg my_robot_description urdf xacro
3. 创建URDF文件
在 my_robot_description 包内创建一个文件夹 urdf,然后在其中创建一个文件 green_cube.urdf:

bash
cd ~/catkin_ws/src/my_robot_description  
mkdir urdf  
touch urdf/green_cube.urdf
编辑 green_cube.urdf 文件,添加以下内容:

xml
<robot name="green_cube">  
    <!-- Link for the green cube -->  
    <link name="cube">  
        <visual>  
            <geometry>  
                <box size="0.1 0.1 0.1"/> <!-- Size of the cube in meters -->  
            </geometry>  
            <material name="green">  
                <color rgba="0 1 0 1"/> <!-- Green color with full opacity -->  
            </material>  
        </visual>  
        <collision>  
            <geometry>  
                <box size="0.1 0.1 0.1"/> <!-- Same size for collision detection -->  
            </geometry>  
        </collision>  
        <inertial>  
            <mass value="1.0"/> <!-- Mass of the cube in kilograms -->  
            <origin xyz="0 0 0" rpy="0 0 0"/> <!-- Center of mass -->  
            <ixx value="0.01"/> <!-- Moments of inertia -->  
            <iyy value="0.01"/>  
            <izz value="0.01"/>  
            <ixy value="0.0"/>  
            <ixz value="0.0"/>  
            <iyz value="0.0"/>  
        </inertial>  
    </link>  
  
    <!-- Joint to attach the cube to the world, assuming a fixed joint -->  
    <joint name="cube_joint" type="fixed">  
        <parent link="world"/>  
        <child link="cube"/>  
        <origin xyz="0 0 0" rpy="0 0 0"/> <!-- Position and orientation relative to the world -->  
    </joint>  
</robot>
4. 验证URDF文件
你可以使用 urdf_parser 和 check_urdf 来验证你的URDF文件是否正确。

首先,确保你已经安装了 urdfdom 工具:

bash
sudo apt-get install ros-<your_ros_distribution>-urdfdom
然后,执行以下命令来检查URDF文件:

bash
check_urdf urdf/green_cube.urdf
如果没有错误输出,说明你的URDF文件是有效的。

5. 在RViz中可视化
为了可视化你的绿色立方体,可以创建一个launch文件。在 my_robot_description 包的根目录下创建一个 launch 文件夹,并在其中创建一个 display.launch 文件:

bash
cd ~/catkin_ws/src/my_robot_description  
mkdir launch  
touch launch/display.launch
编辑 display.launch 文件,添加以下内容:

xml
<launch>  
    <param name="robot_description" command="$(find xacro)/xacro '$(find my_robot_description)/urdf/green_cube.urdf'" />  
    <include file="$(find rviz)/launch/rviz.launch">  
        <arg name="display_config" value="$(find my_robot_description)/launch/display_config.rviz"/>  
    </include>  
</launch>
注意:display_config.rviz 是一个可选的RViz配置文件,你可以手动创建并配置它,或者直接在RViz中手动配置显示。

6. 启动RViz
现在,你可以启动RViz并显示你的绿色立方体:

bash
roslaunch my_robot_description display.launch
在RViz中,你应该能看到一个绿色的立方体,如果没有,请确保在“Add”按钮下添加了 RobotModel 显示类型。

总结
通过以上步骤,你已经成功创建了一个描述绿色立方体的URDF文件,并在RViz中进行了可视化。这是一个非常基础的示例,但它展示了URDF文件的基本结构和内容。你可以进一步扩展这个文件,添加更多的链接和关节,以描述更复杂的机器人结构。

这些错误信息指出了你的URDF文件中的几个问题,并提供了修复建议。让我们逐一解决这些问题:

错误: [ERROR] [1726654584.393937518]: Inertial element must have inertia element
问题: <inertial> 标签中缺少必要的 <inertia> 子标签。
修复: 在 <inertial> 标签中添加 <inertia> 标签,并指定 ixx, iyy, izz, ixy, ixz, iyz 的值。
错误: [ERROR] [1726654584.396002697]: Could not parse inertial element for Link [cube]
问题: 解析 <inertial> 元素时出错,可能是由于格式不正确或缺少必要的子元素。
修复: 确保 <inertial> 标签格式正确,包含 <mass>, <origin>, 和 <inertia> 子标签。
错误: [ERROR] [1726654584.396253111]: Failed to build tree: parent link [world] of joint [cube_joint] not found. This is not valid according to the URDF spec. Every link you refer to from a joint needs to be explicitly defined in the robot description. To fix this problem you can either remove this joint [cube_joint] from your urdf file, or add "<link name="world" />" to your urdf file.
问题: URDF文件中引用了名为 world 的父链接,但在文件中未定义。
修复: 在URDF文件顶部添加 <link name="world"/> 定义,或者如果 world 链接不是必需的(通常用于固定关节),可以考虑移除 cube_joint 或更改其父链接到已定义的链接。
修复后的 green_cube.urdf 文件应如下所示:

xml
<robot name="green_cube">  
    <!-- 定义world链接,尽管它通常不需要具体的几何或物理属性 -->  
    <link name="world"/>  
  
    <!-- Link for the green cube -->  
    <link name="cube">  
        <visual>  
            <geometry>  
                <box size="0.1 0.1 0.1"/> <!-- Size of the cube in meters -->  
            </geometry>  
            <material name="green">  
                <color rgba="0 1 0 1"/> <!-- Green color with full opacity -->  
            </material>  
        </visual>  
        <collision>  
            <geometry>  
                <box size="0.1 0.1 0.1"/> <!-- Same size for collision detection -->  
            </geometry>  
        </collision>  
        <inertial>  
            <mass value="1.0"/> <!-- Mass of the cube in kilograms -->  
            <origin xyz="0 0 0" rpy="0 0 0"/> <!-- Center of mass -->  
            <inertia ixx="0.01" iyy="0.01" izz="0.01" ixy="0.0" ixz="0.0" iyz="0.0"/>  
        </inertial>  
    </link>  
  
    <!-- Joint to attach the cube to the world, assuming a fixed joint -->  
    <joint name="cube_joint" type="fixed">  
        <parent link="world"/>  
        <child link="cube"/>  
        <origin xyz="0 0 0" rpy="0 0 0"/> <!-- Position and orientation relative to the world -->  
    </joint>  
</robot>
确保所有标签都正确闭合,并且属性值用引号括起来。现在,你的URDF文件应该能够正确解析,并且在RViz中可视化时不会出现错误。

当你使用 roslaunch 命令来启动一个 ROS(Robot Operating System)节点,并且指定了一个 URDF(Unified Robot Description Format)文件时,你需要确保几个关键点:

ROS包和URDF文件的存在:确保你有一个名为 urdf_tutorial 的 ROS 包,并且在该包的某个目录下有一个名为 green_cube.urdf 的文件。
launch文件:确保在 urdf_tutorial 包的 launch 文件夹中有一个名为 display.launch 的文件。这个文件应该包含启动 RViz 或其他可视化工具的配置。
launch文件的内容:display.launch 文件应该包含正确的参数传递,以便能够加载你指定的 URDF 文件。通常,这会涉及到设置一个参数,比如 robot_description,来指向你的 URDF 文件的内容。
环境设置:确保你的 ROS 环境已经正确设置,包括 source /opt/ros/<distro>/setup.bash(根据你的 ROS 发行版替换 <distro>)和 source ~/catkin_ws/devel/setup.bash(如果你是在一个工作空间中工作的话)。
正确的模型路径:在 roslaunch 命令中,model:=green_cube.urdf 是一个传递给 launch 文件的参数。确保这个参数在 display.launch 文件中被正确使用,通常是通过一个 <arg> 标签和一个 <param> 标签来实现的。
例如,你的 display.launch 文件可能看起来像这样:

xml
<launch>  
    <!-- 声明一个参数,可以在命令行中覆盖 -->  
    <arg name="model" default="default_model.urdf"/>  
  
    <!-- 设置 robot_description 参数,指向指定的 URDF 文件 -->  
    <param name="robot_description" command="$(find xacro)/xacro '$(find urdf_tutorial)/urdf/$(arg model)'" />  
  
    <!-- 启动 RViz -->  
    <node name="rviz" pkg="rviz" type="rviz" args="-d $(find urdf_tutorial)/rviz.rviz" />  
</launch>
注意,上面的例子使用了 xacro 来处理 URDF 文件,这是一种常见的做法,因为 XACRO 文件可以包含宏和变量,使 URDF 文件更加模块化和可重用。如果你的 green_cube.urdf 实际上是一个 XACRO 文件(通常扩展名为 .xacro),你需要确保文件扩展名正确,并且在 <param> 标签中使用 xacro 命令来处理它。

如果你的 green_cube.urdf 是一个纯 URDF 文件,不需要 xacro 处理,那么你可以直接设置 robot_description 参数为文件的内容,或者使用 rosparam load 命令从文件加载参数。

最后,确保你在正确的目录下运行 roslaunch 命令,通常是在你的 ROS 工作空间的根目录或包含 urdf_tutorial 包的目录下。

如果你遇到任何错误,请检查 ROS 的日志输出,它通常会提供关于问题所在的详细信息。

ROS2

在 ROS 2 中,与 ROS 1 相比,有一些关键的变化,特别是在启动文件和参数传递方面。首先,ROS 2 通常使用 Python 格式的启动文件(.launch.py),而不是 XML 格式。其次,参数传递和节点配置的方式也有所不同。

如果你有一个名为 urdf_tutorial 的 ROS 2 包,并且想要使用 display.launch.py 来启动一个可视化节点,同时传递一个 URDF 文件作为参数,你需要确保以下几点:

ROS 2 包和 URDF 文件:确保你的 ROS 2 工作空间中已经包含了 urdf_tutorial 包,并且在该包的某个目录下有一个名为 green_cube.urdf 的文件。
launch 文件:在 urdf_tutorial 包的 launch 文件夹中应该有一个名为 display.launch.py 的 Python 文件。这个文件应该包含启动节点和配置参数的必要代码。
launch 文件的内容:display.launch.py 应该使用 ROS 2 的启动 API 来配置和启动节点。这通常涉及到创建一个 LaunchDescription 对象,并添加 Node 和其他相关的配置。
参数传递:在 ROS 2 中,你可以通过 Node 的 parameters 属性或者直接在 LaunchDescription 中使用 set_param 方法来设置参数。对于你的用例,你可能需要设置一个参数(比如 robot_description)来指向 green_cube.urdf 文件的内容。
环境设置:确保你的 ROS 2 环境已经正确设置,包括 source /opt/ros/<distro>/setup.bash(根据你的 ROS 2 发行版替换 <distro>)和 source ~/ros2_ws/install/setup.bash(如果你是在一个工作空间中工作的话)。
正确的命令格式:你的命令 ros2 launch urdf_tutorial display.launch.py model:=green_cube.urdf 看起来几乎正确,但是需要注意的是,model:=green_cube.urdf 这部分应该是传递给 display.launch.py 的一个参数,该参数需要在启动文件中被正确处理。
下面是一个简单的 display.launch.py 示例,它启动了一个假设的可视化节点,并设置了 robot_description 参数:

python
from launch import LaunchDescription  
from launch_ros.actions import Node  
from launch.substitutions import ThisLaunchFileDir  
from launch.actions import SetEnvironmentVariable, DeclareLaunchArgument  
  
def generate_launch_description():  
    # 声明一个参数,可以在命令行中覆盖  
    model_param = DeclareLaunchArgument(  
        'model',  
        default_value='green_cube.urdf',  
        description='The URDF model to load'  
    )  
  
    # 设置环境变量或参数(根据需要选择)  
    # 这里我们假设有一个环境变量 ROS_MASTER_URI 需要设置(这只是一个例子)  
    set_env = SetEnvironmentVariable(  
        name='ROS_MASTER_URI',  
        value='http://localhost:11311'  
    )  
  
    # 创建节点并设置参数  
    visualization_node = Node(  
        package='your_visualization_package',  # 替换为实际的包名  
        namespace='visualization',  
        executable='your_visualization_node',  # 替换为实际的节点可执行文件  
        parameters=[  
            {'robot_description': [ThisLaunchFileDir(), '/', model_param]}  # 假设你的URDF文件在当前launch文件所在目录  
        ],  
        output='screen'  # 输出到屏幕  
    )  
  
    # 创建并返回 LaunchDescription 对象  
    ld = LaunchDescription([  
        model_param,  
        set_env,  
        visualization_node  
    ])  
  
    return ld
注意:上面的代码只是一个示例,并不完全符合你的用例,因为 robot_description 通常不是直接传递给可视化节点的参数。在实际情况中,你可能需要使用一个专门的 ROS 2 服务或节点来加载和处理 URDF 文件,并将其内容发布到参数服务器或其他适当的地方。

对于 ROS 2 和 URDF 的处理,通常你会有一个专门的节点或服务来解析 URDF 文件,并将其转换为 ROS 2 可以使用的格式(例如,通过 robot_state_publisher 发布到 /tf 或 /tf_static 主题)。然后,你的可视化节点可以订阅这些主题来获取机器人的状态信息并进行可视化。

最后,请确保你的 green_cube.urdf 文件路径正确,并且 urdf_tutorial 包已经正确安装和配置在你的 ROS 2 工作空间中。如果遇到任何错误,请检查 ROS 2 的日志输出以获取更多信息。

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

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

相关文章

智算筑基,九章云极DataCanvas公司闪耀2024年服贸会

9月12日&#xff0c;2024年中国国际服务贸易交易会&#xff08;以下简称“服贸会”&#xff09;在北京隆重开幕&#xff0c;九章云极DataCanvas公司携AI智算产品系列深度参展本届服贸会&#xff0c;为观众奉上技术与应用深度融合的参展盛宴。 本届服贸会由中华人民共和国商务部…

文心一言 VS 讯飞星火 VS chatgpt (349)-- 算法导论23.2 8题

八、Borden教授提出了一个新的分治算法来计算最小生成树。该算法的原理如下:给定图 G ( V , E ) G(V,E) G(V,E)&#xff0c;将 V V V划分为两个集合 V 1 V_1 V1​和 V 2 V_2 V2​&#xff0c;使得 ∣ V 1 ∣ |V_1| ∣V1​∣和 ∣ V 2 ∣ |V_2| ∣V2​∣的差最多为1。设 E 1 E_…

2.使用 VSCode 过程中的英语积累 - Edit 菜单(每一次重点积累 5 个单词)

前言 学习可以不局限于传统的书籍和课堂&#xff0c;各种生活的元素也都可以做为我们的学习对象&#xff0c;本文将利用 VSCode 页面上的各种英文元素来做英语的积累&#xff0c;如此做有 3 大利 这些软件在我们工作中是时时刻刻接触的&#xff0c;借此做英语积累再合适不过&a…

【每日刷题】Day124

【每日刷题】Day124 &#x1f955;个人主页&#xff1a;开敲&#x1f349; &#x1f525;所属专栏&#xff1a;每日刷题&#x1f34d; &#x1f33c;文章目录&#x1f33c; 1. LCR 079. 子集 - 力扣&#xff08;LeetCode&#xff09; 2. 1863. 找出所有子集的异或总和再求和 …

超详细超实用!!!零基础java开发之云风笔记接口开发之删除笔记(十一)

云风网 云风笔记 云风知识库 一、service/NoteApi新增delNode接口定义 public interface NoteApi {...int deleteNote(NoteManage noteManage); }二、service/impl/NoteServiceImpl接口实现逻辑 public class NoteServiceImpl implements NoteApi {AutowiredNoteMapper note…

LVM硬盘挂载

LVM硬盘挂载 一、基础概念 sda/sdb/nvme0n1/nvme0n2&#xff1a; 硬盘的命名方式&#xff0c;中括号的字母为第三位按不同硬盘的加载顺序排序。sda1/sda2/sdb1&#xff1a; 第4位为分区号&#xff0c;数字为不同分区的依序命名lvm: LVM是一种逻辑卷管理器&#xff0c;允许管理…

springboot实战学习笔记(2)

目录 1、手动创建springboot工程&#xff0c;选择Maven构建。 2、Maven生成的&#xff0c;可能需要再main目录下new一个resources目录&#xff0c;再在其下目录new一个配置文件。 3、 pom文件中让当前的工程继承父工程依赖&#xff1a;、删去无用依赖。 4、引入后端环境所需要的…

STL,智能指针和线程安全,线程安全的单例模式和懒汉饿汉的实现,以及读者写者问题

&#x1f351;个人主页&#xff1a;Jupiter. &#x1f680; 所属专栏&#xff1a;Linux从入门到进阶 欢迎大家点赞收藏评论&#x1f60a; 目录 &#x1f4da;STL&#xff0c;智能指针和线程安全 &#x1f4d5;STL中的容器是否是线程安全的?&#x1f4a1;智能指针是否是线程安全…

【C语言零基础入门篇 - 7】:拆解函数的奥秘:定义、声明、变量,传递须知,嵌套玩转,递归惊艳

文章目录 函数函数的定义与声明局部变量和全局变量、静态变量静态变量和动态变量函数的值传递函数参数的地址传值 函数的嵌套使用函数的递归调用 函数 函数的定义与声明 函数的概念&#xff1a;函数是C语言项目的基本组成单位。实现一个功能可以封装一个函数来实现。定义函数的…

图片转PDF技巧揭秘:四款高效工具推荐!

在数字化办公和学习的今天&#xff0c;将图片或其他文件格式转换为PDF已成为一种常见需求。以下是几款推荐的转换工具&#xff0c;它们各自具有独特的功能和使用体验&#xff0c;可帮助大家轻松实现图片转PDF及其他PDF相关操作。 福昕PDF转换大师&#xff08;365客户端&#x…

关于 Qt运行加载内存较大崩溃添加扩大运行内存 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/142341544 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

【重学 MySQL】三十三、流程控制函数

【重学 MySQL】三十三、流程控制函数 IF函数IFNULL函数CASE函数总结 在MySQL中&#xff0c;流程控制函数是用于在SQL查询、存储过程或函数中根据特定条件执行不同流程的重要工具。这些函数可以帮助我们实现复杂的逻辑判断和数据转换。 IF函数 IF函数是MySQL中最基本的流程控制…

泛微E-Mobile client/cdnfile 任意文件读取漏洞复现

0x01 产品简介 泛微E-Mobile是一款由泛微网络科技股份有限公司开发的移动办公产品,该产品专门为手机、平板电脑等移动终端用户设计,旨在提供便捷、高效的移动办公体验。适用于企业高管和有移动办公需求的业务部相关员工使用,特别适合于已有内部OA系统的大中型企业机构,尤其…

算法-排序算法(冒泡选择插入希尔快速归并堆)

1.算法概述 1.1什么是算法 算法是特定问题的求解步骤的描述&#xff0c;是独立存在的一种解决问题的思想和方法。对于算法而言计算机编程语言并不重要&#xff0c;可以用任何计算机编程语言来编写算法。 程序数据结构算法 1.2数据结构和算法的区别和联系 数据结构只是静态…

闲置物品交易系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;学生管理&#xff0c;卖家管理&#xff0c;广场管理&#xff0c;商品类型管理&#xff0c;商品信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;广场&#xff0c;商…

欧盟禁用PFAS材料!线材该如何应对?

了应对欧盟即将在2027年1月开始强制执行禁用PFAS材料的法规&#xff0c;一众线材厂商纷纷研发出了对应的替代材料&#xff0c;第二十三届华东磁性元件峰会现场&#xff0c;多家线材企业均带来了PFAS材料的替代产品。 宇盛电子 苏州宇盛电子有限公司&#xff08;下称“宇盛电子…

从Profinet到Ethernet IP网关技术重塑工业网络,数据传输更流畅

Profinet转Ethernet IP网关在未来工业领域可能产生以下重要影响并发挥关键作用&#xff1a;促进工业设备集成与互操作性&#xff1a;打破协议壁垒&#xff1a;在工业场景中&#xff0c;存在多种不同的工业以太网协议&#xff0c;设备往往因协议差异而难以直接通信。 Profinet转…

基于姿态估计的翻墙动作识别系统(姿态估计 mediapipe )

基于姿态估计的翻越动作识别系统是一个结合了计算机视觉、姿态估计技术和深度学习的项目&#xff0c;其目的是识别特定的动作&#xff0c;比如“翻越”动作。在这个项目中&#xff0c;我们使用MediaPipe姿态估计工具进行人体姿态估计&#xff0c;并结合深度学习模型来识别翻越动…

城市内涝积水监测预警系统助力智慧城市应急防汛

一、方案背景 近 20 年来&#xff0c;我国城市化进程加快&#xff0c;城市地区由于人口密集&#xff0c;物资财产密度不断加大等特点&#xff0c;高强度暴雨积水形成的洪涝灾害对城市化地区产生的威肋和带来的损失越来越大。由于城市的不断扩建&#xff0c;使工业区、商业区和居…

施耐德EcoStruxure Machine SCADA Expert(EMSE)用户管理进阶(十四)

之前简单介绍了用户管理的功能,这里详细展示要实现一套完整的用户管理功能需要做什么 如下图所示 符合GMP的用户管理功能一般可包含如下功能: 用户新建、用户密码修改、用户锁定/激活、用户删除、用户组策略配置(右下角可配置参数) 首先新建变量—结构体 1.cUser 2.cUser…