ROS实验笔记之——VINS-Mono在l515上的实现

2023-05-16

之前博客《ROS实验笔记之——Intel Realsense l515激光相机的使用》实现了用l515运行RTABmap,本博文试试在l515上实现vins-mono

首先需要将vins-mono配置成功,如果出现像之前博客《ROS实验笔记之——SLAM无人驾驶初入门》提到的运行出错的问题也只能按里面的方法改改了。。。。

首先可以先运行

roslaunch realsense2_camera rs_camera.launch 

看对应的launch文件

<launch>
  <arg name="serial_no"           default=""/>
  <arg name="usb_port_id"         default=""/>
  <arg name="device_type"         default=""/>
  <arg name="json_file_path"      default=""/>
  <arg name="camera"              default="camera"/>
  <arg name="tf_prefix"           default="$(arg camera)"/>
  <arg name="external_manager"    default="false"/>
  <arg name="manager"             default="realsense2_camera_manager"/>
  <arg name="output"              default="screen"/>
  <arg name="respawn"              default="false"/>

  <arg name="fisheye_width"       default="-1"/>
  <arg name="fisheye_height"      default="-1"/>
  <arg name="enable_fisheye"      default="false"/>

  <arg name="depth_width"         default="-1"/>
  <arg name="depth_height"        default="-1"/>
  <arg name="enable_depth"        default="true"/>

  <arg name="confidence_width"    default="-1"/>
  <arg name="confidence_height"   default="-1"/>
  <arg name="enable_confidence"   default="true"/>
  <arg name="confidence_fps"      default="-1"/>

  <arg name="infra_width"         default="848"/>
  <arg name="infra_height"        default="480"/>
  <arg name="enable_infra"        default="false"/>
  <arg name="enable_infra1"       default="false"/>
  <arg name="enable_infra2"       default="false"/>
  <arg name="infra_rgb"           default="false"/>

  <arg name="color_width"         default="-1"/>
  <arg name="color_height"        default="-1"/>
  <arg name="enable_color"        default="true"/>

  <arg name="fisheye_fps"         default="-1"/>
  <arg name="depth_fps"           default="-1"/>
  <arg name="infra_fps"           default="30"/>
  <arg name="color_fps"           default="-1"/>
  <arg name="gyro_fps"            default="-1"/>
  <arg name="accel_fps"           default="-1"/>
  <arg name="enable_gyro"         default="false"/>
  <arg name="enable_accel"        default="false"/>

  <arg name="enable_pointcloud"         default="false"/>
  <arg name="pointcloud_texture_stream" default="RS2_STREAM_COLOR"/>
  <arg name="pointcloud_texture_index"  default="0"/>
  <arg name="allow_no_texture_points"   default="false"/>
  <arg name="ordered_pc"                default="false"/>

  <arg name="enable_sync"               default="false"/>
  <arg name="align_depth"               default="false"/>

  <arg name="publish_tf"                default="true"/>
  <arg name="tf_publish_rate"           default="0"/>

  <arg name="filters"                   default=""/>
  <arg name="clip_distance"             default="-2"/>
  <arg name="linear_accel_cov"          default="0.01"/>
  <arg name="initial_reset"             default="false"/>
  <arg name="unite_imu_method"          default=""/>
  <arg name="topic_odom_in"             default="odom_in"/>
  <arg name="calib_odom_file"           default=""/>
  <arg name="publish_odom_tf"           default="true"/>

  <arg name="stereo_module/exposure/1"  default="7500"/>
  <arg name="stereo_module/gain/1"      default="16"/>
  <arg name="stereo_module/exposure/2"  default="1"/>
  <arg name="stereo_module/gain/2"      default="16"/>
  
  

  <group ns="$(arg camera)">
    <include file="$(find realsense2_camera)/launch/includes/nodelet.launch.xml">
      <arg name="tf_prefix"                value="$(arg tf_prefix)"/>
      <arg name="external_manager"         value="$(arg external_manager)"/>
      <arg name="manager"                  value="$(arg manager)"/>
      <arg name="output"                   value="$(arg output)"/>
      <arg name="respawn"                  value="$(arg respawn)"/>
      <arg name="serial_no"                value="$(arg serial_no)"/>
      <arg name="usb_port_id"              value="$(arg usb_port_id)"/>
      <arg name="device_type"              value="$(arg device_type)"/>
      <arg name="json_file_path"           value="$(arg json_file_path)"/>

      <arg name="enable_pointcloud"        value="$(arg enable_pointcloud)"/>
      <arg name="pointcloud_texture_stream" value="$(arg pointcloud_texture_stream)"/>
      <arg name="pointcloud_texture_index"  value="$(arg pointcloud_texture_index)"/>
      <arg name="enable_sync"              value="$(arg enable_sync)"/>
      <arg name="align_depth"              value="$(arg align_depth)"/>

      <arg name="fisheye_width"            value="$(arg fisheye_width)"/>
      <arg name="fisheye_height"           value="$(arg fisheye_height)"/>
      <arg name="enable_fisheye"           value="$(arg enable_fisheye)"/>

      <arg name="depth_width"              value="$(arg depth_width)"/>
      <arg name="depth_height"             value="$(arg depth_height)"/>
      <arg name="enable_depth"             value="$(arg enable_depth)"/>

      <arg name="confidence_width"         value="$(arg confidence_width)"/>
      <arg name="confidence_height"        value="$(arg confidence_height)"/>
      <arg name="enable_confidence"        value="$(arg enable_confidence)"/>
      <arg name="confidence_fps"           value="$(arg confidence_fps)"/>

      <arg name="color_width"              value="$(arg color_width)"/>
      <arg name="color_height"             value="$(arg color_height)"/>
      <arg name="enable_color"             value="$(arg enable_color)"/>

      <arg name="infra_width"              value="$(arg infra_width)"/>
      <arg name="infra_height"             value="$(arg infra_height)"/>
      <arg name="enable_infra"             value="$(arg enable_infra)"/>
      <arg name="enable_infra1"            value="$(arg enable_infra1)"/>
      <arg name="enable_infra2"            value="$(arg enable_infra2)"/>
      <arg name="infra_rgb"                value="$(arg infra_rgb)"/>

      <arg name="fisheye_fps"              value="$(arg fisheye_fps)"/>
      <arg name="depth_fps"                value="$(arg depth_fps)"/>
      <arg name="infra_fps"                value="$(arg infra_fps)"/>
      <arg name="color_fps"                value="$(arg color_fps)"/>
      <arg name="gyro_fps"                 value="$(arg gyro_fps)"/>
      <arg name="accel_fps"                value="$(arg accel_fps)"/>
      <arg name="enable_gyro"              value="$(arg enable_gyro)"/>
      <arg name="enable_accel"             value="$(arg enable_accel)"/>

      <arg name="publish_tf"               value="$(arg publish_tf)"/>
      <arg name="tf_publish_rate"          value="$(arg tf_publish_rate)"/>

      <arg name="filters"                  value="$(arg filters)"/>
      <arg name="clip_distance"            value="$(arg clip_distance)"/>
      <arg name="linear_accel_cov"         value="$(arg linear_accel_cov)"/>
      <arg name="initial_reset"            value="$(arg initial_reset)"/>
      <arg name="unite_imu_method"         value="$(arg unite_imu_method)"/>
      <arg name="topic_odom_in"            value="$(arg topic_odom_in)"/>
      <arg name="calib_odom_file"          value="$(arg calib_odom_file)"/>
      <arg name="publish_odom_tf"          value="$(arg publish_odom_tf)"/>
      <arg name="stereo_module/exposure/1" value="$(arg stereo_module/exposure/1)"/>
      <arg name="stereo_module/gain/1"     value="$(arg stereo_module/gain/1)"/>
      <arg name="stereo_module/exposure/2" value="$(arg stereo_module/exposure/2)"/>
      <arg name="stereo_module/gain/2"     value="$(arg stereo_module/gain/2)"/>

      <arg name="allow_no_texture_points"  value="$(arg allow_no_texture_points)"/>
      <arg name="ordered_pc"               value="$(arg ordered_pc)"/>
      
    </include>
  </group>
