ros运行包,Ubuntu20.04成功运行LIO-SAM

z@z:~/lio_sam_ws$ source devel/setup.bash 
z@z:~/lio_sam_ws$ roslaunch lio_sam run.launch

创建包链接:

链接1:Ubuntu20.04成功运行LIO-SAM_ubuntu20.04运行liosam-CSDN博客

链接2:ubuntu 20.04 ROS 编译和运行 lio-sam,并且导出PCD文件运行_ubuntu20.04 编译lio-sam-CSDN博客

z@z:~/lio_sam_ws$ source devel/setup.bash
z@z:~/lio_sam_ws$ roslaunch lio_sam run.launch

在bag包所在的位置打开新的终端运行程序代码:

rosbag play l1_cooperation_2023-12-21-15-44-16_velodyne.bag

rosbag play l1_cooperation_2023-12-21-15-44-16_velodyne.bag

最后得到三维点云图像

补充:

根据z@z:~/lio_sam_ws/src/LIO-SAM$ rosbag info l1_cooperation_2023-12-21-15-44-16_velodyne.bag
path:        l1_cooperation_2023-12-21-15-44-16_velodyne.bag
version:     2.0
duration:    10:12s (612s)
start:       Mar 28 2024 14:18:30.89 (1711606710.89)
end:         Mar 28 2024 14:28:43.88 (1711607323.88)
size:        15.4 GB
messages:    73561
compression: none [12163/12163 chunks]
types:       sensor_msgs/Imu         [6a62c6daae103f4ff57a132d6f95cec2]sensor_msgs/PointCloud2 [1158d486dd51d683ce2f1be655c3c181]
topics:      /back/velodyne_points    6130 msgs    : sensor_msgs/PointCloud2/imu/data               61304 msgs    : sensor_msgs/Imu        /velodyne_points         6127 msgs    : sensor_msgs/PointCloud2
怎么修改yaml文件里面的topic                                                                                                                                                           lio_sam:# TopicspointCloudTopic: "sensor_msgs/PointCloud2"               # Point cloud dataimuTopic: "sensor_msgs/Imu"                         # IMU data#odomTopic: "odometry/imu"                   # IMU pre-preintegration odometry, same frequency as IMU#gpsTopic: "odometry/gpsz"                   # GPS odometry topic from navsat, see module_navsat.launch file# FrameslidarFrame: "base_link"baselinkFrame: "base_link"odometryFrame: "odom"mapFrame: "map"# GPS SettingsuseImuHeadingInitialization: true           # if using GPS data, set to "true"useGpsElevation: false                      # if GPS elevation is bad, set to "false"gpsCovThreshold: 2.0                        # m^2, threshold for using GPS dataposeCovThreshold: 25.0                      # m^2, threshold for using GPS data# Export settingssavePCD: false                              # https://github.com/TixiaoShan/LIO-SAM/issues/3savePCDDirectory: "/Downloads/LOAM/"        # in your home folder, starts and ends with "/". Warning: the code deletes "LOAM" folder then recreates it. See "mapOptimization" for implementation# Sensor Settingssensor: velodyne                            # lidar sensor type, 'velodyne' or 'ouster' or 'livox'N_SCAN: 16                                  # number of lidar channel (i.e., Velodyne/Ouster: 16, 32, 64, 128, Livox Horizon: 6)Horizon_SCAN: 1800                          # lidar horizontal resolution (Velodyne:1800, Ouster:512,1024,2048, Livox Horizon: 4000)downsampleRate: 1                           # default: 1. Downsample your data if too many points. i.e., 16 = 64 / 4, 16 = 16 / 1lidarMinRange: 1.0                          # default: 1.0, minimum lidar range to be usedlidarMaxRange: 1000.0                       # default: 1000.0, maximum lidar range to be used# IMU SettingsimuAccNoise: 3.9939570888238808e-03imuGyrNoise: 1.5636343949698187e-03imuAccBiasN: 6.4356659353532566e-05imuGyrBiasN: 3.5640318696367613e-05imuGravity: 9.80511imuRPYWeight: 0.01# Extrinsics: T_lb (lidar -> imu)extrinsicTrans: [0.0, 0.0, 0.0]# extrinsicRot: [-1, 0, 0,#                 0, 1, 0,#                 0, 0, -1]# extrinsicRPY: [0, -1, 0,#                1, 0, 0,#                0, 0, 1]extrinsicRot: [1, 0, 0,0, 1, 0,0, 0, 1]extrinsicRPY: [1, 0, 0,0, 1, 0,0, 0, 1]# LOAM feature thresholdedgeThreshold: 1.0surfThreshold: 0.1edgeFeatureMinValidNum: 10surfFeatureMinValidNum: 100# voxel filter papramsodometrySurfLeafSize: 0.4                     # default: 0.4 - outdoor, 0.2 - indoormappingCornerLeafSize: 0.2                    # default: 0.2 - outdoor, 0.1 - indoormappingSurfLeafSize: 0.4                     # default: 0.4 - outdoor, 0.2 - indoor# robot motion constraint (in case you are using a 2D robot)z_tollerance: 1000                            # metersrotation_tollerance: 1000                     # radians# CPU ParamsnumberOfCores: 4                              # number of cores for mapping optimizationmappingProcessInterval: 0.15                  # seconds, regulate mapping frequency# Surrounding mapsurroundingkeyframeAddingDistThreshold: 1.0   # meters, regulate keyframe adding thresholdsurroundingkeyframeAddingAngleThreshold: 0.2  # radians, regulate keyframe adding thresholdsurroundingKeyframeDensity: 2.0               # meters, downsample surrounding keyframe poses   surroundingKeyframeSearchRadius: 50.0         # meters, within n meters scan-to-map optimization (when loop closure disabled)# Loop closureloopClosureEnableFlag: trueloopClosureFrequency: 1.0                     # Hz, regulate loop closure constraint add frequencysurroundingKeyframeSize: 50                   # submap size (when loop closure enabled)historyKeyframeSearchRadius: 15.0             # meters, key frame that is within n meters from current pose will be considerd for loop closurehistoryKeyframeSearchTimeDiff: 30.0           # seconds, key frame that is n seconds older will be considered for loop closurehistoryKeyframeSearchNum: 25                  # number of hostory key frames will be fused into a submap for loop closurehistoryKeyframeFitnessScore: 0.3              # icp threshold, the smaller the better alignment# VisualizationglobalMapVisualizationSearchRadius: 1000.0    # meters, global map visualization radiusglobalMapVisualizationPoseDensity: 10.0       # meters, global map visualization keyframe densityglobalMapVisualizationLeafSize: 1.0           # meters, global map visualization cloud densityNavsat (convert GPS coordinates to Cartesian)
navsat:frequency: 50wait_for_datum: falsedelay: 0.0magnetic_declination_radians: 0yaw_offset: 0zero_altitude: truebroadcast_utm_transform: falsebroadcast_utm_transform_as_parent_frame: falsepublish_filtered_gps: falseEKF for Navsat
ekf_gps:publish_tf: falsemap_frame: mapodom_frame: odombase_link_frame: base_linkworld_frame: odomfrequency: 50two_d_mode: falsesensor_timeout: 0.01# -------------------------------------# External IMU:# -------------------------------------imu0: imu_correct# make sure the input is aligned with ROS REP105. "imu_correct" is manually transformed by myself. EKF can also transform the data using tf between your imu and base_linkimu0_config: [false, false, false,true,  true,  true,false, false, false,false, false, true,true,  true,  true]imu0_differential: falseimu0_queue_size: 50 imu0_remove_gravitational_acceleration: true# -------------------------------------# Odometry (From Navsat):# -------------------------------------odom0: odometry/gpsodom0_config: [true,  true,  true,false, false, false,false, false, false,false, false, false,false, false, false]odom0_differential: falseodom0_queue_size: 10#                            x     y     z     r     p     y   x_dot  y_dot  z_dot  r_dot p_dot y_dot x_ddot y_ddot z_ddotprocess_noise_covariance: [  1.0,  0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,    0,    0,      0,0,    1.0,  0,    0,    0,    0,    0,     0,     0,     0,    0,    0,    0,    0,      0,0,    0,    10.0, 0,    0,    0,    0,     0,     0,     0,    0,    0,    0,    0,      0,0,    0,    0,    0.03, 0,    0,    0,     0,     0,     0,    0,    0,    0,    0,      0,0,    0,    0,    0,    0.03, 0,    0,     0,     0,     0,    0,    0,    0,    0,      0,0,    0,    0,    0,    0,    0.1,  0,     0,     0,     0,    0,    0,    0,    0,      0,0,    0,    0,    0,    0,    0,    0.25,  0,     0,     0,    0,    0,    0,    0,      0,0,    0,    0,    0,    0,    0,    0,     0.25,  0,     0,    0,    0,    0,    0,      0,0,    0,    0,    0,    0,    0,    0,     0,     0.04,  0,    0,    0,    0,    0,      0,0,    0,    0,    0,    0,    0,    0,     0,     0,     0.01, 0,    0,    0,    0,      0,0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0.01, 0,    0,    0,      0,0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0.5,  0,    0,      0,0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,    0.01, 0,      0,0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,    0,    0.01,   0,0,    0,    0,    0,    0,    0,    0,     0,     0,     0,    0,    0,    0,    0,      0.015]

