ur机器人ros-urdf

新建工作空间

mkdir -p ~/catkin_ws/src
cd catkin_ws_ur5/src
git clone -b melodic-devel https://github.com/ros-industrial/universal_robot.git
cd ..
rosdep update
rosdep install --rosdistro melodic --ignore-src --from-paths src
catkin_make
source ~/catkin_ws/devel/setup.bash

测试

roslaunch ur_description view_ur5.launch

在这里插入图片描述

添加夹爪

view_ur5_gripper.launch文件(修改rviz配置)

包含 load_ur5_gripper.launch

<?xml version="1.0"?>
<launch><!-- change --><!-- <include file="$(find ur_description)/launch/load_ur5.launch"/> --><include file="$(find ur_description)/launch/load_ur5_gripper.launch"/><node name="joint_state_publisher_gui" pkg="joint_state_publisher_gui" type="joint_state_publisher_gui" /><node name="robot_state_publisher" pkg="robot_state_publisher" type="robot_state_publisher" /><node name="rviz" pkg="rviz" type="rviz" args="-d $(find ur_description)/cfg/view_robot.rviz" required="true" />
</launch>

load_ur5_gripper.launch文件

包含load_ur_gripper.launch

<?xml version="1.0"?>
<launch><!--ur5 parameters files --><arg name="joint_limit_params" default="$(find ur_description)/config/ur5/joint_limits.yaml"/><arg name="kinematics_params" default="$(find ur_description)/config/ur5/default_kinematics.yaml"/><arg name="physical_params" default="$(find ur_description)/config/ur5/physical_parameters.yaml"/><arg name="visual_params" default="$(find ur_description)/config/ur5/visual_parameters.yaml"/><!--common parameters --><arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface" /><arg name="safety_limits" default="false" doc="If True, enable the safety limits controller"/><arg name="safety_pos_margin" default="0.15" doc="The lower/upper limits in the safety controller" /><arg name="safety_k_position" default="20" doc="Used to set k position in the safety controller" /><arg name="robot_model" value="ur5" /><!-- use common launch file and pass all arguments to it --><!-- change --><include file="$(find ur_description)/launch/load_ur_gripper.launch" pass_all_args="true"/><!-- <include file="$(find ur_description)/launch/load_ur.launch" pass_all_args="true"/> -->
</launch>

load_ur_gripper.launch

robot_description command设置为’$(find ur_description)/urdf/ur5_gripper.xacro’

<?xml version="1.0"?>
<launch><!--ur parameters files --><arg name="joint_limit_params" doc="YAML file containing the joint limit values"/><arg name="kinematics_params" doc="YAML file containing the robot's kinematic parameters. These will be different for each robot as they contain the robot's calibration."/><arg name="physical_params" doc="YAML file containing the phycical parameters of the robots"/><arg name="visual_params" doc="YAML file containing the visual model of the robots"/><!--common parameters  --><arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface" /><arg name="safety_limits" default="false" doc="If True, enable the safety limits controller"/><arg name="safety_pos_margin" default="0.15" doc="The lower/upper limits in the safety controller" /><arg name="safety_k_position" default="20" doc="Used to set k position in the safety controller" /><arg name="robot_model" /><!-- 固定写法--><!-- change --><!-- <param name="robot_description" command="$(find xacro)/xacro '$(find ur_description)/urdf/ur.xacro' --><!-- <param name="robot_description" command="$(find xacro)/xacro '$(find ur_description)/urdf/ur_gripper.xacro' --><!-- 直接ur5_gripper.xacro更方便--><param name="robot_description" command="$(find xacro)/xacro '$(find ur_description)/urdf/ur5_gripper.xacro'robot_model:=$(arg robot_model)joint_limit_params:=$(arg joint_limit_params)kinematics_params:=$(arg kinematics_params)physical_params:=$(arg physical_params)visual_params:=$(arg visual_params)transmission_hw_interface:=$(arg transmission_hw_interface)safety_limits:=$(arg safety_limits)safety_pos_margin:=$(arg safety_pos_margin)safety_k_position:=$(arg safety_k_position)"/>
</launch>