</launch>

查看一下topic

rostopic list
/camera/color/camera_info
/camera/color/image_raw
/camera/color/image_raw/compressed
/camera/color/image_raw/compressed/parameter_descriptions
/camera/color/image_raw/compressed/parameter_updates
/camera/color/image_raw/compressedDepth
/camera/color/image_raw/compressedDepth/parameter_descriptions
/camera/color/image_raw/compressedDepth/parameter_updates
/camera/color/image_raw/theora
/camera/color/image_raw/theora/parameter_descriptions
/camera/color/image_raw/theora/parameter_updates
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/image_rect_raw/compressed
/camera/depth/image_rect_raw/compressed/parameter_descriptions
/camera/depth/image_rect_raw/compressed/parameter_updates
/camera/depth/image_rect_raw/compressedDepth
/camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
/camera/depth/image_rect_raw/compressedDepth/parameter_updates
/camera/depth/image_rect_raw/theora
/camera/depth/image_rect_raw/theora/parameter_descriptions
/camera/depth/image_rect_raw/theora/parameter_updates
/camera/extrinsics/depth_to_color
/camera/l500_depth_sensor/parameter_descriptions
/camera/l500_depth_sensor/parameter_updates
/camera/motion_module/parameter_descriptions
/camera/motion_module/parameter_updates
/camera/realsense2_camera_manager/bond
/camera/rgb_camera/parameter_descriptions
/camera/rgb_camera/parameter_updates
/diagnostics
/rosout
/rosout_agg
/tf
/tf_static

