vins-fusion环境配置、安装与测试

news/2024/12/4 20:12:04/

本文主要介绍如何搭建vins-fusion的运行环境,以及解决vins-fusion编译运行时遇到的环境冲突问题,并在此基础上实现例程的运行。

目录

  • 一、安装OpenCV-3.4.11
    • 1.1 配置依赖环境
    • 1.2 下载OpenCV-3.4.11
    • 1.3 将压缩包复制到Ubuntu的主目录下
    • 1.4 解压压缩包
    • 1.5 更改工作路径并创建build文件
    • 1.6 cmake
    • 1.7 使用make编译
    • 1.8 进行安装
    • 1.9 完成配置
    • 1.10 检查
    • 1.11 安装ros与opencv的桥接工具包
  • 二、安装eigen3
    • 2.1 终端apt命令安装
    • 2.2 源码编译安装
  • 三、安装ceres-solver库
  • 四、下载VINS-FUSION的代码库
    • 4.1 下载编译
    • 4.2 解决错误
    • 4.3 完成编译安装
  • 五、添加到bash配置文件
  • 六、下载数据集
  • 七、解决段错误(核心已转储)
  • 八、运行VINS
    • 8.1 Monocualr camera + IMU
    • 8.2 Stereo cameras + IMU
    • 8.3 Stereo cameras
  • 九、总结

本文是在已经安装好 ROS 的基础上,在 Ubuntu20.04 系统下,完成 vins-fusion 的环境搭建,主要涉及到 opencv3.4.11、ceres-solver2.0.0、eigen3 的安装,解决了 vins对ros自带的opencv4不兼容ceres对c++的版本要求 、以及一些 常见编译错误 的问题,还解决了运行vins-fusion时出现 ==段错误(核心已转储)==的问题。

注意按照目录查找,解决编译问题在 4.2节,段错误在 第七部分

一、安装OpenCV-3.4.11

1.1 配置依赖环境

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

1.2 下载OpenCV-3.4.11

下载地址:https://opencv.org/releases/
点击 Sources 下载自己需要的版本
在这里插入图片描述

1.3 将压缩包复制到Ubuntu的主目录下

在浏览器下载压缩包,将压缩包复制到Ubunt系统的主目录下
在这里插入图片描述

1.4 解压压缩包

键入Ctrl+Alt+T ,打开终端,在命令行输入unzip opencv-3.4.11
在这里插入图片描述

1.5 更改工作路径并创建build文件

运行命令:

cd opencv-3.4.11
mkdir build
cd build

1.6 cmake

运行命令:

sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..

在这里插入图片描述

1.7 使用make编译

运行命令:sudo make -j4
可以使用sudo make -j8sudo make -j4sudo make
注:单线程编译:sudo make ,这会等待比较长的时间,如果你想更快编译完,可以使用命令:sudo make -j4sudo make -j8 ,而 -j4 表示使用 4 个线程进行编译,而 -j8 表示使用 8 个线程进行编译。
在这里插入图片描述

1.8 进行安装

运行命令:sudo make install
在这里插入图片描述

1.9 完成配置

  • 1.用gedit打开/etc/ld.so.conf

  • 2.在文件中加上一行include /usr/local/lib
    其中/usr/local/libOpenCV 安装路径也就是 makefile 中指定的安装路径
    运行命令:sudo gedit /etc/ld.so.conf
    在这里插入图片描述

  • 3.修改完成后点击右上角的保存,保存后会看到之前的警告信息,这是正常情况。
    在这里插入图片描述

  • 4.更新系统共享链接库: sudo ldconfig

  • 5.配置bash,修改 bash.bashrc 文件:

sudo gedit /etc/bash.bashrc 

在这里插入图片描述

  • 在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

在这里插入图片描述

  • 6.保存并退出,然后执行如下命令使得配置生效:
source /etc/bash.bashrc

在这里插入图片描述

  • 7.更新一下:
sudo updatedb