解答

根据您的ROS Bag文件中的Topic信息,需要将YAML配置文件中的 LiDAR点云Topic 和 IMU Topic 与实际录制的话题名称对齐。以下是具体修改步骤:---**一、关键Topic配置修改**
**1. LiDAR点云Topic**
原始配置错误地将点云Topic定义为消息类型,需改为实际Topic名称:
```yaml
lio_sam:# TopicspointCloudTopic: "/velodyne_points"  # 修改前:"sensor_msgs/PointCloud2"# 或根据需求选择多雷达:# pointCloudTopic: "/back/velodyne_points"
```**2. IMU Topic**
IMU Topic需匹配Bag文件中的实际名称:
```yamlimuTopic: "/imu/data"  # 修改前:"sensor_msgs/Imu"
```---**二、其他相关配置验证**
**1. 传感器类型与参数**
检查LiDAR型号参数是否匹配(Velodyne/Ouster/Livox):
```yaml# Sensor Settingssensor: velodyne  # 确保与使用的LiDAR型号一致N_SCAN: 16        # Velodyne 16线雷达配置Horizon_SCAN: 1800 # Velodyne的水平分辨率
```**2. 坐标系对齐**
验证雷达与IMU的坐标系关系(若存在外参偏移需修改):
```yaml# Extrinsics: T_lb (lidar -> imu)extrinsicTrans: [0.0, 0.0, 0.0]  # 若无偏移可保持默认extrinsicRot: [1, 0, 0,0, 1, 0,0, 0, 1]          # 单位矩阵表示坐标系对齐
```**3. 导航卫星配置**
如果使用GPS数据,确保`navsat`部分Topic与Bag一致:
```yaml
navsat:# 若有GPS数据需配置对应Topic# odom0: "odometry/gps"  # 取消注释并验证Topic名称
```---**三、修改后完整配置示例**
```yaml
lio_sam:# TopicspointCloudTopic: "/velodyne_points"  # 或 "/back/velodyne_points"imuTopic: "/imu/data"# FrameslidarFrame: "base_link"baselinkFrame: "base_link"odometryFrame: "odom"mapFrame: "map"# Sensor Settingssensor: velodyneN_SCAN: 16Horizon_SCAN: 1800downsampleRate: 1lidarMinRange: 1.0lidarMaxRange: 1000.0# IMU噪声参数(根据传感器标定结果填写)imuAccNoise: 3.9939570888238808e-03imuGyrNoise: 1.5636343949698187e-03imuGravity: 9.80511
```---**四、验证与调试**
1. 启动LIO-SAM:```bashroslaunch lio_sam run.launch```2. 回放Bag文件:```bashrosbag play l1_cooperation_2023-12-21-15-44-16_velodyne.bag \--topics /velodyne_points /imu/data  # 限定必要Topic```3. 检查Topic连通性:```bashrostopic list | grep -E "velodyne_points|imu/data"  # 确认Topic已发布```---**五、常见问题解决**
1. Topic未接收:• 使用`rostopic hz /velodyne_points`检查发布频率• 在`launch`文件中添加重映射:```xml<node pkg="lio_sam" type="lio_sam_imuPreintegration" name="imuPreintegration"><remap from="/imu/data" to="/your_custom_imu_topic"/></node>```2. 时间同步问题:```bashrosbag play --clock bag_file.bag  # 启用模拟时间```---通过以上配置,您的LIO-SAM将正确订阅Bag文件中的传感器数据。若需进一步优化建图效果,可调整`mappingCornerLeafSize`等点云降采样参数(参见原始配置第25-27行)。