没有发现有IMU,该一下命令为:

roslaunch realsense2_camera rs_camera.launch \
    align_depth:=true \
    unite_imu_method:="linear_interpolation" \
    enable_gyro:=true \
     enable_accel:=true
rostopic list
/camera/accel/imu_info
/camera/align_to_color/parameter_descriptions
/camera/align_to_color/parameter_updates
/camera/aligned_depth_to_color/camera_info
/camera/aligned_depth_to_color/image_raw
/camera/aligned_depth_to_color/image_raw/compressed
/camera/aligned_depth_to_color/image_raw/compressed/parameter_descriptions
/camera/aligned_depth_to_color/image_raw/compressed/parameter_updates
/camera/aligned_depth_to_color/image_raw/compressedDepth
/camera/aligned_depth_to_color/image_raw/compressedDepth/parameter_descriptions
/camera/aligned_depth_to_color/image_raw/compressedDepth/parameter_updates
/camera/aligned_depth_to_color/image_raw/theora
/camera/aligned_depth_to_color/image_raw/theora/parameter_descriptions
/camera/aligned_depth_to_color/image_raw/theora/parameter_updates
/camera/color/camera_info
/camera/color/image_raw
/camera/color/image_raw/compressed
/camera/color/image_raw/compressed/parameter_descriptions
/camera/color/image_raw/compressed/parameter_updates
/camera/color/image_raw/compressedDepth
/camera/color/image_raw/compressedDepth/parameter_descriptions
/camera/color/image_raw/compressedDepth/parameter_updates
/camera/color/image_raw/theora
/camera/color/image_raw/theora/parameter_descriptions
/camera/color/image_raw/theora/parameter_updates
/camera/depth/camera_info
/camera/depth/image_rect_raw
/camera/depth/image_rect_raw/compressed
/camera/depth/image_rect_raw/compressed/parameter_descriptions
/camera/depth/image_rect_raw/compressed/parameter_updates
/camera/depth/image_rect_raw/compressedDepth
/camera/depth/image_rect_raw/compressedDepth/parameter_descriptions
/camera/depth/image_rect_raw/compressedDepth/parameter_updates
/camera/depth/image_rect_raw/theora
/camera/depth/image_rect_raw/theora/parameter_descriptions
/camera/depth/image_rect_raw/theora/parameter_updates
/camera/extrinsics/depth_to_color
/camera/gyro/imu_info
/camera/imu
/camera/l500_depth_sensor/parameter_descriptions
/camera/l500_depth_sensor/parameter_updates
/camera/motion_module/parameter_descriptions
/camera/motion_module/parameter_updates
/camera/realsense2_camera_manager/bond
/camera/rgb_camera/parameter_descriptions
/camera/rgb_camera/parameter_updates
/diagnostics
/rosout
/rosout_agg
/tf
/tf_static

就可以发现其将imu分成了两个:
“/camera/gyro/imu_info” 发布角速度
“/camera/accel/imu_info” 发布线加速度

但同时,也有

“/camera/imu”所以应该就不需要改动什么了。

同时还应该让imu与camera同步

roslaunch realsense2_camera rs_camera.launch \
    align_depth:=true \
    unite_imu_method:="linear_interpolation" \
    enable_gyro:=true \
    enable_accel:=true \
    enable_sync:=true

然后就设置vins。首先在realsense_color_config.yaml基础上修改订阅的topic

#common parameters
# imu_topic: "/camera/imu/data_raw"
# image_topic: "/camera/color/image_raw"
imu_topic: "/camera/imu"
image_topic: "/camera/color/image_raw"

相机的内参,通过读取camera_info得到或者自己标定,采用以下命令可以读取厂家的camera_info,但与实际可能存在差距。