ur5_gripper.xacro (设置prefix值)

包含ur5_macro_gripper.xacro

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="ur5_robot"><!--This is a convenience top-level xacro which loads the macro for the UR5ewhich defines the default values for the various "parameters files"parameters for a UR5e.This file is only useful when loading a stand-alone, completely isolatedrobot with only default values for all parameters such as the kinematics,visual and physical parameters and joint limits.This file is not intended to be integrated into a larger scene or othercomposite xacro.Instead, xacro:include 'inc/ur5e_macro.xacro' and override the defaultsfor the arguments to that macro.Refer to 'inc/ur_macro.xacro' for more information.--><!-- change --><!-- <xacro:include filename="$(find ur_description)/urdf/inc/ur5_macro.xacro"/> --><xacro:include filename="$(find ur_description)/urdf/inc/ur5_macro_gripper.xacro"/><xacro:ur5_robot prefix="" />
</robot>

ur5_macro_gripper.xacro (模型参数设置 夹爪添加)

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro"><xacro:macro name="ur5_robot" params="prefixjoint_limits_parameters_file:='$(find ur_description)/config/ur5/joint_limits.yaml'kinematics_parameters_file:='$(find ur_description)/config/ur5/default_kinematics.yaml'physical_parameters_file:='$(find ur_description)/config/ur5/physical_parameters.yaml'visual_parameters_file:='$(find ur_description)/config/ur5/visual_parameters.yaml'transmission_hw_interface:=hardware_interface/PositionJointInterfacesafety_limits:=falsesafety_pos_margin:=0.15safety_k_position:=20"><!-- change --><!-- <xacro:include filename="$(find ur_description)/urdf/inc/ur_macro.xacro"/> --><xacro:include filename="$(find ur_description)/urdf/inc/ur_macro_gripper.xacro"/><xacro:ur_robotprefix="${prefix}"joint_limits_parameters_file="${joint_limits_parameters_file}"kinematics_parameters_file="${kinematics_parameters_file}"physical_parameters_file="${physical_parameters_file}"visual_parameters_file="${visual_parameters_file}"transmission_hw_interface="${transmission_hw_interface}"safety_limits="${safety_limits}"safety_pos_margin="${safety_pos_margin}"safety_k_position="${safety_k_position}"/><!-- base_link - world joint --><link name="world" /><joint name="world_joint" type="fixed"><parent link="world" /><child link = "${prefix}base_link" /><origin xyz="0.0 0.0 0" rpy="0.0 0.0 0.0" /></joint><!--gripper--><xacro:include filename="$(find robotiq_2f_85_gripper_visualization)/urdf/robotiq_arg2f_85_model_macro.xacro" /><xacro:include filename="$(find robotiq_85_description)/urdf/robotiq_85_gripper.urdf.xacro" /><xacro:robotiq_85_gripper prefix="" parent="${prefix}tool0" ><origin xyz="0 0 0" rpy="0 ${-pi/2} 0"/></xacro:robotiq_85_gripper><!--camera--><xacro:include filename="$(find realsense2_description)/urdf/_d415.urdf.xacro" /><xacro:sensor_d415 parent="${prefix}base_link" use_nominal_extrinsics="false" add_plug="false" use_mesh="true"><origin xyz="0 0 1" rpy="0 0 0"/></xacro:sensor_d415></xacro:macro>
</robot>

