当前位置: 首页 > news >正文

PX4之启动脚本

PX4通过rcS脚本来设定需要启动的程序,比如设备驱动、控制模块、数据通信等。rcS脚本在项目中的文件位置

ROMFS/px4fmu_common/rcS

对应硬件平台固件上的位置

/etc/init.d/rcS

启动脚本流程如下

#!/bin/sh
# PX4FMU startup script.
# 
# 一些注释
## 设置默认参数
set R /						#根目录
set AUTOCNF no
set FCONFIG /fs/microsd/etc/config.txt		#SD卡上的设置脚本
set FEXTRAS /fs/microsd/etc/extras.txt		#SD卡上的附加脚本
set FRC /fs/microsd/etc/rc.txt				#SD卡上启动脚本,如果有的话运行这个脚本
set IOFW "/etc/extras/px4_io-v2_default.bin"	#固件文件,如果有的话,自动刷新
set IO_PRESENT no
set LOGGER_ARGS ""
set LOGGER_BUF 8
set MAV_TYPE none			#飞行器类型,这里未设定
set MIXER none
set MIXER_AUX none
set MIXER_FILE none
set MIXER_EXTRA none
set OUTPUT_MODE none
set PARAM_FILE ""			#参数文件,未设定
set PWM_OUT none
set PWM_MAIN_RATE p:PWM_MAIN_RATE
set PWM_AUX_OUT none
set PWM_AUX_RATE p:PWM_AUX_RATE
set PWM_EXTRA_OUT none
set PWM_EXTRA_RATE p:PWM_EXTRA_RATE
set EXTRA_MIXER_MODE none
set RC_INPUT_ARGS ""
set SDCARD_AVAILABLE no
set SDCARD_EXT_PATH /fs/microsd/ext_autostart
set SDCARD_FORMAT no
set SDCARD_MIXERS_PATH /fs/microsd/etc/mixers
set STARTUP_TUNE 1
set USE_IO no
set VEHICLE_TYPE none#打印系统信息
ver all# 载入SD卡
if [ -b "/dev/mmcsd0" ]
thenif mount -t vfat /dev/mmcsd0 /fs/microsd		#mountthenif [ -f "/fs/microsd/.format" ]thenecho "INFO [init] format /dev/mmcsd0 requested (/fs/microsd/.format)"set SDCARD_FORMAT yesrm /fs/microsd/.formatumount /fs/microsdelseset SDCARD_AVAILABLE yesfifiif [ $SDCARD_AVAILABLE = no -o $SDCARD_FORMAT = yes ]thenecho "INFO [init] formatting /dev/mmcsd0"set STARTUP_TUNE 15 # tune 15 = SD_ERROR (overridden to SD_INIT if format + mount succeeds)if mkfatfs -F 32 /dev/mmcsd0thenecho "INFO [init] card formatted"if mount -t vfat /dev/mmcsd0 /fs/microsdthenset SDCARD_AVAILABLE yesset STARTUP_TUNE 14 # tune 14 = SD_INITelseecho "ERROR [init] card mount failed"fielseecho "ERROR [init] format failed"fifiif [ $SDCARD_AVAILABLE = yes ]thenif hardfault_log checkthenset STARTUP_TUNE 2 # tune 2 = ERROR_TUNEif hardfault_log committhenhardfault_log resetfififiset PARAM_FILE /fs/microsd/params			#载入成功的情况下,设置参数文件为/fs/microsd/params
fi# 查看SD卡上的启动脚本,如果有的话启动SD卡上的脚本,没有的话启动默认脚本
if [ -f $FRC ]
then. $FRC
else# 默认启动脚本# 查询MTD设备,挂载SPI-EEPROM,如果有的话设置从mtd设备载入参数if mft query -q -k MTD -s MTD_PARAMETERS -v /fs/mtd_paramsthenset PARAM_FILE /fs/mtd_paramsfi# 载入参数,如果有板载校正数据if mft query -q -k MTD -s MTD_CALDATA -v /fs/mtd_caldatathenparam load /fs/mtd_caldatafi# 从PARAM_FILE载入参数param select $PARAM_FILEif ! param importthenecho "ERROR [init] param import failed"set STARTUP_TUNE 2 # tune 2 = ERROR_TUNEparam dump $PARAM_FILEif [ -d "/fs/microsd" ]thendmesg >> /fs/microsd/param_import_fail.txt &# try to make a backup copycp $PARAM_FILE /fs/microsd/param_import_fail.bson &fi# try importing from backup fileif [ -f "/fs/microsd/parameters_backup.bson" ]thenecho "[init] importing from parameter backup"# dump current backup file contents for comparisonparam dump /fs/microsd/parameters_backup.bsonparam import /fs/microsd/parameters_backup.bsonfifiif [ $SDCARD_AVAILABLE = yes ]thenparam select-backup /fs/microsd/parameters_backup.bsonfi# 如果硬件版本为V5X或V6X,启动网络管理程序if ver hwcmp PX4_FMU_V5X PX4_FMU_V6Xthennetman update -i eth0fi# 如果自动配置不为0,重设一系列参数# SYS_AUTOCONFIG定义针对某一机型的自动参数设置,如DJI-F330, DJI-F450, 3DR SOLO等,都有一个对应的数字,具体可以查看/etc/init.d目录下的脚本,或者项目目录ROMFS/px4fmu_common/init.d/airframes目录下的脚本if param greater SYS_AUTOCONFIG 0then# Wipe out params except RC*, flight modes, total flight time, calibration parameters, next flight UUIDparam reset_all SYS_AUTO* RC* COM_FLTMODE* LND_FLIGHT* TC_* CAL_ACC* CAL_GYRO* COM_FLIGHT*set AUTOCNF yesfi# 板载架构配置脚本(可选)set BOARD_ARCH_RC_DEFAULTS ${R}etc/init.d/rc.board_arch_defaultsif [ -f $BOARD_ARCH_RC_DEFAULTS ]thenecho "Board architecture defaults: ${BOARD_ARCH_RC_DEFAULTS}". $BOARD_ARCH_RC_DEFAULTSfiunset BOARD_ARCH_RC_DEFAULTS# 板载配置脚本(可选)set BOARD_RC_DEFAULTS ${R}etc/init.d/rc.board_defaultsif [ -f $BOARD_RC_DEFAULTS ]thenecho "Board defaults: ${BOARD_RC_DEFAULTS}". $BOARD_RC_DEFAULTSfiunset BOARD_RC_DEFAULTS# 启动声调报警模块tone_alarm start# 启动数据管理模块,根据源代码注释,也包含路径点存储(waypoints storage)if param compare SYS_DM_BACKEND 1thendataman start -relseif param compare SYS_DM_BACKEND 0then# dataman start defaultdataman startfifi# 启动socket通讯和事件发送模块send_event start# 启动资源载入监控load_mon start# 启动灯闪控制模块rgbled start -X -qrgbled_ncp5623c start -X -q# 运行自动配置脚本,自动配置脚本中,根据SYS_AUTOSTART数值运行对应机型的参数配置set AUTOSTART_PATH etc/init.d/rc.autostartif ! param compare SYS_AUTOSTART 0thenif param greater SYS_AUTOSTART 1000000then# Use external startup fileif [ $SDCARD_AVAILABLE = yes ]thenset AUTOSTART_PATH etc/init.d/rc.autostart_extelseecho "ERROR [init] SD card not mounted - trying to load airframe from ROMFS"fifi. ${R}$AUTOSTART_PATHfiunset AUTOSTART_PATH# 运行SD卡上的用户配置文件,FCONFIG在前面定义,指向SD卡上的配置文件if [ -f $FCONFIG ]thenecho "Custom: ${FCONFIG}". $FCONFIGfi# 如果AUTOCNF已经设置,SYS_AUTOCONFIG置零if [ $AUTOCNF = yes ]thenparam set SYS_AUTOCONFIG 0fi# 如果设置了UAVCAN_ENABLE,启动CAN总线控制if param greater -s UAVCAN_ENABLE 0thenif uavcan startthenif param greater UAVCAN_ENABLE 2thenset OUTPUT_MODE uavcan_escfielsetune_control play errorfielseif param greater -s UAVCAN_V1_ENABLE 0thenuavcan_v1 startfifi# 检查PX4IO以及是否需要更新固件if [ -f $IOFW ]then# Check for the mini using build with px4io fw file# but not a px4IOif ver hwtypecmp V540 V560thenparam set SYS_USE_IO 0elseif px4io checkcrc ${IOFW}thenset IO_PRESENT yeselse# tune Program PX4IOtune_control play -t 16 # tune 16 = PROG_PX4IOif px4io update ${IOFW}thenusleep 10000tune_control stopif px4io checkcrc ${IOFW}thentune_control play -t 17 # tune 17 = PROG_PX4IO_OKset IO_PRESENT yeselsetune_control play -t 18 # tune 18 = PROG_PX4IO_ERRfielsetune_control stopfifififiif param compare -s SYS_USE_IO 1thenset USE_IO yesfiif [ $USE_IO = yes -a $IO_PRESENT = no ]thenecho "PX4IO not found"set STARTUP_TUNE 2 # tune 2 = ERROR_TUNEfi# 启动RC更新(把RC输入映射到手动控制)rc_update start#启动手动控制模块manual_control start# 启动传感器程序,启动commander模块if param greater SYS_HITL 0thenset OUTPUT_MODE hilsensors start -hcommander start -h# disable GPSparam set GPS_1_CONFIG 0# start the simulator in hardware if neededif param compare SYS_HITL 2thensih startfielseset BOARD_RC_SENSORS ${R}etc/init.d/rc.board_sensorsif [ -f $BOARD_RC_SENSORS ]thenecho "Board sensors: ${BOARD_RC_SENSORS}". $BOARD_RC_SENSORSfiunset BOARD_RC_SENSORS. ${R}etc/init.d/rc.sensorsif param compare -s BAT1_SOURCE 2thenesc_battery startfiif ! param compare BAT1_SOURCE 1thenbattery_status startficommander startfi# 启动磁偏估计if param compare -s MBE_ENABLE 1thenmag_bias_estimator startfi# 启动摄像头相关程序if param greater -s TRIG_MODE 0thencamera_trigger startcamera_feedback startfi# 启动板载mavlink流(可选)set BOARD_RC_MAVLINK ${R}etc/init.d/rc.board_mavlinkif [ -f $BOARD_RC_MAVLINK ]thenecho "Board mavlink: ${BOARD_RC_MAVLINK}". $BOARD_RC_MAVLINKfiunset BOARD_RC_MAVLINK# 启动UART/串口驱动程序. ${R}etc/init.d/rc.serialif [ $IO_PRESENT = no ]then# Must be started after the serial config is readrc_input start $RC_INPUT_ARGSfi# 启动PPS输入驱动if param greater -s PPS_CAP_ENABLE 0thenpps_capture startfi# 启动摄像头拍摄模块if param greater -s CAM_CAP_FBACK 0thenif camera_capture startthencamera_capture onfifi# 运行rc.vehicle_setup# rc.vehicle_setup脚本中运行接口程序(rc.interface)和飞行器应用程序(rc.mc_apps)(以多轴飞行器为例)# 其中rc.interface中启动电机PWM控制程序pwm_out和载入输出配置mixer文件,类似#		pwm_out start			- 启动PWM输出程序#		mixer load ...			- 载入PWM输出配置文件# rc.mc_apps启动飞行器相关主要控制程序,包括#		attitude_estimate_q		- 姿态估计#		ekf2					- 卡尔曼滤波#		mc_att_control			- 姿态控制#		mc_rate_control			- 速度控制#		mc_pos_control			- 位置控制#		land_detector			- 着陆检测# 等. ${R}etc/init.d/rc.vehicle_setup# 播放启动提示音param compare CBRK_BUZZER 782090if [ "$?" != "0" -o "$STARTUP_TUNE" != "1" ]thentune_control play -t $STARTUP_TUNEfi# 启动导航模块navigator start# 启动热校正(thermal calibration)程序. ${R}etc/init.d/rc.thermal_cal# 启动vmount, px4flow, bst等模块if param greater -s MNT_MODE_IN -1thenvmount startfiif param compare -s SENS_EN_PX4FLOW 1thenpx4flow start -Xfi# Blacksheep telemetryif param compare -s TEL_BST_EN 1thenbst start -Xfi# 启动陀螺仪滤波、校正等相关程序if param compare -s IMU_GYRO_FFT_EN 1thengyro_fft startfiif param compare -s IMU_GYRO_CAL_EN 1thengyro_calibration startfi# 启动附加板载脚本set BOARD_RC_EXTRAS ${R}etc/init.d/rc.board_extrasif [ -f $BOARD_RC_EXTRAS ]thenecho "Board extras: ${BOARD_RC_EXTRAS}". $BOARD_RC_EXTRASfiunset BOARD_RC_EXTRAS# 启动SD卡俯加脚本if [ -f $FEXTRAS ]thenecho "Addons script: ${FEXTRAS}". $FEXTRASfi# 启动数据记录. ${R}etc/init.d/rc.logging# 启动AUTOSTART后处理程序if ! param compare SYS_AUTOSTART 0then. ${R}etc/init.d/rc.autostart.postfi# 启动板载bootloader升级程序set BOARD_BOOTLOADER_UPGRADE ${R}etc/init.d/rc.board_bootloader_upgradeif [ -f $BOARD_BOOTLOADER_UPGRADE ]thensh $BOARD_BOOTLOADER_UPGRADEfiunset BOARD_BOOTLOADER_UPGRADE
fi# 清除参数设置
unset R
unset AUTOCNF
unset FCONFIG
unset FEXTRAS
unset FRC
unset IO_PRESENT
unset IOFW
unset LOGGER_ARGS
unset LOGGER_BUF
unset MAV_TYPE
unset MIXER
unset MIXER_AUX
unset MIXER_FILE
unset OUTPUT_MODE
unset PARAM_FILE
unset PWM_AUX_OUT
unset PWM_AUX_RATE
unset PWM_MAIN_RATE
unset PWM_OUT
unset PWM_EXTRA_OUT
unset PWM_EXTRA_RATE
unset RC_INPUT_ARGS
unset SDCARD_AVAILABLE
unset SDCARD_EXT_PATH
unset SDCARD_FORMAT
unset SDCARD_MIXERS_PATH
unset STARTUP_TUNE
unset USE_IO
unset VEHICLE_TYPE# 通知mavlink启动完成
mavlink boot_complete

