D435i相机的标定及VINS-Fusion config文件修改

2023-05-16

引言

当我们想使用D435i相机去跑VINS-Fusion时,如果不把标定过的相机信息写入config文件中就运行,这样运动轨迹会抖动十分严重,里程计很容易漂。接下来将介绍如何标定D435i相机,并设置VINS-Fusion的config文件。

一 标定前的准备工作

在标定前我们需要查看相机的加速度在静止时是否正常,标准是加速度计的N:9.8左右。
通过打开realsense-viewer,点击Motion Module按键,然后放在Accel上观察。
在这里插入图片描述
如果你的此数值不在9.8附近,就需要对IMU进行校准,不然最后运行VINS-Fusion会发生抖动。

1.1校准IMU

若IMU加速度计正常,可跳过下面的校准过程。
realsense官方给了进行IMU校准的方法,参考网址为:https://dev.intelrealsense.com/docs/imu-calibration-tool-for-intel-realsense-depth-camera
下载对应的pdf文件,直接从第三节开始看即可。
在这里插入图片描述
校准完会发现加速度计的值在9.8左右,恢复正常。

1.2检查相机的健康状态

参考realsense官网给出的相机健康检查方法
https://www.intelrealsense.com/best-known-methods-for-optimal-camera-performance-over-lifetime
具体的校准方法在第三节部分,如下图所示
在这里插入图片描述
具体步骤参考官方教程

二 D435i相机标定

2.1 标定工具准备

2.1.1 code_utils

1.创建工作空间,将code_utils及imu_utils放入其中,工作空间名称自己定(当然也可以放在你已有的工作空间内)。这两个工具都是imu标定需要用到的,可以标定出imu的噪声密度和随机游走。

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/src
catkin_init_workspace
cd ..
catkin_make

2.下载编译code_utils

cd ~/catkin_ws/src
git clone https://github.com/gaowenliang/code_utils.git
cd ..
catkin_make

2.1.2 imu_utils

cd ~/catkin_ws/src
git clone https://github.com/gaowenliang/imu_utils.git
cd ..
catkin_make

2.1.3 Kalibr

参考官方的Installation步骤
https://github.com/ethz-asl/kalibr/wiki/installation

2.2 IMU标定

1.找到你安装的realsense-ros包,复制launch文件中的rs_camera.launch文件,并重命名为rs_camera2.launch(命名自定),修改如下的参数:
修改前:

<arg name="unite_imu_method"          default=""/>

修改后

<arg name="unite_imu_method"          default="linear_interpolation"/>

修改该参数的目的是为了将加速度计(accel)和陀螺仪(gyro)的数据合并得到imu话题。

运行相机启动文件

roslaunch realsense2_camera rs_camera2.launch

2.打开~/catkin_ws/src/imu_utils/launch(参考自己的安装路径),在此位置打开终端并运行命令

gedit d435i_imu_calibration.launch

写入如下内容:

<launch>

    <node pkg="imu_utils" type="imu_an" name="imu_an" output="screen">
    	<!--TOPIC名称和上面一致-->
        <param name="imu_topic" type="string" value= "/camera/imu"/>
        <!--imu_name 无所谓-->
        <param name="imu_name" type="string" value= "d435i"/>
        <!--标定结果存放路径-->
        <param name="data_save_path" type="string" value= "$(find imu_utils)/data/"/>
        <!--数据录制时间-min-->
        <param name="max_time_min" type="int" value= "50"/>
        <!--采样频率,即是IMU频率,采样频率可以使用rostopic hz /camera/imu查看,设置为200,为后面的rosbag play播放频率-->
        <param name="max_cluster" type="int" value= "200"/>
    </node>
    
</launch>

在imu_utils下创建data文件夹,标定结果将存放到此处。
3.录制数据包,将realsense相机静止放置,放置时间要略大于d435i_imu_calibration.launch中设置的录制时间,即大于50min(参考别的博客有设置120min的,也有50min的,经过自己测试50min是可以的)

rosbag record -O imu_calibration /camera/imu

其中imu_calibration是录制bag包的名字,可自己定义,录制的包会生成在当前终端的目录下,/camera/imu是相机发布的IMU话题。

