ROS:URDF使用

news2024/11/29 2:29:27

目录

  • 一、URDF集成Rviz(实例讲解)
    • 1.1需求
    • 1.2流程
    • 1.3code操作
      • 1.3.1创建功能包
      • 1.3.2编写 URDF 文件
      • 1.3.3在 launch 文件中集成 URDF 与 Rviz
      • 1.3.4在 Rviz 中显示机器人模型
      • 1.3.5优化 rviz 启动
  • 二、URDF语法详解
    • 2.1robot
      • 2.1.1属性
      • 2.2.2子标签
    • 2.2link
      • 2.2.1属性
      • 2.2.2子标签
      • 2.2.3案例
    • 2.3joint
      • 2.3.1属性
      • 2.3.2子标签
      • 2.3.3案例
      • 2.3.4base_footprint优化
    • 2.4URDF综合示例
      • 2.4.1需求
      • 2.4.2流程
      • 2.4.3新建文件

一、URDF集成Rviz(实例讲解)

1.1需求

在 Rviz 中显示一个盒状机器人

1.2流程

准备:新建功能包,导入依赖
核心:编写 urdf 文件
核心:在 launch 文件集成 URDF 与 Rviz
在 Rviz 中显示机器人模型

1.3code操作

1.3.1创建功能包

创建一个新的功能包,名称自定义,导入依赖包:urdf与xacro

在当前功能包下,再新建几个目录:

urdf: 存储 urdf 文件的目录

meshes:机器人模型渲染文件(暂不使用)

config: 配置文件

launch: 存储 launch 启动文件

1.3.2编写 URDF 文件

新建一个子级文件夹:urdf(可选),文件夹中添加一个.urdf文件,复制如下内容:

<robot name="mycar">
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.5 0.2 0.1" />
            </geometry>
        </visual>
    </link>
</robot>

1.3.3在 launch 文件中集成 URDF 与 Rviz

在launch目录下,新建一个 launch 文件,该 launch 文件需要启动 Rviz,并导入 urdf 文件,Rviz 启动后可以自动载入解析urdf文件,并显示机器人模型。在 ROS 中,可以将 urdf 文件的路径设置到参数服务器,使用的参数名是:robot_description,示例代码如下:

<launch>

    <!-- 设置参数 -->
    <param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" />

    <!-- 启动 rviz -->
    <node pkg="rviz" type="rviz" name="rviz" />

</launch>

1.3.4在 Rviz 中显示机器人模型

rviz 启动后,会发现并没有盒装的机器人模型,这是因为默认情况下没有添加机器人显示组件,需要手动添加,添加方式如下:
在这里插入图片描述
在这里插入图片描述

1.3.5优化 rviz 启动

复启动launch文件时,Rviz 之前的组件配置信息不会自动保存,需要重复执行步骤4的操作,为了方便使用,可以使用如下方式优化:

首先,将当前配置保存进config目录
在这里插入图片描述
件中 Rviz 的启动配置添加参数:args,值设置为-d 配置文件路径

<launch>
    <param name="robot_description" textfile="$(find 包名)/urdf/urdf/urdf01_HelloWorld.urdf" />
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find 包名)/config/rviz/show_mycar.rviz" />
</launch>

再启动时,就可以包含之前的组件配置了,使用更方便快捷。

二、URDF语法详解

URDF 文件是一个标准的 XML 文件,在 ROS 中预定义了一系列的标签用于描述机器人模型,机器人模型可能较为复杂,但是 ROS 的 URDF 中机器人的组成却是较为简单,可以主要简化为两部分:连杆(link标签) 与 关节(joint标签)。

URDF 中的不同标签:
robot 根标签,类似于 launch文件中的launch标签
link 连杆标签
joint 关节标签
gazebo 集成gazebo需要使用的标签

2.1robot

urdf 中为了保证 xml 语法的完整性,使用了robot标签作为根标签,所有的 link 和 joint 以及其他标签都必须包含在 robot 标签内,在该标签内可以通过 name 属性设置机器人模型的名称

2.1.1属性

name: 指定机器人模型的名称

2.2.2子标签

其他标签都是子级标签

2.2link

urdf 中的 link 标签用于描述机器人某个部件(也即刚体部分)的外观和物理属性,比如: 机器人底座、轮子、激光雷达、摄像头…每一个部件都对应一个 link, 在 link 标签内,可以设计该部件的形状、尺寸、颜色、惯性矩阵、碰撞参数等一系列属性。
在这里插入图片描述