启动的过程按图示大致如下(当前版本)
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

其中黄色部分为SD卡自定义脚本,蓝色部分为控制相关程序,紫色部分为机型相关自动配置程序,绿色部分为算法程序。

总结主要的点有:

1 程序启动首先Load SD卡,如果SD卡上有自定义启动脚本,就运行SD卡上的脚本,如果没有(默认情况),运行板载自动启动流程
2 机型相关的参数配置通过SYS_AUTOSTART值来定义,通过设置这个值,可以自动载入某一机型对应的参数(如DJI 450,3DR SOLO等)
3 飞行控制相关程序在commander,rc.vehicle_setup,navigator等模块或脚本启动,主要的飞控相关模块有
rc_input - 遥控输入
commander - 命令处理
navigator - 导航
pos_control - 位置控制
att_control - 姿态控制
pwm_out - 电机输出

相关文章:

PX4之启动脚本

PX4通过rcS脚本来设定需要启动的程序,比如设备驱动、控制模块、数据通信等。rcS脚本在项目中的文件位置 ROMFS/px4fmu_common/rcS 对应硬件平台固件上的位置 /etc/init.d/rcS 启动脚本流程如下 #!/bin/sh # PX4FMU startup script. # # 一些注释 ## 设置默认参…...

Java零基础入门到精通(持续更新中)