4.运行标定程序

cd /catkin_ws
source ./devel/setup.bash
roslaunch imu_utils d435i_imu_calibration.launch

5.打开新终端,播放录制的数据包

cd 数据包所在路径
rosbag play -r 200 imu_calibration.bag

标定结束后,我们打开/catkin_ws/src/imu_utils/data,其中d435i_imu_param.yaml是我们需要的结果,内容如下:

%YAML:1.0
---
type: IMU
name: d435i
Gyr:
   unit: " rad/s"
   avg-axis:
      gyr_n: 1.9243758665672117e-03
      gyr_w: 2.7254175454049154e-05
   x-axis:
      gyr_n: 1.7617583709168296e-03
      gyr_w: 3.4288470593085246e-05
   y-axis:
      gyr_n: 2.5899357735630793e-03
      gyr_w: 3.5865484306354172e-05
   z-axis:
      gyr_n: 1.4214334552217264e-03
      gyr_w: 1.1608571462708043e-05
Acc:
   unit: " m/s^2"
   avg-axis:
      acc_n: 1.6855999652754222e-02
      acc_w: 7.0793241968111124e-04
   x-axis:
      acc_n: 1.1503084845270073e-02
      acc_w: 5.7285080233574772e-04
   y-axis:
      acc_n: 1.7596343469737430e-02
      acc_w: 8.4920699202932677e-04
   z-axis:
      acc_n: 2.1468570643255160e-02
      acc_w: 7.0173946467825925e-04

2.3 相机标定

1.自己下载打印标定板或购买标定板
进入https://github.com/ethz-asl/kalibr/wiki/downloads
在这里插入图片描述
但是我选择的Aprilgrid 6x6 0.5x0.5 m已经无法下载了,但不要怕,官方还给我们指令生成标定板的方法,参考https://github.com/ethz-asl/kalibr/wiki/calibration-targets
在kalibr文件路径下运行指令:

source ./devel/setup.bash
kalibr_create_target_pdf --type apriltag --nx 6 --ny 6 --tsize 0.055 --tspace 0.3

即可在该路径下生成标定板pdf文件,打印时缩放40%。
在这里插入图片描述
打印出来后的格子参数为:
大格子边长:2.2cm
小格子边长:0.66cm
小个子与大格子边长比例:0.3
新建april_6x6_A4.yaml文件,内容如下:

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.022           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize

2.关闭相机的结构光
相机启动默认打开结构光,此时双目图像会有很多点,会对标定有影响,所以我们需要关闭结构光。
关闭结构光的两种方法:
(1)方法一:
先启动

 roslaunch realsense2_camera rs_camera.launch

新开终端,运行

rosrun rqt_reconfigure rqt_reconfigure

打开后将camera->stereo_module中的emitter_enabled设置为off(0) ,如下图所示:
在这里插入图片描述
(2)方法二:
打开终端,运行realsense-viewer

realsense-viewer

在这里插入图片描述

3.将相机对准标定板准备标定
打开新终端,运行rviz

rviz

添加rgb相机和双目对应的话题,/camera/color/image_raw、/camera/infra1/image_rect_raw、/camera/infra2/image_rect_raw
效果如下:
在这里插入图片描述
开始移动相机,同时确保标定板一直在三个图像中,录制过程参考官方操作https://www.youtube.com/watch?app=desktop
步骤如下:
(1)俯仰角摆动3次
(2)偏航角摆动3次
(3)翻滚角摆动3次
(4)上下移动3次
(5)左右移动3次
(6)前后移动3次
(7)自由移动,摆动幅度大一些,但要移动缓慢些,使得标定目标尽可能出现在相机的所有视野范围内
整体标定时间在90s以上

4.修改相机帧数
官方推荐4Hz,通过如下命令更改topic发布频率

rosrun topic_tools throttle messages /camera/color/image_raw 4.0 /color
rosrun topic_tools throttle messages /camera/infra1/image_rect_raw 4.0 /infra_left
rosrun topic_tools throttle messages /camera/infra2/image_rect_raw 4.0 /infra_right

5.录制ROS bag

rosbag record -O multicameras_calibration_biaoding /infra_left /infra_right /color

