feat: 添加配置属性

main
邱棚 2025-03-17 14:28:42 +08:00
parent d7c2582190
commit 02845303ad
10 changed files with 83 additions and 22 deletions

View File

@ -1,4 +1,4 @@
# 串口继电器 # 串口继电器
KERNEL=="ttyUSB*", SUBSYSTEM=="tty", ENV{ID_PATH}=="platform-xhci-hcd.4.auto-usb-0:1:1.0-port0", SYMLINK+="autolabor_relay", MODE="0777" KERNEL=="ttyUSB*", SUBSYSTEM=="tty", ENV{ID_PATH}=="platform-xhci-hcd.4.auto-usb-0:1:1.0", SYMLINK+="autolabor_relay", MODE="0777"
# 雷达 # 雷达
KERNEL=="ttyUSB*", SUBSYSTEM=="tty", ENV{ID_PATH}=="platform-fc840000.usb-usb-0:1:1.0-port0", SYMLINK+="autolabor_ld19", MODE="0777" KERNEL=="ttyUSB*", SUBSYSTEM=="tty", ENV{ID_PATH}=="platform-fc840000.usb-usb-0:1:1.0", SYMLINK+="autolabor_ld19", MODE="0777"

View File

@ -0,0 +1,16 @@
namespace Autolabor.Benz.ObstacleDetection.DataType
{
public class RectRoiSettings
{
public RectRoi[] RectRois { get; set; }
}
public struct RectRoi
{
public double LeftUpX { get; set; }
public double LeftUpY { get; set; }
public double RightDownX { get; set; }
public double RightDownY { get; set; }
}
}

View File