rostopic echo /camera/color/camera_info

相机到IMU的变换矩阵

# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 0   # 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.
                        # 2  Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning.                        
#If you choose 0 or 1, you should write down the following matrix.

这里IMU和camera之间的外参矩阵建议使用Kalibr工具进行离线标定,也可以改成1或者2让估计器自己标定和优化。此处设定为2

realsense l515说是已经做好了硬件同步所以不需要在线估计同步时差(但是用kalibr标定出来和在线估计出来都存在大概-0.06的时间差)

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

相机曝光方式应为全局曝光

#rolling shutter parameters
rolling_shutter: 0                      # 0: global shutter camera, 1: rolling shutter camera
rolling_shutter_tr: 0               # unit: s. rolling shutter read out time per frame (from data sheet). 

然后就可以运行了

roslaunch realsense2_camera rs_camera.launch \
    align_depth:=true \
    unite_imu_method:="copy" \
    enable_gyro:=true \
    enable_accel:=true \
    enable_sync:=true


roslaunch vins_estimator realsense_color.launch 
roslaunch vins_estimator vins_rviz.launch

好像不太行。。。换台电脑试试终于可以了。。。但是运动一段时间后,会飘得很严重,详见下面视频

vins

%YAML:1.0

#common parameters
imu_topic: "/camera/imu"
image_topic: "/camera/color/image_raw"
output_path: "/home/tony-ws1/output/"

#camera calibration 
model_type: PINHOLE
camera_name: camera
image_width: 1280
image_height: 720
distortion_parameters:
   k1: 9.2615504465028850e-02
   k2: -1.8082438825995681e-01
   p1: -6.5484100374765971e-04
   p2: -3.5829351558557421e-04
projection_parameters:
   fx: 6.0970550296798035e+02
   fy: 6.0909579671294716e+02
   cx: 3.1916667152289227e+02
   cy: 2.3558360480225772e+02

# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 2   # 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.
                        # 2  Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning.                        
#If you choose 0 or 1, you should write down the following matrix.
#Rotation from camera frame to imu frame, imu^R_cam
extrinsicRotation: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 0.99964621,  0.01105994,  0.02418954,
           -0.01088975,  0.9999151,  -0.00715601, 
           -0.02426663,  0.00689006,  0.99968178]
#Translation from camera frame to imu frame, imu^T_cam
extrinsicTranslation: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [0.07494282, -0.01077138, -0.00641822]

#feature traker paprameters
max_cnt: 150            # max feature number in feature tracking
min_dist: 25            # 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
equalize: 0             # if image is too dark or light, trun on equalize to find enough features
fisheye: 0              # if using fisheye, trun on it. A circle mask will be loaded to remove edge noisy points

#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.1          # accelerometer measurement noise standard deviation. #0.2
gyr_n: 0.01         # gyroscope measurement noise standard deviation.     #0.05
acc_w: 0.0002         # accelerometer bias random work noise standard deviation.  #0.02
gyr_w: 2.0e-5       # gyroscope bias random work noise standard deviation.     #4.0e-5
g_norm: 9.805       # gravity magnitude

#loop closure parameters
loop_closure: 1                    # start loop closure
fast_relocalization: 1             # useful in real-time and large project
load_previous_pose_graph: 0        # load and reuse previous pose graph; load from 'pose_graph_save_path'
pose_graph_save_path: "/home/tony-ws1/output/pose_graph/" # save and load path

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

#rolling shutter parameters
rolling_shutter: 1                      # 0: global shutter camera, 1: rolling shutter camera
rolling_shutter_tr: 0.033               # unit: s. rolling shutter read out time per frame (from data sheet). 

#visualization parameters
save_image: 1                   # save image in pose graph for visualization prupose; you can close this function by setting 0 
visualize_imu_forward: 0        # output imu forward propogation to achieve low latency and high frequence results
visualize_camera_size: 0.4      # size of camera marker in RVIZ