ur_macro_gripper.xacro(定义joint 和 link 添加ee_link )

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro"><xacro:include filename="$(find ur_description)/urdf/inc/ur_transmissions.xacro" /><xacro:include filename="$(find ur_description)/urdf/inc/ur_common.xacro" /><xacro:macro name="ur_robot" params="prefixjoint_limits_parameters_filekinematics_parameters_filephysical_parameters_filevisual_parameters_filetransmission_hw_interface:=hardware_interface/PositionJointInterfacesafety_limits:=falsesafety_pos_margin:=0.15safety_k_position:=20"><!-- Load configuration data from the provided .yaml files --><xacro:read_model_datajoint_limits_parameters_file="${joint_limits_parameters_file}" kinematics_parameters_file="${kinematics_parameters_file}"physical_parameters_file="${physical_parameters_file}"visual_parameters_file="${visual_parameters_file}"/><!-- Add URDF transmission elements (for ros_control) --><xacro:ur_arm_transmission prefix="${prefix}" hw_interface="${transmission_hw_interface}" /><!-- links: main serial chain --><link name="${prefix}base_link"/><link name="${prefix}base_link_inertia"><visual><origin xyz="0 0 0" rpy="0 0 ${pi}"/><geometry><mesh filename="${base_visual_mesh}"/></geometry><material name="${base_visual_material_name}"><color rgba="${base_visual_material_color}"/></material></visual><collision><origin xyz="0 0 0" rpy="0 0 ${pi}"/><geometry><mesh filename="${base_collision_mesh}"/></geometry></collision><xacro:cylinder_inertial radius="${base_inertia_radius}" length="${base_inertia_length}" mass="${base_mass}"><origin xyz="0 0 0" rpy="0 0 0" /></xacro:cylinder_inertial></link><link name="${prefix}shoulder_link"><visual><origin xyz="0 0 0" rpy="0 0 ${pi}"/><geometry><mesh filename="${shoulder_visual_mesh}"/></geometry><material name="${shoulder_visual_material_name}"><color rgba="${shoulder_visual_material_color}"/></material></visual><collision><origin xyz="0 0 0" rpy="0 0 ${pi}"/><geometry><mesh filename="${shoulder_collision_mesh}"/></geometry></collision><xacro:cylinder_inertial radius="${shoulder_inertia_radius}" length="${shoulder_inertia_length}" mass="${shoulder_mass}"><origin xyz="0 0 0" rpy="0 0 0" /></xacro:cylinder_inertial></link><link name="${prefix}upper_arm_link"><visual><origin xyz="0 0 ${shoulder_offset}" rpy="${pi/2} 0 ${-pi/2}"/><geometry><mesh filename="${upper_arm_visual_mesh}"/></geometry><material name="${upper_arm_visual_material_name}"><color rgba="${upper_arm_visual_material_color}"/></material></visual><collision><origin xyz="0 0 ${shoulder_offset}" rpy="${pi/2} 0 ${-pi/2}"/><geometry><mesh filename="${upper_arm_collision_mesh}"/></geometry></collision><xacro:cylinder_inertial radius="${upperarm_inertia_radius}" length="${upperarm_inertia_length}" mass="${upper_arm_mass}"><origin xyz="${-0.5 * upperarm_inertia_length} 0.0 ${upper_arm_inertia_offset}" rpy="0 ${pi/2} 0" /></xacro:cylinder_inertial></link><link name="${prefix}forearm_link"><visual><origin xyz="0 0 ${elbow_offset}" rpy="${pi/2} 0 ${-pi/2}"/><geometry><mesh filename="${forearm_visual_mesh}"/></geometry><material name="${forearm_visual_material_name}"><color rgba="${forearm_visual_material_color}"/></material></visual><collision><origin xyz="0 0 ${elbow_offset}" rpy="${pi/2} 0 ${-pi/2}"/><geometry><mesh filename="${forearm_collision_mesh}"/></geometry></collision><xacro:cylinder_inertial radius="${forearm_inertia_radius}" length="${forearm_inertia_length}"  mass="${forearm_mass}"><origin xyz="${-0.5 * forearm_inertia_length} 0.0 ${elbow_offset}" rpy="0 ${pi/2} 0" /></xacro:cylinder_inertial></link><link name="${prefix}wrist_1_link"><visual><!-- TODO: Move this to a parameter --><origin xyz="0 0 ${wrist_1_visual_offset}" rpy="${pi/2} 0 0"/><geometry><mesh filename="${wrist_1_visual_mesh}"/></geometry><material name="${wrist_1_visual_material_name}"><color rgba="${wrist_1_visual_material_color}"/></material></visual><collision><origin xyz="0 0 ${wrist_1_visual_offset}" rpy="${pi/2} 0 0"/><geometry><mesh filename="${wrist_1_collision_mesh}"/></geometry></collision><xacro:cylinder_inertial radius="${wrist_1_inertia_radius}" length="${wrist_1_inertia_length}"  mass="${wrist_1_mass}"><origin xyz="0 0 0" rpy="0 0 0" /></xacro:cylinder_inertial></link><link name="${prefix}wrist_2_link"><visual><origin xyz="0 0 ${wrist_2_visual_offset}" rpy="0 0 0"/><geometry><mesh filename="${wrist_2_visual_mesh}"/></geometry><material name="${wrist_2_visual_material_name}"><color rgba="${wrist_2_visual_material_color}"/></material></visual><collision><origin xyz="0 0 ${wrist_2_visual_offset}" rpy="0 0 0"/><geometry><mesh filename="${wrist_2_collision_mesh}"/></geometry></collision><xacro:cylinder_inertial radius="${wrist_2_inertia_radius}" length="${wrist_2_inertia_length}"  mass="${wrist_2_mass}"><origin xyz="0 0 0" rpy="0 0 0" /></xacro:cylinder_inertial></link><link name="${prefix}wrist_3_link"><visual><origin xyz="0 0 ${wrist_3_visual_offset}" rpy="${pi/2} 0 0"/><geometry><mesh filename="${wrist_3_visual_mesh}"/></geometry><material name="${wrist_3_visual_material_name}"><color rgba="${wrist_3_visual_material_color}"/></material></visual><collision><origin xyz="0 0 ${wrist_3_visual_offset}" rpy="${pi/2} 0 0"/><geometry><mesh filename="${wrist_3_collision_mesh}"/></geometry></collision><xacro:cylinder_inertial radius="${wrist_3_inertia_radius}" length="${wrist_3_inertia_length}"  mass="${wrist_3_mass}"><origin xyz="0.0 0.0 ${-0.5 * wrist_3_inertia_length}" rpy="0 0 0" /></xacro:cylinder_inertial></link><!-- joints: main serial chain --><!-- base_link-base_link_inertia --><joint name="${prefix}base_link-base_link_inertia" type="fixed"><parent link="${prefix}base_link" /><child link="${prefix}base_link_inertia" /><!-- 'base_link' is REP-103 aligned (so X+ forward), while the internalframes of the robot/controller have X+ pointing backwards.Use the joint between 'base_link' and 'base_link_inertia' (a dummylink/frame) to introduce the necessary rotation over Z (of pi rad).--><origin xyz="0 0 0" rpy="0 0 ${pi}" /></joint><!-- shoulder_pan_joint --><joint name="${prefix}shoulder_pan_joint" type="revolute"><parent link="${prefix}base_link_inertia" /><child link="${prefix}shoulder_link" /><origin xyz="${shoulder_x} ${shoulder_y} ${shoulder_z}" rpy="${shoulder_roll} ${shoulder_pitch} ${shoulder_yaw}" /><axis xyz="0 0 1" /><limit lower="${shoulder_pan_lower_limit}" upper="${shoulder_pan_upper_limit}"effort="${shoulder_pan_effort_limit}" velocity="${shoulder_pan_velocity_limit}"/><xacro:if value="${safety_limits}"><safety_controller soft_lower_limit="${shoulder_pan_lower_limit + safety_pos_margin}" soft_upper_limit="${shoulder_pan_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/></xacro:if><dynamics damping="0" friction="0"/></joint><!-- shoulder_lift_joint --><joint name="${prefix}shoulder_lift_joint" type="revolute"><parent link="${prefix}shoulder_link" /><child link="${prefix}upper_arm_link" /><origin xyz="${upper_arm_x} ${upper_arm_y} ${upper_arm_z}" rpy="${upper_arm_roll} ${upper_arm_pitch} ${upper_arm_yaw}" /><axis xyz="0 0 1" /><limit lower="${shoulder_lift_lower_limit}" upper="${shoulder_lift_upper_limit}"effort="${shoulder_lift_effort_limit}" velocity="${shoulder_lift_velocity_limit}"/><xacro:if value="${safety_limits}"><safety_controller soft_lower_limit="${shoulder_lift_lower_limit + safety_pos_margin}" soft_upper_limit="${shoulder_lift_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/></xacro:if><dynamics damping="0" friction="0"/></joint><!-- elbow_joint --><joint name="${prefix}elbow_joint" type="revolute"><parent link="${prefix}upper_arm_link" /><child link="${prefix}forearm_link" /><origin xyz="${forearm_x} ${forearm_y} ${forearm_z}" rpy="${forearm_roll} ${forearm_pitch} ${forearm_yaw}" /><axis xyz="0 0 1" /><limit lower="${elbow_joint_lower_limit}" upper="${elbow_joint_upper_limit}"effort="${elbow_joint_effort_limit}" velocity="${elbow_joint_velocity_limit}"/><xacro:if value="${safety_limits}"><safety_controller soft_lower_limit="${elbow_joint_lower_limit + safety_pos_margin}" soft_upper_limit="${elbow_joint_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/></xacro:if><dynamics damping="0" friction="0"/></joint><!-- wrist_1_joint --><joint name="${prefix}wrist_1_joint" type="revolute"><parent link="${prefix}forearm_link" /><child link="${prefix}wrist_1_link" /><origin xyz="${wrist_1_x} ${wrist_1_y} ${wrist_1_z}" rpy="${wrist_1_roll} ${wrist_1_pitch} ${wrist_1_yaw}" /><axis xyz="0 0 1" /><limit lower="${wrist_1_lower_limit}" upper="${wrist_1_upper_limit}"effort="${wrist_1_effort_limit}" velocity="${wrist_1_velocity_limit}"/><xacro:if value="${safety_limits}"><safety_controller soft_lower_limit="${wrist_1_lower_limit + safety_pos_margin}" soft_upper_limit="${wrist_1_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/></xacro:if><dynamics damping="0" friction="0"/></joint><!-- wrist_2_joint --><joint name="${prefix}wrist_2_joint" type="revolute"><parent link="${prefix}wrist_1_link" /><child link="${prefix}wrist_2_link" /><origin xyz="${wrist_2_x} ${wrist_2_y} ${wrist_2_z}" rpy="${wrist_2_roll} ${wrist_2_pitch} ${wrist_2_yaw}" /><axis xyz="0 0 1" /><limit lower="${wrist_2_lower_limit}" upper="${wrist_2_upper_limit}"effort="${wrist_2_effort_limit}" velocity="${wrist_2_velocity_limit}"/><xacro:if value="${safety_limits}"><safety_controller soft_lower_limit="${wrist_2_lower_limit + safety_pos_margin}" soft_upper_limit="${wrist_2_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/></xacro:if><dynamics damping="0" friction="0"/></joint><!-- wrist_3_joint --><joint name="${prefix}wrist_3_joint" type="revolute"><parent link="${prefix}wrist_2_link" /><child link="${prefix}wrist_3_link" /><origin xyz="${wrist_3_x} ${wrist_3_y} ${wrist_3_z}" rpy="${wrist_3_roll} ${wrist_3_pitch} ${wrist_3_yaw}" /><axis xyz="0 0 1" /><limit lower="${wrist_3_lower_limit}" upper="${wrist_3_upper_limit}"effort="${wrist_3_effort_limit}" velocity="${wrist_3_velocity_limit}"/><xacro:if value="${safety_limits}"><safety_controller soft_lower_limit="${wrist_3_lower_limit + safety_pos_margin}" soft_upper_limit="${wrist_3_upper_limit - safety_pos_margin}" k_position="${safety_k_position}" k_velocity="0.0"/></xacro:if><dynamics damping="0" friction="0"/></joint><!-- 添加ee_link --><!-- ee_link --><joint name="${prefix}ee_fixed_joint" type="fixed"><parent link="${prefix}wrist_3_link" /><child link = "${prefix}ee_link" /><!--origin xyz="0.0 ${wrist_3_length+0.155} 0.0" rpy="0.0 0.0 ${pi/2.0}" /--><origin xyz="0.0  0.0 ${wrist_3_y+0.142}" rpy="0 0  0" /></joint><!--link name="${prefix}ee_link"><collision><geometry><box size="0.01 0.01 0.01"/></geometry><origin rpy="0 0 0" xyz="-0.01 0 0"/></collision></link--><link name="${prefix}ee_link"/><!-- ROS-Industrial 'base' frame: base_link to UR 'Base' Coordinates transform --><link name="${prefix}base"/><joint name="${prefix}base_link-base_fixed_joint" type="fixed"><!-- Note the rotation over Z of pi radians: as base_link is REP-103aligned (ie: has X+ forward, Y+ left and Z+ up), this is neededto correctly align 'base' with the 'Base' coordinate system ofthe UR controller.--><origin xyz="0 0 0" rpy="0 0 ${pi}"/><parent link="${prefix}base_link"/><child link="${prefix}base"/></joint><!-- ROS-Industrial 'flange' frame: attachment point for EEF models --><link name="${prefix}flange" /><joint name="${prefix}wrist_3-flange" type="fixed"><parent link="${prefix}wrist_3_link" /><child link="${prefix}flange" /><origin xyz="0 0 0" rpy="0 ${-pi/2.0} ${-pi/2.0}" /></joint><!-- ROS-Industrial 'tool0' frame: all-zeros tool frame --><link name="${prefix}tool0"/><joint name="${prefix}flange-tool0" type="fixed"><!-- default toolframe: X+ left, Y+ up, Z+ front --><origin xyz="0 0 0" rpy="${pi/2.0} 0 ${pi/2.0}"/><parent link="${prefix}flange"/><child link="${prefix}tool0"/></joint></xacro:macro>
</robot>

其他

ur_gripper.xacro (ur5_gripper.xacro 更方便)

包含ur_macro_gripper.xacro

<?xml version="1.0"?>
<robot xmlns:xacro="http://wiki.ros.org/xacro" name="$(arg robot_model)_robot"><!-- import main macro --><!-- change --><!-- <xacro:include filename="$(find ur_description)/urdf/inc/ur_macro.xacro"/> --><xacro:include filename="$(find ur_description)/urdf/inc/ur_macro_gripper.xacro"/><!-- parameters --><xacro:arg name="joint_limit_params" default=""/><xacro:arg name="kinematics_params" default=""/><xacro:arg name="physical_params" default=""/><xacro:arg name="visual_params" default=""/><!-- legal values:- hardware_interface/PositionJointInterface- hardware_interface/VelocityJointInterface- hardware_interface/EffortJointInterface--><xacro:arg name="transmission_hw_interface" default="hardware_interface/PositionJointInterface"/><xacro:arg name="safety_limits" default="false"/><xacro:arg name="safety_pos_margin" default="0.15"/><xacro:arg name="safety_k_position" default="20"/><!-- arm --><xacro:ur_robotprefix=""joint_limits_parameters_file="$(arg joint_limit_params)"kinematics_parameters_file="$(arg kinematics_params)"physical_parameters_file="$(arg physical_params)"visual_parameters_file="$(arg visual_params)"transmission_hw_interface="$(arg transmission_hw_interface)"safety_limits="$(arg safety_limits)"safety_pos_margin="$(arg safety_pos_margin)"safety_k_position="$(arg safety_k_position)"/>
</robot>

在这里插入图片描述

base

在这里插入图片描述

base_link

在这里插入图片描述

base_link_inertia

在这里插入图片描述

flange

在这里插入图片描述

forearm_link

在这里插入图片描述

shoulder_link

在这里插入图片描述

tool0

在这里插入图片描述

upper_arm_link

在这里插入图片描述

wrist_1_link

在这里插入图片描述

wrist_2_link

在这里插入图片描述

wrist_3_link

在这里插入图片描述

夹爪功能包下载

直接借用up:哈萨克斯坦x开源工程中功能包
在这里插入图片描述

试运行

roslaunch ur_description view_ur5_gripper.launch

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leonardo.Ai丨一键生成图片(AI绘图)

随着人工智能技术的迅速发展,AI在各个领域的应用越来越广泛,特别是在图像生成方面。AI艺术创作的崛起,不仅让艺术创作变得更加便捷和创新,也为设计师、艺术家及普通用户提供了全新的工具。Leonardo.Ai作为一款基于人工智能的图像生成工具,通过简洁的操作和强大的功能,成功…

【前端开发】HTML+CSS网页,可以拿来当作业(免费开源)

HTML代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content_lizhongyu"widthdevice-width, initial-scale1.0"><title>小兔鲜儿-新鲜、惠民、快捷<…

AI学习记录 - 依据 minimind 项目入门

想学习AI&#xff0c;还是需要从头到尾跑一边流程&#xff0c;最近看到这个项目 minimind, 我也记录下学习到的东西&#xff0c;需要结合项目的readme看。 1、github链接 https://github.com/jingyaogong/minimind?tabreadme-ov-file 2、硬件环境&#xff1a;英伟达4070ti …

【STM32】RTT-Studio中HAL库开发教程九:FLASH中的OPT

文章目录 一、概要二、内部FLASH排布三、内部FLASH主要特色四、OTP函数介绍五、测试验证 一、概要 STM32系列是一款强大而灵活的微控制器&#xff0c;它的片内Flash存储器可以用来存储有关代码和数据&#xff0c;在实际应用中&#xff0c;我们也需要对这个存储器进行读写操作。…

长安大学《2024年812自动控制原理真题》 (完整版)

本文内容&#xff0c;全部选自自动化考研联盟的&#xff1a;《长安大学812自控考研资料》的真题篇。后续会持续更新更多学校&#xff0c;更多年份的真题&#xff0c;记得关注哦~ 目录 2024年真题 Part1&#xff1a;2024年完整版真题 2024年真题

说说你对java lambda表达式的理解?

大家好&#xff0c;我是锋哥。今天分享关于【说说你对java lambda表达式的理解?】面试题。希望对大家有帮助&#xff1b; 说说你对java lambda表达式的理解? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Java Lambda 表达式是 Java 8 引入的一项重要特性&#…

【PostgreSQL使用】最新功能逻辑复制槽的failover,大数据下高可用再添利器

逻辑复制的failover ​专栏内容&#xff1a; postgresql入门到进阶手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. ✅ &#x1f52…

【leetcode100】环形链表Ⅱ

1、题目描述 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统…

决策曲线分析(DCA)中平均净收益用于评价模型算法(R自定义函数)

决策曲线分析&#xff08;DCA&#xff09;中平均净收益用于评价模型算法 DCA分析虽然不强调用来评价模型算法或者变量组合的优劣&#xff0c;但是实际应用过程中感觉DCA曲线的走势和模型的效能具有良好的一致性&#xff0c;其实这种一致性也可以找到内在的联系&#xff0c;比如…

【人工智能】OpenAI O1模型:超越GPT-4的长上下文RAG性能详解与优化指南

在人工智能&#xff08;AI&#xff09;领域&#xff0c;长上下文生成与检索&#xff08;RAG&#xff09; 已成为提升自然语言处理&#xff08;NLP&#xff09;模型性能的关键技术之一。随着数据规模与应用场景的不断扩展&#xff0c;如何高效地处理海量上下文信息&#xff0c;成…

基于智能电能表的智能家居能源管理系统设计

目录 引言系统设计 硬件设计软件设计系统功能模块 电能测量模块数据传输模块能源管理模块控制算法 数据采集与处理算法能源优化算法代码实现 电能测量模块实现数据传输模块实现系统调试与优化结论与展望 1. 引言 随着智能家居的发展&#xff0c;电能管理成为智能家居系统中的…

GLM-4-Plus初体验

引言&#xff1a;为什么高效的内容创作如此重要&#xff1f; 在当前竞争激烈的市场环境中&#xff0c;内容创作已成为品牌成功的重要支柱。无论是撰写营销文案、博客文章、社交媒体帖子&#xff0c;还是制作广告&#xff0c;优质的内容不仅能够帮助品牌吸引目标受众的注意力&a…

软考高级架构 - 10.5 软件架构演化评估方法

10.4 软件架构演化原则总结 本节提出了18条架构演化的核心原则&#xff0c;并为每条原则设计了简单而有效的度量方法&#xff0c;用于从系统整体层面提供实用信息&#xff0c;帮助评估和指导架构演化。 演化成本控制&#xff1a;成本小于重新开发成本&#xff0c;经济高效。进…

科研笔记:ARR 与 ACL rolling

1 ARR 介绍 ARR 提供 评审服务 —— 仅限评审 —— 对于提交的论文。评审不会针对特定会议/场所&#xff0c;但评审标准与传统会议的主会场长文或短文提交要求相同&#xff08;如 ACL 或其他由 ACL 主办的重要会议&#xff09; 2 提交论文进行 ARR 评审 提交截止日期 每两个…

9_less教程 --[CSS预处理]

LESS&#xff08;Leaner Style Sheets&#xff09;是一种CSS预处理器&#xff0c;它扩展了CSS语言&#xff0c;增加了变量、嵌套规则、混合&#xff08;mixins&#xff09;、函数等功能&#xff0c;使得样式表的编写更加灵活和易于维护。下面是一些LESS的基础教程内容&#xff…

JVM 双亲委派模型以及垃圾回收机制

目录 1. JVM 内存区域划分 2. JVM 中类加载的过程 1) 类加载的基本流程 2) 双亲委派模型 3. JVM 中垃圾回收机制 1) 找到垃圾 a) 引用计数 b) 可达性分析 2) 释放垃圾 1. JVM 内存区域划分 一个运行起来的 Java 进程&#xff0c;其实就是一个 JVM 虚拟机。 而进程是…