/infra_left 、/infra_right、 /color为频率转换后的topic

6.使用Kalibr进行标定

cd kalibr_workspace/
source ./devel/setup.bash
kalibr_calibrate_cameras --target ~/kalibr_workspace/april_6x6_A4.yaml --bag ~/multicameras_calibration_biaoding.bag --models pinhole-radtan pinhole-radtan pinhole-radtan --topics /infra_left /infra_right /color --bag-from-to 10 145 --show-extraction --approx-sync 0.04

其中–target ~/kalibr_workspace/april_6x6_A4.yaml是标定板的配置文件
–bag ~/multicameras_calibration_biaoding.bag是录制的ROS bag数据包
–models pinhole-radtan pinhole-radtan pinhole-radtan表示三个摄像头的相机模型和畸变模型(VINS使用的畸变模型为radtan)
–topics /infra_left /infra_right /color表示双目相机和rgb相机的话题
–bag-from-to 10 145表示处理bag中10s-145s的数据(根据自己录制的数据包时间设置,rosbag info 你自己的数据包 即可查看数据包信息)
–show-extraction表示显示检测特征点的过程在这里插入图片描述
得到三个文件
在这里插入图片描述
查看results-cam-homeubuntumulticameras_calibration_biaoding.txt中的重投影误差reprojection error数值是多少,理想范围是0.1-0.2。

2.4 IMU+双目相机联合标定

1.编写chain_biaoding.yaml文件
格式参考Kalibr官方https://github.com/ethz-asl/kalibr/wiki/yaml-formats
中的chain.yaml
文件中的参数需要根据之前相机标定的参数进行修改,示例如下:

cam0:
  camera_model: pinhole
  distortion_coeffs: [0.002403959808138445, 0.001212094600722141, 0.0027975318922339606,
    0.0013305451339391025]
  distortion_model: radtan
  intrinsics: [389.1883630968763, 389.9466918297371, 322.6505040434058, 244.3879141231001]
  resolution: [640, 480]
  rostopic: /infra_left
cam1:
  T_cn_cnm1:
  - [0.9999926028685168, -0.001487673332607009, -0.0035469756557070867, -0.04984719672282643]
  - [0.0014555068111333671, 0.9999579513465346, -0.00905411722710673, -0.0008787616669883903]
  - [0.0035602960789059574, 0.009048887605385341, 0.9999527198447602, -0.001377119612210997]
  - [0.0, 0.0, 0.0, 1.0]
  camera_model: pinhole
  distortion_coeffs: [0.0030741870441258153, -0.0007281728041349596, 0.005821862258640268,
    0.002985916170301623]
  distortion_model: radtan
  intrinsics: [388.3951195864708, 388.5489092325429, 324.7077416689968, 248.62827656157992]
  resolution: [640, 480]
  rostopic: /infra_right

T_cn_cnm1表示的是左目相机到右目相机的旋转和平移,参考之前相机标定的结果。

2.编写imu_biaoding.yaml
格式参考https://github.com/ethz-asl/kalibr/wiki/yaml-formats
中的imu.yaml,文件中的参数参考之前imu标定得到的参数,示例如下:

#Accelerometers
accelerometer_noise_density: 1.6855999652754222e-02  #Noise density (continuous-time)
accelerometer_random_walk:   7.0793241968111124e-04  #Bias random walk

#Gyroscopes
gyroscope_noise_density:     1.9243758665672117e-03   #Noise density (continuous-time)
gyroscope_random_walk:       2.7254175454049154e-05  #Bias random walk

rostopic:                    /imu      #the IMU ROS topic
update_rate:          200.0      #Hz (for discretization of the values above)

3.准备好之前的april_6x6_A4.yaml

target_type: 'aprilgrid' #gridtype
tagCols: 6               #number of apriltags
tagRows: 6               #number of apriltags
tagSize: 0.022           #size of apriltag, edge to edge [m]
tagSpacing: 0.3          #ratio of space between tags to tagSize
# codeOffset: 0            #code offset for the first tag in the aprilboard

4.修改之前rs_camera2.launch中的文件,内容如下:
(1)imu和双目数据时间对齐

<arg name="enable_sync"               default="true"/>

