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

ORB-SLAM2编译、安装等问题汇总大全(Ubuntu20.04、eigen3、pangolin0.5、opencv3.4.10)

ORB-SLAM2编译、安装等问题汇总大全(Ubuntu20.04、eigen3、pangolin0.5、opencv3.4.10)

1:环境说明:

使用的Linux发行版本为Ubuntu 20.04

SLAM2下载地址为:git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2

2:eigen版本为 3.2.10

下载地址:https://eigen.tuxfamily.org/index.php?title=Main_Page

3:pangolin版本为0.5,高版本在编译ORB-SLAM2时会出现很多问题

下载地址:https://github.com/stevenlovegrove/Pangolin/tree/v0.5
卸载pangolin:https://blog.csdn.net/qq_42257666/article/details/126069335

4:opencv版本为3.4.10,这个版本不会报错

下载地址:https://github.com/opencv/opencv/releases/tag/3.4.10

5:数据

数据下载地址:https://vision.in.tum.de/data/datasets/rgbd-dataset/download

1.安装:eigen版本为 3.2.10

在这里插入图片描述1.1安装步骤

1:安装命令

cd eigen-3.2.10
mkdir build
cd build
cmake..
sudo make install
sudo cp -r /usr/local/include/eigen3 /usr/include 

2:查看当前版本,验证是否安装成功

pkg-config --modversion eigen3

2.卸载eigen3

1:查询当前版本

pkg-config --modversion eigen3

2:查看eigen3位置相关文件

sudo updatedb
locate eigen3

3:删除eigen3相关文件

sudo rm -rf /usr/include/eigen3
sudo rm -rf /usr/lib/cmake/eigen3
sudo rm -rf /usr/local/include/eigen3
sudo rm -rf /usr/share/doc/libeigen3-dev 
sudo rm -rf /usr/local/share/pkgconfig/eigen3.pc /usr/share/pkgconfig/eigen3.pc /var/lib/dpkg/info/libeigen3-dev.list /var/lib/dpkg/info/libeigen3-dev.md5sums
sudo rm -rf /usr/local/lib/pkgconfig/eigen3.pc
sudo rm -rf /usr/local/share/eigen3

4:查询是否已经删除

pkg-config --modversion eigen3

3:安装opencv

1:安装依赖

sudo apt-get install cmake
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config

2:编译安装

在 opencv-3.4.10文件夹中建立名为 build的文件夹,在build 目录下执行 cmake 和 make。
mkdir buildcd buildcmake -D WITH_TBB=ON -D WITH_EIGEN=ON -D OPENCV_GENERATE_PKGCONFIG=ON  -D BUILD_DOCS=ON -D BUILD_TESTS=OFF -D BUILD_PERF_TESTS=OFF -D BUILD_EXAMPLES=OFF  -D WITH_OPENCL=OFF -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=O -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..make -j8
sudo make install

3:环境配置

动态库配置

sudo gedit /etc/ld.so.conf.d/opencv.conf

添加

/usr/local/lib

保存后,终端内执行

sudo ldconfig 

更新 PKG_CONFIG_PATH

sudo gedit /etc/bash.bashrc

文末添加

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

4:保存后,终端执行

source /etc/bash.bashrc
sudo updatedb
若出现 sudo: updatedb: command not found,执行 sudo apt install mlocate 后再次操作即可。

5:验证

pkg-config opencv --modversionpkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs   opencv

4:安装Realsense SDK

1:下载source

git clone https://github.com/IntelRealSense/librealsense
cd librealsense

2:安装依赖项

sudo apt-get install libudev-dev pkg-config libgtk-3-dev
sudo apt-get install libusb-1.0-0-dev pkg-config
sudo apt-get install libglfw3-dev
sudo apt-get install libssl-dev

3:Install Intel Realsense permission scripts located in librealsense source directory:

sudo cp config/99-realsense-libusb.rules /etc/udev/rules.d/
sudo udevadm control --reload-rules && udevadm trigger 

4:这边需要注意把realsense拔下来

Build and apply patched kernel modules for:
根据不同的ubuntu版本安装:对于Ubuntu 14/16/18 LTS

./scripts/patch-realsense-ubuntu-lts.sh
sudo dmesg | tail -n 50

这里可以看一下UVC是否安装成功了

5:基于cmake的编译

mkdir build
cd build
cmake ../ -DBUILD_EXAMPLES=true
make
sudo make install

-DBUILD_EXAMPLES=true 这个选项表示带演示和教程的