2.2.1属性

name —> 为连杆命名

2.2.2子标签

visual —> 描述外观(对应的数据是可视的)
geometry 设置连杆的形状
标签1: box(盒状)
属性:size=长(x) 宽(y) 高(z)
标签2: cylinder(圆柱)
属性:radius=半径 length=高度
标签3: sphere(球体)
属性:radius=半径
标签4: mesh(为连杆添加皮肤)
属性: filename=资源路径(格式📦/// /文件 )
origin 设置偏移量与倾斜弧度
属性1: xyz=x偏移 y便宜 z偏移
属性2: rpy=x翻滚 y俯仰 z偏航 (单位是弧度)
metrial 设置材料属性(颜色)
属性: name
标签: color
属性: rgba=红绿蓝权重值与透明度 (每个权重值以及透明度取值[0,1])
collision —> 连杆的碰撞属性
Inertial —> 连杆的惯性矩阵
在此,只演示visual使用。

2.2.3案例

需求:分别生成长方体、圆柱与球体的机器人部件
URDF文件示例如下:

<!--分别生成长方体、圆柱与球体的机器人部件-->
<robot name="mycar">
    <link name="base_link">
        <visual>
            <!-- 形状 -->
            <geometry>
                <!-- 长方体的长宽高 -->
                <!-- <box size="0.5 0.3 0.1" /> -->
                <!-- 圆柱,半径和长度 -->
                <!-- <cylinder radius="0.5" length="0.1" /> -->
                <!-- 球体,半径-->
                <!-- <sphere radius="0.3" /> -->
                <mesh filename="package://urdf01_rviz/meshes/autolabor_mini.stl"/>

            </geometry>
            <!-- xyz坐标 rpy翻滚俯仰与偏航角度(3.14=1801.57=90) -->
            <origin xyz="0 0 0" rpy="01.57 0 0" />
            <!-- 颜色: r=red g=green b=blue a=alpha -->
            <material name="black">
                <color rgba="0 0.5 0.7 1 " />
            </material>
        </visual>
    </link>
</robot>
            </material>
        </visual>
    </link>

launch文件示例如下:

<launch>

    <!-- 设置参数 -->
    <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo02_link.urdf" />

    <!-- 启动 rviz -->
    <node pkg="rviz" type="rviz" name="rviz"  args="-d $(find urdf01_rviz)/config/show_mycar.rviz"/>

</launch>

2.3joint

urdf 中的 joint 标签用于描述机器人关节的运动学和动力学属性,还可以指定关节运动的安全极限,机器人的两个部件(分别称之为 parent link 与 child link)以"关节"的形式相连接,不同的关节有不同的运动形式: 旋转、滑动、固定、旋转速度、旋转角度限制…,比如:安装在底座上的轮子可以360度旋转,而摄像头则可能是完全固定在底座上。

在这里插入图片描述

2.3.1属性

name —> 为关节命名
type —> 关节运动形式
continuous: 旋转关节,可以绕单轴无限旋转
revolute: 旋转关节,类似于 continues,但是有旋转角度限制
prismatic: 滑动关节,沿某一轴线移动的关节,有位置极限
planer: 平面关节,允许在平面正交方向上平移或旋转
floating: 浮动关节,允许进行平移、旋转运动
fixed: 固定关节,不允许运动的特殊关节

2.3.2子标签

parent(必需的)
parent link的名字是一个强制的属性:
link:父级连杆的名字,是这个link在机器人结构树中的名字。

child(必需的)
child link的名字是一个强制的属性:
link:子级连杆的名字,是这个link在机器人结构树中的名字。

origin
属性: xyz=各轴线上的偏移量 rpy=各轴线上的偏移弧度。

axis
属性: xyz用于设置围绕哪个关节轴运动。

2.3.3案例

需求:创建机器人模型,底盘为长方体,在长方体的前面添加一摄像头,摄像头可以沿着 Z 轴 360 度旋转。
URDF文件示例如下:

!-- 
    需求: 创建机器人模型,底盘为长方体,
         在长方体的前面添加一摄像头,
         摄像头可以沿着 Z 轴 360 度旋转
 -->


<robot name="mycar">
    <!-- 底盘 -->
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.3 0.2 0.1" />
            </geometry>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <material name="blue">
                <color rgba="0 0 1.0 0.5" />
            </material>
        </visual>
    </link>

    <!-- 摄像头 -->
    <link name="camera">
        <visual>
            <geometry>
                <box size="0.02 0.05 0.05" />
            </geometry>
            <origin xyz="0 0 0.06" rpy="0 0 0" />
            <material name="red">
                <color rgba="1 0 0 0.5" />
            </material>
        </visual>
    </link>

    <!-- 关节 -->
    <joint name="camera2baselink" type="continuous">
        <parent link="base_link"/>
        <child link="camera" />
        <!-- 需要计算两个 link 的物理中心之间的偏移量 -->
        <origin xyz="0.12 0 0.005" rpy="0 0 0" />
        <axis xyz="0 0 1" />
    </joint>

</robot>

launch文件示例如下:

<launch>

    <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo03_joint.urdf" />
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz" /> 

    <!-- 添加关节状态发布节点 -->
    <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />
    <!-- 添加机器人状态发布节点 -->
    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
    <!-- 可选:用于控制关节运动的节点 -->
    <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" />

</launch>

2.3.4base_footprint优化

前面实现的机器人模型是半沉到地下的,因为默认情况下: 底盘的中心点位于地图原点上,所以会导致这种情况产生,可以使用的优化策略,将初始 link 设置为一个尺寸极小的 link(比如半径为 0.001m 的球体,或边长为 0.001m 的立方体),然后再在初始 link 上添加底盘等刚体。这个初始 link 一般称之为 base_footprint

<!-- 
    前面实现的机器人模型是半沉到地下的,因为默认情况下: 底盘的中心点位于地图原点上,
    所以会导致这种情况产生,可以使用的优化策略,将初始 link 设置为一个尺寸极小的 
    link(比如半径为 0.001m 的球体,或边长为 0.001m 的立方体),
    然后再在初始 link 上添加底盘等刚体,这样实现,虽然仍然存在初始link半沉的现象,
    但是基本可以忽略了。这个初始 link 一般称之为 base_footprint
 -->


<robot name="mycar">
    <!-- 设置一个原点(机器人中心点的投影) -->
    <link name="base_footprint">
        <visual>
            <geometry>
                <sphere radius="0.001" />
            </geometry>
        </visual>
    </link>

    <!-- 底盘 -->
    <link name="base_link">
        <visual>
            <geometry>
                <box size="0.3 0.2 0.1" />
            </geometry>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <material name="blue">
                <color rgba="0 0 1.0 0.5" />
            </material>
        </visual>
    </link>

    <!-- 摄像头 -->
    <link name="camera">
        <visual>
            <geometry>
                <box size="0.02 0.05 0.05" />
            </geometry>
            <origin xyz="0 0 0.025" rpy="0 0 0" />
            <material name="red">
                <color rgba="1 0 0 0.5" />
            </material>
        </visual>
    </link>

    <!-- 底盘与原点连接的关节 -->
    <joint name="base_link2base_footprint" type="fixed">
        <parent link="base_footprint" />
        <child link="base_link" />
        <origin xyz="0 0 0.05" />
    </joint>

    <!-- 关节 -->
    <joint name="camera2baselink" type="continuous">
        <parent link="base_link"/>
        <child link="camera" />
        <!-- 需要计算两个 link 的物理中心之间的偏移量 -->
        <origin xyz="0.12 0 0.05" rpy="0 0 0" />
        <axis xyz="0 0 1" />
    </joint>

</robot>

launch 文件内容不变。

2.4URDF综合示例

2.4.1需求

创建一个四轮圆柱状机器人模型,机器人参数如下,底盘为圆柱状,半径 10cm,高 8cm,四轮由两个驱动轮和两个万向支撑轮组成,两个驱动轮半径为 3.25cm,轮胎宽度1.5cm,两个万向轮为球状,半径 0.75cm,底盘离地间距为 1.5cm(与万向轮直径一致)

2.4.2流程

新建 urdf 文件,并与 launch 文件集成
搭建底盘
在底盘上添加两个驱动轮
在底盘上添加两个万向轮

2.4.3新建文件

urdf 文件:基本实现

<robot name="mycar">
    <!-- 设置 base_footprint  -->
    <link name="base_footprint">
        <visual>
            <geometry>
                <sphere radius="0.001" />
            </geometry>
        </visual>
    </link>

    <!-- 添加底盘 -->
    <!-- 
        参数
            形状:圆柱 
            半径:10     cm 
            高度:8      cm 
            离地:1.5    cm

    -->
    <link name="base_link">
        <visual>
            <geometry>
                <cylinder radius="0.1" length="0.08" />
            </geometry>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <material name="yellow">
                <color rgba="0.8 0.3 0.1 0.5" />
            </material>
        </visual>
    </link>

    <joint name="base_link2base_footprint" type="fixed">
        <parent link="base_footprint" />
        <child link="base_link"/>
        <origin xyz="0 0 0.055" />
    </joint>



    <!-- 添加驱动轮 -->
    <!--
        驱动轮是侧翻的圆柱
        参数
            半径: 3.25 cm
            宽度: 1.5  cm
            颜色: 黑色
        关节设置:
            x = 0
            y = 底盘的半径 + 轮胎宽度 / 2
            z = 离地间距 + 底盘长度 / 2 - 轮胎半径 = 1.5 + 4 - 3.25 = 2.25(cm)
            axis = 0 1 0
    -->
    <link name="left_wheel">
        <visual>
            <geometry>
                <cylinder radius="0.0325" length="0.015" />
            </geometry>
            <origin xyz="0 0 0" rpy="1.5705 0 0" />
            <material name="black">
                <color rgba="0.0 0.0 0.0 1.0" />
            </material>
        </visual>

    </link>

    <joint name="left_wheel2base_link" type="continuous">
        <parent link="base_link" />
        <child link="left_wheel" />
        <origin xyz="0 0.1 -0.0225" />
        <axis xyz="0 1 0" />
    </joint>


    <link name="right_wheel">
        <visual>
            <geometry>
                <cylinder radius="0.0325" length="0.015" />
            </geometry>
            <origin xyz="0 0 0" rpy="1.5705 0 0" />
            <material name="black">
                <color rgba="0.0 0.0 0.0 1.0" />
            </material>
        </visual>

    </link>

    <joint name="right_wheel2base_link" type="continuous">
        <parent link="base_link" />
        <child link="right_wheel" />
        <origin xyz="0 -0.1 -0.0225" />
        <axis xyz="0 1 0" />
    </joint>



    <!-- 添加万向轮(支撑轮) -->
    <!--
        参数
            形状: 球体
            半径: 0.75 cm
            颜色: 黑色

        关节设置:
            x = 自定义(底盘半径 - 万向轮半径) = 0.1 - 0.0075 = 0.0925(cm)
            y = 0
            z = 底盘长度 / 2 + 离地间距 / 2 = 0.08 / 2 + 0.015 / 2 = 0.0475 
            axis= 1 1 1

    -->
    <link name="front_wheel">
        <visual>
            <geometry>
                <sphere radius="0.0075" />
            </geometry>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <material name="black">
                <color rgba="0.0 0.0 0.0 1.0" />
            </material>
        </visual>
    </link>

    <joint name="front_wheel2base_link" type="continuous">
        <parent link="base_link" />
        <child link="front_wheel" />
        <origin xyz="0.0925 0 -0.0475" />
        <axis xyz="1 1 1" />
    </joint>

    <link name="back_wheel">
        <visual>
            <geometry>
                <sphere radius="0.0075" />
            </geometry>
            <origin xyz="0 0 0" rpy="0 0 0" />
            <material name="black">
                <color rgba="0.0 0.0 0.0 1.0" />
            </material>
        </visual>
    </link>

    <joint name="back_wheel2base_link" type="continuous">
        <parent link="base_link" />
        <child link="back_wheel" />
        <origin xyz="-0.0925 0 -0.0475" />
        <axis xyz="1 1 1" />
    </joint>


</robot>

launch 文件:

<launch>
    <!-- 将 urdf 文件内容设置进参数服务器 -->
    <param name="robot_description" textfile="$(find urdf01_rviz)/urdf/urdf/demo05_test.urdf" />

    <!-- 启动 rivz -->
    <node pkg="rviz" type="rviz" name="rviz" args="-d $(find urdf01_rviz)/config/show_mycar.rviz" />

    <!-- 启动机器人状态和关节状态发布节点 -->
    <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" />
    <node pkg="joint_state_publisher" type="joint_state_publisher" name="joint_state_publisher" />

    <!-- 启动图形化的控制关节运动节点 -->
    <node pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" name="joint_state_publisher_gui" />

</launch>

参考视屏:赵虚左ros入门
在这里插入图片描述

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

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

相关文章

手把手教你玩转内存函数(含模拟实现)

目录 一、memcpy 1.认识memcpy 2.使用memcpy 3.拓展&#xff1a;模拟实现memcpy 二、memmove 1.认识memmove 2.使用memmove 3.拓展&#xff1a;模拟实现memmove 三、memcmp 1.认识memcmp 2.使用memcmp 四、memset 1.认识memset 2.使用memset 3.拓展&#xff1a;模…

【网络编程】应用层协议——HTTP协议

文章目录 一、HTTP协议基本认识二、URL的认识2.1 urlencode和urldecode 三、HTTP协议格式3.1 HTTP请求与响应格式3.2 如何保证请求和响应被应用层完整读取&#xff1f;3.3 请求和响应如何做到序列化和反序列化&#xff1f;3.4 代码验证请求格式3.5 代码验证响应格式3.5.1 telne…

小程序开发及生态丰富,还需要App吗?

微信小程序自2017年推出以来&#xff0c;其生态系统得到了迅速的发展和壮大。作为中国最大的社交平台之一&#xff0c;微信拥有庞大的用户基础。微信小程序作为微信生态系统的一部分&#xff0c;自然而然地吸引了大量用户。据对公开资料进行统计&#xff0c;2021年全网小程序数…

校园跑腿小程序:为学生提供便捷的服务

随着社会的发展和人们生活水平的提高&#xff0c;高等教育越来越受到重视。大学校园不仅是学习的地方&#xff0c;也是学生们日常生活的场所。然而&#xff0c;在繁忙的学业和生活压力下&#xff0c;学生可能经常面临诸如代购、快递、取餐等各种琐碎但繁琐的任务。基于这个需求…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 Cohere 集成搭建智能问答系统

目录 准备工作 主要参数 准备数据 创建 Collection 插入数据 测试问答 本文将演示如何使用 Zilliz Cloud 和 Cohere 搭建基于 SQuAD 数据集 的问答系统。其中,Zilliz Cloud 负责提供向量数据库,Cohere 负责提供获取指定文字向量表示的接口。 准备工作 本示例中的脚…

黑马前端三大件

文章目录 1.html1.1 标题标签1.2 段落标签1.3换行标签1.4 水平分割线标签1.5 文本格式化标签1.6 图片标签1.7 音频标签1.8 视频标签1.9 链接标签的介绍1.10列表标签1.10.1 无序列表1.10.2 无序列表1.10.3 自定义列表 1.11表格属性1.11.1表格的基本标签1.11.2 表格相关属性1.11.…

使用layui滑块slider遇到问题解决:1、加标尺2、兼容移动端拖拽1、多个滑块使用赋值4、切换箭头赋值问题

使用layui框架 滑块组件 slider 时遇到的问题&#xff0c;以下图为例&#xff0c;我创建了一个总滑块和3个滑块&#xff0c;改变总滑块可以控制滑块123&#xff1a; 1、我的需求是加上标尺&#xff0c;layui没有该功能&#xff0c;自己写了一个简单的,代码在下面。 2、移动端…

Linux:输入输出流、重定向、管道命令

相关文章 Linux&#xff1a;chgrp、chown、chmod权限属性更改指令 Linux&#xff1a; 磁盘状态观察命令lsblk、blkid Linux&#xff1a;df、du容量查询指令 1、标准流文件 数据流重定定向由字面上的意思来看&#xff0c;就是将数据定向到其他地方去&#xff0c;事实也是如此…

ModaHub魔搭社区:非结构化数据范式转变和示例

目录 范式转变——非结构化数据 非结构化数据示例 范式转变——非结构化数据 既然我们对结构化数据和半结构化数据有了清晰的理解,现在让我们开始谈谈非结构化数据。与结构化数据和半结构化数据不同,非结构化数据可以采取任何形式,可以有任意大小或尺寸,并需要大量的运行…

ModaHub魔搭社区:AI原生云向量数据库Zilliz Cloud与 HuggingFace 集成搭建问答系统

目录 准备工作 主要参数 创建 Collection 插入数据 测试问答 本文将演示如何使用 Zilliz Cloud 和 HuggingFace 搭建问答系统。其中,Zilliz Cloud 负责提供向量数据库,HuggingFace 负责提供获取指定文字向量表示的接口。 准备工作 本示例中的脚本需要安装 pymilvus,…

寡头竞争和混合策略均衡

纯寡头的产量竞争 两家企业生产相同的产品,产量是决策变量,市场上只有一种价格。市场需求/Demand:P = 100 - (Q1+Q2) Q 是企业生产的产量 假设生产成本为0 这个案例可能存在的结果 (1)合谋 (2)古诺-纳什均衡 每个企业将它竞争对手的产量水平视为固定的,然后决定自己…

【C++学习笔记】C++如何规范C语言中的类型转换

C的类型转换 1 C语言中类型转换的缺陷2 为什么C要规范C的类型转换3 C强制类型转换3.1 static_cast3.2 reinterpret_cast3.3 const_cast3.4 dynamic_cast 1 C语言中类型转换的缺陷 在C语言中&#xff0c;如果赋值运算符左右两侧类型不同&#xff0c;或者形参与实参类型不匹配&a…

【kubernetes系列】Kubernetes之RBAC

概述 k8s的权限控制在实际工作中不那么经常使用&#xff0c;但是却是很重要的&#xff0c;我们需要深入理解才能很好的解决某些问题。在我们现目前的了解中&#xff0c;常用的授权插件有以下几种&#xff1a; Node&#xff08;节点认证&#xff09; ABAC(基于属性的访问控制) …

【UE4 C++】03-新建UE C++工程,新建C++类

UE版本&#xff1a;4.26 步骤 新建一个空白模板工程&#xff0c;选择C项目&#xff0c;选择项目名和项目存储位置&#xff0c;然后点击创建项目。 新建C类 选择父类为Character 命名&#xff0c;选择公有&#xff0c;然后点击创建类 等待编译完成 此时在Visual Studio中可以看…

源启:云原生计算架构的行业实现

7月5日&#xff0c;由工业和信息化部网络安全产业发展中心、中国软件行业协会等单位指导&#xff0c;中国电子主办的“麒麟傲天聚创未来2023操作系统产业大会”在京举行。中电金信研究院副院长陈书华在大会上发表主旨演讲。 陈书华认为数字经济已成为社会发展的重要引擎&#…

【论文解读】基于分层判断的 x264 快速模式选择算法

简介 题目&#xff1a; 基于分层判断的 x264 快速模式选择算法 原文&#xff1a; https://www.nstl.gov.cn/paper_detail.html?id77880ade9a55b3cc527192010242d90e 级别&#xff1a; EI 年份&#xff1a; 2010 年 机构&#xff1a; 上海交通大学 结论&#xff1a; 相比较 HE…

汽车+ChatGPT 车内生活体验再升级

这两年&#xff0c;人工智能工具ChatGPT爆火&#xff0c;在全球掀起了大模型之战。如今&#xff0c;最前沿的自然语言处理大模型应用到了人类的出行工具上&#xff0c;梅赛德斯-奔驰和微软官宣正在合作测试车载ChatGPT人工智能&#xff0c;并将面向约90万车主开启测试&#xff…

对象存储、数据库、NAS、标注数据集,均支持元信息配置|ModelWhale 版本更新

七月中旬&#xff0c;暑气渐浓&#xff0c;ModelWhale 新一轮的版本更新&#xff0c;期待为每个领域的你带来更好的使用体验。 本次更新中&#xff0c;ModelWhale 主要进行了以下功能迭代&#xff1a; • 新增 对象存储、数据库、NAS、标注数据的元信息展示&#xff08;专业版…

flutter开发实战-Theme主题切换

flutter开发实战-Theme主题切换 之前做的应用中有用到Theme主题切换&#xff0c;一直没有整理&#xff0c;这里整理一下。 使用的是Android studio 一、效果图 二、创建ThemeModel // 提供五套可选主题色 const _themes <MaterialColor>[Colors.blue,Colors.cyan,Co…

缓存 - Caffeine 不完全指北

文章目录 官网概述设计CodePOMPopulationEviction PolicyRefreshStatistics 官网 https://github.com/ben-manes/caffeine wiki: https://github.com/ben-manes/caffeine/wiki 概述 Caffeine是一个用于Java应用程序的高性能缓存框架。它提供了一个强大且易于使用的缓存库&a…