在这里插入图片描述

  • 这个时候发现找不到命令,因为我这个Ubuntu系统刚装好,上面什么都没有

  • 执行命令:

sudo su
apt-get install mlocate

在这里插入图片描述

  • 现在更新一下
    在这里插入图片描述

1.10 检查

接下来查看 OpenCV 的版本信息是否匹配:

pkg-config --modversion opencv

在这里插入图片描述

1.11 安装ros与opencv的桥接工具包

sudo apt-get install ros-noetic-cv-bridge ros-noetic-tf ros-noetic-message-filters ros-noetic-image-transport

在这里插入图片描述

到这里就完成了OpenCV的安装

二、安装eigen3

下面是两种安装方式,二选一即可

2.1 终端apt命令安装

sudo apt-get install libeigen3-dev

在这里插入图片描述

Eigen 只包含头文件,因此它不需要实现编译,只需要引入头文件即可编译项目。
Eigen 头文件的默认安装位置是:/usr/local/include/eigen3;在很多程序中 include 时经常使用 #include <Eigen/Dense> 而不是使用 #include <eigen3/Eigen/Dense>所以要做下处理:

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

2.2 源码编译安装

1、移动到指定目录下:

git clone https://github.com/eigenteam/eigen-git-mirror

在这里插入图片描述

这里由于网络不好下了5、6次

2、安装,执行下面的命令:

cd eigen-git-mirror
mkdir build
cd build
cmake ..

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

3、执行命令:

sudo make install

在这里插入图片描述

4、安装后,头文件安装在/usr/local/include/eigen3/,需要执行下面的命令移动头文件

sudo cp -r /usr/local/include/eigen3/Eigen /usr/local/include

在这里插入图片描述

到这里就完成了 eigen3 的安装

三、安装ceres-solver库

1.在 ceres-solverGit 上下载需要的版本,我用 2.0.0
链接:https://github.com/ceres-solver/ceres-solver/releases/tag/2.0.0
在这里插入图片描述
2.解压后移动到主目录下
在这里插入图片描述

3.安装相关依赖

sudo apt-get install liblapack-dev libsuitesparse-dev libcxsparse3 libgflags-dev libgoogle-glog-dev libgtest-dev

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

检查一下

在这里插入图片描述

4.解压并创建build

cd ceres-solver-2.0.0
mkdir build
cd build
cmake ..

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

make -j4

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

5.安装

sudo make install

在这里插入图片描述
在这里插入图片描述
到这里就完成了 ceres-solver 的安装

四、下载VINS-FUSION的代码库

4.1 下载编译

下载,先在可视化界面的主目录下创一个vins-fusion的文件夹,再在这个文件夹内部创建一个src文件,然后执行下面两条命令:

cd ~/vins-fusion/src
git clone https://github.com/HKUST-Aerial-Robotics/VINS-Fusion.git

在这里插入图片描述

返回上一级目录,执行catkin_make

cd ../
catkin_make

在这里插入图片描述

编译这一步会遇到大量的错误,要耐心地一步一步解决。

4.2 解决错误

编译过程中遇到大量错误,但是好多都是同一个错误,只需要逐个解决就行了。
在这里插入图片描述

  • 1.首先,ROS noetic 版本中自带的 OpenCV4VINS-mono 中需要使用的 OpenCV3 冲突的问题。修改vins-mono代码兼容 opencv4。其实主要修改的是 camera_model 这个包,直接包含缺失的头文件即可。
//在camera_model包中的头文件Chessboard.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/calib3d/calib3d_c.h>
//在CameraCalibration.h中添加
#include <opencv2/imgproc/types_c.h>
#include <opencv2/imgproc/imgproc_c.h>

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

  • 2.报如下错误:
/usr/local/include/ceres/internal/integer_sequence_algorithm.h:64:21: error: ‘integer_sequence’ is not a member of ‘std’64 | struct SumImpl<std::integer_sequence<T, N, Ns...>> {|                     ^~~~~~~~~~~~~~~~

在这里插入图片描述

在报错的项目的 CMakeList 里的

set(CMAKE_CXX_FLAGS “-std=c++11”)

改成

set(CMAKE_CXX_STANDARD 14)

这里需要修改 global_fusioncamera_modelsloop_fusionvins_estimator 文件下的 CMakeLists ,如下图所示:

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

  • 3.编译时,遇到如下错误:
make[2]: *** [VINS-Fusion/vins_estimator/CMakeFiles/vins_lib.dir/build.make:258:VINS-Fusion/vins_estimator/CMakeFiles/vins_lib.dir/src/featureTracker/feature_tracker.cpp.o] 错误 1
make[2]: *** 正在等待未完成的任务....

在这里插入图片描述

vins_estimator/src/feature_tracker.h 添加

#include <opencv2/highgui.hpp>
#include <opencv2/cvconfig.h>
#include <opencv2/imgproc/types_c.h>

在这里插入图片描述

  • 4.编译时遇到报错
error: ‘CV_FONT_HERSHEY_SIMPLEX’ was not declared in this scope

在这里插入图片描述

解决方法 :将报错文件上的 CV_FONT_HERSHEY_SIMPLEX 参数改为 cv::FONT_HERSHEY_SIMPLEX;由报错信息可知,这里主要是pose_graph.cppkeyframe.cpp这两个文件需要修改;最好使用文本编辑的 查找和替换 完成,以免遗漏

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

  • 5.报如下错误:
error: ‘CV_RGB2GRAY’ was not declared in this scope53 |       cv::cvtColor(image, aux, CV_RGB2GRAY);|                                ^~~~~~~~~~~

在这里插入图片描述

解决方案:在报错头文件里添加

#include <opencv2/imgproc/types_c.h>

在这里插入图片描述

  • 6.报如下错误:
error: ‘CV_LOAD_IMAGE_GRAYSCALE’ was not declared in this scope125 |    imLeft = cv::imread(leftImagePath,  CV_LOAD_IMAGE_GRAYSCALE );|                                        ^~~~~~~~~~~~~~~~~~~~~~~

在这里插入图片描述

这里是因为在 Opencv4 中,CV_LOAD_IMAGE_GRAYSCALE找不到;需要将CV_LOAD_IMAGE_GRAYSCALE改为 cv::IMREAD_GRAYSCALE;由错误提示信息可知,这里需要修改的地方有 KITTIGPSTest.cppKITTIOdomTest.cpp

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

4.3 完成编译安装

cd ~/vins-fusion
catkin_make

在这里插入图片描述

五、添加到bash配置文件

执行命令:

source ~/vins-fusion/devel/setup.bash
sudo vi ~/.bashrc

在这里插入图片描述

最后一行加

source ~/vins-fusion/devel/setup.bash

在这里插入图片描述

Esc。输入 :wq!,保存并退出

六、下载数据集

为了验证vins-fusion是否正确安装以及环境是否搭建完成,需要下载数据集来进行验证。这里建议大家可以事先下载好数据集,因为比较大会比较费时间,故而建议提前下好这样 VINS 安好后就可以立马验证编译运行了。

链接 :https://projects.asl.ethz.ch/datasets/doku.php?id=kmavvisualinertialdatasets#the_euroc_mav_dataset

我这里下载的是 MH_04_difficult.bag

在这里插入图片描述

将它放在主目录的 SLAM/test_data

在这里插入图片描述

七、解决段错误(核心已转储)

我先用 单目+IMU 的方式跑数据集,命令如下

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins-fusion/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins-fusion/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
rosbag play ~/SLAM/test_data/MH_04_difficult.bag

运行到第二条的时候报错:

[INFO][1669097501.814593790]: reading paramerter of camera /home/xwj/vins-fusion/src/VINS-Fusion/config/euroc/camo_mei.yaml
段错误(核心已转储)

第三条会报错:

cam calib path:/home/xwj/vins-fusion/src/VINS-Fusion/config/euroc/camo_mei.yaml
段错误(核心已转储)

第四条跑起来没有任何结果

在这里插入图片描述
这里由于 noeticopencv4 头文件和参数名与 vins-fusion 所使用的 opencv3 不同造成的,需要使用非 ROS Noetic 自带 OPENCV 版本编译工程,通过修改 cv_bridge 配置文件来把 vins-fusion工程链接到 opencv3 库上

首先找到 cv_bridge 配置文件所在位置

cd /opt/ros/noetic/share/cv_bridge/cmake
sudo gedit cv_bridgeConfig.cmake

在94-96行,修改成如下内容

if(NOT "include;/usr/include;/usr/include/opencv " STREQUAL " ")set(cv_bridge_INCLUDE_DIRS "")set(_include_dirs "include;/usr/include;/usr/local/include/opencv")

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

之后将指定库文件也修改为自己安装的opencv库文件,需要对

set(libraries "cv_bridge;/usr/lib/x86_64-linux-gnu/libopencv_calib3d.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_dnn.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_features2d.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_flann.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_highgui.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_ml.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_objdetect.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_photo.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_stitching.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_video.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_videoio.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_aruco.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_bgsegm.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_bioinspired.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_ccalib.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_datasets.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_dnn_objdetect.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_dnn_superres.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_dpm.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_face.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_freetype.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_fuzzy.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_hdf.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_hfs.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_img_hash.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_line_descriptor.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_optflow.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_phase_unwrapping.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_plot.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_quality.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_reg.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_rgbd.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_saliency.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_shape.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_stereo.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_structured_light.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_superres.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_surface_matching.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_text.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_tracking.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_videostab.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_viz.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_ximgproc.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_xobjdetect.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_xphoto.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_core.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgproc.so.4.2.0;/usr/lib/x86_64-linux-gnu/libopencv_imgcodecs.so.4.2.0")

在这里插入图片描述
进行修改。

需要把"cv_bridge;…到 …")之间的内容换成自己的库文件,这里如果要一点一点的修改比较麻烦,可以使用 locate命令 来查看自己的库文件,输入Ctrl+Alt+T打开新的一个终端,在命令行输入