6:进入/librealsense/build/examples/capture,试一下效果

./rs-capture 

在这里插入图片描述

5:ros下驱动realsense相机获取点云

安装依赖

sudo apt-get install ros-$ROS_DISTRO-realsense2-camera

方法1:

1:查看内核版本

uname -r : 显示操作系统的发行版号

如果>=4.4.0-50的版本就可以继续向下进行了,否则需要升级你的Ubuntu内核。

读取点云

2:安装rgbd.launch

cd ~/catkin_ws/src/git clone https://github.com/ros-drivers/rgbd_launch.gitcd ..catkin_make
将rs_rgbd.launch和rs_camera.launch文件中的<arg name="enable_pointcloud" default="false"/>由false改为true
roslaunch realsense2_camera rs_rgbd.launch
点击add 选择PointCloud2进行display,选择Fixed Frame和Topic,如图所示

在这里插入图片描述

方法2:

1:建立workspace,已经有的可以跳过

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src/
catkin_init_workspace 
cd ..
catkin_make
echo "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrc
source ~/.bashrc

2:在catkin_ws/src/下载源程序

cd src
git clone https://github.com/intel-ros/realsense.git

3:catkin_make

cd ..
catkin_make

4:如果没有错误说明,已经装好了,启动相机节点

roslaunch realsense2_camera rs_rgbd.launch

5:看一下发布的topic

rostopic list

在这里插入图片描述内参获取

6:若不进行标定,可以先从Realsense ROS Wrapper发布的topic中获得相机的内参。

rostopic echo /camera/color/camera_info 
rostopic echo /camera/aligned_depth_to_color/camera_info

3:方法3 Step3 安装基于ROS使用RealSense的包

官方教程

1:安装

   mkdir -p ~/catkin_ws/srccd ~/catkin_ws/src/Clone the latest Intel® RealSense™ ROS from here into ‘catkin_ws/src/’把realsense这个文件下载/克隆到该目录下catkin_init_workspacecd ..catkin_make cleancatkin_make -DCATKIN_ENABLE_TESTING=False -DCMAKE_BUILD_TYPE=Releasecatkin_make installecho "source ~/catkin_ws/devel/setup.bash" >> ~/.bashrcsource ~/.bashrc

2:检验是否能在ros使用realsense相机:

 install rgbd_launchsudo apt-get install ros-kinetic-rgbd-launchroslaunch realsense2_camera rs_rgbd.launch再打开一个终端,输入rviz此时并不能看到什么结果左上角 Displays 中 Fixed Frame 选项中,下拉菜单选择 camera_link这是主要到Global Status变成了绿色点击该框中的Add -> 上方点击 By topic -> /depth_registered 下的 /points 下的/PointCloud2点击该框中的Add -> 上方点击 By topic -> /color 下的 /image_raw 下的image
见下图:

在这里插入图片描述
在这里插入图片描述

6:下载ORB_SLAM2:

下载ORB_SLAM2

git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2
cd ORB_SLAM2

2:修改build.sh文件

这时候打开文件夹里的build.sh文件,默认是make -j,如果不改容易引起系统卡死。改为make -j4即可(数字为电脑CPU的核心数),或者去掉-j。

在这里插入图片描述

2.1:如果多线程编译错误
把build.sh的make -j改成make(这是为了防止多线程编译出错,对于build_ros.sh文件也是同理,下面就不说了)

3:为了避免编译时出现usleep的错误,相应文件添加 #include<unistd.h>,具体有

/src/LocalMapping.cc 
/src/System.cc 
/src/LoopClosing.cc
/src/Tracking.cc 
/src/Viewer.cc 
/Examples/Monocular/mono_tum.cc
/Examples/Monocular/mono_kitti.cc 
/Examples/Monocular/mono_euroc.cc
/Examples/RGB-D/rgbd_tum.cc 
/Examples/Stereo/stereo_kitti.cc
/Examples/Stereo/stereo_euroc.cc

4:编译安装

cd ORB_SLAM2
chmod +x build.sh
运行build.sh
./build.sh

5:下载数据集

我使用的是TUM数据集,在

https://vision.in.tum.de/data/datasets/rgbd-dataset/download

6:下载rgbd_dataset_freiburg1_xyz即可,解压

./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml PATH_TO_SEQUENCE_FOLDER

PATH_TO_SEQUENCE_FOLDER是你文件的地址。
然后就开始运行例程了,贴图:

在这里插入图片描述

7:将PATH_TO_SEQUENCE_FOLDER更换成下载后的文件的地址。