问题2:

为什么修改之后运行重新打开一个终端,输入roslaunch lio_sam run.launch和rosbag play 包在rviz里面没有显示呀,是需要添加什么话题吗

---**原因分析与解决方案**
根据图片中的 RViz报错信息 和 终端日志,修改后运行未显示数据的原因可能是以下几点:---**1. 坐标系(TF)未正确发布**
图片中的关键错误是 `Fixed Frame [map] does not exist`,说明ROS系统中未发布 `map` 坐标系,导致所有依赖该坐标系的显示内容(点云、轨迹等)无法渲染。  
原因:  
• LIO-SAM的核心节点未正常启动(如 `mapOptimization` 节点崩溃)。  • YAML参数配置错误(如 `mapFrame` 与其他节点冲突)。  解决方案:  
1. 检查YAML配置:确保 `lio_sam` 部分的 `mapFrame` 和 `odometryFrame` 与其他节点(如 `ekf_gps`)的配置一致:  ```yaml# lio_sam/config/params.yamllio_sam:mapFrame: "map"          # 必须与其他节点的map_frame一致odometryFrame: "odom"    # 必须与ekf_gps的odom_frame一致``````yaml# ekf_gps配置(若有)ekf_gps:map_frame: "map"odom_frame: "odom"base_link_frame: "base_link"```2. 验证节点启动状态:  • 在终端日志中,确认 `lio_sam_mapOptmization` 节点是否启动(如日志中出现 `[lio_sam_mapOptmization-4] process started`)。  • 若节点崩溃,检查 `mapOptmization.cpp` 的依赖项(如GTSAM版本、PCL配置)。---**2. 话题未正确订阅**
RViz中未显示点云或轨迹,可能是因为 话题名称未匹配 或 数据未发布。  
原因:  
• YAML中的 `pointCloudTopic` 或 `imuTopic` 与Bag文件中的实际话题名称不一致。  • 数据未同步(如Bag文件播放时未指定时钟)。  解决方案:  
1. 修改YAML话题名称:  根据Bag文件中的实际话题名称调整参数:  ```yaml# lio_sam/config/params.yamllio_sam:pointCloudTopic: "/velodyne_points"  # 修改为Bag中的实际名称imuTopic: "/imu/data"               # 修改为Bag中的实际名称```2. 指定时钟同步播放Bag:  ```bashrosbag play --clock your_data.bag  # 启用模拟时钟```---**3. RViz显示配置错误**
即使数据已发布,若RViz未正确配置显示类型或话题,仍无法可视化。  
解决方案:  
1. 添加显示插件:  • 在RViz中点击 Add → By Topic → 选择以下话题:  ◦ PointCloud2:订阅 `/lio_sam/mapping/cloud_registered`  ◦ Path:订阅 `/lio_sam/mapping/path`  ◦ TF:勾选所有坐标系  • 设置 Fixed Frame 为 `map`(若不存在则设为 `odom` 临时测试)。2. 验证话题存在性:  ```bashrostopic list | grep -E "cloud_registered|path|imu|odom"  # 确认关键话题已发布```---**4. 进程依赖冲突**
终端日志显示 `robot_state_publisher` 和 `ekf_gps` 进程异常退出,可能是 节点依赖冲突 或 参数重复定义。  
解决方案:  
1. 关闭冲突节点:  在 `run.launch` 中注释或删除重复节点定义(如 `robot_state_publisher` 或 `ekf_gps`)。  ```xml<!-- 注释冲突节点 --><!-- <node pkg="robot_state_publisher" type="robot_state_publisher" name="robot_state_publisher" /> -->```2. 检查launch文件依赖:  确保所有节点依赖的包已安装(如 `robot_state_publisher` 需安装 `ros-noetic-robot-state-publisher`)。---**操作流程验证**
1. 启动LIO-SAM:  ```bashsource devel/setup.bash  # 确保环境生效roslaunch lio_sam run.launch```2. 播放数据包:  ```bashrosbag play --clock your_data.bag --topics /velodyne_points /imu/data  # 限定必要话题```3. RViz配置检查:  • 打开RViz并加载LIO-SAM的默认配置(通常位于 `config/rviz.rviz`)。  • 手动添加显示插件并订阅话题(见上文步骤)。---**常见问题排查**
• 终端无地图输出:检查 `mapOptmization` 节点的日志,确认GTSAM优化是否收敛。  • TF树不完整:运行 `rosrun tf view_frames` 生成TF关系图,验证 `map → odom → base_link` 是否存在。  • 数据延迟:调整Bag播放速率 `rosbag play -r 0.8`(降速80%)。通过以上步骤,可解决坐标系缺失和数据显示问题。若仍无法解决,请提供完整终端日志和 `params.yaml` 文件进一步分析。