打开CMD命令窗口 WINR输入cmd 常用cmd命令代码 切换磁盘 E: 回车即可切换到e盘查看当前路径下的所有内容 dir进入目录 cd test回退到上一级目录 cd..进入多级目录 cd test\index\aaa回退到磁盘目录 cd \清屏 cls关闭命令行窗口 exit小例子:使用命令行窗口…...

杂七杂八(12):Bilibili视频缓存 m4s音视频合并 shell脚本

视频目录结构如下: 267132000/ 267132000/c_1015740000/ 267132000/c_1015740000/entry.json 267132000/c_1015740000/80/ 267132000/c_1015740000/80/audio.m4s 267132000/c_1015740000/80/video.m4s267132000/c_1015740011/ 267132000/c_1015740011/entry.json 2…...

Qt 某光谱仪程序开发

某光谱仪程序开发 文章目录某光谱仪程序开发摘要安装驱动注册COM组件导出.h和.cpp在Qt 中添加源文件开发打包程序关键字: Demo、 Qt、 COM、 dumpcpp、 C摘要 今天接到一个临时小任务,写一个的项目子模块的Demo,以供和专家们交流一下项目技…...

蛋白质组学技术与常见分析培训班火热招生中!

什么是蛋白质组学? 蛋白质组学(proteomics),是以蛋白质组为研究对象,研究细胞、组织或生物体蛋白质组成及其变化规律的科学。包括蛋白质的表达水平,翻译后修饰,蛋白与蛋白相互作用等研究内容,集中于动态描述…...