./Examples/Monocular/mono_tum Vocabulary/ORBvoc.txt Examples/Monocular/TUM1.yaml /home/ubicast/data/rgbd_dataset_freiburg1_xyz

7:编辑报错

1: 报错及处理:error: ‘AV_PIX_FMT_XVMC_MPEG2_MC’ was not declared in this scope

参考:https://blog.csdn.net/Robert_Q/article/details/121690089

2:详细报错信息

/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In function ‘std::__cxx11::string pangolin::FfmpegFmtToString(AVPixelFormat)’:
/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:41:41: error: ‘AV_PIX_FMT_XVMC_MPEG2_MC’ was not declared in this scope
参考:https://github.com/stevenlovegrove/Pangolin/pull/318/files?diff=split&w=0

3:解决办法:在/Pangolin/CMakeModules/FindFFMPEG.cmake中63,64行

3.1:更改代码
        sizeof(AVFormatContext::max_analyze_duration2);}" HAVE_FFMPEG_MAX_ANALYZE_DURATION2

换成

    sizeof(AVFormatContext::max_analyze_duration);}" HAVE_FFMPEG_MAX_ANALYZE_DURATION
3.2:/Pangolin/src/video/drivers/ffmpeg.cpp中第37行 namespace pangolin上面加上
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
3.3:更改代码第78,79行
TEST_PIX_FMT_RETURN(XVMC_MPEG2_MC); 
TEST_PIX_FMT_RETURN(XVMC_MPEG2_IDCT);

改为

#ifdef FF_API_XVMCTEST_PIX_FMT_RETURN(XVMC_MPEG2_MC);TEST_PIX_FMT_RETURN(XVMC_MPEG2_IDCT);
#endif
3.4:更改代码101-105行
   TEST_PIX_FMT_RETURN(VDPAU_H264);TEST_PIX_FMT_RETURN(VDPAU_MPEG1);TEST_PIX_FMT_RETURN(VDPAU_MPEG2);TEST_PIX_FMT_RETURN(VDPAU_WMV3);TEST_PIX_FMT_RETURN(VDPAU_VC1);

改为

#ifdef FF_API_VDPAUTEST_PIX_FMT_RETURN(VDPAU_H264);TEST_PIX_FMT_RETURN(VDPAU_MPEG1);TEST_PIX_FMT_RETURN(VDPAU_MPEG2);TEST_PIX_FMT_RETURN(VDPAU_WMV3);TEST_PIX_FMT_RETURN(VDPAU_VC1);
#endif
3.5:更改代码第127行
TEST_PIX_FMT_RETURN(VDPAU_MPEG4);

改为

#ifdef FF_API_VDPAUTEST_PIX_FMT_RETURN(VDPAU_MPEG4);
#endif

4:error: ‘AVFMT_RAWPICTURE’ was not declared in this scope

		#define TEST_PIX_FMT_RETURN(fmt) case AV_PIX_FMT_##fmt: return #fmt; /home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp: In memberfunction ‘voidpangolin::FfmpegVideoOutputStream::WriteFrame(AVFrame*)’:/home/andy/Downloads/Pangolin/src/video/drivers/ffmpeg.cpp:572:39:error: ‘AVFMT_RAWPICTURE’ was not declared in this scopeif (recorder.oc->oformat->flags & AVFMT_RAWPICTURE) {
4.1:解决办法,在Pangolin/include/pangolin/video/drivers/ffmpeg.h开头加上
#define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)
#define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER
#define AVFMT_RAWPICTURE 0x0020

2:报错:error: static assertion failed: std::map must have the same value_type as its allocato