@ -1,5 +1,8 @@
using System; using System;
using System.Collections.Generic;
using System.Linq;
using System.Net; using System.Net;
using Autolabor.Benz.ObstacleDetection.DataType;
using Autolabor.Robobase; using Autolabor.Robobase;
using Autolabor.Robobase.Component.Algorithm.LidarDetection; using Autolabor.Robobase.Component.Algorithm.LidarDetection;
using Autolabor.Robobase.Component.Algorithm.LidarDetection.DataType; using Autolabor.Robobase.Component.Algorithm.LidarDetection.DataType;
@ -36,8 +39,12 @@ namespace Autolabor.Benz.ObstacleDetection
// 配置过滤区域 // 配置过滤区域
private LidarRoi[] _lidarRois; private LidarRoi[] _lidarRois;
public Detection() public Detection(RectRoiSettings roiSettings)
{ {
// 1. 获取感兴趣区域
var rois = roiSettings.RectRois.Select(roi => LidarRoiFactory.Make(roi.LeftUpX, roi.LeftUpY, roi.RightDownX, roi.RightDownY)).ToList();
_lidarRois = rois.ToArray();
// 2. 创建各个功能组件 // 2. 创建各个功能组件
// 驱动组件 // 驱动组件
_lidarDriver = new Ld19DriverNew(); _lidarDriver = new Ld19DriverNew();
@ -79,11 +86,6 @@ namespace Autolabor.Benz.ObstacleDetection
// 串口继电器配置 // 串口继电器配置
_serialRelay.SetProperty("serial.relay.port", "/dev/autolabor_relay"); _serialRelay.SetProperty("serial.relay.port", "/dev/autolabor_relay");
// 创建感兴趣区
_lidarRois = new[]
{
LidarRoiFactory.Make(0.6, 0.5, 0.1, -0.5),
};
// 配置过滤器 // 配置过滤器
_lidarRoiFilter.SetProperty("roiArray", _lidarRois); _lidarRoiFilter.SetProperty("roiArray", _lidarRois);
// 障碍物检测器配置 // 障碍物检测器配置
@ -92,8 +94,8 @@ namespace Autolabor.Benz.ObstacleDetection
_obstacleDetector.SetProperty("MaxPrjDistance", 0.05); _obstacleDetector.SetProperty("MaxPrjDistance", 0.05);
_obstacleDetector.SetProperty("GuessDistance", 1.0); _obstacleDetector.SetProperty("GuessDistance", 1.0);
// 配置发现和丢失次数 // 配置发现和丢失次数
_benzObstacleController.SetProperty("FoundObstacleThreshold", 3); _benzObstacleController.SetProperty("FoundObstacleThreshold", 2);
_benzObstacleController.SetProperty("LostObstacleThreshold", 5); _benzObstacleController.SetProperty("LostObstacleThreshold", 3);
// 5. 连接组件 // 5. 连接组件
// 雷达数据流向避障检测 // 雷达数据流向避障检测

View File

@ -1,9 +1,15 @@
using Autolabor.Benz.ObstacleDetection; using Autolabor.Benz.ObstacleDetection;
using Autolabor.Benz.ObstacleDetection.DataType;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder(args); var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddHostedService<Worker>(); builder.Services.AddHostedService<Worker>();
// 注册配置绑定到 RectRoiSettings 类
builder.Services.Configure<RectRoiSettings>(builder.Configuration.GetSection("RectRoiSettings"));
var host = builder.Build(); var host = builder.Build();
host.Run(); host.Run();

View File

@ -1,23 +1,32 @@
using System; using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Autolabor.Benz.ObstacleDetection.DataType;
using Autolabor.Robobase; using Autolabor.Robobase;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
namespace Autolabor.Benz.ObstacleDetection namespace Autolabor.Benz.ObstacleDetection
{ {
public class Worker : BackgroundService public class Worker : BackgroundService
{ {
private readonly ILogger<Worker> _logger; private readonly ILogger<Worker> _logger;
private readonly RectRoiSettings _roiSettings;
public Worker(ILogger<Worker> logger) public Worker(ILogger<Worker> logger, IOptions<RectRoiSettings> roiSettings)
{ {
_logger = logger; _logger = logger;
_roiSettings = roiSettings.Value;
} }
protected override async Task ExecuteAsync(CancellationToken stoppingToken) protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{ {
foreach (var roi in _roiSettings.RectRois)
{
_logger.LogInformation("RectRoi: leftUp({0},{1}) - rightDown({2},{3})",
roi.LeftUpX, roi.LeftUpY, roi.RightDownX, roi.RightDownY);
}
// 创建用户配置文件 // 创建用户配置文件
var app = Kits.GetAutolaborDataPath(); var app = Kits.GetAutolaborDataPath();
@ -26,18 +35,10 @@ namespace Autolabor.Benz.ObstacleDetection
// 输出日志 // 输出日志
TestKit.Logger.Trace("BenzObstacleDetection start"); TestKit.Logger.Trace("BenzObstacleDetection start");
// 启动顶层组件 // 启动顶层组件
var detection = new Detection(); var detection = new Detection(_roiSettings);
detection.Enable = true; detection.Enable = true;
// while (!stoppingToken.IsCancellationRequested)
// {
// if (_logger.IsEnabled(LogLevel.Information))
// {
// _logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
// }
//
// await Task.Delay(1000, stoppingToken);
// }
} }
} }
} }

View File

@ -4,5 +4,23 @@
"Default": "Information", "Default": "Information",
"Microsoft.Hosting.Lifetime": "Information" "Microsoft.Hosting.Lifetime": "Information"
} }
},
"RectRoiSettings": {
"RectRois": [
{
"leftUpX": 1.5,
"leftUpY": 0.3,
"rightDownX": 0.55,
"rightDownY": -0.3
},
{
"leftUpX": -0.55,
"leftUpY": 0.3,
"rightDownX": -1.5,
"rightDownY": -0.3
} }
]
}
} }

Binary file not shown.

Binary file not shown.

View File

@ -4,5 +4,23 @@
"Default": "Information", "Default": "Information",
"Microsoft.Hosting.Lifetime": "Information" "Microsoft.Hosting.Lifetime": "Information"
} }
},
"RectRoiSettings": {
"RectRois": [
{
"leftUpX": 1.5,
"leftUpY": 0.3,
"rightDownX": 0.55,
"rightDownY": -0.3
},
{
"leftUpX": -0.55,
"leftUpY": 0.3,
"rightDownX": -1.5,
"rightDownY": -0.3
} }
]
}
} }

View File

@ -4,4 +4,4 @@
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
echo "脚本当前目录:$SCRIPT_DIR" echo "脚本当前目录:$SCRIPT_DIR"
mono "$SCRIPT_DIR"/bin/publish/BenzObstacleDetect.exe mono "$SCRIPT_DIR"/Release/BenzObstacleDetect.exe