locate opencv

在这里插入图片描述
向下滑动到 /usr/local/lib开头的文件,复制/usr/local/lib/libopencv_calib3d.so/usr/local/lib/libopencv_viz.so.3.4.11的全部内容。

可以在浏览器里面打开 CSDNmarkdown编辑器 ,输入 Ctrl+Shift+K,在代码段里面粘贴刚刚复制的东西,然后在第一行全面加上 set(libraries "cv_bridge; ,在最后一行后面加上"),然后再在每一行后面加上;注意是英文输入状态下),然后从第二行开始,将光标移动到一行的最前面,按一下 Backspace把所有的换行符去掉 ,最终编辑完后所有的内容在CSDN的编辑器的预览模式下看起来应该是一行,像下面这样

在这里插入图片描述

然后把代码片里面的内容复制下来,将119行(主要是看内容,行数不一定准确,大致在附近)的内容替换掉

set(libraries "cv_bridge;usr/local/lib/libopencv_calib3d.so;/usr/local/lib/libopencv_calib3d.so.3.4;/usr/local/lib/libopencv_calib3d.so.3.4.11;/usr/local/lib/libopencv_core.so;/usr/local/lib/libopencv_core.so.3.4;/usr/local/lib/libopencv_core.so.3.4.11;/usr/local/lib/libopencv_dnn.so;/usr/local/lib/libopencv_dnn.so.3.4;/usr/local/lib/libopencv_dnn.so.3.4.11;/usr/local/lib/libopencv_features2d.so;/usr/local/lib/libopencv_features2d.so.3.4;/usr/local/lib/libopencv_features2d.so.3.4.11;/usr/local/lib/libopencv_flann.so;/usr/local/lib/libopencv_flann.so.3.4;/usr/local/lib/libopencv_flann.so.3.4.11;/usr/local/lib/libopencv_highgui.so;/usr/local/lib/libopencv_highgui.so.3.4;/usr/local/lib/libopencv_highgui.so.3.4.11;/usr/local/lib/libopencv_imgcodecs.so;/usr/local/lib/libopencv_imgcodecs.so.3.4;/usr/local/lib/libopencv_imgcodecs.so.3.4.11;/usr/local/lib/libopencv_imgproc.so;/usr/local/lib/libopencv_imgproc.so.3.4;/usr/local/lib/libopencv_imgproc.so.3.4.11;/usr/local/lib/libopencv_ml.so;/usr/local/lib/libopencv_ml.so.3.4;/usr/local/lib/libopencv_ml.so.3.4.11;/usr/local/lib/libopencv_objdetect.so;/usr/local/lib/libopencv_objdetect.so.3.4;/usr/local/lib/libopencv_objdetect.so.3.4.11;/usr/local/lib/libopencv_photo.so;/usr/local/lib/libopencv_photo.so.3.4;/usr/local/lib/libopencv_photo.so.3.4.11;/usr/local/lib/libopencv_shape.so;/usr/local/lib/libopencv_shape.so.3.4;/usr/local/lib/libopencv_shape.so.3.4.11;/usr/local/lib/libopencv_stitching.so;/usr/local/lib/libopencv_stitching.so.3.4;/usr/local/lib/libopencv_stitching.so.3.4.11;/usr/local/lib/libopencv_superres.so;/usr/local/lib/libopencv_superres.so.3.4;/usr/local/lib/libopencv_superres.so.3.4.11;/usr/local/lib/libopencv_video.so;/usr/local/lib/libopencv_video.so.3.4;/usr/local/lib/libopencv_video.so.3.4.11;/usr/local/lib/libopencv_videoio.so;/usr/local/lib/libopencv_videoio.so.3.4;/usr/local/lib/libopencv_videoio.so.3.4.11;/usr/local/lib/libopencv_videostab.so;/usr/local/lib/libopencv_videostab.so.3.4;/usr/local/lib/libopencv_videostab.so.3.4.11;/usr/local/lib/libopencv_viz.so;/usr/local/lib/libopencv_viz.so.3.4;/usr/local/lib/libopencv_viz.so.3.4.11")