/usr/include/c++/8.1.0/bits/stl_map.h: In instantiation of ‘class std::map<ORB_SLAM2::KeyFrame*, g2o::Sim3, std::less<ORB_SLAM2::KeyFrame*>, Eigen::aligned_allocator<std::pair<const ORB_SLAM2::KeyFrame*, g2o::Sim3> > >’:
/home/zach/Projects/ORB-SLAM/ORB_SLAM2/src/Optimizer.cc:818:37:   required from here
/usr/include/c++/8.1.0/bits/stl_map.h:122:21: error: static assertion failed: std::map must have the same value_type as its allocatorstatic_assert(is_same<typename _Alloc::value_type, value_type>::value,
这个可以参考

https://github.com/raulmur/ORB_SLAM2/pull/585
这篇文字上的解答,具体需要:

在这里插入图片描述

相关文章:

ORB-SLAM2编译、安装等问题汇总大全(Ubuntu20.04、eigen3、pangolin0.5、opencv3.4.10)

ORB-SLAM2编译、安装等问题汇总大全&#xff08;Ubuntu20.04、eigen3、pangolin0.5、opencv3.4.10&#xff09; 1&#xff1a;环境说明: 使用的Linux发行版本为Ubuntu 20.04 SLAM2下载地址为&#xff1a;git clone https://github.com/raulmur/ORB_SLAM2.git ORB_SLAM2 2&a…...

QuickBuck:一款专为安全研究人员设计的勒索软件模拟器

关于QuickBuck QuickBuck是一款基于Golang开发的勒索软件模拟工具&#xff0c;在该工具的帮助下&#xff0c;广大研究人员可以通过更简单的方法来判断反病毒保护方案是否能够有效地预防勒索软件的攻击。 功能介绍 该工具能够模拟下列勒索软件典型行为&#xff0c;其中包括&a…...

【八大数据排序法】堆积树排序法的图形理解和案例实现 | C++

第二十一章 堆积树排序法 目录 第二十一章 堆积树排序法 ●前言 ●认识排序 1.简要介绍 2.图形理解 3.算法分析 ●二、案例实现 1.案例一 ● 总结 前言 排序算法是我们在程序设计中经常见到和使用的一种算法&#xff0c;它主要是将一堆不规则的数据按照递增…...

低代码开发平台|生产管理-生产加工搭建指南

1、简介1.1、案例简介本文将介绍&#xff0c;如何搭建生产管理-生产加工。1.2、应用场景在主生产计划列表中下达加工后&#xff0c;在加工单列表可操作领料、质检。2、设置方法2.1、表单搭建1&#xff09;新建表单【产品结构清单&#xff08;BOM&#xff09;】&#xff0c;字段…...

Python类型-语句-函数

文章目录类型动态类型:变量类型会随着程序的运行发生改变注释控制台控制台输入input()运算符算术关系逻辑赋值总结语句判断语句while循环for循环函数链式调用和嵌套调用递归关键字传参在C/java中&#xff0c;整数除以整数结果还是整数&#xff0c;并不会将小数部分舍弃&#xf…...

真兰仪表在创业板开启申购:募资约20亿元,IPO市值约为78亿元

2月9日&#xff0c;上海真兰仪表科技股份有限公司&#xff08;下称“真兰仪表”&#xff0c;SZ:301303&#xff09;开启申购&#xff0c;将在深圳证券交易所创业板上市。本次上市&#xff0c;真兰仪表的发行价为26.80元/股&#xff0c;市盈率43.06倍。 据贝多财经了解&#xf…...

【2023】Prometheus-Prometheus与Alertmanager配置详解

记录一下Prometheus与Alertmanager的配置参数等内容 目录1.Prometheus1.1.prometheus.yml1.2.告警规则定义2.alertmanager2.1.alertmanager.yml2.1.1.global&#xff1a;全局配置2.1.1.1.以email方式作为告警发送方2.1.1.2.以wechat方式作为告警发送方2.1.1.3.以webhook方式作为…...

华为HCIE学习之openstack基础

文章目录一、Openstack各种文件位置二、Openstack命令操作1.使用帮助三、用命令发放云主机1、创建租户2、创建用户并与租户绑定3、注册镜像4、创建规格5、创建公有网络及其子网&#xff08;做弹性IP用&#xff09;6、创建私有网络及其子网7、创建路由并设置网关与端口8、创建安…...

Python实现贝叶斯优化器(Bayes_opt)优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。1.项目背景贝叶斯优化器(BayesianOptimization) 是一种黑盒子优化器&#xff0c;用来寻找最优参数。贝叶斯优化器是基…...

Elasticsearch(九)搜索---搜索辅助功能(下)--搜索性能分析

一、前言 上篇文章我们学习了ES的搜索辅助功能的一部分–分别是指定搜索返回的字段&#xff0c;搜索结果计数&#xff0c;分页&#xff0c;那么本次我们来学习一下ES的性能分析相关功能。 二、ES性能分析 在使用ES的过程中&#xff0c;有的搜索请求的响应比较慢&#xff0c;…...

化繁为简|中信建投基于StarRocks构建统一查询服务平台

近年来&#xff0c;在证券服务逐渐互联网化&#xff0c;以及券商牌照红利逐渐消退的行业背景下&#xff0c;中信建投不断加大对数字化的投入&#xff0c;尤其重视数据基础设施的建设&#xff0c;期望在客户服务、经营管理等多方面由经验依赖向数据驱动转变&#xff0c;从而提高…...

2023数字中国创新大赛·数据开发赛道首批赛题启动报名

由数字中国建设峰会组委会主办的2023数字中国创新大赛&#xff08;DCIC 2023&#xff09;已正式启幕&#xff0c;本届大赛结合当下数字技术发展的热点和业界关注的焦点&#xff0c;面向产业实际需求设置了九大赛道。其中&#xff0c;数据开发赛道2月8日正式上线首批赛题&#x…...

MySQL数据库

1.MySQL的MyISAM与InnoDB两种存储引擎在&#xff0c;事务、锁级别&#xff0c;各自的适用场景? 1.1事务处理上方面 MyISAM&#xff1a;强调的是性能&#xff0c;每次查询具有原子性,其执行数度比InnoDB类型更快&#xff0c;但是不提供事务支持。 InnoDB&#xff1a;提供事务…...

鸿蒙设备学习|快速上手BearPi-HM Micro开发板

系列文章目录 第一章 鸿蒙设备学习|初识BearPi-HM Micro开发板 第二章 鸿蒙设备学习|快速上手BearPi-HM Micro开发板 文章目录系列文章目录前言一、环境要求1.硬件要求2.软件要求3.Linux构建工具要求4.Windows开发工具要求5.工具下载地址二、安装编译基础环境1.安装Linux编译环…...

软件测试标准流程

软件测试的基本流程大概要经历四个阶段&#xff0c;分别是制定测试计划、测试需求分析、测试用例设计与编写以及测试用例评审。因此软件测试的工作内容&#xff0c;远远没有许多人想象的只是找出bug那么简单。准确的说&#xff0c;从一个项目立项以后&#xff0c;软件测试从业者…...

Python身份运算符

Python身份运算符身份运算符用于比较两个对象的存储单元运算符描述实例isis 是判断两个标识符是不是引用自一个对象x is y, 类似 id(x) id(y) , 如果引用的是同一个对象则返回 True&#xff0c;否则返回 Falseis notis not 是判断两个标识符是不是引用自不同对象x is not y &a…...

linux 安装,卸载jdk8

1>安装1 xshell,xsftp 教育版下载 https://www.xshell.com/zh/free-for-home-school/ 2下载jdk包 https://www.oracle.com/java/technologies/downloads/3在usr下新建java文件夹把jdk包拉进去解压tar -zxvf 4首先使用vim打开etc目录下的profile文件 --> vim /etc/profile…...

标准舆情监测平台解决方案及流程,TOOM舆情监测工作计划有哪些?

舆情监测流程一般包括&#xff1a;数据收集、数据分析、信息汇报三个部分。首先&#xff0c;通过多种途径收集舆情数据&#xff0c;如网络媒体、社交媒体、博客、论坛等;其次&#xff0c;对收集的数据进行分析&#xff0c;统计舆情趋势、舆情类型等;最后&#xff0c;根据舆情分…...

Lombok使用总结

文章目录介绍Lombok原理常用注解DataGetterSetterToStringEqualsAndHashCodeNoArgsConstructorAllArgsConstructorRequiredArgsConstructorAccessors(chain true)遇到的问题谨慎使用Data问题总结Builder和Data不能共用解决介绍 官网&#xff1a;https://projectlombok.org/ …...

Qt 如何处理耗时的线程,不影响主线程响应 QApplication::processEvents)

事件原因&#xff1a; 前些时间遇到一个问题&#xff0c;在主线程接收子线程读的数据&#xff0c;一直接收不到&#xff0c;但放在子线程没有问题&#xff1b; 后面查了一下&#xff0c;因为接收子线程使用了 qApp->processEvents(); 查了一下 qApp->processEvents(); …...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15

缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下&#xff1a; struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

HTML前端开发:JavaScript 常用事件详解

作为前端开发的核心&#xff0c;JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例&#xff1a; 1. onclick - 点击事件 当元素被单击时触发&#xff08;左键点击&#xff09; button.onclick function() {alert("按钮被点击了&#xff01;&…...

爬虫基础学习day2

# 爬虫设计领域 工商&#xff1a;企查查、天眼查短视频&#xff1a;抖音、快手、西瓜 ---> 飞瓜电商&#xff1a;京东、淘宝、聚美优品、亚马逊 ---> 分析店铺经营决策标题、排名航空&#xff1a;抓取所有航空公司价格 ---> 去哪儿自媒体&#xff1a;采集自媒体数据进…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...