(2)合并加速度计和陀螺仪的topic(之前设置过了,再检查一下)

<arg name="unite_imu_method"          default="linear_interpolation"/>

5.启动realsense相机

roslaunch realsense2_camera rs_camera2.launch

6.关闭结构光
参考2.3

7.打开rviz
添加imu、infra1和infra2的话题,同时调整相机位置,保证双目图像一直包含标定板的全部内容

8.调整imu和双目的话题发布频率并以新的话题发布

rosrun topic_tools throttle messages /camera/infra1/image_rect_raw 20.0 /infra_left
rosrun topic_tools throttle messages /camera/infra2/image_rect_raw 20.0 /infra_right
rosrun topic_tools throttle messages /camera/imu 200.0 /imu

9.录制ROS bag数据包
录制过程和之前相机的相同,只是录制命令不同:

rosbag record -O imu_stereo_biaoding.bag /infra_left /infra_right /imu

在这里插入图片描述

10.录制完毕后开始标定
将准备的文件放在kalibr_workspace文件夹下,包括chain_biaoding.yaml、imu_biaoding.yaml、april_6x6_A4.yaml和imu_stereo_biaoding.bag
标定命令如下:

kalibr_calibrate_imu_camera --bag imu_stereo_biaoding.bag --cam chain_biaoding.yaml --imu imu_biaoding.yaml --target april_6x6_A4.yaml --bag-from-to 10 140 --show-extraction

最终的到结果如下:
在这里插入图片描述
标定结果好坏查看results-imucam-imu_stereo_biaoding.txt中的重投影误差Reprojection error,两个相机的数值都在0.15以下说明标定结果良好
在这里插入图片描述

三 VINS-Fusion config文件修改

1.根据联合标定结果中的camchain-imucam-imu_stereo_biaoding.yaml和imu-imu_stereo_biaoding.yaml文件修改realsense_stereo_imu_config.yaml
标定结果如下图:
在这里插入图片描述
在这里插入图片描述
realsense_stereo_imu_config.yaml修改后效果如下:

%YAML:1.0

#common parameters
#support: 1 imu 1 cam; 1 imu 2 cam: 2 cam; 
imu: 1         
num_of_cam: 2  

imu_topic: "/camera/imu"
image0_topic: "/camera/infra1/image_rect_raw"
image1_topic: "/camera/infra2/image_rect_raw"
output_path: "/home/rgmj/VINS_output"

cam0_calib: "left2.yaml"
cam1_calib: "right2.yaml"
image_width: 640
image_height: 480
   

# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 1   # 0  Have an accurate extrinsic parameters. We will trust the following imu^R_cam, imu^T_cam, don't change it.
                        # 1  Have an initial guess about extrinsic parameters. We will optimize around your initial guess.

body_T_cam0: !!opencv-matrix # 坐在body(imu)坐标系观察cam0的位姿变换
   rows: 4
   cols: 4
   dt: d
   data: [ 0.9999993832317373, 0.0009498105637405862, -0.0005756700769978489, -0.004096761362748715,
           -0.0009472848529416895,  0.9999069833564751, 0.0043719340357627045, 0.007922599699420767,
           0.0005798168261883756, -0.004371386015748314, 0.9999902773511096,0.021127332420393354,
           0.0, 0.0, 0.0, 1.0 ]

body_T_cam1: !!opencv-matrix
   rows: 4
   cols: 4
   dt: d
   data: [ 0.9999926149847198, 0.0024104887232695715, 0.002993245752838787, 0.04566374129029725,
           -0.002450443436845407, 0.9999069833564751, 0.013417151781077788, 0.008603776023262497,
            -0.002960625438098929, -0.013424387474616776, 0.9999055057943959, 0.022560558159854246,
           0.0, 0.0, 0.0, 1.0 ]

#Multiple thread support
multiple_thread: 1

#feature traker paprameters
max_cnt: 150            # max feature number in feature tracking
min_dist: 30            # min distance between two features 
freq: 10                # frequence (Hz) of publish tracking result. At least 10Hz for good estimation. If set 0, the frequence will be same as raw image 
F_threshold: 1.0        # ransac threshold (pixel)
show_track: 1           # publish tracking image as topic
flow_back: 1            # perform forward and backward optical flow to improve feature tracking accuracy