在这里插入图片描述

修改完后,切换路径

cd ~/vins-fusion
catkin_make

在这里插入图片描述

就可以正常运行 vins-fusion

八、运行VINS

8.1 Monocualr camera + IMU

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins-fusion/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
rosrun loop_fusion loop_fusion_node ~/vins-fusion/src/VINS-Fusion/config/euroc/euroc_mono_imu_config.yaml
rosbag play ~/SLAM/test_data/MH_04_difficult.bag

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

实现效果:
在这里插入图片描述

完整流程:

vins-fusion 上跑单目+imu数据集

8.2 Stereo cameras + IMU

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins-fusion/src/VINS-Fusion/config/euroc/euroc_stereo_imu_config.yaml 
rosbag play ~/SLAM/test_data/MH_04_difficult.bag

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

实现效果:
在这里插入图片描述

完整流程:

vins-fusion上跑双目+imu数据集

8.3 Stereo cameras

roslaunch vins vins_rviz.launch
rosrun vins vins_node ~/vins-fusion/src/VINS-Fusion/config/euroc/euroc_stereo_config.yaml 
rosbag play ~/SLAM/test_data/MH_04_difficult.bag

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

实现效果:

在这里插入图片描述

完整流程:

vins-fusion跑双目数据集

九、总结

本文主要记录我在搭建vins-fusion环境时遇到的问题,以及如何去解决这些问题的方法和思路,由于本人也刚开始接触这方面的知识,对一些理论知识的认识和对为什么出现这些错误没有深入的思考。主要是对自己遇到的问题的总结,写出来是希望能够帮助到那些和我一样遇到相同问题的同学,在搭建环境时可以少浪费时间,不会像我花了几天才弄好,将更多的精力放在对相关知识的学习上。