最后得到的三维点云图像如下:

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

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

相关文章

AI自动化工作流:开启当下智能生产力的价值

举手之言&#xff1a;AI自动化工作流创造了什么呢&#xff1f; AI自动化工作流 &#xff0c;顾名思义&#xff0c;是将人工智能&#xff08;AI&#xff09;技术与自动化流程相结合&#xff0c;通过智能化的方式来完成复杂的任务和操作。简单来说&#xff0c;它就是利用AI的强大…

【设计模式】- 行为型模式2

观察者模式 定义了一对多的依赖关系&#xff0c;让多个观察者对象同时监听某一个对象主题。这个主题对象在状态变化时&#xff0c;会通知所有的观察者对象&#xff0c;让他们能够自动更新自己。 【主要角色】 抽象主题角色&#xff1a;把所有观察者对象保存在一个集合里&…

mapbox-gl强制请求需要accessToken的问题

vue引入"mapbox-gl": "^2.15.0", 1.13以后得版本&#xff0c;都强制需要验证这个mapboxgl.accessToken。 解决办法&#xff1a;实例化地图的代码中&#xff0c;加入这个&#xff1a; const originalFetch window.fetch; window.fetch function ({ url…

已知6、7、8月月平均气温和标准差,求夏季季平均温度与标准差

