Skip to content

HoEmpire/object_detector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

26 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

object_detector

Content

Introduction

点云聚类和图像识别。

Prerequisite

Build

  1. Build a workspace

    mkdir ws/src
  2. Clone this repository and prerequisite package in /ws/src

    cd ws/src
    git clone https://gitee.com/csc105/usv-sensor-fusion-system.git
    git clone https://github.com/HoEmpire/pointcloud-fusion.git
  3. Build the files

    catkin_make

Usage

1. Usage on the stabilization platform

  1. 本地监视

    用网线连接云台,设置 IP 为222.31.31.X,在本地 terminal 输入以下语句

    export ROS_MASTER_URI=http://222.31.31.50:11311
    

    设置本地 ros master 为云台,即可在本地检测数据。可视化可打开rviz,使用object_detector/rviz/debug.rviz的配置进行监视。

  2. NX 上手动启动代码

    先关闭开机自启动的 service, 后在object_detecor文件夹内重新启动所有代码

    systemctl stop auto-start.service
    ./shell/start_onboard.sh
    
  3. 外参标定

    将外参标定得到的.csv文件改名为data.csv,将data.csv放入 matlab 工作空间内,在 matlab 内运行object_detector/matlab/data_process.m,即可得到 yaw 外参的标定结果(角度值)

  4. 参数说明

    参数文件主要为obejct_detector.yaml 说明如下

    • 数据的 topic

      data_topic:
        lidar_topic: /livox/lidar #激光雷达topic
        camera_topic: /pointgrey/image_color # 相机topic
      
    • 聚类后检测相关参数

      $$距离系数=\frac{当前距离}{校准距离}$$

      检测最小阈值与距离系数成二次关系,检测最大阈值与距离系数成线性关系,如 points_number_distance_coeff =100,points_number_max = 5000,points_number_min = 80, 则在 50m 处的聚类后点云数量为 320-10000 点可视为目标,400m 处的聚类后点云数量为 20-2500 点可视为目标

      detection:
        points_number_max: 5000 #在points_number_distance_coeff距离下最大的目标检测点数
        points_number_min: 9 #在points_number_distance_coeff距离下最小的目标检测点数
        points_number_distance_coeff: 300.0 # 目标检测校准距离,单位为m
        mode: "lidar_first" #检测方法,参数为“camera_first” or  "lidar_first",前者暂时禁用
        boat_pixel_height: 80 #船检测的最小二维图像像素高度,用于滤除假目标和远处船
      
    • 点云滤波相关参数

      filter:
        filter_pt_num: 1 #statisticalfilter的一个batch点的数量
        filter_std: 10.0 #statisticalfilter的方差阈值
        filter_distance_max: 600.0 #检测点云的最远距离(单位:m)
        filter_distance_min: 100.0 #检测点云的最近距离(单位:m)
      
    • 聚类参数

      cluster:
        cluster_tolerance: 2.0 #聚类距离的最大阈值(单位m)
        cluster_size_min: 5 #聚类的最小点云数量
        cluster_size_max: 5000 ##聚类的最大点云数量
      
    • yolo 参数

      cam:
        cam_net_type: "YOLOV4_TINY" #网络类型
        cam_file_model_cfg: "/asset/yolov4-tiny-usv.cfg" #config文件地址
        cam_file_model_weights: "/asset/yolov4-tiny-usv_best.weights" #权重文件地址
        cam_inference_precison: "FP32" #浮点数精度,NX 上设置 WieFP16
        cam_n_max_batch: 1 #batch数量
        cam_prob_threshold: 0.5 #图像检测的可信度阈值,设置为0~1
        cam_min_width: 0 #图像检测的最大最小宽度和高度
        cam_max_width: 1440
        cam_min_height: 0
        cam_max_height: 1080
      
    • 外参参数

      extrinsic_parameter:
        translation: [0.0, 0.0, 0.0] #外参的[x.,y,z]位移,单位为m
        rotation: [0.0, 0.0, 0.0] #外参[roll, pitch, yaw]旋转,单位为degree
      
    • 云台指令参数

      platform:
        scan_cycle_time: 20.0 #转动一个周期的时间
        scan_range: 80.0 #总零位转动的最大角度
        track_timeout: 10.0 #从目指切换到周扫的等待时间
      
  5. 云台调试相关

    1. 打开 GUI 调试界面

      cd /home/nvidia/SimpleBGC_GUI_2_70b0
      sudo ./run.sh
      
    2. PID 调整

      1. 点击左上角的 connect 连接云台(需要先停止代码,详见 2. 手动调试中关闭开机自启动 service 的部分)
      1. 在下面的窗口内调整各轴的 PID
      1. 调好后点击右下角的 write 写入

      2. 可进入 Monitoring 监视调试效果,主要监视 ERROR_ROLL, ERROR_PITCH, ERROR_YAW,调试方法为电机左下角MOTOR ON/OFF断电后上电,同时监视误差大小,观察是否震荡,超调大小以及响应速度

      PID 调试常见注意事项

      • 出现高频震荡,则减小该轴的 D
      • yaw 轴为了能顺滑运动,建议调整得到的曲线没有超调后者超调较小,通过减小 P 值和 I 值来保证
      • 如需完整调试 PID 参数参见官方文档10-11 页

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published