#optimization parameters
max_solver_time: 0.04  # max solver itration time (ms), to guarantee real time
max_num_iterations: 8   # max solver itrations, to guarantee real time
keyframe_parallax: 10.0 # keyframe selection threshold (pixel)

#imu parameters       The more accurate parameters you provide, the better performance
acc_n: 0.016855999652754222          # accelerometer measurement noise standard deviation. #0.2   0.04
gyr_n: 0.0019243758665672117         # gyroscope measurement noise standard deviation.     #0.05  0.004
acc_w: 0.0007079324196811112         # accelerometer bias random work noise standard deviation.  #0.002
gyr_w: 2.7254175454049154e-05       # gyroscope bias random work noise standard deviation.     #4.0e-5
g_norm: 9.805         # gravity magnitude

#unsynchronization parameters
estimate_td: 1                      # online estimate time offset between camera and imu
td: 0.00                             # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)

#loop closure parameters
load_previous_pose_graph: 0        # load and reuse previous pose graph; load from 'pose_graph_save_path'
pose_graph_save_path: "/home/rgmj/VINS_output/pose_graph/" # save and load path
save_image: 1                   # save image in pose graph for visualization prupose; you can close this function by setting 0 

(1)cam0:T_cam_imu表示的是imu到相机的变换矩阵,我们填写到body_T_cam0的矩阵应该是相机到imu的矩阵,所以对T_cam_imu矩阵取逆,,因为旋转矩阵是正交矩阵,它的逆矩阵就等于它的转置矩阵,平移向量的逆,三轴取反就可以了,cam1的同理
(2)加速度计和陀螺仪的噪声和随机游走填入相应位置

2.修改config文件中的相机配置文件left.yaml和right.yaml
根据camchain-imucam-imu_stereo_biaoding.yaml中的相机内参和畸变参数进行修改,结果如下:
(1)left.yaml

%YAML:1.0
---
model_type: PINHOLE
camera_name: camera
image_width: 640
image_height: 480
distortion_parameters:
   k1: 0.002403959808138445
   k2: 0.001212094600722141
   p1: 0.0027975318922339606
   p2: 0.0013305451339391025
projection_parameters:
   fx: 389.1883630968763
   fy: 389.9466918297371
   cx: 322.6505040434058
   cy: 244.3879141231001

(3)right.yaml

%YAML:1.0
---
model_type: PINHOLE
camera_name: camera
image_width: 640
image_height: 480
distortion_parameters:
   k1: 0.0030741870441258153
   k2: -0.0007281728041349596
   p1: 0.005821862258640268
   p2: 0.002985916170301623
projection_parameters:
   fx: 388.3951195864708
   fy: 388.5489092325429
   cx: 324.7077416689968
   cy: 248.62827656157992

四 运行VINS-Fusion

1.启动相机

cd ~/catkin_ws
source ./devel/setup.bash
roslaunch realsense2_camera rs_camera2.launch

2.新开一个终端,启动rviz
我的VINS-Fusion放在工作空间vins_fusion_ws中

cd vins_fusion_ws
source ./devel/setup.bash
roslaunch vins vins_rviz.launch

3.再新开一个终端,运行起来

cd vins_fusion_ws
source ./devel/setup.bash
rosrun vins vins_node ~/vins_fusion_ws/src/VINS-Fusion/config/realsense_d435i/realsense_stereo_imu_config.yaml

参考文章:https://blog.csdn.net/qq_40186909/article/details/113104595

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