实现了之后发现还是会漂,感觉对相机进行矫正是非常有必要的,但是确又不知道各个参数的意义,终于在连接中找到了(https://github.com/HKPolyU-UAV/FLVIS)

原创 | 《相机标定》深入理解原理与实战(一)

header: 
  seq: 21
  stamp: 
    secs: 1632650051
    nsecs: 413622856
  frame_id: "camera_color_optical_frame"
height: 720
width: 1280
distortion_model: "plumb_bob"
D: [0.14218834042549133, -0.48622673749923706, 0.0013360617449507117, 0.0007612911867909133, 0.444832980632782]
K: [905.8331298828125, 0.0, 649.684814453125, 0.0, 905.6519775390625, 352.701416015625, 0.0, 0.0, 1.0]
R: [1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]
P: [905.8331298828125, 0.0, 649.684814453125, 0.0, 0.0, 905.6519775390625, 352.701416015625, 0.0, 0.0, 0.0, 1.0, 0.0]
binning_x: 0
binning_y: 0
roi: 
  x_offset: 0
  y_offset: 0
  height: 0
  width: 0
  do_rectify: False
---

image_width: 1280
image_height: 720
cam0_intrinsics: [905.8331298828125, 905.6519775390625, 649.684814453125, 352.701416015625]#fx fy cx cy
cam0_distortion_coeffs: [0.14218834042549133, -0.48622673749923706, 0.0013360617449507117, 0.0007612911867909133]#k1 k2 p1 p2  

(所以对于镜头畸变一共有 5 个参数 k1, k2, k3, p1, p2 需要校准,这 5 个参数和 M1 一起,都是需要标定的相机内参。opencv 输出的即便参数顺序是 k1, k2, p1, p2, k3 因为 k3 没那么重要。)

采用标定的参数修改一下有:

%YAML:1.0
 
#common parameters
imu_topic: "/camera/imu"
image_topic: "/camera/color/image_raw"
output_path: "/home/tony-ws1/output/"
 
#camera calibration 
model_type: PINHOLE
camera_name: camera
image_width: 1280
image_height: 720
distortion_parameters:
   k1: 0.14218834042549133
   k2: -0.48622673749923706
   p1: 0.0013360617449507117
   p2:  0.0007612911867909133
projection_parameters:
   fx: 905.8331298828125
   fy: 905.6519775390625
   cx: 649.684814453125
   cy: 352.701416015625


# Extrinsic parameter between IMU and Camera.
estimate_extrinsic: 2   # 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.
                        # 2  Don't know anything about extrinsic parameters. You don't need to give R,T. We will try to calibrate it. Do some rotation movement at beginning.                        
#If you choose 0 or 1, you should write down the following matrix.
#Rotation from camera frame to imu frame, imu^R_cam
extrinsicRotation: !!opencv-matrix
   rows: 3
   cols: 3
   dt: d
   data: [ 0.99964621,  0.01105994,  0.02418954,
           -0.01088975,  0.9999151,  -0.00715601, 
           -0.02426663,  0.00689006,  0.99968178]
#Translation from camera frame to imu frame, imu^T_cam
extrinsicTranslation: !!opencv-matrix
   rows: 3
   cols: 1
   dt: d
   data: [0.07494282, -0.01077138, -0.00641822]
 
#feature traker paprameters
max_cnt: 150            # max feature number in feature tracking
min_dist: 25            # 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
equalize: 0             # if image is too dark or light, trun on equalize to find enough features
fisheye: 0              # if using fisheye, trun on it. A circle mask will be loaded to remove edge noisy points
 
#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.1          # accelerometer measurement noise standard deviation. #0.2
gyr_n: 0.01         # gyroscope measurement noise standard deviation.     #0.05
acc_w: 0.0002         # accelerometer bias random work noise standard deviation.  #0.02
gyr_w: 2.0e-5       # gyroscope bias random work noise standard deviation.     #4.0e-5
g_norm: 9.805       # gravity magnitude
 
#loop closure parameters
loop_closure: 1                    # start loop closure
fast_relocalization: 1             # useful in real-time and large project
load_previous_pose_graph: 0        # load and reuse previous pose graph; load from 'pose_graph_save_path'
pose_graph_save_path: "/home/tony-ws1/output/pose_graph/" # save and load path
 
#unsynchronization parameters
estimate_td: 1                     # online estimate time offset between camera and imu
td: 0.000                           # initial value of time offset. unit: s. readed image clock + td = real image clock (IMU clock)
 
#rolling shutter parameters
rolling_shutter: 1                      # 0: global shutter camera, 1: rolling shutter camera
rolling_shutter_tr: 0.033               # unit: s. rolling shutter read out time per frame (from data sheet). 
 
#visualization parameters
save_image: 1                   # save image in pose graph for visualization prupose; you can close this function by setting 0 
visualize_imu_forward: 0        # output imu forward propogation to achieve low latency and high frequence results
visualize_camera_size: 0.4      # size of camera marker in RVIZ

好像还是不行。。。imu飘得好厉害

参考资料

如何用Realsense D435i运行VINS-Mono等VIO算法 获取IMU同步数据_Manii-CSDN博客https://blog.csdn.net/qq_41839222/article/details/86552367

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

ROS实验笔记之——VINS-Mono在l515上的实现 的相关文章

  • 立创eda学习笔记二十六:手把手教你使用立创eda的官方教程

    可以通过以下办法找到教程 xff1a 1 xff0c 在软件界面点帮助 使用教程 2 xff0c 在网站首页 帮助 教程进入 如何使用教程 xff1a 这里是一级目录 xff0c 其实对新手最有用的是前面3个部分 xff0c 后面的仿真先不
  • 立创eda学习笔记二十四:拼板

    这里主要是两部分 xff1a 自带拼板和手动拼板 xff0c 软件自带拼板功能 xff0c 那么手动拼板当然就是自己重新画图拼板了 一般用自带拼板功能就可以了 xff0c 把单板画好之后很容易就拼好了 xff0c 完全不用动任何器件和丝印编
  • Prometheus实战教程:监控mysql数据库

    今天我们使用prometheus 43 Grafana 43 mysql exporter实现监控mysql数据库各项指标数据 mysql exporter xff1a 采集mysql数据库各项指标数据 prometheus xff1a 获
  • prometheus常用exporter下载地址大全

    1 node exporter下载 https github com prometheus node exporter releases 2 blackbox exporter下载 https github com prometheus b
  • 论文润色 ‖ 一分钟教你如何写好SCI论文里的主题句,事半功倍

    今天 xff0c 小编来分享一下论文润色 xff0c SCI论文的主题句 xff08 Topic Sentences xff09 怎么写 xff1a 01什么是主题句 xff1f 主题句通常是段落开头的一句话 xff0c 是整个段落的小主题
  • Go xml文件处理

    在开发中会常遇到xml数据序列化和反序列化 xff0c 这里我们介绍go语言处理xml数据 encoding xml 包实现了一个简单的xml 1 0解析器 xff0c 可以理解xml名称空间 读取xml 示例 xff1a package
  • UC/OS-III 消息队列

    消息队列 一 消息队列基本概念讲解1 消息队列基本概念2 消息池2 1 消息池概念2 2 消息池初始化2 3 消息队列的运作机制2 4 消息队列的阻塞机制2 5 消息队列的应用场景 二 消息队列创建步骤1 定义消息队列2 创建消息队列 三
  • Altium Designer绘制stm32f103c8t6最小系统原理图

    文章目录 前言芯片封装自定义封装原理图绘制总结 前言 本文提供了初学者绘制stm32最小系统 xff0c 同时初学者的同学可以跟着小白学习绘制原理图哦 芯片封装 提示 xff1a 下载安装好Altium Designer之后才能进行以下操作
  • Jetson Xavier NX安装opencv3.x以及踩过的坑

    Jetson Xavier NX默认安装的是opencv4 x xff0c 在很多项目中其与opencv3 x xff0c 其中opencv3与opencv4中有部分函数是完全不同的 xff08 例如点一些Point的定义 xff0c Cv
  • 【导航算法】无人机路径跟踪L1导航算法

    L1导航算法是非常经典的非线性无人机路径跟随算法 xff0c 最早由MIT于2004年提出 xff0c 论文为 A New Nonlinear Guidance Logic for Trajectory Tracking xff0c 其导航
  • 【人工智能】1.问题求解:状态空间图和盲目搜索

    什么是问题求解 xff1f 问题求解可以理解为利用知识 xff0c 尽可能有效的找到问题的解 xff0c 或者最优解的过程 xff0c 主要包括 xff1a 1 xff09 问题描述方法 xff1a 状态空间法 xff0c 与或树表示法 x
  • 【路径规划】A*三维全局路径规划(附Python实现源码)

    1 A 启发式搜索 A 算法介绍 xff1a 启发式搜索算法 xff0c 除了wiki之外比较全的一个参考资料 xff1a A 启发式搜索算法详解 人工智能 这里是用Python写了一个简单的路径规划例子供参考 2 Matplotlib库
  • 【数据结构】3.图、最小生成树

    一 图的基本概念 1 什么是图 图表示一种多对多的关系 图包括 xff1a 1 xff09 一组顶点 xff1a 通常用 V Vertex 表示顶点集合 2 xff09 一组边 xff1a 通常用 E Edge 表示边的集合 3 xff09
  • 【NLP】主题模型文本分类

    自然语言处理之主题模型文本分类 LDA主题模型 1 主题模型 xff08 Topic Model xff09 主题模型是以非监督学习的方式对文集的隐含语义结构进行聚类的统计模型 主题模型主要被用于自然语言处理中的语义分析和文本挖掘问题 xf
  • 【NLP】Word2Vec模型文本分类

    自然语言处理之词向量模型聚类分析 Word Embedding 词嵌入向量 Word Embedding 是NLP里面一个重要的概念 xff0c 我们可以利用Word Embedding一个单词固定长度向量的表示一种表示形式 Word Em
  • (6.1)Kubernetes的Sevice服务间调用

    1 场景1 选择器 xff08 selector xff09 在k8s上运行了两个pod replicas 2 我们通过Service来整合这两个pod 在创建 Service 时 xff0c 就要通过选择器 xff08 selector
  • 【飞控算法】四旋翼飞行器控制原理与设计入门

    从动力学建模和几个四旋翼核心算法角度分析半自主飞控系统的建立 xff0c 即实现传统四旋翼的姿态控制和高度控制的过程 xff0c 文章主要借鉴了北航多旋翼设计课程 正点原子minifly微型四旋翼的资料 四旋翼无人飞行器设计 清华出版社 x
  • 【开源飞控】匿名飞控TI版解析(1)

    准备电赛的飞控题 xff0c 买来了匿名的飞控学习一下 xff0c 这里整理了一下匿名飞控中比较关键的几部分 xff0c 学习了一下原理 xff0c 然后代码解读都写注释里了 xff0c 篇幅较长 目录 一 遥控器信号接收 1 代码解读 2
  • 【开源飞控】匿名飞控TI版解析(2)

    因为电赛 xff0c 买来匿名飞控研究一下 xff0c 感觉相比其他的一下开源飞控 xff0c 易开发性和稳定性都是比较好的 xff0c 但就是比较贵 匿名TI版飞控是从32版改过来的 xff0c 硬件上就换了个芯片 xff0c 程序里也有
  • ROS中机器人与电脑的网络配置

    打开网络连接菜单 xff1a 选择网络 xff0c 输密码 并连接 xff08 以350502为例 xff0c 这里我就不连进去这个WiFi了 xff0c 还是连回402 xff0c 意思到了就行 xff09 查看连接信息 xff08 GU

随机推荐

  • ROS学习笔记之——gazebo仿真

    本博文是本人学习gazebo的学习记录 Gazebo是一款3D仿真器 xff0c 支持机器人开发所需的机器人 传感器和环境模型 xff0c 并且通过搭载的物理引擎可以得到逼真的仿真结果 Gazebo是近年来最受欢迎的三维仿真器之一 xff0
  • ROS学习笔记之——gazebo模型(URDF)

    最近在学习gazebo仿真 在之前博文里面 学习笔记之 gazebo仿真 xff0c 在介绍深度相机的ROS插件的时候 xff0c 涉及到了gazebo里面的一些模型文件架构的定义 本博文主要是对模型文件的定义做学习记录 目录 Model
  • ROS学习笔记之——ROS与gazebo之间的控制关系

    之前博客 学习笔记之 gazebo仿真 有采用用ricz来监控gazebo中的机器人 本博文对其进行深入的介绍 本文以 ROS学习笔记之 gazebo模型 xff08 URDF xff09 中的RRBot为例 目录 ros control
  • ROS学习笔记之——移动机器人的导航

    之前博客 ROS学习笔记之 激光雷达SLAM建图 已经介绍过如何通过激光雷达SLAM建图了 xff0c 本博文讲一下ROS机器人的导航相关 目录 导航相关理论介绍 导航的概述 costmap AMCL Dynamic Window Appr
  • ROS学习笔记之——EKF (Extended Kalman Filter) node 扩展卡尔曼滤波

    最近正好准备想试试利用EKF实现多传感器的融合 但没想到本身ROS里面就已经有EKF的功能包了 这个包用于评估机器人的3D位姿 xff0c 使用了来自不同源的位姿测量信息 xff0c 它使用带有6D xff08 3D position an
  • ROS学习笔记之——路径规划及avoid obstacles

    之前博客 ROS学习笔记之 Navigation Stack及路径规划 介绍了navigation stack xff0c 其中涉及到的amcl 路径规划以及避障还没有详细的展开 目录 AMCL 路径规划 全局路径规划中的地图 栅格地图 x
  • 【LeetCode】LCS最长公共子序列

    最长公共子序列 题目描述思路分析递归结构算法实现输出最长子序列算法实现 题目描述 思路分析 设A 61 a0 xff0c a1 xff0c xff0c am xff0c B 61 b0 xff0c b1 xff0c xff0c bn xff
  • ROS实验笔记之——基于ArUco Marker来估算camera的位姿

    最近在做课程的project的时候 xff0c 实现了基于Marker的3D 2D的相机位姿估计算法 写下本博文作为学习记录用 xff5e 先看看整体的实现效果 基于ArUco Marker来估算camera的位姿 目录 安装ArUco A
  • ROS实验笔记之——基于Prometheus自主无人机开源项目的学习与仿真

    最近在公众号上看到Prometheus无人机的资料 xff0c 发现里面开源了很好的无人机的仿真环境 xff0c 并且有很好的教程 而本人正好在上 Introduction to Aerial Robotics 的课程 xff0c 正好搭建
  • ROS实验笔记之——基于Prometheus的控制模块

    之前博客 ROS实验笔记之 基于Prometheus自主无人机开源项目的学习与仿真 已经介绍过Prometheus项目 本博文继续学习其中的控制模块 xff5e ROS无人机仿真之轨迹跟踪 ROS无人机仿真之航点跟踪 目录 仿真功能启动脚本
  • 学习笔记之——VIO与VINS-Mono

    本博文为本人学习VIO与VINS的学习笔记 xff0c 部分内容来源于网上的资料 xff0c 文末给出参考 本博文仅仅为本人学习记录用 xff0c 不作任何商业用途 先给出复现的demo 视觉惯导紧融合VINS Mono的复现 目录 VIO
  • ROS学习笔记之——PX4开发初入门

    PX4 是一款专业级飞控 它由来自业界和学术界的世界级开发商开发 xff0c 并得到活跃的全球社区的支持 xff0c 为从竞速和物流无人机到地面车辆和潜水艇的各种载具提供动力 目录 基本概念 QGroundControl xff08 QGC
  • ROS实验笔记之——PX4仿真

    之前博文 ROS学习笔记之 PX4开发初入门 ROS学习笔记之 PX4生态系统 已经对PX4做了一些基本的学习 xff0c 并且在mac上搭建了px4开发环境 本博文在ubuntu下对PX4进行一些基本的仿真学习 xff5e 之前在做无人机
  • ROS学习笔记之——基于QGC的PX4在线仿真调PID

    之前博客 ROS实验笔记之 PX4仿真 已经介绍了PX4编译及QGC的安装 xff0c 本博文进一步的基于QGC进行仿真控制 基于QGC的PX4在线仿真 首先运行基于px4的gazebo仿真 make px4 sitl default ga
  • ROS学习笔记之——PX4位置环PID控制

    之前博客 ROS学习笔记之 基于QGC的PX4在线仿真调PID 已经学习了如何在仿真环境下 xff0c 调节PID位置环与姿态环 本博文细细的看一下PX4位置环PID调节 如下图所示 输入的是期望的位置 xff0c 然后外环是P控制 而内环
  • ROS实验笔记之——JCV-450无人机初入门

    最近测试了阿木实验室的JCV 450无人机 本博文记录本人使用及实验的过程 目录 基本设置 注意点 飞行前调试 一 加载固件 二 加载参数 三 校准传感器 四 遥控器校准 五 飞行模式 六 电调校准 七 检查参数 QGC的使用 首先看一下飞
  • ROS学习笔记之——MSCKF

    原理 精度方面 xff0c MSCKF应该与graph optimazation差不多 xff0c 但是其对算力要求没有那么高 xff5e http www xinliang zhong vip msckf notes header n13
  • FreeRTOS调试神器分享

    在B站看到的大神的分享 xff0c 记录一下 xff1a FreeRTOS调试神器 xff01
  • ROS实验笔记之——Intel Realsense l515激光相机的使用

    最近实验室购买了Intel Realsense l515相机 本博文记录使用过程 驱动安装 先到官网安装驱动 xff1a https github com IntelRealSense realsense ros https github
  • ROS实验笔记之——VINS-Mono在l515上的实现

    之前博客 ROS实验笔记之 Intel Realsense l515激光相机的使用 实现了用l515运行RTABmap xff0c 本博文试试在l515上实现vins mono 首先需要将vins mono配置成功 xff0c 如果出现像之