唤醒手腕 Java 后端 Springboot 框架结合 socketio 学习笔记

socketio 安装配置 Socket.IO是一个完全由JavaScript实现、基于Node.js、支持WebSocket的协议用于实时通信、跨平台的开源框架,它包括了客户端的JavaScript和服务器端的Node.js。 Socket.IO除了支持WebSocket通讯协议外,还支持许多种轮询(P…...

C++入门:内联函数、auto关键字、基于范围for循环及指针空值nullptr

目录 一. 内联函数 1.1 内联函数的概念 1.2 内联函数的特性 1.3 内联函数和宏的优缺点对比 二. auto关键字(C11) 2.1 auto的功能 2.2 auto在使用时的注意事项 三. 基于范围的for循环(C11) 四. 指针空值nullptr&#xff08…...

Python遗传算法

1 人工智能概述 2020中国人工智能产业年会在苏州召开,会上发布的《中国人工智能发展报告2020》显示,过去十年(2011-2020) ,中国人工智能专利申请量达389571件,占全球总量的74.7%,位居世界第一。 报告指出,…...

GEE学习笔记 六十四:绿色中国报告(个人版)

2019年上半年在遥感圈里最火的一篇文章莫过于这篇《China and India lead in greening of the world through land-use management》(China and India lead in greening of the world through land-use management | Nature Sustainability),…...

【Kubernetes】【十八】数据存储 高级存储 配置存储

高级存储 PV和PVC ​ 前面已经学习了使用NFS提供存储,此时就要求用户会搭建NFS系统,并且会在yaml配置nfs。由于kubernetes支持的存储系统有很多,要求客户全都掌握,显然不现实。为了能够屏蔽底层存储实现的细节,方便用…...

传输层TCP与UDP协议

目录 传输层 传输层功能 传输层所提供的服务 传输层的两个协议 TCP协议与UDP协议 端口 端口分类 IP地址和端口的关系 UDP协议 前言: UDP报文格式 检验和的伪首部 伪首部内容 TCP协议 TCP报文格式 TCP协议数据段的理解 TCP的伪首部 伪首部内容 标…...

字节数组的通俗解释

1.字节是通过网络传输信息(或在硬盘或内存中存储信息)的单位。2.在ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。注意:utf-8码中一个汉字占三个字节&…...

硬件学习 软件Cadence day06 原理图网表导入PCB (过程和操作的错误),开始的画板

1.新建一个制作芯片的工程 1.打开 File ->New 2.填写信息,设置路径 2.原理图的网表导入 1.打开这个窗口 File -> import ->Logic.. 2.确定信息 3.解决网表导入时出现的错误 1. 第一个案列 (没有找到文件 也是这个) 比如说: WARNING(…...

OCT 医学图像分类

目录1. OCT 图像分类2. OCT图像数据集3. OCT图像预处理4. 特征提取5. 实验结果及分析github地址: https://github.com/aishangcengloua/OCT_Classification 1. OCT 图像分类 视网膜光学相干断层扫描(OCT)是一种成像技术,用于捕获活体患者视网膜的高分辨率横截面。…...

华为OD机试 - 合并数组 | 机试题算法思路 【2023】

最近更新的博客 华为OD机试 - 简易压缩算法(Python) | 机试题算法思路 【2023】 华为OD机试题 - 获取最大软件版本号(JavaScript) 华为OD机试 - 猜字谜(Python) | 机试题+算法思路 【2023】 华为OD机试 - 删除指定目录(Python) | 机试题算法思路 【2023】 华为OD机试 …...

前端开发页面样式通用约定法则

代码组织 以组件为单位组织代码段;制定一致的注释规范;组件块和子组件块以及声明块之间使用一空行分隔,子组件块之间三空行分隔;如果使用了多个 CSS 文件,将其按照组件而非页面的形式分拆,因为页面会被重组,而组件只会被移动;良好的注释是非常重要的。请留出时间来描述…...

向上跳空缺口选股公式,选出回补后再启动的标的

一、向上跳空缺口选股公式 思路:先找出缺口,缺口前后有两根K线,缺口低价是前一根K线的最高价,缺口高价是后一根K线的最低价。(如上图)收盘价低于缺口低价,即实现缺口回补。回补缺口之后&#xf…...

【IoT】做短视频之前,你需要先做好内容定位

现在做内容无疑要从垂直领域入手,否则你就很难出圈。 干货类或者说垂直领域方向的内容,往往都偏向于枯燥,并且会涉及很多专业性的名词,读者理解起来会困难很多,阅读的兴趣也自然会降低。 这也是笔者个人开始做短视频…...

苏宁基于 AI 和图技术的智能监控体系的建设

汤泳,苏宁科技集团智能监控与运维产研中心总监,中国商业联合会智库顾问,致力于海量数据分析、基于深度学习的时间序列分析与预测、自然语言处理和图神经网络的研究。在应用实践中,通过基于 AI 的方式不断完善智能监控体系的建设&a…...

3、内存管理

文章目录1、内存的基础知识1.1、什么是内存?1.2、进程的运行原理--指令1.3、逻辑地址 & 物理地址1.4、从写程序到程序运行1.5、装入模块到运行1.6、装入的三种方式--绝对装入1.7、装入的三种方式--静态重定位1.8、装入的三种方式--动态重定位(重定位…...

MySQL 全量、增量备份与恢复

一.MySQL 数据库备份概述 备份的主要目的是灾难恢复,备份还可以测试应用、回滚数据修改、查询历史数据、审计等。之前已经学习过如何安装 MySQL,本小节将从生产运维的角度了解备份恢复的分类与方法。 1 数据备份的重要性 在企业中数据的价值至关…...

Golang学习之旅

Golang学习之旅:初探Go语言的奥秘 在当今这个快速发展的技术时代,编程语言层出不穷,每一种都有其独特的魅力和适用场景。作为一名对技术充满热情的开发者,我一直在探索新的知识,以提升自己的编程技能。最近&#xff0…...

黑马Java面试笔记之 消息中间件篇(RabbitMQ)

一. 消息丢失问题 RabbitMQ如何保证消息不丢失? 使用场景有: 异步发送(验证码、短信、邮件... )MYSQL和Redis,ES之间的数据同步分布式事务削峰填谷...... 消息丢失原因会有三种情况,分别分析一下 1.1 生…...

Linux 测试本机与192.168.1.130 主机161/udp端口连通性

Linux 测试本机与 192.168.1.130 主机 161/UDP 端口连通性 161/UDP 端口是 SNMP(简单网络管理协议)的标准端口。以下是多种测试方法: 🛠️ 1. 使用 nmap 进行专业测试(推荐) sudo nmap -sU -p 161 -Pn 1…...

使用 Version Catalogs统一配置版本 (Gradle 7.0+ 特性)

1.在 gradle/libs.versions.toml 文件中定义: [versions] compileSdk "34" minSdk "21" targetSdk "34" 2. 在 build.gradle 中使用: android {compileSdkVersion libs.versions.compileSdk.get().toInteger()defaul…...

建造者模式:优雅构建复杂对象

引言 在软件开发中,有时我们需要创建一个由多个部分组成的复杂对象,这些部分可能有不同的变体或配置。如果直接在一个构造函数中设置所有参数,代码会变得难以阅读和维护。当对象构建过程复杂,且需要多个步骤时,我们可…...

优化WP外贸建站提升用户体验

WordPress作为一个强大的建站工具,通过合理的优化,可以提升用户体验,吸引更多潜在客户。本文将为您介绍一些优化WordPress外贸建站的实用建议。 1. 响应式设计 随着移动设备的普及,确保您的WordPress网站具有响应式设计变得至关…...

docker B站学习

镜像是一个只读的模板,用来创建容器 容器是docker的运行实例,提供了独立可移植的环境 https://www.bilibili.com/video/BV11L411g7U1?spm_id_from333.788.videopod.episodes&vd_sourcee60c804914459274157197c4388a4d2f&p3 目录挂载 尚硅谷doc…...

零基础认知企业级数据分析平台如何落实数据建模(GAI)

理解数据建模的基本概念 数据建模是将业务需求转化为数据结构和关系的过程,核心目标是构建可支撑分析、预测或决策的数据模型。零基础需从以下维度入手: 业务理解:明确业务问题(如销售预测、用户分群),与…...

【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能

【HarmonyOS 5】鸿蒙应用实现发票扫描、文档扫描输出PDF图片或者表格的功能 一、前言 图(1-1) HarmonyOS 系统提供的核心场景化视觉服务,旨在帮助开发者快速实现移动端文档数字化功能。 其核心能力包括:扫描合同、票据、会议记录并保存为 PDF 分享。拍摄课堂 PPT、书籍章…...