D435i相机的标定及VINS-Fusion config文件修改 的相关文章

  • python并行运算

    并行运算 Python有多种方法可以进行并行计算 xff0c 以下是其中几种常见的方法 xff1a 多进程 xff1a Python中的multiprocessing模块提供了多进程的支持 xff0c 可以使用Process类来创建新进程
  • python的格式str.format

    下面是一些常用的格式化规则 对齐规则 使用 lt 或 gt 分别表示左对齐 居中对齐和右对齐 宽度规则 使用一个整数表示输出结果的宽度 精度规则 使用 加一个整数表示浮点数的小数点后的位数 类型规则 使用一个字符来指定输出结果的类型 常用的
  • apt 和 apt-get 区别

    文章目录 1 apt 的由来2 apt 和 apt get 的区别3 应该使用 apt 还是 apt get xff1f 1 apt 的由来 Ubuntu Linux Mint和elementary OS 等发行版的 Linux 均是基于D
  • 你是我的眼:水哥王昱珩带你重新打量这世界

    水哥 王昱珩在 最强大脑 舞台上凭借着 微观辨水 一战成名 在节目中 xff0c 他以1秒四杯的速度从520杯同质同量同水源的水中 xff0c 迅速找出了之前被随机选中的那杯 xff0c 甚至看出了这杯水从被选中拿起观察再到放回原位 xff
  • 性能优化与内存优化

    性能优化 主要以这四个方向进行优化 xff1a 稳定流畅耗损apk 瘦身 稳定 避免内存溢出异常捕获反馈机制 流畅 卡顿的原因 xff1a 布局复杂动画过多View 的过度绘制UI 耗时操作频繁 GC 耗损 减少没必要的网络访问或合并相关网
  • (2)工作空间

    工作空间 特点创建工作空间编译添加环境变量 特点 1 工作空间的主要作用是存放工程文件和文件代码 xff08 存放工作空间和代码的一个文件夹 xff09 2 ROS的开发依赖于工作空间 3 编写源代码 编译都是在工作空间下完成的 4 一般工
  • 工程伦理 清华大学 MOOC 期末答案 2020冬

    前言 xff1a 答案是本人自己查阅 不保证其完全正确性 xff0c 仅供参考 点个赞再走呗 xff1a xff09 1 单选题 1分 以下不属于安全文化的核心的是 D A 人的安全知识 B 人的安全意识 C 人的安全技能 D 人的安全装备
  • HTML移动端的基本了解

    文章目录 前言 一 PC端与移动端的区别 PC端 xff1a 移动端 xff1a 二 视口 布局视口 视觉视口 理想视口 meta视口标签 三 二倍图 四 移动端开发选择 单独制作移动端页面 主流 响应式页面兼容移动端 其次 总结 前言 分
  • 树莓派4B(armv7l,arm32)buster部署英特尔第二代神经计算棒,示例:运行darknet-yolov4-tiny

    记录整个部署的步骤 英特尔第二代神经计算棒 xff08 Intel NCS2 xff09 的使用需要到OpenVINO官网下载安装某一个版本的软件 xff0c 目前是支持Windows Linux和树莓派的Raspbian OS 下面贴出来
  • 树莓派结合英特尔神经计算棒二代(NCS2)的openvino包部署人工智能应用

    利用树莓派和英特尔神经计算棒二代 xff08 NCS2 xff09 进行边缘端AI硬件平台部署三部曲 xff1a 二 xff09 树莓派4B和NCS2配置时cmake编译报错以及import error can t find moudle
  • 树莓派报错“Cannot currently show the desktop”的完美解决办法

    最近在利用树莓派部署神经网络的时候出现了一些大大小小的问题 xff0c 很多问题都可以在网上直接或间接地找到答案 xff0c 但有个别问题即使按照网上的高赞博客说的去做了仍然没用 笔者根据最近遇到的有关树莓派VNC win10远程桌面连接
  • Nvidia Jetson XAvier NX开发套件从装机到pytorch环境搭建YoloV5+DeepSort+TensorRT

    目录 1 刷机与装机1 1 准备VMware工作站和linux的unbuntu16 04虚拟机 xff1a 1 2 将SD上的系统移动至SSD1 3 SSH配置1 4 查看Jetpack版本1 5 启动风扇 2 深度学习环境配置2 1 py
  • Python+OpenCV+matplotlib+wxPython实现的图像处理程序

    Python 43 OpenCV 43 matplotlib 43 wxPython实现的图像处理程序 背景 xff1a 本学期多媒体技术原理与应用课程的实验部分代码结果截图结语 背景 xff1a 本学期多媒体技术原理与应用课程的实验 本学
  • 按量购买阿里云服务器、k8s集群

    基础配置 创建私有网络 注意这里的交换区必须和服务器的所选区相同 连接测试 ping a 172 31 0 141 172 31 0 143 172 31 0 142 ping一下私有网络 ping 172 32 0 141 设置弹性ip
  • 小米6渲染图曝光 边框惊艳 国产曲面旗舰要发黑色版

    昨天咱们刚刚说过 小米6会有陶瓷版本 并且估计会在四月发布 今天 网友的渲染图又来了 没上车的赶紧上车 别忘了底部打卡 最近 对于小米6的传言很众多 xff0c 但不管怎么说 xff0c 骁龙835处理器 IMX400传感器以及高屏占比等都
  • 时间戳对齐的简单算法(原创)

    实际融合算法过程中常常出现时间戳对不齐的情况 为了解决此问题 xff0c 用了两个队列来解决时间戳匹配问题 时间戳对齐算法实现原理如下下图为插入状态 如图所示共有两个队列 xff0c 有七个状态 xff0c 通过对于轮速递推结果的动态保存
  • java中equals和==的区别(简单介绍)

    java中equals和 61 61 的区别 简单介绍 equals方法是java lang Object类的方法 有两种用法说明 一 对于字符串变量来说 xff0c 使用 61 61 和 equals 方法比较字符串时 xff0c 其比较
  • 如何上传到GitHub的main分支而不是master分支

    由于在2020年10月01日后 xff0c 在 GitHub 上创建的仓库都默认命名为 main 而非原本的 master 所以 有人看了我的 https blog csdn net m0 46419510 article details
  • Python中的Pandas、Matplotlib库详解

    文章目录 Pandas数据分析库Pandas的基本数据结构访问数据算术运算和对齐数据整理 Matplotlib绘图库Matplotlib简介几种常见的图形多图绘制使用Pandas绘图 Pandas数据分析库 1 xff09 Pandas是目
  • 卡尔曼滤波模型及Matlab模型建立

    目录 一 卡尔曼滤波 1 概念解析 xff1a 2 卡尔曼滤波的最优估计模型 3 实例 小车匀加速直线运动 4 Matlab建模 二 扩展卡尔曼滤波 xff08 EKF Extended KAlman Filter xff09 1 非线性系