由下面定理&#xff0c;得出平方和的公式&#xff1a;&#xff08;即每天的温度平方和&#xff09; 这样就可以推出季平均的算法&#xff1a; 举例&#xff1a;在Excel用公式算&#xff0c;不要手算&#xff1a; 因此季平均&#xff1a;(B2*C2B3*C3B4*C4)/SUM(B2:B4) 季标准差…

手机内存不够,哪些文件可以删?

1️⃣应用缓存文件 安卓&#xff1a;通过「文件管理器」→「Android」→「data」或「cache」文件夹&#xff08;部分需权限&#xff09;&#xff0c;或直接在应用设置中清除缓存 iOS&#xff1a;无需手动清理&#xff0c;系统会自动管理&#xff0c;或在应用内设置中清除&…

可编辑98页PPT | 某大型制造业数字化转型战略规划项目方案

荐言摘要&#xff1a;某大型制造业数字化转型战略规划项目方案聚焦企业全价值链升级&#xff0c;以“数据驱动业务重塑”为核心&#xff0c;打造行业标杆级数字化能力。项目将分三阶段推进&#xff0c;首阶段聚焦顶层设计&#xff0c;通过现状诊断明确痛点&#xff1a;针对企业…

lovart design 设计类agent的系统提示词解读

文章目录 lovart 设计agent介绍角色定义工作规范工具调用任务复杂度指南任务移交指南其他ref lovart 设计agent介绍 lovart作为设计agent&#xff0c;产品功能包括&#xff1a; 全链路设计能力&#xff1a;可以快速生成完整的品牌视觉方案&#xff0c;包括标志、配色、品牌规范…

使用 docker-volume-backup 备份 Docker 卷

docker-volume-backup 是一个用于备份 Docker 卷的工具&#xff0c;在 Windows 10 上使用它&#xff0c;你可以按照以下步骤操作&#xff1a; 1. 确保 Docker 环境已安装并正常运行 在 Windows 10 上&#xff0c;你需要安装 Docker Desktop for Windows。可以从 Docker 官方网…

用户行为日志分析的常用架构

## 1. 经典Lambda架构 Lambda架构是一种流行的大数据处理架构&#xff0c;特别适合用户行为日志分析场景。 ### 1.1 架构组成 Lambda架构包含三层&#xff1a; - **批处理层(Batch Layer)**: 存储全量数据并进行离线批处理 - **实时处理层(Speed Layer)**: 处理最新数据&…

从API到UI:直播美颜SDK中的滤镜与贴纸功能开发与落地方案详解

时下&#xff0c;滤镜和贴纸功能&#xff0c;已经成为主播们展现个性、增强互动的“必备神器”。那么&#xff0c;这些功能背后的技术实现到底有多复杂&#xff1f;如何从API到UI构建一个流畅、灵活的美颜SDK呢&#xff1f;本文将从底层原理到前端实现&#xff0c;全面解析这两…