leetcode-73.矩阵置零-day5

class Solution {public void setZeroes(int[][] mat) {int m mat.length, n mat[0].length;// 1. 扫描「首行」和「首列」记录「首行」和「首列」是否该被置零boolean r0 false, c0 false;for (int i 0; i < m; i) {if (mat[i][0] 0) {r0 true;break;}}for (int j …

C++11语法解析(二)

可变参数模板 基本语法及原理 ・C11 支持可变参数模板&#xff0c;也就是说支持可变数量参数的函数模板和类模板&#xff0c;可变数目的参数被称为参数包&#xff0c;存在两种参数包&#xff1a;模板参数包&#xff0c;表示零或多个模板参数&#xff1b;函数参数包&#xff1…

opencv——图片矫正

图像矫正 图像矫正的原理是透视变换&#xff0c;下面来介绍一下透视变换的概念。 听名字有点熟&#xff0c;我们在图像旋转里接触过仿射变换&#xff0c;知道仿射变换是把一个二维坐标系转换到另一个二维坐标系的过程&#xff0c;转换过程坐标点的相对位置和属性不发生变换&a…

BatchNorm 与 LayerNorm

文章目录 1. BatchNorm批量归一化2. LayerNorm层归一化3. BatchNorm 和 LayerNorm 对比4. BatchNorm 和 LayerNorm 怎么选择References 今天重看Transformer&#xff0c;发现里面提到了BatchNorm和LayerNorm两种归一化方法&#xff0c;在这儿做一下总结和整理。 1. BatchNorm批…