随机推荐

  • 智能车 PID 调试

    智能车 PID 调试 文章目录 智能车 PID 调试学习目的开环控制与闭环控制开环控制闭环控制小结 PID 概述简介PID 公式 xff1a 舵机 PID分析算法 电机 PID分析算法调试口决 注意事项 学习目的 使电机速度和舵机转向更精准
  • ORBSLAM2系统学习(二)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 目录 前言 一 ORBSLAM2简介 二 系统综述 系统框架 追踪线程Tracking 局部建图线程local mapping 回环检测l
  • QT-串口调试助手自动定时收发、十六进制转换

    这篇调试助手比较详细 xff1a 不仅有十六进制转换 串口自动识别还有自动发送等功能 程序链接 xff0d xff0d 欢迎关注哦 https download csdn net download m0 46436890 13793486
  • [记录]webpack打包引用了fluent-ffmpeg的js报错解决

    参考博客 xff1a Cannot resolve module fs npm 编译失败 xff1a Can t resolve child process
  • 2020年三非上岸北邮计算机院考研经验贴(励志)

    64 TOC 两次北邮考研经验 前言 xff1a 这是我两次考北邮的日常生活的点点滴滴 xff0c 我不是什么名校出身 xff0c 也不是什么学霸 xff0c 但是有梦想终归会成功的 xff0c 希望我的经历能够带给你们一些鼓励 xff0c
  • 23条养生小常识,赶紧看看吧,千万不要错过!

    一 情绪不畅容易生病 天气多变时 xff0c 人们情绪很容易受气候的影响而抑郁 xff0c 情绪变化也影响了食欲 xff0c 从而引发胃病 在胃病的预防上要重视精神与饮食的调摄 xff0c 一个人经常情绪不畅 xff0c 很容易被疾病侵袭
  • Windows上安装GPU版本TensorFlow的详细安装步骤

    1 检查并安装VS环境 安装GPU版本的TensorFlow xff0c 首先需要检查VS环境 xff0c 如果没有需要安装 xff0c 但是VS全部安装会占内存 xff0c 因此可以去Download Visual C 43 43 Red
  • ISE14.7逻辑综合与实现工作过程

    1 1 ISE14 7逻辑综合与实现工作过程 1 1 1 本节目录 1 本节目录 2 本节引言 3 FPGA简介 4 ISE14 7逻辑综合与实现工作过程 5 结束语 1 1 2 本节引言 不积跬步 无以至千里 不积小流 无以成江海 就是说
  • (4)FPGA开发工具介绍(第1天)

    4 FPGA开发工具介绍 第1天 1 文章目录 1 文章目录 2 FPGA初级课程介绍 3 FPGA初级课程架构 4 FPGA开发工具介绍 第1天 5 技术交流 6 参考资料 2 FPGA初级课程介绍 1 FPGA初级就业课程共100篇文章
  • (02)Shell脚本【可执行程序】

    02 Shell脚本 可执行程序 1 目录 1 1 Shell脚本简介 1 2 nbsp Shell脚本文件 1 3 nbsp Shell脚本作用 1 4 nbsp Shell运行环境 1 5 nbsp Shell脚本 可执行程序 1 6
  • AD20知识补充及四层板了解

    之前自己动手画过一个stm32c8t6最小系统的板子 xff0c 但由于当时学的比较仓促对AD的很多东西不了解 xff0c 如今想了解四层板子 xff0c 就从b站上把AD20从新建项目工程到最后画完板子整个完整的流程又重新学习了一遍 xf
  • 常用服务器和存储设备管理口默认IP用户名密码汇总(持续更新)

    一 服务器设备默认管理 1 宝德4卡服务器 默认用户名 xff1a ADMIN 密码 xff1a 11111111 2 超微服务器 默认用户名 xff1a ADMIN 密码 xff1a admin000 默认用户名 xff1a ADMIN
  • RS232,RS485原理与应用

    Uart存在的问题 1 没有一个统一连接器的标准 xff0c 且只规定了数据传输的顺序 xff08 只规定了两根线 xff09 2 只规定了高电平为1 xff0c 低电平为0 xff08 例 xff1a 51是5v xff0c stm32为
  • STM32的面试题

    一 STM32F1和F4的区别 1 内核不同 xff1a F1内核为cortex m3 xff0c F4为cortex m4 2 主频不同 xff1a F1主频72MHz xff0c F4168MHz xff08 主频就是CPU内核时钟频率
  • GCC【3】-Win10 + CMake + MinGW+搭建STM32 GCC开源开发环境

    文章目录 前言一 安装git bash二 安装MinGW MinGW w642 1 MinGW是什么 xff1f 2 2 MinGW gcc安装简图2 2 MinGW make安装简图 三 安装Make for Windows3 1 下载安
  • Zookeeper集群无法启动的原因分析

    Zookeeper集群无法启动的原因分析 xff1a centos7上搭建三台zookeeper xff0c 相关文件配置没有问题 问题描述 xff1a span class token punctuation span atguigu 6
  • 美女体验小米无人机4K版:直接解锁新手模式

    其实说实话 xff0c 这小米无人机4K版我们拿到手上已经挺长时间的了 但是奈何全北京禁飞 xff0c 所以一直没有机会飞飞看 xff0c 于是我们就在解禁之后的第一时间 xff0c 跑到了六环外为大家带来试飞 就让我们从开箱开始 xff0
  • intel realsense摄像头标定教程(win10环境)

    intel realsense摄像头标定教程 准备工具 Intel RealSense D400 Series Dynamic Calibration Toolsprint target fixed width pdf或者对应手机app I
  • TCP网络编程例子(C语言实现)

    说明 xff1a 之前在CSDN上找TCP编程时 xff0c 发现有各种版本 不同版本之间写法不一 xff0c 所以自己写了个C语言版本的 xff0c 记录下来 服务端代码 xff1a span class token comment TC
  • D435i相机的标定及VINS-Fusion config文件修改

    引言 当我们想使用D435i相机去跑VINS Fusion时 xff0c 如果不把标定过的相机信息写入config文件中就运行 xff0c 这样运动轨迹会抖动十分严重 xff0c 里程计很容易漂 接下来将介绍如何标定D435i相机 xff0