21.EC实战 嵌入式控制器EC如何进入休眠模式实现低功耗

文章目录 一、概述1. WUI0中断向量表配置2. 中断服务函数内容3. 深度睡眠检测4. 深度睡眠功能函数4.1 关闭所有中断4.2 外部中断对应引脚功能配置4.3 设置唤醒功能和唤醒中断4.4 进入深度睡眠状态一、概述 EC作为笔记本电脑的嵌入式控制器,在笔记本电脑使用电池单独工作时,关…

Java实现PDF加水印功能:技术解析与实践指南

Java实现PDF加水印功能&#xff1a;技术解析与实践指南 在当今数字化办公环境中&#xff0c;PDF文件因其跨平台兼容性和格式稳定性而被广泛应用。然而&#xff0c;为了保护文档的版权、标记文档状态&#xff08;如“草稿”“机密”等&#xff09;或增加文档的可追溯性&#xf…

vue2、vue3项目打包生成txt文件-自动记录打包日期:git版本、当前分支、提交人姓名、提交日期、提交描述等信息 和 前端项目的版本号json文件

vue2 打包生成text文件 和 前端项目的版本号json文件 项目打包生成txt文件-自动记录git版本、当前分支、提交人姓名、提交日期、提交描述等信息生成版本号json文件-自动记录当前版本号、打包时间等信息新建branch-version-webpack-plugin.js文件 // 同步子进程 const execSyn…

Filament引擎(一) ——渲染框架设计

filament是谷歌开源的一个基于物理渲染(PBR)的轻量级、高性能的实时渲染框架&#xff0c;其框架架构设计并不复杂&#xff0c;后端RHI的设计也比较简单。重点其实在于项目中材质、光照模型背后的方程式和理论&#xff0c;以及对它们的实现。相关的信息&#xff0c;可以参考官方…

洛谷B3876—— [信息与未来 2015] 中间值

见&#xff1a;B3876 [信息与未来 2015] 中间值 - 洛谷 题目描述 给出一个正整数 n&#xff0c;生成长度为 n 的数列 a&#xff0c;其中 ai​i(1≤i≤n)。 若 n 为奇数&#xff0c;则输出 a 的中间数&#xff08;位于 a 正中位置的数&#xff09;&#xff1b;若 n 为偶数&am…

Java 后端基础 Maven

Maven 1.什么是Maven 2.Maven的作用 Maven核心 Maven概述 IDEA集成Maven 1.创建Maven项目 点击设置里的 Project Structure 将jdk和编译语言进行设置 随后点击apply点击ok 2.Maven坐标 3.导入Maven项目 将文件夹复制到当前项目的目录下 在这个目录下&#xff0c;在磁盘中…

qtcreater配置opencv

我配置opencv不管是按照网上的教程还是deep seek发现都有些问题&#xff0c;下面是我的配置方法以及实践成功的心得 电脑环境 windows平台qt6 下载 我这里直接提供官网下载地址&#xff1a;https://opencv.org/releases/ 我下载的是最新版&#xff0c;下载后是一个.exe文件…

单片机-STM32部分:15、直流电机与步进电机 PWM/IO

飞书文档https://x509p6c8to.feishu.cn/wiki/InUfwEeJNimqctkyW1mcImianLh 一、步进电机与直流电机&#xff1a; 1-1、什么是直流电机&#xff1f; 直流电机是最常见的电机类型。直流电动机通常只有两个引线&#xff0c;一个正极和一个负极。直流电机的转速控制主要依靠改变输…

「佰傲再生医学」携手企企通,解锁企业采购供应链数字化新体验

健康&#xff0c;是人类美好生活的基石。随着“健康中国2030”规划的深入推进&#xff0c;生物医药和再生医学等前沿技术快速崛起&#xff0c;已成为促进全民健康、提升生命质量的重要支撑&#xff0c;为健康事业注入了新的希望和动力。 一、佰傲再生医学&#xff0c;让每个人…

PyTorch Geometric(PyG):基于PyTorch的图神经网络(GNN)开发框架

PyTorch Geometric&#xff08;PyG&#xff09;&#xff1a;基于PyTorch的图神经网络&#xff08;GNN&#xff09;开发框架 一、PyG核心功能全景图 PyTorch Geometric&#xff08;PyG&#xff09;是基于PyTorch的图神经网络&#xff08;GNN&#xff09;开发框架&#xff0c;专…