本文主要借鉴了参考列表里面的两篇博客,本文仅用作学习总结以及为那些遇到相同问题的同学提供帮助。

希望能够帮助到各位读者,祝你们搭建环境顺利!欢迎各位读者提出本文存在的错误!谢谢!


参考列表:

1.ubuntu20.04安装eigen3.4.0(两种方式)和ceres-solver2.0.0
2.Ubuntu20.04运行Vins-fusion


http://www.ppmy.cn/news/647565.html

相关文章

【VINS-Mono】

run_euro.cpp 在run_euroc.cpp函数中开了四个线程,分别对应四个函数,处理线程,对应 System::ProcessBackEnd,用作对imu数据以及image数据的后台处理优化,PubImuData线程,对应PubImuData函数,用于IMU数据的读取和发布,PubImageData用作图像数据的读取和跟踪处理,Draw线…

【CSS】鼠标(移入/移出)平滑(显示/隐藏)下划线

文章目录 效果展示实现步骤1. 添加背景颜色2. 修改背景颜色3. 调整背景的大小4. 取消背景重复绘制5. 调小高度6. 设置背景绘制位置7. 隐藏背景8. 加入鼠标移入事件9. 平滑显示/隐藏下划线10. 调整一下背景图的位置11. 调整鼠标移入时进入的位置 效果展示 鼠标移入内容时&#…

[element-ui] v-click-outside与el-dialog同时存在,出现的Bug

背景&#xff1a;v-click-outside点击盒子aaa外部&#xff0c;盒子aaa隐藏 问题&#xff1a;因为el-dialog绑在了body上&#xff0c;点击el-dialog里的任意内容&#xff0c;盒子aaa也隐藏了。 需求&#xff1a;点击el-dialog里的任意内容&#xff0c;盒子aaa不隐藏 <div …

计算机管理声音视屏不见,电脑播放视频没有声音是什么原因

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。 电脑播放视频没有声音的原因是&#xff1a; 1、声卡驱动在控制面板中查看&#xff0c;声卡驱动是否出现问题&#xff1b;若出现黄色感叹号图标&#xff0c;则说明声卡驱动出现问题&…

电脑耳机只有伴奏人声很小怎么办 插入耳机只有音乐没有人声解决教程

电脑耳机只有伴奏人声很小怎么办&#xff1f; 右击音量图标&#xff0c;在弹出的菜单中选择【播放设备】。 双击【扬声器/听筒】&#xff0c;打开其属性窗口。 在属性窗口中&#xff0c;切换到【级别】页签&#xff0c;然后点击【平衡】。 将【左前】音量设置滑块拖到0。然…

电脑显示连上蓝牙耳机但是声音仍然外放的解决方法Win10

步骤一&#xff1a;打开控制面板——声音 步骤二&#xff1a;单击上图的声音&#xff0c;显示如下图&#xff1a; 找到你的蓝牙设备并右键点击&#xff0c;选择连接

一台电脑两个音频输出

问题提出&#xff1a; 最近想要做一个自习室直播间&#xff0c;想在观众看的时候播放音乐&#xff0c;同时自己又可以观看视频&#xff0c;两者的声音是分开的&#xff0c;解决办法如下 工具&#xff1a; win10 耳机 网易云音乐&#xff08;其他播放器我没有下载&#xff0c…

23款迈巴赫S480升级原厂10°后轮转向系统,减少转弯半径

就是低速的情况下&#xff0c;有更强的机动性&#xff0c;前后车轮的不同转动方向使得车辆可以凭借更更小转弯半径实现转向&#xff0c;在特定的狭窄路段或者停车时&#xff0c;车辆的操控性大大提升&#xff0c;而内轮差也缩小也增大了转向的安全性。 高速的情况下&#xff0…